/*********************************************************************
*  All Rights reserved,Copyright (c) Fujitsu ,2016					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSBatKKCrsChgIktAdd
*	ソースファイル名	：JBSBatKKCrsChgIktAdd.java
*	作成者				：富士通　
*	作成日				：2016年07月12日
*＜機能概要＞
*　コース変更一括登録処理部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v26.00.00   2016/07/12   FJ) 栗秋    【ANK-2765-00-00】認証IDの統一化
*   v26.00.01   2016/08/17   FJ) 栗秋    【IT2-2016-0000042】コース変更一括登録バッチでＭＴ(G)を登録したら 正常にコース変更が登録されるべきところ PON種別の未設定エラーとなった。
*   v26.00.02   2016/09/01   FJ) 栗秋    【ST-2016-0000033】1G対応マンションの判定処理の不具合
*********************************************************************/
package eo.business.service;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JCCbatShoriIraiUtil;
import eo.business.common.JKKBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.common.JKKBatOutputUtil;
import eo.business.util.file.JBSbatKKIFM714;
import eo.business.util.file.JBSbatKKIFM715;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
import eo.business.util.table.JBSbatCC_T_EFILE_KANRI;
import eo.business.util.table.JBSbatKK_M_PCRS;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_EXC_CTRL;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.business.util.table.JBSbatKK_M_PCRS_CHG_PSBJKN;
import eo.business.util.table.JBSbatKK_M_PPLAN;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.business.util.table.JBSbatZM_M_TAKNKIKI_MODEL;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JCCFileUtil;
import eo.common.util.JKKStringUtil;

import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
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.JBSbatCheckUtil;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JCCBatchEsbInterface;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSBatKKCrsChgIktAdd extends JBSbatBusinessService
{
	/** テーブル(電子ファイル管理)*/
	private static final String D_TBL_NAME_CC_T_EFILE_KANRI = "CC_T_EFILE_KANRI";
	/** テーブル(督促)*/
	private static final String D_TBL_NAME_CH_T_TOKUSOKU = "CH_T_TOKUSOKU";
	/** テーブル(料金コース)*/
	private static final String D_TBL_NAME_KK_M_PCRS = "KK_M_PCRS";
	// ST-2016-0000033 2016/09/01 ADD START
	/** テーブル(回線使用契約)*/
	private static final String D_TBL_NAME_KK_T_KAISEN_USE_KEI = "KK_T_KAISEN_USE_KEI";
	// ST-2016-0000033 2016/09/01 ADD END
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";
	/** テーブル(サービス契約回線内訳)*/
	private static final String D_TBL_NAME_KK_T_SVKEI_KAISEN_UW = "KK_T_SVKEI_KAISEN_UW";
	/** テーブル(オプションサービス契約)*/
	private static final String  D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";
	/** テーブル(提供方式契約)*/
	private static final String D_TBL_NAME_KK_T_TK_HOSHIKI_KEI = "KK_T_TK_HOSHIKI_KEI";
	/** テーブル(住所変更明細)*/
	private static final String D_TBL_NAME_KK_T_ADCHG_DTL = "KK_T_ADCHG_DTL";
	/** テーブル(異動予約)*/
	private static final String D_TBL_NAME_KK_T_IDO_RSV = "KK_T_IDO_RSV";
	/** テーブル(サービス契約工事案件)*/
	private static final String D_TBL_NAME_KU_T_SVKEI_KOJIAK = "KU_T_SVKEI_KOJIAK";
	/** テーブル(宅内機器型式)*/
	private static final String D_TBL_NAME_ZM_M_TAKNKIKI_MODEL = "ZM_M_TAKNKIKI_MODEL";
	/** テーブル(コード名称管理)*/
	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_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";
	/** テーブル(データ一括登録管理)*/
	private static final String D_TBL_NAME_ZM_T_DATAIKTTRK_KNRI = "ZM_T_DATAIKTTRK_KNRI";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String CC_T_EFILE_KANRI_KK_SELECT_001 = "KK_SELECT_001";
	/** SQL定義キー(KK_SELECT_004)*/
	private static final String CH_T_TOKUSOKU_KK_SELECT_004 = "KK_SELECT_004";
	/** SQL定義キー(KK_SELECT_010)*/
	private static final String KK_M_PCRS_KK_SELECT_010 = "KK_SELECT_010";
	/** SQL定義キー(KK_SELECT_039)*/
	private static final String KK_T_ADCHG_DTL_KK_SELECT_039 = "KK_SELECT_039";
	/** SQL定義キー(KK_SELECT_039)*/
	private static final String KK_T_TK_HOSHIKI_KEI_KK_SELECT_039 = "KK_SELECT_039";
	/** SQL定義キー(KK_SELECT_056)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_056 = "KK_SELECT_056";
	/** SQL定義キー(KK_SELECT_094)*/
	private static final String KK_T_IDO_RSV_KK_SELECT_094 = "KK_SELECT_094";
	/** SQL定義キー(KK_SELECT_123)*/
	private static final String KK_T_OP_SVC_KEI_KK_SELECT_123 = "KK_SELECT_123";
	// ST-2016-0000033 2016/09/01 ADD START
	/** SQL定義キー(KK_SELECT_016)*/
	private static final String KK_T_KAISEN_USE_KEI_KK_SELECT_016 = "KK_SELECT_016";
	// ST-2016-0000033 2016/09/01 ADD END
	/** SQL定義キー(KK_SELECT_331)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_331 = "KK_SELECT_331";
	/** SQL定義キー(KK_SELECT_020)*/
	private static final String KU_T_SVKEI_KOJIAK_KK_SELECT_020 = "KK_SELECT_020";
	/** SQL定義キー(KK_SELECT_002)*/
	private static final String ZM_T_DATAIKTTRK_KNRI_KK_SELECT_002= "KK_SELECT_002";
	/** SQL定義キー(KK_SELECT_004)*/
	private static final String ZM_M_CD_NM_KANRI_KK_SELECT_004 = "KK_SELECT_004";
	/** SQL定義キー(KK_SELECT_005)*/
	private static final String ZM_M_TAKNKIKI_MODEL_KK_SELECT_005 = "KK_SELECT_005";
	/** SQL定義キー(KK_SELECT_006)*/
	private static final String ZM_M_TAKNKIKI_MODEL_KK_SELECT_006 = "KK_SELECT_006";
	/** SQL定義キー(KK_SELECT_007)*/
	private static final String ZM_M_TAKNKIKI_MODEL_KK_SELECT_007 = "KK_SELECT_007";

	/** テーブルアクセスクラス(電子ファイル管理)*/
	private JBSbatSQLAccess db_CC_T_EFILE_KANRI = null;
	/** テーブルアクセスクラス(督促)*/
	private JBSbatSQLAccess db_CH_T_TOKUSOKU = null;
	/** テーブルアクセスクラス(料金コース)*/
	private JBSbatSQLAccess db_KK_M_PCRS = null;
	// ST-2016-0000033 2016/09/01 ADD START
	/** テーブルアクセスクラス(回線使用契約)*/
	private JBSbatSQLAccess db_KK_T_KAISEN_USE_KEI = null;
	// ST-2016-0000033 2016/09/01 ADD END
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	/** テーブルアクセスクラス(提供方式契約)*/
	private JBSbatSQLAccess db_KK_T_TK_HOSHIKI_KEI = null;
	/** テーブルアクセスクラス(サービス契約回線内訳)*/
	private JBSbatSQLAccess db_KK_T_SVKEI_KAISEN_UW = null;
	/** テーブルアクセスクラス(住所変更明細)*/
	private JBSbatSQLAccess db_KK_T_ADCHG_DTL = null;
	/** テーブルアクセスクラス(異動予約)*/
	private JBSbatSQLAccess db_KK_T_IDO_RSV = null;
	/** テーブルアクセスクラス(サービス契約工事案件)*/
	private JBSbatSQLAccess db_KU_T_SVKEI_KOJIAK = null;
	/** テーブルアクセスクラス(オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;
	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	/** テーブルアクセスクラス(宅内機器型式)*/
	private JBSbatSQLAccess db_ZM_M_TAKNKIKI_MODEL = null;
	/** テーブルアクセスクラス(ディレイド処理依頼)*/
	private JBSbatSQLAccess db_ZM_T_DATAIKTTRK_KNRI = null;
	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	
	/** コード種別コード（コース変更一括登録エラーコード） */
	private static final String CD_SBT_CD_ADD_ERR_CD  = "CD01694";
	/** コード種別コード（コース変更一括登録結果コード） */
	private static final String CD_SBT_CD_ADD_RSLT_CD = "CD01695";

	/** コース変更一括登録エラーコード ファイルフォーマット */
	private static final String ERR_CD_E010 = "E010";
	/** コース変更一括登録エラーコード サービス契約番号 */
	private static final String ERR_CD_E020 = "E020";
	/** コース変更一括登録エラーコード E100 */
	private static final String ERR_CD_E100 = "E100";
	/** コース変更一括登録エラーコード E110 */
	private static final String ERR_CD_E110 = "E110";
	/** コース変更一括登録エラーコード E120 */
	private static final String ERR_CD_E120 = "E120";
	/** コース変更一括登録エラーコード E130 */
	private static final String ERR_CD_E130 = "E130";
	/** コース変更一括登録エラーコード E150 */
	private static final String ERR_CD_E150 = "E150";
	/** コース変更一括登録エラーコード E160 */
	private static final String ERR_CD_E160 = "E160";
	/** コース変更一括登録エラーコード E170 */
	private static final String ERR_CD_E170 = "E170";
	/** コース変更一括登録エラーコード E180 */
	private static final String ERR_CD_E180 = "E180";
	/** コース変更一括登録エラーコード E190 */
	private static final String ERR_CD_E190 = "E190";
	/** コース変更一括登録エラーコード E200 */
	private static final String ERR_CD_E200 = "E200";
	/** コース変更一括登録エラーコード E210 */
	private static final String ERR_CD_E210 = "E210";
	/** コース変更一括登録エラーコード E220 */
	private static final String ERR_CD_E220 = "E220";
	/** コース変更一括登録エラーコード E900 */
	private static final String ERR_CD_E500 = "E500";
	/** コース変更一括登録エラーコード W100 */
	private static final String ERR_CD_W100 = "W100";

	/** コース変更一括登録結果コード（正常） */
	private static final String ADD_RSLT_OK = "0";
	/** コース変更一括登録結果コード（チェックエラー） */
	private static final String ADD_RSLT_NG = "1";
	
	/** コース変更一括登録エラーコード格納マップ */
	private HashMap<String, String> addErrCdMap  = null;
	/** コース変更一括登録結果コード格納マップ */
	private HashMap<String, String> addRsltCdMap = null;

	/** システム日時 **/
	private String sysDateTimeStamp = null;


	/**
	 * SQLKEY(KK_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_KK_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_KK_SELECT_001);
	}

	/**
	 * SQLKEY(KK_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 executeCH_T_TOKUSOKU_KK_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());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_CH_T_TOKUSOKU.selectBySqlDefine(paramList, CH_T_TOKUSOKU_KK_SELECT_004);
	}

	/**
	 * SQLKEY(KK_SELECT_094)で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_IDO_RSV_KK_SELECT_094(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_IDO_RSV.selectBySqlDefine(paramList, KK_T_IDO_RSV_KK_SELECT_094);
	}

	/**
	 * SQLKEY(KK_SELECT_039)で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_ADCHG_DTL_KK_SELECT_039(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_ADCHG_DTL.selectBySqlDefine(paramList, KK_T_ADCHG_DTL_KK_SELECT_039);
	}

	/**
	 * SQLKEY(KK_SELECT_016)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	サービス契約_工事案件適用開始年月日
	 *		 	サービス契約_工事案件適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKU_T_SVKEI_KOJIAK_KK_SELECT_020(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_KU_T_SVKEI_KOJIAK.selectBySqlDefine(paramList, KU_T_SVKEI_KOJIAK_KK_SELECT_020);
	}
	/**
	 * SQLKEY(KK_SELECT_010)で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_M_PCRS_KK_SELECT_010(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());

		// DBアクセスを実行します
		db_KK_M_PCRS.selectBySqlDefine(paramList, KK_M_PCRS_KK_SELECT_010);
	}
	
	/**
	 * SQLKEY(KK_SELECT_056)で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_SVKEI_KAISEN_UW_KK_SELECT_056(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_SVKEI_KAISEN_UW.selectBySqlDefine(paramList, KK_T_SVKEI_KAISEN_UW_KK_SELECT_056);
	}
	
	/**
	 * SQLKEY(KK_SELECT_039)で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_TK_HOSHIKI_KEI_KK_SELECT_039(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_TK_HOSHIKI_KEI.selectBySqlDefine(paramList, KK_T_TK_HOSHIKI_KEI_KK_SELECT_039);
	}

	/**
	 * SQLKEY(KK_SELECT_123)で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_OP_SVC_KEI_KK_SELECT_123(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_OP_SVC_KEI.selectBySqlDefine(paramList, KK_T_OP_SVC_KEI_KK_SELECT_123);
	}
	// ST-2016-0000033 2016/09/01 ADD START
	/**
	 * SQLKEY(KK_SELECT_016)で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_KAISEN_USE_KEI_KK_SELECT_016(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_KAISEN_USE_KEI.selectBySqlDefine(paramList, KK_T_KAISEN_USE_KEI_KK_SELECT_016);
	}
	// ST-2016-0000033 2016/09/01 ADD END

	/**
	 * SQLKEY(KK_SELECT_331)で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_KK_SELECT_331(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_331);
	}
	/**
	 * SQLKEY(KK_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 executeZM_M_CD_NM_KANRI_KK_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_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_KK_SELECT_004);
	}

	/**
	 * SQLKEY(KK_SELECT_005)で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_TAKNKIKI_MODEL_KK_SELECT_005(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_ZM_M_TAKNKIKI_MODEL.selectBySqlDefine(paramList, ZM_M_TAKNKIKI_MODEL_KK_SELECT_005);
	}

	/**
	 * SQLKEY(KK_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 executeZM_M_TAKNKIKI_MODEL_KK_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_ZM_M_TAKNKIKI_MODEL.selectBySqlDefine(paramList, ZM_M_TAKNKIKI_MODEL_KK_SELECT_006);
	}

	/**
	 * SQLKEY(KK_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 executeZM_M_TAKNKIKI_MODEL_KK_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_ZM_M_TAKNKIKI_MODEL.selectBySqlDefine(paramList, ZM_M_TAKNKIKI_MODEL_KK_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 executeZM_T_DATAIKTTRK_KNRI_KK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_ZM_T_DATAIKTTRK_KNRI.selectBySqlDefine(paramList, ZM_T_DATAIKTTRK_KNRI_KK_SELECT_002);
	}

	/**
	 * 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);
	}

	/**
	 * ダウンロードファイル管理テーブルの登録を行います。
	 * <br>
	 * @param eFileKanriNo 電子ファイル管理番号
	 * @param fileName   ファイル名
	 * @param filePath   ファイルパス
	 * @param rowCnt     データ件数
	 * @throws Exception 
	 */
	private void insertZM_T_DL_FILE_KANRI(String eFileKanriNo, String fileName, String filePath, int rowCnt, String trn_kanri_no) throws Exception
	{
		JBSbatCommonDBInterface eFileInfo = getEfileKanriInfo(eFileKanriNo);
		
		// パラメータ設定
		Object[] prm = new Object[15];
		prm[0] = JKKBatCommon.getFormatedNextSeq(commonItem, "SEQ_FILE_NO", "", 12);
		prm[1] = trn_kanri_no;
		prm[2] = eFileKanriNo;
		prm[3] = fileName;
		prm[4] = JCCFileUtil.getFileSize(filePath);
		prm[5] = String.valueOf(rowCnt);
		prm[6] = eFileInfo.getString(JBSbatCC_T_EFILE_KANRI.ADD_DTM);
		prm[7] = eFileInfo.getString(JBSbatCC_T_EFILE_KANRI.FILE_DEL_YMD);
		prm[8] = JBSbatDateUtil.getSystemDateTimeStamp();
		prm[9] = "SYSTEM";
		prm[10] = JBSbatDateUtil.getSystemDateTimeStamp();
		prm[11] = "SYSTEM";
		prm[12] = null;
		prm[13] = null;
		prm[14] = "0";

		executeZM_T_DL_FILE_KANRI_PKINSERT(prm);
	}

	/**
	 * 電子ファイル管理スキーマより、電子ファイル管理の情報を取得します。
	 * 
	 * @param eFileNO 		電子ファイル管理番号
	 * @return dbMap		電子ファイル管理の情報
	 * @throws Exception	業務サービス内で発生した例外全般
	 */
	private JBSbatCommonDBInterface getEfileKanriInfo(String eFileKanriNo) throws Exception
	{
		Object[] param = new Object[1];
		param[0] = eFileKanriNo;
		
		// SQL実行
		executeCC_T_EFILE_KANRI_KK_SELECT_001(param);
		
		// 結果取得
		JBSbatCommonDBInterface dbMap = db_CC_T_EFILE_KANRI.selectNext();
		
		if (dbMap == null)
		{
			// DB未存在エラー
			String[] msgParam = new String[]
			{ JBSbatCC_T_EFILE_KANRI.TABLE_NAME };
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0720KW, msgParam);
		}
		return dbMap;
	}

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CC_T_EFILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_T_EFILE_KANRI);
		db_CH_T_TOKUSOKU = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_TOKUSOKU);
		db_KK_M_PCRS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PCRS);
		db_KK_T_ADCHG_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADCHG_DTL);
		db_KK_T_IDO_RSV = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_IDO_RSV);
		// ST-2016-0000033 2016/09/01 ADD START
		db_KK_T_KAISEN_USE_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAISEN_USE_KEI);
		// ST-2016-0000033 2016/09/01 ADD END
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_SVKEI_KAISEN_UW = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEI_KAISEN_UW);
		db_KU_T_SVKEI_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_SVKEI_KOJIAK);
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_ZM_T_DL_FILE_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DL_FILE_KANRI);
		db_ZM_T_DATAIKTTRK_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_T_DATAIKTTRK_KNRI);
		db_ZM_M_TAKNKIKI_MODEL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_TAKNKIKI_MODEL);
		db_KK_T_TK_HOSHIKI_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_TK_HOSHIKI_KEI);
		db_KK_T_OP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_OP_SVC_KEI);

		//システム日時を取得する。
		sysDateTimeStamp = JCCBatCommon.getSysDateTimeStamp();

		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		List<HashMap<String, Object>> shoriIraiList = new ArrayList<HashMap<String, Object>>();
		//ディレイド処理依頼取得
		shoriIraiList = JCCbatShoriIraiUtil.getShoriIraiInfo(commonItem, this.jobid);
		if (shoriIraiList == null)
		{
			// 対象データが存在しないため処理終了
			return null;
		}

		// コース変更一括登録エラーコード取得
		addErrCdMap = getCdNmKanri(CD_SBT_CD_ADD_ERR_CD);
		// コース変更一括登録結果コード取得
		addRsltCdMap = getCdNmKanri(CD_SBT_CD_ADD_RSLT_CD);

		int infoCount = 0;
		int errorCount = 0;

		for(HashMap<String, Object> shoriIrai:shoriIraiList)
		{
			// コース変更一括登録結果リスト
			ArrayList<JBSbatServiceInterfaceMap> crsChgIktAddReqRsltList = new ArrayList<JBSbatServiceInterfaceMap>();

			// チェックエラー存在フラグ（コース変更一括登録結果ファイル出力時の判定処理に使用）
			boolean checkErr = false;

			// 入力ファイルの定義取得
			String inDefFileName = JBSbatAplConst.getAplConstValue("IND") + "KKIFM714.def";
			// ディレイド処理依頼番号
			String shoriIraiNo = (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO);
			// 入力電子ファイル管理番号
			String fileKanriNo = (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.INPUT_EFILE_KANRI_NO);

			// 電子ファイル管理よりコース変更依頼ファイルの復元
			String inFilePath = JCCBatCommon.searchDenshiFile(commonItem, fileKanriNo);
			// ReadFileOpen
			JBSbatInputFileUtil inFileUtil = new JBSbatInputFileUtil(inFilePath);
			JBSbatDefFileUtil inFileDef = new JBSbatDefFileUtil(inDefFileName, inFileUtil);

			// Readerオブジェクトを生成する。
			inFileUtil.createReader();

			// 入力ファイルのレコード件数
			int inFileRecordCnt = 0;

			while (inFileUtil.ready()){
				// ファイルから１レコード取得
				String line = inFileUtil.readLine();
				
				// レコード件数カウント
				inFileRecordCnt++;

				// １レコードの情報をマップに格納
				JBSbatServiceInterfaceMap recordMap = inFileDef.lineToObject(line, inFileUtil, inFileRecordCnt);

				// サービス契約情報
				HashMap<String, Object> svcKeiMap = new HashMap<String, Object>();
				// サービス契約回線内訳情報
				HashMap<String, Object> svkeiKaisenUwMap = new HashMap<String, Object>();
				// 料金コース情報
				HashMap<String, Object> pcrsMap = new HashMap<String, Object>();

				// 登録チェック処理
				String errCd = checkMain(recordMap, svcKeiMap, svkeiKaisenUwMap);

				// チェックエラーの場合（エラーコード:W100以外）
				if (!errCd.isEmpty() && !errCd.equals(ERR_CD_W100))
				{
					crsChgIktAddReqRsltList.add(setCrsChgReqRslt(recordMap.getMap(), errCd));
					checkErr = true;
					infoCount++;
					// 次レコードを処理
					continue;
				}

				// ワーニングが発生した場合、処理結果はNGとする
				if (errCd.equals(ERR_CD_W100))
				{
					checkErr = true;
				}
				
				// 料金コース情報を取得
				String bfPcrsCd = svcKeiMap.get(JBSbatKK_T_SVC_KEI.PCRS_CD).toString();
				executeKK_M_PCRS_KK_SELECT_010(new String[]{bfPcrsCd,super.opeDate,super.opeDate,super.opeDate,super.opeDate});
				JBSbatCommonDBInterface pcrsInfo = db_KK_M_PCRS.selectNext();
				pcrsMap.putAll(pcrsInfo.getMap());

				// コース変更登録のためサービスを呼び出す
				try
				{
					HashMap<String, Object> outputMap = invokeService(svcKeiMap,pcrsMap);
					String returnCode = outputMap.get(JCCBatchEsbInterface.RETURN_CODE).toString();
					if(!JCCBatchEsbInterface.RETURN_CODE_SUCCESS.equals(returnCode))
					{
						// エラーコード設定
						crsChgIktAddReqRsltList.add(setCrsChgReqRslt(recordMap.getMap(), ERR_CD_E500));
						checkErr = true;
						// エラーログ出力
						commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKKB1220CI,
								new String[]{"サービス契約番号：" + (String)recordMap.getMap().get(JBSbatKKIFM714.SVC_KEI_NO)});
						infoCount++;
						// 次レコードを処理
						continue;
					}
				}
				catch (Throwable e)
				{
					// エラーコード設定
					crsChgIktAddReqRsltList.add(setCrsChgReqRslt(recordMap.getMap(), ERR_CD_E500));
					checkErr = true;
					//フレームワークがエラーログにスタックトレースを出さないので、独自にエラーログ出力する
					super.logPrint.printErrMsg(JPCBatchMessageConstant.ECCB0110CE, e, new String[]{});
					errorCount++;
					// 次レコードを処理
					continue;
				}

				// 正常に登録したため、正常としてファイル出力を行う
				crsChgIktAddReqRsltList.add(setCrsChgReqRslt(recordMap.getMap(), errCd));

			}

			// コース変更一括登録結果ファイル出力
			if(!JKKStringUtil.isNullEmpty(crsChgIktAddReqRsltList))
			{
				// ファイル名などの出力ファイル情報をフリー項目から取得
				String[] outMidFile = freeItem.split(JKKBatConst.S_PARAM_DELIM);
				
				JBSbatOutputItem outputBean = new JBSbatOutputItem();
				for (JBSbatServiceInterfaceMap outMap : crsChgIktAddReqRsltList) {
					outMap.setOutFlg(true);
					outputBean.addOutMapList(outMap);
				}
				
				
				// コース変更一括登録結果ファイルの出力先パスを取得（スラッシュ付）
				String outFilePath = outMidFile[0];
				
				// コース変更一括登録結果ファイルのファイル名を編集
				String outFileName =  "KKIFM715001_" + sysDateTimeStamp + ".csv";

				// コース変更一括登録結果ファイルをファイル出力する
				JKKBatOutputUtil.editOutFile(super.commonItem, outputBean, "KKIFM715", outFilePath, outFileName);

				String outFileFullPath = outFilePath + outFileName;
				
				// 処理管理番号の取得を行う
				String trn_kanri_no = "000000000153";
				executeZM_T_DATAIKTTRK_KNRI_KK_SELECT_002(new String[]{shoriIraiNo});
				JBSbatCommonDBInterface dateIkKriInfo = db_ZM_T_DATAIKTTRK_KNRI.selectNext();
				if (null == dateIkKriInfo)
				{
					// 何もしない
				}
				else
				{
					trn_kanri_no = dateIkKriInfo.getString("TRN_KANRI_NO");
				}

				// 電子ファイル管理に登録する日本語のファイル名
				String outFileNhngName = "コース変更一括登録結果ファイル_" + sysDateTimeStamp + ".csv";
				if (checkErr)
				{
					// チェックエラーありのため、ディレイド処理依頼結果コードを"業務エラー"で更新
					HashMap<String, String> retMap = JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, "2", outFileFullPath);

					// エラーファイルの電子ファイル管理番号取得して、ダウンロードファイル管理に登録
					String eFileKanriNo = retMap.get("EFILE_KAMRI_NO");

					if(!JKKStringUtil.isNullBlank(eFileKanriNo))
					{
						insertZM_T_DL_FILE_KANRI(eFileKanriNo, outFileNhngName, outFileFullPath, inFileRecordCnt, trn_kanri_no);
					}
				}
				else
				{
					// チェックエラーなしのため、ディレイド処理依頼結果コードを"完了"で更新
					JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, "1", null);

					// コース変更一括登録結果ファイルを電子ファイル管理スキーマに設定
					String[] denshiRet = JCCBatCommon.createDenshiFile(super.commonItem, "0000", outFileFullPath, null);
					
					// ダウンロードファイル管理に登録
					insertZM_T_DL_FILE_KANRI(denshiRet[0], outFileNhngName, outFileFullPath, inFileRecordCnt, trn_kanri_no);
				}
			}
		}

		// 登録チェックエラーが存在する場合
		if (0 < infoCount)
		{
			// 「%1% ファイル出力件数 = %2%」
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0760AI,
					new String[] { "コース変更一括登録ファイル", Integer.toString(infoCount) + "(INFO)" });
		}
		
		// エラー（業務エラー、システムエラー）が存在する場合
		if (0 < errorCount)
		{
			// 単一サービス呼び出しパターンの場合は、エラー件数を設定することで警告終了する
			commonItem.setErrorCount(errorCount);
		}

		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}


	/**
	 * コード名称管理より該当のコード種別のコードを取得します。
	 * <br>
	 * @param cdSbtCd  コード種別コード
	 * @return 
	 * @throws Exception 
	 */
	private HashMap<String, String> getCdNmKanri(String cdSbtCd) throws Exception
	{
		HashMap<String, String> resultMap  = new HashMap<String, String>();
		
		Object[] prm = new Object[]{cdSbtCd, super.opeDate, super.opeDate};
		executeZM_M_CD_NM_KANRI_KK_SELECT_004(prm);
		
		// 取得したコード名称管理の内容をハッシュテーブルに格納する
		JBSbatCommonDBInterface dbMap = db_ZM_M_CD_NM_KANRI.selectNext();
		while(dbMap != null)
		{
			// 「コード区分」をキーに「コード区分名」を設定する
			resultMap.put(
					dbMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV), dbMap.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM));
			dbMap = db_ZM_M_CD_NM_KANRI.selectNext();
		}
		
		return resultMap;
	}
	
	/**
	 * 登録チェックを行います。
	 * <br>
	 * @param recordMap コース変更一括登録依頼リストの１レコードの情報
	 * @param svcKeiMap サービス契約情報（返却用）
	 * @param svkeiKaisenUwMap サービス契約回線内訳情報
	 * @return コース変更一括登録エラーコード
	 */
	@SuppressWarnings("unchecked")
	private String checkMain(JBSbatServiceInterfaceMap recordMap,
			HashMap<String, Object> svcKeiMap,
			HashMap<String, Object> svkeiKaisenUwMap)
	throws Exception
	{
		// (a)ファイルチェック

		// フォーマットチェック
		if (recordMap.isInputErrorFlg())
		{
			// １レコードの項目数が異なる
			return ERR_CD_E010;
		}
		
		// 必須・属性・桁数チェック
		String result = singleCheck(recordMap.getMap());
		
		if (!JKKStringUtil.isNullBlank(result))
		{
			return result;
		}

		// (b) コース変更チェック

		// サービス契約情報を取得
		String svcKeiNo = recordMap.getString(JBSbatKKIFM714.SVC_KEI_NO);
		executeKK_T_SVC_KEI_KK_SELECT_331(new String[]{svcKeiNo,super.opeDate});
		JBSbatCommonDBInterface svcKeiInfo = db_KK_T_SVC_KEI.selectNext();

		// サービス契約に存在しないお客様IDの場合、チェックエラーとする
		if (null == svcKeiInfo)
		{
			super.logPrint.printDebugLog("サービス契約に存在しないお客様ID");
			return ERR_CD_E100;
		}

		// サービス契約情報を戻す
		svcKeiMap.putAll(svcKeiInfo.getMap());

		// サービス契約の契約状態が「サービス提供中」以外の場合、チェックエラーとする
		String svcKeiStat = svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
		if (!JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStat))
		{
			return ERR_CD_E110;
		}

		// サービス契約の料金グループコード
		String prcGrpCd = svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);

		// 料金グループコードが「eo光ネットホームタイプ」
		// 料金グループコードが「eo光ネットメゾンタイプ」
		// 料金グループコードが「eo光ネットマンションタイプ」
		// 上記のいずれでもない場合、チェックエラーとする
		if (!((JKKStrConst.CD00133_02.equals(prcGrpCd))
				|| (JKKStrConst.CD00133_03.equals(prcGrpCd))
				|| (JKKStrConst.CD00133_04.equals(prcGrpCd))
				))
		{
			return ERR_CD_E120;
		}

		// サービス契約の料金プランコード
		String pcrsCd = svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.PCRS_CD);

		// 料金プランコードが「100Mプレミアム」
		// 料金プランコードが「200M」
		// 料金プランコードが「メゾンタイプ100Mプレミアム」
		// 料金プランコードが「メゾンタイプ200M」
		// 料金プランコードが「マンションタイプ　グローバル　100Mプレミアム　イーサネット」
		// 料金プランコードが「マンションタイプ　光配線　100Mプレミアム」
		// 上記のいずれでもない場合、チェックエラーとする
		if (!((JKKStrConst.CD00134_A04.equals(pcrsCd))
				|| (JKKStrConst.CD00134_A07.equals(pcrsCd))
				|| (JKKStrConst.CD00134_A09.equals(pcrsCd))
				|| (JKKStrConst.CD00134_A11.equals(pcrsCd))
				|| (JKKStrConst.CD00134_GLB100M_PREMIUM_ETHER.equals(pcrsCd))
				|| (JKKStrConst.CD00134_100M_PREMIUM_HIKARI.equals(pcrsCd))
				))
		{
			return ERR_CD_E130;
		}

		//サービス契約の料金グループがマンションタイプの場合
		if (JKKStrConst.CD00133_04.equals(prcGrpCd))
		{
			// 提供方式契約情報を取得（1G対応マンション）
			String tkHoshikiKeiNo = svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.TK_HOSHIKI_KEI_NO);
			// ST-2016-0000033 2016/09/01 MOD START
//			executeKK_T_TK_HOSHIKI_KEI_KK_SELECT_039(new String[]{tkHoshikiKeiNo});
//			JBSbatCommonDBInterface tkHoshikiKeiInfo = db_KK_T_TK_HOSHIKI_KEI.selectNext();
//
//			// 1G対応マンションが取得できない場合、チェックエラーとする。
//			if (Integer.parseInt(tkHoshikiKeiInfo.getString("CNT")) == 0)
//			{
//				return ERR_CD_E150;
//			}
			// 回線使用契約情報を取得（1G対応マンション）
			executeKK_T_KAISEN_USE_KEI_KK_SELECT_016(new String[]{tkHoshikiKeiNo});
			JBSbatCommonDBInterface kaisenUseKeiInfo = db_KK_T_KAISEN_USE_KEI.selectNext();
			if (Integer.parseInt(kaisenUseKeiInfo.getString("CNT")) == 0){
				return ERR_CD_E150;
			}
			// ST-2016-0000033 2016/09/01 MOD END
		}

		// IT2-2016-0000042 2016/08/17 MOD START
//		// サービス契約回線内訳情報を取得(PON種別が未設定でないもの)
		// サービス契約回線内訳情報を取得
		// IT2-2016-0000042 2016/08/17 MOD END
		executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_056(new String[]{svcKeiNo, super.opeDate, super.opeDate});
		JBSbatCommonDBInterface svkeiKaisenUwInfo = db_KK_T_SVKEI_KAISEN_UW.selectNext();
		
		// IT2-2016-0000042 2016/08/17 MOD START
//		// PON種別が未設定の場合、チェックエラーとする
//		if (null == svkeiKaisenUwInfo)
		// 料金グループコードが「eo光ネットホームタイプ」かつPON種別が未設定の場合、チェックエラーとする
		// サービス契約回線内訳のPON種別コード
		String 	ponSbtCd = svkeiKaisenUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.PON_SBT_CD);
		// IT2-2016-0000042 2016/08/22 MOD START
//		if ((JKKStrConst.CD00133_02.equals(prcGrpCd) && (ponSbtCd.equals("") || null == ponSbtCd)) || null == svkeiKaisenUwInfo)
		if ((JKKStrConst.CD00133_02.equals(prcGrpCd) && (null == ponSbtCd || ponSbtCd.equals(""))) || null == svkeiKaisenUwInfo)
		// IT2-2016-0000042 2016/08/22 MOD END
		// IT2-2016-0000042 2016/08/17 MOD END
		{
			// 利用中のサービス契約回線内訳が取得できない場合は、エラーとする
			return ERR_CD_E170;
		}

		// IT2-2016-0000042 2016/08/17 DEL START
//		// サービス契約回線内訳のPON種別コード
//		String ponSbtCd = svkeiKaisenUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.PON_SBT_CD);
		// IT2-2016-0000042 2016/08/17 DEL END

		// サービス契約回線内訳のサービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = svkeiKaisenUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SVC_KEI_KAISEN_UCWK_NO);

		// 保有しているONU機器情報を取得
		// IT2-2016-0000042 2016/08/17 MOD START
//		executeZM_M_TAKNKIKI_MODEL_KK_SELECT_005(new String[]{svcKeiKaisenUcwkNo,super.opeDate});
//		JBSbatCommonDBInterface taknkikiModelInfo = db_ZM_M_TAKNKIKI_MODEL.selectNext();
//		// 保有しているONU機器のPON種別がE-PON、ONU機器が無い場合は回線内訳のPON種別がE-PONの場合、チェックエラーとする
//		//ONU機器が無い場合
//		if (null == taknkikiModelInfo)
//		{
//			//回線内訳のPON種別がE-PONの場合
//			if (ponSbtCd.equals("1"))
//			{
//				return ERR_CD_E210;
//			}
//		}else{
//			// 保有しているONU機器のPON種別
//			String onuPonSbtCd = taknkikiModelInfo.getString(JBSbatZM_M_TAKNKIKI_MODEL.PON_SBT_CD);
//			// 保有しているONU機器のPON種別がE-PON
//			if (onuPonSbtCd.equals("1"))
//			{
//				return ERR_CD_E210;
//			}
//
//		}
		JBSbatCommonDBInterface taknkikiModelInfo = new JBSbatCommonDBInterface();
		//サービス契約.料金グループコードが「ホームタイプ」の場合、コース変更(収容替)工事が発生するかチェックする
		if (JKKStrConst.CD00133_02.equals(prcGrpCd)){
			executeZM_M_TAKNKIKI_MODEL_KK_SELECT_005(new String[]{svcKeiKaisenUcwkNo,super.opeDate});
			taknkikiModelInfo = db_ZM_M_TAKNKIKI_MODEL.selectNext();
			// 保有しているONU機器のPON種別がE-PON、ONU機器が無い場合は回線内訳のPON種別がE-PONの場合、チェックエラーとする
			//ONU機器が無い場合
			if (null == taknkikiModelInfo)
			{
				//回線内訳のPON種別がE-PONの場合
				if (ponSbtCd.equals("1"))
				{
					return ERR_CD_E210;
				}
			}else{
				// 保有しているONU機器のPON種別
				String onuPonSbtCd = taknkikiModelInfo.getString(JBSbatZM_M_TAKNKIKI_MODEL.PON_SBT_CD);
				// 保有しているONU機器のPON種別がE-PON
				if (onuPonSbtCd.equals("1"))
				{
					return ERR_CD_E210;
				}

			}
		}
		// IT2-2016-0000042 2016/08/17 MOD END

		// 100Mルーターを保有している、且つ1Gルーター(多機能ルーター含む)を保有していない(機器交換が発生する)場合、チェックエラーとする。
		// 保有している100Mルーター情報を取得
		executeZM_M_TAKNKIKI_MODEL_KK_SELECT_006(new String[]{svcKeiNo,super.opeDate});
		taknkikiModelInfo = db_ZM_M_TAKNKIKI_MODEL.selectNext();
		if (0 < Integer.parseInt(taknkikiModelInfo.getString("CNT")))
		{
			// 保有している1Gルーター(多機能ルーター含む)情報を取得
			executeZM_M_TAKNKIKI_MODEL_KK_SELECT_007(new String[]{svcKeiNo,super.opeDate,svcKeiKaisenUcwkNo,super.opeDate});
			taknkikiModelInfo = db_ZM_M_TAKNKIKI_MODEL.selectNext();
			if (Integer.parseInt(taknkikiModelInfo.getString("CNT")) == 0)
			{
				return ERR_CD_E160;
			}
		}

		// 住所変更情報を取得
		executeKK_T_ADCHG_DTL_KK_SELECT_039(new String[]{svcKeiNo, svcKeiNo});
		JBSbatCommonDBInterface adchgDtlInfo = db_KK_T_ADCHG_DTL.selectNext();
		//住所変更中の場合、チェックエラーとする。
		if (0 < Integer.parseInt(adchgDtlInfo.getString("CNT")))
		{
			return ERR_CD_E180;
		}

		// 異動予約にコース変更と競合不可の予約情報がある場合、チェックエラーとする
		executeKK_T_IDO_RSV_KK_SELECT_094(new String[]{svcKeiNo});
		JBSbatCommonDBInterface idoRsvInfo = db_KK_T_IDO_RSV.selectNext();
		if (null != idoRsvInfo)
		{
			return ERR_CD_E190;
		}

		// 撤去(解約)、住所変更(新設)、住所変更(撤去)の仕掛中工事が存在する場合、チェックエラーとする
		executeKU_T_SVKEI_KOJIAK_KK_SELECT_020(new String[]{svcKeiNo, super.opeDate, super.opeDate});
		JBSbatCommonDBInterface svkeiKojiakInfo = db_KU_T_SVKEI_KOJIAK.selectNext();
		if (0 < Integer.parseInt(svkeiKojiakInfo.getString("CNT")))
		{
			return ERR_CD_E220;
		}

		// 督促ステータスが「強制解約予告済」以上の場合、チェックエラーとする
		executeCH_T_TOKUSOKU_KK_SELECT_004(new String[]{svcKeiNo, super.opeDate, super.opeDate, super.opeDate, super.opeDate});
		JBSbatCommonDBInterface tokusokuInfo = db_CH_T_TOKUSOKU.selectNext();
		if (0 < Integer.parseInt(tokusokuInfo.getString("CNT")))
		{
			return ERR_CD_E200;
		}

		// オプションサービス契約に利用中（サービス提供中）のEメールが存在しない場合、ワーニングメッセージを出力する
		executeKK_T_OP_SVC_KEI_KK_SELECT_123(new String[]{svcKeiNo, super.opeDate});
		JBSbatCommonDBInterface opSvcKeiInfo = db_KK_T_OP_SVC_KEI.selectNext();
		if (0 == Integer.parseInt(opSvcKeiInfo.getString("CNT")))
		{
			return ERR_CD_W100;
		}

		// チェックOK
		return "";
	}
	/**
	 * 入力情報（コース変更一括登録依頼）の単項目チェックを行います。<br>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @return エラー内容に該当するコース変更一括登録エラーコード。エラーなしの場合には空文字を返却。
	 */
	private String singleCheck(HashMap<String, Object> rsMap)
	{
		// 単項目チェックを行います
		String strValue = null;

		// サービス契約番号項目チェック
		strValue = (String)rsMap.get(JBSbatKKIFM714.SVC_KEI_NO);
		
		// 必須チェック
		if(JKKStringUtil.isNullBlank(strValue))
		{
			return ERR_CD_E020;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu1","10"}))
		{
			return ERR_CD_E020;
		}
		
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			return ERR_CD_E020;
		}
		
		return null;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CC_T_EFILE_KANRI.close();
		db_CH_T_TOKUSOKU.close();
		db_KK_M_PCRS.close();
		db_KK_T_SVC_KEI.close();
		// ST-2016-0000033 2016/09/01 ADD START
		db_KK_T_KAISEN_USE_KEI.close();
		// ST-2016-0000033 2016/09/01 ADD END
		db_KK_T_TK_HOSHIKI_KEI.close();
		db_KK_T_SVKEI_KAISEN_UW.close();
		db_KK_T_ADCHG_DTL.close();
		db_KK_T_IDO_RSV.close();
		db_KU_T_SVKEI_KOJIAK.close();
		db_KK_T_OP_SVC_KEI.close();
		db_ZM_M_CD_NM_KANRI.close();
		db_ZM_M_TAKNKIKI_MODEL.close();
		db_ZM_T_DATAIKTTRK_KNRI.close();
		db_ZM_T_DL_FILE_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		addErrCdMap  = null;
		addRsltCdMap = null;
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * コース変更一括登録結果ファイル内容をマップオブジェクトへ設定する。<br>
	 * @param  inMap 入力ファイルの１レコード分を格納したHashMap
	 * @param  errCd チェックエラーコード（正常の場合はNULLもしくは空文字を設定）
	 * @return JBSbatServiceInterfaceMap 出力ファイル記載内容１件分
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private JBSbatServiceInterfaceMap setCrsChgReqRslt(HashMap inMap, String errCd) throws Exception
	{
		JBSbatServiceInterfaceMap result = new JBSbatServiceInterfaceMap();
		
		String addRslt   = addRsltCdMap.get(ADD_RSLT_OK);
		String addYmd    = super.opeDate;
		String addErrRsn = "";
		
		if(!JKKStringUtil.isNullBlank(errCd))
		{
			// チェックエラーのため、エラー用の出力内容を設定

			//ワーニングは実行結果はOKとするため除外
			if(!errCd.equals(ERR_CD_W100)){
				addRslt   = addRsltCdMap.get(ADD_RSLT_NG);
			}
			addYmd    = "";
			addErrRsn = addErrCdMap.get(errCd);
		}
		
		// サービス契約番号（お客様ＩＤ）
		result.set(JBSbatKKIFM715.SVC_KEI_NO, inMap.get(JBSbatKKIFM714.SVC_KEI_NO));
		// 登録結果
		result.set(JBSbatKKIFM715.ADD_RSLT,    addRslt);
		// 登録日
		result.set(JBSbatKKIFM715.ADD_YMD,     addYmd);
		// 登録エラーコード
		result.set(JBSbatKKIFM715.ADD_ERR_CD,  errCd);
		// 登録エラー理由
		result.set(JBSbatKKIFM715.ADD_ERR_RSN, addErrRsn);
		result.setOutFlg(true);
		
		return result;
	}
	
	/**
	 * サービス呼出処理
	 * @param svcKeiMap サービス契約情報
	 * @param pcrsMap 料金コース情報
	 * @return サービスの処理結果
	 * @throws Exception
	 */
	private HashMap<String, Object> invokeService(
					HashMap<String, Object> svcKeiMap,
					HashMap<String, Object> pcrsMap) throws Exception
			{
				// サービス呼び出し時の引数を生成
				HashMap<String, Object> paramMap = new HashMap<String, Object>();
				paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "KKSV0202");
				paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, "KKSV0202OP");

				HashMap<String, Object> inputMap = new HashMap<String, Object>();

				//お客様一意照会マップ
				setKKSV020201SC132(svcKeiMap,inputMap);
				//お客様一意照会マップ
				setKKSV020202SC(svcKeiMap,inputMap);
				//申込内容承認登録マップ
				setKKSV020204SC(svcKeiMap,inputMap);
				//サービス契約手続中料金プラン変更マップ
				setKKSV020205SC(svcKeiMap,inputMap,pcrsMap);
				//サービス契約料金プラン変更マップ
				setKKSV020206SC(svcKeiMap,inputMap,pcrsMap);
				//一時金設定マップ
				setKKSV020224SC(inputMap);
				//標準工事費マップ
				setKKSV020225SC(inputMap);
				//申込明細照査・後続業務依頼マップ
				setKKSV020227SC(svcKeiMap,inputMap);
				//工事マップ
				setKKSV020231CC(svcKeiMap,inputMap,pcrsMap);
				//進捗登録マップ
				setKKSV020245SC(svcKeiMap,inputMap);
				//物流制御マップ
				setKKSV020217CC(svcKeiMap,inputMap);
				//契約内容通知書登録マップ
				setKKSV020279CC(svcKeiMap,inputMap);
				//回線対象サービス契約一覧照会（サービス契約番号）SCマップ
				setKKSV020280SC(svcKeiMap,inputMap);
				//メール情報登録CCマップ
				setKKSV020278CC(svcKeiMap,inputMap);

				HashMap<String, Object> outputMap = new HashMap<String, Object>();
				
				// サービス呼び出し
				JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);

				return outputMap;
				
			}

	/**
	 * 翌月の月初日を返す
	 * @param unyoYmd 運用日付YMD
	 */
	private String getNextMonthFirstDay(String unyoYmd)
	{
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, Integer.parseInt(unyoYmd.substring(0, 4)));
		cal.set(Calendar.MONTH, Integer.parseInt(unyoYmd.substring(4, 6)) - 1);
		cal.set(Calendar.DAY_OF_MONTH, 1);

		// 翌月
		cal.add(Calendar.MONTH, 1);

		Date date = cal.getTime();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

		return sdf.format(date);
	}

	/**
	 * 上りマッピングをする(お客様一意照会マップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 */
	private HashMap<String, Object> setKKSV020201SC132(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap) throws Exception
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_2);

		// サービス契約.ＳＹＳＩＤ → お客様一意照会マップ.ＫＥＹ＿ＳＹＳＩＤ
		parentMap.put("key_sysid", svcKeiMap.get(JBSbatKK_T_SVC_KEI.SYSID));

		// バッチ運用日 → お客様一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", super.opeDate);

		outputMap.put("KKSV020201SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(サービス契約一意照会マップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020202SC(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap) throws Exception
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_2);

		// サービス契約.サービス契約番号 → サービス契約一意照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", svcKeiMap.get(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));

		// バッチ運用日 → サービス契約一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", super.opeDate);

		// 最終更新年月日時分秒（サービス契約排他制御） → サービス契約一意照会マップ.最終更新年月日時分秒
		parentMap.put("last_upd_dtm", svcKeiMap.get(JBSbatKK_T_SVKEI_EXC_CTRL.LAST_UPD_DTM));

		outputMap.put("KKSV020202SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(進捗登録マップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020245SC(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap) throws Exception
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);

		// 異動区分 → 進捗登録マップ.異動区分
		parentMap.put("ido_div", "00009"); // 00009:コース変更

		// システム日時(yyyyHHmmddHHssSSS) → 進捗登録マップ.異動年月日時分秒
		parentMap.put("ido_dtm", sysDateTimeStamp);

		// 進捗ステータス → 進捗登録マップ.進捗ステータス
		parentMap.put("prg_stat", "1421"); // 1421：コース変更予約

		ArrayList list = new ArrayList();

		HashMap childMap = new HashMap();

		// 56:その他 → 進捗登録マップ.異動理由明細.異動理由コード
		childMap.put("ido_rsn_cd", "56"); 

		// 設定無し → 進捗登録マップ.異動理由明細.異動理由メモ)
		childMap.put("ido_rsn_memo", ""); 

		list.add(childMap);
		
		parentMap.put("EKK1091D010CBSMsg1List", list);

		outputMap.put("KKSV020245SC", parentMap);

		return outputMap;
	}
	/**
	 * 上りマッピングをする(サービス契約料金プラン変更マップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 * @param pcrsMap 料金コース情報
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020206SC(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap,HashMap<String, Object> pcrsMap) throws Exception 
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		
		//変更後料金コース
		String afPcrsCd = pcrsMap.get(JBSbatKK_M_PCRS_CHG_PSBJKN.CHG_AF_PCRS_CD).toString();
		//変更後料金プランコード
		String pplanCd = pcrsMap.get(JBSbatKK_M_PPLAN.PPLAN_CD).toString();

		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);

		// サービス契約.料金グループコード → サービス契約手続中料金プラン変更マップ.料金グループコード
		parentMap.put("prc_grp_cd", svcKeiMap.get(JBSbatKK_T_SVC_KEI.PRC_GRP_CD));
		// 変更後料金コース → サービス契約手続中料金プラン変更マップ.料金コースコード
		parentMap.put("pcrs_cd", afPcrsCd);
		// 変更後料金プランコード → サービス契約手続中料金プラン変更マップ.料金プランコード
		parentMap.put("pplan_cd", pplanCd);

		// サービス契約.提供方式契約番号 → サービス契約料金プラン変更マップ.提供方式契約番号
		parentMap.put("tk_hoshiki_kei_no", svcKeiMap.get(JBSbatKK_T_SVC_KEI.TK_HOSHIKI_KEI_NO));

		// "0:無し" → サービス契約手続中料金プラン変更マップ.違約金発生コード
		parentMap.put("pnlty_hassei_cd", "0");

		// 翌月の月初日 → サービス契約料金プラン変更マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("rsv_aply_ymd", getNextMonthFirstDay(super.opeDate));

		outputMap.put("KKSV020206SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(申込内容承認登録マップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020204SC(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap)  throws Exception
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);

		String sysDateTimeStamp = JCCBatCommon.getSysDateTimeStamp();
		String timeStamp = sysDateTimeStamp.substring(8);
		String opeDateTime = super.opeDate + timeStamp;

		// 04:承認済 → 申込内容承認登録マップ.申込状態識別コード
		parentMap.put("consmbsn_mskm_stat_skbt_cd", "04");
		// 00007:コース変更申込 → 申込内容承認登録マップ.申込種別コード
		parentMap.put("mskm_sbt_cd", "00007");
		// バッチ運用日時(yyyyHHmmddssSSS) → 申込内容承認登録マップ.申込受付年月日時分秒
		parentMap.put("mskm_uk_dtm", opeDateTime);
		// バッチ運用日 → 申込内容承認登録マップ.申込年月日
		parentMap.put("mskm_ymd", super.opeDate);

		List<Map<String, Object>> list =  new ArrayList<Map<String, Object>>();
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("mskm_dtl_no", "");
		map.put("kk0021_gene_add_dtm", "");
		map.put("mskm_dtl_stat", "");
		map.put("web_uk_no", "");
		map.put("mskm_form_cd", "");
		map.put("mskm_dtl_sbt_cd", "");
		map.put("rrks_ktai_telno", "");
		map.put("rrks_offc_nm", "");
		map.put("dt_rrks_telno", "");
		map.put("new_mskm_sbt_cd", "");
		map.put("mskm_optnty_cd", "");
		map.put("mskm_route_cd", "");
		map.put("takcho_kibo_apo_kigen_ymd", "");
		map.put("koji_apo_rrks_shitei_cd", "");
		map.put("koji_apo_rrks_telno", "");
		map.put("rrk_jiko_add_dtm", "");
		map.put("mskm_rrks_mlad", "");
		map.put("koji_prg_tchi_mlad", "");
		map.put("rrk_jiko", "");
		map.put("kjsc_tch_ktai_mlad", "");
		map.put("ml_send_jgi_flg", "");
		map.put("ml_send_jgi_rsn_memo", "");
		map.put("bmp_mskm_rrks_tln", "");
		map.put("rrk_way_hoki", "");
		map.put("newconst_bukken_cd", "");
		map.put("hukkat_anken_flg", "");
		map.put("same_equip_re_mskm_cd", "");
		//申込書番号
		map.put("mskmsho_no", "");
		//申込書明細番号
		map.put("mskmsho_dtl_no", "");
		//割引自動適用対象外フラグ
		map.put("wrib_auto_aply_tg_gai_flg", "0");

		list.add(map);
		parentMap.put("EKK0011D020CBSMsg1List", list);
		outputMap.put("KKSV020204SC", parentMap);

		return outputMap;
	}
	/**
	 * 上りマッピングをする(サービス契約手続中料金プラン変更マップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 * @param pcrsMap 料金コース情報
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020205SC(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap,HashMap<String, Object> pcrsMap) {

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		//変更後料金コース
		String afPcrsCd = pcrsMap.get(JBSbatKK_M_PCRS_CHG_PSBJKN.CHG_AF_PCRS_CD).toString();
		//変更後料金プランコード
		String pplanCd = pcrsMap.get(JBSbatKK_M_PPLAN.PPLAN_CD).toString();

		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);

		// サービス契約.料金グループコード → サービス契約手続中料金プラン変更マップ.料金グループコード
		parentMap.put("prc_grp_cd", svcKeiMap.get(JBSbatKK_T_SVC_KEI.PRC_GRP_CD));

		// 変更後料金コース → サービス契約手続中料金プラン変更マップ.料金コースコード
		parentMap.put("pcrs_cd", afPcrsCd);

		// 変更後料金プランコード → サービス契約手続中料金プラン変更マップ.料金プランコード
		parentMap.put("pplan_cd", pplanCd);

		// サービス契約.提供方式契約番号 → サービス契約手続中料金プラン変更マップ.提供方式契約番号
		parentMap.put("tk_hoshiki_kei_no", svcKeiMap.get(JBSbatKK_T_SVC_KEI.TK_HOSHIKI_KEI_NO));

		// "0:無" → サービス契約手続中料金プラン変更マップ.違約金発生コード
		parentMap.put("pnlty_hassei_cd", "0");

		// 翌月の月初日 → サービス契約料金プラン変更マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("rsv_aply_ymd", getNextMonthFirstDay(super.opeDate));

		outputMap.put("KKSV020205SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(申込明細照査・後続業務依頼マップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020227SC(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap) {

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);

		// バッチ運用日 → 申込明細照査・後続業務依頼マップ.後続業務依頼年月日
		parentMap.put("kzkwrk_reqymd", super.opeDate);

		outputMap.put("KKSV020227SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(申込明細照査・後続業務依頼マップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020231CC(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap,HashMap<String, Object> pcrsMap) {

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 工事受付コード(007:回線かえる)
		parentMap.put("koji_uk_cd", "007");

		// 工事受付詳細コード(50:速度かえる)
		parentMap.put("koji_uk_dtl_cd", "50");

		// PON種別コード(2:GE-PON)
		parentMap.put("pon_sbt_cd", "2");

		// 料金コース.PON条件コード
		parentMap.put("pcrs_pon_joken_cd", pcrsMap.get(JBSbatKK_M_PCRS.PCRS_PON_JOKEN_CD));

		outputMap.put("KKSV020231CC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(物流制御マップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020217CC(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// ルーター種別
		parentMap.put("router_sbt", "2");//2:なし

		outputMap.put("KKSV020217CC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする(契約内容通知書登録マップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020279CC(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap) {
	
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);

		// 契約内容通知書オンラインフラグ（"1"固定）
		parentMap.put("knytcs_on_flg","1");
		// 運用年月日→運用日
		parentMap.put("unyo_ymd", super.opeDate);
		// サービス契約番号
		parentMap.put("svc_kei_no_net", svcKeiMap.get(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
		parentMap.put("svc_kei_no_tv", "");
		parentMap.put("svc_kei_no_tel", "");
		//申込書明細番号
		parentMap.put("mskmsho_dtl_no_net", "");
		parentMap.put("mskmsho_dtl_no_tv", "");
		parentMap.put("mskmsho_dtl_no_tel", "");

		outputMap.put("KKSV020279CC", parentMap);
	
		return outputMap;
	}

	/**
	 * 上りマッピングをする(回線対象サービス契約一覧照会（サービス契約番号）SCマップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020280SC(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap) {
	
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);

		// サービス契約番号
		parentMap.put("svc_kei_no", svcKeiMap.get(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));

		outputMap.put("KKSV020280SC", parentMap);
	
		return outputMap;
	}

	/**
	 * 上りマッピングをする(メール情報登録CCマップ)
	 * @param svcKeiMap サービス契約情報
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020278CC(HashMap<String, Object> svcKeiMap,HashMap<String, Object> outputMap) {
	
	
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
	
		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);
	
		outputMap.put("KKSV020278CC", parentMap);
	
		return outputMap;
	}

	/**
	 * 上りマッピングをする(一時金設定)
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020224SC(HashMap<String, Object> outputMap) {

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);

		// "01:無" → 一時金設定登録（事務手数料）マップ.一時金設定コード
		parentMap.put("icjkn_sette_cd", "01");

		// "設定無し" → 一時金設定登録（事務手数料）マップ.一時金指定額
		parentMap.put("icjkn_shitei_amnt", "");

		outputMap.put("KKSV020224SC", parentMap);

		return outputMap;
	}
	/**
	 * 上りマッピングをする(一時金設定登録)
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV020225SC(HashMap<String, Object> outputMap) {

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);

		// "00:無" → 一時金設定登録（事務手数料）マップ.一時金設定コード
		parentMap.put("icjkn_sette_cd", "00");

		outputMap.put("KKSV020225SC", parentMap);

		return outputMap;
	}


}
