/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKSV0674068BefMappingCC
*	ソースファイル名：JKKSV0674068BefMappingCC.java
*	作成者			：富士通
*	日付			：2012年09月05日
*＜機能概要＞
*	マッピングCCです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/09/05	FJ)松枝		新規作成
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
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.EKK0161A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg1List;

public class JKKSV0674068BefMappingCC extends AbstractCommonComponent
{
	
	/**
	 * CCへのマッピング処理を行います
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return
	 * @throws Throwable
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		HashMap<String, Object> inMap = (HashMap<String, Object>) param.getData(fixedText);
		
		JKKAdchgCmnLogicCC lclCmnLogic = new JKKAdchgCmnLogicCC(handle);
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		
		
		// サービスオーダ発行ＣＣ（eo光ネット）のMapを取得
		HashMap<String, Object> kksv0674068ccMap = (HashMap<String, Object>) param.getData("KKSV0674068CC");
		if(kksv0674068ccMap==null){
			return param;
		}
		ArrayList<HashMap<String, Object>> trgt_data_list = (ArrayList<HashMap<String, Object>>) kksv0674068ccMap.get("trgt_data_list");
		if(trgt_data_list==null || trgt_data_list.isEmpty()){
			return param;
		}
		
		
		for(HashMap<String, Object> trgt_data_map : trgt_data_list){
			// サービス契約内訳情報が設定されている場合
			if( trgt_data_map.containsKey("svc_kei_ucwk_info") ){
				HashMap<String, Object> svc_kei_ucwk_info = (HashMap<String, Object>) trgt_data_map.get("svc_kei_ucwk_info");
				String svc_kei_ucwk_no = (String) svc_kei_ucwk_info.get("svc_kei_ucwk_no");
				
				// ■ EKK0161A010 サービス契約内訳一意照会
				HashMap<String, Object> kk0161_a010_map =lclCmnLogic.getEKK0161A010(param, mapper, fixedText, scCall, svc_kei_ucwk_no, JCCBPCommon.getOpeDate(null));
				
				// 変更前サービス契約内訳世代登録年月日時分秒
				svc_kei_ucwk_info.put("chbf_svc_kei_ucwk_gene_add_dtm", kk0161_a010_map.get(EKK0161A010CBSMsg1List.GENE_ADD_DTM));
			}
			
			// オプションサービス契約情報が設定されている場合
			if( trgt_data_map.containsKey("opsvkei_info") ){
				HashMap<String, Object> opsvkei_info = (HashMap<String, Object>) trgt_data_map.get("opsvkei_info");
				String chbf_opsvkei_no = (String) opsvkei_info.get("chbf_opsvkei_no");
				
				// ■ EKK0351A010  オプションサービス契約一意照会
				HashMap<String, String> condMap = new HashMap<String, String>();
				condMap.put( JKKAdchgMapperCC.COND_KEY_OP_SVC_KEI_NO, chbf_opsvkei_no );
				condMap.put( JKKAdchgMapperCC.COND_KEY_OPEDATE, JCCBPCommon.getOpeDate(null) );
				HashMap<String, Object> reqMap = mapper.setEKK0351A010( param, fixedText, condMap );
				Map<?, ?> resMap = scCall.run( reqMap, handle );
				HashMap<String, Object> kk0351_a010_map = mapper.getEKK0351A010( param, fixedText, resMap );
				mapper.scResultCheck( param );
				
				// 変更前オプションサービス契約世代登録年月日時分秒
				opsvkei_info.put("chbf_opsvkei_gene_add_dtm", kk0351_a010_map.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM));
			}
		}
		
		return param;
	}
	
}
