/*********************************************************************
*	All Rights reserved,Copyright c Fujitsu, 2011
**********************************************************************
*＜プログラム内容＞
*	システム名		：プロジェクト共通
*	モジュール名	：JKKBatIdoKns
*	ソースファイル名：JKKBatIdoKns.java
*	作成者			：富士通
*	日付			：2012年09月03日
*＜機能概要＞
*	異動検証を行う共通機能を提供する。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/09/03	富士通		新規作成
*
**********************************************************************/
package eo.business.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import eo.business.util.table.JBSbatCH_M_PRC_SCHDL_TEIGI;
import eo.business.util.table.JBSbatKU_T_KOJIAK;
import eo.common.constant.JACStrConst;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatDateUtil;


/**
 * データ抽出項目の設定や解除を行う共通クラスです。<p>
 * <br>
 * @author 富士通
 */
public class JKVBatIdoKnsGetYmd
{
	
	/** バッチ共通パラメータ */
	private static JBSbatCommonItem commonItem = null;

	
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	private static final String D_TBL_NAME_KK_T_SVC_KEI_UCWK = "KK_T_SVC_KEI_UCWK";

	private static final String D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI = "CH_M_PRC_SCHDL_TEIGI";
	
	private static final String D_TBL_NAME_KU_T_KJAK_EOH_NET = "KU_T_KJAK_EOH_NET";
	
	private static final String D_TBL_NAME_KU_T_KJAK_EOH_NTMANS = "KU_T_KJAK_EOH_NTMANS";
	
	private static final String D_TBL_NAME_KU_T_KJAK_EOH_TV = "KU_T_KJAK_EOH_TV";

	private static final String D_TBL_NAME_KK_T_MSKM = "KK_T_MSKM";
	
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_001 = "KV_SELECT_001";
	
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_SVC_KEI_UCWK_KV_SELECT_003 = "KV_SELECT_003";

	/** SQL定義キー(KV_SELECT_004)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_004 = "KV_SELECT_004";
	
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String CH_M_PRC_SCHDL_TEIGI_KV_SELECT_001 = "KV_SELECT_001";
	
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KU_T_KJAK_EOH_NET_KV_SELECT_001 = "KV_SELECT_001";
	
	/** SQL定義キー(KV_SELECT_002)*/
	private static final String KU_T_KJAK_EOH_NTMANS_KV_SELECT_002 = "KV_SELECT_002";
	
	/** SQL定義キー(KV_SELECT_003)*/
	private static final String KU_T_KJAK_EOH_TV_KV_SELECT_003 = "KV_SELECT_003";
	
	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_MSKM_KV_SELECT_001 = "KV_SELECT_001";
	
	
	/** テーブルアクセスクラス(サービス契約)*/
	private static JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	
	/** テーブルアクセスクラス(サービス契約内訳)*/
	private static JBSbatSQLAccess db_KK_T_SVC_KEI_UCWK = null;
	
	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private static JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;
	
	/** テーブルアクセスクラス(オプションサービス契約)*/
	private static JBSbatSQLAccess db_KK_T_OP_SVC_KEI = null;
	
	/** テーブルアクセスクラス(サブオプションサービス契約)*/
	private static JBSbatSQLAccess db_KK_T_SBOP_SVC_KEI = null;

	/** テーブルアクセスクラス(料金スケジュール定義)*/
	private static JBSbatSQLAccess db_CH_M_PRC_SCHDL_TEIGI = null;
	
	/** テーブルアクセスクラス(工事案件<eo光ネット>)*/
	private static JBSbatSQLAccess db_KU_T_KJAK_EOH_NET = null;
	
	/** テーブルアクセスクラス(工事案件<eo光ネットマンション>)*/
	private static JBSbatSQLAccess db_KU_T_KJAK_EOH_NTMANS = null;
	
	/** テーブルアクセスクラス(工事案件<eo光TV>)*/
	private static JBSbatSQLAccess db_KU_T_KJAK_EOH_TV = null;

	/** テーブルアクセスクラス(申込)*/
	private static JBSbatSQLAccess db_KK_T_MSKM = null;

	/** ターゲットスキーマ：サービス契約*/
	public static final int TGSCM_SVC_KEI = 1;

	/** ターゲットスキーマ：サービス契約内訳*/
	public static final int TGSCM_SVC_KEI_UCWK = 2;

	/** ターゲットスキーマ：オプションサービス契約*/
	public static final int TGSCM_OP_SVC_KEI = 3;

	/** ターゲットスキーマ：機器提供サービス契約*/
	public static final int TGSCM_KKTK_SVC_KEI = 4;

	/** ターゲットスキーマ：サブオプションサービス契約*/
	public static final int TGSCM_SBOP_SVC_KEI = 5;

	/** ターゲットスキーマ：請求オプションサービス契約*/
	public static final int TGSCM_SEIOP_SVC_KEI = 6;

	/** スキーマ名称：サービス契約*/
	public static final String SCM_NM_SVC_KEI = "サービス契約";

	/** スキーマ名称：サービス契約内訳*/
	public static final String SCM_NM_SVC_KEI_UCWK = "サービス契約内訳";

	/** スキーマ名称：オプションサービス契約*/
	public static final String SCM_NM_OP_SVC_KEI = "オプションサービス契約";

	/** スキーマ名称：機器提供サービス契約*/
	public static final String SCM_NM_KKTK_SVC_KEI = "機器提供サービス契約";

	/** スキーマ名称：サブオプションサービス契約*/
	public static final String SCM_NM_SBOP_SVC_KEI = "サブオプションサービス契約";

	/** スキーマ名称：請求オプションサービス契約*/
	public static final String SCM_NM_SEIOP_SVC_KEI = "請求オプションサービス契約";

	/** 異動区分 */
	private static final String IDO_DIV = "IDO_DIV";

	/** サービスコード */
	private static final String SVC_CD = "SVC_CD";

	// ***** 工事案件種別コード *****
	/** 撤去(解約) */
	private static final String KOJIAK_SBT_CD_TK = "002";
	/** 住所変更(撤去) */
	private static final String KOJIAK_SBT_CD_ADCHG_TK = "004";
	/** 最大日付 */
	private static final String MAX_DATE = "20991231";
	/**
	 * コンストラクタ
	 * 
	 * @param commonItem バッチ共通パラメータ
	 */
	public JKVBatIdoKnsGetYmd(JBSbatCommonItem commonItem)
	{
		this.commonItem = commonItem;
	}
	
	/**
	 * <dd>メソッド名	：getIdoKns
	 * <dd>メソッド説明	：異動検証の取得を行う
	 * @param  cmnItem 業務共通電文
	 * @return ArrayList サービス契約のリスト
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	public static HashMap getIdoKnsYmd(String classname , JBSbatServiceInterfaceMap inMap, JBSbatCommonItem pCommonItem) throws Exception
	{
		commonItem = pCommonItem;
		
		HashMap getMap = new HashMap();
		String opeDate = inMap.getString("PRG_DTM").toString().substring(0, 8); 

		// 料金計算日
		String ryokinKeisanYmd = "";
		// 請求年月
		String seikyYm = "";
		String seikyYmdFrom = "";
		String seikyYmdTo = "";
		

		//サービス終了日
		if(classname.equals("CLASS5"))
		{
			//解約
			if(inMap.get(IDO_DIV).equals("00005") || inMap.get(IDO_DIV).equals("00006"))
			{
				String svckeino =(String) inMap.get("SVC_KEI_NO");
				String svcuwkeino =(String) inMap.get("SVC_KEI_UCWK_NO");
				
				JBSbatCommonDBInterface itnmKjFinInfo = null;

				if(svckeino != null && svcuwkeino != null)
				{
//					itnmKjFinInfo = executeKK_T_SVC_KEI_KV_SELECT_004(new String[]{
//							svcuwkeino, KOJIAK_SBT_CD_TK, KOJIAK_SBT_CD_ADCHG_TK, JKKBatConst.KOJIAK_STAT_KJFIN, opeDate, svckeino, MAX_DATE});
				}
	
				// 工事完了情報が存在する場合
				if (itnmKjFinInfo != null) {
					// 工事完了日を取得
					String KjFinYmd = itnmKjFinInfo.getString(JBSbatKU_T_KOJIAK.KOJIAK_JSSI_YMD);
					String KjAkNo = itnmKjFinInfo.getString(JBSbatKU_T_KOJIAK.KOJIAK_NO);
					
					String kjKiboYmd = null;
					JBSbatCommonDBInterface itnmKjakEoh = null;
					//サービス
					if(inMap.get(SVC_CD).equals("01")){
						itnmKjakEoh = executeKU_T_KJAK_EOH_NET_KV_SELECT_001(new String[]{KjAkNo});
						kjKiboYmd = itnmKjakEoh.getString("DSL_KIBO_YMD");
					}
					else if(inMap.get(SVC_CD).equals("03")){
						itnmKjakEoh = executeKU_T_KJAK_EOH_NTMANS_KV_SELECT_002(new String[]{KjAkNo});
						kjKiboYmd = itnmKjakEoh.getString("DSL_KIBO_YMD");
					}
					else if(inMap.get(SVC_CD).equals("05")){
						itnmKjakEoh = executeKU_T_KJAK_EOH_TV_KV_SELECT_003(new String[]{KjAkNo});
						kjKiboYmd = itnmKjakEoh.getString("DSL_KIBO_YMD");
					}
					
					//料金計算日を取得
					List<JBSbatCommonDBInterface> ryokinKeisanYmdList = null;
					ryokinKeisanYmdList = executeCH_M_PRC_SCHDL_TEIGI_KV_SELECT_001(
							new String[]{JACStrConst.EVENT_CD_RYOKIN_KEISAN_YMD, opeDate});
					if (ryokinKeisanYmdList != null && 0 < ryokinKeisanYmdList.size()) {
						ryokinKeisanYmd = ryokinKeisanYmdList.get(0).getString(JBSbatCH_M_PRC_SCHDL_TEIGI.EVENT_YMD);
						seikyYm = ryokinKeisanYmdList.get(0).getString(JBSbatCH_M_PRC_SCHDL_TEIGI.SEIKY_YM);
					}
					if (-1 < JBSbatDateUtil.dayDiff(seikyYmdTo, KjFinYmd, "2")) 
					{
						// ----- 料金計算期間内に工事連携あり -----
						// 工事完了年月日 ≦ 解約希望日 の場合
						if (-1 < JBSbatDateUtil.dayDiff(KjFinYmd, kjKiboYmd, "2")) 
						{
							getMap.put("日付", KjFinYmd);
						}
						else 
						{
							getMap.put("日付", kjKiboYmd);
						}
					} 
					else 
					{
						// ----- 料金計算期間内に工事連携なし -----
						// 解約希望年月日が料金計算期間内の場合
						if (-1 < JBSbatDateUtil.dayDiff(seikyYmdTo, kjKiboYmd, "2"))
						{
							getMap.put("日付", ryokinKeisanYmd);
						}
						else if (-1 < JBSbatDateUtil.dayDiff(ryokinKeisanYmd, KjFinYmd, "2")) 
						{
							getMap.put("日付", KjFinYmd);
						}
					}
				}
				else
				{
					getMap.put("日付", "99999999");
				}
			}
			else if(inMap.get(IDO_DIV).equals("00004"))
			{
				getMap.put("日付", MAX_DATE);
			}
			else if(inMap.get(IDO_DIV).equals("00006"))
			{
				getMap.put("日付", "99999999");
			}
			else if(inMap.get(IDO_DIV).equals("00007") || inMap.get(IDO_DIV).equals("00064"))
			{
				getMap.put("日付", "99999999");
			}
			else if(inMap.get(IDO_DIV).equals("00043"))
			{
				getMap.put("日付", "99999999");
			}
			else if(inMap.get(IDO_DIV).equals("00044"))
			{
				getMap.put("日付", MAX_DATE);
			}
		}
		//サービス課金終了年月日
		else if (classname.equals("CLASS6"))
		{
			//解約
			if(inMap.get(IDO_DIV).equals("00005") || inMap.get(IDO_DIV).equals("00006"))
			{
				// サービス契約番号を取得
				String svc_kei_no = inMap.getString("SVC_KEI_NO");
				String apl_ymd = opeDate;

				Object[] paramSvc = null;
				HashMap dataMap;
				// データ抽出条件を設定	
				paramSvc = new Object[]{
						apl_ymd,	// 異動年月日
						svc_kei_no,	// サービス契約番号
						svc_kei_no	// サービス契約番号
				};
				dataMap = new HashMap();
				
				executeKK_T_SVC_KEI_KV_SELECT_001(paramSvc);
				JBSbatCommonDBInterface getDataMap = db_KK_T_SVC_KEI.selectNext();
				if(getDataMap != null)
				{
					dataMap = getDataMap.getMap();
					String strSvcDslKisanYmd = (String) dataMap.get("SVC_DSL_KISAN_YMD");
					if(strSvcDslKisanYmd != null)
					{
						strSvcDslKisanYmd = JBSbatDateUtil.adjustDate(strSvcDslKisanYmd, -1);
					}
					getMap.put("日付", strSvcDslKisanYmd);
				}
			}
			else if(inMap.get(IDO_DIV).equals("00031"))
			{
				// サービス契約番号を取得
				String svc_kei_no = inMap.getString("SVC_KEI_NO");
				String apl_ymd = opeDate;

				Object[] paramSvc = null;
				HashMap dataMap;
				// データ抽出条件を設定	
				paramSvc = new Object[]{
						apl_ymd,	// 異動年月日
						svc_kei_no,	// サービス契約番号
						svc_kei_no	// サービス契約番号
				};
				dataMap = new HashMap();
				executeKK_T_SVC_KEI_KV_SELECT_001(paramSvc);
				JBSbatCommonDBInterface getDataMap = db_KK_T_SVC_KEI.selectNext();
				if(getDataMap != null)
				{
					dataMap = getDataMap.getMap();
					String strEndYmd = (String) dataMap.get("SVC_ENDYMD");
					if(strEndYmd != null && "".equals(strEndYmd) &&  !strEndYmd.equals(MAX_DATE))
					{
						strEndYmd = JBSbatDateUtil.getEndOfMonth(strEndYmd.substring(0,6));
					}
					getMap.put("日付", strEndYmd);
				}
			}
			else if(inMap.get(IDO_DIV).equals("00007") || inMap.get(IDO_DIV).equals("00064"))
			{
				getMap.put("日付", "99999999");
			}
			else if(inMap.get(IDO_DIV).equals("00043"))
			{
				// サービス契約番号を取得
				String svc_kei_ucwk_no = inMap.getString("SVC_KEI_UCWK_NO");
				String apl_ymd = opeDate;

				commonItem.getLogPrint().printDebugLog("SVC_KEI_UCWK_NO：" + svc_kei_ucwk_no);
				commonItem.getLogPrint().printDebugLog("apl_ymd：" + apl_ymd);
				Object[] paramSvc = null;
				HashMap dataMap;
				// データ抽出条件を設定	
				paramSvc = new Object[]{
						svc_kei_ucwk_no,	// 異動年月日
						apl_ymd
				};
				dataMap = new HashMap();
				
				executeKK_T_SVC_KEI_UCWK_KV_SELECT_003(paramSvc);

				JBSbatCommonDBInterface getDataMap = db_KK_T_SVC_KEI_UCWK.selectNext();
				if(getDataMap != null)
				{
					dataMap = getDataMap.getMap();
					String strSvcDslKisanYmd = (String) dataMap.get("SVC_DSL_KISAN_YMD");
					if(strSvcDslKisanYmd != null)
					{
						strSvcDslKisanYmd = JBSbatDateUtil.adjustDate(strSvcDslKisanYmd, -1);
						getMap.put("日付", strSvcDslKisanYmd);
					}
					else
					{
						getMap.put("日付", MAX_DATE);
					}
				}
			}
			else if(inMap.get(IDO_DIV).equals("00044"))
			{
				getMap.put("日付", MAX_DATE);
			}
		}
		//解約起算年月日
		if(classname.equals("CLASS7"))
		{
			//解約
			if(inMap.get(IDO_DIV).equals("00005"))
			{
				String svckeino =(String) inMap.get("SVC_KEI_NO");
				String svcuwkeino =(String) inMap.get("SVC_KEI_UCWK_NO");
				
				JBSbatCommonDBInterface itnmKjFinInfo = null;
				
				if(svckeino != null && svcuwkeino != null)
				{
//					itnmKjFinInfo = executeKK_T_SVC_KEI_KV_SELECT_004(new String[]{
//							svcuwkeino, KOJIAK_SBT_CD_TK, KOJIAK_SBT_CD_ADCHG_TK, JKKBatConst.KOJIAK_STAT_KJFIN, opeDate, svckeino, MAX_DATE});
				}
				
	
				// 工事完了情報が存在する場合
				if (itnmKjFinInfo != null) {
					// 工事完了日を取得
					String KjFinYmd = itnmKjFinInfo.getString(JBSbatKU_T_KOJIAK.KOJIAK_JSSI_YMD);
					String KjAkNo = itnmKjFinInfo.getString(JBSbatKU_T_KOJIAK.KOJIAK_NO);
					
					String kjKiboYmd = null;
					JBSbatCommonDBInterface itnmKjakEoh = null;
					//サービス
					if(inMap.get(SVC_CD).equals("01")){
						itnmKjakEoh = executeKU_T_KJAK_EOH_NET_KV_SELECT_001(new String[]{KjAkNo});
						kjKiboYmd = itnmKjakEoh.getString("DSL_KIBO_YMD");
					}
					else if(inMap.get(SVC_CD).equals("03")){
						itnmKjakEoh = executeKU_T_KJAK_EOH_NTMANS_KV_SELECT_002(new String[]{KjAkNo});
						kjKiboYmd = itnmKjakEoh.getString("DSL_KIBO_YMD");
					}
					else if(inMap.get(SVC_CD).equals("05")){
						itnmKjakEoh = executeKU_T_KJAK_EOH_TV_KV_SELECT_003(new String[]{KjAkNo});
						kjKiboYmd = itnmKjakEoh.getString("DSL_KIBO_YMD");
					}
					
					//料金計算日を取得
					List<JBSbatCommonDBInterface> ryokinKeisanYmdList = null;
					ryokinKeisanYmdList = executeCH_M_PRC_SCHDL_TEIGI_KV_SELECT_001(
							new String[]{JACStrConst.EVENT_CD_RYOKIN_KEISAN_YMD, opeDate});
					if (ryokinKeisanYmdList != null && 0 < ryokinKeisanYmdList.size()) {
						ryokinKeisanYmd = ryokinKeisanYmdList.get(0).getString(JBSbatCH_M_PRC_SCHDL_TEIGI.EVENT_YMD);
						seikyYm = ryokinKeisanYmdList.get(0).getString(JBSbatCH_M_PRC_SCHDL_TEIGI.SEIKY_YM);
					}
					if (-1 < JBSbatDateUtil.dayDiff(seikyYmdTo, KjFinYmd, "2")) 
					{
						// ----- 料金計算期間内に工事連携あり -----
						// 工事完了年月日 ≦ 解約希望日 の場合
						if (-1 < JBSbatDateUtil.dayDiff(KjFinYmd, kjKiboYmd, "2")) 
						{
							getMap.put("日付", KjFinYmd);
						}
						else 
						{
							getMap.put("日付", kjKiboYmd);
						}
					} 
					else 
					{
						// ----- 料金計算期間内に工事連携なし -----
						// 解約希望年月日が料金計算期間内の場合
						if (-1 < JBSbatDateUtil.dayDiff(seikyYmdTo, kjKiboYmd, "2"))
						{
							getMap.put("日付", kjKiboYmd);
						}
						else if (-1 < JBSbatDateUtil.dayDiff(ryokinKeisanYmd, KjFinYmd, "2")) 
						{
							ryokinKeisanYmd = ryokinKeisanYmd.substring(0,6) + "01";
							getMap.put("日付", ryokinKeisanYmd);
						}
					}
				}
				else
				{
					getMap.put("日付", "99999999");
				}
			}
			else
			{
				getMap.put("日付", "99999999");
			}
		}
		//サービス休止年月日
		if(classname.equals("CLASS8"))
		{
			if(opeDate.substring(6, 8).equals("01"))
			{
				getMap.put("日付", opeDate.substring(0, 8));
			}
			else
			{
				String calymd = JBSbatDateUtil.adjustMonth(opeDate.substring(0, 8), 1);
				calymd = calymd.substring(0, 6) + "01";
				getMap.put("日付", calymd);
			}
		}
		//割引サービス対象契約適用開始年月日
		if(classname.equals("CLASS9"))
		{
			// サービス契約番号を取得
			Object[] paramSvc = null;
			JBSbatCommonDBInterface getDataMap = null;
			String svc_kei_no = inMap.getString("SVC_KEI_NO");
			String apl_ymd = opeDate;
			// データ抽出条件を設定	
			paramSvc = new Object[]{
					apl_ymd,
					svc_kei_no,	// サービス契約番号
					svc_kei_no	// サービス契約番号
			};

			// DBアクセスクラスを生成します
			executeKK_T_SVC_KEI_KK_SELECT_201(paramSvc);
			getDataMap = db_KK_T_SVC_KEI.selectNext();
			if(getDataMap != null)
			{
				// 「申込受付年月日」を基準日とする
				paramSvc = new Object[]{
						getDataMap.getString("MSKM_DTL_NO")
				};
				executeKK_T_MSKM_KV_SELECT_001(paramSvc);
				getDataMap = db_KK_T_MSKM.selectNext();
				if(getDataMap != null)
				{
					// 「申込受付年月日」を基準日とする
						getMap.put("日付",getDataMap.getString("GENE_ADD_DTM").substring(0,8));
				}
			}
		}
		//割引サービス対象契約適用終了年月日
		if(classname.equals("CLASS10"))
		{
			getMap.put("日付", MAX_DATE);
		}
		//キャンセル日
		if(classname.equals("CLASS11"))
		{
			if(inMap.get(IDO_DIV).equals("00004"))
			{
				getMap.put("日付", "");
			}
			else
			{
				getMap.put("日付", opeDate.substring(0, 8));
			}
				
		}
		//プラン終了年月日
		if(classname.equals("CLASS12"))
		{
			
		}
		//プラン課金終了年月日
		if(classname.equals("CLASS13"))
		{
			// サービス契約番号を取得
			String svc_kei_no = inMap.getString("SVC_KEI_NO");
			String apl_ymd = opeDate;

			Object[] paramSvc = null;
			HashMap dataMap;
			// データ抽出条件を設定	
			paramSvc = new Object[]{
					apl_ymd,	// 異動年月日
					svc_kei_no,	// サービス契約番号
					svc_kei_no	// サービス契約番号
			};
			dataMap = new HashMap();
			
			executeKK_T_SVC_KEI_KV_SELECT_001(paramSvc);
			JBSbatCommonDBInterface getDataMap = db_KK_T_SVC_KEI.selectNext();
			if(getDataMap != null)
			{
				dataMap = getDataMap.getMap();
				String planEndYmd = (String) dataMap.get("PLAN_ENDYMD");
				if(planEndYmd.equals(MAX_DATE))
				{
					getMap.put("日付", planEndYmd);
				}
				else
				{
					planEndYmd = JBSbatDateUtil.adjustMonth(planEndYmd, 1);
					getMap.put("日付", planEndYmd.substring(0,6) + "01");
				}
			}
			
		}
		//休止受付変更登録完了
		if(classname.equals("CLASS14"))
		{
			getMap.put("日付", opeDate.substring(0, 8));
		}
		return getMap;
	}
	
	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	年月日
	 *		 	サービス契約番号
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_SVC_KEI_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		
		if(db_KK_T_SVC_KEI == null)
		{
			db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		}
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_001);
	}


	/**
	 * SQLKEY(KV_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約回線内訳番号
	 *		 	工事案件種別コード１
	 *		 	工事案件種別コード２
	 *		 	工事案件ステータス
	 *		 	工事案件完了(連携)年月日
	 *		 	サービス契約番号
	 *			運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static JBSbatCommonDBInterface executeKK_T_SVC_KEI_KV_SELECT_004(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());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());

		if(db_KK_T_SVC_KEI == null)
		{
			db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		}
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_004);

		return db_KK_T_SVC_KEI.selectNext();
	}
	
	/**
	 * SQLKEY(KV_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	年月日
	 *		 	サービス契約番号
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_SVC_KEI_UCWK_KV_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		
		if(db_KK_T_SVC_KEI_UCWK == null)
		{
			db_KK_T_SVC_KEI_UCWK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI_UCWK);
		}
		// DBアクセスを実行します
		db_KK_T_SVC_KEI_UCWK.selectBySqlDefine(paramList, KK_T_SVC_KEI_UCWK_KV_SELECT_003);
	}

	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	イベントコード
	 *		 	イベント年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static List<JBSbatCommonDBInterface> executeCH_M_PRC_SCHDL_TEIGI_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		if(db_CH_M_PRC_SCHDL_TEIGI == null)
		{
			db_CH_M_PRC_SCHDL_TEIGI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI);
		}
		// DBアクセスを実行します
		db_CH_M_PRC_SCHDL_TEIGI.selectBySqlDefine(paramList, CH_M_PRC_SCHDL_TEIGI_KV_SELECT_001);

		List<JBSbatCommonDBInterface> dbInfoList = new ArrayList<JBSbatCommonDBInterface>();
		JBSbatCommonDBInterface dbInfo = db_CH_M_PRC_SCHDL_TEIGI.selectNext();

		while (dbInfo != null) {
			dbInfoList.add(dbInfo);
			dbInfo = db_CH_M_PRC_SCHDL_TEIGI.selectNext();
		}

		return dbInfoList;
	}
	
	/**
	 * SQLKEY(KV_SELECT_101)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 		工事案件番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static JBSbatCommonDBInterface executeKU_T_KJAK_EOH_NET_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		if(db_KU_T_KJAK_EOH_NET == null)
		{
			db_KU_T_KJAK_EOH_NET = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_KJAK_EOH_NET);
		}
		// DBアクセスを実行します
		db_KU_T_KJAK_EOH_NET.selectBySqlDefine(paramList, KU_T_KJAK_EOH_NET_KV_SELECT_001);

		return db_KU_T_KJAK_EOH_NET.selectNext();
	}
	
	/**
	 * SQLKEY(KV_SELECT_102)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 		工事案件番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static JBSbatCommonDBInterface executeKU_T_KJAK_EOH_NTMANS_KV_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		if(db_KU_T_KJAK_EOH_NTMANS == null)
		{
			db_KU_T_KJAK_EOH_NTMANS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_KJAK_EOH_NTMANS);
		}
		// DBアクセスを実行します
		db_KU_T_KJAK_EOH_NTMANS.selectBySqlDefine(paramList, KU_T_KJAK_EOH_NTMANS_KV_SELECT_002);

		return db_KU_T_KJAK_EOH_NTMANS.selectNext();
	}
	
	/**
	 * SQLKEY(KV_SELECT_103)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 		工事案件番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static JBSbatCommonDBInterface executeKU_T_KJAK_EOH_TV_KV_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		
		if(db_KU_T_KJAK_EOH_TV == null)
		{
			db_KU_T_KJAK_EOH_TV = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_KJAK_EOH_TV);
		}
		// DBアクセスを実行します
		db_KU_T_KJAK_EOH_TV.selectBySqlDefine(paramList, KU_T_KJAK_EOH_TV_KV_SELECT_003);

		return db_KU_T_KJAK_EOH_TV.selectNext();
	}
	
	
	/**
	 * SQLKEY(KK_SELECT_201)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	  *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_SVC_KEI_KK_SELECT_201(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		if(db_KK_T_SVC_KEI == null)
		{
			db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		}
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_001);
	}
	
	/**
	 * SQLKEY(KV_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	年月日
	 *		 	サービス契約番号
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private static void executeKK_T_MSKM_KV_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		if(db_KK_T_MSKM == null)
		{
			db_KK_T_MSKM = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM);
		}
		// DBアクセスを実行します
		db_KK_T_MSKM.selectBySqlDefine(paramList, KK_T_MSKM_KV_SELECT_001);
	}
	
	/**
	 * テーブルアクセスクラスをクローズします。
	 * 
	 * @throws Exception 例外が発生した場合
	 */
	public void close() throws Exception
	{
		if (db_KK_T_SVC_KEI != null)
		{
			db_KK_T_SVC_KEI.close();
		}
		if (db_KK_T_KKTK_SVC_KEI != null)
		{
			db_KK_T_KKTK_SVC_KEI.close();
		}
		if (db_KK_T_OP_SVC_KEI != null)
		{
			db_KK_T_OP_SVC_KEI.close();
		}
		if (db_KK_T_SBOP_SVC_KEI != null)
		{
			db_KK_T_SBOP_SVC_KEI.close();
		}
		if (db_CH_M_PRC_SCHDL_TEIGI != null)
		{
			db_CH_M_PRC_SCHDL_TEIGI.close();
		}
		if (db_KU_T_KJAK_EOH_NET != null)
		{
			db_KU_T_KJAK_EOH_NET.close();
		}
		if (db_KU_T_KJAK_EOH_NTMANS != null)
		{
			db_KU_T_KJAK_EOH_NTMANS.close();
		}
		if (db_KU_T_KJAK_EOH_TV != null)
		{
			db_KU_T_KJAK_EOH_TV.close();
		}
		if (db_KK_T_MSKM != null)
		{
			db_KK_T_MSKM.close();
		}
		if(db_KK_T_SVC_KEI_UCWK != null)
		{
			db_KK_T_SVC_KEI_UCWK.close();
		}
		                                 
	}
	
}
