/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKSodUpdInfCst
*	ソースファイル名	：JBSbatKKSodUpdInfCst.java
*	作成者				：富士通　
*	作成日				：2012年10月16日
*＜機能概要＞
*　ＳＯＤ更新情報抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/10/16   富士通		新規作成
*	v8.00.00	2014/04/28	FJ)星野		OM-2014-0001680対応
*	v35.00.00	2017/10/31	FJ)河邊		【OM-2017-0000969】住変解約オーダ二重発行
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM102;
import eo.business.util.table.JBSbatKK_T_ADCHG;
import eo.business.util.table.JBSbatKK_T_ADCHG_DTL;
import eo.business.util.table.JBSbatKK_T_KJ_FIN_WK;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVKEI_KAISEN_UW;
import eo.business.util.table.JBSbatKU_T_KOJIAK;
import eo.common.util.JKKStringUtil;
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.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKSodUpdInfCst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービス契約回線内訳)*/
	private static final String D_TBL_NAME_KK_T_SVKEI_KAISEN_UW = "KK_T_SVKEI_KAISEN_UW";

// ST2-2013-0001434対応 20130316 星野 ADD START
	/** テーブル(住所変更)*/
	private static final String D_TBL_NAME_KK_T_ADCHG = "KK_T_ADCHG";
// ST2-2013-0001434対応 20130316 星野 ADD END
	/** テーブル(住所変更明細)*/
	private static final String D_TBL_NAME_KK_T_ADCHG_DTL = "KK_T_ADCHG_DTL";
	
	/** テーブル(工事完了ワーク)*/
	private static final String D_TBL_NAME_KK_T_KJ_FIN_WK = "KK_T_KJ_FIN_WK";

	/** テーブル(サービス契約＿工事案件)*/
	private static final String D_TBL_NAME_KU_T_SVKEI_KOJIAK = "KU_T_SVKEI_KOJIAK";

	/** テーブル(提供方式契約)*/
	private static final String D_TBL_NAME_KK_T_TK_HOSHIKI_KEI = "KK_T_TK_HOSHIKI_KEI";

// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD START
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";
// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD END

	/** SQL定義キー(KK_SELECT_026)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_026 = "KK_SELECT_026";

	/** SQL定義キー(KK_SELECT_019)*/
	private static final String KK_T_KJ_FIN_WK_KK_SELECT_019 = "KK_SELECT_019";

	/** SQL定義キー(KK_SELECT_020)*/
	private static final String KK_T_KJ_FIN_WK_KK_SELECT_020 = "KK_SELECT_020";

	/** SQL定義キー(KK_SELECT_007)*/
	private static final String KU_T_SVKEI_KOJIAK_KK_SELECT_007 = "KK_SELECT_007";

	/** SQL定義キー(KK_SELECT_023)*/
	private static final String KK_T_TK_HOSHIKI_KEI_KK_SELECT_023 = "KK_SELECT_023";

	/** SQL定義キー(KK_SELECT_039)*/
	private static final String KK_T_SVKEI_KAISEN_UW_KK_SELECT_039 = "KK_SELECT_039";

// OM-2013-0000735 2013.09.08 T.TORIKAI ADD START
	/** SQL定義キー(KK_SELECT_003)*/
	private static final String KK_T_ADCHG_DTL_KK_SELECT_003 = "KK_SELECT_003";
// OM-2013-0000735 2013.09.08 T.TORIKAI ADD END
// ST2-2013-0001008対応 20130301 OKITA ADD START
	/** SQL定義キー(KK_SELECT_020)*/
	private static final String KK_T_ADCHG_DTL_KK_SELECT_020 = "KK_SELECT_020";
// ST2-2013-0001008対応 20130301 OKITA ADD END
// ST2-2013-0001403対応 20130316 星野 ADD START
	/** SQL定義キー(KK_SELECT_021)*/
	private static final String KK_T_ADCHG_DTL_KK_SELECT_021 = "KK_SELECT_021";
// ST2-2013-0001403対応 20130316 星野 ADD END
// ST2-2013-0001434対応 20130316 星野 ADD START
	/** SQL定義キー(KK_SELECT_022)*/
	private static final String KK_T_ADCHG_DTL_KK_SELECT_022 = "KK_SELECT_022";
// ST2-2013-0001434対応 20130316 星野 ADD END
// OM-2013-0000735 2013.09.08 T.TORIKAI ADD START
	/** SQL定義キー(KK_SELECT_023)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_023 = "KK_SELECT_023";
// OM-2013-0000735 2013.09.08 T.TORIKAI ADD END
// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD START
	/** SQL定義キー(KK_SELECT_250)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_251 = "KK_SELECT_251";
// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD END

	/** テーブルアクセスクラス(サービス契約回線内訳)*/
	private JBSbatSQLAccess db_KK_T_SVKEI_KAISEN_UW = null;

// ST2-2013-0001434対応 20130316 星野 ADD START
	/** テーブルアクセスクラス(住所変更)*/
	private JBSbatSQLAccess db_KK_T_ADCHG = null;
// ST2-2013-0001434対応 20130316 星野 ADD END
// ST2-2013-0001008対応 20130301 OKITA ADD START
	/** テーブルアクセスクラス(住所変更明細)*/
	private JBSbatSQLAccess db_KK_T_ADCHG_DTL = null;
// ST2-2013-0001008対応 20130301 OKITA ADD END

	/** テーブルアクセスクラス(工事完了ワーク)*/
	private JBSbatSQLAccess db_KK_T_KJ_FIN_WK = null;

	/** テーブルアクセスクラス(サービス契約＿工事案件)*/
	private JBSbatSQLAccess db_KU_T_SVKEI_KOJIAK = null;

	/** テーブルアクセスクラス(提供方式契約)*/
	private JBSbatSQLAccess db_KK_T_TK_HOSHIKI_KEI = null;

// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD START
	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD END

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 完了フラグ(未了) */
	private final static String FIN_FLG_NOT_FIN = "0";

	/** 完了フラグ(完了) */
	private final static String FIN_FLG_FIN = "1";

	/** ディレイド（起動） */
	public static final String DELAYED_START = "1";

	/** ディレイド（でない） */
	public static final String DELAYED_NOT_START = "0";

// ST2-2013-0001008対応 20130301 OKITA ADD START
	/** 住所変更明細種別コード（工事案件番号） */
	private static final String ADCHG_DTL_SBT_CD_KOJIAK_NO = "06";
	
	/** 工事案件ステータス（中止） */
	public static final String KU_T_KOJIAK_KOJIAK_STAT = "900";
// ST2-2013-0001008対応 20130301 OKITA ADD END

// OM-2013-0000735 2013.09.08 T.TORIKAI ADD START
	/** 住所変更明細種別コード（ サービス契約番号） */
	private static final String ADCHG_DTL_SBT_CD_SVC_KEI_NO = "01";
// OM-2013-0000735 2013.09.08 T.TORIKAI ADD END

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_SVKEI_KAISEN_UW = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEI_KAISEN_UW);
// ST2-2013-0001434対応 20130316 星野 ADD START
		db_KK_T_ADCHG = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADCHG);
// ST2-2013-0001434対応 20130316 星野 ADD END
// ST2-2013-0001008対応 20130301 OKITA ADD START
		db_KK_T_ADCHG_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADCHG_DTL);
// ST2-2013-0001008対応 20130301 OKITA ADD END
		db_KK_T_KJ_FIN_WK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KJ_FIN_WK);
		db_KU_T_SVKEI_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_SVKEI_KOJIAK);
		db_KK_T_TK_HOSHIKI_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_TK_HOSHIKI_KEI);
// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD START
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		// +++++ 初期処理 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

		// ----- 出力部品 -----
		JBSbatOutputItem outputItem = new JBSbatOutputItem();

		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		outMap.setOutFlg(true);

		// ----- 入力電文 -----
		// 住所変更番号
		String inAdchgNo = inMap.getString(JBSbatKK_T_ADCHG.ADCHG_NO);
		// 申込番号
		String inMskmNo = inMap.getString(JBSbatKK_T_ADCHG.MSKM_NO);
		// 移転元サービス契約回線内訳番号
		String inItnmSvkeiKisuwNo = inMap.getString(JBSbatKK_T_ADCHG.ITNM_SVKEI_KISUW_NO);
		// 移転先サービス契約回線内訳番号
		String inItensSvkeiKisuwNo = inMap.getString(JBSbatKK_T_ADCHG.ITENS_SVKEI_KISUW_NO);
		// 移転元サービス契約回線内訳世代
		String inItnmSvkeiKisuwGeneAddDtm = inMap.getString("ITNM_SVKEI_KISUW_GENE_ADD_DTM");
		// 移転先サービス契約回線内訳世代
		String inItensSvkeiKisuwGeneAddDtm = inMap.getString("ITENS_SVKEI_KISUW_GENE_ADD_DTM");
		// 変更前識別番号（サービス契約番号）
		String inChbfSkbtNo = inMap.getString(JBSbatKK_T_ADCHG_DTL.CHBF_SKBT_NO);
		// 変更後識別番号（サービス契約番号）
		String inChafSkbtNo = inMap.getString(JBSbatKK_T_ADCHG_DTL.CHAF_SKBT_NO);
		// サービス契約異動種別コード
		String inSvcKeiIdoSbtCd = inMap.getString(JBSbatKK_T_ADCHG_DTL.SVC_KEI_IDO_SBT_CD);
// 2012/12/30 IT1-2012-0002621 ADD-START
		// 割引自動適用実行フラグ
		String wribExeFlg = inMap.getString("WRIB_EXE_FLG");
// 2012/12/30 IT1-2012-0002621 ADD-END
		
		// ディレイド起動フラグ
		String isDelayed = inMap.getString("IS_DELAYED");
		if (isDelayed == null || "".equals(isDelayed.trim())) {
			isDelayed = DELAYED_NOT_START;
		}

		// +++++ 主処理 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// OM-2014-0001680対応 20140428 星野 DEL START
//// ST2-2013-0001008 20130301 OKITA START
//		// 処理対象外判定 工事案件ステータス＝900(中止)データの場合、処理対象外
//		executeKK_T_ADCHG_DTL_KK_SELECT_020(new String[]{inAdchgNo, ADCHG_DTL_SBT_CD_KOJIAK_NO, KU_T_KOJIAK_KOJIAK_STAT});
//		JBSbatCommonDBInterface kojiakInf = db_KK_T_ADCHG_DTL.selectNext();
//		if (kojiakInf != null) {
//			// 業務ログをワーニング出力し、処理をスキップする
//// OM-2013-0000735 2013.09.08 T.TORIKAI MOD START
////			super.logPrint.printBusinessErrorLog("EKKB0310JW", new String[]{"新設工事","工事案件ステータス", "ADCHG_NO:[" + inAdchgNo + "], KOJIAK_NO:[" + kojiakInf.getValue("KOJIAK_NO") + "]"});
//			String msg = "新設工事が中止されているため処理対象外となります。";
//			msg += "住所変更番号:" + inAdchgNo;
//			msg += " 工事案件番号:" + kojiakInf.getValue("KOJIAK_NO");
//			msg += getLogMsgKojiStop(inAdchgNo);
//			super.logPrint.printBusinessErrorLog("EKKB0310JW", new String[]{"新設工事","工事案件ステータス", msg});
//// OM-2013-0000735 2013.09.08 T.TORIKAI MOD END
//			return outputItem;
//		}
//// ST2-2013-0001008 20130301 OKITA END
// OM-2014-0001680対応 20140428 星野 DEL END
		// 住所変更番号
		String adchgNo = "";
		// 申込番号
		String mskmNo = "";
		// 新設サービス契約回線内訳番号
		String newSvkeiKisuwNo = "";
		// 撤去サービス契約回線内訳番号
		String dslSvkeiKisuwNo = "";
		// 新設サービス契約番号
		String newSvcKeiNo = "";
		// 撤去サービス契約番号
		String dslSvcKeiNo = "";
		// サービス契約異動種別コード
		String svcKeiIdoSbtCd = "";
		// 新設サービス契約回線内訳世代
		String newSvkeiKisuwGene = "";
		// 撤去サービス契約回線内訳世代
		String dslSvkeiKisuwGene = "";
		// 新設完了フラグ
		String newFinFlg = FIN_FLG_NOT_FIN;
		// 撤去完了フラグ
		String dslFinFlg = FIN_FLG_NOT_FIN;
		
// 2012/12/30 IT1-2012-0002621 ADD-START
		if ("1".equals(wribExeFlg)) {
			// ----- 中間ファイルに出力 -----
			executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_039(new String[]{inItensSvkeiKisuwNo, opeDate, opeDate, opeDate});
			if (db_KK_T_SVKEI_KAISEN_UW.selectNext() != null)
			{
				// 住所変更番号
				adchgNo = inAdchgNo;
				// 申込番号
				mskmNo = inMskmNo;
				// 移転先サービス契約回線内訳番号
				newSvkeiKisuwNo = inItensSvkeiKisuwNo;
				// 変更後サービス契約番号
				newSvcKeiNo = inChafSkbtNo;
				// サービス契約異動種別コード
				svcKeiIdoSbtCd = inSvcKeiIdoSbtCd;
				// 新設サービス契約回線内訳世代
				newSvkeiKisuwGene = inItensSvkeiKisuwGeneAddDtm;
				// 新設完了フラグ
				newFinFlg = FIN_FLG_FIN;
			}
			else
			{
				return outputItem;
			}
		}
		else
		{
// 2012/12/30 IT1-2012-0002621 ADD-END
	
			// ----- ディレイドの起動を確認 -----
			if (DELAYED_START.equals(isDelayed)) {
	
				// ----- 中間ファイルに出力 -----
				if (!(inChafSkbtNo == null || "".equals(inChafSkbtNo.trim()))) {
					// 住所変更番号
					adchgNo = inAdchgNo;
					// 申込番号
					mskmNo = inMskmNo;
					// 移転先サービス契約回線内訳番号
					newSvkeiKisuwNo = inItensSvkeiKisuwNo;
					// 変更後サービス契約番号
					newSvcKeiNo = inChafSkbtNo;
					// サービス契約異動種別コード
					svcKeiIdoSbtCd = inSvcKeiIdoSbtCd;
					// 新設サービス契約回線内訳世代
					newSvkeiKisuwGene = inItensSvkeiKisuwGeneAddDtm;
					// 新設完了フラグ
					newFinFlg = FIN_FLG_FIN;
				}
			}
			
// IT1-2013-0001122対応 20130502 星野 ADD START
			// 手動の場合はディレイド以外の新設完了なし
			if( !isSyudo(inAdchgNo) ){
//IT1-2013-0001122対応 20130502 星野 ADD END
	// ST2-2013-0001434対応 20130316 星野 ADD START
				// 手動確定済フラグ
				boolean isDelayedZumi = isDelayedZumi(inAdchgNo);
	// ST2-2013-0001434対応 20130316 星野 ADD END
				
				// ----- 入居予定日の到来を確認 -----
				// 入居予定日が到来したサービス契約回線内訳情報
				JBSbatCommonDBInterface nyukyoRsvTriKisnInfo = null;
				if (!JKKStringUtil.isNullBlank(inItensSvkeiKisuwNo)
				) {
					// サービス契約回線内訳番号と運用日の前日を基にサービス契約回線内訳を取得
					executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_026(new String[]{inItensSvkeiKisuwNo, JBSbatDateUtil.adjustDate(opeDate, 1)});
					nyukyoRsvTriKisnInfo = db_KK_T_SVKEI_KAISEN_UW.selectNext();
				}
		
				// 入居予定日が到来した場合
				// そもそも新設するサービス契約があるか？
				if (!(inChafSkbtNo == null || "".equals(inChafSkbtNo.trim()))) {
		
					if (nyukyoRsvTriKisnInfo != null) {
						
	// ST2-2013-0001434対応 20130316 星野 ADD START
						
						// 手動確定済でないことを確認（二重起動防止）
						if(!isDelayedZumi){
							
							// 新設工事完了日を取得
							String newKojiFinYmd = getNewKojiFinYmd(inAdchgNo,inChafSkbtNo);
							// 新設工事未完了、または当日であることをチェック（二重起動防止）
							if( isBlank(newKojiFinYmd) || opeDate.equals(newKojiFinYmd) ){
	// ST2-2013-0001434対応 20130316 星野 ADD END
								
								// ----- 中間ファイルに出力 -----
								// 住所変更番号
								adchgNo = inAdchgNo;
								// 申込番号
								mskmNo = inMskmNo;
								// 移転先サービス契約回線内訳番号
								newSvkeiKisuwNo = inItensSvkeiKisuwNo;
								// 変更後サービス契約番号
								newSvcKeiNo = inChafSkbtNo;
								// サービス契約異動種別コード
								svcKeiIdoSbtCd = inSvcKeiIdoSbtCd;
								// 新設サービス契約回線内訳世代
								newSvkeiKisuwGene = inItensSvkeiKisuwGeneAddDtm;
								// 新設完了フラグ
								newFinFlg = FIN_FLG_FIN;
								
	// ST2-2013-0001434対応 20130316 星野 ADD START
							}
						}
	// ST2-2013-0001434対応 20130316 星野 ADD END
					}
				}
		
				// ----- 新設工事の完了を確認 -----
				// そもそも新設するサービス契約があるか？
				if (!(inChafSkbtNo == null || "".equals(inChafSkbtNo.trim()))) {
					
	// ST2-2013-0001434対応 20130316 星野 ADD START
					
					// 手動確定済でないことを確認（二重起動防止）
					if(!isDelayedZumi){
						
						// 入居予定日を取得
						String nyukyoRsvYmd = "";
						JBSbatCommonDBInterface newKaisenInfo = executeKK_T_SVKEI_KAISEN_UW_PKSELECT(new String[]{inItensSvkeiKisuwNo, inItensSvkeiKisuwGeneAddDtm});
						if(newKaisenInfo!=null && newKaisenInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.NYUKYO_RSV_YMD) != null){
							nyukyoRsvYmd = newKaisenInfo.getString(JBSbatKK_T_SVKEI_KAISEN_UW.NYUKYO_RSV_YMD).trim();
						}
						
						// 入居予定日が到来していないことを確認（二重起動防止）
						if(opeDate.compareTo(nyukyoRsvYmd) < 0){
	// ST2-2013-0001434対応 20130316 星野 ADD START
				
							// 住所変更番号と運用日を基に新設の工事完了ワークを取得
							executeKK_T_KJ_FIN_WK_KK_SELECT_020(new String[]{inAdchgNo, opeDate});
				
							JBSbatCommonDBInterface newKjFinRnkiInfo = null;
							for (newKjFinRnkiInfo = db_KK_T_KJ_FIN_WK.selectNext(); newKjFinRnkiInfo != null; newKjFinRnkiInfo = db_KK_T_KJ_FIN_WK.selectNext()) {
				
								String newKojiakNo = null;
								newKojiakNo = newKjFinRnkiInfo.getString(JBSbatKK_T_KJ_FIN_WK.KOJIAK_NO);
				
// IT2-2013-0000576 2013.07.02 T.TORIKAI MOD START ※コメントアウトされていた3行を元に戻す
								executeKU_T_SVKEI_KOJIAK_KK_SELECT_007(new String[]{inChafSkbtNo, newKojiakNo});
								
								if (db_KU_T_SVKEI_KOJIAK.selectNext() != null) {
// IT2-2013-0000576 2013.07.02 T.TORIKAI MOD END
				
									// ----- 中間ファイルに出力 -----
									// 住所変更番号
									adchgNo = inAdchgNo;
									// 申込番号
									mskmNo = inMskmNo;
									// 移転先サービス契約回線内訳番号
									newSvkeiKisuwNo = inItensSvkeiKisuwNo;
									// 変更後サービス契約番号
									newSvcKeiNo = inChafSkbtNo;
									// サービス契約異動種別コード
									svcKeiIdoSbtCd = inSvcKeiIdoSbtCd;
									// 新設サービス契約回線内訳世代
									newSvkeiKisuwGene = inItensSvkeiKisuwGeneAddDtm;
									// 新設完了フラグ
									newFinFlg = FIN_FLG_FIN;
// IT2-2013-0000576 2013.07.02 T.TORIKAI MOD START ※コメントアウトされていた1行を元に戻す
								}
// IT2-2013-0000576 2013.07.02 T.TORIKAI MOD END
							}
	// ST2-2013-0001434対応 20130316 星野 ADD START
						}
					}
	//ST2-2013-0001434対応 20130316 星野 ADD END
				}
// IT1-2013-0001122対応 20130502 星野 ADD START
			}
// IT1-2013-0001122対応 20130502 星野 ADD END
	
			// ----- 撤去工事の完了を確認 -----
// OM-2017-0000969 2017/10/31 ADD START
			// ----- ディレイド以外の起動を確認 -----
			if (!DELAYED_START.equals(isDelayed)) {
// OM-2017-0000969 2017/10/31 ADD END
				// そもそも撤去するサービス契約があるか？
				if (!(inChbfSkbtNo == null || "".equals(inChbfSkbtNo.trim()))) {
					
					boolean kojiNashiTel = false;
		
					// 住所変更番号と運用日を基に撤去の工事完了ワークを取得
					executeKK_T_KJ_FIN_WK_KK_SELECT_019(new String[]{inAdchgNo, opeDate});
		
					JBSbatCommonDBInterface dslKjFinRnkiInfo = null;
					for (dslKjFinRnkiInfo = db_KK_T_KJ_FIN_WK.selectNext(); dslKjFinRnkiInfo != null; dslKjFinRnkiInfo = db_KK_T_KJ_FIN_WK.selectNext()) {
		
						String dslKojiakNo = null;
						dslKojiakNo = dslKjFinRnkiInfo.getString(JBSbatKK_T_KJ_FIN_WK.KOJIAK_NO);
		
	// IT2-2013-0000576 2013.07.02 T.TORIKAI MOD START ※コメントアウトされていた3行を元に戻す
						executeKU_T_SVKEI_KOJIAK_KK_SELECT_007(new String[]{inChbfSkbtNo, dslKojiakNo});
						
						if (db_KU_T_SVKEI_KOJIAK.selectNext() != null) {
	// IT2-2013-0000576 2013.07.02 T.TORIKAI MOD END
		
							// ----- 中間ファイルに出力 -----
							// 住所変更番号
							adchgNo = inAdchgNo;
							// 申込番号
							mskmNo = inMskmNo;
							// 移転元サービス契約回線内訳番号
							dslSvkeiKisuwNo = inItnmSvkeiKisuwNo;
							// 変更前サービス契約番号
							dslSvcKeiNo = inChbfSkbtNo;
							// サービス契約異動種別コード
							svcKeiIdoSbtCd = inSvcKeiIdoSbtCd;
							// 撤去サービス契約回線内訳世代
							dslSvkeiKisuwGene = inItnmSvkeiKisuwGeneAddDtm;
							// 撤去完了フラグ
							dslFinFlg = FIN_FLG_FIN;
	
							kojiNashiTel = true;
	// IT2-2013-0000576 2013.07.02 T.TORIKAI MOD START ※コメントアウトされていた1行を元に戻す
						}
	// IT2-2013-0000576 2013.07.02 T.TORIKAI MOD END
					}
					
					// eo光電話の工事無しパターン
					if (!kojiNashiTel)
					{
						// 解約希望日が運用日と合致し、提供方式を参照してVDSLかイーサネットで取得できたら撤去情報を設定
						executeKK_T_TK_HOSHIKI_KEI_KK_SELECT_023(new String[]{inAdchgNo, opeDate, inChbfSkbtNo, opeDate});
	// ST2-2013-0001403対応 20130316 星野 ADD START
						// ネット・電話の片側保留の場合の考慮
						executeKK_T_ADCHG_DTL_KK_SELECT_021(new String[]{opeDate, inAdchgNo, inChbfSkbtNo});
	// ST2-2013-0001403対応 20130316 星野 ADD END
						if (db_KK_T_TK_HOSHIKI_KEI.selectNext() != null
	// ST2-2013-0001403対応 20130316 星野 ADD START
								|| db_KK_T_ADCHG_DTL.selectNext() != null
	// ST2-2013-0001403対応 20130316 星野 ADD END
						){
							// ----- 中間ファイルに出力 -----
							// 住所変更番号
							adchgNo = inAdchgNo;
							// 申込番号
							mskmNo = inMskmNo;
							// 移転元サービス契約回線内訳番号
							dslSvkeiKisuwNo = inItnmSvkeiKisuwNo;
							// 変更前サービス契約番号
							dslSvcKeiNo = inChbfSkbtNo;
							// サービス契約異動種別コード
							svcKeiIdoSbtCd = inSvcKeiIdoSbtCd;
							// 撤去サービス契約回線内訳世代
							dslSvkeiKisuwGene = inItnmSvkeiKisuwGeneAddDtm;
							// 撤去完了フラグ
							dslFinFlg = FIN_FLG_FIN;
						}
					}
				}
// OM-2017-0000969 2017/10/31 ADD START
			}
// OM-2017-0000969 2017/10/31 ADD END
		}

		if (!(adchgNo == null || "".equals(adchgNo.trim()))) {

			// 住所変更番号
			outMap.setString(JBSbatKKIFM102.ADCHG_NO, adchgNo);
			// 申込番号
			outMap.setString(JBSbatKKIFM102.MSKM_NO, mskmNo);
			// 新設サービス契約回線内訳番号
			outMap.setString(JBSbatKKIFM102.NEW_SVKEI_KISUW_NO, newSvkeiKisuwNo);
			// 撤去サービス契約回線内訳番号
			outMap.setString(JBSbatKKIFM102.DSL_SVKEI_KISUW_NO, dslSvkeiKisuwNo);
			// 新設サービス契約番号
			outMap.setString(JBSbatKKIFM102.NEW_SVC_KEI_NO, newSvcKeiNo);
			// 撤去サービス契約番号
			outMap.setString(JBSbatKKIFM102.DSL_SVC_KEI_NO, dslSvcKeiNo);
			// サービス契約異動種別コード
			outMap.setString(JBSbatKKIFM102.SVC_KEI_IDO_SBT_CD, svcKeiIdoSbtCd);
			// 新設サービス契約回線内訳世代
			outMap.setString(JBSbatKKIFM102.NEW_SVKEI_KISUW_GENE, newSvkeiKisuwGene);
			// 撤去サービス契約回線内訳世代
			outMap.setString(JBSbatKKIFM102.DSL_SVKEI_KISUW_GENE, dslSvkeiKisuwGene);
			// 新設完了フラグ
			outMap.setString(JBSbatKKIFM102.NEW_FIN_FLG, newFinFlg);
			// 撤去完了フラグ
			outMap.setString(JBSbatKKIFM102.DSL_FIN_FLG, dslFinFlg);
// 2012/12/30 IT1-2012-0002621 ADD-START
			// 割引自動適用CC実行フラグ
			outMap.setString(JBSbatKKIFM102.WRIB_EXE_FLG, wribExeFlg);
// 2012/12/30 IT1-2012-0002621 ADD-END

// ANK-1429-00-00 2013.03.21 T.TORIKAI MOD START
			//outputItem.addOutMapList(outMap);
			// 移転元にサービス契約が存在し解約されていない場合のみ抽出する
			if (!isSurrenderService(inChbfSkbtNo)) {
				outputItem.addOutMapList(outMap);
			}
// ANK-1429-00-00 2013.03.21 T.TORIKAI MOD END

			return outputItem;
		}

		// どれにも該当しない場合は何もしない
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	private String getNewKojiFinYmd(String inAdchgNo, String inChafSkbtNo)
			throws Exception {
		String newKojiFinYmd = "";
		executeKK_T_ADCHG_DTL_KK_SELECT_022(new String[]{inAdchgNo, inChafSkbtNo});
		JBSbatCommonDBInterface newKojiAnkInfo = db_KK_T_ADCHG_DTL.selectNext();
		if(newKojiAnkInfo != null){
			String kojiakFinDtm = newKojiAnkInfo.getString(JBSbatKU_T_KOJIAK.KOJIAK_FIN_DTM);
			if(kojiakFinDtm != null && kojiakFinDtm.trim().length() >= 8){
				newKojiFinYmd = kojiakFinDtm.trim().substring(0,8);
			}
		}
		return newKojiFinYmd;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SVKEI_KAISEN_UW.close();
// ST2-2013-0001434対応 20130316 星野 ADD START
		db_KK_T_ADCHG.close();
// ST2-2013-0001434対応 20130316 星野 ADD END
// ST2-2013-0001008対応 20130301 OKITA ADD START
		db_KK_T_ADCHG_DTL.close();
// ST2-2013-0001008対応 20130301 OKITA ADD END
		db_KK_T_KJ_FIN_WK.close();
		db_KU_T_SVKEI_KOJIAK.close();
		db_KK_T_TK_HOSHIKI_KEI.close();
// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD START
		db_KK_T_SVC_KEI.close();
// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

// ST2-2013-0001434対応 20130316 星野 ADD START
	private boolean isDelayedZumi(String inAdchgNo) throws Exception {
		
		// 住所変更をPK検索
		JBSbatCommonDBInterface adchg = executeKK_T_ADCHG_PKSELECT(new String[]{inAdchgNo});
		if(adchg!=null){
			
			String adchgStat = adchg.getString(JBSbatKK_T_ADCHG.ADCHG_STAT);
			String adSwitchWayCd = adchg.getString(JBSbatKK_T_ADCHG.AD_SWITCH_WAY_CD);
			
			// 手動確定済の場合true
			if("003".equals(adchgStat) && "1".equals(adSwitchWayCd)){
				return true;
			}
		}
		// ここまできたらfalse
		return false;
	}
	
	/**
	 * 文字列がnull、または空文字列であるかチェックします。
	 * <br>
	 * @param value　チェック文字列
	 * @return boolean　true：null、または空文字列，false：左記以外
	 */
	private boolean isBlank(String value) {

		if (value == null || "".equals(value.trim())) {
			return true;
		}

		return false;
	}
// ST2-2013-0001434対応 20130316 星野 ADD END
// IT1-2013-0001122対応 20130502 星野 ADD START
	private boolean isSyudo(String inAdchgNo) throws Exception {
		
		// 住所変更をPK検索
		JBSbatCommonDBInterface adchg = executeKK_T_ADCHG_PKSELECT(new String[]{inAdchgNo});
		if(adchg!=null){
			
			String adSwitchWayCd = adchg.getString(JBSbatKK_T_ADCHG.AD_SWITCH_WAY_CD);
			
			// 手動の場合true
			if("1".equals(adSwitchWayCd)){
				return true;
			}
		}
		// ここまできたらfalse
		return false;
	}
// IT1-2013-0001122対応 20130502 星野 ADD END

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_026)で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_026(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.selectBySqlDefine(paramList, KK_T_SVKEI_KAISEN_UW_KK_SELECT_026);
	}

	/**
	 * SQLKEY(KK_SELECT_019)で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_KJ_FIN_WK_KK_SELECT_019(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_KJ_FIN_WK.selectBySqlDefine(paramList, KK_T_KJ_FIN_WK_KK_SELECT_019);
	}

	/**
	 * 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_KJ_FIN_WK_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_KJ_FIN_WK.selectBySqlDefine(paramList, KK_T_KJ_FIN_WK_KK_SELECT_020);
	}

	/**
	 * SQLKEY(KK_SELECT_007)で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_007(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KU_T_SVKEI_KOJIAK.selectBySqlDefine(paramList, KU_T_SVKEI_KOJIAK_KK_SELECT_007);
	}

	/**
	 * SQLKEY(KK_SELECT_023)で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_TK_HOSHIKI_KEI_KK_SELECT_023(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_KK_T_TK_HOSHIKI_KEI.selectBySqlDefine(paramList, KK_T_TK_HOSHIKI_KEI_KK_SELECT_023);
	}

	/**
	 * SQLKEY(KK_SELECT_039)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約回線内訳番号
	 *		 	回線内訳使用開始年月日
	 *		 	回線内訳使用終了年月日
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVKEI_KAISEN_UW_KK_SELECT_039(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_KK_T_SVKEI_KAISEN_UW.selectBySqlDefine(paramList, KK_T_SVKEI_KAISEN_UW_KK_SELECT_039);
	}
	
	/**
	 * 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_ADCHG_DTL_KK_SELECT_020(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_ADCHG_DTL.selectBySqlDefine(paramList, KK_T_ADCHG_DTL_KK_SELECT_020);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
// ST2-2013-0001403対応 20130316 星野 ADD START
	/**
	 * 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 executeKK_T_ADCHG_DTL_KK_SELECT_021(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_ADCHG_DTL.selectBySqlDefine(paramList, KK_T_ADCHG_DTL_KK_SELECT_021);
	}
// ST2-2013-0001403対応 20130316 星野 ADD END
// ST2-2013-0001434対応 20130316 星野 ADD START
	/**
	 * SQLKEY(KK_SELECT_022)で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_022(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_022);
	}
	
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	ADCHG_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_ADCHG_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("ADCHG_NO", whereParam[0]);

		// DBアクセスを実行します
		return db_KK_T_ADCHG.selectByPrimaryKeys(whereMap);
	}
	
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	SVC_KEI_KAISEN_UCWK_NO
	 *			GENE_ADD_DTM
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_SVKEI_KAISEN_UW_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("SVC_KEI_KAISEN_UCWK_NO", whereParam[0]);
		whereMap.setValue("GENE_ADD_DTM", whereParam[1]);

		// DBアクセスを実行します
		return db_KK_T_SVKEI_KAISEN_UW.selectByPrimaryKeys(whereMap);
	}
// ST2-2013-0001434対応 20130316 星野 ADD END

// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD（メソッド追加） START
	/**
	 * 指定されたサービスが解約されているか判定する<br>
	 * 但し、異動区分が住所変更の場合は解約済みであっても解約とはしない
	 * @param svcNo サービス契約番号
	 * @return true:解約済み false:解約済み以外
	 * @throws Exception 
	 */
	private boolean isSurrenderService(String svcNo) throws Exception {
		
		// サービス契約番号が無い場合は「解約されていない」と判定
		if (JKKStringUtil.isNullBlank(svcNo)) {
			return false;
		}
		
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(svcNo);
		paramList.setValue(opeDate);
		
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_251);
		if (db_KK_T_SVC_KEI.selectNext() == null) {
			return false;		// 解約済みではない
		}
		
		return true;	// 解約済み
	}
// ANK-1429-00-00 2013.03.21 T.TORIKAI ADD（メソッド追加） END

// OM-2013-0000735 2013.09.08 T.TORIKAI メソッド追加
	/**
	 * ログ出力用のメッセージ（SYSID、サービス契約番号）を取得する
	 */
	private String getLogMsgKojiStop(String adchgNo) throws Exception {
		
		String msgSvcKei = "";
		String sysId = "";
		
		// 住所変更明細取得（サービス契約）
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(adchgNo);
		paramList.setValue(ADCHG_DTL_SBT_CD_SVC_KEI_NO);
		db_KK_T_ADCHG_DTL.selectBySqlDefine(paramList, KK_T_ADCHG_DTL_KK_SELECT_003);
		while (true) {
			JBSbatCommonDBInterface adchgDtl = db_KK_T_ADCHG_DTL.selectNext();
			if (adchgDtl == null) {
				break;
			}
			String motoSvcKeiNo = adchgDtl.getString(JBSbatKK_T_ADCHG_DTL.CHBF_SKBT_NO);
			String sakiSvcKeiNo = adchgDtl.getString(JBSbatKK_T_ADCHG_DTL.CHAF_SKBT_NO);
			String svcKeiNo = null;
			if (motoSvcKeiNo == null && sakiSvcKeiNo == null) {
				continue;
			}
			if (motoSvcKeiNo == null || sakiSvcKeiNo == null) {
				if (motoSvcKeiNo == null) {
					// 追加
					svcKeiNo = sakiSvcKeiNo;
				} else {
					// 解約、保留
					svcKeiNo = motoSvcKeiNo;
				}
				msgSvcKei += " サービス契約番号:" + svcKeiNo;
			} else {
				// 引越
				if (motoSvcKeiNo.equals(sakiSvcKeiNo)) {
					msgSvcKei += " サービス契約番号:" + motoSvcKeiNo;
				} else {
					// 引越：解約＋新規
					msgSvcKei += " サービス契約番号(転居元・先):" + motoSvcKeiNo + " / " + sakiSvcKeiNo;
				}
				svcKeiNo = motoSvcKeiNo;
			}
			// SYSID未取得の場合のみサービス契約より取得する
			if ("".equals(sysId)) {
				sysId = getSysId(svcKeiNo);
			}
		}
		return " SYSID:" + sysId + msgSvcKei;
	}
	
// OM-2013-0000735 2013.09.08 T.TORIKAI メソッド追加
	/**
	 * サービス契約よりSYSIDを取得する
	 */
	private String getSysId(String svcKeiNo) throws Exception {

		// 条件設定
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(svcKeiNo);
		paramList.setValue(opeDate);

		// 検索
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_023);
		JBSbatCommonDBInterface svcKei = db_KK_T_SVC_KEI.selectNext();
		if (svcKei != null) {
			return svcKei.getString(JBSbatKK_T_SVC_KEI.SYSID);
		}

		return "";
	}
}
