/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUChgSvcPaywayCC
*   ソースファイル名：JFUChgSvcPaywayCC.java
*   作成者          ：富士通
*   日付            ：2011年04月01日
*＜機能概要＞
*   支払方法登録変更部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/04/01   FJ）馬場    新規作成
*   v4.00.00    2012/11/02   FJ）齋藤   【IT1-2012-0001847】スマリ申込時関連チェックエラー障害対応
*   v4.01.00    2012/11/02   FJ）齋藤   【IT1-2012-0001927】ファミパ申込時関連チェックエラー障害対応
*   v4.02.00    2012/11/28   FJ) 齋藤   【IT2-2012-0001841】追加申込時課金先登録障害
*   v4.03.00    2013/03/12   FJ) 大塚    
*   v4.04.00    2013/03/25   FJ) 藤原   【IT2-2013-0000325】ファミリーパック申込エラー対応
*   v4.05.00    2013/04/26   FJ) 大村   障害No.715 テレビにネット追加障害対応
*   v5.00.00    2013/07/26   FJ) 瀧澤   【LT-2013-0000637】請求先を引き継ぐ場合に、ファミパの課金先登録が付け換わらない障害に対応
*   v5.01.00    2013/07/31   FJ) 岡井   【IT-2013-0001498】請求契約排他制御対応
*   v7.00.00    2013/12/09   FJ) 川瀬   【ANK-1578-00-00】多機能ルーター(機器追加)
*   v7.00.00    2014/01/20   FJ) 川瀬   【TAI-2014-0000004】多機能ルーター(機器追加)JFUNewAddKkopSvcKeiCC通過時対応
 *  v50.00.00   2020/06/12   FJ) 美濃原 【ANK-3825-00-00】メッシュWiFi導入対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JFUStrConst;
import eo.common.util.JFUCommonUtil;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081C012CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321E010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0491B505CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491B505CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0491C060CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491C220CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491C240CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0521D020CBSMsg;

/**
 * 支払方法変更部品
 * <br>
 * @author 富士通
 */
public class JFUChgSvcPaywayCC extends AbstractCommonComponent
{
	final String RETURN_MESSAGE_STRING = "RETURN_MESSAGE_";
	final String RETURN_MESSAGE_FORMAT = "%1$04d";
	final String CC_WORK_AREA_NAME = "JFUChgSvcPaywayCCWork";
	final String SC_ERROR_STRING = "サービスコンポーネントエラー";

	//---- ST2-2012-0001437 2012/08/06 h.ikeda start ----//
	// 課金先リスト
	private ArrayList kakins_list = null;
	//---- ST2-2012-0001437 2012/08/06 h.ikeda end ----//

	/** ネット */
	private static final String NET = "NET";
	/** 電話 */
	private static final String TEL = "TEL";
	/** テレビ */
	private static final String TV = "TV";
	/** モバイル */
	private static final String MOB = "MOB";

	private static final String CC_WORK_AREA_NAME_AUTH = "JFUAuthCheckCCWork";

	/**
	 * 支払方法変更処理.<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception Exception
	 */
	public IRequestParameterReadWrite chgPayway(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;

		//---- ST2-2012-0001437 2012/08/06 h.ikeda start ----//
		kakins_list = new ArrayList();
		//---- ST2-2012-0001437 2012/08/06 h.ikeda end ----//

		//		HashMap creditMap = null;// 審査済クレジットカード登録
		HashMap seikyuuMap = null;// 請求支払先変更
		HashMap seikyuuMap2 = null;// 請求契約内容変更
		HashMap inEKK0491 = null;// 請求契約予約取消
		HashMap inEKK0321 = null;// 課金先登録
		HashMap inEKK0081 = null;// サービス契約支払い方法継続ｓ
		//---- ST2-2012-0001437 2012/08/06 h.ikeda start ----//
		HashMap inEKK0321_del = null;// 課金先論理削除用
		//---- ST2-2012-0001437 2012/08/06 h.ikeda end ----//
		// 2013/03/25【IT2-2013-0000325】Fujiwara Add Start
		HashMap inFUSV016005CC = null;
		HashMap inFUSV016118CC = null;
		// 2013/03/25【IT2-2013-0000325】Fujiwara Add End

		HashMap inFUSV016020CC = null;

		//		creditMap = (HashMap)param.getData("EKK0521D020");
		seikyuuMap = (HashMap)param.getData("EKK0491C240");
		seikyuuMap2 = (HashMap)param.getData("EKK0491C060");
		inEKK0491 = (HashMap)param.getData("EKK0491C220");// 請求契約予約取消
		inEKK0321 = (HashMap)param.getData("EKK0321D010");// 課金先登録
		inEKK0081 = (HashMap)param.getData("EKK0081C012");// サービス契約支払い方法継続
		// 2013/03/25【IT2-2013-0000325】Fujiwara Add Start
		inFUSV016005CC = (HashMap)param.getData("FUSV016005CC");
		inFUSV016118CC = (HashMap)param.getData("FUSV016118CC");
		// 2013/03/25【IT2-2013-0000325】Fujiwara Add End

		inFUSV016020CC = (HashMap)param.getData("FUSV016020CC");

		// オーソリ修正による変更 2012/10/15 Otsuka start
		//		if (creditMap != null && seikyuuMap != null && inEKK0491 != null && inEKK0321 != null && inEKK0081 != null)
		//		{
		//			return null;
		//		}
		//		

		if (seikyuuMap != null && inEKK0491 != null && inEKK0321 != null && inEKK0081 != null)
		{
			return null;
		}

		//処理に必要なマップのどちらかがnullの場合は処理を行いません。
		//		if (creditMap != null && seikyuuMap != null)
		//			{
		if (seikyuuMap != null)
		{
			// 審査済クレジットカード登録
			//			template = editInEKK0521D020(param, "EKK0521D020"); // 上りマッピング
			//			paramMap = putParamMap(paramMap, template);
			//			result = scCall.run(paramMap, handle); // SC呼び出し
			//			editRetEKK0521D020(result, param, "EKK0521D020"); // 下りマッピング
			//			if (getReturnCode(param) != 0)
			//			{ // ステータスが0でなければエラーをthrow
			//				throw new CCException(SC_ERROR_STRING, new Exception());
			//			}
			// オーソリ修正による変更 2012/10/15 Otsuka end

			// 2013/03/25【IT2-2013-0000325】Fujiwara Add Start
			//			if (inFUSV016005CC != null || inFUSV016118CC != null)
			//			{
			// 請求支払先一意照会 
			template = editInEKK0491A010(param, "EKK0491A010"); // 上りマッピング
			result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
			editRetEKK0491A010(result, param, "EKK0491A010"); // 下りマッピング
			if (getReturnCode(param) != 0)
			{ // ステータスが0でなければエラーをthrow
				throw new CCException(SC_ERROR_STRING, new Exception());
			}

			//			}
			// 2013/03/25【IT2-2013-0000325】Fujiwara Add End

			// 請求支払先変更
			template = editInEKK0491C240(param, "EKK0491C240"); // 上りマッピング
			result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
			editRetEKK0491C240(result, param, "EKK0491C240"); // 下りマッピング
			if (getReturnCode(param) != 0)
			{ // ステータスが0でなければエラーをthrow
				throw new CCException(SC_ERROR_STRING, new Exception());
			}

			// 請求支払先変更
			template = editInEKK0491C060(param, "EKK0491C060"); // 上りマッピング
			result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
			editRetEKK0491C060(result, param, "EKK0491C060"); // 下りマッピング
			if (getReturnCode(param) != 0)
			{ // ステータスが0でなければエラーをthrow
				throw new CCException(SC_ERROR_STRING, new Exception());
			}
		}

		if (inEKK0491 != null && inEKK0321 != null && inEKK0081 != null)
		{
			// 2013/03/25【IT2-2013-0000325】Fujiwara Add Start
			if (inFUSV016005CC != null || inFUSV016118CC != null || inFUSV016020CC != null)
			{
				// 請求支払先一意照会 
				template = editInEKK0491A010(param, "EKK0491A010"); // 上りマッピング
				result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEKK0491A010(result, param, "EKK0491A010"); // 下りマッピング
				if (getReturnCode(param) != 0)
				{ // ステータスが0でなければエラーをthrow
					throw new CCException(SC_ERROR_STRING, new Exception());
				}
			}
			// 2013/03/25【IT2-2013-0000325】Fujiwara Add End

			// 請求契約予約取消
			template = editInEKK0491C220(param, "EKK0491C220"); // 上りマッピング
			paramMap = putParamMap(paramMap, template);
			result = scCall.run(paramMap, handle); // SC呼び出し
			editRetEKK0491C220(result, param, "EKK0491C220"); // 下りマッピング
			if (getReturnCode(param) != 0)
			{ // ステータスが0でなければエラーをthrow
				throw new CCException(SC_ERROR_STRING, new Exception());
			}

			// 請求契約一覧照会(支払方法取得)
			template = editInEKK0491B505(param, "EKK0491B505");
			paramMap = putParamMap(paramMap, template);
			result = scCall.run(paramMap, handle);
			editRetEKK0491B505(result, param, "EKK0491B505");
			if (getReturnCode(param) != 0)
			{ // ステータスが0でなければエラーをthrow
				throw new CCException(SC_ERROR_STRING, new Exception());
			}

			// 課金先登録（仮申込用）
			int mapCnt = ((ArrayList)inEKK0321.get("EKK0321D010List")).size();
			int kakinInsCnt = -1;
			for (int i = 0; i < mapCnt; i++)
			{
				template = editInEKK0321D010(param, "EKK0321D010", i); // 上りマッピング
				result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEKK0321D010(result, param, "EKK0321D010", i); // 下りマッピング
				if (getReturnCode(param) != 0)
				{ // ステータスが0でなければエラーをthrow
					throw new CCException(SC_ERROR_STRING, new Exception());
				}
				kakinInsCnt = i;
			}

			// サービス契約支払い方法継続
			int mapEKK0081Cnt = ((ArrayList)inEKK0081.get("EKK0081C012List")).size();
			for (int i = 0; i < mapEKK0081Cnt; i++)
			{
				// ■サービス契約の最終更新年月日時分秒を取得する
				String updDtm = JFUStrConst.EMPTY;
				HashMap allMap = (HashMap)param.getData("EKK0081C012");
				if (allMap != null && allMap.size() > 0)
				{
					ArrayList wkList = (ArrayList)allMap.get("EKK0081C012" + "List");
					if (wkList != null && wkList.size() > i)
					{
						HashMap svcMap = (HashMap)wkList.get(i);
						template = editInEKK0081A010(param, "EKK0081A010", (String)svcMap.get("svc_kei_no"));
						result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
						editRetEKK0081A010(result, param, "EKK0081A010"); // 下りマッピング
						if (getReturnCode(param) != 0)
						{ // ステータスが0でなければエラーをthrow
							throw new CCException(SC_ERROR_STRING, new Exception());
						}
						HashMap dataMap = (HashMap)param.getData("EKK0081A010");
						updDtm = nullToBlank((String)dataMap.get("upd_dtm"));
						JFUBPCommon.printBpDebugLog(this.getClass(), "■■■ svc_kei_no=" + (String)svcMap.get("svc_kei_no") + " LAST_UPD_DTM=" + updDtm
								+ " ■■■");
					}
				}

				template = editInEKK0081C012(param, "EKK0081C012", i, updDtm); // 上りマッピング
				result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEKK0081C012(result, param, "EKK0081C012", i); // 下りマッピング
				if (getReturnCode(param) != 0)
				{ // ステータスが0でなければエラーをthrow
					JFUBPCommon.printBpDebugLog(this.getClass(), "■■■ EKK0081C012 RETURN_CODE=" + getReturnCode(param) + " ■■■");
					throw new CCException(SC_ERROR_STRING, new Exception());
				}
			}
			//---- ST2-2012-0001437 2012/08/06 h.ikeda start ----//
			// 課金先一覧照会（サービス契約番号関連）
			/* 2012/11/28 IT2-2012-0001841 Y.Saitou MOD-START */
			template = editInEKK0321B002(param, "EKK0321B002"); // 上りマッピング
			result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
			editRetEKK0321B002(result, param, "EKK0321B002"); // 下りマッピング
			if (getReturnCode(param) != 0)
			{ // ステータスが0でなければエラーをthrow
				throw new CCException(SC_ERROR_STRING, new Exception());
			}
			/* 2012/11/28 IT2-2012-0001841 Y.Saitou MOD-END */

			int kakins_list_cnt = kakins_list.size();
			for (int i = 0; i < kakins_list_cnt; i++)
			{
				//****** ファミパの為の課金先移送 start ******
				if (inFUSV016005CC != null || inFUSV016118CC != null || inFUSV016020CC != null)
				{
					template = editInEKK0321A010(param, "EKK0321A010", i); // 上りマッピング
					result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
					HashMap<String, String> returnMap = editRetEKK0321A010(result, param, "EKK0321A010"); // 下りマッピング
					if (getReturnCode(param) != 0)
					{ // ステータスが0でなければエラーをthrow
						throw new CCException(SC_ERROR_STRING, new Exception());
					}
					// 仮登録時に詰めた情報と比較し、どれとも合致しない場合はファミパ分として移送する
					boolean flg = false;
					for (int j = 0; j < mapCnt; j++)
					{
						// 仮登録用に上りマッピングしているマップを比較用に取得
						HashMap hikakuMap = (HashMap)((ArrayList)((HashMap)param.getData("EKK0321D010")).get("EKK0321D010List")).get(j);
						if (!flg)
						{
							flg = isInsTargetRecord(returnMap, hikakuMap);
						}
					}
					// フラグがfalseのままである場合は、合致したレコードが無かったものと判定し、移送対象である、為登録処理を行う
					if (!flg)
					{
						// 請求契約一覧照会(支払方法取得)
						template = editInEKK0491B505(param, "EKK0491B505");
						paramMap = putParamMap(paramMap, template);
						result = scCall.run(paramMap, handle);
						editRetEKK0491B505(result, param, "EKK0491B505");
						if (getReturnCode(param) != 0)
						{ // ステータスが0でなければエラーをthrow
							throw new CCException(SC_ERROR_STRING, new Exception());
						}

						// 課金先登録
						kakinInsCnt++;
						template = editInEKK0321D010Famipa(param, "EKK0321D010", kakinInsCnt, returnMap); // 上りマッピング
						result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
						editRetEKK0321D010Famipa(result, param, "EKK0321D010"); // 下りマッピング
						if (getReturnCode(param) != 0)
						{ // ステータスが0でなければエラーをthrow
							throw new CCException(SC_ERROR_STRING, new Exception());
						}
					}
				}
				//****** ファミパの為の課金先移送  end  ******

				// 課金先論理削除
				template = editInEKK0321E010(param, "EKK0321E010", i); // 上りマッピング
				result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEKK0321E010(result, param, "EKK0321E010", i); // 下りマッピング
				if (getReturnCode(param) != 0)
				{ // ステータスが0でなければエラーをthrow
					throw new CCException(SC_ERROR_STRING, new Exception());
				}
			}
			//---- ST2-2012-0001437 2012/08/06 h.ikeda end ----//

		}

		return param;
	}

	/**
	 * 支払方法変更処理.<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return HashMap<String, Object>
	 * @throws Exception 
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
			throws Exception
	{
		ArrayList<CAANMsg> msgList = new ArrayList<CAANMsg>();

		//		HashMap creditMap = null;
		HashMap seikyuuMap = null;
		HashMap seikyuuMap2 = null;
		HashMap inEKK0491 = null;// 請求契約予約取消
		HashMap inEKK0321 = null;// 課金先登録
		HashMap inEKK0081 = null;// サービス契約支払い方法継続
		String lastMAP = "";

		//		creditMap = (HashMap)param.getData("EKK0521D020");
		seikyuuMap = (HashMap)param.getData("EKK0491C240");
		seikyuuMap2 = (HashMap)param.getData("EKK0491C060");
		inEKK0491 = (HashMap)param.getData("EKK0491C220");// 請求契約予約取消
		inEKK0321 = (HashMap)param.getData("EKK0321D010");// 課金先登録
		inEKK0081 = (HashMap)param.getData("EKK0081C012");// サービス契約支払い方法継続
		//		if (creditMap != null && seikyuuMap != null && inEKK0491 != null && inEKK0321 != null && inEKK0081 != null)
		//		{
		//			return null;
		//		}
		if (seikyuuMap != null && inEKK0491 != null && inEKK0321 != null && inEKK0081 != null)
		{
			return null;
		}

		//処理に必要なマップのどちらかがnullの場合は処理を行いません。
		//		if (creditMap != null && seikyuuMap != null)
		//		{
		if (seikyuuMap != null)
		{
			//			msgList.add(editInEKK0521D020(param, "EKK0521D020")); // 審査済クレジットカード登録
			msgList.add(editInEKK0491C240(param, "EKK0491C240")); // 請求支払先変更
		}
		if (seikyuuMap2 != null)
		{
			msgList.add(editInEKK0491C060(param, "EKK0491C060")); // 請求契約内容変更
		}

		if (inEKK0491 != null && inEKK0321 != null && inEKK0081 != null)
		{
			msgList.add(editInEKK0491C220(param, "EKK0491C220")); // 請求契約予約取消

			int mapCnt = ((ArrayList)inEKK0321.get("EKK0321D010List")).size();
			for (int i = 0; i < mapCnt; i++)
			{
				msgList.add(editInEKK0321D010(param, "EKK0321D010", i)); // 課金先登録
			}

			int inEKK0081Cnt = ((ArrayList)inEKK0081.get("EKK0081C012List")).size();
			for (int i = 0; i < inEKK0081Cnt; i++)
			{
				msgList.add(editInEKK0081C012(param, "EKK0081C012", i, null)); // サービス契約支払い方法継続
			}
		}

		int msgCnt = msgList.size();
		CAANMsg[] templates = new CAANMsg[msgCnt];
		for (int i = 0; i < msgCnt; i++)
		{
			templates[i] = msgList.get(i);
		}

		HashMap<String, Object> paramMap = setSCInputCommonData(param, new HashMap<String, Object>());
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * SCインプット共通データ設定処理
	 * <br>
	 * @param param
	 * @param paramMap
	 * @return
	 */
	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 リクエストパラメータ
	//	 * @return HashMap<String, Object>
	//	 * @throws RequestParameterException
	//	 */
	//	private CAANMsg editInEKK0521D020(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	//	{
	//
	//		CAANMsg template = new CAANMsg(EKK0521D020CBSMsg.class.getName());
	//
	//		// テンプレートID（機器提供サービス契約登録）
	//		template.set(EKK0521D020CBSMsg.TEMPLATEID, "EKK0521D020");
	//
	//		// 機能コード（デフォルト：１（チェック＆登録）
	//		template.set(EKK0521D020CBSMsg.FUNC_CODE, "1");
	//
	//		// オペレータID
	//		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
	//		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
	//
	//		// 運用日付
	//		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
	//		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
	//
	//		// 運用日時
	//		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
	//		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
	//
	//		/* ユーザデータ情報 */
	//		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData("EKK0521D020");
	//
	//		// 世代登録年月日時分秒 → 世代登録年月日時分秒
	//		if ("".equals(inMap.get("gene_add_dtm")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.GENE_ADD_DTM);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.GENE_ADD_DTM, (String)inMap.get("gene_add_dtm"));
	//		}
	//		// クレジットカードステータス → クレジットカードステータス
	//		if ("".equals(inMap.get("crecard_stat")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.CRECARD_STAT);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.CRECARD_STAT, (String)inMap.get("crecard_stat"));
	//		}
	//
	//		// クレジットカード事業コード → クレジットカード事業コード
	//		if ("".equals(inMap.get("crecard_jigyo_cd")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.CRECARD_JIGYO_CD);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.CRECARD_JIGYO_CD, (String)inMap.get("crecard_jigyo_cd"));
	//		}
	//		// クレジットカード会社コード → クレジットカード会社コード
	//		if ("".equals(inMap.get("crecard_comp_cd")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.CRECARD_COMP_CD);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.CRECARD_COMP_CD, (String)inMap.get("crecard_comp_cd"));
	//		}
	//		// クレジットカード番号 → クレジットカード番号
	//		if ("".equals(inMap.get("crecard_no")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.CRECARD_NO);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.CRECARD_NO, (String)inMap.get("crecard_no"));
	//		}
	//		// クレジットカード有効期限 → クレジットカード有効期限
	//		if ("".equals(inMap.get("crecard_yk_kigen")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.CRECARD_YK_KIGEN);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.CRECARD_YK_KIGEN, (String)inMap.get("crecard_yk_kigen"));
	//		}
	//		// クレジット交換コード → クレジット交換コード
	//		if ("".equals(inMap.get("credit_kokan_cd")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.CREDIT_KOKAN_CD);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.CREDIT_KOKAN_CD, (String)inMap.get("credit_kokan_cd"));
	//		}
	//		// クレジットカード名義（ローマ字） → クレジットカード名義（ローマ字）
	//		if ("".equals(inMap.get("crecard_nm_romaji")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.CRECARD_NM_ROMAJI);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.CRECARD_NM_ROMAJI, (String)inMap.get("crecard_nm_romaji"));
	//		}
	//		// クレジットカード名義カナ名 → クレジットカード名義カナ名
	//		if ("".equals(inMap.get("crecard_nm_kana")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.CRECARD_NM_KANA);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.CRECARD_NM_KANA, (String)inMap.get("crecard_nm_kana"));
	//		}
	//		// 支払い審査結果コード
	//		if ("".equals(inMap.get("pay_skekka_cd")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.PAY_SKEKKA_CD);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.PAY_SKEKKA_CD, (String)inMap.get("pay_skekka_cd"));
	//		}
	//		// オーソリ確認年月日時分秒
	//		/*if ("".equals(inMap.get("authori_cfm_dtm")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.AUTHORI_CFM_DTM);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.AUTHORI_CFM_DTM, (String)inMap.get("authori_cfm_dtm"));
	//		}*/
	//		// 運用日付年月日時分秒を取得
	//		template.set(EKK0521D020CBSMsg.AUTHORI_CFM_DTM, JFUBPCommon.getOpeDateTimeStamp(null));
	//
	//		// オーソリ承認番号
	//		if ("".equals(inMap.get("authori_shonin_no")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.AUTHORI_SHONIN_NO);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.AUTHORI_SHONIN_NO, (String)inMap.get("authori_shonin_no"));
	//		}
	//		// 異動区分 → 異動区分
	//		if ("".equals(inMap.get("ido_div")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.IDO_DIV);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
	//		}
	//		// 登録年月日時分秒 → 登録年月日時分秒
	//		if ("".equals(inMap.get("add_dtm")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.ADD_DTM);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.ADD_DTM, (String)inMap.get("add_dtm"));
	//		}
	//		// 登録オペレータアカウント → 登録オペレータアカウント
	//		if ("".equals(inMap.get("add_opeacnt")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.ADD_OPEACNT);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.ADD_OPEACNT, (String)inMap.get("add_opeacnt"));
	//		}
	//		// 更新年月日時分秒 → 更新年月日時分秒
	//		if ("".equals(inMap.get("upd_dtm")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.UPD_DTM);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.UPD_DTM, (String)inMap.get("upd_dtm"));
	//		}
	//		// 更新オペレータアカウント → 更新オペレータアカウント
	//		if ("".equals(inMap.get("upd_opeacnt")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.UPD_OPEACNT);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.UPD_OPEACNT, (String)inMap.get("upd_opeacnt"));
	//		}
	//		// 無効フラグ → 無効フラグ
	//		if ("".equals(inMap.get("mk_flg")))
	//		{
	//			template.setNull(EKK0521D020CBSMsg.MK_FLG);
	//		}
	//		else
	//		{
	//			template.set(EKK0521D020CBSMsg.MK_FLG, (String)inMap.get("mk_flg"));
	//		}
	//
	//		return template;
	//	}
	//
	//	/**
	//	 * 審査済クレジットカード登録の下りマッピング処理
	//	 * <br>
	//	 * @param param
	//	 * @param fixedText
	//	 * @return
	//	 */
	//	private IRequestParameterReadWrite editRetEKK0521D020(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 = param.getMappingWorkArea();
	//		if (workMap == null)
	//		{
	//			workMap = new HashMap();
	//			param.setMappingWorkArea(workMap);
	//		}
	//		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME);
	//		if (workDataMap == null)
	//		{
	//			workDataMap = new HashMap();
	//			workMap.put(CC_WORK_AREA_NAME, workDataMap);
	//		}
	//
	//		/* 業務データ設定 */
	//		HashMap dataMap = (HashMap)param.getData(fixedText);
	//		if (dataMap == null)
	//		{
	//			dataMap = new HashMap();
	//			param.setData(fixedText, dataMap);
	//		}
	//
	//		// 請求方法番号（クレジットカード） → 請求方法番号（クレジットカード）
	//		if (template.isNull(EKK0521D020CBSMsg.SEIKY_WAY_NO_CRECARD))
	//		{
	//			dataMap.put("seiky_way_no_crecard", "");
	//		}
	//		else
	//		{
	//			dataMap.put("seiky_way_no_crecard", template.getString(EKK0521D020CBSMsg.SEIKY_WAY_NO_CRECARD));
	//			workDataMap.put("seiky_way_no_crecard", template.getString(EKK0521D020CBSMsg.SEIKY_WAY_NO_CRECARD));
	//		}
	//
	//		// エラー情報の設定
	//		param = editErrInfoEKK0521D020(param, template, (Integer)returnCode, fixedText);
	//
	//		//エラー情報のマップを取得
	//		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
	//		if (errList == null)
	//		{
	//			errList = new ArrayList<Object>();
	//		}
	//		// コントロールマップに設定
	//		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
	//
	//		return param;
	//	}

	//	/**
	//	 * 審査済クレジットカード登録のエラー情報マッピング処理
	//	 * <br>
	//	 */
	//	private IRequestParameterReadWrite editErrInfoEKK0521D020(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedText)
	//			throws RequestParameterException
	//	{
	//		int templateStatus = template.getInt(EKK0341D010CBSMsg.STATUS);
	//		if (returnCode != 0)
	//		{
	//			templateStatus = 9000;
	//		}
	//		if (JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, templateStatus)) == null)
	//		{
	//			templateStatus = 0;
	//		}
	//
	//		int bpStatus = 0;
	//		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
	//		if (obj == null)
	//		{
	//			bpStatus = -1;
	//		}
	//		else
	//		{
	//			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
	//		}
	//
	//		if (templateStatus > bpStatus)
	//		{
	//			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
	//			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
	//			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
	//			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
	//		}
	//
	//		return param;
	//	}

	/**
	 * 請求支払先変更上りマッピング処理.<br>
	 * @param param リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0491C240(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		CAANMsg template = new CAANMsg(EKK0491C240CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0491C240CBSMsg.TEMPLATEID, "EKK0491C240");

		// 機能コード（デフォルト：１）
		template.set(EKK0491C240CBSMsg.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);

		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++ */
		/* ユーザデータ情報 */
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData("EKK0491C240");
		HashMap<String, Object> inEKK0491A010 = (HashMap<String, Object>)param.getData("EKK0491A010");
		// 前回更新用マップ

		//		HashMap inListMap = (HashMap)param.getData("EKK0521D020");
		/* ++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++ */
		// 機能コード
		template.set(EKK0491C240CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME);
		if (workDataMap == null)
		{
			workDataMap = new HashMap();
			workMap.put(CC_WORK_AREA_NAME, workDataMap);
		}

		/* 業務データ設定 */
		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		// 請求契約番号 → 請求契約番号
		if ("".equals(inMap.get("seiky_kei_no")))
		{
			template.setNull(EKK0491C240CBSMsg.SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.SEIKY_KEI_NO, (String)inMap.get("seiky_kei_no"));
		}

		// 世代登録年月日時分秒 → 世代登録年月日時分秒
		if ("".equals(inMap.get("gene_add_dtm")))
		{
			template.setNull(EKK0491C240CBSMsg.GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.GENE_ADD_DTM, (String)inMap.get("gene_add_dtm"));
		}
		// 請求方法コード → 請求方法コード
		if ("".equals(inMap.get("seiky_way_cd")))
		{
			template.setNull(EKK0491C240CBSMsg.SEIKY_WAY_CD);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.SEIKY_WAY_CD, (String)inMap.get("seiky_way_cd"));
		}
		
		// 「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.16 FJ)中西 start
//		// 請求方法番号（口座） → 請求方法番号（口座）
//		if ("".equals(inMap.get("seiky_way_no_koza")))
//		{
//			template.setNull(EKK0491C240CBSMsg.SEIKY_WAY_NO_KOZA);
//		}
//		else
//		{
//			template.set(EKK0491C240CBSMsg.SEIKY_WAY_NO_KOZA, (String)inMap.get("seiky_way_no_koza"));
//		}
		
		// 部品呼び出し → 請求口座追加.請求方法番号（口座）
		if (inMap == null || JFUCommonUtil.isNull(inMap.get("seiky_way_no_koza")))
		{
			String strSeiky_way_no_koza = com.fujitsu.futurity.bp.custom.common.JFUBPCommon.getBPValueString(param,"JFUAddSeikyKozaCC","seiky_way_no_koza");
			if (JFUCommonUtil.isNull(strSeiky_way_no_koza)) {
				template.setNull(EKK0491C240CBSMsg.SEIKY_WAY_NO_KOZA);
			} else {
				template.set(EKK0491C240CBSMsg.SEIKY_WAY_NO_KOZA, strSeiky_way_no_koza);
			}
		}
		else
		{
			template.set(EKK0491C240CBSMsg.SEIKY_WAY_NO_KOZA, (String)inMap.get("seiky_way_no_koza"));
		}
		// 「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.16 FJ)中西 end

		// オーソリ修正による変更 2012/10/15 Otsuka start
		// 請求方法番号（クレジットカード） → 請求方法番号（クレジットカード）
		/*if ("".equals(inMap.get("seiky_way_no_crecard")))
		{
			template.setNull(EKK0491C240CBSMsg.SEIKY_WAY_NO_CRECARD);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.SEIKY_WAY_NO_CRECARD, (String)inMap.get("seiky_way_no_crecard"));
		}*/
		// 部品呼び出し → 審査済クレジットカード登録.請求方法番号（クレジットカード）
		//		template.set(EKK0491C240CBSMsg.SEIKY_WAY_NO_CRECARD, JFUBPCommon.getBPValueString(param, "EKK0521D020", "seiky_way_no_crecard"));
		if (inMap == null || inMap.get("seiky_way_no_crecard") == null || "".equals(inMap.get("seiky_way_no_crecard")))
		{
			String seikyWayNoCre = getWorkMapValue(param, "seiky_way_no_crecard", CC_WORK_AREA_NAME_AUTH);

			if (seikyWayNoCre == null)
			{
				template.setNull(EKK0491C240CBSMsg.SEIKY_WAY_NO_CRECARD);
			}
			else
			{
				template.set(EKK0491C240CBSMsg.SEIKY_WAY_NO_CRECARD, seikyWayNoCre);
			}
		}
		else
		{
			template.set(EKK0491C240CBSMsg.SEIKY_WAY_NO_CRECARD, (String)inMap.get("seiky_way_no_crecard"));
		}
		// オーソリ修正による変更 2012/10/15 Otsuka end

		// 予約適用開始希望年月日 → 予約適用開始希望年月日
		if ("".equals(inMap.get("rsv_tsta_kibo_ymd")))
		{
			template.setNull(EKK0491C240CBSMsg.RSV_TSTA_KIBO_YMD);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.RSV_TSTA_KIBO_YMD, (String)inMap.get("rsv_tsta_kibo_ymd"));
		}
		// 予約適用年月日 → 予約適用年月日
		/*if ("".equals(inMap.get("rsv_aply_ymd")))
		{
			template.setNull(EKK0491C240CBSMsg.RSV_APLY_YMD);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.RSV_APLY_YMD, (String)inMap.get("rsv_aply_ymd"));
		}*/
		// 運用日付を取得
		template.set(EKK0491C240CBSMsg.RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

		// 予約適用コード → 予約適用コード
		if ("".equals(inMap.get("rsv_aply_cd")))
		{
			template.setNull(EKK0491C240CBSMsg.RSV_APLY_CD);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.RSV_APLY_CD, (String)inMap.get("rsv_aply_cd"));
		}
		// 登録年月日時分秒 → 登録年月日時分秒
		if ("".equals(inMap.get("add_dtm")))
		{
			template.setNull(EKK0491C240CBSMsg.ADD_DTM);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.ADD_DTM, (String)inMap.get("add_dtm"));
		}
		// 登録オペレータアカウント → 登録オペレータアカウント
		if ("".equals(inMap.get("add_opeacnt")))
		{
			template.setNull(EKK0491C240CBSMsg.ADD_OPEACNT);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.ADD_OPEACNT, (String)inMap.get("add_opeacnt"));
		}
		// 更新年月日時分秒 → 更新年月日時分秒
		if ("".equals(inMap.get("upd_dtm")))
		{
			template.setNull(EKK0491C240CBSMsg.UPD_DTM);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.UPD_DTM, (String)inMap.get("upd_dtm"));
		}
		// 更新オペレータアカウント → 更新オペレータアカウント
		if ("".equals(inMap.get("upd_opeacnt")))
		{
			template.setNull(EKK0491C240CBSMsg.UPD_OPEACNT);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.UPD_OPEACNT, (String)inMap.get("upd_opeacnt"));
		}
		// 無効フラグ → 無効フラグ
		if ("".equals(inMap.get("mk_flg")))
		{
			template.setNull(EKK0491C240CBSMsg.MK_FLG);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.MK_FLG, (String)inMap.get("mk_flg"));
		}
		// 更新年月日時分秒(更新前) → 更新年月日時分秒(更新前)
		if ("".equals(inMap.get("upd_dtm_bf")))
		{
			template.setNull(EKK0491C240CBSMsg.UPD_DTM_BF);
		}
		else
		{
			// 2013/03/25【IT2-2013-0000325】Fujiwara Add Start
			if (inEKK0491A010 != null)
			{
				template.set(EKK0491C240CBSMsg.UPD_DTM_BF, (String)inEKK0491A010.get("upd_dtm"));

			}
			else
			{
				template.set(EKK0491C240CBSMsg.UPD_DTM_BF, (String)inMap.get("upd_dtm_bf"));
			}
			// 2013/03/25【IT2-2013-0000325】Fujiwara Add End
		}

		// -----ST2-2012-0001382(再修正) 2012/08/05 h.iwamoto START-----
		// 初回支払申込書送付要否 → 初回支払申込書送付要否
		if ("".equals(inMap.get("first_pay_mskmsho_sohu_yh")))
		{
			template.setNull(EKK0491C240CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YH);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YH, inMap.get("first_pay_mskmsho_sohu_yh"));
		}

		// 初回支払申込書受領年月日 → 初回支払申込書受領年月日
		if ("".equals(inMap.get("first_pay_mskmsho_rcp_ymd")))
		{
			template.setNull(EKK0491C240CBSMsg.FIRST_PAY_MSKMSHO_RCP_YMD);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.FIRST_PAY_MSKMSHO_RCP_YMD, inMap.get("first_pay_mskmsho_rcp_ymd"));
		}
		// -----ST2-2012-0001382(再修正) 2012/08/05 h.iwamoto END-----

		return template;
	}

	/**
	 * 請求支払先変更上りマッピング処理.<br>
	 * @param param リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0491C060(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		CAANMsg template = new CAANMsg(EKK0491C060CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0491C060CBSMsg.TEMPLATEID, "EKK0491C060");

		// 機能コード（デフォルト：１）
		template.set(EKK0491C060CBSMsg.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);

		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++ */
		/* ユーザデータ情報 */
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData("EKK0491C060");
		HashMap<String, Object> inEKK0491C240 = (HashMap<String, Object>)param.getData("EKK0491C240");
		HashMap<String, Object> inEKK0491A010 = (HashMap<String, Object>)param.getData("EKK0491A010");

		// 前回更新用マップ

		//		HashMap inListMap = (HashMap)param.getData("EKK0521D020");
		/* ++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++ */
		// 機能コード
		template.set(EKK0491C060CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME);
		if (workDataMap == null)
		{
			workDataMap = new HashMap();
			workMap.put(CC_WORK_AREA_NAME, workDataMap);
		}

		/* 業務データ設定 */
		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		// 請求契約番号 → 請求契約番号
		if ("".equals(inMap.get("seiky_kei_no")))
		{
			template.setNull(EKK0491C060CBSMsg.SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0491C060CBSMsg.SEIKY_KEI_NO, (String)inMap.get("seiky_kei_no"));
		}
		// 運用日付を取得
		template.set(EKK0491C060CBSMsg.RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

		// 申込明細番号 → 申込明細番号
		if ("".equals(inMap.get("mskm_dtl_no")))
		{
			template.setNull(EKK0491C060CBSMsg.MSKM_DTL_NO);
		}
		else
		{
			template.set(EKK0491C060CBSMsg.MSKM_DTL_NO, (String)inMap.get("mskm_dtl_no"));
		}

		// 更新年月日時分秒(更新前) → 更新年月日時分秒(更新前)
		if ("".equals(inMap.get("upd_dtm_bf")))
		{
			template.setNull(EKK0491C060CBSMsg.UPD_DTM_BF);
		}
		else
		{
			// 2013/03/25【IT2-2013-0000325】Fujiwara Add Start
			if (inEKK0491C240 != null)
			{
				template.set(EKK0491C060CBSMsg.UPD_DTM_BF, (String)inEKK0491C240.get("upd_dtm"));

			}
			else
			{
				template.set(EKK0491C060CBSMsg.UPD_DTM_BF, (String)inMap.get("upd_dtm_bf"));
			}
			// 2013/03/25【IT2-2013-0000325】Fujiwara Add End
		}

		//		// 異動区分 → 異動区分
		if ("".equals(inMap.get("ido_div")))
		{
			template.setNull(EKK0491C060CBSMsg.IDO_DIV);
		}
		else
		{
			template.set(EKK0491C060CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
		}

		// 初回支払申込書送付要否 → 初回支払申込書送付要否
		if ("".equals(inMap.get("first_pay_mskmsho_sohu_yh")))
		{
			template.setNull(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YH);
		}
		else
		{
			template.set(EKK0491C060CBSMsg.FIRST_PAY_MSKMSHO_SOHU_YH, inMap.get("first_pay_mskmsho_sohu_yh"));
		}
		// 初回支払申込書受領年月日 → 初回支払申込書受領年月日
		if ("".equals(inMap.get("first_pay_mskmsho_rcp_ymd")))
		{
			template.setNull(EKK0491C240CBSMsg.FIRST_PAY_MSKMSHO_RCP_YMD);
		}
		else
		{
			template.set(EKK0491C240CBSMsg.FIRST_PAY_MSKMSHO_RCP_YMD, inMap.get("first_pay_mskmsho_rcp_ymd"));
		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SEIKY_KEI_KANA, (String)inEKK0491A010.get("seiky_kei_kana"));

		}

		// 請求契約カナ名 → 請求契約カナ名
		if ("".equals(inMap.get("seiky_kei_kana")))
		{
			template.setNull(EKK0491C060CBSMsg.SEIKY_KEI_KANA);
		}
		else
		{
			template.set(EKK0491C060CBSMsg.SEIKY_KEI_KANA, (String)inMap.get("seiky_kei_kana"));
		}

		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.INFO_DSP_CD, (String)inEKK0491A010.get("info_dsp_cd"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SEIKYUS_HAKKO_YH, (String)inEKK0491A010.get("seikyus_hakko_yh"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SKS_SHS_KSH_AD_SAI_FLG, (String)inEKK0491A010.get("sks_shs_ksh_ad_sai_flg"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SKS_SHS_NM_CUST_NM_SAI_FLG, (String)inEKK0491A010.get("sks_shs_nm_cust_nm_sai_flg"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SHS_HOJIN_SBT_CD, (String)inEKK0491A010.get("shs_hojin_sbt_cd"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SHS_HOJIN_ZENGO_SHITEI_CD, (String)inEKK0491A010.get("shs_hojin_zengo_shitei_cd"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SKS_SHS_NM_CUST_NM_SAI_FLG, (String)inEKK0491A010.get("sks_shs_nm_cust_nm_sai_flg"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_NM, (String)inEKK0491A010.get("sohus_nm"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_BKM, (String)inEKK0491A010.get("sohus_bkm"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_TNTSHA_NM, (String)inEKK0491A010.get("sohus_tntsha_nm"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_AD_CD, (String)inEKK0491A010.get("sohus_ad_cd"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_PCD, (String)inEKK0491A010.get("sohus_pcd"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_STATE_NM, (String)inEKK0491A010.get("sohus_state_nm"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_CITY_NM, (String)inEKK0491A010.get("sohus_city_nm"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_OAZTSU_NM, (String)inEKK0491A010.get("sohus_oaztsu_nm"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_AZCHO_NM, (String)inEKK0491A010.get("sohus_azcho_nm"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_ADRTTM, (String)inEKK0491A010.get("sohus_adrttm"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_ADRRM, (String)inEKK0491A010.get("sohus_adrrm"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_BNCHIGO, (String)inEKK0491A010.get("sohus_bnchigo"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_AD_MAN_INPUT_FLG, (String)inEKK0491A010.get("sohus_ad_man_input_flg"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_TELNO, (String)inEKK0491A010.get("sohus_telno"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_FAX_NO, (String)inEKK0491A010.get("sohus_fax_no"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SOHUS_MLAD, (String)inEKK0491A010.get("sohus_mlad"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SEIKYUS_SOHUS_CHGE_YMD, (String)inEKK0491A010.get("seikyus_sohus_chge_ymd"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SEIKY_WAY_APLY_ADJ_YMD, (String)inEKK0491A010.get("seiky_way_aply_adj_ymd"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.RSV_TSTA_KIBO_YMD, (String)inEKK0491A010.get("rsv_tsta_kibo_ymd"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.FIRST_SEIKY_YM, (String)inEKK0491A010.get("first_seiky_ym"));

		}
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C060CBSMsg.SHS_KANA, (String)inEKK0491A010.get("shs_kana"));

		}

		return template;
	}

	/**
	 * 請求支払先変更の下りマッピング処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	private IRequestParameterReadWrite editRetEKK0491C240(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData("EKK0491C240");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("EKK0491C240", dataMap);
		}

		// 課金先論理削除マップ.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0491C240CBSMsg.UPD_DTM))
		{
			dataMap.put("upd_dtm", new String());
		}
		else
		{
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0491C240CBSMsg.UPD_DTM));
		}

		// 課金先論理削除マップ.更新オペレータアカウント ← 更新オペレータアカウント
		if (parentTemplate.isNull(EKK0491C240CBSMsg.UPD_OPEACNT))
		{
			dataMap.put("upd_opeacnt", new String());
		}
		else
		{
			dataMap.put("upd_opeacnt", parentTemplate.getString(EKK0491C240CBSMsg.UPD_OPEACNT));
		}

		// エラー情報の設定
		param = editErrInfoEKK0491C240(param, parentTemplate, (Integer)return_code, "EKK0491C240");

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 * 請求支払先変更の下りマッピング処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	private IRequestParameterReadWrite editRetEKK0491C060(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 = param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		HashMap workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME);
		if (workDataMap == null)
		{
			workDataMap = new HashMap();
			workMap.put(CC_WORK_AREA_NAME, workDataMap);
		}

		HashMap dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		param.setData(fixedText, dataMap);

		// エラー情報の設定
		param = editErrInfoEKK0491C060(param, template, (Integer)returnCode, fixedText);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 * 請求支払先変更のエラー情報マッピング処理
	 * <br>
	 */
	private IRequestParameterReadWrite editErrInfoEKK0491C240(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		CAANMsg[] templateArray = null;
		ArrayList inList = null;

		int templateStatus = template.getInt(EKK0491C240CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		return param;
	}

	/**
	 * 請求契約内容変更のエラー情報マッピング処理
	 * <br>
	 */
	private IRequestParameterReadWrite editErrInfoEKK0491C060(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		CAANMsg[] templateArray = null;
		ArrayList inList = null;

		int templateStatus = template.getInt(EKK0491C060CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		return param;
	}

	/**
	 * 請求契約予約取消用上りマッピング処理.<br>
	 * @param param リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0491C220(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		CAANMsg template = new CAANMsg(EKK0491C220CBSMsg.class.getName());

		//		/* 2012/11/05 Y.Saitou IT1-2012-0001927 ADD-START */
		//		// 更新年月日時分秒(更新前) 
		//		// サービス契約最終更新年月日取得
		//		String updDtm = "";
		//		HashMap inRfrIfNm = null;
		//		HashMap inFUSV016011 = (HashMap)param.getData("FUSV016011CC"); // 割引サービス契約自動登録(ファミリーパック用)
		//		if (inFUSV016011 != null)
		//		{
		//			inRfrIfNm = inFUSV016011;
		//		}
		//
		//		if (inRfrIfNm != null)
		//		{
		//			updDtm = (String)inRfrIfNm.get("upd_dtm");
		//			if (updDtm == null)
		//			{
		//				updDtm = "";
		//			}
		//		}
		//		/* 2012/11/05 Y.Saitou IT1-2012-0001927 ADD-END */

		// 2013/03/25【IT2-2013-0000325】Fujiwara Add Start
		HashMap<String, Object> inEKK0491A010 = (HashMap<String, Object>)param.getData("EKK0491A010");
		// 2013/03/25【IT2-2013-0000325】Fujiwara Add End

		// テンプレートID（請求契約予約取消）
		template.set(EKK0521D020CBSMsg.TEMPLATEID, "EKK0491C220");

		// 機能コード（デフォルト：１（チェック＆登録）
		template.set(EKK0521D020CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		/* ユーザデータ情報 */
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData("EKK0491C220");

		// 機能コード
		template.set(EKK0491C220CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// 請求契約予約取消マップ.請求契約番号 → 請求契約番号
		if ("".equals(inMap.get("seiky_kei_no")))
		{
			template.setNull(EKK0491C220CBSMsg.SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0491C220CBSMsg.SEIKY_KEI_NO, (String)inMap.get("seiky_kei_no"));
		}

		// 請求契約予約取消マップ.世代登録年月日時分秒 → 世代登録年月日時分秒
		if ("".equals(inMap.get("gene_add_dtm")))
		{
			template.setNull(EKK0491C220CBSMsg.GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0491C220CBSMsg.GENE_ADD_DTM, (String)inMap.get("gene_add_dtm"));
		}

		// 請求契約予約取消マップ.更新年月日時分秒（更新前） → 更新年月日時分秒(更新前)
		// 2013/03/25【IT2-2013-0000325】Fujiwara Add Start
		if (inEKK0491A010 != null)
		{
			template.set(EKK0491C220CBSMsg.UPD_DTM_BF, (String)inEKK0491A010.get("upd_dtm"));

		}
		else
		{
			template.set(EKK0491C220CBSMsg.UPD_DTM_BF, (String)inMap.get("upd_dtm_bf"));
		}
		// 2013/03/25【IT2-2013-0000325】Fujiwara Add End

		//		/* 2012/11/05 Y.Saitou IT1-2012-0001927 MOD */
		//		if (updDtm.length() > 0)
		//		{
		//			template.set(EKK0491C220CBSMsg.UPD_DTM_BF, updDtm);
		//		}
		//		else if ("".equals(inMap.get("upd_dtm_bf")))
		//		{
		//			template.setNull(EKK0491C220CBSMsg.UPD_DTM_BF);
		//		}
		//		else
		//		{
		//			template.set(EKK0491C220CBSMsg.UPD_DTM_BF, (String)inMap.get("upd_dtm_bf"));
		//		}

		return template;
	}

	/**
	 * 請求契約予約取消の下りマッピング処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	private IRequestParameterReadWrite editRetEKK0491C220(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData("EKK0491C220");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("EKK0491C220", dataMap);
		}
		// 請求契約予約取消マップ.予約取消年月日 ← 予約取消年月日
		if (parentTemplate.isNull(EKK0491C220CBSMsg.RSV_CL_YMD))
		{
			dataMap.put("rsv_cl_ymd", new String());
		}
		else
		{
			dataMap.put("rsv_cl_ymd", parentTemplate.getString(EKK0491C220CBSMsg.RSV_CL_YMD));
		}

		// 請求契約予約取消マップ.予約適用コード ← 予約適用コード
		if (parentTemplate.isNull(EKK0491C220CBSMsg.RSV_APLY_CD))
		{
			dataMap.put("rsv_aply_cd", new String());
		}
		else
		{
			dataMap.put("rsv_aply_cd", parentTemplate.getString(EKK0491C220CBSMsg.RSV_APLY_CD));
		}

		// 請求契約予約取消マップ.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0491C220CBSMsg.UPD_DTM))
		{
			dataMap.put("upd_dtm", new String());
		}
		else
		{
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0491C220CBSMsg.UPD_DTM));
		}

		// 請求契約予約取消マップ.更新オペレータアカウント ← 更新オペレータアカウント
		if (parentTemplate.isNull(EKK0491C220CBSMsg.UPD_OPEACNT))
		{
			dataMap.put("upd_opeacnt", new String());
		}
		else
		{
			dataMap.put("upd_opeacnt", parentTemplate.getString(EKK0491C220CBSMsg.UPD_OPEACNT));
		}

		// エラー情報の設定
		param = editErrInfoEKK0491C220(param, parentTemplate, (Integer)return_code, "EKK0491C220");

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 * 請求契約予約取消のエラー情報マッピング処理
	 * <br>
	 */
	private IRequestParameterReadWrite editErrInfoEKK0491C220(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		CAANMsg[] templateArray = null;
		ArrayList inList = null;

		int templateStatus = template.getInt(EKK0491C220CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap inMap = null;

		// 作業項目領域
		Map workMap = (Map)param.getMappingWorkArea();

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("EKK0491C220");

		// 請求契約予約取消マップ.請求契約番号 → 請求契約番号 のエラー情報返却
		if (!template.isNull(EKK0491C220CBSMsg.SEIKY_KEI_NO_ERR))
		{
			if (!inMap.containsKey("seiky_kei_no_err"))
			{
				inMap.put("seiky_kei_no_err", template.getString(EKK0491C220CBSMsg.SEIKY_KEI_NO_ERR));
			}
		}
		// 請求契約予約取消マップ.世代登録年月日時分秒 → 世代登録年月日時分秒 のエラー情報返却
		if (!template.isNull(EKK0491C220CBSMsg.GENE_ADD_DTM_ERR))
		{
			if (!inMap.containsKey("gene_add_dtm_err"))
			{
				inMap.put("gene_add_dtm_err", template.getString(EKK0491C220CBSMsg.GENE_ADD_DTM_ERR));
			}
		}
		// 請求契約予約取消マップ.更新年月日時分秒（更新前） → 更新年月日時分秒(更新前) のエラー情報返却
		if (!template.isNull(EKK0491C220CBSMsg.UPD_DTM_BF_ERR))
		{
			if (!inMap.containsKey("upd_dtm_bf_err"))
			{
				inMap.put("upd_dtm_bf_err", template.getString(EKK0491C220CBSMsg.UPD_DTM_BF_ERR));
			}
		}

		return param;
	}

	/**
	 * 課金先登録.<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0321D010(IRequestParameterReadWrite param, String fixedText, int index) throws RequestParameterException
	{

		CAANMsg template = new CAANMsg(EKK0321D010CBSMsg.class.getName());
		CAANMsg[] templateArray = null;

		HashMap inMap = null;
		HashMap inListMap = null;
		ArrayList inList = null;

		// テンプレートID
		template.set(EKK0321D010CBSMsg.TEMPLATEID, fixedText);

		// 機能コード（デフォルト：１）
		template.set(EKK0321D010CBSMsg.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();

		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++ */
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		// 前回更新用マップ
		if (index > 0)
		{
			inListMap = (HashMap)((ArrayList)inMap.get(fixedText + "List")).get(index - 1);
		}
		if (index != -1)
		{
			inMap = (HashMap)((ArrayList)inMap.get(fixedText + "List")).get(index);
		}

		// 請求契約一覧照会(支払方法取得)マップを取得
		HashMap eKK0491B505Map = (HashMap)param.getData("EKK0491B505");
		/* ++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++ */

		// 機能コード
		template.set(EKK0321D010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// 課金先登録マップ.請求契約番号 → 請求契約番号
		if ("".equals(inMap.get("seiky_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.SEIKY_KEI_NO, (String)inMap.get("seiky_kei_no"));
		}

		// 課金先登録マップ.サービス契約番号 → サービス契約番号
		if ("".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		// 課金先登録マップ.サービス契約内訳番号 → サービス契約内訳番号
		if ("".equals(inMap.get("svc_kei_ucwk_no")))
		{
			template.setNull(EKK0321D010CBSMsg.SVC_KEI_UCWK_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.SVC_KEI_UCWK_NO, (String)inMap.get("svc_kei_ucwk_no"));
		}

		// 課金先登録マップ.機器提供サービス契約番号 → 機器提供サービス契約番号
		if ("".equals(inMap.get("kktk_svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.KKTK_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.KKTK_SVC_KEI_NO, (String)inMap.get("kktk_svc_kei_no"));
		}

		// 課金先登録マップ.機器オプションサービス契約番号 → 機器オプションサービス契約番号
		if ("".equals(inMap.get("kkop_svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.KKOP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.KKOP_SVC_KEI_NO, (String)inMap.get("kkop_svc_kei_no"));
		}

		// 課金先登録マップ.オプションサービス契約番号 → オプションサービス契約番号
		if ("".equals(inMap.get("op_svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.OP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.OP_SVC_KEI_NO, (String)inMap.get("op_svc_kei_no"));
		}

		// 課金先登録マップ.請求オプションサービス契約番号 → 請求オプションサービス契約番号
		if ("".equals(inMap.get("seiopsvc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.SEIOPSVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.SEIOPSVC_KEI_NO, (String)inMap.get("seiopsvc_kei_no"));
		}

		// 課金先登録マップ.サブオプションサービス契約番号 → サブオプションサービス契約番号
		if ("".equals(inMap.get("sbop_svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.SBOP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.SBOP_SVC_KEI_NO, (String)inMap.get("sbop_svc_kei_no"));
		}

		// 課金先登録マップ.割引サービス契約番号 → 割引サービス契約番号
		if ("".equals(inMap.get("wrib_svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO, (String)inMap.get("wrib_svc_kei_no"));
		}

		// 課金先登録マップ.オーナー契約番号 → オーナー契約番号
		if ("".equals(inMap.get("ownr_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.OWNR_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.OWNR_KEI_NO, (String)inMap.get("ownr_kei_no"));
		}

		// 課金先登録マップ.料金項目コード → 料金項目コード
		if ("".equals(inMap.get("prc_kmk_cd")))
		{
			template.setNull(EKK0321D010CBSMsg.PRC_KMK_CD);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.PRC_KMK_CD, (String)inMap.get("prc_kmk_cd"));
		}

		// 課金先登録マップ.課金先適用開始年月日 → 課金先適用開始年月日
		/*if ("".equals(inMap.get("kakins_tstaymd"))) {
			template.setNull(EKK0321D010CBSMsg.KAKINS_TSTAYMD);
		} else {
			template.set(EKK0321D010CBSMsg.KAKINS_TSTAYMD, JFUBPCommon.getOpeDate(null));
		}*/
		template.set(EKK0321D010CBSMsg.KAKINS_TSTAYMD, JFUBPCommon.getOpeDate(null));

		// 課金先登録マップ.課金先適用終了年月日 → 課金先適用終了年月日
		if ("".equals(inMap.get("kakins_tendymd")))
		{
			template.setNull(EKK0321D010CBSMsg.KAKINS_TENDYMD);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.KAKINS_TENDYMD, (String)inMap.get("kakins_tendymd"));
		}

		// 課金先登録マップ.更新年月日時分秒(更新前) → 更新年月日時分秒(更新前) 
		if(index <= 0){
			// 最初のみ
			if(eKK0491B505Map == null || eKK0491B505Map.size() == 0 || JFUBPCommon.isNull((String)eKK0491B505Map.get("upd_dtm")))
			{
				template.setNull(EKK0321D010CBSMsg.UPD_DTM_BF);
			}
			else
			{
				template.set(EKK0321D010CBSMsg.UPD_DTM_BF, (String)eKK0491B505Map.get("upd_dtm"));
			}
		}
		else
		{
			// 次から
			if(JFUBPCommon.isNull(inListMap.get("upd_dtm")))
			{
				template.setNull(EKK0321D010CBSMsg.UPD_DTM_BF);
			}
			else
			{
				template.set(EKK0321D010CBSMsg.UPD_DTM_BF, (String)inListMap.get("upd_dtm"));
			}
		}

		return template;
	}

	/**
	 * 課金先登録.<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0321D010Famipa(IRequestParameterReadWrite param, String fixedText, int index, HashMap<String, String> map)
			throws RequestParameterException
	{

		CAANMsg template = new CAANMsg(EKK0321D010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0321D010CBSMsg.TEMPLATEID, fixedText);

		// 機能コード（デフォルト：１）
		template.set(EKK0321D010CBSMsg.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);

		// 仮登録用の課金先マッピングの1件目から請求契約番号を引いてくる
		// 仮登録で作成した課金先を引き継ぎ先の課金先に更新する際に使用している請求契約番号を使用する
		String seikyKeiNo = (String)((HashMap)((ArrayList)((HashMap)param.getData(fixedText)).get(fixedText + "List")).get(0)).get("seiky_kei_no");

		// 請求契約一覧照会(支払方法取得)マップを取得
		HashMap eKK0491B505Map = (HashMap)param.getData("EKK0491B505");

		// 課金先登録マップ.請求契約番号 → 請求契約番号
		if (JFUBPCommon.isNull(seikyKeiNo))
		{
			template.setNull(EKK0321D010CBSMsg.SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.SEIKY_KEI_NO, seikyKeiNo);
		}

		// 課金先登録マップ.サービス契約番号 → サービス契約番号
		if ("".equals(map.get("svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.SVC_KEI_NO, (String)map.get("svc_kei_no"));
		}

		// 課金先登録マップ.サービス契約内訳番号 → サービス契約内訳番号
		if ("".equals(map.get("svc_kei_ucwk_no")))
		{
			template.setNull(EKK0321D010CBSMsg.SVC_KEI_UCWK_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.SVC_KEI_UCWK_NO, (String)map.get("svc_kei_ucwk_no"));
		}

		// 課金先登録マップ.機器提供サービス契約番号 → 機器提供サービス契約番号
		if ("".equals(map.get("kktk_svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.KKTK_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.KKTK_SVC_KEI_NO, (String)map.get("kktk_svc_kei_no"));
		}

		// 課金先登録マップ.オプションサービス契約番号 → オプションサービス契約番号
		if ("".equals(map.get("op_svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.OP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.OP_SVC_KEI_NO, (String)map.get("op_svc_kei_no"));
		}

		// 課金先登録マップ.請求オプションサービス契約番号 → 請求オプションサービス契約番号
		if ("".equals(map.get("seiopsvc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.SEIOPSVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.SEIOPSVC_KEI_NO, (String)map.get("seiopsvc_kei_no"));
		}

		// 課金先登録マップ.サブオプションサービス契約番号 → サブオプションサービス契約番号
		if ("".equals(map.get("sbop_svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.SBOP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.SBOP_SVC_KEI_NO, (String)map.get("sbop_svc_kei_no"));
		}

		// 課金先登録マップ.割引サービス契約番号 → 割引サービス契約番号
		if ("".equals(map.get("wrib_svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO, (String)map.get("wrib_svc_kei_no"));
		}

		// 課金先登録マップ.オーナー契約番号 → オーナー契約番号
		if ("".equals(map.get("ownr_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.OWNR_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.OWNR_KEI_NO, (String)map.get("ownr_kei_no"));
		}

		// 課金先登録マップ.料金項目コード → 料金項目コード
		if ("".equals(map.get("prc_kmk_cd")))
		{
			template.setNull(EKK0321D010CBSMsg.PRC_KMK_CD);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.PRC_KMK_CD, (String)map.get("prc_kmk_cd"));
		}

		// 課金先登録マップ.課金先適用開始年月日 → 課金先適用開始年月日
		template.set(EKK0321D010CBSMsg.KAKINS_TSTAYMD, JFUBPCommon.getOpeDate(null));

		// 課金先登録マップ.課金先適用終了年月日 → 課金先適用終了年月日
		if ("".equals(map.get("kakins_tendymd")))
		{
			template.setNull(EKK0321D010CBSMsg.KAKINS_TENDYMD);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.KAKINS_TENDYMD, (String)map.get("kakins_tendymd"));
		}

		// 課金先登録マップ.機器オプションサービス契約番号 → 機器オプションサービス契約番号
		if ("".equals(map.get("kkop_svc_kei_no")))
		{
			template.setNull(EKK0321D010CBSMsg.KKOP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.KKOP_SVC_KEI_NO, (String)map.get("kkop_svc_kei_no"));
		}

		// 課金先登録マップ.更新年月日時分秒(更新前) → 更新年月日時分秒(更新前) 
		if(eKK0491B505Map == null || eKK0491B505Map.size() == 0 || JFUBPCommon.isNull((String)eKK0491B505Map.get("upd_dtm")))
		{
			template.setNull(EKK0321D010CBSMsg.UPD_DTM_BF);
		}
		else
		{
			template.set(EKK0321D010CBSMsg.UPD_DTM_BF, (String)eKK0491B505Map.get("upd_dtm"));
		}

		return template;
	}

	/**
	/**
	 * 課金先登録下りマッピング処理.<br>
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	private IRequestParameterReadWrite editRetEKK0321D010Famipa(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		// 最終更新年月日時分秒を上書きする
		((HashMap<String, Object>)param.getData("EKK0491C220")).put(EKK0491C220CBSMsg.UPD_DTM, parentTemplate.getString(EKK0321D010CBSMsg.UPD_DTM));

		return param;
	}

	/**
	 * 課金先登録のエラー情報マッピング処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0321D010(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedText,
			int index) throws RequestParameterException
	{
		CAANMsg[] templateArray = null;

		int templateStatus = template.getInt(EKK0321D010CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap inMap = null;
		ArrayList inList = null;

		// 作業項目領域
		Map workMap = (Map)param.getMappingWorkArea();

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("EKK0321D010");
		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++ */
		if (index > -1)
		{
			inMap = (HashMap)((ArrayList)inMap.get("EKK0321D010List")).get(index);
		}
		/* ++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++ */

		// 課金先登録マップ.請求契約番号 → 請求契約番号 のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.SEIKY_KEI_NO_ERR))
		{
			if (!inMap.containsKey("seiky_kei_no_err"))
			{
				inMap.put("seiky_kei_no_err", template.getString(EKK0321D010CBSMsg.SEIKY_KEI_NO_ERR));
			}
		}
		// 課金先登録マップ.サービス契約番号 → サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template.getString(EKK0321D010CBSMsg.SVC_KEI_NO_ERR));
			}
		}
		// 課金先登録マップ.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.SVC_KEI_UCWK_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_ucwk_no_err"))
			{
				inMap.put("svc_kei_ucwk_no_err", template.getString(EKK0321D010CBSMsg.SVC_KEI_UCWK_NO_ERR));
			}
		}
		// 課金先登録マップ.機器提供サービス契約番号 → 機器提供サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.KKTK_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("kktk_svc_kei_no_err"))
			{
				inMap.put("kktk_svc_kei_no_err", template.getString(EKK0321D010CBSMsg.KKTK_SVC_KEI_NO_ERR));
			}
		}
		// 課金先登録マップ.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.OP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("op_svc_kei_no_err"))
			{
				inMap.put("op_svc_kei_no_err", template.getString(EKK0321D010CBSMsg.OP_SVC_KEI_NO_ERR));
			}
		}
		// 課金先登録マップ.請求オプションサービス契約番号 → 請求オプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.SEIOPSVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("seiopsvc_kei_no_err"))
			{
				inMap.put("seiopsvc_kei_no_err", template.getString(EKK0321D010CBSMsg.SEIOPSVC_KEI_NO_ERR));
			}
		}
		// 課金先登録マップ.サブオプションサービス契約番号 → サブオプションサービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.SBOP_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("sbop_svc_kei_no_err"))
			{
				inMap.put("sbop_svc_kei_no_err", template.getString(EKK0321D010CBSMsg.SBOP_SVC_KEI_NO_ERR));
			}
		}
		// 課金先登録マップ.割引サービス契約番号 → 割引サービス契約番号 のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("wrib_svc_kei_no_err"))
			{
				inMap.put("wrib_svc_kei_no_err", template.getString(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO_ERR));
			}
		}
		// 課金先登録マップ.オーナー契約番号 → オーナー契約番号 のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.OWNR_KEI_NO_ERR))
		{
			if (!inMap.containsKey("ownr_kei_no_err"))
			{
				inMap.put("ownr_kei_no_err", template.getString(EKK0321D010CBSMsg.OWNR_KEI_NO_ERR));
			}
		}
		// 課金先登録マップ.料金項目コード → 料金項目コード のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.PRC_KMK_CD_ERR))
		{
			if (!inMap.containsKey("prc_kmk_cd_err"))
			{
				inMap.put("prc_kmk_cd_err", template.getString(EKK0321D010CBSMsg.PRC_KMK_CD_ERR));
			}
		}
		// 課金先登録マップ.課金先適用開始年月日 → 課金先適用開始年月日 のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.KAKINS_TSTAYMD_ERR))
		{
			if (!inMap.containsKey("kakins_tstaymd_err"))
			{
				inMap.put("kakins_tstaymd_err", template.getString(EKK0321D010CBSMsg.KAKINS_TSTAYMD_ERR));
			}
		}
		// 課金先登録マップ.課金先適用終了年月日 → 課金先適用終了年月日 のエラー情報返却
		if (!template.isNull(EKK0321D010CBSMsg.KAKINS_TENDYMD_ERR))
		{
			if (!inMap.containsKey("kakins_tendymd_err"))
			{
				inMap.put("kakins_tendymd_err", template.getString(EKK0321D010CBSMsg.KAKINS_TENDYMD_ERR));
			}
		}
		return param;
	}

	/**
	/**
	 * 課金先登録下りマッピング処理.<br>
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0321D010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, int index)
			throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;
		HashMap childMap = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		// ++++++++++++++++++++ v1.00.00 追加開始 ++++++++++++++++++++++++++ */
		if (index > -1)
		{
			dataList = (ArrayList)dataMap.get(fixedText + "List");
			if (dataList == null)
			{
				dataList = new ArrayList();
				dataMap.put(fixedText + "List", dataList);
			}

			childMap = (HashMap)dataList.get(index);
			if (childMap == null)
			{
				childMap = new HashMap();
				dataList.add(index, childMap);
			}
		}
		else
		{
			childMap = (HashMap)param.getData(fixedText);
		}
		// +++++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++++++++ */

		// 課金先登録マップ.課金先番号 ← 課金先番号
		if (parentTemplate.isNull(EKK0321D010CBSMsg.KAKINS_NO))
		{
			childMap.put("kakins_no", new String());
		}
		else
		{
			childMap.put("kakins_no", parentTemplate.getString(EKK0321D010CBSMsg.KAKINS_NO));
		}

		// 課金先登録マップ.登録年月日時分秒 ← 登録年月日時分秒
		if (parentTemplate.isNull(EKK0321D010CBSMsg.ADD_DTM))
		{
			childMap.put("add_dtm", new String());
		}
		else
		{
			childMap.put("add_dtm", parentTemplate.getString(EKK0321D010CBSMsg.ADD_DTM));
		}

		// 課金先登録マップ.登録オペレータアカウント ← 登録オペレータアカウント
		if (parentTemplate.isNull(EKK0321D010CBSMsg.ADD_OPEACNT))
		{
			childMap.put("add_opeacnt", new String());
		}
		else
		{
			childMap.put("add_opeacnt", parentTemplate.getString(EKK0321D010CBSMsg.ADD_OPEACNT));
		}

		// 課金先登録マップ.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0321D010CBSMsg.UPD_DTM))
		{
			childMap.put("upd_dtm", new String());
		}
		else
		{
			childMap.put("upd_dtm", parentTemplate.getString(EKK0321D010CBSMsg.UPD_DTM));
		}

		// 課金先登録マップ.更新オペレータアカウント ← 更新オペレータアカウント
		if (parentTemplate.isNull(EKK0321D010CBSMsg.UPD_OPEACNT))
		{
			childMap.put("upd_opeacnt", new String());
		}
		else
		{
			childMap.put("upd_opeacnt", parentTemplate.getString(EKK0321D010CBSMsg.UPD_OPEACNT));
		}

		// 課金先登録マップ.無効フラグ ← 無効フラグ
		if (parentTemplate.isNull(EKK0321D010CBSMsg.MK_FLG))
		{
			childMap.put("mk_flg", new String());
		}
		else
		{
			childMap.put("mk_flg", parentTemplate.getString(EKK0321D010CBSMsg.MK_FLG));
		}

		// エラー情報の設定
		param = editErrInfoEKK0321D010(param, parentTemplate, (Integer)return_code, fixedText, index);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 * サービス契約支払い方法継続用上りマッピング処理.<br>
	 * @param param リクエストパラメータ
	 * @param fixedText fixedText
	 * @param index 処理対象のindex
	 * @param inLastUpdDtm サービス契約の最終更新年月日時分秒
	 * @return HashMap<String, Object>
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0081C012(IRequestParameterReadWrite param, String fixedText, int index, String inLastUpdDtm) throws Exception
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		CAANMsg template = new CAANMsg(EKK0081C012CBSMsg.class.getName());
		CAANMsg[] templateArray = null;

		HashMap inMap = null;
		ArrayList inList = null;
		HashMap inListMap = null;
		HashMap inRfrIfNm = null;

		// テンプレートID
		template.set(EKK0081C012CBSMsg.TEMPLATEID, "EKK0081C012");

		// 機能コード（デフォルト：１）
		template.set(EKK0081C012CBSMsg.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();

		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++++++++++++++++ */
		/* ユーザデータ情報 */
		//inMap = (HashMap)param.getData("EKK0081C012");// 2011.12.21 削除
		inMap = (HashMap)param.getData(fixedText);
		if (index != -1)
		{
			inMap = (HashMap)((ArrayList)inMap.get(fixedText + "List")).get(index);
		}
		// 更新年月日時分秒(更新前) 
		// サービス契約最終更新年月日取得
		String svcNm = (String)inMap.get("svc_nm");
		String updDtm = "";
		String temUpdDtm = null;
		// ネット
		if (svcNm.equals(NET))
		{
			// 共有マップの値を取得(2014年2月案件では、JFUAddSvcKeiNetOpCCにて設定)
			String lastUpdDtm = null;
			temUpdDtm = JFUBPCommon.getNetSvkeiLastUpdDtm(param, lastUpdDtm);
			
			/* 2012/11/05 Y.Saitou IT1-2012-0001927 ADD */
			HashMap inFUSV016011 = (HashMap)param.getData("FUSV016011CC"); // 割引サービス契約自動登録(ファミリーパック用)
			HashMap inEKK0341 = (HashMap)param.getData("EKK0341D010Sml"); // 機器提供サービス契約登録(スマートリンク用)
			if (inFUSV016011 != null)
			{
				inRfrIfNm = (HashMap)param.getData("FUSV016011CC");
			}
			else if (inEKK0341 != null)
			{
				inRfrIfNm = (HashMap)param.getData("EKK0341D010Sml");
			}
		}
		// 電話
		if (svcNm.equals(TEL))
		{
			// 共有マップの値を取得(2014年2月案件では、JFUAddSvcKeiNetOpCCにて設定)
			String lastUpdDtm = null;
			temUpdDtm = JFUBPCommon.getTelSvkeiLastUpdDtm(param, lastUpdDtm);
			
			HashMap inEKK0371 = (HashMap)param.getData("EKK0371D010");// オプションサービス契約＜電話＞リストマップ
			HashMap inEKK0191 = (HashMap)param.getData("EKK0191C012");// サービス契約内訳＜電話＞リストマップ
			if (inEKK0371 != null)
			{
				int cntEKK0371 = inEKK0371.size();
				inRfrIfNm = (HashMap)((ArrayList)inEKK0371.get("EKK0371D010List")).get(cntEKK0371 - 1);
			}
			else if (inEKK0191 != null)
			{
				int cntEKK0191 = inEKK0191.size();
				inRfrIfNm = (HashMap)((ArrayList)inEKK0191.get("EKK0191C012List")).get(cntEKK0191 - 1);
			}
		}
		// テレビ
		if (svcNm.equals(TV))
		{
			// 共有マップの値を取得(2014年2月案件では、JFUAddSvcKeiNetOpCCにて設定)
			String lastUpdDtm = null;
			temUpdDtm = JFUBPCommon.getTvSvkeiLastUpdDtm(param, lastUpdDtm);
			
			HashMap inEKK0381 = (HashMap)param.getData("EKK0381D010");// オプションサービス契約＜TV＞
			if (inEKK0381 != null)
			{
				int cntEKK0381 = inEKK0381.size();
				inRfrIfNm = (HashMap)param.getData("EKK0381D010");
			}
		}
		// モバイル
		if (svcNm.equals(MOB))
		{
			HashMap inEKK0341 = (HashMap)param.getData("EKK0341C230");// 機器提供サービス情報変更
			if (inEKK0341 != null)
			{
				int cntEKK0341 = inEKK0341.size();
				inRfrIfNm = (HashMap)param.getData("EKK0341C230");
			}
		}

		
		if (temUpdDtm != null && inRfrIfNm == null)
		{
			updDtm = temUpdDtm;
		}
		else
		{
			if (inRfrIfNm != null)
			{
				updDtm = (String)inRfrIfNm.get("upd_dtm");
				if (updDtm == null)
				{
					updDtm = "";
				}
			}
		}
		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++++++++++++++++ */
		// ■■■■■最終更新年月日時分秒を置換■■■■■
		JFUBPCommon.printBpDebugLog(this.getClass(), "■■■ updDtm=" + updDtm + " inLastUpdDtm=" + inLastUpdDtm + " ■■■");
		if (!JFUBPCommon.isNull(inLastUpdDtm))
		{
			updDtm = inLastUpdDtm;
		}
		JFUBPCommon.printBpDebugLog(this.getClass(), "■■■ replace updDtm=" + updDtm + " ■■■");

		// 機能コード
		template.set(EKK0081C012CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// サービス契約支払い方法継続変更マップ.サービス契約番号 → サービス契約番号
		if ("".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0081C012CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0081C012CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		// サービス契約支払い方法継続変更マップ.世代登録年月日時分秒 → 世代登録年月日時分秒
		if ("".equals(inMap.get("gene_add_dtm")))
		{
			template.setNull(EKK0081C012CBSMsg.GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0081C012CBSMsg.GENE_ADD_DTM, (String)inMap.get("gene_add_dtm"));
		}

		// サービス契約支払い方法継続変更マップ.支払い方法継続フラグ → 支払い方法継続フラグ
		if ("".equals(inMap.get("payway_keizoku_flg")))
		{
			template.setNull(EKK0081C012CBSMsg.PAYWAY_KEIZOKU_FLG);
		}
		else
		{
			template.set(EKK0081C012CBSMsg.PAYWAY_KEIZOKU_FLG, (String)inMap.get("payway_keizoku_flg"));
		}

		// サービス契約支払い方法継続変更マップ.更新年月日時分秒（更新前） → 更新年月日時分秒(更新前)
		/*if ("".equals(inMap.get("upd_dtm_bf"))) {
			template.setNull(EKK0081C012CBSMsg.UPD_DTM_BF);
		} else {
			template.set(EKK0081C012CBSMsg.UPD_DTM_BF, (String) inMap.get("upd_dtm_bf"));
		}*/

		if (updDtm.length() > 0)
		{
			template.set(EKK0081C012CBSMsg.UPD_DTM_BF, updDtm);
		}
		else
		{
			template.set(EKK0081C012CBSMsg.UPD_DTM_BF, (String)inMap.get("upd_dtm_bf"));
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return template;
	}

	/**
	 * サービス契約支払い方法継続変更のエラー処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0081C012(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedTex,
			int index) throws RequestParameterException
	{
		CAANMsg[] templateArray = null;
		ArrayList inList = null;

		int templateStatus = template.getInt(EKK0081C012CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap inMap = null;

		// 作業項目領域
		Map workMap = (Map)param.getMappingWorkArea();

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("EKK0081C012");

		//  サービス契約支払い方法継続変更マップ.サービス契約番号 → サービス契約 のエラー情報返却
		if (!template.isNull(EKK0081C012CBSMsg.SVC_KEI_NO_ERR))
		{
			if (!inMap.containsKey("svc_kei_no_err"))
			{
				inMap.put("svc_kei_no_err", template.getString(EKK0081C012CBSMsg.SVC_KEI_NO_ERR));
			}
		}

		return param;
	}

	/**
	 * サービス契約支払い方法継続変更の下りマッピング処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0081C012(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, int index)
			throws Exception
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData("EKK0081C012");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("EKK0081C012", dataMap);
		}

		// ++++++++++++++++++++ v1.00.00 追加開始 ++++++++++++++++++++++++++ */
		dataList = (ArrayList)dataMap.get("EKK0081C012List");
		if (dataList == null)
		{
			dataList = new ArrayList();
			dataMap.put("EKK0081C012List", dataList);
		}

		HashMap childMap = (HashMap)dataList.get(index);
		if (childMap == null)
		{
			childMap = new HashMap();
			dataList.add(index, childMap);
		}
		// +++++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++++++++ */

		// サービス契約支払い方法継続変更マップ.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0081C012CBSMsg.UPD_DTM))
		{
			childMap.put("upd_dtm", new String());
		}
		else
		{
			childMap.put("upd_dtm", parentTemplate.getString(EKK0081C012CBSMsg.UPD_DTM));
		}

		// サービス契約支払い方法継続変更マップ.更新オペレータアカウント ← 更新オペレータアカウント
		if (parentTemplate.isNull(EKK0081C012CBSMsg.UPD_OPEACNT))
		{
			childMap.put("upd_opeacnt", new String());
		}
		else
		{
			childMap.put("upd_opeacnt", parentTemplate.getString(EKK0081C012CBSMsg.UPD_OPEACNT));
		}

		// エラー情報の設定
		param = editErrInfoEKK0081C012(param, parentTemplate, (Integer)return_code, "EKK0081C012", index);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 * 単一CAANMsgのマッピング処理
	 * <br>
	 * @param paramMap
	 * @param template
	 * @return
	 */
	private HashMap<String, Object> putParamMap(HashMap<String, Object> paramMap, CAANMsg template) throws RequestParameterException
	{
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * SCの実行ステータスの取得処理
	 * <br>
	 * @param param
	 * @return
	 */
	private int getReturnCode(IRequestParameterReadWrite param) throws Exception
	{
		return Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
	}

	/**
	 * エラー情報のマッピング処理
	 * <br>
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, Integer returnCode)
			throws RequestParameterException
	{
		int i = 0;
		String fixedText = "";
		HashMap creditMap = null;
		HashMap seikyuuMap = null;
		HashMap seikyuuMap2 = null;
		HashMap inEKK0491 = null;
		HashMap inEKK0321 = null;
		HashMap inEKK0081 = null;

		//		creditMap = (HashMap)(param.getData("EKK0521D020"));
		seikyuuMap = (HashMap)(param.getData("EKK0491C240"));
		seikyuuMap2 = (HashMap)(param.getData("EKK0491C060"));
		inEKK0491 = (HashMap)(param.getData("EKK0491C220"));// 請求契約予約取消
		inEKK0321 = (HashMap)(param.getData("EKK0321D010"));// 課金先登録
		inEKK0081 = (HashMap)(param.getData("EKK0081C012"));// サービス契約支払い方法継続
		if (creditMap != null && seikyuuMap != null && inEKK0491 != null && inEKK0321 != null && inEKK0081 != null)
		{
			return param;
		}
		//処理に必要なマップのどちらかがnullの場合は処理を行いません。
		// No708 2013/04/24 Otsuka start
		//		if (creditMap != null && seikyuuMap != null)
		if (seikyuuMap != null)
		{
			//			editErrInfoEKK0521D020(param, templates[i], returnCode, "EKK0521D020"); // クレジット請求手続き

			editErrInfoEKK0491C240(param, templates[i], returnCode, "EKK0491C240"); // 請求支払先変更
			i++;
		}

		if (seikyuuMap2 != null)
		{
			editErrInfoEKK0491C060(param, templates[i], returnCode, "EKK0491C060"); // 請求契約内容変更
			i++;
		}

		if (inEKK0491 != null && inEKK0321 != null && inEKK0081 != null)
		{
			editErrInfoEKK0491C220(param, templates[i], returnCode, "EKK0491C220"); // 請求契約予約取消
			i++;

			int cntEKK0321 = ((ArrayList)inEKK0321.get("EKK0321D010List")).size();
			for (int j = 0; j < cntEKK0321; j++)
			{
				editErrInfoEKK0321D010(param, templates[j + i], returnCode, "EKK0321D010", j); // 課金先登録
			}
			i = i + cntEKK0321;

			int cntEKK0081 = ((ArrayList)inEKK0081.get("EKK0081C012List")).size();
			for (int k = 0; k < cntEKK0081; k++)
			{
				editErrInfoEKK0081C012(param, templates[k + i], returnCode, "EKK0081C012", k); // サービス契約支払い方法継続
			}
		}
		// No708 2013/04/24 Otsuka end
		return param;
	}

	//---- ST2-2012-0001437 2012/08/06 h.ikeda start ----//
	/**
	 * 課金先一覧照会（サービス契約番号関連）用の下りマッピング処理 <br>
	 * 
	 * @param param
	 * @param fixedText
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0321B002(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData("EKK0321B002");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("EKK0321B002", dataMap);
		}

		templateArray = parentTemplate.getCAANMsgList(EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0321B002CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				// 課金先番号
				if (childTemplate.isNull(EKK0321B002CBSMsg1List.KAKINS_NO))
				{
					// 値は設定しない
				}
				else
				{
					kakins_list.add(childTemplate.getString(EKK0321B002CBSMsg1List.KAKINS_NO));
				}

			}
		}
		dataMap.put("EKK0321B002CBSMsg1List", dataList);

		// エラー情報の設定
		param = editErrInfoEKK0321E010(param, parentTemplate, (Integer)return_code, "EKK0321B002");

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 * 課金先一覧照会（サービス契約番号関連）用上りマッピング処理.<br>
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	/* 2012/11/28 IT2-2012-0001841 Y.Saitou MOD */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0321B002(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		CAANMsg template = new CAANMsg(EKK0321B002CBSMsg.class.getName());
		CAANMsg[] templateArray = null;

		HashMap inMap = null;
		ArrayList inList = null;
		HashMap inListMap = null;
		HashMap inRfrIfNm = null;
		HashMap svcKeiMap = null;

		// テンプレートID
		template.set(EKK0321E010CBSMsg.TEMPLATEID, "EKK0321B002");

		// オペレータ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();

		// 機能コード
		template.set(EKK0321B002CBSMsg.FUNC_CODE, "1");

		/* ユーザデータ情報 */
		String svc_kei_no = "";
		inMap = (HashMap)param.getData(fixedText);

		/* 2012/11/28 IT2-2012-0001841 Y.Saitou DEL */

		// 課金先一覧照会（サービス契約番号関連）マップ.ＫＥＹ＿請求契約番号 → ＫＥＹ＿請求契約番号
		if ("".equals(inMap.get("key_seiky_kei_no")))
		{
			template.setNull(EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO, (String)inMap.get("key_seiky_kei_no"));
		}

		/* 2012/11/28 IT2-2012-0001841 Y.Saitou DEL */

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return template;
	}

	/**
	 * 課金先一意照会用上りマッピング処理.<br>
	 * 
	 * @param param リクエストパラメータ
	 * @param seikyKeiMap 請求契約の一意照会戻り値
	 * @param svcKeiNo サービス契約番号
	 * @param fixedText
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0321A010(IRequestParameterReadWrite param, String fixedText, int index) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		CAANMsg template = new CAANMsg(EKK0321A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0321A010CBSMsg.TEMPLATEID, fixedText);

		// オペレータ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);

		// 機能コード
		template.set(EKK0321A010CBSMsg.FUNC_CODE, "1");

		// 課金先番号
		String kakins = (String)kakins_list.get(index);
		// 課金先論理削除マップ.課金先番号 → 課金先番号
		if ("".equals(kakins))
		{
			template.setNull(EKK0321A010CBSMsg.KEY_KAKINS_NO);
		}
		else
		{
			template.set(EKK0321A010CBSMsg.KEY_KAKINS_NO, kakins);
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return template;
	}

	/**
	 * 課金先一意照会の下りマッピング処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	private HashMap<String, String> editRetEKK0321A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData(fixedText, dataMap);
		}

		templateArray = parentTemplate.getCAANMsgList(EKK0321A010CBSMsg.EKK0321A010CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0321A010CBSMsg1List");

		HashMap<String, String> rtnMap = new HashMap<String, String>();

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];

				// 請求契約番号
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.SEIKY_KEI_NO, "seiky_kei_no");
				// サービス契約番号
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.SVC_KEI_NO, "svc_kei_no");
				// サービス契約内訳番号
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.SVC_KEI_UCWK_NO, "svc_kei_ucwk_no");
				// 機器提供サービス契約番号
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.KKTK_SVC_KEI_NO, "kktk_svc_kei_no");
				// オプションサービス契約番号
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.OP_SVC_KEI_NO, "op_svc_kei_no");
				// 請求オプションサービス契約番号
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.SEIOPSVC_KEI_NO, "seiopsvc_kei_no");
				// サブオプションサービス契約番号
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.SBOP_SVC_KEI_NO, "sbop_svc_kei_no");
				// 割引サービス契約番号
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.WRIB_SVC_KEI_NO, "wrib_svc_kei_no");
				// オーナー契約番号
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.OWNR_KEI_NO, "ownr_kei_no");
				// 料金項目コード
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.PRC_KMK_CD, "prc_kmk_cd");
				// 課金先適用終了年月
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.KAKINS_TENDYMD, "kakins_tendymd");
				// 機器オプションサービス契約番号
				this.putValue(childTemplate, rtnMap, EKK0321A010CBSMsg1List.KKOP_SVC_KEI_NO, "kkop_svc_kei_no");
			}
		}

		return rtnMap;
	}

	/**
	 * 課金先一意照会の結果設定メソッド
	 * 
	 * <br>
	 * @param childTemplate
	 * @param rtnMap
	 * @param getKey
	 * @param setKey
	 */
	private void putValue(CAANMsg childTemplate, HashMap<String, String> rtnMap, String getKey, String setKey)
	{
		if (!childTemplate.isNull(getKey))
		{
			rtnMap.put(setKey, childTemplate.getString(getKey));
		}
		else
		{
			rtnMap.put(setKey, JFUStrConst.EMPTY);
		}
	}

	/**
	 * 課金先論理削除用上りマッピング処理.<br>
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg editInEKK0321E010(IRequestParameterReadWrite param, String fixedText, int index) throws RequestParameterException
	{

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		CAANMsg template = new CAANMsg(EKK0321E010CBSMsg.class.getName());
		CAANMsg[] templateArray = null;

		HashMap<String, Object> inMap = null;
		ArrayList inList = null;
		HashMap inListMap = null;
		HashMap inRfrIfNm = null;
		ArrayList dataList = null;

		// テンプレートID
		template.set(EKK0321E010CBSMsg.TEMPLATEID, "EKK0321E010");

		// オペレータ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);

		String kakins = (String)kakins_list.get(index);

		// 機能コード
		template.set(EKK0321E010CBSMsg.FUNC_CODE, "1");

		// 課金先論理削除マップ.課金先番号 → 課金先番号
		if ("".equals(kakins))
		{
			template.setNull(EKK0321E010CBSMsg.KAKINS_NO);
		}
		else
		{
			template.set(EKK0321E010CBSMsg.KAKINS_NO, kakins);
		}

		// 課金先論理削除マップ.更新年月日時分秒(更新前) → 更新年月日時分秒(更新前)
		template.set(EKK0321E010CBSMsg.UPD_DTM_BF, ((HashMap<String, Object>)param.getData("EKK0491C220")).get(EKK0491C220CBSMsg.UPD_DTM));

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return template;
	}

	/**
	 * 課金先論理削除の下りマッピング処理 <br>
	 * 
	 * @param param
	 * @param fixedText
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editRetEKK0321E010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, int index)
			throws Exception
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData("EKK0321E010");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("EKK0321E010", dataMap);
		}

		// 課金先論理削除マップ.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0321E010CBSMsg.UPD_DTM))
		{
			dataMap.put("upd_dtm", new String());
		}
		else
		{
			dataMap.put("upd_dtm", parentTemplate.getString(EKK0321E010CBSMsg.UPD_DTM));
		}

		// 課金先論理削除マップ.更新オペレータアカウント ← 更新オペレータアカウント
		if (parentTemplate.isNull(EKK0321E010CBSMsg.UPD_OPEACNT))
		{
			dataMap.put("upd_opeacnt", new String());
		}
		else
		{
			dataMap.put("upd_opeacnt", parentTemplate.getString(EKK0321E010CBSMsg.UPD_OPEACNT));
		}

		// エラー情報の設定
		param = editErrInfoEKK0321E010(param, parentTemplate, (Integer)return_code, "EKK0321E010");

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 * 課金先論理削除のエラー処理 <br>
	 * 
	 * @param param
	 * @param fixedText
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrInfoEKK0321E010(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedTex)
			throws RequestParameterException
	{
		CAANMsg[] templateArray = null;
		ArrayList inList = null;

		int templateStatus = template.getInt(EKK0081C012CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap inMap = null;

		// 作業項目領域
		Map workMap = (Map)param.getMappingWorkArea();

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("EKK0321E010");

		// サービス契約支払い方法継続変更マップ.サービス契約番号 → サービス契約 のエラー情報返却
		if (!template.isNull(EKK0321E010CBSMsg.KAKINS_NO_ERR))
		{
			if (!inMap.containsKey("kakins_no_err"))
			{
				inMap.put("kakins_no_err", template.getString(EKK0321E010CBSMsg.KAKINS_NO_ERR));
			}
		}

		return param;
	}

	//---- ST2-2012-0001437 2012/08/06 h.ikeda end ----//

	/**
	 * 作業エリア
	 */
	@SuppressWarnings("null")
	private String getWorkMapValue(IRequestParameterReadOnly param, String key, String fixText) throws RequestParameterException
	{
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();

		HashMap inMap = null;
		/* 作業項目情報 */
		if (workMap != null)
		{
			inMap = (HashMap)workMap.get(fixText);
		}
		else
		{
			inMap = null;
		}

		String result = null;
		if (inMap != null)
		{
			result = (String)inMap.get(key);
		}

		if ("".equals(result))
		{
			result = null;
		}

		return result;
	}

	// 2013/03/25【IT2-2013-0000325】Fujiwara Add Start
	/**
	 * 請求契約一意照会上りマッピング処理.<br>
	 * @param param リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0491A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		CAANMsg template = new CAANMsg(EKK0491A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0491A010CBSMsg.TEMPLATEID, "EKK0491A010");

		// 機能コード
		template.set(EKK0491A010CBSMsg.FUNC_CODE, "2");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		//		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		Object operateDate = JFUBPCommon.getOpeDate(null); //障害No.715 テレビにネット追加障害対応
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++ */
		/* ユーザデータ情報 */
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData("EKK0491C060");
		if (inMap == null)
		{
			inMap = (HashMap<String, Object>)param.getData("EKK0491C220");
		}
		// 前回更新用マップ

		//		HashMap inListMap = (HashMap)param.getData("EKK0521D020");
		/* ++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++ */

		// 請求契約番号 → 請求契約番号
		if ("".equals(inMap.get("seiky_kei_no")))
		{
			template.setNull(EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO, (String)inMap.get("seiky_kei_no"));
		}

		// 運用日 → 予約適用年月日
		template.set(EKK0491A010CBSMsg.KEY_RSV_APLY_YMD, operateDate);

		return template;
	}

	/**
	 * 請求契約一意照会の下りマッピング処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0491B505(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0491B505CBSMsg.class.getName());
		CAANMsg[] templateArray = null;

		HashMap inMap = null;
		HashMap inListMap = null;
		ArrayList inList = null;

		// テンプレートID
		template.set(EKK0491B505CBSMsg.TEMPLATEID, fixedText);

		// 機能コード
		template.set(EKK0491B505CBSMsg.FUNC_CODE, "3");

		// オペレータ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);

		/* ユーザデータ情報 */
		inMap = (HashMap)((ArrayList)((HashMap)param.getData("EKK0321D010")).get("EKK0321D010List")).get(0);

		// 請求契約番号
		if (inMap == null || inMap.size() == 0 || JFUBPCommon.isNull(inMap.get("seiky_kei_no")))
		{
			template.setNull(EKK0491B505CBSMsg.KEY_SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0491B505CBSMsg.KEY_SEIKY_KEI_NO, (String)inMap.get("seiky_kei_no"));
		}

		return template;
	}

	/**
	 * 請求契約一意照会の下りマッピング処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	private IRequestParameterReadWrite editRetEKK0491A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData("EKK0491A010");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("EKK0491A010", dataMap);
		}

		templateArray = parentTemplate.getCAANMsgList(EKK0491A010CBSMsg.EKK0491A010CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0491A010CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				// 更新年月日時分秒
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.UPD_DTM))
				{
					dataMap.put("upd_dtm", childTemplate.getString(EKK0491A010CBSMsg1List.UPD_DTM));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.MANSION_OWNR_ID))
				{
					dataMap.put("mansion_ownr_id", childTemplate.getString(EKK0491A010CBSMsg1List.MANSION_OWNR_ID));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.NEXT_SEIKY_WAY_DIV))
				{
					dataMap.put("next_seiky_way_div", childTemplate.getString(EKK0491A010CBSMsg1List.NEXT_SEIKY_WAY_DIV));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKY_KEI_DSL_YMD))
				{
					dataMap.put("seiky_kei_dsl_ymd", childTemplate.getString(EKK0491A010CBSMsg1List.SEIKY_KEI_DSL_YMD));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKY_KEI_DLRE_CD))
				{
					dataMap.put("seiky_kei_dlre_cd", childTemplate.getString(EKK0491A010CBSMsg1List.SEIKY_KEI_DLRE_CD));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKY_KEI_DLRE_MEMO))
				{
					dataMap.put("seiky_kei_dlre_memo", childTemplate.getString(EKK0491A010CBSMsg1List.SEIKY_KEI_DLRE_MEMO));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKY_CYCLE_CD))
				{
					dataMap.put("seiky_cycle_cd", childTemplate.getString(EKK0491A010CBSMsg1List.SEIKY_CYCLE_CD));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKY_WAY_CHGE_YMD))
				{
					dataMap.put("seiky_way_chge_ymd", childTemplate.getString(EKK0491A010CBSMsg1List.SEIKY_WAY_CHGE_YMD));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKY_KEI_KANA))
				{
					dataMap.put("seiky_kei_kana", childTemplate.getString(EKK0491A010CBSMsg1List.SEIKY_KEI_KANA));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKY_WAY_NO_KOZA))
				{
					dataMap.put("seiky_way_no_koza", childTemplate.getString(EKK0491A010CBSMsg1List.SEIKY_WAY_NO_KOZA));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.INFO_DSP_CD))
				{
					dataMap.put("info_dsp_cd", childTemplate.getString(EKK0491A010CBSMsg1List.INFO_DSP_CD));
				}

				// 請求書発行要否
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKYUS_HAKKO_YH))
				{
					dataMap.put("seikyus_hakko_yh", childTemplate.getString(EKK0491A010CBSMsg1List.SEIKYUS_HAKKO_YH));
				}

				// 請求書送付先_契約者住所差異フラグ
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SKS_SHS_KSH_AD_SAI_FLG))
				{
					dataMap.put("sks_shs_ksh_ad_sai_flg", childTemplate.getString(EKK0491A010CBSMsg1List.SKS_SHS_KSH_AD_SAI_FLG));
				}

				// 請求書送付先名_お客様名差異フラグ
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SKS_SHS_NM_CUST_NM_SAI_FLG))
				{
					dataMap.put("sks_shs_nm_cust_nm_sai_flg", childTemplate.getString(EKK0491A010CBSMsg1List.SKS_SHS_NM_CUST_NM_SAI_FLG));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SHS_HOJIN_SBT_CD))
				{
					dataMap.put("shs_hojin_sbt_cd", childTemplate.getString(EKK0491A010CBSMsg1List.SHS_HOJIN_SBT_CD));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SHS_HOJIN_ZENGO_SHITEI_CD))
				{
					dataMap.put("shs_hojin_zengo_shitei_cd", childTemplate.getString(EKK0491A010CBSMsg1List.SHS_HOJIN_ZENGO_SHITEI_CD));
				}

				// 送付先カナ名
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SKS_SHS_NM_CUST_NM_SAI_FLG))
				{
					dataMap.put("sks_shs_nm_cust_nm_sai_flg", childTemplate.getString(EKK0491A010CBSMsg1List.SKS_SHS_NM_CUST_NM_SAI_FLG));
				}

				// 送付先名
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_NM))
				{
					dataMap.put("sohus_nm", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_NM));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_BKM))
				{
					dataMap.put("sohus_bkm", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_BKM));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_TNTSHA_NM))
				{
					dataMap.put("sohus_tntsha_nm", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_TNTSHA_NM));
				}

				// 送付先住所コード
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_AD_CD))
				{
					dataMap.put("sohus_ad_cd", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_AD_CD));
				}

				// 送付先郵便番号
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_PCD))
				{
					dataMap.put("sohus_pcd", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_PCD));
				}

				// 送付先都道府県名
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_STATE_NM))
				{
					dataMap.put("sohus_state_nm", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_STATE_NM));
				}

				// 送付先市区町村名
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_CITY_NM))
				{
					dataMap.put("sohus_city_nm", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_CITY_NM));
				}

				// 送付先大字通称名
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_OAZTSU_NM))
				{
					dataMap.put("sohus_oaztsu_nm", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_OAZTSU_NM));
				}

				// 送付先字丁目名
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_AZCHO_NM))
				{
					dataMap.put("sohus_azcho_nm", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_AZCHO_NM));
				}

				// 送付先住所補記・建物名
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_ADRTTM))
				{
					dataMap.put("sohus_adrttm", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_ADRTTM));
				}

				// 送付先住所補記・部屋番号
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_ADRRM))
				{
					dataMap.put("sohus_adrrm", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_ADRRM));
				}

				// 送付先番地号
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_BNCHIGO))
				{
					dataMap.put("sohus_bnchigo", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_BNCHIGO));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_AD_MAN_INPUT_FLG))
				{
					dataMap.put("sohus_ad_man_input_flg", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_AD_MAN_INPUT_FLG));
				}

				// 送付先電話番号
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_TELNO))
				{
					dataMap.put("sohus_telno", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_TELNO));
				}

				// 送付先FAX番号
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_FAX_NO))
				{
					dataMap.put("sohus_fax_no", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_FAX_NO));
				}

				// 送付先メールアドレス
				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SOHUS_MLAD))
				{
					dataMap.put("sohus_mlad", childTemplate.getString(EKK0491A010CBSMsg1List.SOHUS_MLAD));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKYUS_SOHUS_CHGE_YMD))
				{
					dataMap.put("seikyus_sohus_chge_ymd", childTemplate.getString(EKK0491A010CBSMsg1List.SEIKYUS_SOHUS_CHGE_YMD));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SEIKY_WAY_APLY_ADJ_YMD))
				{
					dataMap.put("seiky_way_aply_adj_ymd", childTemplate.getString(EKK0491A010CBSMsg1List.SEIKY_WAY_APLY_ADJ_YMD));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.KYOSEI_MADOGUCHI_FLG))
				{
					dataMap.put("kyosei_madoguchi_flg", childTemplate.getString(EKK0491A010CBSMsg1List.KYOSEI_MADOGUCHI_FLG));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.KYOSEI_MADOGUCHI_FLG))
				{
					dataMap.put("kyosei_madoguchi_flg", childTemplate.getString(EKK0491A010CBSMsg1List.KYOSEI_MADOGUCHI_FLG));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.RSV_TSTA_KIBO_YMD))
				{
					dataMap.put("rsv_tsta_kibo_ymd", childTemplate.getString(EKK0491A010CBSMsg1List.RSV_TSTA_KIBO_YMD));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.RSV_CL_YMD))
				{
					dataMap.put("rsv_cl_ymd", childTemplate.getString(EKK0491A010CBSMsg1List.RSV_CL_YMD));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.FIRST_SEIKY_YM))
				{
					dataMap.put("first_seiky_ym", childTemplate.getString(EKK0491A010CBSMsg1List.FIRST_SEIKY_YM));
				}

				if (!childTemplate.isNull(EKK0491A010CBSMsg1List.SHS_KANA))
				{
					dataMap.put("shs_kana", childTemplate.getString(EKK0491A010CBSMsg1List.SHS_KANA));
				}
			}
		}
		param.setData("EKK0491A010", dataMap);

		// エラー情報の設定
		param = editErrInfoEKK0491A010(param, parentTemplate, (Integer)return_code, "EKK0491A010");

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 * 請求契約一覧照会(支払方法取得)の下りマッピング処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	private IRequestParameterReadWrite editRetEKK0491B505(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData("EKK0491B505");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("EKK0491B505", dataMap);
		}

		templateArray = parentTemplate.getCAANMsgList(EKK0491B505CBSMsg.EKK0491B505CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0491B505CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				// 更新年月日時分秒
				if (!childTemplate.isNull(EKK0491B505CBSMsg1List.UPD_DTM))
				{
					dataMap.put("upd_dtm", childTemplate.getString(EKK0491B505CBSMsg1List.UPD_DTM));
				}
			}
		}

		param.setData("EKK0491B505", dataMap);

		// エラー情報の設定
		param = editErrInfoEKK0491A010(param, parentTemplate, (Integer)return_code, "EKK0491B505");

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}

	/**
	 * 請求契約一意照会のエラー情報マッピング処理
	 * <br>
	 */
	private IRequestParameterReadWrite editErrInfoEKK0491A010(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		CAANMsg[] templateArray = null;
		ArrayList inList = null;

		int templateStatus = template.getInt(EKK0491C240CBSMsg.STATUS);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		return param;
	}

	// 2013/03/25【IT2-2013-0000325】Fujiwara Add End

	/**
	 * 
	 * @param compMap 課金先一意照会で取得した結果のマップ
	 * @param map 仮登録時に登録してある課金先の情報を詰めているマップ
	 */
	private boolean isInsTargetRecord(HashMap<String, String> compMap, HashMap<String, String> map)
	{
		// サービス契約番号の比較
		if (!compMap.get("svc_kei_no").equals(nullToBlank(map.get("svc_kei_no"))))
		{
			return false;
		}
		// サービス契約内訳番号の比較
		if (!compMap.get("svc_kei_ucwk_no").equals(nullToBlank(map.get("svc_kei_ucwk_no"))))
		{
			return false;
		}
		// 機器提供サービス契約番号の比較
		if (!compMap.get("kktk_svc_kei_no").equals(nullToBlank(map.get("kktk_svc_kei_no"))))
		{
			return false;
		}
		// オプションサービス契約番号の比較
		if (!compMap.get("op_svc_kei_no").equals(nullToBlank(map.get("op_svc_kei_no"))))
		{
			return false;
		}
		// 請求オプションサービス契約番号の比較
		if (!compMap.get("seiopsvc_kei_no").equals(nullToBlank(map.get("seiopsvc_kei_no"))))
		{
			return false;
		}
		// サブオプションサービス契約番号の比較
		if (!compMap.get("sbop_svc_kei_no").equals(nullToBlank(map.get("sbop_svc_kei_no"))))
		{
			return false;
		}
		// 割引サービス契約番号の比較
		if (!compMap.get("wrib_svc_kei_no").equals(nullToBlank(map.get("wrib_svc_kei_no"))))
		{
			return false;
		}
		// オーナー契約番号の比較
		if (!compMap.get("ownr_kei_no").equals(nullToBlank(map.get("ownr_kei_no"))))
		{
			return false;
		}
		// 料金項目コードの比較
		if (!compMap.get("prc_kmk_cd").equals(nullToBlank(map.get("prc_kmk_cd"))))
		{
			return false;
		}
		// 課金先適用終了年月日の比較
		if (!compMap.get("kakins_tendymd").equals(nullToBlank(map.get("kakins_tendymd"))))
		{
			return false;
		}
		// 機器オプションサービス契約番号の比較
		if (!compMap.get("kkop_svc_kei_no").equals(nullToBlank(map.get("kkop_svc_kei_no"))))
		{
			return false;
		}

		return true;
	}

	/**
	 * nullの場合、空文字にして返却するメソッド
	 * 
	 * <br>
	 * @param val
	 * @return
	 */
	private String nullToBlank(String val)
	{
		if (JFUBPCommon.isNull(val))
		{
			return JFUStrConst.EMPTY;
		}
		return val;
	}

	/**
	 * サービス契約一意照会上りマッピング処理.<br>
	 * @param param リクエストパラメータ
	 * @param fixedText fixedText
	 * @param svcKeiNo サービス契約番号
	 * @return CAANMsg
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEKK0081A010(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0081A010CBSMsg.TEMPLATEID, "EKK0081A010");

		// 機能コード
		template.set(EKK0081A010CBSMsg.FUNC_CODE, "2");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = JFUBPCommon.getOpeDate(null);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);

		// サービス契約番号 → サービス契約番号
		if ("".equals(svcKeiNo))
		{
			template.setNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		}

		// 運用日 → 予約適用年月日
		template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, operateDate);

		return template;
	}

	/**
	 * サービス契約一意照会の下りマッピング処理
	 * <br>
	 * @param msgList msgList
	 * @param param リクエストパラメータ
	 * @param fixedText fixedText
	 * @return IRequestParameterReadWrite
	 */
	private IRequestParameterReadWrite editRetEKK0081A010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);

		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData("EKK0081A010");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("EKK0081A010", dataMap);
		}

		templateArray = parentTemplate.getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		dataList = (ArrayList)dataMap.get("EKK0081A010CBSMsg1List");

		if (dataList == null)
		{
			dataList = new ArrayList();
		}

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];
				if (i >= dataList.size())
				{
					dataList.add(new HashMap());
				}
				HashMap childMap = (HashMap)dataList.get(i);

				// 更新年月日時分秒
				if (!childTemplate.isNull(EKK0081A010CBSMsg1List.LAST_UPD_DTM))
				{
					dataMap.put("upd_dtm", childTemplate.getString(EKK0081A010CBSMsg1List.LAST_UPD_DTM));
				}
			}
		}
		param.setData("EKK0081A010", dataMap);

		// エラー情報の設定
		param = editErrInfoEKK0491A010(param, parentTemplate, (Integer)return_code, "EKK0081A010");

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));

		return param;
	}
}
