/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKUpdMkmScinsprtWkCC
*   ソースファイル名：JKKUpdMkmScinsprtWkCC.java
*   作成者          ：富士通
*   日付            ：2012年03月13日
*＜機能概要＞
*   申込画面入力支援ワーク更新部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/03/13   FJ）高川    新規作成
*   v4.00.00    2012/08/06   FJ）北浦    【ANK-0099-00-00】eoモバイルへのeo64移行用料金プラン追加
*   v4.01.00    2012/12/07   FJ）薄出    【IT1-2012-0002093】申込画面入力支援ワークへのTDIS情報制御コード追加対応
**********************************************************************/
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.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0011B020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011B020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2201A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2201A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2201C020CBSMsg;

/**
 * 申込画面入力支援ワーク更新部品.
 * <br>
 * @author 富士通
 */
public class JKKUpdMkmScinsprtWkCC extends AbstractCommonComponent
{
	/** リターンメッセージ */
	private static final String RETURN_MESSAGE_STRING = "RETURN_MESSAGE_";
	/** リターンメッセージ */
	private static final String RETURN_MESSAGE_FORMAT = "%1$04d";
	/** エラー用 */
	private static final String SC_ERROR_STRING = "サービスコンポーネントエラー";

	/** 更新有無フラグ （1: あり） */
	private static final String UPD_UM_FLG_ARI = "1";

	/** 更新有無フラグ （0: なし） */
	private static final String UPD_UM_FLG_NASI = "0";

	/**
	 * 申込画面入力支援ワーク更新を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite updMkmScinsprtWk(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		Map<?, ?> result = null;
		CAANMsg template = null;
		
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		// マップに値が設定されていない場合は処理を行わない。
		if (inMap == null)
		{
			return param;
		}
		
		// 申込明細番号取得処理
		template = editInEKK0081A010(param, fixedText); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		editRetEKK0081A010(result, param, fixedText); // 下りマッピング
		if (getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
		{ // ステータスが単項目エラー以上であれば例外をスロー
			throw new CCException(SC_ERROR_STRING, new Exception());
		}
		ArrayList<HashMap> msg1List = (ArrayList<HashMap>)inMap.get("EKK0081A010CBSMsg1List");
		if (msg1List == null | 0 == msg1List.size())
		{
			return param;
		}
		
		// 申込番号取得処理
		template = editInEKK0021A010(param, fixedText); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		editRetEKK0021A010(result, param, fixedText); // 下りマッピング
		msg1List = (ArrayList<HashMap>)inMap.get("EKK0021A010CBSMsg1List");
		if (msg1List == null | 0 == msg1List.size())
		{
			return param;
		}
		
		// 申込サービス契約内訳一覧取得
		template = editInEKK0011B020(param, fixedText); 				// 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle);	// SC呼び出し
		editRetEKK0011B020(result, param, fixedText); 					// 下りマッピング

		msg1List = (ArrayList<HashMap>)inMap.get(EKK0011B020CBSMsg.EKK0011B020CBSMSG1LIST);

		if (msg1List == null || 0 == msg1List.size())
		{
			return param;
		}

		String updUmFlg = UPD_UM_FLG_NASI;

		for (HashMap map : msg1List)
		{
			String svcKeiStat = (String)map.get(EKK0011B020CBSMsg1List.SVC_KEI_STAT);
			
			if (JKKStrConst.CD00037_UK_ZM.equals(svcKeiStat) || JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStat))
			{
				updUmFlg = UPD_UM_FLG_ARI;
				break;
			}
		}
		
		// 申込画面入力支援ワーク更新判定
		if (UPD_UM_FLG_NASI.equals(updUmFlg))
		{
			return param;
		}
		
		// 申込画面入力支援ワーク情報取得処理
		template = editInEKK2201A010(param, fixedText); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		editRetEKK2201A010(result, param, fixedText); // 下りマッピング
		msg1List = (ArrayList<HashMap>)inMap.get("EKK2201A010CBSMsg1List");
		if (msg1List == null | 0 == msg1List.size())
		{
			return param;
		}
		
		// 機器制御コード判定処理
		if(JKKStrConst.ITEM_CTL_CD_HIKASSEI.equals(inMap.get("kiki_if_ctl_cd")))
		{
			// 制御コード項目設定処理
			setCtlCd(param, fixedText);
		}
		
		// 入力値編集処理
		editMkmScinsprtWk(param, fixedText);
		
		// 申込画面入力支援ワーク更新処理
		template = editInEKK2201C020(param, fixedText); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		editRetEKK2201C020(result, param, fixedText); // 下りマッピング

		return param;
	}

	/**
	 * SCの実行ステータスの取得処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @return SCの実行ステータス
	 * @throws Exception
	 */
	private int getReturnCode(IRequestParameterReadWrite param) throws Exception
	{
		return Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
	}

	/**
	 * CAANMsgに必要なデータのマッピング処理を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return パラメータマップ
	 * @exception RequestParameterException
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
			throws RequestParameterException
	{
		
		HashMap inMap = (HashMap)param.getData(fixedText);
		
		// マップに値が設定されていない場合は処理を行わない。
		if (inMap == null)
		{
			return null;
		}
		
		ArrayList<CAANMsg> msgList = new ArrayList<CAANMsg>();
		
		// サービス契約一意照会
		msgList.add(editInEKK0081A010(param, fixedText));
		
		int msgCnt = msgList.size();
		CAANMsg[] templates = new CAANMsg[msgCnt];
		for (int i = 0; i < msgCnt; i++)
		{
			templates[i] = msgList.get(i);
		}

		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 単一CAANMsgのマッピング処理を行います。
	 * <br>
	 * @param paramMap パラメータマップ
	 * @param template テンプレートリスト
	 * @return パラメータマップ
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> putParamMap(HashMap<String, Object> paramMap, CAANMsg template) throws RequestParameterException
	{
		CAANMsg[] templates = { template };
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * SCインプット共通データ設定処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param paramMap パラメータマップ
	 * @return パラメータマップ
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> setSCInputCommonData(IRequestParameterReadWrite param, HashMap<String, Object> paramMap)
			throws RequestParameterException
	{
		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		return paramMap;
	}

	/**
	 * サービス契約一意照会の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return CAANMsg サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0081A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0081A010CBSMsg.TEMPLATEID, "EKK0081A010");

		// 機能コード（デフォルト：２）
		template.set(EKK0081A010CBSMsg.FUNC_CODE, "2");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		HashMap inMap = (HashMap)param.getData(fixedText);

//		// 機能コード
//		if (inMap != null)
//		{
//			template.set(EKK0081A010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
//		}

		// ＫＥＹ＿サービス契約番号 → サービス契約一意照会.ＫＥＹ＿サービス契約番号
		if (inMap == null || inMap.get("key_svc_kei_no") == null || "".equals(inMap.get("key_svc_kei_no")))
		{
			template.setNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get("key_svc_kei_no"));
		}
		
		// ＫＥＹ＿世代登録年月日時分秒 → サービス契約一意照会.ＫＥＹ＿世代登録年月日時分秒
		if (inMap == null || inMap.get("key_gene_add_dtm") == null || "".equals(inMap.get("key_gene_add_dtm")))
		{
			template.setNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, (String)inMap.get("key_gene_add_dtm"));
		}
		
		// ＫＥＹ＿予約適用年月日 → サービス契約一意照会.ＫＥＹ＿予約適用年月日（未設定の場合、運用日付設定）
		if (inMap == null || inMap.get("key_rsv_aply_ymd") == null || "".equals(inMap.get("key_rsv_aply_ymd")))
		{
			template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
		}
		else
		{
			template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, (String)inMap.get("key_rsv_aply_ymd"));
		}

		return template;
	}

	/**
	 * 申込明細一意照会の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return CAANMsg サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0021A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0021A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0021A010CBSMsg.TEMPLATEID, "EKK0021A010");

		// 機能コード（デフォルト：２）
		template.set(EKK0021A010CBSMsg.FUNC_CODE, "2");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		HashMap inMap = (HashMap)param.getData(fixedText);

//		// 機能コード
//		if (inMap != null)
//		{
//			template.set(EKK0021A010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
//		}

		ArrayList msg1List = (ArrayList)inMap.get("EKK0081A010CBSMsg1List");
		HashMap childMap = new HashMap();
		
		if (msg1List == null | 0 == msg1List.size())
		{
			msg1List = new ArrayList();
			inMap.put("EKK0081A010CBSMsg1List", msg1List);
			msg1List.add(childMap);
			
		}
		
		childMap = (HashMap)msg1List.get(0);
		
		// サービス契約一意照会.申込明細番号 → 申込明細一意照会.ＫＥＹ＿申込明細番号
		if (childMap == null || childMap.get("mskm_dtl_no") == null || "".equals(childMap.get("mskm_dtl_no")))
		{
			template.setNull(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO);
		}
		else
		{
			template.set(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, (String)childMap.get("mskm_dtl_no"));
		}
		
		// ＫＥＹ＿世代登録年月日時分秒 → 申込明細一意照会.ＫＥＹ＿世代登録年月日時分秒
		if (inMap == null || inMap.get("key_gene_add_dtm") == null || "".equals(inMap.get("key_gene_add_dtm")))
		{
			template.setNull(EKK0021A010CBSMsg.KEY_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0021A010CBSMsg.KEY_GENE_ADD_DTM, (String)inMap.get("key_gene_add_dtm"));
		}

		return template;
	}
	
	/**
	 * 申込画面入力支援ワーク一意照会の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return CAANMsg サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK2201A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK2201A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK2201A010CBSMsg.TEMPLATEID, "EKK2201A010");

		// 機能コード（デフォルト：１）
		template.set(EKK2201A010CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		HashMap inMap = (HashMap)param.getData(fixedText);

//		// 機能コード
//		if (inMap != null)
//		{
//			template.set(EKK2201A010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
//		}

		ArrayList msg1List = (ArrayList)inMap.get("EKK0021A010CBSMsg1List");
		HashMap childMap = new HashMap();
		
		if (msg1List == null | 0 == msg1List.size())
		{
			msg1List = new ArrayList();
			inMap.put("EKK0021A010CBSMsg1List", msg1List);
			msg1List.add(childMap);
			
		}
		
		childMap = (HashMap)msg1List.get(0);
		
		// 申込明細一意照会.申込番号 → 申込画面入力支援ワーク一意照会.ＫＥＹ＿申込番号
		if (childMap == null || childMap.get("mskm_no") == null || "".equals(childMap.get("mskm_no")))
		{
			template.setNull(EKK2201A010CBSMsg.KEY_MSKM_NO);
		}
		else
		{
			template.set(EKK2201A010CBSMsg.KEY_MSKM_NO, (String)childMap.get("mskm_no"));
		}

		return template;
	}
	
	/**
	 * 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return CAANMsg サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK2201C020(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK2201C020CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK2201C020CBSMsg.TEMPLATEID, "EKK2201C020");

		// 機能コード（デフォルト：１）
		template.set(EKK2201C020CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		HashMap inMap = (HashMap)param.getData(fixedText);

//		// 機能コード
//		if (inMap != null)
//		{
//			template.set(EKK2201C020CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));
//		}
		
		// 申込番号取得用
		ArrayList msg1List1 = (ArrayList)inMap.get("EKK0021A010CBSMsg1List");
		HashMap childMap1 = new HashMap();
		
		if (msg1List1 == null | 0 == msg1List1.size())
		{
			msg1List1 = new ArrayList();
			inMap.put("EKK0021A010CBSMsg1List", msg1List1);
			msg1List1.add(childMap1);
			
		}
		
		childMap1 = (HashMap)msg1List1.get(0);
		
		// 更新前最終更新年月日取得用
		ArrayList msg1List2 = (ArrayList)inMap.get("EKK2201A010CBSMsg1List");
		HashMap childMap2 = new HashMap();
		
		if (msg1List2 == null | 0 == msg1List2.size())
		{
			msg1List2 = new ArrayList();
			inMap.put("EKK2201A010CBSMsg1List", msg1List2);
			msg1List2.add(childMap2);
			
		}
		
		childMap2 = (HashMap)msg1List2.get(0);
		

		// 申込明細一意照会.申込番号 → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.申込番号
		if (childMap1 == null || childMap1.get("mskm_no") == null || "".equals(childMap1.get("mskm_no")))
		{
			template.setNull(EKK2201C020CBSMsg.MSKM_NO);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.MSKM_NO, (String)childMap1.get("mskm_no"));
		}
		
		// 契約者情報タブ制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.契約者情報タブ制御コード
		if (inMap == null || inMap.get("ksh_if_tab_ctl_cd") == null || "".equals(inMap.get("ksh_if_tab_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.KSH_IF_TAB_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.KSH_IF_TAB_CTL_CD, (String)inMap.get("ksh_if_tab_ctl_cd"));
		}
		
		// 支払方法タブ制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.支払方法タブ制御コード
		if (inMap == null || inMap.get("pay_way_tab_ctl_cd") == null || "".equals(inMap.get("pay_way_tab_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.PAY_WAY_TAB_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.PAY_WAY_TAB_CTL_CD, (String)inMap.get("pay_way_tab_ctl_cd"));
		}
		
		// ネットタブオプション情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.ネットタブオプション情報制御コード
		if (inMap == null || inMap.get("net_tab_op_if_ctl_cd") == null || "".equals(inMap.get("net_tab_op_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.NET_TAB_OP_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.NET_TAB_OP_IF_CTL_CD, (String)inMap.get("net_tab_op_if_ctl_cd"));
		}
		
		// ネットタブ機器情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.ネットタブ機器情報制御コード
		if (inMap == null || inMap.get("net_tab_kiki_if_ctl_cd") == null || "".equals(inMap.get("net_tab_kiki_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.NET_TAB_KIKI_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.NET_TAB_KIKI_IF_CTL_CD, (String)inMap.get("net_tab_kiki_if_ctl_cd"));
		}
		
		// 電話１タブオプション情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.電話１タブオプション情報制御コード
		if (inMap == null || inMap.get("tel_1_tab_op_if_ctl_cd") == null || "".equals(inMap.get("tel_1_tab_op_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.TEL_1_TAB_OP_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.TEL_1_TAB_OP_IF_CTL_CD, (String)inMap.get("tel_1_tab_op_if_ctl_cd"));
		}
		
		// 電話２タブオプション情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.電話２タブオプション情報制御コード
		if (inMap == null || inMap.get("tel_2_tab_op_if_ctl_cd") == null || "".equals(inMap.get("tel_2_tab_op_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.TEL_2_TAB_OP_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.TEL_2_TAB_OP_IF_CTL_CD, (String)inMap.get("tel_2_tab_op_if_ctl_cd"));
		}
		
		//↓↓↓【IT1-2012-0002093】TDIS情報制御コード追加対応 2012/12/07 FJ)薄出 START↓↓↓
		
		// 電話1タブTDIS情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.電話1タブTDIS情報制御コード
		if (inMap == null || inMap.get("tel_1_tab_tdis_if_ctl_cd") == null || "".equals(inMap.get("tel_1_tab_tdis_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.TEL_1_TAB_TDIS_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.TEL_1_TAB_TDIS_IF_CTL_CD, (String)inMap.get("tel_1_tab_tdis_if_ctl_cd"));
		}
		
		// 電話2タブTDIS情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.電話2タブTDIS情報制御コード
		if (inMap == null || inMap.get("tel_2_tab_tdis_if_ctl_cd") == null || "".equals(inMap.get("tel_2_tab_tdis_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.TEL_2_TAB_TDIS_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.TEL_2_TAB_TDIS_IF_CTL_CD, (String)inMap.get("tel_2_tab_tdis_if_ctl_cd"));
		}

		//↑↑↑【IT1-2012-0002093】TDIS情報制御コード追加対応 2012/12/07 FJ)薄出  END ↑↑↑

		// 電話タブ機器情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.電話タブ機器情報制御コード
		if (inMap == null || inMap.get("tel_tab_kiki_if_ctl_cd") == null || "".equals(inMap.get("tel_tab_kiki_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.TEL_TAB_KIKI_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.TEL_TAB_KIKI_IF_CTL_CD, (String)inMap.get("tel_tab_kiki_if_ctl_cd"));
		}
		
		// モバイルタブオプション情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.モバイルタブオプション情報制御コード
		if (inMap == null || inMap.get("mbl_tab_op_if_ctl_cd") == null || "".equals(inMap.get("mbl_tab_op_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.MBL_TAB_OP_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.MBL_TAB_OP_IF_CTL_CD, (String)inMap.get("mbl_tab_op_if_ctl_cd"));
		}
		
		// モバイルタブ機器情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.モバイルタブ機器情報制御コード
		if (inMap == null || inMap.get("mbl_tab_kiki_if_ctl_cd") == null || "".equals(inMap.get("mbl_tab_kiki_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.MBL_TAB_KIKI_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.MBL_TAB_KIKI_IF_CTL_CD, (String)inMap.get("mbl_tab_kiki_if_ctl_cd"));
		}
		
		// ＡＤＳＬタブオプション情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.ＡＤＳＬタブオプション情報制御コード
		if (inMap == null || inMap.get("adsl_tab_op_if_ctl_cd") == null || "".equals(inMap.get("adsl_tab_op_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.ADSL_TAB_OP_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.ADSL_TAB_OP_IF_CTL_CD, (String)inMap.get("adsl_tab_op_if_ctl_cd"));
		}
		
		// ＴＶタブオプション情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.ＴＶタブオプション情報制御コード
		if (inMap == null || inMap.get("tv_tab_op_if_ctl_cd") == null || "".equals(inMap.get("tv_tab_op_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.TV_TAB_OP_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.TV_TAB_OP_IF_CTL_CD, (String)inMap.get("tv_tab_op_if_ctl_cd"));
		}
		
		// ＴＶタブオプション情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.ＴＶタブオプション情報制御コード
		if (inMap == null || inMap.get("tv_tab_op_if_ctl_cd") == null || "".equals(inMap.get("tv_tab_op_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.TV_TAB_OP_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.TV_TAB_OP_IF_CTL_CD, (String)inMap.get("tv_tab_op_if_ctl_cd"));
		}
		
		// ＴＶタブ機器情報制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.ＴＶタブ機器情報制御コード
		if (inMap == null || inMap.get("tv_tab_kiki_if_ctl_cd") == null || "".equals(inMap.get("tv_tab_kiki_if_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.TV_TAB_KIKI_IF_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.TV_TAB_KIKI_IF_CTL_CD, (String)inMap.get("tv_tab_kiki_if_ctl_cd"));
		}
		
		// エリアチェック制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.エリアチェック制御コード
		if (inMap == null || inMap.get("area_chk_ctl_cd") == null || "".equals(inMap.get("area_chk_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.AREA_CHK_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.AREA_CHK_CTL_CD, (String)inMap.get("area_chk_ctl_cd"));
		}
		
		// 不良顧客チェック制御コード → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.不良顧客チェック制御コード
		if (inMap == null || inMap.get("huryo_cust_chk_ctl_cd") == null || "".equals(inMap.get("huryo_cust_chk_ctl_cd")))
		{
			template.setNull(EKK2201C020CBSMsg.HURYO_CUST_CHK_CTL_CD);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.HURYO_CUST_CHK_CTL_CD, (String)inMap.get("huryo_cust_chk_ctl_cd"));
		}
		
		// 更新前最終更新年月日時分秒 → 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.更新前最終更新年月日時分秒
		if (childMap2 == null || childMap2.get("upd_dtm") == null || "".equals(childMap2.get("upd_dtm")))
		{
			template.setNull(EKK2201C020CBSMsg.LAST_UPD_DTM_BF);
		}
		else
		{
			template.set(EKK2201C020CBSMsg.LAST_UPD_DTM_BF, (String)childMap2.get("upd_dtm"));
		}

		return template;
	}
	
	/**
	 * サービス契約一意照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgList サービスインターフェイス実行結果を格納したリスト
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editRetEKK0081A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText)
			throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		ArrayList msg1List = (ArrayList)dataMap.get("EKK0081A010CBSMsg1List");

		if (msg1List == null)
		{
			msg1List = new ArrayList();
			dataMap.put("EKK0081A010CBSMsg1List", msg1List);
		}

		if (templateArray != null && 1 <= templateArray.length)
		{
			CAANMsg childTemplate = templateArray[0];
			HashMap childMap = new HashMap();

			// 申込明細番号 ← サービス契約一意照会.申込明細番号
			if (childTemplate.isNull(EKK0081A010CBSMsg1List.MSKM_DTL_NO))
			{
				childMap.put("mskm_dtl_no", "");
			}
			else
			{
				childMap.put("mskm_dtl_no", childTemplate.getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
			}
			
			// 料金グループコード ← サービス契約一意照会.料金グループコード
			if (childTemplate.isNull(EKK0081A010CBSMsg1List.PRC_GRP_CD))
			{
				childMap.put("prc_grp_cd", "");
			}
			else
			{
				childMap.put("prc_grp_cd", childTemplate.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
			}
			msg1List.add(childMap);
		}

		// エラー情報の設定
		editErrInfoEKK0081A010(param, template, (Integer)returnCode, fixedText);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}
	
	/**
	 * 申込明細一意照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgList サービスインターフェイス実行結果を格納したリスト
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editRetEKK0021A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText)
			throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST);
		ArrayList msg1List = (ArrayList)dataMap.get("EKK0021A010CBSMsg1List");

		if (msg1List == null)
		{
			msg1List = new ArrayList();
			dataMap.put("EKK0021A010CBSMsg1List", msg1List);
		}

		if (templateArray != null && 1 <= templateArray.length)
		{
			CAANMsg childTemplate = templateArray[0];
			HashMap childMap = new HashMap();

			// 申込番号 ← 申込明細一意照会.申込番号
			if (childTemplate.isNull(EKK0021A010CBSMsg1List.MSKM_NO))
			{
				childMap.put("mskm_no", "");
			}
			else
			{
				childMap.put("mskm_no", childTemplate.getString(EKK0021A010CBSMsg1List.MSKM_NO));
			}
			
			msg1List.add(childMap);
		}

		// エラー情報の設定
		editErrInfoEKK0021A010(param, template, (Integer)returnCode, fixedText);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}
	
	/**
	 * 申込画面入力支援ワーク一意照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgList サービスインターフェイス実行結果を格納したリスト
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editRetEKK2201A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText)
			throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		CAANMsg[] templateArray = template.getCAANMsgList(EKK2201A010CBSMsg.EKK2201A010CBSMSG1LIST);
		ArrayList msg1List = (ArrayList)dataMap.get("EKK2201A010CBSMsg1List");

		if (msg1List == null)
		{
			msg1List = new ArrayList();
			dataMap.put("EKK2201A010CBSMsg1List", msg1List);
		}

		if (templateArray != null && 1 <= templateArray.length)
		{
			CAANMsg childTemplate = templateArray[0];
			HashMap childMap = new HashMap();

			// 契約者情報タブ制御コード ← 申込画面入力支援ワーク一意照会.契約者情報タブ制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.KSH_IF_TAB_CTL_CD))
			{
				childMap.put("ksh_if_tab_ctl_cd", "");
			}
			else
			{
				childMap.put("ksh_if_tab_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.KSH_IF_TAB_CTL_CD));
			}
			
			// 支払方法タブ制御コード ← 申込画面入力支援ワーク一意照会.支払方法タブ制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.PAY_WAY_TAB_CTL_CD))
			{
				childMap.put("pay_way_tab_ctl_cd", "");
			}
			else
			{
				childMap.put("pay_way_tab_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.PAY_WAY_TAB_CTL_CD));
			}
			
			// ネットタブオプション情報制御コード ← 申込画面入力支援ワーク一意照会.ネットタブオプション情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.NET_TAB_OP_IF_CTL_CD))
			{
				childMap.put("net_tab_op_if_ctl_cd", "");
			}
			else
			{
				childMap.put("net_tab_op_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.NET_TAB_OP_IF_CTL_CD));
			}
			
			// ネットタブ機器情報制御コード ← 申込画面入力支援ワーク一意照会.ネットタブ機器情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.NET_TAB_KIKI_IF_CTL_CD))
			{
				childMap.put("net_tab_kiki_if_ctl_cd", "");
			}
			else
			{
				childMap.put("net_tab_kiki_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.NET_TAB_KIKI_IF_CTL_CD));
			}
			
			// 電話１タブオプション情報制御コード ← 申込画面入力支援ワーク一意照会.電話１タブオプション情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.TEL_1_TAB_OP_IF_CTL_CD))
			{
				childMap.put("tel_1_tab_op_if_ctl_cd", "");
			}
			else
			{
				childMap.put("tel_1_tab_op_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.TEL_1_TAB_OP_IF_CTL_CD));
			}
			
			// 電話２タブオプション情報制御コード ← 申込画面入力支援ワーク一意照会.電話２タブオプション情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.TEL_2_TAB_OP_IF_CTL_CD))
			{
				childMap.put("tel_2_tab_op_if_ctl_cd", "");
			}
			else
			{
				childMap.put("tel_2_tab_op_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.TEL_2_TAB_OP_IF_CTL_CD));
			}
			
			//↓↓↓【IT1-2012-0002093】TDIS情報制御コード追加対応 2012/12/07 FJ)薄出 START↓↓↓

			// 電話1タブTDIS情報制御コード ← 申込画面入力支援ワーク一意照会.電話1タブTDIS情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.TEL_1_TAB_TDIS_IF_CTL_CD))
			{
				childMap.put("tel_1_tab_tdis_if_ctl_cd", "");
			}
			else
			{
				childMap.put("tel_1_tab_tdis_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.TEL_1_TAB_TDIS_IF_CTL_CD));
			}
			
			// 電話2タブTDIS情報制御コード ← 申込画面入力支援ワーク一意照会.電話2タブTDIS情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.TEL_2_TAB_TDIS_IF_CTL_CD))
			{
				childMap.put("tel_2_tab_tdis_if_ctl_cd", "");
			}
			else
			{
				childMap.put("tel_2_tab_tdis_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.TEL_2_TAB_TDIS_IF_CTL_CD));
			}
			
			//↑↑↑【IT1-2012-0002093】TDIS情報制御コード追加対応 2012/12/07 FJ)薄出  END ↑↑↑
			
			// 電話タブ機器情報制御コード ← 申込画面入力支援ワーク一意照会.電話タブ機器情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.TEL_TAB_KIKI_IF_CTL_CD))
			{
				childMap.put("tel_tab_kiki_if_ctl_cd", "");
			}
			else
			{
				childMap.put("tel_tab_kiki_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.TEL_TAB_KIKI_IF_CTL_CD));
			}
			
			// モバイルタブオプション情報制御コード ← 申込画面入力支援ワーク一意照会.モバイルタブオプション情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.MBL_TAB_OP_IF_CTL_CD))
			{
				childMap.put("mbl_tab_op_if_ctl_cd", "");
			}
			else
			{
				childMap.put("mbl_tab_op_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.MBL_TAB_OP_IF_CTL_CD));
			}
			
			// モバイルタブ機器情報制御コード ← 申込画面入力支援ワーク一意照会.モバイルタブ機器情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.MBL_TAB_KIKI_IF_CTL_CD))
			{
				childMap.put("mbl_tab_kiki_if_ctl_cd", "");
			}
			else
			{
				childMap.put("mbl_tab_kiki_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.MBL_TAB_KIKI_IF_CTL_CD));
			}
			
			// ＡＤＳＬタブオプション情報制御コード ← 申込画面入力支援ワーク一意照会.ＡＤＳＬタブオプション情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.ADSL_TAB_OP_IF_CTL_CD))
			{
				childMap.put("adsl_tab_op_if_ctl_cd", "");
			}
			else
			{
				childMap.put("adsl_tab_op_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.ADSL_TAB_OP_IF_CTL_CD));
			}
			
			// ＴＶタブオプション情報制御コード ← 申込画面入力支援ワーク一意照会.ＴＶタブオプション情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.TV_TAB_OP_IF_CTL_CD))
			{
				childMap.put("tv_tab_op_if_ctl_cd", "");
			}
			else
			{
				childMap.put("tv_tab_op_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.TV_TAB_OP_IF_CTL_CD));
			}
			
			// ＴＶタブ機器情報制御コード ← 申込画面入力支援ワーク一意照会.ＴＶタブ機器情報制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.TV_TAB_KIKI_IF_CTL_CD))
			{
				childMap.put("tv_tab_kiki_if_ctl_cd", "");
			}
			else
			{
				childMap.put("tv_tab_kiki_if_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.TV_TAB_KIKI_IF_CTL_CD));
			}
			
			// エリアチェック制御コード ← 申込画面入力支援ワーク一意照会.エリアチェック制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.AREA_CHK_CTL_CD))
			{
				childMap.put("area_chk_ctl_cd", "");
			}
			else
			{
				childMap.put("area_chk_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.AREA_CHK_CTL_CD));
			}
			
			// 不良顧客チェック制御コード ← 申込画面入力支援ワーク一意照会.不良顧客チェック制御コード
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.HURYO_CUST_CHK_CTL_CD))
			{
				childMap.put("huryo_cust_chk_ctl_cd", "");
			}
			else
			{
				childMap.put("huryo_cust_chk_ctl_cd", childTemplate.getString(EKK2201A010CBSMsg1List.HURYO_CUST_CHK_CTL_CD));
			}
			
			// 更新年月日時分秒 ← 申込画面入力支援ワーク一意照会.更新年月日時分秒
			if (childTemplate.isNull(EKK2201A010CBSMsg1List.UPD_DTM))
			{
				childMap.put("upd_dtm", "");
			}
			else
			{
				childMap.put("upd_dtm", childTemplate.getString(EKK2201A010CBSMsg1List.UPD_DTM));
			}
			
			msg1List.add(childMap);
		}

		// エラー情報の設定
		editErrInfoEKK2201A010(param, template, (Integer)returnCode, fixedText);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}
	
	/**
	 * 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）の下りマッピング処理を行います。
	 * <br>
	 * @param msgList サービスインターフェイス実行結果を格納したリスト
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editRetEKK2201C020(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		// 更新年月日時分秒 ← 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.更新年月日時分秒
		if (template.isNull(EKK2201C020CBSMsg.UPD_DTM))
		{
			dataMap.put("upd_dtm", "");
		}
		else
		{
			dataMap.put("upd_dtm", template.getString(EKK2201C020CBSMsg.UPD_DTM));
		}

		// 更新オペレータアカウント ← 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.更新オペレータアカウント
		if (template.isNull(EKK2201C020CBSMsg.UPD_OPEACNT))
		{
			dataMap.put("upd_opeacnt", "");
		}
		else
		{
			dataMap.put("upd_opeacnt", template.getString(EKK2201C020CBSMsg.UPD_OPEACNT));
		}

		// エラー情報の設定
		editErrInfoEKK2201C020(param, template, (Integer)returnCode, fixedText);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 * 制御コード項目設定処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	private IRequestParameterReadWrite setCtlCd(IRequestParameterReadWrite param, String fixedText)
			throws Exception
	{
		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}
		
		ArrayList msg1List = (ArrayList)dataMap.get("EKK0081A010CBSMsg1List");
		HashMap childMap = new HashMap();
		
		if (msg1List == null | 0 == msg1List.size())
		{
			msg1List = new ArrayList();
			dataMap.put("EKK0081A010CBSMsg1List", msg1List);
			msg1List.add(childMap);
		}
		
		childMap = (HashMap)msg1List.get(0);

		// サービス契約.料金グループコード取得
		String strPrcGrpCd = (String)childMap.get("prc_grp_cd");
		
		// 料金グループコードの判定（ネットタブ機器情報制御コード ←非活性）
		if (JKKStrConst.CD00133_02.equals(strPrcGrpCd) || JKKStrConst.CD00133_03.equals(strPrcGrpCd) || JKKStrConst.CD00133_04.equals(strPrcGrpCd))
		{
			dataMap.put("net_tab_kiki_if_ctl_cd", JKKStrConst.ITEM_CTL_CD_HIKASSEI);
		}
		
		// 料金グループコードの判定（モバイルタブ機器情報制御コード ←非活性）
		if (JKKStrConst.CD00133_07.equals(strPrcGrpCd) || JKKStrConst.CD00133_08.equals(strPrcGrpCd) 
				|| JKKStrConst.CD00133_09.equals(strPrcGrpCd) || JKKStrConst.CD00133_16.equals(strPrcGrpCd))
		{
			dataMap.put("mbl_tab_kiki_if_ctl_cd", JKKStrConst.ITEM_CTL_CD_HIKASSEI);
		}
		
		// 料金グループコードの判定（電話タブ機器情報制御コード ←非活性）
		if (JKKStrConst.CD00133_10.equals(strPrcGrpCd))
		{
			dataMap.put("tel_tab_kiki_if_ctl_cd", JKKStrConst.ITEM_CTL_CD_HIKASSEI);
		}
		
		// 料金グループコードの判定（TVタブ機器情報制御コード ←非活性）
		if (JKKStrConst.CD00133_11.equals(strPrcGrpCd) || JKKStrConst.CD00133_12.equals(strPrcGrpCd) || JKKStrConst.CD00133_13.equals(strPrcGrpCd))
		{
			dataMap.put("tv_tab_kiki_if_ctl_cd", JKKStrConst.ITEM_CTL_CD_HIKASSEI);
		}
		
		return param;
	}

	/**
	 * 入力値編集処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editMkmScinsprtWk(IRequestParameterReadWrite param, String fixedText)
			throws Exception
	{
		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}
		
		ArrayList msg1List = (ArrayList)dataMap.get("EKK2201A010CBSMsg1List");
		HashMap childMap = new HashMap();
		
		if (msg1List == null | 0 == msg1List.size())
		{
			msg1List = new ArrayList();
			dataMap.put("EKK2201A010CBSMsg1List", msg1List);
			msg1List.add(childMap);
		}
		
		childMap = (HashMap)msg1List.get(0);
		
		// 契約者情報タブ制御コードの編集
		if (dataMap.get("ksh_if_tab_ctl_cd") == null)
		{
			dataMap.put("ksh_if_tab_ctl_cd", childMap.get("ksh_if_tab_ctl_cd"));
		}
		
		// 支払方法タブ制御コードの編集
		if (dataMap.get("pay_way_tab_ctl_cd") == null)
		{
			dataMap.put("pay_way_tab_ctl_cd", childMap.get("pay_way_tab_ctl_cd"));
		}
		
		// ネットタブオプション情報制御コードの編集
		if (dataMap.get("net_tab_op_if_ctl_cd") == null)
		{
			dataMap.put("net_tab_op_if_ctl_cd", childMap.get("net_tab_op_if_ctl_cd"));
		}
		
		// ネットタブ機器情報制御コードの編集
		if (dataMap.get("net_tab_kiki_if_ctl_cd") == null)
		{
			dataMap.put("net_tab_kiki_if_ctl_cd", childMap.get("net_tab_kiki_if_ctl_cd"));
		}
		
		// 電話１タブオプション情報制御コードの編集
		if (dataMap.get("tel_1_tab_op_if_ctl_cd") == null)
		{
			dataMap.put("tel_1_tab_op_if_ctl_cd", childMap.get("tel_1_tab_op_if_ctl_cd"));
		}
		
		// 電話２タブオプション情報制御コードの編集
		if (dataMap.get("tel_2_tab_op_if_ctl_cd") == null)
		{
			dataMap.put("tel_2_tab_op_if_ctl_cd", childMap.get("tel_2_tab_op_if_ctl_cd"));
		}
		
		//↓↓↓【IT1-2012-0002093】TDIS情報制御コード追加対応 2012/12/07 FJ)薄出 START↓↓↓

		// 電話1タブTDIS情報制御コードの編集
		if (dataMap.get("tel_1_tab_tdis_if_ctl_cd") == null)
		{
			dataMap.put("tel_1_tab_tdis_if_ctl_cd", childMap.get("tel_1_tab_tdis_if_ctl_cd"));
		}
		
		// 電話2タブTDIS情報制御コードの編集
		if (dataMap.get("tel_2_tab_tdis_if_ctl_cd") == null)
		{
			dataMap.put("tel_2_tab_tdis_if_ctl_cd", childMap.get("tel_2_tab_tdis_if_ctl_cd"));
		}
		
		//↑↑↑【IT1-2012-0002093】TDIS情報制御コード追加対応 2012/12/07 FJ)薄出  END ↑↑↑
		
		// 電話タブ機器情報制御コードの編集
		if (dataMap.get("tel_tab_kiki_if_ctl_cd") == null)
		{
			dataMap.put("tel_tab_kiki_if_ctl_cd", childMap.get("tel_tab_kiki_if_ctl_cd"));
		}
		
		// モバイルタブオプション情報制御コードの編集
		if (dataMap.get("mbl_tab_op_if_ctl_cd") == null)
		{
			dataMap.put("mbl_tab_op_if_ctl_cd", childMap.get("mbl_tab_op_if_ctl_cd"));
		}
		
		// モバイルタブ機器情報制御コードの編集
		if (dataMap.get("mbl_tab_kiki_if_ctl_cd") == null)
		{
			dataMap.put("mbl_tab_kiki_if_ctl_cd", childMap.get("mbl_tab_kiki_if_ctl_cd"));
		}
		
		// ＡＤＳＬタブオプション情報制御コードの編集
		if (dataMap.get("adsl_tab_op_if_ctl_cd") == null)
		{
			dataMap.put("adsl_tab_op_if_ctl_cd", childMap.get("adsl_tab_op_if_ctl_cd"));
		}
		
		// ＴＶタブオプション情報制御コードの編集
		if (dataMap.get("tv_tab_op_if_ctl_cd") == null)
		{
			dataMap.put("tv_tab_op_if_ctl_cd", childMap.get("tv_tab_op_if_ctl_cd"));
		}
		
		// ＴＶタブ機器情報制御コードの編集
		if (dataMap.get("tv_tab_kiki_if_ctl_cd") == null)
		{
			dataMap.put("tv_tab_kiki_if_ctl_cd", childMap.get("tv_tab_kiki_if_ctl_cd"));
		}
		
		// エリアチェック制御コードの編集
		if (dataMap.get("area_chk_ctl_cd") == null)
		{
			dataMap.put("area_chk_ctl_cd", childMap.get("area_chk_ctl_cd"));
		}
		
		// 不良顧客チェック制御コードの編集
		if (dataMap.get("huryo_cust_chk_ctl_cd") == null)
		{
			dataMap.put("huryo_cust_chk_ctl_cd", childMap.get("huryo_cust_chk_ctl_cd"));
		}
		
		return param;
	}
	
	/**
	 * エラー情報のマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param templates テンプレートリスト
	 * @param returnCode リターンコード
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
			throws RequestParameterException
	{
		HashMap inMap = (HashMap)param.getData(fixedText);

		// マップに値が設定されていない場合は処理を行わない。
		if (inMap == null)
		{
			return param;
		}
		
		editErrInfoEKK0081A010(param, templates[0], returnCode, fixedText);
		
		return param;
	}

	/**
	 * コントロールマップエラー情報格納処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param itemplateStatus サービスインターフェイスステータス
	 * @param returnCode リターンコード
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite setControlMapErrInfo(IRequestParameterReadWrite param, int itemplateStatus, int returnCode)
			throws RequestParameterException
	{
		int templateStatus = itemplateStatus;

		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		return param;
	}
	
	/**
	 * サービス契約一意照会のエラー情報マッピング処理を行います。
	 * <br>
	 * @param iparam リクエストパラメータ
	 * @param template テンプレートリスト
	 * @param returnCode リターンコード
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrInfoEKK0081A010(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, template.getInt(EKK0081A010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// サービス契約一意照会.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("key_svc_kei_no_err"))
			{
				inMap.put("key_svc_kei_no_err", template.getString(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		
		// サービス契約一意照会.ＫＥＹ＿世代登録年月日 → ＫＥＹ＿世代登録年月日 のエラー情報返却
		if (!template.isNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR))
		{
			if (!inMap.containsKey("key_gene_add_dtm_err"))
			{
				inMap.put("key_gene_add_dtm_err", template.getString(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
			}
		}
		
		// サービス契約一意照会.ＫＥＹ＿予約適用年月日 → ＫＥＹ＿予約適用年月日 のエラー情報返却
		if (!template.isNull(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR))
		{
			if (!inMap.containsKey("key_rsv_aply_ymd_err"))
			{
				inMap.put("key_rsv_aply_ymd_err", template.getString(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 * 申込明細一意照会のエラー情報マッピング処理を行います。
	 * <br>
	 * @param iparam リクエストパラメータ
	 * @param template テンプレートリスト
	 * @param returnCode リターンコード
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrInfoEKK0021A010(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, template.getInt(EKK0021A010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 申込明細一意照会.ＫＥＹ＿申込明細番号 → ＫＥＹ＿申込明細番号 のエラー情報返却
		if (!template.isNull(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO_ERR))
		{
			if (!inMap.containsKey("key_mskm_dtl_no_err"))
			{
				inMap.put("key_mskm_dtl_no_err", template.getString(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO_ERR));
			}
		}
		
		// 申込明細一意照会.ＫＥＹ＿世代登録年月日 → ＫＥＹ＿世代登録年月日 のエラー情報返却
		if (!template.isNull(EKK0021A010CBSMsg.KEY_GENE_ADD_DTM_ERR))
		{
			if (!inMap.containsKey("key_gene_add_dtm_err"))
			{
				inMap.put("key_gene_add_dtm_err", template.getString(EKK0021A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 * 申込画面入力支援ワーク一意照会のエラー情報マッピング処理を行います。
	 * <br>
	 * @param iparam リクエストパラメータ
	 * @param template テンプレートリスト
	 * @param returnCode リターンコード
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrInfoEKK2201A010(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, template.getInt(EKK0021A010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 申込画面入力支援ワーク一意照会.ＫＥＹ＿申込番号 → ＫＥＹ＿申込番号 のエラー情報返却
		if (!template.isNull(EKK2201A010CBSMsg.KEY_MSKM_NO_ERR))
		{
			if (!inMap.containsKey("key_mskm_no_err"))
			{
				inMap.put("key_mskm_no_err", template.getString(EKK2201A010CBSMsg.KEY_MSKM_NO_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 * 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）のエラー情報マッピング処理を行います。
	 * <br>
	 * @param iparam リクエストパラメータ
	 * @param template テンプレートリスト
	 * @param returnCode リターンコード
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrInfoEKK2201C020(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, template.getInt(EKK0021A010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.申込番号 → 申込番号 のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.MSKM_NO_ERR))
		{
			if (!inMap.containsKey("mskm_no_err"))
			{
				inMap.put("mskm_no_err", template.getString(EKK2201C020CBSMsg.MSKM_NO_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.契約者情報タブ制御コード → 契約者情報タブ制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.KSH_IF_TAB_CTL_CD_ERR))
		{
			if (!inMap.containsKey("ksh_if_tab_ctl_cd_err"))
			{
				inMap.put("ksh_if_tab_ctl_cd_err", template.getString(EKK2201C020CBSMsg.KSH_IF_TAB_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.支払方法タブ制御コード → 支払方法タブ制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.PAY_WAY_TAB_CTL_CD_ERR))
		{
			if (!inMap.containsKey("pay_way_tab_ctl_cd_err"))
			{
				inMap.put("pay_way_tab_ctl_cd_err", template.getString(EKK2201C020CBSMsg.PAY_WAY_TAB_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.ネットタブオプション情報制御コード → ネットタブオプション情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.NET_TAB_OP_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("net_tab_op_if_ctl_cd_err"))
			{
				inMap.put("net_tab_op_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.NET_TAB_OP_IF_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.ネットタブ機器情報制御コード → ネットタブ機器情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.NET_TAB_KIKI_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("net_tab_kiki_if_ctl_cd_err"))
			{
				inMap.put("net_tab_kiki_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.NET_TAB_KIKI_IF_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.電話１タブオプション情報制御コード → 電話１タブオプション情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.TEL_1_TAB_OP_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("tel_1_tab_op_if_ctl_cd_err"))
			{
				inMap.put("tel_1_tab_op_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.TEL_1_TAB_OP_IF_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.電話２タブオプション情報制御コード → 電話２タブオプション情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.TEL_2_TAB_OP_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("tel_2_tab_op_if_ctl_cd_err"))
			{
				inMap.put("tel_2_tab_op_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.TEL_2_TAB_OP_IF_CTL_CD_ERR));
			}
		}
		
		//↓↓↓【IT1-2012-0002093】TDIS情報制御コード追加対応 2012/12/07 FJ)薄出 START↓↓↓
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.電話1タブTDIS情報制御コード → 電話1タブTDIS情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.TEL_1_TAB_TDIS_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("tel_1_tab_tdis_if_ctl_cd_err"))
			{
				inMap.put("tel_1_tab_tdis_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.TEL_1_TAB_TDIS_IF_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.電話2タブTDIS情報制御コード → 電話2タブTDIS情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.TEL_2_TAB_TDIS_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("tel_2_tab_tdis_if_ctl_cd_err"))
			{
				inMap.put("tel_2_tab_tdis_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.TEL_2_TAB_TDIS_IF_CTL_CD_ERR));
			}
		}
		
		//↑↑↑【IT1-2012-0002093】TDIS情報制御コード追加対応 2012/12/07 FJ)薄出  END ↑↑↑
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.電話タブ機器情報制御コード → 電話タブ機器情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.TEL_TAB_KIKI_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("tel_tab_kiki_if_ctl_cd_err"))
			{
				inMap.put("tel_tab_kiki_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.TEL_TAB_KIKI_IF_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.モバイルタブオプション情報制御コード → モバイルタブオプション情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.MBL_TAB_OP_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("mbl_tab_op_if_ctl_cd_err"))
			{
				inMap.put("mbl_tab_op_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.MBL_TAB_OP_IF_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.モバイルタブ機器情報制御コード → モバイルタブ機器情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.MBL_TAB_KIKI_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("mbl_tab_kiki_if_ctl_cd_err"))
			{
				inMap.put("mbl_tab_kiki_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.MBL_TAB_KIKI_IF_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.ＡＤＳＬタブオプション情報制御コード → ＡＤＳＬタブオプション情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.ADSL_TAB_OP_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("adsl_tab_op_if_ctl_cd_err"))
			{
				inMap.put("adsl_tab_op_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.ADSL_TAB_OP_IF_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.ＴＶタブオプション情報制御コード → ＴＶタブオプション情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.TV_TAB_OP_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("tv_tab_op_if_ctl_cd_err"))
			{
				inMap.put("tv_tab_op_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.TV_TAB_OP_IF_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.ＴＶタブ機器情報制御コード → ＴＶタブ機器情報制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.TV_TAB_KIKI_IF_CTL_CD_ERR))
		{
			if (!inMap.containsKey("tv_tab_kiki_if_ctl_cd_err"))
			{
				inMap.put("tv_tab_kiki_if_ctl_cd_err", template.getString(EKK2201C020CBSMsg.TV_TAB_KIKI_IF_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.エリアチェック制御コード → エリアチェック制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.AREA_CHK_CTL_CD_ERR))
		{
			if (!inMap.containsKey("area_chk_ctl_cd_err"))
			{
				inMap.put("area_chk_ctl_cd_err", template.getString(EKK2201C020CBSMsg.AREA_CHK_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.不良顧客チェック制御コード → 不良顧客チェック制御コード のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.HURYO_CUST_CHK_CTL_CD_ERR))
		{
			if (!inMap.containsKey("huryo_cust_chk_ctl_cd_err"))
			{
				inMap.put("huryo_cust_chk_ctl_cd_err", template.getString(EKK2201C020CBSMsg.HURYO_CUST_CHK_CTL_CD_ERR));
			}
		}
		
		// 申込画面入力支援ワーク更新（機器ＯＰ情報制御変更）.更新前最終更新年月日時分秒 → 更新前最終更新年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK2201C020CBSMsg.LAST_UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey("last_upd_dtm_bf_err"))
			{
				inMap.put("last_upd_dtm_bf_err", template.getString(EKK2201C020CBSMsg.LAST_UPD_DTM_BF_ERR));
			}
		}
		
		return param;
	}

	/**
	 * 申込サービス契約内訳一意照会の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return CAANMsg サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0011B020(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0011B020CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0011B020CBSMsg.TEMPLATEID, "EKK0011B020");

		// 機能コード
		template.set(EKK0011B020CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		HashMap inMap = (HashMap)param.getData(fixedText);

		ArrayList msgList = (ArrayList)inMap.get(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST);

		HashMap childMap = new HashMap();

		if (msgList == null | 0 == msgList.size())
		{
			msgList = new ArrayList();

			inMap.put(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, msgList);

			msgList.add(childMap);
		}

		childMap = (HashMap)msgList.get(0);
		
		// 申込明細一意照会.申込番号 → 申込サービス契約内訳一意照会.ＫＥＹ＿申込番号
		if (childMap == null || childMap.get(EKK0021A010CBSMsg1List.MSKM_NO) == null || "".equals(childMap.get(EKK0021A010CBSMsg1List.MSKM_NO)))
		{
			template.setNull(EKK0011B020CBSMsg.KEY_MSKM_NO);
		}
		else
		{
			template.set(EKK0011B020CBSMsg.KEY_MSKM_NO, (String)childMap.get(EKK0021A010CBSMsg1List.MSKM_NO));
		}

		// 入力＿予約適用年月日 → 申込サービス契約内訳一意照会.ＫＥＹ＿予約適用年月日（未設定の場合、運用日付設定）
		if (inMap == null || inMap.get("key_rsv_aply_ymd") == null || "".equals(inMap.get("key_rsv_aply_ymd")))
		{
			template.set(EKK0011B020CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
		}
		else
		{
			template.set(EKK0011B020CBSMsg.KEY_RSV_APLY_YMD, (String)inMap.get("key_rsv_aply_ymd"));
		}

		return template;
	}

	/**
	 * 申込サービス契約内訳一意照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgMap サービスインターフェイス実行結果を格納したMap
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editRetEKK0011B020(Map<?, ?> msgMap, IRequestParameterReadWrite param, String fixedText)
		throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])msgMap.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		CAANMsg template = templates[0];

		Object returnCode = msgMap.get(JCMConstants.RET_CD_INT_KEY);

		HashMap<String, Object> dataMap = (HashMap<String, Object>)param.getData(fixedText);
		
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0011B020CBSMsg.EKK0011B020CBSMSG1LIST);
		ArrayList msgList = (ArrayList)dataMap.get(EKK0011B020CBSMsg.EKK0011B020CBSMSG1LIST);

		if (msgList == null)
		{
			msgList = new ArrayList();
			dataMap.put(EKK0011B020CBSMsg.EKK0011B020CBSMSG1LIST, msgList);
		}

		if (templateArray != null && 0 < templateArray.length)
		{
			for (CAANMsg childTemplate : templateArray)
			{
				HashMap<String, String> childMap = new HashMap<String, String>();

				// サービス契約ステータス
				if (childTemplate.isNull(EKK0011B020CBSMsg1List.SVC_KEI_STAT))
				{
					childMap.put(EKK0011B020CBSMsg1List.SVC_KEI_STAT, "");
				}
				else
				{
					childMap.put(EKK0011B020CBSMsg1List.SVC_KEI_STAT, childTemplate.getString(EKK0011B020CBSMsg1List.SVC_KEI_STAT));
				}

				msgList.add(childMap);
			}
		}
		
		// エラー情報の設定
		editErrInfoEKK0011B020(param, template, (Integer)returnCode, fixedText);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);

		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgMap, errList));

		return param;
	}
	
	/**
	 * 申込サービス契約内訳一意照会のエラー情報マッピング処理を行います。
	 * <br>
	 * @param iparam リクエストパラメータ
	 * @param template テンプレートリスト
	 * @param returnCode リターンコード
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrInfoEKK0011B020(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
		throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, template.getInt(EKK0011B020CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 申込サービス契約内訳一意照会.ＫＥＹ＿申込番号 → ＫＥＹ＿申込番号 のエラー情報返却
		if (!template.isNull(EKK0011B020CBSMsg.KEY_MSKM_NO_ERR))
		{
			if (!inMap.containsKey(EKK0011B020CBSMsg.KEY_MSKM_NO_ERR))
			{
				inMap.put(EKK0011B020CBSMsg.KEY_MSKM_NO_ERR, template.getString(EKK0011B020CBSMsg.KEY_MSKM_NO_ERR));
			}
		}
		
		// 申込サービス契約内訳一意照会.ＫＥＹ＿予約適用年月日 → ＫＥＹ＿予約適用年月日 のエラー情報返却
		if (!template.isNull(EKK0011B020CBSMsg.KEY_RSV_APLY_YMD_ERR))
		{
			if (!inMap.containsKey(EKK0011B020CBSMsg.KEY_RSV_APLY_YMD_ERR))
			{
				inMap.put(EKK0011B020CBSMsg.KEY_RSV_APLY_YMD_ERR, template.getString(EKK0011B020CBSMsg.KEY_RSV_APLY_YMD_ERR));
			}
		}
		
		return param;
	}
}
