package com.fujitsu.futurity.bp.custom.common;

import java.util.HashMap;
import java.util.Map;

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.EKU0011A010CBSMsg1List;


public class JKKSV072929CCMapper extends AbstractCommonComponent {

	public IRequestParameterReadWrite mapping(SessionHandle handle,
			IRequestParameterReadWrite param, String fixedText)
			throws Throwable {

		int returnCode = 0;
		
		if(param == null)
		{
			return param;
		}
		
		HashMap<String, Object> parentMap = (HashMap<String, Object>)param.getData(fixedText);
		
		
		if(parentMap != null)
		{
			
// OM-2013-0003304対応 20131019 星野 ADD START
			String kojiakNo = (String)parentMap.get("kojiak_no");
			// 工事案件番号の設定がある場合
			if( !StringUtils.isEmpty(kojiakNo) ){
				// 工事案件一意照会
				HashMap<String, Object> ku0011_a010_map = selectKojiAkInf(handle, param, fixedText, kojiakNo);
				// 結果が取得できたら
				if(ku0011_a010_map!=null){
					// 工事キャンセル年月日
					parentMap.put("koji_cancel_ymd", ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_STP_ADD_YMD));
					// 工事キャンセル理由コード
					parentMap.put("koji_cancel_rsn_cd", ku0011_a010_map.get(EKU0011A010CBSMsg1List.OPMS_KOJIAK_STP_RSLT_CD));
					// 工事案件中止理由コード１
					parentMap.put("kojiak_stp_rsn_cd_1", ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_STP_RSN_CD_1));
					// 工事案件中止理由コード２
					parentMap.put("kojiak_stp_rsn_cd_2", ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_STP_RSN_CD_2));
				}
			}
// OM-2013-0003304対応 20131019 星野 ADD END
			param.setData("trgt_data", parentMap);
		}
		return param;
	}
	
// OM-2013-0003304対応 20131019 星野 ADD START
	/**
	 * 工事案件情報を取得します.
	 * @param param
	 * @param fixedText
	 * @param kojiAkNo
	 * @return
	 * @throws Exception
	 */
	private HashMap<String, Object> selectKojiAkInf(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String kojiAkNo) throws Exception {
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		if (StringUtils.isEmpty(kojiAkNo))
		{
			return null;
		}
		
		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO, kojiAkNo);
		// 工事案件一意照会を実施
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
		reqMap = mapper.setEKU0011A010(param, fixedText, condMap);
		resMap = scCall.run( reqMap, handle );
		HashMap<String, Object> ku0011_a010_map = mapper.getEKU0011A010( param, fixedText, resMap );
		mapper.scResultCheck( param );
		
		// 一意照会結果が取得できなかった場合はnull返却
		if(StringUtils.isEmpty( (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_NO) ) ){
			return null;
		}
		
		return ku0011_a010_map;
	}
// OM-2013-0003304対応 20131019 星野 ADD END

}
