/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKojihiKapKeiKisnSwch
*	ソースファイル名	：JBSbatKKKojihiKapKeiKisnSwch.java
*	作成者				：富士通　
*	作成日				：2018年04月03日
*＜機能概要＞
*　工事費割賦契約回線切替部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v37.00.00	2018/04/03   FJ)王		【ANK-3383-00-00】標準工事費分割請求（STEP2） 新規作成
*	v37.00.01	2018/06/04   FJ)王		【IT2-2018-0000046】障害対応
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JCCBatCommon;
import eo.business.util.table.JBSbatKK_T_ADCHG;
import eo.business.util.table.JBSbatKK_T_KAISEN_TG_SVKEI;
import eo.business.util.table.JBSbatKK_T_KOJIHI_KAP_KEI;
import eo.business.util.table.JBSbatKK_T_MANSION_BUKKEN;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKKojihiKapKeiKisnSwch extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/

	/** テーブル(回線対象サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KAISEN_TG_SVKEI = "KK_T_KAISEN_TG_SVKEI";

	/** テーブル(工事費割賦契約)*/
	private static final String D_TBL_NAME_KK_T_KOJIHI_KAP_KEI = "KK_T_KOJIHI_KAP_KEI";

	/** テーブル(住所変更)*/
	private static final String D_TBL_NAME_KK_T_ADCHG = "KK_T_ADCHG";
	
	/** テーブル(マンション物件)*/
	private static final String D_TBL_NAME_KK_T_MANSION_BUKKEN = "KK_T_MANSION_BUKKEN";

	/** テーブル(住所変更明細)*/
	private static final String D_TBL_NAME_KK_T_ADCHG_DTL = "KK_T_ADCHG_DTL";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";
	
	/** SQL定義キー(KK_SELECT_041)*/
	private static final String KK_T_KAISEN_TG_SVKEI_KK_SELECT_041 = "KK_SELECT_041";

	/** SQL定義キー(KK_SELECT_028)*/
	private static final String KK_T_ADCHG_KK_SELECT_028 = "KK_SELECT_028";

	/** SQL定義キー(KK_SELECT_008)*/
	private static final String KK_T_MANSION_BUKKEN_KK_SELECT_008 = "KK_SELECT_008";

	/** SQL定義キー(KK_SELECT_050)*/
	private static final String KK_T_ADCHG_DTL_KK_SELECT_050 = "KK_SELECT_050";

	/** SQL定義キー(KK_SELECT_363)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_363 = "KK_SELECT_363";

	/** テーブルアクセスクラス(回線対象サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KAISEN_TG_SVKEI = null;

	/** テーブルアクセスクラス(工事費割賦契約)*/
	private JBSbatSQLAccess db_KK_T_KOJIHI_KAP_KEI = null;
	
	/** テーブルアクセスクラス(住所変更)*/
	private JBSbatSQLAccess db_KK_T_ADCHG = null;

	/** テーブルアクセスクラス(マンション物件)*/
	private JBSbatSQLAccess db_KK_T_MANSION_BUKKEN = null;

	/** テーブルアクセスクラス(住所変更明細)*/
	private JBSbatSQLAccess db_KK_T_ADCHG_DTL = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** 工事費割賦契約項目数 */
	private static final int KK_T_KOJIHI_KAP_KEI_CNT = 32;
	
	/** データ(1件) */
	private String dataLine = null;

	/** 工事費割賦契約回線切替対象ファイルパス */
	private String kojihiKapKeiKisnSwchFilePath = null;

	/** 工事費割賦契約回線切替対象ファイルオブジェクト */
	private JBSbatInputFileUtil kojihiKapKeiKisnSwchFileObj = null;

	/** 工事費割賦契約回線切替対象ファイルオブジェクト */
	private JBSbatDefFileUtil kojihiKapKeiKisnSwchFileDefObj = null;
		
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_KAISEN_TG_SVKEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAISEN_TG_SVKEI);
		db_KK_T_KOJIHI_KAP_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KOJIHI_KAP_KEI);
		db_KK_T_ADCHG = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADCHG);
		db_KK_T_MANSION_BUKKEN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MANSION_BUKKEN);
		db_KK_T_ADCHG_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADCHG_DTL);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);

		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// FreeItem取得（FREE項目には「入力ファイル定義名1;入力ファイルパス1;」が設定されている）
		String[] freeItems = commonItem.getFreeItem().split(";");
		
		if (freeItems != null && freeItems.length == 2)
		{
			// 工事費割賦契約回線切替対象ファイルパス
			kojihiKapKeiKisnSwchFilePath = freeItems[1];
			// 工事費割賦契約回線切替対象ファイルオブジェクトを生成する
			kojihiKapKeiKisnSwchFileObj = new JBSbatInputFileUtil(kojihiKapKeiKisnSwchFilePath);
			// 工事費割賦契約回線切替対象定義ファイル名を取得する
			String kojihiKapKeiKisnSwchFileDefName = JBSbatAplConst.getAplConstValue("IND") + freeItems[0] + ".def";
			// 工事費割賦契約回線切替対象定義ファイルオブジェクトを生成する
			kojihiKapKeiKisnSwchFileDefObj  = new JBSbatDefFileUtil(kojihiKapKeiKisnSwchFileDefName, kojihiKapKeiKisnSwchFileObj);
			// Readerオブジェクトを生成する。
			kojihiKapKeiKisnSwchFileObj.createReader();
		}
		else 
		{
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE, new String[]{"FREE"});
		}

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		// 工事費割賦契約回線切替対象ファイル
		while (kojihiKapKeiKisnSwchFileObj.ready())
		{
			// ファイルレコード取得
			dataLine = kojihiKapKeiKisnSwchFileObj.readLine();
			
			// 定義ファイルに設定された区切り文字で分割
			String[] cols = dataLine.split(kojihiKapKeiKisnSwchFileDefObj.getDelimiter(), -1);
			
			// 回線切替先のサービス回線契約内訳番号を取得
			String svcKeiKaisenUcwkNo = getSvcKeiKaisenUcwkNo(cols);
			
			if (null == svcKeiKaisenUcwkNo || "".equals(svcKeiKaisenUcwkNo))
			{
				// サービス回線契約内訳番号が空文字の場合、処理対象外レコードとしてレコードをスキップし、次のレコード処理へと移る。
				continue;
			}
			
			// レコード登録のため、工事費割賦契約に排他検索をかける
			JBSbatCommonDBInterface excSearchList = excSearchKojihiKapKei(cols);
			
			// 登録処理
			addKojihiKapKei(excSearchList, svcKeiKaisenUcwkNo);
			
		}
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KAISEN_TG_SVKEI.close();
		db_KK_T_KOJIHI_KAP_KEI.close();
		db_KK_T_ADCHG.close();
		db_KK_T_MANSION_BUKKEN.close();
		db_KK_T_ADCHG_DTL.close();
		db_KK_T_SVC_KEI.close();

		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * SQLKEY(KK_SELECT_041)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KAISEN_TG_SVKEI_KK_SELECT_041(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_KAISEN_TG_SVKEI.selectBySqlDefine(paramList, KK_T_KAISEN_TG_SVKEI_KK_SELECT_041);
	}

	/**
	 * SQLKEY(KK_SELECT_028)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_ADCHG_KK_SELECT_028(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_ADCHG.selectBySqlDefine(paramList, KK_T_ADCHG_KK_SELECT_028);
	}

	/**
	 * SQLKEY(KK_SELECT_008)で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_MANSION_BUKKEN_KK_SELECT_008(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_MANSION_BUKKEN.selectBySqlDefine(paramList, KK_T_MANSION_BUKKEN_KK_SELECT_008);
	}

	/**
	 * SQLKEY(KK_SELECT_050)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_ADCHG_DTL_KK_SELECT_050(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_ADCHG_DTL.selectBySqlDefine(paramList, KK_T_ADCHG_DTL_KK_SELECT_050);
	}

	/**
	 * SQLKEY(KK_SELECT_363)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KK_SELECT_363(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_363);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	工事費割賦契約番号				KOJIHI_KAP_KEI_NO
	 *		 	世代登録年月日時分				GENE_ADD_DTM
	 *		 	割賦契約ステータス				KAP_KEI_STAT
	 *		 	割賦プランコード				KAP_PLAN_CD
	 *		 	サービス契約回線内訳番号				SVC_KEI_KAISEN_UCWK_NO
	 *		 	初回請求サービス契約番号				FIRST_SEIKY_SVC_KEI_NO
	 *		 	申込明細番号				MSKM_DTL_NO
	 *		 	異動区分				IDO_DIV
	 *		 	割賦一括請求切替年月				KAP_IKT_SIKY_SWCH_YM
	 *		 	割賦契約締結年月日				KAP_KEI_CNC_YMD
	 *		 	割賦契約終了年月日				KAP_KEI_ENDYMD
	 *		 	割賦契約キャンセル年月日				KAP_KEI_CANCEL_YMD
	 *		 	割賦契約サービス開始年月日				KAP_KEI_SVC_STAYMD
	 *		 	割賦契約課金開始年月日				KAP_KEI_CHRG_STAYMD
	 *		 	割賦請求開始年月				KAP_SEIKY_STA_YM
	 *		 	割賦支払い残回数				KAP_PAY_ZAN_CNT
	 *		 	割賦請求済回数				KAP_SEIKY_ZUMI_CNT
	 *		 	割賦請求済金額				KAP_SEIKY_ZUMI_AMNT
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 *		 	分割支払会計計上年月				BUNKATSU_PAY_KAIK_SUMUP_YM
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KOJIHI_KAP_KEI_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("KOJIHI_KAP_KEI_NO", setParam[0]);
		setMap.setValue("GENE_ADD_DTM", setParam[1]);
		setMap.setValue("KAP_KEI_STAT", setParam[2]);
		setMap.setValue("KAP_PLAN_CD", setParam[3]);
		setMap.setValue("SVC_KEI_KAISEN_UCWK_NO", setParam[4]);
		setMap.setValue("FIRST_SEIKY_SVC_KEI_NO", setParam[5]);
		setMap.setValue("MSKM_DTL_NO", setParam[6]);
		setMap.setValue("IDO_DIV", setParam[7]);
		setMap.setValue("KAP_IKT_SIKY_SWCH_YM", setParam[8]);
		setMap.setValue("KAP_KEI_CNC_YMD", setParam[9]);
		setMap.setValue("KAP_KEI_ENDYMD", setParam[10]);
		setMap.setValue("KAP_KEI_CANCEL_YMD", setParam[11]);
		setMap.setValue("KAP_KEI_SVC_STAYMD", setParam[12]);
		setMap.setValue("KAP_KEI_CHRG_STAYMD", setParam[13]);
		setMap.setValue("KAP_SEIKY_STA_YM", setParam[14]);
		setMap.setValue("KAP_PAY_ZAN_CNT", setParam[15]);
		setMap.setValue("KAP_SEIKY_ZUMI_CNT", setParam[16]);
		setMap.setValue("KAP_SEIKY_ZUMI_AMNT", setParam[17]);
		setMap.setValue("ADD_DTM", setParam[18]);
		setMap.setValue("ADD_OPEACNT", setParam[19]);
		setMap.setValue("UPD_DTM", setParam[20]);
		setMap.setValue("UPD_OPEACNT", setParam[21]);
		setMap.setValue("DEL_DTM", setParam[22]);
		setMap.setValue("DEL_OPEACNT", setParam[23]);
		setMap.setValue("MK_FLG", setParam[24]);
		setMap.setValue("ADD_UNYO_YMD", setParam[25]);
		setMap.setValue("ADD_TRN_ID", setParam[26]);
		setMap.setValue("UPD_UNYO_YMD", setParam[27]);
		setMap.setValue("UPD_TRN_ID", setParam[28]);
		setMap.setValue("DEL_UNYO_YMD", setParam[29]);
		setMap.setValue("DEL_TRN_ID", setParam[30]);
		setMap.setValue("BUNKATSU_PAY_KAIK_SUMUP_YM", setParam[31]);
	
		// DBアクセスを実行します
		db_KK_T_KOJIHI_KAP_KEI.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**▼▼▼▼▼▼業務チームで作成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * 回線切替先情報を検索し、サービス契約回線内訳番号を取得します。<br>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String getSvcKeiKaisenUcwkNo(String[] paramList) throws Exception
	{
		// サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = "";
		
		// 回線切替対象の判定
		// 設定値のマップを作成
		Object[] setParam = new Object[1];
// IT2-2018-0000046 DEL START
//		// サービス契約番号
//		setParam[0] = paramList[4];
//		// DBアクセスを実行します
//		executeKK_T_KAISEN_TG_SVKEI_KK_SELECT_041(setParam);
//		// 結果を取得
//		JBSbatCommonDBInterface resultKaisenNo = db_KK_T_KAISEN_TG_SVKEI.selectNext();
//		
//		if (null != resultKaisenNo)
//		{
// IT2-2018-0000046 DEL END
			// 住所変更情報取得
			// 設定値のマップを作成
			setParam = new Object[1];

			// サービス契約回線内訳番号
			setParam[0] = paramList[2];
			
			// DBアクセスを実行します
			executeKK_T_ADCHG_KK_SELECT_028(setParam);

			// 結果を取得
			JBSbatCommonDBInterface resultAdchg = db_KK_T_ADCHG.selectNext();

			if (null != resultAdchg)
			{
				// マンション物件番号
				String mansionBukkenNo = resultAdchg.getString(JBSbatKK_T_MANSION_BUKKEN.MANSION_BUKKEN_NO);
				
				// 物件番号取得できた場合
				if (null != mansionBukkenNo && !"".equals(mansionBukkenNo))
				{
					// ホーム/メゾンの判定を行う
					// 設定値のマップを作成
					setParam = new Object[1];

					// マンション物件番号
					setParam[0] = mansionBukkenNo;

					// DBアクセスを実行します
					executeKK_T_MANSION_BUKKEN_KK_SELECT_008(setParam);

					// 結果を取得
					JBSbatCommonDBInterface resultMansion = db_KK_T_MANSION_BUKKEN.selectNext();
					
					// 取得できなかった場合、空白を戻す
					if (null == resultMansion)
					{
						return svcKeiKaisenUcwkNo;
					}
				}
				
				// 住所変更元に初回請求サービス契約番号に紐付くサービスが残るかを判断する
				// 設定値のマップを作成
				setParam = new Object[2];
				
				// 住所変更番号
				setParam[0] = resultAdchg.getString(JBSbatKK_T_ADCHG.ADCHG_NO);
				// 変更前識別番号
				setParam[1] = paramList[3];
				
				// DBアクセスを実行します
				executeKK_T_ADCHG_DTL_KK_SELECT_050(setParam);

				// 結果を取得
				JBSbatCommonDBInterface resultAdchgDtl = db_KK_T_ADCHG_DTL.selectNext();

				// 取得できた場合、空白を戻す
				if (null != resultAdchgDtl)
				{
					return svcKeiKaisenUcwkNo;
				}
				
				// 住所変更先のサービスがテレビのみかを判断する
				// 設定値のマップを作成
				setParam = new Object[2];
				
				// サービス契約回線内訳番号
				setParam[0] = resultAdchg.getString(JBSbatKK_T_ADCHG.ITENS_SVKEI_KISUW_NO);
				// 予約適用年月日
				setParam[1] = commonItem.getOpeDate();
				
				// DBアクセスを実行します
				executeKK_T_SVC_KEI_KK_SELECT_363(setParam);

				// 結果を取得
				JBSbatCommonDBInterface resultSvcKei = db_KK_T_SVC_KEI.selectNext();
				
				// 取得できなかった場合、空白を戻す
				if (null == resultSvcKei)
				{
					return svcKeiKaisenUcwkNo;
				}

				// 全部のレコードが取得できた場合、移転先サービス契約回線内訳番号を戻す
				svcKeiKaisenUcwkNo = resultAdchg.getString(JBSbatKK_T_ADCHG.ITENS_SVKEI_KISUW_NO);
			}
			else
			{
				// 住所変更情報がなかった場合、サービス契約回線内訳番号を戻す
				svcKeiKaisenUcwkNo = paramList[4];
			}
// IT2-2018-0000046 DEL START
//		}
// IT2-2018-0000046 DEL END
			
		return svcKeiKaisenUcwkNo;
	}
		
	/**
	 * 工事費割賦契約に排他検索をかける<br>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface excSearchKojihiKapKei(Object[] paramList) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		
		// 工事費割賦契約番号
		whereMap.setValue(JBSbatKK_T_KOJIHI_KAP_KEI.KOJIHI_KAP_KEI_NO, paramList[0]);
		
		// 世代登録年月日時分秒
		whereMap.setValue(JBSbatKK_T_KOJIHI_KAP_KEI.GENE_ADD_DTM, paramList[1]);
		
		// 排他検索の実施
		JBSbatCommonDBInterface outMap = db_KK_T_KOJIHI_KAP_KEI.selectByPrimaryKeysForUpdateWait(whereMap);
		
		return outMap;
	}
	
	/**
	 * 工事費割賦契約を登録します。<br>
	 * @param excSearchList 排他検索の結果。
	 * @param svcKeiKaisenUcwkNo サービス契約回線内訳番号。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void addKojihiKapKei(JBSbatCommonDBInterface excSearchList, String svcKeiKaisenUcwkNo) throws Exception
	{
		// レコードが存在するとき、データを登録する。
		if (null != excSearchList)
		{
			// 登録用SQLの設定値のマップを作成します
			Object[] setParam = new Object[KK_T_KOJIHI_KAP_KEI_CNT];
			
			// 工事費割賦契約番号
			setParam[0] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KOJIHI_KAP_KEI_NO);
			// 世代登録年月日時分秒
			setParam[1] = JCCBatCommon.getSysDateTimeStamp();
			// 割賦契約ステータス
			setParam[2] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_STAT);
			// 割賦プランコード
			setParam[3] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_PLAN_CD);
			// サービス契約回線内訳番号
			setParam[4] = svcKeiKaisenUcwkNo;
			// 初回請求サービス契約番号
			setParam[5] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.FIRST_SEIKY_SVC_KEI_NO);
			// 申込明細番号
			setParam[6] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.MSKM_DTL_NO);
			// 異動区分
			setParam[7] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.IDO_DIV);
			// 割賦一括請求切替年月
			setParam[8] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_IKT_SIKY_SWCH_YM);
			// 割賦契約締結年月日
			setParam[9] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_CNC_YMD);
			// 割賦契約終了年月日
			setParam[10] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_ENDYMD);
			// 割賦契約キャンセル年月日
			setParam[11] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_CANCEL_YMD);
			// 割賦契約サービス開始年月日
			setParam[12] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_SVC_STAYMD);
			// 割賦契約課金開始年月日
			setParam[13] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_KEI_CHRG_STAYMD);
			// 割賦請求開始年月
			setParam[14] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_SEIKY_STA_YM);
			// 割賦支払い残回数
			setParam[15] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_PAY_ZAN_CNT);
			// 割賦請求済回数
			setParam[16] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_SEIKY_ZUMI_CNT);
			// 割賦請求済金額
			setParam[17] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.KAP_SEIKY_ZUMI_AMNT);
			// 登録年月日時分秒
			setParam[18] = JBSbatDateUtil.getSystemDateTimeStamp();
			// 登録オペレータアカウント
			setParam[19] = super.batchUserId;
			// 更新年月日時分秒
			setParam[20] = JBSbatDateUtil.getSystemDateTimeStamp();
			// 更新オペレータアカウント
			setParam[21] = super.batchUserId;
			// 削除年月日時分秒
			setParam[22] = "";
			// 削除オペレータアカウント
			setParam[23] = "";
			// 無効フラグ(0：有効)
			setParam[24] = JBSbatKKConst.MK_FLG_YK;
			// 登録運用年月日
			setParam[25] = "";
			// 登録処理ID
			setParam[26] = "";
			// 更新運用年月日
			setParam[27] = "";
			// 更新処理ID
			setParam[28] = "";
			// 削除運用年月日
			setParam[29] = "";
			// 削除処理ID
			setParam[30] = "";
			// 分割支払会計計上年月
			setParam[31] = excSearchList.getString(JBSbatKK_T_KOJIHI_KAP_KEI.BUNKATSU_PAY_KAIK_SUMUP_YM);
			
			// DBアクセスを実行します
			executeKK_T_KOJIHI_KAP_KEI_PKINSERT(setParam);
		}
	}
	/**▲▲▲▲▲▲業務が作成したメソッドです 終了▲▲▲▲▲▲*/
}
