/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKTmpcKktkSvcKeiCst
*	ソースファイル名	：JBSbatKKTmpcKktkSvcKeiCst.java
*	作成者				：富士通　
*	作成日				：2018年09月26日
*＜機能概要＞
*　端末補償機器提供サービス契約カレント取得部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v39.00.00	2018/09/26	FJ) 原田	【ANK-3484-00-00】端末補償サービス導入対応
*	v39.00.01	2018/11/14	FJ) 上間	【ST-2018-0000048】故障対応
*********************************************************************/
package eo.business.service;

import java.util.Arrays;
import java.util.HashMap;
import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.common.constant.JACStrConst;
import eo.common.constant.JKKStrConst;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.util.JBSbatCheckUtil;
import eo.business.util.file.JBSbatKKIFM848;
import eo.business.util.file.JBSbatKKIFM854;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;


/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKTmpcKktkSvcKeiCst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** SQL定義キー(KK_SELECT_016)*/
	private static final String ZM_M_WORK_PARAM_KNRI_KK_SELECT_016 = "KK_SELECT_016";

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/**ＧＨ宅内機器型式 */
	ArrayList<String> ghTaknkikiModelCode;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		super.logPrint.printDebugLog("GoogleHomeの宅内機器型式コード取得開始");
		
		// 業務パラメータを取得するキーを設定
		Object[] setParam = {
				JKKStrConst.WORK_PARAM_ID_KK_GH_TKKKMDL,
				this.opeDate,
				this.opeDate
			};
		
		// GoogleHomeの宅内機器型式コード取得
		JBSbatCommonDBInterface workParamKkGhTknkkMdlMap = executeZM_M_WORK_PARAM_KNRI_KK_SELECT_016(setParam);
		String[] workParamKkGhTknkkMdl = workParamKkGhTknkkMdlMap.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE).split(JKKStrConst.COMMA);
		this.ghTaknkikiModelCode = new ArrayList(Arrays.asList(workParamKkGhTknkkMdl));
		
		super.logPrint.printDebugLog("GoogleHomeの宅内機器型式コード取得終了");
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		super.logPrint.printDebugLog("execute_START");
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();

		try
		{
			// 入出力インターフェースオブジェクトを生成
			JBSbatServiceInterfaceMap outmapInfo = new JBSbatServiceInterfaceMap();
			
			// 入力ファイル.宅内機器型式コードをGoogleHomeの宅内機器型式コードと比較し、一致しなければ出力
			if (!this.ghTaknkikiModelCode.contains(inMap.getString("TAKNKIKI_MODEL_CD")))
			{
				outputKKIFM854File(inMap, outmapInfo);
				
				// 出力フラグを設定
				outmapInfo.setOutFlg(true);
				
				// 出力共通電文に入出力インターフェースを設定する。
				outputBean.addOutMapList(outmapInfo);
			}
			
			super.logPrint.printDebugLog("execute_END");
			return outputBean;
		}
		catch (Exception e)
		{
			super.logPrint.printDebugLog("Exception Error");
			throw e;
		}
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_WORK_PARAM_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * KKIFM854の出力情報設定
	 * @param inMap　入力電文
	 * @param outmapInfo　出力情報入力用マップ
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private JBSbatServiceInterfaceMap outputKKIFM854File(JBSbatServiceInterfaceMap inMap, JBSbatServiceInterfaceMap outmapInfo) throws Exception
	{
		super.logPrint.printDebugLog("出力ファイル情報設定開始");
		
		// 項目1 機器提供サービス契約番号
		outmapInfo.set(JBSbatKKIFM854.KKTK_SVC_KEI_NO, inMap.getString(JBSbatKKIFM848.KKTK_SVC_KEI_NO));

		// 項目2 宅内機器型式コード
		outmapInfo.set(JBSbatKKIFM854.TAKNKIKI_MODEL_CD, inMap.getString(JBSbatKKIFM848.TAKNKIKI_MODEL_CD));

		// 項目3 機器製造番号
		outmapInfo.set(JBSbatKKIFM854.KIKI_SEIZO_NO, inMap.getString(JBSbatKKIFM848.KIKI_SEIZO_NO));

		// 項目4 機器変更番号
		outmapInfo.set(JBSbatKKIFM854.KIKI_CHG_NO, inMap.getString(JBSbatKKIFM848.KIKI_CHG_NO));

		// 項目5 サービス契約番号
		outmapInfo.set(JBSbatKKIFM854.SVC_KEI_NO, inMap.getString(JBSbatKKIFM848.SVC_KEI_NO));

		// 項目6 更新年月日時分秒
		outmapInfo.set(JBSbatKKIFM854.UPD_DTM, inMap.getString(JBSbatKKIFM848.UPD_DTM));

		// 項目7 保証・補償期間開始日算出基準年月日
		outmapInfo.set(JBSbatKKIFM854.HCPRD_STAD_SNSTSTD_YMD, inMap.getString(JBSbatKKIFM848.HCPRD_STAD_SNSTSTD_YMD));

		// 項目8 保証・補償期間開始日算出基準年月日識別コード
		outmapInfo.set(JBSbatKKIFM854.HCPRD_STAD_SNSTSTD_YMD_SCD, inMap.getString(JBSbatKKIFM848.HCPRD_STAD_SNSTSTD_YMD_SCD));
		
// ST-2018-0000048 ADD START
		
		// 項目9 機器提供サービス契約ステータス
		outmapInfo.set(JBSbatKKIFM854.KKTK_SVC_KEI_STAT, inMap.getString(JBSbatKKIFM848.KKTK_SVC_KEI_STAT));
		
// ST-2018-0000048 ADD END
		
		super.logPrint.printDebugLog("出力ファイル情報設定終了");
		
		return outmapInfo;
	}
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_016)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	電話オプション割引サービスコード
	 *		 	業務パラメータ適用開始年月日
	 *		 	業務パラメータ適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeZM_M_WORK_PARAM_KNRI_KK_SELECT_016(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_016);
		
		return db_ZM_M_WORK_PARAM_KNRI.selectNext();
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
