/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKSvkeiuwDelTgCst
*	ソースファイル名	：JBSbatKKSvkeiuwDelTgCst.java
*	作成者				：富士通　
*	作成日				：2012年04月19日
*＜機能概要＞
*　サービス契約内訳消去対象抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/04/19   富士通		新規作成
*	v4.00.00	2012/10/04   FJ)敷地  現行ICS指摘対応：337
*   v5.00.00    2013/01/18   FJ)脇田  ANK-1171-00-00対応
*	v5.00.01	2013/02/13   FJ)高橋  IT1-2013-0000285対応
*********************************************************************/
package eo.business.service;

import java.util.Calendar;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.util.file.JBSbatKKIFM160;
import eo.business.util.table.JBSbatKK_M_PRC_GRP;
//import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI_UCWK;
import eo.business.util.table.JBSbatKK_T_SVKEIUW_EOH_NET;
import eo.business.util.table.JBSbatKK_T_SVKEIUW_EOH_TEL;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
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;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKSvkeiuwDelTgCst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービス契約内訳＜ｅｏ光ネット＞)*/
	private static final String D_TBL_NAME_KK_T_SVKEIUW_EOH_NET = "KK_T_SVKEIUW_EOH_NET";

	/** テーブル(サービス契約内訳＜ｅｏ光電話＞)*/
	private static final String D_TBL_NAME_KK_T_SVKEIUW_EOH_TEL = "KK_T_SVKEIUW_EOH_TEL";

	/** テーブル(料金グループ)*/
	private static final String D_TBL_NAME_KK_M_PRC_GRP = "KK_M_PRC_GRP";

	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** テーブル(オーダ設定)*/
	private static final String D_TBL_NAME_KK_T_ODR_SET = "KK_T_ODR_SET";

	// IT1-2013-0000285 2013/02/13 DEL START
	///** テーブル(オーダ発行条件)*/
	//private static final String D_TBL_NAME_KK_T_ODR_HAKKO_JOKEN = "KK_T_ODR_HAKKO_JOKEN";
	// IT1-2013-0000285 2013/02/13 DEL END

	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

	/** テーブル(返品機器)*/
	private static final String D_TBL_NAME_DK_T_HMPIN_KIKI = "DK_T_HMPIN_KIKI";

	/** SQL定義キー(KK_SELECT_006)*/
	private static final String KK_T_SVKEIUW_EOH_NET_KK_SELECT_006 = "KK_SELECT_006";

	/** SQL定義キー(KK_SELECT_018)*/
	private static final String KK_T_SVKEIUW_EOH_TEL_KK_SELECT_018 = "KK_SELECT_018";

	/** SQL定義キー(KK_SELECT_008)*/
	private static final String KK_M_PRC_GRP_KK_SELECT_008 = "KK_SELECT_008";

	/** SQL定義キー(KK_SELECT_017)*/
	private static final String ZM_M_WORK_PARAM_KNRI_KK_SELECT_017 = "KK_SELECT_017";

	/** SQL定義キー(KK_SELECT_011)*/
	private static final String KK_T_ODR_SET_KK_SELECT_011 = "KK_SELECT_011";

	// IT1-2013-0000285 2013/02/13 DEL START
	///** SQL定義キー(KK_SELECT_005)*/
	//private static final String KK_T_ODR_HAKKO_JOKEN_KK_SELECT_005 = "KK_SELECT_005";
	// IT1-2013-0000285 2013/02/13 DEL END

	/** SQL定義キー(KK_SELECT_036)*/
	private static final String KK_T_SVKEIUW_EOH_TEL_KK_SELECT_036 = "KK_SELECT_036";

	/** SQL定義キー(KK_SELECT_129)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_129 = "KK_SELECT_129";

	/** SQL定義キー(KK_SELECT_003)*/
	private static final String DK_T_HMPIN_KIKI_KK_SELECT_003 = "KK_SELECT_003";

	/** SQL定義キー(KK_SELECT_037)*/
	private static final String KK_T_SVKEIUW_EOH_TEL_KK_SELECT_037 = "KK_SELECT_037";

	/** テーブルアクセスクラス(サービス契約内訳＜ｅｏ光ネット＞)*/
	private JBSbatSQLAccess db_KK_T_SVKEIUW_EOH_NET = null;

	/** テーブルアクセスクラス(サービス契約内訳＜ｅｏ光電話＞)*/
	private JBSbatSQLAccess db_KK_T_SVKEIUW_EOH_TEL = null;

	/** テーブルアクセスクラス(料金グループ)*/
	private JBSbatSQLAccess db_KK_M_PRC_GRP = null;

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;

	/** テーブルアクセスクラス(オーダ設定)*/
	private JBSbatSQLAccess db_KK_T_ODR_SET = null;

	// IT1-2013-0000285 2013/02/13 DEL START
	///** テーブルアクセスクラス(オーダ発行条件)*/
	//private JBSbatSQLAccess db_KK_T_ODR_HAKKO_JOKEN = null;
	// IT1-2013-0000285 2013/02/13 DEL END

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;

	/** テーブルアクセスクラス(返品機器)*/
	private JBSbatSQLAccess db_DK_T_HMPIN_KIKI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**--消去処理種別--*/
	/** 消去処理種別(消去SOD発行) */
	private static final String DEL_TRAN_SBT_SOD = "1";

	/** 消去処理種別(エイジング更新) */
	private static final String DEL_TRAN_SBT_AGING_UPD = "2";
	
	// IT1-2013-0000285 2013/02/13 ADD START
	/** 消去処理種別(消去SOD発行・エイジング更新) */
	private static final String DEL_TRAN_SBT_SOD_AGING_UPD = "3";
	// IT1-2013-0000285 2013/02/13 ADD END
	
	/**--消去対象種別--*/
	/** 消去対象種別((旧)ISP認証ID) */
	private static final String DEL_TRGT_SBT_OLD_ISP_NINSHO_ID = "02";
	
	/** 消去対象種別(OABJ電話番号) */
	private static final String DEL_TRGT_SBT_OABJ_TLN = "09";
	
	// IT1-2013-0000285 2013/02/13 ADD START
	/** 消去対象種別(SIPユーザーＩＤ) */
	private static final String DEL_TRGT_SBT_SIP_USER_ID = "17";
	// IT1-2013-0000285 2013/02/13 ADD END

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_SVKEIUW_EOH_NET = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEIUW_EOH_NET);
		db_KK_T_SVKEIUW_EOH_TEL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVKEIUW_EOH_TEL);
		db_KK_M_PRC_GRP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PRC_GRP);
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		db_KK_T_ODR_SET = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ODR_SET);
		// IT1-2013-0000285 2013/02/13 DEL START
		//db_KK_T_ODR_HAKKO_JOKEN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ODR_HAKKO_JOKEN);
		// IT1-2013-0000285 2013/02/13 DEL END
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		db_DK_T_HMPIN_KIKI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_HMPIN_KIKI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		HashMap<Integer, String> tempHakkoParam = new HashMap<Integer, String>();
		JBSbatOutputItem outputBean = new JBSbatOutputItem();				// 出力情報


		// サービスコードの取得
		String svcCd = inMap.getString(JBSbatKK_T_SVC_KEI.SVC_CD);
		
		//--サービスコードの判別処理
		if(JBSbatKKConst.SVC_CD_IN_SVC.equals(svcCd))
		{	// インターネットサービスの場合
			
			//消去対象データ設定処理(インターネット)
			setDelTrgtDataIn(inMap, outputBean, tempHakkoParam);
		}
		else if(JBSbatKKConst.SVC_CD_TEL_SVC.equals(svcCd))
		{	// 電話サービスの場合
			
			//消去対象データ設定処理(電話サービス)
			setDelTrgtDataTel(inMap, outputBean);
		}
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 消去対象データ設定処理（インターネットサービス）
	 * 
	 * @param inMap　入力電文
	 * @param outputBean
	 * @param tempHakkoParam
	 * @throws Exception
	 */
	private void setDelTrgtDataIn(JBSbatServiceInterfaceMap inMap,
			JBSbatOutputItem outputBean,
			HashMap<Integer, String> tempHakkoParam) throws Exception
	{
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();	// 出力レコード
		JBSbatCommonDBInterface nextRec = null;
		String cschJiOldNinshoIdUseYuyoNisu = "";
		String svcEndYmd = "";

		//--SQLパラメータの設定
		// SQLパラメータの設定(コース変更時旧認証ID利用猶予日数の取得)
		Object[] workSelectWhereParam = new Object[3];
		workSelectWhereParam[0] = "KK_OLDNISID_YYDAYCNT";	// 業務パラメータID
		workSelectWhereParam[1] = super.opeDate;	// 運用日
		workSelectWhereParam[2] = super.opeDate;	// 運用日
		
		//業務パラメータからコース変更時旧認証ID利用猶予日数の取得
		executeZM_M_WORK_PARAM_KNRI_KK_SELECT_017(workSelectWhereParam);
		
		nextRec = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		

		if(nextRec != null)
		{
			svcEndYmd = inMap.getString(JBSbatKK_T_SVC_KEI.SVC_ENDYMD);			//サービス終了年月日
			cschJiOldNinshoIdUseYuyoNisu = nextRec.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);	// コース変更時旧認証ID利用猶予日数
			
			if(isOverDate(svcEndYmd, cschJiOldNinshoIdUseYuyoNisu))
			{
				return;
			}
			
			//--SQLパラメータの設定
			// SQLパラメータの設定(ISP認証IDの取得)
			Object[] selectWhereParam = new Object[3];
			selectWhereParam[0] = inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO);// サービス契約内訳番号
			//MOD START
			//selectWhereParam[1] = inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.GENE_ADD_DTM);	// 世代登録年月日時分秒
			selectWhereParam[1] = inMap.getString("UCWK_GENE");	// 世代登録年月日時分秒
			//MOD END
			
			// ISP認証IDの取得
			executeKK_T_SVKEIUW_EOH_NET_KK_SELECT_006(selectWhereParam);
			
			nextRec = db_KK_T_SVKEIUW_EOH_NET.selectNext();
			
			if(nextRec != null)
			{
				if(isAddSodHakCfmTrn(inMap))
				{// 対象のISP認証IDの登録SODが発行済みの場合のみ出力する。
				
					// IT1-2013-0000285 2013/02/13 MOD START
					//outmap.setString(JBSbatKKIFM160.DEL_TRAN_SBT, DEL_TRAN_SBT_SOD);							// 消去処理種別
					outmap.setString(JBSbatKKIFM160.DEL_TRAN_SBT, DEL_TRAN_SBT_SOD_AGING_UPD);							// 消去処理種別
					// IT1-2013-0000285 2013/02/13 MOD END
					outmap.setString(JBSbatKKIFM160.DEL_TRGT_SBT, DEL_TRGT_SBT_OLD_ISP_NINSHO_ID);							// 消去対象種別
					outmap.setString(JBSbatKKIFM160.SVKEI_NO, inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));				// サービス契約番号
					outmap.setString(JBSbatKKIFM160.SVKEI_GADTM, inMap.getString(JBSbatKK_T_SVC_KEI.GENE_ADD_DTM));			// サービス契約世代登録年月日時分秒
					outmap.setString(JBSbatKKIFM160.SVKEIUW_NO, inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO));	// サービス契約内訳番号
					//MOD START
					//outmap.setString(JBSbatKKIFM160.SVKEIUW_GADTM, inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.GENE_ADD_DTM));	// サービス契約内訳世代登録年月日時分秒
					outmap.setString(JBSbatKKIFM160.SVKEIUW_GADTM, inMap.getString("UCWK_GENE"));	// サービス契約内訳世代登録年月日時分秒
					//MOD END
					outmap.setString(JBSbatKKIFM160.ISP_NINSHO_ID, nextRec.getString(JBSbatKK_T_SVKEIUW_EOH_NET.ISP_NINSHO_ID));	// ISP認証ID
					
					outmap.setOutFlg(true);

					outputBean.addOutMapList(outmap);
				}
				
			}
		
		}
	}
	
	/**
	 * 消去対象データ設定処理（電話サービス）
	 * 
	 * @param inMap　入力電文
	 * @param outputBean
	 * @param tempHakkoParam
	 * @throws Exception
	 */
	private void setDelTrgtDataTel(JBSbatServiceInterfaceMap inMap,
			JBSbatOutputItem outputBean) throws Exception
	{
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();	// 出力レコード
		JBSbatCommonDBInterface nextRec = null;
		// IT1-2013-0000285 2013/02/13 ADD START
		JBSbatServiceInterfaceMap outmap2 = new JBSbatServiceInterfaceMap();	// 出力レコード
		// IT1-2013-0000285 2013/02/13 ADD END
		String kaihkPsbPrd = "";
		String svcEndYmd = "";

		//--SQLパラメータの設定
		// SQLパラメータの設定(回復可能期間の取得)
		Object[] workSelectWhereParam = new Object[1];
		workSelectWhereParam[0] = inMap.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD);	// 料金グループコード
		
		//料金グループから回復可能期間の取得
		executeKK_M_PRC_GRP_KK_SELECT_008(workSelectWhereParam);
		
		nextRec = db_KK_M_PRC_GRP.selectNext();
		
		if(nextRec != null)
		{
			svcEndYmd = inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_ENDYMD);	//サービス終了年月日
			kaihkPsbPrd = nextRec.getString(JBSbatKK_M_PRC_GRP.KAIHK_PSB_PRD);	// 回復可能期間
			
			if(isOverDate(svcEndYmd, kaihkPsbPrd))
			{
				return;
			}
			
			//--SQLパラメータの設定
			// SQLパラメータの設定(OABJ電話番号の取得)
//			String svkeiNo = inMap.getString(JBSbatKK_T_OP_SVC_KEI.SVC_KEI_NO);	// サービス契約番号
			Object[] selectWhereParam = new Object[4];
//			selectWhereParam[0] = svkeiNo;	// サービス契約番号
			selectWhereParam[0] = inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO);
			//ST1-2012-0000591 MOD STRAT
			//selectWhereParam[1] = inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.GENE_ADD_DTM);
			selectWhereParam[1] = inMap.getString("UCWK_GENE");
			//ST1-2012-0000591 MOD END
			// 現行ICS指摘対応：337 ADD START
			selectWhereParam[2] = super.opeDate;
			selectWhereParam[3] = super.opeDate;
			// 現行ICS指摘対応：337 ADD END
			
			// OABJ電話番号の取得
			executeKK_T_SVKEIUW_EOH_TEL_KK_SELECT_018(selectWhereParam);
			
			nextRec = db_KK_T_SVKEIUW_EOH_TEL.selectNext();
			
			if(nextRec != null)
			{
				// IT1-2013-0000285 2013/02/13 MOD START
				// 後続処理にてPOPIDを取得する必要があるため、消去対象であればファイル出力する(消去対象外であれば処理継続する)処理に変更
				// // 2013/01/18 ANK-1171-00-00 ADD START
				// // 取得した電話番号が消去対象外かのチェック
				// if (isDelTrgtNoDataTel(inMap , nextRec.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TELNO))){
				//  	return;
				// }
				// // 2013/01/18 ANK-1171-00-00 ADD END
				// 消去対象であれば、outputに出力
				if (false == isDelTrgtNoDataTel(inMap , nextRec.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TELNO)))
				{
				// IT1-2013-0000285 2013/02/13 MOD END
					outmap.setString(JBSbatKKIFM160.DEL_TRAN_SBT, DEL_TRAN_SBT_AGING_UPD);									// 消去処理種別
					outmap.setString(JBSbatKKIFM160.DEL_TRGT_SBT, DEL_TRGT_SBT_OABJ_TLN);									// 消去対象種別
					outmap.setString(JBSbatKKIFM160.SVKEI_NO, inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));				// サービス契約番号
					outmap.setString(JBSbatKKIFM160.SVKEI_GADTM, inMap.getString(JBSbatKK_T_SVC_KEI.GENE_ADD_DTM));			// サービス契約世代登録年月日時分秒
					outmap.setString(JBSbatKKIFM160.SVKEIUW_NO, inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO));	// サービス契約内訳番号
					//ST1-2012-0000591 MOD STRAT
					//KK_T_SVC_KEI_KK_SELECT_158で取得しているGENE_ADD_DTMはサービス契約とサービス契約内訳の2つがあり、別名になっていないので正しく識別できていなかった。
					//outmap.setString(JBSbatKKIFM160.SVKEIUW_GADTM, inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.GENE_ADD_DTM));	// サービス契約内訳世代登録年月日時分秒
					outmap.setString(JBSbatKKIFM160.SVKEIUW_GADTM, inMap.getString("UCWK_GENE"));	// サービス契約内訳世代登録年月日時分秒
					//ST1-2012-0000591 MOD END
					outmap.setString(JBSbatKKIFM160.OABJ_TELNO, nextRec.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TELNO));	// OABJ電話番号
					
					outmap.setOutFlg(true);
					
					outputBean.addOutMapList(outmap);
				// IT1-2013-0000285 2013/02/13 MOD START
				}
				// IT1-2013-0000285 2013/02/13 MOD END
			}
			
			// IT1-2013-0000285 2013/02/13 ADD START
			//--SQLパラメータは0ABJ電話番号取得時と同じため設定なし

			// SIPユーザーIDの取得
			executeKK_T_SVKEIUW_EOH_TEL_KK_SELECT_037(selectWhereParam);
			
			nextRec = db_KK_T_SVKEIUW_EOH_TEL.selectNext();

			if(null != nextRec)
			{
				outmap2.setString(JBSbatKKIFM160.DEL_TRAN_SBT, DEL_TRAN_SBT_AGING_UPD);									// 消去処理種別
				outmap2.setString(JBSbatKKIFM160.DEL_TRGT_SBT, DEL_TRGT_SBT_SIP_USER_ID);									// 消去対象種別
				outmap2.setString(JBSbatKKIFM160.SVKEI_NO, inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));				// サービス契約番号
				outmap2.setString(JBSbatKKIFM160.SVKEI_GADTM, inMap.getString(JBSbatKK_T_SVC_KEI.GENE_ADD_DTM));		// サービス契約世代登録年月日時分秒
				outmap2.setString(JBSbatKKIFM160.SVKEIUW_NO, inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO));	// サービス契約内訳番号
				outmap2.setString(JBSbatKKIFM160.SVKEIUW_GADTM, inMap.getString("UCWK_GENE"));							// サービス契約内訳世代登録年月日時分秒
				outmap2.setString(JBSbatKKIFM160.SIP_USER_ID, nextRec.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.SIP_USER_ID));		// SIPユーザーID
				
				outmap2.setOutFlg(true);
				
				outputBean.addOutMapList(outmap2);
			}
			// IT1-2013-0000285 2013/02/13 ADD END
		
		}

	}
	
	/**
	 * 登録SOD発行確認処理
	 * 
	 * @param inMap　入力電文
	 * @return boolean true:登録SOD発行済み ,false:登録SOD未発行
	 * @throws Exception
	 */
	private boolean isAddSodHakCfmTrn(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		Object[] selectWhereParam = null;
		JBSbatCommonDBInterface nextRec = null;
		selectWhereParam = new Object[4];
		
		// SQLパラメータの設定
		selectWhereParam[0] = inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);		// サービス契約番号
		selectWhereParam[1] = inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO);	// サービス契約内訳番号
		selectWhereParam[2] = JBSbatKKConst.ORDER_SBT_CD_NET;					// オーダ種別コード
		selectWhereParam[3] = JBSbatKKConst.SVC_ORDER_CD_FTTH_NINSHO;	// サービスオーダコード
		
		// IT1-2013-0000285 2013/02/13 MOD START
		//executeKK_T_ODR_HAKKO_JOKEN_KK_SELECT_005(selectWhereParam);
		//nextRec = db_KK_T_ODR_HAKKO_JOKEN.selectNext();
		executeKK_T_ODR_SET_KK_SELECT_011(selectWhereParam);
		nextRec = db_KK_T_ODR_SET.selectNext();
		// IT1-2013-0000285 2013/02/13 MOD END
		
		if(nextRec != null)
		{	// 登録SOD発行済み
			return true;
		}
		else
		{
			return false;
		}
	}
	

	// 2013/01/18 ANK-1171-00-00 ADD START
	/**
	 * 消去対象外確認処理
	 * 
	 * @param inMap　入力電文
	 * @param inTelno 電話番号
	 * @return boolean true:消去対象外 ,false:消去対象
	 * @throws Exception
	 */
	private boolean isDelTrgtNoDataTel(JBSbatServiceInterfaceMap inMap, String inTelno) throws Exception
	{
		
		JBSbatCommonDBInterface nextRec = null;
		
		//--SQLパラメータの設定
		// SQLパラメータの設定(VA宅内機器型式コード、VA機器変更番号の取得)
		Object[] workSelectWhereParam = new Object[2];
		workSelectWhereParam[0] = inMap.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO);	// サービス契約内訳番号
		workSelectWhereParam[1] = inTelno;	// 電話番号
		
		executeKK_T_SVKEIUW_EOH_TEL_KK_SELECT_036(workSelectWhereParam);
		nextRec = db_KK_T_SVKEIUW_EOH_TEL.selectNext();
		
		while (nextRec != null){
			
			//--SQLパラメータの設定
			// SQLパラメータの設定(機器提供サービス契約番号、機器変更番号の取得)
			Object[] wkSelectWhereParam = new Object[3];
			wkSelectWhereParam[0] = inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO);		// サービス契約番号
			wkSelectWhereParam[1] = nextRec.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.VA_TAKNKIKI_MODEL_CD);	// VA宅内機器型式コード
			wkSelectWhereParam[2] = nextRec.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.VA_KIKI_CHG_NO);	// VA機器変更番号
			
			executeKK_T_KKTK_SVC_KEI_KK_SELECT_129(wkSelectWhereParam);
			nextRec = db_KK_T_KKTK_SVC_KEI.selectNext();
			
			while (nextRec != null){
				
				//--SQLパラメータの設定
				Object[] SelectWhereParam = new Object[2];
				SelectWhereParam[0] = nextRec.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO);		// 機器提供サービス契約番号
				SelectWhereParam[1] = nextRec.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_CHG_NO);	// 機器変更番号

				executeDK_T_HMPIN_KIKI_KK_SELECT_003(SelectWhereParam);
				nextRec = db_DK_T_HMPIN_KIKI.selectNext();
				
				if (nextRec != null){
					return true;
				}
			}
		}
		
		return false;
	}
	// 2013/01/18 ANK-1171-00-00 ADD END
	
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SVKEIUW_EOH_NET.close();
		db_KK_T_SVKEIUW_EOH_TEL.close();
		db_KK_M_PRC_GRP.close();
		db_ZM_M_WORK_PARAM_KNRI.close();
		db_KK_T_ODR_SET.close();
		// IT1-2013-0000285 2013/02/13 DEL START
		//db_KK_T_ODR_HAKKO_JOKEN.close();
		// IT1-2013-0000285 2013/02/13 DEL END
		db_KK_T_KKTK_SVC_KEI.close();
		db_DK_T_HMPIN_KIKI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/

	/**
	 * SQLKEY(KK_SELECT_006)で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_SVKEIUW_EOH_NET_KK_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVKEIUW_EOH_NET.selectBySqlDefine(paramList, KK_T_SVKEIUW_EOH_NET_KK_SELECT_006);
	}

	/**
	 * SQLKEY(KK_SELECT_018)で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_SVKEIUW_EOH_TEL_KK_SELECT_018(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		// 現行ICS指摘対応：337 ADD START
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		// 現行ICS指摘対応：337 ADD END

		// DBアクセスを実行します
		db_KK_T_SVKEIUW_EOH_TEL.selectBySqlDefine(paramList, KK_T_SVKEIUW_EOH_TEL_KK_SELECT_018);
	}

	/**
	 * SQLKEY(KK_SELECT_008)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	料金グループコード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_M_PRC_GRP_KK_SELECT_008(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_M_PRC_GRP.selectBySqlDefine(paramList, KK_M_PRC_GRP_KK_SELECT_008);
	}

	/**
	 * SQLKEY(KK_SELECT_017)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	業務パラメータID
	 *		 	運用日
	 *		 	運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_KK_SELECT_017(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_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_KK_SELECT_017);
	}

	/**
	 * SQLKEY(KK_SELECT_011)で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_ODR_SET_KK_SELECT_011(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_ODR_SET.selectBySqlDefine(paramList, KK_T_ODR_SET_KK_SELECT_011);
	}


// IT1-2013-0000285 2013/02/13 DEL START
//	/**
//	 * SQLKEY(KK_SELECT_005)で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_ODR_HAKKO_JOKEN_KK_SELECT_005(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_ODR_HAKKO_JOKEN.selectBySqlDefine(paramList, KK_T_ODR_HAKKO_JOKEN_KK_SELECT_005);
//	}
// IT1-2013-0000285 2013/02/13 DEL START

	/**
	 * SQLKEY(KK_SELECT_036)で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_SVKEIUW_EOH_TEL_KK_SELECT_036(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVKEIUW_EOH_TEL.selectBySqlDefine(paramList, KK_T_SVKEIUW_EOH_TEL_KK_SELECT_036);
	}

	/**
	 * SQLKEY(KK_SELECT_129)で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_129(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_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_129);
	}

	/**
	 * SQLKEY(KK_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 void executeDK_T_HMPIN_KIKI_KK_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_DK_T_HMPIN_KIKI.selectBySqlDefine(paramList, DK_T_HMPIN_KIKI_KK_SELECT_003);
	}

	/**
	 * SQLKEY(KK_SELECT_037)で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_SVKEIUW_EOH_TEL_KK_SELECT_037(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_SVKEIUW_EOH_TEL.selectBySqlDefine(paramList, KK_T_SVKEIUW_EOH_TEL_KK_SELECT_037);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 日付比較
	 * 
	 * @param strDate サービス終了日
	 * @param strDay 期間（日数）
	 * @return boolean サービス終了日+期間(日数) > 運用日：true,サービス終了日+期間(日数) <= 運用日：false
	 */
	private boolean isOverDate(String strDate, String strDay)
	{
		if(strDate == null)
		{
			return true;
		}
		
		int intYear = Integer.parseInt(strDate.substring(0, 4));
		int intMonth = Integer.parseInt(strDate.substring(4, 6));
		int intDate = Integer.parseInt(strDate.substring(6, 8));
		
		Calendar lastDate = Calendar.getInstance();
		lastDate.set(intYear, intMonth - 1, intDate);
		lastDate.add(Calendar.DATE, Integer.parseInt(strDay));

		int intOpeYear = Integer.parseInt(super.opeDate.substring(0, 4));
		int intOpeMonth = Integer.parseInt(super.opeDate.substring(4, 6));
		int intOpeDate = Integer.parseInt(super.opeDate.substring(6, 8));
		
		Calendar calOpeDate = Calendar.getInstance();
		calOpeDate.set(intOpeYear, intOpeMonth - 1, intOpeDate);
		
		if(lastDate.compareTo(calOpeDate) > 0)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}
