/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKCncTgSvcKeiChst
*	ソースファイル名	：JBSbatKKCncTgSvcKeiChst.java
*	作成者				：富士通　
*	作成日				：2011年05月24日
*＜機能概要＞
*　サービス契約締結対象抽出
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v6.00.00	2014/03/08  FJ)古内		新規作成
*	v66.00.00	2023/04/04  FJ)アラ		【ANK-4371-00-00】新設無し住所変更登録対応
*	v73.00.00	2024/11/13  FJ)橋本		【ANK-4427-00-00】NTT卸対応
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatKKIFM586;
import eo.business.util.table.JBSbatCH_T_TOKUSOKU;
import eo.business.util.table.JBSbatKK_M_PCRS;
import eo.business.util.table.JBSbatKK_T_KAISEN_TG_SVKEI;
import eo.business.util.table.JBSbatKK_T_MANSION_BUKKEN;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
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.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKCncTgSvcKeiChst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービス契約排他制御)*/
	private static final String D_TBL_NAME_KK_T_KAKINS = "KK_T_KAKINS";
	
// ANK-4371-00-00 ADD START
	/** テーブル(回線対象サービス契約) */
	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_ADCHG_DTL = "KK_T_ADCHG_DTL";
	
	/** テーブル(サービス契約＿工事案件)*/
	private static final String D_TBL_NAME_KU_T_SVKEI_KOJIAK = "KU_T_SVKEI_KOJIAK";
// ANK-4371-00-00 ADD END
// ANK-4427-00-00 ADD START
	/** テーブル(料金コース) */
	private static final String D_TBL_NAME_KK_M_PCRS = "KK_M_PCRS";
// ANK-4427-00-00 ADD END
	
	/** テーブルアクセスクラス(課金先)*/
	private JBSbatSQLAccess db_KK_T_KAKINS = null;
	
// ANK-4371-00-00 ADD START
	/** テーブルアクセスクラス(回線対象サービス契約) */
	private JBSbatSQLAccess db_KK_T_KAISEN_TG_SVKEI = null;
	
	/** テーブルアクセスクラス(住所変更明細)*/
	private JBSbatSQLAccess db_KK_T_ADCHG_DTL = null;
	
	/** テーブルアクセスクラス(サービス契約＿工事案件)*/
	private JBSbatSQLAccess db_KU_T_SVKEI_KOJIAK = null;
// ANK-4371-00-00 ADD END
// ANK-4427-00-00 ADD START
	/** テーブルアクセスクラス(料金コース) */
	private JBSbatSQLAccess db_KK_M_PCRS = null;
// ANK-4427-00-00 ADD END
	
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** SQL定義キー(KK_SELECT_046)*/
	private static final String KK_T_KAKINS_KK_SELECT_046 = "KK_SELECT_046";
	
// ANK-4371-00-00 ADD START
	/** SQL定義キー(KK_SELECT_051) */
	private static final String KK_T_KAISEN_TG_SVKEI_KK_SELECT_051 = "KK_SELECT_051";
	
	/** SQL定義キー(KK_SELECT_060)*/
	private static final String KK_T_ADCHG_DTL_KK_SELECT_060 = "KK_SELECT_060";
	
	/** SQL定義キー(KK_SELECT_029)*/
	private static final String KU_T_SVKEI_KOJIAK_KK_SELECT_029 = "KK_SELECT_029";
// ANK-4371-00-00 ADD END
// ANK-4427-00-00 ADD START
	/** SQL定義キー(KK_SELECT_014) */
	private static final String KK_M_PCRS_KK_SELECT_014 = "KK_SELECT_014";
// ANK-4427-00-00 ADD END
	
	/** サービスコード（ネット) */
	private static final String SVC_CD_NET = "01";
	
	/** サービスコード（電話) */
	private static final String SVC_CD_TEL = "02";
	
	/** サービスコード（ＴＶ）*/
	private static final String SVC_CD_TV = "03";
	
	/** 料金グループコード(メゾン）*/
	private static final String PRC_GRP_CD_NET_MAISON = "03";
	
	/** 料金グループコード（マンション）*/
	private static final String PRC_GRP_CD_NET_MANTION = "04";
	
	/** 料金グループコード（ＡＤＳＬ フレッツ） */
	private static final String PRC_GRP_CD_ADSL_FLETS = "06";
	
	/** 料金グループコード（モバイル Ｗｉ−Ｆｉ）*/
	private static final String PRC_GRP_CD_MOBA_WIFI = "07";
	
	/** 料金グループコード（モバイル ＥＭ３Ｇ）*/
	private static final String PRC_GRP_CD_MOBA_3G = "08";
	
	/** 料金グループコード（モバイル ＵＱ）*/
	private static final String PRC_GRP_CD_MOBA_UQ = "09";
	
	/** 料金グループコード（モバイル メールアドレス）*/
	private static final String PRC_GRP_CD_MOBA_MLAD = "16";
	
	/** 料金グループコード（ｅｏ光電話）*/
	private static final String PRC_GRP_CD_TEL = "10";
	
	/** 料金グループコード（ＴＶ Ｋ−ＣＡＴ）*/
	private static final String PRC_GRP_CD_TV_KCAT = "11";
	
	/** 料金グループコード（ＴＶ ＫＣＮ）*/
	private static final String PRC_GRP_CD_TV_KCN = "12";
	
	/** 料金グループコード（ＴＶ 再送信）*/
	private static final String PRC_GRP_CD_TV_SAISOSHIN = "13";
	
	/** 異動区分（新規申込）*/
	private static final String IDO_DIV_SINKI = "00001";
	
	/** 異動区分（サービス追加）*/
	private static final String IDO_DIV_SVC_ADD = "00002";
	
	/** 異動区分（住変）*/
	private static final String IDO_DIV_JUHEN = "00019";
// ANK-4427-00-00 ADD START
	/** NTT卸料金コースリスト */
	private ArrayList<String> nttOrsPcrsList = new ArrayList<String>();
// ANK-4427-00-00 ADD END
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		//バッチ運用日付を取得
		this.opeDate = commonItem.getOpeDate();

		// DBアクセスクラスを生成します
		db_KK_T_KAKINS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAKINS);
// ANK-4371-00-00 ADD START
		db_KK_T_KAISEN_TG_SVKEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAISEN_TG_SVKEI);
		db_KK_T_ADCHG_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADCHG_DTL);
		db_KU_T_SVKEI_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_SVKEI_KOJIAK);
// ANK-4371-00-00 ADD END
// ANK-4427-00-00 ADD START
		db_KK_M_PCRS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PCRS);
// ANK-4427-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
// ANK-4427-00-00 ADD START
		// NTT卸区分がNULLではない料金コース情報を取得する
		String[] param = new String[3];
		param[0] = super.opeDate;
		param[1] = super.opeDate;
		param[2] = super.opeDate;
		executeKK_M_PCRS_KK_SELECT_014(param);
		JBSbatCommonDBInterface pcrsMap = db_KK_M_PCRS.selectNext();
		
		while(pcrsMap != null)
		{
			// NTT卸料金コースリスト
			nttOrsPcrsList.add(pcrsMap.getString(JBSbatKK_M_PCRS.PCRS_CD));
			pcrsMap = db_KK_M_PCRS.selectNext();
		}
// ANK-4427-00-00 ADD END
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		super.logPrint.printDebugLog("execute_START");
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		// サービス契約番号
		String svcKeiNo = JCCBatCommon.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
		// 照査年月日
		String shosaYmd = JCCBatCommon.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SHOSA_YMD));
		// サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = JCCBatCommon.Rtrim(inMap.getString(JBSbatKK_T_KAISEN_TG_SVKEI.SVC_KEI_KAISEN_UCWK_NO));
		// サービスコード
		String svcCd = JCCBatCommon.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_CD));
		// 料金グループコード
		String prcGrpCd = JCCBatCommon.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD));
		// 提供方式契約番号
		String tkHoshikiKeiNo = JCCBatCommon.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.TK_HOSHIKI_KEI_NO));
		// 申込時異動区分
		String minIdoDiv = JCCBatCommon.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.IDO_DIV));
		// 申込時申込明細番号
		String mskmDtlNo = JCCBatCommon.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.MSKM_DTL_NO));
// ANK-4427-00-00 ADD START
		// 料金コースコード
		String pcrsCd = JCCBatCommon.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.PCRS_CD));
// ANK-4427-00-00 ADD END
		
		// ファイル出力
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		outMap.setString(JBSbatKKIFM586.SVC_KEI_NO, svcKeiNo);
		outMap.setString(JBSbatKKIFM586.SHOSA_YMD, shosaYmd);
		outMap.setString(JBSbatKKIFM586.SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
		outMap.setString(JBSbatKKIFM586.MSKM_DTL_NO, mskmDtlNo);
		outMap.setOutFlg(true);
		
// ANK-4427-00-00 ADD START
		// 料金コースのNTT卸区分がNULLではない料金コースの場合は処理対象外
		if(isNttOrsPcrs(pcrsCd))
		{
			super.logPrint.printDebugLog("NTT卸区分が「NULL」以外のため 締結処理対象外 サービス契約番号【" + svcKeiNo + "】");
			super.logPrint.printDebugLog("execute_END");
			return null;
		}
// ANK-4427-00-00 ADD END
// ANK-4371-00-00 ADD START
		//すぐに工事する必要のない契約
		if (PRC_GRP_CD_NET_MANTION.equals(prcGrpCd)
				|| (!"".equals(tkHoshikiKeiNo) && (SVC_CD_TEL.equals(svcCd) || SVC_CD_TV.equals(svcCd))))
		{
			if(findKoujNashiJuuHen(svcKeiNo)){
				super.logPrint.printDebugLog("締結処理対象外 サービス契約番号【" + svcKeiNo + "】");
				super.logPrint.printDebugLog("execute_END");
				return null;
			}
		}
// ANK-4371-00-00 ADD END
		// ＮＥＴ契約における工事がない契約。
		// ・マンション
		// ・メゾン
		// ・ＡＤＳＬ フレッツ
		// ・３Ｇ
		// ・ＵＱ
		// ・Wi-Fi
		// ・メールアドレス
		if (PRC_GRP_CD_NET_MAISON.equals(prcGrpCd) 
				|| PRC_GRP_CD_NET_MANTION.equals(prcGrpCd) 
				|| PRC_GRP_CD_ADSL_FLETS.equals(prcGrpCd) 
				|| PRC_GRP_CD_MOBA_3G.equals(prcGrpCd) 
				|| PRC_GRP_CD_MOBA_UQ.equals(prcGrpCd)
				|| PRC_GRP_CD_MOBA_WIFI.equals(prcGrpCd) 
				|| PRC_GRP_CD_MOBA_MLAD.equals(prcGrpCd))
		{
			// サービス契約番号より督促ステータスが「20：利用停止済」以上のデータを取得
			// 取得できれば処理対象外
			if(checkTokusokuStat(svcKeiNo))
			{
				super.logPrint.printDebugLog("督促ステータスが「20：利用停止済」以上のため、処理対象外 サービス契約番号【" + svcKeiNo + "】");
				super.logPrint.printDebugLog("execute_END");
				return null;
			}
			
			outputBean.addOutMapList(outMap);
		}
		// 電話・テレビにおける「マンション・メゾン」契約
		else if ((SVC_CD_TEL.equals(svcCd) || SVC_CD_TV.equals(svcCd)) && !"".equals(tkHoshikiKeiNo))
		{
			// サービス契約番号より督促ステータスが「20：利用停止済」以上のデータを取得
			// 取得できれば処理対象外
			if(checkTokusokuStat(svcKeiNo))
			{
				super.logPrint.printDebugLog("督促ステータスが「20：利用停止済」以上のため、処理対象外 サービス契約番号【" + svcKeiNo + "】");
				super.logPrint.printDebugLog("execute_END");
				return null;
			}
			
			// ファイル出力
			outputBean.addOutMapList(outMap);
		}
		// その他、ホームタイプ（工事があるもの）で照査済みの契約
		//  ※ 対象データ受付契機が「新規申込」「サービス追加」「住変」のいずれかである契約。
		else if (IDO_DIV_SINKI.equals(minIdoDiv) ||
				  IDO_DIV_SVC_ADD.equals(minIdoDiv) ||
				  IDO_DIV_JUHEN.equals(minIdoDiv) &&
				  "".equals(tkHoshikiKeiNo))
		{
			// サービス契約番号より督促ステータスが「20：利用停止済」以上のデータを取得
			// 取得できれば処理対象外
			if(checkTokusokuStat(svcKeiNo))
			{
				super.logPrint.printDebugLog("督促ステータスが「20：利用停止済」以上のため、処理対象外 サービス契約番号【" + svcKeiNo + "】");
				super.logPrint.printDebugLog("execute_END");
				return null;
			}
			
			// ファイル出力
			outputBean.addOutMapList_2(outMap);
		}
		else
		{
			super.logPrint.printDebugLog("締結処理対象外 サービス契約番号【" + svcKeiNo + "】");
			super.logPrint.printDebugLog("execute_END");
			return null;
		}
		
		super.logPrint.printDebugLog("execute_END");
		return outputBean;
	}
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KAKINS.close();
// ANK-4371-00-00 ADD START
		db_KK_T_KAISEN_TG_SVKEI.close();
		db_KK_T_ADCHG_DTL.close();
		db_KU_T_SVKEI_KOJIAK.close();
// ANK-4371-00-00 ADD END
// ANK-4427-00-00 ADD START
		db_KK_M_PCRS.close();
// ANK-4427-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_046)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	課金先適用開始年月日
	 *		 	課金先適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KAKINS_KK_SELECT_046(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_KAKINS.selectBySqlDefine(paramList, KK_T_KAKINS_KK_SELECT_046);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * サービス契約番号より督促ステータスが「20：利用停止済」以上のデータを取得。<br>
	 * @param  svcKeiNo       サービス契約番号。
	 * @throws Exception 
	 */
	private boolean checkTokusokuStat(String svcKeiNo) throws Exception
	{
		executeKK_T_KAKINS_KK_SELECT_046(new Object[]{svcKeiNo, opeDate, opeDate});
		
		JBSbatCommonDBInterface dbmap = db_KK_T_KAKINS.selectNext();
		
		// 取得できた場合は、処理対象外
		if(null != dbmap)
		{
			super.logPrint.printDebugLog("処理対象外  サービス契約番号【" + svcKeiNo + "】督促ステータス【" + JBSbatStringUtil.Rtrim(dbmap.getString(JBSbatCH_T_TOKUSOKU.TOKUSOKU_STAT)) + "】");
			
			return true;
		}
		
		return false;
	}
// ANK-4371-00-00 ADD START
	/**
	 * SQLKEY(KK_SELECT_051)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * 
	 * <pre>
	 * 1.引数でバイント変数を設定します。&lt;br&gt;
	 * 
	 * 2.DBアクセスを実行します。&lt;br&gt;
	 * 
	 * 3.メソッドの呼び出し方です。&lt;br&gt;
	 * 	引数:
	 * 	param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * 	 	サービス契約番号
	 * </pre>
	 * <p>
	 * 
	 * @param param
	 *            バイント変数の値配列。
	 * @throws Exception
	 *             業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KAISEN_TG_SVKEI_KK_SELECT_051(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_051);
	}
	
	/**
	 * SQLKEY(KK_SELECT_060)で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_060(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_ADCHG_DTL.selectBySqlDefine(paramList, KK_T_ADCHG_DTL_KK_SELECT_060);
	}
	
	/**
	 * SQLKEY(KK_SELECT_029)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SVC_KEI_NO
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKU_T_SVKEI_KOJIAK_KK_SELECT_029(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_029);
	}	

// ANK-4427-00-00 ADD START
	/**
	 * SQLKEY(KK_SELECT_014)で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_M_PCRS_KK_SELECT_014(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_M_PCRS.selectBySqlDefine(paramList, KK_M_PCRS_KK_SELECT_014);
	}
// ANK-4427-00-00 ADD END
	
	/**
	 * サービス契約_工事案件が存在確認します。
	 * <BR>
	 * @param String　サービス契約番号
	 * @return boolean true：有 false：無
	 * @throws Exception
	 */
	private Boolean isExistSvkeiKouji (String svcKeiNo) throws Exception
	{
		String[] param = new String [2];
		param[0] = svcKeiNo;
		param[1] = super.opeDate;
		
		//サービス契約_工事案件：存在確認
		this.executeKU_T_SVKEI_KOJIAK_KK_SELECT_029(param);
		JBSbatCommonDBInterface svkei_Kojiak_Map = db_KU_T_SVKEI_KOJIAK.selectNext();

		if (0 == Integer.parseInt(svkei_Kojiak_Map.getString("CNT"))){
			return false;
		}
		return true;
	}

	/**
	 * すぐに工事する必要のないデータを除外します。
	 * <BR>
	 * @param String　サービス契約番号
	 * @return boolean true：対象外、false：対象
	 * @throws Exception
	 */
	private Boolean findKoujNashiJuuHen (String svcKeiNo) throws Exception
	{
		String[] param = new String [1];
		param[0] = svcKeiNo;
		
		//サービス契約_工事案件：存在確認する		
		//存在しない場合
		if (!isExistSvkeiKouji(svcKeiNo)){
			
			//住所変更明細：住所変更操作の確認
			this.executeKK_T_ADCHG_DTL_KK_SELECT_060(param);
			JBSbatCommonDBInterface adchg_dtl_Map = db_KK_T_ADCHG_DTL.selectNext();
			
			//住変がある場合
			if (0 != Integer.parseInt(adchg_dtl_Map.getString("CNT"))){
				
				//回線対象サービス契約：物件の種類がマンションの確認
				this.executeKK_T_KAISEN_TG_SVKEI_KK_SELECT_051(param);
				JBSbatCommonDBInterface kaisen_tg_svkei_Map = db_KK_T_KAISEN_TG_SVKEI.selectNext();
					
				// マンションの場合
				if (kaisen_tg_svkei_Map != null)
				{
					// マンション物件コード
					String mansionBukkenCd = kaisen_tg_svkei_Map.getString(JBSbatKK_T_MANSION_BUKKEN.MANSION_BUKKEN_CD);
					if(JBSbatKKConst.MANSION_BUKKEN_CD_001.equals(mansionBukkenCd))
					{
						return true;
					}
				}
			}
		}
		return false;
	}
// ANK-4371-00-00 ADD END
// ANK-4427-00-00 ADD START
	/**
	 * NTT卸対象の料金コースであるかを返す
	 * @param trgtPcrsCd 対象料金コースコード
	 * @return NTT卸対象の料金コースである場合はtrue
	 */
	private boolean isNttOrsPcrs(String trgtPcrsCd)
	{
		if(!JKKStringUtil.isNullBlank(trgtPcrsCd))
		{
			if(nttOrsPcrsList.contains(trgtPcrsCd))
			{
				return true;
			}
		}
		return false;
	}
// ANK-4427-00-00 ADD END
}
