/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKOnuPlanKknKjIktAdd
*	ソースファイル名	：JBSbatKKOnuPlanKknKjIktAdd.java
*	作成者				：富士通　
*	作成日				：2023年09月05日
*＜機能概要＞
*　ＯＮＵ計画交換工事一括立ち上げ登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v61.00.00	2023/09/05	FJ)謝		【ANK-4431-00-00】【ｅｏ定期】 ONU計画交換対応
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
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.JBSbatKKIFM957;
import eo.business.util.file.JBSbatKKIFM958;
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_T_KKOP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.business.util.table.JBSbatKU_T_KOJIAK;
import eo.business.util.table.JBSbatKU_T_MKSYICHI_AKI_IF;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
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.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatCheckUtil;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JCCBatchEsbInterface;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKOnuPlanKknKjIktAdd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(サービス契約)*/
	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_ZM_M_AD = "ZM_M_AD";

	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

	/** テーブル(サービス契約＿工事案件)*/
	private static final String D_TBL_NAME_KU_T_SVKEI_KOJIAK = "KU_T_SVKEI_KOJIAK";

	/** テーブル(督促)*/
	private static final String D_TBL_NAME_CH_T_TOKUSOKU = "CH_T_TOKUSOKU";

	/** テーブル(住所変更明細)*/
	private static final String D_TBL_NAME_KK_T_ADCHG_DTL = "KK_T_ADCHG_DTL";

	/** テーブル(機器オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKOP_SVC_KEI = "KK_T_KKOP_SVC_KEI";

	/** テーブル(異動予約)*/
	private static final String D_TBL_NAME_KK_T_IDO_RSV = "KK_T_IDO_RSV";

	/** テーブル(物流保全)*/
	private static final String D_TBL_NAME_DK_T_BTRYHOZN = "DK_T_BTRYHOZN";

	/** テーブル(申込収容位置空き情報)*/
	private static final String D_TBL_NAME_KU_T_MKSYICHI_AKI_IF = "KU_T_MKSYICHI_AKI_IF";

	/** テーブル(電子ファイル管理)*/
	private static final String D_TBL_NAME_CC_T_EFILE_KANRI = "CC_T_EFILE_KANRI";

	/** テーブル(ダウンロードファイル管理)*/
	private static final String D_TBL_NAME_ZM_T_DL_FILE_KANRI = "ZM_T_DL_FILE_KANRI";

	/** SQL定義キー(KK_SELECT_004)*/
	private static final String ZM_M_CD_NM_KANRI_KK_SELECT_004 = "KK_SELECT_004";

	/** SQL定義キー(KK_SELECT_291)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_291 = "KK_SELECT_291";

	/** SQL定義キー(KK_SELECT_048)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_048 = "KK_SELECT_048";

	/** SQL定義キー(KK_SELECT_380)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_380 = "KK_SELECT_380";

	/** SQL定義キー(KK_SELECT_011)*/
	private static final String ZM_M_AD_KK_SELECT_011 = "KK_SELECT_011";

	/** SQL定義キー(KK_SELECT_277)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_277 = "KK_SELECT_277";

	/** SQL定義キー(KK_SELECT_278)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_278 = "KK_SELECT_278";

	/** SQL定義キー(KK_SELECT_030)*/
	private static final String KU_T_SVKEI_KOJIAK_KK_SELECT_030 = "KK_SELECT_030";

	/** SQL定義キー(KK_SELECT_004)*/
	private static final String CH_T_TOKUSOKU_KK_SELECT_004 = "KK_SELECT_004";

	/** SQL定義キー(KK_SELECT_039)*/
	private static final String KK_T_ADCHG_DTL_KK_SELECT_039 = "KK_SELECT_039";

	/** SQL定義キー(KK_SELECT_033)*/
	private static final String KK_T_KKOP_SVC_KEI_KK_SELECT_033 = "KK_SELECT_033";

	/** SQL定義キー(KK_SELECT_108)*/
	private static final String KK_T_IDO_RSV_KK_SELECT_108 = "KK_SELECT_108";

	/** SQL定義キー(KK_SELECT_099)*/
	private static final String KK_T_IDO_RSV_KK_SELECT_099 = "KK_SELECT_099";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String DK_T_BTRYHOZN_KK_SELECT_002 = "KK_SELECT_002";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KU_T_MKSYICHI_AKI_IF_KK_SELECT_001 = "KK_SELECT_001";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String CC_T_EFILE_KANRI_KK_SELECT_001 = "KK_SELECT_001";

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(サービス契約回線内訳)*/
	private JBSbatSQLAccess db_KK_T_SVKEI_KAISEN_UW = null;

	/** テーブルアクセスクラス(住所)*/
	private JBSbatSQLAccess db_ZM_M_AD = null;

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;

	/** テーブルアクセスクラス(サービス契約＿工事案件)*/
	private JBSbatSQLAccess db_KU_T_SVKEI_KOJIAK = null;

	/** テーブルアクセスクラス(督促)*/
	private JBSbatSQLAccess db_CH_T_TOKUSOKU = null;

	/** テーブルアクセスクラス(住所変更明細)*/
	private JBSbatSQLAccess db_KK_T_ADCHG_DTL = null;

	/** テーブルアクセスクラス(機器オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKOP_SVC_KEI = null;

	/** テーブルアクセスクラス(異動予約)*/
	private JBSbatSQLAccess db_KK_T_IDO_RSV = null;

	/** テーブルアクセスクラス(物流保全)*/
	private JBSbatSQLAccess db_DK_T_BTRYHOZN = null;

	/** テーブルアクセスクラス(申込収容位置空き情報)*/
	private JBSbatSQLAccess db_KU_T_MKSYICHI_AKI_IF = null;

	/** テーブルアクセスクラス(電子ファイル管理)*/
	private JBSbatSQLAccess db_CC_T_EFILE_KANRI = null;

	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** コード種別コード（ONU計画交換工事登録エラーコード） */
	private static final String CD_SBT_CD_ADD_ERR_CD  = "CD01814";
	/** コード種別コード（ONU計画交換工事登録結果コード） */
	private static final String CD_SBT_CD_ADD_RSLT_CD = "CD01815";
	/** コード種別コード（電話連絡希望時間帯コード） */
	private static final String CD_SBT_CD_TEL_RRK_KIBO_TIME_CD  = "CD00560";
	/** コード種別コード（連絡先種別コード） */
	private static final String CD_SBT_CD_RRKS_SHITEI_CD = "CD00254";
	
	/** ONU計画交換工事登録エラーコード E010 */
	private static final String ERR_CD_E010 = "E010";
	/** ONU計画交換工事登録エラーコード E020 */
	private static final String ERR_CD_E020 = "E020";
	/** ONU計画交換工事登録エラーコード E021 */
	private static final String ERR_CD_E021 = "E021";
	/** ONU計画交換工事登録エラーコード E022 */
	private static final String ERR_CD_E022 = "E022";
	/** ONU計画交換工事登録エラーコード E023 */
	private static final String ERR_CD_E023 = "E023";
	/** ONU計画交換工事登録エラーコード E024 */
	private static final String ERR_CD_E024 = "E024";
	/** ONU計画交換工事登録エラーコード E025 */
	private static final String ERR_CD_E025 = "E025";
	/** ONU計画交換工事登録エラーコード E026 */
	private static final String ERR_CD_E026 = "E026";
	/** ONU計画交換工事登録エラーコード E027 */
	private static final String ERR_CD_E027 = "E027";
	/** ONU計画交換工事登録エラーコード E028 */
	private static final String ERR_CD_E028 = "E028";
	/** ONU計画交換工事登録エラーコード E029 */
	private static final String ERR_CD_E029 = "E029";
	/** ONU計画交換工事登録エラーコード E100 */
	private static final String ERR_CD_E100 = "E100";
	/** ONU計画交換工事登録エラーコード E110 */
	private static final String ERR_CD_E110 = "E110";
	/** ONU計画交換工事登録エラーコード E120 */
	private static final String ERR_CD_E120 = "E120";
	/** ONU計画交換工事登録エラーコード E130 */
	private static final String ERR_CD_E130 = "E130";
	/** ONU計画交換工事登録エラーコード E140 */
	private static final String ERR_CD_E140 = "E140";
	/** ONU計画交換工事登録エラーコード E150 */
	private static final String ERR_CD_E150 = "E150";
	/** ONU計画交換工事登録エラーコード E160 */
	private static final String ERR_CD_E160 = "E160";
	/** ONU計画交換工事登録エラーコード E170 */
	private static final String ERR_CD_E170 = "E170";
	/** ONU計画交換工事登録エラーコード E180 */
	private static final String ERR_CD_E180 = "E180";
	/** ONU計画交換工事登録エラーコード E190 */
	private static final String ERR_CD_E190 = "E190";
	/** ONU計画交換工事登録エラーコード E200 */
	private static final String ERR_CD_E200 = "E200";
	/** ONU計画交換工事登録エラーコード E210 */
	private static final String ERR_CD_E210 = "E210";
	/** ONU計画交換工事登録エラーコード E220 */
	private static final String ERR_CD_E220 = "E220";
	/** ONU計画交換工事登録エラーコード E900 */
	private static final String ERR_CD_E900 = "E900";
	
	/** ONU計画交換工事登録結果コード（正常） */
	private static final String ADD_RSLT_OK = "0";
	/** ONU計画交換工事登録結果コード（チェックエラー） */
	private static final String ADD_RSLT_NG = "1";
	
	/** 交換パターン ONU→ONU */
	private static final String KOKAN_PATTERN_ONU_TO_ONU = "1";
	/** 交換パターン HGW→HGW */
	private static final String KOKAN_PATTERN_HGW_TO_HGW = "2";
	/** 交換パターン ONU→HGW */
	private static final String KOKAN_PATTERN_ONU_TO_HGW = "3";
	
	/** 郵送交換判定フラグ 郵送交換 */
	private static final String YUSO_KOKAN_JUDGE_FLG_YUSO = "1";
	
	/** 処理管理番号 ＯＮＵ計画交換工事一括立ち上げ登録 */
	private static final String TRN_KANRI_NO_ONU_PLAN_KKN = "000000000264";
	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "SVC_KEI_NO";
	/** タイトル */
	private static final String TITLE = "TITLE";
	/** 顧客タイプ */
	private static final String KOKYAKU_TYPE = "加入者";
	/** 状態 */
	private static final String JYOUTAI = "クローズ";
	/** ステータス */
	private static final String STATUS = "処理中";
	/** 受付者 */
	private static final String UKETSUKE = "OTHER_SYST";
	/** 担当者 */
	private static final String TANTOU = "OTHER_SYST";
	/** 受付種別 */
	private static final String UKETSUKE_SBT = "他システム";
	/** タイトル 工事交換 */
	private static final String TITLE_KOJI = "【ONU計画交換】案件立ち上げ（工事交換）";
	/** タイトル 郵送交換 */
	private static final String TITLE_YUSO = "【ONU計画交換】案件立ち上げ（郵送交換）";
	/** ファイル連携先ディレクトリ定義キー */
	private static final String CR_FILE_DIR_KEY = "CR_TWS_RK_FILE_DIR";
	/** ファイル名(共通部) */
	private static final String CASE_FILE_NAME = "CASE_ONUPLAN_";
	
	/** ONU計画交換工事登録エラーコード格納マップ */
	private HashMap<String, String> addErrCdMap  = null;
	/** ONU計画交換工事登録結果コード格納マップ */
	private HashMap<String, String> addRsltCdMap = null;
	/** 電話連絡希望時間帯コード格納マップ */
	private HashMap<String, String> telRrkKiboTimeCdMap  = null;
	/** 連絡先種別コード格納マップ */
	private HashMap<String, String> rrksShiteiCdMap = null;
	/** HGW交換フラグ(全体) */
	private String hgwKknFfgSystem = "";
	/** 機器追加工事案件種別コードリスト */
	private List<String> kikiAddKjakSbtList = null;
	/** 無線ルーター料金コースコードリスト */
	private HashSet<String> musenRtPcrsCdList = null;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		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_ZM_M_AD = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_AD);
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		db_KU_T_SVKEI_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_SVKEI_KOJIAK);
		db_CH_T_TOKUSOKU = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_TOKUSOKU);
		db_KK_T_ADCHG_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADCHG_DTL);
		db_KK_T_KKOP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKOP_SVC_KEI);
		db_KK_T_IDO_RSV = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_IDO_RSV);
		db_DK_T_BTRYHOZN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_BTRYHOZN);
		db_KU_T_MKSYICHI_AKI_IF = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_MKSYICHI_AKI_IF);
		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);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// 初期化
		addErrCdMap  = new HashMap<String, String>();
		addRsltCdMap = new HashMap<String, String>();
		telRrkKiboTimeCdMap = new HashMap<String, String>();
		rrksShiteiCdMap = new HashMap<String, String>();
		kikiAddKjakSbtList = new ArrayList<String>();
		musenRtPcrsCdList = new HashSet<String>();
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		List<HashMap<String, Object>> shoriIraiList = JCCbatShoriIraiUtil.getShoriIraiInfo(commonItem, this.jobid);
		if (shoriIraiList == null)
		{
			// 対象データが存在しないため処理終了
			return null;
		}
		
		// ONU計画交換工事登録エラーコード取得
		addErrCdMap = getCdNmKanri(CD_SBT_CD_ADD_ERR_CD);
		
		// ONU計画交換工事登録結果コード取得
		addRsltCdMap = getCdNmKanri(CD_SBT_CD_ADD_RSLT_CD);
		
		// 電話連絡希望時間帯コード取得
		telRrkKiboTimeCdMap = getCdNmKanri(CD_SBT_CD_TEL_RRK_KIBO_TIME_CD);
		
		// 連絡先種別コード取得
		rrksShiteiCdMap = getCdNmKanri(CD_SBT_CD_RRKS_SHITEI_CD);
		
		// HGW交換不可フラグ
		hgwKknFfgSystem = JKKBatCommon.getWorkParamSetteValue(commonItem, JKKStrConst.KK_HGW_KOKAN_FFG);
		
		// 機器追加工事案件種別コードリスト
		kikiAddKjakSbtList = Arrays.asList(JKKBatCommon.getWorkParamSetteValue(commonItem, JKKStrConst.KK_KIKI_ADD_KJAK_SBT).split(JKKStrConst.COMMA));
		
		// eo光無線ルーター(100M)(レンタル)
		musenRtPcrsCdList.add(JKKStrConst.CD00134_MUSEN_100M_RENT);
		// eo光無線ルーター(1G)(レンタル)
		musenRtPcrsCdList.add(JKKStrConst.CD00134_MUSEN_1G_RENT);
		// eo光旧無線ルーター(100M)(レンタル)
		musenRtPcrsCdList.add(JKKStrConst.CD00134_OLD_MUSEN_100M_RENT);
		// eo光無線ルーター(10G)(レンタル)
		musenRtPcrsCdList.add(JKKStrConst.CD00134_MUSEN_10G_RENT);
		
		int infoCount = 0;
		int errorCount = 0;
		
		for (HashMap<String, Object> shoriIrai : shoriIraiList)
		{
			// ONU計画交換工事依頼結果リスト
			ArrayList<JBSbatServiceInterfaceMap> onuPlanKknKjReqRsltList = new ArrayList<JBSbatServiceInterfaceMap>();
			
			// CASEファイル出力用データリスト
			ArrayList<HashMap<String, Object>> caseFileDataList = new ArrayList<HashMap<String, Object>>();
			
			// チェックエラー存在フラグ（ONU計画交換工事依頼結果リスト出力時の判定処理に使用）
			boolean checkErr = false;
			
			// 入力ファイルの定義取得
			String inDefFileName = JBSbatAplConst.getAplConstValue("IND") + "KKIFM957.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);
			
			// 電子ファイル管理よりONU計画交換工事依頼リストの復元
			String inFilePath = JCCBatCommon.searchDenshiFile(commonItem, fileKanriNo);
			JBSbatInputFileUtil inFileUtil = new JBSbatInputFileUtil(inFilePath);
			JBSbatDefFileUtil inFileDef = new JBSbatDefFileUtil(inDefFileName, inFileUtil);
			
			super.logPrint.printDebugLog("処理日＝" + super.opeDate);
			super.logPrint.printDebugLog("ディレイド処理依頼番号＝" + shoriIraiNo);
			super.logPrint.printDebugLog("入力電子ファイル管理番号＝" + fileKanriNo);
			super.logPrint.printDebugLog("ONU計画交換工事依頼リストのファイルパス＝" + inFilePath);
			
			// Readerオブジェクトを生成する
			inFileUtil.createReader();
			
			// 入力ファイルのレコード件数
			int inFileRecordCnt = 0;
			
			while (inFileUtil.ready()) 
			{
				// ファイルから１レコード取得
				String line = inFileUtil.readLine();
				
				// レコード件数カウント
				inFileRecordCnt++;
				
				// １レコードの情報をマップに格納
				JBSbatServiceInterfaceMap recordMap = inFileDef.lineToObject(line, inFileUtil, inFileRecordCnt);
				
				// 工事案件登録サービス情報
				HashMap<String, Object> kojiakAddServiceMap = new HashMap<String, Object>();
				
				// 郵送交換判定フラグ
				String yusoKokanJudgeFlg = "";
				
				// 登録チェック処理
				String errCd = checkMain(recordMap, kojiakAddServiceMap);
				
				// チェックエラーの場合
				if (!errCd.isEmpty())
				{
					onuPlanKknKjReqRsltList.add(setOnuPlanKknKjReqRslt(String.valueOf(inFileRecordCnt), recordMap.getMap(), errCd));
					checkErr = true;
					infoCount++;
					
					// 次レコードを処理
					continue;
				}
				
				// 工事案件登録のためサービスを呼び出す
				try
				{
					HashMap<String, Object> outputMap = invokeService(recordMap.getMap(), kojiakAddServiceMap);
					
					// リターンコード 
					String returnCode = outputMap.get(JCCBatchEsbInterface.RETURN_CODE).toString();
					// サービスの処理結果
					HashMap<String, Object> serviceRsltMap = (HashMap<String, Object>)outputMap.get("KKSV102501CC");
					if(!JCCBatchEsbInterface.RETURN_CODE_SUCCESS.equals(returnCode))
					{
						// エラーコード設定
						onuPlanKknKjReqRsltList.add(setOnuPlanKknKjReqRslt(String.valueOf(inFileRecordCnt), recordMap.getMap(), ERR_CD_E900));
						checkErr = true;
						
						// エラーログ出力
						commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKKB1220CI,
								new String[]{"サービス契約番号：" + (String)recordMap.getMap().get(JBSbatKKIFM957.SVC_KEI_NO)});
						infoCount++;
						
						// 次レコードを処理
						continue;
					}
					
					if (serviceRsltMap != null)
					{
						yusoKokanJudgeFlg = (String) serviceRsltMap.get("yuso_kokan_judge_flg");
					}
				}
				catch (Throwable e)
				{
					// エラーコード設定
					onuPlanKknKjReqRsltList.add(setOnuPlanKknKjReqRslt(String.valueOf(inFileRecordCnt), recordMap.getMap(), ERR_CD_E900));
					checkErr = true;
					
					//フレームワークがエラーログにスタックトレースを出さないので、独自にエラーログ出力する
					super.logPrint.printErrMsg(JPCBatchMessageConstant.ECCB0110CE, e, new String[]{});
					
					// システムエラーが発生しても処理を続行する
					errorCount++;
					
					// 次レコードを処理
					continue;
				}
				
				// 正常に登録したため、正常としてファイル出力を行う
				onuPlanKknKjReqRsltList.add(setOnuPlanKknKjReqRslt(String.valueOf(inFileRecordCnt), recordMap.getMap(), null));
				
				// CASEファイル出力データの編集
				caseFileDataList.add(setCaseFileData(recordMap.getMap(), yusoKokanJudgeFlg));
			}
			
			// ONU計画交換工事依頼結果リスト出力
			if(!JKKStringUtil.isNullEmpty(onuPlanKknKjReqRsltList))
			{
				// ファイル名などの出力ファイル情報をフリー項目から取得
				String[] outMidFile = freeItem.split(JKKBatConst.S_PARAM_DELIM);
				
				JBSbatOutputItem outputBean = new JBSbatOutputItem();
				for (JBSbatServiceInterfaceMap outMap : onuPlanKknKjReqRsltList)
				{
					outMap.setOutFlg(true);
					outputBean.addOutMapList(outMap);
				}
				
				// ONU計画交換工事依頼結果リストの出力先パスを取得（スラッシュ付）
				String outFilePath = outMidFile[0];
				
				// ONU計画交換工事依頼結果リストのファイル名を編集
				String sysDateTimeStamp = JCCBatCommon.getSysDateTimeStamp();
				String timeStamp = sysDateTimeStamp.substring(8);
				String opeDateTime = super.onlineOpeDate + timeStamp;
				String outFileName =  "KKIFM958001_" + opeDateTime + ".csv";
				
				// ONU計画交換工事依頼結果リストをファイル出力する
				JKKBatOutputUtil.editOutFile(super.commonItem, outputBean, "KKIFM958", outFilePath, outFileName);
				
				// ONU計画交換工事依頼結果リストのファイルパス
				String outFileFullPath = outFilePath + outFileName;
				
				// 処理管理番号
				String trnKanriNo = TRN_KANRI_NO_ONU_PLAN_KKN;
				
				// 電話ファイル管理に登録する日本語のファイル名
				String outFileNhngName = "ONU計画交換工事一括立ち上げ結果リスト_" + opeDateTime + ".csv";
				if (checkErr)
				{
					// チェックエラーありのため、ディレイド処理依頼結果コードを"業務エラー"で更新
					HashMap<String, String> retMap = JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, JKKStrConst.DLYD_TRN_RSLT_CD_APP_ERR, outFileFullPath);
					
					// エラーファイルの電子ファイル管理番号取得して、ダウンロードファイル管理に登録
					String eFileKanriNo = retMap.get("EFILE_KAMRI_NO");
					if(!JKKStringUtil.isNullBlank(eFileKanriNo))
					{
						insertZM_T_DL_FILE_KANRI(eFileKanriNo, outFileNhngName, outFileFullPath, inFileRecordCnt, trnKanriNo);
					}
				}
				else
				{
					// チェックエラーなしのため、ディレイド処理依頼結果コードを"完了"で更新
					JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, JKKStrConst.DLYD_TRN_RSLT_CD_COMPLETE, null);
					
					// ONU計画交換工事依頼結果リストを電子ファイル管理スキーマに設定
					String[] denshiRet = JCCBatCommon.createDenshiFile(super.commonItem, "0000", outFileFullPath, null);
					
					// ダウンロードファイル管理に登録
					insertZM_T_DL_FILE_KANRI(denshiRet[0], outFileNhngName, outFileFullPath, inFileRecordCnt, trnKanriNo);
				}
			}
			
			// CASEファイル出力
			if(!JKKStringUtil.isNullEmpty(caseFileDataList))
			{
				sksiCaseFile(commonItem, caseFileDataList);
			}
		}
		
		// 登録チェックエラーが存在する場合
		if (0 < infoCount)
		{
			// 「%1% ファイル出力件数 = %2%」
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0760AI,
					new String[] { "ONU計画交換工事依頼結果リスト", Integer.toString(infoCount) + "(INFO)" });
		}
		
		// エラー（業務エラー、システムエラー）が存在する場合
		if (0 < errorCount)
		{
			// 単一サービス呼び出しパターンの場合は、エラー件数を設定することで警告終了する
			commonItem.setErrorCount(errorCount);
		}
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_CD_NM_KANRI.close();
		db_KK_T_SVC_KEI.close();
		db_KK_T_SVKEI_KAISEN_UW.close();
		db_ZM_M_AD.close();
		db_KK_T_KKTK_SVC_KEI.close();
		db_KU_T_SVKEI_KOJIAK.close();
		db_CH_T_TOKUSOKU.close();
		db_KK_T_ADCHG_DTL.close();
		db_KK_T_KKOP_SVC_KEI.close();
		db_KK_T_IDO_RSV.close();
		db_DK_T_BTRYHOZN.close();
		db_KU_T_MKSYICHI_AKI_IF.close();
		db_CC_T_EFILE_KANRI.close();
		db_ZM_T_DL_FILE_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * 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 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_291)で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_291(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_291);
	}

	/**
	 * SQLKEY(KK_SELECT_048)で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_048(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_048);
	}

	/**
	 * SQLKEY(KK_SELECT_380)で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_380(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.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_380);
	}

	/**
	 * SQLKEY(KK_SELECT_011)で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_AD_KK_SELECT_011(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_AD.selectBySqlDefine(paramList, ZM_M_AD_KK_SELECT_011);
	}

	/**
	 * SQLKEY(KK_SELECT_277)で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_KKTK_SVC_KEI_KK_SELECT_277(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_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_277);
	}

	/**
	 * SQLKEY(KK_SELECT_278)で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_KKTK_SVC_KEI_KK_SELECT_278(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_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_278);
	}

	/**
	 * SQLKEY(KK_SELECT_030)で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_030(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KU_T_SVKEI_KOJIAK.selectBySqlDefine(paramList, KU_T_SVKEI_KOJIAK_KK_SELECT_030);
	}

	/**
	 * 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_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_033)で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_KKOP_SVC_KEI_KK_SELECT_033(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_KKOP_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKOP_SVC_KEI_KK_SELECT_033);
	}

	/**
	 * SQLKEY(KK_SELECT_108)で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_108(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_T_IDO_RSV.selectBySqlDefine(paramList, KK_T_IDO_RSV_KK_SELECT_108);
	}

	/**
	 * SQLKEY(KK_SELECT_099)で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_099(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_IDO_RSV.selectBySqlDefine(paramList, KK_T_IDO_RSV_KK_SELECT_099);
	}

	/**
	 * SQLKEY(KK_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 executeDK_T_BTRYHOZN_KK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_DK_T_BTRYHOZN.selectBySqlDefine(paramList, DK_T_BTRYHOZN_KK_SELECT_002);
	}

	/**
	 * 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 executeKU_T_MKSYICHI_AKI_IF_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KU_T_MKSYICHI_AKI_IF.selectBySqlDefine(paramList, KU_T_MKSYICHI_AKI_IF_KK_SELECT_001);
	}

	/**
	 * 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);
	}

	/**
	 * 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);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	KKOP_SVC_KEI_NO
	 *		 	GENE_ADD_DTM
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_KKOP_SVC_KEI_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("KKOP_SVC_KEI_NO", whereParam[0]);
		whereMap.setValue("GENE_ADD_DTM", whereParam[1]);

		// DBアクセスを実行します
		return db_KK_T_KKOP_SVC_KEI.selectByPrimaryKeys(whereMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * コード名称管理より該当のコード種別のコードを取得します。
	 * <br>
	 * @param cdSbtCd  コード種別コード
	 * @return HashMap<String, String>
	 * @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 ONU計画交換工事依頼リストの１レコードの情報
	 * @param kojiakAddServiceMap 工事案件登録サービス情報（返却用）
	 * @return ONU計画交換工事登録エラーコード
	 * @throws Exception 
	 */
	private String checkMain(JBSbatServiceInterfaceMap recordMap,
			HashMap<String, Object> kojiakAddServiceMap)throws Exception
	{
		// BBR機器リスト
		ArrayList<HashMap<String, Object>> bbrKktkSvcKeiList = new ArrayList<HashMap<String,Object>>();
		// 交換パターン
		String kokanPattern = "";
		// 登録ルーター機能コード
		String addRutaKinoCd = "";
		// 登録電話アダプター機能コード
		String addVaAdpKinoCd = "";
		boolean rutaKinoYuusen = false; 
		boolean rutaKinoMusen = false; 
		
		// ■■■ファイルチェック
		// フォーマットチェック
		if (recordMap.isInputErrorFlg())
		{
			// １レコードの項目数が異なる
			return ERR_CD_E010;
		}
		
		// 必須・属性・桁数チェック
		String result = singleCheck(recordMap.getMap());
		
		if (!JKKStringUtil.isNullBlank(result))
		{
			return result;
		}
		
		// 機器種別チェック
		String sakiTaknkikiSbtCd = recordMap.getString(JBSbatKKIFM957.TAKNKIKI_SBT_CD);
		
		// 機器種別が「ONU、HGW」以外の場合、チェックエラーとする
		if (!JKKStrConst.TAKNKIKI_SBT_CD_ONU.equals(sakiTaknkikiSbtCd) && !JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(sakiTaknkikiSbtCd))
		{
			return ERR_CD_E021;
		}
		
		// ■■■サービス契約チェック
		String svcKeiNo = recordMap.getString(JBSbatKKIFM957.SVC_KEI_NO);
		String netSvcKeiNo = "";
		String telSvcKeiNo = "";
		String telPcrsCd = "";
		executeKK_T_SVC_KEI_KK_SELECT_291(new String[]{super.opeDate, svcKeiNo});
		JBSbatCommonDBInterface svcKeiInfo = db_KK_T_SVC_KEI.selectNext();
		
		// サービス契約に存在しないお客様IDの場合、チェックエラーとする
		if (svcKeiInfo == null)
		{
			return ERR_CD_E100;
		}
		
		// サービス契約の契約内容がONU計画交換工事対象外である場合、チェックエラーとする
		String prcGrpCd = svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);
		
		// 料金プランコードが「eo光ネット(ホーム、メゾン、マンション)、eo光電話」以外の場合
		if (!JKKStrConst.CD00133_02.equals(prcGrpCd)
				&& !JKKStrConst.CD00133_03.equals(prcGrpCd)
				&& !JKKStrConst.CD00133_04.equals(prcGrpCd)
				&& !JKKStrConst.CD00133_10.equals(prcGrpCd))
		{
			return ERR_CD_E110;
		}
		
		// サービス契約の契約状態が「サービス提供中」以外の場合、チェックエラーとする
		String svcKeiStat = svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
		if (!JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStat))
		{
			return ERR_CD_E120;
		}
		
		// サービスコード
		String svcCd = svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_CD);
		
		if (JKKStrConst.CD00130_01.equals(svcCd))
		{
			netSvcKeiNo = svcKeiNo;
		}
		else if (JKKStrConst.CD00130_02.equals(svcCd))
		{
			telSvcKeiNo = svcKeiNo;
			telPcrsCd = svcKeiInfo.getString(JBSbatKK_T_SVC_KEI.PCRS_CD);
		}
		
		// サービス契約回線内訳情報を取得する
		executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_048(new String[]{svcKeiNo, super.opeDate, super.opeDate});
		JBSbatCommonDBInterface svkeiKaisenUwInfo = db_KK_T_SVKEI_KAISEN_UW.selectNext();
		if (svkeiKaisenUwInfo == null)
		{
			// 利用中のサービス契約回線内訳が取得できない場合は、サービス契約が存在しないエラーとする
			return ERR_CD_E100;
		}
		
		// ■■■利用場所住所廃止済チェック
		String kaisenPlaceAdCd = svkeiKaisenUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AD_CD);
		executeZM_M_AD_KK_SELECT_011(new String[]{kaisenPlaceAdCd, super.opeDate, super.opeDate});
		JBSbatCommonDBInterface adInfo = db_ZM_M_AD.selectNext();
		if (adInfo == null || 1 > Integer.parseInt(adInfo.getString("CNT")))
		{
			// 有効な住所が取得できない場合は、チェックエラーとする
			return ERR_CD_E220;
		}
		
		// サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = svkeiKaisenUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SVC_KEI_KAISEN_UCWK_NO);
		
		// 同一回線の別サービス契約情報(ネットまたは電話)を取得する
		executeKK_T_SVC_KEI_KK_SELECT_380(new String[]{svcKeiKaisenUcwkNo, svcKeiNo, super.opeDate});
		JBSbatCommonDBInterface otherSvcKeiInfo = db_KK_T_SVC_KEI.selectNext();
		
		if (otherSvcKeiInfo != null)
		{
			// 別サービス契約の契約状態が「サービス提供中」未満の場合、チェックエラーとする
			String otherSvcKeiStat = otherSvcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_STAT);
			if (JKKStrConst.CD00037_UK_ZM.equals(otherSvcKeiStat)
					|| JKKStrConst.CD00037_SHOSA_ZUMI.equals(otherSvcKeiStat)
					|| JKKStrConst.CD00037_CNC_ZM.equals(otherSvcKeiStat))
			{
				return ERR_CD_E120;
			}
			
			// サービス契約のサービスコードが「電話」かつ別サービス契約のサービスコードが「ネット」の場合、チェックエラーとする
			String otherSvcCd = otherSvcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_CD);
			if (JKKStrConst.CD00130_02.equals(svcCd) && JKKStrConst.CD00130_01.equals(otherSvcCd))
			{
				return ERR_CD_E130;
			}
			
			// 別サービス契約のサービスコードが「電話」の場合
			if (JKKStrConst.CD00130_02.equals(otherSvcCd))
			{
				telSvcKeiNo = otherSvcKeiInfo.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);
				telPcrsCd = otherSvcKeiInfo.getString(JBSbatKK_T_SVC_KEI.PCRS_CD);
			}
		}
		
		// ■■■機器提供サービス契約チェック
		// 回線に紐づく機器提供サービス契約情報を取得する
		executeKK_T_KKTK_SVC_KEI_KK_SELECT_277(new String[]{svcKeiKaisenUcwkNo, svcKeiKaisenUcwkNo, super.opeDate});
		JBSbatCommonDBInterface kktkSvcKeiInfo = db_KK_T_KKTK_SVC_KEI.selectNext();
		JBSbatCommonDBInterface trgtKktkSvcKeiInfo = null;
		String tknrtKktkSvcKeiNo = "";
		
		// 機器情報が存在しない場合、チェックエラーとする
		if (kktkSvcKeiInfo == null)
		{
			return ERR_CD_E140;
		}
		
		while (kktkSvcKeiInfo != null)
		{
			// 機器提供サービス契約ステータス
			String trgtKktkSvcKeiStat = kktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_STAT);
			// 宅内機器種別コード
			String trgtTaknkikiSbtCd = kktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_SBT_CD);
			// 機器提供サービス契約番号
			String trgtKktkSvcKeiNo = kktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO);
			// 機器変更番号
			String trgtKikiChgNo = kktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_CHG_NO);
			
			// 機器提供サービス契約ステータスがが「サービス提供中」未満、または「契約変更中」の場合、チェックエラーとする
			if (JKKStrConst.CD00056_STAT_UKETSUKEZUMI.equals(trgtKktkSvcKeiStat)
					|| JKKStrConst.CD00056_STAT_SHOSAZUMI.equals(trgtKktkSvcKeiStat)
					|| JKKStrConst.CD00056_STAT_TEIKETSUZUMI.equals(trgtKktkSvcKeiStat)
					|| JKKStrConst.CD00056_STAT_KEI_CHG_CHU.equals(trgtKktkSvcKeiStat))
			{
				return ERR_CD_E140;
			}
			
			// ONUまたはHGWの場合
			if (JKKStrConst.TAKNKIKI_SBT_CD_ONU.equals(trgtTaknkikiSbtCd)
					|| JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(trgtTaknkikiSbtCd))
			{
				// 機器提供サービス契約ステータスがサービス提供中の場合
				if (JKKStrConst.CD00056_STAT_TEIKYO_CHU.equals(trgtKktkSvcKeiStat))
				{
					trgtKktkSvcKeiInfo = kktkSvcKeiInfo;
				}
			}
			// 多機能ルーターの場合
			else if (JKKStrConst.TAKNKIKI_SBT_CD_TAKINORT.equals(trgtTaknkikiSbtCd))
			{
				tknrtKktkSvcKeiNo = trgtKktkSvcKeiNo;
			}
			
			// 修理中チェック
			executeDK_T_BTRYHOZN_KK_SELECT_002(new String[]{trgtKktkSvcKeiNo, trgtKikiChgNo});
			JBSbatCommonDBInterface btryhoznInfo = db_DK_T_BTRYHOZN.selectNext();
			
			// 修理中の場合、チェックエラーとする
			if (btryhoznInfo != null)
			{
				return ERR_CD_E200;
			}
			
			kktkSvcKeiInfo = db_KK_T_KKTK_SVC_KEI.selectNext();
		}
		
		// サービス提供中のONU、HGWが存在しない場合、チェックエラーとする
		if (trgtKktkSvcKeiInfo == null)
		{
			return ERR_CD_E140;
		}
		
		// 元機器の宅内機器種別コード
		String motoTaknkikiSbtCd = trgtKktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_SBT_CD);
		// 元機器の機器提供サービス契約番号
		String motoKktkSvcKeiNo = trgtKktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO);
		
		// HGW→ONUの場合、チェックエラーとする
		if (JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(motoTaknkikiSbtCd) && JKKStrConst.TAKNKIKI_SBT_CD_ONU.equals(sakiTaknkikiSbtCd))
		{
			return ERR_CD_E150;
		}
		// ONU→ONUの場合
		else if (JKKStrConst.TAKNKIKI_SBT_CD_ONU.equals(motoTaknkikiSbtCd) && JKKStrConst.TAKNKIKI_SBT_CD_ONU.equals(sakiTaknkikiSbtCd))
		{
			kokanPattern = KOKAN_PATTERN_ONU_TO_ONU;
		}
		// HGW→HGWの場合
		else if (JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(motoTaknkikiSbtCd) && JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(sakiTaknkikiSbtCd))
		{
			kokanPattern = KOKAN_PATTERN_HGW_TO_HGW;
		}
		// ONU→HGWの場合
		else if (JKKStrConst.TAKNKIKI_SBT_CD_ONU.equals(motoTaknkikiSbtCd) && JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(sakiTaknkikiSbtCd))
		{
			kokanPattern = KOKAN_PATTERN_ONU_TO_HGW;
		}
		
		// ネット契約が存在する場合
		if (!JKKStringUtil.isNullBlank(netSvcKeiNo))
		{
			// ネット契約に紐づく機器提供サービス契約情報を取得する
			executeKK_T_KKTK_SVC_KEI_KK_SELECT_278(new String[]{netSvcKeiNo, JKKStrConst.TAKNKIKI_SBT_CD_BBR, netSvcKeiNo, JKKStrConst.TAKNKIKI_SBT_CD_BBR, super.opeDate});
			JBSbatCommonDBInterface bbrKktkSvcKeiInfo = db_KK_T_KKTK_SVC_KEI.selectNext();
			
			while (bbrKktkSvcKeiInfo != null)
			{
				// 機器提供サービス契約ステータス
				String bbrKktkSvcKeiStat = bbrKktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_STAT);
				// 機器提供サービス契約番号
				String bbrKktkSvcKeiNo = bbrKktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO);
				// 機器変更番号
				String bbrKikiChgNo = bbrKktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_CHG_NO);
				// 料金コースコード
				String bbrPcrsCd = bbrKktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.PCRS_CD);
				
				// 機器提供サービス契約ステータスがが「サービス提供中」未満、または「契約変更中」の場合、チェックエラーとする
				if (JKKStrConst.CD00056_STAT_UKETSUKEZUMI.equals(bbrKktkSvcKeiStat)
						|| JKKStrConst.CD00056_STAT_SHOSAZUMI.equals(bbrKktkSvcKeiStat)
						|| JKKStrConst.CD00056_STAT_TEIKETSUZUMI.equals(bbrKktkSvcKeiStat)
						|| JKKStrConst.CD00056_STAT_KEI_CHG_CHU.equals(bbrKktkSvcKeiStat))
				{
					return ERR_CD_E140;
				}
				
				// 修理中チェック
				executeDK_T_BTRYHOZN_KK_SELECT_002(new String[]{bbrKktkSvcKeiNo, bbrKikiChgNo});
				JBSbatCommonDBInterface btryhoznInfo = db_DK_T_BTRYHOZN.selectNext();
				
				// 修理中の場合、チェックエラーとする
				if (btryhoznInfo != null)
				{
					return ERR_CD_E200;
				}
				
				if (musenRtPcrsCdList.contains(bbrPcrsCd))
				{
					rutaKinoMusen = true;
				}
				else
				{
					rutaKinoYuusen = true;
				}
				
				HashMap<String, Object> bbrKktkSvcKeiMap = new HashMap<String, Object>();
				bbrKktkSvcKeiMap.put("bbr_kktk_svc_kei_no", bbrKktkSvcKeiNo);
				bbrKktkSvcKeiList.add(bbrKktkSvcKeiMap);
				
				bbrKktkSvcKeiInfo = db_KK_T_KKTK_SVC_KEI.selectNext();
			}
		}
		
		// 電話契約が存在する場合
		if (!JKKStringUtil.isNullBlank(telSvcKeiNo))
		{
			// 電話契約に紐づく機器提供サービス契約情報を取得する
			executeKK_T_KKTK_SVC_KEI_KK_SELECT_278(new String[]{telSvcKeiNo, JKKStrConst.TAKNKIKI_SBT_CD_VA, telSvcKeiNo, JKKStrConst.TAKNKIKI_SBT_CD_VA, super.opeDate});
			JBSbatCommonDBInterface vaKktkSvcKeiInfo = db_KK_T_KKTK_SVC_KEI.selectNext();
			
			while (vaKktkSvcKeiInfo != null)
			{
				// 機器提供サービス契約ステータス
				String vaKktkSvcKeiStat = vaKktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_STAT);
				// 機器提供サービス契約番号
				String vaKktkSvcKeiNo = vaKktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO);
				// 機器変更番号
				String vaKikiChgNo = vaKktkSvcKeiInfo.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_CHG_NO);
				
				// 機器提供サービス契約ステータスがが「サービス提供中」未満、または「契約変更中」の場合、チェックエラーとする
				if (JKKStrConst.CD00056_STAT_UKETSUKEZUMI.equals(vaKktkSvcKeiStat)
						|| JKKStrConst.CD00056_STAT_SHOSAZUMI.equals(vaKktkSvcKeiStat)
						|| JKKStrConst.CD00056_STAT_TEIKETSUZUMI.equals(vaKktkSvcKeiStat)
						|| JKKStrConst.CD00056_STAT_KEI_CHG_CHU.equals(vaKktkSvcKeiStat))
				{
					return ERR_CD_E140;
				}
				
				// 修理中チェック
				executeDK_T_BTRYHOZN_KK_SELECT_002(new String[]{vaKktkSvcKeiNo, vaKikiChgNo});
				JBSbatCommonDBInterface btryhoznInfo = db_DK_T_BTRYHOZN.selectNext();
				
				// 修理中の場合、チェックエラーとする
				if (btryhoznInfo != null)
				{
					return ERR_CD_E200;
				}
				
				vaKktkSvcKeiInfo = db_KK_T_KKTK_SVC_KEI.selectNext();
			}
		}
		
		// ■■■工事案件チェック
		executeKU_T_SVKEI_KOJIAK_KK_SELECT_030(new String[]{svcKeiNo});
		JBSbatCommonDBInterface svkeiKojiakInfo = db_KU_T_SVKEI_KOJIAK.selectNext();
		
		while (svkeiKojiakInfo != null)
		{
			// 工事案件種別コード
			String kojiakSbtCd = svkeiKojiakInfo.getString(JBSbatKU_T_KOJIAK.KOJIAK_SBT_CD);
			
			// 仕掛中工事が存在する場合、チェックエラーとする
			if (kikiAddKjakSbtList.contains(kojiakSbtCd))
			{
				return ERR_CD_E160;
			}
			
			svkeiKojiakInfo = db_KU_T_SVKEI_KOJIAK.selectNext();
		}
		
		// ■■■督促チェック
		// 督促ステータスが「強制解約予告済」以上の場合、チェックエラーとする
		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_E170;
		}
		
		// ■■■住所変更チェック
		// 住所変更ステータスが「登録済」の場合、チェックエラーとする
		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;
		}
		
		// ■■■異動予約チェック
		String rtKkopSvcKeiNo = "";
		String vaKkopSvcKeiNo = "";
		
		// 元機器がHGWの場合
		if (JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(motoTaknkikiSbtCd))
		{
			// ルーター機能を取得する
			executeKK_T_KKOP_SVC_KEI_KK_SELECT_033(new String[]{motoKktkSvcKeiNo, JKKStrConst.KKOP_SVC_CD_ROUTER, super.opeDate});
			JBSbatCommonDBInterface rtKkopSvcKeiInfo = db_KK_T_KKOP_SVC_KEI.selectNext();
			if (rtKkopSvcKeiInfo != null)
			{
				rtKkopSvcKeiNo = rtKkopSvcKeiInfo.getString(JBSbatKK_T_KKOP_SVC_KEI.KKOP_SVC_KEI_NO);
			}
			
			// 電話アダプター機能を取得する
			executeKK_T_KKOP_SVC_KEI_KK_SELECT_033(new String[]{motoKktkSvcKeiNo, JKKStrConst.KKOP_SVC_CD_TEL_ADAPT, super.opeDate});
			JBSbatCommonDBInterface vaKkopSvcKeiInfo = db_KK_T_KKOP_SVC_KEI.selectNext();
			if (vaKkopSvcKeiInfo != null)
			{
				vaKkopSvcKeiNo = vaKkopSvcKeiInfo.getString(JBSbatKK_T_KKOP_SVC_KEI.KKOP_SVC_KEI_NO);
			}
		}
		
		// 対象のサービス契約、機器、機器ＯＰが予約中の場合、チェックエラーとする
		executeKK_T_IDO_RSV_KK_SELECT_108(new String[]{svcKeiNo, motoKktkSvcKeiNo, rtKkopSvcKeiNo, vaKkopSvcKeiNo, super.opeDate});
		JBSbatCommonDBInterface idoRsvInfo = db_KK_T_IDO_RSV.selectNext();
		if (0 < Integer.parseInt(idoRsvInfo.getString("CNT")))
		{
			return ERR_CD_E190;
		}
		
		// 電話契約が存在する場合
		if (!JKKStringUtil.isNullBlank(telSvcKeiNo))
		{
			// 対象のサービス契約（電話）が解約予約中の場合、チェックエラーとする
			executeKK_T_IDO_RSV_KK_SELECT_099(new String[]{telSvcKeiNo, super.opeDate});
			idoRsvInfo = db_KK_T_IDO_RSV.selectNext();
			if (0 < Integer.parseInt(idoRsvInfo.getString("CNT")))
			{
				return ERR_CD_E190;
			}
		}
		
		// ■■■HGWの登録可否チェック
		// HGWに交換する場合
		if (JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(sakiTaknkikiSbtCd))
		{
			String oyaKikiSbtCd = "";
			String hgwKknFfgKobet = svkeiKaisenUwInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.HGW_KKN_FFG);
			
			// 申込収容位置空き情報を取得する
			executeKU_T_MKSYICHI_AKI_IF_KK_SELECT_001(new String[]{svcKeiKaisenUcwkNo});
			JBSbatCommonDBInterface mksyichiAkiIfInfo = db_KU_T_MKSYICHI_AKI_IF.selectNext();
			if (mksyichiAkiIfInfo != null)
			{
				oyaKikiSbtCd = mksyichiAkiIfInfo.getString(JBSbatKU_T_MKSYICHI_AKI_IF.OYA_KIKI_SBT_CD);
			}
			
			// 全体向けのHGW交換不可フラグが不可の場合
			// または、対象回線のHGW交換不可フラグが不可の場合
			// または、親機種別コードが「10G-EPON」でない場合
			// チェックエラーとする
			if (JKKStrConst.HGW_KOKAN_FAIL.equals(hgwKknFfgSystem)
					|| JKKStrConst.HGW_KOKAN_FAIL.equals(hgwKknFfgKobet)
					|| !JKKStrConst.OYAK_SBT_CD_10G_EPON.equals(oyaKikiSbtCd))
			{
				return ERR_CD_E210;
			}
		}
		
		// ONU→HGWの場合
		if (KOKAN_PATTERN_ONU_TO_HGW.equals(kokanPattern))
		{
			// ネット契約が存在する場合
			if (!JKKStringUtil.isNullBlank(netSvcKeiNo))
			{
				if(rutaKinoMusen)
				{
					// 無線ルーター機能
					addRutaKinoCd = JKKStrConst.CD00134_KKOP_MUSEN;
				}
				else if(rutaKinoYuusen)
				{
					// 有線ルーター機能
					addRutaKinoCd = JKKStrConst.CD00134_KKOP_YUSEN;
				}
				
				// 多機能ルーターが存在する場合
				if (!JKKStringUtil.isNullBlank(tknrtKktkSvcKeiNo))
				{
					// ルーター機能を取得する
					executeKK_T_KKOP_SVC_KEI_KK_SELECT_033(new String[]{tknrtKktkSvcKeiNo, JKKStrConst.KKOP_SVC_CD_ROUTER, super.opeDate});
					JBSbatCommonDBInterface tknrtInfo = db_KK_T_KKOP_SVC_KEI.selectNext();
					if (tknrtInfo != null)
					{
						String tknrtKkopSvcKeiNoRt = tknrtInfo.getString(JBSbatKK_T_KKOP_SVC_KEI.KKOP_SVC_KEI_NO);
						String tknrtGeneAddDtmRt = tknrtInfo.getString(JBSbatKK_T_KKOP_SVC_KEI.GENE_ADD_DTM);
						
						// PK検索を行う
						JBSbatCommonDBInterface rtKkopSvcKeiInfoPk = executeKK_T_KKOP_SVC_KEI_PKSELECT(new String[]{tknrtKkopSvcKeiNoRt, tknrtGeneAddDtmRt});
						if (rtKkopSvcKeiInfoPk != null)
						{
							addRutaKinoCd = rtKkopSvcKeiInfoPk.getString(JBSbatKK_T_KKOP_SVC_KEI.PCRS_CD);
						}
					}
				}
				
				// 登録ルーター機能コードが未設定の場合
				if (JKKStringUtil.isNullBlank(addRutaKinoCd))
				{
					// 有線ルーター機能
					addRutaKinoCd = JKKStrConst.CD00134_KKOP_YUSEN;
				}
			}
			
			// 電話契約が存在する場合
			if (!JKKStringUtil.isNullBlank(telSvcKeiNo))
			{
				// 電話契約が1番号コースの場合
				if (JBSbatKKConst.PCRS_CD_ONENUMBER.equals(telPcrsCd))
				{
					addVaAdpKinoCd = JKKStrConst.CD00134_KKOP_TEL_1;
				}
				// 電話契約が2番号コースの場合
				else if (JBSbatKKConst.PCRS_CD_TWONUMBER.equals(telPcrsCd))
				{
					addVaAdpKinoCd = JKKStrConst.CD00134_KKOP_TEL_2;
				}
			}
		}
		
		// 工事案件登録サービス情報
		kojiakAddServiceMap.put("kokan_pattern", kokanPattern);
		kojiakAddServiceMap.put("svc_kei_kaisen_ucwk_no", svcKeiKaisenUcwkNo);
		kojiakAddServiceMap.put("kktk_svc_kei_no", motoKktkSvcKeiNo);
		kojiakAddServiceMap.put("add_ruta_kino_cd", addRutaKinoCd);
		kojiakAddServiceMap.put("add_va_adp_kino_cd", addVaAdpKinoCd);
		kojiakAddServiceMap.put("bbr_kiki_list", bbrKktkSvcKeiList);
		
		// チェックOK
		return "";
	}
	/**
	 * 入力情報（ONU計画交換工事依頼）の単項目チェックを行います。
	 * <br>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @return エラー内容に該当するONU計画交換工事登録エラーコード。エラーなしの場合には空文字を返却。
	 */
	private String singleCheck(HashMap rsMap)
	{
		// 単項目チェックを行います
		String strValue = null;
		
		// サービス契約番号項目チェック
		strValue = (String)rsMap.get(JBSbatKKIFM957.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;
		}
		
		// 宅内機器種別コード項目チェック
		strValue = (String)rsMap.get(JBSbatKKIFM957.TAKNKIKI_SBT_CD);
		
		// 必須チェック
		if(JKKStringUtil.isNullBlank(strValue))
		{
			return ERR_CD_E021;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu1","2"}))
		{
			return ERR_CD_E021;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			return ERR_CD_E021;
		}
		
		// 工事案件連絡事項項目チェック
		strValue = (String)rsMap.get(JBSbatKKIFM957.KOJIAK_RRK_JIKO);
		
		if(!JKKStringUtil.isNullBlank(strValue))
		{
			// 桁数チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "100"}))
			{
				return ERR_CD_E022;
			}
			// 属性チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"zenkaku"}))
			{
				return ERR_CD_E022;
			}
		}
		
		// 工事案件備考１項目チェック
		strValue = (String)rsMap.get(JBSbatKKIFM957.KOJIAK_BIKO_1);
		
		if(!JKKStringUtil.isNullBlank(strValue))
		{
			// 桁数チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "100"}))
			{
				return ERR_CD_E023;
			}
			// 属性チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"zenkaku"}))
			{
				return ERR_CD_E023;
			}
		}
		
		// 工事案件備考２項目チェック
		strValue = (String)rsMap.get(JBSbatKKIFM957.KOJIAK_BIKO_2);
		
		if(!JKKStringUtil.isNullBlank(strValue))
		{
			// 桁数チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "100"}))
			{
				return ERR_CD_E024;
			}
			// 属性チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"zenkaku"}))
			{
				return ERR_CD_E024;
			}
		}
		
		// 申込者名項目チェック
		strValue = (String)rsMap.get(JBSbatKKIFM957.MSKMSHA_NM);
		
		if(!JKKStringUtil.isNullBlank(strValue))
		{
			// 桁数チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "10"}))
			{
				return ERR_CD_E025;
			}
			// 属性チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"zenkaku"}))
			{
				return ERR_CD_E025;
			}
		}
		
		// 宅内調査希望アポ期限年月日項目チェック
		strValue = (String)rsMap.get(JBSbatKKIFM957.TAKCHO_KIBO_APO_KIGEN_YMD);
		
		if(!JKKStringUtil.isNullBlank(strValue))
		{
			// 桁数チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu1","8"}))
			{
				return ERR_CD_E026;
			}
			// 属性チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"year_month_day1"}))
			{
				return ERR_CD_E026;
			}
		}
		
		// 電話連絡希望時間帯コード項目チェック
		strValue = (String)rsMap.get(JBSbatKKIFM957.TEL_RRK_KIBO_TIME_CD);
		
		if(!JKKStringUtil.isNullBlank(strValue))
		{
			// 属性チェック
			if(!telRrkKiboTimeCdMap.containsKey(strValue))
			{
				return ERR_CD_E027;
			}
		}
		
		// 工事アポ連絡先指定コード
		strValue = (String)rsMap.get(JBSbatKKIFM957.KOJI_APO_RRKS_SHITEI_CD);
		
		if(!JKKStringUtil.isNullBlank(strValue))
		{
			// 属性チェック
			if(!rrksShiteiCdMap.containsKey(strValue))
			{
				return ERR_CD_E028;
			}
		}
		
		// 工事アポ連絡先電話番号
		strValue = (String)rsMap.get(JBSbatKKIFM957.KOJI_APO_RRKS_TELNO);
		
		if(!JKKStringUtil.isNullBlank(strValue))
		{
			// 桁数チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "10", "11"}))
			{
				return ERR_CD_E029;
			}
			// 属性チェック
			if(!JBSbatCheckUtil.invoke(strValue, new String[]{"tel2"}))
			{
				return ERR_CD_E029;
			}
		}
		
		return "";
	}
	
	/**
	 * ONU計画交換工事依頼結果リスト内容をマップオブジェクトへ設定する。
	 * <br>
	 * @param  rowNo 行番号
	 * @param  inMap 入力ファイルの１レコード分を格納したHashMap
	 * @param  errCd チェックエラーコード（正常の場合はNULLもしくは空文字を設定）
	 * @return JBSbatServiceInterfaceMap 出力ファイル記載内容１件分
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap setOnuPlanKknKjReqRslt(String rowNo, HashMap<String, Object> 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))
		{
			// チェックエラーのため、エラー用の出力内容を設定する
			addRslt = addRsltCdMap.get(ADD_RSLT_NG);
			addYmd = "";
			addErrRsn = addErrCdMap.get(errCd);
		}
		
		// 行番号
		result.set(JBSbatKKIFM958.ROW_NO, rowNo);
		// サービス契約番号（お客様ＩＤ）
		result.set(JBSbatKKIFM958.SVC_KEI_NO, inMap.get(JBSbatKKIFM957.SVC_KEI_NO));
		// 宅内機器種別コード（機器種別）
		result.set(JBSbatKKIFM958.TAKNKIKI_SBT_CD, inMap.get(JBSbatKKIFM957.TAKNKIKI_SBT_CD));
		// 工事案件連絡事項（連絡事項）
		result.set(JBSbatKKIFM958.KOJIAK_RRK_JIKO, inMap.get(JBSbatKKIFM957.KOJIAK_RRK_JIKO));
		// 工事案件備考１
		result.set(JBSbatKKIFM958.KOJIAK_BIKO_1, inMap.get(JBSbatKKIFM957.KOJIAK_BIKO_1));
		// 工事案件備考２
		result.set(JBSbatKKIFM958.KOJIAK_BIKO_2, inMap.get(JBSbatKKIFM957.KOJIAK_BIKO_2));
		// 申込者名（申込者）
		result.set(JBSbatKKIFM958.MSKMSHA_NM, inMap.get(JBSbatKKIFM957.MSKMSHA_NM));
		// 宅内調査希望アポ期限年月日（工事アポ予定完了期日）
		result.set(JBSbatKKIFM958.TAKCHO_KIBO_APO_KIGEN_YMD, inMap.get(JBSbatKKIFM957.TAKCHO_KIBO_APO_KIGEN_YMD));
		// 電話連絡希望時間帯コード（工事アポ希望時間）
		result.set(JBSbatKKIFM958.TEL_RRK_KIBO_TIME_CD, inMap.get(JBSbatKKIFM957.TEL_RRK_KIBO_TIME_CD));
		// 工事アポ連絡先指定コード（アポ希望連絡先）
		result.set(JBSbatKKIFM958.KOJI_APO_RRKS_SHITEI_CD, inMap.get(JBSbatKKIFM957.KOJI_APO_RRKS_SHITEI_CD));
		// 工事アポ連絡先電話番号（アポ希望連絡先番号）
		result.set(JBSbatKKIFM958.KOJI_APO_RRKS_TELNO, inMap.get(JBSbatKKIFM957.KOJI_APO_RRKS_TELNO));
		// 登録結果
		result.set(JBSbatKKIFM958.ADD_RSLT, addRslt);
		// 登録日
		result.set(JBSbatKKIFM958.ADD_YMD, addYmd);
		// 登録エラーコード
		result.set(JBSbatKKIFM958.ADD_ERR_CD, errCd);
		// 登録エラー理由
		result.set(JBSbatKKIFM958.ADD_ERR_RSN, addErrRsn);
		result.setOutFlg(true);
		
		return result;
	}
	
	/**
	 * CASEファイルに出力するデータを設定する。
	 * <br>
	 * @param  inMap 入力ファイルの１レコード分を格納したHashMap
	 * @param  yusoKokanJudgeFlg 郵送交換判定フラグ
	 * @return JBSbatServiceInterfaceMap CASEファイル記載内容１件分
	 * @throws Exception
	 */
	private HashMap<String, Object> setCaseFileData(HashMap<String, Object> inMap, String yusoKokanJudgeFlg) throws Exception
	{
		HashMap<String, Object> result = new HashMap<String, Object>();
		
		// サービス契約番号
		result.put(SVC_KEI_NO, inMap.get(JBSbatKKIFM957.SVC_KEI_NO));
		
		// タイトル
		if (YUSO_KOKAN_JUDGE_FLG_YUSO.equals(yusoKokanJudgeFlg))
		{
			result.put(TITLE, TITLE_YUSO);
		}
		else
		{
			result.put(TITLE, TITLE_KOJI);
		}
		
		return result;
	}
	
	/**
	 * ダウンロードファイル管理テーブルの登録を行います。
	 * <br>
	 * @param eFileKanriNo 電子ファイル管理番号
	 * @param fileName ファイル名
	 * @param filePath ファイルパス
	 * @param rowCnt データ件数
	 * @param rowCnt データ件数
	 * @throws Exception 
	 */
	private void insertZM_T_DL_FILE_KANRI(String eFileKanriNo, String fileName, String filePath, int rowCnt, String trnKanriNo) throws Exception
	{
		JBSbatCommonDBInterface eFileInfo = getEfileKanriInfo(eFileKanriNo);
		
		// パラメータ設定
		Object[] prm = new Object[15];
		prm[0] = JKKBatCommon.getFormatedNextSeq(commonItem, JKKStrConst.SEQ_FILE_NO, JKKStrConst.SEQ_PREFIX_SEQ_FILE_NOO, JKKStrConst.SEQ_LEN_SEQ_FILE_NO);
		prm[1] = trnKanriNo;
		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] = JKKStrConst.CD00016_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;
	}
	
	/**
	 * CASEファイル作成です。
	 * 
	 * @param cmnItem 業務共通電文
	 * @param arrayList 出力パラメータ情報
	 * @throws Exception 例外が発生した場合
	 */
	private void sksiCaseFile(JBSbatCommonItem cmnItem, ArrayList<HashMap<String, Object>> arrayList) throws Exception
	{
		// ジョブＩＤ
		String strJobid = cmnItem.getJobid();
		// バッチ更新者ＩＤ
		String strBatchUserId = cmnItem.getBatchUserId();
		// ログにバッチ更新者ＩＤ設定
		cmnItem.getLogPrint().printDebugLog(strJobid + JKKStrConst.COLON + strBatchUserId);
		
		// 格納先ディレクトリ情報を取得する
		String sFileDir = JKKBatCommon.getApplicationConst(CR_FILE_DIR_KEY) + JKKStrConst.PATH_DLMT_UNIX;
		// ファイル名に使用する日時情報(yyyymmddhhmmss)を取得する
		String sSysData = JKKBatCommon.getSysDateTime().substring(0, 14);
		// CASECSVファイル
		String caseCvsFile = sFileDir + CASE_FILE_NAME + sSysData + ".CSV";
		// CASE件数
		String caseCntFile = sFileDir + CASE_FILE_NAME + sSysData + "_CNT.TXT";
		// CASEフラグファイル
		String caseFlgFile = sFileDir + CASE_FILE_NAME + sSysData + "_FTP.FLG";
		
		// CASECSVファイル
		JBSbatBusinessFileUtil caseCvsFileObj = null;
		// CASE件数
		JBSbatBusinessFileUtil caseCntFileObj = null;
		// CASEフラグファイル
		JBSbatBusinessFileUtil caseFlgFileObj = null;
		
		try
		{
			// 作成するデータがない場合はファイルを作成せずに終了する
			if (arrayList == null || arrayList.size() <= 0) {
				return;
			}
			
			// CASECSVファイルを生成する。
			caseCvsFileObj = JCCBatCommon.createBusinessFileUtil(caseCvsFile, JKKBatConst.SJIS, JKKBatConst.S_LINE_SEPARAOR_CRLF, JKKBatConst.CONMA);
			cmnItem.getLogPrint().printDebugLog(strJobid + ":CASECSVファイル名:" + caseCvsFile);
			
			for (int i = 0; i < arrayList.size(); i++)
			{
				HashMap<String, Object> outMap = arrayList.get(i);
				
				// サービス契約番号
				String svcKeiNo = (String) outMap.get(SVC_KEI_NO);
				// タイトル
				String title = (String) outMap.get(TITLE);
				
				// CASEファイル出力リスト
				ArrayList<String> caseFileDateList = new ArrayList<String>();
				outputVal(KOKYAKU_TYPE, caseFileDateList); // 顧客タイプ
				outputVal(svcKeiNo, caseFileDateList); // お客様ID
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 顧客氏名
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 顧客氏名（カナ）
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 電話番号
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 電話番号2
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 郵便番号
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 住所1
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 住所2
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 住所3
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 性別
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 生年月日
				outputVal(JYOUTAI, caseFileDateList); // 状態
				outputVal(STATUS, caseFileDateList); // ステータス
				outputVal(JKKBatCommon.formatDatetimeSS(JKKBatCommon.getSysDateTime()), caseFileDateList); // 作成日時
				outputVal(UKETSUKE, caseFileDateList); // 受付者
				outputVal(TANTOU, caseFileDateList); // 担当者
				outputVal(JKKBatConst.SPACE, caseFileDateList); // キュー名
				outputVal(UKETSUKE_SBT, caseFileDateList);// 受付種別
				outputVal(title, caseFileDateList); // タイトル
				outputVal(JKKBatConst.SPACE, caseFileDateList); // カテゴリ１
				outputVal(JKKBatConst.SPACE, caseFileDateList); // カテゴリ２
				outputVal(JKKBatConst.SPACE, caseFileDateList); // カテゴリ３
				outputVal(JKKBatConst.SPACE, caseFileDateList); // カテゴリ４
				outputVal(JKKBatConst.SPACE, caseFileDateList); // カテゴリ５
				outputVal(JKKBatConst.SPACE, caseFileDateList); // カテゴリ６
				outputVal(JKKBatConst.SPACE, caseFileDateList); // カテゴリ７
				outputVal(JKKBatConst.SPACE, caseFileDateList); // カテゴリ８
				outputVal(JKKBatConst.SPACE, caseFileDateList); // カテゴリ９
				outputVal(JKKBatConst.SPACE, caseFileDateList); // カテゴリ１０
				outputVal(JKKBatConst.SPACE, caseFileDateList); // カテゴリ１１
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 問い合わせ履歴
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 問合せ客ID
				outputVal(JKKBatConst.SPACE, caseFileDateList); // eoID
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 受付番号
				outputVal(JKKBatConst.SPACE, caseFileDateList); // エスカレーション日時
				outputVal(JKKBatConst.SPACE, caseFileDateList); // コールバック時間指定タイプ
				outputVal(JKKBatConst.SPACE, caseFileDateList); // 業務個別組織コード
				
				// CASECSVファイルへ出力する。
				JCCBatCommon.printBusinessFileUtil(caseCvsFileObj, caseFileDateList);
			}
			
			// CASE件数ファイルを生成する。
			caseCntFileObj = JCCBatCommon.createBusinessFileUtil(caseCntFile, JKKBatConst.SJIS, JKKBatConst.S_LINE_SEPARAOR_CRLF, JKKBatConst.SPACE);
			cmnItem.getLogPrint().printDebugLog(strJobid + ":CASE件数ファイル名:" + caseCntFile);
			
			// CASE件数ファイルへ出力する。
			JCCBatCommon.printBusinessFileUtil(caseCntFileObj, JKKBatConst.S_DBL_QUOT + String.valueOf(arrayList.size()) + JKKBatConst.S_DBL_QUOT);
			
			// CASEフラグファイルを生成する。
			caseFlgFileObj = JCCBatCommon.createBusinessFileUtil(caseFlgFile, JKKBatConst.SJIS, JKKBatConst.SPACE, JKKBatConst.SPACE);
			cmnItem.getLogPrint().printDebugLog(strJobid + ":CASEフラグファイル名:" + caseFlgFile);
		}
		catch (Exception e)
		{
			cmnItem.getLogPrint().printDebugLog(strJobid + ":例外発生の為、生成ファイルのクローズ処理を行う。");
			
			// 生成ファイルのクローズ処理
			if (null != caseCvsFileObj)
			{
				JKKBatCommon.closeBusinessFileUtil(caseCvsFileObj);
			}
			if (null != caseCntFileObj)
			{
				JKKBatCommon.closeBusinessFileUtil(caseCntFileObj);
			}
			if (null != caseFlgFileObj)
			{
				JKKBatCommon.closeBusinessFileUtil(caseFlgFileObj);
			}
			
			throw e;
		}
		if (null != caseCvsFileObj)
		{
			JKKBatCommon.closeBusinessFileUtil(caseCvsFileObj);
		}
		if (null != caseCntFileObj)
		{
			JKKBatCommon.closeBusinessFileUtil(caseCntFileObj);
		}
		if (null != caseFlgFileObj)
		{
			JKKBatCommon.closeBusinessFileUtil(caseFlgFileObj);
		}
	}
	
	/**
	 * 出力用文字列の作成処理です。
	 *
	 * @param value 対象文字列
	 * @param list 出力対象リスト
	 * @return 対象文字列の結合情報
	 */
	private static List<String> outputVal(String value, List<String> list)
	{
		list.add(JKKBatConst.S_DBL_QUOT + value + JKKBatConst.S_DBL_QUOT);
		return list;
	}
	
	/**
	 * サービス呼出処理
	 * @param recordMap サービスの入力情報
	 * @param kojiakAddServiceMap 工事案件登録サービス情報
	 * @return サービスの処理結果
	 * @throws Exception
	 */
	private HashMap<String, Object> invokeService(HashMap<String, Object> recordMap, HashMap<String, Object> kojiakAddServiceMap) throws Exception
	{
		// サービス呼び出し時の引数を生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "KKSV1025");
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, "KKSV1025OP");
		
		// サービスに渡す業務データを格納するMAP
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		parentMap.putAll(kojiakAddServiceMap);
		
		// 機能コード
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);
		// サービス契約番号
		parentMap.put("svc_kei_no", recordMap.get(JBSbatKKIFM957.SVC_KEI_NO));
		// 宅内機器種別コード
		parentMap.put("taknkiki_sbt_cd", recordMap.get(JBSbatKKIFM957.TAKNKIKI_SBT_CD));
		// 工事案件連絡事項
		parentMap.put("kojiak_rrk_jiko", recordMap.get(JBSbatKKIFM957.KOJIAK_RRK_JIKO));
		// 工事案件備考１
		parentMap.put("kojiak_biko_1", recordMap.get(JBSbatKKIFM957.KOJIAK_BIKO_1));
		// 工事案件備考２
		parentMap.put("kojiak_biko_2", recordMap.get(JBSbatKKIFM957.KOJIAK_BIKO_2));
		// 申込者名
		parentMap.put("mskmsha_nm", recordMap.get(JBSbatKKIFM957.MSKMSHA_NM));
		// 宅内調査希望アポ期限年月日
		parentMap.put("takcho_kibo_apo_kigen_ymd", recordMap.get(JBSbatKKIFM957.TAKCHO_KIBO_APO_KIGEN_YMD));
		// 電話連絡希望時間帯コード
		parentMap.put("tel_rrk_kibo_time_cd", recordMap.get(JBSbatKKIFM957.TEL_RRK_KIBO_TIME_CD));
		// 工事アポ連絡先指定コード
		parentMap.put("koji_apo_rrks_shitei_cd", recordMap.get(JBSbatKKIFM957.KOJI_APO_RRKS_SHITEI_CD));
		// 工事アポ連絡先電話番号
		parentMap.put("koji_apo_rrks_telno", recordMap.get(JBSbatKKIFM957.KOJI_APO_RRKS_TELNO));
		// 異動区分 ONU計画交換
		parentMap.put("ido_div", JKKStrConst.CD00576_ONU_PLAN_KKN);
		
		inputMap.put("KKSV102501CC", parentMap);
		
		// サービスの処理結果が格納されるMAP
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// サービス呼び出し
		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
		
		return outputMap;
	}
}
