/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUAddMkjAddfKeiRvCC
*   ソースファイル名：JFUAddMkjAddfKeiRvCC.java
*   作成者          ：富士通
*   日付            ：2014年07月15日
*＜機能概要＞
*  申込時登録不可契約予約登録部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v10.00.00   2014/07/15   FJ) 清水    新規作成【ANK-2135-00-00】BSオプションチャンネル「スターチャンネル」とのセット割検討
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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 com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK2931D010CBSMsg;

/**
 * 申込時登録不可契約予約登録部品です。
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUAddMkjAddfKeiRvCC extends JFUBaseCC
{
	
	/* ■□ 申込時登録不可契約予約登録 ■□ */
	/** テンプレートID(申込時登録不可契約予約登録) */
	private static final String EKK2931D010 = "EKK2931D010";

	/** IN項目リスト(申込時登録不可契約予約登録) */
	private static final List<String> IN_COLUMN_LIST_EKK2931D010 = Arrays.asList(
				EKK2931D010CBSMsg.MKJ_ADDF_KEI_RV_SBT_CD, 
				EKK2931D010CBSMsg.MSKM_DTL_NO, 
				EKK2931D010CBSMsg.SETE_TG_KEI_SKBT_CD, 
				EKK2931D010CBSMsg.SETE_TG_KEI_NO,
				EKK2931D010CBSMsg.OP_SVC_CD,
				EKK2931D010CBSMsg.WRIB_SVC_CD,
				EKK2931D010CBSMsg.PCRS_CD,
				EKK2931D010CBSMsg.PPLAN_CD,
				EKK2931D010CBSMsg.RSV_KEI_CNT,
				EKK2931D010CBSMsg.MKJ_ADDF_KEI_RVHNE_WAY_CD,
				EKK2931D010CBSMsg.MKJ_ADDF_KEI_RVHNE_TMG_CD,
				EKK2931D010CBSMsg.MKJ_ADDF_KEI_RV_HANEI_YMD,
				EKK2931D010CBSMsg.UPD_DTM_BF);

	/**
	 * 申込時登録不可契約予約登録処理
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	public IRequestParameterReadWrite addMkjAddfKeiRv(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		printlnEjbLog("JFUAddMkjAddfKeiRvCC.execute start");
		
		// 申込時登録不可契約予約
		HashMap<String, Object> addMkjAddfKeiRvMap = (HashMap<String, Object>)param.getData(EKK2931D010);
		
		if ((addMkjAddfKeiRvMap == null) || (addMkjAddfKeiRvMap.isEmpty()))
		{
			// 申込時登録不可契約予約登録マップが存在しない場合は、処理しない
			return param;
		}
		
		// 上りマッピング
		this.setEKK2931D010(param, EKK2931D010, addMkjAddfKeiRvMap);
		// サービスIF実行
		executeSC(handle, param, EKK2931D010, EKK2931D010, BLANK, IN_COLUMN_LIST_EKK2931D010, BLANK);
		
		printlnEjbLog("JFUAddMkjAddfKeiRvCC.execute end");
		
		return param;
	}

	/**
	 * 上りマッピング項目設定(申込時登録不可契約予約登録)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param ccMap
	 * @param mskm_no
	 * @throws RequestParameterException
	 */
	private void setEKK2931D010(IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> ccMap)
			throws RequestParameterException
	{
		// 機能コード設定(1:チェック&更新)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		
		// 申込時登録不可契約予約マップ
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		// 申込時登録不可契約予約種別コード
		inMap.put(EKK2931D010CBSMsg.MKJ_ADDF_KEI_RV_SBT_CD, ccMap.get(EKK2931D010CBSMsg.MKJ_ADDF_KEI_RV_SBT_CD));
		
		// 申込明細番号
		inMap.put(EKK2931D010CBSMsg.MSKM_DTL_NO, ccMap.get(EKK2931D010CBSMsg.MSKM_DTL_NO));
		
		// 設定対象契約識別コード
		inMap.put(EKK2931D010CBSMsg.SETE_TG_KEI_SKBT_CD, ccMap.get(EKK2931D010CBSMsg.SETE_TG_KEI_SKBT_CD));
		
		// 設定対象契約番号
		inMap.put(EKK2931D010CBSMsg.SETE_TG_KEI_NO, ccMap.get(EKK2931D010CBSMsg.SETE_TG_KEI_NO));
		
		// オプションサービスコード
		inMap.put(EKK2931D010CBSMsg.OP_SVC_CD, ccMap.get(EKK2931D010CBSMsg.OP_SVC_CD));
		
		// 割引サービスコード
		inMap.put(EKK2931D010CBSMsg.WRIB_SVC_CD, ccMap.get(EKK2931D010CBSMsg.WRIB_SVC_CD));
		
		// 料金コースコード
		inMap.put(EKK2931D010CBSMsg.PCRS_CD, ccMap.get(EKK2931D010CBSMsg.PCRS_CD));
		
		// 料金プランコード
		inMap.put(EKK2931D010CBSMsg.PPLAN_CD, ccMap.get(EKK2931D010CBSMsg.PPLAN_CD));
		
		// 予約契約数
		inMap.put(EKK2931D010CBSMsg.RSV_KEI_CNT, ccMap.get(EKK2931D010CBSMsg.RSV_KEI_CNT));
		
		// 申込時登録不可契約予約反映方法コード
		inMap.put(EKK2931D010CBSMsg.MKJ_ADDF_KEI_RVHNE_WAY_CD, ccMap.get(EKK2931D010CBSMsg.MKJ_ADDF_KEI_RVHNE_WAY_CD));
		
		// 申込時登録不可契約予約反映タイミングコード
		inMap.put(EKK2931D010CBSMsg.MKJ_ADDF_KEI_RVHNE_TMG_CD, ccMap.get(EKK2931D010CBSMsg.MKJ_ADDF_KEI_RVHNE_TMG_CD));
		
		// 申込時登録不可契約予約反映年月日
		inMap.put(EKK2931D010CBSMsg.MKJ_ADDF_KEI_RV_HANEI_YMD, ccMap.get(EKK2931D010CBSMsg.MKJ_ADDF_KEI_RV_HANEI_YMD));
		
		// 更新年月日時分秒(更新前)
		inMap.put(EKK2931D010CBSMsg.UPD_DTM_BF, ccMap.get(EKK2931D010CBSMsg.UPD_DTM_BF));
	}

	/**
	 * チェック処理
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}
	
	/**
	 * デバッグログを出力します
	 * <br>
	 * @param dumpObj
	 */
	private void printlnEjbLog(Object dumpObj) {
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), dumpObj, null, null, null);
	}

}
