/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKKikiHktgiAddMappingCC
*	ソースファイル名：JKKKikiHktgiAddMappingCC.java
*	作成者			：富士通
*	日付			：2017年11月15日
*＜機能概要＞
*	機器引継登録前処理CCです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v31.00.00	2017/11/15	FJ)謝		【ANK-3136-00-00】OPMSハードウエア保守切れ対応 新規作成
*	v31.00.01	2018/07/18	FJ)謝		【IT2-2018-0000066】障害対応
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

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.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;

import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0020003CBSMsg2List;

public class JKKKikiHktgiAddMappingCC extends AbstractCommonComponent
{
	/**
	 * 機器引継登録前処理CCを行います
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return IRequestParameterReadWrite リクエストパラメータ
	 * @throws Throwable
	 */
	@SuppressWarnings({ "unchecked" })
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// 機器引継登録マップ
		HashMap<String, Object> kksv087806cc = (HashMap<String, Object>)param.getData("KKSV041905CC");
		List<HashMap<String, Object>> motoList = (List<HashMap<String, Object>>) kksv087806cc.get("kiki_hktgi_select_list");
		HashMap<String, Object> motoChildMap = motoList.get(0);
		List<HashMap<String, Object>> sakiList = (List<HashMap<String, Object>>) kksv087806cc.get("kiki_hktgi_select_saki_list");
		HashMap<String, Object> sakiChildMap = sakiList.get(0);
// IT2-2018-0000066 ADD START
		// PON種別コード更新CCマップ
		HashMap<String, Object> kksv087808cc = (HashMap<String, Object>)param.getData("KKSV087808CC");
// IT2-2018-0000066 ADD END
		
		// 引継元機器提供サービス契約一意照会マップ
		HashMap<String, Object> kksv087801sc = (HashMap<String, Object>)param.getData("KKSV087801SC");
		List<HashMap<String, Object>> ekk0341a010cbsmsg1list = (List<HashMap<String, Object>>)kksv087801sc.get(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST);
		if (null != ekk0341a010cbsmsg1list && ekk0341a010cbsmsg1list.size() > 0)
		{
			HashMap<String, Object> data = ekk0341a010cbsmsg1list.get(0);
			// 親契約識別コード
			motoChildMap.put("oya_kei_skbt_cd", data.get(EKK0341A010CBSMsg1List.OYA_KEI_SKBT_CD));
			// 更新年月日時分秒(更新前)(機器提供サービス契約)
			motoChildMap.put("upd_dtm_bf_kktk", data.get(EKK0341A010CBSMsg1List.LAST_UPD_DTM));
			// 機器提供サービスコード
			motoChildMap.put("kktk_svc_cd", data.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD));
			// 引継元＿機器提供サービス契約ステータス
			motoChildMap.put("kktk_svc_kei_stat_moto", data.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
		}
		else
		{
			// 更新年月日時分秒(更新前)(機器提供サービス契約)
			motoChildMap.put("upd_dtm_bf_kktk", "0");
		}
		
		// 引継先機器提供サービス契約一意照会マップ
		HashMap<String, Object> kksv087802sc = (HashMap<String, Object>)param.getData("KKSV087802SC");
		List<HashMap<String, Object>> ekk0341a010cbsmsg1list2 = (List<HashMap<String, Object>>)kksv087802sc.get(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST);
		if (null != ekk0341a010cbsmsg1list2 && ekk0341a010cbsmsg1list2.size() > 0)
		{
			HashMap<String, Object> data = ekk0341a010cbsmsg1list2.get(0);
			// 機器提供サービス契約ステータス
			sakiChildMap.put("kktk_svc_kei_stat", data.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
			// 最終更新年月日時分秒
			sakiChildMap.put("last_upd_dtm", data.get(EKK0341A010CBSMsg1List.LAST_UPD_DTM));
		}
		else
		{
			// 最終更新年月日時分秒
			sakiChildMap.put("last_upd_dtm", "0");
		}
		
		// サービス契約一意照会マップ
		HashMap<String, Object> kksv087803sc = (HashMap<String, Object>)param.getData("KKSV087803SC");
		List<HashMap<String, Object>> ekk0081a010cbsmsg1list = (List<HashMap<String, Object>>)kksv087803sc.get(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		if (null != ekk0081a010cbsmsg1list && ekk0081a010cbsmsg1list.size() > 0)
		{
			HashMap<String, Object> data = ekk0081a010cbsmsg1list.get(0);
			// 引継先＿ＳＹＳＩＤ
			motoChildMap.put("hktgi_saki_sysid", data.get(EKK0081A010CBSMsg1List.SYSID));
			// 引継先＿サービス契約ステータス
			motoChildMap.put("svc_kei_stat_saki", data.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT));
// IT2-2018-0000066 ADD START
			if (null != kksv087808cc)
			{
				// サービスコード
				kksv087808cc.put("svc_cd", data.get(EKK0081A010CBSMsg1List.SVC_CD));
			}
// IT2-2018-0000066 ADD END
		}
		
		// 課金先一覧照会（請求契約番号／サービス契約番号）マップ
		HashMap<String, Object> kksv087804sc = (HashMap<String, Object>)param.getData("KKSV087804SC");
		List<HashMap<String, Object>> ekk0321b002cbsmsg1list = (List<HashMap<String, Object>>)kksv087804sc.get(EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST);
		if (null != ekk0321b002cbsmsg1list && ekk0321b002cbsmsg1list.size() > 0)
		{
			HashMap<String, Object> data = ekk0321b002cbsmsg1list.get(0);
			// 引継先＿請求契約番号
			kksv087806cc.put("hktgi_saki_seiky_kei_no", data.get(EKK0321B002CBSMsg1List.SEIKY_KEI_NO));
		}
		
		// 宅内機器一意照会（４）マップ
		HashMap<String, Object> kksv087805sc = (HashMap<String, Object>)param.getData("KKSV087805SC");
		List<HashMap<String, Object>> ekka0020003cbsmsg2list = (List<HashMap<String, Object>>)kksv087805sc.get(EKKA0020003CBSMsg.EKKA0020003CBSMSG2LIST);
		if (null != ekka0020003cbsmsg2list && ekka0020003cbsmsg2list.size() > 0)
		{
			HashMap<String, Object> data = ekka0020003cbsmsg2list.get(0);
			// 引継元＿宅内機器基本Ｔ更新日付
			motoChildMap.put("btry_upd_dtm", data.get(EKKA0020003CBSMsg2List.KIHONT_UPD_DTTM));
		}
		
		// 作業マップ
		HashMap<String, Object> work = (HashMap<String, Object>)param.getData("WORK");
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		HashMap workDataMap = (HashMap)workMap.get("WORK");
		if (workDataMap == null)
		{
			workDataMap = new HashMap();
			workMap.put("WORK", workDataMap);
		}
		
		// サービス契約回線内訳番号
		workDataMap.put("svc_kei_kaisen_ucwk_no", work.get("svc_kei_kaisen_ucwk_no"));
		// 申込明細番号
		workDataMap.put("mskm_dtl_no", work.get("mskm_dtl_no"));
		
		return param;
	}
}
