/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JTUTshLoadZmSskkUpdOperateCC
*	ソースファイル名：JTUTshLoadZmSskkUpdOperateCC.java
*	作成者			：FJ
*	日付			：2024/02/28
*＜機能概要＞
*	他社読込済申請結果更新操作の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v72.00.00	2024/02/28	FJ)謝		【ANK-4494-00-00】【eo定期】 双方向番ポ対応
*	v72.00.01	2024/05/22	FJ)謝		【ANK-4494-04-00】【双方向番ポ対応】ポートアウト画面への項目追加
**********************************************************************/
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.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 eo.common.constant.JPCModelConstant;
import eo.common.constant.JTUStrConst;
import eo.common.util.JTUPortOutMskmDivJdg;
import eo.common.util.JTUStringUtil;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECR0011B030CBSMsg;
import eo.ejb.cbs.cbsmsg.ECR0011B030CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0191B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2091B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2091B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ETU0151A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0151A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ETU0151C010CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0151C020CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0171B012CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0171B012CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg1List;

/**
 * 他社読込済申請結果更新操作の共通コンポーネントクラスです。
 * <br>
 * @author 富士通
 *
 */
public class JTUTshLoadZmSskkUpdOperateCC extends AbstractCommonComponent
{
	/** "1"(照会モード（チェック無）) */
	private static final String TRANS_DIV_1 = "1";
	/** "2"(照会モード（チェック有）) */
	private static final String TRANS_DIV_2 = "2";
	/** "3"(更新モード（履歴登録）) */
	private static final String TRANS_DIV_3 = "3";
	/** "4"(更新モード（ＰＫ更新）) */
	private static final String TRANS_DIV_4 = "4";
	
	/** ポートアウト受付情報一意照会 */
	private static final String TEMPLATE_ID_ETU0151A010 = "ETU0151A010";
	/** ポートアウト受付情報内容変更 */
	private static final String TEMPLATE_ID_ETU0151C010 = "ETU0151C010";
	/** ポートアウト受付情報ステータス更新 */
	private static final String TEMPLATE_ID_ETU0151C020 = "ETU0151C020";
	/** 業務パラメータ管理一意照会 */
	private static final String TEMPLATE_ID_EZM0321A010 = "EZM0321A010";
	/** コード名称管理コード区分一覧照会 */
	private static final String TEMPLATE_ID_EZM0171B012 = "EZM0171B012";
	/** サービス契約一意照会 */
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/** お客様一意照会 */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";
	/** サービス契約内訳<eo光電話>一覧照会 */
	private static final String TEMPLATE_ID_EKK0191B001 = "EKK0191B001";
	/** サービス契約回線内訳一覧照会（現在利用中） */
	private static final String TEMPLATE_ID_EKK0251B003 = "EKK0251B003";
	/** 住所変更一覧照会 */
	private static final String TEMPLATE_ID_EKK2091B001 = "EKK2091B001";
	/** 対応記録一覧照会(簡易検索) */
	private static final String TEMPLATE_ID_ECR0011B030 = "ECR0011B030";
	
	/** 業務パラメータID 番ポ申請担当電話番号 */
	private static final String WORK_PARAM_ID_TU_BMP_TNT_TELNO = "TU_BMP_TNT_TELNO";
	/** 業務パラメータID 番ポ申請担当名 */
	private static final String WORK_PARAM_ID_TU_BMP_TNT_NM = "TU_BMP_TNT_NM";
	
	/** コード種別 提供可否 */
	private static final String CD_SBT_TK_KH = "CD01834";
	/** コード種別 移転元提供不可理由コード */
	private static final String CD_SBT_TK_FAIL_RSN_ITNM = "CD01829";
	/** コード種別 番号取得提供不可理由コード */
	private static final String CD_SBT_TK_FAIL_RSN_NOSK = "CD01830";
	/** コード種別 移転元オーダ可否判定提供不可理由コード */
	private static final String CD_SBT_ODKH_JDGTK_FRSN_ITNM = "CD01827";
	/** コード種別 番号取得オーダ可否判定提供不可理由コード */
	private static final String CD_SBT_ODKH_JDGTK_FRSN_NOSK = "CD01828";
	
	/** 料金コースコード 2番号コース */
	private static final String PCRS_CD_A32 = "A32";
	/** 住所変更ステータス 完了済 */
	private static final String ADCHG_STAT_FIN_ZUMI = "003";
	/** タイトル 光電話解約工事 */
	private static final String TITLE_TEL_DSL_KOJI = "光電話解約工事";
	/** タイトル 不受理 */
	private static final String TITLE_HUJURI = "不受理";
	/** タイトル 番ポ番号廃止工事日 */
	private static final String TITLE_BMPNO_HAISHI_KOJIYMD = "番ポ番号廃止工事日";
	/** タイトル 廃止可否判定待ち */
	private static final String TITLE_HAISHI_KH_JDG_STAY = "廃止可否判定待ち";
	/** タイトル オフィス契約へのeo間引継ぎ */
	private static final String TITLE_TO_OFFICE_EO_KAN_HKTGI = "オフィス契約へのeo間引継ぎ";
	/** タイトル オフィス契約からのeo間引継ぎ */
	private static final String TITLE_FROM_OFFICE_EO_KAN_HKTGI = "オフィス契約からのeo間引継ぎ";
	
	/** ソート指定項目：対応記録番号 */
	private static final String TAIO_KIROK_NO = "TAIO_KIROK_NO";
	
	/**
	 * 他社読込済申請結果更新操作を行う。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return リクエストパラメータ
	 * @throws Throwable 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		String dataMapKey = fixedText;
		
		// 他社読込済申請結果更新操作CCマップ
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		if (ccMsg == null)
		{
			return param;
		}
		
		// 戻り値初期化
		// エラーメッセージＩＤ
		ccMsg.put("err_msg_id", "");
		// エラーメッセージ置換文字列
		ccMsg.put("err_msg_replace_moji", "");
		// ワーニングメッセージリスト
		ccMsg.put("warn_msg_list", new ArrayList<HashMap<String, Object>>());
		// 提供可否リスト
		ccMsg.put("tk_kh_list", new ArrayList<HashMap<String, Object>>());
		// 提供不可理由リスト
		ccMsg.put("tk_fail_rsn_list", new ArrayList<HashMap<String, Object>>());
		// オーダ可否判定提供不可理由リスト
		ccMsg.put("order_kh_judge_tkhk_rsn_list", new ArrayList<HashMap<String, Object>>());
		
		// 処理区分
		String tranDiv = (String)ccMsg.get("tran_div");
		// ＫＥＹ＿ポートアウト番号
		String portOutNo = (String)ccMsg.get("key_port_out_no");
		// ＫＥＹ＿世代登録年月日時分秒
		String geneAddDtm = (String)ccMsg.get("key_gene_add_dtm");
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ポートアウト受付情報一意照会
		CAANMsg etu0151a010Msg = execETU0151A010(handle, scCall, param, dataMapKey, portOutNo, geneAddDtm);
		if (etu0151a010Msg == null)
		{
			return param;
		}
		
		// サービス契約番号
		String svcKeiNo = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SVC_KEI_NO));
		// サービス契約内訳番号
		String svcKeiUcwkNo = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SVC_KEI_UCWK_NO));
		// 注文種類
		String chumnKind = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CHUMN_KIND));
		// 法人個人コード
		String hojinKojinCd = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.HOJIN_KOJIN_CD));
		// 番号取得_代表事業者番号
		String noskDaihyoJgsNo = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.NOSK_DAIHYO_JGS_NO));
		// 移転元_代表事業者番号
		String itenmDaihyoJigyoshaNo = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENM_DAIHYO_JIGYOSHA_NO));
		// 旧統合オーダID
		String oldTogoOrderId = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.OLD_TOGO_ORDER_ID));
		// キャンセル識別
		String cancelSkbt = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CANCEL_SKBT));
		// 取消識別
		String clSkbt = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CL_SKBT));
		
		// サービス契約情報
		CAANMsg ekk0081a010Msg = null;
		// お客様情報
		CAANMsg eck0011a010Msg = null;
		// サービス契約内訳<eo光電話>
		CAANMsg ekk0191b001Msg = null;
		// 現在利用場所情報
		CAANMsg ekk0251b003Msg = null;
		
		if (!JTUStringUtil.isNull(svcKeiNo))
		{
			// サービス契約情報取得
			ekk0081a010Msg = execEKK0081A010(handle, scCall, param, dataMapKey, svcKeiNo);
			
			// お客様情報取得
			if (ekk0081a010Msg != null)
			{
				eck0011a010Msg = execECK0011A010(handle, scCall, param, dataMapKey, nullToStr(ekk0081a010Msg.getString(EKK0081A010CBSMsg1List.SYSID)));
			}
			
			// サービス契約内訳<eo光電話>取得
			CAANMsg[] ekk0191b001MsgList = execEKK0191B001(handle, scCall, param, dataMapKey, svcKeiNo);
			if(ekk0191b001MsgList != null && ekk0191b001MsgList.length > 0)
			{
				for (CAANMsg caanmsg : ekk0191b001MsgList)
				{
					if (svcKeiUcwkNo.equals(nullToStr(caanmsg.getString(EKK0191B001CBSMsg1List.SVC_KEI_UCWK_NO))))
					{
						ekk0191b001Msg = caanmsg;
						break;
					}
				}
			}
			
			// 現在利用場所情報取得
			ekk0251b003Msg = execEKK0251B003(handle, scCall, param, dataMapKey, svcKeiNo);
		}
		
		// 照会モード（チェック有）の場合
		if (TRANS_DIV_2.equals(tranDiv))
		{
			// 関連チェック実施ありの場合
			if (jdgRelationCheckUm(hojinKojinCd, chumnKind, noskDaihyoJgsNo))
			{
				ccMsg.put("warn_msg_list", execRelationCheck(handle, scCall, param, dataMapKey, ekk0081a010Msg, eck0011a010Msg, ekk0191b001Msg, ekk0251b003Msg, etu0151a010Msg));
			}
		}
		
		// 照会モード（チェック無）または照会モード（チェック有）の場合
		if (TRANS_DIV_1.equals(tranDiv) || TRANS_DIV_2.equals(tranDiv))
		{
			// 提供不可理由コード種別
			String tkFailRsnCdSbt = CD_SBT_TK_FAIL_RSN_ITNM;
			// オーダ可否判定提供不可理由コード種別
			String odkhJdgtkFrsnCdSbt = CD_SBT_ODKH_JDGTK_FRSN_ITNM;
			
			// 番号取得_代表事業者番号がオプテージの場合
			if (JTUStrConst.TSJGS_CD_OPTG.equals(noskDaihyoJgsNo))
			{
				// 移転元_代表事業者番号が設定された場合
				if (!JTUStringUtil.isNull(itenmDaihyoJigyoshaNo))
				{
					// 移転元_代表事業者番号がオプテージ以外の場合
					if (!JTUStrConst.TSJGS_CD_OPTG.equals(itenmDaihyoJigyoshaNo))
					{
						tkFailRsnCdSbt = CD_SBT_TK_FAIL_RSN_NOSK;
						odkhJdgtkFrsnCdSbt = CD_SBT_ODKH_JDGTK_FRSN_NOSK;
					}
				}
				else
				{
					// サービス契約番号が設定されていない場合
					if (JTUStringUtil.isNull(svcKeiNo))
					{
						tkFailRsnCdSbt = CD_SBT_TK_FAIL_RSN_NOSK;
						odkhJdgtkFrsnCdSbt = CD_SBT_ODKH_JDGTK_FRSN_NOSK;
					}
				}
			}
			
			// 提供可否
			ccMsg.put("tk_kh_list", execEZM0171B012(handle, scCall, param, dataMapKey, CD_SBT_TK_KH));
			
			// 提供不可理由リスト
			ccMsg.put("tk_fail_rsn_list", execEZM0171B012(handle, scCall, param, dataMapKey, tkFailRsnCdSbt));
			// 提供不可理由コード種別
			ccMsg.put("tk_fail_rsn_cd_sbt", tkFailRsnCdSbt);
			
			// オーダ可否判定提供不可理由リスト
			ccMsg.put("order_kh_judge_tkhk_rsn_list", execEZM0171B012(handle, scCall, param, dataMapKey, odkhJdgtkFrsnCdSbt));
			
			// 移転先事業者名
			ccMsg.put("itens_jigyosha_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENS_JIGYOSHA_NM)));
			// 移転先事業者名
			ccMsg.put("itens_jigyosha_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENS_JIGYOSHA_NM)));
			// 個人法人
			ccMsg.put("kojin_hojin", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.HOJIN_KOJIN_CD_NM)));
			// 注文種類
			ccMsg.put("chumn_kind", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CHUMN_KIND_NM)));
			// 統合オーダＩＤ
			ccMsg.put("togo_odr_id", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.TOGO_ODR_ID)));
			// オーダ番号
			ccMsg.put("order_no", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.BMP_ORDER_NO)));
			// オーダステータス
			ccMsg.put("order_stat", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ORDER_STAT_NM)));
			// 移転元＿代表事業者名
			ccMsg.put("itenm_daihyo_jigyosha_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENM_DAIHYO_JIGYOSHA_NM)));
// ANK-4494-04-00 ADD START
			// 受付拠点番号（取扱サービス）名称
			ccMsg.put("uk_kyoten_no_trat_svc_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.UK_KYOTEN_NO_TRAT_SVC_NM)));
// ANK-4494-04-00 ADD END
			// 番号取得＿代表事業者名
			ccMsg.put("no_stku_daihyo_jgs_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.NOSK_DAIHYO_JGS_NM)));
			// 電話番号
			ccMsg.put("telno", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.TELNO)));
			// 設置場所都道府県名
			ccMsg.put("setplace_state_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_STATE_NM)));
			// 設置場所市区町村名
			ccMsg.put("setplace_city_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_CITY_NM)));
			// 設置場所大字通称名
			ccMsg.put("setplace_oaztsu_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_OAZTSU_NM)));
			// 設置場所字名丁目
			ccMsg.put("setplace_azcho_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_AZCHO_NM)));
			// 設置場所番地号
			ccMsg.put("setplace_bnchigo", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_BNCHIGO)));
			// 設置場所建物名
			ccMsg.put("setplace_adrttm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_ADRTTM)));
			// 契約者フリガナ
			ccMsg.put("keisha_hurigana", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_KEISHA_KANA)));
			// 契約者名義
			ccMsg.put("keisha_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_KEISHA_NM)));
			
			if (ekk0191b001Msg != null)
			{
				// 契約状態（ｅｏ）
				ccMsg.put("eo_kei_stat", nullToStr(ekk0191b001Msg.getString(EKK0191B001CBSMsg1List.DSP_SVC_KEI_UCWK_STAT_NM)));
			}
			else
			{
				// 契約状態（ｅｏ）
				ccMsg.put("eo_kei_stat", "");
			}
			
			if (ekk0251b003Msg != null)
			{
				// 設置場所都道府県名（ｅｏ）
				ccMsg.put("eo_setplace_state_nm", nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_STATE_NM)));
				// 設置場所市区町村名（ｅｏ）
				ccMsg.put("eo_setplace_city_nm", nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_CITY_NM)));
				// 設置場所大字＿通称名（ｅｏ）
				ccMsg.put("eo_setplace_oaztsu_nm", nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_OAZTSU_NM)));
				// 設置場所字名＿丁目（ｅｏ）
				ccMsg.put("eo_setplace_azcho_nm", nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_AZCHO_NM)));
				// 設置場所番地＿号（ｅｏ）
				ccMsg.put("eo_setplace_bnchigo", nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_BNCHIGO)));
				// 設置場所建物名（ｅｏ）
				ccMsg.put("eo_setplace_adrttm", nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_ADRTTM)));
			}
			else
			{
				// 設置場所都道府県名（ｅｏ）
				ccMsg.put("eo_setplace_state_nm", "");
				// 設置場所市区町村名（ｅｏ）
				ccMsg.put("eo_setplace_city_nm", "");
				// 設置場所大字＿通称名（ｅｏ）
				ccMsg.put("eo_setplace_oaztsu_nm", "");
				// 設置場所字名＿丁目（ｅｏ）
				ccMsg.put("eo_setplace_azcho_nm", "");
				// 設置場所番地＿号（ｅｏ）
				ccMsg.put("eo_setplace_bnchigo", "");
				// 設置場所建物名（ｅｏ）
				ccMsg.put("eo_setplace_adrttm", "");
			}
			
			if (eck0011a010Msg != null)
			{
				// 契約者フリガナ（ｅｏ）
				ccMsg.put("eo_keisha_hurigana", nullToStr(eck0011a010Msg.getString(ECK0011A010CBSMsg1List.CUST_KANA)));
				// 契約者名義（ｅｏ）
				ccMsg.put("eo_keisha_nm", nullToStr(eck0011a010Msg.getString(ECK0011A010CBSMsg1List.CUST_NM)));
			}
			else
			{
				// 契約者フリガナ（ｅｏ）
				ccMsg.put("eo_keisha_hurigana", "");
				// 契約者名義（ｅｏ）
				ccMsg.put("eo_keisha_nm", "");
			}
			// 工事希望日
			ccMsg.put("koji_kibod", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KOJI_KIBO_YMD)));
			// 工事実施方法
			ccMsg.put("koji_jssi_way", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KOJI_JSSI_WAY_NM)));
			// 想定切替時間帯
			ccMsg.put("sotei_switch_timez", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SOTEI_SWITCH_TIMEZ_NM)));
			// 工事時間帯区分
			ccMsg.put("koji_timez_div", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KOJI_TIMEZ_DIV_NM)));
			// 記事欄１＿移転元事業者向け
			ccMsg.put("kijiran_1_itnm_jgsmk", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KIJIRAN_1_ITNM_JGSMK)));
			// 記事欄２＿移転元事業者向け
			ccMsg.put("kijiran_2_itnm_jgsmk", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KIJIRAN_2_ITNM_JGSMK)));
			// 記事欄１＿番号取得事業者向け
			ccMsg.put("kijiran_1_no_stku_jgsmk", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KIJIRAN_1_NOSK_JGSMK)));
			// 記事欄２＿番号取得事業者向け
			ccMsg.put("kijiran_2_no_stku_jgsmk", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KIJIRAN_2_NOSK_JGSMK)));
			// 複数番号有無
			ccMsg.put("hukusu_no_um", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.HUKUSU_NO_UM_NM)));
			// 関連オーダ数
			ccMsg.put("kanren_order_cnt", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KANREN_ORDER_CNT)));
			// 自動廃止了承済番号数
			ccMsg.put("auto_haishi_ryshzm_no_num", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.AUTO_HAISHI_RYSHZM_NO_NUM)));
			// 提供可否
			ccMsg.put("tk_kh", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.TK_KH)));
			// 提供可否名称
			ccMsg.put("tk_kh_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.TK_KH_NM)));
			// 提供不可理由
			ccMsg.put("tk_fail_rsn", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.TK_FAIL_RSN)));
			// 提供不可理由＿その他の理由
			ccMsg.put("tk_fail_rsn_other_rsn", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.TK_FAIL_RSN_OTR_RSN)));
			// オーダ可否判定提供可否
			ccMsg.put("order_kh_judge_tk_kh", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ODKH_JUDGE_TK_KH)));
			// オーダ可否判定提供可否名称
			ccMsg.put("order_kh_judge_tk_kh_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ODKH_JUDGE_TK_KH_NM)));
			// オーダ可否判定提供不可理由
			ccMsg.put("order_kh_judge_tk_fail_rsn", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ODKH_JUDGE_TK_FAIL_RSN)));
			// オーダ可否判定提供不可理由＿その他の理由
			ccMsg.put("odr_kh_jdg_tkf_rsn_otr_rsn", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ODKH_JDGTK_FRSN_OTR_RSN)));
			// 記事欄＿移転先事業者向け
			ccMsg.put("kijiran_itens_jgsmk", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KIJIRAN_ITENS_JGSMK)));
			// 自社内記事欄
			ccMsg.put("ji_shanai_kijiran", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.JI_SHANAI_KIJIRAN)));
			// 受付担当名
			ccMsg.put("uk_tnt_nm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.UK_TNT_ID_NM)));
			// 申込区分
			ccMsg.put("mskm_div", JTUPortOutMskmDivJdg.getPortOutMskmDivNm(oldTogoOrderId, cancelSkbt, clSkbt));
			// ステータス
			ccMsg.put("status", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_STAT_NM)));
			// 複数番号有無コード値
			ccMsg.put("hukusu_no_um_cd", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.HUKUSU_NO_UM)));
			// 申込区分コード値
			ccMsg.put("mskm_div_cd", JTUPortOutMskmDivJdg.getPortOutMskmDiv(oldTogoOrderId, cancelSkbt, clSkbt));
			// ステータスコード値
			ccMsg.put("status_cd", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_STAT)));
			// 受付担当ＩＤ
			ccMsg.put("uk_tnt_id", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.UK_TNT_ID)));
			// 更新年月日時分秒
			ccMsg.put("upd_dtm", nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.UPD_DTM)));
		}
		// 更新モード（履歴登録）の場合
		else if (TRANS_DIV_3.equals(tranDiv))
		{
			// ポートアウトステータスが処理中の場合、排他チェック
			if (JTUStrConst.PORT_OUT_STAT_SYRCHU.equals(nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_STAT))))
			{
				// ログインID
				String loginId = nullToStr((String)ccMsg.get("key_uk_tnt_id"));
				// 受付担当ID
				String ukTntId = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.UK_TNT_ID));
				// 受付担当ID名称
				String ukTntIdNm = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.UK_TNT_ID_NM));
				
				// 受付担当IDとログインIDが異なる場合
				if (!JTUStringUtil.isNull(ukTntId) && !ukTntId.equals(loginId))
				{
					// エラーメッセージＩＤ
					ccMsg.put("err_msg_id", "EKBG110-KW");
					// エラーメッセージ置換文字列
					ccMsg.put("err_msg_replace_moji", ukTntId + "," + ukTntIdNm);
					
					return param;
				}
			}
			
			// ポートアウト受付情報内容変更
			execETU0151C010(handle, scCall, param, dataMapKey, etu0151a010Msg);
		}
		// 更新モード（ＰＫ更新）の場合
		else if (TRANS_DIV_4.equals(tranDiv))
		{
			// ポートアウト受付情報ステータス更新
			execETU0151C020(handle, scCall, param, dataMapKey);
		}
		
		return param;
	}
	
	/**
	 * @param param
	 * @param mappingData
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param,
												Object[][] mappingData) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文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));
		
		String svcIf = (String)mappingData[0][1];
		
		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));
		
		for (int i = 0; i < mappingData.length; i++)
		{
			/* CAANMsg[]の場合 */
			if (mappingData[i][1] instanceof CAANMsg[])
			{
				 template.set((String)mappingData[i][0], (CAANMsg[])mappingData[i][1]);
			}
			/* CAANMsg[]の以外 */
			else
			{
				/* nullの場合*/
				if ("".equals(mappingData[i][1]))
				{
					template.setNull((String)mappingData[i][0]);
				}
				/* 他の場合*/
				else
				{
					template.set((String)mappingData[i][0], mappingData[i][1]);
				}
			}
		}
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * 
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param dataMapKey
	 * @param mappingData
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoCom(IRequestParameterReadWrite param,
														CAANMsg[] templates, 
														int returnCode,
														String dataMapKey,
														Object[][] mappingData) throws RequestParameterException
	{
		// 本来はサービスインターフェイス分の処理が必要
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		/* 0以外のとき */
		if (returnCode != 0)
		{
			templateStatus = 9000;
		}
		
		/* nullのとき */
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		/* nullの場合 */
		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<String, String> inMap = null;

		// ユーザデータ情報
		inMap = (HashMap<String, String>)param.getData(dataMapKey);
		
		for (int i = 0; i < mappingData.length; i++)
		{
			/* nullチェック　*/
			if (!template.isNull(mappingData[i][0] + "_err"))
			{
				/* ユーザデータ情報にエラーを確認する　*/
				if (!inMap.containsKey(mappingData[i][0] + "_err"))
				{
					inMap.put(mappingData[i][0] + "_err", template.getString(mappingData[i][0] + "_err"));
				}
			}
		}
		return param;
	}
	
	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSC(SessionHandle handle, 
							ServiceComponentRequestInvoker scCall, 
							IRequestParameterReadWrite param, 
							String dataMapKey,
							Object[][] mappingData) throws Exception
	{
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);
		
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];
		
		// リターンコード取得
		Object return_code = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		
		editErrorInfoCom(param, templates, (Integer)return_code, dataMapKey, mappingData);
		
		//エラー情報のマップを取得
		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));
		
		/* 異常の場合、SCCallExceptionを生成してスローする */
		if (!("0".equals(return_code.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", return_code.toString(), status);
		}
		return msg;
	}
	
	/**
	 * サービス契約一意照会を行う。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param svcKeiNo サービス契約番号
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg execEKK0081A010(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String svcKeiNo) throws Throwable
	{
		CAANMsg result = null;
		
		Object[][] ekk0081a010In =
		{
				{EKK0081A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081A010},
				{EKK0081A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2},
				{EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo},
				{EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, ""},
				{EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null)}
		};
		
		CAANMsg ekk0081a010Msg = callSC(handle, scCall, param, dataMapKey, ekk0081a010In);
		
		CAANMsg[] ekk0081a010MsgList = ekk0081a010Msg.getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		
		if (ekk0081a010MsgList != null && ekk0081a010MsgList.length > 0)
		{
			result = ekk0081a010MsgList[0];
		}
		
		return result;
	}
	
	/**
	 * お客様一意照会を行う。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param sysid SYSID
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg execECK0011A010(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String sysid) throws Throwable
	{
		CAANMsg result = null;
		
		Object[][] eck0011a010In =
		{
				{ECK0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0011A010},
				{ECK0011A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2},
				{ECK0011A010CBSMsg.KEY_SYSID, sysid},
				{ECK0011A010CBSMsg.KEY_GENE_ADD_DTM, ""},
				{ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null)}
		};
		
		CAANMsg eck0011a010Msg = callSC(handle, scCall, param, dataMapKey, eck0011a010In);
		
		CAANMsg[] eck0011a010MsgList = eck0011a010Msg.getCAANMsgList(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST);
		
		if (eck0011a010MsgList != null && eck0011a010MsgList.length > 0)
		{
			result = eck0011a010MsgList[0];
		}
		
		return result;
	}
	
	/**
	 * サービス契約内訳<eo光電話>一覧照会を行う。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param svcKeiNo サービス契約番号
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	private CAANMsg[] execEKK0191B001(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String svcKeiNo) throws Throwable
	{
		
		Object[][] ekk0191b001In =
		{
				{EKK0191B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0191B001},
				{EKK0191B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_7},
				{EKK0191B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo}
		};
		
		CAANMsg ekk0191b001Msg = callSC(handle, scCall, param, dataMapKey, ekk0191b001In);
		
		CAANMsg[] ekk0191b001MsgList = ekk0191b001Msg.getCAANMsgList(EKK0191B001CBSMsg.EKK0191B001CBSMSG1LIST);
		
		return ekk0191b001MsgList;
	}
	
	/**
	 * サービス契約回線内訳一覧照会（現在利用中）を行う。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param svcKeiNo サービス契約番号
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg execEKK0251B003(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String svcKeiNo) throws Throwable
	{
		CAANMsg result = null;
		
		Object[][] ekk0251b003In =
		{
				{EKK0251B003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251B003},
				{EKK0251B003CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
				{EKK0251B003CBSMsg.KEY_SVC_KEI_NO, svcKeiNo}
		};
		
		CAANMsg ekk0251b003Msg = callSC(handle, scCall, param, dataMapKey, ekk0251b003In);
		
		CAANMsg[] ekk0251b003MsgList = ekk0251b003Msg.getCAANMsgList(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST);
		
		if (ekk0251b003MsgList != null && ekk0251b003MsgList.length > 0)
		{
			result = ekk0251b003MsgList[0];
		}
		
		return result;
	}
	
	/**
	 * 住所変更一覧照会を行う。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param svcKeiKaisenUcwkNo サービス契約回線内訳番号
	 * @param isItem 移転元先判定 true:元 false:先
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	private CAANMsg[] execEKK2091B001(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String svcKeiKaisenUcwkNo,
									boolean isItem) throws Throwable
	{
		String itemSvcKeiKaisenUcwkNo = "";
		String itesSvcKeiKaisenUcwkNo = "";
		
		// 移転元判定
		if (isItem)
		{
			itemSvcKeiKaisenUcwkNo = svcKeiKaisenUcwkNo;
		}
		else
		{
			itesSvcKeiKaisenUcwkNo = svcKeiKaisenUcwkNo;
		}
		
		Object[][] ekk2091b001In =
		{
				{EKK2091B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2091B001},
				{EKK2091B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
				{EKK2091B001CBSMsg.KEY_ITNM_SVKEI_KISUW_NO, itemSvcKeiKaisenUcwkNo},
				{EKK2091B001CBSMsg.KEY_ITENS_SVKEI_KISUW_NO, itesSvcKeiKaisenUcwkNo}
		};
		
		CAANMsg ekk2091b001Msg = callSC(handle, scCall, param, dataMapKey, ekk2091b001In);
		
		CAANMsg[] ekk2091b001MsgList = ekk2091b001Msg.getCAANMsgList(EKK2091B001CBSMsg.EKK2091B001CBSMSG1LIST);
		
		return ekk2091b001MsgList;
	}
	
	/**
	 * 対応記録一覧照会(簡易検索)を行う。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param svcKeiNo サービス契約番号
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	private CAANMsg[] execECR0011B030(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String svcKeiNo) throws Throwable
	{
		Object[][] ecr0011b030In =
		{
				{ECR0011B030CBSMsg.TEMPLATEID, TEMPLATE_ID_ECR0011B030},
				{ECR0011B030CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
				{ECR0011B030CBSMsg.KEY_SVC_KEI_NO, svcKeiNo},
				{ECR0011B030CBSMsg.SORT_SHITEI_KMK_NM, TAIO_KIROK_NO}
		};
		
		CAANMsg ecr0011b030Msg = callSC(handle, scCall, param, dataMapKey, ecr0011b030In);
		
		CAANMsg[] ecr0011b030MsgList = ecr0011b030Msg.getCAANMsgList(ECR0011B030CBSMsg.ECR0011B030CBSMSG1LIST);
		
		return ecr0011b030MsgList;
	}
	
	/**
	 * 業務パラメータ管理一意照会を行う。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param workParamId 業務パラメータID
	 * @return 業務パラメータ設定値
	 * @throws Exception
	 */
	private String getWorkParamSetteValue(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String workParamId) throws Throwable
	{
		String result = "";
		
		Object[][] ezm0321a010In =
		{
				{EZM0321A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0321A010},
				{EZM0321A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
				{EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, workParamId}
		};
		
		CAANMsg ezm0321a010Msg = callSC(handle, scCall, param, dataMapKey, ezm0321a010In);
		
		CAANMsg[] ezm0321a010MsgList = ezm0321a010Msg.getCAANMsgList(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST);
		
		if (ezm0321a010MsgList != null && ezm0321a010MsgList.length > 0)
		{
			result = nullToStr(ezm0321a010MsgList[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE));
		}
		
		return result;
	}
	
	/**
	 * コード名称管理コード区分一覧照会を行う。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param cdSbtCd コード種別コード
	 * @return ArrayList<HashMap<String, Object>>
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> execEZM0171B012(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String cdSbtCd) throws Throwable
	{
		ArrayList<HashMap<String, Object>> msgList = new ArrayList<HashMap<String, Object>>();
		
		Object[][] ezm0171b012In =
		{
				{EZM0171B012CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0171B012},
				{EZM0171B012CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
				{EZM0171B012CBSMsg.KEY_CD_SBT_CD, cdSbtCd},
				{EZM0171B012CBSMsg.KEY_STDARDYMD, JCCBPCommon.getOpeDate(null)}
		};
		
		CAANMsg ezm0171b012Msg = callSC(handle, scCall, param, dataMapKey, ezm0171b012In);
		
		CAANMsg[] ezm0171b012MsgList = ezm0171b012Msg.getCAANMsgList(EZM0171B012CBSMsg.EZM0171B012CBSMSG1LIST);
		
		if(ezm0171b012MsgList != null && ezm0171b012MsgList.length > 0)
		{
			for (CAANMsg caanmsg : ezm0171b012MsgList)
			{
				HashMap<String, Object> msgMap = new HashMap<String, Object>();
				msgMap.put("cd", nullToStr(caanmsg.getString(EZM0171B012CBSMsg1List.CD_DIV)));
				msgMap.put("cd_nm", nullToStr(caanmsg.getString(EZM0171B012CBSMsg1List.CD_DIV_NM)));
				msgList.add(msgMap);
			}
		}
		
		return msgList;
	}
	
	/**
	 * ポートアウト受付情報一意照会を行う。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param portOutNo ポートアウト番号
	 * @param geneAddDtm 世代登録年月日時分秒
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg execETU0151A010(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String portOutNo,
									String geneAddDtm) throws Throwable
	{
		CAANMsg result = null;
		
		Object[][] etu0151a010In =
		{
				{ETU0151A010CBSMsg.TEMPLATEID, TEMPLATE_ID_ETU0151A010},
				{ETU0151A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
				{ETU0151A010CBSMsg.KEY_PORT_OUT_NO, portOutNo},
				{ETU0151A010CBSMsg.KEY_GENE_ADD_DTM, geneAddDtm}
		};
		
		CAANMsg etu0151a010Msg = callSC(handle, scCall, param, dataMapKey, etu0151a010In);
		
		CAANMsg[] etu0151a010MsgList = etu0151a010Msg.getCAANMsgList(ETU0151A010CBSMsg.ETU0151A010CBSMSG1LIST);
		
		if (etu0151a010MsgList != null && etu0151a010MsgList.length > 0)
		{
			result = etu0151a010MsgList[0];
		}
		
		return result;
	}
	
	/**
	 * ポートアウト受付情報内容変更を行う。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param etu0151a010Msg データ情報
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg execETU0151C010(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									CAANMsg etu0151a010Msg) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		String ukTntId = nullToStr((String)ccMsg.get("key_uk_tnt_id"));
		String ukTntTelno = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.UK_TNT_TELNO));
		String kojiTntNm = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KOJI_TNT_NM));
		String kojiTntTelno = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KOJI_TNT_TELNO));
		String status = nullToStr((String)ccMsg.get("key_status"));
		
		// ポートアウトステータスが未処理の場合
		if (JTUStrConst.PORT_OUT_STAT_MI.equals(status))
		{
			ukTntId = "";
			ukTntTelno = "";
			kojiTntNm = "";
			kojiTntTelno = "";
		}
		// ポートアウトステータスが処理済の場合
		else if (JTUStrConst.PORT_OUT_STAT_SYRZM.equals(status))
		{
			ukTntTelno = getWorkParamSetteValue(handle, scCall, param, dataMapKey, WORK_PARAM_ID_TU_BMP_TNT_TELNO).replaceAll(JTUStrConst.HIHUN, "");
			kojiTntNm = getWorkParamSetteValue(handle, scCall, param, dataMapKey, WORK_PARAM_ID_TU_BMP_TNT_NM);
			kojiTntTelno = getWorkParamSetteValue(handle, scCall, param, dataMapKey, WORK_PARAM_ID_TU_BMP_TNT_TELNO).replaceAll(JTUStrConst.HIHUN, "");
		}
		
		Object[][] etu0151c010In =
		{
			{ETU0151C010CBSMsg.TEMPLATEID, TEMPLATE_ID_ETU0151C010},
			{ETU0151C010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
			{ETU0151C010CBSMsg.PORT_OUT_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_NO))},
			{ETU0151C010CBSMsg.PORT_OUT_STAT, status},
			{ETU0151C010CBSMsg.SVC_KEI_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SVC_KEI_NO))},
			{ETU0151C010CBSMsg.SVC_KEI_UCWK_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SVC_KEI_UCWK_NO))},
			{ETU0151C010CBSMsg.TOGO_ODR_ID, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.TOGO_ODR_ID))},
			{ETU0151C010CBSMsg.HAISHI_CHUMN_SKBT, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.HAISHI_CHUMN_SKBT))},
			{ETU0151C010CBSMsg.RE_BMP_MKM_SKBT, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.RE_BMP_MKM_SKBT))},
			{ETU0151C010CBSMsg.AFT_TONYU_SKBT, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.AFT_TONYU_SKBT))},
			{ETU0151C010CBSMsg.HUKUSU_NO_UM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.HUKUSU_NO_UM))},
			{ETU0151C010CBSMsg.BMP_TG_KSSU_BMP_HISTG_KSSU, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.BMP_TG_KSSU_BMP_HISTG_KSSU))},
			{ETU0151C010CBSMsg.AUTO_HAISHI_RYSHZM_NO_NUM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.AUTO_HAISHI_RYSHZM_NO_NUM))},
			{ETU0151C010CBSMsg.GRP_ID, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.GRP_ID))},
			{ETU0151C010CBSMsg.CUST_MSKM_DAY, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CUST_MSKM_DAY))},
			{ETU0151C010CBSMsg.ITENS_MSKM_DAY, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENS_MSKM_DAY))},
			{ETU0151C010CBSMsg.CHBF_MSKM_DAY, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CHBF_MSKM_DAY))},
			{ETU0151C010CBSMsg.UK_KYOTEN_NO_TRAT_SVC, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.UK_KYOTEN_NO_TRAT_SVC))},
			{ETU0151C010CBSMsg.ITENS_JIGYOSHA_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENS_JIGYOSHA_NM))},
			{ETU0151C010CBSMsg.ITENS_JIGYOSHA_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENS_JIGYOSHA_NO))},
			{ETU0151C010CBSMsg.ITENS_JIGYOSHA_DOMAIN, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENS_JIGYOSHA_DOMAIN))},
			{ETU0151C010CBSMsg.ITENS_JIGYOSHA_TNT_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENS_JIGYOSHA_TNT_NM))},
			{ETU0151C010CBSMsg.ITENS_JIGYOSHA_TELNO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENS_JIGYOSHA_TELNO))},
			{ETU0151C010CBSMsg.KIJIRAN_1_ITNM_JGSMK, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KIJIRAN_1_ITNM_JGSMK))},
			{ETU0151C010CBSMsg.KIJIRAN_2_ITNM_JGSMK, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KIJIRAN_2_ITNM_JGSMK))},
			{ETU0151C010CBSMsg.KIJIRAN_1_NOSK_JGSMK, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KIJIRAN_1_NOSK_JGSMK))},
			{ETU0151C010CBSMsg.KIJIRAN_2_NOSK_JGSMK, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KIJIRAN_2_NOSK_JGSMK))},
			{ETU0151C010CBSMsg.JI_SHANAI_KIJIRAN, nullToStr((String)ccMsg.get("key_ji_shanai_kijiran"))},
			{ETU0151C010CBSMsg.PORT_OUT_KEISHA_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_KEISHA_NM))},
			{ETU0151C010CBSMsg.PORT_OUT_KEISHA_KANA, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_KEISHA_KANA))},
			{ETU0151C010CBSMsg.SETPLACE_ADCHG_UM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_ADCHG_UM))},
			{ETU0151C010CBSMsg.SETPLC_HTNY_SKBT_CITY_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLC_HTNY_SKBT_CITY_NM))},
			{ETU0151C010CBSMsg.SETPLC_HTNY_SKBT_OAZTSU_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLC_HTNY_SKBT_OAZTSU_NM))},
			{ETU0151C010CBSMsg.SETPLC_HTNY_SKBT_AZCHO_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLC_HTNY_SKBT_AZCHO_NM))},
			{ETU0151C010CBSMsg.SETPLACE_PCD, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_PCD))},
			{ETU0151C010CBSMsg.SETPLACE_STATE_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_STATE_NM))},
			{ETU0151C010CBSMsg.SETPLACE_CITY_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_CITY_NM))},
			{ETU0151C010CBSMsg.SETPLACE_OAZTSU_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_OAZTSU_NM))},
			{ETU0151C010CBSMsg.SETPLACE_AZCHO_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_AZCHO_NM))},
			{ETU0151C010CBSMsg.SETPLACE_BNCHIGO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_BNCHIGO))},
			{ETU0151C010CBSMsg.SETPLACE_ADRTTM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_ADRTTM))},
			{ETU0151C010CBSMsg.CUST_RRKS, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CUST_RRKS))},
			{ETU0151C010CBSMsg.KOJI_KIBO_YMD, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KOJI_KIBO_YMD))},
			{ETU0151C010CBSMsg.KOJI_JSSI_WAY, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KOJI_JSSI_WAY))},
			{ETU0151C010CBSMsg.SOTEI_SWITCH_TIMEZ, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SOTEI_SWITCH_TIMEZ))},
			{ETU0151C010CBSMsg.KOJI_TIMEZ_DIV, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KOJI_TIMEZ_DIV))},
			{ETU0151C010CBSMsg.ITENM_DAIHYO_JIGYOSHA_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENM_DAIHYO_JIGYOSHA_NM))},
			{ETU0151C010CBSMsg.ITENM_DAIHYO_JIGYOSHA_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITENM_DAIHYO_JIGYOSHA_NO))},
			{ETU0151C010CBSMsg.KISAI_CHGE_MSKM_CNT, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KISAI_CHGE_MSKM_CNT))},
			{ETU0151C010CBSMsg.KISAI_CHGE_MSKM_DAY, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KISAI_CHGE_MSKM_DAY))},
			{ETU0151C010CBSMsg.KISAI_CHGE_MSKM_RSN, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KISAI_CHGE_MSKM_RSN))},
			{ETU0151C010CBSMsg.OLD_TOGO_ORDER_ID, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.OLD_TOGO_ORDER_ID))},
			{ETU0151C010CBSMsg.MSKM_CHOK_NISU, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.MSKM_CHOK_NISU))},
			{ETU0151C010CBSMsg.CANCEL_DATE, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CANCEL_DATE))},
			{ETU0151C010CBSMsg.CANCEL_SKBT, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CANCEL_SKBT))},
			{ETU0151C010CBSMsg.CANCEL_OTAI_DAY, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CANCEL_OTAI_DAY))},
			{ETU0151C010CBSMsg.CANCEL_TONYU_TNT_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CANCEL_TONYU_TNT_NM))},
			{ETU0151C010CBSMsg.CANCEL_TONYU_TNT_TELNO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CANCEL_TONYU_TNT_TELNO))},
			{ETU0151C010CBSMsg.PORT_OUT_CNRE, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_CNRE))},
			{ETU0151C010CBSMsg.CL_DATE, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CL_DATE))},
			{ETU0151C010CBSMsg.CL_SKBT, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CL_SKBT))},
			{ETU0151C010CBSMsg.UWY_SKBT, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.UWY_SKBT))},
			{ETU0151C010CBSMsg.SERVER_ARIV_DATE, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SERVER_ARIV_DATE))},
			{ETU0151C010CBSMsg.BMP_ORDER_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.BMP_ORDER_NO))},
			{ETU0151C010CBSMsg.KANREN_ORDER_CNT, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KANREN_ORDER_CNT))},
			{ETU0151C010CBSMsg.BMP_TG_KISN_CNT_NOSK_GT, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.BMP_TG_KISN_CNT_NOSK_GT))},
			{ETU0151C010CBSMsg.CHUMN_KIND, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.CHUMN_KIND))},
			{ETU0151C010CBSMsg.ORDER_STAT, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ORDER_STAT))},
			{ETU0151C010CBSMsg.NOSK_DAIHYO_JGS_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.NOSK_DAIHYO_JGS_NM))},
			{ETU0151C010CBSMsg.NOSK_DAIHYO_JGS_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.NOSK_DAIHYO_JGS_NO))},
			{ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_DATE, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KJ_DAY_RE_ADJ_REQ_DATE))},
			{ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_TNT_NM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KJ_DAY_RE_ADJ_REQ_TNT_NM))},
			{ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_TNT_TLN, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KJ_DAY_RE_ADJ_REQ_TNT_TLN))},
			{ETU0151C010CBSMsg.KJ_DAY_RE_ADJ_REQ_KIJIRAN, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.KJ_DAY_RE_ADJ_REQ_KIJIRAN))},
			{ETU0151C010CBSMsg.TELNO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.TELNO))},
			{ETU0151C010CBSMsg.SKBT_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SKBT_NO))},
			{ETU0151C010CBSMsg.NAIBU_SKBT_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.NAIBU_SKBT_NO))},
			{ETU0151C010CBSMsg.PORT_OUT_CHBF_SKBT_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_CHBF_SKBT_NO))},
			{ETU0151C010CBSMsg.PSTN_KANYKN, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PSTN_KANYKN))},
			{ETU0151C010CBSMsg.PSTN_DRYCOPPER_USE_UM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PSTN_DRYCOPPER_USE_UM))},
			{ETU0151C010CBSMsg.PSTN_DRYCOPPER_KISN_ID, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PSTN_DRYCOPPER_KISN_ID))},
			{ETU0151C010CBSMsg.PSTN_DRYCOPPER_MSKMJIG_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PSTN_DRYCOPPER_MSKMJIG_NO))},
			{ETU0151C010CBSMsg.PSTN_DRYCOPPER_MKM_SKBT_NO, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PSTN_DRYCOPPER_MKM_SKBT_NO))},
			{ETU0151C010CBSMsg.ITNS_JGS_USE_CD, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.ITNS_JGS_USE_CD))},
			{ETU0151C010CBSMsg.PSTN_PAUSE_HYO_SHS, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PSTN_PAUSE_HYO_SHS))},
			{ETU0151C010CBSMsg.PSTN_PAUSE_HYO_SHS_OTR_AD, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PSTN_PAUSE_HYO_SHS_OTR_AD))},
			{ETU0151C010CBSMsg.PSTN_ITENS_JIGYOSHA_CFM_ID, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PSTN_ITENS_JIGYOSHA_CFM_ID))},
			{ETU0151C010CBSMsg.PSTN_ITENS_KOJI_TYPE_SNAI, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PSTN_ITENS_KOJI_TYPE_SNAI))},
			{ETU0151C010CBSMsg.PSTN_ITENS_KOJI_TYPE_SGAI, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PSTN_ITENS_KOJI_TYPE_SGAI))},
			{ETU0151C010CBSMsg.KIJIRAN_ITENS_JGSMK, nullToStr((String)ccMsg.get("key_kijiran_itens_jgsmk"))},
			{ETU0151C010CBSMsg.ODKH_JUDGE_TK_KH, nullToStr((String)ccMsg.get("key_odr_kh_jdg_tk_kh"))},
			{ETU0151C010CBSMsg.ODKH_JUDGE_TK_FAIL_RSN, nullToStr((String)ccMsg.get("key_odr_kh_jdg_tk_fail_rsn"))},
			{ETU0151C010CBSMsg.ODKH_JDGTK_FRSN_OTR_RSN, nullToStr((String)ccMsg.get("key_odr_kh_jdg_tk_otr_rsn"))},
			{ETU0151C010CBSMsg.UK_TNT_ID, ukTntId},
			{ETU0151C010CBSMsg.UK_TNT_TELNO, ukTntTelno},
			{ETU0151C010CBSMsg.KOJI_TNT_NM, kojiTntNm},
			{ETU0151C010CBSMsg.KOJI_TNT_TELNO, kojiTntTelno},
			{ETU0151C010CBSMsg.TK_KH, nullToStr((String)ccMsg.get("key_tk_kh"))},
			{ETU0151C010CBSMsg.TK_FAIL_RSN, nullToStr((String)ccMsg.get("key_tk_fail_rsn"))},
			{ETU0151C010CBSMsg.TK_FAIL_RSN_OTR_RSN, nullToStr((String)ccMsg.get("key_tk_fail_rsn_other_rsn"))},
			{ETU0151C010CBSMsg.HOJIN_KOJIN_CD, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.HOJIN_KOJIN_CD))},
			{ETU0151C010CBSMsg.PORT_OUT_UK_TRKM_YMD, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_UK_TRKM_YMD))},
			{ETU0151C010CBSMsg.SWITCH_SOD_HAKKO_DTM, nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SWITCH_SOD_HAKKO_DTM))},
			{ETU0151C010CBSMsg.UPD_DTM_BF, nullToStr((String)ccMsg.get("last_upd_dtm"))}
		};
		
		CAANMsg etu0151c010Msg = callSC(handle, scCall, param, dataMapKey, etu0151c010In);
		
		return etu0151c010Msg;
	}
	
	/**
	 * ポートアウト受付情報ステータス更新を行う。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg execETU0151C020(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		Object[][] etu0151c020In =
		{
			{ETU0151C020CBSMsg.TEMPLATEID, TEMPLATE_ID_ETU0151C020},
			{ETU0151C020CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
			{ETU0151C020CBSMsg.PORT_OUT_NO, nullToStr((String)ccMsg.get("key_port_out_no"))},
			{ETU0151C020CBSMsg.GENE_ADD_DTM, nullToStr((String)ccMsg.get("key_gene_add_dtm"))},
			{ETU0151C020CBSMsg.PORT_OUT_STAT, nullToStr((String)ccMsg.get("key_status"))},
			{ETU0151C020CBSMsg.UK_TNT_ID, nullToStr((String)ccMsg.get("key_uk_tnt_id"))},
			{ETU0151C020CBSMsg.UPD_DTM_BF, nullToStr((String)ccMsg.get("last_upd_dtm"))}
		};
		
		CAANMsg etu0151c020Msg = callSC(handle, scCall, param, dataMapKey, etu0151c020In);
		
		return etu0151c020Msg;
	}
	
	/**
	 * 関連チェックの実施有無を判定する
	 * <br>
	 * @param hojinKojinCd 法人個人コード
	 * @param chumnKind 注文種類
	 * @param noskDaihyoJgsNo 番号取得_代表事業者番号
	 * @return boolean true:実施有、false:実施無
	 */
	private boolean jdgRelationCheckUm(String hojinKojinCd, String chumnKind, String noskDaihyoJgsNo)
	{
		// 個人の場合
		if (JTUStrConst.KOJIN.equals(hojinKojinCd))
		{
			// 番ポ移転、番ポ戻りの場合
			if (JTUStrConst.ORDER_KIND_BMP_ITEN.equals(chumnKind) || JTUStrConst.ORDER_KIND_BMP_RN.equals(chumnKind))
			{
				return true;
			}
			// 事業者間移転の場合
			else if (JTUStrConst.ORDER_KIND_JIGYOSHA_ITEN.equals(chumnKind))
			{
				// オプテージ以外の場合
				if (!JTUStrConst.TSJGS_CD_OPTG.equals(noskDaihyoJgsNo))
				{
					return true;
				}
			}
		}
		
		return false;
	}
	
	/**
	 * 関連チェックの実施を行う
	 * <br>
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param ekk0081a010Msg サービス契約情報
	 * @param eck0011a010Msg お客様情報
	 * @param ekk0191b001Msg サービス契約内訳<eo光電話>
	 * @param ekk0251b003Msg 現在利用場所情報
	 * @param etu0151a010Msg ポートアウト受付情報
	 * @return ArrayList<HashMap<String, Object>> 関連チェック結果
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> execRelationCheck(SessionHandle handle,
												ServiceComponentRequestInvoker scCall,
												IRequestParameterReadWrite param,
												String dataMapKey,CAANMsg ekk0081a010Msg,
												CAANMsg eck0011a010Msg,
												CAANMsg ekk0191b001Msg,
												CAANMsg ekk0251b003Msg,
												CAANMsg etu0151a010Msg) throws Throwable
	{
		ArrayList<HashMap<String, Object>> msgList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> msgMap = new HashMap<String, Object>();
		
		// サービス契約情報存在チェック
		if (ekk0081a010Msg == null || ekk0191b001Msg == null)
		{
			msgMap = new HashMap<String, Object>();
			// ワーニングメッセージＩＤ
			msgMap.put("warn_msg_id", "EKBG060--Q");
			// ワーニングメッセージ置換文字列
			msgMap.put("warn_msg_replace_moji", "解約済");
			msgList.add(msgMap);
			
			return msgList;
		}
		
		// 契約者フリガナ
		String keishaKana = "";
		// 契約者名義
		String keishaNm = "";
		// 設置場所都道府県名
		String setplaceStateNm = "";
		// 設置場所市区町村名
		String setplaceCityNm = "";
		// 設置場所大字＿通称名
		String setplaceOaztsuNm = "";
		// 設置場所字名＿丁目
		String setplaceAzchoNm = "";
		// 設置場所番地＿号
		String setplaceBnchigo = "";
		// 設置場所建物名
		String setplaceAdrttm = "";
		// 契約者フリガナ（ｅｏ）
		String eoKeishaKana = "";
		// 契約者名義（ｅｏ）
		String eoKeishaNm = "";
		// 設置場所都道府県名（ｅｏ）
		String eoSetplaceStateNm = "";
		// 設置場所市区町村名（ｅｏ）
		String eoSetplaceCityNm = "";
		// 設置場所大字＿通称名（ｅｏ）
		String eoSetplaceOaztsuNm = "";
		// 設置場所字名＿丁目（ｅｏ）
		String eoSetplaceAzchoNm = "";
		// 設置場所番地＿号（ｅｏ）
		String eoSetplaceBnchigo = "";
		// 設置場所建物名（ｅｏ）
		String eoSetplaceAdrttm = "";
		// サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = "";
		// サービス契約番号
		String svcKeiNo = nullToStr(ekk0081a010Msg.getString(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		
		if (etu0151a010Msg != null)
		{
			// 契約者フリガナ
			keishaKana = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_KEISHA_KANA));
			// 契約者名義
			keishaNm = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.PORT_OUT_KEISHA_NM));
			// 設置場所都道府県名
			setplaceStateNm = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_STATE_NM));
			// 設置場所市区町村名
			setplaceCityNm = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_CITY_NM));
			// 設置場所大字＿通称名
			setplaceOaztsuNm = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_OAZTSU_NM));
			// 設置場所字名＿丁目
			setplaceAzchoNm = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_AZCHO_NM));
			// 設置場所番地＿号
			setplaceBnchigo = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_BNCHIGO));
			// 設置場所建物名
			setplaceAdrttm = nullToStr(etu0151a010Msg.getString(ETU0151A010CBSMsg1List.SETPLACE_ADRTTM));
		}
		
		if (eck0011a010Msg != null)
		{
			// 契約者フリガナ（ｅｏ）
			eoKeishaKana = nullToStr(eck0011a010Msg.getString(ECK0011A010CBSMsg1List.CUST_KANA));
			// 契約者名義（ｅｏ）
			eoKeishaNm = nullToStr(eck0011a010Msg.getString(ECK0011A010CBSMsg1List.CUST_NM));
		}
		
		if (ekk0251b003Msg != null)
		{
			// 設置場所都道府県名（ｅｏ）
			eoSetplaceStateNm = nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_STATE_NM));
			// 設置場所市区町村名（ｅｏ）
			eoSetplaceCityNm = nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_CITY_NM));
			// 設置場所大字＿通称名（ｅｏ）
			eoSetplaceOaztsuNm = nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
			// 設置場所字名＿丁目（ｅｏ）
			eoSetplaceAzchoNm = nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
			// 設置場所番地＿号（ｅｏ）
			eoSetplaceBnchigo = nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_BNCHIGO));
			// 設置場所建物名（ｅｏ）
			eoSetplaceAdrttm = nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_ADRTTM));
			// サービス契約回線内訳番号
			svcKeiKaisenUcwkNo = nullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
		}
		
		// 契約者名義相違チェック
		if (!keishaKana.equals(eoKeishaKana)
				|| !keishaNm.equals(eoKeishaNm))
		{
			msgMap = new HashMap<String, Object>();
			// ワーニングメッセージＩＤ
			msgMap.put("warn_msg_id", "EKBG030--Q");
			// ワーニングメッセージ置換文字列
			msgMap.put("warn_msg_replace_moji", "eo顧客に登録されている情報,契約者名義");
			msgList.add(msgMap);
		}
		
		// 設置場所住所相違チェック
		if (!setplaceStateNm.equals(eoSetplaceStateNm)
				|| !setplaceCityNm.equals(eoSetplaceCityNm)
				|| !setplaceOaztsuNm.equals(eoSetplaceOaztsuNm)
				|| !setplaceAzchoNm.equals(eoSetplaceAzchoNm)
				|| !setplaceBnchigo.equals(eoSetplaceBnchigo)
				|| !setplaceAdrttm.equals(eoSetplaceAdrttm))
		{
			msgMap = new HashMap<String, Object>();
			// ワーニングメッセージＩＤ
			msgMap.put("warn_msg_id", "EKBG030--Q");
			// ワーニングメッセージ置換文字列
			msgMap.put("warn_msg_replace_moji", "eo顧客に登録されている情報,設置場所住所");
			msgList.add(msgMap);
		}
		
		// 対応記録チェック
		boolean taioKirokChkFlg1 = false;
		boolean taioKirokChkFlg2 = false;
		boolean taioKirokChkFlg3 = false;
		CAANMsg[] ecr0011b030MsgList = execECR0011B030(handle, scCall, param, dataMapKey, svcKeiNo);
		
		if(ecr0011b030MsgList != null && ecr0011b030MsgList.length > 0)
		{
			for (CAANMsg caanmsg : ecr0011b030MsgList)
			{
				String title = nullToStr(caanmsg.getString(ECR0011B030CBSMsg1List.TITLE));
				
				if (title.contains(TITLE_TEL_DSL_KOJI) && !title.contains(TITLE_HUJURI))
				{
					taioKirokChkFlg1 = true;
				}
				
				if (title.contains(TITLE_BMPNO_HAISHI_KOJIYMD) || title.contains(TITLE_HAISHI_KH_JDG_STAY))
				{
					taioKirokChkFlg2 = true;
				}
				
				if (title.contains(TITLE_TO_OFFICE_EO_KAN_HKTGI) || title.contains(TITLE_FROM_OFFICE_EO_KAN_HKTGI))
				{
					taioKirokChkFlg3 = true;
				}
			}
		}
		
		if (taioKirokChkFlg1)
		{
			msgMap = new HashMap<String, Object>();
			// ワーニングメッセージＩＤ
			msgMap.put("warn_msg_id", "EKBG040--Q");
			// ワーニングメッセージ置換文字列
			msgMap.put("warn_msg_replace_moji", "光電話解約工事");
			msgList.add(msgMap);
		}
		
		if (taioKirokChkFlg2)
		{
			msgMap = new HashMap<String, Object>();
			// ワーニングメッセージＩＤ
			msgMap.put("warn_msg_id", "EKBG040--Q");
			// ワーニングメッセージ置換文字列
			msgMap.put("warn_msg_replace_moji", "番ポ番号廃止工事日／廃止可否判定待ち");
			msgList.add(msgMap);
		}
		
		if (taioKirokChkFlg3)
		{
			msgMap = new HashMap<String, Object>();
			// ワーニングメッセージＩＤ
			msgMap.put("warn_msg_id", "EKBG040--Q");
			// ワーニングメッセージ置換文字列
			msgMap.put("warn_msg_replace_moji", "オフィス契約へのeo間引継ぎ／オフィス契約からのeo間引継ぎ");
			msgList.add(msgMap);
		}
		
		// 異動チェック
		boolean adchgchuFlg = false;
		
		if (!JTUStringUtil.isNull(svcKeiKaisenUcwkNo))
		{
			// 住所変更一覧照会(移転元)
			CAANMsg[] ekk2091b001MsgListItem = execEKK2091B001(handle, scCall, param, dataMapKey, svcKeiKaisenUcwkNo, true);
			
			if(ekk2091b001MsgListItem != null && ekk2091b001MsgListItem.length > 0)
			{
				for (CAANMsg caanmsg : ekk2091b001MsgListItem)
				{
					if (!ADCHG_STAT_FIN_ZUMI.equals(nullToStr(caanmsg.getString(EKK2091B001CBSMsg1List.ADCHG_STAT))))
					{
						adchgchuFlg = true;
						break;
					}
				}
			}
			
			if (!adchgchuFlg)
			{
				// 住所変更一覧照会(移転先)
				CAANMsg[] ekk2091b001MsgListItes = execEKK2091B001(handle, scCall, param, dataMapKey, svcKeiKaisenUcwkNo, false);
				
				if(ekk2091b001MsgListItes != null && ekk2091b001MsgListItes.length > 0)
				{
					for (CAANMsg caanmsg : ekk2091b001MsgListItes)
					{
						if (!ADCHG_STAT_FIN_ZUMI.equals(nullToStr(caanmsg.getString(EKK2091B001CBSMsg1List.ADCHG_STAT))))
						{
							adchgchuFlg = true;
							break;
						}
					}
				}
			}
		}
		
		// 住所変更中の場合
		if (adchgchuFlg)
		{
			msgMap = new HashMap<String, Object>();
			// ワーニングメッセージＩＤ
			msgMap.put("warn_msg_id", "EKBG050--Q");
			// ワーニングメッセージ置換文字列
			msgMap.put("warn_msg_replace_moji", "");
			msgList.add(msgMap);
		}
		
		// ステータスチェック
		// 電話契約がサービス提供中以外の場合
		if (!JTUStrConst.SVC_KEI_SVCTK.equals(nullToStr(ekk0191b001Msg.getString(EKK0191B001CBSMsg1List.DSP_SVC_KEI_UCWK_STAT))))
		{
			msgMap = new HashMap<String, Object>();
			// ワーニングメッセージＩＤ
			msgMap.put("warn_msg_id", "EKBG060--Q");
			// ワーニングメッセージ置換文字列
			msgMap.put("warn_msg_replace_moji", nullToStr(ekk0191b001Msg.getString(EKK0191B001CBSMsg1List.DSP_SVC_KEI_UCWK_STAT_NM)));
			msgList.add(msgMap);
		}
		
		// 料金コースチェック
		// 電話契約が2番号コースの場合
		if (PCRS_CD_A32.equals(nullToStr(ekk0081a010Msg.getString(EKK0081A010CBSMsg1List.PCRS_CD))))
		{
			msgMap = new HashMap<String, Object>();
			// ワーニングメッセージＩＤ
			msgMap.put("warn_msg_id", "EKBG070--Q");
			// ワーニングメッセージ置換文字列
			msgMap.put("warn_msg_replace_moji", "");
			msgList.add(msgMap);
		}
		
		return msgList;
	}
	
	/**
	 * 項目名がnullかチェックする
	 * <br>
	 * @param str 項目名
	 * @return 項目名
	 */
	private String nullToStr(String str)
	{
		/* 項目名がnullかチェック */
		if (str == null)
		{
			str = "";
		}
		return str;
	}
}