/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKktkSvkeiKjCmpTchWkSk
*	ソースファイル名	：JBSbatKKKktkSvkeiKjCmpTchWkSk.java
*	作成者				：富士通　
*	作成日				：2013年01月18日
*＜機能概要＞
*　機器提供サービス契約工事会社通知ワーク作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者			修正内容
*	v5.00.00	2013/01/18   FJ）神田		新規作成(【ANK-1387-00-00】対応)
*	v5.01.00	2013/02/23   FJ）神田		【IT2-2013-0000209】障害対応
*	v5.02.00	2013/03/21   FJ)柳			【IT1-2013-0000498】対応
*	v9.00.00	2014/05/12   FJ) 橋本		【ANK-2043-00-00】対応
*  v11.00.00	2014/12/03   FJ) 徳永		【OM-2014-0003794】対応
*  v11.00.01	2014/12/10   FJ) 起塚		【OM-2014-0003864】対応
*  v61.00.00	2022/11/04   GDC)j.lawsin	【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFI033;
import eo.business.util.table.JBSbatKK_T_ADCHG_DTL;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_UCWK;
import eo.business.util.table.JBSbatKU_T_KOJIAK;
import eo.business.common.JBSbatKKConst;
import eo.framework.application.JBSbatBusinessError;
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.JBSbatCheckUtil;
import eo.framework.util.JBSbatDateUtil;
import eo.framework.util.JBSbatOracleSeqUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKKktkSvkeiKjCmpTchWkSk extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

	/** テーブル(機器提供サービス契約工事会社通知ワーク)*/
	private static final String D_TBL_NAME_KK_T_KKTSVK_KCPTC_WK = "KK_T_KKTSVK_KCPTC_WK";

	/* ******** v11.00.00 追加開始 ******** */
	/** テーブル(工事案件)*/
	private static final String D_TBL_NAME_KU_T_KOJIAK = "KU_T_KOJIAK";
	
	/** テーブル(住所変更明細)*/
	private static final String D_TBL_NAME_KK_T_ADCHG_DTL = "KK_T_ADCHG_DTL";
	/* ******** v11.00.00 追加終了 ******** */
	
	/** SQL定義キー(KK_SELECT_127)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_127 = "KK_SELECT_127";
	
	/** SQL定義キー(KK_DELETE_001)*/
	private static final String KK_T_KKTSVK_KCPTC_WK_KK_DELETE_001 = "KK_DELETE_001";

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;

	/** テーブルアクセスクラス(機器提供サービス契約工事会社通知ワーク)*/
	private JBSbatSQLAccess db_KK_T_KKTSVK_KCPTC_WK = null;
	
	/* ******** v11.00.00 追加開始 ******** */
	/** テーブルアクセスクラス(機器オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKOP_SVC_KEI = null;
	
	/** テーブルアクセスクラス(工事案件)*/
	private JBSbatSQLAccess db_KU_T_KOJIAK = null;
	
	/** テーブルアクセスクラス(住所変更明細)*/
	private JBSbatSQLAccess db_KK_T_ADCHG_DTL = null;
	/* ******** v11.00.00 追加終了 ******** */
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/* ******** v9.00.00 修正開始 ******** */
	/** テーブル(機器オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKOP_SVC_KEI = "KK_T_KKOP_SVC_KEI";
	
	/** SQL定義キー(KK_SELECT_005)*/
	private static final String KK_T_KKOP_SVC_KEI_KK_SELECT_005 = "KK_SELECT_005";
	
	/* ******** v11.00.00 追加開始 ******** */
	/** SQL定義キー(KK_SELECT_009)*/
	private static final String KU_T_KOJIAK_KK_SELECT_009 = "KK_SELECT_009";
	
	/** SQL定義キー(KK_SELECT_045)*/
	private static final String KK_T_ADCHG_DTL_KK_SELECT_045 = "KK_SELECT_045";
	
	/** 異動区分（住所変更登録）*/
	private static final String IDO_DIV_00019 = "00019";
	
	/** 工事案件種別コード（新設）*/
	private static final String KOJIAK_SBT_CD_001 = "001";
	
	/** 工事案件種別コード（住所変更(新設)）*/
	private static final String KOJIAK_SBT_CD_003 = "003";
	/* ******** v11.00.00 追加終了 ******** */
	
	/** 機器オプションサービス契約(ルーター機能)*/
	private static final String KKOP_SVC_CD_ROOTER = "G01";
	
	/** 機器オプションサービス契約(VA機能)*/
	private static final String KKOP_SVC_CD_VA = "G02";
	
	/** 宅内機器型式コード設定値(多機能ルーター)*/
	private static final String TAKINORT = "R0";
	
	/** 配列の参照番号の設定(宅内機器種別コード)*/
	private static final int TAKNKIKI_SBT_CD = 11;
	
	/** 配列の参照番号の設定(機器提供サービス契約番号_機器OPサービス検索用)*/
	private static final int KKTK_SVC_KEI_NO_SELECT_005 = 5;
	
	/** 配列の参照番号の設定(予約適用年月日_機器OPサービス検索用)*/
	private static final int RSV_APLY_YMD_SELECT_005 = 1;
	
	/* ******** v9.00.00 修正終了 ******** */
	
	/* ******** v11.00.01 追加開始 ******** */	
	/** SQL定義キー(KK_SELECT_046)*/
	private static final String KK_T_ADCHG_DTL_KK_SELECT_046 = "KK_SELECT_046";
	
	/** 機器オプションサービス契約ステータス（解約済）*/
	private static final String KKOP_SVC_KEI_STAT_DEL = "910";
	
	/** 機器オプションサービス契約ステータス（キャンセル済）*/
	private static final String KKOP_SVC_KEI_STAT_CAN = "920";
	/* ******** v11.00.01 追加終了 ******** */	

	/** シーケンス名(機器提供サービス契約工事会社通知ワーク) */
	private static final String SEQ_KKTSVK_KCPTC_WK_NO = "SEQ_KKTSVK_KCPTC_WK_NO";

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		db_KK_T_KKTSVK_KCPTC_WK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTSVK_KCPTC_WK);
		
		/* ******** v9.00.00 修正開始 ******** */
		db_KK_T_KKOP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKOP_SVC_KEI);
		/* ******** v9.00.00 修正終了 ******** */
		/* ******** v11.00.00 追加開始 ******** */
		db_KU_T_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_KOJIAK);
		db_KK_T_ADCHG_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ADCHG_DTL);
		/* ******** v11.00.00 追加終了 ******** */

		// 機器提供サービス契約工事会社通知ワーク全件削除処理
		executeKK_T_KKTSVK_KCPTC_WK_KK_DELETE_001();
	/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");

		// 入力チェックエラー出力の置換文字列格納用HashMap生成
		HashMap<String, Object> itemvalueMap = new HashMap<String, Object>();
		// エラー対象レコード識別文字列
		itemvalueMap.put("TXT-KKIFI033-INF1.SVC_KEI_NO", "【エラー対象レコード】機器契約抽出対象工事情報ファイル.サービス契約番号 ：" + inMap.getString(JBSbatKKIFI033.SVC_KEI_NO));
		itemvalueMap.put("TXT-KKIFI033-INF1.SVC_KEI_KAISEN_UCWK_NO", "【エラー対象レコード】機器契約抽出対象工事情報ファイル.サービス契約回線内訳番号 ：" + inMap.getString(JBSbatKKIFI033.SVC_KEI_KAISEN_UCWK_NO));
		itemvalueMap.put("TXT-KKIFI033-INF1.KOJIAK_NO", "【エラー対象レコード】機器契約抽出対象工事情報ファイル.工事案件番号 ：" + inMap.getString(JBSbatKKIFI033.KOJIAK_NO));
		itemvalueMap.put("TXT-KKIFI033-INF1.KOJIAK_STAT", "【エラー対象レコード】機器契約抽出対象工事情報ファイル.工事案件ステータス ：" + inMap.getString(JBSbatKKIFI033.KOJIAK_STAT));
		itemvalueMap.put("TXT-KKIFI033-INF1.KOJIAK_SBT_CD", "【エラー対象レコード】機器契約抽出対象工事情報ファイル.工事案件種別コード ：" + inMap.getString(JBSbatKKIFI033.KOJIAK_SBT_CD));
		
		if (!isSingleCheckKKIFI033_INF1(inMap.getMap(), itemvalueMap)){
			throw new JBSbatBusinessError();
		}
		
		// ファイル情報よりバインド変数を取得します。
		Object[] param = getKeiInfo(inMap);

		if (null == param)
		{
			super.logPrint.printDebugLog("ファイルが０件です。");
			return null;
		}

		// 契約情報を抽出します。
		executeKK_T_KKTK_SVC_KEI_KK_SELECT_127(param);

		// 検索結果の取得
		JBSbatCommonDBInterface kktkSvcKei = db_KK_T_KKTK_SVC_KEI.selectNext();

		if (null == kktkSvcKei)
		{
			// 検索結果がない場合
			super.logPrint.printDebugLog("契約情報が取得できませんでした。");
		}
		else
		{
			/* ******** v11.00.00 追加開始 ******** */
			// 工事案件番号取得
			String kojiAkNo = inMap.getString(JBSbatKKIFI033.KOJIAK_NO);
			// 工事案件番号取得
			String svcKeiKaisenUcwkNo = inMap.getString(JBSbatKKIFI033.SVC_KEI_KAISEN_UCWK_NO);
			
			String[] selectkojiAkParam = {kojiAkNo};
			
			executeKU_T_KOJIAK_KK_SELECT_009(selectkojiAkParam);
			JBSbatCommonDBInterface kojiakMap = db_KU_T_KOJIAK.selectNext();
			
			// 撤去機器リストを生成
			ArrayList<String> dslKikiMapList = new ArrayList<String>();
			
			/* ******** v11.00.01 追加開始 ******** */
			// 撤去機器オプションリストを生成
			ArrayList<String> dslKkopMapList = new ArrayList<String>();
			/* ******** v11.00.01 追加終了 ******** */
			
			if (kojiakMap != null)
			{
				String kojiUkOptntyIdoDiv = JBSbatStringUtil.Rtrim(kojiakMap.getString(JBSbatKU_T_KOJIAK.KOJI_UK_OPTNTY_IDO_DIV));
				String kojiakSbtCd = JBSbatStringUtil.Rtrim(kojiakMap.getString(JBSbatKU_T_KOJIAK.KOJIAK_SBT_CD));
				
				// 工事受付起因異動区分が住所変更登録
				// 且つ（工事案件種別が001:新設または003:住変（新設））の場合
				if (IDO_DIV_00019.equals(kojiUkOptntyIdoDiv)
						&& (KOJIAK_SBT_CD_001.equals(kojiakSbtCd) || KOJIAK_SBT_CD_003.equals(kojiakSbtCd)))
				{
					// 住所変更明細（機器）mapを生成
					JBSbatCommonDBInterface kikiMap = null;
					
					// 住所変更明細検索用パラメータ設定
					String[] selectAdchgDtlParam = {svcKeiKaisenUcwkNo};
					
					// 住所変更明細検索
					executeKK_T_ADCHG_DTL_KK_SELECT_045(selectAdchgDtlParam);
					
					// 取得した住所変更明細（機器）分繰り返し、撤去機器リストを作成する。
					for (kikiMap = db_KK_T_ADCHG_DTL.selectNext(); null != kikiMap ; kikiMap = db_KK_T_ADCHG_DTL.selectNext())
					{
						// 変更対象契約番号
						String chgTgKeiNo = JBSbatStringUtil.Rtrim(kikiMap.getString(JBSbatKK_T_ADCHG_DTL.CHG_TG_KEI_NO));
						
						// 変更前識別番号
						String chbfSkbtNo = JBSbatStringUtil.Rtrim(kikiMap.getString(JBSbatKK_T_ADCHG_DTL.CHBF_SKBT_NO));
						
						// 変更後識別番号
						String chafSkbtNo = JBSbatStringUtil.Rtrim(kikiMap.getString(JBSbatKK_T_ADCHG_DTL.CHAF_SKBT_NO));
						
						// 撤去機器の場合
						// ※変更前識別番号有り且つ変更後識別番号無し
						if (!"".equals(chbfSkbtNo) && "".equals(chafSkbtNo))
						{
							// 撤去機器リストへ住所変更明細（機器）mapを追加
							dslKikiMapList.add(chgTgKeiNo);
						}
					}
					
					/* ******** v11.00.01 追加開始 ******** */
					// 住所変更明細検索
					executeKK_T_ADCHG_DTL_KK_SELECT_046(selectAdchgDtlParam);
					
					// 取得した住所変更明細（機器）分繰り返し、撤去機器オプションリストを作成する。
					for (kikiMap = db_KK_T_ADCHG_DTL.selectNext(); null != kikiMap ; kikiMap = db_KK_T_ADCHG_DTL.selectNext())
					{
						// 変更前識別番号
						String chbfSkbtNo = JBSbatStringUtil.Rtrim(kikiMap.getString(JBSbatKK_T_ADCHG_DTL.CHBF_SKBT_NO));
						
						// 変更後識別番号
						String chafSkbtNo = JBSbatStringUtil.Rtrim(kikiMap.getString(JBSbatKK_T_ADCHG_DTL.CHAF_SKBT_NO));
						
						// 撤去機器オプションの場合
						// ※変更前識別番号有り且つ変更後識別番号無し
						if (!"".equals(chbfSkbtNo) && "".equals(chafSkbtNo))
						{
							// 撤去機器オプションリストへ住所変更明細（機器オプション）mapを追加
							dslKkopMapList.add(chbfSkbtNo);
						}
					}
					/* ******** v11.00.01 追加終了 ******** */
				}
			}
			/* ******** v11.00.00 追加終了 ******** */
			// 取得件数分の繰返し
			while (null != kktkSvcKei)
			{
				/* ******** v11.00.00 追加開始 ******** */
				String kktkSvcKeiNo = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO));
				
				// 撤去機器の場合は登録処理を実行しない。
				if (dslKikiMapList.contains(kktkSvcKeiNo)){
					kktkSvcKei = db_KK_T_KKTK_SVC_KEI.selectNext();
					continue;
				}
				/* ******** v11.00.00 追加終了 ******** */
				
				// 登録値を設定
				Object[] setParam = setKktkSvcKei(inMap, kktkSvcKei);
				
				/* ******** v9.00.00 修正開始 ******** */
				// ANK-4315-00-00 MOD START
				// 対象の機器が「R0：多機能ルーター」、または、「S0：HGW」の場合
				// 多機能ルーター機能コード、多機能ルータールーター機能識別コードを設定します。
				if(TAKINORT.equals(setParam[TAKNKIKI_SBT_CD]) 
					|| JBSbatKKConst.CD01262_TAKNKIKI_SBT_CD_S0.equals(setParam[TAKNKIKI_SBT_CD]))
				// ANK-4315-00-00 MOD END
				{
					
					// 機器オプションサービス契約から情報抽出
					executeKK_T_KKOP_SVC_KEI_KK_SELECT_005(setParam,param);
					// 検索結果の取得
					JBSbatCommonDBInterface kkopSvcKei = db_KK_T_KKOP_SVC_KEI.selectNext();
					
					// ネット機能が存在する場合trueがたちます。
					boolean flg_A = false;
					// VA機能が存在する場合trueがたちます。
					boolean flg_B = false;
					// 機器OPサービスCD
					
					// 多機能ルーター機能コード(登録値)
					String kinoCd = "";
					// 多機能ルータールーター機能識別コード(登録値)
					String skbtCd = "";
					
					while(null != kkopSvcKei)
					{
						/* ******** v11.00.01 追加開始 ******** */
						// 機器オプションサービス契約ステータスを取得
						String kkopSvcKeiStat = (String) kkopSvcKei.getMap().get("KKOP_SVC_KEI_STAT");
						// 機器オプションサービス契約番号を取得
						String kkopSvcKeiNo = (String) kkopSvcKei.getMap().get("KKOP_SVC_KEI_NO");
						
						// 機器オプションサービス契約ステータスが解約済・キャンセル済の場合は対象外
						if (KKOP_SVC_KEI_STAT_DEL.equals(kkopSvcKeiStat) || KKOP_SVC_KEI_STAT_CAN.equals(kkopSvcKeiStat))
						{
							// 次レコードを取得
							kkopSvcKei = db_KK_T_KKOP_SVC_KEI.selectNext();
							
							continue;
						}
						
						// 撤去機器オプションの場合は登録処理を実行しない。
						if (dslKkopMapList.contains(kkopSvcKeiNo))
						{
							// 次レコードを取得
							kkopSvcKei = db_KK_T_KKOP_SVC_KEI.selectNext();
							
							continue;
						}
						/* ******** v11.00.01 追加終了 ******** */
						
						if(KKOP_SVC_CD_ROOTER.equals(kkopSvcKei.getMap().get("KKOP_SVC_CD")))
						{
							flg_A = true;
						}
						else if(KKOP_SVC_CD_VA.equals(kkopSvcKei.getMap().get("KKOP_SVC_CD")))
						{
							flg_B = true;
						}
						
						if(KKOP_SVC_CD_ROOTER.equals(kkopSvcKei.getMap().get("PCRS_CD")))
						{
							skbtCd = "1";
						}
						else if(KKOP_SVC_CD_VA.equals(kkopSvcKei.getMap().get("PCRS_CD")))
						{
							skbtCd = "0";
						}
						
						// 次レコードを取得
						kkopSvcKei = db_KK_T_KKOP_SVC_KEI.selectNext();
					}
					
					if(flg_A && flg_B)
					{
						kinoCd = "C";
					}
					else if(flg_A)
					{
						kinoCd = "A";
					}
					else if(flg_B)
					{
						kinoCd = "B";
					}
					
					// 
					setParam[29] = kinoCd;
					setParam[30] = skbtCd;
					
				}
				/* ******** v9.00.00 修正終了 ******** */
				// 機器提供サービス契約工事会社通知ワーク登録処理
				executeKK_T_KKTSVK_KCPTC_WK_PKINSERT(setParam);

				kktkSvcKei = db_KK_T_KKTK_SVC_KEI.selectNext();
			}
		}

		super.logPrint.printDebugLog("execute_END");
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KKTK_SVC_KEI.close();
		db_KK_T_KKTSVK_KCPTC_WK.close();
		db_KK_T_KKOP_SVC_KEI.close();
		/* ******** v11.00.00 追加開始 ******** */
		db_KU_T_KOJIAK.close();
		db_KK_T_ADCHG_DTL.close();
		/* ******** v11.00.00 追加終了 ******** */
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_127)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 *		 	サービス契約番号
	 *		 	サービス契約回線内訳番号
	 *		 	予約適用年月日
	 *		 	サービス契約回線内訳番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTK_SVC_KEI_KK_SELECT_127(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());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_127);
	}
	
	/**
	 * SQLKEY(KK_DELETE_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.DBアクセスを実行します。<br>
	 * </pre>
	 * <p>
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTSVK_KCPTC_WK_KK_DELETE_001() throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_KK_T_KKTSVK_KCPTC_WK.executeBySqlDefine(paramList, KK_T_KKTSVK_KCPTC_WK_KK_DELETE_001);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	機器提供サービス契約工事会社通知ワーク番号				KKTSVK_KCPTC_WK_NO
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	サービス契約回線内訳番号				SVC_KEI_KAISEN_UCWK_NO
	 *		 	工事案件番号				KOJIAK_NO
	 *		 	サービス契約内訳番号				SVC_KEI_UCWK_NO
	 *		 	機器提供サービス契約番号				KKTK_SVC_KEI_NO
	 *		 	機器提供サービス契約世代登録年月日時分秒				KKTSVKEI_GADTM
	 *		 	機器提供サービス契約ステータス				KKTK_SVC_KEI_STAT
	 *		 	機器変更番号				KIKI_CHG_NO
	 *		 	宅内機器型式コード				TAKNKIKI_MODEL_CD
	 *		 	機器製造番号				KIKI_SEIZO_NO
	 *		 	宅内機器種別コード				TAKNKIKI_SBT_CD
	 *		 	機器提供種別コード				KKTK_SBT_CD
	 *		 	ＨＤＤ容量コード				HDD_CAPA_CD
	 *		 	サービス契約内訳料金コースコード				SVKEIUW_PCRS_CD
	 *		 	サービス契約内訳料金プランコード				SVKEIUW_PPLAN_CD
	 *		 	登録年月日時分秒				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
	 *			多機能ルーター機能コード	TAKINORT_KINO_CD
	 *			多機能ルータールーター機能識別コード	TAKINORT_RTR_KINO_SKCD
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKTSVK_KCPTC_WK_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("KKTSVK_KCPTC_WK_NO", setParam[0]);
		setMap.setValue("SVC_KEI_NO", setParam[1]);
		setMap.setValue("SVC_KEI_KAISEN_UCWK_NO", setParam[2]);
		setMap.setValue("KOJIAK_NO", setParam[3]);
		setMap.setValue("SVC_KEI_UCWK_NO", setParam[4]);
		setMap.setValue("KKTK_SVC_KEI_NO", setParam[5]);
		setMap.setValue("KKTSVKEI_GADTM", setParam[6]);
		setMap.setValue("KKTK_SVC_KEI_STAT", setParam[7]);
		setMap.setValue("KIKI_CHG_NO", setParam[8]);
		setMap.setValue("TAKNKIKI_MODEL_CD", setParam[9]);
		setMap.setValue("KIKI_SEIZO_NO", setParam[10]);
		setMap.setValue("TAKNKIKI_SBT_CD", setParam[11]);
		setMap.setValue("KKTK_SBT_CD", setParam[12]);
		setMap.setValue("HDD_CAPA_CD", setParam[13]);
		setMap.setValue("SVKEIUW_PCRS_CD", setParam[14]);
		setMap.setValue("SVKEIUW_PPLAN_CD", setParam[15]);
		setMap.setValue("ADD_DTM", setParam[16]);
		setMap.setValue("ADD_OPEACNT", setParam[17]);
		setMap.setValue("UPD_DTM", setParam[18]);
		setMap.setValue("UPD_OPEACNT", setParam[19]);
		setMap.setValue("DEL_DTM", setParam[20]);
		setMap.setValue("DEL_OPEACNT", setParam[21]);
		setMap.setValue("MK_FLG", setParam[22]);
		setMap.setValue("ADD_UNYO_YMD", setParam[23]);
		setMap.setValue("ADD_TRN_ID", setParam[24]);
		setMap.setValue("UPD_UNYO_YMD", setParam[25]);
		setMap.setValue("UPD_TRN_ID", setParam[26]);
		setMap.setValue("DEL_UNYO_YMD", setParam[27]);
		setMap.setValue("DEL_TRN_ID", setParam[28]);
		/* ******** v9.00.00 修正開始 ******** */
		setMap.setValue("TAKINORT_KINO_CD", setParam[29]);
		setMap.setValue("TAKINORT_RTR_KINO_SKCD", setParam[30]);
		/* ******** v9.00.00 修正終了 ******** */
	
		// DBアクセスを実行します
		db_KK_T_KKTSVK_KCPTC_WK.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/* ******** v9.00.00 修正開始 ******** */
	/**
	 * SQLKEY(KK_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	機器提供サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param setParam 
	 * @param KktkSvcParam 機器提供サービス契約から取得した値
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KKOP_SVC_KEI_KK_SELECT_005(Object[] setParam,Object[] KktkSvcParam) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(setParam[KKTK_SVC_KEI_NO_SELECT_005].toString());
		paramList.setValue(KktkSvcParam[RSV_APLY_YMD_SELECT_005].toString());

		// DBアクセスを実行します
		db_KK_T_KKOP_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKOP_SVC_KEI_KK_SELECT_005);
	}
	/* ******** v9.00.00 修正終了 ******** */
	
	/**
	 * ファイル情報の取得処理
	 * @param inMap 入力電文
	 * @return Object[] バインド変数設定値
	 * @throws Exception 
	 */
	private Object[] getKeiInfo(JBSbatServiceInterfaceMap inMap) throws Exception {
		Object[] param = null;

		if (null != inMap && !inMap.isInputErrorFlg())
		{
			param = new Object[7];

			// サービス契約番号
			param[0] = inMap.getString(JBSbatKKIFI033.SVC_KEI_NO);

			// 運用年月日
			param[1] = super.opeDate;

			// サービス契約番号
			param[2] = inMap.getString(JBSbatKKIFI033.SVC_KEI_NO);

			// サービス契約回線内訳番号
			param[3] = inMap.getString(JBSbatKKIFI033.SVC_KEI_KAISEN_UCWK_NO);

			// 運用年月日
			param[4] = super.opeDate;

			// サービス契約回線内訳番号
			param[5] = inMap.getString(JBSbatKKIFI033.SVC_KEI_KAISEN_UCWK_NO);

			// 運用年月日
			param[6] = super.opeDate;

		}
		return param;
	}
	
	/**
	 * 登録値の設定処理
	 * @param JBSbatServiceInterfaceMap ファイル情報
	 * @param JBSbatCommonDBInterface 検索結果情報
	 * @return Object[] 登録値
	 * @throws Exception
	 */
	private Object[] setKktkSvcKei(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface kktkSvcKei) throws Exception {
		
		/* ******** v9.00.00 修正開始 ******** */
		// setParamのサイズを 29 ⇒ 31 に修正
		Object[] setParam = new Object[31];
		/* ******** v9.00.00 修正終了 ******** */
		
		// シーケンス
		String seqNo = JBSbatStringUtil
						.padNumFormString(JBSbatOracleSeqUtil.getNextSeq(super.commonItem.getConnection(), SEQ_KKTSVK_KCPTC_WK_NO), 12);

		// システム日時を取得
		String sysDateTime = JBSbatDateUtil.getSystemDateTimeStamp();

		// 機器提供サービス契約工事会社通知ワーク番号
		setParam[0] = seqNo;

		// サービス契約番号
		setParam[1] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_NO));

		// サービス契約回線内訳番号
		setParam[2] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_KAISEN_UCWK_NO));

		// 工事案件番号
		setParam[3] = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFI033.KOJIAK_NO));

		// サービス契約内訳番号
		setParam[4] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_UCWK_NO));

		// 機器提供サービス契約番号
		setParam[5] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO));

		// 機器提供サービス契約世代登録年月日時分秒
		setParam[6] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.GENE_ADD_DTM));

		// 機器提供サービス契約ステータス
		setParam[7] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_STAT));

		// 機器変更番号
		setParam[8] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_CHG_NO));

		// 宅内機器型式コード
		setParam[9] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD));

		// 機器製造番号
		setParam[10] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SEIZO_NO));

		// 宅内機器種別コード
		setParam[11] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_SBT_CD));

		// 機器提供種別コード
		setParam[12] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SBT_CD));

		// HDD容量コード
		setParam[13] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_KKTK_SVC_KEI.HDD_CAPA_CD));

		// サービス契約内訳料金コースコード
		setParam[14] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_SVC_KEI_UCWK.PCRS_CD));

		// サービス契約内訳料金プランコード
		setParam[15] = JBSbatStringUtil.Rtrim(kktkSvcKei.getString(JBSbatKK_T_SVC_KEI_UCWK.PPLAN_CD));
		
		// 登録年月日時分秒
		setParam[16] = sysDateTime;

		// 登録オペレータアカウント
		setParam[17] = super.batchUserId;

		// 更新年月日時分秒
		setParam[18] = sysDateTime;

		// 更新オペレータアカウント
		setParam[19] = super.batchUserId;

		// 削除年月日時分秒
		setParam[20] = "";

		// 削除オペレータアカウント
		setParam[21] = "";

		// 無効フラグ
		setParam[22] = "0";

		// 登録運用年月日
		setParam[23] = "";

		// 登録処理ID
		setParam[24] = "";

		// 更新運用年月日
		setParam[25] = "";

		// 更新処理ID
		setParam[26] = "";

		// 削除運用年月日
		setParam[27] = "";

		// 削除処理ID
		setParam[28] = "";
		
		/* ******** v9.00.00 修正開始 ******** */
		// 多機能ルーター機能コード,多機能ルータールーター機能識別コードを追加
		
		// 多機能ルーター機能コード
		setParam[29] = "";
		
		// 多機能ルータールーター機能識別コード
		setParam[30] = "";
		/* ******** v9.00.00 修正終了 ******** */

		return setParam;
	}
	
	
	/**
	 *入力情報（機器契約抽出対象工事情報ファイル）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 TXT-KKIFI033-INF1.SVC_KEI_NO			機器契約抽出対象工事情報ファイル.サービス契約番号
	 *			 TXT-KKIFI033-INF1.SVC_KEI_NO			機器契約抽出対象工事情報ファイル.サービス契約番号
	 *			 TXT-KKIFI033-INF1.SVC_KEI_KAISEN_UCWK_NO			機器契約抽出対象工事情報ファイル.サービス契約回線内訳番号
	 *			 TXT-KKIFI033-INF1.SVC_KEI_KAISEN_UCWK_NO			機器契約抽出対象工事情報ファイル.サービス契約回線内訳番号
	 *			 TXT-KKIFI033-INF1.KOJIAK_NO			機器契約抽出対象工事情報ファイル.工事案件番号
	 *			 TXT-KKIFI033-INF1.KOJIAK_NO			機器契約抽出対象工事情報ファイル.工事案件番号
	 *			 TXT-KKIFI033-INF1.KOJIAK_STAT			機器契約抽出対象工事情報ファイル.工事案件ステータス
	 *			 TXT-KKIFI033-INF1.KOJIAK_STAT			機器契約抽出対象工事情報ファイル.工事案件ステータス
	 *			 TXT-KKIFI033-INF1.KOJIAK_SBT_CD			機器契約抽出対象工事情報ファイル.工事案件種別コード
	 *			 TXT-KKIFI033-INF1.KOJIAK_SBT_CD			機器契約抽出対象工事情報ファイル.工事案件種別コード
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private boolean isSingleCheckKKIFI033_INF1(HashMap rsMap, HashMap<String,Object> itemvalueMap)
	{
		// 単項目チェックを行います
		String strValue = null;

		// サービス契約番号項目チェック
		strValue = (String)rsMap.get("SVC_KEI_NO");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"double_chk", "10", "10"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFI033-INF1.SVC_KEI_NO")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFI033-INF1.SVC_KEI_NO")});
			return false;
		}

		// サービス契約回線内訳番号項目チェック
		strValue = (String)rsMap.get("SVC_KEI_KAISEN_UCWK_NO");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"double_chk", "12", "12"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFI033-INF1.SVC_KEI_KAISEN_UCWK_NO")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFI033-INF1.SVC_KEI_KAISEN_UCWK_NO")});
			return false;
		}

		// 工事案件番号項目チェック
		strValue = (String)rsMap.get("KOJIAK_NO");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"double_chk", "10", "10"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFI033-INF1.KOJIAK_NO")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFI033-INF1.KOJIAK_NO")});
			return false;
		}

		// 工事案件ステータス項目チェック
		strValue = (String)rsMap.get("KOJIAK_STAT");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"double_chk", "3", "3"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFI033-INF1.KOJIAK_STAT")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFI033-INF1.KOJIAK_STAT")});
			return false;
		}

		// 工事案件種別コード項目チェック
		strValue = (String)rsMap.get("KOJIAK_SBT_CD");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"double_chk", "3", "3"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFI033-INF1.KOJIAK_SBT_CD")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFI033-INF1.KOJIAK_SBT_CD")});
			return false;
		}

		return true;
	}
	/* ******** v11.00.00 追加開始 ******** */
	/**
	 * SQLKEY(KK_SELECT_009)で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_KOJIAK_KK_SELECT_009(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KU_T_KOJIAK.selectBySqlDefine(paramList, KU_T_KOJIAK_KK_SELECT_009);
	}
	
	/**
	 * SQLKEY(KK_SELECT_045)で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_045(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_045);
	}
	/* ******** v11.00.00 追加終了 ******** */	
	
	/* ******** v11.00.01 追加開始 ******** */	
	/**
	 * 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_ADCHG_DTL_KK_SELECT_046(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_046);
	}
	/* ******** v11.00.01 追加終了 ******** */	
}