/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUAddSvcKeiTelOpCC
*   ソースファイル名：JFUAddSvcKeiTelOpCC.java
*   作成者          ：富士通
*   日付            ：2011年04月01日
*＜機能概要＞
*   ｅｏ光電話オプション登録部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/04/01   FJ)馬場     新規作成
*   v4.00.00    2011/10/23   FJ)馬場     IT1-2012-0001473関連対応（マッピング追加）
*   v4.01.00    2012/11/07   FJ)大塚     IT2-2012-0001646関連対応
*   v4.02.00    2012/11/23   FJ)齋藤     IT2-2012-0001783 番ポ情報更新障害対応
*   v4.03.00    2012/12/05   FJ)大村    「IT2-2012-0001959」対応（サブオプション登録時のオプションサービス契約の特定）
*   v4.04.00    2012/12/25   FJ)大村    「IT2-2012-0002142」サービス開始希望年月日設定値変更
*   v4.05.00    2013/02/22   FJ)藤田     ANK-1461-00-00 番ポ申込他の各機能における機種依存文字の取り扱い対応
*   v4.06.00    2013/03/19   FJ)大塚     OT-2013-0000464 個人NRN番号固定対応
*   v4.07.00    2013/03/21   FJ)大塚     ST1-2013-0000487 緊急通報用契約者カナ名対応
*   v4.08.00    2013/04/23   FJ)大塚     No708 エラー情報マッピング不備対応
*   v6.00.00    2013/11/14   FJ)近藤     【ANK-1670-00-00】電話番号の再登録時のエイジングエラー、番ポ済みエラー対応
*   v9.00.00    2014/05/12   FJ)川瀬     【ANK-2056-00-00】【ＮＯ．９４９】光TELセレクトオプションパック
*   v12.00.00   2014/10/14   FJ)模      【ANK-2309-00-00】 全販売チャンネル同番移転対応
*   v72.00.00   2024/05/08   FJ) 美濃原 【ANK-4494-00-00】【eo定期】双方向番ポ対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
import com.fujitsu.futurity.model.common.check.MixCharCheck;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JPCConvertString;
import eo.ejb.cbs.cbsmsg.ECK0021D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191C012CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0371D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0431D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0121C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0121D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0301A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0301A010CBSMsg1List;

/**
 * ｅｏ光電話オプション登録部品
 * <br>
 * @author 富士通
 */
public class JFUAddSvcKeiTelOpCC extends AbstractCommonComponent
{
	/**
	 * テンプレートID
	 */
	final String RETURN_MESSAGE_STRING = "RETURN_MESSAGE_";
	final String RETURN_MESSAGE_FORMAT = "%1$04d";
	final String CC_WORK_AREA_NAME = "JFUAddSvcKeiTelOpCCWork";

	private static final String SC_ERROR_STRING = "サービスコンポーネントエラー";

	/** テンプレートID */
	private static final String TEMPLATE_ID_EZM0121C010 = "EZM0121C010";
	/** 関連チェックエラー項目 */
	private static final String ERROR_COLUMN_EZM0121C010 = EZM0121C010CBSMsg.TELNO_ERR;
	/** リターンコード(正常)  */
	protected static final int RETURN_CODE_NORMAL = 0;

	@SuppressWarnings("unchecked")
	private HashMap ezm0301a010map = null;

	/**
	 * ｅｏ光電話オプション登録処理.<br>
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite addTelOpTrk(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;
		String lastMAP = "";

		HashMap inMap = null;
		HashMap bmpMap = null;
		ArrayList<String> telList = new ArrayList<String>();

		// 番ポ電話番号登録可否チェックマップを取得
		bmpMap = (HashMap)param.getData("JFUBmpTelNoAddChkCC");

		// 個人法人電話番号帯コード格納用変数
		String kojinHojinCd = JFUStrConst.EMPTY;

		// ANK-2464-00-00_番ポ廃止登録バッチ不具合に伴うフロント機能暫定改修対応 ADD START --
		// 電話番号マスタ存在フラグ格納用変数
		String telnoMstExistFlg = JFUStrConst.EMPTY;

		if (bmpMap != null)
		{
			// チェックリストを取得
			ArrayList telNoList = (ArrayList)bmpMap.get("chk_res_list");

			if (telNoList != null && telNoList.size() > 0)
			{
				for (int i = 0; i < telNoList.size(); i++)
				{
					HashMap<String, Object> telMap = (HashMap)telNoList.get(i);

					kojinHojinCd = JFUStrConst.EMPTY;
					if ((String)telMap.get("kojin_hojin_tln_tai_cd") != null && ((String)telMap.get("kojin_hojin_tln_tai_cd")).length() > 0)
					{
						// 個人法人電話番号帯コードを取得
						kojinHojinCd = (String)telMap.get("kojin_hojin_tln_tai_cd");
					}

					// 番号ポータビリティーを利用する電話番号が法人番ポ番号の場合は、
					// 電話番号マスタ、エイジングマスタに対する登録を行わない。
					if (JFUStrConst.CD00410_2.equals(kojinHojinCd))
					{
						// 登録を行わない電話番号を格納する。
						telList.add((String)telMap.get("tel_no"));
					}

					// ANK-2464-00-00_番ポ廃止登録バッチ不具合に伴うフロント機能暫定改修対応 ADD START --
					// 暫定対応で、電話番号マスタ存在フラグが「1：存在あり」の場合は、
					// 電話番号マスタ、エイジングマスタに対する登録を行わない。
					if (JFUStrConst.CD00002_1.equals((String)telMap.get("telno_mst_exist_flg")))
					{
						// 登録を行わない電話番号を格納する。
						telList.add((String)telMap.get("tel_no"));
					}
					// -- ANK-2464-00-00_番ポ廃止登録バッチ不具合に伴うフロント機能暫定改修対応 ADD END
				}
			}

		}

		HashMap telAddMap = null;
		String telNo = "";
		// 電話番号登録マップ取得
		int telNoCnt = 0;
		inMap = (HashMap)param.getData("EZM0121D010");
		if (inMap != null)
		{
			// ■電話番号マスタ登録
			telNoCnt = ((ArrayList)inMap.get("EZM0121D010List")).size();
			for (int i = 0; i < telNoCnt; i++)
			{
				telAddMap = (HashMap)((ArrayList)inMap.get("EZM0121D010List")).get(i);

				telNo = (String)telAddMap.get("telno");

				if (telList != null && telList.size() > 0)
				{
					// 登録を行わない電話番号と一致した場合、次の番号へ進む。
					if (telList.contains(telNo))
					{
						continue;
					}
				}
				// ----- ST1-2012-0000156 2012/07/30 NRN番号設定対応 h.iwamoto START-----
				// EZM0301A010_局番一意照会(ZM_M_KYOKU_NO)
				this.ezm0301a010map = new HashMap();
				template = editInEZM0301A010(param, "EZM0301A010", i);
				paramMap = putParamMap(paramMap, template);
				result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEZM0301A010(result, param);
				// ----- ST1-2012-0000156 2012/07/30 NRN番号設定対応 h.iwamoto END-----

				// EZM0121D010_電話番号登録
				template = editInEZM0121D010(param, "EZM0121D010", i); // 上りマッピング
				paramMap = putParamMap(paramMap, template);
				result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEZM0121D010(result, param, "EZM0121D010", i); // 下りマッピング

				// No708 2013/04/24 Otsuka start
				if (getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
				{ // ステータスが単項目エラー以上であれば例外をスロー
					throw new CCException(SC_ERROR_STRING, new Exception());
				}
				// No708 2013/04/24 Otsuka end
			}
		}

		HashMap asingMap = null;
		telNo = "";

		// サービス契約内訳＜eo光電話＞情報変更
		int bnpCnt = 0;
		inMap = (HashMap)(param.getData("EKK0191C012"));
		if (inMap != null)
		{
			bnpCnt = ((ArrayList)inMap.get("EKK0191C012List")).size();
			for (int i = 0; i < bnpCnt; i++)
			{
				template = editInEKK0191C012(param, "EKK0191C012", i, lastMAP); // 上りマッピング
				paramMap = putParamMap(paramMap, template);
				result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEKK0191C012(result, param, "EKK0191C012", i); // 下りマッピング
				// No708 2013/04/24 Otsuka start
				if (getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
				{ // ステータスが単項目エラー以上であれば例外をスロー
					throw new CCException(SC_ERROR_STRING, new Exception());
				}
				// No708 2013/04/24 Otsuka end
				lastMAP = "EKK0191C012";
			}
		}

		// オプションサービス契約＜電話＞登録
		int telOpCnt = 0;
		inMap = (HashMap)(param.getData("EKK0371D010"));
		if (inMap != null)
		{
			telOpCnt = ((ArrayList)inMap.get("EKK0371D010List")).size();
			for (int i = 0; i < telOpCnt; i++)
			{
				template = editInEKK0371D010(param, "EKK0371D010", i, lastMAP); // 上りマッピング
				paramMap = putParamMap(paramMap, template);
				result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEKK0371D010(result, param, "EKK0371D010", i); // 下りマッピング
				// No708 2013/04/24 Otsuka start
				if (getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
				{ // ステータスが単項目エラー以上であれば例外をスロー
					throw new CCException(SC_ERROR_STRING, new Exception());
				}
				// No708 2013/04/24 Otsuka end
				lastMAP = "EKK0371D010";
			}
		}

		// サブオプションサービス契約＜電話＞登録
		int telSubOpCnt = 0;
		inMap = (HashMap)(param.getData("EKK0431D010"));
		if (inMap != null)
		{
			telOpCnt = ((ArrayList)inMap.get("EKK0431D010List")).size();
			for (int i = 0; i < telOpCnt; i++)
			{
				template = editInEKK0431D010(param, "EKK0431D010", i, lastMAP); // 上りマッピング
				paramMap = putParamMap(paramMap, template);
				result = scCall.run(putParamMap(paramMap, template), handle); // SC呼び出し
				editRetEKK0431D010(result, param, "EKK0431D010", i); // 下りマッピング
				// No708 2013/04/24 Otsuka start
				if (getReturnCode(param) >= JPCModelConstant.SINGLEDATA_ERR)
				{ // ステータスが単項目エラー以上であれば例外をスロー
					throw new CCException(SC_ERROR_STRING, new Exception());
				}
				// No708 2013/04/24 Otsuka end
				lastMAP = "EKK0431D010";
			}
		}

		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>();
		int bnpCnt = 0;
		int telOpCnt = 0;
		HashMap inMap = null;
		String lastMAP = "";

		// 電話番号登録マップ取得
		HashMap inEZM0121 = (HashMap)param.getData("EZM0121D010");
		if (inEZM0121 != null)
		{
			bnpCnt = ((ArrayList)inEZM0121.get("EZM0121D010List")).size();
			for (int i = 0; i < bnpCnt; i++)
			{
				msgList.add(editInEZM0121D010(param, "EZM0121D010", i));
			}
		}

		// サービス契約内訳＜eo光電話＞情報変更マップ取得
		HashMap inEKK0191 = (HashMap)param.getData("EKK0191C012");
		if (inEKK0191 != null)
		{
			bnpCnt = ((ArrayList)inEKK0191.get("EKK0191C012List")).size();
			for (int i = 0; i < bnpCnt; i++)
			{
				msgList.add(editInEKK0191C012(param, "EKK0191C012", i, lastMAP)); // サービス契約内訳＜eo光電話＞情報変更
			}
		}

		// オプションサービス契約＜電話＞登録マップ取得
		HashMap inEKK0371 = (HashMap)param.getData("EKK0371D010");
		if (inEKK0371 != null)
		{
			telOpCnt = ((ArrayList)inEKK0371.get("EKK0371D010List")).size();
			for (int i = 0; i < telOpCnt; i++)
			{
				msgList.add(editInEKK0371D010(param, "EKK0371D010", i, lastMAP)); // オプションサービス契約＜電話＞登録
			}
		}

		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 editInEZM0121D010(IRequestParameterReadWrite param, String fixedText, int index) throws RequestParameterException
	{

		CAANMsg template = new CAANMsg(EZM0121D010CBSMsg.class.getName());

		HashMap inMap = null;
		ArrayList inList = null;

		// テンプレートID
		template.set(EZM0121D010CBSMsg.TEMPLATEID, "EZM0121D010");

		// 機能コード（デフォルト：１）
		template.set(EZM0121D010CBSMsg.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();

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("EZM0121D010");
		String keisha_type_cd = (String)inMap.get("keisha_type_cd"); // ----- ST1-2012-0000156 2012/07/30 NRN番号設定対応 h.iwamoto-----
		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++ */
		inMap = (HashMap)((ArrayList)inMap.get("EZM0121D010List")).get(index);
		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++ */

		// 機能コード
		template.set(EZM0121D010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// 電話番号登録マップ.電話番号 → 電話番号
		if ("".equals(inMap.get("telno")))
		{
			template.setNull(EZM0121D010CBSMsg.TELNO);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.TELNO, (String)inMap.get("telno"));
		}

		// -----ST2-2012-0001345 2012/07/07 h.iwamoto START-----
		// 電話番号登録マップ.局番 → 局番
		if ("".equals(inMap.get("telno")) || inMap.get("telno").toString().length() < 6)
		{
			if ("".equals(inMap.get("kyoku_no")))
			{
				template.setNull(EZM0121D010CBSMsg.KYOKU_NO);
			}
			else
			{
				template.set(EZM0121D010CBSMsg.KYOKU_NO, (String)inMap.get("kyoku_no"));
			}
		}
		else
		{
			template.set(EZM0121D010CBSMsg.KYOKU_NO, inMap.get("telno").toString().substring(0, 6));
		}
		//		if ("".equals(inMap.get("kyoku_no"))) {
		//			template.setNull(EZM0121D010CBSMsg.KYOKU_NO);
		//		} else {
		//			template.set(EZM0121D010CBSMsg.KYOKU_NO, (String) inMap.get("kyoku_no"));
		//		}
		// -----ST2-2012-0001345 2012/07/07 h.iwamoto END-----

		// 電話番号登録マップ.番号コード → 番号コード
		if ("".equals(inMap.get("no_cd")))
		{
			template.setNull(EZM0121D010CBSMsg.NO_CD);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.NO_CD, (String)inMap.get("no_cd"));
		}

		// 電話番号登録マップ.割当通信事業者コード → 割当通信事業者コード
		if ("".equals(inMap.get("wariate_tsjgs_cd")))
		{
			template.setNull(EZM0121D010CBSMsg.WARIATE_TSJGS_CD);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.WARIATE_TSJGS_CD, (String)inMap.get("wariate_tsjgs_cd"));
		}

		if ("".equals(inMap.get("use_tsjgs_cd")))
		{
			template.setNull(EZM0121D010CBSMsg.USE_TSJGS_CD);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.USE_TSJGS_CD, (String)inMap.get("use_tsjgs_cd"));
		}

		// 電話番号登録マップ.サービス区分 → サービス区分
		if ("".equals(inMap.get("svc_div")))
		{
			template.setNull(EZM0121D010CBSMsg.SVC_DIV);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.SVC_DIV, (String)inMap.get("svc_div"));
		}

		// 電話番号登録マップ.引当制約種別コード → 引当制約種別コード
		if ("".equals(inMap.get("hkat_siyk_sbt_cd")))
		{
			template.setNull(EZM0121D010CBSMsg.HKAT_SIYK_SBT_CD);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.HKAT_SIYK_SBT_CD, (String)inMap.get("hkat_siyk_sbt_cd"));
		}

		// 電話番号登録マップ.引当制約設定年月日時分秒 → 引当制約設定年月日時分秒
		if ("".equals(inMap.get("hkat_siyk_set_dtm")))
		{
			template.setNull(EZM0121D010CBSMsg.HKAT_SIYK_SET_DTM);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.HKAT_SIYK_SET_DTM, (String)inMap.get("hkat_siyk_set_dtm"));
		}

		// 電話番号登録マップ.電話番号説明 → 電話番号説明
		if ("".equals(inMap.get("tln_setmei")))
		{
			template.setNull(EZM0121D010CBSMsg.TLN_SETMEI);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.TLN_SETMEI, (String)inMap.get("tln_setmei"));
		}

		// 電話番号登録マップ.個人法人電話番号帯コード → 個人法人電話番号帯コード
		if ("".equals(inMap.get("kojin_hojin_tln_tai_cd")))
		{
			template.setNull(EZM0121D010CBSMsg.KOJIN_HOJIN_TLN_TAI_CD);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.KOJIN_HOJIN_TLN_TAI_CD, (String)inMap.get("kojin_hojin_tln_tai_cd"));
		}

		// 電話番号登録マップ.Ｃ５サーバ号機識別コード → Ｃ５サーバ号機識別コード
		if ("".equals(inMap.get("c5_server_goki_skbt_cd")))
		{
			template.setNull(EZM0121D010CBSMsg.C5_SERVER_GOKI_SKBT_CD);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.C5_SERVER_GOKI_SKBT_CD, (String)inMap.get("c5_server_goki_skbt_cd"));
		}

		// 電話番号登録マップ.電話番号適用開始年月日 → 電話番号適用開始年月日
		/*if ("".equals(inMap.get("telno_tstaymd"))) {
			template.setNull(EZM0121D010CBSMsg.TELNO_TSTAYMD);
		} else {
			template.set(EZM0121D010CBSMsg.TELNO_TSTAYMD, (String) inMap.get("telno_tstaymd"));
		}*/
		// 運用日付取得
		template.set(EZM0121D010CBSMsg.TELNO_TSTAYMD, JFUBPCommon.getOpeDate(null));

		// 電話番号登録マップ.電話番号適用終了年月日 → 電話番号適用終了年月日
		if ("".equals(inMap.get("telno_tendymd")))
		{
			template.setNull(EZM0121D010CBSMsg.TELNO_TENDYMD);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.TELNO_TENDYMD, (String)inMap.get("telno_tendymd"));
		}

		// OT-2013-0000464 2013/03/19 Otsuka 個人NRN番号固定に修正 start
		// ----- ST1-2012-0000156 2012/07/30 NRN番号設定対応 h.iwamoto START-----
		//		// 電話番号登録マップ.ＮＲＮ番号 → ＮＲＮ番号
		//		if ("".equals(inMap.get("nrn_no"))) {
		//			template.setNull(EZM0121D010CBSMsg.NRN_NO);
		//		} else {
		//			template.set(EZM0121D010CBSMsg.NRN_NO, (String) inMap.get("nrn_no"));
		//		}

		// 局番一意照会マップより個人用NRN番号or法人用NRN番号を取得する
		//		if (JFUStrConst.CD00036_1.equals(keisha_type_cd))
		//		{
		// 個人契約の場合
		if (ezm0301a010map == null || this.ezm0301a010map.get("kojin_nrn_no") == null || "".equals(this.ezm0301a010map.get("kojin_nrn_no")))
		{
			template.setNull(EZM0121D010CBSMsg.NRN_NO);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.NRN_NO, this.ezm0301a010map.get("kojin_nrn_no"));
		}
		//		}
		//		else if (JFUStrConst.CD00036_2.equals(keisha_type_cd))
		//		{
		//			// 法人契約の場合
		//			if (ezm0301a010map == null || this.ezm0301a010map.get("hojin_nrn_no") == null || "".equals(this.ezm0301a010map.get("hojin_nrn_no")))
		//			{
		//				template.setNull(EZM0121D010CBSMsg.NRN_NO);
		//			}
		//			else
		//			{
		//				template.set(EZM0121D010CBSMsg.NRN_NO, this.ezm0301a010map.get("hojin_nrn_no"));
		//			}
		//		}
		// ----- ST1-2012-0000156 2012/07/30 NRN番号設定対応 h.iwamoto END-----
		// OT-2013-0000464 2013/03/19 Otsuka 個人NRN番号固定に修正 end

// ANK-4494-00-00_【eo定期】双方向番ポ対応 ADD START
		// 初期個人法人電話番号帯コード
		if (JFUBPCommon.isNull(inMap.get("shk_kojin_hojin_tln_tai_cd")))
		{
			template.setNull(EZM0121D010CBSMsg.SHK_KOJIN_HOJIN_TLN_TAI_CD);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.SHK_KOJIN_HOJIN_TLN_TAI_CD, inMap.get("shk_kojin_hojin_tln_tai_cd"));
		}
		// 電話番号取得通信事業者コード
		if (JFUBPCommon.isNull(inMap.get("tln_stku_tsjgs_cd")))
		{
			template.setNull(EZM0121D010CBSMsg.TLN_STKU_TSJGS_CD);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.TLN_STKU_TSJGS_CD, inMap.get("tln_stku_tsjgs_cd"));
		}
		// 移転元通信事業者コード
		if (JFUBPCommon.isNull(inMap.get("itnm_tsjgs_cd")))
		{
			template.setNull(EZM0121D010CBSMsg.ITNM_TSJGS_CD);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.ITNM_TSJGS_CD, inMap.get("itnm_tsjgs_cd"));
		}
		// 移転先通信事業者コード
		if (JFUBPCommon.isNull(inMap.get("itns_tsjgs_cd")))
		{
			template.setNull(EZM0121D010CBSMsg.ITNS_TSJGS_CD);
		}
		else
		{
			template.set(EZM0121D010CBSMsg.ITNS_TSJGS_CD, inMap.get("itns_tsjgs_cd"));
		}
// ANK-4494-00-00_【eo定期】双方向番ポ対応 ADD END

		return template;
	}

	/**
	 * サービス契約内訳＜eo光電話＞番ポ情報変更用上りマッピング処理.<br>
	 * @param param リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws Exception 
	 */
	private CAANMsg editInEKK0191C012(IRequestParameterReadWrite param, String fixedText, int index, String LastMap) throws Exception
	{

		CAANMsg template = new CAANMsg(EKK0191C012CBSMsg.class.getName());

		HashMap inMap = null;
		ArrayList inList = null;
		HashMap bnp1AddressMap = null;
		HashMap bnp2AddressMap = null;
		HashMap bnp3AddressMap = null;
		HashMap bnp4AddressMap = null;
		HashMap usebnpAddressMap = null;
		HashMap usebnpAddressMap2 = null;
		HashMap inListMap = null;
		/* 2012/11/23 IT2-2012-0001783 Y.Saitou ADD */
		int listSize = 1;

		// テンプレートID（機器提供サービス契約登録）
		template.set(EKK0191C012CBSMsg.TEMPLATEID, "EKK0191C012");

		// オペレータ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(EKK0191C012CBSMsg.FUNC_CODE, "1");

		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++ */
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(fixedText);
		if (index != -1)
		{
			/* 2012/11/23 IT2-2012-0001783 Y.Saitou MOD-START */
			ArrayList list = (ArrayList)inMap.get(fixedText + "List");
			listSize = list.size();
			inMap = (HashMap)list.get(index);
			/* 2012/11/23 IT2-2012-0001783 Y.Saitou MOD-END */
		}
		//inMap = (HashMap) ((ArrayList) inMap.get("EKK0191C012List")).get(index);

		/* 分割後番号ポータビリティ利用場所住所情報（１） */
		bnp1AddressMap = (HashMap)param.getData("FUSV016008CC");
		/* 分割後番号ポータビリティ利用場所住所情報（２） */
		bnp2AddressMap = (HashMap)param.getData("FUSV016009CC");

		// サブではこちらのCCを使用する。
		//		/* 分割後番号ポータビリティ利用場所住所情報（１） */
		//		bnp1AddressMap = (HashMap) param.getData("FUSV016003CC");
		//		/* 分割後番号ポータビリティ利用場所住所情報（２） */
		//		bnp2AddressMap = (HashMap) param.getData("FUSV016004CC");

		/* 2012/11/23 IT2-2012-0001783 Y.Saitou MOD-START */
		usebnpAddressMap = new HashMap();
		if (listSize == 1)
		{
			if (bnp1AddressMap != null)
			{
				usebnpAddressMap = bnp1AddressMap;
			}
			else if (bnp2AddressMap != null)
			{
				usebnpAddressMap = bnp2AddressMap;
			}
		}
		else
		{
			if (bnp1AddressMap != null && index == 0)
			{
				usebnpAddressMap = bnp1AddressMap;
			}
			else if (bnp2AddressMap != null && index == 1)
			{
				usebnpAddressMap = bnp2AddressMap;
			}
		}
		/* 2012/11/23 IT2-2012-0001783 Y.Saitou MOD-END */

		// サービス契約内訳番号 → サービス契約内訳番号
		if ("".equals(inMap.get("svc_kei_ucwk_no")))
		{
			template.setNull(EKK0191C012CBSMsg.SVC_KEI_UCWK_NO);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.SVC_KEI_UCWK_NO, (String)inMap.get("svc_kei_ucwk_no"));
		}
		// 世代登録年月日時分秒（サービス契約内訳） → 世代登録年月日時分秒（サービス契約内訳）
		if ("".equals(inMap.get("kk0161_gene_add_dtm")))
		{
			template.setNull(EKK0191C012CBSMsg.KK0161_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.KK0161_GENE_ADD_DTM, (String)inMap.get("kk0161_gene_add_dtm"));
		}
		// 申込明細番号 → 申込明細番号
		if ("".equals(inMap.get("mskm_dtl_no")))
		{
			template.setNull(EKK0191C012CBSMsg.MSKM_DTL_NO);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.MSKM_DTL_NO, (String)inMap.get("mskm_dtl_no"));
		}
		// 予約適用年月日 → 予約適用年月日
		/*if ("".equals(inMap.get("rsv_aply_ymd")))
		{
			template.setNull(EKK0191C012CBSMsg.RSV_APLY_YMD);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.RSV_APLY_YMD, (String)inMap.get("rsv_aply_ymd"));
		}*/
		// 運用日付取得
		template.set(EKK0191C012CBSMsg.RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

		// 予約適用コード → 予約適用コード
		if ("".equals(inMap.get("rsv_aply_cd")))
		{
			template.setNull(EKK0191C012CBSMsg.RSV_APLY_CD);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.RSV_APLY_CD, (String)inMap.get("rsv_aply_cd"));
		}
		// 異動区分 → 異動区分
		if ("".equals(inMap.get("ido_div")))
		{
			template.setNull(EKK0191C012CBSMsg.IDO_DIV);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
		}
		// 世代登録年月日時分秒（サービス契約内訳＜eo光電話＞） → 世代登録年月日時分秒（サービス契約内訳＜eo光電話＞）
		if ("".equals(inMap.get("kk0191_gene_add_dtm")))
		{
			template.setNull(EKK0191C012CBSMsg.KK0191_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.KK0191_GENE_ADD_DTM, (String)inMap.get("kk0191_gene_add_dtm"));
		}

		// 電話番号 → 電話番号
		if ("".equals(inMap.get("telno")))
		{
			template.setNull(EKK0191C012CBSMsg.TELNO);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.TELNO, (String)inMap.get("telno"));
		}

		// 更新年月日時分秒 → 更新年月日時分秒
		if ("".equals(inMap.get("upd_dtm")))
		{
			template.setNull(EKK0191C012CBSMsg.UPD_DTM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.UPD_DTM, (String)inMap.get("upd_dtm"));
		}
		// 更新オペレータアカウント → 更新オペレータアカウント
		if ("".equals(inMap.get("upd_opeacnt")))
		{
			template.setNull(EKK0191C012CBSMsg.UPD_OPEACNT);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.UPD_OPEACNT, (String)inMap.get("upd_opeacnt"));
		}
		// 登録年月日時分秒 → 登録年月日時分秒
		if ("".equals(inMap.get("add_dtm")))
		{
			template.setNull(EKK0191C012CBSMsg.ADD_DTM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.ADD_DTM, (String)inMap.get("add_dtm"));
		}
		// 登録オペレータアカウント → 登録オペレータアカウント
		if ("".equals(inMap.get("add_opeacnt")))
		{
			template.setNull(EKK0191C012CBSMsg.ADD_OPEACNT);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.ADD_OPEACNT, (String)inMap.get("add_opeacnt"));
		}

		// -----ST2-2012-0001343 2012/07/10 h.iwamoto START-----

		// ======================= ↓↓分割後住所情報を設定↓↓ =======================
		// 番ポNTT対応　T.Fujita Mod Start
		// 番ポNTT対応 T.Fujita Mod Start
		// NTT契約者住所補記・郵便番号 → 緊急通報用補正郵便番号をセットしていた為、削除
		// 緊急通報用補正郵便番号
		//		if (usebnpAddressMap == null || "".equals(inMap.get("ntt_keisha_pcd")))
		//		{
		//			template.setNull(EKK0191C012CBSMsg.EMG_HOSEI_PCD);
		//		}
		//		else
		//		{
		//			template.set(EKK0191C012CBSMsg.EMG_HOSEI_PCD, (String)inMap.get("ntt_keisha_pcd"));
		//		}
		// 緊急通報用補正郵便番号
		if (usebnpAddressMap == null || "".equals(inMap.get("emg_hosei_pcd")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_HOSEI_PCD);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.EMG_HOSEI_PCD, (String)inMap.get("emg_hosei_pcd"));
		}
		// 番ポNTT対応 T.Fujita Mod End

		// 番ポNTT対応 T.Fujita Mod Start
		/* 本登録用：分割後番号ポータビリティ利用場所住所情報 */
		bnp3AddressMap = (HashMap)param.getData("FUSV016006CC");
		/* 全戸一括用：分割後番号ポータビリティ利用場所住所情報 */
		bnp4AddressMap = (HashMap)param.getData("FUSV016102CC");
		usebnpAddressMap2 = new HashMap();
		// ST1-2013-0000487 2013/03/21 Otsuka start

		if (bnp3AddressMap != null)
		{
			usebnpAddressMap2 = bnp3AddressMap;
		}
		else
		{
			usebnpAddressMap2 = bnp4AddressMap;
		}

		//		if (listSize == 1)
		//		{
		//			if (bnp3AddressMap != null)
		//			{
		//				usebnpAddressMap2 = bnp3AddressMap;
		//			}
		//			else if (bnp4AddressMap != null)
		//			{
		//				usebnpAddressMap2 = bnp4AddressMap;
		//			}
		//		}
		//		else
		//		{
		//			if (bnp3AddressMap != null && index == 0)
		//			{
		//				usebnpAddressMap2 = bnp3AddressMap;
		//			}
		//			else if (bnp4AddressMap != null && index == 1)
		//			{
		//				usebnpAddressMap2 = bnp4AddressMap;
		//			}
		//		}
		// ST1-2013-0000487 2013/03/21 Otsuka end

		// NTT契約者住所補記・住所コード → 緊急通報用住所コードをセットしていた為、削除
		// 緊急通報用住所コード
		//		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("ad_cd")))
		//		{
		//			template.setNull(EKK0191C012CBSMsg.EMG_AD_CD);
		//		}
		//		else
		//		{
		//			template.set(EKK0191C012CBSMsg.EMG_AD_CD, (String)usebnpAddressMap.get("ad_cd"));
		//		}

		// 緊急通報用住所コード
		if (usebnpAddressMap2 == null || "".equals(usebnpAddressMap2.get("ad_cd")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_AD_CD);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.EMG_AD_CD, (String)usebnpAddressMap2.get("ad_cd"));
		}

		// 番ポNTT対応 T.Fujita Mod Start
		// NTT契約者住所補記・都道府県名 → 緊急通報用都道府県名をセットしていた為、削除
		//		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("state_nm")))
		//		{
		//			template.setNull(EKK0191C012CBSMsg.EMG_STATE_NM);
		//		}
		//		else
		//		{
		//			template.set(EKK0191C012CBSMsg.EMG_STATE_NM, (String)usebnpAddressMap.get("state_nm"));
		//		}

		// 緊急通報用都道府県名
		if (usebnpAddressMap2 == null || "".equals(usebnpAddressMap2.get("state_nm")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_STATE_NM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.EMG_STATE_NM, (String)usebnpAddressMap2.get("state_nm"));
		}
		// 番ポNTT対応 T.Fujita Mod End

		// 番ポNTT対応 T.Fujita Mod Start
		// NTT契約者住所補記・市区町村名 → 緊急通報用市区町村名をセットしていた為、削除
		//		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("city_nm")))
		//		{
		//			template.setNull(EKK0191C012CBSMsg.EMG_CITY_NM);
		//		}
		//		else
		//		{
		//			template.set(EKK0191C012CBSMsg.EMG_CITY_NM, (String)usebnpAddressMap.get("city_nm"));
		//		}

		// 緊急通報用市区町村名
		if (usebnpAddressMap2 == null || "".equals(usebnpAddressMap2.get("city_nm")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_CITY_NM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.EMG_CITY_NM, (String)usebnpAddressMap2.get("city_nm"));
		}
		// 番ポNTT対応 T.Fujita Mod End

		// 番ポNTT対応 T.Fujita Mod Start
		// NTT契約者住所補記・大字通称名 → 緊急通報用大字通称名をセットしていた為、削除
		//		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("oaztsu_nm")))
		//		{
		//			template.setNull(EKK0191C012CBSMsg.EMG_OAZTSU_NM);
		//		}
		//		else
		//		{
		//			template.set(EKK0191C012CBSMsg.EMG_OAZTSU_NM, (String)usebnpAddressMap.get("oaztsu_nm"));
		//		}

		// 緊急通報用大字通称名
		if (usebnpAddressMap2 == null || "".equals(usebnpAddressMap2.get("oaztsu_nm")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_OAZTSU_NM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.EMG_OAZTSU_NM, (String)usebnpAddressMap2.get("oaztsu_nm"));
		}
		// 番ポNTT対応 T.Fujita Mod End

		// 番ポNTT対応 T.Fujita Mod Start
		// NTT契約者住所補記・字丁目名 → 緊急通報用字丁目名をセットしていた為、削除
		//		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("azcho_nm")))
		//		{
		//			template.setNull(EKK0191C012CBSMsg.EMG_AZCHO_NM);
		//		}
		//		else
		//		{
		//			template.set(EKK0191C012CBSMsg.EMG_AZCHO_NM, (String)usebnpAddressMap.get("azcho_nm"));
		//		}

		// 緊急通報用字丁目名
		if (usebnpAddressMap2 == null || "".equals(usebnpAddressMap2.get("azcho_nm")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_AZCHO_NM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.EMG_AZCHO_NM, (String)usebnpAddressMap2.get("azcho_nm"));
		}
		// 番ポNTT対応 T.Fujita Mod End

		// 番ポNTT対応 T.Fujita Mod Start
		// NTT契約者住所補記・番地号 → 緊急通報用番地号をセットしていた為、削除

		//		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("after_bnchi")))
		//		{
		//			template.setNull(EKK0191C012CBSMsg.EMG_BNCHIGO);
		//		}
		//		else
		//		{
		//			template.set(EKK0191C012CBSMsg.EMG_BNCHIGO, (String)usebnpAddressMap.get("after_bnchi"));
		//		}

		// 緊急通報用番地号
		if (usebnpAddressMap2 == null || "".equals(usebnpAddressMap2.get("after_bnchi")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_BNCHIGO);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.EMG_BNCHIGO, (String)usebnpAddressMap2.get("after_bnchi"));
		}
		// 番ポNTT対応 T.Fujita Mod End

		// ======================= ↑↑分割後住所情報を設定↑↑ =======================

		// 番ポNTT対応 T.Fujita Mod Start
		// NTT契約者住所補記・建物名 → 緊急通報用住所補記・建物名をセットしていた為、削除
		// 緊急通報用住所補記・建物名
		//		if ("".equals(inMap.get("ntt_keisha_adrttm")))
		//		{
		//			template.setNull(EKK0191C012CBSMsg.EMG_ADRTTM);
		//		}
		//		else
		//		{
		//			template.set(EKK0191C012CBSMsg.EMG_ADRTTM, (String)inMap.get("ntt_keisha_adrttm"));
		//		}

		// 緊急通報用住所補記・建物名 → 緊急通報用住所補記・建物名
		if ("".equals(inMap.get("emg_adrttm")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_ADRTTM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.EMG_ADRTTM, (String)inMap.get("emg_adrttm"));
		}
		// 番ポNTT対応 T.Fujita Mod End

		// 番ポNTT対応 T.Fujita Mod Start
		// NTT契約者住所補記・部屋番号 → 緊急通報用住所補記・部屋番号をセットしていた為、削除
		//		if ("".equals(inMap.get("ntt_keisha_adrrm")))
		//		{
		//			template.setNull(EKK0191C012CBSMsg.EMG_ADRRM);
		//		}
		//		else
		//		{
		//			template.set(EKK0191C012CBSMsg.EMG_ADRRM, (String)inMap.get("ntt_keisha_adrrm"));
		//		}

		// 緊急通報用契約者部屋番号
		if ("".equals(inMap.get("emg_adrrm")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_ADRRM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.EMG_ADRRM, (String)inMap.get("emg_adrrm"));
		}
		// 番ポNTT対応 T.Fujita Mod End

		// 番ポNTT対応 T.Fujita Mod Start
		// NTT契約者住所補記・カナ名 → 緊急通報用契約者カナ名をセットしていた為、削除
		//		if ("".equals(inMap.get("ntt_ksh_kana")))
		//		{
		//			template.setNull(EKK0191C012CBSMsg.EMG_KSH_KANA);
		//		}
		//		else
		//		{
		//			template.set(EKK0191C012CBSMsg.EMG_KSH_KANA, (String)inMap.get("ntt_ksh_kana"));
		//		}

		// 緊急通報用契約者カナ名
		if ("".equals(inMap.get("emg_ksh_kana")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_KSH_KANA);
		}
		else
		{
			// ST1-2013-0000487 2013/03/21 Otsuka
			template.set(EKK0191C012CBSMsg.EMG_KSH_KANA, this.chkAndCnvEmgKshKana((String)inMap.get("emg_ksh_kana")));
		}
		// 番ポNTT対応 T.Fujita Mod End

		// 番ポNTT対応 T.Fujita Mod Start
		// NTT契約者名 → 緊急通報用住所補記・契約者名をセットしていた為、削除
		//		if ("".equals(inMap.get("ntt_keisha_nm")))
		//		{
		//			template.setNull(EKK0191C012CBSMsg.EMG_KSH_NM);
		//		}
		//		else
		//		{
		//			template.set(EKK0191C012CBSMsg.EMG_KSH_NM, (String)inMap.get("ntt_keisha_nm"));
		//		}

		// 緊急通報用契約者名 → 緊急通報用契約者名
		if ("".equals(inMap.get("emg_ksh_nm")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_KSH_NM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.EMG_KSH_NM, (String)inMap.get("emg_ksh_nm"));
		}
		// 番ポNTT対応 T.Fujita Mod End

		// 通信事業者コード
		if ("".equals(inMap.get("tsjgs_cd")))
		{
			template.setNull(EKK0191C012CBSMsg.TSJGS_CD);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.TSJGS_CD, (String)inMap.get("tsjgs_cd"));
		}

		// -----ST2-2012-0001343 2012/07/10 h.iwamoto END-----

		// ======================= ↓↓分割後住所情報を設定するよう修正 2011/10/10 ↓↓ =======================
		// NTT契約者住所コード → NTT契約者住所コード
		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("ad_cd")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KEISHA_AD_CD);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KEISHA_AD_CD, (String)usebnpAddressMap.get("ad_cd"));
		}
		// NTT契約者郵便番号 → NTT契約者郵便番号
		if (usebnpAddressMap == null || "".equals(inMap.get("ntt_keisha_pcd")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KEISHA_PCD);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KEISHA_PCD, (String)inMap.get("ntt_keisha_pcd"));
		}
		// NTT契約者都道府県名 → NTT契約者都道府県名
		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("state_nm")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KEISHA_STATE_NM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KEISHA_STATE_NM, (String)usebnpAddressMap.get("state_nm"));
		}
		// NTT契約者市区町村名 → NTT契約者市区町村名
		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("city_nm")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KEISHA_CITY_NM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KEISHA_CITY_NM, (String)usebnpAddressMap.get("city_nm"));
		}
		// NTT契約者大字通称名 → NTT契約者大字通称名
		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("oaztsu_nm")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KEISHA_OAZTSU_NM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KEISHA_OAZTSU_NM, (String)usebnpAddressMap.get("oaztsu_nm"));
		}
		// NTT契約者字丁目名 → NTT契約者字丁目名
		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("azcho_nm")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KEISHA_AZCHO_NM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KEISHA_AZCHO_NM, (String)usebnpAddressMap.get("azcho_nm"));
		}
		// NTT契約者番地号 → NTT契約者番地号
		if (usebnpAddressMap == null || "".equals(usebnpAddressMap.get("after_bnchi")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KEISHA_BNCHIGO);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KEISHA_BNCHIGO, (String)usebnpAddressMap.get("after_bnchi"));
		}
		// ======================= ↑↑分割後住所情報を設定するよう修正 2011/10/10 ↑↑ =======================

		// NTT契約者住所補記・建物名 → NTT契約者住所補記・建物名
		if ("".equals(inMap.get("ntt_keisha_adrttm")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KEISHA_ADRTTM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KEISHA_ADRTTM, (String)inMap.get("ntt_keisha_adrttm"));
		}

		// NTT契約者住所補記・部屋番号 → NTT契約者住所補記・部屋番号
		if ("".equals(inMap.get("ntt_keisha_adrrm")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KEISHA_ADRRM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KEISHA_ADRRM, (String)inMap.get("ntt_keisha_adrrm"));
		}
		// NTT契約者郵カナ名 → NTT契約者郵カナ名
		if ("".equals(inMap.get("ntt_ksh_kana")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KSH_KANA);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KSH_KANA, (String)inMap.get("ntt_ksh_kana"));
		}
		// NTT契約者名 → NTT契約者名
		if ("".equals(inMap.get("ntt_keisha_nm")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KEISHA_NM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KEISHA_NM, (String)inMap.get("ntt_keisha_nm"));
		}
		// NTT契約者住所＿契約者住所差異フラグ → NTT契約者住所＿契約者住所差異フラグ
		if ("".equals(inMap.get("ntt_ksh_ad_ksh_ad_sai_flg")))
		{
			template.setNull(EKK0191C012CBSMsg.NTT_KSH_AD_KSH_AD_SAI_FLG);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.NTT_KSH_AD_KSH_AD_SAI_FLG, (String)inMap.get("ntt_ksh_ad_ksh_ad_sai_flg"));
		}

		// 番ポ有無
		if ("".equals(inMap.get("bmp_um")))
		{
			template.setNull(EKK0191C012CBSMsg.BMP_UM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.BMP_UM, (String)inMap.get("bmp_um"));
		}

		// 番ポ同時工事希望有無
		if ("".equals(inMap.get("bmp_doji_koji_kibo_um")))
		{
			template.setNull(EKK0191C012CBSMsg.BMP_DOJI_KOJI_KIBO_UM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.BMP_DOJI_KOJI_KIBO_UM, (String)inMap.get("bmp_doji_koji_kibo_um"));
		}

		// 番ポ同時開通年月日
		if ("".equals(inMap.get("bmp_doji_open_ymd")))
		{
			template.setNull(EKK0191C012CBSMsg.BMP_DOJI_OPEN_YMD);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.BMP_DOJI_OPEN_YMD, (String)inMap.get("bmp_doji_open_ymd"));
		}

		
		// 更新年月日時分秒(更新前)
		String updDtm = JFUStrConst.EMPTY;
		if (LastMap.length() == 0 && index <= 0)
		{
			updDtm =  (String)inMap.get("upd_dtm_bf");
		}
		else
		{
			updDtm = (String)inMap.get("upd_dtm");
		}
		
		// 更新年月日時分秒(更新前)
		// 共有マップに登録している更新年月日時分秒があれば、そちらが優先
		String updDtmBf = JFUBPCommon.getTelSvkeiLastUpdDtm(param, updDtm);
		template.set(EKK0191C012CBSMsg.UPD_DTM_BF, updDtmBf);

		// 無効フラグ → 無効フラグ
		if ("".equals(inMap.get("mk_flg")))
		{
			template.setNull(EKK0191C012CBSMsg.MK_FLG);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.MK_FLG, (String)inMap.get("mk_flg"));
		}

		// 同番移転判定コード → 同番移転判定コード
		if ("".equals(inMap.get("dobaniten_jdg_cd")))
		{
			template.setNull(EKK0191C012CBSMsg.DOBANITEN_JDG_CD);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.DOBANITEN_JDG_CD, (String)inMap.get("dobaniten_jdg_cd"));
		}

		// 2012.10.23 baba IT1-2012-0001473 関連対応 START
		// 緊急通報用契約者個別指定フラグ → 緊急通報用契約者個別指定フラグ
		if ("".equals(inMap.get("emg_ksh_ksitei_flg")))
		{
			template.setNull(EKK0191C012CBSMsg.EMG_KSH_KSITEI_FLG);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.EMG_KSH_KSITEI_FLG, (String)inMap.get("emg_ksh_ksitei_flg"));
		}
		// 2012.10.23 baba IT1-2012-0001473 関連対応 END

		// 同番移転申込有無 → 同番移転申込有無
		if ("".equals(inMap.get("dobaniten_mskm_um")))
		{
			template.setNull(EKK0191C012CBSMsg.DOBANITEN_MSKM_UM);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.DOBANITEN_MSKM_UM, (String)inMap.get("dobaniten_mskm_um"));
		}

		// 同番移転手続実施者識別コード → 同番移転手続実施者識別コード
		if ("".equals(inMap.get("dobaniten_ttdk_jssis_skcd")))
		{
			template.setNull(EKK0191C012CBSMsg.DOBANITEN_TTDK_JSSIS_SKCD);
		}
		else
		{
			template.set(EKK0191C012CBSMsg.DOBANITEN_TTDK_JSSIS_SKCD, (String)inMap.get("dobaniten_ttdk_jssis_skcd"));
		}

		/* 同番移転可能エリアチェック結果情報 */
		HashMap jkkChkDobanitenPsbAreaMap = new HashMap();
		jkkChkDobanitenPsbAreaMap = (HashMap)param.getData("JKKChkDobanitenPsbAreaCC");
		
		// 同番移転可能エリアチェック結果 → 同番移転KOPT内審査結果コード
		// チェック結果は、電話番号が合致したものの結果を設定する。
		// ※電話番号がNULLになる場合は、キャンセルの場合。その場合は、同番移転KOPT内審査結果コードは、NULLになる。
		String id = JFUStrConst.EMPTY;
		if (jkkChkDobanitenPsbAreaMap != null && !JFUBPCommon.isNull(inMap.get("telno"))) {
			if (inMap.get("telno").equals(jkkChkDobanitenPsbAreaMap.get("key_telno1")))
			{
				id = "1";
			}
			else if (inMap.get("telno").equals(jkkChkDobanitenPsbAreaMap.get("key_telno2")))
			{
				id = "2";
			}
			// 結果を設定
			if (jkkChkDobanitenPsbAreaMap == null || "".equals(jkkChkDobanitenPsbAreaMap.get("kani_ckrlt_" + id)))
			{
				template.setNull(EKK0191C012CBSMsg.DBNITN_KOPT_NAI_SKEKKA_CD);
			}
			else
			{
				template.set(EKK0191C012CBSMsg.DBNITN_KOPT_NAI_SKEKKA_CD, (String)jkkChkDobanitenPsbAreaMap.get("kani_ckrlt_" + id));
			}
		}
		// エラー時は、Exceptionをスローする
		if (JFUStrConst.CD01659_2.equals(template.getString(EKK0191C012CBSMsg.DBNITN_KOPT_NAI_SKEKKA_CD)))
		{
			JFUBPCommon.setRelationErrorInfo(param, TEMPLATE_ID_EZM0121C010, ERROR_COLUMN_EZM0121C010, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		/* 同番移転自動連携候補抽出済フラグ */
		template.set(EKK0191C012CBSMsg.DBNITN_AT_RNKKH_CST_ZM_FLG, JFUStrConst.CD00581_0);

		return template;
	}

	/**
	 * 電話番号登録マップの下りマッピング処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	private IRequestParameterReadWrite editRetEZM0121D010(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("EZM0121D010");
		if (dataMap == null)
		{
			dataMap = new HashMap();
			param.setData("EZM0121D010", dataMap);
		}

		// ++++++++++++++++++++ v1.00.00 追加開始 ++++++++++++++++++++++++++ */
		dataList = (ArrayList)dataMap.get(fixedText + "List");
		if (dataList == null)
		{
			dataList = new ArrayList();
			dataMap.put(fixedText + "List", dataList);
		}

		HashMap childMap = (HashMap)dataList.get(index);
		if (childMap == null)
		{
			childMap = new HashMap();
			dataList.add(index, childMap);
		}
		// +++++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++++++++ */

		// 電話番号登録マップ.初回割当年月日 ← 初回割当年月日
		if (parentTemplate.isNull(EZM0121D010CBSMsg.FIRST_WARIATE_YMD))
		{
			childMap.put("first_wariate_ymd", new String());
		}
		else
		{
			childMap.put("first_wariate_ymd", parentTemplate.getString(EZM0121D010CBSMsg.FIRST_WARIATE_YMD));
		}

		// 電話番号登録マップ.登録年月日時分秒 ← 登録年月日時分秒
		if (parentTemplate.isNull(EZM0121D010CBSMsg.ADD_DTM))
		{
			childMap.put("add_dtm", new String());
		}
		else
		{
			childMap.put("add_dtm", parentTemplate.getString(EZM0121D010CBSMsg.ADD_DTM));
		}

		// 電話番号登録マップ.登録オペレータアカウント ← 登録オペレータアカウント
		if (parentTemplate.isNull(EZM0121D010CBSMsg.ADD_OPEACNT))
		{
			childMap.put("add_opeacnt", new String());
		}
		else
		{
			childMap.put("add_opeacnt", parentTemplate.getString(EZM0121D010CBSMsg.ADD_OPEACNT));
		}

		// 電話番号登録マップ.更新年月日時分秒 ← 更新年月日時分秒
		if (parentTemplate.isNull(EZM0121D010CBSMsg.UPD_DTM))
		{
			childMap.put("upd_dtm", new String());
		}
		else
		{
			childMap.put("upd_dtm", parentTemplate.getString(EZM0121D010CBSMsg.UPD_DTM));
		}

		// 電話番号登録マップ.更新オペレータアカウント ← 更新オペレータアカウント
		if (parentTemplate.isNull(EZM0121D010CBSMsg.UPD_OPEACNT))
		{
			childMap.put("upd_opeacnt", new String());
		}
		else
		{
			childMap.put("upd_opeacnt", parentTemplate.getString(EZM0121D010CBSMsg.UPD_OPEACNT));
		}

		// 電話番号登録マップ.無効フラグ ← 無効フラグ
		if (parentTemplate.isNull(EZM0121D010CBSMsg.MK_FLG))
		{
			childMap.put("mk_flg", new String());
		}
		else
		{
			childMap.put("mk_flg", parentTemplate.getString(EZM0121D010CBSMsg.MK_FLG));
		}

		// エラー情報の設定
		param = editErrInfoEZM0121D010(param, parentTemplate, (Integer)return_code, 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;

	}

	/**
	 * サービス契約内訳＜eo光電話＞番ポ情報変更の下りマッピング処理
	 * <br>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	private IRequestParameterReadWrite editRetEKK0191C012(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, int index)
			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);
		}

		// ++++++++++++++++++++ v1.00.00 追加開始 ++++++++++++++++++++++++++ */
		ArrayList dataList = (ArrayList)dataMap.get(fixedText + "List");
		if (dataList == null)
		{
			dataList = new ArrayList();
			dataMap.put(fixedText + "List", dataList);
		}

		HashMap childMap = (HashMap)dataList.get(index);
		if (childMap == null)
		{
			childMap = new HashMap();
			dataList.add(index, childMap);
		}
		// +++++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++++++++ */

		// 世代登録年月日時分秒(サービス契約内訳)
		if (template.isNull(EKK0191C012CBSMsg.KK0161_GENE_ADD_DTM))
		{
			childMap.put("kk0161_gene_add_dtm", "");
		}
		else
		{
			childMap.put("kk0161_gene_add_dtm", template.getString(EKK0191C012CBSMsg.KK0161_GENE_ADD_DTM));
		}

		// 予約適用コード	
		if (template.isNull(EKK0191C012CBSMsg.RSV_APLY_CD))
		{
			childMap.put("rsv_aply_cd", "");
		}
		else
		{
			childMap.put("rsv_aply_cd", template.getString(EKK0191C012CBSMsg.RSV_APLY_CD));
		}

		// 世代登録年月日時分秒(サービス契約内訳<eo光電話>)
		if (template.isNull(EKK0191C012CBSMsg.KK0191_GENE_ADD_DTM))
		{
			childMap.put("kk0191_gene_add_dtm", "");
		}
		else
		{
			childMap.put("kk0191_gene_add_dtm", template.getString(EKK0191C012CBSMsg.KK0191_GENE_ADD_DTM));
		}

		// 更新年月日時分秒
		if (template.isNull(EKK0191C012CBSMsg.UPD_DTM))
		{
			childMap.put("upd_dtm", "");
		}
		else
		{
			childMap.put("upd_dtm", template.getString(EKK0191C012CBSMsg.UPD_DTM));
			// ワークマップに登録
			workDataMap.put("upd_dtm", template.getString(EKK0341D010CBSMsg.UPD_DTM));
		}

		// エラー情報の設定
		editErrInfoEKK0191C012(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;
	}

	/**
	 * サービス契約内訳＜eo光電話＞番ポ情報変更のエラー情報マッピング処理
	 * <br>
	 */
	private IRequestParameterReadWrite editErrInfoEKK0191C012(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		int templateStatus = template.getInt(EKK0191C012CBSMsg.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 = (HashMap<String, Object>)param.getData("EKK0191C012");

		return param;
	}

	//サブオプション　 editInEKK0431D010-----------------------------------------------------------------------------------------------------
	private CAANMsg editInEKK0431D010(IRequestParameterReadWrite param, String fixedText, int index, String LastMap) throws RequestParameterException
	{

		CAANMsg template = new CAANMsg(EKK0431D010CBSMsg.class.getName());
		CAANMsg[] templateArray = null;

		HashMap inMap = null;
		ArrayList inList = null;
		HashMap inMapUpAf = null;
		HashMap childMap = null;
		HashMap inListMap = null;

		// テンプレートID
		template.set(EKK0431D010CBSMsg.TEMPLATEID, "EKK0431D010");

		// 機能コード（デフォルト：１）
		template.set(EKK0431D010CBSMsg.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 追加開始 +++++++++++++++++++++ */
		/* ユーザデータ情報 */
		// 前回マップ
		// 最終更新日取得用****Start
		if (LastMap.length() == 0)
		{
			if (index > 0)
			{
				inListMap = (HashMap)param.getData(fixedText);
				inListMap = (HashMap)((ArrayList)inListMap.get(fixedText + "List")).get(index - 1);
			}
		}
		else
		{
			inListMap = (HashMap)param.getData(LastMap);
			int cnt = ((ArrayList)inListMap.get(LastMap + "List")).size();
			if (cnt > 0)
			{
				if (index <= 0)
				{
					inListMap = (HashMap)((ArrayList)inListMap.get(LastMap + "List")).get(cnt - 1);
				}
				else if (index > 0)
				{
					inListMap = (HashMap)((ArrayList)inListMap.get(LastMap + "List")).get(index - 1);
				}
			}
		}
		// 最終更新日取得用****End

		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++ */
		/* サブオプションサービス契約＜電話＞登録マップ */
		inMap = (HashMap)param.getData(fixedText);
		if (index != -1)
		{
			inMap = (HashMap)((ArrayList)inMap.get(fixedText + "List")).get(index);
		}

		//「IT2-2012-0001959」対応（サブオプション登録時のオプションサービス契約の特定） >>>
		//サブオプションサービス契約に保持したサービス契約内訳番号
		String svc_kei_ucwk_no2 = inMap.get("svc_kei_ucwk_no").toString();
		//「IT2-2012-0001959」対応（サブオプション登録時のオプションサービス契約の特定） <<<

		String sbop_svc_cd = inMap.get("sbop_svc_cd").toString();

		/* オプションサービス契約＜電話＞登録マップ*/
		HashMap inOpMap = (HashMap)param.getData("EKK0371D010");
		if (index != -1)
		{
			//「IT2-2012-0001959」対応（サブオプション登録時のオプションサービス契約の特定） >>>
			ArrayList al = (ArrayList)inOpMap.get("EKK0371D010List");
			for (int i = 0; i < al.size(); i++)
			{
				HashMap map = (HashMap)al.get(i);
				String op_svc_kei_no = map.get("op_svc_kei_no").toString();
				String op_svc_cd = map.get("op_svc_cd").toString();
				String svc_kei_ucwk_no = map.get("svc_kei_ucwk_no").toString();

				//以下の条件に該当するオプションサービス契約データを使用する
				//・オプションサービス契約．オプションサービスコード　＝　発信者番号表示サービスのレコードを特定
				//・サブオプションサービス契約．サービス契約内訳番号　＝　オプションサービス契約のサービス契約内訳番号
				if (op_svc_cd.equals("B025") && svc_kei_ucwk_no2.equals(svc_kei_ucwk_no) && sbop_svc_cd.equals("D08"))
				{
					inOpMap = (HashMap)((ArrayList)inOpMap.get("EKK0371D010List")).get(i);
					break;
				}
				else if (op_svc_cd.equals("B024") && svc_kei_ucwk_no2.equals(svc_kei_ucwk_no) && sbop_svc_cd.equals("D07"))
				{
					inOpMap = (HashMap)((ArrayList)inOpMap.get("EKK0371D010List")).get(i);
					break;
				}
				
			}
			//inOpMap = (HashMap)((ArrayList)inOpMap.get("EKK0371D010List")).get(index);
			//「IT2-2012-0001959」対応（サブオプション登録時のオプションサービス契約の特定） <<<

		}

		/* ++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++ */
		//inMap = (HashMap)((ArrayList)inMap.get(fixedText + "List")).get(index);
		// 機能コード
		template.set(EKK0431D010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// 作業領域のマップを取得
		HashMap workDataMap = null;
		Map workMap = param.getMappingWorkArea();
		if (workMap != null)
		{
			workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME);
		}

		// 機能コード
		template.set(EKK0431D010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// オプションサービス契約番号 → オプションサービス契約番号
		/*if ("".equals(inMap.get("op_svc_kei_no")))
		{
			// 部品呼び出し → 申込登録明細.申込書番号
			template.set(EKK0431D010CBSMsg.OP_SVC_KEI_NO, JFUBPCommon.getBPValueString(param,"EKK0371D010","op_svc_kei_no"));
		}
		else
		{
			template.set(EKK0431D010CBSMsg.OP_SVC_KEI_NO, (String)inMap.get("op_svc_kei_no"));
		}*/
		template.set(EKK0431D010CBSMsg.OP_SVC_KEI_NO, inOpMap.get("op_svc_kei_no"));
		// サブオプションサービスコード→サブオプションサービスコード
		if ("".equals(inMap.get("sbop_svc_cd")))
		{
			template.setNull(EKK0431D010CBSMsg.SBOP_SVC_CD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.SBOP_SVC_CD, (String)inMap.get("sbop_svc_cd"));
		}
		// 料金コースコード → 料金コースコード
		if ("".equals(inMap.get("pcrs_cd")))
		{
			template.setNull(EKK0431D010CBSMsg.PCRS_CD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.PCRS_CD, (String)inMap.get("pcrs_cd"));
		}
		// 料金プランコード → 料金プランコード
		if ("".equals(inMap.get("pplan_cd")))
		{
			template.setNull(EKK0431D010CBSMsg.PPLAN_CD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.PPLAN_CD, (String)inMap.get("pplan_cd"));
		}

		// 申込明細番号 → 申込明細番号
		if ("".equals(inMap.get("mskm_dtl_no")))
		{
			template.setNull(EKK0431D010CBSMsg.MSKM_DTL_NO);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.MSKM_DTL_NO, (String)inMap.get("mskm_dtl_no"));
		}

		// 試用加入年月日 → 試用加入年月日
		if ("".equals(inMap.get("ftrial_kanyu_ymd")))
		{
			template.setNull(EKK0431D010CBSMsg.FTRIAL_KANYU_YMD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.FTRIAL_KANYU_YMD, (String)inMap.get("ftrial_kanyu_ymd"));
		}

		// 試用期間終了年月日 → 試用期間終了年月日
		if ("".equals(inMap.get("ftrial_prd_endymd")))
		{
			template.setNull(EKK0431D010CBSMsg.FTRIAL_PRD_ENDYMD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.FTRIAL_PRD_ENDYMD, (String)inMap.get("ftrial_prd_endymd"));
		}

		// 本加入年月日 → 本加入年月日
		if ("".equals(inMap.get("honkanyu_ymd")))
		{
			template.setNull(EKK0431D010CBSMsg.HONKANYU_YMD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.HONKANYU_YMD, (String)inMap.get("honkanyu_ymd"));
		}

		// 本加入移行期限年月日 → 本加入移行期限年月日
		if ("".equals(inMap.get("honkanyu_iko_kigen_ymd")))
		{
			template.setNull(EKK0371D010CBSMsg.HONKANYU_IKO_KIGEN_YMD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.HONKANYU_IKO_KIGEN_YMD, (String)inMap.get("honkanyu_iko_kigen_ymd"));
		}

		// サービス利用開始希望年月日 → サービス利用開始希望年月日
		//「IT2-2012-0002142」サービス開始希望年月日>>>値設定不要のため、空を無条件で設定する
		template.setNull(EKK0431D010CBSMsg.SVC_USE_STA_KIBO_YMD);
		//「IT2-2012-0002142」サービス開始希望年月日<<<E

		// 予約適用開始希望年月日 → 予約適用開始希望年月日
		if ("".equals(inMap.get("rsv_tsta_kibo_ymd")))
		{
			template.setNull(EKK0431D010CBSMsg.RSV_TSTA_KIBO_YMD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.RSV_TSTA_KIBO_YMD, (String)inMap.get("rsv_tsta_kibo_ymd"));
		}

		// 予約適用年月日 → 予約適用年月日
		if ("".equals(inMap.get("rsv_aply_ymd")))
		{
			template.setNull(EKK0431D010CBSMsg.RSV_APLY_YMD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.RSV_APLY_YMD, (String)inMap.get("rsv_aply_ymd"));
		}
		// 予約適用コード → 予約適用コード
		if ("".equals(inMap.get("rsv_aply_cd")))
		{
			template.setNull(EKK0431D010CBSMsg.RSV_APLY_CD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.RSV_APLY_CD, (String)inMap.get("rsv_aply_cd"));
		}
		// 違約金発生コード → 違約金発生コード
		if ("".equals(inMap.get("pnlty_hassei_cd")))
		{
			template.setNull(EKK0371D010CBSMsg.PNLTY_HASSEI_CD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.PNLTY_HASSEI_CD, (String)inMap.get("pnlty_hassei_cd"));
		}
		// 異動区分 → 異動区分
		if ("".equals(inMap.get("ido_div")))
		{
			template.setNull(EKK0431D010CBSMsg.IDO_DIV);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
		}
		// 登録年月日時分秒 → 登録年月日時分秒
		if ("".equals(inMap.get("add_dtm")))
		{
			template.setNull(EKK0431D010CBSMsg.ADD_DTM);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.ADD_DTM, (String)inMap.get("add_dtm"));
		}
		// 登録オペレータアカウント → 登録オペレータアカウント
		if ("".equals(inMap.get("add_opeacnt")))
		{
			template.setNull(EKK0431D010CBSMsg.ADD_OPEACNT);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.ADD_OPEACNT, (String)inMap.get("add_opeacnt"));
		}
		// 更新年月日時分秒 → 更新年月日時分秒
		if ("".equals(inMap.get("upd_dtm")))
		{
			template.setNull(EKK0431D010CBSMsg.UPD_DTM);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.UPD_DTM, (String)inMap.get("upd_dtm"));
		}
		// 更新オペレータアカウント → 更新オペレータアカウント
		if ("".equals(inMap.get("upd_opeacnt")))
		{
			template.setNull(EKK0431D010CBSMsg.UPD_OPEACNT);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.UPD_OPEACNT, (String)inMap.get("upd_opeacnt"));
		}
		// 無効フラグ → 無効フラグ
		if ("".equals(inMap.get("mk_flg")))
		{
			template.setNull(EKK0431D010CBSMsg.MK_FLG);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.MK_FLG, (String)inMap.get("mk_flg"));
		}

		// 課金先番号 → 課金先番号
		if ("".equals(inMap.get("kakins_no")))
		{
			template.setNull(EKK0431D010CBSMsg.KAKINS_NO);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.KAKINS_NO, (String)inMap.get("kakins_no"));
		}
		// 請求契約番号 → 請求契約番号
		if ("".equals(inMap.get("seiky_kei_no")))
		{
			template.setNull(EKK0431D010CBSMsg.SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.SEIKY_KEI_NO, (String)inMap.get("seiky_kei_no"));
		}
		// 料金項目コード → 料金項目コード
		if ("".equals(inMap.get("prc_kmk_cd")))
		{
			template.setNull(EKK0431D010CBSMsg.PRC_KMK_CD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.PRC_KMK_CD, (String)inMap.get("prc_kmk_cd"));
		}
		// 課金先適用開始年月日 → 課金先適用開始年月日
		if ("".equals(inMap.get("kakins_tstaymd")))
		{
			template.setNull(EKK0431D010CBSMsg.KAKINS_TSTAYMD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.KAKINS_TSTAYMD, (String)inMap.get("kakins_tstaymd"));
		}
		// 課金先適用終了年月日 → 課金先適用終了年月日
		if ("".equals(inMap.get("kakins_tendymd")))
		{
			template.setNull(EKK0431D010CBSMsg.KAKINS_TENDYMD);
		}
		else
		{
			template.set(EKK0431D010CBSMsg.KAKINS_TENDYMD, (String)inMap.get("kakins_tendymd"));
		}
		// 更新年月日時分秒(更新前) → 更新年月日時分秒(更新前)
		if (LastMap.length() == 0 && index <= 0)
		{
			template.set(EKK0431D010CBSMsg.UPD_DTM_BF, (String)inMap.get("upd_dtm_bf"));
		}
		else
		{
			if (inListMap != null)
			{
				template.set(EKK0431D010CBSMsg.UPD_DTM_BF, (String)inListMap.get("upd_dtm"));
			}
		}

		return template;
	}

	/**
	 * オプションサービス契約＜電話＞登録上りマッピング処理.<br>
	 * @param param リクエストパラメータ
	 * @return HashMap<String, Object>
	 * @throws Exception 
	 */
	private CAANMsg editInEKK0371D010(IRequestParameterReadWrite param, String fixedText, int index, String LastMap) throws Exception
	{

		CAANMsg template = new CAANMsg(EKK0371D010CBSMsg.class.getName());
		CAANMsg[] templateArray = null;

		HashMap inMap = null;
		ArrayList inList = null;
		HashMap inMapUpAf = null;
		HashMap childMap = null;
		HashMap inListMap = null;

		// テンプレートID
		template.set(EKK0371D010CBSMsg.TEMPLATEID, "EKK0371D010");

		// 機能コード（デフォルト：１）
		template.set(EKK0371D010CBSMsg.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 追加開始 +++++++++++++++++++++ */
		/* ユーザデータ情報 */
		// 前回マップ
		// 最終更新日取得用****Start
		if (LastMap.length() == 0)
		{
			if (index > 0)
			{
				inListMap = (HashMap)param.getData(fixedText);
				inListMap = (HashMap)((ArrayList)inListMap.get(fixedText + "List")).get(index - 1);
			}
		}
		else
		{
			inListMap = (HashMap)param.getData(LastMap);
			int cnt = ((ArrayList)inListMap.get(LastMap + "List")).size();
			if (cnt > 0)
			{
				if (index <= 0)
				{
					inListMap = (HashMap)((ArrayList)inListMap.get(LastMap + "List")).get(cnt - 1);
				}
				else if (index > 0)
				{
					inListMap = (HashMap)((ArrayList)inListMap.get(LastMap + "List")).get(index - 1);
				}
			}
		}
		// 最終更新日取得用****End

		/* オプションサービス契約＜電話＞登録マップ*/
		inMap = (HashMap)param.getData(fixedText);
		if (index != -1)
		{
			inMap = (HashMap)((ArrayList)inMap.get(fixedText + "List")).get(index);
		}
		/* ++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++ */
		//inMap = (HashMap)((ArrayList)inMap.get(fixedText + "List")).get(index);
		// 機能コード
		template.set(EKK0371D010CBSMsg.FUNC_CODE, inMap.get(JCMConstants.FUNC_CODE_KEY));

		// 作業領域のマップを取得
		HashMap workDataMap = null;
		Map workMap = param.getMappingWorkArea();
		if (workMap != null)
		{
			workDataMap = (HashMap)workMap.get(CC_WORK_AREA_NAME);
		}

		// オプションサービス契約番号 → オプションサービス契約番号
		if ("".equals(inMap.get("op_svc_kei_no")))
		{
			template.setNull(EKK0371D010CBSMsg.OP_SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.OP_SVC_KEI_NO, (String)inMap.get("op_svc_kei_no"));
		}

		// 世代登録年月日時分秒（オプションサービス契約） → 世代登録年月日時分秒（オプションサービス契約）
		if ("".equals(inMap.get("kk0351_gene_add_dtm")))
		{
			template.setNull(EKK0371D010CBSMsg.KK0351_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.KK0351_GENE_ADD_DTM, (String)inMap.get("kk0351_gene_add_dtm"));
		}
		// オプションサービス契約ステータス → オプションサービス契約ステータス
		if ("".equals(inMap.get("op_svc_kei_stat")))
		{
			template.setNull(EKK0371D010CBSMsg.OP_SVC_KEI_STAT);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.OP_SVC_KEI_STAT, (String)inMap.get("op_svc_kei_stat"));
		}
		// オプションサービスコード → オプションサービスコード
		if ("".equals(inMap.get("op_svc_cd")))
		{
			template.setNull(EKK0371D010CBSMsg.OP_SVC_CD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.OP_SVC_CD, (String)inMap.get("op_svc_cd"));
		}
		// 料金コースコード → 料金コースコード
		if ("".equals(inMap.get("pcrs_cd")))
		{
			template.setNull(EKK0371D010CBSMsg.PCRS_CD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.PCRS_CD, (String)inMap.get("pcrs_cd"));
		}
		// 料金プランコード → 料金プランコード
		if ("".equals(inMap.get("pplan_cd")))
		{
			template.setNull(EKK0371D010CBSMsg.PPLAN_CD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.PPLAN_CD, (String)inMap.get("pplan_cd"));
		}
		// 親契約識別コード → 親契約識別コード
		if ("".equals(inMap.get("oya_kei_skbt_cd")))
		{
			template.setNull(EKK0371D010CBSMsg.OYA_KEI_SKBT_CD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.OYA_KEI_SKBT_CD, (String)inMap.get("oya_kei_skbt_cd"));
		}
		// サービス契約番号 → サービス契約番号
		if ("".equals(inMap.get("svc_kei_no")))
		{
			template.setNull(EKK0371D010CBSMsg.SVC_KEI_NO);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"));
		}

		// サービス契約内訳番号 → サービス契約内訳番号
		if ("".equals(inMap.get("svc_kei_ucwk_no")))
		{
			template.setNull(EKK0371D010CBSMsg.SVC_KEI_UCWK_NO);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.SVC_KEI_UCWK_NO, (String)inMap.get("svc_kei_ucwk_no"));
		}

		// ＳＹＳＩＤ → ＳＹＳＩＤ
		if ("".equals(inMap.get("sysid")))
		{
			template.setNull(EKK0371D010CBSMsg.SYSID);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.SYSID, (String)inMap.get("sysid"));
		}

		// 申込明細番号 → 申込明細番号
		if ("".equals(inMap.get("mskm_dtl_no")))
		{
			template.setNull(EKK0371D010CBSMsg.MSKM_DTL_NO);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.MSKM_DTL_NO, (String)inMap.get("mskm_dtl_no"));
		}

		// 試用加入年月日 → 試用加入年月日
		if ("".equals(inMap.get("ftrial_kanyu_ymd")))
		{
			template.setNull(EKK0371D010CBSMsg.FTRIAL_KANYU_YMD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.FTRIAL_KANYU_YMD, (String)inMap.get("ftrial_kanyu_ymd"));
		}

		// 試用期間終了年月日 → 試用期間終了年月日
		if ("".equals(inMap.get("ftrial_prd_endymd")))
		{
			template.setNull(EKK0371D010CBSMsg.FTRIAL_PRD_ENDYMD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.FTRIAL_PRD_ENDYMD, (String)inMap.get("ftrial_prd_endymd"));
		}

		// 本加入年月日 → 本加入年月日
		if ("".equals(inMap.get("honkanyu_ymd")))
		{
			template.setNull(EKK0371D010CBSMsg.HONKANYU_YMD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.HONKANYU_YMD, (String)inMap.get("honkanyu_ymd"));
		}

		// 本加入移行期限年月日 → 本加入移行期限年月日
		if ("".equals(inMap.get("honkanyu_iko_kigen_ymd")))
		{
			template.setNull(EKK0371D010CBSMsg.HONKANYU_IKO_KIGEN_YMD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.HONKANYU_IKO_KIGEN_YMD, (String)inMap.get("honkanyu_iko_kigen_ymd"));
		}

		// サービス利用開始希望年月日 → サービス利用開始希望年月日
		//「IT2-2012-0002142」サービス開始希望年月日>>>値設定不要のため、空を無条件で設定する
		template.setNull(EKK0371D010CBSMsg.SVC_USE_STA_KIBO_YMD);
		//「IT2-2012-0002142」サービス開始希望年月日<<<E

		// 予約適用開始希望年月日 → 予約適用開始希望年月日
		if ("".equals(inMap.get("rsv_tsta_kibo_ymd")))
		{
			template.setNull(EKK0371D010CBSMsg.RSV_TSTA_KIBO_YMD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.RSV_TSTA_KIBO_YMD, (String)inMap.get("rsv_tsta_kibo_ymd"));
		}

		// 予約適用年月日 → 予約適用年月日
		if ("".equals(inMap.get("rsv_aply_ymd")))
		{
			template.setNull(EKK0371D010CBSMsg.RSV_APLY_YMD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.RSV_APLY_YMD, (String)inMap.get("rsv_aply_ymd"));
		}
		// 予約適用コード → 予約適用コード
		if ("".equals(inMap.get("rsv_aply_cd")))
		{
			template.setNull(EKK0371D010CBSMsg.RSV_APLY_CD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.RSV_APLY_CD, (String)inMap.get("rsv_aply_cd"));
		}
		// 違約金発生コード → 違約金発生コード
		if ("".equals(inMap.get("pnlty_hassei_cd")))
		{
			template.setNull(EKK0371D010CBSMsg.PNLTY_HASSEI_CD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.PNLTY_HASSEI_CD, (String)inMap.get("pnlty_hassei_cd"));
		}
		// 異動区分 → 異動区分
		if ("".equals(inMap.get("ido_div")))
		{
			template.setNull(EKK0371D010CBSMsg.IDO_DIV);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.IDO_DIV, (String)inMap.get("ido_div"));
		}
		// 登録年月日時分秒 → 登録年月日時分秒
		if ("".equals(inMap.get("add_dtm")))
		{
			template.setNull(EKK0371D010CBSMsg.ADD_DTM);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.ADD_DTM, (String)inMap.get("add_dtm"));
		}
		// 登録オペレータアカウント → 登録オペレータアカウント
		if ("".equals(inMap.get("add_opeacnt")))
		{
			template.setNull(EKK0371D010CBSMsg.ADD_OPEACNT);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.ADD_OPEACNT, (String)inMap.get("add_opeacnt"));
		}
		// 更新年月日時分秒 → 更新年月日時分秒
		if ("".equals(inMap.get("upd_dtm")))
		{
			template.setNull(EKK0371D010CBSMsg.UPD_DTM);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.UPD_DTM, (String)inMap.get("upd_dtm"));
		}
		// 更新オペレータアカウント → 更新オペレータアカウント
		if ("".equals(inMap.get("upd_opeacnt")))
		{
			template.setNull(EKK0371D010CBSMsg.UPD_OPEACNT);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.UPD_OPEACNT, (String)inMap.get("upd_opeacnt"));
		}
		// 無効フラグ → 無効フラグ
		if ("".equals(inMap.get("mk_flg")))
		{
			template.setNull(EKK0371D010CBSMsg.MK_FLG);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.MK_FLG, (String)inMap.get("mk_flg"));
		}
		// 世代登録年月日時分秒（オプションサービス契約＜電話＞） → 世代登録年月日時分秒（オプションサービス契約＜電話＞）
		if ("".equals(inMap.get("kk0371_gene_add_dtm")))
		{
			template.setNull(EKK0371D010CBSMsg.KK0371_GENE_ADD_DTM);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.KK0371_GENE_ADD_DTM, (String)inMap.get("kk0371_gene_add_dtm"));
		}
		// ０５０オプション電話番号 → ０５０オプション電話番号
		if ("".equals(inMap.get("n_050_op_telno")))
		{
			template.setNull(EKK0371D010CBSMsg.N_050_OP_TELNO);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.N_050_OP_TELNO, (String)inMap.get("n_050_op_telno"));
		}

		// 課金先番号 → 課金先番号
		if ("".equals(inMap.get("kakins_no")))
		{
			template.setNull(EKK0371D010CBSMsg.KAKINS_NO);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.KAKINS_NO, (String)inMap.get("kakins_no"));
		}
		// 請求契約番号 → 請求契約番号
		if ("".equals(inMap.get("seiky_kei_no")))
		{
			template.setNull(EKK0371D010CBSMsg.SEIKY_KEI_NO);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.SEIKY_KEI_NO, (String)inMap.get("seiky_kei_no"));
		}
		// 料金項目コード → 料金項目コード
		if ("".equals(inMap.get("prc_kmk_cd")))
		{
			template.setNull(EKK0371D010CBSMsg.PRC_KMK_CD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.PRC_KMK_CD, (String)inMap.get("prc_kmk_cd"));
		}
		// 課金先適用開始年月日 → 課金先適用開始年月日
		if ("".equals(inMap.get("kakins_tstaymd")))
		{
			template.setNull(EKK0371D010CBSMsg.KAKINS_TSTAYMD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.KAKINS_TSTAYMD, (String)inMap.get("kakins_tstaymd"));
		}
		// 課金先適用終了年月日 → 課金先適用終了年月日
		if ("".equals(inMap.get("kakins_tendymd")))
		{
			template.setNull(EKK0371D010CBSMsg.KAKINS_TENDYMD);
		}
		else
		{
			template.set(EKK0371D010CBSMsg.KAKINS_TENDYMD, (String)inMap.get("kakins_tendymd"));
		}
		// 更新年月日時分秒(更新前) → 更新年月日時分秒(更新前)
		if (LastMap.length() == 0 && index <= 0)
		{
			String updDtmBf = JFUBPCommon.getTelSvkeiLastUpdDtm(param, (String)inMap.get("upd_dtm_bf"));
			template.set(EKK0371D010CBSMsg.UPD_DTM_BF, updDtmBf);
		}
		else
		{
			if (inListMap != null)
			{
				String updDtmBf = JFUBPCommon.getTelSvkeiLastUpdDtm(param, (String)inListMap.get("upd_dtm"));
				template.set(EKK0371D010CBSMsg.UPD_DTM_BF, updDtmBf);
			}
		}

		return template;
	}

	// editRetEKK0431D010
	private IRequestParameterReadWrite editRetEKK0431D010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, int index)
			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);
		}

		// ++++++++++++++++++++ v1.00.00 追加開始 ++++++++++++++++++++++++++ */
		ArrayList dataList = (ArrayList)dataMap.get(fixedText + "List");
		if (dataList == null)
		{
			dataList = new ArrayList();
			dataMap.put(fixedText + "List", dataList);
		}

		HashMap childMap = (HashMap)dataList.get(index);
		if (childMap == null)
		{
			childMap = new HashMap();
			dataList.add(index, childMap);
		}
		// +++++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++++++++ */

		// オプションサービス契約＜電話＞登録マップ.オプションサービス契約番号 ← オプションサービス契約番号
		if (template.isNull(EKK0431D010CBSMsg.OP_SVC_KEI_NO))
		{
			childMap.put("op_svc_kei_no", new String());
		}
		else
		{
			childMap.put("op_svc_kei_no", template.getString(EKK0431D010CBSMsg.OP_SVC_KEI_NO));
		}

		// オプションサービス契約＜電話＞登録マップ.更新年月日時分秒 ← 更新年月日時分秒
		if (template.isNull(EKK0431D010CBSMsg.UPD_DTM))
		{
			childMap.put("upd_dtm", new String());
		}
		else
		{
			childMap.put("upd_dtm", template.getString(EKK0431D010CBSMsg.UPD_DTM));

			String updDtm = template.getString(EKK0431D010CBSMsg.UPD_DTM);
			HashMap selOpMap = (HashMap)param.getData("EKK0451D01001");
			HashMap selOpMap2 = (HashMap)param.getData("EKK0451D01002");
			selOpMap.put("kk0081_upd_dtm", updDtm);
			if(selOpMap2 != null && selOpMap2.size() > 0)
			{
				selOpMap2.put("kk0081_upd_dtm", updDtm);
			}
		}

		// エラー情報の設定
		param = editErrInfoEKK0431D010(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>
	 * @param param
	 * @param fixedText
	 * @return
	 */
	private IRequestParameterReadWrite editRetEKK0371D010(Map<?, ?> msgList, IRequestParameterReadWrite param, String fixedText, int index)
			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);
		}

		// ++++++++++++++++++++ v1.00.00 追加開始 ++++++++++++++++++++++++++ */
		ArrayList dataList = (ArrayList)dataMap.get(fixedText + "List");
		if (dataList == null)
		{
			dataList = new ArrayList();
			dataMap.put(fixedText + "List", dataList);
		}

		HashMap childMap = (HashMap)dataList.get(index);
		if (childMap == null)
		{
			childMap = new HashMap();
			dataList.add(index, childMap);
		}
		// +++++++++++++++++++ v1.00.00 追加終了 +++++++++++++++++++++++++++ */

		// オプションサービス契約＜電話＞登録マップ.オプションサービス契約番号 ← オプションサービス契約番号
		if (template.isNull(EKK0371D010CBSMsg.OP_SVC_KEI_NO))
		{
			childMap.put("op_svc_kei_no", new String());
		}
		else
		{
			childMap.put("op_svc_kei_no", template.getString(EKK0341D010CBSMsg.OP_SVC_KEI_NO));
		}

		// オプションサービス契約＜電話＞登録マップ.世代登録年月日時分秒(オプションサービス契約) ← 世代登録年月日時分秒(オプションサービス契約)
		if (template.isNull(EKK0371D010CBSMsg.KK0351_GENE_ADD_DTM))
		{
			childMap.put("kk0351_gene_add_dtm", new String());
		}
		else
		{
			childMap.put("kk0351_gene_add_dtm", template.getString(EKK0371D010CBSMsg.KK0351_GENE_ADD_DTM));
		}

		// オプションサービス契約＜電話＞登録マップ.更新年月日時分秒 ← 更新年月日時分秒
		if (template.isNull(EKK0371D010CBSMsg.UPD_DTM))
		{
			childMap.put("upd_dtm", new String());
		}
		else
		{
			childMap.put("upd_dtm", template.getString(EKK0371D010CBSMsg.UPD_DTM));

			String updDtm = template.getString(EKK0371D010CBSMsg.UPD_DTM);
			HashMap selOpMap = (HashMap)param.getData("EKK0451D01001");
			HashMap selOpMap2 = (HashMap)param.getData("EKK0451D01002");
			selOpMap.put("kk0081_upd_dtm", updDtm);
			if(selOpMap2 != null && selOpMap2.size() > 0)
			{
				selOpMap2.put("kk0081_upd_dtm", updDtm);
			}

		}

		// エラー情報の設定
		param = editErrInfoEKK0371D010(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 editErrInfoEZM0121D010(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		CAANMsg[] templateArray = null;
		ArrayList inList = null;

		int templateStatus = template.getInt(EZM0121D010CBSMsg.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 = (HashMap<String, Object>)param.getData("EZM0121D010");

		return param;
	}

	/**
	 * オプションサービス契約＜電話＞登録のエラー情報マッピング処理
	 * <br>
	 */
	private IRequestParameterReadWrite editErrInfoEKK0371D010(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		CAANMsg[] templateArray = null;
		ArrayList inList = null;

		int templateStatus = template.getInt(EKK0371D010CBSMsg.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 = (HashMap<String, Object>)param.getData("EKK0371D010");

		return param;
	}

	//editErrInfoEKK0431D010
	/**
	 * サブオプションサービス契約＜電話＞登録のエラー情報マッピング処理
	 * <br>
	 */
	private IRequestParameterReadWrite editErrInfoEKK0431D010(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedText)
			throws RequestParameterException
	{
		CAANMsg[] templateArray = null;
		ArrayList inList = null;

		int templateStatus = template.getInt(EKK0431D010CBSMsg.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 = (HashMap<String, Object>)param.getData("EKK0431D010");

		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;
		HashMap inMap = null;

		String fixedText = "";

		int telNoCnt = 0;
		inMap = (HashMap)(param.getData("EZM0121D010"));
		if (inMap != null)
		{
			telNoCnt = ((ArrayList)inMap.get("EZM0121D010List")).size();
			for (i = 0; i < telNoCnt; i++)
			{
				editErrInfoEZM0121D010(param, templates[i], returnCode, "EZM0121D010"); // 電話番号登録
			}
		}

		int noCnt = 0;

		int bnpCnt = 0;
		inMap = (HashMap)(param.getData("EKK0191C012"));
		if (inMap != null)
		{
			bnpCnt = ((ArrayList)inMap.get("EKK0191C012List")).size();
			for (i = 0; i < bnpCnt; i++)
			{
				editErrInfoEKK0191C012(param, templates[i + telNoCnt + noCnt], returnCode, "EKK0191C012"); // サービス契約内訳＜eo光電話＞情報変更 // No708 2013/04/24 Otsuka 
			}
		}

		// オプションサービス契約＜電話＞登録
		int telOpCnt = 0;
		inMap = (HashMap)(param.getData("EKK0371D010"));
		if (inMap != null)
		{
			telOpCnt = ((ArrayList)inMap.get("EKK0371D010List")).size();
			for (i = 0; i < telOpCnt; i++)
			{
				editErrInfoEKK0371D010(param, templates[i + telNoCnt + noCnt + bnpCnt], returnCode, "EKK0371D010"); // オプションサービス契約＜電話＞登録 // No708 2013/04/24 Otsuka 
			}
		}

		return param;
	}

	// ----- ST1-2012-0000156 2012/07/30 NRN番号設定対応 h.iwamoto START-----
	/**
	 * 局番一意照会の上りマッピングを行う
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @param index
	 * @param LastMap
	 * @return
	 * @throws RequestParameterException
	 */
	private CAANMsg editInEZM0301A010(IRequestParameterReadWrite param, String fixedText, int index) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EZM0301A010CBSMsg.class.getName());
		CAANMsg[] templateArray = null;

		HashMap inMap = null;

		// テンプレートID
		template.set(EKK0431D010CBSMsg.TEMPLATEID, "EZM0301A010");

		// 機能コード（固定：１）
		template.set(EKK0431D010CBSMsg.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();

		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData("EZM0121D010");
		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++ */
		inMap = (HashMap)((ArrayList)inMap.get("EZM0121D010List")).get(index);
		/* ++++++++++++++++ v1.00.00 追加開始 +++++++++++++++++++++ */

		// 電話番号登録マップ.局番 → ＫＥＹ＿局番（電話番号上６桁を局番として取得）
		if ("".equals(inMap.get("telno")) || inMap.get("telno").toString().length() < 6)
		{
			template.setNull(EZM0301A010CBSMsg.KEY_KYOKU_NO);
		}
		else
		{
			template.set(EZM0301A010CBSMsg.KEY_KYOKU_NO, inMap.get("telno").toString().substring(0, 6));
		}

		return template;
	}

	/**
	 * 局番一意照会の下りマッピングを行う
	 * 
	 * <br>
	 * @param msgList
	 * @param param
	 * @param fixedText
	 * @param index
	 * @return
	 * @throws Exception
	 */
	private IRequestParameterReadWrite editRetEZM0301A010(Map<?, ?> msgList, IRequestParameterReadWrite param) 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);
		templateArray = parentTemplate.getCAANMsgList(EZM0301A010CBSMsg.EZM0301A010CBSMSG1LIST);

		if (templateArray != null)
		{
			for (int i = 0; i < templateArray.length; i++)
			{
				CAANMsg childTemplate = templateArray[i];

				// 局番一意照会.局番一意照会明細.局番 ← 局番一意照会明細.局番
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.KYOKU_NO))
				{
					this.ezm0301a010map.put("kyoku_no", new String());
				}
				else
				{
					this.ezm0301a010map.put("kyoku_no", childTemplate.getString(EZM0301A010CBSMsg1List.KYOKU_NO));
				}

				// 局番一意照会.局番一意照会明細.市外局番 ← 局番一意照会明細.市外局番
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.AREACD))
				{
					this.ezm0301a010map.put("areacd", new String());
				}
				else
				{
					this.ezm0301a010map.put("areacd", childTemplate.getString(EZM0301A010CBSMsg1List.AREACD));
				}

				// 局番一意照会.局番一意照会明細.局番適用開始年月日 ← 局番一意照会明細.局番適用開始年月日
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.KYOKU_NO_TSTAYMD))
				{
					this.ezm0301a010map.put("kyoku_no_tstaymd", new String());
				}
				else
				{
					this.ezm0301a010map.put("kyoku_no_tstaymd", childTemplate.getString(EZM0301A010CBSMsg1List.KYOKU_NO_TSTAYMD));
				}

				// 局番一意照会.局番一意照会明細.局番適用終了年月日 ← 局番一意照会明細.局番適用終了年月日
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.KYOKU_NO_TENDYMD))
				{
					this.ezm0301a010map.put("kyoku_no_tendymd", new String());
				}
				else
				{
					this.ezm0301a010map.put("kyoku_no_tendymd", childTemplate.getString(EZM0301A010CBSMsg1List.KYOKU_NO_TENDYMD));
				}

				// 局番一意照会.局番一意照会明細.番号区画コード ← 局番一意照会明細.番号区画コード
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.NO_KUKAKU_CD))
				{
					this.ezm0301a010map.put("no_kukaku_cd", new String());
				}
				else
				{
					this.ezm0301a010map.put("no_kukaku_cd", childTemplate.getString(EZM0301A010CBSMsg1List.NO_KUKAKU_CD));
				}

				// 局番一意照会.局番一意照会明細.個人用NRN番号 ← 局番一意照会明細.個人用ＮＲＮ番号
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.KOJIN_NRN_NO))
				{
					this.ezm0301a010map.put("kojin_nrn_no", new String());
				}
				else
				{
					this.ezm0301a010map.put("kojin_nrn_no", childTemplate.getString(EZM0301A010CBSMsg1List.KOJIN_NRN_NO));
				}

				// 局番一意照会.局番一意照会明細.法人用NRN番号 ← 局番一意照会明細.法人用ＮＲＮ番号
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.HOJIN_NRN_NO))
				{
					this.ezm0301a010map.put("hojin_nrn_no", new String());
				}
				else
				{
					this.ezm0301a010map.put("hojin_nrn_no", childTemplate.getString(EZM0301A010CBSMsg1List.HOJIN_NRN_NO));
				}

				// 局番一意照会.局番一意照会明細.登録年月日時分秒 ← 局番一意照会明細.登録年月日時分秒
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.ADD_DTM))
				{
					this.ezm0301a010map.put("add_dtm", new String());
				}
				else
				{
					this.ezm0301a010map.put("add_dtm", childTemplate.getString(EZM0301A010CBSMsg1List.ADD_DTM));
				}

				// 局番一意照会.局番一意照会明細.登録オペレータアカウント ← 局番一意照会明細.登録オペレータアカウント
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.ADD_OPEACNT))
				{
					this.ezm0301a010map.put("add_opeacnt", new String());
				}
				else
				{
					this.ezm0301a010map.put("add_opeacnt", childTemplate.getString(EZM0301A010CBSMsg1List.ADD_OPEACNT));
				}

				// 局番一意照会.局番一意照会明細.更新年月日時分秒 ← 局番一意照会明細.更新年月日時分秒
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.UPD_DTM))
				{
					this.ezm0301a010map.put("upd_dtm", new String());
				}
				else
				{
					this.ezm0301a010map.put("upd_dtm", childTemplate.getString(EZM0301A010CBSMsg1List.UPD_DTM));
				}

				// 局番一意照会.局番一意照会明細.更新オペレータアカウント ← 局番一意照会明細.更新オペレータアカウント
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.UPD_OPEACNT))
				{
					this.ezm0301a010map.put("upd_opeacnt", new String());
				}
				else
				{
					this.ezm0301a010map.put("upd_opeacnt", childTemplate.getString(EZM0301A010CBSMsg1List.UPD_OPEACNT));
				}

				// 局番一意照会.局番一意照会明細.削除年月日時分秒 ← 局番一意照会明細.削除年月日時分秒
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.DEL_DTM))
				{
					this.ezm0301a010map.put("del_dtm", new String());
				}
				else
				{
					this.ezm0301a010map.put("del_dtm", childTemplate.getString(EZM0301A010CBSMsg1List.DEL_DTM));
				}

				// 局番一意照会.局番一意照会明細.削除オペレータアカウント ← 局番一意照会明細.削除オペレータアカウント
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.DEL_OPEACNT))
				{
					this.ezm0301a010map.put("del_opeacnt", new String());
				}
				else
				{
					this.ezm0301a010map.put("del_opeacnt", childTemplate.getString(EZM0301A010CBSMsg1List.DEL_OPEACNT));
				}

				// 局番一意照会.局番一意照会明細.無効フラグ ← 局番一意照会明細.無効フラグ
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.MK_FLG))
				{
					this.ezm0301a010map.put("mk_flg", new String());
				}
				else
				{
					this.ezm0301a010map.put("mk_flg", childTemplate.getString(EZM0301A010CBSMsg1List.MK_FLG));
				}

				// 局番一意照会.局番一意照会明細.無効フラグ名称 ← 局番一意照会明細.無効フラグ名称
				if (childTemplate.isNull(EZM0301A010CBSMsg1List.MK_FLG_NM))
				{
					this.ezm0301a010map.put("mk_flg_nm", new String());
				}
				else
				{
					this.ezm0301a010map.put("mk_flg_nm", childTemplate.getString(EZM0301A010CBSMsg1List.MK_FLG_NM));
				}
			}
		}

		//エラー情報のマップを取得
		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));

		// エラー発生時はExceptionを設定
		if (errList != null && !errList.isEmpty())
		{
			throw new CCException("", new SCCallException("", ((Integer)return_code).toString(), templates[0].getInt(ECK0021D010CBSMsg.STATUS)));
		}

		return param;
	}

	// ----- ST1-2012-0000156 2012/07/30 NRN番号設定対応 h.iwamoto END-----


	// ST1-2013-0000487 2013/03/21 Otsuka start
	/**
	 * 緊急通報用カナ名ドメインチェックを行います
	 * @param emgKshKana 緊急通報用氏名カナ
	 */
	public String chkAndCnvEmgKshKana(String emgKshKana)
	{
		if (emgKshKana != null && !"".equals(emgKshKana))
		{
			// 緊急通報用氏名カナドメインチェック
			if (!MixCharCheck.isEmgEnNumKanaCheck(emgKshKana) || JPCConvertString.convFullToHalfByKata(emgKshKana).length() > 36)
			{
				// ドメインエラーの場合はNULLを返却します。
				return null;
			}
		}
		return emgKshKana;
	}
	// ST1-2013-0000487 2013/03/21 Otsuka end
}
