/********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************
 *＜プログラム内容＞
 *  システム名      ：eo顧客基幹システム
 *  モジュール名    ：審査実行前コンポーネント部品クラス
 *  ソースファイル名：JKKAdchgJdgPrepareCC.java
 *  作成者          ：FJ
 *  日付            ：2012年08月31日
 *＜機能概要＞
 *  審査ＣＣ・審査結果更新ＣＣ実行に必要なマッピング情報を生成する。
 *＜修正履歴＞
 *  バージョン  修正日      修正者      修正内容
 *
 ********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
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.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0021A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B508CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0491A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0521A010CBSMsg1List;

/**
 * 審査実行前コンポーネント部品クラス.
 * <br>
 * @author FJ
 */
public class JKKAdchgJdgPrepareCC extends AbstractCommonComponent {

	/** セッションハンドル保持域 */
	private static ThreadLocal<SessionHandle> keepSesHandle = new ThreadLocal<SessionHandle>()
	{
		// 保持域への設定はinitialValue()ではなくset()を使用する為、
		// initialValue()は実装しない
	};

	// 住所変更登録CCマッピングクラスインスタンスを取得
	JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

	// SCリクエストInvokerを取得
	ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

	/**
	 * コンストラクタ.
	 * <br>
	 */
	public JKKAdchgJdgPrepareCC() {
	}

	/**
	 * 各S-IFを実行する.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @return  住所変更登録方法を示す定数値
	 * @throws  Exception  例外が発生した場合
	 */
	public IRequestParameterReadWrite adchgJdgPrepareCC( SessionHandle handle, IRequestParameterReadWrite param, String fixedText ) throws Exception
	{
		try{
			keepSesHandle.set(handle);
			
			// サービス契約一意照会結果マップ詰替
			setEKK0081A010Map(param, fixedText);
	
			// お客様一意照会結果マップ詰替
			setECK0011A010Map(param, fixedText);
	
			// 割引サービス契約一覧照会結果マップ詰替
			setEKK0451B001Map(param, fixedText);
	
			// お客様<個人>一意照会結果マップ詰替
			setECK0021A010Map(param, fixedText);
	
			// 請求契約一意照会マップ詰替
			setEKK0491A010Map(param, fixedText);
	
			// 請求方法を判定
			if (isCredit(param, fixedText)) {
				// クレジットカード一意照会マップ詰替
				setEKK0521A010Map(param, fixedText);
			}
			
			// 照査前機器提供サービス契約一覧照会詰替
			setEKK0341B508MAP(param, fixedText);
			
		} finally {
				// スレッドローカル変数のリソース解放
			if( keepSesHandle.get() != null ){
				keepSesHandle.remove();
			}
		}
		return param;
	}

	/**
	 * サービス契約一意照会を実行し結果をマップに設定する.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	private void setEKK0081A010Map(IRequestParameterReadWrite param, String fixedText) throws Exception{
		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		ArrayList<HashMap<String, String>> svcList = new ArrayList<HashMap<String, String>>();
		HashMap<String, String> svcChildMap = new HashMap<String, String>();

		// ユーザ任意文字列からマップを取得
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);

		// EKK0081A010  サービス契約一意照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_SVC_KEI_NO));
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_OPE_DATE));
		reqMap = mapper.setEKK0081A010(param, fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> kk0081_a010_map = mapper.getEKK0081A010(param, fixedText, resMap);
		mapper.scResultCheck(param);

		//S-IF実行結果からマップの詰替実施

		// サービス契約番号を取得
		svcChildMap.put("SVC_KEI_NO", (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		// サービス契約リスト.異動区分 → 審査確認マップ.サービス契約.異動区分
		svcChildMap.put("IDO_DIV", (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.IDO_DIV));
		// サービス契約リスト.サービスコード → 審査確認マップ.サービス契約.サービスコード
		svcChildMap.put("SVC_CD", (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.SVC_CD));
		// サービス契約リスト.料金グループコード → 審査確認マップ.サービス契約.料金グループコード
		svcChildMap.put("PRC_GRP_CD", (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.PRC_GRP_CD));
		// サービス契約リスト.料金コースコード → 審査確認マップ.サービス契約.料金コースコード
		svcChildMap.put("PCRS_CD", (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.PCRS_CD));
		// サービス契約リスト.料金プランコード → 審査確認マップ.サービス契約.料金プランコード
		svcChildMap.put("PPLAN_CD", (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.PPLAN_CD));
		// サービス契約リスト.面開発案件番号 → 審査確認マップ.サービス契約.面開発案件番号
		svcChildMap.put("MENKAIHAT_ANKEN_NO", (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.MENKAIHAT_ANKEN_NO));
		// サービス契約リスト.更新年月日時分秒 → 審査確認マップ.サービス契約.更新年月日時分秒
		svcChildMap.put("UPD_DTM", (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.LAST_UPD_DTM));

		svcList.add(svcChildMap);

		//審査CC・審査結果更新CCへ連携
		param.setData("KK_T_SVC_KEI", svcList);
	}
	
	/**
	 * お客様一意照会を実行し結果をマップに設定する.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	private void setECK0011A010Map(IRequestParameterReadWrite param, String fixedText) throws Exception{
		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		ArrayList<HashMap<String, String>> custList = new ArrayList<HashMap<String, String>>();
		HashMap<String, String> custChildMap = new HashMap<String, String>();

		//ユーザ任意文字列からマップを取得
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);

		// ECK0011A010  お客様一意照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SYSID, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_SYSID));
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_OPE_DATE));
		reqMap = mapper.setECK0011A010(param, fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> ck0011_a010_map = mapper.getECK0011A010(param, fixedText, resMap);
		mapper.scResultCheck(param);

		//S-IF実行結果からマップの詰替実施

		// お客様リスト.お客様名 → 審査確認マップ.お客様.お客様名
		custChildMap.put("CUST_NM", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.CUST_NM));
		// お客様リスト.お客様カナ名 → 審査確認マップ.お客様.お客様カナ名
		custChildMap.put("CUST_KANA", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.CUST_KANA));
		// お客様リスト.お客様生年月日 → 審査確認マップ.お客様.お客様生年月日
		custChildMap.put("CUST_BIRTHD", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.CUST_BIRTHD));
		// お客様リスト.ｓｙｓｉｄ → 審査確認マップ.お客様.sysid
		custChildMap.put("SYSID", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.SYSID));
		// お客様リスト.契約者住所コード → 審査確認マップ.お客様.契約者住所コード
		custChildMap.put("KEISHA_AD_CD", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.KEISHA_AD_CD));
		// お客様リスト.契約者郵便番号 → 審査確認マップ.お客様.契約者郵便番号
		custChildMap.put("KEISHA_PCD", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.KEISHA_PCD));
		// お客様リスト.契約者都道府県名 → 審査確認マップ.お客様.契約者都道府県名
		custChildMap.put("KEISHA_STATE_NM", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.KEISHA_STATE_NM));
		// お客様リスト.契約者市区町村名 → 審査確認マップ.お客様.契約者市区町村名
		custChildMap.put("KEISHA_CITY_NM", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.KEISHA_CITY_NM));
		// お客様リスト.契約者大字通称名 → 審査確認マップ.お客様.契約者大字通称名
		custChildMap.put("KEISHA_OAZTSU_NM", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.KEISHA_OAZTSU_NM));
		// お客様リスト.契約者字丁目名 → 審査確認マップ.お客様.契約者字丁目名
		custChildMap.put("KEISHA_AZCHO_NM", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.KEISHA_AZCHO_NM));
		// お客様リスト.契約者電話番号 → 審査確認マップ.お客様.契約者電話番号
		custChildMap.put("KEISHA_TELNO", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.KEISHA_TELNO));
		// お客様リスト.契約者タイプコード → 審査確認マップ.お客様.契約者タイプコード
		custChildMap.put("KEISHA_TYPE_CD", (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.KEISHA_TYPE_CD));
		

		custList.add(custChildMap);

		//審査CCへ連携
		param.setData("CK_T_CUST", custList);

	}
	
	/**
	 * 割引サービス契約一覧照会を実行し結果をマップに設定する.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0451B001Map(IRequestParameterReadWrite param, String fixedText) throws Exception{
		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		@SuppressWarnings("unused")
		ArrayList<HashMap<String, String>> custList = new ArrayList<HashMap<String, String>>();

		//ユーザ任意文字列からマップを取得
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);

		// EKK0451B001  割引サービス契約一覧照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_SVC_KEI_NO));
		reqMap = mapper.setEKK0451B001(param, fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		ArrayList<HashMap<String,Object>> dataList = mapper.getEKK0451B001(param, fixedText, resMap);
		mapper.scResultCheck(param);
		
		ArrayList wribList = new ArrayList();
		
		for(int i = 0; i < dataList.size(); i++)
		{
			HashMap custChildMap = new HashMap();
			HashMap childMap = (HashMap)dataList.get(i);
			// 割引サービス契約リスト.割引サービスコード → 審査確認マップ.割引サービス契約.割引サービスコード
			custChildMap.put("WRIB_SVC_CD", (String)childMap.get(EKK0451B001CBSMsg1List.WRIB_SVC_CD));
			wribList.add(custChildMap);
		}

		//審査CCへ連携
		param.setData("KK_T_WRIB_SVC_KEI", wribList);
	}

	/**
	 * お客様<個人>一意照会を実行し結果をマップに設定する.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	private void setECK0021A010Map(IRequestParameterReadWrite param, String fixedText) throws Exception{
		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		ArrayList<HashMap<String, String>> custKojnList = new ArrayList<HashMap<String, String>>();
		HashMap<String, String> custKojnChildMap = new HashMap<String, String>();

		// ユーザ任意文字列からマップを取得
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);

		//  ECK0021A010 お客様<個人>一意照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SYSID, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_SYSID));
		reqMap = mapper.setECK0021A010(param, fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> ck0021_a010_map = mapper.getECK0021A010(param, fixedText, resMap);
		mapper.scResultCheck(param);

		//S-IF実行結果からマップの詰替実施

		// お客様＜個人＞リスト.親権者住所コード → 審査確認マップ.お客様＜個人＞.親権者住所コード
		custKojnChildMap.put("SKSHA_AD_CD", (String)ck0021_a010_map.get(ECK0021A010CBSMsg1List.SKSHA_AD_CD));
		// お客様＜個人＞リスト.親権者郵便番号 → 審査確認マップ.お客様＜個人＞.親権者郵便番号
		custKojnChildMap.put("SKSHA_PCD", (String)ck0021_a010_map.get(ECK0021A010CBSMsg1List.SKSHA_PCD));
		// お客様＜個人＞リスト.親権者都道府県名 → 審査確認マップ.お客様＜個人＞.親権者都道府県名
		custKojnChildMap.put("SKSHA_STATE_NM", (String)ck0021_a010_map.get(ECK0021A010CBSMsg1List.SKSHA_STATE_NM));
		// お客様＜個人＞リスト.親権者市区町村名 → 審査確認マップ.お客様＜個人＞.親権者市区町村名
		custKojnChildMap.put("SKSHA_CITY_NM", (String)ck0021_a010_map.get(ECK0021A010CBSMsg1List.SKSHA_CITY_NM));
		// お客様＜個人＞リスト.親権者大字通称名 → 審査確認マップ.お客様＜個人＞.親権者大字通称名
		custKojnChildMap.put("SKSHA_OAZTSU_NM", (String)ck0021_a010_map.get(ECK0021A010CBSMsg1List.SKSHA_OAZTSU_NM));
		// お客様＜個人＞リスト.親権者字丁目名 → 審査確認マップ.お客様＜個人＞.親権者字丁目名
		custKojnChildMap.put("SKSHA_AZCHO_NM", (String)ck0021_a010_map.get(ECK0021A010CBSMsg1List.SKSHA_AZCHO_NM));
		// お客様＜個人＞リスト.親権者名 → 審査確認マップ.お客様＜個人＞.親権者名
		custKojnChildMap.put("SKSHA_NM", (String)ck0021_a010_map.get(ECK0021A010CBSMsg1List.SKSHA_NM));
		// お客様＜個人＞リスト.親権者カナ名 → 審査確認マップ.お客様＜個人＞.親権者カナ名
		custKojnChildMap.put("SKSHA_KANA", (String)ck0021_a010_map.get(ECK0021A010CBSMsg1List.SKSHA_KANA));
		// お客様＜個人＞リスト.親権者電話番号 → 審査確認マップ.お客様＜個人＞.親権者電話番号
		custKojnChildMap.put("SKSHA_TELNO", (String)ck0021_a010_map.get(ECK0021A010CBSMsg1List.SKSHA_TELNO));

		//審査CCへ連携
		custKojnList.add(custKojnChildMap);
		param.setData("CK_T_CUST_KOJIN", custKojnList);

	}
	
	/**
	 * 請求契約一意照会を実行し結果をマップに設定する.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0491A010Map(IRequestParameterReadWrite param, String fixedText) throws Exception{
		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		ArrayList<HashMap<String, String>> sikyKeiList = new ArrayList<HashMap<String, String>>();
		HashMap<String, String> sikyKeiChildMap = new HashMap<String, String>();

		// ユーザ任意文字列からマップを取得
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);

		//  EKK0491A010 請求契約一意照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SEIKY_KEI_NO, (String)paramMap.get("seiky_kei_no"));
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_OPE_DATE));
		reqMap = mapper.setEKK0491A010(param, fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> kk0491_a010_map = mapper.getEKK0491A010(param, fixedText, resMap);
		mapper.scResultCheck(param);

		//S-IF実行結果からマップの詰替実施

		// 請求契約リスト.送付先カナ名 → 審査確認マップ.請求契約.送付先カナ名
		sikyKeiChildMap.put("SHS_KANA", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.SHS_KANA));
		// 請求契約リスト.送付先電話番号 → 審査確認マップ.請求契約.送付先電話番号
		sikyKeiChildMap.put("SOHUS_TELNO", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.SOHUS_TELNO));
		// 請求契約リスト.請求契約番号 → 審査確認マップ.請求契約.請求契約番号
		sikyKeiChildMap.put("SEIKY_KEI_NO", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.SEIKY_KEI_NO));
		// 請求契約リスト.送付先住所コード → 審査確認マップ.請求契約.送付先住所コード
		sikyKeiChildMap.put("SOHUS_AD_CD", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.SOHUS_AD_CD));
		// 請求契約リスト.送付先郵便番号 → 審査確認マップ.請求契約.送付先郵便番号
		sikyKeiChildMap.put("SOHUS_PCD", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.SOHUS_PCD));
		// 請求契約リスト.送付先都道府県 → 審査確認マップ.請求契約.送付先都道府県
		sikyKeiChildMap.put("SOHUS_STATE_NM", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.SOHUS_STATE_NM));
		// 請求契約リスト.送付先市区町村名 → 審査確認マップ.請求契約.送付先市区町村名
		sikyKeiChildMap.put("SOHUS_CITY_NM", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.SOHUS_CITY_NM));
		// 請求契約リスト.送付先大字通称名 → 審査確認マップ.請求契約.送付先大字通称名
		sikyKeiChildMap.put("SOHUS_OAZTSU_NM", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.SOHUS_OAZTSU_NM));
		// 請求契約リスト.送付先字丁目名 → 審査確認マップ.請求契約.送付先字丁目名
		sikyKeiChildMap.put("SOHUS_AZCHO_NM", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.SOHUS_AZCHO_NM));
		// 請求契約リスト.世代登録年月日時分秒 → 審査確認マップ.請求契約.世代登録年月日時分秒
		sikyKeiChildMap.put("GENE_ADD_DTM", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.GENE_ADD_DTM));
		// 請求契約リスト.請求方法番号(クレジットカード) → クレジットカード一意照会.請求方法番号(クレジットカード)
		sikyKeiChildMap.put( "key_seiky_way_no_crecard", (String)kk0491_a010_map.get( EKK0491A010CBSMsg1List.SEIKY_WAY_NO_CRECARD ));

		//審査CCへ連携
		sikyKeiList.add(sikyKeiChildMap);
		param.setData("KK_T_SEIKY_KEI", sikyKeiList);

		// クレジットカード一意照会検索Key
		// クレジットカード一意照会用に請求方法番号(クレジットカード)を設定
		paramMap.put(JKKAdchgMapperCC.COND_KEY_SEIKY_WAY_NO_CRECARD, (String)kk0491_a010_map.get( EKK0491A010CBSMsg1List.SEIKY_WAY_NO_CRECARD ));
	}
	
	/**
	 * クレジットカード一意照会を実行し結果をマップに設定する.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	private void setEKK0521A010Map(IRequestParameterReadWrite param, String fixedText) throws Exception{
		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		ArrayList<HashMap<String, String>> crecaList = new ArrayList<HashMap<String, String>>();
		HashMap<String, String> crecaChildMap = new HashMap<String, String>();

		// ユーザ任意文字列からマップを取得
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);

		// EKK0521A010 クレジットカード一意照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SEIKY_WAY_NO_CRECARD, (String)paramMap.get(JKKAdchgMapperCC.COND_KEY_SEIKY_WAY_NO_CRECARD));
		reqMap = mapper.setEKK0521A010(param, fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> kk0521_a010_map = mapper.getEKK0521A010(param, fixedText, resMap);
		mapper.scResultCheck(param);

		//S-IF実行結果からマップの詰替実施

		// クレジットカード会社リスト.クレジットカード会社コード → 審査確認マップ.クレジットカード会社.クレジットカード会社コード
		crecaChildMap.put("CRECARD_COMP_CD", (String)kk0521_a010_map.get(EKK0521A010CBSMsg1List.CRECARD_COMP_CD));
		// クレジットカード会社リスト.クレジットカード事業コード → 審査確認マップ.クレジットカード会社.クレジットカード事業コード
		crecaChildMap.put("CRECARD_JIGYO_CD", (String)kk0521_a010_map.get(EKK0521A010CBSMsg1List.CRECARD_JIGYO_CD));
		// クレジットカード会社リスト.クレジットカード番号 → 審査確認マップ.クレジットカード会社.クレジットカード番号
		crecaChildMap.put("CRECARD_NO", (String)kk0521_a010_map.get(EKK0521A010CBSMsg1List.CRECARD_NO));
		// クレジットカード会社リスト.世代登録年月日時分秒 → 審査確認マップ.クレジットカード会社.世代登録年月日時分秒
		crecaChildMap.put("GENE_ADD_DTM", (String)kk0521_a010_map.get(EKK0521A010CBSMsg1List.GENE_ADD_DTM));

		crecaList.add(crecaChildMap);
		param.setData("KK_T_CRECARD", crecaList);
	}
	
	/**
	 * 照査前機器提供サービス契約一覧照会を実行し結果をマップに設定する.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	private void setEKK0341B508MAP(IRequestParameterReadWrite param, String fixedText) throws Exception{
		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		ArrayList<HashMap<String, String>> kktkSvcKeiList = new ArrayList<HashMap<String, String>>();
		HashMap<String, String> kktkSvcKeiChildMap = new HashMap<String, String>();

		// ユーザ任意文字列からマップを取得
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);

		// EKK0341B508 照査前機器提供サービス契約一覧照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_SVC_KEI_NO));
		reqMap = mapper.setEKK0341B508(param, fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> kk341_b508_map = mapper.getEKK0341B508(param, fixedText, resMap);
		mapper.scResultCheck(param);

		//S-IF実行結果からマップの詰替実施

		// 機器送付先住所コード
		kktkSvcKeiChildMap.put("KIKI_SOHUS_AD_CD", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_SOHUS_AD_CD));
		// 機器送付先郵便番号
		kktkSvcKeiChildMap.put("KIKI_SOHUS_PCD", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_SOHUS_PCD));
		// 機器送付先都道府県名
		kktkSvcKeiChildMap.put("KIKI_SOHUS_STATE_NM", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_SOHUS_STATE_NM));
		// 機器送付先市区町村名
		kktkSvcKeiChildMap.put("KIKI_SOHUS_CITY_NM", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_SOHUS_CITY_NM));
		// 機器送付先大字通称名
		kktkSvcKeiChildMap.put("KIKI_SOHUS_OAZTSU_NM", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_SOHUS_OAZTSU_NM));
		// 機器送付先字丁目名
		kktkSvcKeiChildMap.put("KIKI_SOHUS_AZCHO_NM", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_SOHUS_AZCHO_NM));
		// 機器設置先住所コード
		kktkSvcKeiChildMap.put("KIKI_STC_SAKI_AD_CD", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_STC_SAKI_AD_CD));
		// 機器設置先郵便番号
		kktkSvcKeiChildMap.put("KIKI_STC_SAKI_PCD", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_STC_SAKI_PCD));
		// 機器設置先都道府県名
		kktkSvcKeiChildMap.put("KIKI_STC_SAKI_STATE_NM", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_STC_SAKI_STATE_NM));
		// 機器設置先市区町村名
		kktkSvcKeiChildMap.put("KIKI_STC_SAKI_CITY_NM", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_STC_SAKI_CITY_NM));
		// 機器設置先大字通称名
		kktkSvcKeiChildMap.put("KIKI_STC_SAKI_OAZTSU_NM", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_STC_SAKI_OAZTSU_NM));
		// 機器設置先字丁目名
		kktkSvcKeiChildMap.put("KIKI_STC_SAKI_AZCHO_NM", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_STC_SAKI_AZCHO_NM));
		// 機器提供サービスコード
		kktkSvcKeiChildMap.put("KKTK_SVC_CD", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KKTK_SVC_CD));
		// 宅内機器型式コード
		kktkSvcKeiChildMap.put("TAKNKIKI_MODEL_CD", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.TAKNKIKI_MODEL_CD));
		// 付属品型式コード
		kktkSvcKeiChildMap.put("HUZOKUHIN_MODEL_CD", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.HUZOKUHIN_MODEL_CD));
		// 機器製造番号
		kktkSvcKeiChildMap.put("KIKI_SEIZO_NO", (String)kk341_b508_map.get(EKK0341B508CBSMsg1List.KIKI_SEIZO_NO));

		kktkSvcKeiList.add(kktkSvcKeiChildMap);
		param.setData("KK_T_KKTK_SVC_KEI", kktkSvcKeiList);
	}
	
	/**
	 * 請求方法（クレジット）判定
	 * <br>
	 * @param param リクエストパラメータ
	 * @return 判定結果（true：クレジット/false：クレジット以外）
	 * @throws RequestParameterException 
	 */
	@SuppressWarnings("unchecked")
	private boolean isCredit(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException {
		
		// ユーザ任意文字列からマップを取得
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);

		// 請求方法コード
		String seikyWayCd = (String)paramMap.get(JKKAdchgMapperCC.COND_KEY_SEIKY_WAY_NO_CRECARD);
		
		// 請求方法がクレジット"4"の場合、trueを返却
		if ("4".equals(seikyWayCd)) {
			return true;
		}
		
		return false;
	}
}
