/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKRozettStcStatIktTrkm
*	ソースファイル名	：JBSbatKKRozettStcStatIktTrkm.java
*	作成者				：富士通　
*	作成日				：2021年09月17日
*＜機能概要＞
*　ローゼット設置状態一括取込部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v56.00.00	2021/09/17	FJ)藤本涼	【ANK-4038-00-00】【eo定期】光ローゼット化対応
*	v60.00.00	2021/07/08	FJ)渋谷	　　【ANK-4244-00-00】【eo定期】MT既設賃貸対応
*	v60.00.01	2021/09/08	FJ)渋谷	　　【IT1-2022-0000070】MANMOS照会・更新APIに渡す値の取得先の誤り
*	v61.00.00	2022/11/01	FJ)吉川		【ANK-4315-00-00】【eo定期】eoホームゲートウェイ導入対応
*********************************************************************/
package eo.business.service;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.NoSuchElementException;

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.util.file.JBSbatKKIFM924;
import eo.business.util.file.JBSbatKKIFM940;
import eo.business.util.table.JBSbatCC_T_DLYD_TRN_REQ;
import eo.business.util.table.JBSbatKK_T_CMP_APLY_INFO;
import eo.business.util.table.JBSbatKK_T_OWNR_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.business.util.table.JBSbatKU_T_SVKEI_KOJIAK;
import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
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 JBSbatKKRozettStcStatIktTrkm 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_SVKEI_KAISEN_UW = "KK_T_SVKEI_KAISEN_UW";
	
	/** テーブル(サービス契約_工事案件)*/
	private static final String D_TBL_NAME_KU_T_SVKEI_KOJIAK = "KU_T_SVKEI_KOJIAK";
	
	/** テーブル(ダウンロードファイル管理)*/
	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";
	
	//ANK-4244-00-00 ADD START
	/** テーブル(マンション物件)*/
	private static final String D_TBL_NAME_KK_T_MANSION_BUKKEN = "KK_T_MANSION_BUKKEN";
	//ANK-4244-00-00 ADD END
	
	/** SQL定義キー(KK_SELECT_063)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_063 = "KK_SELECT_063";
	/** SQL定義キー(KK_SELECT_021)*/
	private static final String KU_T_SVKEI_KOJIAK_KK_SELECT_021 = "KK_SELECT_021";
	/** SQL定義キー(KK_INSERT_002)*/
	private static final String ZM_T_DL_FILE_KANRI_KK_INSERT_002 = "KK_INSERT_002";
	/** SQL定義キー(KK_SELECT_001)*/
	private static final String ZM_M_CD_NM_KANRI_KK_SELECT_001 = "KK_SELECT_001";
	//ANK-4244-00-00 ADD START
	/** SQL定義キー(KK_SELECT_005)*/
	private static final String KK_T_MANSION_BUKKEN_KK_SELECT_005 = "KK_SELECT_005";
	//ANK-4244-00-00 ADD END
	
	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	
	/** テーブルアクセスクラス(サービス契約回線内訳)*/
	private JBSbatSQLAccess db_KK_T_SVKEI_KAISEN_UW = null;
	
	/** テーブルアクセスクラス(サービス契約_工事案件)*/
	private JBSbatSQLAccess db_KU_T_SVKEI_KOJIAK = null;
	
	/** テーブルアクセスクラス(ダウンロードファイル管理)*/
	private JBSbatSQLAccess db_ZM_T_DL_FILE_KANRI = null;
	
	/** テーブルアクセスクラス(ディレイド処理依頼)*/
	private JBSbatSQLAccess db_ZM_T_DATAIKTTRK_KNRI = null;
	
	//ANK-4244-00-00 ADD START
	/** テーブルアクセスクラス(マンション物件)*/
	private JBSbatSQLAccess db_KK_T_MANSION_BUKKEN = null;		
	//ANK-4244-00-00 ADD END
	
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** ファイルエンコード(SJIS) */
	private static final String ENCODE_SHIFT_JIS = "Shift-JIS";
	//ANK-4244-00-00 ADD START
	/** P-ID*/
	private static final String PARAM_PID = "pid";
	/** 回線場所連番*/
	private static final String PARAM_KAISEN_PLACE_RENBAN = "kaisen_place_renban";
	/** コンセント設置内容*/
	private static final String PARAM_CONSNT_STC_NYO = "consnt_stc_nyo";
	/** APIID*/
	private static final String APIID = "apiid";
	/** エラーコード*/
	private static final String ERRCODE = "errcode";
	/** USECASE */
	private static final String USECASE_ID = "KKSV1006";
	/** OPERATION */
	private static final String OPERATION_ID = "KKSV1006OP";
	/** CCキー */
	private static final String KKSV100601CC = "KKSV100601CC";
	//ANK-4244-00-00 ADD END
	/** エラーコード＆エラー理由 */
	private static enum ErrCdEnum
	{
		/** E010：入力レコードがフォーマット不正 */
		E010("フォーマットエラー")
		/** E020：申込書番号未存在エラー */
		,E020("必須エラー（申込書番号）")
		/** E030：コンセント設置内容未存在エラー */
		,E030("必須エラー（コンセント設置内容）")
		/** E040：サービス契約回線内訳未特定エラー */
		,E040("更新対象なしエラー")
		/** E050：コンセント設置内容コードエラー */
		,E050("入力値エラー（コンセント設置内容）")
		/** E060：サービス契約回線内訳更新エラー */
		,E060("更新処理エラー")
		/** E70：未設置連携エラー */
		,E070("未設置連携エラー（コンセント設置内容）")
		//ANK-4244-00-00 ADD STRAT
		/** E80：MANMOS更新処理エラー */
		,E080("MANMOS更新処理エラー")
		//ANK-4244-00-00 ADD END
		;
		
		final String message;
		
		private ErrCdEnum(String message)
		{
			this.message = message;
		}
	}
	
	/** ローゼット設置状態一括取込ファイル定義ファイル名 */
	private static final String KKIFM924_DEF = "KKIFM924.def";
	
	/** ローゼット設置状態一括取込結果リスト名 */
	private static final String KKIFM925_NAME = "KKIFM925.csv";
	
	/** 入力ファイル定義 */
	private static final String PARAM_IND = "IND";
	
	/** ファイルコード */
	private static final String FILE_CD = "0000";
	
	/** 処理管理番号（ローゼット設置状態一括取込） */
	private static final String TRN_KANRI_NO_KKIFM924 = "000000000250";
	
	/** ファイル名編集用（ローゼット設置状態一括取込結果リスト） */
	private static final String FILE_NAME_TEMPLATE_KKIFM925 = "ローゼット設置状態一括取込結果リスト_yyyyMMddHHmmssSSS.csv";
	
	/** ファイル名で利用するタイムスタンプのフォーマット */
	private static final String FILE_TIMESTAMP_FORMAT = "yyyyMMddHHmmssSSS";
	
	/** ローゼット設置状態一括取込結果リストファイルオブジェクト */
	private JBSbatBusinessFileUtil kkifm925FileObj = null;
	
	/** ローゼット設置状態一括取込結果リストファイルレコード件数 */
	private int kkifm925RecordCnt = 0;
	
	/** ローゼット設置状態一括取込開始行数 */
	private static final int TRKM_START_COUNT = 3;
	
	/** CSV囲い文字(ダブルクォーテーション) */
	private static final String KAKOIMOJI = "\"";
	
	/** ローゼット設置状態一括取込ファイル 項目マップ */
	private static final HashMap<String, String> ROZETT_IKT_TRKM_ITEM = new HashMap<String, String>()
	{
		{
			put(String.valueOf(0), JBSbatKKIFM924.UK_NO);
			put(String.valueOf(1), JBSbatKKIFM924.MSKMSHO_NO);
			put(String.valueOf(2), JBSbatKKIFM924.CONSNT_STC_NYO);
			put(String.valueOf(3), JBSbatKKIFM924.CHOSA_FUKKYU_DAY);
		}
	};
	
	/** コンセント設置内容コード種別（コード種別）*/
	private static final String CD_SBT_CNSENT_STC_NYO = "CD01771";
	
	/**
	 * 初期処理
	 * @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_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_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);
		//ANK-4244-00-00 ADD START
		db_KK_T_MANSION_BUKKEN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MANSION_BUKKEN);
		//ANK-4244-00-00 ADD END
		
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
		/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// ディレイド処理依頼情報リストを取得する
		List<HashMap<String, Object>> shoriIraiList = JCCbatShoriIraiUtil.getShoriIraiInfo(commonItem, this.jobid);

		// ディレイド処理依頼情報リストが取得できない場合、処理を終了する
		if (null == shoriIraiList)
		{
			return null;
		}

		// フリー項目を取得する
		String[] freeItems = freeItem.split(JKKBatConst.S_PARAM_DELIM);

		// ローゼット設置状態一括取込定義ファイル名を取得する
		String kkifm924DefName = JBSbatAplConst.getAplConstValue(PARAM_IND) + KKIFM924_DEF;
		// ローゼット設置状態一括取込結果リストパス
		String kkifm925FilePath = freeItems[0] + KKIFM925_NAME;

		// ディレイド処理依頼情報リストの件数分繰り返す
		for (HashMap<String, Object> shoriIrai : shoriIraiList)
		{
			try
			{
				// チェックエラーフラグ
				boolean checkErrFlg = false;

				// 電子ファイル管理からローゼット設置状態一括取込ファイルを取得する
				JBSbatInputFileUtil kkifm924FileUtil = 
					new JBSbatInputFileUtil(JCCBatCommon.searchDenshiFile(commonItem, (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.INPUT_EFILE_KANRI_NO)));

				// ローゼット設置状態一括取込定義ファイルオブジェクトを生成する
				JBSbatDefFileUtil kkifm924FileDef = new JBSbatDefFileUtil(kkifm924DefName, kkifm924FileUtil);
				// ローゼット設置状態一括取込結果リストファイルオブジェクトを生成する
				kkifm925FileObj = JKKBatCommon.createBusinessFileUtil(kkifm925FilePath, ENCODE_SHIFT_JIS, JKKStrConst.LINE_SEPARATOR, JKKStrConst.COMMA);

				// ローゼット設置状態一括取込ファイルレコード件数
				int kkifm924RecordCnt = 0;
				// ローゼット設置状態一括取込結果リストファイルレコード件数
				kkifm925RecordCnt = 0;

				// Readerオブジェクトを生成する
				kkifm924FileUtil.createReader();
				
				// ローゼット設置状態一括取込ファイルの１レコードの情報を保持するマップ
				HashMap<String, String> readMap = null;

				// ローゼット設置状態一括取込ファイルの件数分繰り返す
				while (kkifm924FileUtil.ready())
				{
					// ファイルから１レコードを取得する
					String line = kkifm924FileUtil.readLine();
					
					// ローゼット設置状態一括取込ファイルレコード件数カウント
					kkifm924RecordCnt++;
					
					//3行目から取得する
					if (kkifm924RecordCnt >= TRKM_START_COUNT)
					{
						// １レコードの内容を文字列からマップに変換
						readMap = convNonQuateStringToList(line);
						
						// １レコードの情報をマップに格納する
						JBSbatServiceInterfaceMap recordMap = kkifm924FileDef.lineToObject(line, kkifm924FileUtil, kkifm924RecordCnt);
						
						// エラーチェック
						HashMap<String, Object> errMap = errCheck(recordMap);
						
						if (errMap != null && !("".equals(errMap)))
						{
							createKkifm925(readMap, (ErrCdEnum)errMap.get("err_nm"));
							checkErrFlg = true;
							continue;
						}
						
						String consentStcNyo = recordMap.getString(JBSbatKKIFM924.CONSNT_STC_NYO);
						
						// 入力値チェック (コンセント設置内容)
						if (getCdNmKanri(CD_SBT_CNSENT_STC_NYO, consentStcNyo))
						{
							createKkifm925(readMap, ErrCdEnum.E050);
							checkErrFlg = true;
							continue;
						}
						//ANK-4244-00-00 ADD START
						//IT1-2022-0000070 DEL START
//						//コンセント設置内容
//						String consntStcNyoCd = "";
						//IT1-2022-0000070 DEL END
						//マンション物件番号
						String manSbNo = "";
						//回線場所連番
						String kisnPlcRenban = "";
						//ANK-4244-00-00 ADD END
						
						try
						{
							// サービス契約回線内訳スキーマの更新処理
							JBSbatCommonDBInterface kojiMap = null;
							JBSbatCommonDBInterface svkeiMap = null;
							String[] kojiParam = new String[1];
							String[] svkeiParam = new String[1];
							
							// 入力ファイルから申込書番号(工事案件番号)を取得
							kojiParam[0] = recordMap.getString(JBSbatKKIFM924.MSKMSHO_NO);
							
							// 申込書番号(工事案件番号)から、サービス契約回線内訳番号を検索
							executeKU_T_SVKEI_KOJIAK_KK_SELECT_021(kojiParam);
							kojiMap = db_KU_T_SVKEI_KOJIAK.selectNext();
							
							// 更新対象チェック (サービス契約回線内訳)
							if (kojiMap == null || "".equals(kojiMap))
							{
								createKkifm925(readMap, ErrCdEnum.E040);
								checkErrFlg = true;
								continue;
							}
							
							// サービス契約回線内訳番号を取得
							String svkeiKaisenUwNo = kojiMap.getString(JBSbatKU_T_SVKEI_KOJIAK.SVC_KEI_KAISEN_UCWK_NO);
							
							// サービス契約回線内訳スキーマのカレントレコードを取得
							svkeiParam[0] = svkeiKaisenUwNo;
							executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_063(svkeiParam);
							svkeiMap = db_KK_T_SVKEI_KAISEN_UW.selectNext();
							
							// 更新対象チェック (サービス契約回線内訳)
							if (svkeiMap == null || "".equals(svkeiMap))
							{
								createKkifm925(readMap, ErrCdEnum.E040);
								checkErrFlg = true;
								continue;
							}
							
							//ANK-4244-00-00 MOD START
//							//カレントレコードのコンセント設置内容コードを取得
//							String consntStcNyoCd = svkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.CONSNT_STC_NYO_CD);
							//IT1-2022-0000070 MOD START
//							consntStcNyoCd= svkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.CONSNT_STC_NYO_CD);
							String consntStcNyoCd = svkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.CONSNT_STC_NYO_CD);
							//IT1-2022-0000070 MOD END
							//ANK-4244-00-00 MOD END
							
							// 未設置連携チェック (コンセント設置内容)
							if ((!(JKKStrConst.CONSNT_STC_NYO_MISTC.equals (consntStcNyoCd)) && !(isNullSpace(consntStcNyoCd))) && JKKStrConst.CONSNT_STC_NYO_MISTC.equals(consentStcNyo))
							{
								createKkifm925(readMap, ErrCdEnum.E070);
								checkErrFlg = true;
								continue;
							}
							
							// システム日付
							String sysDate = JCCBatCommon.getSysDateTimeStamp();
							// 履歴更新処理を行います。
							insertSvkeiKaisenUw(recordMap, svkeiMap, sysDate);
							
							//ANK-4244-00-00 ADD START
							//サービス契約回線内訳スキーマの「マンション物件番号」を取得
							manSbNo = svkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.MANSION_BUKKEN_NO);
							//サービス契約回線内訳スキーマの「回線場所連番」を取得
							kisnPlcRenban = svkeiMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_RENBAN);
							
							//マンション物件番号または、回線場所連番がない場合MANMOS側の更新を行わない
							if (JKKStringUtil.isNullBlank(manSbNo) || JKKStringUtil.isNullBlank(kisnPlcRenban))
							{
								//ローゼット設置状態一括取込結果リスト出力(正常)
								createKkifm925(readMap, null);
								continue;
							}
							//ANK-4244-00-00 ADD END
						}
						catch(Exception e)
						{
							createKkifm925(readMap, ErrCdEnum.E060);
							checkErrFlg = true;
							continue;
						}						
						//ANK-4244-00-00 ADD START
						try
						{						
							//サービス契約回線内訳スキーマの「マンション物件番号」より「P-ID」を取得する
							JBSbatCommonDBInterface manMap = null;
							executeKK_T_MANSION_BUKKEN_KK_SELECT_005(manSbNo);
							manMap = db_KK_T_MANSION_BUKKEN.selectNext();
							String pid = manMap.getString(JBSbatKK_T_OWNR_KEI.PID);
							
							//PIDが取得できなかった場合、MANMOS側の更新を行わない
							if (!JKKStringUtil.isNullBlank(pid))
							{
								//CCマップ
								HashMap<String, Object> ccMap = null;
								//サービス呼び出し結果格納マップ
								HashMap<String,Object> outputMap = null;
								
								// サービスを呼び出すためにCCのマップを作成
								//IT1-2022-0000070 MOD START
//								ccMap = createCCMap(kisnPlcRenban, pid, consntStcNyoCd);
								ccMap = createCCMap(kisnPlcRenban, pid, consentStcNyo);
								//IT1-2022-0000070 MOD END
								// サービスを呼び出す
								outputMap = invokeServiceKKSV1006(ccMap);
								
								//サービス実行結果からエラーコードを取得
								HashMap<?, ?> paramMap = (HashMap<?, ?>)outputMap.get(KKSV100601CC);
								
								//エラーコードを取得
								String errCode = (String) paramMap.get(ERRCODE);
								
								//エラーコードの有無チェック
								if (!JKKStringUtil.isNullBlank(errCode))
								{
									createKkifm925MNMSErr(readMap, paramMap, ccMap);
									continue;
								}
							}
						}
						catch(Exception e)
						{
							createKkifm925(readMap, ErrCdEnum.E080);
							checkErrFlg = true;
							continue;
						}
						//ANK-4244-00-00 ADD END
						
						//ローゼット設置状態一括取込結果リスト出力(正常)
						createKkifm925(readMap, null);
						
					}
				}

				// ローゼット設置状態一括取込結果リストを閉じる
				JKKBatCommon.closeBusinessFileUtil(kkifm925FileObj);

				// 電子ファイル管理・ダウンロードファイル管理に登録
				addEfileAndDlFileKanri(kkifm925FilePath, FILE_NAME_TEMPLATE_KKIFM925, TRN_KANRI_NO_KKIFM924, String.valueOf(kkifm925RecordCnt));

				// 一時ファイルの削除
				deleteTmpFile(kkifm925FilePath);

				// ディレイド処理依頼の更新
				updateDelaydTrnReq(shoriIrai, checkErrFlg);

				// ディレイド処理依頼1件を処理する毎にコミット
				commit();
			}
			catch (Exception e)
			{
				// 想定外のエラー発生時は、ロールバック後にディレイド処理依頼だけをエラー更新してコミット。
				commonItem.getConnection().rollback();
				JCCBatCommon.updateShoriIraiResult(
						commonItem, (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO), JKKStrConst.DLYD_TRN_RSLT_CD_SYS_ERR, null);
				commit();

				// エラー通知は必要なので例外はそのまま投げる
				throw e;
			}
		}

		return null;
		/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 
	
	/**
	 * コード名称管理より該当のコード種別のレコードを取得します。
	 * <br>
	 * @param cdSbtCd コード種別
	 * @throws Exception 
	 */
	private boolean getCdNmKanri(String cdSbtCd, String consentStcNyo) throws Exception {
		
		Object[] prm = new Object[]{cdSbtCd, consentStcNyo, super.onlineOpeDate, super.onlineOpeDate};
		executeZM_M_CD_NM_KANRI_KK_SELECT_001(prm);
		
		// 取得したコード名称管理の内容をハッシュテーブルに格納する
		JBSbatCommonDBInterface adchgMap = new JBSbatCommonDBInterface();
		//コード名称管理を取得できた場合
		if( (adchgMap = db_ZM_M_CD_NM_KANRI.selectNext() ) != null )
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 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 executeZM_M_CD_NM_KANRI_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_KK_SELECT_001);
	}
	
	/**
	 * SQLKEY(KK_SELECT_021)で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_021(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_021);
	}
	
	/**
	 * SQLKEY(KK_SELECT_063)で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_063(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_SVKEI_KAISEN_UW.selectBySqlDefine(paramList, KK_T_SVKEI_KAISEN_UW_KK_SELECT_063);
	}
	
	//ANK-4244-00-00 ADD START
	/**
	 * 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　Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MANSION_BUKKEN_KK_SELECT_005(Object param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param.toString());

		// DBアクセスを実行します
		db_KK_T_MANSION_BUKKEN.selectBySqlDefine(paramList, KK_T_MANSION_BUKKEN_KK_SELECT_005);
	}

	/**
	 * ＣＣ向けのマップを作成する。
	 * @param kisnPlcRenban 回線場所連番
	 * @param pid PID
	 * @param consntStcNyo コンセント設置内容
	 * @return ccMap 
	 * @throws Exception
	 */
	private HashMap<String, Object> createCCMap(String kisnPlcRenban, String pid, String consntStcNyo) throws Exception
	{
		HashMap<String, Object> ccMap = new HashMap<String, Object>();

		ccMap.put(PARAM_KAISEN_PLACE_RENBAN, kisnPlcRenban);
		ccMap.put(PARAM_PID, pid);
		ccMap.put(PARAM_CONSNT_STC_NYO, consntStcNyo);
		
		return ccMap;
	}
	/**
	 * サービス(KKSV1006)を呼び出す
	 * <br>
	 * @param ccMap 
	 * @return outputMap サービス実行結果
	 * @throws Exception 
	 */
	private HashMap<String, Object> invokeServiceKKSV1006(HashMap<String, Object> ccMap) 
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// MANMOSコンセント設置内容更新依頼CC呼び出し
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, USECASE_ID);
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, OPERATION_ID);

		// サービスに渡す業務データを格納するMAPです。
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		// inputMapにCCに必要な情報をセットする
		inputMap.put(KKSV100601CC, ccMap);
		
		// サービスの処理結果が格納されるMAPを生成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// サービスを呼び出す
		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);

		// 処理結果を返却する
		return outputMap;
	}
	//ANK-4244-00-00 ADD END
	/**
	 * サービス契約回線内訳に登録するデータの準備
	 * <br>
	 * @param record_Map
	 * @param db_map
	 * @param sys_dtm
	 * @throws Exception
	 */
	private void insertSvkeiKaisenUw(JBSbatServiceInterfaceMap record_Map, JBSbatCommonDBInterface db_map, String sys_dtm) throws Exception
	{
		// 更新対象項目の設定
		HashMap<String, String> upd_Map = updTrgtKmkSet(record_Map);
		//ANK-4244-00-00 MOD START
//		String[] value = new String[83];
		//ANK-4315-00-00 MOD START
		//String[] value = new String[84];
		//ANK-4244-00-00 MOD END
		String[] value = new String[85];
		//ANK-4315-00-00 MOD END
		
		value[0]  =  db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SVC_KEI_KAISEN_UCWK_NO);
		value[1]  = sys_dtm;
		value[2]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SVC_KEI_KAISEN_UCWK_STAT);
		value[3]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.MSKM_DTL_NO);
		value[4]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_AD_MI_FIX_FLG);
		value[5]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_AD_MI_FIX_RLS_YMD);
		value[6]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLC_KSH_AD_SAI_FLG);
		value[7]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.CUST_SKK_AD_MI_FIX_FLG);
		value[8]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.CUST_SOS_USE_UM);
		value[9]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_CD);
		value[10]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.MANSION_BUKKEN_NO);
		value[11]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_TELNO);
		value[12]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLC_KANA);
		value[13]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AD_CD);
		value[14]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD);
		value[15]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM);
		value[16]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM);
		value[17]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM);
		value[18]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM);
		value[19]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO);
		value[20]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM);
		value[21]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM);
		value[22]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SKS_YO_KISN_PLACE_AD_RM_NO);
		value[23]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_NO);
		value[24]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_KKK_SEIRI_CHU_FLG);
		value[25]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_HSK_CD_1);
		value[26]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_HSK_CD_2);
		value[27]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_HSK_MEMO);
		value[28]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.USE_STAYMD);
		value[29]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.AD_FORM_CD);
		value[30]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SHUNKO_RSV_YMD);
		value[31]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.EPOWER_SODEN_RSV_YMD);
		value[32]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.NYUKYO_RSV_YMD);
		value[33]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.HIKIWATASHI_RSV_YMD);
		value[34]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.HIKKOSHI_RSV_YMD);
		value[35]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SKS_SHS_AD_CHG_UM);
		value[36]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SKS_SHS_AD_CHG_KIBO_YMD);
		value[37]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KSHAD_CHG_UM);
		value[38]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KSHAD_CHG_KIBO_YMD);
		value[39]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.XZAHYO);
		value[40]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.YZAHYO);
		value[41]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.LGTD);
		value[42]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.LTTD);
		value[43]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.ZAHYO_HOSEI_UM);
		value[44]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.TV_KOBET_TAIO_CD);
		value[45]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.TV_ANTENNA_UM);
		value[46]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.DIRECTION_CD_1);
		value[47]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.DIRECTION_CD_2);
		value[48]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KODATE_KCKU_FLR_CNT_CD);
		value[49]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SHUGJ_NYUKYO_FLR_CNT_CD);
		value[50]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.PON_SBT_CD);
		value[51]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.LOOPBACK_TEST_FIN_YMD);
		value[52]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_TK_COMP_CD);
		value[53]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.VDSL_USE_TEL_KISN_SBT_CD);
		value[54]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.VDSL_USE_DKSN_SWCH_RSV_YMD);
		value[55]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.VDSL_USE_TG_DBKSN_SBT_CD);
		value[56]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.VDSL_USE_TG_TELNO);
		value[57]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.TEL_BAS_HOST_ID);
		value[58]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.TEL_VLAN_ID);
		value[59]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.VLAN_ID_FIX_FLG);
		value[60]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.TEL_VLAN_ID_TRKM_YMD);
		value[61]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.IDO_DIV);
		value[62]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.HIKKOSHI_YMD);
		value[63]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.GAITO_AREA_SVC_STAYMD);
		value[64]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.TEKKYO_KOJI_KIBO_YMD);
		value[65]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.USE_ENDYMD);
		value[66]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KITEN_HDSHO_CD);
		value[67]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SHYAKK_CD);
		value[68]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SVC_CANCEL_YMD);
		value[69]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SVC_CANCEL_RSN_CD);
		value[70]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.SVKEI_KISN_UW_CNCL_CL_YMD);
		value[71]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KEPCO_BUSIOFFICE_CD);
		value[72]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_TOU_INFO);
		value[73]  = upd_Map.get("rozettStcStatCd");
		value[74]  = upd_Map.get("consntStcNyoCd");
		value[75]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.TNMT_STC_FLR_CD);
		value[76]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_SETPLC_1_CD);
		value[77]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_SETPLC_2_CD);
		value[78]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_STC_KASHO_CD);
		value[79]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_SETPLC_1_OTR);
		value[80]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_SETPLC_2_OTR);
		value[81]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_STC_KASHO_OTR);
		value[82]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.TANMT_STC_MEN_CD);
		//ANK-4244-00-00 ADD START
		value[83]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_RENBAN);
		//ANK-4244-00-00 ADD END
		//ANK-4315-00-00 ADD START
		value[84]  = db_map.getString(JBSbatKK_T_SVKEI_KAISEN_UW.HGW_KKN_FFG);
		//ANK-4315-00-00 ADD END
		executeKK_T_SVKEI_KAISEN_UW_PKINSERT(value);
	}
	
	/**
	 * 更新対象項目を設定する
	 * <br>
	 * @param record_Map
	 * @return updTrgtMap
	 * @throws Exception
	 */
	private HashMap<String, String> updTrgtKmkSet(JBSbatServiceInterfaceMap record_Map) throws Exception
	{
		HashMap<String, String> updTrgtMap = new HashMap<String, String>();
		String consntStcNyo = record_Map.getString(JBSbatKKIFM924.CONSNT_STC_NYO);
		
		// 更新対象項目(ローゼット設置状態コード, コンセント設置内容コード)の設定
		// コンセント設置内容"00" → ローゼット設置状態コード"0", コンセント設置内容コード"00"
		if (JKKStrConst.CONSNT_STC_NYO_MISTC.equals(consntStcNyo))
		{
			updTrgtMap.put("rozettStcStatCd", "0");
			updTrgtMap.put("consntStcNyoCd", "00");
		}
		// コンセント設置内容"10" → ローゼット設置状態コード"1", コンセント設置内容コード"10"
		else if (JKKStrConst.CONSNT_STC_NYO_ROZETT.equals(consntStcNyo))
		{
			updTrgtMap.put("rozettStcStatCd", "1");
			updTrgtMap.put("consntStcNyoCd", "10");
		}
		// コンセント設置内容"20" → ローゼット設置状態コード"1", コンセント設置内容コード"20"
		else if (JKKStrConst.CONSNT_STC_NYO_1REN.equals(consntStcNyo))
		{
			updTrgtMap.put("rozettStcStatCd", "1");
			updTrgtMap.put("consntStcNyoCd", "20");
		}
		// コンセント設置内容"30" → ローゼット設置状態コード"1", コンセント設置内容コード"30"
		else if (JKKStrConst.CONSNT_STC_NYO_2REN.equals(consntStcNyo))
		{
			updTrgtMap.put("rozettStcStatCd", "1");
			updTrgtMap.put("consntStcNyoCd", "30");
		}
		// コンセント設置内容"40" → ローゼット設置状態コード"1", コンセント設置内容コード"40"
		else if (JKKStrConst.CONSNT_STC_NYO_3REN.equals(consntStcNyo))
		{
			updTrgtMap.put("rozettStcStatCd", "1");
			updTrgtMap.put("consntStcNyoCd", "40");
		}
		
		return updTrgtMap;
	}
	
	/**
	 * サービス契約回線内訳に登録します
	 * <br>
	 * @param setParam
	 * @throws Exception
	 */
	private void executeKK_T_SVKEI_KAISEN_UW_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.SVC_KEI_KAISEN_UCWK_NO,setParam[0] );
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.GENE_ADD_DTM,setParam[1]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.SVC_KEI_KAISEN_UCWK_STAT,setParam[2]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.MSKM_DTL_NO,setParam[3]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_AD_MI_FIX_FLG,setParam[4]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_AD_MI_FIX_RLS_YMD,setParam[5]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLC_KSH_AD_SAI_FLG,setParam[6]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.CUST_SKK_AD_MI_FIX_FLG,setParam[7]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.CUST_SOS_USE_UM,setParam[8]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_CD,setParam[9]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.MANSION_BUKKEN_NO,setParam[10]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_TELNO,setParam[11]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLC_KANA,setParam[12]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AD_CD,setParam[13]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_PCD,setParam[14]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_STATE_NM,setParam[15]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_CITY_NM,setParam[16]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_OAZTSU_NM,setParam[17]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_AZCHO_NM,setParam[18]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_BNCHIGO,setParam[19]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRTTM,setParam[20]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_ADRRM,setParam[21]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.SKS_YO_KISN_PLACE_AD_RM_NO,setParam[22]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_NO,setParam[23]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_KKK_SEIRI_CHU_FLG,setParam[24]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_HSK_CD_1,setParam[25]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_HSK_CD_2,setParam[26]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_PLC_HSK_MEMO,setParam[27]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.USE_STAYMD,setParam[28]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.AD_FORM_CD,setParam[29]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.SHUNKO_RSV_YMD,setParam[30]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.EPOWER_SODEN_RSV_YMD,setParam[31]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.NYUKYO_RSV_YMD,setParam[32]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.HIKIWATASHI_RSV_YMD,setParam[33]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.HIKKOSHI_RSV_YMD,setParam[34]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.SKS_SHS_AD_CHG_UM,setParam[35]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.SKS_SHS_AD_CHG_KIBO_YMD,setParam[36]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KSHAD_CHG_UM,setParam[37]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KSHAD_CHG_KIBO_YMD,setParam[38]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.XZAHYO,setParam[39]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.YZAHYO,setParam[40]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.LGTD,setParam[41]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.LTTD,setParam[42]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.ZAHYO_HOSEI_UM,setParam[43]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.TV_KOBET_TAIO_CD,setParam[44]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.TV_ANTENNA_UM,setParam[45]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.DIRECTION_CD_1,setParam[46]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.DIRECTION_CD_2,setParam[47]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KODATE_KCKU_FLR_CNT_CD,setParam[48]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.SHUGJ_NYUKYO_FLR_CNT_CD,setParam[49]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.PON_SBT_CD,setParam[50]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.LOOPBACK_TEST_FIN_YMD,setParam[51]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_TK_COMP_CD,setParam[52]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.VDSL_USE_TEL_KISN_SBT_CD,setParam[53]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.VDSL_USE_DKSN_SWCH_RSV_YMD,setParam[54]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.VDSL_USE_TG_DBKSN_SBT_CD,setParam[55]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.VDSL_USE_TG_TELNO,setParam[56]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.TEL_BAS_HOST_ID,setParam[57]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.TEL_VLAN_ID,setParam[58]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.VLAN_ID_FIX_FLG,setParam[59]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.TEL_VLAN_ID_TRKM_YMD,setParam[60]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.IDO_DIV,setParam[61]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.HIKKOSHI_YMD,setParam[62]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.GAITO_AREA_SVC_STAYMD,setParam[63]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.TEKKYO_KOJI_KIBO_YMD,setParam[64]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.USE_ENDYMD,setParam[65]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KITEN_HDSHO_CD,setParam[66]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.SHYAKK_CD,setParam[67]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.SVC_CANCEL_YMD,setParam[68]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.SVC_CANCEL_RSN_CD,setParam[69]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.SVKEI_KISN_UW_CNCL_CL_YMD,setParam[70]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KEPCO_BUSIOFFICE_CD,setParam[71]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_TOU_INFO,setParam[72]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.ROZETT_STC_STAT_CD,setParam[73]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.CONSNT_STC_NYO_CD,setParam[74]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.TNMT_STC_FLR_CD,setParam[75]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_SETPLC_1_CD,setParam[76]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_SETPLC_2_CD,setParam[77]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_STC_KASHO_CD,setParam[78]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_SETPLC_1_OTR,setParam[79]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_SETPLC_2_OTR,setParam[80]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KISN_TD_STC_KASHO_OTR,setParam[81]);
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.TANMT_STC_MEN_CD,setParam[82]);
		//ANK-4244-00-00 ADD START
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.KAISEN_PLACE_RENBAN,setParam[83]);
		//ANK-4244-00-00 ADD END
		//ANK-4315-00-00 ADD START
		setMap.setValue(JBSbatKK_T_SVKEI_KAISEN_UW.HGW_KKN_FFG,setParam[84]);
		//ANK-4315-00-00 ADD END
		
		// 以下はフレームワークで自動設定
		// 登録年月日時分秒 登録オペレータアカウント 更新年月日時分秒 更新オペレータアカウント 無効フラグ
		// 登録運用年月日 登録処理ID 更新運用年月日 更新処理ID
		
		// DBアクセスを実行します
		db_KK_T_SVKEI_KAISEN_UW.insertByPrimaryKeys(setMap);
	}

	/**
	 * 電子ファイル管理・ダウンロードファイル管理に登録します。
	 * <br>
	 * @param tmpFilePath
	 * @param fileNameTemplate
	 * @param trnKanriNo
	 * @param recordCount
	 * @throws Exception
	 */
	private void addEfileAndDlFileKanri(String tmpFilePath, String fileNameTemplate, String trnKanriNo, String recordCount) throws Exception
	{
		// 電子ファイル管理登録処理
		JBSbatCommonItem arg0 = commonItem;								// 業務共通電文
		String arg1 = FILE_CD;											// ファイルコード
		String arg2 = tmpFilePath;										// ファイルパス
		String arg3 = JBSbatDateUtil.adjustMonth(super.opeDate, 1);		// ファイル削除年月日（運用日付 + 1ヶ月）

		// 電子ファイル管理登録処理
		String[] rc = JCCBatCommon.createDenshiFile(arg0, arg1, arg2, arg3);

		// ログ出力
		super.logPrint.printDebugLog("電子ファイル管理番号(" + rc[0] +  ")、世代登録年月日時分秒(" + rc[1] + ")");

		// ファイル名
		String fileName = fileNameTemplate .replaceAll(FILE_TIMESTAMP_FORMAT, JCCBatCommon.getSysDateTime());

		// ダウンロードファイル管理登録処理
		String[] insertSetParam2 = new String[5];
		insertSetParam2[0] = trnKanriNo;								// 処理管理番号
		insertSetParam2[1] = fileName;									// ファイル名
		insertSetParam2[2] = recordCount;								// データ件数
		insertSetParam2[3] = rc[0];										// 電子ファイル管理番号
		insertSetParam2[4] = rc[1];										// 世代登録年月日時分秒
		executeZM_T_DL_FILE_KANRI_KK_INSERT_002(insertSetParam2);
	}

	/**
	 * 一時ファイルを削除します。
	 * <br>
	 * @param tmpFilePath 一時ファイルのファイルパス
	 */
	private void deleteTmpFile(String tmpFilePath)
	{
		File tmpFile = new File(tmpFilePath);
		if (tmpFile.exists())
		{
			tmpFile.delete();
		}
	}

	/**
	 * ディレイド処理依頼を更新します。
	 * <br>
	 * @param shoriIrai
	 * @param checkErrFlg
	 */
	private void updateDelaydTrnReq(HashMap<String, Object> shoriIrai, boolean checkErrFlg)
	{
		// ディレイド処理依頼番号
		String shoriIraiNo = (String)shoriIrai.get(JBSbatCC_T_DLYD_TRN_REQ.DLYD_TRN_REQ_NO);

		// ディレイド処理依頼結果更新
		if (checkErrFlg)
		{
			// チェックエラーフラグがtrueの場合
			JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, JKKStrConst.DLYD_TRN_RSLT_CD_APP_ERR, null);
		}
		else
		{
			// チェックエラーフラグがfalseの場合
			JCCbatShoriIraiUtil.updateShoriIraiResult(commonItem, shoriIraiNo, JKKStrConst.DLYD_TRN_RSLT_CD_COMPLETE, null);
		}
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_CD_NM_KANRI.close();
		db_KK_T_SVKEI_KAISEN_UW.close();
		db_KU_T_SVKEI_KOJIAK.close();
		db_ZM_T_DL_FILE_KANRI.close();
		db_ZM_T_DATAIKTTRK_KNRI.close();
			/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * SQLKEY(KK_INSERT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	処理管理番号
	 *		 	ファイル名
	 *		 	データ件数
	 *		 	電子ファイル管理番号
	 *		 	世代登録年月日時分秒
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_T_DL_FILE_KANRI_KK_INSERT_002(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_ZM_T_DL_FILE_KANRI.executeBySqlDefine(paramList, ZM_T_DL_FILE_KANRI_KK_INSERT_002);
	}

	/**
	 * ローゼット設置状態一括取込結果リストを出力する。
	 * <br>
	 * @param recordMap 1レコード分の情報
	 * @param errCdEnum エラーコード
	 */
	private void createKkifm925(HashMap<String, String> readMap, ErrCdEnum errCdEnum) throws Exception
	{
		ArrayList<String> outputInfo = new ArrayList<String>();

		// 項目値
		if (errCdEnum != null)
		{
			outputInfo.add(readMap.get(JBSbatKKIFM924.UK_NO));				// 受付番号
			outputInfo.add(readMap.get(JBSbatKKIFM924.MSKMSHO_NO));			// 申込書番号
			outputInfo.add(readMap.get(JBSbatKKIFM924.CONSNT_STC_NYO));		// コンセント設置内容
			outputInfo.add("ＮＧ");											// 登録結果
			outputInfo.add(errCdEnum.message);								// 結果内容
		}
		else
		{
			outputInfo.add(readMap.get(JBSbatKKIFM924.UK_NO));				// 受付番号
			outputInfo.add(readMap.get(JBSbatKKIFM924.MSKMSHO_NO));			// 申込書番号
			outputInfo.add(readMap.get(JBSbatKKIFM924.CONSNT_STC_NYO));		// コンセント設置内容
			outputInfo.add("ＯＫ");												// 登録結果
			outputInfo.add("");													// 結果内容
		}

		// 情報を格納
		JKKBatCommon.printDoubleQuoteBusinessFileUtil(kkifm925FileObj, outputInfo);

		// カウントアップ
		kkifm925RecordCnt++;
	}
	
	//ANK-4244-00-00 ADD START
	/**
	 *  MANMOSコンセント設置内容更新結果リストを出力する。
	 * @param readMap 1レコード分の情報
	 * @param outputMap サービス実行結果
	 * @param ccMap 
	 * @throws Exception
	 */
	private void createKkifm925MNMSErr(HashMap<String, String> readMap, HashMap<?, ?> paramMap, HashMap<String, Object> ccMap) throws Exception
	{
		ArrayList<String> outputInfo = new ArrayList<String>();

		// 項目値
		outputInfo.add(readMap.get(JBSbatKKIFM924.UK_NO));				// 受付番号
		outputInfo.add(readMap.get(JBSbatKKIFM924.MSKMSHO_NO));			// 申込書番号
		outputInfo.add(readMap.get(JBSbatKKIFM924.CONSNT_STC_NYO));		// コンセント設置内容
		outputInfo.add("ＮＧ");											// 登録結果
		outputInfo.add("MANMOS連携時エラー（" + paramMap.get(APIID) + "/" +
				paramMap.get(ERRCODE)+ "/" + ccMap.get(PARAM_PID)+ "/" + ccMap.get(PARAM_KAISEN_PLACE_RENBAN) + ")");	// 結果内容

		// 情報を格納
		JKKBatCommon.printDoubleQuoteBusinessFileUtil(kkifm925FileObj, outputInfo);

		// カウントアップ
		kkifm925RecordCnt++;
	}
	//ANK-4244-00-00 ADD END
	
	/**
	 * 入力ファイルのエラーチェックを行う
	 * 
	 * @param recordMap 入力ファイルが格納されたMap
	 * @return resultMap エラーコード
	 * @throws Exception
	 */
	private HashMap<String, Object> errCheck(JBSbatServiceInterfaceMap recordMap) throws Exception
	{
		String strValue = null;
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		
		//項目数チェック
		if (recordMap.isInputErrorFlg())
		{
			resultMap.put("err_nm", ErrCdEnum.E010);
			return resultMap;
		}
		
		// ********** 申込書番号チェック **********
		strValue = (String)recordMap.get(JBSbatKKIFM924.MSKMSHO_NO);
		
		// 必須チェック(申込書番号)
		if (isNullSpace(strValue))
		{
			resultMap.put("err_nm", ErrCdEnum.E020);
			return resultMap;
		}
		
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			resultMap.put("err_nm", ErrCdEnum.E010);
			return resultMap;
		}
		
		// ********** コンセント設置内容 **********
		strValue = (String)recordMap.get(JBSbatKKIFM924.CONSNT_STC_NYO);
		
		// 必須チェック(コンセント設置内容)
		if (isNullSpace(strValue))
		{
			resultMap.put("err_nm", ErrCdEnum.E030);
			return resultMap;
		}
		
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			resultMap.put("err_nm", ErrCdEnum.E010);
			return resultMap;
		}
		
		return null;
	}
	
	
	/**
	 * null又は半角スペースの場合、trueを返却する
	 * 
	 * @param str
	 *            検査対象文字列
	 * @return true:null、又は半角スペース／false:左記以外
	 */
	private boolean isNullSpace(String str)
	{
		if (str == null || "".equals(str.trim()))
		{
			return true;
		}
		return false;
	}
	
	/**
	 * 引数で指定されたCSVファイルの一行データをMapにして返却する
	 * ダブルクォーテーションで囲まれている場合は、削除した文字列に変換する。
	 * @param commonItem 共通情報
	 * @param lineData 一行分のCSVデータ
	 * @return Map<String> 項目ごとにCSVデータを格納したMap
	 * @throws Exception 例外
	 **/
	private HashMap<String, String> convNonQuateStringToList(String lineData) throws Exception
	{

		// CSV指定ファイル読込み
		// 戻り値格納用Map
		HashMap<String, String> resultMap = new HashMap<String, String>();

		try
		{
			String[] result = lineData.split(",");
			
			for (int i = 0; i < result.length; i++)
			{
				String colm = result[i];
	
				// 先頭 または 最後がダブルクォートの場合 
				if (colm.startsWith(KAKOIMOJI))
				{
					colm = colm.substring(1);
				}
				if (colm.endsWith(KAKOIMOJI))
				{
					colm = colm.substring(0, colm.length() - 1);
				}
				resultMap.put(ROZETT_IKT_TRKM_ITEM.get(String.valueOf(i)), colm);
			}
		}
		catch (NoSuchElementException e)
		{
			// 例外処理
			commonItem.getLogPrint().printDebugLog("JBSbatKKRozettStcStatIktTrkm.convNonQuateStringToList NoSuchElementException発生:");
			throw e;
		}

		// 1行分のデータを格納したMapを返却
		return resultMap;
	}
}
