/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUHikkosiNaviPrcShokaiCC
*   ソースファイル名：JFUHikkosiNaviPrcShokaiCC.java
*   作成者          ：富士通
*   日付            ：2013年12月12日
*＜機能概要＞
*   引越しナビ住所変更申込料金取得コモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v6.00       2013/12/12   FJ）中谷    新規作成【OM-2013-0005017】VA料金表示の改修
*   
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

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.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0601B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0601B001CBSMsg1List;

/**
 * 引越しナビ住所変更申込料金取得コモンコンポーネント部品
 * 
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUHikkosiNaviPrcShokaiCC extends JFUBaseNetChgCommonCC
{
	/** OUT項目:1ポートVAの料金 */
	private static final String OUT_PARAM_PPLAN_KOTEI_AMNT_1PORT_VA = "pplan_kotei_amnt_1port_va";
	/** OUT項目:2ポートVAの料金 */
	private static final String OUT_PARAM_PPLAN_KOTEI_AMNT_2PORT_VA = "pplan_kotei_amnt_2port_va";

	/* ■□ 料金プラン固定単価（オプション申込料金）一覧照会SC ■□*/
	/** テンプレートID(料金プラン固定単価（オプション申込料金）一覧照会) */
	private static final String TEMPLATE_ID_1 = "EKK0601B001";
	/** テンプレートID(料金プラン固定単価（オプション申込料金）一覧照会明細) */
	private static final String TEMPLATE_ID_1_DETAIL = EKK0601B001CBSMsg.EKK0601B001CBSMSG1LIST;
	/** IN項目リスト(料金プラン固定単価（オプション申込料金）一覧照会) */
	private static final List<String> IN_COLUMN_LIST_1 =
			Arrays.asList(EKK0601B001CBSMsg.KEY_PCRS_CD, EKK0601B001CBSMsg.KEY_PPLAN_CD, EKK0601B001CBSMsg.MAX_SEARCH_NUM);
	/** 関連チェックエラー項目(料金プラン固定単価（オプション申込料金）一覧照会) */
	private static final String ERROR_COLUMN_1 = EKK0601B001CBSMsg.KEY_PCRS_CD;
	/** SC実行結果取得キー(料金プラン固定単価（オプション申込料金）一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_1 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_1 + TEMP_TEMPLATE_PRIFIX_SEP;

	/**
	 * 引越しナビ住所変更申込料金取得実行処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	public IRequestParameterReadWrite getResultData(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		try
		{
			// ユーザデータ取得
			HashMap inMap = (HashMap)param.getData(fixedText);

			// ●料金プラン固定単価（オプション申込料金）一覧照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_1);
			// 上りマッピング
			setInMapPplanTankaSearch(param, fixedText, JFUStrConst.CD00134_C04, JFUStrConst.CD00565_PC0401);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_1, TEMPLATE_ID_1_DETAIL, IN_COLUMN_LIST_1, ERROR_COLUMN_1);
			// 1ポートVAの料金
			String pplanKoteiAmnt1portVA =
					getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_1), TEMPLATE_ID_1_DETAIL,
							EKK0601B001CBSMsg1List.PPLAN_KOTEI_AMNT, JFUStrConst.I_ZERO);
			inMap.put(OUT_PARAM_PPLAN_KOTEI_AMNT_1PORT_VA, pplanKoteiAmnt1portVA);

			// ●料金プラン固定単価（オプション申込料金）一覧照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_1);
			// 上りマッピング
			setInMapPplanTankaSearch(param, fixedText, JFUStrConst.CD00134_C05, JFUStrConst.CD00565_PC0501);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_1, TEMPLATE_ID_1_DETAIL, IN_COLUMN_LIST_1, ERROR_COLUMN_1);
			// 2ポートVAの料金
			String pplanKoteiAmnt2portVA =
					getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_1), TEMPLATE_ID_1_DETAIL,
							EKK0601B001CBSMsg1List.PPLAN_KOTEI_AMNT, JFUStrConst.I_ZERO);
			inMap.put(OUT_PARAM_PPLAN_KOTEI_AMNT_2PORT_VA, pplanKoteiAmnt2portVA);

		}
		finally
		{
			this.deleteTempArea(param, fixedText);
		}
		return param;
	}

	/**
	 * 上りマッピング項目設定(料金プラン固定単価（オプション申込料金）一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opSvcKeiNo オプションサービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapPplanTankaSearch(IRequestParameterReadWrite param, String fixedText, String pcrsCd, String pplanCd)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0601B001CBSMsg.KEY_PCRS_CD, pcrsCd);
		// ＫＥＹ＿料金プランコード
		inMap.put(EKK0601B001CBSMsg.KEY_PPLAN_CD, pplanCd);
		// 最大検索件数
		inMap.put(EKK0601B001CBSMsg.MAX_SEARCH_NUM, JFUStrConst.MAX_SEARCH_NUM);
	}
}
