/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKGetPaywayKnrnInfoCmpCC
*   ソースファイル名：JKKGetPaywayKnrnInfoCmpCC.java
*   作成者          ：富士通
*   日付            ：2018年5月11日
*＜機能概要＞
*   支払方法関連情報照会(CMP)コモンコンポーネント部品
*＜修正履歴＞
*   バージョン   修正日       修正者      修正内容
*   v37.00.00    2018/05/28   FJ）原田    新規作成
**********************************************************************/
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.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JKKStrConst;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B012CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B012CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B042CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B042CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0491B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491B010CBSMsg1List;

/**
 * 支払方法関連情報照会(CMP)部品.
 * <br>
 * @author 富士通
 */
public class JKKGetPaywayKnrnInfoCmpCC extends AbstractCommonComponent
{
	/** リターンメッセージ */
	private static final String RETURN_MESSAGE_STRING = "RETURN_MESSAGE_";
	/** リターンメッセージ */
	private static final String RETURN_MESSAGE_FORMAT = "%1$04d";

	/** リターンコード */
	private static final String RETURN_CD_NON = "0000";

	/** 取得件数 */
	private static final int RETURN_RECORD_NON = 0;
	
	/** 比較結果 */
	private static final int COMPARE_RESULT_EQUAL = 0;
	
	/**
	 * 支払方法関連情報照会(CMP)を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite getPaywayKnrnInfoCmp(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		Map<?, ?> result = null;
		CAANMsg template = null;
		
		// ユーザデータ情報
		HashMap inMap = (HashMap)(param.getData(fixedText));
		if (inMap == null)
		{
			return param;
		}
		
		//********************************************************
		// お客様一意照会
		//********************************************************
		template = editInECK0011A010(param, fixedText); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		editRetECK0011A010(result, param, fixedText); // 下りマッピング
		if (RETURN_CD_NON != param.getControlMapData(SCControlMapKeys.RETURN_CODE))
		{ // ステータスが単項目エラー以上であれば例外をスロー
			return param;
		}

		//********************************************************
		// 請求契約番号一覧照会
		//********************************************************
		template = editInEKK0321B012(param, fixedText); // 上りマッピング
		result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
		editRetEKK0321B012(result, param, fixedText); // 下りマッピング
		if (RETURN_CD_NON != param.getControlMapData(SCControlMapKeys.RETURN_CODE))
		{ // ステータスが単項目エラー以上であれば例外をスロー
			return param;
		}
		//********************************************************
		// 繰り返し処理
		//********************************************************
		// ループカウント用変数
		int devCnt = 0;
		
		// 請求契約番号一覧照会での取得件数分繰り返し
		if (null != inMap.get("record") && "" != inMap.get("record"))
		{
			devCnt = ((ArrayList)inMap.get("record")).size();
		}

		for (int i = 0; i < devCnt; i++)
		{

			//********************************************************
			// サービス契約番号（代表）一覧照会(CMP)
			//********************************************************
			template = editInEKK0081B042(param, fixedText, i); // 上りマッピング
			result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
			editRetEKK0081B042(result, param, fixedText, i); // 下りマッピング
			if (RETURN_CD_NON != param.getControlMapData(SCControlMapKeys.RETURN_CODE))
			{ // ステータスが単項目エラー以上であれば例外をスロー
				return param;
			}

			//********************************************************
			// 請求契約情報一覧照会(CMP)
			//********************************************************
			template = editInEKK0491B010(param, fixedText, i); // 上りマッピング
			result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
			editRetEKK0491B010(result, param, fixedText, i); // 下りマッピング
			if (RETURN_CD_NON != param.getControlMapData(SCControlMapKeys.RETURN_CODE))
			{ // ステータスが単項目エラー以上であれば例外をスロー
				return param;
			}
		}

		return param;
	}
	
	/**
	 * CAANMsgに必要なデータのマッピング処理を行います。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
			throws RequestParameterException
	{
		// 0件のCAANMsg配列を返却
		HashMap param4BpChek = new HashMap();
		param4BpChek.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{});
		return param4BpChek;
	}

	/**
	 * 単一CAANMsgのマッピング処理を行います。
	 * <br>
	 * @param paramMap パラメータマップ
	 * @param template CAANMsg
	 * @return パラメータマップ
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> putParamMap(HashMap<String, Object> paramMap, CAANMsg template) throws RequestParameterException
	{
		CAANMsg[] templates = { template };
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * SCインプット共通データ設定処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param paramMap パラメータマップ
	 * @return パラメータマップ
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> setSCInputCommonData(IRequestParameterReadWrite param, HashMap<String, Object> paramMap)
			throws RequestParameterException
	{
		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		return paramMap;
	}

	/**
	 * お客様一意照会の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInECK0011A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ECK0011A010CBSMsg.class.getName());

		// テンプレートID
		template.set(ECK0011A010CBSMsg.TEMPLATEID, "ECK0011A010");

		// 機能コード（デフォルト：２）
		template.set(ECK0011A010CBSMsg.FUNC_CODE, "2");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		String operateDate = JCCBPCommon.getOpeDate(null);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();

		/* ユーザデータ情報 */
		HashMap inkMap = (HashMap)param.getData(fixedText);

		// SYSID → お客様一意照会.ＫＥＹ＿ＳＹＳＩＤ
		if (null == inkMap || null == inkMap.get("sysid") || "".equals(inkMap.get("sysid")))
		{
			template.setNull(ECK0011A010CBSMsg.KEY_SYSID);
		}
		else
		{
			template.set(ECK0011A010CBSMsg.KEY_SYSID, (String)inkMap.get("sysid"));
		}
		
		// 運用日付 → お客様一意照会.ＫＥＹ＿予約適用年月日
		template.set(ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, (String)operateDate);

		
		return template;
	}

	/**
	 * お客様一意照会の下りマッピング処理を行います。
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws Exception サービス内でエラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetECK0011A010(Map<?, ?> msgList, IRequestParameterReadWrite param, 
			String fixedText) throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコードの取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域のマップを取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) 
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (null == dataMap)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		CAANMsg[] templateArray = template.getCAANMsgList(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST);

		if (null != templateArray && 0 != templateArray.length)
		{
			for (CAANMsg childTemplate : templateArray)
			{
				// 支払方法変更督促メッセージ抑止有無 ← お客様一意照会.支払方法変更督促メッセージ抑止有無
				if (childTemplate.isNull(ECK0011A010CBSMsg1List.PAYWAY_CHG_TS_MSG_YOKSI_UM))
				{
					//支払方法変更督促メッセージ抑止有無の値がnullの場合は"0"を設定する
					dataMap.put("payway_chg_ts_msg_yoksi_um", "0");
				}
				else
				{
					dataMap.put("payway_chg_ts_msg_yoksi_um", childTemplate.getString(ECK0011A010CBSMsg1List.PAYWAY_CHG_TS_MSG_YOKSI_UM));
				}
			}
		}
		else
		{
			//お客様スキーマから値がとれない場合、支払方法変更督促メッセージ抑止有無に"0"を設定する
			dataMap.put("payway_chg_ts_msg_yoksi_um", "0");
		}

		// エラー情報の設定
		editErrInfoECK0011A010(param, template, (Integer)returnCode, fixedText);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (null == errList)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}
	
	/**
	 * 請求契約番号一覧照会(CMP)の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0321B012(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0321B012CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0321B012CBSMsg.TEMPLATEID, "EKK0321B012");

		// 機能コード（デフォルト：１）
		template.set(EKK0321B012CBSMsg.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);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();

		/* ユーザデータ情報 */
		HashMap inMap = (HashMap)param.getData(fixedText);

		// SYSID → お客様一意照会.KEY_SYSID
		if (null == inMap || null == inMap.get("sysid") || "".equals(inMap.get("sysid")))
		{
			template.setNull(EKK0321B012CBSMsg.KEY_SYSID);
		}
		else
		{
			template.set(EKK0321B012CBSMsg.KEY_SYSID, (String)inMap.get("sysid"));
		}
		
		return template;
	}

	/**
	 * 請求契約番号一覧照会(CMP)の下りマッピング処理を行います。
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws Exception サービス内でエラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0321B012(Map<?, ?> msgList, IRequestParameterReadWrite param, 
			String fixedText) throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコードの取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域のマップを取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (null == dataMap)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}
		
		ArrayList dataList = new ArrayList<HashMap<String, Object>>();
		
		CAANMsg[] templateArray = template.getCAANMsgList(EKK0321B012CBSMsg.EKK0321B012CBSMSG1LIST);

		if (null != templateArray && 0 != templateArray.length)
		{
			int i = 0;
			for (CAANMsg childTemplate : templateArray)
			{
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}

				HashMap childMap = (HashMap)dataList.get(i);
				i++;
				
				// 請求契約番号 ← 課金先.請求契約番号
				if (childTemplate.isNull(EKK0321B012CBSMsg1List.SEIKY_KEI_NO))
				{
					childMap.put("seiky_kei_no", "");
				}
				else
				{
					childMap.put("seiky_kei_no", childTemplate.getString(EKK0321B012CBSMsg1List.SEIKY_KEI_NO));
				}
			}
		}
		
		dataMap.put("record", dataList);

		// エラー情報の設定
		editErrInfoEKK0321B012(param, template, (Integer)returnCode, fixedText);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (null == errList)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}
	
	/**
	 * サービス契約番号(代表)一覧照会(CMP)の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param loopCount ループカウント
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0081B042(IRequestParameterReadWrite param, String fixedText, int loopCount) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0081B042CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0081B042CBSMsg.TEMPLATEID, "EKK0081B042");

		// 機能コード（デフォルト：１）
		template.set(EKK0081B042CBSMsg.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);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();

		/* ユーザデータ情報 */
		HashMap inMap = (HashMap)param.getData(fixedText);
		
		/* record情報の取り出し */
		ArrayList record = (ArrayList)inMap.get("record");
		String seikyKeiNo = ((HashMap)record.get(loopCount)).get("seiky_kei_no").toString();
		
		// 請求契約番号一覧照会(CMP).請求契約番号 → サービス契約番号(代表)一覧照会.ＫＥＹ＿請求契約番号
		if (null == inMap || null == seikyKeiNo || "".equals(seikyKeiNo))
		{
			template.setNull(EKK0081B042CBSMsg.KEY_SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0081B042CBSMsg.KEY_SEIKY_KEI_NO, seikyKeiNo);
		}
		
		return template;
	}

	/**
	 * サービス契約番号(代表)一覧照会(CMP)の下りマッピング処理を行います。
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param loopCount ループカウント
	 * @return リクエストパラメータ
	 * @throws Exception サービス内でエラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0081B042(Map<?, ?> msgList, IRequestParameterReadWrite param, 
			String fixedText, int loopCount) throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコードの取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域のマップを取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) 
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (null == dataMap)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}
		
		/* record情報の取り出し */
		ArrayList record = (ArrayList)dataMap.get("record");
		HashMap recordMap = (HashMap)record.get(loopCount);

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0081B042CBSMsg.EKK0081B042CBSMSG1LIST);

		if (null != templateArray && 0 != templateArray.length)
		{
			// サービス契約番号(代表) ← サービス契約番号(代表一覧照会(CMP).サービス契約番号
			if (!templateArray[0].isNull(EKK0081B042CBSMsg1List.SVC_KEI_NO))
			{
				recordMap.put("svc_kei_no_daihyo", templateArray[0].getString(EKK0081B042CBSMsg1List.SVC_KEI_NO));
			}
		}
		
		// エラー情報の設定
		editErrInfoEKK0081B042(param, template, (Integer)returnCode, fixedText);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (null == errList)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}
	
	/**
	 * 請求契約情報一覧照会(CMP)の上りマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @param loopCount ループカウント
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0491B010(IRequestParameterReadWrite param, String fixedText, int loopCount) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0491B010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0321B012CBSMsg.TEMPLATEID, "EKK0491B010");

		// 機能コード（デフォルト：１）
		template.set(EKK0491B010CBSMsg.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);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();

		/* ユーザデータ情報 */
		HashMap inMap = (HashMap)param.getData(fixedText);

		/* record情報の取り出し */
		ArrayList record = (ArrayList)inMap.get("record");
		String seikyKeiNo = ((HashMap)record.get(loopCount)).get("seiky_kei_no").toString();
		
		// 請求契約番号一覧照会(CMP).請求契約番号 → 請求契約情報一覧照会(CMP).ＫＥＹ＿請求契約番号
		if (null == inMap || null == seikyKeiNo || "".equals(seikyKeiNo))
		{
			template.setNull(EKK0491B010CBSMsg.KEY_SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0491B010CBSMsg.KEY_SEIKY_KEI_NO, seikyKeiNo);
		}
		
		return template;
	}

	/**
	 * 請求契約情報一覧照会(CMP)の下りマッピング処理を行います。
	 * <br>
	 * @param msgList メッセージリスト
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws Exception サービス内でエラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0491B010(Map<?, ?> msgList, IRequestParameterReadWrite param, 
			String fixedText, int loopCount) throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコードの取得
		Object returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 作業領域のマップを取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) 
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (null == dataMap)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}
		
		/* record情報の取り出し */
		ArrayList record = (ArrayList)dataMap.get("record");
		HashMap recordMap = (HashMap)record.get(loopCount);

		CAANMsg[] templateArray = template.getCAANMsgList(EKK0491B010CBSMsg.EKK0491B010CBSMSG1LIST);
		
		CAANMsg childTemplate = templateArray[0];
		
		if (null != templateArray && 0 != templateArray.length)
		{
			// サービス契約番号(代表) ← サービス契約番号(代表一覧照会(CMP).サービス契約番号
			if (templateArray[0].isNull(EKK0491B010CBSMsg1List.SEIKY_WAY_CD))
			{
				recordMap.put("seiky_way_cd", "");
			}
			else
			{
				recordMap.put("seiky_way_cd", childTemplate.getString(EKK0491B010CBSMsg1List.SEIKY_WAY_CD));
			}
		}
		
		// dsp_yh_flgの設定
		param = setDspYhFlg(childTemplate, param, fixedText, loopCount);

		// エラー情報の設定
		editErrInfoEKK0491B010(param, template, (Integer)returnCode, fixedText);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (null == errList)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}
	
	/**
	 * dsp_yh_flgの設定を行います。
	 * <br>
	 * @param childTemplate DBより取得したデータ
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @throws Exception サービス内でエラーが発生した場合
	 */
	private IRequestParameterReadWrite setDspYhFlg(CAANMsg childTemplate, IRequestParameterReadWrite param,
			String fixedText, int loopCount) throws Exception
	{
		// 運用月
		String operateManDate = JCCBPCommon.getOpeDate(null).substring(0, 6);
		
		/* ユーザデータ情報 */
		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (null == dataMap)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}
		/* record情報の取り出し */
		ArrayList record = (ArrayList)dataMap.get("record");
		HashMap recordMap = (HashMap)record.get(loopCount);
		
		// 請求方法コードが窓口支払いの場合
		if(JKKStrConst.SEIKY_WAY_CD_MADOGUCHI.equals(childTemplate.getString(EKK0491B010CBSMsg1List.SEIKY_WAY_CD)))
		{
			// 未来予約判定の有無
			if(!childTemplate.isNull(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV))
			{
				param = setDspYhFlgFtRsvDtm(childTemplate, param, fixedText, loopCount);
			}
			else
			{
				recordMap.put("dsp_yh_flg", "1");
				
			}
		}
		// 請求方法コードが預金口座振替の場合
		else if (JKKStrConst.SEIKY_WAY_CD_YOKIN.equals(childTemplate.getString(EKK0491B010CBSMsg1List.SEIKY_WAY_CD)))
		{
			// 口座支払い審査結果コードが申請OKの場合
			if (JKKStrConst.PAY_SKEKKA_CD_KHRI_SHINSEI_OK.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD)))
			{
				recordMap.put("dsp_yh_flg", "0");
			}
			// 口座支払い審査結果コードが申請NGの場合
			else if (JKKStrConst.PAY_SKEKKA_CD_KHRI_SHINSEI_NG.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD)))
			{
				// 未来予約判定の有無
				if(!childTemplate.isNull(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV))
				{
					param = setDspYhFlgFtRsvDtm(childTemplate, param, fixedText, loopCount);
				}
				else
				{
					recordMap.put("dsp_yh_flg", "1");
				}
			}
			// 口座支払い審査結果コードが申請NG解除の場合
			else if (JKKStrConst.PAY_SKEKKA_CD_KHRI_NG_RLS.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD)))
			{
				recordMap.put("dsp_yh_flg", "0");
			}
		}
		// 請求方法コードが郵便自動振込の場合
		else if (JKKStrConst.SEIKY_WAY_CD_YUCHO.equals(childTemplate.getString(EKK0491B010CBSMsg1List.SEIKY_WAY_CD)))
		{
			// 郵便自動振込審査結果コードが申請OKの場合
			if (JKKStrConst.PAY_SKEKKA_CD_YJHRI_SHINSEI_OK.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD)))
			{
				recordMap.put("dsp_yh_flg", "0");
			}
			// 郵便自動振込審査結果コードが申請NGの場合
			else if (JKKStrConst.PAY_SKEKKA_CD_YJHRI_SHINSEI_NG.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD)))
			{
				// 未来予約判定の有無
				if(!childTemplate.isNull(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV))
				{
					param = setDspYhFlgFtRsvDtm(childTemplate, param, fixedText, loopCount);
				} 
				else 
				{
					recordMap.put("dsp_yh_flg", "1");
				}
			}
			// 郵便自動振込審査結果コードが申請NG解除の場合
			else if (JKKStrConst.PAY_SKEKKA_CD_YJHRI_NG_RLS.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD)))
			{
				recordMap.put("dsp_yh_flg", "0");
			}
		}
		// 請求方法コードがクレジットカードの場合
		else if (JKKStrConst.SEIKY_WAY_CD_CREDIT.equals(childTemplate.getString(EKK0491B010CBSMsg1List.SEIKY_WAY_CD)))
		{
			// クレカ支払い審査結果コードが申請OKの場合
			if (JKKStrConst.PAY_SKEKKA_CD_CRECARD_SHINSEI_OK.equals(childTemplate.getString(EKK0491B010CBSMsg1List.CRECARD_PAY_SKEKKA_CD)))
			{
				// 現日時が有効期限内の場合
				if (operateManDate.compareTo(childTemplate.getString(EKK0491B010CBSMsg1List.CRECARD_YK_KIGEN)) <= COMPARE_RESULT_EQUAL)
				{
					// 無効年月に値が設定されていない場合
					if (childTemplate.isNull(EKK0491B010CBSMsg1List.CRECA_MK_YM))
					{
						recordMap.put("dsp_yh_flg", "0");
					}
					// 現日時が無効年月よりも後の場合
					else if (operateManDate.compareTo(childTemplate.getString(EKK0491B010CBSMsg1List.CRECA_MK_YM)) >= COMPARE_RESULT_EQUAL)
					{
						// 未来予約判定の有無
						if (!childTemplate.isNull(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV))
						{
							param = setDspYhFlgFtRsvDtm(childTemplate, param, fixedText, loopCount);
						}
						else
						{
							recordMap.put("dsp_yh_flg", "1");
						}
					}
					// 現日時が無効年月より前の場合
					else 
					{
						recordMap.put("dsp_yh_flg", "0");
					}
				}
				// 現日時が有効期限より後の場合
				else
				{
					// 未来予約判定の有無
					if (!childTemplate.isNull(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV))
					{
						param = setDspYhFlgFtRsvDtm(childTemplate, param, fixedText, loopCount);
					}
					else
					{
						recordMap.put("dsp_yh_flg", "1");
					}
				}
			}
			// クレカ支払い審査結果コードが申請NGの場合
			else if (JKKStrConst.PAY_SKEKKA_CD_CRECARD_SHINSEI_NG.equals(childTemplate.getString(EKK0491B010CBSMsg1List.CRECARD_PAY_SKEKKA_CD)))
			{
				// 未来予約判定の有無
				if (!childTemplate.isNull(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV))
				{
					param = setDspYhFlgFtRsvDtm(childTemplate, param, fixedText, loopCount);
				}
				else
				{
					recordMap.put("dsp_yh_flg", "1");
				}
			}
			// クレカ支払い審査結果コードが申請NG解除の場合
			else if (JKKStrConst.PAY_SKEKKA_CD_CRECARD_NG_RLS.equals(childTemplate.getString(EKK0491B010CBSMsg1List.CRECARD_PAY_SKEKKA_CD)))
			{
				// 現日時が有効期限内の場合
				if (operateManDate.compareTo(childTemplate.getString(EKK0491B010CBSMsg1List.CRECARD_YK_KIGEN)) <= COMPARE_RESULT_EQUAL)
				{
					// 無効年月に値が設定されていない場合
					if (childTemplate.isNull(EKK0491B010CBSMsg1List.CRECA_MK_YM))
					{
						recordMap.put("dsp_yh_flg", "0");
					}
					// 現日時が無効年月よりも後の場合
					else if (operateManDate.compareTo(childTemplate.getString(EKK0491B010CBSMsg1List.CRECA_MK_YM)) >= COMPARE_RESULT_EQUAL)
					{
						// 未来予約判定の有無
						if (!childTemplate.isNull(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV))
						{
							param = setDspYhFlgFtRsvDtm(childTemplate, param, fixedText, loopCount);
						}
						else
						{
							recordMap.put("dsp_yh_flg", "1");
						}
					}
					// 現日時が無効年より前の場合
					else 
					{
						recordMap.put("dsp_yh_flg", "0");
					}
				}
				// 現日時が有効期限より後の場合
				else
				{
					// 未来予約判定の有無
					if (!childTemplate.isNull(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV))
					{
						param = setDspYhFlgFtRsvDtm(childTemplate, param, fixedText, loopCount);
					}
					else
					{
						recordMap.put("dsp_yh_flg", "1");
					}
				}
			}
		}
		
		return param;
	}

	/**
	 * dsp_yh_flgの設定を行います。（未来予約判定）
	 * <br>
	 * @param childTemplate DBより取得したデータ
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザー固定文字列
	 * @throws Exception サービス内でエラーが発生した場合
	 */
	private IRequestParameterReadWrite setDspYhFlgFtRsvDtm(CAANMsg childTemplate, IRequestParameterReadWrite param
			,String fixedText, int loopCount) throws Exception
	{
		// 運用月
		String operateManDate = JCCBPCommon.getOpeDate(null).substring(0, 6);

		/* ユーザデータ情報 */
		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (null == dataMap)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}
		/* record情報の取り出し */
		ArrayList record = (ArrayList)dataMap.get("record");
		HashMap recordMap = (HashMap)record.get(loopCount);
		
		// 請求方法コードが窓口支払いの場合
		if(JKKStrConst.SEIKY_WAY_CD_MADOGUCHI.equals(childTemplate.getString(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV)))
		{
			recordMap.put("dsp_yh_flg", "1");
		}
		// 請求方法コードが預金口座振替の場合
		else if (JKKStrConst.SEIKY_WAY_CD_YOKIN.equals(childTemplate.getString(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV)))
		{
			// 口座支払い審査結果コードが申請OKの場合
			if (JKKStrConst.PAY_SKEKKA_CD_KHRI_SHINSEI_OK.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD_RSV)))
			{
				recordMap.put("dsp_yh_flg", "0");
			}
			// 口座支払い審査結果コードが申請NGの場合
			else if (JKKStrConst.PAY_SKEKKA_CD_KHRI_SHINSEI_NG.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD_RSV)))
			{
				recordMap.put("dsp_yh_flg", "1");
			}
			// 口座支払い審査結果コードが申請NG解除の場合
			else if (JKKStrConst.PAY_SKEKKA_CD_KHRI_NG_RLS.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD_RSV)))
			{
				recordMap.put("dsp_yh_flg", "0");
			}
		}
		// 請求方法コードが郵便自動振込の場合
		else if (JKKStrConst.SEIKY_WAY_CD_YUCHO.equals(childTemplate.getString(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV)))
		{
			// 郵便自動振込審査結果コードが申請OKの場合
			if (JKKStrConst.PAY_SKEKKA_CD_YJHRI_SHINSEI_OK.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD_RSV)))
			{
				recordMap.put("dsp_yh_flg", "0");
			}
			// 郵便自動振込審査結果コードが申請NGの場合
			else if (JKKStrConst.PAY_SKEKKA_CD_YJHRI_SHINSEI_NG.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD_RSV)))
			{
				recordMap.put("dsp_yh_flg", "1");
			}
			// 郵便自動振込審査結果コードが申請NG解除の場合
			else if (JKKStrConst.PAY_SKEKKA_CD_YJHRI_NG_RLS.equals(childTemplate.getString(EKK0491B010CBSMsg1List.KOZA_PAY_SKEKKA_CD_RSV)))
			{
				recordMap.put("dsp_yh_flg", "0");
			}
		}
		// 請求方法コードがクレジットカードの場合
		else if (JKKStrConst.SEIKY_WAY_CD_CREDIT.equals(childTemplate.getString(EKK0491B010CBSMsg1List.SEIKY_WAY_CD_RSV)))
		{
			// クレカ支払い審査結果コードが申請OKの場合
			if (JKKStrConst.PAY_SKEKKA_CD_CRECARD_SHINSEI_OK.equals(childTemplate.getString(EKK0491B010CBSMsg1List.CRECARD_PAY_SKEKKA_CD_RSV)))
			{
				// 現日時が有効期限内の場合
				if (operateManDate.compareTo(childTemplate.getString(EKK0491B010CBSMsg1List.CRECARD_YK_KIGEN_RSV)) <= COMPARE_RESULT_EQUAL)
				{
					// 無効年月に値が設定されていない場合
					if (childTemplate.isNull(EKK0491B010CBSMsg1List.CRECA_MK_YM_RSV))
					{
						recordMap.put("dsp_yh_flg", "0");
					}
					// 現日時が無効年月よりも前の場合
					else if (operateManDate.compareTo(childTemplate.getString(EKK0491B010CBSMsg1List.CRECA_MK_YM_RSV)) < COMPARE_RESULT_EQUAL)
					{
						recordMap.put("dsp_yh_flg", "0");
					}
					// 現日時が無効年月より後の場合
					else 
					{
						recordMap.put("dsp_yh_flg", "1");
					}
				}
				// 現日時が有効期限より後の場合
				else
				{
					recordMap.put("dsp_yh_flg", "1");
				}
			}
			// クレカ支払い審査結果コードが申請NGの場合
			else if (JKKStrConst.PAY_SKEKKA_CD_CRECARD_SHINSEI_NG.equals(childTemplate.getString(EKK0491B010CBSMsg1List.CRECARD_PAY_SKEKKA_CD_RSV)))
			{
				recordMap.put("dsp_yh_flg", "1");
			}
			// クレカ支払い審査結果コードが申請NG解除の場合
			else if (JKKStrConst.PAY_SKEKKA_CD_CRECARD_NG_RLS.equals(childTemplate.getString(EKK0491B010CBSMsg1List.CRECARD_PAY_SKEKKA_CD_RSV)))
			{
				// 現日時が有効期限内の場合
				if (operateManDate.compareTo(childTemplate.getString(EKK0491B010CBSMsg1List.CRECARD_YK_KIGEN_RSV)) <= COMPARE_RESULT_EQUAL)
				{
					// 無効年月に値が設定されていない場合
					if (childTemplate.isNull(EKK0491B010CBSMsg1List.CRECA_MK_YM_RSV))
					{
						recordMap.put("dsp_yh_flg", "0");
					}
					// 現日時が無効年月よりも前の場合
					else if (operateManDate.compareTo(childTemplate.getString(EKK0491B010CBSMsg1List.CRECA_MK_YM_RSV)) < COMPARE_RESULT_EQUAL)
					{
						recordMap.put("dsp_yh_flg", "0");
					}
					// 現日時が無効年月より後の場合
					else 
					{
						recordMap.put("dsp_yh_flg", "1");
					}
				}
				// 現日時が有効期限より後の場合
				else
				{
					recordMap.put("dsp_yh_flg", "1");
				}
			}
		}
		
		return param;
	}


	/**
	 * エラー情報のマッピング処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param templates CAANMsg配列
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
			throws RequestParameterException
	{
		// getInvokeCBSでBPチェックを行わないので、それに対応するエラーマッピングも行わない。
		return param;
	}

	/**
	 * コントロールマップエラー情報格納処理を行います。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param itemplateStatus SCの実行ステータス
	 * @param returnCode リターンコード
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite setControlMapErrInfo(IRequestParameterReadWrite param, int itemplateStatus, int returnCode)
			throws RequestParameterException
	{
		int templateStatus = itemplateStatus;
		
		if (0 != returnCode)
		{
			templateStatus = 9000;
		}
		if (null == JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, templateStatus)))
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (null == obj)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		return param;
	}

	/**
	 * お客様一意照会のエラー情報マッピング処理を行います。
	 * <br>
	 * @param iparam リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoECK0011A010(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, template.getInt(ECK0011A010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// お客様一意照会.SYSID → SYSID のエラー情報返却
		if (!template.isNull(ECK0011A010CBSMsg.KEY_SYSID_ERR))
		{
			if (!inMap.containsKey("sysid_err"))
			{
				inMap.put("sysid_err", template.getString(ECK0011A010CBSMsg.KEY_SYSID_ERR));
			}
		}

		return param;
	}

	/**
	 * 請求契約番号一覧照会(CMP)のエラー情報マッピング処理を行います。
	 * <br>
	 * @param iparam リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0321B012(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, template.getInt(EKK0321B012CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 請求契約番号一覧照会(CMP).SYSID → SYSID のエラー情報返却
		if (!template.isNull(EKK0321B012CBSMsg.KEY_SYSID_ERR))
		{
			if (!inMap.containsKey("sysid_err"))
			{
				inMap.put("sysid_err", template.getString(EKK0321B012CBSMsg.KEY_SYSID_ERR));
			}
		}

		return param;
	}
	
	/**
	 * サービス契約番号(代表)一覧照会(CMP)のエラー情報マッピング処理を行います。
	 * <br>
	 * @param iparam リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0081B042(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, template.getInt(EKK0081B042CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// サービス契約番号(代表)一覧照会(CMP).請求契約番号 → 請求契約番号 のエラー情報返却
		if (!template.isNull(EKK0081B042CBSMsg.KEY_SEIKY_KEI_NO_ERR))
		{
			if (!inMap.containsKey("seiky_kei_no_err"))
			{
				inMap.put("seiky_kei_no_err", template.getString(EKK0081B042CBSMsg.KEY_SEIKY_KEI_NO_ERR));
			}
		}

		return param;
	}

	/**
	 * 請求契約情報一覧照会(CMP)のエラー情報マッピング処理を行います。
	 * <br>
	 * @param iparam リクエストパラメータ
	 * @param template CAANMsg
	 * @param returnCode リターンコード
	 * @param fixedText ユーザー固定文字列
	 * @return リクエストパラメータ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0491B010(IRequestParameterReadWrite iparam, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		IRequestParameterReadWrite param = setControlMapErrInfo(iparam, template.getInt(EKK0491B010CBSMsg.STATUS), returnCode);

		HashMap inMap = (HashMap)param.getData(fixedText);

		// 請求契約情報一覧.請求契約番号 → 請求契約番号 のエラー情報返却
		if (!template.isNull(EKK0491B010CBSMsg.KEY_SEIKY_KEI_NO_ERR))
		{
			if (!inMap.containsKey("seiky_kei_no_err"))
			{
				inMap.put("seiky_kei_no_err", template.getString(EKK0491B010CBSMsg.KEY_SEIKY_KEI_NO_ERR));
			}
		}

		return param;
	}
}
