/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUGetTaknkikiModelCdCC
*   ソースファイル名：JFUGetTaknkikiModelCdCC.java
*   作成者          ：富士通
*   日付            ：2023年10月18日
*＜機能概要＞
*   宅内機器型式コード照会コンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2023/10/18   FJ）飯田    新規作成
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;

import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK2041B501CBSMsg;

/**
 * 宅内機器型式コード照会コンポーネント部品
 * 
 * <br>
 * @author 富士通
 */
public class JFUGetTaknkikiModelCdCC extends JFUBaseCC
{
	/* ■□ 宅内機器型式コード照会CC ■□ */
	/** テンプレートID(宅内機器型式コード照会) */
	private static final String TEMPLATE_ID_SEARCH = "EKK2041B501";
	/** テンプレートID(宅内機器型式コード照会明細) */
	private static final String TEMPLATE_ID_SEARCH_DETAIL = EKK2041B501CBSMsg.EKK2041B501CBSMSG1LIST;
	/** INリスト項目値(宅内機器型式コード照会) */
	private static final List<String> IN_COLUMN_LIST_SEARCH =
			Arrays.asList(EKK2041B501CBSMsg.KEY_KKTK_SVC_CD, EKK2041B501CBSMsg.KEY_PCRS_CD,
					EKK2041B501CBSMsg.KEY_PPLAN_CD, EKK2041B501CBSMsg.KEY_SVC_TYPE_SKBT_CD);

	/**
	 * 宅内機器型式コード処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	public IRequestParameterReadWrite getTaknkikiModelCd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>)(param.getData(fixedText));

		// ●宅内機器型式コード一意照会
		// 上りマッピング項目設定
		setInMapTaiikiCtrlSykSearch(param, fixedText);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_SEARCH, TEMPLATE_ID_SEARCH_DETAIL, IN_COLUMN_LIST_SEARCH, BLANK);
		// 実行結果を検索結果リストに保存

		List<HashMap> result = (List<HashMap>)inMap.get(TEMPLATE_ID_SEARCH_DETAIL);

		if (result != null)
		{
			HashMap resultMap = result.get(0);
			param.setData(fixedText, resultMap);
		}

		return param;
	}

	/**
	 * チェック処理<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return HashMap<String, Object> チェック処理用マップ
	 * @throws Exception 
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}

	/**
	 * 上りマッピング項目設定(宅内機器型式コード照会)<br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException 
	 */
	private void setInMapTaiikiCtrlSykSearch(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿機器提供サービスコード
		inMap.put(EKK2041B501CBSMsg.KEY_KKTK_SVC_CD, inMap.get("key_kktk_svc_cd"));
		// ＫＥＹ＿料金コースコード
		inMap.put(EKK2041B501CBSMsg.KEY_PCRS_CD, inMap.get("key_pcrs_cd"));
		// ＫＥＹ＿料金プランコード
		inMap.put(EKK2041B501CBSMsg.KEY_PPLAN_CD, inMap.get("key_pplan_cd"));
		// ＫＥＹ＿サービスタイプ識別コード
		inMap.put(EKK2041B501CBSMsg.KEY_SVC_TYPE_SKBT_CD, inMap.get("key_svc_type_skbt_cd"));
	}
}
