/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACDnpUseChegTrkm
*	ソースファイル名	：JBSbatACDnpUseChegTrkm.java
*	作成者				：富士通　
*	作成日				：2011年07月19日
*＜機能概要＞
*　電報利用課金情報取込部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/19   富士通		新規作成
*	v3.00		2012/05/18   FJ) 永田	【ANK-0024-04-00】	
*	v4.00		2012/12/27   FJ) 早崎	【TG1-2012-0000204】エラー情報出力項目「通信料」追加
*	v4.01		2013/02/14   FJ) 早崎	【ST3-2013-0000369】
*	v4.02		2013/04/05   FJ) 小柴	【IKK-2013-0000783】文字化け対策のため、エンコード形式の変更4.03
*	v4.03		2013/04/26   FJ) 早崎	【OT-2013-0000512】
*	v5.00		2013/08/05   FJ) 早崎	【TG1-2013-0000837】情報付加処理で請求契約番号が取得できなかった場合、電報利用課金情報エラーリストに出力するよう修正
*	v5.01		2013/10/04   FJ) 北端	【OM-2013-0002763】電報利用課金情報（法人分）ファイル出力処理の修正（受付月日に運用年を付加、各項目のクオート処理）
*	v5.02		2013/10/12   FJ) 北端	【OM-2013-0002763】クオート文字を共通部の定義から取得するよう修正
*	v5.03		2013/10/13   FJ) 前田	【OM-2013-0002763】システムエラー時にステータスを更新するように修正
*	v5.04		2013/11/19   FJ) 北端	【OM-2013-0004341】ディレイドス処理依頼のテータス更新のパラメータ修正
*                                                          電報利用課金情報(法人分)作成時、個人法人電話番号帯コードのNULLチェックを行う
*	v6.00		2013/12/16   FJ) 垣内	【OM-2013-0005146】マイナス金額エラー時の明細出力不正
*	v8.00		2013/12/11   FJ）柴田	【ANK-1584-00-00】出力ファイルにサービス詳細識別番号を追加。
*	v8.01		2014/01/31   FJ）伊藤	【ANK-1589-00-00】増税対応
*	v8.02		2014/02/18   FJ）伊藤	【IT1-2014-0000058】出力を料金項目コード単位に修正
*	v8.03		2014/02/24   FJ) 小掠	【OM-2014-0000407】電報データの受付月日の月でスケジュール定義を引き当て年を取得するように修正。
*	v8.04		2014/03/25   FJ）江森	【OM-2014-0001163】エラー発生時にディレイド処理結果コードを業務エラーにするように修正。
*	v52.00		2021/03/01   FJ）山地	【ANK-4022-00-00】瑕疵外障害改修対応（3月末リリース）
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;

import eo.business.common.JACBatCommon;
import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JACbatSchdlUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCCbatDenshiFileUtil;
import eo.business.common.JCCbatShoriIraiUtil;
import eo.business.util.file.JBSbatACIFM030;
import eo.business.util.file.JBSbatACIFM034;
import eo.business.util.table.JBSbatAC_T_SVKEI_CHIKUSEKI;
import eo.business.util.table.JBSbatCC_T_EFILE_KANRI;
import eo.business.util.table.JBSbatCH_M_PRC_KMK_CS_CHGE;
import eo.business.util.table.JBSbatKK_T_KAKINS;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_UCWK;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.business.util.table.JBSbatZM_M_TELNO;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JZM0171Constant;
import eo.common.util.JCCFileUtil;
import eo.common.util.JPCDateUtil;
import eo.common.util.JPCUtilCommon;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatACDnpUseChegTrkm extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(電話番号)*/
	private static final String D_TBL_NAME_ZM_M_TELNO = "ZM_M_TELNO";

	/** テーブル(サービス契約内訳)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_UCWK = "KK_T_SVC_KEI_UCWK";

	/** テーブル(課金先)*/
	private static final String D_TBL_NAME_KK_T_KAKINS = "KK_T_KAKINS";

	/** テーブル(料金項目抽出変換)*/
	private static final String D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE = "CH_M_PRC_KMK_CS_CHGE";

	/** テーブル(サービス契約蓄積)*/
	private static final String D_TBL_NAME_AC_T_SVKEI_CHIKUSEKI = "AC_T_SVKEI_CHIKUSEKI";

	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";
	
	/** テーブル(電子ファイル管理)*/
	private static final String D_TBL_NAME_CC_T_EFILE_KANRI = "CC_T_EFILE_KANRI";
	
	/** SQL定義キー(AC_SELECT_002)*/
	private static final String ZM_M_CD_NM_KANRI_AC_SELECT_002 = "AC_SELECT_002";

	/** SQL定義キー(AC_SELECT_001)*/
	private static final String ZM_M_TELNO_AC_SELECT_001 = "AC_SELECT_001";

	/** SQL定義キー(AC_SELECT_006)*/
	private static final String KK_T_SVC_KEI_UCWK_AC_SELECT_006 = "AC_SELECT_006";

	/** SQL定義キー(AC_SELECT_007)*/
	private static final String KK_T_SVC_KEI_UCWK_AC_SELECT_007 = "AC_SELECT_007";

	/** SQL定義キー(AC_SELECT_004)*/
	private static final String KK_T_KAKINS_AC_SELECT_004 = "AC_SELECT_004";

	/** SQL定義キー(AC_SELECT_024)*/
	private static final String CH_M_PRC_KMK_CS_CHGE_AC_SELECT_024 = "AC_SELECT_024";

	/** SQL定義キー(AC_SELECT_001)*/
	private static final String ZM_M_CD_NM_KANRI_AC_SELECT_001 = "AC_SELECT_001";

	/** SQL定義キー(AC_SELECT_009)*/
	private static final String AC_T_SVKEI_CHIKUSEKI_AC_SELECT_009 = "AC_SELECT_009";
	
	/** SQL定義キー(AC_SELECT_001)*/
	private static final String CC_T_EFILE_KANRI_AC_SELECT_001 = "AC_SELECT_001";

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** テーブルアクセスクラス(電話番号)*/
	private JBSbatSQLAccess db_ZM_M_TELNO = null;

	/** テーブルアクセスクラス(サービス契約内訳)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_UCWK = null;

	/** テーブルアクセスクラス(課金先)*/
	private JBSbatSQLAccess db_KK_T_KAKINS = null;

	/** テーブルアクセスクラス(料金項目抽出変換)*/
	private JBSbatSQLAccess db_CH_M_PRC_KMK_CS_CHGE = null;

	/** テーブルアクセスクラス(サービス契約蓄積)*/
	private JBSbatSQLAccess db_AC_T_SVKEI_CHIKUSEKI = null;
	
	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	
	/** テーブルアクセスクラス(電子ファイル管理)*/
	private JBSbatSQLAccess db_CC_T_EFILE_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 電報利用課金情報(正常データ) */
	private JBSbatBusinessFileUtil dempoDateFile = null;
	
	/** 電報利用課金情報(正常データ)(フルパス) */
	private String dempoDataFile = "";
	
	/** 電報利用課金情報(法人分) */
	private JBSbatBusinessFileUtil dempoHojinFile = null;
	
	/** 電報利用課金情報エラーリスト */
	private JBSbatBusinessFileUtil dempoErrFile = null;
	
	/** 電報利用課金情報エラーリスト(フルパス) */
	private String errListFile = "";
	
	/** 電報利用課金エラー情報(料金計算結果リスト) */
	private JBSbatBusinessFileUtil dempoErrCalcFile = null;

	/** 電報利用課金情報(正常データ)カウント */
	private int dateListCount = 0;

	/** 電報利用課金情報エラーリストカウント */
	private int errListCount = 0;

	/** サービス契約期間外判定フラグ */
	private boolean svcKeiTimeJudgeFlag = false;

	/** サービス契約蓄積未存在フラグ */
	private boolean svcKeiChikJudgeFlag = false;
	
	/** 退避．サービス契約蓄積未存在フラグ */
	private boolean bkSvcKeiChikJudgeFlag = false;

	/** 個人法人判定フラグ */
	private boolean kojinHojinJudgeFlag = false;

	/**  最終レコード判定フラグ*/
	boolean lastFlg = false;
	
	/**  電報利用課金情報(正常データ)存在判定フラグ*/
	boolean dateAriFlg = false;
	
	/** 料金ファイル削除期間(電報利用課金情報) */
	private int delPrdDenpoFile = 0;
	
	/** 個人法人電話番号帯コード（法人） */
	private static final String KOJIN_HOJIN_TLN_TAI_CD_HOJIN = "2";

	/** 法人個人コード */
	private HashMap<String, String> hojinKojinCdMap = null;
	
	/** 出力ファイル定義 */
	private static final String PRM_OTD = "OTD";

	/** 電報利用課金情報出力情報Map */
	private HashMap<String, HashMap<String, String>> dempoOutFileInfoMap= null;
	
	/** 電報利用課金情報出力情報Mapキー格納List */
	private ArrayList<String> keyList = null;
	
	/** 集約キー格納Set */
	private HashSet<String> shuKeySet = null;
	
	/** 請求年月 */
	private String seikyYm = null;

	/** 利用開始日 */
	private String staYmd = null;
	
	/** 利用終了日 */
	private String endYmd = null;

	/** 業務機能識別コード(外部料金取込用電報利用課金情報) */
	private String workKinoSkbCd = null;
	
	/** 請求時期指定コード */
	private String seikyJikiShiteiCd = null;

	/** メッセージリスト */
	private ArrayList<String> errMsgList = null;
	
	/** 未請求一時金エラーコード */
	private String ichjikinErrCd = null;
	
	/** 未請求一時金ありエラー */
	private String ichjikinErrMsg = null;
	
	/** サービス契約番号 */
	private String svckeiNo = null;
	
	/** 退避．サービス契約番号 */
	private String bkSvckeiNo = null;
	
	/** サービス開始年月日 */
	private String svcStaYmd = null;
	
	/** 退避．サービス開始年月日 */
	private String bkSvcStaYmd = "";
	
	/** サービス終了年月日 */
	private String svcEndYmd = null;
	
	/** 退避．サービス終了年月日 */
	private String bkSvcEndYmd = null;
	
	/** 料金グループコード */
	private String prcGrpCd = null;
	
	/** 退避．料金グループコード */
	private String bkPrcGrpCd = null;
	
	/** 料金コースコード */
	private String prcsCd = null;
	
	/** 退避．料金コースコード */
	private String bkPrcsCd = null;
	
	/** 料金サービスコード */
	private String prcSvcCd = null;
	
	/** 退避．料金サービスコード */
	private String bkPrcSvcCd = null;
	
	/** 料金項目コード */
	private String prcKmkCd = null;
	
	/** 料金項目コードマップ */
	private HashMap<String, String> prcKmkCdMap = new HashMap<String, String>();
	
	/** 退避．料金項目コードリスト */
	private ArrayList<String> bkPrcKmkCdList = new ArrayList<String>();
	
	/** 請求契約番号 */
	private String seikyKeiNo = null;
	
	/** 退避．請求契約番号 */
	private String bkSeikyKeiNo = null;
	
	/** 退避．NO */
	private String bkNo = null;
	
	/** 退避．請求電話番号 */
	private String bkSeikyTelNo = null;
	
	/** 退避．本体料金 */
	private String bkMainPrc = null;

	/** 退避．受付月日 */
	private String bkUkMd = null;

	/** 退避．番ポ識別 */
	private String bkDempoSkbtCd = null;

	/** 退避．集約キー */
	private String  shukKey = null;
	
	/** 退避．電報料金マップ */
	private HashMap<String, BigDecimal> denpoPrcMap = new HashMap<String, BigDecimal>();
	
	/** シーケンス接頭辞（ファイル番号） */
	private static final String SEQ_PREFIX_SEQ_FILE_NOO = "";
	
	/** シーケンス桁数（ファイル番号） */
	private static final int SEQ_LEN_SEQ_FILE_NO = 12;

	/** 電子ファイル登録番号 */
	private String tmpEfileKanriNo = JACStrConst.KARA_MOJI;

	/** 処理管理番号*/
	private String trnKanriNo = null;

	/** ディレイド処理依頼番号 */
	private String[] shoriIraiNo = null;

	/** 電子ファイル管理(レコード件数) */
	private int eFileRecord = 0;
	
	/** 電子ファイル管理チェック */
	private boolean eFileCheckFlg = false;

	/** 集計エラー出力用退避List */
	private HashMap<String, ArrayList<HashMap<String, String>>> bkErrShukList = new HashMap<String, ArrayList<HashMap<String, String>>>();
	
	/** 受付年月保管マップ */
	private HashMap<String, String> ukEndYmdMap = new HashMap<String, String>();
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_ZM_M_TELNO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_TELNO);
		db_KK_T_SVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_UCWK);
		db_KK_T_KAKINS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAKINS);
		db_AC_T_SVKEI_CHIKUSEKI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_T_SVKEI_CHIKUSEKI);
		db_CH_M_PRC_KMK_CS_CHGE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE);
		db_CC_T_EFILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_EFILE_KANRI);  
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");

		// 請求年月・利用終了日の取得
		JACbatSchdlUtil su = new JACbatSchdlUtil(commonItem);
		
		// 請求年月を取得
		seikyYm = su.getBillDate(super.opeDate, JACStrConst.EVENT_CD_PRC_CALC_DAY);

		// 利用終了日を取得
		String[] startEndYmd = su.getUseStrEnd(seikyYm, JACStrConst.EVENT_CD_USE_STAYMD, JACStrConst.EVENT_CD_USE_ENDYMD);
		staYmd = startEndYmd[0];
		endYmd = startEndYmd[1];
		
		this.makeUkYm(su);
			
		// アクセス部品をクローズ
		su.close();
		
		// 業務パラメータ管理より値を取得
		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);

		// 業務機能識別コード(外部料金取込用電報利用課金情報)
		workKinoSkbCd = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_WKS_OT_DEMPO_CRIF);
		
		// 請求時期指定コード
		seikyJikiShiteiCd = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_SJC_SIKY_STI_MON);
		
		// 料金ファイル削除期間(電報利用課金情報)
		delPrdDenpoFile = Integer.valueOf((paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_ADP_DENPO_FILE)));

		// データチェックメッセージリスト取得
		this.errMsgList = new ArrayList<String>();
		errMsgList.add(paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_MSG_TELNO_NOERR));	// 電話番号存在エラー/(0)
		errMsgList.add(paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_MSG_SVCKEINOERR));	// サービス契約番号エラー/(1)
		errMsgList.add(paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_MSG_SVCKEIPRDERR));	// サービス契約期間エラー/(2)
		errMsgList.add(paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_MSG_MINUS_PRCERR));	// マイナス金額エラー/(3)
		
		//未請求一時金ありエラーコード・メッセージ取得
		String[] ichjikinErrCdList = (paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_RSLT_ICJKIN_ERR).split(JACStrConst.COMMA));
		
		// 未請求一時金エラーコード 
		ichjikinErrCd = ichjikinErrCdList[0];
		// 未請求一時金ありエラー 
		ichjikinErrMsg = getCdNmKanri(JZM0171Constant.CD01172, ichjikinErrCd);
		
		// アクセス部品クローズ
		paramUtil.close();
		
		
		// コード区分名称の取得
		executeZM_M_CD_NM_KANRI_AC_SELECT_002(new Object[] {JZM0171Constant.CD00004, super.opeDate, super.opeDate});
		
		JBSbatCommonDBInterface hojinKojinRecord = db_ZM_M_CD_NM_KANRI.selectNext();
		
		if (hojinKojinRecord == null)
		{
			// コード名称管理テーブルから取得できない場合はエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE, new String[] { JBSbatZM_M_CD_NM_KANRI.TABLE_NAME });
		}
		
		hojinKojinCdMap = new HashMap<String, String>();
		while (true)
		{
			hojinKojinCdMap.put(hojinKojinRecord.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV), hojinKojinRecord.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
			
			hojinKojinRecord = db_ZM_M_CD_NM_KANRI.selectNext();
			
			if (hojinKojinRecord == null)
			{
				break;
			}
		}

		// Free項目の取得
		String[] freeItem = this.freeItem.split(JACStrConst.FREE_DIV);
		
		// 電報利用課金情報(正常データ)
		this.dempoDateFile = createFile(freeItem[1], freeItem[0]);
		
		// 電報利用課金情報(正常データ)(フルパス)
		this.dempoDataFile = freeItem[1];

		// 電報利用課金情報(法人分)
		this.dempoHojinFile = createFile(freeItem[3] + "/"  + freeItem[4] + "_"  + seikyYm + ".csv", freeItem[2]);

		// 電報利用課金情報エラーリスト
		this.dempoErrFile = createFile(freeItem[6], freeItem[5]);
		
		// 電報利用課金情報エラーリスト(フルパス)
		this.errListFile = freeItem[6];
		
		// 電報利用課金エラー情報(料金計算結果リスト)
		this.dempoErrCalcFile = createFile(freeItem[8], freeItem[7]);
		
		// 処理管理番号
		this.trnKanriNo = freeItem[9];
		
		// 電報利用課金情報出力情報Mapキー格納List 
		keyList = new ArrayList<String>();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][mastMap=" + inMap.getMap().toString() + "]") : true;


		// 各々の項目を初期化
			
		// サービス契約番号
		svckeiNo 	= JACStrConst.KARA_MOJI;
		// 料金グループコード
		prcGrpCd 	= JACStrConst.KARA_MOJI;
		// 料金コースコード
		prcsCd 		= JACStrConst.KARA_MOJI;
		// 料金サービスコード
		prcSvcCd 	= JACStrConst.KARA_MOJI;
		// 請求契約番号
		seikyKeiNo 	= JACStrConst.KARA_MOJI;
		// サービス開始年月日
		svcStaYmd = JACStrConst.KARA_MOJI;
		// サービス終了年月日
		svcEndYmd = JACStrConst.KARA_MOJI;

		
		// サービス契約期間外判定フラグ 
		svcKeiTimeJudgeFlag = false;
		
		// 個人法人判定フラグ 
		kojinHojinJudgeFlag = false;
		
		// サービス契約蓄積未存在フラグ 
		svcKeiChikJudgeFlag = false;
		
		// 処理終了判断フラグ
		boolean endFlg = false;

		try 
		{
			/** (1) 電子ファイル情報保持 */
			if (!eFileCheckFlg) 
			{
				// ディレイド処理依頼番号チェック
				String[] freeItem = this.freeItem.split(JACStrConst.FREE_DIV);
				ArrayList<JBSbatServiceInterfaceMap> eFileList = this.getInMap(freeItem[10], freeItem[11]);
				shoriIraiNo = new String[eFileRecord];
				for (int i = 0; i < eFileRecord; i++) 
				{
					JBSbatServiceInterfaceMap eFileMap = eFileList.get(i);
					shoriIraiNo[i] = eFileMap.getString(JBSbatACIFM034.DLYD_TRN_REQ_NO);
				}
				// 初回のみチェックする
				eFileCheckFlg = true;
			}

			// 最終レコードの場合
			if (this.commonItem.isEndRecordFlg()) 
			{
				// 最終レコード判定フラグ←true
				this.lastFlg = true;
			}

			// 1. データチェック処理
			// 1.1 電話番号存在チェック
			endFlg = this.telNoCheck(inMap);

			// 処理終了フラグ = trueの場合
			if (endFlg) 
			{
				if (lastFlg && dateAriFlg) 
				{
					// 電報利用課金情報出力情報Mapに出力項目(最終退避レコード)を設定
					mkOutKmk();
				}

				// 処理を終了する
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint,
						"[E][execute]");
				return null;
			}

			// 1.2 サービス契約番号存在チェック
			endFlg = this.svcKeiNoCheck(inMap);

			// 処理終了フラグ = trueの場合
			if (endFlg) 
			{
				if (lastFlg && dateAriFlg) 
				{
					// 電報利用課金情報出力情報Mapに出力項目(最終退避レコード)を設定
					mkOutKmk();
				}

				// 処理を終了する
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint,
						"[E][execute]");
				return null;
			}

			// 1.3 サービス契約期間チェック
			endFlg = svcKeiTimeCheck(inMap);

			// 処理終了フラグ = trueの場合
			if (endFlg) 
			{
				if (lastFlg && dateAriFlg) 
				{
					// 電報利用課金情報出力情報Mapに出力項目(最終退避レコード)を設定
					mkOutKmk();
				}

				// 処理を終了する
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint,
						"[E][execute]");
				return null;

			}

			// 2. 情報付与処理
			// 2.1 請求契約番号取得処理
			endFlg = getSeikyKeiNo(inMap);

			// 処理終了フラグ = trueの場合
			if (endFlg) 
			{
				if (lastFlg && dateAriFlg) 
				{
					// 電報利用課金情報出力情報Mapに出力項目(最終退避レコード)を設定
					mkOutKmk();
				}

				// 処理を終了する
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint,
						"[E][execute]");
				return null;
			}
			
			// 2.2 料金項目コード取得処理
			getPrcKmkCd(inMap);

			// 2.3 料金コースコード・料金グループコード・料金サービスコード取得処理
			getPrcKmk(inMap);

			// 3.データ集約処理
			dateShuk(inMap);

		} 
		catch (Exception e) 
		{
			this.commonItem.getConnection().rollback();
			// 番ポあり、番ポなしで２レコード
			for (int i = 0; i < eFileRecord; i++)
			{
				// ディレイド処理依頼への更新
				JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo[i], JACStrConst.DLYD_TRN_RSLT_CD_SYS_ERR, null);
				
			}
			this.commonItem.getConnection().commit();
			throw e;
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_WORK_PARAM_KNRI.close();
		db_ZM_M_CD_NM_KANRI.close();
		db_ZM_M_TELNO.close();
		db_KK_T_SVC_KEI_UCWK.close();
		db_KK_T_KAKINS.close();
		db_AC_T_SVKEI_CHIKUSEKI.close();
		db_CH_M_PRC_KMK_CS_CHGE.close();
		db_ZM_T_DL_FILE_KANRI.close();
		db_CC_T_EFILE_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		

		HashMap<String, String> getMap = new HashMap<String, String>();
		
		try 
		{

			// 集約後の対象データを出力する
			for (int i = 0; i < keyList.size(); i++) 
			{
				getMap = dempoOutFileInfoMap.get(keyList.get(i));

				// サービス契約蓄積未存在フラグ
				Boolean chikFlg = Boolean.valueOf(getMap.get("CHIKIFLG"));

				// 集約結果フラグ
				boolean valueFlg = Boolean.valueOf(getMap.get("VALUEFLG"));

				// サービス契約蓄積未存在フラグ = true の場合
				if (chikFlg) 
				{
					// 電報利用課金エラー情報(料金計算結果リスト)出力
					outputCalcResultInfo(getMap);
				} 
				else if (valueFlg) 
				{
					// 電報利用課金情報(正常データ)出力
					outputDempoDateInfo(getMap);
				} 
				else 
				{
					// 集計エラー出力用退避Listから対象のデータを抽出し、そのレコード分出力する
					if(bkErrShukList.containsKey(keyList.get(i)))
					{
						ArrayList<HashMap<String, String>> wkList = bkErrShukList.get(keyList.get(i));
						for(int j = 0; j < wkList.size(); j++)
						{
							// 電報利用課金情報エラーリスト(集計後)出力
							outputShukDempoErrInfo(wkList.get(j), 3);
						}
					}
				}
			}

			// 電報利用課金情報(正常データ)出力0件の場合
			if (dateListCount == 0) 
			{
				// 電報利用課金情報(正常データ)0件出力を行う
				outputDempoDateZeroInfo();
			}

			// 電報利用課金情報エラーリスト出力0件の場合
			if (errListCount == 0) 
			{
				// 電報利用課金情報エラーリストファイル0件出力
				outputDempoZeroErrInfo();
			}

			// ファイルクローズ
			JCCBatCommon.closeBusinessFileUtil(this.dempoDateFile);
			// ファイルクローズ
			JCCBatCommon.closeBusinessFileUtil(this.dempoErrFile);
			// ファイルクローズ
			JCCBatCommon.closeBusinessFileUtil(this.dempoHojinFile);
			// ファイルクローズ
			JCCBatCommon.closeBusinessFileUtil(this.dempoErrCalcFile);

			// ファイル削除月日
			String fileDelYmd = JBSbatDateUtil.adjustMonth(super.opeDate,
					delPrdDenpoFile);

			// 電子ファイル管理テーブルへ登録
			// 電報利用課金情報(正常データ)(
			String[] eFileInfo = JCCbatDenshiFileUtil.createDenshiFile(
					this.commonItem, "", dempoDataFile, fileDelYmd);

			// 電子ファイル管理番号退避
			this.tmpEfileKanriNo = eFileInfo[0];

			// ダウンロードファイル管理スキーマ登録
			this.insZmTDlFileKanri(this.dempoDataFile, dateListCount);

			// 電報利用課金情報(電報利用課金情報エラーリスト()(
			String[] eFileInfoErr = JCCbatDenshiFileUtil.createDenshiFile(
					this.commonItem, "", errListFile, fileDelYmd);

			// 電子ファイル管理番号退避
			this.tmpEfileKanriNo = eFileInfoErr[0];

			// ダウンロードファイル管理スキーマ登録
			this.insZmTDlFileKanri(this.errListFile, errListCount);
			
			// エラーが発生した場合
			if(errListCount > 0 )
			{
				for (int i = 0; i < eFileRecord; i++)
				{
					JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo[i], JACStrConst.DLYD_TRN_RSLT_CD_WORK_ERR, errListFile);
				}
				// コミット実行
				this.commonItem.getConnection().commit();
			}

		} 
		catch (Exception e) 
		{
			// ロールバック実行
			this.commonItem.getConnection().rollback();
			for (int i = 0; i < eFileRecord; i++)
			{
				// ディレイド処理依頼への更新
				JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo[i], JACStrConst.DLYD_TRN_RSLT_CD_SYS_ERR, null);
				
			}
			// コミット実行
			this.commonItem.getConnection().commit();

			throw e;

		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(AC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	コード種別コード
	 *		 	コード区分
	 *		 	コード適用開始年月日
	 *		 	コード適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_CD_NM_KANRI_AC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_AC_SELECT_001);
	}

	/**
	 * SQLKEY(AC_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	コード種別コード
	 *		 	コード適用開始年月日
	 *		 	コード適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_CD_NM_KANRI_AC_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_AC_SELECT_002);
	}

	/**
	 * SQLKEY(AC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	電話番号
	 *		 	電話番号適用開始年月日
	 *		 	電話番号適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_TELNO_AC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_ZM_M_TELNO.selectBySqlDefine(paramList, ZM_M_TELNO_AC_SELECT_001);
	}

	/**
	 * SQLKEY(AC_SELECT_006)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	予約適用年月日
	 *		 	電話番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_UCWK_AC_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_AC_SELECT_006);
	}

	/**
	 * SQLKEY(AC_SELECT_007)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	予約適用年月日
	 *		 	受付月日
	 *		 	電話番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_UCWK_AC_SELECT_007(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_AC_SELECT_007);
	}

	/**
	 * SQLKEY(AC_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	課金先適用開始年月日
	 *		 	課金先適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KAKINS_AC_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_KAKINS.selectBySqlDefine(paramList, KK_T_KAKINS_AC_SELECT_004);
	}

	/**
	 * SQLKEY(AC_SELECT_009)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	システムコード
	 *		 	料金サービス識別コード
	 *		 	料金サービス管理適用開始年月日
	 *		 	料金サービス管理適用終了年月日
	 *		 	請求年月
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeAC_T_SVKEI_CHIKUSEKI_AC_SELECT_009(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());

		// DBアクセスを実行します
		db_AC_T_SVKEI_CHIKUSEKI.selectBySqlDefine(paramList, AC_T_SVKEI_CHIKUSEKI_AC_SELECT_009);
	}

	/**
	 * SQLKEY(AC_SELECT_024)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	システムコード
	 *		 	業務機能識別コード
	 *		 	抽出変換コード
	 *		 	料金項目抽出変換開始・終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_M_PRC_KMK_CS_CHGE_AC_SELECT_024(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_CH_M_PRC_KMK_CS_CHGE.selectBySqlDefine(paramList, CH_M_PRC_KMK_CS_CHGE_AC_SELECT_024);
	}
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	ファイル番号				FILE_NO
	 *		 	処理管理番号				TRN_KANRI_NO
	 *		 	電子ファイル管理番号				EFILE_KANRI_NO
	 *		 	ファイル名				FILE_NM
	 *		 	ファイルサイズ				FILE_SIZE
	 *		 	データ件数				DATA_CNT
	 *		 	ファイル登録年月日時分秒				FILE_ADD_DTM
	 *		 	ファイル削除年月日				FILE_DEL_YMD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_T_DL_FILE_KANRI_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("FILE_NO", setParam[0]);
		setMap.setValue("TRN_KANRI_NO", setParam[1]);
		setMap.setValue("EFILE_KANRI_NO", setParam[2]);
		setMap.setValue("FILE_NM", setParam[3]);
		setMap.setValue("FILE_SIZE", setParam[4]);
		setMap.setValue("DATA_CNT", setParam[5]);
		setMap.setValue("FILE_ADD_DTM", setParam[6]);
		setMap.setValue("FILE_DEL_YMD", setParam[7]);
		setMap.setValue("ADD_DTM", setParam[8]);
		setMap.setValue("ADD_OPEACNT", setParam[9]);
		setMap.setValue("UPD_DTM", setParam[10]);
		setMap.setValue("UPD_OPEACNT", setParam[11]);
		setMap.setValue("DEL_DTM", setParam[12]);
		setMap.setValue("DEL_OPEACNT", setParam[13]);
		setMap.setValue("MK_FLG", setParam[14]);
	
		// DBアクセスを実行します
		db_ZM_T_DL_FILE_KANRI.insertByPrimaryKeys(setMap);
	}
	/**
	 * SQLKEY(AC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	電子ファイル管理番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCC_T_EFILE_KANRI_AC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CC_T_EFILE_KANRI.selectBySqlDefine(paramList, CC_T_EFILE_KANRI_AC_SELECT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 電子ファイル管理のファイル読み込みを行います。<p>
	 * <p>
	 * 入力電文と同様、JBSbatServiceInterfaceMap を返す。<br>
	 * エンコードはShift-JIS、読み込み位置は1行目固定<br>
	 * ループ(主処理を含む)で使用しない。使用したファイルのクローズまで行う。
	 * </p>
	 * @param fileDef ファイル定義
	 * @param fileName ファイル名 
	 * @return ファイル定義型(JBSbatServiceInterfaceMap)で受け取ったファイルの一行
	 * @throws Exception スローされる例外
	 */
	private ArrayList<JBSbatServiceInterfaceMap> getInMap(String fileDef, String fileName) throws Exception
	{
		ArrayList<JBSbatServiceInterfaceMap> eFileList = new  ArrayList<JBSbatServiceInterfaceMap>();
		JBSbatInputFileUtil inFileObj = new JBSbatInputFileUtil(fileName);
		
		// 電子ファイル情報ファイル読み込み
		JBSbatDefFileUtil defFileUtil = new JBSbatDefFileUtil(JBSbatAplConst.getAplConstValue("IND") + fileDef, inFileObj);
		
		inFileObj.setEncode(JACStrConst.ENCODE_MS932);
		inFileObj.createReader();
		
		while (inFileObj.ready())
		{
			// レコードの１件を取得
			JBSbatServiceInterfaceMap retInMap = defFileUtil.lineToObject(inFileObj.readLine(), inFileObj, 0);
			// リストに設定
			eFileList.add(retInMap);
			// レコードのカウントアップ
			eFileRecord++;
		}

		// ファイルのクローズを行う
		if (inFileObj != null)
		{
			inFileObj.close();
			inFileObj = null;
		}

		return eFileList;
	}
	
	/**
	 * コード名称管理テーブルからコード区分名、コード区分略称を取得する
	 * @param cdSbtCd	コード種別コード
	 * @param cdDiv	コード区分
	 * @return	String	コード区分名
	 * @throws Exception
	 */
	private String getCdNmKanri(String cdSbtCd, String cdDiv) throws Exception
	{
		executeZM_M_CD_NM_KANRI_AC_SELECT_001(new Object[] {cdSbtCd, cdDiv, super.opeDate, super.opeDate});
		JBSbatCommonDBInterface record = db_ZM_M_CD_NM_KANRI.selectNext();
		if (record != null)
		{
			return record.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);
		}
		else
		{
			// コード名称管理テーブルから取得できない場合はエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE,
					new String[] { JBSbatZM_M_CD_NM_KANRI.TABLE_NAME });
		}
	}

	/**
	 * 電話番号チェックを行います。<br>
	 * 
	 * @param inMap 入力情報
	 * @return outFileFlg ファイル出力済みフラグ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean telNoCheck(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][telNoCheck]");
		
		// ファイル出力済みフラグ
		boolean outFileFlg = false;
		
		// ＤＢアクセス用のパラメータ定義
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		
		// 対象キーの設定
		dbList.setValue(inMap.getString(JBSbatACIFM030.SIKY_SK_TELNO));	// 請求電話番号
		dbList.setValue(super.opeDate); 								// バッチ運用日
		dbList.setValue(super.opeDate); 								// バッチ運用日
		
		// SQL実行
		executeZM_M_TELNO_AC_SELECT_001(dbList.getList().toArray());
		
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_ZM_M_TELNO.selectNext();

		// 検索結果0件の場合
		if(null == dbMap)
		{
			// 個人法人判定フラグ ← true
			kojinHojinJudgeFlag = true;
			
			// 電報利用課金情報(法人分)を出力する
			outputDempoHojinInfo(inMap);

			// 電報利用課金情報エラーリストを出力する
			outputDempoErrInfo(inMap, 0);
			
			// ファイル出力済みフラグ←true
			outFileFlg = true;

		}
		// 検索結果が存在する場合
		else
		{
			// 個人法人電話番号帯コード = "2"(法人)の場合
			String kojinHojinTlnTaiCD = dbMap.getString(JBSbatZM_M_TELNO.KOJIN_HOJIN_TLN_TAI_CD);
			if(kojinHojinTlnTaiCD != null) 
			{
				if(kojinHojinTlnTaiCD.equals(KOJIN_HOJIN_TLN_TAI_CD_HOJIN))
				{
					// 電報利用課金情報(法人分)を出力する
					outputDempoHojinInfo(inMap);
					
					// ファイル出力済みフラグ←true
					outFileFlg = true;
				}
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][telNoCheck]");
		return outFileFlg;
	}
	
	/**
	 * サービス契約番号の存在チェックを行います。<br>
	 * 
	 * @param inMap 入力情報
	 * @return outFileFlg ファイル出力済みフラグ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean svcKeiNoCheck(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][svcKeiNoCheck]");
		
		// ファイル出力済みフラグ
		boolean outFileFlg = false;
		
		// ＤＢアクセス用のパラメータ定義
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		
		// 対象キーの設定
		dbList.setValue(super.opeDate); 								// バッチ運用日
		dbList.setValue(super.opeDate); 								// バッチ運用日
		dbList.setValue(inMap.getString(JBSbatACIFM030.SIKY_SK_TELNO));	// 請求電話番号
		
		// SQL実行
		executeKK_T_SVC_KEI_UCWK_AC_SELECT_006(dbList.getList().toArray());
		
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_KK_T_SVC_KEI_UCWK.selectNext();

		// 検索結果0件の場合
		if(null == dbMap)
		{
			// 電報利用課金情報エラーリストを出力する
			outputDempoErrInfo(inMap, 1);
			
			// ファイル出力済みフラグ←true
			outFileFlg = true;

		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][svcKeiNoCheck]");
		return outFileFlg;
	}


	/**
	 * サービス契約期間チェックを行います。<br>
	 * 
	 * @param inMap 入力情報
	 * @return outFileFlg ファイル出力済みフラグ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean svcKeiTimeCheck(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][svcKeiTimeCheck]");
		
		// ファイル出力済みフラグ
		boolean outFileFlg = false;
		
		// ＤＢアクセス用のパラメータ定義
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		
		// 受付月日
		String[] tempList = inMap.getString(JBSbatACIFM030.UK_MD).split("/");
		String ukY = ukEndYmdMap.get(tempList[0]).substring(0, 4);
		String ukYmd = makeStr(ukY, tempList[0], tempList[1]);
		
		// 対象キーの設定
		dbList.setValue(super.opeDate); 								// バッチ運用日
		dbList.setValue(super.opeDate); 								// バッチ運用日
		dbList.setValue(ukYmd);											// 受付年月日
		dbList.setValue(inMap.getString(JBSbatACIFM030.SIKY_SK_TELNO));	// 請求電話番号
		
		// SQL実行
		executeKK_T_SVC_KEI_UCWK_AC_SELECT_007(dbList.getList().toArray());
		
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_KK_T_SVC_KEI_UCWK.selectNext();
		
		// 検索結果0件の場合(サービス契約期間外レコードである場合)
		if(null == dbMap)
		{
			// サービス契約期間外判定フラグ ← true
			this.svcKeiTimeJudgeFlag = true;
		}
		// 検索結果が存在する場合
		else
		{
			// サービス契約ステータス = "920"(キャンセル済み)の場合
			if(dbMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT).equals(JACStrConst.SKHK_SVKEI_STAT_CD_CNCL))
			{
				// 電報利用課金情報エラーリストを出力する
				outputDempoErrInfo(inMap, 1);
				
				// ファイル出力済みフラグ←true
				outFileFlg = true;
			}
			// 上記以外の場合
			else
			{
				// サービス契約番号
				this.svckeiNo = dbMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);
				// サービス開始年月日
				this.svcStaYmd = dbMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_STA_YMD);
				// サービス終了年月日
				this.svcEndYmd = dbMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_ENDYMD);
			}

		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][svcKeiTimeCheck]");
		
		return outFileFlg;
	}
	
	
	/**
	 * 請求契約番号の取得処理を行います。<br>
	 * 
	 * @param inMap 入力情報
	 * @return outFileFlg ファイル出力済みフラグ
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean getSeikyKeiNo(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getSeikyKeiNo]");
		
		// ファイル出力済みフラグ
		boolean outFileFlg = false;
		
		// ＤＢアクセス用のパラメータ定義
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		
		// 対象キーの設定
		dbList.setValue(this.svckeiNo);		// サービス契約番号
		dbList.setValue(super.opeDate); 	// バッチ運用日
		dbList.setValue(super.opeDate); 	// バッチ運用日
		
		// SQL実行
		executeKK_T_KAKINS_AC_SELECT_004(dbList.getList().toArray());
		
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_KK_T_KAKINS.selectNext();
		
		// 検索結果が存在する場合
		if(null != dbMap)
		{
			// 請求契約番号
			this.seikyKeiNo = dbMap.getString(JBSbatKK_T_KAKINS.SEIKY_KEI_NO);
		}
		
		// サービス契約期間外判定フラグ=true または 請求契約番号が取得できなかった 場合
		if(svcKeiTimeJudgeFlag || null == dbMap)
		{
			// 電報利用課金情報エラーリストを出力する
			outputDempoErrInfo(inMap, 2);
			
			// ファイル出力済みフラグ←true
			outFileFlg = true;
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getSeikyKeiNo]");
		
		return outFileFlg;
	}
	
	/**
	 * 料金コースコード・料金グループコード・料金サービスコードの取得処理を行います。<br>
	 * 
	 * @param inMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getPrcKmk(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getPrcKmk]");
		
		// ＤＢアクセス用のパラメータ定義
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		
		// 対象キーの設定
		dbList.setValue(super.systemCode);				// システムコード
		dbList.setValue(JACStrConst.SVC_SKBT_CD_NRML);	// 料金サービス識別コード(基本)
		dbList.setValue(super.opeDate);					// バッチ運用日
		dbList.setValue(super.opeDate);					// バッチ運用日
		dbList.setValue(this.seikyYm);					// 請求年月
		dbList.setValue(this.svckeiNo); 				// サービス契約番号
		
		// SQL実行
		executeAC_T_SVKEI_CHIKUSEKI_AC_SELECT_009(dbList.getList().toArray());
		
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_AC_T_SVKEI_CHIKUSEKI.selectNext();
		
		// データ取得済みフラグ
		boolean zumiFlg = false;
		
		// 検索結果が存在する場合
		if(null != dbMap)
		{
			while (dbMap != null) 
			{
				// 課金開始日
				String kakinStaYmd = dbMap.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.CHRG_STAYMD);
				// サービス開始日
				String svcStaYmd   = dbMap.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.SVC_STAYMD);

				// サービス開始日 ≦ 利用終了日
				if(svcStaYmd.compareTo(endYmd) <= 0)
				{
					// 料金グループコード
					prcGrpCd = dbMap.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PRC_GRP_CD);
					// 料金コースコード
					prcsCd = dbMap.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PCRS_CD);
					// 料金サービスコード
					prcSvcCd = dbMap.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PRC_SVC_CD);
					
					// データ取得済みフラグ
					zumiFlg = true;
				}
				// 課金開始日 ≦ 利用終了日
				if(kakinStaYmd.compareTo(endYmd) <= 0)
				{
					// 料金グループコード
					prcGrpCd = dbMap.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PRC_GRP_CD);
					// 料金コースコード
					prcsCd = dbMap.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PCRS_CD);
					// 料金サービスコード
					prcSvcCd = dbMap.getString(JBSbatAC_T_SVKEI_CHIKUSEKI.PRC_SVC_CD);
					
					// データ取得済みフラグ
					zumiFlg = true;

					break;
				}
				
				// 次レコードを取得
				dbMap = db_AC_T_SVKEI_CHIKUSEKI.selectNext();	
			}
		}
		// 取得結果が0件の場合 
		else
		{
			// サービス契約蓄積未存在フラグ ← true
			svcKeiChikJudgeFlag = true;
		}
		
		// 該当データが存在しなかった場合
		if(!zumiFlg)
		{
			// サービス契約蓄積未存在フラグ ← true
			svcKeiChikJudgeFlag = true;
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getPrcKmk]");
	}
	
	/**
	 * 料金項目コードの取得処理を行います。<br>
	 * 
	 * @param inMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getPrcKmkCd(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 料金項目コード取得
		// ＤＢアクセス用のパラメータ定義
		JBSbatCommonDBInterface dbList = new JBSbatCommonDBInterface();
		
		// 受付月
		String ukM = inMap.getString(JBSbatACIFM030.UK_MD).substring(0, 2);
		
		if(prcKmkCdMap.containsKey(ukM))
		{
			prcKmkCd = prcKmkCdMap.get(ukM);
			return;
		}
		
		// 受付年月末日
		String ukEndYmd = ukEndYmdMap.get(ukM);
		
		// 対象キーの設定
		dbList.setValue(super.systemCode);																			// システムコード
		dbList.setValue(this.makeStr(workKinoSkbCd, ukM));															// 業務機能識別コード
		dbList.setValue(JACStrConst.CHSHT_CHG_CD_CHG);																// 抽出変換コード
		dbList.setValue(ukEndYmd);																					// 受付年月末日
		
		// SQL実行
		executeCH_M_PRC_KMK_CS_CHGE_AC_SELECT_024(dbList.getList().toArray());
		
		// 結果を取得
		JBSbatCommonDBInterface dbMap = db_CH_M_PRC_KMK_CS_CHGE.selectNext();
		
		// 検索結果が存在する場合
		if (dbMap != null) 
		{
			// 料金項目コード
			prcKmkCd = dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.OUT_PRC_KMK_CD);
			// 後続用にマップに貯める
			prcKmkCdMap.put(ukM, prcKmkCd);
		}
		else
		{
			// DB未存在エラー
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeInfo][DB未存在エラー]");
			String[] outCntMsg = {JBSbatCH_M_PRC_KMK_CS_CHGE.TABLE_NAME, dbList.getList().toString()};
			// エラーログ出力（エラーコード："EACB0250CE"（DB未存在エラー））
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0250CE, outCntMsg);
		}
	}
	
	/**
	 * データ集約処理を行います。<br>
	 * 
	 * @param inMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void dateShuk(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][dateShuk]");

		// 請求電話番号
		String seikyTelNo = inMap.getString(JBSbatACIFM030.SIKY_SK_TELNO);

		// 税込み電報料金
		BigDecimal uzeiDenpoPrc = new BigDecimal(inMap.getString(JBSbatACIFM030.UZEI_DEMPO_PRC));

		// 集約キー ← サービス契約番号 + 請求電話番号
		String wkKey = this.makeStr(this.svckeiNo, seikyTelNo);
		
		// 集計エラー出力用退避List
		mkBkErrList(inMap, wkKey);
		
		// 1レコード目の場合
		if(shukKey == null)
		{
			// 電報課金利用情報出力Map
			dempoOutFileInfoMap = new HashMap<String, HashMap<String, String>>();

			// 集約対象データ存在フラグ←true
			dateAriFlg = true;
			
			// 集約キー格納Set 
			shuKeySet = new HashSet<String>();

			// 退避項目を設定
			mkBkKmk(inMap, wkKey, uzeiDenpoPrc);
			
			// 最終レコードの場合
			if(lastFlg)
			{
				//電報利用課金情報出力情報Mapに出力項目を設定
				mkOutKmk();
			}
		}
		// 最終レコードの場合
		else if(this.commonItem.isEndRecordFlg())
		{
			// キーブレイクした場合
			if(!shuKeySet.contains(wkKey))
			{
				//電報利用課金情報出力情報Mapに出力項目を設定
				mkOutKmk();
				
				// 退避．税込み電報料金を初期化
				bkPrcKmkCdList.clear();
				denpoPrcMap.clear();
				
				// 退避項目を設定
				mkBkKmk(inMap, wkKey, uzeiDenpoPrc);
			}
			else
			{
				// 料金項目コードが処理リストにいない場合
				if(!bkPrcKmkCdList.contains(prcKmkCd))
				{
					// 追加
					bkPrcKmkCdList.add(prcKmkCd);
				}
				
				// 料金項目コードが退避電報金額を持つ場合
				if(denpoPrcMap.containsKey(prcKmkCd))
				{
					// 足しこみ
					uzeiDenpoPrc = uzeiDenpoPrc.add(denpoPrcMap.get(prcKmkCd));
				}
				
				// 退避．電報料金マップ = 税込み電報料金
				denpoPrcMap.put(prcKmkCd, uzeiDenpoPrc);
			}
			
			//電報利用課金情報出力情報Mapに出力項目を設定
			mkOutKmk();
		}
		// 2レコード目以降の場合
		else
		{
			// キーブレイク
			if(!shuKeySet.contains(wkKey))
			{
				// 電報利用課金情報出力情報Mapに出力項目を設定
				mkOutKmk();
				
				// 退避．税込み電報料金を初期化
				bkPrcKmkCdList.clear();
				denpoPrcMap.clear();
				
				// 退避項目を設定
				mkBkKmk(inMap, wkKey, uzeiDenpoPrc);
			}
			// 上記以外の場合
			else
			{
				// 料金項目コードが処理リストにいない場合
				if(!bkPrcKmkCdList.contains(prcKmkCd))
				{
					// 追加
					bkPrcKmkCdList.add(prcKmkCd);
				}
				
				// 料金項目コードが退避電報金額を持つ場合
				if(denpoPrcMap.containsKey(prcKmkCd))
				{
					// 足しこみ
					uzeiDenpoPrc = uzeiDenpoPrc.add(denpoPrcMap.get(prcKmkCd));
				}
				
				// 退避．電報料金マップ = 税込み電報料金
				denpoPrcMap.put(prcKmkCd, uzeiDenpoPrc);
			}	
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][dateShuk]");
	}
	
	
	/**
	 * 集約結果の判定処理を行います。<br>
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般。
	 * @return judgeFlg 判定フラグ
	 */
	private boolean judgeDateShuk(BigDecimal denpoPrc) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][judgeDateShuk]");
		
		// 判定フラグ
		boolean judgeFlg = false;
	
		// 集約結果が負の値でない場合
		if(denpoPrc.compareTo(BigDecimal.ZERO) >= 0)
		{
			judgeFlg = true;
		}
		
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][judgeDateShuk]");
		return judgeFlg;
	}
	
	/**
	 * 出力項目の設定を行います。<br>
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void mkOutKmk() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][mkOutKmk]");
		
		for(String bkPrcKmkCd : bkPrcKmkCdList)
		{
			String outKey = shukKey + bkPrcKmkCd;
			BigDecimal bkDenpoPrc = denpoPrcMap.get(bkPrcKmkCd);
			
			HashMap<String, String> bkMap = new HashMap<String, String>();
			
			bkMap.put("PRCS_CD", this.bkPrcsCd);
			bkMap.put("PRCS_GRP_CD", this.bkPrcGrpCd);
			bkMap.put("PRC_SVC_CD", this.bkPrcSvcCd);
			bkMap.put("PRC_KMK_CD", bkPrcKmkCd);
			bkMap.put("SEIKY_KEI_NO", this.bkSeikyKeiNo);
			bkMap.put("SVC_KEI_NO", this.bkSvckeiNo);
			bkMap.put("NO", this.bkNo);
			bkMap.put("SEIKY_TEL_NO", this.bkSeikyTelNo);
			bkMap.put("MAIN_PRC", this.bkMainPrc);
			bkMap.put("UK_MD", this.bkUkMd);
			bkMap.put("SVC_STA_YMD", this.bkSvcStaYmd);
			bkMap.put("SVC_END_YMD", this.bkSvcEndYmd);
			bkMap.put("BMP_SKBT", this.bkDempoSkbtCd);
			bkMap.put("PRC", bkDenpoPrc.toString());
			bkMap.put("VALUEFLG", String.valueOf(judgeDateShuk(bkDenpoPrc)));
			bkMap.put("CHIKIFLG", String.valueOf(bkSvcKeiChikJudgeFlag));
			
			dempoOutFileInfoMap.put(outKey, bkMap);
			
			keyList.add(outKey);

			// 集計結果の判定がtrue(金額が正の値)の場合、退避リストから削除する
			if(judgeDateShuk(bkDenpoPrc))
			{
				// ANK-4022-00-00 MOD START
				// if(bkErrShukList.containsKey(shukKey))
				// {
				// 	bkErrShukList.remove(shukKey);
				// }
				if(bkErrShukList.containsKey(outKey))
				{
					bkErrShukList.remove(outKey);
				}
				// ANK-4022-00-00 MOD END
			}
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][mkOutKmk]");
	}

	
	/**
	 * 退避項目の設定を行います。<br>
	 * 
	 * @param inMap 入力情報
	 * @param wkKey 集約キー
	 * @param uzeiDenpoPrc 税込み電報料金
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void mkBkKmk(JBSbatServiceInterfaceMap inMap, String wkKey, BigDecimal uzeiDenpoPrc) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][mkBkKmk]");
		
		
		// 退避．集約キー ← 集約キー
		shukKey = wkKey;
		
		// 集約キー格納Set ← 集約キー
		shuKeySet.add(shukKey);
		
		// 出力項目を退避させる
		
		// 退避．料金コースコード←料金コースコード
		this.bkPrcsCd = this.prcsCd;
		
		// 退避．料金グループコード←料金グループコード
		this.bkPrcGrpCd = this.prcGrpCd;
		
		// 退避．料金サービスコード←料金サービスコード
		this.bkPrcSvcCd = this.prcSvcCd;
		
		// 退避．料金項目コード←料金項目コード
		this.bkPrcKmkCdList.add(this.prcKmkCd);
		
		// 退避．請求契約番号←請求契約番号
		this.bkSeikyKeiNo = this.seikyKeiNo;
		
		// 退避．サービス契約番号←サービス契約番号
		this.bkSvckeiNo = this.svckeiNo;

		// 退避．NO←入力．NO
		this.bkNo = inMap.getString(JBSbatACIFM030.NO);
		
		// 退避．請求電話番号←入力．請求先電話番号
		this.bkSeikyTelNo = inMap.getString(JBSbatACIFM030.SIKY_SK_TELNO);
		
		// 退避．本体料金←入力．電話番号/差額
		this.bkMainPrc = inMap.getString(JBSbatACIFM030.DEMPO_PRC_SAGAKU);
		
		// 退避．受付月日←入力．受付月日
		this.bkUkMd = inMap.getString(JBSbatACIFM030.UK_MD);
		
		// 退避．サービス開始年月日←サービス開始年月日
		this.bkSvcStaYmd = this.svcStaYmd;
		
		// 退避．サービス終了年月日←サービス終了年月日
		this.bkSvcEndYmd = this.svcEndYmd;
		
		// 退避．番ポ識別←入力．番ポ識別
		this.bkDempoSkbtCd = inMap.getString(JBSbatACIFM030.BANPO_SKBT_CD);
		
		// 退避．サービス契約蓄積未存在フラグ←サービス契約蓄積未存在フラグ
		this.bkSvcKeiChikJudgeFlag = this.svcKeiChikJudgeFlag;
		
		// 退避．電報料金マップ = 税込み電報料金
		denpoPrcMap.put(prcKmkCd, uzeiDenpoPrc);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][mkBkKmk]");
	}

	
	
	/**
	 * 電報利用課金情報(正常データ)のファイル出力を行います。
	 * 
	 * @param  outPutMap 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outputDempoDateInfo(HashMap<String, String> outPutMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputDempoDateInfo]");
		
		ArrayList<Object> dempoDateInfoList = new ArrayList<Object>();

		// 請求契約番号
		dempoDateInfoList.add(outPutMap.get("SEIKY_KEI_NO"));
		// サービス契約番号
		dempoDateInfoList.add(outPutMap.get("SVC_KEI_NO"));
		// 料金グループコード
		dempoDateInfoList.add(outPutMap.get("PRCS_GRP_CD"));
		// 料金コースコード
		dempoDateInfoList.add(outPutMap.get("PRCS_CD"));
		// 料金サービスコード
		dempoDateInfoList.add(outPutMap.get("PRC_SVC_CD"));
		// 料金項目コード
		dempoDateInfoList.add(outPutMap.get("PRC_KMK_CD"));
		// 請求時期指定
		dempoDateInfoList.add(this.seikyJikiShiteiCd);
		// 請求年月
		dempoDateInfoList.add(this.seikyYm);
		// 請求金額
		dempoDateInfoList.add(outPutMap.get("PRC"));
		
		dateListCount++;
		
		// 電報利用課金情報(正常データ)ファイル出力
		JCCBatCommon.printBusinessFileUtil(this.dempoDateFile, dempoDateInfoList);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputDempoDateInfo]");
		
	}
	
	/**
	 * 電報利用課金情報(正常データ)のファイル0件出力を行います。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outputDempoDateZeroInfo() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputDempoDateZeroInfo]");
		
		ArrayList<Object> dempoDateInfoList = new ArrayList<Object>();

		// "対象データなし"
		dempoDateInfoList.add("対象データなし");

		
		// 電報利用課金情報(正常データ)ファイル出力
		JCCBatCommon.printBusinessFileUtil(this.dempoDateFile, dempoDateInfoList);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputDempoDateZeroInfo]");
		
	}


	
	/**
	 * 電報利用課金情報(法人分)のファイル出力を行います。
	 * 
	 * @param inMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outputDempoHojinInfo(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputDempoHojinInfo]");
		
		ArrayList<Object> dempoHojinInfoList = new ArrayList<Object>();

		// 受付年月日はYYYYMMDDに編集
		String[] tempList = inMap.getString(JBSbatACIFM030.UK_MD).split("/");
		String ukY = ukEndYmdMap.get(tempList[0]).substring(0, 4);
		String acceptDate = makeStr(ukY, tempList[0], tempList[1]);
		
		// NO
		dempoHojinInfoList.add(JACStrConst.DOUBLE_QUOTE + inMap.getString(JBSbatACIFM030.NO) + JACStrConst.DOUBLE_QUOTE);
		// 請求電話番号
		dempoHojinInfoList.add(JACStrConst.DOUBLE_QUOTE + inMap.getString(JBSbatACIFM030.SIKY_SK_TELNO) + JACStrConst.DOUBLE_QUOTE);
		// 本体電報料金
		dempoHojinInfoList.add(JACStrConst.DOUBLE_QUOTE + inMap.getString(JBSbatACIFM030.DEMPO_PRC_SAGAKU) + JACStrConst.DOUBLE_QUOTE);
		// 税込み電報料金
		dempoHojinInfoList.add(JACStrConst.DOUBLE_QUOTE + inMap.getString(JBSbatACIFM030.UZEI_DEMPO_PRC) + JACStrConst.DOUBLE_QUOTE);
		// 受付年月日
		dempoHojinInfoList.add(JACStrConst.DOUBLE_QUOTE + acceptDate + JACStrConst.DOUBLE_QUOTE);
		// 番ポ識別
		dempoHojinInfoList.add(JACStrConst.DOUBLE_QUOTE +inMap.getString(JBSbatACIFM030.BANPO_SKBT_CD) + JACStrConst.DOUBLE_QUOTE);
		
		// 電報利用課金情報(法人分)ファイル出力
		JCCBatCommon.printBusinessFileUtil(this.dempoHojinFile, dempoHojinInfoList);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputDempoHojinInfo]");
		
	}

	
	/**
	 * 電報利用課金情報エラーリストのファイル出力を行います。
	 * 
	 * @param inMap 入力情報
	 * @param index メッセージリストインデックス
	 *
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outputDempoErrInfo(JBSbatServiceInterfaceMap inMap, int index) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputDempoErrInfo]");
		
		// 電報利用課金情報エラーリスト出力1件目の場合
		if(errListCount == 0)
		{
			// ヘッダ部分の出力を行う
			dempoErrHeader();
		}
		
		ArrayList<Object> dempoErrInfoList = new ArrayList<Object>();

		// 請求契約番号
		dempoErrInfoList.add(this.seikyKeiNo);
		// サービス契約番号
		dempoErrInfoList.add(this.svckeiNo);
		// NO
		dempoErrInfoList.add(inMap.getString(JBSbatACIFM030.NO));
		// 請求電話番号
		dempoErrInfoList.add(inMap.getString(JBSbatACIFM030.SIKY_SK_TELNO));
		// 本体料金
		dempoErrInfoList.add(inMap.getString(JBSbatACIFM030.DEMPO_PRC_SAGAKU));
		// 請求金額
		dempoErrInfoList.add(inMap.getString(JBSbatACIFM030.UZEI_DEMPO_PRC));
		// 受付年月日
		dempoErrInfoList.add(inMap.getString(JBSbatACIFM030.UK_MD));
		// サービス開始日
		dempoErrInfoList.add(this.svcStaYmd);
		// サービス終了日
		dempoErrInfoList.add(this.svcEndYmd);
		// 法人・個人有無
		// 法人
		if(this.kojinHojinJudgeFlag)
		{
			dempoErrInfoList.add(this.hojinKojinCdMap.get(JACStrConst.HJIN_KOJIN_DIV_HJIN));
		}
		// 個人
		else
		{
			dempoErrInfoList.add(this.hojinKojinCdMap.get(JACStrConst.HJIN_KOJIN_DIV_KOJIN));
		}
		// 番ポ識別
		dempoErrInfoList.add(inMap.getString(JBSbatACIFM030.BANPO_SKBT_CD));
		// エラー内容
		dempoErrInfoList.add(errMsgList.get(index));
		
		// 電報利用課金情報エラーリストファイル出力
		JCCBatCommon.printBusinessFileUtil(this.dempoErrFile, dempoErrInfoList);
		
		errListCount++;

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputDempoErrInfo]");
		
	}

	
	/**
	 * 電報利用課金情報エラーリストのファイル(集計後)出力を行います。
	 * 
	 * @param outPutMap  出力情報
	 * @param index メッセージリストインデックス
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outputShukDempoErrInfo(HashMap<String, String> outPutMap, int index) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputShukDempoErrInfo]");
		
		// 電報利用課金情報エラーリスト出力1件目の場合
		if(errListCount == 0)
		{
			// ヘッダ部分の出力を行う
			dempoErrHeader();
		}
		
		ArrayList<Object> dempoErrInfoList = new ArrayList<Object>();

		// 請求契約番号
		dempoErrInfoList.add(outPutMap.get("SEIKY_KEI_NO"));
		// サービス契約番号
		dempoErrInfoList.add(outPutMap.get("SVC_KEI_NO"));
		// NO
		dempoErrInfoList.add(outPutMap.get("NO"));
		// 請求電話番号
		dempoErrInfoList.add(outPutMap.get("SEIKY_TEL_NO"));
		// 本体料金
		dempoErrInfoList.add(outPutMap.get("MAIN_PRC"));
		// 請求金額
		dempoErrInfoList.add(outPutMap.get("PRC"));
		// 受付年月日
		dempoErrInfoList.add(outPutMap.get("UK_MD"));
		// サービス開始日
		dempoErrInfoList.add(outPutMap.get("SVC_STA_YMD"));
		// サービス終了日
		dempoErrInfoList.add(outPutMap.get("SVC_END_YMD"));
		// 法人・個人有無
		// 個人
		dempoErrInfoList.add(this.hojinKojinCdMap.get(JACStrConst.HJIN_KOJIN_DIV_KOJIN));
		// 番ポ識別
		dempoErrInfoList.add(outPutMap.get("BMP_SKBT"));
		// エラー内容
		dempoErrInfoList.add(errMsgList.get(index));
		
		// 電報利用課金情報エラーリストファイル出力
		JCCBatCommon.printBusinessFileUtil(this.dempoErrFile, dempoErrInfoList);
		
		errListCount++;

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputShukDempoErrInfo]");
		
	}

	
	/**
	 * 電報利用課金情報エラーリストヘッダ部分のファイル出力を行います。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void dempoErrHeader() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][dempoErrHeader]");
		
		ArrayList<Object> dempoErrHeaderList = new ArrayList<Object>();
		
		// ヘッダ部分の項目を設定する
		dempoErrHeaderList.add("請求契約番号");
		dempoErrHeaderList.add("サービス契約番号");
		dempoErrHeaderList.add("ＮＯ");
		dempoErrHeaderList.add("請求電話番号");
		dempoErrHeaderList.add("本体料金");
		dempoErrHeaderList.add("請求金額");
		dempoErrHeaderList.add("受付年月日");
		dempoErrHeaderList.add("サービス開始日");
		dempoErrHeaderList.add("サービス終了日");
		dempoErrHeaderList.add("法人・個人有無");
		dempoErrHeaderList.add("番ポ識別");
		dempoErrHeaderList.add("エラー内容");
		
		// 電報利用課金情報エラーリストヘッダ部分出力
		JCCBatCommon.printBusinessFileUtil(this.dempoErrFile, dempoErrHeaderList);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][dempoErrHeader]");
	}
	
	/**
	 * 電報利用課金情報エラーリストファイル0件出力を行います。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outputDempoZeroErrInfo() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputDempoZeroErrInfo]");
		
		ArrayList<Object> dempoErrInfoList = new ArrayList<Object>();

		// "対象データなし"
		dempoErrInfoList.add("対象データなし");
		
		// 電報利用課金情報エラーリストファイル出力
		JCCBatCommon.printBusinessFileUtil(this.dempoErrFile, dempoErrInfoList);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputDempoZeroErrInfo]");
		
	}

	
	/**
	 * 文字を連結します
	 * @param  string 文字
	 * @return strBuf 連結した文字列
	 */
	private String makeStr(String ...string)
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeStr]");
		
		StringBuffer strBuf = new StringBuffer();
		for(String str:string)
		{
			if(str == null)
			{
				strBuf.append(JACStrConst.KARA_MOJI);
			}
			else
			{
				strBuf.append(str);
			}
		}
		
		assert strBuf != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][strBuf][strBuf = " + strBuf.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeStr]");
		
		return strBuf.toString();
	}

	
	/**
	 * 電報利用課金エラー情報(料金計算結果リスト)のファイル出力を行います。
	 * 
	 * @param  outPutMap 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outputCalcResultInfo(HashMap <String, String> outPutMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputCalcResultInfo]");
		
		ArrayList<Object> calcResultInfoList = new ArrayList<Object>();

		// エラーコード
		calcResultInfoList.add(this.ichjikinErrCd);
		// エラー内容
		calcResultInfoList.add(this.ichjikinErrMsg);
		// 処理日
		calcResultInfoList.add(super.opeDate);
		// 請求先番号
		calcResultInfoList.add(outPutMap.get("SEIKY_KEI_NO"));
		// 請求先カナ名
		calcResultInfoList.add(JACStrConst.KARA_MOJI);
		// サービス契約番号
		calcResultInfoList.add(outPutMap.get("SVC_KEI_NO"));
		// サービス詳細識別番号
		calcResultInfoList.add(JACStrConst.KARA_MOJI);
		// 請求年月
		calcResultInfoList.add(this.seikyYm);
		// 料金コースコード
		calcResultInfoList.add(JACStrConst.KARA_MOJI);
		// 料金サービスコード
		calcResultInfoList.add(JACStrConst.KARA_MOJI);
		// 料金項目コード
		calcResultInfoList.add(outPutMap.get("PRC_KMK_CD"));
		// 料金内訳名称
		calcResultInfoList.add(JACStrConst.KARA_MOJI);
		// 請求金額
		calcResultInfoList.add(outPutMap.get("PRC"));
		// 通信料
		calcResultInfoList.add(JACStrConst.KARA_MOJI);
		// 投入区分
		calcResultInfoList.add(JACStrConst.KARA_MOJI);

		
		// 電報利用課金エラー情報(料金計算結果リスト) ファイル出力
		JCCBatCommon.printBusinessFileUtil(this.dempoErrCalcFile, calcResultInfoList);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputCalcResultInfo]");
		
	}

	
	/**
	 * ファイル出力
	 * 
	 * @param  filePath  ファイルパス
	 * @param  fileDef   ファイル定義
	 * @return fileUtil  ファイルインスタンス
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatBusinessFileUtil createFile(String filePath, String fileDef) throws Exception 
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][createFile]");
		JBSbatOutputFileUtil trailerFile 	= new JBSbatOutputFileUtil(filePath);
		String tempFileDefName 				= JBSbatAplConst.getAplConstValue(PRM_OTD) + fileDef;
		JBSbatDefFileUtil trailerFileDef 	= new JBSbatDefFileUtil(tempFileDefName, trailerFile);
		
		// ファイルの生成
		JBSbatBusinessFileUtil fileUtil = JCCBatCommon.createBusinessFileUtil(filePath
																			, JACStrConst.ENCODE_MS932
																			, JACBatCommon.chgKaigyo(JACStrConst.LINE_CRLF)
																			, trailerFileDef.getDelimiter());
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][createFile]");
		return fileUtil;
	}
	
	/**
	 * ダウンロードファイル管理スキーマに登録します。
	 * 
	 * @param fileNm ファイル名
	 * @param dateCount 件数
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void insZmTDlFileKanri(String fileNm, int dateCount) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][insZmTDlFileKanri]");

		// 電子ファイル管理の情報を取得
		JBSbatCommonDBInterface eFileInfo = this.selectCcTEfileKanri(this.tmpEfileKanriNo);
		
		// 設定値
		JBSbatCommonDBInterface param = new JBSbatCommonDBInterface();
		//  1.ファイル番号
		param.setValue(JCCBatCommon.getFormatedNextSeq(super.commonItem, JACStrConst.SEQ_FILE_NO, SEQ_PREFIX_SEQ_FILE_NOO, SEQ_LEN_SEQ_FILE_NO));
		//  2.処理管理番号
		param.setValue(this.trnKanriNo);
		//  3.電子ファイル管理番号
		param.setValue(this.tmpEfileKanriNo);
		//  4.ファイル名
		String[] fileName = fileNm.split(JACStrConst.SLASH, -1);
		param.setValue(fileName[fileName.length - 1]);
		//  5.ファイルサイズ
		param.setValue(JCCFileUtil.getFileSize(fileNm));
		//  6.データ件数
		param.setValue(dateCount);
		//  7.ファイル登録年月日時分秒
		param.setValue(eFileInfo.getString(JBSbatCC_T_EFILE_KANRI.ADD_DTM));
		//  8.ファイル削除年月日
		param.setValue(eFileInfo.getString(JBSbatCC_T_EFILE_KANRI.FILE_DEL_YMD));
		//  9.登録年月日時分秒
		param.setValue(null);
		// 10.登録オペレータアカウント
		param.setValue(null);
		// 11.更新年月日時分秒
		param.setValue(null);
		// 12.更新オペレータアカウント
		param.setValue(null);
		// 13.削除年月日時分秒
		param.setValue(null);
		// 14.削除オペレータアカウント
		param.setValue(null);
		// 15.無効フラグ
		param.setValue(null);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][insZmTDlFileKanri][param = " + param.getList().toString() + "]");

		// SQL実行
		executeZM_T_DL_FILE_KANRI_PKINSERT(param.getList().toArray());

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][insZmTDlFileKanri]");
	}
	
	/**
	 * 電子ファイル管理スキーマより、電子ファイル管理の情報を取得します。
	 * 
	 * @param eFileKanriNo 		電子ファイル管理番号
	 * @return dbMap		電子ファイル管理の情報
	 * @throws Exception 　業務サービス内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectCcTEfileKanri(String eFileKanriNo) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectCcTEfileKanri]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		paramList.setValue(eFileKanriNo);				// 電子ファイル管理番号
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectCcTEfileKanri][paramList=" + paramList.getList().toString() + "]");

		// SQL実行
		executeCC_T_EFILE_KANRI_AC_SELECT_001(paramList.getList().toArray());
		
		// 結果取得
		JBSbatCommonDBInterface dbMap = db_CC_T_EFILE_KANRI.selectNext();
		
		if (dbMap == null)
		{
			// DB未存在エラー
			String[] msgParam = new String[]
			{ JBSbatCC_T_EFILE_KANRI.TABLE_NAME, JPCUtilCommon.convMapToString(paramList.getMap()) };
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0260CH, msgParam);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][selectCcTEfileKanri][dbMap=" + dbMap.getMap().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectCcTEfileKanri]");
		return dbMap;
	}

	/**
	 * 退避項目の設定を行います。<br>
	 * 
	 * @param inMap 入力情報
	 * @param wkKey 集約キー
	 * @param uzeiDenpoPrc 税込み電報料金
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void mkBkErrList(JBSbatServiceInterfaceMap inMap, String wkKey) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][mkBkErrList]");
		
		ArrayList<HashMap<String, String>> bkErrList = new ArrayList<HashMap<String, String>>();
		HashMap<String, String> bkErrMap = new HashMap<String, String>();
		// ANK-4022-00-00 ADD START
		// 集約キー + 料金項目コードを集計エラー出力用退避Listの集約キーとする。
		String bkErrShukListKey = this.makeStr(wkKey, this.prcKmkCd);
		// ANK-4022-00-00 ADD END
		
		// 出力項目を退避させる
		
		bkErrMap.put("PRCS_CD", this.prcsCd);
		bkErrMap.put("PRCS_GRP_CD", this.prcGrpCd);
		bkErrMap.put("PRC_SVC_CD", this.prcSvcCd);
		bkErrMap.put("PRC_KMK_CD", this.prcKmkCd);
		bkErrMap.put("SEIKY_KEI_NO", this.seikyKeiNo);
		bkErrMap.put("SVC_KEI_NO", this.svckeiNo);
		bkErrMap.put("NO", inMap.getString(JBSbatACIFM030.NO));
		bkErrMap.put("SEIKY_TEL_NO", inMap.getString(JBSbatACIFM030.SIKY_SK_TELNO));
		bkErrMap.put("MAIN_PRC", inMap.getString(JBSbatACIFM030.DEMPO_PRC_SAGAKU));
		bkErrMap.put("UK_MD", inMap.getString(JBSbatACIFM030.UK_MD));
		bkErrMap.put("SVC_STA_YMD", this.svcStaYmd);
		bkErrMap.put("SVC_END_YMD", this.svcEndYmd);
		bkErrMap.put("BMP_SKBT", inMap.getString(JBSbatACIFM030.BANPO_SKBT_CD));
		bkErrMap.put("PRC", inMap.getString(JBSbatACIFM030.UZEI_DEMPO_PRC));
		
		// 集計エラー出力用退避Listにすでに同じキーで存在する場合は、同リストに追加する
		// ANK-4022-00-00 MOD START
		// if(bkErrShukList.containsKey(wkKey))
		// {
		//	bkErrList = bkErrShukList.get(wkKey);
		// }
		if(bkErrShukList.containsKey(bkErrShukListKey))
		{
			bkErrList = bkErrShukList.get(bkErrShukListKey);
		}
		// ANK-4022-00-00 MOD END

		bkErrList.add(bkErrMap);
		// ANK-4022-00-00 MOD START
		// bkErrShukList.put(wkKey, bkErrList);
		bkErrShukList.put(bkErrShukListKey, bkErrList);
		// ANK-4022-00-00 MOD END
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][mkBkErrList]");
	}
	
	/**
	 * 請求年月より、受付年月を設定します。
	 * @param seikyYm 請求年月
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void makeUkYm(JACbatSchdlUtil su) throws Exception
	{
		//退避請求年月
		String tmpUkYm = JACStrConst.KARA_MOJI;
		String[] tmpUkStaEndYmd = {JACStrConst.KARA_MOJI, JACStrConst.KARA_MOJI};
		String tmpUkStaYmd = super.opeDate.substring(0, 6) + "01";
		String keyUkM = tmpUkStaYmd.substring(4, 6);
		
		while(!ukEndYmdMap.containsKey(keyUkM))
		{
			ukEndYmdMap.put(keyUkM, tmpUkStaYmd);
			
			tmpUkYm = JPCDateUtil.addMonth(tmpUkStaYmd, -1).substring(0, 6);
			tmpUkStaEndYmd = su.getUseStrEnd(tmpUkYm, JACStrConst.EVENT_CD_USE_STAYMD, JACStrConst.EVENT_CD_USE_ENDYMD);
			tmpUkStaYmd = tmpUkStaEndYmd[0];
			keyUkM = tmpUkStaYmd.substring(4, 6);
		}
	}
}
