/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom, 2015
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JKKMainSubKeiJudgeMapperCC
 *   ソースファイル名：JKKMainSubKeiJudgeMapperCC.java
 *   作成者          ：FJ）時見
 *   日付            ：2015年10月20日
 *＜機能概要＞
 *   主従切替CCで使用するマッパークラスです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v20.00.00   2015/10/20   FJ）時見    新規作成
 *   v20.01.00   2015/11/24   FJ）時見    IT1-2015-0000127対応
 *   v20.02.00   2016/01/19   FJ）藤田    IT2-2016-0000003対応
 *   v23.00.00   2016/03/02   FJ) 森脇    OM-2016-0000505 対応
 *   v23.01.00   2016/04/11   FJ）森脇    OM-2016-0000978 対応
 *   v23.02.00   2016/04/25   FJ) 森脇    OM-2016-0001015 対応
 **********************************************************************/
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.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
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.util.JKKStringUtil;
import eo.common.util.JPCDateChecker;
import eo.common.util.JPCDateUtil;
import eo.ejb.cbs.cbsmsg.EKK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161B513CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161C290CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0601B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg;
import eo.ejb.common.JKKModelCommon;

public class JKKMainSubKeiJudgeMapperCC  {

	/** サービス契約一意照会 **/
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";

	/** サービス契約内訳主従切替一覧照会 **/
	private static final String TEMPLATE_ID_EKK0161B513 = "EKK0161B513";

	/** 料金固定単価 **/
	private static final String TEMPLATE_ID_EKK0601B001 = "EKK0601B001";

	/** サービス契約内訳一意照会 **/
	private static final String TEMPLATE_ID_EKK0161A010 = "EKK0161A010";

	/** 申込明細一意照会 **/
	private static final String TEMPLATE_ID_EKK0021A010 = "EKK0021A010";

	/** 申込一意照会 **/
	private static final String TEMPLATE_ID_EKK0011A010 = "EKK0011A010";

	/** 進捗登録 **/
	private static final String TEMPLATE_ID_EKK1091D010 = "EKK1091D010";

	/** 進捗一意照会 **/
	private static final String TEMPLATE_ID_EKK1091B002 = "EKK1091B002";

	/** サービス契約内訳登録 **/
	private static final String TEMPLATE_ID_EKK0161C290 = "EKK0161C290";

	
	/***************************************************************************************************/
	/** サービス契約一意照会　サービスインタフェース　マッピング処理　ＳＴＡＲＴ
	/***************************************************************************************************/
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約一意照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param fixedText ユーザ任意文字列
	 * @param svcKeiNo サービス契約番号
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2015.10.20
	 */
	public HashMap<String, Object> editInMsgEKK0081A010(IRequestParameterReadOnly param, String svcKeiNo)
	throws Throwable 
	{
		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());

		// nullを設定
		fillCAANMSGNullMapping(template, new EKK0081A010CBSMsg().getContents());

		// テンプレートID
		template.set(EKK0081A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081A010);

		// 機能コード
		template.set(EKK0081A010CBSMsg.FUNC_CODE, "2");

		// 共通情報設定処理
		editCommonInfo(param, template);

		// サービス契約番号 → ＫＥＹ＿サービス契約番号
		template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

		// 予約適用年月日
		template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JKKModelCommon.getOpeDate(template));

		return editInMsgCmn(param, template);
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約一意照会
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0081A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		editResultRPEKK0081A010ErrMap(param, templates, returnCode, fixedText);

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil
				.getErrorInfo(msgList, errList));
		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約一意照会エラー
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0081A010ErrMap(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText) 
	throws Throwable 
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);

		setErrStatus(param,returnCode,templateStatus);
		
		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template
						.getString(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}
		return param;
	}

	/***************************************************************************************************/
	/** サービス契約一意照会　サービスインタフェース　マッピング処理　ＥＮＤ
	/***************************************************************************************************/

	/***************************************************************************************************/
	/** サービス契約内訳主従切替一覧照会　サービスインタフェース　マッピング処理　ＳＴＡＲＴ
	/***************************************************************************************************/
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約内訳主従切替一覧照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param fixedText ユーザ任意文字列
	 * @param svcKeiNo サービス契約番号
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2015.10.20
	 */
	public HashMap<String, Object> editInMsgEKK0161B513(IRequestParameterReadOnly param, String fixedText, String svcKeiNo)
	throws Throwable 
	{
		CAANMsg template = new CAANMsg(EKK0161B513CBSMsg.class.getName());

		// nullを設定
		fillCAANMSGNullMapping(template, new EKK0161B513CBSMsg().getContents());

		// テンプレートID
		template.set(EKK0161B513CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161B513);

		// 機能コード
		template.set(EKK0161B513CBSMsg.FUNC_CODE, "1");

		// 共通情報設定処理
		editCommonInfo(param, template);

		// サービス契約番号 → ＫＥＹ＿サービス契約番号
		template.set(EKK0161B513CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

		return editInMsgCmn(param, template);
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約内訳主従切替一覧照会
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0161B513(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		editResultRPEKK0161B513ErrMap(param, templates, returnCode, fixedText);

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil
				.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約内訳主従切替一覧照会エラー
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0161B513ErrMap(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText) 
	throws Throwable 
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);

		setErrStatus(param,returnCode,templateStatus);
		
		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0161B513CBSMsg.KEY_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template
						.getString(EKK0161B513CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}

		return param;
	}
	/***************************************************************************************************/
	/** サービス契約内訳主従切替一覧照会　サービスインタフェース　マッピング処理　ＥＮＤ
	/***************************************************************************************************/
	/***************************************************************************************************/
	/** 料金固定単価　サービスインタフェース　マッピング処理　ＳＴＡＲＴ
	/***************************************************************************************************/
	/**
	 *<DL>
	 *<DT>処理概要:料金固定単価
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param fixedText ユーザ任意文字列
	 * @param svcKeiNo サービス契約番号
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2015.10.20
	 */
	public HashMap<String, Object> editInMsgEKK0601B001(IRequestParameterReadOnly param, String pcrs_cd, String pplan_cd)
	throws Throwable 
	{
		CAANMsg template = new CAANMsg(EKK0601B001CBSMsg.class.getName());

		// nullを設定
		fillCAANMSGNullMapping(template, new EKK0601B001CBSMsg().getContents());

		// テンプレートID
		template.set(EKK0601B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0601B001);

		// 機能コード
		template.set(EKK0601B001CBSMsg.FUNC_CODE, "1");

		// 共通情報設定処理
		editCommonInfo(param, template);

//		// ＫＥＹ＿取得件数
		template.set(EKK0601B001CBSMsg.MAX_SEARCH_NUM, "1");
		// ＫＥＹ＿料金コースコード
		template.set(EKK0601B001CBSMsg.KEY_PCRS_CD, pcrs_cd);
		// ＫＥＹ＿料金プランコード
		template.set(EKK0601B001CBSMsg.KEY_PPLAN_CD, pplan_cd);


		return editInMsgCmn(param, template);
	}

	/**
	 *<DL>
	 *<DT>処理概要:料金固定単価
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0601B001(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		editResultRPEKK0601B001ErrMap(param, templates, returnCode, fixedText);

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil
				.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:料金固定単価エラー
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0601B001ErrMap(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText) 
	throws Throwable 
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);

		setErrStatus(param,returnCode,templateStatus);
		
		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.料金コード → ＫＥＹ＿料金コード のエラー情報返却
		if (!template.isNull(EKK0601B001CBSMsg.KEY_PCRS_CD_ERR)) {
			if (!inMap.containsKey("pcrs_cd_err")) {
				inMap.put("pcrs_cd_err", template
						.getString(EKK0601B001CBSMsg.KEY_PCRS_CD_ERR));
			}
		}
		// リクエストパラメータ.料金プランコード → ＫＥＹ＿料金プランコード のエラー情報返却
		if (!template.isNull(EKK0601B001CBSMsg.KEY_PPLAN_CD_ERR)) {
			if (!inMap.containsKey("pplan_cd_err")) {
				inMap.put("pplan_cd_err", template
						.getString(EKK0601B001CBSMsg.KEY_PPLAN_CD_ERR));
			}
		}

		return param;
	}
	/***************************************************************************************************/
	/** 料金固定単価　サービスインタフェース　マッピング処理　ＥＮＤ
	/***************************************************************************************************/

	/***************************************************************************************************/
	/** サービス契約内訳一意照会　サービスインタフェース　マッピング処理　ＳＴＡＲＴ
	/***************************************************************************************************/
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約内訳一意照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param svc_kei_ucwk_no サービス契約内訳番号
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 * @since 2015.10.20
	 */
	public HashMap<String, Object> editInMsgEKK0161A010(IRequestParameterReadOnly param, String svc_kei_ucwk_no)
	throws RequestParameterException 
	{
		CAANMsg template = new CAANMsg(EKK0161A010CBSMsg.class.getName());

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0161A010CBSMsg().getContents());

		// テンプレートID
		template.set(EKK0161A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161A010);

		// 機能コード
		template.set(EKK0161A010CBSMsg.FUNC_CODE, "2");

		// 共通情報設定処理
		editCommonInfo(param, template);

		// ＫＥＹ＿サービス契約内訳番号
		template.set(EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svc_kei_ucwk_no);

		// ＫＥＹ＿予約適用年月日
		template.set(EKK0161A010CBSMsg.KEY_RSV_APLY_YMD, JKKModelCommon.getOpeDate(template));

		return editInMsgCmn(param, template);
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約内訳一意照会
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0161A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		editResultRPEKK0161A010ErrMap(param, templates, returnCode, fixedText);

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil
				.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約内訳一意照会エラー
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0161A010ErrMap(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText) 
	throws Throwable 
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);

		setErrStatus(param,returnCode,templateStatus);
		
		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.サービス契約内訳番号 → ＫＥＹ＿サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_ucwk_no_err")) {
				inMap.put("svc_kei_ucwk_no_err", template
						.getString(EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR));
			}
		}

		// リクエストパラメータ.予約適用年月日 → ＫＥＹ＿予約適用年月日のエラー情報返却
		if (!template.isNull(EKK0161A010CBSMsg.KEY_RSV_APLY_YMD_ERR)) {
			if (!inMap.containsKey("rsv_aply_ymd_err")) {
				inMap.put("rsv_aply_ymd_err", template
						.getString(EKK0161A010CBSMsg.KEY_RSV_APLY_YMD_ERR));
			}
		}
		return param;
	}

	/***************************************************************************************************/
	/** サービス契約内訳一意照会　サービスインタフェース　マッピング処理　ＥＮＤ
	/***************************************************************************************************/

	/***************************************************************************************************/
	/** 申込明細一意照会　サービスインタフェース　マッピング処理　ＳＴＡＲＴ
	/***************************************************************************************************/

	/**
	 *<DL>
	 *<DT>処理概要:申込明細一意照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param mskmDtlNo 申込明細番号
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 * @since 2015.10.20
	 */

	public HashMap<String, Object> editInMsgEKK0021A010(IRequestParameterReadOnly param, String mskmDtlNo)
	throws RequestParameterException 
	{
		CAANMsg template = new CAANMsg(EKK0021A010CBSMsg.class.getName());

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0021A010CBSMsg().getContents());

		// テンプレートID
		template.set(EKK0021A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021A010);

		// 機能コード
		template.set(EKK0021A010CBSMsg.FUNC_CODE, "2");

		// 共通情報設定処理
		editCommonInfo(param, template);

		// ＫＥＹ＿申込明細番号
		template.set(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, mskmDtlNo);

		return editInMsgCmn(param, template);
	}

	/**
	 *<DL>
	 *<DT>処理概要:申込明細一意照会
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0021A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		editResultRPEKK0021A010ErrMap(param, templates, returnCode, fixedText);

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil
				.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:申込明細一意照会エラー
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0021A010ErrMap(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText) 
	throws Throwable 
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);

		setErrStatus(param,returnCode,templateStatus);
		
		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.申込明細番号 → ＫＥＹ＿申込明細番号のエラー情報返却
		if (!template.isNull(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO_ERR)) {
			if (!inMap.containsKey("mskm_dtl_no_err")) {
				inMap.put("mskm_dtl_no_err", template
						.getString(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO_ERR));
			}
		}
		return param;
	}

	/***************************************************************************************************/
	/** 申込明細一意照会　サービスインタフェース　マッピング処理　ＥＮＤ
	/***************************************************************************************************/

	/***************************************************************************************************/
	/** 申込一意照会　サービスインタフェース　マッピング処理　ＳＴＡＲＴ
	/***************************************************************************************************/
	/**
	 *<DL>
	 *<DT>処理概要:申込一意照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param mskmNo 申込番号
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws RequestParameterException
	 * @since 2015.10.20
	 */
	public HashMap<String, Object> editInMsgEKK0011A010(IRequestParameterReadOnly param,  String mskmNo )
	throws RequestParameterException 
	{

		CAANMsg template = new CAANMsg(EKK0011A010CBSMsg.class.getName());

		//nullを設定
		fillCAANMSGNullMapping(template, new EKK0011A010CBSMsg().getContents());

		// テンプレートID
		template.set(EKK0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0011A010);

		// 機能コード
		template.set(EKK0011A010CBSMsg.FUNC_CODE, "2");

		// 共通情報設定処理
		editCommonInfo(param, template);

		// ＫＥＹ＿申込番号
		template.set(EKK0011A010CBSMsg.KEY_MSKM_NO, mskmNo);

		return editInMsgCmn(param, template);

	}

	/**
	 *<DL>
	 *<DT>処理概要:申込一意照会
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0011A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		editResultRPEKK0011A010ErrMap(param, templates, returnCode, fixedText);

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil
				.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:申込一意照会エラー
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK0011A010ErrMap(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText) 
	throws Throwable 
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);

		setErrStatus(param,returnCode,templateStatus);
		
		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.申込番号 → ＫＥＹ＿申込番号のエラー情報返却
		if (!template.isNull(EKK0011A010CBSMsg.KEY_MSKM_NO_ERR)) {
			if (!inMap.containsKey("mskm_no_err")) {
				inMap.put("mskm_no_err", template
						.getString(EKK0011A010CBSMsg.KEY_MSKM_NO_ERR));
			}
		}

		return param;
	}

	/***************************************************************************************************/
	/** 申込一意照会　サービスインタフェース　マッピング処理　ＥＮＤ
	/***************************************************************************************************/

	/***************************************************************************************************/
	/** 進捗一意照会　サービスインタフェース　マッピング処理　ＳＴＡＲＴ
	/***************************************************************************************************/
	/**
	 * 
	 *<DL>
	 *<DT>処理概要:進捗一意照会
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param fixedText ユーザ任意文字列
	 * @param svcKeiNo サービス契約番号
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2015.10.01
	 */
	public HashMap<String, Object> editInMsgEKK1091B002(IRequestParameterReadOnly param, 
			String svcKeiNo)
			throws Throwable 
			{
		CAANMsg template = new CAANMsg(EKK1091B002CBSMsg.class.getName());

		// nullを設定
		fillCAANMSGNullMapping(template, new EKK1091B002CBSMsg().getContents());

		// テンプレートID
		template.set(EKK1091B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1091B002);

		// 機能コード
		template.set(EKK1091B002CBSMsg.FUNC_CODE, "1");

		// 共通情報設定処理
		editCommonInfo(param, template);

		// ＫＥＹ＿サービス契約番号
		template.set(EKK1091B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

		// ＫＥＹ＿申込明細番号
		template.setNull(EKK1091B002CBSMsg.KEY_MSKM_DTL_NO);

		// ＫＥＹ＿請求契約番号
		template.setNull(EKK1091B002CBSMsg.KEY_SEIKY_KEI_NO);

		// ＫＥＹ＿サービス契約内訳番号
		template.setNull(EKK1091B002CBSMsg.KEY_SVC_KEI_UCWK_NO);

		// ＫＥＹ＿サービス契約回線内訳番号
		template.setNull(EKK1091B002CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO);

		// ＫＥＹ＿機器提供サービス契約番号
		template.setNull(EKK1091B002CBSMsg.KEY_KKTK_SVC_KEI_NO);

		// ＫＥＹ＿オプションサービス契約番号
		template.setNull(EKK1091B002CBSMsg.KEY_OP_SVC_KEI_NO);

		// ＫＥＹ＿請求オプションサービス契約番号
		template.setNull(EKK1091B002CBSMsg.KEY_SEIOPSVC_KEI_NO);

		// ＫＥＹ＿サブオプションサービス契約番号
		template.setNull(EKK1091B002CBSMsg.KEY_SBOP_SVC_KEI_NO);

		// ＫＥＹ＿割引サービス契約番号
		template.setNull(EKK1091B002CBSMsg.KEY_WRIB_SVC_KEI_NO);

		// ＫＥＹ＿異動区分
		template.set(EKK1091B002CBSMsg.KEY_IDO_DIV, "00066");

		// ＫＥＹ＿ソート項目
		template.set(EKK1091B002CBSMsg.KEY_SORT_ITEM_NO, "1");

		// ＫＥＹ＿ソート区分
		template.set(EKK1091B002CBSMsg.KEY_SORT_KBN, "2");

		return editInMsgCmn(param, template);
	}

	/**
	 *<DL>
	 *<DT>処理概要:進捗一意照会
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK1091B002(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		editResultRPEKK1091B002ErrMap(param, templates, returnCode, fixedText);

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil
				.getErrorInfo(msgList, errList));

		return param;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:進捗一意照会エラー
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK1091B002ErrMap(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText) 
	throws Throwable 
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);

		setErrStatus(param,returnCode,templateStatus);
		
		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template
						.getString(EKK1091B002CBSMsg.KEY_SVC_KEI_NO_ERR));
			}
		}

		// リクエストパラメータ.申込明細番号 → ＫＥＹ＿申込明細番号 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_MSKM_DTL_NO_ERR)) {
			if (!inMap.containsKey("mskm_dtl_no_err")) {
				inMap.put("mskm_dtl_no_err", template
						.getString(EKK1091B002CBSMsg.KEY_MSKM_DTL_NO_ERR));
			}
		}

		// リクエストパラメータ.請求契約番号 → ＫＥＹ＿請求契約番号 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_SEIKY_KEI_NO_ERR)) {
			if (!inMap.containsKey("seiky_kei_no_err")) {
				inMap.put("seiky_kei_no_err", template
						.getString(EKK1091B002CBSMsg.KEY_SEIKY_KEI_NO_ERR));
			}
		}

		// リクエストパラメータ.サービス契約内訳番号 → ＫＥＹ＿サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_kaisen_ucwk_no_err")) {
				inMap.put("svc_kei_kaisen_ucwk_no_err", template
						.getString(EKK1091B002CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR));
			}
		}

		// リクエストパラメータ.サービス契約回線内訳番号 → ＫＥＹ＿サービス契約回線内訳番号 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_kaisen_ucwk_err")) {
				inMap.put("svc_kei_kaisen_ucwk_err", template
						.getString(EKK1091B002CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR));
			}
		}

		// リクエストパラメータ.機器提供サービス契約番号 → ＫＥＹ＿機器提供サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("kktk_svc_kei_no_err")) {
				inMap.put("kktk_svc_kei_no_err", template
						.getString(EKK1091B002CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR));
			}
		}

		// リクエストパラメータ.オプションサービス契約番号 → ＫＥＹ＿オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_OP_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("op_svc_kei_no_err")) {
				inMap.put("op_svc_kei_no_err", template
						.getString(EKK1091B002CBSMsg.KEY_OP_SVC_KEI_NO_ERR));
			}
		}

		// リクエストパラメータ.請求オプションサービス契約番号 → ＫＥＹ＿請求オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_SEIOPSVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("seiopsvc_kei_no_err")) {
				inMap.put("seiopsvc_kei_no_err", template
						.getString(EKK1091B002CBSMsg.KEY_SEIOPSVC_KEI_NO_ERR));
			}
		}

		// リクエストパラメータ.サブオプションサービス契約番号 → ＫＥＹ＿サブオプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_SBOP_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("sbop_svc_kei_no_err")) {
				inMap.put("sbop_svc_kei_no_err", template
						.getString(EKK1091B002CBSMsg.KEY_SBOP_SVC_KEI_NO_ERR));
			}
		}

		// リクエストパラメータ.割引サービス契約番号 → ＫＥＹ＿割引サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_WRIB_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("wrib_svc_kei_no_err")) {
				inMap.put("wrib_svc_kei_no_err", template
						.getString(EKK1091B002CBSMsg.KEY_WRIB_SVC_KEI_NO_ERR));
			}
		}

		// リクエストパラメータ.異動区分 → ＫＥＹ＿異動区分 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template
						.getString(EKK1091B002CBSMsg.KEY_IDO_DIV_ERR));
			}
		}

		// リクエストパラメータ.ソート項目 → ＫＥＹ＿ソート項目 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_SORT_ITEM_NO_ERR)) {
			if (!inMap.containsKey("sort_item_no_err")) {
				inMap.put("sort_item_no_err", template
						.getString(EKK1091B002CBSMsg.KEY_SORT_ITEM_NO_ERR));
			}
		}

		// リクエストパラメータ.ソート区分 → ＫＥＹ＿ソート区分 のエラー情報返却
		if (!template.isNull(EKK1091B002CBSMsg.KEY_SORT_KBN_ERR)) {
			if (!inMap.containsKey("sort_kbn_err")) {
				inMap.put("sort_kbn_err", template
						.getString(EKK1091B002CBSMsg.KEY_SORT_KBN_ERR));
			}
		}

		return param;
	}
	
	/***************************************************************************************************/
	/** 進捗一意照会　サービスインタフェース　マッピング処理　ＥＮＤ
	/***************************************************************************************************/

	/***************************************************************************************************/
	/** サービス契約内訳情報主従切換対象登録　サービスインタフェース　マッピング処理　ＳＴＡＲＴ
	/***************************************************************************************************/
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約内訳情報主従切換対象登録
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param	param			業務データ取得用I/F
	 * @param	inMap			業務情報を保持するマップ
	 * @param	fixedText		ユーザ任意文字列
	 * @param	svcKeiUcwkNo	サービス契約内訳番号
	 * @param	geneAddDtm		世代登録年月日
	 * @param	planChrgStaymd	プラン課金開始日
	 * @param	pplanCd			料金プランコード
	 * @param	planEndYmd		プラン終了年月日
	 * @param	kidoCD			起動元コード
	 * @param	bfAfKbn			変更前後区分
	 * @return					サービスコンポーネント実行用CAANMsg
	 * @since	2015.10.20
	 */
	public HashMap<String, Object> editInMsgEKK0161C290(
			IRequestParameterReadOnly param,
			String fixedText,
			String svcKeiUcwkNo,
			String geneAddDtm,
			String planChrgStaymd,
			String pplanCd,
		// IT2-2016-0000003 ADD START
			String planEndYmd,
			String kidoCD,
		// IT2-2016-0000003 ADD END
		// OM-2016-0000505 ADD START
			String idoRsvDtlCd,
		// OM-2016-0000505 ADD END
		// OM-2016-0001015 ADD START
			String svcDslKisanYmd,
		// OM-2016-0001015 ADD END
			String updDtmBf,
			String bfAfKbn
	) throws Throwable 
	{
		CAANMsg template = new CAANMsg(EKK0161C290CBSMsg.class.getName());

		// nullを設定
		fillCAANMSGNullMapping(template, new EKK0161C290CBSMsg().getContents());

		// テンプレートID
		template.set(EKK0161C290CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161C290);

		// 機能コード
		template.set(EKK0161C290CBSMsg.FUNC_CODE, "1");

		// 共通情報設定処理
		editCommonInfo(param, template);

		// サービス契約内訳一覧照会データ.サービス契約内訳番号 → サービス契約内訳番号
		template.set(EKK0161C290CBSMsg.SVC_KEI_UCWK_NO, svcKeiUcwkNo);

		// サービス契約内訳一覧照会データ.世代登録年月日 → 世代登録年月日
		template.set(EKK0161C290CBSMsg.GENE_ADD_DTM, geneAddDtm);

		// サービス契約内訳一覧照会データ.更新年月日時分秒 → 更新年月日時分秒(更新前)
		template.set(EKK0161C290CBSMsg.UPD_DTM_BF, updDtmBf);

		String opeDate = JKKModelCommon.getOpeDate(template);
		
		// IT2-2016-0000003 ADD START
		// 運用日の前月日取得
		String zngtuDate = JPCDateUtil.addMonth(opeDate, -1);
		// 前月の末日取得
		String prevLastDay = JPCDateUtil.getEndOfMonth(zngtuDate);
		String prevLastDate = zngtuDate.substring(0, 6) + prevLastDay;
		// 前月以前解約(遡及解約)か当月解約かを判定
		boolean isSokyuDsl = false;
		if (planEndYmd != null && !"".equals(planEndYmd) && prevLastDate.compareTo(planEndYmd) >= 0)
		{
			isSokyuDsl = true;
		}
		// IT2-2016-0000003 ADD END
		
		if ("1".equals(bfAfKbn)){

			// プラン終了種別コード
			template.set(EKK0161C290CBSMsg.PLAN_END_SBT_CD, "1");

			// IT2-2016-0000003 MOD START			
			// 起動元コードがバッチの場合は異動予約しかない為、予約適用年月日-1日を設定する
			if("02".equals(kidoCD))
			{
// OM-2016-0000505 MOD START
//				// プラン終了年月日
//				template.set(EKK0161C290CBSMsg.PLAN_ENDYMD, JPCDateUtil.addDay(planEndYmd, -1));
//				// プラン課金終了年月日
//				template.set(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD, JPCDateUtil.addDay(planEndYmd, -1));
				// サービス開始時の主従切替 ※異動予約詳細コードにより終了日に設定する日付を振り分ける
				if("030".equals(idoRsvDtlCd))
				{
					// OM-2016-0000978 MOD START
//					// プラン終了年月日 -> 運用日（サービス開始日）-1日
//					template.set(EKK0161C290CBSMsg.PLAN_ENDYMD, JPCDateUtil.addDay(opeDate, -1));
//
//					String lastDay = JPCDateUtil.getEndOfMonth(opeDate);
//					String lastDate = opeDate.substring(0, 6) + lastDay;
//					// プラン課金終了年月日 -> 当月末日
//					template.set(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD, lastDate);

					// プラン終了年月日 -> 予約適用年月日（サービス開始日）-1日を設定
					template.set(EKK0161C290CBSMsg.PLAN_ENDYMD, JPCDateUtil.addDay(planEndYmd, -1));

					String lastDay = JPCDateUtil.getEndOfMonth(planEndYmd);
					String lastDate = planEndYmd.substring(0, 6) + lastDay;
					// プラン課金終了年月日 -> 予約適用年月日（サービス開始日）の月末日を設定
					template.set(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD, lastDate);
					// OM-2016-0000978 MOD END
				}
				else 
				{
					// プラン終了年月日
					template.set(EKK0161C290CBSMsg.PLAN_ENDYMD, JPCDateUtil.addDay(planEndYmd, -1));
					// プラン課金終了年月日
					template.set(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD, JPCDateUtil.addDay(planEndYmd, -1));
				}
// OM-2016-0000505 MOD END
			}
			else
			{
				// OM-2016-0000505 ADD START
				// 課金開始済み 
				if(JPCDateChecker.isPastDate(planChrgStaymd, opeDate , "1")){
				// OM-2016-0000505 ADD END
					// 起動元がバッチ以外の場合
					// プラン課金終了年月日を設定
					if (isSokyuDsl) {
						// 前月以前解約の場合 -> 課金終了日を指定月の月末日とする
						String lastDay = JPCDateUtil.getEndOfMonth(planEndYmd);
						String lastDate = planEndYmd.substring(0, 6) + lastDay;
						// プラン終了年月日
						template.set(EKK0161C290CBSMsg.PLAN_ENDYMD, lastDate);
						// プラン課金終了年月日
						template.set(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD, lastDate);
					} else {
						// 当月解約の場合 -> 課金終了日を当月末日とする
						String lastDay = JPCDateUtil.getEndOfMonth(opeDate);
						String lastDate = opeDate.substring(0, 6) + lastDay;
						// プラン終了年月日
						template.set(EKK0161C290CBSMsg.PLAN_ENDYMD, lastDate);
						// プラン課金終了年月日
						template.set(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD, lastDate);
					}
				// OM-2016-0000505 ADD START
				// 未来課金
				}else{
					// プラン終了年月日
					template.set(EKK0161C290CBSMsg.PLAN_ENDYMD, JPCDateUtil.addDay(opeDate, -1));
					// プラン課金終了年月日
					template.set(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD, JPCDateUtil.addDay(planChrgStaymd, -1));
				}
				// OM-2016-0000505 ADD END
			}
			// IT2-2016-0000003 MOD END
		}else{
			// IT2-2016-0000003 DEL START
//			// プラン開始年月日
//			template.set(EKK0161C290CBSMsg.PLAN_STAYMD, opeDate);
			// IT2-2016-0000003 DEL END
			
			// IT2-2016-0000003 MOD START
			// 起動元コードがバッチの場合は異動予約しかない為、予約適用年月日を設定する
			if("02".equals(kidoCD))
			{
// OM-2016-0000505 MOD START
//				// プラン開始年月日
//				template.set(EKK0161C290CBSMsg.PLAN_STAYMD, planEndYmd);
//				// プラン課金開始年月日
//				template.set(EKK0161C290CBSMsg.PLAN_CHRG_STAYMD, planEndYmd);
				// サービス開始時の主従切替 ※異動予約詳細コードにより終了日に設定する日付を振り分ける
				if("030".equals(idoRsvDtlCd))
				{
					// OM-2016-0000978 MOD START
//					// プラン開始年月日 -> 運用日（サービス開始日）
//					template.set(EKK0161C290CBSMsg.PLAN_STAYMD, opeDate);
//
//					String nextMonthDate = JPCDateUtil.addMonth(opeDate, 1);
//					String staYmd = nextMonthDate.substring(0, 6) + "01";
//					// プラン課金開始年月日 -> 次月１日
//					template.set(EKK0161C290CBSMsg.PLAN_CHRG_STAYMD, staYmd);

					// プラン開始年月日 -> 予約適用年月日（サービス開始日）を設定
					template.set(EKK0161C290CBSMsg.PLAN_STAYMD, planEndYmd);

					String nextMonthDate = JPCDateUtil.addMonth(planEndYmd, 1);
					String staYmd = nextMonthDate.substring(0, 6) + "01";
					// プラン課金開始年月日 -> 予約適用年月日（サービス開始日）の次月１日を設定
					template.set(EKK0161C290CBSMsg.PLAN_CHRG_STAYMD, staYmd);
					// OM-2016-0000978 MOD END
				}
				else 
				{
					// プラン開始年月日
					template.set(EKK0161C290CBSMsg.PLAN_STAYMD, planEndYmd);
					// プラン課金開始年月日
					template.set(EKK0161C290CBSMsg.PLAN_CHRG_STAYMD, planEndYmd);
				}
// OM-2016-0000505 MOD END
			}
			else
			{
				//課金開始済み 
				if(JPCDateChecker.isPastDate(planChrgStaymd, opeDate , "1")){
					// IT2-2016-0000003 DEL START
//					// プラン課金開始年月日
//					template.set(EKK0161C290CBSMsg.PLAN_CHRG_STAYMD, opeDate);
					// IT2-2016-0000003 DEL END

					// IT2-2016-0000003 ADD START
					// プラン課金開始年月日を設定
					if (isSokyuDsl) {
						// 前月以前解約の場合 -> 課金開始日を指定月の次月１日とする
						String nextMonthDate = JPCDateUtil.addMonth(planEndYmd, 1);
						String staYmd = nextMonthDate.substring(0, 6) + "01";
						// プラン開始年月日
						template.set(EKK0161C290CBSMsg.PLAN_STAYMD, staYmd);
						// プラン課金開始年月日
						template.set(EKK0161C290CBSMsg.PLAN_CHRG_STAYMD, staYmd);
					} else {
						// 当月解約の場合 -> 課金開始日を次月１日とする
						String nextMonthDate = JPCDateUtil.addMonth(opeDate, 1);
						String staYmd = nextMonthDate.substring(0, 6) + "01";
						// プラン開始年月日
						template.set(EKK0161C290CBSMsg.PLAN_STAYMD, staYmd);
						// プラン課金開始年月日
						template.set(EKK0161C290CBSMsg.PLAN_CHRG_STAYMD, staYmd);
					}
					// IT2-2016-0000003 ADD END
				//未来課金
				}else{
					// IT2-2016-0000003 ADD START
					// プラン開始年月日
					template.set(EKK0161C290CBSMsg.PLAN_STAYMD, opeDate);
					// IT2-2016-0000003 ADD END
					// プラン課金開始年月日
					template.set(EKK0161C290CBSMsg.PLAN_CHRG_STAYMD, planChrgStaymd);
				}
			}
			// IT2-2016-0000003 MOD END

// OM-2016-0001015 MOD START
//			// プラン終了年月日
//			template.set(EKK0161C290CBSMsg.PLAN_ENDYMD, "20991231");
//			// プラン課金終了年月日
//			template.set(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD, "20991231");
			// 解約起算日が設定されている場合 -> 解約起算日-1日の月末日を設定
			if(!JKKStringUtil.isNullBlank(svcDslKisanYmd))
			{
				String planChrgEndymd = JPCDateUtil.addDay(svcDslKisanYmd, -1);
				String lastDay = JPCDateUtil.getEndOfMonth(planChrgEndymd);
				String lastDate = planChrgEndymd.substring(0, 6) + lastDay;
				// プラン終了年月日
				template.set(EKK0161C290CBSMsg.PLAN_ENDYMD, lastDate);
				// プラン課金終了年月日
				template.set(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD, lastDate);
			}
			// 解約起算日が設定されていない場合 -> 20991231を設定
			else
			{
				// プラン終了年月日
				template.set(EKK0161C290CBSMsg.PLAN_ENDYMD, "20991231");
				// プラン課金終了年月日
				template.set(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD, "20991231");
			}
// OM-2016-0001015 MOD END
		}
		// 料金プランコード
		template.set(EKK0161C290CBSMsg.PPLAN_CD, pplanCd);
		// 異動区分
		template.set(EKK0161C290CBSMsg.IDO_DIV, "00066");

		return editInMsgCmn(param, template);
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:サービス契約内訳情報主従切換対象登録
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public String editResultRPEKK0161C290(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, String last_upd_Dtm) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0161C290CBSMsg.STATUS);

		setErrStatus(param,returnCode,templateStatus);

		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EKK0161C290CBSMsg.SVC_KEI_UCWK_NO_ERR)) {
				if (!inMap.containsKey("svc_kei_ucwk_no_err")) {
					inMap.put("svc_kei_ucwk_no_err", template.getString(EKK0161C290CBSMsg.SVC_KEI_UCWK_NO_ERR));
				}
			}
		// リクエストパラメータ.世代登録年月日 → 世代登録年月日 のエラー情報返却
		if (!template.isNull(EKK0161C290CBSMsg.GENE_ADD_DTM_ERR)) {
			if (!inMap.containsKey("gene_add_dtm_err")) {
				inMap.put("gene_add_dtm_err", template.getString(EKK0161C290CBSMsg.GENE_ADD_DTM_ERR));
			}
		}
		// リクエストパラメータ.プラン開始年月日 → プラン開始年月日 のエラー情報返却
		if (!template.isNull(EKK0161C290CBSMsg.PLAN_STAYMD_ERR)) {
			if (!inMap.containsKey("plan_staymd_err")) {
				inMap.put("plan_staymd_err", template.getString(EKK0161C290CBSMsg.PLAN_STAYMD_ERR));
			}
		}
		// リクエストパラメータ.プラン終了年月日 → プラン終了年月日 のエラー情報返却
		if (!template.isNull(EKK0161C290CBSMsg.PLAN_ENDYMD_ERR)) {
			if (!inMap.containsKey("plan_endymd_err")) {
				inMap.put("plan_endymd_err", template.getString(EKK0161C290CBSMsg.PLAN_ENDYMD_ERR));
			}
		}
		// リクエストパラメータ.プラン課金開始年月日 → プラン課金開始年月日 のエラー情報返却
		if (!template.isNull(EKK0161C290CBSMsg.PLAN_CHRG_STAYMD_ERR)) {
			if (!inMap.containsKey("plan_chrg_staymd_err")) {
				inMap.put("plan_chrg_staymd_err", template.getString(EKK0161C290CBSMsg.PLAN_CHRG_STAYMD_ERR));
			}
		}
	
		// リクエストパラメータ.プラン課金終了年月日 → プラン課金終了年月日 のエラー情報返却
		if (!template.isNull(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD_ERR)) {
			if (!inMap.containsKey("plan_chrg_endymd_err")) {
				inMap.put("plan_chrg_endymd_err", template.getString(EKK0161C290CBSMsg.PLAN_CHRG_ENDYMD_ERR));
			}
		}

		// リクエストパラメータ.料金プランコード → 料金プランコード のエラー情報返却
		if (!template.isNull(EKK0161C290CBSMsg.PPLAN_CD_ERR)) {
			if (!inMap.containsKey("pplan_cd_err")) {
				inMap.put("pplan_cd_err", template.getString(EKK0161C290CBSMsg.PPLAN_CD_ERR));
			}
		}

		// リクエストパラメータ.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK0161C290CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK0161C290CBSMsg.IDO_DIV_ERR));
			}
		}

		// リクエストパラメータ.プラン終了種別コード → プラン終了種別コード のエラー情報返却
		if (!template.isNull(EKK0161C290CBSMsg.PLAN_END_SBT_CD_ERR)) {
			if (!inMap.containsKey("plan_end_sbt_cd_err")) {
				inMap.put("plan_end_sbt_cd_err", template.getString(EKK0161C290CBSMsg.PLAN_END_SBT_CD_ERR));
			}
		}

		// リクエストパラメータ.更新年月日時分秒 → 更新年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK0161C290CBSMsg.UPD_DTM_BF_ERR)) {
			if (!inMap.containsKey("upd_dtm_bf_err")) {
				inMap.put("upd_dtm_bf_err", template.getString(EKK0161C290CBSMsg.UPD_DTM_BF_ERR));
			}
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		
		if(null != template.getString(EKK0161C290CBSMsg.LAST_UPD_DTM)){
			return template.getString(EKK0161C290CBSMsg.LAST_UPD_DTM);
		}
		return 	null ;
	}
	
	/***************************************************************************************************/
	/** サービス契約内訳情報主従切換対象登録　サービスインタフェース　マッピング処理　ＥＮＤ
	/***************************************************************************************************/

	/***************************************************************************************************/
	/** 進捗登録　サービスインタフェース　マッピング処理　ＳＴＡＲＴ
	/***************************************************************************************************/
	/**
	 *<DL>
	 *<DT>処理概要:進捗登録
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param fixedText ユーザ任意文字列
	 * @param svcKeiNo サービス契約番号
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2015.10.01
	 */
	public HashMap<String, Object> editInMsgEKK1091D010(IRequestParameterReadOnly param, 
			String fixedText,
			String svcKeiNo,
			String svcKeiUcwkNo,
			CAANMsg msgEKK1091B002)
			throws Throwable 
			{
		CAANMsg template = new CAANMsg(EKK1091D010CBSMsg.class.getName());

		String idoDtm;

		if(null == msgEKK1091B002){
			idoDtm = JKKModelCommon.getOpeDateTimeStamp(template);
		}else{
			idoDtm = msgEKK1091B002.getString("ido_dtm");
		}

		// nullを設定
		fillCAANMSGNullMapping(template, new EKK1091D010CBSMsg().getContents());

		// テンプレートID
		template.set(EKK1091D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1091D010);

		// 機能コード
		template.set(EKK1091D010CBSMsg.FUNC_CODE, "1");

		// 共通情報設定処理
		editCommonInfo(param, template);

		// 申込明細番号
		template.setNull(EKK1091D010CBSMsg.MSKM_DTL_NO);

		// 請求契約番号
		template.setNull(EKK1091D010CBSMsg.SEIKY_KEI_NO);

		// 請求方法番号（口座）
		template.setNull(EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA);

		// 請求方法番号（クレジットカード）
		template.setNull(EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD);

		// サービス契約番号
		template.set(EKK1091D010CBSMsg.SVC_KEI_NO, svcKeiNo);

		// サービス契約内訳番号
		template.set(EKK1091D010CBSMsg.SVC_KEI_UCWK_NO, svcKeiUcwkNo);

		// サービス契約回線内訳番号
		template.setNull(EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO);

		// 機器提供サービス契約番号
		template.setNull(EKK1091D010CBSMsg.KKTK_SVC_KEI_NO);

		// オプションサービス契約番号
		template.setNull(EKK1091D010CBSMsg.OP_SVC_KEI_NO);

		// 請求オプションサービス契約番号
		template.setNull(EKK1091D010CBSMsg.SEIOPSVC_KEI_NO);

		// サブオプションサービス契約番号
		template.setNull(EKK1091D010CBSMsg.SBOP_SVC_KEI_NO);

		// 割引サービス契約番号
		template.setNull(EKK1091D010CBSMsg.WRIB_SVC_KEI_NO);

		// 異動区分
		template.set(EKK1091D010CBSMsg.IDO_DIV, "00066");

		// 異動年月日時分秒
		template.set(EKK1091D010CBSMsg.IDO_DTM,idoDtm );

		// 進捗ステータス
		template.set(EKK1091D010CBSMsg.PRG_STAT, "1430");

		// 進捗年月日時分秒
		template.set(EKK1091D010CBSMsg.PRG_DTM, JKKModelCommon.getOpeDateTimeStamp(template));

		// 進捗メモ
		template.setNull(EKK1091D010CBSMsg.PRG_MEMO);

		// 進捗特記事項1
		template.setNull(EKK1091D010CBSMsg.PRG_TKJK_1);

		// 進捗特記事項2
		template.setNull(EKK1091D010CBSMsg.PRG_TKJK_2);

		return editInMsgCmn(param, template);
	}

	/**
	 *<DL>
	 *<DT>処理概要:進捗登録
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param msgList (I) CAANMsgクラス
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @since 2015.10.20
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRPEKK1091D010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];
		ArrayList<Object> errList = new ArrayList();

		// リターンコード取得
		Integer returnCode = (Integer) msgList.get(JCMConstants.RET_CD_INT_KEY);

		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);

		setErrStatus(param,returnCode,templateStatus);
		
		HashMap inMap = null;

		/* ユーザデータ情報 */
		inMap = (HashMap) param.getData(fixedText);

		// リクエストパラメータ.請求契約番号 → 請求契約番号 のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.SEIKY_KEI_NO_ERR)) {
			if (!inMap.containsKey("seiky_kei_no_err")) {
				inMap.put("seiky_kei_no_err", template.getString(EKK1091D010CBSMsg.SEIKY_KEI_NO_ERR));
			}
		}
		// リクエストパラメータ.請求方法番号（口座） → 請求方法番号（口座） のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA_ERR)) {
			if (!inMap.containsKey("seiky_way_no_koza_err")) {
				inMap.put("seiky_way_no_koza_err", template.getString(EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA_ERR));
			}
		}
		// リクエストパラメータ.請求方法番号（クレジットカード） → 請求方法番号（クレジットカード） のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD_ERR)) {
			if (!inMap.containsKey("seiky_way_no_crecard_err")) {
				inMap.put("seiky_way_no_crecard_err", template.getString(EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD_ERR));
			}
		}
		// リクエストパラメータ.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_no_err")) {
				inMap.put("svc_kei_no_err", template.getString(EKK1091D010CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// リクエストパラメータ.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.SVC_KEI_UCWK_NO_ERR)) {
				if (!inMap.containsKey("svc_kei_ucwk_no_err")) {
					inMap.put("svc_kei_ucwk_no_err", template.getString(EKK1091D010CBSMsg.SVC_KEI_UCWK_NO_ERR));
				}
			}
		// リクエストパラメータ.サービス契約回線内訳番号 → サービス契約回線内訳番号 のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO_ERR)) {
			if (!inMap.containsKey("svc_kei_kaisen_ucwk_no_err")) {
				inMap.put("svc_kei_kaisen_ucwk_no_err", template.getString(EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO_ERR));
			}
		}
		// リクエストパラメータ.機器提供サービス契約番号 → 機器提供サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.KKTK_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("kktk_svc_kei_no_err")) {
				inMap.put("kktk_svc_kei_no_err", template.getString(EKK1091D010CBSMsg.KKTK_SVC_KEI_NO_ERR));
			}
		}
		// リクエストパラメータ.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.OP_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("op_svc_kei_no_err")) {
				inMap.put("op_svc_kei_no_err", template.getString(EKK1091D010CBSMsg.OP_SVC_KEI_NO_ERR));
			}
		}
		// リクエストパラメータ.請求オプションサービス契約番号 → 請求オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.SEIOPSVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("seiopsvc_kei_no_err")) {
				inMap.put("seiopsvc_kei_no_err", template.getString(EKK1091D010CBSMsg.SEIOPSVC_KEI_NO_ERR));
			}
		}
		// リクエストパラメータ.サブオプションサービス契約番号 → サブオプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.SBOP_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("sbop_svc_kei_no_err")) {
				inMap.put("sbop_svc_kei_no_err", template.getString(EKK1091D010CBSMsg.SBOP_SVC_KEI_NO_ERR));
			}
		}
		// リクエストパラメータ.割引サービス契約番号 → 割引サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.WRIB_SVC_KEI_NO_ERR)) {
			if (!inMap.containsKey("wrib_svc_kei_no_err")) {
				inMap.put("wrib_svc_kei_no_err", template.getString(EKK1091D010CBSMsg.WRIB_SVC_KEI_NO_ERR));
			}
		}
		// リクエストパラメータ.異動区分 → 異動区分 のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.IDO_DIV_ERR)) {
			if (!inMap.containsKey("ido_div_err")) {
				inMap.put("ido_div_err", template.getString(EKK1091D010CBSMsg.IDO_DIV_ERR));
			}
		}
		// リクエストパラメータ.進捗ステータス → 進捗ステータス のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.PRG_STAT_ERR)) {
			if (!inMap.containsKey("prg_stat_err")) {
				inMap.put("prg_stat_err", template.getString(EKK1091D010CBSMsg.PRG_STAT_ERR));
			}
		}
		// リクエストパラメータ.進捗メモ → 進捗メモ のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.PRG_MEMO_ERR)) {
			if (!inMap.containsKey("prg_memo_err")) {
				inMap.put("prg_memo_err", template.getString(EKK1091D010CBSMsg.PRG_MEMO_ERR));
			}
		}
		// リクエストパラメータ.進捗特記事項１ → 進捗特記事項１ のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.PRG_TKJK_1_ERR)) {
			if (!inMap.containsKey("prg_tkjk_1_err")) {
				inMap.put("prg_tkjk_1_err", template.getString(EKK1091D010CBSMsg.PRG_TKJK_1_ERR));
			}
		}
		// リクエストパラメータ.進捗特記事項２ → 進捗特記事項２ のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.PRG_TKJK_2_ERR)) {
			if (!inMap.containsKey("prg_tkjk_2_err")) {
				inMap.put("prg_tkjk_2_err", template.getString(EKK1091D010CBSMsg.PRG_TKJK_2_ERR));
			}
		}
		// リクエストパラメータ.申込明細番号→ 申込明細番号のエラー情報返却
		if (!template.isNull(EKK1091D010CBSMsg.MSKM_DTL_NO_ERR)) {
			if (!inMap.containsKey("mskm_dtl_no_err")) {
				inMap.put("mskm_dtl_no_err", template.getString(EKK1091D010CBSMsg.MSKM_DTL_NO_ERR));
			}
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/***************************************************************************************************/
	/** 進捗登録　サービスインタフェース　マッピング処理　ＥＮＤ
	/***************************************************************************************************/

	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param msg データ登録内容
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます
	 *                。
	 */
	private HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param, CAANMsg msg)
	throws RequestParameterException 
	{
		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[] templates = new CAANMsg[1];
		templates[0] = msg;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;

	}

	/**
	 * 持ちうるフィールドにNullマッピングで埋める
	 * 
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	private void fillCAANMSGNullMapping(CAANMsg msg, Object[][] contents) {

		// 要素ごとのループ
		for (int i = 0; i < contents.length; i++) {

			Object element = null;

			// キーに該当する箇所の取得
			element = contents[i][0];

			// Nullでマッピング
			msg.setNull((String) element);

		}
	}

	/**
	 * S/IF呼出時の共通情報を設定する
	 * @param param 業務データ取得用I/F
	 * @param template 条件の設定先
	 * @throws RequestParameterException
	 */
	private void editCommonInfo(
			IRequestParameterReadOnly param,
			CAANMsg template)
	throws RequestParameterException 
	{
		// オペレータ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);
	}

	/**
	 * エラーステータスの設定
	 * 
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	private void setErrStatus(IRequestParameterReadWrite param, int returnCode,int templateStatus) throws Throwable {

		
		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);
		}
	}

}
