/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKCasOpSvcKeiDslCC
*	ソースファイル名：JKKCasOpSvcKeiDslCC.java
*	作成者			：FJ
*	日付			：2025年01月09日
*＜機能概要＞ 
* CASカード関連オプションサービス契約解約の部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v74.00.00	2025/01/09	F井上		【ANK-4592-00-00】テレビ新コース（スカパー用）導入対応
**********************************************************************/
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.SCCallException;
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.JFUStrConst;
import eo.common.constant.JKKStrConst;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1681B005CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3561B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3561B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021C060CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351C240CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351C250CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg;

/**
 * CASカード関連オプションサービス契約解約部品
 * <br>
 * @author 富士通
 */
public class JKKCasOpSvcKeiDslCC extends AbstractCommonComponent
{

	/** テンプレートID(EKK3561B010) CAS番号対象オプションサービス契約一覧照会 */
	private static final String TEMPLATE_ID_EKK3561B010 = "EKK3561B010";
	/** テンプレートID(EKK0351A010) オプションサービス契約一意照会 */
	private static final String TEMPLATE_ID_EKK0351A010 = "EKK0351A010";
	/** テンプレートID(EKK0011D020) 申込内容承認登録 */
	private static final String TEMPLATE_ID_EKK0011D020 = "EKK0011D020";
	/** テンプレートID(EKK0021C060) 申込明細照査・後続業務依頼 */
	private static final String TEMPLATE_ID_EKK0021C060 = "EKK0021C060";
	/** テンプレートID(EKK0351C240) オプションサービス契約解約 */
	private static final String TEMPLATE_ID_EKK0351C240 = "EKK0351C240";
	/** テンプレートID(EKK0351C250) オプションサービス契約解約確定 */
	private static final String TEMPLATE_ID_EKK0351C250 = "EKK0351C250";
	/** テンプレートID(EKK1091D010) 進捗登録 */
	private static final String TEMPLATE_ID_EKK1091D010 = "EKK1091D010";
	/** テンプレートID(EKK1681B005) 異動予約一覧照会（オプションサービス契約番号） */
	private static final String TEMPLATE_ID_EKK1681B005 = "EKK1681B005";
	/**  オプションサービス契約一意照会マップのキー */
	private static final String EKK0351A010_MAP_KEY = "EKK0351A010";
	/**  申込内容承認登録マップのキー */
	private static final String EKK0011D020_MAP_KEY = "EKK0011D020";
	
	/** 申込種別コード（解約申込:00005） */
	private static final String MSKM_SBT_CD_00005 = "00005";
	
	/** 進捗特記事項1の最大文字数 */
	private static final int MAX_LEN_PRG_TKJK1 = 128;
	/** 進捗特記事項2の最大文字数 */
	private static final int MAX_LEN_PRG_TKJK2 = 256;
	
	
	/**
	 * CAANMsgに必要なデータのマッピング処理を行います。
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return パラメータマップ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite dslOpSvcKei(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
		throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		Map<?, ?> result = null;
		CAANMsg template = null;
		
		HashMap inMap = (HashMap)(param.getData(fixedText));
		if (inMap == null)
		{
			return param;
		}
		
		// CASカードリスト
		ArrayList<HashMap<String, Object>> casOopList = (ArrayList<HashMap<String, Object>>)inMap.get("cas_op_list");
		if (casOopList == null || casOopList.size() == 0)
		{
			return param;
		}
		
		// 更新年月日時分秒(更新前)
		HashMap<String, Object> updDtm = new HashMap<String, Object>();
		updDtm.put("upd_dtm_bf", "");
		// 進捗特記事項(解約用)
		ArrayList<String> prgTkjk = new ArrayList();
		
		// CAS番号一覧情報の要素数分、処理を繰り返し行う。
		for (int i = 0; i < casOopList.size(); i++)
		{
			// CAS番号対象オプションサービス契約一覧照会処理
			// 上りマッピング処理
			template = editInMsgEKK3561B010(param, casOopList.get(i));
			// SC呼出実行 (CAS番号対象オプションサービス契約一覧照会 サービスI/F)
			result = scCall.run(putParamMap(paramMap, template), handle);
			// 下りマッピング処理
			editResultEKK3561B010(result, param, inMap);
			
			// CAS番号対象オプションサービス契約一覧
			CAANMsg templates = (CAANMsg)((CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY))[0];
			CAANMsg[] ekk3561B010CBSMsgList = templates.getCAANMsgList(EKK3561B010CBSMsg.EKK3561B010CBSMSG1LIST);
			
			if(ekk3561B010CBSMsgList != null){
				for (int j = 0; j < ekk3561B010CBSMsgList.length ; j++)
				{
					String opSvcKeiNoOut = ekk3561B010CBSMsgList[j].getString(EKK3561B010CBSMsg1List.OP_SVC_KEI_NO);
					// 異動予約一覧照会  上りマッピング処理
					template = editInMsgEKK1681B005(param, opSvcKeiNoOut);
					// SC呼出実行 (SC呼出実行 (オプションサービス契約一意照会サービスI/F)
					result = scCall.run(putParamMap(paramMap, template), handle);
					// 下りマッピング処理
					editResultEKK1681B005(result, param, inMap);
					// 異動予約一覧照会（オプションサービス契約番号）
					templates = (CAANMsg)((CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY))[0];
					CAANMsg[] eKK1681B005CBSMsgList = templates.getCAANMsgList(EKK1681B005CBSMsg.EKK1681B005CBSMSG1LIST);
					if (eKK1681B005CBSMsgList != null && eKK1681B005CBSMsgList.length > 0)
					{
						// 予約中のオプションサービス契約番号が1つでも存在した場合、処理をスキップする。
						return param;
					}
				}
				
				for (int j = 0; j < ekk3561B010CBSMsgList.length ; j++){
					
					// オプションサービス契約一意照会処理
					// 上りマッピング処理
					template = editInMsgEKK0351A010(result, param, ekk3561B010CBSMsgList[j]);
					// SC呼出実行 (オプションサービス契約一意照会サービスI/F)
					result = scCall.run(putParamMap(paramMap, template), handle);
					// 下りマッピング処理
					editResultEKK0351A010(result, param, inMap, updDtm);
					
					// オプションサービス契約ステータス
					String opSvcKeiStat = (String)((HashMap<String, Object>)param.getData(EKK0351A010_MAP_KEY)).get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
					// 機器オプションサービス契約ステータスが'910：解約','920：キャンセル'以外の場合
					if(!(JKKStrConst.OP_SVC_STAT_DSLZUMI.equals(opSvcKeiStat) || JKKStrConst.OP_SVC_STAT_CANCELZUMI.equals(opSvcKeiStat))){

						// 初回解約の場合
						if(prgTkjk.size() == 0){
							
							// 上りマッピング処理
							template = editInMsgEKK0011D020(result, param, updDtm);
							// SC呼出実行 (申込内容承認登録サービスI/F)
							result = scCall.run(putParamMap(paramMap, template), handle);
							// 下りマッピング処理
							editResultEKK0011D020(result, param, inMap, updDtm);
							
						}
						
						// オプションサービス契約解約処理
						// 上りマッピング処理
						template = editInMsgEKK0351C240(result, param, updDtm);
						// SC呼出実行 (オプションサービス契約解約サービスI/F)
						result = scCall.run(putParamMap(paramMap, template), handle);
						// 下りマッピング処理
						editResultEKK0351C240(result, param, inMap, updDtm);
						
						// オプションサービス契約解約確定処理
						template = editInMsgEKK0351C250(param,template,prgTkjk, updDtm);
						// SC呼出実行 (オプションサービス契約解約確定サービスI/F)
						result = scCall.run(putParamMap(paramMap, template), handle);
						// 下りマッピング処理
						editResultEKK0351C250(result, param, inMap, updDtm);
					}
				}
			}
		}

		// 解約件数が1件以上の場合
		if(prgTkjk.size() > 0){
			
			// 上りマッピング処理
			template = editInMsgEKK1091D010(param,template,inMap, prgTkjk);
			// SC呼出実行 (進捗登録 サービスI/F)
			result = scCall.run(putParamMap(paramMap, template), handle);
			// 下りマッピング処理
			editResultEKK1091D010(result, param, inMap);
			
			// 上りマッピング処理
			template = editInMsgEKK0021C060(result, param, updDtm);
			// SC呼出実行 (申込明細照査・後続業務依頼サービスI/F)
			result = scCall.run(putParamMap(paramMap, template), handle);
			// 下りマッピング処理
			editResultEKK0021C060(result, param, inMap, updDtm);
		}
		
		return param;
	}

	/**
	 * CAS番号対象オプションサービス契約一覧照会の上りマッピング処理を行います。
	 * <br>
	 * @param param
	 * @return List<CAANMsg>
	 * @throws RequestParameterException
	 */
	private CAANMsg editInMsgEKK3561B010(IRequestParameterReadWrite param, HashMap<String, Object> inMap) throws RequestParameterException
	{
		CAANMsg template = null;
		
		if (inMap != null)
		{
			// オプションサービス契約一覧照会用テンプレート
			template = new CAANMsg(EKK3561B010CBSMsg.class.getName());
			// テンプレートID
			template.set(EKK3561B010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK3561B010);
			// 機能コード（デフォルト：１）
			template.set(EKK3561B010CBSMsg.FUNC_CODE, "1");
			// オペレータID
			Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
			template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
			// 運用日付
			Object operateDate = JCCBPCommon.getOpeDate(null);
			template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
			// 運用日時
			Object operateDateTime = JCCBPCommon.getOpeDateTimeStamp(null);
			template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
			
			// ＫＥＹ＿ＣＡＳカード番号
			if ("".equals(inMap.get("cascd_no")))
			{
				template.setNull(EKK3561B010CBSMsg.KEY_CASCD_NO);
			}
			else
			{
				template.set(EKK3561B010CBSMsg.KEY_CASCD_NO, inMap.get("cascd_no"));
			}
		}
		return template;
	}
	
	/**
	 * CAS番号対象オプションサービス契約一覧照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editResultEKK3561B010(Map<?, ?> result, IRequestParameterReadWrite param, HashMap inMap) throws Exception
	{
		
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		// リターンコード取得
		Object returnCode = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = templates[0].getInt(EKK3561B010CBSMsg.STATUS);
		
		// エラー情報の設定
		editErrorInfoEKK3561B010(param, templates, (Integer)returnCode, inMap);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(returnCode.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", returnCode.toString(), status);
		}
	}

	/**
	 * オプションサービス契約一覧照会（ＣＡＳカード番号）のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKK3561B010(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, HashMap inMap)
			throws RequestParameterException
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK3561B010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", 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)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		if (!template.isNull(EKK3561B010CBSMsg.SEARCH_ERR_FLG))
		{
			if (!inMap.containsKey("search_err_flg"))
			{
				inMap.put("search_err_flg", template.getString(EKK3561B010CBSMsg.SEARCH_ERR_FLG));
			}
		}

		if (!template.isNull(EKK3561B010CBSMsg.SEARCH_TYPE_ERR))
		{
			if (!inMap.containsKey("search_type_err"))
			{
				inMap.put("search_type_err", template.getString(EKK3561B010CBSMsg.SEARCH_TYPE_ERR));
			}
		}

		if (!template.isNull(EKK3561B010CBSMsg.MAX_SEARCH_NUM_ERR))
		{
			if (!inMap.containsKey("max_search_num_err"))
			{
				inMap.put("max_search_num_err", template.getString(EKK3561B010CBSMsg.MAX_SEARCH_NUM_ERR));
			}
		}

		if (!template.isNull(EKK3561B010CBSMsg.DISPLAY_NUM_ERR))
		{
			if (!inMap.containsKey("display_num_err"))
			{
				inMap.put("display_num_err", template.getString(EKK3561B010CBSMsg.DISPLAY_NUM_ERR));
			}
		}

		if (!template.isNull(EKK3561B010CBSMsg.DISPLAY_PAGE_NUM_ERR))
		{
			if (!inMap.containsKey("display_page_num_err"))
			{
				inMap.put("display_page_num_err", template.getString(EKK3561B010CBSMsg.DISPLAY_PAGE_NUM_ERR));
			}
		}

		if (!template.isNull(EKK3561B010CBSMsg.TOTAL_SEARCH_NUM_ERR))
		{
			if (!inMap.containsKey("total_search_num_err"))
			{
				inMap.put("total_search_num_err", template.getString(EKK3561B010CBSMsg.TOTAL_SEARCH_NUM_ERR));
			}
		}

		if (!template.isNull(EKK3561B010CBSMsg.TOTAL_PAGE_NUM_ERR))
		{
			if (!inMap.containsKey("total_page_num_err"))
			{
				inMap.put("total_page_num_err", template.getString(EKK3561B010CBSMsg.TOTAL_PAGE_NUM_ERR));
			}
		}

		if (!template.isNull(EKK3561B010CBSMsg.SEARCH_ERR_FLG_ERR))
		{
			if (!inMap.containsKey("search_err_flg_err"))
			{
				inMap.put("search_err_flg_err", template.getString(EKK3561B010CBSMsg.SEARCH_ERR_FLG_ERR));
			}
		}

		if (!template.isNull(EKK3561B010CBSMsg.KEY_CASCD_NO_ERR))
		{
			if (!inMap.containsKey("key_cascd_no_err"))
			{
				inMap.put("key_cascd_no_err", template.getString(EKK3561B010CBSMsg.KEY_CASCD_NO_ERR));
			}
		}

		if (!template.isNull(EKK3561B010CBSMsg.EKK3561B010CBSMSG1LIST_ERR))
		{
			if (!inMap.containsKey("EKK3561B010CBSMsg1List_err"))
			{
				inMap.put("EKK3561B010CBSMsg1List_err", template.getString(EKK3561B010CBSMsg.EKK3561B010CBSMSG1LIST_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 * オプションサービス契約一意照会の上りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInMsgEKK0351A010(Map<?, ?> msgList, IRequestParameterReadWrite param, CAANMsg ekk3561B010CBSMsg) throws RequestParameterException
	{
		CAANMsg template = null;
		
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		Object operateDate = JCCBPCommon.getOpeDate(null);
		Object operateDateTime = JCCBPCommon.getOpeDateTimeStamp(null);
		
		if (ekk3561B010CBSMsg != null)
		{
			template = new CAANMsg(EKK0351A010CBSMsg.class.getName());
			// テンプレートID
			template.set(EKK0351A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0351A010);
			// 機能コード（カレント取得：２）
			template.set(EKK3561B010CBSMsg.FUNC_CODE, "2");
			// オペレータID
			template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
			// 運用日付
			template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
			// 運用日時
			template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
			
			// ＫＥＹ＿オプションサービス契約番号エラー
			if (ekk3561B010CBSMsg.isNull(EKK3561B010CBSMsg1List.OP_SVC_KEI_NO))
			{
				template.setNull(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO);
			}
			else
			{
				template.set(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO, ekk3561B010CBSMsg.getString(EKK3561B010CBSMsg1List.OP_SVC_KEI_NO));
			}
			//ＫＥＹ＿予約適用年月日
			template.set(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD, operateDate);
		}
		return template;
	}

	/**
	 * オプションサービス契約一意照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editResultEKK0351A010(Map<?, ?> result, IRequestParameterReadWrite param, HashMap inMap, HashMap<String, Object> updDtm) throws Exception
	{
		
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// リターンコード取得
		Object returnCode = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = templates[0].getInt(EKK0351A010CBSMsg.STATUS);
		
		// オプションサービス契約番号
		parentMap.put(EKK0351A010CBSMsg1List.OP_SVC_CD, "");
		// オプションサービス契約ステータス
		parentMap.put(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT, "");
		// 申込明細番号
		parentMap.put(EKK0351A010CBSMsg1List.MSKM_DTL_NO, "");
		// オプションサービスコード名称
		parentMap.put(EKK0351A010CBSMsg1List.OP_SVC_CD_NM, "");
		
		if (template != null && !template.isNull(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST))
		{
			CAANMsg[] ekk0351A010CBSMsg1Lists = template.getCAANMsgList(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST);
			CAANMsg ekk0351A010CBSMsg1List = ekk0351A010CBSMsg1Lists[0];
			if (ekk0351A010CBSMsg1List != null)
			{
				// オプションサービス契約番号
				parentMap.put(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO, ekk0351A010CBSMsg1List.getObject(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
				// オプションサービス契約ステータス
				parentMap.put(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT, ekk0351A010CBSMsg1List.getObject(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT));
				// 申込明細番号
				parentMap.put(EKK0351A010CBSMsg1List.MSKM_DTL_NO, ekk0351A010CBSMsg1List.getObject(EKK0351A010CBSMsg1List.MSKM_DTL_NO));
				// オプションサービスコード名称
				parentMap.put(EKK0351A010CBSMsg1List.OP_SVC_CD_NM, ekk0351A010CBSMsg1List.getObject(EKK0351A010CBSMsg1List.OP_SVC_CD_NM));
				// SYSID
				parentMap.put(EKK0351A010CBSMsg1List.SYSID, ekk0351A010CBSMsg1List.getObject(EKK0351A010CBSMsg1List.SYSID));
				// 更新年月日時分秒(更新前)
				if("".equals(updDtm.get("upd_dtm_bf"))){
					updDtm.put("upd_dtm_bf", ekk0351A010CBSMsg1List.getObject(EKK0351A010CBSMsg1List.LAST_UPD_DTM));
				}
			}
		}
		param.setData(EKK0351A010_MAP_KEY, parentMap);
		
		// エラー情報の設定
		editErrorInfoEKK0351A010(param, templates, (Integer)returnCode, inMap);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(returnCode.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", returnCode.toString(), status);
		}
	}

	/**
	 * オプションサービス契約一意照会のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKK0351A010(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, HashMap inMap)
			throws RequestParameterException
	{
		
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0351A010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}

		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", 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)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		if (!template.isNull(EKK0351A010CBSMsg.SEARCH_TYPE_ERR))
		{
			if (!inMap.containsKey("search_type_err"))
			{
				inMap.put("search_type_err", template.getString(EKK0351A010CBSMsg.SEARCH_TYPE_ERR));
			}
		}

		if (!template.isNull(EKK0351A010CBSMsg.MAX_SEARCH_NUM_ERR))
		{
			if (!inMap.containsKey("max_search_num_err"))
			{
				inMap.put("max_search_num_err", template.getString(EKK0351A010CBSMsg.MAX_SEARCH_NUM_ERR));
			}
		}

		if (!template.isNull(EKK0351A010CBSMsg.DISPLAY_NUM_ERR))
		{
			if (!inMap.containsKey("display_num_err"))
			{
				inMap.put("display_num_err", template.getString(EKK0351A010CBSMsg.DISPLAY_NUM_ERR));
			}
		}

		if (!template.isNull(EKK0351A010CBSMsg.DISPLAY_PAGE_NUM_ERR))
		{
			if (!inMap.containsKey("display_page_num_err"))
			{
				inMap.put("display_page_num_err", template.getString(EKK0351A010CBSMsg.DISPLAY_PAGE_NUM_ERR));
			}
		}

		if (!template.isNull(EKK0351A010CBSMsg.TOTAL_SEARCH_NUM_ERR))
		{
			if (!inMap.containsKey("total_search_num_err"))
			{
				inMap.put("total_search_num_err", template.getString(EKK0351A010CBSMsg.TOTAL_SEARCH_NUM_ERR));
			}
		}

		if (!template.isNull(EKK0351A010CBSMsg.TOTAL_PAGE_NUM_ERR))
		{
			if (!inMap.containsKey("total_page_num_err"))
			{
				inMap.put("total_page_num_err", template.getString(EKK0351A010CBSMsg.TOTAL_PAGE_NUM_ERR));
			}
		}

		if (!template.isNull(EKK0351A010CBSMsg.SEARCH_ERR_FLG_ERR))
		{
			if (!inMap.containsKey("search_err_flg_err"))
			{
				inMap.put("search_err_flg_err", template.getString(EKK0351A010CBSMsg.SEARCH_ERR_FLG_ERR));
			}
		}

		if (!template.isNull(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("key_op_svc_kei_no_err"))
			{
				inMap.put("key_op_svc_kei_no_err", template.getString(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR));
			}
		}

		if (!template.isNull(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM_ERR))
		{
			if (!inMap.containsKey("key_gene_add_dtm_err"))
			{
				inMap.put("key_gene_add_dtm_err", template.getString(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
			}
		}

		if (!template.isNull(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD_ERR))
		{
			if (!inMap.containsKey("key_rsv_aply_ymd_err"))
			{
				inMap.put("key_rsv_aply_ymd_err", template.getString(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD_ERR));
			}
		}

		if (!template.isNull(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST_ERR))
		{
			if (!inMap.containsKey("EKK0351A010CBSMsg1List_err"))
			{
				inMap.put("EKK0351A010CBSMsg1List_err", template.getString(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST_ERR));
			}
		}
		
		return param;
	}

	/**
	 * 申込内容承認登録の上りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInMsgEKK0011D020(Map<?, ?> result, IRequestParameterReadWrite param, HashMap<String, Object> updDtm) throws RequestParameterException
	{
		CAANMsg template = null;
		CAANMsg[] templateArray = null;
		
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		Object operateDate = JCCBPCommon.getOpeDate(null);
		Object operateDateTime = JCCBPCommon.getOpeDateTimeStamp(null);
		HashMap<String, Object> ekk0351A010Map = (HashMap<String, Object>)param.getData(EKK0351A010_MAP_KEY);
		
		template = new CAANMsg(EKK0011D020CBSMsg.class.getName());
		// テンプレートID
		template.set(EKK0011D020CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0011D020);
		// 機能コード（申込内容承認登録：1）
		template.set(EKK0011D020CBSMsg.FUNC_CODE, "1");
		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// SYSID
		template.set(EKK0011D020CBSMsg.SYSID, ekk0351A010Map.get(EKK0351A010CBSMsg1List.SYSID));
		// 申込種別コード（解約申込:00005）
		template.set(EKK0011D020CBSMsg.MSKM_SBT_CD, MSKM_SBT_CD_00005);
		// 申込受付年月日時分秒
		template.set(EKK0011D020CBSMsg.MSKM_UK_DTM, operateDateTime);
		// 申込年月日
		template.set(EKK0011D020CBSMsg.MSKM_YMD, operateDate);
		// コンシューマ営業用申込状態識別コード(承認済:4)
		template.set(EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD, JKKStrConst.CD00760_04);
		// 申込内容承認登録明細
		templateArray = template.getCAANMsgList(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST);
		if (templateArray == null) {
			templateArray = new CAANMsg[1];
		}
		CAANMsg childTemplate = templateArray[0];
		if (childTemplate == null) {
			childTemplate = new CAANMsg(EKK0011D020CBSMsg1List.class.getName());
		}
		// nullを設定
		fillCAANMSGNullMapping(childTemplate, new EKK0011D020CBSMsg1List().getContents());

		templateArray[0] = childTemplate;

		template.set(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST, templateArray);
		
		return template;
	}

	/**
	 * 申込内容承認登録の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editResultEKK0011D020(Map<?, ?> result, IRequestParameterReadWrite param, HashMap inMap, HashMap<String, Object> updDtm) throws Exception
	{
		
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// リターンコード取得
		Object returnCode = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = templates[0].getInt(EKK0011D020CBSMsg.STATUS);
		
		if (template != null && !template.isNull(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST))
		{
			CAANMsg[] ekk0011D020CBSMsg1Lists = template.getCAANMsgList(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST);
			// 申込明細番号
			CAANMsg ekk0011D020CBSMsg1List = ekk0011D020CBSMsg1Lists[0];
			parentMap.put(EKK0011D020CBSMsg1List.MSKM_DTL_NO, ekk0011D020CBSMsg1List.getObject(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		}
		else 
		{
			template.setNull(EKK0011D020CBSMsg1List.MSKM_DTL_NO);
		}

		// 更新年月日時分秒
		if (template != null && !template.isNull(EKK0011D020CBSMsg.UPD_DTM))
		{
			parentMap.put(EKK0011D020CBSMsg.UPD_DTM, template.getObject(EKK0011D020CBSMsg.UPD_DTM));
		}
		else 
		{
			template.setNull(EKK0011D020CBSMsg.UPD_DTM);
		}
		
		param.setData(EKK0011D020_MAP_KEY, parentMap);
		// エラー情報の設定
		editErrorInfoEKK0011D020(param, templates, (Integer)returnCode, inMap);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(returnCode.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", returnCode.toString(), status);
		}
	}


	/**
	 * 申込内容承認登録のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKK0011D020(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, HashMap inMap)
			throws RequestParameterException
	{
		
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0011D020CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}

		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", 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)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		if (!template.isNull(EKK0011D020CBSMsg.SYSID_ERR))
		{
			if (!inMap.containsKey("sysid_err"))
			{
				inMap.put("sysid_err", template.getString(EKK0011D020CBSMsg.SYSID_ERR));
			}
		}

		if (!template.isNull(EKK0011D020CBSMsg.MSKM_SBT_CD_ERR))
		{
			if (!inMap.containsKey("mskm_sbt_cd_err"))
			{
				inMap.put("mskm_sbt_cd_err", template.getString(EKK0011D020CBSMsg.MSKM_SBT_CD_ERR));
			}
		}

		if (!template.isNull(EKK0011D020CBSMsg.MSKMSHO_ARIV_YMD_ERR))
		{
			if (!inMap.containsKey("mskmsho_ariv_ymd_err"))
			{
				inMap.put("mskmsho_ariv_ymd_err", template.getString(EKK0011D020CBSMsg.MSKMSHO_ARIV_YMD_ERR));
			}
		}

		if (!template.isNull(EKK0011D020CBSMsg.MSKM_UK_DTM_ERR))
		{
			if (!inMap.containsKey("mskm_uk_dtm_err"))
			{
				inMap.put("mskm_uk_dtm_err", template.getString(EKK0011D020CBSMsg.MSKM_UK_DTM_ERR));
			}
		}

		if (!template.isNull(EKK0011D020CBSMsg.MSKM_UK_TNT_USER_ID_ERR))
		{
			if (!inMap.containsKey("mskm_uk_tnt_user_id_err"))
			{
				inMap.put("mskm_uk_tnt_user_id_err", template.getString(EKK0011D020CBSMsg.MSKM_UK_TNT_USER_ID_ERR));
			}
		}

		if (!template.isNull(EKK0011D020CBSMsg.MSKM_YMD_ERR))
		{
			if (!inMap.containsKey("mskm_ymd_err"))
			{
				inMap.put("mskm_ymd_err", template.getString(EKK0011D020CBSMsg.MSKM_YMD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.TTL_BUSINESS_CENTER_UK_NO_ERR))
		{
			if (!inMap.containsKey("ttl_business_center_uk_no_err"))
			{
				inMap.put("ttl_business_center_uk_no_err", template.getString(EKK0011D020CBSMsg.TTL_BUSINESS_CENTER_UK_NO_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.TTL_BUSINESS_MSKM_OPT_CD_ERR))
		{
			if (!inMap.containsKey("ttl_business_mskm_opt_cd_err"))
			{
				inMap.put("ttl_business_mskm_opt_cd_err", template.getString(EKK0011D020CBSMsg.TTL_BUSINESS_MSKM_OPT_CD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.MSKM_RRKS_TELNO_ERR))
		{
			if (!inMap.containsKey("mskm_rrks_telno_err"))
			{
				inMap.put("mskm_rrks_telno_err", template.getString(EKK0011D020CBSMsg.MSKM_RRKS_TELNO_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.MSKM_JSSIS_SBT_CD_ERR))
		{
			if (!inMap.containsKey("mskm_jssis_sbt_cd_err"))
			{
				inMap.put("mskm_jssis_sbt_cd_err", template.getString(EKK0011D020CBSMsg.MSKM_JSSIS_SBT_CD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.CUST_YOBO_JIKO_ERR))
		{
			if (!inMap.containsKey("cust_yobo_jiko_err"))
			{
				inMap.put("cust_yobo_jiko_err", template.getString(EKK0011D020CBSMsg.CUST_YOBO_JIKO_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.TEL_RRK_KIBOD_SBT_CD_ERR))
		{
			if (!inMap.containsKey("tel_rrk_kibod_sbt_cd_err"))
			{
				inMap.put("tel_rrk_kibod_sbt_cd_err", template.getString(EKK0011D020CBSMsg.TEL_RRK_KIBOD_SBT_CD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.TEL_RRK_KIBO_TIME_CD_ERR))
		{
			if (!inMap.containsKey("tel_rrk_kibo_time_cd_err"))
			{
				inMap.put("tel_rrk_kibo_time_cd_err", template.getString(EKK0011D020CBSMsg.TEL_RRK_KIBO_TIME_CD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.TAKCHO_KIBOD_SBT_CD_ERR))
		{
			if (!inMap.containsKey("takcho_kibod_sbt_cd_err"))
			{
				inMap.put("takcho_kibod_sbt_cd_err", template.getString(EKK0011D020CBSMsg.TAKCHO_KIBOD_SBT_CD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.TAKCHO_KIBO_TIME_CD_ERR))
		{
			if (!inMap.containsKey("takcho_kibo_time_cd_err"))
			{
				inMap.put("takcho_kibo_time_cd_err", template.getString(EKK0011D020CBSMsg.TAKCHO_KIBO_TIME_CD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.KARI_MSKM_FLG_ERR))
		{
			if (!inMap.containsKey("kari_mskm_flg_err"))
			{
				inMap.put("kari_mskm_flg_err", template.getString(EKK0011D020CBSMsg.KARI_MSKM_FLG_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.REFERER_ERR))
		{
			if (!inMap.containsKey("referer_err"))
			{
				inMap.put("referer_err", template.getString(EKK0011D020CBSMsg.REFERER_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM_ERR))
		{
			if (!inMap.containsKey("kepco_custinfo_juju_doi_um_err"))
			{
				inMap.put("kepco_custinfo_juju_doi_um_err", template.getString(EKK0011D020CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_YH_ERR))
		{
			if (!inMap.containsKey("shosa_bf_rrk_jiko_yh_err"))
			{
				inMap.put("shosa_bf_rrk_jiko_yh_err", template.getString(EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_YH_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_ERR))
		{
			if (!inMap.containsKey("shosa_bf_rrk_jiko_err"))
			{
				inMap.put("shosa_bf_rrk_jiko_err", template.getString(EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.USE_SVC_KEIZK_SBT_CD_ERR))
		{
			if (!inMap.containsKey("use_svc_keizk_sbt_cd_err"))
			{
				inMap.put("use_svc_keizk_sbt_cd_err", template.getString(EKK0011D020CBSMsg.USE_SVC_KEIZK_SBT_CD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD_ERR))
		{
			if (!inMap.containsKey("consmbsn_mskm_stat_skbt_cd_err"))
			{
				inMap.put("consmbsn_mskm_stat_skbt_cd_err", template.getString(EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD_ERR))
		{
			if (!inMap.containsKey("uk_tntsha_skbt_cd_err"))
			{
				inMap.put("uk_tntsha_skbt_cd_err", template.getString(EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO_ERR))
		{
			if (!inMap.containsKey("koji_req_info_rrk_jiko_err"))
			{
				inMap.put("koji_req_info_rrk_jiko_err", template.getString(EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD_ERR))
		{
			if (!inMap.containsKey("mskm_route_skbt_cd_err"))
			{
				inMap.put("mskm_route_skbt_cd_err", template.getString(EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.AGNT_MSKM_TRTG_UM_ERR))
		{
			if (!inMap.containsKey("agnt_mskm_trtg_um_err"))
			{
				inMap.put("agnt_mskm_trtg_um_err", template.getString(EKK0011D020CBSMsg.AGNT_MSKM_TRTG_UM_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.IDO_DIV_ERR))
		{
			if (!inMap.containsKey("ido_div_err"))
			{
				inMap.put("ido_div_err", template.getString(EKK0011D020CBSMsg.IDO_DIV_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.AGNT_MKM_UK_EOSTF_USER_ID_ERR))
		{
			if (!inMap.containsKey("agnt_mkm_uk_eostf_user_id_err"))
			{
				inMap.put("agnt_mkm_uk_eostf_user_id_err", template.getString(EKK0011D020CBSMsg.AGNT_MKM_UK_EOSTF_USER_ID_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.AGNT_MKM_UK_RHSTF_KANA_SEI_ERR))
		{
			if (!inMap.containsKey("agnt_mkm_uk_rhstf_kana_sei_err"))
			{
				inMap.put("agnt_mkm_uk_rhstf_kana_sei_err", template.getString(EKK0011D020CBSMsg.AGNT_MKM_UK_RHSTF_KANA_SEI_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.EOELEC_DOJI_MSKM_ISHI_UM_ERR))
		{
			if (!inMap.containsKey("eoelec_doji_mskm_ishi_um_err"))
			{
				inMap.put("eoelec_doji_mskm_ishi_um_err", template.getString(EKK0011D020CBSMsg.EOELEC_DOJI_MSKM_ISHI_UM_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.SET_WARI_MKM_SKBT_DIV_ERR))
		{
			if (!inMap.containsKey("set_wari_mkm_skbt_div_err"))
			{
				inMap.put("set_wari_mkm_skbt_div_err", template.getString(EKK0011D020CBSMsg.SET_WARI_MKM_SKBT_DIV_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.SET_WARI_MKM_SKBT_NO_ERR))
		{
			if (!inMap.containsKey("set_wari_mkm_skbt_no_err"))
			{
				inMap.put("set_wari_mkm_skbt_no_err", template.getString(EKK0011D020CBSMsg.SET_WARI_MKM_SKBT_NO_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.TEGAK_SVC_MSKM_KIKI_ERR))
		{
			if (!inMap.containsKey("tegak_svc_mskm_kiki_err"))
			{
				inMap.put("tegak_svc_mskm_kiki_err", template.getString(EKK0011D020CBSMsg.TEGAK_SVC_MSKM_KIKI_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.SKBT_KEY_ERR))
		{
			if (!inMap.containsKey("skbt_key_err"))
			{
				inMap.put("skbt_key_err", template.getString(EKK0011D020CBSMsg.SKBT_KEY_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.ITENM_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("itenm_svc_kei_no_err"))
			{
				inMap.put("itenm_svc_kei_no_err", template.getString(EKK0011D020CBSMsg.ITENM_SVC_KEI_NO_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.MSKM_NYO_SHONIN_YMD_ERR))
		{
			if (!inMap.containsKey("mskm_nyo_shonin_ymd_err"))
			{
				inMap.put("mskm_nyo_shonin_ymd_err", template.getString(EKK0011D020CBSMsg.MSKM_NYO_SHONIN_YMD_ERR));
			}
		}
		if (!template.isNull(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST_ERR))
		{
			if (!inMap.containsKey("EKK0011D020CBSMsg1List_err"))
			{
				inMap.put("EKK0011D020CBSMsg1List_err", template.getString(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST_ERR));
			}
		}
		
		return param;
	}

	/**
	 * オプションサービス契約解約の上りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInMsgEKK0351C240(Map<?, ?> result, IRequestParameterReadWrite param, HashMap<String, Object> updDtm) throws RequestParameterException
	{
		CAANMsg template = null;
		
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		Object operateDate = JCCBPCommon.getOpeDate(null);
		Object operateDateTime = JCCBPCommon.getOpeDateTimeStamp(null);
		HashMap<String, Object> ekk0351A010Map = (HashMap<String, Object>)param.getData(EKK0351A010_MAP_KEY);
		HashMap<String, Object> ekk0011D020Map = (HashMap<String, Object>)param.getData(EKK0011D020_MAP_KEY);
		
		template = new CAANMsg(EKK0351C240CBSMsg.class.getName());
		// テンプレートID
		template.set(EKK0351C240CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0351C240);
		// 機能コード（デフォルト：１）
		template.set(EKK0351C240CBSMsg.FUNC_CODE, "1");
		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// オプションサービス契約番号
		template.set(EKK0351C240CBSMsg.OP_SVC_KEI_NO, ekk0351A010Map.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		// 申込明細番号
		template.set(EKK0351C240CBSMsg.MSKM_DTL_NO, ekk0011D020Map.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// 予約適用開始希望年月日
		template.set(EKK0351C240CBSMsg.RSV_TSTA_KIBO_YMD, operateDate);
		// サービス終了年月日
		template.setNull(EKK0351C240CBSMsg.SVC_ENDYMD);
		// サービス課金終了年月日
		template.set(EKK0351C240CBSMsg.SVC_CHRG_ENDYMD, operateDate);
		// サービス解約理由コード
		template.set(EKK0351C240CBSMsg.SVC_DLRE_CD, JKKStrConst.CD00879_TUJYO_DSL);
		// サービス解約理由メモ
		template.setNull(EKK0351C240CBSMsg.SVC_DLRE_MEMO);
		// 解約担当ユーザーID
		template.setNull(EKK0351C240CBSMsg.DSL_TNT_USER_ID);
		// 違約金発生コード
		template.setNull(EKK0351C240CBSMsg.PNLTY_HASSEI_CD);
		// 異動区分
		template.set(EKK0351C240CBSMsg.IDO_DIV, JKKStrConst.CD00576_00031);
		// 更新年月日時分秒(更新前)
		template.set(EKK0351C240CBSMsg.UPD_DTM_BF, updDtm.get("upd_dtm_bf"));
		
		return template;
	}

	/**
	 * オプションサービス契約解約の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editResultEKK0351C240(Map<?, ?> result, IRequestParameterReadWrite param, HashMap inMap, HashMap<String, Object> updDtm) throws Exception
	{
		
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		
		// リターンコード取得
		Object returnCode = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = templates[0].getInt(EKK3561B010CBSMsg.STATUS);
		
		// 更新年月日時分秒(更新前)
		if (template == null)
		{
			updDtm.put("upd_dtm_bf", "");
		}
		else
		{
			updDtm.put("upd_dtm_bf", template.getString(EKK0351C240CBSMsg.UPD_DTM));
		}
		
		// エラー情報の設定
		editErrorInfoEKK0351C240(param, templates, (Integer)returnCode, inMap);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(returnCode.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", returnCode.toString(), status);
		}
	}

	/**
	 * オプションサービス契約解約のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKK0351C240(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, HashMap inMap)
			throws RequestParameterException
	{
		
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0351C240CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}

		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", 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)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		if (!template.isNull(EKK0351C240CBSMsg.OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("op_svc_kei_no_err"))
			{
				inMap.put("op_svc_kei_no_err", template.getString(EKK0351C240CBSMsg.OP_SVC_KEI_NO_ERR));
			}
		}

		if (!template.isNull(EKK0351C240CBSMsg.SVC_ENDYMD_ERR))
		{
			if (!inMap.containsKey("svc_endymd_err"))
			{
				inMap.put("svc_endymd_err", template.getString(EKK0351C240CBSMsg.SVC_ENDYMD_ERR));
			}
		}

		if (!template.isNull(EKK0351C240CBSMsg.SVC_CHRG_ENDYMD_ERR))
		{
			if (!inMap.containsKey("svc_chrg_endymd_err"))
			{
				inMap.put("svc_chrg_endymd_err", template.getString(EKK0351C240CBSMsg.SVC_CHRG_ENDYMD_ERR));
			}
		}

		if (!template.isNull(EKK0351C240CBSMsg.SVC_DLRE_CD_ERR))
		{
			if (!inMap.containsKey("svc_dlre_cd_err"))
			{
				inMap.put("svc_dlre_cd_err", template.getString(EKK0351C240CBSMsg.SVC_DLRE_CD_ERR));
			}
		}

		if (!template.isNull(EKK0351C240CBSMsg.IDO_DIV_ERR))
		{
			if (!inMap.containsKey("ido_div_err"))
			{
				inMap.put("ido_div_err", template.getString(EKK0351C240CBSMsg.IDO_DIV_ERR));
			}
		}

		if (!template.isNull(EKK0351C240CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey("upd_dtm_bf_err"))
			{
				inMap.put("upd_dtm_bf_err", template.getString(EKK0351C240CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		
		return param;
	}

	/**
	 * オプションサービス契約解約確定の上りマッピング処理を行います。
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInMsgEKK0351C250(IRequestParameterReadWrite param, CAANMsg templateEKK0351C240, ArrayList<String> prgTkjk, HashMap<String, Object> updDtm) throws RequestParameterException
	{
		
		CAANMsg template = null;
		HashMap<String, Object> ekk0351A010Map = (HashMap<String, Object>)param.getData(EKK0351A010_MAP_KEY);
		HashMap<String, Object> ekk0011D020Map = (HashMap<String, Object>)param.getData(EKK0011D020_MAP_KEY);
		
		
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		// 運用日付
		Object operateDate = JCCBPCommon.getOpeDate(null);
		String operateDateYmd = JTUBPCommon.formatDate(operateDate.toString());
		// 運用日時
		Object operateDateTime = JCCBPCommon.getOnlineOpeDateTimeStamp(null);
		
		template = new CAANMsg(EKK0351C250CBSMsg.class.getName());
		// テンプレートID
		template.set(EKK0351C250CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0351C250);
		// 機能コード（デフォルト：１）
		template.set(EKK0351C250CBSMsg.FUNC_CODE, "1");
		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		// オプションサービス契約番号
		template.set(EKK0351C250CBSMsg.OP_SVC_KEI_NO, ekk0351A010Map.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		// 申込明細番号
		template.set(EKK0351C250CBSMsg.MSKM_DTL_NO, ekk0011D020Map.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// サービス終了年月日
		template.set(EKK0351C250CBSMsg.SVC_ENDYMD, operateDate);
		// サービス課金終了年月日
		template.set(EKK0351C250CBSMsg.SVC_CHRG_ENDYMD, operateDate);
		// サービス解約理由コード
		template.set(EKK0351C250CBSMsg.SVC_DLRE_CD, JKKStrConst.CD00879_TUJYO_DSL);
		// サービス解約理由メモ
		template.setNull(EKK0351C250CBSMsg.SVC_DLRE_MEMO);
		// 解約担当ユーザーID
		template.setNull(EKK0351C250CBSMsg.DSL_TNT_USER_ID);
		// 異動区分
		template.set(EKK0351C250CBSMsg.IDO_DIV, JKKStrConst.CD00576_00031);
		// 更新年月日時分秒(更新前)
		template.set(EKK0351C250CBSMsg.UPD_DTM_BF, updDtm.get("upd_dtm_bf"));
		
		// 進捗作成 進捗特記事項用文字列
		prgTkjk.add("　チャンネル名：" + ekk0351A010Map.get(EKK0351A010CBSMsg1List.OP_SVC_CD_NM) +"　利用終了日：" + operateDateYmd+"　課金終了日：" + operateDateYmd);
		
		return template;
	}
	
	/**
	 * オプションサービス契約解約確定の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editResultEKK0351C250(Map<?, ?> result, IRequestParameterReadWrite param, HashMap inMap, HashMap<String, Object> updDtm) throws Exception
	{
		
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		
		// リターンコード取得
		Object returnCode = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = templates[0].getInt(EKK3561B010CBSMsg.STATUS);
		
		// 更新年月日時分秒(更新前)
		if (template == null)
		{
			updDtm.put("upd_dtm_bf", "");
		}
		else
		{
			updDtm.put("upd_dtm_bf", template.getString(EKK0351C240CBSMsg.UPD_DTM));
		}
		
		// エラー情報の設定
		editErrorInfoEKK0351C250(param, templates, (Integer)returnCode, inMap);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(returnCode.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", returnCode.toString(), status);
		}
	}

	/**
	 * オプションサービス契約解約確定のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKK0351C250(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, HashMap inMap)
			throws RequestParameterException
	{
		
		CAANMsg template = templates[0];
		
		int templateStatus = template.getInt(EKK0351C250CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", 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)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		if (!template.isNull(EKK0351C250CBSMsg.OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("op_svc_kei_no_err"))
			{
				inMap.put("op_svc_kei_no_err", template.getString(EKK0351C250CBSMsg.OP_SVC_KEI_NO_ERR));
			}
		}
		
		if (!template.isNull(EKK0351C250CBSMsg.SVC_ENDYMD_ERR))
		{
			if (!inMap.containsKey("svc_endymd_err"))
			{
				inMap.put("svc_endymd_err", template.getString(EKK0351C250CBSMsg.SVC_ENDYMD_ERR));
			}
		}
		
		if (!template.isNull(EKK0351C250CBSMsg.SVC_CHRG_ENDYMD_ERR))
		{
			if (!inMap.containsKey("svc_chrg_endymd_err"))
			{
				inMap.put("svc_chrg_endymd_err", template.getString(EKK0351C250CBSMsg.SVC_CHRG_ENDYMD_ERR));
			}
		}
		
		if (!template.isNull(EKK0351C250CBSMsg.SVC_DLRE_CD_ERR))
		{
			if (!inMap.containsKey("svc_dlre_cd_err"))
			{
				inMap.put("svc_dlre_cd_err", template.getString(EKK0351C250CBSMsg.SVC_DLRE_CD_ERR));
			}
		}
		
		if (!template.isNull(EKK0351C250CBSMsg.IDO_DIV_ERR))
		{
			if (!inMap.containsKey("ido_div_err"))
			{
				inMap.put("ido_div_err", template.getString(EKK0351C250CBSMsg.IDO_DIV_ERR));
			}
		}
		
		if (!template.isNull(EKK0351C250CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey("upd_dtm_bf_err"))
			{
				inMap.put("upd_dtm_bf_err", template.getString(EKK0351C250CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		
		if (!template.isNull(EKK0351C250CBSMsg.DSLJI_CHRG_FLG_ERR))
		{
			if (!inMap.containsKey("dslji_chrg_flg_err"))
			{
				inMap.put("dslji_chrg_flg_err", template.getString(EKK0351C250CBSMsg.DSLJI_CHRG_FLG_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 * 進捗登録の上りマッピング処理を行います。
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInMsgEKK1091D010(IRequestParameterReadWrite param, CAANMsg templateEKK1091D010, HashMap inMap, ArrayList<String> prgTkjk) throws RequestParameterException
	{
		
		CAANMsg template = null;
		HashMap<String, Object> ekk0011D020Map = (HashMap<String, Object>)param.getData(EKK0011D020_MAP_KEY);
		
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		// 運用日付
		Object operateDate = JCCBPCommon.getOpeDate(null);
		// 運用日時
		Object operateDateTime = JCCBPCommon.getOpeDateTimeStamp(null);
		
		template = new CAANMsg(EKK1091D010CBSMsg.class.getName());
		// テンプレートID
		template.set(EKK1091D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1091D010);
		// 機能コード（デフォルト：１）
		template.set(EKK1091D010CBSMsg.FUNC_CODE, "1");
		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// 申込明細番号
		template.set(EKK1091D010CBSMsg.MSKM_DTL_NO, ekk0011D020Map.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// サービス契約番号
		if ((String)inMap.get("svc_kei_no") == null || "".equals((String)inMap.get("svc_kei_no")))
		{
			template.setNull(EKK1091D010CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK1091D010CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}
		// 異動区分
		template.set(EKK1091D010CBSMsg.IDO_DIV, JFUStrConst.CD00576_00031);
		// 異動年月日時分秒
		template.set(EKK1091D010CBSMsg.IDO_DTM, JFUBPCommon.getSysDateTimeStamp());
		// 進捗ステータス
		template.set(EKK1091D010CBSMsg.PRG_STAT, JFUStrConst.CD00647_5102);
		// 進捗特記事項への設定文字列
		String prgTkjkStr = "";
		String prgTkjk1 = "";
		String prgTkjk2 = "";
		
		prgTkjkStr += "オプションチャンネル情報解約";
		for(int i = 0; i < prgTkjk.size(); i++){
			prgTkjkStr += prgTkjk.get(i);
		}
		
		if (prgTkjkStr.length() > MAX_LEN_PRG_TKJK2)
		{
			prgTkjk1 = prgTkjkStr.substring(0, MAX_LEN_PRG_TKJK1);
			prgTkjk2 = prgTkjkStr.substring(MAX_LEN_PRG_TKJK1, MAX_LEN_PRG_TKJK2);
		}else if (prgTkjkStr.length() > MAX_LEN_PRG_TKJK1){
			prgTkjk1 = prgTkjkStr.substring(0, MAX_LEN_PRG_TKJK1);
			prgTkjk2 = prgTkjkStr.substring(MAX_LEN_PRG_TKJK1, prgTkjkStr.length());
		}else{
			prgTkjk1 = prgTkjkStr;
		}
		
		// 進捗特記事項1
		template.set(EKK1091D010CBSMsg.PRG_TKJK_1, prgTkjk1);
		// 進捗特記事項2
		template.set(EKK1091D010CBSMsg.PRG_TKJK_2, prgTkjk2);
		// 異動理由コード
		ArrayList idoRsnDtlList = (ArrayList)inMap.get("ido_rsn_dtl");
		CAANMsg[] list = new CAANMsg[idoRsnDtlList.size()];
		for(int i = 0 ; i < idoRsnDtlList.size() ; i++)
		{
			CAANMsg idoRsnTemp = new CAANMsg(EKK1091D010CBSMsg1List.class.getName());
			if (idoRsnDtlList == null || idoRsnDtlList.get(i) == null || ((HashMap)idoRsnDtlList.get(i)).get("ido_rsn_cd") == null || "".equals(((HashMap)idoRsnDtlList.get(i)).get("ido_rsn_cd"))) 
			{
				idoRsnTemp.setNull(EKK1091D010CBSMsg1List.IDO_RSN_CD);
			} 
			else 
			{
				idoRsnTemp.set(EKK1091D010CBSMsg1List.IDO_RSN_CD, ((HashMap)idoRsnDtlList.get(i)).get("ido_rsn_cd"));
			}
			list[i] = idoRsnTemp;
		}
		template.set(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST, list);
		
		return template;
	}

	/**
	 * 進捗登録の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editResultEKK1091D010(Map<?, ?> result, IRequestParameterReadWrite param, HashMap inMap) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		// リターンコード取得
		Object returnCode = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = templates[0].getInt(EKK3561B010CBSMsg.STATUS);
		
		// エラー情報の設定
		editErrorInfoEKK1091D010(param, templates, (Integer)returnCode, inMap);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(returnCode.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", returnCode.toString(), status);
		}
	}

	/**
	 * 進捗登録のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKK1091D010(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, HashMap inMap)
			throws RequestParameterException
	{
		
		CAANMsg template = templates[0];
		
		int templateStatus = template.getInt(EKK1091D010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", 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)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		if (!template.isNull(EKK1091D010CBSMsg.SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template.getString(EKK1091D010CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		
		if (!template.isNull(EKK1091D010CBSMsg.OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("op_svc_kei_no_err"))
			{
				inMap.put("op_svc_kei_no_err", template.getString(EKK1091D010CBSMsg.OP_SVC_KEI_NO_ERR));
			}
		}
		
		if (!template.isNull(EKK1091D010CBSMsg.IDO_DIV_ERR))
		{
			if (!inMap.containsKey("ido_div_err"))
			{
				inMap.put("ido_div_err", template.getString(EKK1091D010CBSMsg.IDO_DIV_ERR));
			}
		}
		
		if (!template.isNull(EKK1091D010CBSMsg.IDO_DTM_ERR))
		{
			if (!inMap.containsKey("ido_dtm_err"))
			{
				inMap.put("ido_dtm_err", template.getString(EKK1091D010CBSMsg.IDO_DTM_ERR));
			}
		}
		
		if (!inMap.containsKey("EKK1091D010CBSMsg1List") || inMap.get("EKK1091D010CBSMsg1List") == null)
		{
			inMap.put("EKK1091D010CBSMsg1List", new ArrayList());
		}
		
		if (!template.isNull(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST_ERR)) 
		{
			if (!inMap.containsKey("EKK1091D010CBSMsg1List_err")) 
			{
				inMap.put("EKK1091D010CBSMsg1List_err", template.getString(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST_ERR));
			}
		}
		
		return param;
	}

	/**
	 * 申込明細照査・後続業務依頼の上りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInMsgEKK0021C060(Map<?, ?> result, IRequestParameterReadWrite param, HashMap<String, Object> updDtm) throws RequestParameterException
	{
		CAANMsg template = null;
		HashMap<String, Object> ekk0011D020Map = (HashMap<String, Object>)param.getData(EKK0011D020_MAP_KEY);
		
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		Object operateDate = JCCBPCommon.getOpeDate(null);
		Object operateDateTime = JCCBPCommon.getOpeDateTimeStamp(null);
		
		template = new CAANMsg(EKK0021C060CBSMsg.class.getName());
		// テンプレートID
		template.set(EKK0021C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021C060);
		// 機能コード（申込明細照査・後続業務依頼：1）
		template.set(EKK0011D020CBSMsg.FUNC_CODE, "1");
		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		// 申込明細番号
		template.set(EKK0021C060CBSMsg.MSKM_DTL_NO, ekk0011D020Map.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// 後続業務依頼年月日
		template.set(EKK0021C060CBSMsg.KZKWRK_REQYMD, operateDate);
		// 更新年月日時分秒(更新前)
		template.set(EKK0021C060CBSMsg.UPD_DTM_BF, ekk0011D020Map.get(EKK0011D020CBSMsg.UPD_DTM));
		
		return template;
	}

	/**
	 * 申込明細照査・後続業務依頼の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editResultEKK0021C060(Map<?, ?> result, IRequestParameterReadWrite param, HashMap inMap, HashMap<String, Object> updDtm) throws Exception
	{
		
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		// リターンコード取得
		Object returnCode = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = templates[0].getInt(EKK3561B010CBSMsg.STATUS);
		
		// エラー情報の設定
		editErrorInfoEKK0021C060(param, templates, (Integer)returnCode, inMap);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(returnCode.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", returnCode.toString(), status);
		}
	}


	/**
	 *申込明細照査・後続業務依頼のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKK0021C060(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, HashMap inMap)
			throws RequestParameterException
	{
		
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0021C060CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}

		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", 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)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		if (!template.isNull(EKK0021C060CBSMsg.MSKM_DTL_NO_ERR))
		{
			if (!inMap.containsKey("mskm_dtl_no_err"))
			{
				inMap.put("mskm_dtl_no_err", template.getString(EKK0021C060CBSMsg.MSKM_DTL_NO_ERR));
			}
		}

		if (!template.isNull(EKK0021C060CBSMsg.MSKMSHO_NO_ERR))
		{
			if (!inMap.containsKey("mskmsho_no_err"))
			{
				inMap.put("mskmsho_no_err", template.getString(EKK0021C060CBSMsg.MSKMSHO_NO_ERR));
			}
		}

		if (!template.isNull(EKK0021C060CBSMsg.RRK_JIKO_ADD_DTM_ERR))
		{
			if (!inMap.containsKey("rrk_jiko_add_dtm_err"))
			{
				inMap.put("rrk_jiko_add_dtm_err", template.getString(EKK0021C060CBSMsg.RRK_JIKO_ADD_DTM_ERR));
			}
		}

		if (!template.isNull(EKK0021C060CBSMsg.KZKWRK_REQYMD_ERR))
		{
			if (!inMap.containsKey("kzkwrk_reqymd_err"))
			{
				inMap.put("kzkwrk_reqymd_err", template.getString(EKK0021C060CBSMsg.KZKWRK_REQYMD_ERR));
			}
		}

		if (!template.isNull(EKK0021C060CBSMsg.RRK_JIKO_ERR))
		{
			if (!inMap.containsKey("rrk_jiko_err"))
			{
				inMap.put("rrk_jiko_err", template.getString(EKK0021C060CBSMsg.RRK_JIKO_ERR));
			}
		}

		if (!template.isNull(EKK0021C060CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey("upd_dtm_bf_err"))
			{
				inMap.put("upd_dtm_bf_err", template.getString(EKK0021C060CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		if (!template.isNull(EKK0021C060CBSMsg.IDO_DIV_ERR))
		{
			if (!inMap.containsKey("ido_div_err"))
			{
				inMap.put("ido_div_err", template.getString(EKK0021C060CBSMsg.IDO_DIV_ERR));
			}
		}
		if (!template.isNull(EKK0021C060CBSMsg.TELNO_ERR))
		{
			if (!inMap.containsKey("telno_err"))
			{
				inMap.put("telno_err", template.getString(EKK0021C060CBSMsg.TELNO_ERR));
			}
		}
		if (!template.isNull(EKK0021C060CBSMsg.DAIHYO_TELNO_ERR))
		{
			if (!inMap.containsKey("daihyo_telno_err"))
			{
				inMap.put("daihyo_telno_err", template.getString(EKK0021C060CBSMsg.DAIHYO_TELNO_ERR));
			}
		}
		if (!template.isNull(EKK0021C060CBSMsg.TELNO_USE_PLACE_NO_ERR))
		{
			if (!inMap.containsKey("telno_use_place_no_err"))
			{
				inMap.put("telno_use_place_no_err", template.getString(EKK0021C060CBSMsg.TELNO_USE_PLACE_NO_ERR));
			}
		}
		if (!template.isNull(EKK0021C060CBSMsg.SIP_USER_ID_DEL_ZUMI_FLG_ERR))
		{
			if (!inMap.containsKey("sip_user_id_del_zumi_flg_err"))
			{
				inMap.put("sip_user_id_del_zumi_flg_err", template.getString(EKK0021C060CBSMsg.SIP_USER_ID_DEL_ZUMI_FLG_ERR));
			}
		}
		if (!template.isNull(EKK0021C060CBSMsg.TEL_BAS_HOST_ID_ERR))
		{
			if (!inMap.containsKey("tel_bas_host_id_err"))
			{
				inMap.put("tel_bas_host_id_err", template.getString(EKK0021C060CBSMsg.TEL_BAS_HOST_ID_ERR));
			}
		}
		if (!template.isNull(EKK0021C060CBSMsg.N_050_OP_TELNO_ERR))
		{
			if (!inMap.containsKey("n_050_op_telno_err"))
			{
				inMap.put("n_050_op_telno_err", template.getString(EKK0021C060CBSMsg.N_050_OP_TELNO_ERR));
			}
		}
		if (!template.isNull(EKK0021C060CBSMsg.KIKI_NINSHO_ID_ERR))
		{
			if (!inMap.containsKey("kiki_ninsho_id_err"))
			{
				inMap.put("kiki_ninsho_id_err", template.getString(EKK0021C060CBSMsg.KIKI_NINSHO_ID_ERR));
			}
		}
		if (!template.isNull(EKK0021C060CBSMsg.KIKI_NINSHO_ID_PWD_ERR))
		{
			if (!inMap.containsKey("kiki_ninsho_id_pwd_err"))
			{
				inMap.put("kiki_ninsho_id_pwd_err", template.getString(EKK0021C060CBSMsg.KIKI_NINSHO_ID_PWD_ERR));
			}
		}
		
		return param;
	}

	/**
	 * 異動予約一覧照会（オプションサービス契約番号）の上りマッピング処理を行います。
	 * <br>
	 * @param param
	 * @param opSvcKeiNo オプションサービス契約番号
	 * @return List<CAANMsg>
	 * @throws RequestParameterException
	 */
	private CAANMsg editInMsgEKK1681B005(IRequestParameterReadWrite param, String opSvcKeiNo) throws RequestParameterException
	{
		CAANMsg template = null;
		
		// 異動予約一覧照会用テンプレート
		template = new CAANMsg(EKK1681B005CBSMsg.class.getName());
		// テンプレートID
		template.set(EKK1681B005CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1681B005);
		// 機能コード（デフォルト：１）
		template.set(EKK1681B005CBSMsg.FUNC_CODE, "1");
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = JCCBPCommon.getOpeDate(null);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = JCCBPCommon.getOpeDateTimeStamp(null);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// ＫＥＹ＿オプションサービス契約番号
		if ("".equals(opSvcKeiNo))
		{
			template.setNull(EKK1681B005CBSMsg.KEY_OP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK1681B005CBSMsg.KEY_OP_SVC_KEI_NO, opSvcKeiNo);
		}
		// ＫＥＹ＿異動区分
		template.set(EKK1681B005CBSMsg.KEY_IDO_DIV, JKKStrConst.CD00576_00031); // オプション設定
		// 異動予約状態コード （未反映）,異動予約状態コード （予約手続中）
		String idoRsvStatCd = JKKStrConst.CD01168_IDO_RSV_STAT_CD_00 + JKKStrConst.COMMA + JKKStrConst.CD01168_IDO_RSV_STAT_CD_03;
		// ＫＥＹ＿異動予約状態コード
		template.set(EKK1681B005CBSMsg.KEY_IDO_RSV_STAT_CD, idoRsvStatCd);
		
		return template;
	}
	
	/**
	 * 異動予約一覧照会（オプションサービス契約番号）の下りマッピング処理を行います。
	 * <br>
	 * @param msgList
	 * @param param
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void editResultEKK1681B005(Map<?, ?> result, IRequestParameterReadWrite param, HashMap inMap) throws Exception
	{
		
		// SCからの戻り値からCAANMsgを取得する
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		
		// リターンコード取得
		Object returnCode = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = templates[0].getInt(EKK1681B005CBSMsg.STATUS);
		
		// エラー情報の設定
		editErrorInfoEKK1681B005(param, templates, (Integer)returnCode, inMap);
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));
		
		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(returnCode.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", returnCode.toString(), status);
		}
	}

	/**
	 * 異動予約一覧照会（オプションサービス契約番号）のエラー情報マッピング処理を行います。
	 * <br>
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoEKK1681B005(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, HashMap inMap)
			throws RequestParameterException
	{
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(EKK1681B005CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", 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)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		if (!template.isNull(EKK1681B005CBSMsg.SEARCH_ERR_FLG))
		{
			if (!inMap.containsKey("search_err_flg"))
			{
				inMap.put("search_err_flg", template.getString(EKK1681B005CBSMsg.SEARCH_ERR_FLG));
			}
		}

		if (!template.isNull(EKK1681B005CBSMsg.SEARCH_TYPE_ERR))
		{
			if (!inMap.containsKey("search_type_err"))
			{
				inMap.put("search_type_err", template.getString(EKK1681B005CBSMsg.SEARCH_TYPE_ERR));
			}
		}

		if (!template.isNull(EKK1681B005CBSMsg.MAX_SEARCH_NUM_ERR))
		{
			if (!inMap.containsKey("max_search_num_err"))
			{
				inMap.put("max_search_num_err", template.getString(EKK1681B005CBSMsg.MAX_SEARCH_NUM_ERR));
			}
		}

		if (!template.isNull(EKK1681B005CBSMsg.DISPLAY_NUM_ERR))
		{
			if (!inMap.containsKey("display_num_err"))
			{
				inMap.put("display_num_err", template.getString(EKK1681B005CBSMsg.DISPLAY_NUM_ERR));
			}
		}

		if (!template.isNull(EKK1681B005CBSMsg.DISPLAY_PAGE_NUM_ERR))
		{
			if (!inMap.containsKey("display_page_num_err"))
			{
				inMap.put("display_page_num_err", template.getString(EKK1681B005CBSMsg.DISPLAY_PAGE_NUM_ERR));
			}
		}

		if (!template.isNull(EKK1681B005CBSMsg.TOTAL_SEARCH_NUM_ERR))
		{
			if (!inMap.containsKey("total_search_num_err"))
			{
				inMap.put("total_search_num_err", template.getString(EKK1681B005CBSMsg.TOTAL_SEARCH_NUM_ERR));
			}
		}

		if (!template.isNull(EKK1681B005CBSMsg.TOTAL_PAGE_NUM_ERR))
		{
			if (!inMap.containsKey("total_page_num_err"))
			{
				inMap.put("total_page_num_err", template.getString(EKK1681B005CBSMsg.TOTAL_PAGE_NUM_ERR));
			}
		}

		if (!template.isNull(EKK1681B005CBSMsg.SEARCH_ERR_FLG_ERR))
		{
			if (!inMap.containsKey("search_err_flg_err"))
			{
				inMap.put("search_err_flg_err", template.getString(EKK1681B005CBSMsg.SEARCH_ERR_FLG_ERR));
			}
		}

		if (!template.isNull(EKK1681B005CBSMsg.KEY_OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("key_op_svc_kei_no_err"))
			{
				inMap.put("key_op_svc_kei_no_err", template.getString(EKK1681B005CBSMsg.KEY_OP_SVC_KEI_NO_ERR));
			}
		}

		if (!template.isNull(EKK1681B005CBSMsg.KEY_IDO_DIV_ERR))
		{
			if (!inMap.containsKey("key_ido_div_err"))
			{
				inMap.put("key_ido_div_err", template.getString(EKK1681B005CBSMsg.KEY_IDO_DIV_ERR));
			}
		}

		if (!template.isNull(EKK1681B005CBSMsg.KEY_IDO_RSV_STAT_CD_ERR))
		{
			if (!inMap.containsKey("key_ido_rsv_stat_cd_err"))
			{
				inMap.put("key_ido_rsv_stat_cd_err", template.getString(EKK1681B005CBSMsg.KEY_IDO_RSV_STAT_CD_ERR));
			}
		}

		
		if (!template.isNull(EKK1681B005CBSMsg.EKK1681B005CBSMSG1LIST_ERR))
		{
			if (!inMap.containsKey("EKK1681B005CBSMsg1List_err"))
			{
				inMap.put("EKK1681B005CBSMsg1List_err", template.getString(EKK1681B005CBSMsg.EKK1681B005CBSMSG1LIST_ERR));
			}
		}
		
		return param;
	}

	/**
	 * 単一CAANMsgのマッピング処理
	 * <br>
	 * @param paramMap
	 * @param template
	 * @return putParamMap
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> putParamMap(HashMap<String, Object> paramMap, CAANMsg template) throws RequestParameterException
	{
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = 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;
	}

	/**
	 * 持ちうるフィールドにNullマッピングで埋める
	 * 
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	private void fillCAANMSGNullMapping(CAANMsg msg, Object[][] contents) {

		// 要素ごとのループ
		for (int i = 0; i < contents.length; i++) {
			Object element = null;
			// キーに該当する箇所の取得
			element = contents[i][0];
			// Nullでマッピング
			msg.setNull((String) element);
		}
	}
}
