/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*	システム名		：契約管理
*	モジュール名	：JKKKnytcsUpdCC
*	ソースファイル名：JKKKnytcsUpdCC.java
*	作成者			：FJ
*	日付			：2020年02月20日
*＜機能概要＞
*	契約内容通知書更新の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v48.00.00	2020/02/20	FJ)麻生		【ANK-3639-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.IRequestParameterReadOnly;
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.ejb.cbs.cbsmsg.EKK3011C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3211A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3211C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3211D010CBSMsg;

/**
 * 契約内容通知書更新処理を行います。<p>
 * <BR>
 * @author 富士通
 */
public class JKKKnytcsUpdCC extends AbstractCommonComponent
{
	/**
	 * テンプレートID(EKK3011C010)契約内容通知書更新
	 */
	private static final String TEMPLATE_ID_EKK3011C010 = "EKK3011C010";
	
	/**
	 * テンプレートID(EKK3211A010)契約内容通知書訂正一意照会
	 */
	private static final String TEMPLATE_ID_EKK3211A010 = "EKK3211A010";

	/**
	 * テンプレートID(EKK3211C010)契約内容通知書訂正更新
	 */
	private static final String TEMPLATE_ID_EKK3211C010 = "EKK3211C010";
	
	/**
	 * テンプレートID(EKK3211D010)契約内容通知書訂正登録
	 */
	private static final String TEMPLATE_ID_EKK3211D010 = "EKK3211D010";
	
	/**
	 * 契約内容通知書の更新処理を行います。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite main(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// データ情報
		Map<String, Object> dataMap = (HashMap<String, Object>)param.getData(fixedText);
		
		// SC呼び出し部品のインスタンス生成
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ■契約内容通知書更新
		execute_EKK3011C010(handle, param, scCall, dataMap);
		
		// ■契約内容通知書訂正一意照会
		CAANMsg[] ekk3211a010list = execute_EKK3211A010(handle, param, scCall, dataMap);
		
		// 契約内容通知書訂正にレコードがなければ登録あれば更新を実施
		if (!hasRecord(ekk3211a010list))
		{
			// ■契約内容通知書訂正登録
			execute_EKK3211D010(handle, param, scCall, dataMap);
		}
		else
		{
			// ■契約内容通知書訂正更新
			execute_EKK3211C010(handle, param, scCall, dataMap);
		}
		
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param dataMap 
	 * @param templateId 
	 * @return 業務データ取得・書込用I/F
	 * @since 2011.12.05
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg(Map<?, ?> msgList, IRequestParameterReadWrite param, Map<String, Object> dataMap
			, String templateId) throws Throwable {
		
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		
		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// エラー情報の設定
		param = editErrorInfo(param, dataMap, templates, (Integer)return_code, templateId);
		
		//エラー情報のマップを取得
		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));

		/* ◇処理結果の判定*/
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = msgList.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = parentTemplate.getInt(JCMConstants.STATUS_INT_KEY);

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && 0 == status.intValue()))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			param.setData("ERROR_INFO", parentTemplate.getString("templateID"));
			throw scCallEx;
		}
		return param;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param inMap
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param templateId
	 * @return 業務データ取得・書込用I/F
	 */
	private IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, 
														Map<String, Object> inMap,
														CAANMsg[] templates,
														int returnCode,
														String templateId) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = 9000;
		// ステータス取得の振り分け
		if(TEMPLATE_ID_EKK3011C010.equals(templateId))
		{
			// 契約内容通知書更新(EKK3011C010)のステータス取得
			templateStatus = template.getInt(EKK3011C010CBSMsg.STATUS);
		}
		else if(TEMPLATE_ID_EKK3211A010.equals(templateId))
		{
			// 契約内容通知書訂正一意照会(EKK3211A010)のステータス取得
			templateStatus = template.getInt(EKK3211A010CBSMsg.STATUS);
		}
		else if(TEMPLATE_ID_EKK3211C010.equals(templateId))
		{
			// 契約内容通知書訂正更新(EKK3211C010)のステータス取得
			templateStatus = template.getInt(EKK3211C010CBSMsg.STATUS);
		}
		else if(TEMPLATE_ID_EKK3211D010.equals(templateId))
		{
			// 契約内容通知書訂正登録(EKK3211D010)のステータス取得
			templateStatus = template.getInt(EKK3211D010CBSMsg.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_ID_EKK3011C010.equals(templateId))
		{
			// 契約内容通知書更新(EKK3011C010)エラーマッピング呼出
			param = editErrorInfo_EKK3011C010(param, inMap, template);
		}
		else if(TEMPLATE_ID_EKK3211A010.equals(templateId))
		{
			// 契約内容通知書訂正一意照会(EKK3211A010)エラーマッピング呼出
			param = editErrorInfo_EKK3211A010(param, inMap, template);
		}
		else if(TEMPLATE_ID_EKK3211C010.equals(templateId))
		{
			// 契約内容通知書訂正更新(EKK3211C010)エラーマッピング呼出
			param = editErrorInfo_EKK3211C010(param, inMap, template);
		}
		else if(TEMPLATE_ID_EKK3211D010.equals(templateId))
		{
			// 契約内容通知書訂正登録(EKK3211D010)エラーマッピング呼出
			param = editErrorInfo_EKK3211D010(param, inMap, template);
		}
		return param;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書更新(EKK3011C010)
	 *<DD>契約内容通知書スキーマの更新を実行する
	 *</DL>
	 * @param handle (I) セッションハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param scCall 
	 * @param dataMap 
	 * @throws Throwable 
	 * @since 2020.02.20
	 */
	private void execute_EKK3011C010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall
			, Map<String, Object> dataMap) throws Throwable
	{
		// ◇ 上りマッピング処理
		HashMap<String, Object> paramMap = editInMsg_EKK3011C010(param, dataMap);
		
		// ◇ SC呼出実行 (契約内容通知書更新)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg(result, param, dataMap, TEMPLATE_ID_EKK3011C010);
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書訂正一意照会(EKK3211A010)
	 *<DD>契約内容通知書訂正スキーマの一意照会を実行する
	 *</DL>
	 * @param handle (I) セッションハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param scCall 
	 * @param dataMap 
	 * @return 一意照会の結果
	 * @throws Throwable 
	 * @since 2020.02.20
	 */
	private CAANMsg[] execute_EKK3211A010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall
			, Map<String, Object> dataMap) throws Throwable
	{
		CAANMsg[] ekk3211a010list = null;
		
		// ◇ 上りマッピング処理
		HashMap<String, Object> paramMap = editInMsg_EKK3211A010(param, dataMap);
		
		// ◇ SC呼出実行 (契約内容通知書更新)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg(result, param, dataMap, TEMPLATE_ID_EKK3211A010);
		
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		if (templates != null && templates.length > 0)
		{
			CAANMsg template = templates[0];
			ekk3211a010list = template.getCAANMsgList(EKK3211A010CBSMsg.EKK3211A010CBSMSG1LIST);
		}
		
		return ekk3211a010list;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書訂正更新(EKK3211C010)
	 *<DD>契約内容通知書訂正スキーマの更新を実行する
	 *</DL>
	 * @param handle (I) セッションハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param scCall 
	 * @param dataMap 
	 * @throws Throwable 
	 * @since 2020.02.20
	 */
	private void execute_EKK3211C010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall
			, Map<String, Object> dataMap) throws Throwable
	{
		// ◇ 上りマッピング処理
		HashMap<String, Object> paramMap = editInMsg_EKK3211C010(param, dataMap);
		
		// ◇ SC呼出実行 (契約内容通知書更新)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg(result, param, dataMap, TEMPLATE_ID_EKK3211C010);
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書訂正登録(EKK3211D010)
	 *<DD>契約内容通知書訂正スキーマの登録を実行する
	 *</DL>
	 * @param handle (I) セッションハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param scCall 
	 * @param dataMap 
	 * @throws Throwable 
	 * @since 2020.02.20
	 */
	private void execute_EKK3211D010(SessionHandle handle, IRequestParameterReadWrite param, ServiceComponentRequestInvoker scCall
			, Map<String, Object> dataMap) throws Throwable
	{
		// ◇ 上りマッピング処理
		HashMap<String, Object> paramMap = editInMsg_EKK3211D010(param, dataMap);
		
		// ◇ SC呼出実行 (契約内容通知書更新)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg(result, param, dataMap, TEMPLATE_ID_EKK3211D010);
	}
	
	/**
	 * 照会結果のレコード有無を取得します。
	 * 
	 * <br>
	 * @param resultArray 照会結果
	 * @return レコード有無
	 */
	private boolean hasRecord(CAANMsg[] resultArray)
	{
		
		return resultArray != null && resultArray.length > 0;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書更新(EKK3011C010)
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param dataMap 
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2020.02.20
	 */
	private HashMap<String, Object> editInMsg_EKK3011C010(IRequestParameterReadOnly param, Map<String, Object> dataMap) throws Throwable {

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* 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));

		CAANMsg template = new CAANMsg(EKK3011C010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK3011C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK3011C010);

		// 機能コード（デフォルト：１）
		template.set(EKK3011C010CBSMsg.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);
		
		// 機能コード
		if (dataMap != null) {
			template.set(EKK3011C010CBSMsg.FUNC_CODE, dataMap.get("func_code"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書番号 → 契約内容通知書更新.契約内容通知書番号
		if (dataMap == null || dataMap.get("knytcs_no") == null || "".equals(dataMap.get("knytcs_no"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_NO);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_NO, (String) dataMap.get("knytcs_no"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書交付方法コード → 契約内容通知書更新.契約内容通知書交付方法コード
		if (dataMap == null || dataMap.get("knytcs_kohu_way_cd") == null || "".equals(dataMap.get("knytcs_kohu_way_cd"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_KOHU_WAY_CD);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_KOHU_WAY_CD, (String) dataMap.get("knytcs_kohu_way_cd"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書印刷実施先コード → 契約内容通知書更新.契約内容通知書印刷実施先コード
		if (dataMap == null || dataMap.get("knytcs_print_jssi_sk_cd") == null || "".equals(dataMap.get("knytcs_print_jssi_sk_cd"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_PRINT_JSSI_SK_CD);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_PRINT_JSSI_SK_CD, (String) dataMap.get("knytcs_print_jssi_sk_cd"));
		}

		// 契約内容通知書発行更新マップ.契約成立年月日 → 契約内容通知書更新.契約成立年月日
		if (dataMap == null || dataMap.get("kei_seirt_ymd") == null || "".equals(dataMap.get("kei_seirt_ymd"))) {
			template.setNull(EKK3011C010CBSMsg.KEI_SEIRT_YMD);
		} else {
			template.set(EKK3011C010CBSMsg.KEI_SEIRT_YMD, (String) dataMap.get("kei_seirt_ymd"));
		}

		// 契約内容通知書発行更新マップ.加入御礼書同封制御コード → 契約内容通知書更新.加入御礼書同封制御コード
		if (dataMap == null || dataMap.get("kanuoreso_dofu_ctrl_cd") == null || "".equals(dataMap.get("kanuoreso_dofu_ctrl_cd"))) {
			template.setNull(EKK3011C010CBSMsg.KANUORESO_DOFU_CTRL_CD);
		} else {
			template.set(EKK3011C010CBSMsg.KANUORESO_DOFU_CTRL_CD, (String) dataMap.get("kanuoreso_dofu_ctrl_cd"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書送付先名 → 契約内容通知書更新.契約内容通知書送付先名
		if (dataMap == null || dataMap.get("knytcs_sohus_nm") == null || "".equals(dataMap.get("knytcs_sohus_nm"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_NM);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_SOHUS_NM, (String) dataMap.get("knytcs_sohus_nm"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書送付先住所コード → 契約内容通知書更新.契約内容通知書送付先住所コード
		if (dataMap == null || dataMap.get("knytcs_sohus_ad_cd") == null || "".equals(dataMap.get("knytcs_sohus_ad_cd"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_AD_CD);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_SOHUS_AD_CD, (String) dataMap.get("knytcs_sohus_ad_cd"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書送付先郵便番号 → 契約内容通知書更新.契約内容通知書送付先郵便番号
		if (dataMap == null || dataMap.get("knytcs_sohus_pcd") == null || "".equals(dataMap.get("knytcs_sohus_pcd"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_PCD);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_SOHUS_PCD, (String) dataMap.get("knytcs_sohus_pcd"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書送付先都道府県名 → 契約内容通知書更新.契約内容通知書送付先都道府県名
		if (dataMap == null || dataMap.get("knytcs_sohus_state_nm") == null || "".equals(dataMap.get("knytcs_sohus_state_nm"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_STATE_NM);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_SOHUS_STATE_NM, (String) dataMap.get("knytcs_sohus_state_nm"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書送付先市区町村名 → 契約内容通知書更新.契約内容通知書送付先市区町村名
		if (dataMap == null || dataMap.get("knytcs_sohus_city_nm") == null || "".equals(dataMap.get("knytcs_sohus_city_nm"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_CITY_NM);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_SOHUS_CITY_NM, (String) dataMap.get("knytcs_sohus_city_nm"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書送付先大字通称名 → 契約内容通知書更新.契約内容通知書送付先大字通称名
		if (dataMap == null || dataMap.get("knytcs_sohus_oaztsu_nm") == null || "".equals(dataMap.get("knytcs_sohus_oaztsu_nm"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_OAZTSU_NM);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_SOHUS_OAZTSU_NM, (String) dataMap.get("knytcs_sohus_oaztsu_nm"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書送付先字丁目名 → 契約内容通知書更新.契約内容通知書送付先字丁目名
		if (dataMap == null || dataMap.get("knytcs_sohus_azcho_nm") == null || "".equals(dataMap.get("knytcs_sohus_azcho_nm"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_AZCHO_NM);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_SOHUS_AZCHO_NM, (String) dataMap.get("knytcs_sohus_azcho_nm"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書送付先番地号 → 契約内容通知書更新.契約内容通知書送付先番地号
		if (dataMap == null || dataMap.get("knytcs_sohus_bnchigo") == null || "".equals(dataMap.get("knytcs_sohus_bnchigo"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_BNCHIGO);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_SOHUS_BNCHIGO, (String) dataMap.get("knytcs_sohus_bnchigo"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書送付先住所補記・建物名 → 契約内容通知書更新.契約内容通知書送付先住所補記・建物名
		if (dataMap == null || dataMap.get("knytcs_sohus_adrttm") == null || "".equals(dataMap.get("knytcs_sohus_adrttm"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_ADRTTM);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_SOHUS_ADRTTM, (String) dataMap.get("knytcs_sohus_adrttm"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書送付先住所補記・部屋番号 → 契約内容通知書更新.契約内容通知書送付先住所補記・部屋番号
		if (dataMap == null || dataMap.get("knytcs_sohus_adrrm") == null || "".equals(dataMap.get("knytcs_sohus_adrrm"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_ADRRM);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_SOHUS_ADRRM, (String) dataMap.get("knytcs_sohus_adrrm"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書送付先電話番号 → 契約内容通知書更新.契約内容通知書送付先電話番号
		if (dataMap == null || dataMap.get("knytcs_sohus_telno") == null || "".equals(dataMap.get("knytcs_sohus_telno"))) {
			template.setNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_TELNO);
		} else {
			template.set(EKK3011C010CBSMsg.KNYTCS_SOHUS_TELNO, (String) dataMap.get("knytcs_sohus_telno"));
		}

		// 契約内容通知書発行更新マップ.異動区分 → 契約内容通知書更新.異動区分
		if (dataMap == null || dataMap.get("ido_div") == null || "".equals(dataMap.get("ido_div"))) {
			template.setNull(EKK3011C010CBSMsg.IDO_DIV);
		} else {
			template.set(EKK3011C010CBSMsg.IDO_DIV, (String) dataMap.get("ido_div"));
		}

		// 契約内容通知書発行更新マップ.レター発送仕分区分 → 契約内容通知書更新.レター発送仕分区分
		if (dataMap == null || dataMap.get("letter_hasso_shiwake_div") == null || "".equals(dataMap.get("letter_hasso_shiwake_div"))) {
			template.setNull(EKK3011C010CBSMsg.LETTER_HASSO_SHIWAKE_DIV);
		} else {
			template.set(EKK3011C010CBSMsg.LETTER_HASSO_SHIWAKE_DIV, (String) dataMap.get("letter_hasso_shiwake_div"));
		}

		// 契約内容通知書発行更新マップ.更新年月日時分秒(更新前) → 契約内容通知書更新.更新年月日時分秒(更新前)
		if (dataMap == null || dataMap.get("upd_dtm_bf") == null || "".equals(dataMap.get("upd_dtm_bf"))) {
			template.setNull(EKK3011C010CBSMsg.UPD_DTM_BF);
		} else {
			template.set(EKK3011C010CBSMsg.UPD_DTM_BF, (String) dataMap.get("upd_dtm_bf"));
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書訂正一意照会(EKK3211A010)
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param dataMap 
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2020.02.20
	 */
	private HashMap<String, Object> editInMsg_EKK3211A010(IRequestParameterReadOnly param, Map<String, Object> dataMap) throws Throwable {

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* 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));

		CAANMsg template = new CAANMsg(EKK3211A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK3211A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK3211A010);

		// 機能コード（デフォルト：１）
		template.set(EKK3211A010CBSMsg.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);

		// 契約内容通知書発行更新マップ.契約内容通知書番号 → 契約内容通知書訂正一意照会.ＫＥＹ＿契約内容通知書番号
		if (dataMap == null || dataMap.get("knytcs_no") == null || "".equals(dataMap.get("knytcs_no"))) {
			template.setNull(EKK3211A010CBSMsg.KEY_KNYTCS_NO);
		} else {
			template.set(EKK3211A010CBSMsg.KEY_KNYTCS_NO, (String) dataMap.get("knytcs_no"));
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書訂正更新(EKK3211C010)
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param dataMap 
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2020.02.20
	 */
	private HashMap<String, Object> editInMsg_EKK3211C010(IRequestParameterReadOnly param, Map<String, Object> dataMap) throws Throwable {

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* 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));

		CAANMsg template = new CAANMsg(EKK3211C010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK3211C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK3211C010);

		// 機能コード（デフォルト：１）
		template.set(EKK3211C010CBSMsg.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);
		
		// 機能コード
		if (dataMap != null) {
			template.set(EKK3211C010CBSMsg.FUNC_CODE, dataMap.get("func_code"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書番号 → 契約内容通知書訂正更新.契約内容通知書番号
		if (dataMap == null || dataMap.get("knytcs_no") == null || "".equals(dataMap.get("knytcs_no"))) {
			template.setNull(EKK3211C010CBSMsg.KNYTCS_NO);
		} else {
			template.set(EKK3211C010CBSMsg.KNYTCS_NO, (String) dataMap.get("knytcs_no"));
		}

		// 契約内容通知書発行更新マップ.お客さま_お客さま名 → 契約内容通知書訂正更新.お客様欄お客様名
		if (dataMap == null || dataMap.get("cust_cust_nm") == null || "".equals(dataMap.get("cust_cust_nm"))) {
			template.setNull(EKK3211C010CBSMsg.CUST_RAN_CUST_NM);
		} else {
			template.set(EKK3211C010CBSMsg.CUST_RAN_CUST_NM, (String) dataMap.get("cust_cust_nm"));
		}

		// 契約内容通知書発行更新マップ.お客さま_住所 → 契約内容通知書訂正更新.お客様欄住所
		if (dataMap == null || dataMap.get("cust_keisha_ad") == null || "".equals(dataMap.get("cust_keisha_ad"))) {
			template.setNull(EKK3211C010CBSMsg.CUST_RAN_AD);
		} else {
			template.set(EKK3211C010CBSMsg.CUST_RAN_AD, (String) dataMap.get("cust_keisha_ad"));
		}

		// 契約内容通知書発行更新マップ.利用場所_住所 → 契約内容通知書訂正更新.利用場所住所
		if (dataMap == null || dataMap.get("ryobsy_ad") == null || "".equals(dataMap.get("ryobsy_ad"))) {
			template.setNull(EKK3211C010CBSMsg.UEPCAD);
		} else {
			template.set(EKK3211C010CBSMsg.UEPCAD, (String) dataMap.get("ryobsy_ad"));
		}

		// 契約内容通知書発行更新マップ.ネット_オプションサービス → 契約内容通知書訂正更新.ネット欄オプションサービス
		if (dataMap == null || dataMap.get("net_op_svc") == null || "".equals(dataMap.get("net_op_svc"))) {
			template.setNull(EKK3211C010CBSMsg.NET_RAN_OP_SVC);
		} else {
			template.set(EKK3211C010CBSMsg.NET_RAN_OP_SVC, (String) dataMap.get("net_op_svc"));
		}

		// 契約内容通知書発行更新マップ.ネット_適用キャンペーン → 契約内容通知書訂正更新.ネット欄適用キャンペーン
		if (dataMap == null || dataMap.get("net_aply_cp") == null || "".equals(dataMap.get("net_aply_cp"))) {
			template.setNull(EKK3211C010CBSMsg.NET_RAN_APLY_CMP);
		} else {
			template.set(EKK3211C010CBSMsg.NET_RAN_APLY_CMP, (String) dataMap.get("net_aply_cp"));
		}

		// 契約内容通知書発行更新マップ.ネット_契約内容変更・解除等に関する条項 → 契約内容通知書訂正更新.ネット欄契約内容変更関連条項
		if (dataMap == null || dataMap.get("net_knyhen_can") == null || "".equals(dataMap.get("net_knyhen_can"))) {
			template.setNull(EKK3211C010CBSMsg.NET_RAN_KNYO_CHG_KNRN_JKO);
		} else {
			template.set(EKK3211C010CBSMsg.NET_RAN_KNYO_CHG_KNRN_JKO, (String) dataMap.get("net_knyhen_can"));
		}

		// 契約内容通知書発行更新マップ.電話_適用キャンペーン → 契約内容通知書訂正更新.電話欄適用キャンペーン
		if (dataMap == null || dataMap.get("tel_aply_cp") == null || "".equals(dataMap.get("tel_aply_cp"))) {
			template.setNull(EKK3211C010CBSMsg.TEL_RAN_APLY_CMP);
		} else {
			template.set(EKK3211C010CBSMsg.TEL_RAN_APLY_CMP, (String) dataMap.get("tel_aply_cp"));
		}

		// 契約内容通知書発行更新マップ.電話1_オプションサービス → 契約内容通知書訂正更新.電話1欄オプションサービス
		if (dataMap == null || dataMap.get("tel1_op_svc") == null || "".equals(dataMap.get("tel1_op_svc"))) {
			template.setNull(EKK3211C010CBSMsg.TEL_1_RAN_OP_SVC);
		} else {
			template.set(EKK3211C010CBSMsg.TEL_1_RAN_OP_SVC, (String) dataMap.get("tel1_op_svc"));
		}

		// 契約内容通知書発行更新マップ.電話2_オプションサービス → 契約内容通知書訂正更新.電話2欄オプションサービス
		if (dataMap == null || dataMap.get("tel2_op_svc") == null || "".equals(dataMap.get("tel2_op_svc"))) {
			template.setNull(EKK3211C010CBSMsg.TEL_2_RAN_OP_SVC);
		} else {
			template.set(EKK3211C010CBSMsg.TEL_2_RAN_OP_SVC, (String) dataMap.get("tel2_op_svc"));
		}

		// 契約内容通知書発行更新マップ.テレビ_適用キャンペーン → 契約内容通知書訂正更新.テレビ欄適用キャンペーン
		if (dataMap == null || dataMap.get("tv_aply_cp") == null || "".equals(dataMap.get("tv_aply_cp"))) {
			template.setNull(EKK3211C010CBSMsg.TV_RAN_APLY_CMP);
		} else {
			template.set(EKK3211C010CBSMsg.TV_RAN_APLY_CMP, (String) dataMap.get("tv_aply_cp"));
		}

		// 契約内容通知書発行更新マップ.テレビ_オプションサービス → 契約内容通知書訂正更新.テレビ欄オプションサービス
		if (dataMap == null || dataMap.get("tv_op_svc") == null || "".equals(dataMap.get("tv_op_svc"))) {
			template.setNull(EKK3211C010CBSMsg.TV_RAN_OP_SVC);
		} else {
			template.set(EKK3211C010CBSMsg.TV_RAN_OP_SVC, (String) dataMap.get("tv_op_svc"));
		}

		// 契約内容通知書発行更新マップ.テレビ_契約内容変更・解除等に関する条項 → 契約内容通知書訂正更新.テレビ欄契約内容変更関連条項
		if (dataMap == null || dataMap.get("tv_kynyh_jyoko") == null || "".equals(dataMap.get("tv_kynyh_jyoko"))) {
			template.setNull(EKK3211C010CBSMsg.TV_RAN_KNYO_CHG_KNRN_JKO);
		} else {
			template.set(EKK3211C010CBSMsg.TV_RAN_KNYO_CHG_KNRN_JKO, (String) dataMap.get("tv_kynyh_jyoko"));
		}

		// 契約内容通知書発行更新マップ.ネット_料金_割引サービス_詳細 → 契約内容通知書訂正更新.ネット欄割引サービス詳細
		if (dataMap == null || dataMap.get("net_prc_wribsvc_dtl") == null || "".equals(dataMap.get("net_prc_wribsvc_dtl"))) {
			template.setNull(EKK3211C010CBSMsg.NET_RAN_WRIB_SVC_DTL);
		} else {
			template.set(EKK3211C010CBSMsg.NET_RAN_WRIB_SVC_DTL, (String) dataMap.get("net_prc_wribsvc_dtl"));
		}

		// 契約内容通知書発行更新マップ.ネット_料金_キャンペーン_詳細 → 契約内容通知書訂正更新.ネット欄キャンペーン詳細
		if (dataMap == null || dataMap.get("net_prc_cp_dtl") == null || "".equals(dataMap.get("net_prc_cp_dtl"))) {
			template.setNull(EKK3211C010CBSMsg.NET_RAN_CMP_DTL);
		} else {
			template.set(EKK3211C010CBSMsg.NET_RAN_CMP_DTL, (String) dataMap.get("net_prc_cp_dtl"));
		}

		// 契約内容通知書発行更新マップ.電話_料金_割引サービス_詳細 → 契約内容通知書訂正更新.電話欄割引サービス詳細
		if (dataMap == null || dataMap.get("tel_prc_wribsvc_dtl") == null || "".equals(dataMap.get("tel_prc_wribsvc_dtl"))) {
			template.setNull(EKK3211C010CBSMsg.TEL_RAN_WRIB_SVC_DTL);
		} else {
			template.set(EKK3211C010CBSMsg.TEL_RAN_WRIB_SVC_DTL, (String) dataMap.get("tel_prc_wribsvc_dtl"));
		}

		// 契約内容通知書発行更新マップ.電話_料金_キャンペーン_詳細 → 契約内容通知書訂正更新.電話欄キャンペーン詳細
		if (dataMap == null || dataMap.get("tel_prc_cp_dtl") == null || "".equals(dataMap.get("tel_prc_cp_dtl"))) {
			template.setNull(EKK3211C010CBSMsg.TEL_RAN_CMP_DTL);
		} else {
			template.set(EKK3211C010CBSMsg.TEL_RAN_CMP_DTL, (String) dataMap.get("tel_prc_cp_dtl"));
		}

		// 契約内容通知書発行更新マップ.テレビ_料金_割引サービス_詳細 → 契約内容通知書訂正更新.テレビ欄割引サービス詳細
		if (dataMap == null || dataMap.get("tv_prc_wribsvc_dtl") == null || "".equals(dataMap.get("tv_prc_wribsvc_dtl"))) {
			template.setNull(EKK3211C010CBSMsg.TV_RAN_WRIB_SVC_DTL);
		} else {
			template.set(EKK3211C010CBSMsg.TV_RAN_WRIB_SVC_DTL, (String) dataMap.get("tv_prc_wribsvc_dtl"));
		}

		// 契約内容通知書発行更新マップ.テレビ_料金_キャンペーン_詳細 → 契約内容通知書訂正更新.テレビ欄キャンペーン詳細
		if (dataMap == null || dataMap.get("tv_prc_cp_dtl") == null || "".equals(dataMap.get("tv_prc_cp_dtl"))) {
			template.setNull(EKK3211C010CBSMsg.TV_RAN_CMP_DTL);
		} else {
			template.set(EKK3211C010CBSMsg.TV_RAN_CMP_DTL, (String) dataMap.get("tv_prc_cp_dtl"));
		}

		// 契約内容通知書発行更新マップ.訂正更新年月日時分秒（更新前） → 契約内容通知書訂正更新.更新年月日時分秒(更新前)
		if (dataMap == null || dataMap.get("teise_upd_dtm_bf") == null || "".equals(dataMap.get("teise_upd_dtm_bf"))) {
			template.setNull(EKK3211C010CBSMsg.UPD_DTM_BF);
		} else {
			template.set(EKK3211C010CBSMsg.UPD_DTM_BF, (String) dataMap.get("teise_upd_dtm_bf"));
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書訂正登録(EKK3211D010)
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param dataMap 
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2020.02.20
	 */
	private HashMap<String, Object> editInMsg_EKK3211D010(IRequestParameterReadOnly param, Map<String, Object> dataMap) throws Throwable {

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		/* 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));

		CAANMsg template = new CAANMsg(EKK3211D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK3211D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK3211D010);

		// 機能コード（デフォルト：１）
		template.set(EKK3211D010CBSMsg.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);
		
		// 機能コード
		if (dataMap != null) {
			template.set(EKK3211D010CBSMsg.FUNC_CODE, dataMap.get("func_code"));
		}

		// 契約内容通知書発行更新マップ.契約内容通知書番号 → 契約内容通知書訂正登録.契約内容通知書番号
		if (dataMap == null || dataMap.get("knytcs_no") == null || "".equals(dataMap.get("knytcs_no"))) {
			template.setNull(EKK3211D010CBSMsg.KNYTCS_NO);
		} else {
			template.set(EKK3211D010CBSMsg.KNYTCS_NO, (String) dataMap.get("knytcs_no"));
		}

		// 契約内容通知書発行更新マップ.お客さま_お客さま名 → 契約内容通知書訂正登録.お客様欄お客様名
		if (dataMap == null || dataMap.get("cust_cust_nm") == null || "".equals(dataMap.get("cust_cust_nm"))) {
			template.setNull(EKK3211D010CBSMsg.CUST_RAN_CUST_NM);
		} else {
			template.set(EKK3211D010CBSMsg.CUST_RAN_CUST_NM, (String) dataMap.get("cust_cust_nm"));
		}

		// 契約内容通知書発行更新マップ.お客さま_住所 → 契約内容通知書訂正登録.お客様欄住所
		if (dataMap == null || dataMap.get("cust_keisha_ad") == null || "".equals(dataMap.get("cust_keisha_ad"))) {
			template.setNull(EKK3211D010CBSMsg.CUST_RAN_AD);
		} else {
			template.set(EKK3211D010CBSMsg.CUST_RAN_AD, (String) dataMap.get("cust_keisha_ad"));
		}

		// 契約内容通知書発行更新マップ.利用場所_住所 → 契約内容通知書訂正登録.利用場所住所
		if (dataMap == null || dataMap.get("ryobsy_ad") == null || "".equals(dataMap.get("ryobsy_ad"))) {
			template.setNull(EKK3211D010CBSMsg.UEPCAD);
		} else {
			template.set(EKK3211D010CBSMsg.UEPCAD, (String) dataMap.get("ryobsy_ad"));
		}

		// 契約内容通知書発行更新マップ.ネット_オプションサービス → 契約内容通知書訂正登録.ネット欄オプションサービス
		if (dataMap == null || dataMap.get("net_op_svc") == null || "".equals(dataMap.get("net_op_svc"))) {
			template.setNull(EKK3211D010CBSMsg.NET_RAN_OP_SVC);
		} else {
			template.set(EKK3211D010CBSMsg.NET_RAN_OP_SVC, (String) dataMap.get("net_op_svc"));
		}

		// 契約内容通知書発行更新マップ.ネット_適用キャンペーン → 契約内容通知書訂正登録.ネット欄適用キャンペーン
		if (dataMap == null || dataMap.get("net_aply_cp") == null || "".equals(dataMap.get("net_aply_cp"))) {
			template.setNull(EKK3211D010CBSMsg.NET_RAN_APLY_CMP);
		} else {
			template.set(EKK3211D010CBSMsg.NET_RAN_APLY_CMP, (String) dataMap.get("net_aply_cp"));
		}

		// 契約内容通知書発行更新マップ.ネット_契約内容変更・解除等に関する条項 → 契約内容通知書訂正登録.ネット欄契約内容変更関連条項
		if (dataMap == null || dataMap.get("net_knyhen_can") == null || "".equals(dataMap.get("net_knyhen_can"))) {
			template.setNull(EKK3211D010CBSMsg.NET_RAN_KNYO_CHG_KNRN_JKO);
		} else {
			template.set(EKK3211D010CBSMsg.NET_RAN_KNYO_CHG_KNRN_JKO, (String) dataMap.get("net_knyhen_can"));
		}

		// 契約内容通知書発行更新マップ.電話_適用キャンペーン → 契約内容通知書訂正登録.電話欄適用キャンペーン
		if (dataMap == null || dataMap.get("tel_aply_cp") == null || "".equals(dataMap.get("tel_aply_cp"))) {
			template.setNull(EKK3211D010CBSMsg.TEL_RAN_APLY_CMP);
		} else {
			template.set(EKK3211D010CBSMsg.TEL_RAN_APLY_CMP, (String) dataMap.get("tel_aply_cp"));
		}

		// 契約内容通知書発行更新マップ.電話1_オプションサービス → 契約内容通知書訂正登録.電話1欄オプションサービス
		if (dataMap == null || dataMap.get("tel1_op_svc") == null || "".equals(dataMap.get("tel1_op_svc"))) {
			template.setNull(EKK3211D010CBSMsg.TEL_1_RAN_OP_SVC);
		} else {
			template.set(EKK3211D010CBSMsg.TEL_1_RAN_OP_SVC, (String) dataMap.get("tel1_op_svc"));
		}

		// 契約内容通知書発行更新マップ.電話2_オプションサービス → 契約内容通知書訂正登録.電話2欄オプションサービス
		if (dataMap == null || dataMap.get("tel2_op_svc") == null || "".equals(dataMap.get("tel2_op_svc"))) {
			template.setNull(EKK3211D010CBSMsg.TEL_2_RAN_OP_SVC);
		} else {
			template.set(EKK3211D010CBSMsg.TEL_2_RAN_OP_SVC, (String) dataMap.get("tel2_op_svc"));
		}

		// 契約内容通知書発行更新マップ.テレビ_適用キャンペーン → 契約内容通知書訂正登録.テレビ欄適用キャンペーン
		if (dataMap == null || dataMap.get("tv_aply_cp") == null || "".equals(dataMap.get("tv_aply_cp"))) {
			template.setNull(EKK3211D010CBSMsg.TV_RAN_APLY_CMP);
		} else {
			template.set(EKK3211D010CBSMsg.TV_RAN_APLY_CMP, (String) dataMap.get("tv_aply_cp"));
		}

		// 契約内容通知書発行更新マップ.テレビ_オプションサービス → 契約内容通知書訂正登録.テレビ欄オプションサービス
		if (dataMap == null || dataMap.get("tv_op_svc") == null || "".equals(dataMap.get("tv_op_svc"))) {
			template.setNull(EKK3211D010CBSMsg.TV_RAN_OP_SVC);
		} else {
			template.set(EKK3211D010CBSMsg.TV_RAN_OP_SVC, (String) dataMap.get("tv_op_svc"));
		}

		// 契約内容通知書発行更新マップ.テレビ_契約内容変更・解除等に関する条項 → 契約内容通知書訂正登録.テレビ欄契約内容変更関連条項
		if (dataMap == null || dataMap.get("tv_kynyh_jyoko") == null || "".equals(dataMap.get("tv_kynyh_jyoko"))) {
			template.setNull(EKK3211D010CBSMsg.TV_RAN_KNYO_CHG_KNRN_JKO);
		} else {
			template.set(EKK3211D010CBSMsg.TV_RAN_KNYO_CHG_KNRN_JKO, (String) dataMap.get("tv_kynyh_jyoko"));
		}

		// 契約内容通知書発行更新マップ.ネット_料金_割引サービス_詳細 → 契約内容通知書訂正登録.ネット欄割引サービス詳細
		if (dataMap == null || dataMap.get("net_prc_wribsvc_dtl") == null || "".equals(dataMap.get("net_prc_wribsvc_dtl"))) {
			template.setNull(EKK3211D010CBSMsg.NET_RAN_WRIB_SVC_DTL);
		} else {
			template.set(EKK3211D010CBSMsg.NET_RAN_WRIB_SVC_DTL, (String) dataMap.get("net_prc_wribsvc_dtl"));
		}

		// 契約内容通知書発行更新マップ.ネット_料金_キャンペーン_詳細 → 契約内容通知書訂正登録.ネット欄キャンペーン詳細
		if (dataMap == null || dataMap.get("net_prc_cp_dtl") == null || "".equals(dataMap.get("net_prc_cp_dtl"))) {
			template.setNull(EKK3211D010CBSMsg.NET_RAN_CMP_DTL);
		} else {
			template.set(EKK3211D010CBSMsg.NET_RAN_CMP_DTL, (String) dataMap.get("net_prc_cp_dtl"));
		}

		// 契約内容通知書発行更新マップ.電話_料金_割引サービス_詳細 → 契約内容通知書訂正登録.電話欄割引サービス詳細
		if (dataMap == null || dataMap.get("tel_prc_wribsvc_dtl") == null || "".equals(dataMap.get("tel_prc_wribsvc_dtl"))) {
			template.setNull(EKK3211D010CBSMsg.TEL_RAN_WRIB_SVC_DTL);
		} else {
			template.set(EKK3211D010CBSMsg.TEL_RAN_WRIB_SVC_DTL, (String) dataMap.get("tel_prc_wribsvc_dtl"));
		}

		// 契約内容通知書発行更新マップ.電話_料金_キャンペーン_詳細 → 契約内容通知書訂正登録.電話欄キャンペーン詳細
		if (dataMap == null || dataMap.get("tel_prc_cp_dtl") == null || "".equals(dataMap.get("tel_prc_cp_dtl"))) {
			template.setNull(EKK3211D010CBSMsg.TEL_RAN_CMP_DTL);
		} else {
			template.set(EKK3211D010CBSMsg.TEL_RAN_CMP_DTL, (String) dataMap.get("tel_prc_cp_dtl"));
		}

		// 契約内容通知書発行更新マップ.テレビ_料金_割引サービス_詳細 → 契約内容通知書訂正登録.テレビ欄割引サービス詳細
		if (dataMap == null || dataMap.get("tv_prc_wribsvc_dtl") == null || "".equals(dataMap.get("tv_prc_wribsvc_dtl"))) {
			template.setNull(EKK3211D010CBSMsg.TV_RAN_WRIB_SVC_DTL);
		} else {
			template.set(EKK3211D010CBSMsg.TV_RAN_WRIB_SVC_DTL, (String) dataMap.get("tv_prc_wribsvc_dtl"));
		}

		// 契約内容通知書発行更新マップ.テレビ_料金_キャンペーン_詳細 → 契約内容通知書訂正登録.テレビ欄キャンペーン詳細
		if (dataMap == null || dataMap.get("tv_prc_cp_dtl") == null || "".equals(dataMap.get("tv_prc_cp_dtl"))) {
			template.setNull(EKK3211D010CBSMsg.TV_RAN_CMP_DTL);
		} else {
			template.set(EKK3211D010CBSMsg.TV_RAN_CMP_DTL, (String) dataMap.get("tv_prc_cp_dtl"));
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書更新(EKK3011C010)
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param inMap
	 * @param template (I) CAANMsg
	 * @param mode
	 * @return 業務データ取得・書込用I/F
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK3011C010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg template) throws RequestParameterException
	{
		
		// 契約内容通知書更新.契約内容通知書番号のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_NO_ERR)) {
			if (!inMap.containsKey("knytcs_no_err")) {
				inMap.put("knytcs_no_err", template.getString(EKK3011C010CBSMsg.KNYTCS_NO_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書交付方法コードのエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_KOHU_WAY_CD_ERR)) {
			if (!inMap.containsKey("knytcs_kohu_way_cd_err")) {
				inMap.put("knytcs_kohu_way_cd_err", template.getString(EKK3011C010CBSMsg.KNYTCS_KOHU_WAY_CD_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書印刷実施先コードのエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_PRINT_JSSI_SK_CD_ERR)) {
			if (!inMap.containsKey("knytcs_print_jssi_sk_cd_err")) {
				inMap.put("knytcs_print_jssi_sk_cd_err", template.getString(EKK3011C010CBSMsg.KNYTCS_PRINT_JSSI_SK_CD_ERR));
			}
		}
		// 契約内容通知書更新.契約成立年月日のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KEI_SEIRT_YMD_ERR)) {
			if (!inMap.containsKey("kei_seirt_ymd_err")) {
				inMap.put("kei_seirt_ymd_err", template.getString(EKK3011C010CBSMsg.KEI_SEIRT_YMD_ERR));
			}
		}
		// 契約内容通知書更新.加入御礼書同封制御コードのエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KANUORESO_DOFU_CTRL_CD_ERR)) {
			if (!inMap.containsKey("kanuoreso_dofu_ctrl_cd_err")) {
				inMap.put("kanuoreso_dofu_ctrl_cd_err", template.getString(EKK3011C010CBSMsg.KANUORESO_DOFU_CTRL_CD_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書送付先名のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_NM_ERR)) {
			if (!inMap.containsKey("knytcs_sohus_nm_err")) {
				inMap.put("knytcs_sohus_nm_err", template.getString(EKK3011C010CBSMsg.KNYTCS_SOHUS_NM_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書送付先住所コードのエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_AD_CD_ERR)) {
			if (!inMap.containsKey("knytcs_sohus_ad_cd_err")) {
				inMap.put("knytcs_sohus_ad_cd_err", template.getString(EKK3011C010CBSMsg.KNYTCS_SOHUS_AD_CD_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書送付先郵便番号のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_PCD_ERR)) {
			if (!inMap.containsKey("knytcs_sohus_pcd_err")) {
				inMap.put("knytcs_sohus_pcd_err", template.getString(EKK3011C010CBSMsg.KNYTCS_SOHUS_PCD_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書送付先都道府県名のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_STATE_NM_ERR)) {
			if (!inMap.containsKey("knytcs_sohus_state_nm_err")) {
				inMap.put("knytcs_sohus_state_nm_err", template.getString(EKK3011C010CBSMsg.KNYTCS_SOHUS_STATE_NM_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書送付先市区町村名のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_CITY_NM_ERR)) {
			if (!inMap.containsKey("knytcs_sohus_city_nm_err")) {
				inMap.put("knytcs_sohus_city_nm_err", template.getString(EKK3011C010CBSMsg.KNYTCS_SOHUS_CITY_NM_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書送付先大字通称名のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_OAZTSU_NM_ERR)) {
			if (!inMap.containsKey("knytcs_sohus_oaztsu_nm_err")) {
				inMap.put("knytcs_sohus_oaztsu_nm_err", template.getString(EKK3011C010CBSMsg.KNYTCS_SOHUS_OAZTSU_NM_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書送付先字丁目名のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_AZCHO_NM_ERR)) {
			if (!inMap.containsKey("knytcs_sohus_azcho_nm_err")) {
				inMap.put("knytcs_sohus_azcho_nm_err", template.getString(EKK3011C010CBSMsg.KNYTCS_SOHUS_AZCHO_NM_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書送付先番地号のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_BNCHIGO_ERR)) {
			if (!inMap.containsKey("knytcs_sohus_bnchigo_err")) {
				inMap.put("knytcs_sohus_bnchigo_err", template.getString(EKK3011C010CBSMsg.KNYTCS_SOHUS_BNCHIGO_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書送付先住所補記・建物名のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_ADRTTM_ERR)) {
			if (!inMap.containsKey("knytcs_sohus_adrttm_err")) {
				inMap.put("knytcs_sohus_adrttm_err", template.getString(EKK3011C010CBSMsg.KNYTCS_SOHUS_ADRTTM_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書送付先住所補記・部屋番号のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_ADRRM_ERR)) {
			if (!inMap.containsKey("knytcs_sohus_adrrm_err")) {
				inMap.put("knytcs_sohus_adrrm_err", template.getString(EKK3011C010CBSMsg.KNYTCS_SOHUS_ADRRM_ERR));
			}
		}
		// 契約内容通知書更新.契約内容通知書送付先電話番号のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.KNYTCS_SOHUS_TELNO_ERR)) {
			if (!inMap.containsKey("knytcs_sohus_telno_err")) {
				inMap.put("knytcs_sohus_telno_err", template.getString(EKK3011C010CBSMsg.KNYTCS_SOHUS_TELNO_ERR));
			}
		}
		// 契約内容通知書更新.異動区分のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK3011C010CBSMsg.IDO_DIV_ERR));
			}
		}
		// 契約内容通知書更新.レター発送仕分区分のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.LETTER_HASSO_SHIWAKE_DIV_ERR)) {
			if (!inMap.containsKey("letter_hasso_shiwake_div_err")) {
				inMap.put("letter_hasso_shiwake_div_err", template.getString(EKK3011C010CBSMsg.LETTER_HASSO_SHIWAKE_DIV_ERR));
			}
		}
		// 契約内容通知書更新.更新年月日時分秒(更新前)のエラー情報
		if (!template.isNull(EKK3011C010CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK3011C010CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書訂正一意照会(EKK3211A010)
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param inMap
	 * @param template (I) CAANMsg
	 * @param mode
	 * @return 業務データ取得・書込用I/F
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK3211A010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg template) throws RequestParameterException
	{
		
		// 契約内容通知書訂正一意照会.ＫＥＹ＿契約内容通知書番号のエラー情報
		if (!template.isNull(EKK3211A010CBSMsg.KEY_KNYTCS_NO_ERR)) {
			if (!inMap.containsKey("key_knytcs_no_err")) {
				inMap.put("key_knytcs_no_err", template.getString(EKK3211A010CBSMsg.KEY_KNYTCS_NO_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書訂正更新(EKK3211C010)
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param inMap
	 * @param template (I) CAANMsg
	 * @param mode
	 * @return 業務データ取得・書込用I/F
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK3211C010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg template) throws RequestParameterException
	{
		
		// 契約内容通知書訂正更新.契約内容通知書番号のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.KNYTCS_NO_ERR)) {
			if (!inMap.containsKey("knytcs_no_err")) {
				inMap.put("knytcs_no_err", template.getString(EKK3211C010CBSMsg.KNYTCS_NO_ERR));
			}
		}
		// 契約内容通知書訂正更新.お客様欄お客様名のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.CUST_RAN_CUST_NM_ERR)) {
			if (!inMap.containsKey("cust_ran_cust_nm_err")) {
				inMap.put("cust_ran_cust_nm_err", template.getString(EKK3211C010CBSMsg.CUST_RAN_CUST_NM_ERR));
			}
		}
		// 契約内容通知書訂正更新.お客様欄住所のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.CUST_RAN_AD_ERR)) {
			if (!inMap.containsKey("cust_ran_ad_err")) {
				inMap.put("cust_ran_ad_err", template.getString(EKK3211C010CBSMsg.CUST_RAN_AD_ERR));
			}
		}
		// 契約内容通知書訂正更新.利用場所住所のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.UEPCAD_ERR)) {
			if (!inMap.containsKey("uepcad_err")) {
				inMap.put("uepcad_err", template.getString(EKK3211C010CBSMsg.UEPCAD_ERR));
			}
		}
		// 契約内容通知書訂正更新.ネット欄オプションサービスのエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.NET_RAN_OP_SVC_ERR)) {
			if (!inMap.containsKey("net_ran_op_svc_err")) {
				inMap.put("net_ran_op_svc_err", template.getString(EKK3211C010CBSMsg.NET_RAN_OP_SVC_ERR));
			}
		}
		// 契約内容通知書訂正更新.ネット欄適用キャンペーンのエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.NET_RAN_APLY_CMP_ERR)) {
			if (!inMap.containsKey("net_ran_aply_cmp_err")) {
				inMap.put("net_ran_aply_cmp_err", template.getString(EKK3211C010CBSMsg.NET_RAN_APLY_CMP_ERR));
			}
		}
		// 契約内容通知書訂正更新.ネット欄契約内容変更関連条項のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.NET_RAN_KNYO_CHG_KNRN_JKO_ERR)) {
			if (!inMap.containsKey("net_ran_knyo_chg_knrn_jko_err")) {
				inMap.put("net_ran_knyo_chg_knrn_jko_err", template.getString(EKK3211C010CBSMsg.NET_RAN_KNYO_CHG_KNRN_JKO_ERR));
			}
		}
		// 契約内容通知書訂正更新.電話欄適用キャンペーンのエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.TEL_RAN_APLY_CMP_ERR)) {
			if (!inMap.containsKey("tel_ran_aply_cmp_err")) {
				inMap.put("tel_ran_aply_cmp_err", template.getString(EKK3211C010CBSMsg.TEL_RAN_APLY_CMP_ERR));
			}
		}
		// 契約内容通知書訂正更新.電話1欄オプションサービスのエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.TEL_1_RAN_OP_SVC_ERR)) {
			if (!inMap.containsKey("tel_1_ran_op_svc_err")) {
				inMap.put("tel_1_ran_op_svc_err", template.getString(EKK3211C010CBSMsg.TEL_1_RAN_OP_SVC_ERR));
			}
		}
		// 契約内容通知書訂正更新.電話2欄オプションサービスのエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.TEL_2_RAN_OP_SVC_ERR)) {
			if (!inMap.containsKey("tel_2_ran_op_svc_err")) {
				inMap.put("tel_2_ran_op_svc_err", template.getString(EKK3211C010CBSMsg.TEL_2_RAN_OP_SVC_ERR));
			}
		}
		// 契約内容通知書訂正更新.テレビ欄適用キャンペーンのエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.TV_RAN_APLY_CMP_ERR)) {
			if (!inMap.containsKey("tv_ran_aply_cmp_err")) {
				inMap.put("tv_ran_aply_cmp_err", template.getString(EKK3211C010CBSMsg.TV_RAN_APLY_CMP_ERR));
			}
		}
		// 契約内容通知書訂正更新.テレビ欄オプションサービスのエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.TV_RAN_OP_SVC_ERR)) {
			if (!inMap.containsKey("tv_ran_op_svc_err")) {
				inMap.put("tv_ran_op_svc_err", template.getString(EKK3211C010CBSMsg.TV_RAN_OP_SVC_ERR));
			}
		}
		// 契約内容通知書訂正更新.テレビ欄契約内容変更関連条項のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.TV_RAN_KNYO_CHG_KNRN_JKO_ERR)) {
			if (!inMap.containsKey("tv_ran_knyo_chg_knrn_jko_err")) {
				inMap.put("tv_ran_knyo_chg_knrn_jko_err", template.getString(EKK3211C010CBSMsg.TV_RAN_KNYO_CHG_KNRN_JKO_ERR));
			}
		}
		// 契約内容通知書訂正更新.ネット欄割引サービス詳細のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.NET_RAN_WRIB_SVC_DTL_ERR)) {
			if (!inMap.containsKey("net_ran_wrib_svc_dtl_err")) {
				inMap.put("net_ran_wrib_svc_dtl_err", template.getString(EKK3211C010CBSMsg.NET_RAN_WRIB_SVC_DTL_ERR));
			}
		}
		// 契約内容通知書訂正更新.ネット欄キャンペーン詳細のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.NET_RAN_CMP_DTL_ERR)) {
			if (!inMap.containsKey("net_ran_cmp_dtl_err")) {
				inMap.put("net_ran_cmp_dtl_err", template.getString(EKK3211C010CBSMsg.NET_RAN_CMP_DTL_ERR));
			}
		}
		// 契約内容通知書訂正更新.電話欄割引サービス詳細のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.TEL_RAN_WRIB_SVC_DTL_ERR)) {
			if (!inMap.containsKey("tel_ran_wrib_svc_dtl_err")) {
				inMap.put("tel_ran_wrib_svc_dtl_err", template.getString(EKK3211C010CBSMsg.TEL_RAN_WRIB_SVC_DTL_ERR));
			}
		}
		// 契約内容通知書訂正更新.電話欄キャンペーン詳細のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.TEL_RAN_CMP_DTL_ERR)) {
			if (!inMap.containsKey("tel_ran_cmp_dtl_err")) {
				inMap.put("tel_ran_cmp_dtl_err", template.getString(EKK3211C010CBSMsg.TEL_RAN_CMP_DTL_ERR));
			}
		}
		// 契約内容通知書訂正更新.テレビ欄割引サービス詳細のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.TV_RAN_WRIB_SVC_DTL_ERR)) {
			if (!inMap.containsKey("tv_ran_wrib_svc_dtl_err")) {
				inMap.put("tv_ran_wrib_svc_dtl_err", template.getString(EKK3211C010CBSMsg.TV_RAN_WRIB_SVC_DTL_ERR));
			}
		}
		// 契約内容通知書訂正更新.テレビ欄キャンペーン詳細のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.TV_RAN_CMP_DTL_ERR)) {
			if (!inMap.containsKey("tv_ran_cmp_dtl_err")) {
				inMap.put("tv_ran_cmp_dtl_err", template.getString(EKK3211C010CBSMsg.TV_RAN_CMP_DTL_ERR));
			}
		}
		// 契約内容通知書訂正更新.更新年月日時分秒(更新前)のエラー情報
		if (!template.isNull(EKK3211C010CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK3211C010CBSMsg.UPD_DTM_BF_ERR));
			}
		}
		
		return param;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:契約内容通知書訂正登録(EKK3211D010)
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param inMap
	 * @param template (I) CAANMsg
	 * @param mode
	 * @return 業務データ取得・書込用I/F
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK3211D010(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg template) throws RequestParameterException
	{
		
		// 契約内容通知書訂正登録.契約内容通知書番号のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.KNYTCS_NO_ERR)) {
			if (!inMap.containsKey("knytcs_no_err")) {
				inMap.put("knytcs_no_err", template.getString(EKK3211D010CBSMsg.KNYTCS_NO_ERR));
			}
		}
		// 契約内容通知書訂正登録.お客様欄お客様名のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.CUST_RAN_CUST_NM_ERR)) {
			if (!inMap.containsKey("cust_ran_cust_nm_err")) {
				inMap.put("cust_ran_cust_nm_err", template.getString(EKK3211D010CBSMsg.CUST_RAN_CUST_NM_ERR));
			}
		}
		// 契約内容通知書訂正登録.お客様欄住所のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.CUST_RAN_AD_ERR)) {
			if (!inMap.containsKey("cust_ran_ad_err")) {
				inMap.put("cust_ran_ad_err", template.getString(EKK3211D010CBSMsg.CUST_RAN_AD_ERR));
			}
		}
		// 契約内容通知書訂正登録.利用場所住所のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.UEPCAD_ERR)) {
			if (!inMap.containsKey("uepcad_err")) {
				inMap.put("uepcad_err", template.getString(EKK3211D010CBSMsg.UEPCAD_ERR));
			}
		}
		// 契約内容通知書訂正登録.ネット欄オプションサービスのエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.NET_RAN_OP_SVC_ERR)) {
			if (!inMap.containsKey("net_ran_op_svc_err")) {
				inMap.put("net_ran_op_svc_err", template.getString(EKK3211D010CBSMsg.NET_RAN_OP_SVC_ERR));
			}
		}
		// 契約内容通知書訂正登録.ネット欄適用キャンペーンのエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.NET_RAN_APLY_CMP_ERR)) {
			if (!inMap.containsKey("net_ran_aply_cmp_err")) {
				inMap.put("net_ran_aply_cmp_err", template.getString(EKK3211D010CBSMsg.NET_RAN_APLY_CMP_ERR));
			}
		}
		// 契約内容通知書訂正登録.ネット欄契約内容変更関連条項のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.NET_RAN_KNYO_CHG_KNRN_JKO_ERR)) {
			if (!inMap.containsKey("net_ran_knyo_chg_knrn_jko_err")) {
				inMap.put("net_ran_knyo_chg_knrn_jko_err", template.getString(EKK3211D010CBSMsg.NET_RAN_KNYO_CHG_KNRN_JKO_ERR));
			}
		}
		// 契約内容通知書訂正登録.電話欄適用キャンペーンのエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.TEL_RAN_APLY_CMP_ERR)) {
			if (!inMap.containsKey("tel_ran_aply_cmp_err")) {
				inMap.put("tel_ran_aply_cmp_err", template.getString(EKK3211D010CBSMsg.TEL_RAN_APLY_CMP_ERR));
			}
		}
		// 契約内容通知書訂正登録.電話1欄オプションサービスのエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.TEL_1_RAN_OP_SVC_ERR)) {
			if (!inMap.containsKey("tel_1_ran_op_svc_err")) {
				inMap.put("tel_1_ran_op_svc_err", template.getString(EKK3211D010CBSMsg.TEL_1_RAN_OP_SVC_ERR));
			}
		}
		// 契約内容通知書訂正登録.電話2欄オプションサービスのエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.TEL_2_RAN_OP_SVC_ERR)) {
			if (!inMap.containsKey("tel_2_ran_op_svc_err")) {
				inMap.put("tel_2_ran_op_svc_err", template.getString(EKK3211D010CBSMsg.TEL_2_RAN_OP_SVC_ERR));
			}
		}
		// 契約内容通知書訂正登録.テレビ欄適用キャンペーンのエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.TV_RAN_APLY_CMP_ERR)) {
			if (!inMap.containsKey("tv_ran_aply_cmp_err")) {
				inMap.put("tv_ran_aply_cmp_err", template.getString(EKK3211D010CBSMsg.TV_RAN_APLY_CMP_ERR));
			}
		}
		// 契約内容通知書訂正登録.テレビ欄オプションサービスのエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.TV_RAN_OP_SVC_ERR)) {
			if (!inMap.containsKey("tv_ran_op_svc_err")) {
				inMap.put("tv_ran_op_svc_err", template.getString(EKK3211D010CBSMsg.TV_RAN_OP_SVC_ERR));
			}
		}
		// 契約内容通知書訂正登録.テレビ欄契約内容変更関連条項のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.TV_RAN_KNYO_CHG_KNRN_JKO_ERR)) {
			if (!inMap.containsKey("tv_ran_knyo_chg_knrn_jko_err")) {
				inMap.put("tv_ran_knyo_chg_knrn_jko_err", template.getString(EKK3211D010CBSMsg.TV_RAN_KNYO_CHG_KNRN_JKO_ERR));
			}
		}
		// 契約内容通知書訂正登録.ネット欄割引サービス詳細のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.NET_RAN_WRIB_SVC_DTL_ERR)) {
			if (!inMap.containsKey("net_ran_wrib_svc_dtl_err")) {
				inMap.put("net_ran_wrib_svc_dtl_err", template.getString(EKK3211D010CBSMsg.NET_RAN_WRIB_SVC_DTL_ERR));
			}
		}
		// 契約内容通知書訂正登録.ネット欄キャンペーン詳細のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.NET_RAN_CMP_DTL_ERR)) {
			if (!inMap.containsKey("net_ran_cmp_dtl_err")) {
				inMap.put("net_ran_cmp_dtl_err", template.getString(EKK3211D010CBSMsg.NET_RAN_CMP_DTL_ERR));
			}
		}
		// 契約内容通知書訂正登録.電話欄割引サービス詳細のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.TEL_RAN_WRIB_SVC_DTL_ERR)) {
			if (!inMap.containsKey("tel_ran_wrib_svc_dtl_err")) {
				inMap.put("tel_ran_wrib_svc_dtl_err", template.getString(EKK3211D010CBSMsg.TEL_RAN_WRIB_SVC_DTL_ERR));
			}
		}
		// 契約内容通知書訂正登録.電話欄キャンペーン詳細のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.TEL_RAN_CMP_DTL_ERR)) {
			if (!inMap.containsKey("tel_ran_cmp_dtl_err")) {
				inMap.put("tel_ran_cmp_dtl_err", template.getString(EKK3211D010CBSMsg.TEL_RAN_CMP_DTL_ERR));
			}
		}
		// 契約内容通知書訂正登録.テレビ欄割引サービス詳細のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.TV_RAN_WRIB_SVC_DTL_ERR)) {
			if (!inMap.containsKey("tv_ran_wrib_svc_dtl_err")) {
				inMap.put("tv_ran_wrib_svc_dtl_err", template.getString(EKK3211D010CBSMsg.TV_RAN_WRIB_SVC_DTL_ERR));
			}
		}
		// 契約内容通知書訂正登録.テレビ欄キャンペーン詳細のエラー情報
		if (!template.isNull(EKK3211D010CBSMsg.TV_RAN_CMP_DTL_ERR)) {
			if (!inMap.containsKey("tv_ran_cmp_dtl_err")) {
				inMap.put("tv_ran_cmp_dtl_err", template.getString(EKK3211D010CBSMsg.TV_RAN_CMP_DTL_ERR));
			}
		}
		
		return param;
	}
	
}
