/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKBmpKojiKaifkMapperCC
*   ソースファイル名：JKKBmpKojiKaifkMapperCC.java
*   作成者          ：富士通
*   日付            ：2012年07月03日
*＜機能概要＞
*   番ポ工事回復CCで使用するマッパークラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v6.00.00    2013/12/29   FJ）        新規作成(OM-2013-0005115)
*  v25.00.00    2016/07/11   FJ）江藤    【OM-2016-0001535】番ポ工事のルーティング番号不正
*  v72.00.01	2024/10/24	 FJ) 吉田賢  【ANK-4494-00-00】【eo定期】 双方向番ポ対応 STEP2
*  v72.00.02	2024/11/20	 FJ) 星野    【ANK-4494-27-00】【双方向番ポ対応】オーダ流通S向け番ポ工事編集仕様の変更対応
*  v72.01.00	2025/01/09	 FJ) 藤井    【#86310】番ポ工事スキーマの移転元通信事業者コード、移転元通信事業者拠点コードがクリアされる
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKSvcConst;
import com.fujitsu.futurity.bp.custom.constant.JKKTelnoInfoAddConstCC;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JCKStrConst;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JTUStrConst;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.ECK0201B001CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0201B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0191B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ETU0011B018CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0011D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0021B017CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0101B020CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0121B011CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0091A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0091A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0121A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0121A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0301A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0301A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg1List;

/**
 * 番ポ工事回復CC用マッピングクラス<p>
 * <br>
 * @author FJ
 */
public class JKKBmpKojiKaifkMapperCC
{
	/** 
	 * --------------------------------------------------------------------------------------------
	 * 
	 * 上りマッピング処理 START 
	 * 
	 * --------------------------------------------------------------------------------------------
	 */
	/**
	 * EKK0081A010_サービス契約一意照会
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param svcKeiNo サービス契約番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgEKK0081A010(
			IRequestParameterReadWrite param
			,String funcCode
			,String svcKeiNo
	) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0081A010CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new EKK0081A010CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(EKK0081A010CBSMsg.TEMPLATEID, "EKK0081A010");

		// 機能コード
		template.set(EKK0081A010CBSMsg.FUNC_CODE, funcCode);
		
		// ＫＥＹ＿サービス契約番号
		template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		
		// ＫＥＹ＿予約適用年月日
		template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}
	
	/**
	 * EKK0191B001_サービス契約内訳<eo光電話>一覧照会（サービス契約番号）
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param funcCode 機能コード
	 * @param svcKeiNo サービス契約番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgEKK0191B001(
			IRequestParameterReadWrite param
			,String funcCode
			,String svcKeiNo
	) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0191B001CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new EKK0191B001CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(EKK0191B001CBSMsg.TEMPLATEID, "EKK0191B001");

		// 機能コード
		template.set(EKK0191B001CBSMsg.FUNC_CODE, funcCode);
		
		// ＫＥＹ＿サービス契約番号
		template.set(EKK0191B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}

	/**
	 * ETU0011B018_番ポ工事一覧照会（番ポ申込書タイプ）
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param funcCode 機能コード
	 * @param svcKeiNo サービス契約番号
	 * @param telno 電話番号
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgETU0011B018(
			IRequestParameterReadWrite param
			,String funcCode
			,String svcKeiNo
			,String telno
			,String svcKeiUcwkNo
	) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ETU0011B018CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new ETU0011B018CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(ETU0011B018CBSMsg.TEMPLATEID, "ETU0011B018");

		// 機能コード
		template.set(ETU0011B018CBSMsg.FUNC_CODE, funcCode);
		
		// ＫＥＹ＿サービス契約番号
		template.set(ETU0011B018CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		
		// ＫＥＹ＿ＮＴＴ契約電話回線番号
		template.set(ETU0011B018CBSMsg.KEY_NTT_KEI_TEL_KAISEN_NO, telno);
		
		// ＫＥＹ＿サービス契約内訳番号
		template.set(ETU0011B018CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}

	/**
	 * ECK0201B001_連絡先一覧照会
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param funcCode 機能コード
	 * @param sysId SYSID
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgECK0201B001(
			IRequestParameterReadWrite param
			,String funcCode
			,String sysId
	) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ECK0201B001CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new ECK0201B001CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(ECK0201B001CBSMsg.TEMPLATEID, "ECK0201B001");

		// 機能コード
		template.set(ECK0201B001CBSMsg.FUNC_CODE, funcCode);
		
		// ＫＥＹ＿SYSID
		template.set(ECK0201B001CBSMsg.KEY_SYSID, sysId);
		
		// ＫＥＹ＿連絡方法コード
		template.set(ECK0201B001CBSMsg.KEY_RRK_WAY_CD, JCKStrConst.RRK_WAY_CD_TELNO);
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}
	
	/**
	 * EKK0251B003_サービス契約回線内訳一覧照会（現在利用中）
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param funcCode 機能コード
	 * @param svcKeiNo サービス契約番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgEKK0251B003(
			IRequestParameterReadWrite param
			,String funcCode
			,String svcKeiNo
	) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0251B003CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new EKK0251B003CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(EKK0251B003CBSMsg.TEMPLATEID, "EKK0251B003");

		// 機能コード
		template.set(EKK0251B003CBSMsg.FUNC_CODE, funcCode);
		
		// ＫＥＹ＿SYSID
		template.set(EKK0251B003CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}
	
	/**
	 * EKK0191A010_サービス契約内訳<eo光電話>一意照会
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgEKK0191A010(
			IRequestParameterReadWrite param
			,String funcCode
			,String svcKeiUcwkNo
	) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EKK0191A010CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new EKK0191A010CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(EKK0191A010CBSMsg.TEMPLATEID, "EKK0191A010");

		// 機能コード
		template.set(EKK0191A010CBSMsg.FUNC_CODE, funcCode);
		
		// ＫＥＹ＿サービス契約内訳番号
		template.set(EKK0191A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}

	/**
	 * EZM0121A010_電話番号一意照会
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param funcCode 機能コード
	 * @param telNo 電話番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgEZM0121A010(
			IRequestParameterReadWrite param
			,String funcCode
			,String telNo
	) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EZM0121A010CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new EZM0121A010CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(EZM0121A010CBSMsg.TEMPLATEID, "EZM0121A010");

		// 機能コード
		template.set(EZM0121A010CBSMsg.FUNC_CODE, funcCode);
		
		// ＫＥＹ＿電話番号
		template.set(EZM0121A010CBSMsg.KEY_TELNO, telNo);
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}
	
	/**
	 * EZM0301A010_局番一意照会
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param funcCode 機能コード
	 * @param kyokuNo 局番
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgEZM0301A010(
			IRequestParameterReadWrite param
			,String funcCode
			,String kyokuNo
	) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EZM0301A010CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new EZM0301A010CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(EZM0301A010CBSMsg.TEMPLATEID, "EZM0301A010");

		// 機能コード
		template.set(EZM0301A010CBSMsg.FUNC_CODE, funcCode);
		
		// ＫＥＹ＿SYSID
		template.set(EZM0301A010CBSMsg.KEY_KYOKU_NO, kyokuNo);
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}
	/**
	 * EZM0091A010_住所対象番号区画一意照会
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param adCd 住所コード
	 * @param noKukakuCd 番号区画コード
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgEZM0091A010(
			IRequestParameterReadWrite param
			,String funcCode
			,String adCd
			,String noKukakuCd
	) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EZM0091A010CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new EZM0091A010CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(EZM0091A010CBSMsg.TEMPLATEID, "EZM0091A010");

		// 機能コード
		template.set(EZM0091A010CBSMsg.FUNC_CODE, funcCode);
		
		// ＫＥＹ＿住所コード
		template.set(EZM0091A010CBSMsg.KEY_AD_CD, adCd);
		
		// ＫＥＹ＿番号区画コード
		template.set(EZM0091A010CBSMsg.KEY_NO_KUKAKU_CD, noKukakuCd);
		
		// ＫＥＹ＿予約適用年月日
		template.set(EZM0091A010CBSMsg.KEY_RSV_APLY_YMD, JKKBpCommon.getOpeDate(null));
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}

	/**
	 * ETU0021B017_同番移転一覧照会（サービス契約内訳番号）2
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgETU0021B017(
			IRequestParameterReadWrite param
			,String funcCode
			,String svcKeiUcwkNo
			)throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ETU0021B017CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new ETU0021B017CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(ETU0021B017CBSMsg.TEMPLATEID, "ETU0021B017");

		// 機能コード
		template.set(ETU0021B017CBSMsg.FUNC_CODE, funcCode);
		
		// ＫＥＹ＿サービス契約内訳番号
		template.set(ETU0021B017CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}
	
	/**
	 * ETU0121B011_番ポ工事申込事業所番号取得
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param kyokuNo 局番
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgETU0121B011(
			IRequestParameterReadWrite param
			,String funcCode
			,String kyokuNo
	) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ETU0121B011CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new ETU0121B011CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(ETU0121B011CBSMsg.TEMPLATEID, "ETU0121B011");

		// 機能コード
		template.set(ETU0121B011CBSMsg.FUNC_CODE, funcCode);
		
		// 最大検索件数 ※当SIFは最大検索件数を指定しないとエラーになるため、1を設定
		template.set(ETU0121B011CBSMsg.MAX_SEARCH_NUM, "1");

		// ＫＥＹ＿局番
		template.set(ETU0121B011CBSMsg.KEY_KYOKUBAN, kyokuNo);
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}

	/**
	 * ETU0011D010_番ポ工事登録
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param outMapEKK0191B001 サービス契約内訳一意照会結果
	 * @param outMapEKK0251B003 サービス契約回線内訳一覧照会（現在利用中）結果
	 * @param outMapECK0201B001 連絡先一覧照会結果
	 * @param outMapEZM0301A010 局番一意照会結果
	 * @param outMapEZM0091A010 住所対象番号区画一意照会結果
	 * @param outMapETU0121B011 番ポ工事申込事業所番号取得結果
	 * @param outMapETU0021B017 同番移転一覧照会（サービス契約内訳番号）２結果
	 * @param outMapEZM0121A010 電話番号一意照会結果
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgETU0011D010(
			IRequestParameterReadWrite param
			,String funcCode
			,CAANMsg outMapEKK0191A010
			,CAANMsg outMapEKK0251B003
			,CAANMsg outMapECK0201B001
			,CAANMsg outMapEZM0301A010
			,CAANMsg outMapEZM0091A010
			// ANK-4494-00-00 STEP2 DEL START
//			,CAANMsg outMapETU0121B011
			// ANK-4494-00-00 STEP2 DEL END
			,CAANMsg outMapETU0021B017
			// OM-2016-0001535 電話番号一意照会結果を追加 2016/07/11 ADD START
			,CAANMsg outMapEZM0121A010
			// OM-2016-0001535 電話番号一意照会結果を追加 2016/07/11 ADD END
			// #86310 ADD START
			,CAANMsg outMapETU0101B020
			,CAANMsg outMapEZM0321A010Domain
			,CAANMsg outMapEZM0321A010Telno
			// #86310 ADD END
	) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ETU0011D010CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new ETU0011D010CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(ETU0011D010CBSMsg.TEMPLATEID, "ETU0011D010");

		// 機能コード
		template.set(ETU0011D010CBSMsg.FUNC_CODE, funcCode);
		
		// 通信事業者コード
		String tsjgsCd = getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.TSJGS_CD);
		
		// 移転元通信事業者拠点コード
		String itnmTsjgsKtnCd = getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.ITNM_TSJGS_KTN_CD);
		
		// 番ポ申込書タイプコード
		String bmpMskmshoTypeCd = null;
		
		// 他事業者未確認フラグ
		String tajigyoshaMiCfmFlg = null;
		
		if (JKKSvcConst.TSJGS_CD_NTT.equals(tsjgsCd))
		{
			bmpMskmshoTypeCd = JKKSvcConst.BMP_IRAI_NAIYO_CD_ITEN;
			tajigyoshaMiCfmFlg = JKKSvcConst.FLG_OFF;
			// #86310 DEL START
//			tsjgsCd = null;
//			itnmTsjgsKtnCd = null;
			// #86310 DEL END
		}
		else
		{
			// #86310 MOD START
//			bmpMskmshoTypeCd = JKKSvcConst.BMP_IRAI_NAIYO_CD_UPD;
			bmpMskmshoTypeCd = JKKSvcConst.BMP_IRAI_NAIYO_CD_ITEN;
			// #86310 MOD END
			tajigyoshaMiCfmFlg = JKKSvcConst.FLG_ON;
		}
		
		// サービス契約内訳番号
		template.set(ETU0011D010CBSMsg.SVC_KEI_UCWK_NO,  getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.SVC_KEI_UCWK_NO));
		
		// 法人eo読替サービス契約番号
		template.setNull(ETU0011D010CBSMsg.HJIN_EO_YKAE_SVKEI_NO);
		
		// 法人個人コード
		template.set(ETU0011D010CBSMsg.HOJIN_KOJIN_CD, JKKSvcConst.HOJIN_KOJIN_CD_KOJIN);
		
		// お客様申込年月日
		template.set(ETU0011D010CBSMsg.CUST_MSKM_YMD, JCCBPCommon.getOpeDate(null));
		
		// 番ポ申込書タイプコード
		template.set(ETU0011D010CBSMsg.BMP_MSKMSHO_TYPE_CD, bmpMskmshoTypeCd);
		
		// 同時工事有無
		String dojiKojiUm = getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.BMP_DOJI_KOJI_KIBO_UM);
		if (null == dojiKojiUm || 1 > dojiKojiUm.length())
		{
			dojiKojiUm = JKKStrConst.CD_DIV_UM_NASHI;
		}
		template.set(ETU0011D010CBSMsg.DOJI_KOJI_UM, dojiKojiUm);
		
		// 同番移転有無
// ANK-4494-27-00対応 20241120 星野 MOD START
//		CAANMsg[] rsltMsgETU0021B017List = outMapETU0021B017.getCAANMsgList(ETU0021B017CBSMsg.ETU0021B017CBSMSG1LIST);
//		String dobanitenUmu = (null != rsltMsgETU0021B017List && 0 < rsltMsgETU0021B017List.length) ? JKKStrConst.CD_DIV_UM_ARI : JKKStrConst.CD_DIV_UM_NASHI;
//		template.set(ETU0011D010CBSMsg.DOBANITEN_UM, dobanitenUmu);
		
		template.set(ETU0011D010CBSMsg.DOBANITEN_UM, JKKStrConst.CD_DIV_UM_ARI);
// ANK-4494-27-00対応 20241120 星野 MOD END
		
		// NTT契約電話回線番号
		template.set(ETU0011D010CBSMsg.NTT_KEI_TEL_KAISEN_NO, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.TELNO));
		
		// 契約者回線番号
		template.set(ETU0011D010CBSMsg.TA_JGYOSHA_UR_NO, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.TELNO));
		
		// ルーティング番号 
		// OM-2016-0001535 電話番号マスタ.NRN番号が取得できた場合、電話番号マスタ.NRN番号を設定するよう修正 2016/07/11 MOD START
//		template.set(ETU0011D010CBSMsg.ROUTING_NO, getRsltMsgListValue(outMapEZM0301A010, EZM0301A010CBSMsg.EZM0301A010CBSMSG1LIST, EZM0301A010CBSMsg1List.KOJIN_NRN_NO));
		String routingNo = getRsltMsgListValue(outMapEZM0121A010, EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST, EZM0121A010CBSMsg1List.NRN_NO);
		
		if (JKKStringUtil.isNullBlank(routingNo))
		{
			routingNo = getRsltMsgListValue(outMapEZM0301A010, EZM0301A010CBSMsg.EZM0301A010CBSMSG1LIST, EZM0301A010CBSMsg1List.KOJIN_NRN_NO);
		}
		
		template.set(ETU0011D010CBSMsg.ROUTING_NO, routingNo);
		// OM-2016-0001535 電話番号マスタ.NRN番号が取得できた場合、電話番号マスタ.NRN番号を設定するよう修正 2016/07/11 MOD END
		
		// NTT契約者名
		template.set(ETU0011D010CBSMsg.NTT_KEISHA_NM, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NTT_KEISHA_NM));
		
		// NTT契約者カナ名
		template.set(ETU0011D010CBSMsg.NTT_KSH_KANA, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NTT_KSH_KANA));
		
		// NTT契約者住所手動入力フラグ
		template.set(ETU0011D010CBSMsg.NKYS_AD_MAN_INPUT_FLG, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NKYS_AD_MAN_INPUT_FLG));
		
		// NTT契約者住所コード
		template.set(ETU0011D010CBSMsg.NTT_KEISHA_AD_CD, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NTT_KEISHA_AD_CD));
		
		// NTT契約者郵便番号
		template.set(ETU0011D010CBSMsg.NTT_KEISHA_PCD, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NTT_KEISHA_PCD));
		
		// NTT契約者都道府県名
		template.set(ETU0011D010CBSMsg.NTT_KEISHA_STATE_NM, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NTT_KEISHA_STATE_NM));
		
		// NTT契約者市区町村名
		template.set(ETU0011D010CBSMsg.NTT_KEISHA_CITY_NM, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NTT_KEISHA_CITY_NM));
		
		// NTT契約者大字通称名
		template.set(ETU0011D010CBSMsg.NTT_KEISHA_OAZTSU_NM, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NTT_KEISHA_OAZTSU_NM));
		
		// NTT契約者字丁目名
		template.set(ETU0011D010CBSMsg.NTT_KEISHA_AZCHO_NM, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NTT_KEISHA_AZCHO_NM));
		
		// NTT契約者番地号
		template.set(ETU0011D010CBSMsg.NTT_KEISHA_BNCHIGO, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NTT_KEISHA_BNCHIGO));
		
		// NTT契約者住所補記・建物名
		template.set(ETU0011D010CBSMsg.NTT_KEISHA_ADRTTM, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NTT_KEISHA_ADRTTM));
		
		// NTT契約者住所補記・部屋番号
		template.set(ETU0011D010CBSMsg.NTT_KEISHA_ADRRM, getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.NTT_KEISHA_ADRRM));
		
		// 連絡先電話番号
		// 連絡先から電話番号が取得できた場合は連絡先の電話番号を設定、取得できない場合は回線場所電話番号を設定
		String rrksTelNo = null;
		if (null != outMapECK0201B001 && !outMapECK0201B001.isNull(ECK0201B001CBSMsg.ECK0201B001CBSMSG1LIST))
		{
			CAANMsg[] rsltMsgList = outMapECK0201B001.getCAANMsgList(ECK0201B001CBSMsg.ECK0201B001CBSMSG1LIST);
			for (int i = 0; rsltMsgList != null && i < rsltMsgList.length; i++)
			{
				rrksTelNo = rsltMsgList[i].getString(ECK0201B001CBSMsg1List.TELNO);
				if (!JKKBpCommon.isNull(rrksTelNo))
				{
					break;
				}
			}
		}
		if (JKKBpCommon.isNull(rrksTelNo))
		{
			rrksTelNo = getRsltMsgListValue(outMapEKK0251B003, EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, EKK0251B003CBSMsg1List.KAISEN_PLACE_TELNO);
			template.set(ETU0011D010CBSMsg.RRKS_TELNO, rrksTelNo);
		}
		
		template.set(ETU0011D010CBSMsg.RRKS_TELNO, rrksTelNo);
		
		// 設置場所住所手動入力フラグ
		template.set(ETU0011D010CBSMsg.SETPLACE_AD_MAN_INPUT_FLG, JKKStrConst.AD_MAN_INPUT_NO);
		
		// 設置場所住所コード
		template.set(ETU0011D010CBSMsg.SETPLACE_AD_CD, getRsltMsgListValue(outMapEKK0251B003, EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, EKK0251B003CBSMsg1List.KAISEN_PLACE_AD_CD));
		
		// 設置場所郵便番号
		template.set(ETU0011D010CBSMsg.SETPLACE_PCD, getRsltMsgListValue(outMapEKK0251B003, EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, EKK0251B003CBSMsg1List.KAISEN_PLACE_PCD));
		
		// 設置場所都道府県名
		template.set(ETU0011D010CBSMsg.SETPLACE_STATE_NM, getRsltMsgListValue(outMapEKK0251B003, EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, EKK0251B003CBSMsg1List.KAISEN_PLACE_STATE_NM));
		
		// 設置場所市区町村名
		template.set(ETU0011D010CBSMsg.SETPLACE_CITY_NM, getRsltMsgListValue(outMapEKK0251B003, EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, EKK0251B003CBSMsg1List.KAISEN_PLACE_CITY_NM));
		
		// 設置場所大字通称名
		template.set(ETU0011D010CBSMsg.SETPLACE_OAZTSU_NM, getRsltMsgListValue(outMapEKK0251B003, EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, EKK0251B003CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
		
		// 設置場所字丁目名
		template.set(ETU0011D010CBSMsg.SETPLACE_AZCHO_NM, getRsltMsgListValue(outMapEKK0251B003, EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, EKK0251B003CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
		
		// 設置場所番地号
		template.set(ETU0011D010CBSMsg.SETPLACE_BNCHIGO, getRsltMsgListValue(outMapEKK0251B003, EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, EKK0251B003CBSMsg1List.KAISEN_PLACE_BNCHIGO));
		
		// 設置場所住所補記・建物名
		template.set(ETU0011D010CBSMsg.SETPLACE_ADRTTM, getRsltMsgListValue(outMapEKK0251B003, EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, EKK0251B003CBSMsg1List.KAISEN_PLACE_ADRTTM));
		
		// 設置場所住所補記・部屋番号
		template.set(ETU0011D010CBSMsg.SETPLACE_ADRRM, getRsltMsgListValue(outMapEKK0251B003, EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, EKK0251B003CBSMsg1List.KAISEN_PLACE_ADRRM));
		
		// 番ポ工事受付年月日
		template.set(ETU0011D010CBSMsg.BMP_KOJI_UK_YMD, JCCBPCommon.getOpeDate(null));
		
		// 番ポ工事希望年月日時
		template.setNull(ETU0011D010CBSMsg.BMP_KOJI_KIBO_YMDH);
		
		// 番ポ工事希望年月日保留フラグ
		template.setNull(ETU0011D010CBSMsg.BMPKJ_KIBO_YMD_PDING_FLG);
		
		// 番ポ受付担当ユーザーID
		template.set(ETU0011D010CBSMsg.BMP_UK_TNT_USER_ID, (String)param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		// 電話加入権取扱コード
		// #86310 MOD START
//		template.set(ETU0011D010CBSMsg.TEL_KNKN_TRAT_CD, JKKSvcConst.TEL_KNKN_TRAT_CD_USE_PAUSE);
		// 電話加入権取扱コード
		if(JKKStrConst.TSJGS_CD_NTT.equals(tsjgsCd))
		{
			template.set(ETU0011D010CBSMsg.TEL_KNKN_TRAT_CD,JTUStrConst.TEL_KNKN_USE_PAUSE);
		}
		else
		{
			template.set(ETU0011D010CBSMsg.TEL_KNKN_TRAT_CD, JTUStrConst.TEL_KNKN_MI_CHOICE);
		}
		// #86310 MOD END
		
		// 電話加入権取扱その他メモ
		template.setNull(ETU0011D010CBSMsg.TEL_KNKN_TRAT_OTR_MEMO);
		
		// 加入権移転先住所手動入力フラグ
		template.setNull(ETU0011D010CBSMsg.KNKN_ITNSAD_MAN_INPUT_FLG);
		
		// 加入権移転先住所コード
		template.setNull(ETU0011D010CBSMsg.KANYKN_ITENS_AD_CD);
		
		// 加入権移転先郵便番号
		template.setNull(ETU0011D010CBSMsg.KANYKN_ITENS_PCD);
		
		// 加入権移転先都道府県名
		template.setNull(ETU0011D010CBSMsg.KANYKN_ITENS_STATE_NM);
		
		// 加入権移転先市区町村名
		template.setNull(ETU0011D010CBSMsg.KANYKN_ITENS_CITY_NM);
		
		// 加入権移転先大字通称名
		template.setNull(ETU0011D010CBSMsg.KANYKN_ITENS_OAZTSU_NM);
		
		// 加入権移転先字丁目名
		template.setNull(ETU0011D010CBSMsg.KANYKN_ITENS_AZCHO_NM);
		
		// 加入権移転先番地号
		template.setNull(ETU0011D010CBSMsg.KANYKN_ITENS_BNCHIGO);
		
		// 加入権移転先住所補記・建物名
		template.setNull(ETU0011D010CBSMsg.KANYKN_ITENS_ADRTTM);
		
		// 加入権移転先住所補記・部屋番号
		template.setNull(ETU0011D010CBSMsg.KANYKN_ITENS_ADRRM);
		
		// 移転元通信事業者コード
		template.set(ETU0011D010CBSMsg.ITNM_TSJGS_CD, tsjgsCd);
		
		// 移転元通信事業者拠点コード
		template.set(ETU0011D010CBSMsg.ITNM_TSJGS_KTN_CD, itnmTsjgsKtnCd);
		
		// #86310 MOD START
//		// 申込事業者所内工事有無
//		template.set(ETU0011D010CBSMsg.MSKMJIG_SNAI_KOJI_UM, JKKSvcConst.UM_ARI);
//		
//		// 申込事業者所外工事有無
//		template.set(ETU0011D010CBSMsg.MSKMJIG_SGAI_KOJI_UM, JKKSvcConst.UM_NASI);
		// 局番別NTT収容局一覧照会明細がnullではない場合
		CAANMsg[] rsltMsgETU0101B020List = outMapETU0101B020.getCAANMsgList(ETU0101B020CBSMsg.ETU0101B020CBSMSG1LIST);
		if (rsltMsgETU0101B020List != null && rsltMsgETU0101B020List.length > 0)
		{
			// 申込事業者所内工事有無
			template.set(ETU0011D010CBSMsg.MSKMJIG_SNAI_KOJI_UM, convBlankToNull(JKKSvcConst.UM_ARI));
			// 申込事業者所外工事有無
			template.set(ETU0011D010CBSMsg.MSKMJIG_SGAI_KOJI_UM, convBlankToNull(JKKSvcConst.UM_NASI));
		}
		else
		{
			// 申込事業者所内工事有無
			template.set(ETU0011D010CBSMsg.MSKMJIG_SNAI_KOJI_UM, convBlankToNull(JKKSvcConst.UNSELECT));
			// 申込事業者所外工事有無
			template.set(ETU0011D010CBSMsg.MSKMJIG_SGAI_KOJI_UM, convBlankToNull(JKKSvcConst.UNSELECT));
		}
		// #86310 MOD END
		
		// 申込事業者記事欄1
		template.setNull(ETU0011D010CBSMsg.MSKMJIG_KIJIRAN_1);
		
		// 申込事業者記事欄2
		template.setNull(ETU0011D010CBSMsg.MSKMJIG_KIJIRAN_2);
		
		// 他事業者未確認フラグ
		template.set(ETU0011D010CBSMsg.TA_JIGYOSHA_MI_CFM_FLG, tajigyoshaMiCfmFlg);
		
		// 番ポ申込事業所番号
		template.set(ETU0011D010CBSMsg.BMP_MSKM_JIGSHO_NO, getRsltMsgListValue(outMapEZM0091A010, EZM0091A010CBSMsg.EZM0091A010CBSMSG1LIST, EZM0091A010CBSMsg1List.MSKM_JIGSHO_NO));
		
		// ANK-4494-00-00 STEP2 DEL START
//		// 番ポ工事申込事業所番号
//		String bmpKojiMskmJigshoNo = getRsltMsgListValue(outMapEZM0091A010, EZM0091A010CBSMsg.EZM0091A010CBSMSG1LIST, EZM0091A010CBSMsg1List.BMP_KOJI_MSKM_JIGSHO_NO);
//		
//		if (JKKCommonUtil.isNull(bmpKojiMskmJigshoNo))
//		{
//			// 住所対象番号区画一意照会の結果より番ポ工事申込事業所番号が取得できなかった場合
//			// 番ポ工事申込事業所番号取得のより番ポ工事申込事業所番号を取得
//			bmpKojiMskmJigshoNo = getRsltMsgListValue(outMapETU0121B011, ETU0121B011CBSMsg.ETU0121B011CBSMSG1LIST, ETU0121B011CBSMsg1List.BMP_KOJI_MSKM_JIGSHO_NO);
//		}
//		
//		template.set(ETU0011D010CBSMsg.BMP_KOJI_MSKM_JIGSHO_NO, bmpKojiMskmJigshoNo);
		// ANK-4494-00-00 STEP2 DEL END
		
		// #86310 ADD START
		// 移転先事業者ドメイン
		template.set(ETU0011D010CBSMsg.ITENS_JIGYOSHA_DOMAIN, convBlankToNull(
				getRsltMsgListValue(outMapEZM0321A010Domain, EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE)));
		
		// 移転先事業者電話番号を取得
		String itensJigyoshaTelno = getRsltMsgListValue(outMapEZM0321A010Telno, EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
		
		if (itensJigyoshaTelno != null)
		{
			// 移転先事業者電話番号
			template.set(ETU0011D010CBSMsg.ITENS_JIGYOSHA_TELNO, itensJigyoshaTelno.replace("-", ""));
		}
		else 
		{
			// 移転先事業者電話番号
			template.setNull(ETU0011D010CBSMsg.ITENS_JIGYOSHA_TELNO);
		}
		
		// マンション物件番号を取得
		String mansionBukkenNo = convBlankToNull(getRsltMsgListValue(outMapEKK0251B003, EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, EKK0251B003CBSMsg1List.MANSION_BUKKEN_NO));
		
		// 利用場所がマンションタイプの場合
		if (!isNull(mansionBukkenNo))
		{
			// 自社内記事欄
			template.set(ETU0011D010CBSMsg.JI_SHANAI_KIJIRAN, "MT");
		}
		else
		{
			// 自社内記事欄
			template.setNull(ETU0011D010CBSMsg.JI_SHANAI_KIJIRAN);
		}
		
		String dobanitenMskmUm = convBlankToNull(getRsltMsgListValue(outMapEKK0191A010, EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, EKK0191A010CBSMsg1List.DOBANITEN_MSKM_UM));
		
		// 同番移転申込有無が"0"の場合
		if (JKKSvcConst.UM_NASI.equals(dobanitenMskmUm))
		{
			// 設置場所住所変更有無
			template.set(ETU0011D010CBSMsg.SETPLACE_AD_CHGE_UM, JKKSvcConst.UM_NASI);
		}
		// 同番移転申込有無が"1"の場合
		else if ((JKKSvcConst.UM_ARI.equals(dobanitenMskmUm)))
		{
			// 設置場所住所変更有無
			template.set(ETU0011D010CBSMsg.SETPLACE_AD_CHGE_UM, JKKSvcConst.UM_ARI);
		}
		else
		{
			// 設置場所住所変更有無
			template.set(ETU0011D010CBSMsg.SETPLACE_AD_CHGE_UM, JKKSvcConst.UM_NASI);
		}
		
		// 設置場所手投入識別_市区町村名
		template.set(ETU0011D010CBSMsg.SETPLC_HTNY_SKBT_CITY_NM, JKKStrConst.AD_MAN_INPUT_NO);
		// 設置場所手投入識別_大字_通称名
		template.set(ETU0011D010CBSMsg.SETPLC_HTNY_SKBT_OAZTSU_NM, JKKStrConst.AD_MAN_INPUT_NO);
		// 設置場所手投入識別_字丁目名
		template.set(ETU0011D010CBSMsg.SETPLC_HTNY_SKBT_AZCHO_NM, JKKStrConst.AD_MAN_INPUT_NO);
		
		
		//工事実施方法
		if (JKKStrConst.CD00002_UMU_1.equals(template.getString(ETU0011D010CBSMsg.DOJI_KOJI_UM)))
		{
			template.set(ETU0011D010CBSMsg.KOJI_JSSI_WAY, "2");
		}
		else
		{
			template.set(ETU0011D010CBSMsg.KOJI_JSSI_WAY, "1");
		}
		
		// 局番別NTT収容局一覧照会明細がnullではない場合
		if (rsltMsgETU0101B020List != null && rsltMsgETU0101B020List.length > 0)
		{
			// 番ポPSTNドライカッパ利用有無
			template.set(ETU0011D010CBSMsg.BMP_PSTN_DRYCOPPER_USE_UM, convBlankToNull(JKKSvcConst.UM_NASI));
		}
		else
		{
			// 番ポPSTNドライカッパ利用有無
			template.set(ETU0011D010CBSMsg.BMP_PSTN_DRYCOPPER_USE_UM, convBlankToNull(JKKSvcConst.UNSELECT));
		}
		// #86310 ADD END
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}
	
	// #86310 ADD START
	/**
	 * EZM0321A010_業務パラメータ管理一意照会
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param workParamId 業務パラメータID
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgEZM0321A010(
			IRequestParameterReadWrite param,
			String workParamId)
			throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EZM0321A010CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new EZM0321A010CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(EZM0321A010CBSMsg.TEMPLATEID, "EZM0321A010");

		// 機能コード
		template.set(EZM0321A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);
		
		// ＫＥＹ＿業務パラメータID
		template.set(EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, convBlankToNull(workParamId));
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}
	
	/**
	 * ETU0101B020 局番別NTT収容局一覧照会
	 * サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param KyokuNo 局番
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgETU0101B020(
			IRequestParameterReadWrite param,
			String KyokuNo)
			throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ETU0101B020CBSMsg.class.getName());
		
		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new ETU0101B020CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(ETU0101B020CBSMsg.TEMPLATEID, "ETU0101B020");

		// 機能コード
		template.set(ETU0101B020CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);
		
		// ＫＥＹ＿局番
		template.set(ETU0101B020CBSMsg.KEY_KYOKU_NO, convBlankToNull(KyokuNo));
		
		// 上り情報を生成
		return editInMsgCmn(param, template);
	}
	// #86310 ADD END

	/** 
	 * --------------------------------------------------------------------------------------------
	 * 
	 * 上りマッピング処理 END 
	 * 
	 * --------------------------------------------------------------------------------------------
	 */

	/** 
	 * --------------------------------------------------------------------------------------------
	 * 
	 * 下りマッピング処理 START 
	 * 
	 * --------------------------------------------------------------------------------------------
	 */


	/** 
	 * --------------------------------------------------------------------------------------------
	 * 
	 * 下りマッピング処理 END 
	 * 
	 * --------------------------------------------------------------------------------------------
	 */

	/** 
	 * --------------------------------------------------------------------------------------------
	 * 
	 * エラーマッピング処理 START 
	 * 
	 * --------------------------------------------------------------------------------------------
	 */
	
	/**
	 * <pre>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 * 
	 * </pre>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @param fixedText ユーザ任意文字列
	 * @param contents サービスインターフェースのテンプレート項目の配列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRP(
			Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			String fixedText,
			Object[][] contents) 
			throws Throwable 
	{

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		// ステータス取得
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		if (returnCode.intValue() != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_"
				+ String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_"
					+ formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		// ユーザデータ情報
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ユーザデータ情報にエラー情報をマッピング
		for(int i = 0 ; contents != null && i < contents.length ; i++)
		{
			String element = null;
			element = (String)contents[i][0];
			if (element.indexOf("_err") > 0)
			{
				if (!template.isNull(element))
				{
					if (!inMap.containsKey(element))
					{
						inMap.put(element, template.getString(element));
					}
				}
			}
		}

		// エラー情報のマップを取得
		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;
	}
	
	/** 
	 * --------------------------------------------------------------------------------------------
	 * 
	 * エラーマッピング処理 END 
	 * 
	 * --------------------------------------------------------------------------------------------
	 */
	
	/** 
	 * --------------------------------------------------------------------------------------------
	 * 
	 * ユーティリティメソッド START 
	 * 
	 * --------------------------------------------------------------------------------------------
	 */
	
	/**
	 * 条件部の共通する項目の設定する
	 * 
	 * @param param リクエストパラメータ
	 * @param template template 条件の設定先
	 * @throws RequestParameterException
	 */
	private void editInMsgBasicCmn(IRequestParameterReadOnly param, CAANMsg template)
	throws RequestParameterException
	{
		
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);
		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
	}
	
	/**
	 * サービスI/F実行用の上り情報を生成する
	 * 
	 * @param param リクエストパラメータ
	 * @param template 条件の設定先
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 * @exception RequestParameterException
	 */
	private HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param, CAANMsg template)
	throws RequestParameterException 
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;

	}
	
	/**
	 * 持ちうるフィールドにNullマッピングで埋める
	 * 
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	private void fillCAANMSGNullMapping(CAANMsg msg, Object[][] contents)
	{
		// 要素ごとのループ
		for(int i = 0 ; i < contents.length ; i++)
		{
			Object element = null;
			// キーに該当する箇所の取得
			element = contents[i][0];
			// Nullでマッピング
			msg.setNull((String)element);
		}
	}
	/**
	 * S/IFの実行結果から指定されたキーに該当する値を取得する
	 * 
	 * S/IFの実行結果から指定のキー(リスト)で取得できるメッセージリストを取得する。
	 * メッセージリストが空でなければ、先頭行のメッセージから指定のキー(値)に該当する値を取得し、返却する。
	 * 
	 * @param trgtNMsg 対象メッセージ
	 * @param listKey キー(リスト)
	 * @param valueKey キー(値)
	 * @return 値
	 */
	public String getRsltMsgListValue(CAANMsg trgtNMsg, String listKey, String valueKey)
	{
		String value = null;
		if (trgtNMsg != null)
		{
			CAANMsg[] rsltMsgList = trgtNMsg.getCAANMsgList(listKey);
			if (rsltMsgList != null && rsltMsgList.length > 0)
			{
				CAANMsg rsltMsg = rsltMsgList[0];
				value = rsltMsg.getString(valueKey);
			}
		}
		
		return value;
	}
	
	// #86310 ADD START
	/**
	 * 文字列が空文字ならnullに変換する
	 * 
	 * @param value 判定する文字列
	 * @return 変換後文字列
	 */
	public String convBlankToNull(String value)
	{
		return JKKSvcConst.STRING_BLANK.equals(value) ? null : value;
	}
	
	/**
	 * オブジェクトに値が設定されているか判定する
	 * 
	 * @param arg0 判定するオブジェクト
	 * @return オブジェクトに値が設定されていない場合はtrue
	 */
	public boolean isNull(Object arg0) 
	{
		if (arg0 == null) 
		{
			return true;
		}

		return 0 == arg0.toString().length();
	}
	// #86310 ADD END

	/** 
	 * --------------------------------------------------------------------------------------------
	 * 
	 * ユーティリティメソッド END 
	 * 
	 * --------------------------------------------------------------------------------------------
	 */
}