/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKSV0674012OutMappingCC
*	ソースファイル名：JKKSV0674012OutMappingCC.java
*	作成者			：富士通
*	日付			：2012年09月05日
*＜機能概要＞
*	マッピングCCです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.bp.custom.constant.JKKAdchgConstCC;
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 com.sun.enterprise.tools.common.util.StringUtils;

import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg1List;

public class JKKSV0674012OutMappingCC extends AbstractCommonComponent
{
	/**
	 * CCへのマッピング処理を行います
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return
	 * @throws Throwable
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		JKKAdchgCmnLogicCC lclCmnLogic = new JKKAdchgCmnLogicCC(handle);
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		//更新年月日格納ワーク
		HashMap<String, Object> dtmWorkMap = (HashMap<String, Object>) param.getData("KKSV0674Work");
		if(dtmWorkMap==null){
			return param;
		}
		
		//eo光ネットサービス契約料金コース変更ＣＣのMap取得
		HashMap<String, Object> KKSV0674012ccMap = (HashMap<String, Object>) param.getData("KKSV069902SC");
		if(KKSV0674012ccMap==null){
			return param;
		}
		
		// サービス契約番号
		String svc_kei_no = (String) KKSV0674012ccMap.get("key_svc_kei_no");
		
		// EKK0081A010_サービス契約一意照会
		HashMap<String, Object> kk0081_a010_map_new = 
			lclCmnLogic.getEKK0081A010( param, mapper, fixedText, scCall, svc_kei_no, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD );
		// 更新年月日時分秒
		dtmWorkMap.put("eoh_nt_svc_kei_upd_dtm_bef", kk0081_a010_map_new.get(EKK0081A010CBSMsg1List.LAST_UPD_DTM));

// SOD故障対応 2012.12.22 Y.MORIMOTO ADD START
		HashMap<String, Object> svcUcwkWorkMap = (HashMap<String, Object>)param.getMappingWorkArea().get("WORK");
		if (svcUcwkWorkMap != null && svcUcwkWorkMap.containsKey("new_svc_kei_ucwk_no"))
		{
			String newSvcKeiUcwkNo = (String) svcUcwkWorkMap.get("new_svc_kei_ucwk_no");
			
			if (!StringUtils.isEmpty(newSvcKeiUcwkNo))
			{
				// サービスオーダ発行ＣＣ（eo光ネット）のMapを取得
				HashMap<String, Object> kksv0674068ccMap = 
					(HashMap<String, Object>) param.getData("KKSV0674068CC");
				if(kksv0674068ccMap==null){
					return param;
				}
				
				ArrayList<HashMap<String, Object>> odr_hakko_svc_kei_list = 
					(ArrayList<HashMap<String, Object>>) kksv0674068ccMap.get("odr_hakko_svc_kei_list");
				if(odr_hakko_svc_kei_list==null || odr_hakko_svc_kei_list.isEmpty()){
					return param;
				}
				
				HashMap<String, Object> trgt_data_map = 
					(HashMap<String, Object>)odr_hakko_svc_kei_list.get(0);
				if(trgt_data_map==null || trgt_data_map.isEmpty()){
					return param;
				}
				
				ArrayList<HashMap<String, Object>> hakko_trgr_trgt_list = 
					(ArrayList<HashMap<String, Object>>) trgt_data_map.get("hakko_trgr_trgt_list");
				if(hakko_trgr_trgt_list==null || hakko_trgr_trgt_list.isEmpty()){
					return param;
				}
				
				HashMap<String, Object> hakko_trgt_trgt_data_map = 
					(HashMap<String, Object>)hakko_trgr_trgt_list.get(0);
				if(hakko_trgt_trgt_data_map==null || hakko_trgt_trgt_data_map.isEmpty()){
					return param;
				}
				
// 品質強化対応 2013.01.05 Y.MORIMOTO ADD START
				ArrayList<HashMap<String, Object>> kiki_trgt_data_list = 
					(ArrayList<HashMap<String, Object>>) hakko_trgt_trgt_data_map.get("kiki_trgt_data_list");
				if(kiki_trgt_data_list==null || kiki_trgt_data_list.isEmpty()){
					
				} else {
					for(HashMap<String, Object> kiki_trgt_data_map: kiki_trgt_data_list) {
						// サービス契約内訳情報が設定されている場合
						if( kiki_trgt_data_map.containsKey("svc_kei_ucwk_info") ) {
							HashMap<String, Object> svc_kei_ucwk_info = (HashMap<String, Object>) kiki_trgt_data_map.get("svc_kei_ucwk_info");
							
							// ■ EKK0161A010 サービス契約内訳一意照会
							HashMap<String, Object> kk0161_a010_map =lclCmnLogic.getEKK0161A010(param, mapper, fixedText, scCall, newSvcKeiUcwkNo, JCCBPCommon.getOpeDate(null));
							
							// サービス契約内訳情報.サービス契約内訳番号 ← 払い出されたサービス契約内訳番号で上書き
							svc_kei_ucwk_info.put( "svc_kei_ucwk_no", newSvcKeiUcwkNo );
							// サービス契約内訳情報.変更後サービス契約内訳世代登録年月日時分秒
							svc_kei_ucwk_info.put( "chaf_svc_kei_ucwk_gene_add_dtm", kk0161_a010_map.get(EKK0161A010CBSMsg1List.GENE_ADD_DTM) );
						}
					}
				}
// 品質強化対応 2013.01.05 Y.MORIMOTO ADD END
				ArrayList<HashMap<String, Object>> opt_trgt_data_list = 
					(ArrayList<HashMap<String, Object>>) hakko_trgt_trgt_data_map.get("opt_trgt_data_list");
				if(opt_trgt_data_list==null || opt_trgt_data_list.isEmpty()){
					
				} else {
					for(HashMap<String, Object> opt_trgt_data_map: opt_trgt_data_list) {
						// サービス契約内訳情報が設定されている場合
						if( opt_trgt_data_map.containsKey("svc_kei_ucwk_info") ) {
							HashMap<String, Object> svc_kei_ucwk_info = (HashMap<String, Object>) opt_trgt_data_map.get("svc_kei_ucwk_info");
							
							// ■ EKK0161A010 サービス契約内訳一意照会
							HashMap<String, Object> kk0161_a010_map =lclCmnLogic.getEKK0161A010(param, mapper, fixedText, scCall, newSvcKeiUcwkNo, JCCBPCommon.getOpeDate(null));
							
							// サービス契約内訳情報.サービス契約内訳番号 ← 払い出されたサービス契約内訳番号で上書き
							svc_kei_ucwk_info.put( "svc_kei_ucwk_no", newSvcKeiUcwkNo );
							// サービス契約内訳情報.変更後サービス契約内訳世代登録年月日時分秒
							svc_kei_ucwk_info.put( "chaf_svc_kei_ucwk_gene_add_dtm", kk0161_a010_map.get(EKK0161A010CBSMsg1List.GENE_ADD_DTM) );
						}
					}
				}
			}
		}
// SOD故障対応 2012.12.22 Y.MORIMOTO ADD END
		
		return param;
	}
}
