/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKojiFinOptyKikiRyuyo
*	ソースファイル名	：JBSbatKKKojiFinOptyKikiRyuyo.java
*	作成者				：富士通
*	作成日				：2017年11月06日
*＜機能概要＞
*　工事完了契機機器流用部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v31.00.00	2017/11/10	FJ)謝		【ANK-3136-00-00】OPMSハードウエア保守切れ対応 新規作成
*	v31.00.01	2018/07/18	FJ)謝		【IT2-2018-0000066】障害対応
*	v31.00.02   2018/08/13  FJ)王       【IT1-2018-0000145】障害対応
*
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM768;
import eo.business.util.file.JBSbatKKIFM769;
import eo.business.util.table.JBSbatDK_T_HMPIN_KIKI;
import eo.business.util.table.JBSbatKK_T_KKTK_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_SVKEI_KOJIAK;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JPCModelConstant;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JCCBatchEsbInterface;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKKojiFinOptyKikiRyuyo extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(工事案件)*/
	private static final String D_TBL_NAME_KU_T_KOJIAK = "KU_T_KOJIAK";

	/** テーブル(サービス契約＿工事案件)*/
	private static final String D_TBL_NAME_KU_T_SVKEI_KOJIAK = "KU_T_SVKEI_KOJIAK";

	/** テーブル(返品機器)*/
	private static final String D_TBL_NAME_DK_T_HMPIN_KIKI = "DK_T_HMPIN_KIKI";

	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

	/** テーブル(サービス契約回線内訳)*/
	private static final String D_TBL_NAME_KK_T_SVKEI_KAISEN_UW = "KK_T_SVKEI_KAISEN_UW";

// IT1-2018-0000145 ADD START
	/** テーブル(課金先)*/
	private static final String D_TBL_NAME_KK_T_KAKINS = "KK_T_KAKINS";
// IT1-2018-0000145 ADD END
	/** SQL定義キー(KK_SELECT_021)*/
	private static final String KU_T_SVKEI_KOJIAK_KK_SELECT_021 = "KK_SELECT_021";

	/** SQL定義キー(KK_SELECT_012)*/
	private static final String DK_T_HMPIN_KIKI_KK_SELECT_012 = "KK_SELECT_012";

	/** SQL定義キー(KK_SELECT_247)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_247 = "KK_SELECT_247";

	/** SQL定義キー(KK_UPDATE_011)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_UPDATE_011 = "KK_UPDATE_011";

	/** SQL定義キー(KK_SELECT_057)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_057 = "KK_SELECT_057";

// IT2-2018-0000066 DEL START
//	/** SQL定義キー(KK_UPDATE_005)*/
//	private static final String KK_T_SVKEI_KAISEN_UW_KK_UPDATE_005 = "KK_UPDATE_005";
// IT2-2018-0000066 DEL END

// IT1-2018-0000145 ADD START
	/** SQL定義キー(KK_UPDATE_003)*/
	private static final String KK_T_KAKINS_KK_UPDATE_003 = "KK_UPDATE_003";
// IT1-2018-0000145 ADD END
	/** テーブルアクセスクラス(工事案件)*/
	private JBSbatSQLAccess db_KU_T_KOJIAK = null;

	/** テーブルアクセスクラス(サービス契約＿工事案件)*/
	private JBSbatSQLAccess db_KU_T_SVKEI_KOJIAK = null;

	/** テーブルアクセスクラス(サービス契約＿工事案件)*/
	private JBSbatSQLAccess db_KU_T_SVKEI_KOJIAK_2 = null;

	/** テーブルアクセスクラス(返品機器)*/
	private JBSbatSQLAccess db_DK_T_HMPIN_KIKI = null;

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;

	/** テーブルアクセスクラス(サービス契約回線内訳)*/
	private JBSbatSQLAccess db_KK_T_SVKEI_KAISEN_UW = null;
// IT1-2018-0000145 ADD START
	/** テーブルアクセスクラス(課金先)*/
	private JBSbatSQLAccess db_KK_T_KAKINS = null;
// IT1-2018-0000145 ADD END
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	


	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KU_T_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_KOJIAK);
		db_KU_T_SVKEI_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_SVKEI_KOJIAK);
		db_KU_T_SVKEI_KOJIAK_2 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_SVKEI_KOJIAK);
		db_DK_T_HMPIN_KIKI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_HMPIN_KIKI);
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		db_KK_T_SVKEI_KAISEN_UW = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEI_KAISEN_UW);
// IT1-2018-0000145 ADD START
		db_KK_T_KAKINS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAKINS);
// IT1-2018-0000145 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 出力情報
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		// 流用先サービス契約番号
		String sakiSvcKeiNo = inMap.getString(JBSbatKKIFM768.SAKI_SVC_KEI_NO);
		// 流用先工事案件番号
		String sakiKojiakNo = inMap.getString(JBSbatKKIFM768.SAKI_KOJIAK_NO);
		// 流用先機器提供サービス契約番号
		String sakiKktkSvcKeiNo = inMap.getString(JBSbatKKIFM768.SAKI_KKTK_SVC_KEI_NO);
		// 流用元工事案件番号
		String motoKojiakNo = inMap.getString(JBSbatKKIFM768.MOTO_KOJIAK_NO);
		// 流用元機器提供サービス契約番号
		String motoKktkSvcKeiNo = inMap.getString(JBSbatKKIFM768.MOTO_KKTK_SVC_KEI_NO);
		// 流用元機器変更番号
		String motoKikiChgNo = inMap.getString(JBSbatKKIFM768.MOTO_KIKI_CHG_NO);
		// 流用元宅内機器型式コード
		String motoTaknkikiModelCd = inMap.getString(JBSbatKKIFM768.MOTO_TAKNKIKI_MODEL_CD);
		// 流用元機器製造番号
		String motoKikiSeizoNo = inMap.getString(JBSbatKKIFM768.MOTO_KIKI_SEIZO_NO);
		// 流用元サービス契約番号
		String motoSvcKeiNo = "";
		// 流用元サービス契約回線内訳番号
		String motoSvcKeiKaisenUcwkNo = "";
		// 流用先サービス契約回線内訳番号
		String sakiSvcKeiKaisenUcwkNo = "";
		// 流用元返品機器番号
		String motoHmpinKikiNo = "";
		// 流用元更新年月日時分秒（返品機器）
		String motoHmpinUpdDtm = "";
		// 流用先機器申込明細番号（最小世代）
		String sakiMskmDtlNo = "";
		
		// 工事案件より流用元サービス契約番号を取得する
		JBSbatCommonDBInterface kojiakMap = executeKU_T_KOJIAK_PKSELECT(new Object[] {motoKojiakNo});
		if (null != kojiakMap)
		{
			motoSvcKeiNo = kojiakMap.getString(JBSbatKU_T_KOJIAK.RNKI_SVC_KEI_NO);
		}
		
		// サービス契約＿工事案件より流用元サービス契約回線内訳番号を取得する
		executeKU_T_SVKEI_KOJIAK_KK_SELECT_021(new Object[] {motoKojiakNo});
		JBSbatCommonDBInterface motoSvkeiKojiakMap = db_KU_T_SVKEI_KOJIAK.selectNext();
		if (null != motoSvkeiKojiakMap)
		{
			motoSvcKeiKaisenUcwkNo = motoSvkeiKojiakMap.getString(JBSbatKU_T_SVKEI_KOJIAK.SVC_KEI_KAISEN_UCWK_NO);
		}
		
		// サービス契約＿工事案件より流用先サービス契約回線内訳番号を取得する
		executeKU_T_SVKEI_KOJIAK_KK_SELECT_021_2(new Object[] {sakiKojiakNo});
		JBSbatCommonDBInterface sakiSvkeiKojiakMap = db_KU_T_SVKEI_KOJIAK_2.selectNext();
		if (null != sakiSvkeiKojiakMap)
		{
			sakiSvcKeiKaisenUcwkNo = sakiSvkeiKojiakMap.getString(JBSbatKU_T_SVKEI_KOJIAK.SVC_KEI_KAISEN_UCWK_NO);
		}
		
		// 返品機器より流用元の返品機器情報を取得する
		executeDK_T_HMPIN_KIKI_KK_SELECT_012(new Object[] {motoKktkSvcKeiNo, motoKikiChgNo});
		JBSbatCommonDBInterface hmpinKikiMap = db_DK_T_HMPIN_KIKI.selectNext();
		if (null != hmpinKikiMap)
		{
			motoHmpinKikiNo = hmpinKikiMap.getString(JBSbatDK_T_HMPIN_KIKI.HMPIN_KIKI_NO);
			motoHmpinUpdDtm = hmpinKikiMap.getString(JBSbatDK_T_HMPIN_KIKI.UPD_DTM);
		}
		
		// 機器提供サービス契約より流用先機器の最小世代の申込明細番号を取得する
		executeKK_T_KKTK_SVC_KEI_KK_SELECT_247(new Object[] {sakiKktkSvcKeiNo, super.opeDate});
		JBSbatCommonDBInterface kktkSvcKeiMap = db_KK_T_KKTK_SVC_KEI.selectNext();
		if (null != kktkSvcKeiMap)
		{
			sakiMskmDtlNo = kktkSvcKeiMap.getString(JBSbatKK_T_KKTK_SVC_KEI.MSKM_DTL_NO);
		}
		
		// ユースケースIDを格納するMAP
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "KKSV0878");
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, "KKSV0878OP");
		
		// サービスに渡す業務データを格納するMAP
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		this.setKKSV087801SC(inputMap, JPCModelConstant.FUNC_CD_2, motoKktkSvcKeiNo);
		this.setKKSV087802SC(inputMap, JPCModelConstant.FUNC_CD_2, sakiKktkSvcKeiNo);
		this.setKKSV087803SC(inputMap, JPCModelConstant.FUNC_CD_2, sakiSvcKeiNo);
		this.setKKSV087804SC(inputMap, JPCModelConstant.FUNC_CD_1, sakiSvcKeiNo);
		this.setKKSV087805SC(inputMap, JPCModelConstant.FUNC_CD_1, motoTaknkikiModelCd, motoKikiSeizoNo);
		this.setKKSV087807CC(inputMap, JPCModelConstant.FUNC_CD_1, inMap, motoHmpinKikiNo, motoHmpinUpdDtm, motoSvcKeiNo,
				sakiSvcKeiKaisenUcwkNo, sakiMskmDtlNo);
// IT2-2018-0000066 ADD START
		// 機器流用元回線のPON種別コードを取得する
		executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_057(new Object[] {motoSvcKeiKaisenUcwkNo});
		JBSbatCommonDBInterface svkeiKaisenUwMap = db_KK_T_SVKEI_KAISEN_UW.selectNext();
		if (null != svkeiKaisenUwMap)
		{
			// 元回線のPON種別コード
			String motoPonSbtCd = svkeiKaisenUwMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.PON_SBT_CD);
			
			// PON種別コード更新CC
			this.setKKSV087808CC(inputMap, JPCModelConstant.FUNC_CD_1, sakiSvcKeiKaisenUcwkNo, motoPonSbtCd);
		}
// IT2-2018-0000066 ADD END
		
		// サービスの処理結果が格納されるMAP
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// 機器引継登録（工事完了契機機器流用）サービスを呼び出す
		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
		
		// サービスの呼び出し結果が正常終了でない場合
		String returnCode = JCCBatchEsbInterface.getReturnCode(outputMap);
		if (!JCCBatchEsbInterface.RETURN_CODE_SUCCESS.equals(returnCode))
		{
			// エラー内容をログに出力し、次レコードを処理する
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB1770AW, new String[]{sakiSvcKeiNo, sakiKojiakNo});
			super.commonItem.setErrFlg(true);
			return outputItem;
		}
		
		// 流用先機器の論理削除処理を行う
		executeKK_T_KKTK_SVC_KEI_KK_UPDATE_011(new Object[] {sakiKktkSvcKeiNo});
		
// IT1-2018-0000145 ADD START
		// 課金先の論理削除処理を行う
		executeKK_T_KAKINS_KK_UPDATE_003(new Object[] {sakiKktkSvcKeiNo});
// IT1-2018-0000145 ADD END
// IT2-2018-0000066 DEL START
//		// 機器流用元回線のPON種別コードを取得する
//		executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_057(new Object[] {motoSvcKeiKaisenUcwkNo});
//		JBSbatCommonDBInterface svkeiKaisenUwMap = db_KK_T_SVKEI_KAISEN_UW.selectNext();
//		if (null != svkeiKaisenUwMap)
//		{
//			// 元回線のPON種別コード
//			String motoPonSbtCd = svkeiKaisenUwMap.getString(JBSbatKK_T_SVKEI_KAISEN_UW.PON_SBT_CD);
//			
//			// 機器流用先回線のPON種別コードの更新処理を行う
//			executeKK_T_SVKEI_KAISEN_UW_KK_UPDATE_005(new Object[] {motoPonSbtCd, sakiSvcKeiKaisenUcwkNo});
//		}
// IT2-2018-0000066 DEL END
		
		// 宅内機器ステータス更新ファイル(設備流用)の出力処理を行う
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// サービス契約番号
		outMap.setString(JBSbatKKIFM769.SVC_KEI_NO, inMap.getString(JBSbatKKIFM768.SAKI_SVC_KEI_NO));
		// 機器提供サービス契約番号
		outMap.setString(JBSbatKKIFM769.KKTK_SVC_KEI_NO, inMap.getString(JBSbatKKIFM768.MOTO_KKTK_SVC_KEI_NO));
		// 宅内機器型式コード
		outMap.setString(JBSbatKKIFM769.TAKNKIKI_MODEL_CD, inMap.getString(JBSbatKKIFM768.MOTO_TAKNKIKI_MODEL_CD));
		// 機器製造番号
		outMap.setString(JBSbatKKIFM769.KIKI_SEIZO_NO, inMap.getString(JBSbatKKIFM768.MOTO_KIKI_SEIZO_NO));
		// 宅内機器ステータス
		outMap.setString(JBSbatKKIFM769.TAKNKIKI_STAT, JKKStrConst.CD01704_STC);
		
		outMap.setOutFlg(true);
		outputItem.addOutMapList(outMap);
		
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KU_T_KOJIAK.close();
		db_KU_T_SVKEI_KOJIAK.close();
		db_KU_T_SVKEI_KOJIAK_2.close();
		db_DK_T_HMPIN_KIKI.close();
		db_KK_T_KKTK_SVC_KEI.close();
		db_KK_T_SVKEI_KAISEN_UW.close();
// IT1-2018-0000145 ADD START
		db_KK_T_KAKINS.close();
// IT1-2018-0000145 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	KOJIAK_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKU_T_KOJIAK_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("KOJIAK_NO", whereParam[0]);

		// DBアクセスを実行します
		return db_KU_T_KOJIAK.selectByPrimaryKeys(whereMap);
	}

	/**
	 * 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_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_2(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KU_T_SVKEI_KOJIAK_2.selectBySqlDefine(paramList, KU_T_SVKEI_KOJIAK_KK_SELECT_021);
	}

	/**
	 * SQLKEY(KK_SELECT_012)で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_HMPIN_KIKI_KK_SELECT_012(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_DK_T_HMPIN_KIKI.selectBySqlDefine(paramList, DK_T_HMPIN_KIKI_KK_SELECT_012);
	}

	/**
	 * SQLKEY(KK_SELECT_247)で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_247(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_247);
	}

	/**
	 * SQLKEY(KK_UPDATE_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 executeKK_T_KKTK_SVC_KEI_KK_UPDATE_011(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.executeBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_UPDATE_011);
	}

	/**
	 * SQLKEY(KK_SELECT_057)で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_057(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_057);
	}

// IT2-2018-0000066 DEL START
//	/**
//	 * SQLKEY(KK_UPDATE_005)でDBアクセスを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.引数でバイント変数を設定します。<br>
//	 *
//	 * 2.DBアクセスを実行します。<br>
//	 * 
//	 * 3.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
//	 *		 	PON種別コード
//	 *		 	サービス契約回線内訳番号
//	 * </pre>
//	 * <p>
//	 * @param param バイント変数の値配列。
//	 * @throws Exception 業務サービス内で発生した例外全般。
//	 */
//	private void executeKK_T_SVKEI_KAISEN_UW_KK_UPDATE_005(Object[] param) throws Exception
//	{
//		// バイント変数のリストを生成します
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		paramList.setValue(param[0].toString());
//		paramList.setValue(param[1].toString());
//
//		// DBアクセスを実行します
//		db_KK_T_SVKEI_KAISEN_UW.executeBySqlDefine(paramList, KK_T_SVKEI_KAISEN_UW_KK_UPDATE_005);
//	}
// IT2-2018-0000066 DEL END
// IT1-2018-0000145 ADD START
	/**
	 * SQLKEY(KK_UPDATE_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	機器提供サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KAKINS_KK_UPDATE_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_KAKINS.executeBySqlDefine(paramList, KK_T_KAKINS_KK_UPDATE_003);
	}
// IT1-2018-0000145 ADD END
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 上りマッピングをする（引継元機器提供サービス契約一意照会）
	 * @param inputMap 上りマップ
	 * @param funcCode 機能コード
	 * @param motoKktkSvcKeiNo 流用元機器提供サービス契約番号
	 */
	private void setKKSV087801SC(HashMap<String, Object> inputMap, String funcCode, String motoKktkSvcKeiNo)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", funcCode);
		// ＫＥＹ＿機器提供サービス契約番号
		parentMap.put("key_kktk_svc_kei_no", motoKktkSvcKeiNo);
		// ＫＥＹ＿世代登録年月日時分秒
		parentMap.put("key_gene_add_dtm", "");
		// ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", super.opeDate);
		
		inputMap.put("KKSV087801SC", parentMap);
	}
	
	/**
	 * 上りマッピングをする（引継先機器提供サービス契約一意照会）
	 * @param inputMap 上りマップ
	 * @param funcCode 機能コード
	 * @param sakiKktkSvcKeiNo 流用先機器提供サービス契約番号
	 */
	private void setKKSV087802SC(HashMap<String, Object> inputMap, String funcCode, String sakiKktkSvcKeiNo)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", funcCode);
		// ＫＥＹ＿機器提供サービス契約番号
		parentMap.put("key_kktk_svc_kei_no", sakiKktkSvcKeiNo);
		// ＫＥＹ＿世代登録年月日時分秒
		parentMap.put("key_gene_add_dtm", "");
		// ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", super.opeDate);
		
		inputMap.put("KKSV087802SC", parentMap);
	}
	
	/**
	 * 上りマッピングをする（サービス契約一意照会）
	 * @param inputMap 上りマップ
	 * @param funcCode 機能コード
 	 * @param sakiSvcKeiNo 流用先サービス契約番号
	 */
	private void setKKSV087803SC(HashMap<String, Object> inputMap, String funcCode, String sakiSvcKeiNo)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", funcCode);
		// ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", sakiSvcKeiNo);
		// ＫＥＹ＿世代登録年月日時分秒
		parentMap.put("key_gene_add_dtm", "");
		// ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", super.opeDate);
		
		inputMap.put("KKSV087803SC", parentMap);
	}
	
	/**
	 * 上りマッピングをする（課金先一覧照会（請求契約番号／サービス契約番号））
	 * @param inputMap 上りマップ
	 * @param funcCode 機能コード
 	 * @param sakiSvcKeiNo 流用先サービス契約番号
	 */
	private void setKKSV087804SC(HashMap<String, Object> inputMap, String funcCode, String sakiSvcKeiNo)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", funcCode);
		// ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", sakiSvcKeiNo);
		// ＫＥＹ＿請求契約番号
		parentMap.put("key_seiky_kei_no", "");
		// ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", super.opeDate);
		
		inputMap.put("KKSV087804SC", parentMap);
	}
	
	/**
	 * 上りマッピングをする（宅内機器一意照会（４））
	 * @param inputMap 上りマップ
	 * @param funcCode 機能コード
	 * @param motoTaknkikiModelCd 流用元宅内機器型式コード
	 * @param motoKikiSeizoNo 流用元機器製造番号
	 */
	private void setKKSV087805SC(HashMap<String, Object> inputMap, String funcCode, String motoTaknkikiModelCd, String motoKikiSeizoNo)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> ekka0020003cbsmsg1List = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> childMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", funcCode);
		// ＫＥＹ＿宅内機器型式コード
		childMap.put("key_tk_mdl_cd", motoTaknkikiModelCd);
		// ＫＥＹ＿機器製造番号
		childMap.put("key_kk_seizo_no", motoKikiSeizoNo);
		// 宅内機器一意照会（４）条件明細
		ekka0020003cbsmsg1List.add(childMap);
		parentMap.put("EKKA0020003CBSMsg1List", ekka0020003cbsmsg1List);
		
		inputMap.put("KKSV087805SC", parentMap);
	}
	
	/**
	 * 上りマッピングをする（機器引継登録）
	 * @param inputMap 上りマップ
	 * @param funcCode 機能コード
	 * @param inMap 入力電文
	 * @param motoHmpinKikiNo 流用元返品機器番号
	 * @param motoHmpinUpdDtm 流用元更新年月日時分秒（返品機器）
	 * @param motoSvcKeiNo 流用元サービス契約番号
	 * @param sakiSvcKeiKaisenUcwkNo 流用先サービス契約回線内訳番号
	 * @param sakiMskmDtlNo 流用先機器申込明細番号（最小世代）
	 * @throws Exception 
	 */
	private void setKKSV087807CC(HashMap<String, Object> inputMap, String funcCode, JBSbatServiceInterfaceMap inMap,
			String motoHmpinKikiNo, String motoHmpinUpdDtm, String motoSvcKeiNo, String sakiSvcKeiKaisenUcwkNo,
			String sakiMskmDtlNo) throws Exception
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> motoList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> motoChildMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> sakiList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> sakiChildMap = new HashMap<String, Object>();
		
		// 機能コード
		motoChildMap.put("func_code", funcCode);
		// 機器提供サービス契約番号
		motoChildMap.put("kktk_svc_kei_no", inMap.getString(JBSbatKKIFM768.MOTO_KKTK_SVC_KEI_NO));
		// サービス契約番号
		motoChildMap.put("svc_kei_no", inMap.getString(JBSbatKKIFM768.SAKI_SVC_KEI_NO));
		// 機器提供サービス契約引継発生年月日
		motoChildMap.put("kktk_svc_kei_hkhasymd", super.opeDate);
		// 予約適用年月日
		motoChildMap.put("rsv_aply_ymd", super.opeDate);
		// 異動区分
		motoChildMap.put("ido_div", JKKStrConst.CD00576_00029);
		// 回復年月日
		motoChildMap.put("kaihk_ymd", super.opeDate);
		// ＫＥＹ＿返品機器番号
		motoChildMap.put("key_hmpin_kiki_no", motoHmpinKikiNo);
		// ＫＥＹ＿運用日付
		motoChildMap.put("key_unyo_ymd", super.opeDate);
		// 更新年月日時分秒（返品機器）
		motoChildMap.put("hktgi_moto_hmpin_upd_dtm_bf", motoHmpinUpdDtm);
		// 引継元＿サービス契約番号
		motoChildMap.put("svc_kei_no_moto", motoSvcKeiNo);
		// 引継元＿宅内機器型式コード
		motoChildMap.put("taknkiki_model_cd_moto", inMap.getString(JBSbatKKIFM768.MOTO_TAKNKIKI_MODEL_CD));
		// 引継元＿機器製造番号
		motoChildMap.put("seizo_no_moto", inMap.getString(JBSbatKKIFM768.MOTO_KIKI_SEIZO_NO));
		
		// 引継元リスト
		motoList.add(motoChildMap);
		parentMap.put("kiki_hktgi_select_list", motoList);
		
		// 機器提供サービス契約番号
		sakiChildMap.put("kktk_svc_kei_no", inMap.getString(JBSbatKKIFM768.SAKI_KKTK_SVC_KEI_NO));
		// 予約適用年月日
		sakiChildMap.put("key_rsv_aply_ymd", super.opeDate);
		
		// 引継先リスト
		sakiList.add(sakiChildMap);
		parentMap.put("kiki_hktgi_select_saki_list", sakiList);
		
		inputMap.put("KKSV041905CC", parentMap);
		
		// 作業マップ
		HashMap<String, Object> workMap = new HashMap<String, Object>();
		// サービス契約回線内訳番号
		workMap.put("svc_kei_kaisen_ucwk_no", sakiSvcKeiKaisenUcwkNo);
		// 申込明細番号
		workMap.put("mskm_dtl_no", sakiMskmDtlNo);
		
		inputMap.put("WORK", workMap);
	}
	
// IT2-2018-0000066 ADD START
	/**
	 * 上りマッピングをする（PON種別コード更新）
	 * @param inputMap 上りマップ
	 * @param funcCode 機能コード
	 * @param svcKeiKaisenUcwkNo サービス契約回線内訳番号
	 * @param ponSbtCd PON種別コード
	 */
	private void setKKSV087808CC(HashMap<String, Object> inputMap, String funcCode, String svcKeiKaisenUcwkNo, String ponSbtCd)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", funcCode);
		// サービス契約回線内訳番号
		parentMap.put("svc_kei_kaisen_ucwk_no", svcKeiKaisenUcwkNo);
		// PON種別コード
		parentMap.put("pon_sbt_cd", ponSbtCd);
		
		inputMap.put("KKSV087808CC", parentMap);
	}
// IT2-2018-0000066 ADD END
}
