/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom, 2011
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JSCSV002801MapperCC
 *   ソースファイル名：JSCSV002801MapperCC.java
 *   作成者          ：富士通
 *   日付            ：2024年07月10日
 *＜機能概要＞
 *   ENUM切替マッパーCCクラスです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v72.00.00   2024/07/10   FJ)寺田     新規作成 【ANK-4494-00-00】双方向番ポ STEP1
 *   
 **********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKSvcConst;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.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.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.*;

/**
 * 電話サービスオーダ発行SC（ＥＮＵＭ）（法人）用マッパーCCです。
 * <p>
 * <br>
 * 
 * @author FJ)寺田
 */
public class JSCSV002801MapperCC extends AbstractCommonComponent
{

	/*******************************************************************/
	/** テンプレートＩＤ（ZM） **/
	/*******************************************************************/

	/** EZM0121A010_電話番号一意照会 */
	private static final String TEMPLATE_ID_EZM0121A010 = "EZM0121A010";

	/** EZM0121C010_電話番号変更 */
	private static final String TEMPLATE_ID_EZM0121C010 = "EZM0121C010";

	/** EZM0121E011_電話番号物理削除 */
	private static final String TEMPLATE_ID_EZM0121E011 = "EZM0121E011";

	/** EZM0321A010_業務パラメータ管理一意照会 */
	private static final String TEMPLATE_ID_EZM0321A010 = "EZM0321A010";

	/** EZM0541D010_ENUM切替履歴登録 */
	private static final String TEMPLATE_ID_EZM0541D010 = "EZM0541D010";


	/*******************************************************************/
	/** テンプレートＩＤ（TU） **/
	/*******************************************************************/

	/** ETU0011B040_番ポ工事一覧照会(ＮＴＴ契約電話回線番号) */
	private static final String TEMPLATE_ID_ETU0011B040 = "ETU0011B040";

	/** ETU0011C070_番ポ工事_切替SOD発行年月日時分秒更新 */
	private static final String TEMPLATE_ID_ETU0011C070 = "ETU0011C070";

	/** ETU0051B010_通信事業者一覧照会 */
	private static final String TEMPLATE_ID_ETU0051B010 = "ETU0051B010";

	/** ETU0151B040_ポートアウト受付情報一覧照会（電話番号） */
	private static final String TEMPLATE_ID_ETU0151B040 = "ETU0151B040";

	/** ETU0151C010_ポートアウト受付情報変更 */
	private static final String TEMPLATE_ID_ETU0151C010 = "ETU0151C010";

	/******************
	 * エラー用定数
	 ******************/
	/** リターンメッセージ */
	private static final String RETURN_MESSAGE_STRING = "RETURN_MESSAGE_";
	/** リターンメッセージ */
	private static final String RETURN_MESSAGE_FORMAT = "%1$04d";

	/*
	 * ------------------------------------------------------------ 参照の上りマッピング処理 ↓↓↓↓↓ ------------------------------------------------------------
	 */

	/**
	 * EZM0321A010_業務パラメータ管理一意照会 サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param telno 電話番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgEZM0321A010(IRequestParameterReadWrite param, String work_param_id) 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, TEMPLATE_ID_EZM0321A010);

		// 機能コード
		template.set(EZM0321A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿業務パラメータID
		template.set(EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, convBlankToNull(work_param_id));

		// 上り情報を生成
		return editInMsgCmn(param, template);
	}

	/**
	 * ETU0051B010_通信事業者一覧照会_サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param telno 電話番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgETU0051B010(IRequestParameterReadWrite param) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ETU0051B010CBSMsg.class.getName());

		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new ETU0051B010CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(ETU0051B010CBSMsg.TEMPLATEID, TEMPLATE_ID_ETU0051B010);

		// 機能コード
		template.set(ETU0051B010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// 検索処理パターン
		template.set(ETU0051B010CBSMsg.SEARCH_TYPE, String.valueOf("1"));

		// 最大検索件数
		template.set(ETU0051B010CBSMsg.MAX_SEARCH_NUM, String.valueOf("9999"));

		// ＫＥＹ＿業務パラメータID
		template.set(ETU0051B010CBSMsg.KEY_JISHA_TASHA_FLG, "1");

		// 上り情報を生成
		return editInMsgCmn(param, template);
	}

	/**
	 * EZM0121A010_電話番号一意照会 サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param telno 電話番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgEZM0121A010(IRequestParameterReadWrite param, 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, TEMPLATE_ID_EZM0121A010);

		// 機能コード
		template.set(EZM0121A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿電話番号
		template.set(EZM0121A010CBSMsg.KEY_TELNO, convBlankToNull(telno));

		// 上り情報を生成
		return editInMsgCmn(param, template);
	}

	/**
	 * ETU0011B040_番ポ工事一覧照会(ＮＴＴ契約電話回線番号) サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param telno 電話番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgETU0011B040(IRequestParameterReadWrite param, String telno) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ETU0011B040CBSMsg.class.getName());

		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new ETU0011B040CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(ETU0011B040CBSMsg.TEMPLATEID, TEMPLATE_ID_ETU0011B040);

		// 機能コード
		template.set(ETU0011B040CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿ＮＴＴ契約電話回線番号
		template.set(ETU0011B040CBSMsg.KEY_NTT_KEI_TEL_KAISEN_NO, convBlankToNull(telno));

		// 上り情報を生成
		return editInMsgCmn(param, template);
	}

	/**
	 * ETU0151B040_ポートアウト受付情報一覧照会（電話番号） サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 * 
	 * @param param リクエストパラメータ
	 * @param telno 電話番号
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 */
	public HashMap<String, Object> editInMsgETU0151B040(IRequestParameterReadWrite param, String telno) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ETU0151B040CBSMsg.class.getName());

		// nullマッピングを実施
		fillCAANMSGNullMapping(template, new ETU0151B040CBSMsg().getContents());

		// 共通部を設定
		editInMsgBasicCmn(param, template);

		// テンプレートID(SIFのID)
		template.set(ETU0151B040CBSMsg.TEMPLATEID, TEMPLATE_ID_ETU0151B040);

		// 機能コード
		template.set(ETU0151B040CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿電話番号
		template.set(ETU0151B040CBSMsg.KEY_TELNO, convBlankToNull(telno));

		// 上り情報を生成
		return editInMsgCmn(param, template);
	}

	/*
	 * ------------------------------------------------------------ 登録・更新・削除の上りマッピング処理 ↓↓↓↓↓ ------------------------------------------------------------
	 */

	/**
	 * ENUM切替履歴登録の上りマッピング処理を行います。 <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return テンプレート
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public CAANMsg editInEZM0541D010Msg(IRequestParameterReadWrite param, String fixedText, String funcCd, Map<Object, Object> inMap) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EZM0541D010CBSMsg.class.getName());

		// マッピング情報
		// テンプレートID
		template.set(EZM0541D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0541D010);
		// 機能コード
		template.set(EZM0541D010CBSMsg.FUNC_CODE, funcCd);
		// 上りマッピング共通項目
		editInMsgBasicCmn(param, template);
		// 電話番号
		template.set(EZM0541D010CBSMsg.TELNO, inMap.get(EZM0541D010CBSMsg.TELNO));
		// サービス契約番号
		template.set(EZM0541D010CBSMsg.SVC_KEI_NO, inMap.get(EZM0541D010CBSMsg.SVC_KEI_NO));
		// 要求種別コード
		template.set(EZM0541D010CBSMsg.YOKYU_SBT_CD, inMap.get(EZM0541D010CBSMsg.YOKYU_SBT_CD));
		// ネットワークルーティング番号
		template.set(EZM0541D010CBSMsg.NW_ROUTING_NO, inMap.get(EZM0541D010CBSMsg.NW_ROUTING_NO));
		// サービス区分
		template.set(EZM0541D010CBSMsg.SVC_DIV, inMap.get(EZM0541D010CBSMsg.SVC_DIV));
		// ドメイン
		template.set(EZM0541D010CBSMsg.DOMAIN, inMap.get(EZM0541D010CBSMsg.DOMAIN));
		// 個人法人電話番号帯コード
		template.set(EZM0541D010CBSMsg.KOJIN_HOJIN_TLN_TAI_CD, inMap.get(EZM0541D010CBSMsg.KOJIN_HOJIN_TLN_TAI_CD));
		// 移転元通信事業者コード
		template.set(EZM0541D010CBSMsg.ITNM_TSJGS_CD, inMap.get(EZM0541D010CBSMsg.ITNM_TSJGS_CD));
		// 移転先通信事業者コード
		template.set(EZM0541D010CBSMsg.ITNS_TSJGS_CD, inMap.get(EZM0541D010CBSMsg.ITNS_TSJGS_CD));
		// 番ポ工事番号
		template.set(EZM0541D010CBSMsg.BMP_KOJI_NO, inMap.get(EZM0541D010CBSMsg.BMP_KOJI_NO));
		// ポートアウト番号
		template.set(EZM0541D010CBSMsg.PORT_OUT_NO, inMap.get(EZM0541D010CBSMsg.PORT_OUT_NO));
		// 注文種類(番ポ工事情報orポートアウト受付情報)
		template.set(EZM0541D010CBSMsg.CHUMN_KIND, inMap.get(EZM0541D010CBSMsg.CHUMN_KIND));

		return template;
	}

	/**
	 * 番ポ工事情報_切替SOD発行年月日時分秒更新の上りマッピング処理を行います。 <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return テンプレート
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public CAANMsg editInETU0011C070Msg(IRequestParameterReadWrite param, String fixedText, String funcCd, Map<Object, Object> inMap) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ETU0011C070CBSMsg.class.getName());

		// テンプレートID
		template.set(ETU0011C070CBSMsg.TEMPLATEID, TEMPLATE_ID_ETU0011C070);
		// 機能コード
		template.set(ETU0011C070CBSMsg.FUNC_CODE, funcCd);
		// 上りマッピング共通項目
		editInMsgBasicCmn(param, template);

		// 番ポ工事番号
		template.set(ETU0011C070CBSMsg.BMP_KOJI_NO, inMap.get(ETU0011C070CBSMsg.BMP_KOJI_NO));
		// 世代登録年月日時分秒
		template.set(ETU0011C070CBSMsg.GENE_ADD_DTM, inMap.get(ETU0011C070CBSMsg.GENE_ADD_DTM));
		// 更新前更新年月日時分秒
		template.set(ETU0011C070CBSMsg.UPD_DTM_BF, inMap.get(ETU0011C070CBSMsg.UPD_DTM_BF));

		// 切替SOD発行年月日時分秒 オンライン運用日時+システム日時
		template.set(ETU0011C070CBSMsg.SWITCH_SOD_HAKKO_DTM, inMap.get(ETU0011C070CBSMsg.SWITCH_SOD_HAKKO_DTM));

		return template;
	}

	/**
	 * ポートアウト受付情報変更の上りマッピング処理を行います。 <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return テンプレート
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public CAANMsg editInETU0151C010Msg(IRequestParameterReadWrite param, String fixedText, String funcCd, Map<Object, Object> inMap) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(ETU0151C010CBSMsg.class.getName());

		// テンプレートID
		template.set(ETU0151C010CBSMsg.TEMPLATEID, TEMPLATE_ID_ETU0151C010);
		// 機能コード
		template.set(ETU0151C010CBSMsg.FUNC_CODE, funcCd);
		// 上りマッピング共通項目
		editInMsgBasicCmn(param, template);
		// キー項目
		template.set(ETU0151C010CBSMsg.PORT_OUT_NO, inMap.get(ETU0151C010CBSMsg.PORT_OUT_NO));

		// 更新汎用設定
		template.set(ETU0151C010CBSMsg.SVC_KEI_NO, inMap.get(ETU0151C010CBSMsg.SVC_KEI_NO));
		template.set(ETU0151C010CBSMsg.SVC_KEI_UCWK_NO, inMap.get(ETU0151C010CBSMsg.SVC_KEI_UCWK_NO));
		template.set(ETU0151C010CBSMsg.TOGO_ODR_ID, inMap.get(ETU0151C010CBSMsg.TOGO_ODR_ID));
		template.set(ETU0151C010CBSMsg.HAISHI_CHUMN_SKBT, inMap.get(ETU0151C010CBSMsg.HAISHI_CHUMN_SKBT));
		template.set(ETU0151C010CBSMsg.RE_BMP_MKM_SKBT, inMap.get(ETU0151C010CBSMsg.RE_BMP_MKM_SKBT));
		template.set(ETU0151C010CBSMsg.AFT_TONYU_SKBT, inMap.get(ETU0151C010CBSMsg.AFT_TONYU_SKBT));
		template.set(ETU0151C010CBSMsg.HUKUSU_NO_UM, inMap.get(ETU0151C010CBSMsg.HUKUSU_NO_UM));
		template.set(ETU0151C010CBSMsg.BMP_TG_KSSU_BMP_HISTG_KSSU, inMap.get(ETU0151C010CBSMsg.BMP_TG_KSSU_BMP_HISTG_KSSU));
		template.set(ETU0151C010CBSMsg.AUTO_HAISHI_RYSHZM_NO_NUM, inMap.get(ETU0151C010CBSMsg.AUTO_HAISHI_RYSHZM_NO_NUM));
		template.set(ETU0151C010CBSMsg.GRP_ID, inMap.get(ETU0151C010CBSMsg.GRP_ID));
		template.set(ETU0151C010CBSMsg.CUST_MSKM_DAY, inMap.get(ETU0151C010CBSMsg.CUST_MSKM_DAY));
		template.set(ETU0151C010CBSMsg.ITENS_MSKM_DAY, inMap.get(ETU0151C010CBSMsg.ITENS_MSKM_DAY));
		template.set(ETU0151C010CBSMsg.CHBF_MSKM_DAY, inMap.get(ETU0151C010CBSMsg.CHBF_MSKM_DAY));
		template.set(ETU0151C010CBSMsg.UK_KYOTEN_NO_TRAT_SVC, inMap.get(ETU0151C010CBSMsg.UK_KYOTEN_NO_TRAT_SVC));
		template.set(ETU0151C010CBSMsg.ITENS_JIGYOSHA_NM, inMap.get(ETU0151C010CBSMsg.ITENS_JIGYOSHA_NM));
		template.set(ETU0151C010CBSMsg.ITENS_JIGYOSHA_NO, inMap.get(ETU0151C010CBSMsg.ITENS_JIGYOSHA_NO));
		template.set(ETU0151C010CBSMsg.ITENS_JIGYOSHA_DOMAIN, inMap.get(ETU0151C010CBSMsg.ITENS_JIGYOSHA_DOMAIN));
		template.set(ETU0151C010CBSMsg.ITENS_JIGYOSHA_TNT_NM, inMap.get(ETU0151C010CBSMsg.ITENS_JIGYOSHA_TNT_NM));
		template.set(ETU0151C010CBSMsg.ITENS_JIGYOSHA_TELNO, inMap.get(ETU0151C010CBSMsg.ITENS_JIGYOSHA_TELNO));
		template.set(ETU0151C010CBSMsg.KIJIRAN_1_ITNM_JGSMK, inMap.get(ETU0151C010CBSMsg.KIJIRAN_1_ITNM_JGSMK));
		template.set(ETU0151C010CBSMsg.KIJIRAN_2_ITNM_JGSMK, inMap.get(ETU0151C010CBSMsg.KIJIRAN_2_ITNM_JGSMK));
		template.set(ETU0151C010CBSMsg.KIJIRAN_1_NOSK_JGSMK, inMap.get(ETU0151C010CBSMsg.KIJIRAN_1_NOSK_JGSMK));
		template.set(ETU0151C010CBSMsg.KIJIRAN_2_NOSK_JGSMK, inMap.get(ETU0151C010CBSMsg.KIJIRAN_2_NOSK_JGSMK));
		template.set(ETU0151C010CBSMsg.JI_SHANAI_KIJIRAN, inMap.get(ETU0151C010CBSMsg.JI_SHANAI_KIJIRAN));
		template.set(ETU0151C010CBSMsg.PORT_OUT_KEISHA_NM, inMap.get(ETU0151C010CBSMsg.PORT_OUT_KEISHA_NM));
		template.set(ETU0151C010CBSMsg.PORT_OUT_KEISHA_KANA, inMap.get(ETU0151C010CBSMsg.PORT_OUT_KEISHA_KANA));
		template.set(ETU0151C010CBSMsg.SETPLACE_ADCHG_UM, inMap.get(ETU0151C010CBSMsg.SETPLACE_ADCHG_UM));
		template.set(ETU0151C010CBSMsg.SETPLC_HTNY_SKBT_CITY_NM, inMap.get(ETU0151C010CBSMsg.SETPLC_HTNY_SKBT_CITY_NM));
		template.set(ETU0151C010CBSMsg.SETPLC_HTNY_SKBT_OAZTSU_NM, inMap.get(ETU0151C010CBSMsg.SETPLC_HTNY_SKBT_OAZTSU_NM));
		template.set(ETU0151C010CBSMsg.SETPLC_HTNY_SKBT_AZCHO_NM, inMap.get(ETU0151C010CBSMsg.SETPLC_HTNY_SKBT_AZCHO_NM));
		template.set(ETU0151C010CBSMsg.SETPLACE_PCD, inMap.get(ETU0151C010CBSMsg.SETPLACE_PCD));
		template.set(ETU0151C010CBSMsg.SETPLACE_STATE_NM, inMap.get(ETU0151C010CBSMsg.SETPLACE_STATE_NM));
		template.set(ETU0151C010CBSMsg.SETPLACE_CITY_NM, inMap.get(ETU0151C010CBSMsg.SETPLACE_CITY_NM));
		template.set(ETU0151C010CBSMsg.SETPLACE_OAZTSU_NM, inMap.get(ETU0151C010CBSMsg.SETPLACE_OAZTSU_NM));
		template.set(ETU0151C010CBSMsg.SETPLACE_AZCHO_NM, inMap.get(ETU0151C010CBSMsg.SETPLACE_AZCHO_NM));
		template.set(ETU0151C010CBSMsg.SETPLACE_BNCHIGO, inMap.get(ETU0151C010CBSMsg.SETPLACE_BNCHIGO));
		template.set(ETU0151C010CBSMsg.SETPLACE_ADRTTM, inMap.get(ETU0151C010CBSMsg.SETPLACE_ADRTTM));
		template.set(ETU0151C010CBSMsg.CUST_RRKS, inMap.get(ETU0151C010CBSMsg.CUST_RRKS));
		template.set(ETU0151C010CBSMsg.KOJI_KIBO_YMD, inMap.get(ETU0151C010CBSMsg.KOJI_KIBO_YMD));
		template.set(ETU0151C010CBSMsg.KOJI_JSSI_WAY, inMap.get(ETU0151C010CBSMsg.KOJI_JSSI_WAY));
		template.set(ETU0151C010CBSMsg.SOTEI_SWITCH_TIMEZ, inMap.get(ETU0151C010CBSMsg.SOTEI_SWITCH_TIMEZ));
		template.set(ETU0151C010CBSMsg.KOJI_TIMEZ_DIV, inMap.get(ETU0151C010CBSMsg.KOJI_TIMEZ_DIV));
		template.set(ETU0151C010CBSMsg.ITENM_DAIHYO_JIGYOSHA_NM, inMap.get(ETU0151C010CBSMsg.ITENM_DAIHYO_JIGYOSHA_NM));
		template.set(ETU0151C010CBSMsg.ITENM_DAIHYO_JIGYOSHA_NO, inMap.get(ETU0151C010CBSMsg.ITENM_DAIHYO_JIGYOSHA_NO));
		template.set(ETU0151C010CBSMsg.KISAI_CHGE_MSKM_CNT, inMap.get(ETU0151C010CBSMsg.KISAI_CHGE_MSKM_CNT));
		template.set(ETU0151C010CBSMsg.KISAI_CHGE_MSKM_DAY, inMap.get(ETU0151C010CBSMsg.KISAI_CHGE_MSKM_DAY));
		template.set(ETU0151C010CBSMsg.KISAI_CHGE_MSKM_RSN, inMap.get(ETU0151C010CBSMsg.KISAI_CHGE_MSKM_RSN));
		template.set(ETU0151C010CBSMsg.OLD_TOGO_ORDER_ID, inMap.get(ETU0151C010CBSMsg.OLD_TOGO_ORDER_ID));
		template.set(ETU0151C010CBSMsg.MSKM_CHOK_NISU, inMap.get(ETU0151C010CBSMsg.MSKM_CHOK_NISU));
		template.set(ETU0151C010CBSMsg.CANCEL_DATE, inMap.get(ETU0151C010CBSMsg.CANCEL_DATE));
		template.set(ETU0151C010CBSMsg.CANCEL_SKBT, inMap.get(ETU0151C010CBSMsg.CANCEL_SKBT));
		template.set(ETU0151C010CBSMsg.CANCEL_OTAI_DAY, inMap.get(ETU0151C010CBSMsg.CANCEL_OTAI_DAY));
		template.set(ETU0151C010CBSMsg.CANCEL_TONYU_TNT_NM, inMap.get(ETU0151C010CBSMsg.CANCEL_TONYU_TNT_NM));
		template.set(ETU0151C010CBSMsg.CANCEL_TONYU_TNT_TELNO, inMap.get(ETU0151C010CBSMsg.CANCEL_TONYU_TNT_TELNO));
		template.set(ETU0151C010CBSMsg.PORT_OUT_CNRE, inMap.get(ETU0151C010CBSMsg.PORT_OUT_CNRE));
		template.set(ETU0151C010CBSMsg.CL_DATE, inMap.get(ETU0151C010CBSMsg.CL_DATE));
		template.set(ETU0151C010CBSMsg.CL_SKBT, inMap.get(ETU0151C010CBSMsg.CL_SKBT));
		template.set(ETU0151C010CBSMsg.UWY_SKBT, inMap.get(ETU0151C010CBSMsg.UWY_SKBT));
		template.set(ETU0151C010CBSMsg.SERVER_ARIV_DATE, inMap.get(ETU0151C010CBSMsg.SERVER_ARIV_DATE));
		template.set(ETU0151C010CBSMsg.BMP_ORDER_NO, inMap.get(ETU0151C010CBSMsg.BMP_ORDER_NO));
		template.set(ETU0151C010CBSMsg.KANREN_ORDER_CNT, inMap.get(ETU0151C010CBSMsg.KANREN_ORDER_CNT));
		template.set(ETU0151C010CBSMsg.BMP_TG_KISN_CNT_NOSK_GT, inMap.get(ETU0151C010CBSMsg.BMP_TG_KISN_CNT_NOSK_GT));
		template.set(ETU0151C010CBSMsg.CHUMN_KIND, inMap.get(ETU0151C010CBSMsg.CHUMN_KIND));
		template.set(ETU0151C010CBSMsg.ORDER_STAT, inMap.get(ETU0151C010CBSMsg.ORDER_STAT));
		template.set(ETU0151C010CBSMsg.NOSK_DAIHYO_JGS_NM, inMap.get(ETU0151C010CBSMsg.NOSK_DAIHYO_JGS_NM));
		template.set(ETU0151C010CBSMsg.NOSK_DAIHYO_JGS_NO, inMap.get(ETU0151C010CBSMsg.NOSK_DAIHYO_JGS_NO));
		template.set(ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_DATE, inMap.get(ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_DATE));
		template.set(ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_TNT_NM, inMap.get(ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_TNT_NM));
		template.set(ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_TNT_TLN, inMap.get(ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_TNT_TLN));
		template.set(ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_KIJIRAN, inMap.get(ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_KIJIRAN));
		template.set(ETU0151C010CBSMsg.TELNO, inMap.get(ETU0151C010CBSMsg.TELNO));
		template.set(ETU0151C010CBSMsg.SKBT_NO, inMap.get(ETU0151C010CBSMsg.SKBT_NO));
		template.set(ETU0151C010CBSMsg.NAIBU_SKBT_NO, inMap.get(ETU0151C010CBSMsg.NAIBU_SKBT_NO));
		template.set(ETU0151C010CBSMsg.PORT_OUT_CHBF_SKBT_NO, inMap.get(ETU0151C010CBSMsg.PORT_OUT_CHBF_SKBT_NO));
		template.set(ETU0151C010CBSMsg.PSTN_KANYKN, inMap.get(ETU0151C010CBSMsg.PSTN_KANYKN));
		template.set(ETU0151C010CBSMsg.PSTN_DRYCOPPER_USE_UM, inMap.get(ETU0151C010CBSMsg.PSTN_DRYCOPPER_USE_UM));
		template.set(ETU0151C010CBSMsg.PSTN_DRYCOPPER_KISN_ID, inMap.get(ETU0151C010CBSMsg.PSTN_DRYCOPPER_KISN_ID));
		template.set(ETU0151C010CBSMsg.PSTN_DRYCOPPER_MSKMJIG_NO, inMap.get(ETU0151C010CBSMsg.PSTN_DRYCOPPER_MSKMJIG_NO));
		template.set(ETU0151C010CBSMsg.PSTN_DRYCOPPER_MKM_SKBT_NO, inMap.get(ETU0151C010CBSMsg.PSTN_DRYCOPPER_MKM_SKBT_NO));
		template.set(ETU0151C010CBSMsg.ITNS_JGS_USE_CD, inMap.get(ETU0151C010CBSMsg.ITNS_JGS_USE_CD));
		template.set(ETU0151C010CBSMsg.PSTN_PAUSE_HYO_SHS, inMap.get(ETU0151C010CBSMsg.PSTN_PAUSE_HYO_SHS));
		template.set(ETU0151C010CBSMsg.PSTN_PAUSE_HYO_SHS_OTR_AD, inMap.get(ETU0151C010CBSMsg.PSTN_PAUSE_HYO_SHS_OTR_AD));
		template.set(ETU0151C010CBSMsg.PSTN_ITENS_JIGYOSHA_CFM_ID, inMap.get(ETU0151C010CBSMsg.PSTN_ITENS_JIGYOSHA_CFM_ID));
		template.set(ETU0151C010CBSMsg.PSTN_ITENS_KOJI_TYPE_SNAI, inMap.get(ETU0151C010CBSMsg.PSTN_ITENS_KOJI_TYPE_SNAI));
		template.set(ETU0151C010CBSMsg.PSTN_ITENS_KOJI_TYPE_SGAI, inMap.get(ETU0151C010CBSMsg.PSTN_ITENS_KOJI_TYPE_SGAI));
		template.set(ETU0151C010CBSMsg.KIJIRAN_ITENS_JGSMK, inMap.get(ETU0151C010CBSMsg.KIJIRAN_ITENS_JGSMK));
		template.set(ETU0151C010CBSMsg.ODKH_JUDGE_TK_KH, inMap.get(ETU0151C010CBSMsg.ODKH_JUDGE_TK_KH));
		template.set(ETU0151C010CBSMsg.ODKH_JUDGE_TK_FAIL_RSN, inMap.get(ETU0151C010CBSMsg.ODKH_JUDGE_TK_FAIL_RSN));
		template.set(ETU0151C010CBSMsg.ODKH_JDGTK_FRSN_OTR_RSN, inMap.get(ETU0151C010CBSMsg.ODKH_JDGTK_FRSN_OTR_RSN));
		template.set(ETU0151C010CBSMsg.UK_TNT_ID, inMap.get(ETU0151C010CBSMsg.UK_TNT_ID));
		template.set(ETU0151C010CBSMsg.UK_TNT_TELNO, inMap.get(ETU0151C010CBSMsg.UK_TNT_TELNO));
		template.set(ETU0151C010CBSMsg.KOJI_TNT_NM, inMap.get(ETU0151C010CBSMsg.KOJI_TNT_NM));
		template.set(ETU0151C010CBSMsg.KOJI_TNT_TELNO, inMap.get(ETU0151C010CBSMsg.KOJI_TNT_TELNO));
		template.set(ETU0151C010CBSMsg.TK_KH, inMap.get(ETU0151C010CBSMsg.TK_KH));
		template.set(ETU0151C010CBSMsg.TK_FAIL_RSN, inMap.get(ETU0151C010CBSMsg.TK_FAIL_RSN));
		template.set(ETU0151C010CBSMsg.TK_FAIL_RSN_OTR_RSN, inMap.get(ETU0151C010CBSMsg.TK_FAIL_RSN_OTR_RSN));
		template.set(ETU0151C010CBSMsg.HOJIN_KOJIN_CD, inMap.get(ETU0151C010CBSMsg.HOJIN_KOJIN_CD));
		template.set(ETU0151C010CBSMsg.PORT_OUT_UK_TRKM_YMD, inMap.get(ETU0151C010CBSMsg.PORT_OUT_UK_TRKM_YMD));

		// 更新用設定
		// ポートアウトステータス
		template.set(ETU0151C010CBSMsg.PORT_OUT_STAT, inMap.get(ETU0151C010CBSMsg.PORT_OUT_STAT));
		// 切替SOD発行年月日時分秒
		template.set(ETU0151C010CBSMsg.SWITCH_SOD_HAKKO_DTM, inMap.get(ETU0151C010CBSMsg.SWITCH_SOD_HAKKO_DTM));
		// 更新年月日時分秒(更新前)
		template.set(ETU0151C010CBSMsg.UPD_DTM_BF, inMap.get(ETU0151C010CBSMsg.UPD_DTM_BF));

		return template;
	}

	/**
	 * 電話番号変更の上りマッピング処理を行います。 <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return テンプレート
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public CAANMsg editInEZM0121C010Msg(IRequestParameterReadWrite param, String fixedText, String funcCd, Map<Object, Object> inMap) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EZM0121C010CBSMsg.class.getName());

		// テンプレートID
		template.set(EZM0121C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0121C010);
		// 機能コード
		template.set(EZM0121C010CBSMsg.FUNC_CODE, funcCd);
		// 上りマッピング共通項目
		editInMsgBasicCmn(param, template);

		// キー項目
		// 電話番号
		template.set(EZM0121C010CBSMsg.TELNO, inMap.get(EZM0121C010CBSMsg.TELNO));

		// 更新用汎用設定
		// 局番
		template.set(EZM0121C010CBSMsg.KYOKU_NO, inMap.get(EZM0121C010CBSMsg.KYOKU_NO));
		// 番号コード
		template.set(EZM0121C010CBSMsg.NO_CD, inMap.get(EZM0121C010CBSMsg.NO_CD));
		// 割当通信事業者コード
		template.set(EZM0121C010CBSMsg.WARIATE_TSJGS_CD, inMap.get(EZM0121C010CBSMsg.WARIATE_TSJGS_CD));
		// 使用通信事業者コード
		template.set(EZM0121C010CBSMsg.USE_TSJGS_CD, inMap.get(EZM0121C010CBSMsg.USE_TSJGS_CD));
		// サービス区分
		template.set(EZM0121C010CBSMsg.SVC_DIV, inMap.get(EZM0121C010CBSMsg.SVC_DIV));
		// 引当制約種別コード
		template.set(EZM0121C010CBSMsg.HKAT_SIYK_SBT_CD, inMap.get(EZM0121C010CBSMsg.HKAT_SIYK_SBT_CD));
		// 引当制約設定年月日時分秒
		template.set(EZM0121C010CBSMsg.HKAT_SIYK_SET_DTM, inMap.get(EZM0121C010CBSMsg.HKAT_SIYK_SET_DTM));
		// 電話番号説明
		template.set(EZM0121C010CBSMsg.TLN_SETMEI, inMap.get(EZM0121C010CBSMsg.TLN_SETMEI));
		// C5サーバ号機識別コード
		template.set(EZM0121C010CBSMsg.C5_SERVER_GOKI_SKBT_CD, inMap.get(EZM0121C010CBSMsg.C5_SERVER_GOKI_SKBT_CD));
		// 電話番号適用開始年月日
		template.set(EZM0121C010CBSMsg.TELNO_TSTAYMD, inMap.get(EZM0121C010CBSMsg.TELNO_TSTAYMD));
		// 電話番号適用終了年月日
		template.set(EZM0121C010CBSMsg.TELNO_TENDYMD, inMap.get(EZM0121C010CBSMsg.TELNO_TENDYMD));
		// NRN番号
		template.set(EZM0121C010CBSMsg.NRN_NO, inMap.get(EZM0121C010CBSMsg.NRN_NO));
		// 初回割当年月日
		template.set(EZM0121C010CBSMsg.FIRST_WARIATE_YMD, inMap.get(EZM0121C010CBSMsg.FIRST_WARIATE_YMD));
		// 初期個人法人電話番号帯コード
		template.set(EZM0121C010CBSMsg.SHK_KOJIN_HOJIN_TLN_TAI_CD, inMap.get(EZM0121C010CBSMsg.SHK_KOJIN_HOJIN_TLN_TAI_CD));
		// 電話番号取得通信事業者コード
		template.set(EZM0121C010CBSMsg.TLN_STKU_TSJGS_CD, inMap.get(EZM0121C010CBSMsg.TLN_STKU_TSJGS_CD));
		// 排他確認設定
		// 更新前最終年月日時分秒
		template.set(EZM0121C010CBSMsg.LAST_UPD_DTM_BF, inMap.get(EZM0121C010CBSMsg.LAST_UPD_DTM_BF));

		// 更新用設定
		// 個人法人電話番号帯コード
		template.set(EZM0121C010CBSMsg.KOJIN_HOJIN_TLN_TAI_CD, inMap.get(EZM0121C010CBSMsg.KOJIN_HOJIN_TLN_TAI_CD));
		// 移転元通信事業者コード(更新箇所)
		template.set(EZM0121C010CBSMsg.ITNM_TSJGS_CD, inMap.get(EZM0121C010CBSMsg.ITNM_TSJGS_CD));
		// 移転先通信事業者コード(更新箇所)
		template.set(EZM0121C010CBSMsg.ITNS_TSJGS_CD, inMap.get(EZM0121C010CBSMsg.ITNS_TSJGS_CD));

		return template;
	}

	/**
	 * 電話番号物理削除の上りマッピング処理を行います。 <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return テンプレート
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public CAANMsg editInEZM0121E011Msg(IRequestParameterReadWrite param, String fixedText, String funcCd, Map<Object, Object> inMap) throws RequestParameterException
	{
		CAANMsg template = new CAANMsg(EZM0121E011CBSMsg.class.getName());

		// テンプレートID
		template.set(EZM0121E011CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0121E011);
		// 機能コード
		template.set(EZM0121E011CBSMsg.FUNC_CODE, funcCd);
		// 上りマッピング共通項目
		editInMsgBasicCmn(param, template);

		// キー項目
		// 電話番号
		template.set(EZM0121E011CBSMsg.TELNO, inMap.get(EZM0121C010CBSMsg.TELNO));

		// 排他確認設定
		// 更新前最終年月日時分秒
		template.set(EZM0121E011CBSMsg.LAST_UPD_DTM_BF, inMap.get(EZM0121E011CBSMsg.LAST_UPD_DTM_BF));

		return template;
	}

	/**
	 * サービスI/F実行用の上り情報を生成する
	 * 
	 * @param param リクエストパラメータ
	 * @param template 条件の設定先
	 * @return S/I上り情報
	 * @throws RequestParameterException
	 * @exception RequestParameterException
	 */
	public 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;

	}

	/*
	 * ------------------------------------------------------------ 下りマッピング処理 ↓↓↓↓↓ ------------------------------------------------------------
	 */

	/**
	 * 下りマッピング共通処理を行います。 <br>
	 * 
	 * @param result SC結果
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public void editOutMsg(Map<?, ?> result, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Object returnCode = result.get(JCMConstants.RET_CD_INT_KEY);

		// エラー情報の設定
		editErrInfoCommon(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(result, errList));
	}

	/*
	 * ------------------------------------------------------------ 共通で使用するUtil系のメソッド ↓↓↓↓↓ ------------------------------------------------------------
	 */

	/**
	 * エラー情報マッピング処理(共通)を行います。 <br>
	 * 
	 * @param param リクエストパラメータ
	 * @param template テンプレート
	 * @param returnCode SC実行結果コード
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void editErrInfoCommon(IRequestParameterReadWrite param, CAANMsg template, int returnCode, String fixedText) throws RequestParameterException
	{
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		bpStatus = getReturnCode(param);

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap inMap = null;

		// ユーザデータ情報
		inMap = (HashMap) param.getData(fixedText);

		HashMap map = template.getHashMap();
		Iterator it = map.keySet().iterator();
		while (it.hasNext())
		{
			String key = (String) it.next();
			if (key.endsWith("_err"))
			{
				int keyIdx = key.lastIndexOf("_err");
				if (inMap.containsKey(key.substring(0, keyIdx)))
				{
					inMap.put(key, map.get(key));
				}
			}
		}
	}

	/**
	 * SCの実行ステータスの取得処理を行います。 <br>
	 * 
	 * @param param リクエストパラメータ
	 * @return SCの実行ステータス
	 * @throws RequestParameterException
	 */
	private int getReturnCode(IRequestParameterReadWrite param) throws RequestParameterException
	{
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			return -1;
		}
		else
		{
			return Integer.parseInt((String) param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
	}

	/**
	 * 条件部の共通する項目の設定する
	 * 
	 * @param param リクエストパラメータ
	 * @param template template 条件の設定先
	 * @throws RequestParameterException
	 */
	public 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);
	}

	/**
	 * 持ちうるフィールドにNullマッピングで埋める
	 * 
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	public 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);
		}
	}

	/**
	 * 文字列が空文字ならnullに変換する
	 * 
	 * @param value 判定する文字列
	 * @return 変換後文字列
	 */
	public String convBlankToNull(String value)
	{
		return JKKSvcConst.STRING_BLANK.equals(value) ? null : value;
	}

}
