/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKMiStcKikiInfStku
*	ソースファイル名	：JBSbatKKMiStcKikiInfStku.java
*	作成者				：富士通　
*	作成日				：2011年08月30日
*＜機能概要＞
*　未設置機器情報取得部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/30	FJ）庭山	新規作成
*	v2.00.00	2012/04/13	FJ)神吉		【TAI-2012-0000027】排他制御対応。
*	v3.00.00	2011/04/16	FJ)神吉		【ANK-0066-00-00】対応
*	v4.00.00	2013/03/22  FJ)中作 	【IT1-2013-0000498】障害対応
*	v4.01.00	2013/07/08  FJ)桑島 	【IT1-2013-0001351】障害対応
*	v4.02.00	2013/10/03  FJ)柳	 	【OM-2013-0002329】障害対応
*	v7.00.00	2013/12/07	FJ)石原		【ANK-1578-00-00】対応
*	v7.00.01	2013/02/21	FJ)団		【OM-2014-0000298】障害対応
*	v22.00.00	2015/11/24	FJ)広部		【ANK-2732-00-00】プロジェクト正常化施策 ソースの可読性向上
*	v32.00.00	2017/06/30	FJ)鈴木		【OM-2017-0000618】障害対応：STBとPLCのとき機器情報取得方法を変更
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.util.file.JBSbatKKIFM099;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_KOJI_TG_KIKI_WK;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_UCWK;
import eo.business.util.table.JBSbatKK_T_SVKEI_EXC_CTRL;
import eo.business.util.table.JBSbatZM_M_TAKNKIKI_MODEL;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessError;
import eo.framework.application.JBSbatBusinessException;
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.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKMiStcKikiInfStku extends JBSbatBusinessService
{
	// ++++++++++ v22.00.00 削除開始 ++++++++++
//	/**
//	 * 宅内機器異動コード（STB追加キャンセル）
//	 */
//	private static final String TAKNKIKI_IDO_CD = "06";
//
//	/**
//	 * 契約ステータス（受付済）
//	 */
//	private static final String KEI_STAT_UK = "010";
//
//	/**
//	 * 契約ステータス（照査済）
//	 */
//	private static final String KEI_STAT_SHOSA = "020";
//
//	/**
//	 * 契約ステータス（締結済）
//	 */
//	private static final String KEI_STAT_CNC = "030";
//
//	/* ++++++++++ v7.00.01 追加開始 ++++++++++ */
//	/**
//	 * 契約ステータス（サービス提供中）
//	 */
//	private static final String KEI_STAT_SVCTKCHU = "100";
//	/* ++++++++++ v7.00.01 追加終了 ++++++++++ */
//	
//	/**
//	 * 契約ステータス（機器変更中）
//	 */
//	private static final String KEI_STAT_CHG = "110";
//	
//	/**
//	 * 契約ステータス（解約済）
//	 */
//	private static final String KEI_STAT_DSL = "910";
//
//	/**
//	 * 契約ステータス（キャンセル済）
//	 */
//	private static final String KEI_STAT_CNCL = "920";
//
//	/**
//	 * 機器提供サービスコード（ルータ）
//	 */
//	private static final String KKTK_SVC_CD_ROUTER = "C014";
//
//	/**
//	 * 機器提供サービスコード（PLC）
//	 */
//	private static final String KKTK_SVC_CD_PLC = "C015";
//
//	/**
//	 * 機器提供サービスコード（STB）
//	 */
//	private static final String KKTK_SVC_CD_STB = "C009";
//
//	/**
//	 * 機器提供サービスコード（B-CAS）
//	 */
//	private static final String KKTK_SVC_CD_BCAS = "C010";
//
//	/**
//	 * 機器提供サービスコード（C-CAS）
//	 */
//	private static final String KKTK_SVC_CD_CCAS = "C011";
//
//	/**
//	 * 機器提供サービスコード（多機能ルータ）
//	 */
//	private static final String KKTK_SVC_CD_TKNRT = "C024";
	// ++++++++++ v22.00.00 削除終了 ++++++++++
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

	/** テーブル(宅内機器型式)*/
	private static final String D_TBL_NAME_ZM_M_TAKNKIKI_MODEL = "ZM_M_TAKNKIKI_MODEL";

	/** テーブル(サービス契約内訳)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_UCWK = "KK_T_SVC_KEI_UCWK";

	/** SQL定義キー(KK_SELECT_017)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_017 = "KK_SELECT_017";

	/** SQL定義キー(KK_SELECT_020)*/
	private static final String KK_T_SVC_KEI_UCWK_KK_SELECT_020 = "KK_SELECT_020";

	/** SQL定義キー(KK_SELECT_089)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_089 = "KK_SELECT_089";

// 2017/06/30 OM-2017-0000618 add start
	/** SQL定義キー(KK_SELECT_240)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_240 = "KK_SELECT_240";
	
	/** SQL定義キー(KK_SELECT_241)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_241 = "KK_SELECT_241";
// 2017/06/30 OM-2017-0000618 add end

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;

	/** テーブルアクセスクラス(宅内機器型式)*/
	private JBSbatSQLAccess db_ZM_M_TAKNKIKI_MODEL = null;

	/** テーブルアクセスクラス(サービス契約内訳)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI_UCWK = null;
	
// 2017/06/30 OM-2017-0000618 add start
	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI2 = null;
// 2017/06/30 OM-2017-0000618 add end

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		db_ZM_M_TAKNKIKI_MODEL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_TAKNKIKI_MODEL);
		db_KK_T_SVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_UCWK);
// 2017/06/30 OM-2017-0000618 add start
		db_KK_T_KKTK_SVC_KEI2 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
// 2017/06/30 OM-2017-0000618 add end
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		super.logPrint.printDebugLog("execute_START");
		
		JBSbatOutputItem out_bean = null;
		JBSbatServiceInterfaceMap out_map = new JBSbatServiceInterfaceMap();
		out_map.setOutFlg(false);

		// 【宅内機器異動コード（ルータ）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_ROUTER))
		{
			// 機器提供サービス契約のカレント情報の取得
			JBSbatCommonDBInterface kktkSvcKeiMap_089 = null;
			String[] param = new String[2];
			String kktkSvcKeiNo = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_ROUTER));
			
			// 検索条件の設定
			param[0] = kktkSvcKeiNo;
			param[1] = super.opeDate;

			// 検索実行
			executeKK_T_KKTK_SVC_KEI_KK_SELECT_089(param);
			kktkSvcKeiMap_089 = db_KK_T_KKTK_SVC_KEI.selectNext();
			
			// 機器提供サービス契約検索結果がない場合
			if (null == kktkSvcKeiMap_089)
			{
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, 
						new String[]{"機器提供サービス契約", "機器提供サービス契約番号：" + kktkSvcKeiNo});
			}
			
			// 機器提供サービスコードの取得
			String kktkSvcCd = JBSbatStringUtil.Rtrim(kktkSvcKeiMap_089.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_CD));
			
			// ルータの場合
			// ++++++++++ v22.00.00 変更開始 ++++++++++
//			if (kktkSvcCd.equals(KKTK_SVC_CD_ROUTER))
			if (kktkSvcCd.equals(JBSbatKKConst.KKTK_SVC_CD_ROUTER))
			// ++++++++++ v22.00.00 変更終了 ++++++++++	
			{
				// 【機器提供サービス契約番号（ルータ）】、「機器提供サービスコード：C014」で機器提供サービスを検索する
				out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_ROUTER)),
											// ++++++++++ v22.00.00 変更開始 ++++++++++
//											KKTK_SVC_CD_ROUTER,
											JBSbatKKConst.KKTK_SVC_CD_ROUTER,
											// ++++++++++ v22.00.00 変更終了 ++++++++++
											out_map,
											JBSbatKKIFM099.KKTK_SVC_KEI_NO_ROUTER,
											JBSbatKKIFM099.GENE_ADD_DTM_ROUTER,
											"ルータ");
			}
			// 多機能ルータの場合
			else
			{
				// 【機器提供サービス契約番号（ルータ）】、「機器提供サービスコード：C024」で機器提供サービスを検索する
				out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_ROUTER)),
											// ++++++++++ v22.00.00 変更開始 ++++++++++
//											KKTK_SVC_CD_TKNRT,
											JBSbatKKConst.KKTK_SVC_CD_MULTI_FUNC_ROUTER,
											// ++++++++++ v22.00.00 変更終了 ++++++++++
											out_map,
											JBSbatKKIFM099.KKTK_SVC_KEI_NO_TKNRT,
											JBSbatKKIFM099.GENE_ADD_DTM_TKNRT,
											"多機能ルータ");
			}
			
			// 宅内機器型式検索結果格納マップ
			JBSbatCommonDBInterface taknkiki_map = null;
			
			// 機器提供サービス契約検索結果．宅内機器型式コード取得
			String taknkikiModelCd = JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD));
			
			String[] taknkiki_param = new String[1];
			
			// 宅内機器型式検索キー設定
			taknkiki_param[0] = taknkikiModelCd;		// 宅内機器型式コード
			
			// 宅内機器型式のPK検索を行います
			taknkiki_map = executeZM_M_TAKNKIKI_MODEL_PKSELECT(taknkiki_param);

			// 宅内機器型式のPK検索結果なしの場合、エラーとし処理中断します
			if (null == taknkiki_map)
			{
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, 
						new String[]{"宅内機器型式", "宅内機器型式コード：" + taknkikiModelCd});
			}
			
			// OLS機能有無を設定
			// ルータの場合
			// ++++++++++ v22.00.00 変更開始 ++++++++++
//			if (kktkSvcCd.equals(KKTK_SVC_CD_ROUTER))
			if (JBSbatKKConst.KKTK_SVC_CD_ROUTER.equals(kktkSvcCd))
			// ++++++++++ v22.00.00 変更終了 ++++++++++	
			{
				out_map.set(JBSbatKKIFM099.OLS_KINO_UM_ROUTER, 
						JBSbatStringUtil.Rtrim(taknkiki_map.getString(JBSbatZM_M_TAKNKIKI_MODEL.OLS_KINO_UM)));
			}
			else
			{
				out_map.set(JBSbatKKIFM099.OLS_KINO_UM_TKNRT, 
						JBSbatStringUtil.Rtrim(taknkiki_map.getString(JBSbatZM_M_TAKNKIKI_MODEL.OLS_KINO_UM)));
			}
		}

		// 【宅内機器異動コード（PLC1）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_PLC_1))
		{
			// 【機器提供サービス契約番号（PLC1）】、「機器提供サービスコード：C015」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_PLC_1)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_PLC,
										JBSbatKKConst.KKTK_SVC_CD_PLC,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_PLC_1,
										JBSbatKKIFM099.GENE_ADD_DTM_PLC_1,
										"PLC1");
		}

		// 【宅内機器異動コード（PLC2）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_PLC_2))
		{
			// 【機器提供サービス契約番号（PLC2）】、「機器提供サービスコード：C015」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_PLC_2)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_PLC,
										JBSbatKKConst.KKTK_SVC_CD_PLC,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_PLC_2,
										JBSbatKKIFM099.GENE_ADD_DTM_PLC_2,
										"PLC2");
		}

		// 【宅内機器異動コード（PLC3）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_PLC_3))
		{
			// 【機器提供サービス契約番号（PLC3）】、「機器提供サービスコード：C015」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_PLC_3)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_PLC,
										JBSbatKKConst.KKTK_SVC_CD_PLC,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_PLC_3,
										JBSbatKKIFM099.GENE_ADD_DTM_PLC_3,
										"PLC3");
		}

		// 【宅内機器異動コード（PLC4）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_PLC_4))
		{
			// 【機器提供サービス契約番号（PLC4）】、「機器提供サービスコード：C015」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_PLC_4)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_PLC,
										JBSbatKKConst.KKTK_SVC_CD_PLC,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_PLC_4,
										JBSbatKKIFM099.GENE_ADD_DTM_PLC_4,
										"PLC4");
		}

		// 【宅内機器異動コード（PLC5）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_PLC_5))
		{
			// 【機器提供サービス契約番号（PLC5）】、「機器提供サービスコード：C015」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_PLC_5)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_PLC,
										JBSbatKKConst.KKTK_SVC_CD_PLC,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_PLC_5,
										JBSbatKKIFM099.GENE_ADD_DTM_PLC_5,
										"PLC5");
		}

		// 【宅内機器異動コード（PLC6）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_PLC_6))
		{
			// 【機器提供サービス契約番号（PLC6）】、「機器提供サービスコード：C015」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_PLC_6)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_PLC,
										JBSbatKKConst.KKTK_SVC_CD_PLC,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_PLC_6,
										JBSbatKKIFM099.GENE_ADD_DTM_PLC_6,
										"PLC6");
		}

		// 【宅内機器異動コード（PLC7）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_PLC_7))
		{
			// 【機器提供サービス契約番号（PLC7）】、「機器提供サービスコード：C015」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_PLC_7)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_PLC,
										JBSbatKKConst.KKTK_SVC_CD_PLC,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_PLC_7,
										JBSbatKKIFM099.GENE_ADD_DTM_PLC_7,
										"PLC7");
		}

		// 【宅内機器異動コード（PLC8）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_PLC_8))
		{
			// 【機器提供サービス契約番号（PLC8）】、「機器提供サービスコード：C015」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_PLC_8)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_PLC,
										JBSbatKKConst.KKTK_SVC_CD_PLC,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_PLC_8,
										JBSbatKKIFM099.GENE_ADD_DTM_PLC_8,
										"PLC8");
		}

		// 【宅内機器異動コード（STB1）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_STB_1))
		{
			// 【機器提供サービス契約番号（STB1）】、「機器提供サービスコード：C009」で機器提供サービスを検索する
			out_map = executeKKtkAndUcwk(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_STB_1)),
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_STB_1,
										JBSbatKKIFM099.GENE_ADD_DTM_STB_1,
										JBSbatKKIFM099.SVC_KEI_UCWK_NO_STB_1,
										JBSbatKKIFM099.UCWK_GENE_ADD_DTM_STB_1,
										"STB1");

			// 【機器提供サービス契約番号（B-CAS1）】、「機器提供サービスコード：C010」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_BCAS_1)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_BCAS,
										JBSbatKKConst.KKTK_SVC_CD_B_CAS,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_BCAS_1,
										JBSbatKKIFM099.GENE_ADD_DTM_BCAS_1,
										"B-CAS1");

			// 【機器提供サービス契約番号（C-CAS1）】、「機器提供サービスコード：C011」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_CCAS_1)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_CCAS,
										JBSbatKKConst.KKTK_SVC_CD_C_CAS,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_CCAS_1,
										JBSbatKKIFM099.GENE_ADD_DTM_CCAS_1,
										"C-CAS1");
		}

		// 【宅内機器異動コード（STB2）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_STB_2))
		{
			// 【機器提供サービス契約番号（STB2）】、「機器提供サービスコード：C009」で機器提供サービスを検索する
			out_map = executeKKtkAndUcwk(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_STB_2)),
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_STB_2,
										JBSbatKKIFM099.GENE_ADD_DTM_STB_2,
										JBSbatKKIFM099.SVC_KEI_UCWK_NO_STB_2,
										JBSbatKKIFM099.UCWK_GENE_ADD_DTM_STB_2,
										"STB2");

			// 【機器提供サービス契約番号（B-CAS2）】、「機器提供サービスコード：C010」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_BCAS_2)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_BCAS,
										JBSbatKKConst.KKTK_SVC_CD_B_CAS,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_BCAS_2,
										JBSbatKKIFM099.GENE_ADD_DTM_BCAS_2,
										"B-CAS2");

			// 【機器提供サービス契約番号（C-CAS2）】、「機器提供サービスコード：C011」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_CCAS_2)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_CCAS,
										JBSbatKKConst.KKTK_SVC_CD_C_CAS,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_CCAS_2,
										JBSbatKKIFM099.GENE_ADD_DTM_CCAS_2,
										"C-CAS2");
		}

		// 【宅内機器異動コード（STB3）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_STB_3))
		{
			// 【機器提供サービス契約番号（STB3）】、「機器提供サービスコード：C009」で機器提供サービスを検索する
			out_map = executeKKtkAndUcwk(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_STB_3)),
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_STB_3,
										JBSbatKKIFM099.GENE_ADD_DTM_STB_3,
										JBSbatKKIFM099.SVC_KEI_UCWK_NO_STB_3,
										JBSbatKKIFM099.UCWK_GENE_ADD_DTM_STB_3,
										"STB3");

			// 【機器提供サービス契約番号（B-CAS3）】、「機器提供サービスコード：C010」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_BCAS_3)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_BCAS,
										JBSbatKKConst.KKTK_SVC_CD_B_CAS,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_BCAS_3,
										JBSbatKKIFM099.GENE_ADD_DTM_BCAS_3,
										"B-CAS3");

			// 【機器提供サービス契約番号（C-CAS3）】、「機器提供サービスコード：C011」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_CCAS_3)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_CCAS,
										JBSbatKKConst.KKTK_SVC_CD_C_CAS,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_CCAS_3,
										JBSbatKKIFM099.GENE_ADD_DTM_CCAS_3,
										"C-CAS3");
		}

		// 【宅内機器異動コード（STB4）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_STB_4))
		{
			// 【機器提供サービス契約番号（STB4）】、「機器提供サービスコード：C009」で機器提供サービスを検索する
			out_map = executeKKtkAndUcwk(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_STB_4)),
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_STB_4,
										JBSbatKKIFM099.GENE_ADD_DTM_STB_4,
										JBSbatKKIFM099.SVC_KEI_UCWK_NO_STB_4,
										JBSbatKKIFM099.UCWK_GENE_ADD_DTM_STB_4,
										"STB4");

			// 【機器提供サービス契約番号（B-CAS4）】、「機器提供サービスコード：C010」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_BCAS_4)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_BCAS,
										JBSbatKKConst.KKTK_SVC_CD_B_CAS,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_BCAS_4,
										JBSbatKKIFM099.GENE_ADD_DTM_BCAS_4,
										"B-CAS4");

			// 【機器提供サービス契約番号（C-CAS4）】、「機器提供サービスコード：C011」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_CCAS_4)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_CCAS,
										JBSbatKKConst.KKTK_SVC_CD_C_CAS,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_CCAS_4,
										JBSbatKKIFM099.GENE_ADD_DTM_CCAS_4,
										"C-CAS4");
		}

		// 【宅内機器異動コード（STB5）】 =「追加キャンセル」の場合
		if (isTaknkikiIdoCd(inMap, JBSbatKK_T_KOJI_TG_KIKI_WK.TAKNKIKI_IDO_CD_STB_5))
		{
			// 【機器提供サービス契約番号（STB5）】、「機器提供サービスコード：C009」で機器提供サービスを検索する
			out_map = executeKKtkAndUcwk(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_STB_5)),
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_STB_5,
										JBSbatKKIFM099.GENE_ADD_DTM_STB_5,
										JBSbatKKIFM099.SVC_KEI_UCWK_NO_STB_5,
										JBSbatKKIFM099.UCWK_GENE_ADD_DTM_STB_5,
										"STB5");

			// 【機器提供サービス契約番号（B-CAS5）】、「機器提供サービスコード：C010」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_BCAS_5)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_BCAS,
										JBSbatKKConst.KKTK_SVC_CD_B_CAS,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_BCAS_5,
										JBSbatKKIFM099.GENE_ADD_DTM_BCAS_5,
										"B-CAS5");

			// 【機器提供サービス契約番号（C-CAS5）】、「機器提供サービスコード：C011」で機器提供サービスを検索する
			out_map = executeKktkSvcNo(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KKTK_SVC_KEI_NO_CCAS_5)),
										// ++++++++++ v22.00.00 変更開始 ++++++++++
//										KKTK_SVC_CD_CCAS,
										JBSbatKKConst.KKTK_SVC_CD_C_CAS,
										// ++++++++++ v22.00.00 変更終了 ++++++++++
										out_map,
										JBSbatKKIFM099.KKTK_SVC_KEI_NO_CCAS_5,
										JBSbatKKIFM099.GENE_ADD_DTM_CCAS_5,
										"C-CAS5");
		}

		// 出力情報に転記した場合、ファイル出力します
		if (out_map.isOutFlg())
		{
			out_bean = new JBSbatOutputItem();

			// 「工事対象機器ワーク．サービス契約番号」を設定
			out_map.setString(JBSbatKKIFM099.SVC_KEI_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.SVC_KEI_NO)));
			
			// 「工事対象機器ワーク．工事案件番号」を設定
			out_map.setString(JBSbatKKIFM099.KOJIAK_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.KOJIAK_NO)));
			
			// 「サービス契約排他制御．最終更新年月日時分秒」を設定
			out_map.setString(JBSbatKKIFM099.LAST_UPD_DTM, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVKEI_EXC_CTRL.LAST_UPD_DTM)));
			
			// 「工事対象機器ワーク．サービス契約回線内訳番号」を設定
			out_map.setString(JBSbatKKIFM099.SVC_KEI_KAISEN_UCWK_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_KOJI_TG_KIKI_WK.SVC_KEI_KAISEN_UCWK_NO)));
			
			out_bean.addOutMapList(out_map);
		}

		super.logPrint.printDebugLog("execute_END");

		return out_bean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KKTK_SVC_KEI.close();
		db_ZM_M_TAKNKIKI_MODEL.close();
		db_KK_T_SVC_KEI_UCWK.close();
// 2017/06/30 OM-2017-0000618 add start
		db_KK_T_KKTK_SVC_KEI2.close();
// 2017/06/30 OM-2017-0000618 add end
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * SQLKEY(KK_SELECT_017)で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_017(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_017);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	TAKNKIKI_MODEL_CD
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeZM_M_TAKNKIKI_MODEL_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("TAKNKIKI_MODEL_CD", whereParam[0]);

		// DBアクセスを実行します
		return db_ZM_M_TAKNKIKI_MODEL.selectByPrimaryKeys(whereMap);
	}

	/**
	 * SQLKEY(KK_SELECT_020)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約内訳番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_UCWK_KK_SELECT_020(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KK_SELECT_020);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 宅内機器異動コードの判定をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.宅内機器異動コード=「追加キャンセル：06」か判定をします。<br>
	 *
	 * 2.条件を満たす場合true、満たさない場合falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param in_map　入力電文。
	 * @param ido_key　宅内機器異動コードのkey。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isTaknkikiIdoCd(JBSbatServiceInterfaceMap in_map, String ido_key) throws Exception
	{
		String ido_cd = in_map.getString(ido_key);

		// NULL、空文字チェック
		if (null == ido_cd || 0 == ido_cd.length())
		{
			return false;
		}

		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		if (!TAKNKIKI_IDO_CD.equals(ido_cd))
		if (!JBSbatKKConst.CD00562_TAKNKIKI_IDO_CD_06.equals(ido_cd))
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		{
			return false;
		}

		return true;
	}

	/**
	 * サービス契約ステータスの判定をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.契約ステータス= '030'：締結済 または'110':契約変更中 または'100':サービス提供中か判定をします。<br>
	 *
	 * 2.条件を満たす場合true、満たさない場合falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param db_map　検索結果。
	 * @param stat_key　契約ステータスのkey。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isSvcStat(JBSbatCommonDBInterface db_map, String stat_key) throws Exception
	{
		String svc_stat = JBSbatStringUtil.Rtrim(db_map.getString(stat_key));

		/* ++++++++++ v7.00.01 修正開始 ++++++++++ */
//		if (KEI_STAT_CNC.equals(svc_stat) || KEI_STAT_CHG.equals(svc_stat) )
//		{
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		if (KEI_STAT_CNC.equals(svc_stat) || KEI_STAT_CHG.equals(svc_stat) || KEI_STAT_SVCTKCHU.equals(svc_stat))
		if (JBSbatKKConst.SVC_KEI_STAT_CNC_ZM.equals(svc_stat) || JBSbatKKConst.SVC_KEI_STAT_SVCCHG_CHU.equals(svc_stat) || JBSbatKKConst.SVC_KEI_STAT_SVCTK_CHU.equals(svc_stat))
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		{
		/* ++++++++++ v7.00.01 修正開始 ++++++++++ */
			return true;
		}
		return false;

	}
	
	/**
	 * サービス契約ステータスの判定をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.契約ステータス= '030'：締結済 か '100':サービス提供中 か判定をします。<br>
	 *
	 * 2.条件を満たす場合true、満たさない場合falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param db_map　検索結果。
	 * @param stat_key　契約ステータスのkey。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isSvcStatUcwk(JBSbatCommonDBInterface db_map, String stat_key) throws Exception
	{
		String svc_stat = JBSbatStringUtil.Rtrim(db_map.getString(stat_key));

		/* ++++++++++ v7.00.01 修正開始 ++++++++++ */
		//if (KEI_STAT_CNC.equals(svc_stat))
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		if (KEI_STAT_CNC.equals(svc_stat) || KEI_STAT_SVCTKCHU.equals(svc_stat) )
		if (JBSbatKKConst.SVC_KEI_STAT_CNC_ZM.equals(svc_stat) || JBSbatKKConst.SVC_KEI_STAT_SVCTK_CHU.equals(svc_stat) )
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		/* ++++++++++ v7.00.01 修正終了 ++++++++++ */
		{
			return true;
		}
		return false;

	}
	
	/**
	 * サービス契約ステータスの判定をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.契約ステータス= 110'：契約変更中か判定をします。<br>
	 *
	 * 2.条件を満たす場合true、満たさない場合falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param db_map　検索結果。
	 * @param stat_key　契約ステータスのkey。
	 * @return boolean　判定結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isSvcStatKktkChg(JBSbatCommonDBInterface db_map, String stat_key) throws Exception
	{
		String svc_stat = JBSbatStringUtil.Rtrim(db_map.getString(stat_key));

		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		if (KEI_STAT_CHG.equals(svc_stat) )
		if (JBSbatKKConst.SVC_KEI_STAT_SVCCHG_CHU.equals(svc_stat) )
		// ++++++++++ v22.00.00 変更終了 ++++++++++	
		{
			return true;
		}
		return false;

	}

	/**
	 * 機器提供サービス契約を検索します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.機器提供サービス契約を検索します。<br>
	 *
	 * 2.検索結果なしの場合、エラーとします。<br>
	 *
	 * 3.機器提供サービス契約ステータスを判定します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param svc_no　機器提供サービス契約番号。
	 * @param svc_cd　機器提供サービスコード。
	 * @param err_val　エラーログ出力用文言。
	 * @return JBSbatServiceInterfaceMap　出力情報。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface searchKktk(String svc_no, String svc_cd, String err_val) throws Exception
	{
// 2017/06/30 OM-2017-0000618 add start
		if ( JBSbatKKConst.KKTK_SVC_CD_PLC.equals(svc_cd) || JBSbatKKConst.KKTK_SVC_CD_STB.equals(svc_cd) ) {
			return searchKktk2(svc_no, svc_cd, err_val);
		}
// 2017/06/30 OM-2017-0000618 add end

		JBSbatCommonDBInterface db_map = null;
		String[] param = new String[3];

		// 機器提供サービス契約番号チェック
		if (null == svc_no || 0 == svc_no.length())
		{
			return db_map;
		}

		param[0] = svc_no;
		param[1] = svc_cd;
		param[2] = super.opeDate;

		executeKK_T_KKTK_SVC_KEI_KK_SELECT_017(param);
		db_map = db_KK_T_KKTK_SVC_KEI.selectNext();

		// 検索結果なしの場合、エラーとし処理中断します
		if (null == db_map)
		{
			String value = "機器提供サービス契約番号（" + err_val + "）：" + svc_no;
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[]{"KK_T_KKTK_SVC_KEI", value});
		}
		return db_map;
	}

// 2017/06/30 OM-2017-0000618 add start
	/**
	 * 機器提供サービス契約を検索します。
	 * 予約中のデータが存在すればそのレコードを、存在しなければカレントレコードを取得します。
	 * STB,PLCはこちらを使います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.機器提供サービス契約を検索します。<br>
	 *
	 * 2.検索結果なしの場合、エラーとします。<br>
	 *
	 * 3.機器提供サービス契約ステータスを判定します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param svc_no　機器提供サービス契約番号。
	 * @param svc_cd　機器提供サービスコード。
	 * @param err_val　エラーログ出力用文言。
	 * @return JBSbatServiceInterfaceMap　出力情報。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface searchKktk2(String svc_no, String svc_cd, String err_val) throws Exception
	{
		JBSbatCommonDBInterface db_map = null;
		String[] param = new String[3];

		// 機器提供サービス契約番号チェック
		if (null == svc_no || 0 == svc_no.length())
		{
			return db_map;
		}

		// 指定された機器提供サービス契約番号、機器提供サービスコードで、
		// 機器提供サービス契約ステータスが"110"（契約変更中）、RSV_APLY_CD = '1'の世代最新を取得します。
		param[0] = svc_no;
		param[1] = svc_cd;

		executeKK_T_KKTK_SVC_KEI_KK_SELECT_240(param);
		db_map = db_KK_T_KKTK_SVC_KEI2.selectNext();

		// 検索できた場合、返却します。
		if (null != db_map)
		{
			return db_map;
		}

		// 取得できなかった場合
		// 指定された機器提供サービス契約番号、機器提供サービスコードで、
		// 通常のカレントを取得します。
		param[0] = svc_no;
		param[1] = svc_cd;
		param[2] = super.opeDate;
		
		executeKK_T_KKTK_SVC_KEI_KK_SELECT_241(param);
		db_map = db_KK_T_KKTK_SVC_KEI2.selectNext();
		
		// 検索結果なしの場合、エラーとし処理中断します
		if (null == db_map)
		{
			String value = "機器提供サービス契約番号（" + err_val + "）：" + svc_no + ", 機器提供サービスコード=" + svc_cd;
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[]{"KK_T_KKTK_SVC_KEI", value});
		}
		return db_map;
	}
// 2017/06/30 OM-2017-0000618 add end
	
	/**
	 * 機器提供サービス契約番号検索処理をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.機器提供サービス契約を検索します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param svc_no　機器提供サービス契約番号。
	 * @param svc_cd　機器提供サービスコード。
	 * @param out_map　出力情報。
	 * @param svc_no_key　転記先機器提供サービス契約番号のkey。
	 * @param gene_key　転記先世代登録年月日時分秒のkey。
	 * @param err_val　エラーログ出力用文言。
	 * @return JBSbatServiceInterfaceMap　出力情報。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap executeKktkSvcNo(String svc_no,
														String svc_cd,
														JBSbatServiceInterfaceMap out_map,
														String svc_no_key,
														String gene_key,
														String err_val) throws Exception
	{
		// 機器提供サービス契約の検索
		JBSbatCommonDBInterface db_map = searchKktk(svc_no, svc_cd, err_val);

		// 検索結果がある場合、転記します
		if (null != db_map)
		{
			// 「機器提供サービス契約ステータス」が【締結済】【契約変更中】【サービス提供中】以外の場合、処理をスキップします
			if (!isSvcStat(db_map, JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_STAT) )
			{
				String value = "機器提供サービス契約番号（" + err_val + "）：" + svc_no + " " + getStatNm(db_map, JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_STAT);

				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, new String[]{value});
				throw new JBSbatBusinessError();
			}
			//上記以外の場合
			else
			{
				out_map.set(svc_no_key, svc_no);
				out_map.set(gene_key, JBSbatStringUtil.Rtrim(db_map.getString(JBSbatKK_T_KKTK_SVC_KEI.GENE_ADD_DTM)));
				out_map.set(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD, JBSbatStringUtil.Rtrim(db_map.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD)));
				out_map.setOutFlg(true);
			}
		}

		return out_map;
	}

	/**
	 * 機器提供サービス契約、サービス契約内訳を検索します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.機器提供サービス契約を検索します。<br>
	 *
	 * 2.サービス契約内訳を検索します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param svc_no　機器提供サービス契約番号。
	 * @param out_map　出力情報。
	 * @param svc_no_key　転記先機器提供サービス契約番号のkey。
	 * @param gene_key　転記先世代登録年月日時分秒のkey。
	 * @param ucwk_no_key　転記先サービス契約内訳番号のkey。
	 * @param ucwk_gene_key　転記先内訳世代登録年月日時分秒のkey。
	 * @param err_val　エラーログ出力用文言。
	 * @return JBSbatServiceInterfaceMap　出力情報。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap executeKKtkAndUcwk(String svc_no,
															JBSbatServiceInterfaceMap out_map,
															String svc_no_key,
															String gene_key,
															String ucwk_no_key,
															String ucwk_gene_key,
															String err_val) throws Exception
	{
		String[] param = null;

		// 機器提供サービス契約の検索
		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		JBSbatCommonDBInterface db_map = searchKktk(svc_no, KKTK_SVC_CD_STB, err_val);
		JBSbatCommonDBInterface db_map = searchKktk(svc_no, JBSbatKKConst.KKTK_SVC_CD_STB, err_val);
		// ++++++++++ v22.00.00 変更終了 ++++++++++

		// 検索結果がある場合、サービス契約内訳検索をします
		if (null != db_map)
		{
			// 「機器提供サービス契約ステータス」が【契約変更中】の場合、出力情報を返却します
			if (isSvcStatKktkChg(db_map, JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_STAT) )
			{
				out_map.set(svc_no_key, svc_no);
				out_map.set(gene_key, JBSbatStringUtil.Rtrim(db_map.getString(JBSbatKK_T_KKTK_SVC_KEI.GENE_ADD_DTM)));
				out_map.set(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD, JBSbatStringUtil.Rtrim(db_map.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD)));
				out_map.setOutFlg(true);
				return out_map;
			}

			
			out_map.set(svc_no_key, svc_no);
			out_map.set(gene_key, JBSbatStringUtil.Rtrim(db_map.getString(JBSbatKK_T_KKTK_SVC_KEI.GENE_ADD_DTM)));

			String ucwk_no = JBSbatStringUtil.Rtrim(db_map.getString(JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_UCWK_NO));
			param = new String[2];

			param[0] = ucwk_no;
			param[1] = super.opeDate;

			// サービス契約内訳を検索します
			executeKK_T_SVC_KEI_UCWK_KK_SELECT_020(param);
			db_map = db_KK_T_SVC_KEI_UCWK.selectNext();

			// 検索結果なしの場合、エラーとし処理中断します
			if (null == db_map)
			{
				String value = "サービス契約内訳番号：" + ucwk_no + "（機器提供サービス契約番号（" + err_val + "）：" + svc_no + "）";
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[]{"KK_T_SVC_KEI_UCWK", value});
			}

			// 「サービス契約内訳ステータス」が【締結済】【サービス提供中】以外の場合、処理をスキップします
			if (!isSvcStatUcwk(db_map, JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_STAT))
			{
				String value = "サービス契約内訳番号：" + ucwk_no + "（機器提供サービス契約番号（" + err_val + "）：" + svc_no + "）";
				value = value +  " " + getStatNm(db_map, JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_STAT);

				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, new String[]{value});
				throw new JBSbatBusinessError();
			}
			// 上記以外の場合
			else
			{
				// サービス契約内訳番号、世代登録年月日時分秒を転記
				out_map.set(ucwk_no_key, ucwk_no);
				out_map.set(ucwk_gene_key, JBSbatStringUtil.Rtrim(db_map.getString(JBSbatKK_T_SVC_KEI_UCWK.GENE_ADD_DTM)));
				out_map.setOutFlg(true);
			}
		}

		return out_map;
	}

	/**
	 * サービス契約ステータスの名称を返却します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.契約ステータス＝'010'：受付済 、'020'：照査済、'910'：解約済、'920'：キャンセル済を返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param db_map　検索結果。
	 * @param stat_key　契約ステータスのkey。
	 * @return String　名称。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String getStatNm(JBSbatCommonDBInterface db_map, String stat_key) throws Exception
	{
		String stat_cd = JBSbatStringUtil.Rtrim(db_map.getString(stat_key));
		String stat_nm = stat_cd;

		// ++++++++++ v22.00.00 変更開始 ++++++++++
//		if (KEI_STAT_UK.equals(stat_cd))
//		{
//			stat_nm = "受付済";
//		}
//		else if (KEI_STAT_SHOSA.equals(stat_cd))
//		{
//			stat_nm = "照査済";
//		}
//		else if (KEI_STAT_DSL.equals(stat_cd))
//		{
//			stat_nm = "解約済";
//		}
//		else if (KEI_STAT_CNCL.equals(stat_cd))
//		{
//			stat_nm = "キャンセル済";
//		}
//		else if (KEI_STAT_CHG.equals(stat_cd))
//		{
//			stat_nm = "契約変更中";
//		}
		
		if (JBSbatKKConst.SVC_KEI_STAT_UK_ZM.equals(stat_cd))
		{
			stat_nm = "受付済";
		}
		else if (JBSbatKKConst.SVC_KEI_STAT_SHOSA_ZM.equals(stat_cd))
		{
			stat_nm = "照査済";
		}
		else if (JBSbatKKConst.SVC_KEI_STAT_DLS_ZM.equals(stat_cd))
		{
			stat_nm = "解約済";
		}
		else if (JBSbatKKConst.SVC_KEI_STAT_CNCL_ZM.equals(stat_cd))
		{
			stat_nm = "キャンセル済";
		}
		else if (JBSbatKKConst.SVC_KEI_STAT_SVCCHG_CHU.equals(stat_cd))
		{
			stat_nm = "契約変更中";
		}
		// ++++++++++ v22.00.00 変更終了 ++++++++++
		return stat_nm;
	}
	
	/**
	 * SQLKEY(KK_SELECT_089)で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_089(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_089);
	}
	
// 2017/06/30 OM-2017-0000618 add start
	/**
	 * SQLKEY(KK_SELECT_240)で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_240(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI2.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_240);
	}
	
	/**
	 * SQLKEY(KK_SELECT_241)で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_241(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_KEI2.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_241);
	}
// 2017/06/30 OM-2017-0000618 add end
}
