/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKRouterDslRsltSakusei
*	ソースファイル名	：JBSbatKKRouterDslRsltSakusei.java
*	作成者				：富士通　
*	作成日				：2011年10月24日
*＜機能概要＞
*　ルータ解約結果リストファイル作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/24	FJ)神吉		新規作成
*	v4.02.00	2013/03/19  FJ)柳		【IT1-2013-0000498】対応
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFE082;
import eo.business.util.file.JBSbatKKIFM152;
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;
import eo.framework.log.JBSbatLogUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKRouterDslRsltSakusei 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_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** SQL定義キー(KK_SELECT_031)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_031 = "KK_SELECT_031";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String ZM_M_CD_NM_KANRI_KK_SELECT_002 = "KK_SELECT_002";

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 
	 ** 空白 
	 */
	private static final String BLANK = "";
	
	/** 
	 ** スラッシュ 
	 */
	private static final String SLASH = "/";
	
	/** 
	 ** コロン 
	 */
	private static final String KORON = ":";
	

	/**
	 * 初期処理
	 * @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_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		//入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outmap152 = new JBSbatServiceInterfaceMap();
		
		//入出力インターフェースオブジェクトを生成
		JBSbatServiceInterfaceMap outmap082 = new JBSbatServiceInterfaceMap();
		
		String kktkSvcKeiCd           = "";		// 機器提供サービス契約番号
		String geneAddDtm             = "";		// 世代登録年月日時分秒
		String taknkikiModelCd        = "";		// 宅内機器形式コード
		String kikiSeizoNo            = "";		// 機器製造番号
		String svcKeiNo               = "";		// サービス契約番号
		String routerDslRsvTrnRsltCd  = "";		// ルーター解約予約処理結果コード
		String updDtmStr              = "";		// 更新年月日秒
		String routerDslJssiYmd       = "";		// ルータ解約実施年月日
		String routerDslJssiTime      = "";		// ルータ解約実施時分秒
		String cdKbnNmStr             = "";		// コード区分名
		
		// 機器提供サービス契約番号
		kktkSvcKeiCd  = JBSbatStringUtil.trim(inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO));
		
		// 世代登録年月日時分秒
		geneAddDtm  = JBSbatStringUtil.trim(inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.GENE_ADD_DTM));
		
		// 宅内機器形式コード
		taknkikiModelCd  = JBSbatStringUtil.trim(inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD));
		
		// 機器製造番号
		kikiSeizoNo  = JBSbatStringUtil.trim(inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KIKI_SEIZO_NO));
		
		// サービス契約番号
		svcKeiNo  = JBSbatStringUtil.trim(inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_NO));
		
		// ルーター解約予約処理結果コード
		routerDslRsvTrnRsltCd  = JBSbatStringUtil.trim(
				inMap.getString(JBSbatKK_T_KKTK_SVC_KEI.ROUTER_DSL_RSV_TRN_RSLT_CD));
		
		// SQL実行結果取得用mapを生成（更新年月日時分秒取得）
		JBSbatCommonDBInterface updDtmMap = new JBSbatCommonDBInterface(); 
		
		// バッチ運用日（YYYYMMDD)取得
		String opt_date = super.opeDate;
		
		super.logPrint.printDebugLog("バッチ運用日：" +  opt_date);
		
		// 条件項目を設定します
		String [] whereParam = {kktkSvcKeiCd, opt_date};
		
		// 「機器提供サービス情報．更新年月日時分秒」取得SQL実行
		executeKK_T_KKTK_SVC_KEI_KK_SELECT_031(whereParam);
		
		// 検索結果を取得する
		for(updDtmMap = db_KK_T_KKTK_SVC_KEI.selectNext(); null != updDtmMap ; updDtmMap = db_KK_T_KKTK_SVC_KEI.selectNext())
		{
			// 検索結果の機器提供サービス情報．更新年月日時分秒をフィールド変数に設定する。
			updDtmStr    = updDtmMap.getString("UPD_DTM");
			
			// 検索結果の機器提供サービス情報．更新年月日時分秒が「null」でないかつ、17桁の場合
			if (updDtmStr != null && updDtmStr.length() == 17)
			{
				// ルータ解約実施年月日の「YYYY/MM/DD」編集
				routerDslJssiYmd = updDtmStr.substring(0, 4) + SLASH + updDtmStr.substring(4, 6) + SLASH + updDtmStr.substring(6, 8);
				
				// ルータ解約実施時分秒の「HH:MM:SS」編集
				routerDslJssiTime = updDtmStr.substring(8, 10) + KORON + updDtmStr.substring(10, 12) + KORON + updDtmStr.substring(12, 14);
			}
		}
		
		// SQL実行結果取得用mapを生成（コード区分名取得）
		JBSbatCommonDBInterface cdKbnNmMap = new JBSbatCommonDBInterface();
		
		// 条件項目を設定します
		String [] whereParam2 = {routerDslRsvTrnRsltCd};
		
		// コード区分名取得SQL実行
		executeZM_M_CD_NM_KANRI_KK_SELECT_002(whereParam2);
		
		// 検索結果を取得する
		for(cdKbnNmMap = db_ZM_M_CD_NM_KANRI.selectNext(); null != cdKbnNmMap ; cdKbnNmMap = db_ZM_M_CD_NM_KANRI.selectNext())
		{
			// 検索結果のコード名称管理．コード区分名をフィールド変数に設定する。
			cdKbnNmStr    = JBSbatStringUtil.Rtrim(cdKbnNmMap.getString("CD_DIV_NM"));
		}
		
		//項目を設定
		outmap152.setString(JBSbatKKIFM152.KKTK_SVC_KEI_NO, kktkSvcKeiCd);				// 機器提供サービス契約番号
		outmap152.setString(JBSbatKKIFM152.GENE_ADD_DTM, geneAddDtm);					// 世代登録年月日時分秒
		outmap152.setString(JBSbatKKIFM152.SVC_KEI_NO, svcKeiNo);						// サービス契約番号
		
		outmap082.setString(JBSbatKKIFE082.SVC_KEI_NO, svcKeiNo);						// サービス契約番号
		outmap082.setString(JBSbatKKIFE082.ROUTER_DSL_JSSI_YMD, routerDslJssiYmd);		// ルータ解約実施年月日
		outmap082.setString(JBSbatKKIFE082.ROUTER_DSL_JSSI_TIME, routerDslJssiTime);	// ルータ解約実施時分秒
		outmap082.setString(JBSbatKKIFE082.TAKNKIKI_MODEL_CD, taknkikiModelCd);			// 宅内機器形式コード
		outmap082.setString(JBSbatKKIFE082.KKTK_SVC_KEI_NO, kktkSvcKeiCd);				// 機器提供サービス契約番号
		outmap082.setString(JBSbatKKIFE082.KIKI_SEIZO_NO, kikiSeizoNo);					// 機器製造番号
		outmap082.setString(JBSbatKKIFE082.YOKYU_MT_PGID, BLANK);						// 要求元プログラムID
		outmap082.setString(JBSbatKKIFE082.TRN_RSLT_CD, routerDslRsvTrnRsltCd);			// 処理結果コード
		outmap082.setString(JBSbatKKIFE082.TRN_RSLT_NIYO, cdKbnNmStr);					// 処理結果内容
		
		// ログレベルがデバッグモードの場合
		if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
		{
			super.logPrint.printDebugLog("更新年月日秒：" +  updDtmStr);
			super.logPrint.printDebugLog("機器提供サービス契約番号：" + outmap152.getString(JBSbatKKIFM152.KKTK_SVC_KEI_NO));
			super.logPrint.printDebugLog("世代登録年月日時分秒：" + outmap152.getString(JBSbatKKIFM152.GENE_ADD_DTM));
			super.logPrint.printDebugLog("サービス契約番号：" + outmap152.getString(JBSbatKKIFM152.SVC_KEI_NO));
			super.logPrint.printDebugLog("ルータ解約実施年月日：" + outmap082.getString(JBSbatKKIFE082.ROUTER_DSL_JSSI_YMD));
			super.logPrint.printDebugLog("ルータ解約実施時分秒：" + outmap082.getString(JBSbatKKIFE082.ROUTER_DSL_JSSI_TIME));
			super.logPrint.printDebugLog("宅内機器形式コード：" + outmap082.getString(JBSbatKKIFE082.TAKNKIKI_MODEL_CD));
			super.logPrint.printDebugLog("機器製造番号：" + outmap082.getString(JBSbatKKIFE082.KIKI_SEIZO_NO));
			super.logPrint.printDebugLog("要求元プログラムID：" + outmap082.getString(JBSbatKKIFE082.YOKYU_MT_PGID));
			super.logPrint.printDebugLog("処理結果内容：" + outmap082.getString(JBSbatKKIFE082.TRN_RSLT_NIYO));
		}
		
		//出力フラグを設定
		outmap152.setOutFlg(true);
		outmap082.setOutFlg(true);
		
		// ルータ解約結果更新ファイル情報を設定。
		outputBean.addOutMapList(outmap152);
		
		// ルータ解約結果リストファイル情報を設定。
		outputBean.addOutMapList_2(outmap082);
		
		super.logPrint.printDebugLog("execute_END");
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KKTK_SVC_KEI.close();
		db_ZM_M_CD_NM_KANRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * SQLKEY(KK_SELECT_031)で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_031(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_031);
	}

	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	機器提供.ルータ解約予約処理結果コード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_CD_NM_KANRI_KK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_KK_SELECT_002);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
