/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKWrisvcAutoAplyMappingCC
*   ソースファイル名：JKKWrisvcAutoAplyMappingCC.java
*   作成者          ：富士通
*   日付            ：2018年05月07日
*＜機能概要＞
*   割引サービス自動適用前処理部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v37.00.00   2018/05/07   FJ)黒田(耕) 【ANK-3381-00-00】標準工事費分割請求（STEP2） 新規作成
*   v37.01.00   2018/06/14   FJ) 澤田    【IT1-2018-0000086】工事費割賦請求STEP2 照査画面で自治体ＣＰを付与をしたら 相当額ＣＰが解約されない。
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;

/**
 * 割引サービス自動適用前処理部品
 * <br>
 * @author 富士通
 */
public class JKKWrisvcAutoAplyMappingCC extends AbstractCommonComponent
{
	/** 登録／変更区分（プラン変更） */
	private static final String ADD_CHGE_DIV_PLAN_CHG = "02";
	/** 対象契約識別コード（サービス契約） */
	private static final String TG_KEI_SKBT_CD_SVC_KEI = "01";
	/** グループ区分（基準契約） */
	private static final String GRP_DIV_STDARD = "00";
	
	
	/**
	 * CCへのマッピング処理を行います
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings({ "unchecked" })
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		//申込情報更新マップ
		HashMap<String, Object> KKSV006301SC = (HashMap<String, Object>) param.getData("KKSV006301SC");
		//申込内容承認登録マップ
		HashMap<String, Object> KKSV006305SC = (HashMap<String, Object>) param.getData("KKSV006305SC");
		//サービス契約一意照会マップ
		HashMap<String, Object> KKSV006307SC = (HashMap<String, Object>) param.getData("KKSV006307SC");
		//EKK0081A010明細リスト
		ArrayList<HashMap<String, Object>> eKK0081A010CBSMsg1List = (ArrayList<HashMap<String, Object>>)KKSV006307SC.get("EKK0081A010CBSMsg1List");
		HashMap<String, Object> eKK0081A010CBSMsg1ListMap = eKK0081A010CBSMsg1List.get(0);
		
		//サービスコードが"01"(ネット)、"02"(電話)の場合、割引サービス自動適用CCを実行する。
		if (JKKStrConst.CD00130_01.equals(eKK0081A010CBSMsg1ListMap.get("svc_cd"))
			|| JKKStrConst.CD00130_02.equals(eKK0081A010CBSMsg1ListMap.get("svc_cd")))
		{
			HashMap inMap = new HashMap();
			
			//割引サービス自動適用マップ.ＳＹＳＩＤ
			inMap.put("sysid", KKSV006305SC.get("sysid"));
			//割引サービス自動適用マップ.登録／変更区分
			inMap.put("add_chge_div", ADD_CHGE_DIV_PLAN_CHG);
			//割引サービス自動適用マップ.申込番号
			inMap.put("mskm_no", KKSV006305SC.get("mskm_no"));
			//割引サービス自動適用マップ.申込種別コード
			inMap.put("mskm_sbt_cd", KKSV006305SC.get("mskm_sbt_cd"));
			//割引サービス自動適用マップ.異動区分
			inMap.put("ido_div", KKSV006301SC.get("ido_div"));
			//割引サービス自動適用マップ.機能コード
			inMap.put("func_code", JPCModelConstant.FUNC_CD_1);
			// IT1-2018-0000086 ADD START
			inMap.put("kojihi_kap_operate_stat", "1");
			// IT1-2018-0000086 ADD END
			HashMap svcKeiGrpListMap = new HashMap();
			ArrayList<HashMap<String, Object>> svcKeiGrpList = new ArrayList<HashMap<String, Object>>();
			
			//サービス契約グループリスト.グループ区分
			svcKeiGrpListMap.put("grp_div", GRP_DIV_STDARD);
			
			HashMap svcKeiListMap = new HashMap();
			ArrayList<HashMap<String, Object>> svcKeiList = new ArrayList<HashMap<String, Object>>();
			
			//サービス契約リスト.対象契約識別コード
			svcKeiListMap.put("tg_kei_skbt_cd", TG_KEI_SKBT_CD_SVC_KEI);
			//サービス契約リスト.サービス契約番号
			svcKeiListMap.put("svc_kei_no", eKK0081A010CBSMsg1ListMap.get("svc_kei_no"));
			//サービス契約リスト.サービス契約ステータス
			svcKeiListMap.put("svc_kei_stat", eKK0081A010CBSMsg1ListMap.get("svc_kei_stat"));
			//サービス契約リスト.サービスコード
			svcKeiListMap.put("svc_cd", eKK0081A010CBSMsg1ListMap.get("svc_cd"));
			//サービス契約リスト.料金グループコード
			svcKeiListMap.put("prc_grp_cd", eKK0081A010CBSMsg1ListMap.get("prc_grp_cd"));
			//サービス契約リスト.料金コースコード
			svcKeiListMap.put("pcrs_cd", eKK0081A010CBSMsg1ListMap.get("pcrs_cd"));
			//サービス契約リスト.料金プランコード
			svcKeiListMap.put("pplan_cd", eKK0081A010CBSMsg1ListMap.get("pplan_cd"));
			//サービス契約リスト.変更前サービスコード
			svcKeiListMap.put("chge_bf_svc_cd", eKK0081A010CBSMsg1ListMap.get("svc_cd"));
			//サービス契約リスト.変更前料金グループコード
			svcKeiListMap.put("chge_bf_prc_grp_cd", eKK0081A010CBSMsg1ListMap.get("prc_grp_cd"));
			//サービス契約リスト.変更前料金コースコード
			svcKeiListMap.put("chge_bf_pcrs_cd", eKK0081A010CBSMsg1ListMap.get("pcrs_cd"));
			//サービス契約リスト.変更前料金プランコード
			svcKeiListMap.put("chge_bf_pplan_cd", eKK0081A010CBSMsg1ListMap.get("pplan_cd"));
			
			//サービス契約グループリスト.サービス契約リスト
			svcKeiList.add(svcKeiListMap);
			svcKeiGrpListMap.put("svc_kei_list", svcKeiList);
			
			//割引サービス自動適用マップ.サービス契約グループリスト
			svcKeiGrpList.add(svcKeiGrpListMap);
			inMap.put("svc_kei_grp_list", svcKeiGrpList);
			
			// 割引サービス自動適用ＣＣを実行
			param.setData("wrisvcMap", inMap);
			(new JKKWrisvcAutoAplyCC()).execute(handle, param, "wrisvcMap");
		}
		return param;
	}
}
