/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKNhkDntIktOperateCC
*	ソースファイル名：JKKNhkDntIktOperateCC.java
*	作成者			：GDC
*	日付			：2025年04月29日
*＜機能概要＞ 
* NHK団体一括登録CC部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v75.00.00	2025/04/29	GDC)J.Zabala		「ANK-4686-00-00」eoマイページからのNHK団体一括申込対応
*	v75.00.01	2025/06/12	FJ)星野		ANK-4686-00-00 IT2障害No.19
*	v75.00.02	2025/06/12	FJ)星野		ANK-4686-00-00 IT2障害No.20
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

//ANK-4686-00-00 ADD START
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
//ANK-4686-00-00 ADD END
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
import com.fujitsu.futurity.model.common.check.DatetimeCheck;
import com.fujitsu.futurity.model.common.check.HalfCharCheck;
import com.fujitsu.futurity.model.common.check.LengthCheck;
import com.fujitsu.futurity.model.common.check.MixCharCheck;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCDateUtil;
import eo.ejb.cbs.cbsmsg.ECC0021D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECC0021D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECC0021D010CBSMsg2List;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
// ANK-4686-00-00 DEL START
//import eo.ejb.cbs.cbsmsg.ECK0201B002CBSMsg;
//import eo.ejb.cbs.cbsmsg.ECK0201B002CBSMsg1List;
//import eo.ejb.cbs.cbsmsg.ECK0201B004CBSMsg;
//import eo.ejb.cbs.cbsmsg.ECK0201B004CBSMsg1List;
// ANK-4686-00-00 DEL END
// ANK-4686-00-00 ADD START
import eo.ejb.cbs.cbsmsg.ECK0011B050CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011B050CBSMsg1List;
// ANK-4686-00-00 ADD END
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021C060CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0441A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0441A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0441C330CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0441D020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321B010CBSMsg1List;

public class JKKNhkDntIktOperateCC extends AbstractCommonComponent
{
	
	/** リクエストキー：SYSID */
	private static final String IN_SYSID = "sysid";
	
	/** リクエストキー：請求契約番号 */
	private static final String IN_BILLING_CONTRACT_NUMBER = "billingContractNumber";
	
	/** リクエストキー：申込完了日時 */
	private static final String IN_COMPLETION_DATE_TIME = "completionDateTime";
	
	/** リクエストキー：現在の契約 */
	private static final String IN_CURRENT_COURSE = "currentCourse";
	
	/** リクエストキー：衛星契約申込有無 */
	private static final String IN_SATELLITE_CONTRACT = "satelliteContract";
	
	/** リクエストキー：支払コース */
	private static final String IN_PAYMENT_COURSE = "paymentCourse";
	
	/** リクエストキー：衛星受信機設置日 */
	private static final String IN_RECEIVER_INSTALLATION_DATE = "receiverIinstallationDate";
	
	/** リクエストキー：旧郵便番号 */
	private static final String IN_OLD_ZIP_CODE = "oldZipCode";
	
	/** リクエストキー：旧住所 */
	private static final String IN_OLD_ADDRESS = "oldAddress";
	
	/** リクエストキー：現郵便番号 */
	private static final String IN_CURRENT_ZIP_CODE = "currentZipCode";
	
	/** リクエストキー：現住所 */
	private static final String IN_CURRENT_ADDRESS = "currentAddress";
	
	/** リクエストキー：処理結果 */
	private static final String OUT_RESULT = "result";
	
	/** リクエストキー：エラーコード */
	private static final String OUT_ERROR_CODE = "errorCode";
	
	/** リクエストキー：エラーメッセージ */
	private static final String OUT_ERROR_MESSAGE = "errorMessage";
	
	// ANK-4686-00-00 ADD START
	/** レスポンスキー：BODY */
	public static final String BODY_INFO = "BODY_INFO";
	// ANK-4686-00-00 ADD END
	
	/** リクエストキー：業務エラーリスト */
	private static final String ERROR_INFO = "ERROR_INFO";
	
	/** 支払コース:2か月払い */
	private static final String PAYMENT_COURSE_02 = "02";
	
	/** 支払コース:6か月払い */
	private static final String PAYMENT_COURSE_06 = "06";
	
	/** 支払コース:12か月払い */
	private static final String PAYMENT_COURSE_12 = "12";
	
	/** 現在の契約:契約なし */
	private static final String CURRENT_COURSE_0 = "0";
	
	/** 現在の契約:地上契約 */
	private static final String CURRENT_COURSE_1 = "1";
	
	/** 現在の契約:衛星契約 */
	private static final String CURRENT_COURSE_2 = "2";
	
	/** 衛星契約申込有無:申し込む */
	private static final String SATELLITE_CONTRACT_1 = "1";
	
	/** 空白 */
	private static final String EMPTY = "";
	
	/** NHK団体一括受付完了メール */
	private static final String MAIL_CD ="KKM1000061";
	
	/** 異動理由コード(その他) */
	public static final String IDO_RSN_CD_VALUE_56 = "56";
	
	/** お客さま一意照会 */
	private final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";
	
	/** 請求契約一意照会 */
	private final String TEMPLATE_ID_EKK0491A010 = "EKK0491A010";
	
	/** 請求オプションサービス契約一意照会 */
	private final String TEMPLATE_ID_EKK0441A010 = "EKK0441A010";
	
	// ANK-4686-00-00 DEL START
//	/** 連絡先(コンテンツ用メールアドレス)一覧照会 */
//	private final String TEMPLATE_ID_ECK0201B002 = "ECK0201B002";
//	
//	/** 連絡先履歴一覧照会(SYSID) */
//	private final String TEMPLATE_ID_ECK0201B004 = "ECK0201B004";
	// ANK-4686-00-00 DEL END
	
	// ANK-4686-00-00 ADD START
	/** お客様情報照会(PMP連携用) */
	private final String TEMPLATE_ID_ECK0011B050 = "ECK0011B050";
	// ANK-4686-00-00 ADD END
	
	/** 課金先一覧照会 */
	private static final String TEMPLATE_ID_EKK0321B002 = "EKK0321B002";
	
	/** テンプレートID ECC0021D010 */
	private static final String TEMPLATE_ID_ECC0021D010 = "ECC0021D010";
	
	/** 進捗登録 */
	private static final String TEMPLATE_ID_EKK1091D010 = "EKK1091D010";

// ANK-4686-00-00 IT2障害No.20対応 20250612 星野 MOD START
//	/** 申込登録 */
//	private static final String TEMPLATE_ID_EKK0011D010 = "EKK0011D010";
	
	/** 申込内容承認登録 */
	private static final String TEMPLATE_ID_EKK0011D020 = "EKK0011D020";
	
	/** 申込明細照査・後続業務依頼 */
	private static final String TEMPLATE_ID_EKK0021C060 = "EKK0021C060";
// ANK-4686-00-00 IT2障害No.20対応 20250612 星野 MOD END
	
// ANK-4686-00-00 IT2障害No.19対応 20250612 星野 DEL START
//	/** テンプレートID EZM0171A010 */
//	private static final String TEMPLATE_ID_EZM0171A010 = "EZM0171A010";
// ANK-4686-00-00 IT2障害No.19対応 20250612 星野 DEL END
	
	/** テンプレートID：業務パラメータ管理一覧照会 */
	private static final String TEMPLATE_ID_EZM0321B010 = "EZM0321B010";
	
	/** ホームタイプ以外の料金コース（typeN） */
	private static final String KK_HTGAI_PCRS_TPN = "KK_HTGAI_PCRS_TPN_";
	
	/** 再送信（多チャンネル）ＳＤコース */
	public static final String PCRS_CD_A24 = "A24";
	
	/** 再送信（多チャンネル）ＨＤコース */
	public static final String PCRS_CD_A64 = "A64";
	
	/** 再送信（地デジ・ＢＳコース） */
	public static final String PCRS_CD_A75 = "A75";
	
// ANK-4686-00-00 IT2障害No.19対応 20250612 星野 ADD START
	/** 支払コース和名変換マップ  */
	private static final Map<String, String> PAYMENT_COURSE_MAP = new HashMap<String, String>();
	// eoのコード名称（CD00675）と和名が異なるため独自和名変換する
	static{
		PAYMENT_COURSE_MAP.put(PAYMENT_COURSE_02, "2か月払");
		PAYMENT_COURSE_MAP.put(PAYMENT_COURSE_06, "6か月前払");
		PAYMENT_COURSE_MAP.put(PAYMENT_COURSE_12, "12か月前払");
	}
// ANK-4686-00-00 IT2障害No.19対応 20250612 星野 ADD END
	/**
	 * eoマイページからのNHK団体一括申込対応。<br>
	 * <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;
		
		// ユーザデータ情報
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		// 業務エラーリスト 
		List<HashMap<String, String>> errList = new ArrayList<HashMap<String,String>>();
		
		try
		{
			// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
			ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
			HashMap<String, Object> childMap = new HashMap<String, Object>();
			
			/*
			 * (1)業務チェック
			 */
			
			// 必須チェック, 属性チェック, 桁数チェック
			errList = checkData(ccMsg);
			if (!errList.isEmpty())
			{
				// 処理結果に応じたコードを設定
				setResDetails(true, errList, ccMsg, param);
				return param;
			}
			
			/*
			 * (2)パラメータチェック
			 */
			
			// SYSIDが存在しない場合エラー
			// SYSID
			String sysId = (String)ccMsg.get(IN_SYSID);
			// お客さま一意照会 を呼び出す
			CAANMsg eck0011a010Msg = execECK0011A010(handle, scCall, param, dataMapKey, sysId);
			if (eck0011a010Msg == null)
			{
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_2001, "SYSIDが存在しません。"));
				// 処理結果に応じたコードを設定
				setResDetails(true, errList, ccMsg, param);
				return param;
			}
			
			// 請求契約番号が存在しない場合エラー
			// 請求契約番号
			String seikyKeiNo = (String)ccMsg.get(IN_BILLING_CONTRACT_NUMBER);
			// 請求契約一意照会を呼び出す。
			CAANMsg ekk0491a010Msg = execEKK0491A010(handle, scCall, param, dataMapKey, seikyKeiNo);
			if (ekk0491a010Msg == null)
			{
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_2002, "請求契約番号が存在しません。"));
				// 処理結果に応じたコードを設定
				setResDetails(true, errList, ccMsg, param);
				return param;
			}
			
			// 支払コースが以下のいずれかでない場合、チェックエラーとする"02"：2か月払い"06"：6か月払い"12"：12か月払い
			// 支払コース 
			String paymentCourse = (String)ccMsg.get(IN_PAYMENT_COURSE);
			if (!PAYMENT_COURSE_02.equals(paymentCourse) && !PAYMENT_COURSE_06.equals(paymentCourse) && !PAYMENT_COURSE_12.equals(paymentCourse))
			{
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_2003, "支払コースの設定が不正です"));
				// 処理結果に応じたコードを設定
				setResDetails(true, errList, ccMsg, param);
				return param;
			}
			
			// 現在の契約が以下のいずれかでない場合、チェックエラーとする"0":契約なし"1":地上契約"2":衛星契約
			// 現在の契約 
			String currentCourse = (String)ccMsg.get(IN_CURRENT_COURSE);
			if (!CURRENT_COURSE_0.equals(currentCourse) && !CURRENT_COURSE_1.equals(currentCourse) && !CURRENT_COURSE_2.equals(currentCourse))
			{
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_2004, "現在の契約の設定が不正です"));
				// 処理結果に応じたコードを設定
				setResDetails(true, errList, ccMsg, param);
				return param;
			}
			
			// 衛星契約申込有無がNULLまたは"1":申し込むでない場合、チェックエラーとする
			// 衛星契約申込有無
			String satelliteContract = (String)ccMsg.get(IN_SATELLITE_CONTRACT);
			if (satelliteContract != null && !SATELLITE_CONTRACT_1.equals(satelliteContract))
			{
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_2005, "衛星契約申込有無の設定が不正です。"));
				// 処理結果に応じたコードを設定
				setResDetails(true, errList, ccMsg, param);
				return param;
			}
			
			/*
			 * (3)メールアドレス取得
			 */
			
			// ANK-4686-00-00 MOD START
//			// 基準年月日時分秒
//			String baseDtm = eck0011a010Msg.getString(ECK0011A010CBSMsg1List.GENE_ADD_DTM);
			// お客様情報照会(PMP連携用)を呼び出す。
			CAANMsg[] eck0011b050MsgList = execECK0011B050(handle, scCall, param, dataMapKey, sysId);
			// メールアドレス
			String mlad = getMlad(eck0011b050MsgList);
			// ANK-4686-00-00 MOD END
			// コンテンツ連絡先メールアドレスが取得できない場合
			if (JKKStringUtil.isNullBlank(mlad))
			{
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_2006, "SYSIDに紐づくメールアドレスが取得できません。"));
				// 処理結果に応じたコードを設定
				setResDetails(true, errList, ccMsg, param);
				return param;
			}
			
			/*
			 * (4)請求契約番号とSYSIDの関連チェック
			 */
			
			// 自分が存在する
			boolean ownSysIdFlg = false;
			
			String svcKeiNo = "";
			
			// ホームタイプ以外の料金コース（typeN） リスト取得
			ArrayList<String> htgaiPcrsTpnList = getWorkParamSetteValue(handle, param, fixedText, KK_HTGAI_PCRS_TPN);
			
			// 課金先一覧照会（請求契約番号／サービス契約番号）
			CAANMsg[] ekk0321b002Msg = execEKK0321B002(handle, scCall, param, dataMapKey, seikyKeiNo);
			for (CAANMsg caanMsg : ekk0321b002Msg)
			{
				String ekk0321b002_sysId = caanMsg.getString(EKK0321B002CBSMsg1List.SYSID);
				String ekk0321b002_svcKeiNo = caanMsg.getString(EKK0321B002CBSMsg1List.SVC_KEI_NO);
				if (sysId.equals(ekk0321b002_sysId))
				{
					ownSysIdFlg = true;
				}
				else 
				{
					if (!JKKStringUtil.isNullBlank(ekk0321b002_svcKeiNo))
					{
						// 請求契約番号が複数のSYSIDと紐づく場合、エラー
						errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_2008, "一つの請求契約番号に対してSYSIDが複数存在します。"));
						// 処理結果に応じたコードを設定
						setResDetails(true, errList, ccMsg, param);
						return param;
					}
				}
				
				// サービス契約番号取得(抽出結果の最後のデータのサービス契約番号を取得)
				if (!JKKStringUtil.isNullBlank(ekk0321b002_svcKeiNo))
				{
					String ekk0321b002_PRC_GRP_CD = caanMsg.getString(EKK0321B002CBSMsg1List.PRC_GRP_CD);
					// サービス契約ステータス100のみ取得
					String ekk0321b002_SVC_KEI_STAT = caanMsg.getString(EKK0321B002CBSMsg1List.SVC_KEI_STAT);
					if (JKKStrConst.CD00037_SVCTK_CHU.equals(ekk0321b002_SVC_KEI_STAT))
					{
						// '02':ｅｏ光ネットホームタイプ,'03':ｅｏ光ネットメゾンタイプ,'04':ｅｏ光ネットマンションタイプ,
						// '10':ｅｏ光電話,'11':ｅｏ光テレビ,'12':ｅｏ光テレビ（ＫＣＮ）,'13':ｅｏ光テレビ（再送信）)
						if(JKKStrConst.CD00133_02.equals(ekk0321b002_PRC_GRP_CD) || JKKStrConst.CD00133_03.equals(ekk0321b002_PRC_GRP_CD) || JKKStrConst.CD00133_04.equals(ekk0321b002_PRC_GRP_CD) ||
						   JKKStrConst.CD00133_10.equals(ekk0321b002_PRC_GRP_CD) || JKKStrConst.CD00133_11.equals(ekk0321b002_PRC_GRP_CD) || JKKStrConst.CD00133_12.equals(ekk0321b002_PRC_GRP_CD) || JKKStrConst.CD00133_13.equals(ekk0321b002_PRC_GRP_CD) )
						{
							String ekk0321b002_PCRS_CD = caanMsg.getString(EKK0321B002CBSMsg1List.PCRS_CD);
							// '02':ｅｏ光ネットホームタイプ,'03':ｅｏ光ネットメゾンタイプ,'04':ｅｏ光ネットマンションタイプ,
							if(JKKStrConst.CD00133_02.equals(ekk0321b002_PRC_GRP_CD) || JKKStrConst.CD00133_03.equals(ekk0321b002_PRC_GRP_CD) 
									|| JKKStrConst.CD00133_04.equals(ekk0321b002_PRC_GRP_CD))
							{
								// 料金コースコードが 「KK_HTGAI_PCRS_TPN_%」(ホームタイプ以外の料金コース（typeN）)の一覧に含まれていない場合のみを対象とする
								if(!htgaiPcrsTpnList.contains(ekk0321b002_PCRS_CD))
								{
									svcKeiNo = ekk0321b002_svcKeiNo;
								}
							}
							// '13':ｅｏ光テレビ（再送信）)
							else if(JKKStrConst.CD00133_13.equals(ekk0321b002_PRC_GRP_CD))
							{
								// 料金コースコードが"A24"(再送信（多チャンネル）ＳＤコース　)、"A64"(再送信（多チャンネル）ＨＤコース　)、"A75"再送信（地デジ・ＢＳコース）、である場合のみを対象とする。
								if((PCRS_CD_A24.equals(ekk0321b002_PCRS_CD) || PCRS_CD_A64.equals(ekk0321b002_PCRS_CD) || PCRS_CD_A75.equals(ekk0321b002_PCRS_CD)))
								{
									svcKeiNo = ekk0321b002_svcKeiNo;
								}
							}
							// '10':ｅｏ光電話,'11':ｅｏ光テレビ,'12':ｅｏ光テレビ（ＫＣＮ）
							else
							{
								svcKeiNo = ekk0321b002_svcKeiNo;
							}
						}
					}
				}
			}
			
			// 請求契約番号がSYSIDと紐づかない場合、エラー
			if (!ownSysIdFlg)
			{
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_2007, "請求契約番号に対してSYSIDが紐づきません。"));
				// 処理結果に応じたコードを設定
				setResDetails(true, errList, ccMsg, param);
				return param;
			}
			
			/*
			 * 5.5.2.申込情報の登録処理
			 */
			
			// 更新年月日時分秒(更新前)
			String updDtmBf = ekk0491a010Msg.getString(EKK0491A010CBSMsg1List.UPD_DTM);
			
// ANK-4686-00-00 IT2障害No.20対応 20250612 星野 MOD START
//			// 申込登録
//			Object[][] eKK0011d010IN = getArraysDataEKK0011D010(ccMsg);
//			ArrayList<HashMap<String, Object>> inList = getArrayListEKK0011D010CBSMsg();
//
//			CAANMsg ekk0011D010CBSMsg = callSCArray(handle, scCall, param, fixedText, eKK0011d010IN, "EKK0011D010CBSMsg1List", inList);
//			
//			CAANMsg ekk0011D010CBSMsg1List = ekk0011D010CBSMsg.getCAANMsgList(EKK0011D010CBSMsg.EKK0011D010CBSMSG1LIST)[0];
//			String mskmDtlNo = getNullToStr(ekk0011D010CBSMsg1List.getString(EKK0011D010CBSMsg1List.MSKM_DTL_NO));
			
			// 申込内容承認登録
			Object[][] eKK0011d020IN = getArraysDataEKK0011D020(ccMsg);
			ArrayList<HashMap<String, Object>> inList = getArrayListEKK0011D020CBSMsg();

			CAANMsg ekk0011d020CBSMsg = callSCArray(handle, scCall, param, fixedText, eKK0011d020IN, EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST, inList);
			
			String mskmDtlNo = "";
			CAANMsg[] ekk0011d020CBSMsg1List = ekk0011d020CBSMsg.getCAANMsgList(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST);
			if(ekk0011d020CBSMsg1List!=null && ekk0011d020CBSMsg1List.length > 0) 
			{
				mskmDtlNo = getNullToStr(ekk0011d020CBSMsg1List[0].getString(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
			}
			
			String updDtmBf_mskm = getNullToStr(ekk0011d020CBSMsg.getString(EKK0011D020CBSMsg.UPD_DTM));
			
			
			// 申込明細照査・後続業務依頼
			execEKK0021C060(handle, param, fixedText, scCall, mskmDtlNo, updDtmBf_mskm);
// ANK-4686-00-00 IT2障害No.20対応 20250612 星野 MOD END
			
			// 請求オプションサービス契約登録
			execEKK0441D020(handle, param, scCall, ccMsg, childMap, mlad, updDtmBf, mskmDtlNo);
			
			// 請求オプションサービス一意照会
			String opeDate=JCCBPCommon.getOpeDate(null); //オンライン運用日
			execEKK0441A010(handle, param, scCall, ccMsg, childMap, fixedText, opeDate);
			
			// 進捗登録を行う
			execEKK1091D010(handle, param, fixedText, scCall, ccMsg, childMap, mskmDtlNo, svcKeiNo, seikyKeiNo);
			
			/*
			 * 5.5.3.NHK団体一括受付完了メールを送信する。
			 */
			
			// お客様名
			String custNm = eck0011a010Msg.getString(ECK0011A010CBSMsg1List.CUST_NM);
			// 申込完了日時(YYYY年MM月DD日)
			String completionDateTimeStr = (String)ccMsg.get(IN_COMPLETION_DATE_TIME);
			String completionDateTime =completionDateTimeStr.substring(0, 4) + JKKStrConst.DATE_JAPANESE_YEAR
										+completionDateTimeStr.substring(4, 6) + JKKStrConst.DATE_JAPANESE_MONTH
										+completionDateTimeStr.substring(6, 8) + JKKStrConst.DATE_JAPANESE_DAY;
			
// ANK-4686-00-00 IT2障害No.19対応 20250612 星野 MOD START
// eoのコード名称（CD00675）と和名が異なるため独自和名変換する
//			// 支払コース
//			CAANMsg ezmEZM0171a010Msg = getEZM0171A010(handle, scCall, param, dataMapKey, (String)ccMsg.get(IN_PAYMENT_COURSE));
//			String payCourseCd = ezmEZM0171a010Msg.getString(EZM0171A010CBSMsg1List.CD_DIV_NM);
			
			String payCourseCd = getNullToStr(PAYMENT_COURSE_MAP.get(ccMsg.get(IN_PAYMENT_COURSE)));
// ANK-4686-00-00 IT2障害No.19対応 20250612 星野 MOD END
			
			// メール送信情報登録サービスIF実行。メール送信情報登録サービスIFを行う。
			execECC0021D010(handle, scCall, param, fixedText, mlad, custNm, completionDateTime, payCourseCd, MAIL_CD, satelliteContract);
			
			/*
			 * Aレスポンス（正常時）
			 */

			ccMsg.clear();
			
			// SYSID
			ccMsg.put(IN_SYSID, sysId);
			// 請求契約番号 
			ccMsg.put(IN_BILLING_CONTRACT_NUMBER, seikyKeiNo);
			// 処理結果 
			ccMsg.put(OUT_RESULT, "1");
		}
		// (5)上記以外のエラー発生時について
		catch (Exception e)
		{
			// ANK-4686-00-00 ADD START
			// レスポンス用のパラメータを作成する
			Map<String, Object> bodyMap = new HashMap<String, Object>();
			ccMsg.put(BODY_INFO, bodyMap);
			// ANK-4686-00-00 ADD END
			
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_3001, ""));
			
			// 処理結果に応じたコードを設定
			setResDetails(true, errList, ccMsg, param);
			throw new CCException("", e);
		}
		
		// 結果を返却する。
		return param;
	}

	/**
	 * 業務チェック
	 * @param ccMsg
	 * @return 業務エラーリスト
	 * @throws Exception 例外が発生した場合
	 */
	private List<HashMap<String, String>> checkData(Map<String, Object> ccMsg)
	throws Throwable
	{
		// 出力用設定値:エラーリスト
		List<HashMap<String, String>> errList = new ArrayList<HashMap<String, String>>();
		
		String itemValue = null;
		String errorMessage = null;

		// SYSID
		itemValue = (String)ccMsg.get(IN_SYSID);
		errorMessage = IN_SYSID + JKKStrConst.COLON + itemValue;
		if (JKKStringUtil.isNullBlank(itemValue) )
		{
			// 必須チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1001, errorMessage));
		}
		else if (!HalfCharCheck.isEnNumber1Check(itemValue))
		{
			// 属性チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
		}
		else if (!LengthCheck.isLength1Check(itemValue, 10))
		{
			// 桁数チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
		}
		
		// 請求契約番号
		itemValue = (String)ccMsg.get(IN_BILLING_CONTRACT_NUMBER);
		errorMessage = IN_BILLING_CONTRACT_NUMBER + JKKStrConst.COLON + itemValue;
		if (JKKStringUtil.isNullBlank(itemValue) )
		{
			// 必須チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1001, errorMessage));
		}
		else if (!HalfCharCheck.isEnNumber1Check(itemValue))
		{
			// 属性チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
		}
		else if (!LengthCheck.isLength1Check(itemValue, 10))
		{
			// 桁数チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
		}
		
		// 申込完了日時
		itemValue = (String)ccMsg.get(IN_COMPLETION_DATE_TIME);
		errorMessage = IN_COMPLETION_DATE_TIME + JKKStrConst.COLON + itemValue;
		if (JKKStringUtil.isNullBlank(itemValue) )
		{
			// 必須チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1001, errorMessage));
		}
		else if (!HalfCharCheck.isNumber1Check(itemValue))
		{
			// 属性チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
		}
		else if (!LengthCheck.isLength1Check(itemValue, 14))
		{
			// 桁数チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
		}
		
		// 現在の契約
		itemValue = (String)ccMsg.get(IN_CURRENT_COURSE);
		errorMessage = IN_CURRENT_COURSE + JKKStrConst.COLON + itemValue;
		if (JKKStringUtil.isNullBlank(itemValue) )
		{
			// 必須チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1001, errorMessage));
		}
		else if (!HalfCharCheck.isNumber1Check(itemValue))
		{
			// 属性チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
		}
		else if (!LengthCheck.isLength1Check(itemValue, 1))
		{
			// 桁数チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
		}
		
		// 衛星契約申込有無
		itemValue = (String)ccMsg.get(IN_SATELLITE_CONTRACT);
		// ANK-4686-00-00 MOD START
		//errorMessage = IN_SATELLITE_CONTRACT + JKKStrConst.COLON + itemValue;
		//if (!HalfCharCheck.isNumber1Check(itemValue))
		//{
			// 属性チェックエラー
		//	errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
		//}
		//else if (!LengthCheck.isLength1Check(itemValue, 1))
		//{
			// 桁数チェックエラー
		//	errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
		//}
		if(null != itemValue)
		{
			errorMessage = IN_SATELLITE_CONTRACT + JKKStrConst.COLON + itemValue;
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 属性チェックエラー
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
			}
			else if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
			}
		}
		// ANK-4686-00-00 MOD END
		
		// 支払コース
		itemValue = (String)ccMsg.get(IN_PAYMENT_COURSE);
		errorMessage = IN_PAYMENT_COURSE + JKKStrConst.COLON + itemValue;
		if (JKKStringUtil.isNullBlank(itemValue) )
		{
			// 必須チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1001, errorMessage));
		}
		else if (!HalfCharCheck.isNumber1Check(itemValue))
		{
			// 属性チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
		}
		else if (!LengthCheck.isLength1Check(itemValue, 2))
		{
			// 桁数チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
		}
		
		// 衛星受信機設置日
		itemValue = (String)ccMsg.get(IN_RECEIVER_INSTALLATION_DATE);
		// ANK-4686-00-00 MOD START
		//errorMessage = IN_RECEIVER_INSTALLATION_DATE + JKKStrConst.COLON + itemValue;
		//if (!DatetimeCheck.isDateCheck(itemValue))
		//{
			// 属性チェックエラー
		//	errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
		//}
		//else if (!LengthCheck.isLength1Check(itemValue, 8))
		//{
			// 桁数チェックエラー
		//	errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
		//}
		if(null != itemValue)
		{
			errorMessage = IN_RECEIVER_INSTALLATION_DATE + JKKStrConst.COLON + itemValue;
			if (!DatetimeCheck.isDateCheck(itemValue))
			{
				// 属性チェックエラー
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
			}
			else if (!LengthCheck.isLength1Check(itemValue, 8))
			{
				// 桁数チェックエラー
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
			}
		}
		// ANK-4686-00-00 MOD END
		
		// 旧郵便番号
		itemValue = (String)ccMsg.get(IN_OLD_ZIP_CODE);
		// ANK-4686-00-00 MOD START
		//errorMessage = IN_OLD_ZIP_CODE + JKKStrConst.COLON + itemValue;
		//if (!HalfCharCheck.isNumber1Check(itemValue))
		//{
			// 属性チェックエラー
		//	errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
		//}
		//else if (!LengthCheck.isLength1Check(itemValue, 7))
		//{
			// 桁数チェックエラー
		//	errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
		//}
		if(null != itemValue)
		{
			errorMessage = IN_OLD_ZIP_CODE + JKKStrConst.COLON + itemValue;
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 属性チェックエラー
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
			}
			else if (!LengthCheck.isLength1Check(itemValue, 7))
			{
				// 桁数チェックエラー
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
			}
		}
		// ANK-4686-00-00 MOD END
		
		// 旧住所
		itemValue = (String)ccMsg.get(IN_OLD_ADDRESS);
		// ANK-4686-00-00 MOD START
		//errorMessage = IN_OLD_ADDRESS + JKKStrConst.COLON + itemValue;
		//if (!MixCharCheck.isNameAddressCheck(itemValue))
		//{
			// 属性チェックエラー
		//	errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
		//}
		//else if (!LengthCheck.isLength2Check(itemValue, 0, 251))
		//{
			// 桁数チェックエラー
		//	errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
		//}
		if(null != itemValue)
		{
			errorMessage = IN_OLD_ADDRESS + JKKStrConst.COLON + itemValue;
			if (!MixCharCheck.isNameAddressCheck(itemValue))
			{
				// 属性チェックエラー
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
			}
			else if (!LengthCheck.isLength2Check(itemValue, 1, 160))
			{
				// 桁数チェックエラー
				errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
			}
		}
		// ANK-4686-00-00 MOD END
		
		// 現郵便番号
		itemValue = (String)ccMsg.get(IN_CURRENT_ZIP_CODE);
		errorMessage = IN_CURRENT_ZIP_CODE + JKKStrConst.COLON + itemValue;
		if (JKKStringUtil.isNullBlank(itemValue) )
		{
			// 必須チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1001, errorMessage));
		}
		else if (!HalfCharCheck.isNumber1Check(itemValue))
		{
			// 属性チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
		}
		else if (!LengthCheck.isLength1Check(itemValue, 7))
		{
			// 桁数チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
		}
		
		// 現住所
		itemValue = (String)ccMsg.get(IN_CURRENT_ADDRESS);
		errorMessage = IN_CURRENT_ADDRESS + JKKStrConst.COLON + itemValue;
		if (JKKStringUtil.isNullBlank(itemValue) )
		{
			// 必須チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1001, errorMessage));
		}
		else if (!MixCharCheck.isNameAddressCheck(itemValue))
		{
			// 属性チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1002, errorMessage));
		}
		else if (!LengthCheck.isLength2Check(itemValue, 1, 251))
		{
			// 桁数チェックエラー
			errList.add(getErrorInfoMap(JKKStrConst.RETURN_CD_1003, errorMessage));
		}

		return errList;
	}

	/**
	 * 出力：エラーコードとエラーメッセージをセットした業務エラーマップを返却する。<br>
	 * <br>
	 * @return returnMap
	 */
	private HashMap<String, String> getErrorInfoMap(String errorCode, String errorMessage)
	{
		HashMap<String, String> returnMap = new HashMap<String, String>();
		
		returnMap.put(OUT_ERROR_CODE, errorCode);
		returnMap.put(OUT_ERROR_MESSAGE, errorMessage);
		
		return returnMap;
	}
	
	/**
	 * 処理結果に応じたコードを設定
	 * @param errFlg
	 * @param errList
	 * @param ccMsg
	 * @param param
	 * @throws Throwable
	 */
	private void setResDetails(
		boolean errFlg, 
		List<HashMap<String, String>> errList, 
		Map<String, Object> ccMsg, IRequestParameterReadWrite param
	) throws Throwable
	{
		if (errFlg)
		{
			// ANK-4686-00-00 ADD START
			// レスポンス用のパラメータを作成する
			Map<String, Object> bodyMap = new HashMap<String, Object>();
			ccMsg.put(BODY_INFO, bodyMap);
			// ANK-4686-00-00 ADD END
			ccMsg.put(ERROR_INFO, errList);
		}
		
		// リターンコード
		param.setControlMapData(SCControlMapKeys.RETURN_CODE, JKKStrConst.RETURN_CD_5000);
		// リターンメッセージ
		param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, null);
	}
	
	/**
	 * 請求オプションサービス契約登録　ＮＨＫ団体一括支払
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @param mlad メールアドレス
	 * @throws Exception 
	 */
	private void execEKK0441D020(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap,
									String mlad,
									String updDtmBf,
									String mskmDtlNo) throws Exception
	{
		// ◇ 上りマッピング処理
		// リクエストパラメータを引数に上りマッピング処理メソッドを実行
		HashMap<String, Object> paramMap = editInMsg_EKK0441D020(param, dataMap, childMap, mlad, updDtmBf,mskmDtlNo);
		
		// ◇ SC呼出実行 (請求オプションサービス契約登録)
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// ◇ 下りマッピング処理
		editOutMsg_EKK0441D020(result, param, dataMap, childMap);
		
		//処理結果判定
		jdgErrRslt(result, 0);
	}
	
	/**
	 * 請求オプションサービス契約登録の上りマッピング処理を行います。
	 * @param param リクエストパラメータ
	 * @param ccMsg サービスメッセージ
	 * @param mlad メールアドレス
	 * @return HashMap<String, Object>
	 * @throws Exception 
	 */
	private HashMap<String, Object> editInMsg_EKK0441D020(
			IRequestParameterReadWrite param,
			Map<String, Object> ccMsg,
			HashMap<String, Object> childMap,
			String mlad,
			String updDtmBf,
			String mskmDtlNo
	) throws Exception
	{
		// 共通領域の設定
		HashMap<String, Object> paramMap = editInMsg(param);
		
		CAANMsg template = new CAANMsg(EKK0441D020CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0441D020CBSMsg.TEMPLATEID, "EKK0441D020");

		// 機能コード（デフォルト：１）
		template.set(EKK0441D020CBSMsg.FUNC_CODE, "1");

		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
		// オンライン運用日
		String opeDate = JCCBPCommon.getOpeDate(null);
		
		// NHK団体一括契約NHK締結年月日
		String completionDateStr = (String)ccMsg.get(IN_COMPLETION_DATE_TIME);
		String completionDate =completionDateStr.substring(0, 4)+completionDateStr.substring(4, 6)+completionDateStr.substring(6, 8);
		String nhk_cnc_ymd = completionDate;
		
		// NHK団体一括NHK締結年月日の翌偶数年月１日
		String tmpMonth =nhk_cnc_ymd.substring(4, 6);
		String nhkCncYmdNextEvenMonth_1Day ="";
		if(Integer.parseInt(tmpMonth) % 2 == 0)
		{
			// 偶数月
			nhkCncYmdNextEvenMonth_1Day=JPCDateUtil.addMonth(nhk_cnc_ymd, 2).substring(0, 6) + "01";
		}
		else
		{
			// 奇数月
			nhkCncYmdNextEvenMonth_1Day=JPCDateUtil.addMonth(nhk_cnc_ymd, 1).substring(0, 6) + "01";
		}
		
		
		// 世代登録年月日時分秒
		template.set(EKK0441D020CBSMsg.GENE_ADD_DTM, opeDate); // オンライン運用日
		
		// 請求オプションサービス契約ステータス
		template.set(EKK0441D020CBSMsg.SEIOPSVC_KEI_STAT, "100"); // 提供中
		
		// 請求契約番号
		template.set(EKK0441D020CBSMsg.SEIKY_KEI_NO, ccMsg.get(IN_BILLING_CONTRACT_NUMBER)); // リクエスト.請求契約番号
		
		// SYSID 
		template.set(EKK0441D020CBSMsg.SYSID, ccMsg.get(IN_SYSID));
		
		// 請求オプションサービスコード
		template.set(EKK0441D020CBSMsg.SEIOPSVC_CD, "E002");
		
		// 料金コースコード
		template.set(EKK0441D020CBSMsg.PCRS_CD, "E02");
		
		// 申込明細番号
		template.set(EKK0441D020CBSMsg.MSKM_DTL_NO, mskmDtlNo);
		
		// サービス利用開始希望年月日
		template.set(EKK0441D020CBSMsg.SVC_USE_STA_KIBO_YMD, nhkCncYmdNextEvenMonth_1Day);
		
		// 照査年月日照査年月日
		template.set(EKK0441D020CBSMsg.SHOSA_YMD, opeDate);
		
		// 契約締結年月日
		template.set(EKK0441D020CBSMsg.KEI_CNC_YMD, opeDate);
		
		// 予約適用年月日
		template.set(EKK0441D020CBSMsg.RSV_APLY_YMD, opeDate);
		
		// 予約適用コード
		template.set(EKK0441D020CBSMsg.RSV_APLY_CD, "2"); // 予約確定
		
		// プラン開始年月日
		template.set(EKK0441D020CBSMsg.PLAN_STAYMD, opeDate);
		
		// プラン終了年月日
		template.set(EKK0441D020CBSMsg.PLAN_ENDYMD, "20991231");
		
		// プラン課金開始年月日
		template.set(EKK0441D020CBSMsg.PLAN_CHRG_STAYMD, opeDate);
		
		// プラン課金終了年月日
		template.set(EKK0441D020CBSMsg.PLAN_CHRG_ENDYMD, "20991231");
		
		// サービス開始年月日
		template.set(EKK0441D020CBSMsg.SVC_STA_YMD, opeDate);
		
		// サービス終了年月日
		template.set(EKK0441D020CBSMsg.SVC_ENDYMD, "20991231");
		
		// サービス課金開始年月日
		template.set(EKK0441D020CBSMsg.SVC_CHRG_STAYMD, opeDate);
		
		// サービス課金終了年月日
		template.set(EKK0441D020CBSMsg.SVC_CHRG_ENDYMD, "20991231");
		
		// 異動区分
		template.set(EKK0441D020CBSMsg.IDO_DIV, JKKStrConst.CD00576_SEIKY_INFO_CHG);
		
		// 照査解約完了コード
		template.set(EKK0441D020CBSMsg.SHOSA_DSL_FIN_CD, "1");
		
		// NHK団体一括支払サイクルコード
		template.set(EKK0441D020CBSMsg.NHK_GRP_IKT_PAY_CYCLE_CD, ccMsg.get(IN_PAYMENT_COURSE));
		
		// NHK団体一括契約初回請求年月日
		template.set(EKK0441D020CBSMsg.NHK_DNTIKTKEI_FIRST_SEIYMD, nhkCncYmdNextEvenMonth_1Day);
		
		// NHK団体一括契約NHK締結年月日
		// ANK-4686-00-00 MOD START
		//template.set(EKK0441D020CBSMsg.NHK_DNTIKTKEI_NHK_CNC_YMD, opeDate);
		template.set(EKK0441D020CBSMsg.NHK_DNTIKTKEI_NHK_CNC_YMD, nhk_cnc_ymd);
		// ANK-4686-00-00 MOD END
		
		// 登録メモ
		// ANK-4686-00-00 ADD START
		String conCompletionDate = convertDateString(completionDateStr.substring(0, 12));
		// ANK-4686-00-00 ADD END
		
		// ANK-4686-00-00 MOD START
		//String addMemo = "現在のご契約内容：";
		String addMemo = "マイページ申込日時：" + conCompletionDate + "、現在のご契約内容：";
		// ANK-4686-00-00 MOD END
		
		// 現在の契約
		String currentCourse = (String) ccMsg.get(IN_CURRENT_COURSE);
		if (currentCourse.equals(CURRENT_COURSE_0))
		{
			addMemo += "契約なし";
		}
		else if (currentCourse.equals(CURRENT_COURSE_1))
		{
			addMemo += "地上契約";
		}
		else if (currentCourse.equals(CURRENT_COURSE_2))
		{
			addMemo += "衛星契約";
		}
		
		// 衛星契約申込有無
		String satelliteContract = (String) ccMsg.get(IN_SATELLITE_CONTRACT);
		if (!JKKStringUtil.isNullBlank(satelliteContract))
		{
			addMemo += "、衛星契約の申込有無：有";
		}
		
		// NHK団体一括契約登録メモ
		template.set(EKK0441D020CBSMsg.NHK_DNTIKTKEI_ADD_MEMO, addMemo);
		
		// NHK団体一括契約住所メモ
		String current_address=JKKStringUtil.subStringByte((String) ccMsg.get(IN_CURRENT_ADDRESS),242);
		template.set(EKK0441D020CBSMsg.NHK_DNTIKTKEI_AD_MEMO, current_address);
		
		// NHK団体一括契約申込受付年月日
		template.set(EKK0441D020CBSMsg.NHK_DNTIKTKEI_DATE, (String) ccMsg.get(IN_COMPLETION_DATE_TIME));

		// 衛星受信機設置日
		template.set(EKK0441D020CBSMsg.NHK_STLT_RCVR_STC_NITI, (String) ccMsg.get(IN_RECEIVER_INSTALLATION_DATE));
		
		// NHK団体一括契約旧郵便番号
		template.set(EKK0441D020CBSMsg.NHK_DNTIKTKEI_OLD_PCD, (String) ccMsg.get(IN_OLD_ZIP_CODE));
		
		// NHK団体一括契約旧住所
		template.set(EKK0441D020CBSMsg.NHK_DNTIKTKEI_OLD_AD, (String) ccMsg.get(IN_OLD_ADDRESS));
		
		// NHK団体一括契約現郵便番号
		template.set(EKK0441D020CBSMsg.NHK_DNTIKTKEI_NOW_PCD, (String) ccMsg.get(IN_CURRENT_ZIP_CODE));
		
		// NHK団体一括契約現住所
		template.set(EKK0441D020CBSMsg.NHK_DNTIKTKEI_NOW_AD, (String) ccMsg.get(IN_CURRENT_ADDRESS));
		
		// NHK団体一括契約メールアドレス
		template.set(EKK0441D020CBSMsg.NHK_DNTIKTKEI_MLAD, mlad);
		
		// 更新年月日時分秒(更新前)
		template.set(EKK0441D020CBSMsg.UPD_DTM_BF, updDtmBf);
		
		// 料金項目コード
		template.setNull(EKK0441D020CBSMsg.PRC_KMK_CD);
		
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.06.04
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editOutMsg_EKK0441D020(Map<?, ?> msgList,
			IRequestParameterReadWrite param,
			Map<String, Object> dataMap,
			HashMap<String, Object> childMap) throws Exception {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 請求オプションサービス契約番号WORK(EKK0441D020) ← 請求オプションサービス契約番号
		if (parentTemplate.isNull(EKK0441D020CBSMsg.SEIOPSVC_KEI_NO)) 
		{
			childMap.put("EKK0441D020_seiopsvc_kei_no", new String());
		} 
		else 
		{
			childMap.put("EKK0441D020_seiopsvc_kei_no", parentTemplate.getString(EKK0441D020CBSMsg.SEIOPSVC_KEI_NO));
		}
		// 世代登録年月日時分秒WORK(EKK0441D020) ← 世代登録年月日時分秒
		if (parentTemplate.isNull(EKK0441D020CBSMsg.GENE_ADD_DTM)) 
		{
			childMap.put("out_opt_gene_add_dtm", new String());
		} 
		else 
		{
			childMap.put("out_opt_gene_add_dtm", parentTemplate.getString(EKK0441D020CBSMsg.GENE_ADD_DTM));
		}
		// 予約適用コードWORK(EKK0441D020) ← 予約適用コード
		if (parentTemplate.isNull(EKK0441D020CBSMsg.RSV_APLY_CD)) 
		{
			childMap.put("EKK0441D020_rsv_aply_cd", new String());
		} 
		else 
		{
			childMap.put("EKK0441D020_rsv_aply_cd", parentTemplate.getString(EKK0441D020CBSMsg.RSV_APLY_CD));
		}
		// 更新年月日時分秒WORK(EKK0441D020) ← 更新年月日時分秒
		if (parentTemplate.isNull(EKK0441D020CBSMsg.UPD_DTM)) 
		{
			childMap.put("EKK0441D020_upd_dtm", new String());
		} 
		else 
		{
			childMap.put("EKK0441D020_upd_dtm", parentTemplate.getString(EKK0441D020CBSMsg.UPD_DTM));
		}
		
		// 登録／変更区分(ＮＨＫ請求オプション登録CC) ← "01"「登録」
		childMap.put("wrisvcautoaplycc_add_chge_div", "01");
		// 請求オプションサービス契約ステータス(ＮＨＫ請求オプション登録CC) ← 請求オプションサービス契約ステータス
		if (parentTemplate.isNull(EKK0441D020CBSMsg.SEIOPSVC_KEI_STAT)) 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", new String());
		} 
		else 
		{
			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", parentTemplate.getString(EKK0441D020CBSMsg.SEIOPSVC_KEI_STAT));
		}
		
		// エラー情報の設定
		param = editErrorInfo_EKK0441D020(param, dataMap, templates, (Integer)return_code, childMap);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
		
		return param;
	}
	
	/**
	 * 請求オプションサービス契約登録エラー処理メソッド
	 * @param param
	 * @param inMap
	 * @param templates
	 * @param returnCode
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	private IRequestParameterReadWrite editErrorInfo_EKK0441D020(IRequestParameterReadWrite param, 
																	Map<String, Object> inMap,
																	CAANMsg[] templates,
																	int returnCode,
																	HashMap<String, Object> childMap) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(EKK0441D020CBSMsg.STATUS);
		if(returnCode != 0)
		{
			templateStatus = 9000;
		}

		if(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if(obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if(templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		// 請求契約番号
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.SEIKY_KEI_NO_ERR);
		// SYSID
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.SYSID_ERR);
		// 申込明細番号
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.MSKM_DTL_NO_ERR);
		// サービス契約番号
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.SVC_KEI_NO_ERR);
		// 試用加入年月日
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.FTRIAL_KANYU_YMD_ERR);
		// 試用期間終了年月日
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.FTRIAL_PRD_ENDYMD_ERR);
		// 本加入年月日
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.HONKANYU_YMD_ERR);
		// 本加入移行期限年月日
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.HONKANYU_IKO_KIGEN_YMD_ERR);
		// サービス利用開始希望年月日
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.SVC_USE_STA_KIBO_YMD_ERR);
		// 予約適用開始希望年月日
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.RSV_TSTA_KIBO_YMD_ERR);
		// 違約金発生コード
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.PNLTY_HASSEI_CD_ERR);
		// 異動区分
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.IDO_DIV_ERR);
		// 料金項目コード
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.PRC_KMK_CD_ERR);
		// NHK団体一括支払サイクルコード
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.NHK_GRP_IKT_PAY_CYCLE_CD_ERR);
		// NHK団体一括契約初回請求年月日
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.NHK_DNTIKTKEI_FIRST_SEIYMD_ERR);
		// NHKお客様番号
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.NHK_CUST_NO_ERR);
		// NHK団体一括契約NHK締結年月日
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.NHK_DNTIKTKEI_NHK_CNC_YMD_ERR);
		// NHK団体一括契約変更届年月日
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.NHK_CUST_NO_ERR);
		// NHK団体一括契約変更理由メモ
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.NHK_DNTIKTKEI_CHGRE_MEMO_ERR);
		// NHK団体一括契約登録メモ
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.NHK_DNTIKTKEI_ADD_MEMO_ERR);
		// NHK外部連携契約コード
		setErrDataMap(childMap, template, EKK0441D020CBSMsg.NHK_OUT_RNKI_KEI_CD_ERR);
		// NHK団体一括契約住所メモ
		setErrDataMap(childMap, template, EKK0441C330CBSMsg.NHK_DNTIKTKEI_AD_MEMO_ERR);		
		return param;
	}
	
// ANK-4686-00-00 IT2障害No.20対応 20250612 星野 MOD START
//	/**
//	 * サービスIF(EKK0011D010)に格納するデータ群の組み立て(登録用)<br>
//	 * <br>
//	 * @param ccMsg
//	 * @return Object[][]
//	 */
//	private Object[][] getArraysDataEKK0011D010(Map<String, Object> ccMsg)
//	{
//
//		String operateDate = JCCBPCommon.getOpeDate(null);
//		String operateDateTime = JCCBPCommon.getOpeDateTimeStamp(null);
//		
//		Object[][] arraysParam = {
//				{EKK0011D010CBSMsg.TEMPLATEID,                 TEMPLATE_ID_EKK0011D010},
//				{EKK0011D010CBSMsg.FUNC_CODE,                  "1"},
//				{EKK0011D010CBSMsg.SYSID,                      (String)ccMsg.get("sysid")},
//				{EKK0011D010CBSMsg.MSKM_YMD,                   operateDate},
//				{EKK0011D010CBSMsg.MSKM_UK_DTM,                operateDateTime},
//				{EKK0011D010CBSMsg.MSKM_SBT_CD,                "00015"},
//				{EKK0011D010CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD, "04"},
//				{EKK0011D010CBSMsg.MSKMSHO_ARIV_YMD,           ""},
//				{EKK0011D010CBSMsg.MSKM_UK_TNT_USER_ID,        ""},
//				{EKK0011D010CBSMsg.TTL_BUSINESS_CENTER_UK_NO,  ""},
//				{EKK0011D010CBSMsg.TTL_BUSINESS_MSKM_OPT_CD,   ""},
//				{EKK0011D010CBSMsg.MSKM_RRKS_TELNO,            ""},
//				{EKK0011D010CBSMsg.MSKM_JSSIS_SBT_CD,          ""},
//				{EKK0011D010CBSMsg.CUST_YOBO_JIKO,             ""},
//				{EKK0011D010CBSMsg.TEL_RRK_KIBOD_SBT_CD,       ""},
//				{EKK0011D010CBSMsg.TEL_RRK_KIBO_TIME_CD,       ""},
//				{EKK0011D010CBSMsg.TAKCHO_KIBOD_SBT_CD,        ""},
//				{EKK0011D010CBSMsg.TAKCHO_KIBO_TIME_CD,        ""},
//				{EKK0011D010CBSMsg.KARI_MSKM_FLG,              ""},
//				{EKK0011D010CBSMsg.REFERER,                    ""},
//				{EKK0011D010CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM, ""},
//				{EKK0011D010CBSMsg.SHOSA_BF_RRK_JIKO_YH,       ""},
//				{EKK0011D010CBSMsg.SHOSA_BF_RRK_JIKO,          ""},
//				{EKK0011D010CBSMsg.USE_SVC_KEIZK_SBT_CD,       ""},
//				{EKK0011D010CBSMsg.UK_TNTSHA_SKBT_CD,          ""},
//				{EKK0011D010CBSMsg.KOJI_REQ_INFO_RRK_JIKO,     ""},
//				{EKK0011D010CBSMsg.MSKM_ROUTE_SKBT_CD,         ""},
//			};
//		
//		return arraysParam;
//	}
//	
//	/**
//	 * サービスIF(EKK0011D010)に格納する申込明細の組み立て(登録用)<br>
//	 * <br>
//	 * @return ArrayList
//	 */
//	private ArrayList<HashMap<String, Object>> getArrayListEKK0011D010CBSMsg()
//	{
//		
//		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
//		HashMap<String, Object> inMap = new HashMap<String, Object>();
//		
//		inMap.put(EKK0011D010CBSMsg1List.MSKMSHO_NO, "");
//		inMap.put(EKK0011D010CBSMsg1List.WEB_UK_NO, "");
//		inMap.put(EKK0011D010CBSMsg1List.MSKM_FORM_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.MSKM_DTL_SBT_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.RRKS_KTAI_TELNO, "");
//		inMap.put(EKK0011D010CBSMsg1List.RRKS_OFFC_NM, "");
//		inMap.put(EKK0011D010CBSMsg1List.DT_RRKS_TELNO, "");
//		inMap.put(EKK0011D010CBSMsg1List.NEW_MSKM_SBT_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.MSKM_OPTNTY_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD, "");
//		inMap.put(EKK0011D010CBSMsg1List.KOJI_APO_RRKS_SHITEI_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.KOJI_APO_RRKS_TELNO, "");
//		inMap.put(EKK0011D010CBSMsg1List.RRK_JIKO_ADD_DTM, "");
//		inMap.put(EKK0011D010CBSMsg1List.MSKM_RRKS_MLAD, "");
//		inMap.put(EKK0011D010CBSMsg1List.KOJI_PRG_TCHI_MLAD, "");
//		inMap.put(EKK0011D010CBSMsg1List.RRK_JIKO, "");
//		inMap.put(EKK0011D010CBSMsg1List.KJSC_TCH_KTAI_MLAD, "");
//		inMap.put(EKK0011D010CBSMsg1List.ML_SEND_JGI_FLG, "");
//		inMap.put(EKK0011D010CBSMsg1List.ML_SEND_JGI_RSN_MEMO, "");
//		inMap.put(EKK0011D010CBSMsg1List.BMP_MSKM_RRKS_TLN, "");
//		inMap.put(EKK0011D010CBSMsg1List.OP_SVC_HKTGI_UM, "");
//		inMap.put(EKK0011D010CBSMsg1List.DSL_ATICLE_SOHU_KIBO_UM, "");
//		inMap.put(EKK0011D010CBSMsg1List.RRK_WAY_HOKI, "");
//		inMap.put(EKK0011D010CBSMsg1List.NEWCONST_BUKKEN_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.HUKKAT_ANKEN_FLG, "");
//		inMap.put(EKK0011D010CBSMsg1List.SAME_EQUIP_RE_MSKM_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.HNIN_CFM_ATICLE_SBT_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.MSKMSHO_SBT_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.KEI_HUKA_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.MAP_TEMP_UM, "");
//		inMap.put(EKK0011D010CBSMsg1List.KCN_STB_MSKM_CNT, "");
//		inMap.put(EKK0011D010CBSMsg1List.KCN_STB_KIND_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN, "");
//		inMap.put(EKK0011D010CBSMsg1List.MANSION_ID, "");
//		inMap.put(EKK0011D010CBSMsg1List.CATID, "");
//		inMap.put(EKK0011D010CBSMsg1List.MKM_UK_SBT_CD, "");
//		inMap.put(EKK0011D010CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM, "");
//		inMap.put(EKK0011D010CBSMsg1List.MSKMSHO_TRAT_IF_TELNO, "");
//		
//		inList.add(inMap);
//		
//		return inList;
//		
//	}
//	
//	/**
//	 * 
//	 * @param msgList
//	 * @param param
//	 * @param dataMap
//	 * @param childMap
//	 * @return
//	 * @throws Exception
//	 */
//	@SuppressWarnings("unchecked")
//	public IRequestParameterReadWrite editOutMsg_EKK0011D010(Map<?, ?> msgList,
//			IRequestParameterReadWrite param,
//			Map<String, Object> dataMap,
//			HashMap<String, Object> childMap) throws Exception {
//
//		// SCからの戻り値からCAANMsgを取得する。
//		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
//		CAANMsg parentTemplate = templates[0];
//
//		// リターンコード取得
//		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
//		
//		// 作業領域の取得
//		Map workMap = (Map)param.getMappingWorkArea();
//		if (workMap == null) {
//			workMap = new HashMap();
//			param.setMappingWorkArea(workMap);
//		}
//		
//		// 請求オプションサービス契約番号WORK(EKK0441D020) ← 請求オプションサービス契約番号
//		if (parentTemplate.isNull(EKK0441D020CBSMsg.SEIOPSVC_KEI_NO)) 
//		{
//			childMap.put("EKK0441D020_seiopsvc_kei_no", new String());
//		} 
//		else 
//		{
//			childMap.put("EKK0441D020_seiopsvc_kei_no", parentTemplate.getString(EKK0441D020CBSMsg.SEIOPSVC_KEI_NO));
//		}
//		// 世代登録年月日時分秒WORK(EKK0441D020) ← 世代登録年月日時分秒
//		if (parentTemplate.isNull(EKK0441D020CBSMsg.GENE_ADD_DTM)) 
//		{
//			childMap.put("out_opt_gene_add_dtm", new String());
//		} 
//		else 
//		{
//			childMap.put("out_opt_gene_add_dtm", parentTemplate.getString(EKK0441D020CBSMsg.GENE_ADD_DTM));
//		}
//		// 予約適用コードWORK(EKK0441D020) ← 予約適用コード
//		if (parentTemplate.isNull(EKK0441D020CBSMsg.RSV_APLY_CD)) 
//		{
//			childMap.put("EKK0441D020_rsv_aply_cd", new String());
//		} 
//		else 
//		{
//			childMap.put("EKK0441D020_rsv_aply_cd", parentTemplate.getString(EKK0441D020CBSMsg.RSV_APLY_CD));
//		}
//		// 更新年月日時分秒WORK(EKK0441D020) ← 更新年月日時分秒
//		if (parentTemplate.isNull(EKK0441D020CBSMsg.UPD_DTM)) 
//		{
//			childMap.put("EKK0441D020_upd_dtm", new String());
//		} 
//		else 
//		{
//			childMap.put("EKK0441D020_upd_dtm", parentTemplate.getString(EKK0441D020CBSMsg.UPD_DTM));
//		}
//		
//		// 登録／変更区分(ＮＨＫ請求オプション登録CC) ← "01"「登録」
//		childMap.put("wrisvcautoaplycc_add_chge_div", "01");
//		// 請求オプションサービス契約ステータス(ＮＨＫ請求オプション登録CC) ← 請求オプションサービス契約ステータス
//		if (parentTemplate.isNull(EKK0441D020CBSMsg.SEIOPSVC_KEI_STAT)) 
//		{
//			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", new String());
//		} 
//		else 
//		{
//			childMap.put("wrisvcautoaplycc_seiopsvc_kei_stat", parentTemplate.getString(EKK0441D020CBSMsg.SEIOPSVC_KEI_STAT));
//		}
//		
//		// エラー情報の設定
//		param = editErrorInfo_EKK0441D020(param, dataMap, templates, (Integer)return_code, childMap);
//
//		//エラー情報のマップを取得
//		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
//		if(errList == null){
//			errList = new ArrayList<Object>();
//		}
//		// コントロールマップに設定
//		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
//		
//		return param;
//	}
	
	
	/**
	 * サービスIF(EKK0011D020)に格納するデータ群の組み立て(登録用)<br>
	 * <br>
	 * @param ccMsg
	 * @return Object[][]
	 */
	private Object[][] getArraysDataEKK0011D020(Map<String, Object> ccMsg)
	{

		String operateDate = JCCBPCommon.getOpeDate(null);
		String sysDateTime = JCCBPCommon.getSysDateTimeStamp();
		
		Object[][] arraysParam = {
				{EKK0011D020CBSMsg.TEMPLATEID,                 TEMPLATE_ID_EKK0011D020},
				{EKK0011D020CBSMsg.FUNC_CODE,                  "1"},
				{EKK0011D020CBSMsg.SYSID,                      (String)ccMsg.get("sysid")},
				{EKK0011D020CBSMsg.MSKM_SBT_CD,                "00013"},
				{EKK0011D020CBSMsg.MSKMSHO_ARIV_YMD,           ""},
				{EKK0011D020CBSMsg.MSKM_UK_DTM,                sysDateTime},
				{EKK0011D020CBSMsg.MSKM_UK_TNT_USER_ID,        ""},
				{EKK0011D020CBSMsg.MSKM_YMD,                   operateDate},
				{EKK0011D020CBSMsg.TTL_BUSINESS_CENTER_UK_NO,  ""},
				{EKK0011D020CBSMsg.TTL_BUSINESS_MSKM_OPT_CD,   ""},
				{EKK0011D020CBSMsg.MSKM_RRKS_TELNO,            ""},
				{EKK0011D020CBSMsg.MSKM_JSSIS_SBT_CD,          ""},
				{EKK0011D020CBSMsg.CUST_YOBO_JIKO,             ""},
				{EKK0011D020CBSMsg.TEL_RRK_KIBOD_SBT_CD,       ""},
				{EKK0011D020CBSMsg.TEL_RRK_KIBO_TIME_CD,       ""},
				{EKK0011D020CBSMsg.TAKCHO_KIBOD_SBT_CD,        ""},
				{EKK0011D020CBSMsg.TAKCHO_KIBO_TIME_CD,        ""},
				{EKK0011D020CBSMsg.KARI_MSKM_FLG,              ""},
				{EKK0011D020CBSMsg.REFERER,                    ""},
				{EKK0011D020CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM, ""},
				{EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_YH,       ""},
				{EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO,          ""},
				{EKK0011D020CBSMsg.USE_SVC_KEIZK_SBT_CD,       ""},
				{EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD, "04"},
				{EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD,          ""},
				{EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO,     ""},
				{EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD,         ""},
			};
		
		return arraysParam;
	}
	
	/**
	 * サービスIF(EKK0011D020)に格納する申込明細の組み立て(登録用)<br>
	 * <br>
	 * @return ArrayList
	 */
	private ArrayList<HashMap<String, Object>> getArrayListEKK0011D020CBSMsg()
	{
		
		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		
		inMap.put(EKK0011D020CBSMsg1List.MSKMSHO_NO, "");
		inMap.put(EKK0011D020CBSMsg1List.WEB_UK_NO, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKM_FORM_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKM_DTL_SBT_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.RRKS_KTAI_TELNO, "");
		inMap.put(EKK0011D020CBSMsg1List.RRKS_OFFC_NM, "");
		inMap.put(EKK0011D020CBSMsg1List.DT_RRKS_TELNO, "");
		inMap.put(EKK0011D020CBSMsg1List.NEW_MSKM_SBT_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKM_OPTNTY_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD, "");
		inMap.put(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_SHITEI_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_TELNO, "");
		inMap.put(EKK0011D020CBSMsg1List.RRK_JIKO_ADD_DTM, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKM_RRKS_MLAD, "");
		inMap.put(EKK0011D020CBSMsg1List.KOJI_PRG_TCHI_MLAD, "");
		inMap.put(EKK0011D020CBSMsg1List.RRK_JIKO, "");
		inMap.put(EKK0011D020CBSMsg1List.KJSC_TCH_KTAI_MLAD, "");
		inMap.put(EKK0011D020CBSMsg1List.ML_SEND_JGI_FLG, "");
		inMap.put(EKK0011D020CBSMsg1List.ML_SEND_JGI_RSN_MEMO, "");
		inMap.put(EKK0011D020CBSMsg1List.BMP_MSKM_RRKS_TLN, "");
		inMap.put(EKK0011D020CBSMsg1List.OP_SVC_HKTGI_UM, "");
		inMap.put(EKK0011D020CBSMsg1List.DSL_ATICLE_SOHU_KIBO_UM, "");
		inMap.put(EKK0011D020CBSMsg1List.RRK_WAY_HOKI, "");
		inMap.put(EKK0011D020CBSMsg1List.NEWCONST_BUKKEN_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.HUKKAT_ANKEN_FLG, "");
		inMap.put(EKK0011D020CBSMsg1List.SAME_EQUIP_RE_MSKM_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.HNIN_CFM_ATICLE_SBT_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKMSHO_SBT_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.KEI_HUKA_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MAP_TEMP_UM, "");
		inMap.put(EKK0011D020CBSMsg1List.KCN_STB_MSKM_CNT, "");
		inMap.put(EKK0011D020CBSMsg1List.KCN_STB_KIND_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN, "");
		inMap.put(EKK0011D020CBSMsg1List.MANSION_ID, "");
		inMap.put(EKK0011D020CBSMsg1List.CATID, "");
		inMap.put(EKK0011D020CBSMsg1List.MKM_UK_SBT_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TELNO, "");
		
		inList.add(inMap);
		
		return inList;
		
	}
	
	/**
	 * 申込明細照査・後続業務依頼
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @throws Exception 
	 */
	private void execEKK0021C060(SessionHandle handle,
									IRequestParameterReadWrite param,
									String fixedText,
									ServiceComponentRequestInvoker scCall,
									String mskmDtlNo,
									String updDtmBf) throws Exception
	{
		String operateDate = JCCBPCommon.getOpeDate(null);
		
		Object[][] ekk0021c060In =
		{
				{EKK0021C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021C060},
				{EKK0021C060CBSMsg.FUNC_CODE, "1"},
				{EKK0021C060CBSMsg.MSKM_DTL_NO, mskmDtlNo},
				{EKK0021C060CBSMsg.KZKWRK_REQYMD,   operateDate},
				{EKK0021C060CBSMsg.MSKM_DTL_NO,     mskmDtlNo},
				{EKK0021C060CBSMsg.IDO_DIV,         JKKStrConst.CD00576_SEIKY_INFO_CHG},
				{EKK0021C060CBSMsg.UPD_DTM_BF,      updDtmBf}
		};

		callSC(handle, scCall, param, fixedText, ekk0021c060In);
	}
// ANK-4686-00-00 IT2障害No.20対応 20250612 星野 MOD END
	
	/**
	 * 課金先一覧照会（請求契約番号／サービス契約番号）を呼び出す。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param seikyKeiNo 請求契約番号
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg[] execEKK0321B002(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String seikyKeiNo) throws Throwable
	{
		// 上りマッピング
		Object[][] ekk0321b002In = {
				  {EKK0321B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0321B002}
				, {EKK0321B002CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_5}
				, {EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO, seikyKeiNo}
				, {EKK0321B002CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null)}
		};
		
		CAANMsg ekk0321b002Msg = callSC(handle, scCall, param, dataMapKey, ekk0321b002In);
		
		CAANMsg[] ekk0321b002MsgList = ekk0321b002Msg.getCAANMsgList(EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST);
		
		return ekk0321b002MsgList;
	}
	
	/**
	 * お客さま一意照会 を呼び出す。
	 * @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_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;
	}
	
	/**
	 * 請求契約一意照会を呼び出す。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param seikyKeiNo 請求契約番号
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg execEKK0491A010(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String seikyKeiNo) throws Throwable
	{
		CAANMsg result = null;
		
		// 上りマッピング
		Object[][] ekk0491a010In = {
				  {EKK0491A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0491A010}
				, {EKK0491A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2}
				, {EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO, seikyKeiNo}
				, {EKK0491A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null)}
		};
		
		CAANMsg ekk0491a010Msg = callSC(handle, scCall, param, dataMapKey, ekk0491a010In);
		
		CAANMsg[] ekk0491a010MsgList = ekk0491a010Msg.getCAANMsgList(EKK0491A010CBSMsg.EKK0491A010CBSMSG1LIST);
		
		if (ekk0491a010MsgList != null && ekk0491a010MsgList.length > 0)
		{
			result = ekk0491a010MsgList[0];
		}
		
		return result;
	}
	
	// ANK-4686-00-00 DEL START
//	/**
//	 * 連絡先(コンテンツ用メールアドレス)一覧照会を呼び出す。
//	 * @param handle セッションハンドル
//	 * @param scCall SC呼出
//	 * @param param パラメーター
//	 * @param dataMapKey データマップキー
//	 * @param sysId SYSID
//	 * @return CAANMsg
//	 * @throws Throwable
//	 */
//	private CAANMsg[] execECK0201B002(SessionHandle handle,
//									ServiceComponentRequestInvoker scCall,
//									IRequestParameterReadWrite param,
//									String dataMapKey,
//									String sysId) throws Throwable
//	{
//		// 上りマッピング
//		Object[][] eck0201b002In = {
//				  {ECK0201B002CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0201B002}
//				, {ECK0201B002CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1}
//				, {ECK0201B002CBSMsg.KEY_SYSID, sysId}
//		};
//		
//		CAANMsg eck0201b002Msg = callSC(handle, scCall, param, dataMapKey, eck0201b002In);
//		
//		CAANMsg[] eck0201b002MsgList = eck0201b002Msg.getCAANMsgList(ECK0201B002CBSMsg.ECK0201B002CBSMSG1LIST);
//		
//		return eck0201b002MsgList;
//	}
//	
//	/**
//	 * 連絡先履歴一覧照会(SYSID)を呼び出す。
//	 * @param handle セッションハンドル
//	 * @param scCall SC呼出
//	 * @param param パラメーター
//	 * @param dataMapKey データマップキー
//	 * @param sysId SYSID
//	 * @param baseDtm 基準年月日時分秒
//	 * @return CAANMsg
//	 * @throws Throwable
//	 */
//	private CAANMsg[] execECK0201B004(SessionHandle handle,
//									ServiceComponentRequestInvoker scCall,
//									IRequestParameterReadWrite param,
//									String dataMapKey,
//									String sysId,
//									String baseDtm) throws Throwable
//	{
//		// 上りマッピング
//		Object[][] eck0201b004In = {
//				  {ECK0201B004CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0201B004}
//				, {ECK0201B004CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2}
//				, {ECK0201B004CBSMsg.KEY_SYSID, sysId}
//				, {ECK0201B004CBSMsg.KEY_BASE_DTM, baseDtm}
//		};
//		
//		CAANMsg eck0201b004Msg = callSC(handle, scCall, param, dataMapKey, eck0201b004In);
//		
//		CAANMsg[] eck0201b004MsgList = eck0201b004Msg.getCAANMsgList(ECK0201B004CBSMsg.ECK0201B004CBSMSG1LIST);
//		
//		return eck0201b004MsgList;
//	}
	// ANK-4686-00-00 DEL END
	
	// ANK-4686-00-00 ADD START
	/**
	 * お客様情報照会(PMP連携用)を呼び出す。
	 * @param handle セッションハンドル
	 * @param scCall SC呼出
	 * @param param パラメーター
	 * @param dataMapKey データマップキー
	 * @param sysId SYSID
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg[] execECK0011B050(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									String sysId) throws Throwable
	{
		// 上りマッピング
		Object[][] eck0011b050In = {
				  {ECK0011B050CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0011B050}
				, {ECK0011B050CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_3}
				, {ECK0011B050CBSMsg.KEY_SYSID, sysId}
		};
		
		CAANMsg eck0011b050Msg = callSC(handle, scCall, param, dataMapKey, eck0011b050In);
		
		CAANMsg[] eck0011b050MsgList = eck0011b050Msg.getCAANMsgList(ECK0011B050CBSMsg.ECK0011B050CBSMSG1LIST);
		
		return eck0011b050MsgList;
	}
	// ANK-4686-00-00 ADD END
	
	/**
	 * メール送信情報登録サービスIF実行。メール送信情報登録サービスIFを行う。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param mlad
	 * @throws Exception
	 */
	private void execECC0021D010(SessionHandle handle, 
			ServiceComponentRequestInvoker scCall, 
			IRequestParameterReadWrite param, 
			String fixedText,
			String mlad,
			String custNm,
			String completionDateTime,
			String payCourseCd,
			String mail_cd,
			String satelliteContract) throws Exception {
		
		CAANMsg childTemplateECC0021D010List1 = new CAANMsg(ECC0021D010CBSMsg1List.class.getName());
		CAANMsg childTemplateECC0021D010List2_1 = new CAANMsg(ECC0021D010CBSMsg2List.class.getName());
		CAANMsg childTemplateECC0021D010List2_2 = new CAANMsg(ECC0021D010CBSMsg2List.class.getName());
		CAANMsg childTemplateECC0021D010List2_3 = new CAANMsg(ECC0021D010CBSMsg2List.class.getName());
		CAANMsg childTemplateECC0021D010List2_4 = new CAANMsg(ECC0021D010CBSMsg2List.class.getName());
		
		childTemplateECC0021D010List1.set(ECC0021D010CBSMsg1List.MLAD,mlad);
		childTemplateECC0021D010List1.set(ECC0021D010CBSMsg1List.MLAD_SET_FIELD_CD, "01");
		childTemplateECC0021D010List2_1.set(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI, custNm);
		childTemplateECC0021D010List2_2.set(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI, completionDateTime);
		
		String addMemo="";
		if (!JKKStringUtil.isNullBlank(satelliteContract))
		{
			addMemo += "\r\n　■NHK衛星契約";
		}
		childTemplateECC0021D010List2_3.set(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI, addMemo);
		childTemplateECC0021D010List2_4.set(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI, payCourseCd);
		
		// メール本文登録の上りマッピング
		Object[][] ecc0021d010 =
		{
			{ECC0021D010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECC0021D010},
			{ECC0021D010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
			{ECC0021D010CBSMsg.MAIL_CD, mail_cd},
			{ECC0021D010CBSMsg.MAIL_SEND_PATTERN_CD, "01"},
			{ECC0021D010CBSMsg.SENDM_MLAD, EMPTY},
			{ECC0021D010CBSMsg.ECC0021D010CBSMSG1LIST, new CAANMsg[] { childTemplateECC0021D010List1 }},
			{ECC0021D010CBSMsg.ECC0021D010CBSMSG2LIST, new CAANMsg[] { childTemplateECC0021D010List2_1, childTemplateECC0021D010List2_2, childTemplateECC0021D010List2_3, childTemplateECC0021D010List2_4}},
			{ECC0021D010CBSMsg.ECC0021D010CBSMSG3LIST, new CAANMsg[] {}},
			{ECC0021D010CBSMsg.ECC0021D010CBSMSG4LIST, new CAANMsg[] {}},
			{ECC0021D010CBSMsg.ECC0021D010CBSMSG5LIST, new CAANMsg[] {}}
		};
		
		// サービスIF実行
		callSC(handle, scCall, param, fixedText, ecc0021d010);
	}
	
	// 進捗登録を行う。
	
	/**
	 * 進捗登録を行う。
	 */
	private void execEKK1091D010(SessionHandle handle,
									IRequestParameterReadWrite param,
									String fixedText,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap,
									String mskmDtlNo,
									String svcKeiNo,
									String seikyKeiNo
	) throws Throwable
	{

		// 異動理由明細の枠を作成
		CAANMsg[] eKK1091D010CBSMSG1LIST = null;
		CAANMsg  eKK1091D010CBSMSG1 = new CAANMsg(EKK1091D010CBSMsg1List.class.getName());
		eKK1091D010CBSMSG1.set(EKK1091D010CBSMsg1List.IDO_RSN_CD, "56");
		eKK1091D010CBSMSG1.setNull(EKK1091D010CBSMsg1List.IDO_RSN_MEMO);
		eKK1091D010CBSMSG1LIST = new CAANMsg[]
		{
				eKK1091D010CBSMSG1
		};
		
		Object[][] ekk1091d010In =
		{
				{EKK1091D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1091D010},
				{EKK1091D010CBSMsg.FUNC_CODE, "1"},
				{EKK1091D010CBSMsg.MSKM_DTL_NO, mskmDtlNo},
				{EKK1091D010CBSMsg.SVC_KEI_NO, svcKeiNo},
				{EKK1091D010CBSMsg.SEIKY_KEI_NO, seikyKeiNo},
				{EKK1091D010CBSMsg.IDO_DIV, JKKStrConst.CD00576_SEIKY_INFO_CHG},
// ANK-4686-00-00 IT2障害No.20対応 20250612 星野 MOD START
//				{EKK1091D010CBSMsg.IDO_DTM, JCCBPCommon.getOpeDateTimeStamp(null)},
				{EKK1091D010CBSMsg.IDO_DTM, JCCBPCommon.getSysDateTimeStamp()},
// ANK-4686-00-00 IT2障害No.20対応 20250612 星野 MOD END
				{EKK1091D010CBSMsg.PRG_STAT, JKKStrConst.CD00647_SEIKY_SK_CHG_FIN},
				{EKK1091D010CBSMsg.PRG_MEMO, ""},
				{EKK1091D010CBSMsg.PRG_TKJK_1, "NHK団体一括支払追加（マイページ申込分）　加入者コード" + (String)dataMap.get("EKK0441A010_nhk_out_rnki_kei_cd")},
				{EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST, eKK1091D010CBSMSG1LIST},
		};

		callSC(handle, scCall, param, fixedText, ekk1091d010In);
	}
	
	/**
	 * 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 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
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param) 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));

		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;
	}
	// ANK-4686-00-00 MOD START
//	/**
//	 * メールアドレス取得
//	 * @param handle セッションハンドル
//	 * @param scCall SC呼出
//	 * @param param パラメーター
//	 * @param dataMapKey データマップキー
//	 * @param sysId SYSID
//	 * @param baseDtm 基準年月日時分秒
//	 * @return メールアドレス
//	 * @throws Throwable
//	 */
//	private String getMlad(
//		SessionHandle handle,
//		ServiceComponentRequestInvoker scCall,
//		IRequestParameterReadWrite param,
//		String dataMapKey,
//		String sysId,
//		String baseDtm
//	) throws Throwable
//	{
//		String retMlad = null;
//		
//		// 連絡先(コンテンツ用メールアドレス)一覧照会を呼び出す。
//		CAANMsg[] eck0201b002MsgList = execECK0201B002(handle, scCall, param, dataMapKey, sysId);
//		if (eck0201b002MsgList == null || eck0201b002MsgList.length == 0)
//		{
//			return retMlad;
//		}
//		
//		// メールアドレスリスト
//		List<String> mladList = new ArrayList<String>();
//		for (int i = eck0201b002MsgList.length - 1; i >= 0; i--){
//			CAANMsg msg = eck0201b002MsgList[i];
//			String mlad = msg.getString(ECK0201B002CBSMsg1List.MLAD);
//			if (!JKKStringUtil.isNullBlank(mlad))
//			{
//				if (!mladList.contains(mlad))
//				{
//					mladList.add(mlad);
//				}
//			}
//		}
//		if (mladList.isEmpty())
//		{
//			return retMlad;
//		}
//		
//		// 連絡先履歴一覧照会(SYSID)を呼び出す。
//		CAANMsg[] eck0201b004MsgList = execECK0201B004(handle, scCall, param, dataMapKey, sysId, baseDtm);
//		if (eck0201b004MsgList == null || eck0201b004MsgList.length == 0)
//		{
//			retMlad = mladList.get(0);
//		}
//		else
//		{
//			for (String mlad : mladList)
//			{
//				boolean isMladTemp = false;
//				for (CAANMsg eck0201b004Msg : eck0201b002MsgList)
//				{
//					String tempMlad = eck0201b004Msg.getString(ECK0201B004CBSMsg1List.MLAD);
//					if (mlad.equals(tempMlad))
//					{
//						isMladTemp = true;
//						break;
//					}
//				}
//				if (!isMladTemp)
//				{
//					retMlad = mlad;
//				}
//			}
//		}
//		
//		return retMlad;
//	}
	/**
	 * 連絡先メールアドレスを取得する
	 * 
	 * @param eck0011b050List
	 * @return
	 * @throws Exception
	 */
	private String getMlad(CAANMsg[] eck0011b050List) throws Exception
	{
		CAANMsg custInfo = eck0011b050List[0];
		
		// メールアドレスが設定されている且つ、メールアドレスと変更手続中メールアドレスが一致している場合
		if (custInfo.getString(ECK0011B050CBSMsg1List.MLAD) != null 
				&& custInfo.getString(ECK0011B050CBSMsg1List.MLAD).equals(custInfo.getString(ECK0011B050CBSMsg1List.CHGECHU_MLAD)))
		{
			return null;
		}
		
		return custInfo.getString(ECK0011B050CBSMsg1List.MLAD);
	}
	// ANK-4686-00-00 MOD END
	
	/**
	 * IFの戻り値を判定し、結果が異常の場合、SCCallExceptionを発生させます。
	 * @param result CAANMsgクラス
	 * @param cnt CAANMsgの対象位置
	 * @throws Exception
	 */
	private void jdgErrRslt(Map<?, ?> result, int cnt) throws Exception
	{
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[cnt];

		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		Integer status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		Integer zero = 0;

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(rtnCode) && zero.equals(status)))
		{
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode, status);
			throw scCallEx;
		}
	}

	/**
	 * Mapにエラーデータを格納します。
	 * @param inMap データ格納Map
	 * @param template CAANMsgクラス
	 * @param mapKey 取得と格納するキー
	 */
	private void setErrDataMap(Map<String, Object> inMap, CAANMsg template, String mapKey)
	{
		if(!template.isNull(mapKey))
		{
			if(!inMap.containsKey(mapKey))
			{
				inMap.put(mapKey, template.getString(mapKey));
			}
		}
	}
	
	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @param inListMsgName
	 * @param inList
	 * @return メッセージキャリア
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSCArray(SessionHandle handle, 
							ServiceComponentRequestInvoker scCall, 
							IRequestParameterReadWrite param, 
							String dataMapKey,
							Object[][] mappingData,
							String inListMsgName, 
							ArrayList<HashMap<String, Object>> inList) throws Exception
	{
		HashMap<String, Object> paramMap = editInArrayMsg(param, mappingData, inListMsgName, inList);
		
		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);
		
		editErrorInfoComArray(param, templates, (Integer)return_code, dataMapKey, mappingData, inListMsgName, inList);
		
		//エラー情報のマップを取得
		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 param
	 * @param mappingData
	 * @param inListMsgName
	 * @param inList
	 * @return HashMap
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editInArrayMsg(IRequestParameterReadWrite param,
													Object[][] mappingData, 
													String inListMsgName, 
													ArrayList<HashMap<String, Object>> inList) 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++)
		{
			if ("".equals(mappingData[i][1]))
			{
				template.setNull((String)mappingData[i][0]);
			}
			else
			{
				template.set((String)mappingData[i][0], mappingData[i][1]);
			}
		}
		
		CAANMsg[] templateArray = template.getCAANMsgList(inListMsgName);
		
		if(templateArray == null)
		{
			templateArray = new CAANMsg[inList.size()];
		}
		
		for (int i = 0; i < inList.size(); i++)
		{
			HashMap childMap = (HashMap)inList.get(i);
			CAANMsg childTemplate = templateArray[i];
			if(childTemplate == null)
			{
				childTemplate = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg1List", svcIf));
			}
			
			Iterator it = childMap.keySet().iterator();
			while (it.hasNext())
			{
				String key = (String)it.next();
				
				if ("".equals(childMap.get(key)))
				{
					childTemplate.setNull(key);
				}
				else
				{
					childTemplate.set(key, (String)childMap.get(key));
				}
			}

			templateArray[i] = childTemplate;
		}
		
		template.set(inListMsgName, templateArray);
		
		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
	 * @param inListMsgName
	 * @param inList
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoComArray(IRequestParameterReadWrite param,
														CAANMsg[] templates, 
														int returnCode,
														String dataMapKey,
														Object[][] mappingData,
														String inListMsgName, 
														ArrayList<HashMap<String, Object>> inList) throws RequestParameterException
	{
		// 本来はサービスインターフェイス分の処理が必要
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if (returnCode != 0)
		{
			templateStatus = 9000;
		}

		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap<String, String> inMap = (HashMap<String, String>)param.getData(dataMapKey);
		
		CAANMsg[] templateArray = template.getCAANMsgList(inListMsgName);
		
		for (int i = 0; i < inList.size(); i++)
		{
			HashMap childMap = (HashMap)inList.get(i);
			CAANMsg childTemplate = templateArray[i];
			
			Iterator it = childMap.keySet().iterator();
			while (it.hasNext())
			{
				String key = (String)it.next();
				
				if (!childTemplate.isNull(key + "_err"))
				{
					if (!inMap.containsKey(key + "_err"))
					{
						inMap.put(key + "_err", childTemplate.getString(key + "_err"));
					}
				}
			}
		}
		
		if(!template.isNull(inListMsgName + "_err"))
		{
			if(!inMap.containsKey(inListMsgName + "_err"))
			{
				inMap.put(inListMsgName + "_err", template.getString(inListMsgName + "_err"));
			}
		}

		return param;
	}
	
	/**
	 * パラメタがNullの場合空白を返却します。
	 * @param str 文字列
	 * @return str
	 */
	private String getNullToStr(String str)
	{
		if (str == null || "".equals(str.trim()))
		{
			return "";
		}
		return str;
	}
	
// ANK-4686-00-00 IT2障害No.19対応 20250612 星野 DEL START
//	/**
//	 * コード名称管理一意照会を行う。
//	 * 
//	 * @param handle セッションハンドル
//	 * @param scCall SC呼出部品のインスタンス
//	 * @param param リクエストパラメータ
//	 * @param dataMapKey データマップキー
//	 * @param crsChoiceCd コース選択コード
//	 * @return resultMap コード名称管理一意照会結果
//	 * @throws Exception SC実行時の例外
//	 */
//	private CAANMsg getEZM0171A010(
//			SessionHandle handle, 
//			ServiceComponentRequestInvoker scCall,
//			IRequestParameterReadWrite param, 
//			String dataMapKey,
//			String crsChoiceCd) throws Exception
//	{
//		// コード名称管理一意照会結果
//		CAANMsg resultMap = null;
//		
//		// 上りマッピング
//		Object[][] ezm0171a010In = {
//				{EZM0171A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0171A010},
//				{EZM0171A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
//				{EZM0171A010CBSMsg.KEY_CD_SBT_CD, "CD00675"},
//				{EZM0171A010CBSMsg.KEY_CD_DIV, crsChoiceCd}
//		};
//
//		// サービスI/F実行
//		CAANMsg ezm0171a010Msg = callSC(handle, scCall, param, dataMapKey, ezm0171a010In);
//		
//		// 処理結果
//		CAANMsg[] ezm0171a010MsgList = ezm0171a010Msg.getCAANMsgList(EZM0171A010CBSMsg.EZM0171A010CBSMSG1LIST);
//
//		if (ezm0171a010MsgList != null && 0 < ezm0171a010MsgList.length)
//		{
//			resultMap = ezm0171a010MsgList[0];
//		}
//		
//		return resultMap;
//	}
// ANK-4686-00-00 IT2障害No.19対応 20250612 星野 DEL END
	
	/**
	 * 請求オプション一意照会を取得します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param scCall 
	 * @param dataMap リクエストデータ
	 * @throws Exception 
	 */
	private void execEKK0441A010(SessionHandle handle,
									IRequestParameterReadWrite param,
									ServiceComponentRequestInvoker scCall,
									Map<String, Object> dataMap,
									HashMap<String, Object> childMap,
									String fixedText,
									String opeDate) throws Exception
	{
		
		// 請求オプション契約一意照会
		Object[][] ekk0441A010In = {{EKK0441A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0441A010},
									{EKK0441A010CBSMsg.FUNC_CODE, "2"},
									{EKK0441A010CBSMsg.KEY_SEIOPSVC_KEI_NO, (String)childMap.get("EKK0441D020_seiopsvc_kei_no")},
									{EKK0441A010CBSMsg.KEY_RSV_APLY_YMD, opeDate}};
		CAANMsg[]  ekk0441a010Out = callSC(handle, scCall, param, fixedText, ekk0441A010In).getCAANMsgList(EKK0441A010CBSMsg.EKK0441A010CBSMSG1LIST);;
		if (ekk0441a010Out != null && ekk0441a010Out.length > 0)
		{
			// 請求オプションサービス契約ステータス
			dataMap.put("EKK0441A010_seiopsvc_kei_stat", getNullToStr(ekk0441a010Out[0].getString(EKK0441A010CBSMsg1List.SEIOPSVC_KEI_STAT)));
			// 請求契約最終更新日
			dataMap.put("EKK0441A010_seikyu_upd_dtm", getNullToStr(ekk0441a010Out[0].getString(EKK0441A010CBSMsg1List.LAST_UPD_DTM)));
			// NHK外部連携契約コード
			dataMap.put("EKK0441A010_nhk_out_rnki_kei_cd", getNullToStr(ekk0441a010Out[0].getString(EKK0441A010CBSMsg1List.NHK_OUT_RNKI_KEI_CD)));
			// SYSID
			dataMap.put("EKK0441A010_sysid", getNullToStr(ekk0441a010Out[0].getString(EKK0441A010CBSMsg1List.SYSID)));
			
		}
	}
	
	/**
	 * 業務パラメータ管理一意照会を行う。
	 * @param handle セッションハンドル
	 * @param param パラメーター
	 * @param fixedText ユーザ定義文字列
	 * @param workParamId 業務パラメータID
	 * @return 業務パラメータ設定値
	 * @throws Exception
	 */
	private ArrayList<String> getWorkParamSetteValue(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String workParamId)
	throws Exception
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// 戻り値
		ArrayList<String> htgaiPcrsTpnList = new ArrayList<String>();
		
		// 業務パラメータ管理一意照会サービスI/Fの上りマッピング
		Object[][] ezm0321b010In = {
				{EZM0321B010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0321B010},
				{EZM0321B010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
				{EZM0321B010CBSMsg.KEY_WORK_PARAM_ID, workParamId}
		};
		
		// サービスI/F実行
		CAANMsg[] ezm0321b010MsgList = callSC(handle, scCall, param, fixedText, ezm0321b010In).getCAANMsgList(EZM0321B010CBSMsg.EZM0321B010CBSMSG1LIST);
		
		if (ezm0321b010MsgList != null && ezm0321b010MsgList.length > 0)
		{
			for(int i=0; i < ezm0321b010MsgList.length; i++)
			{
				// 業務パラメータ設定値
				htgaiPcrsTpnList.add(getNullToStr(ezm0321b010MsgList[i].getString(EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE)));
			}
		}
		
		return htgaiPcrsTpnList;
	}
	
	// ANK-4686-00-00 ADD START
	/**
	 * yyyyMMddHHmm形式からyyyy年M月d日H時m分形式に変換
	 * @param dateString 変換前文字列
	 * @return
	 */
	private String convertDateString(String dateString) throws ParseException
	{
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
		Date ret = null;

		ret = sdf.parse(dateString);		
		sdf.applyPattern("yyyy年M月d日H時m分");
		return sdf.format(ret);
	}
	// ANK-4686-00-00 ADD END
}
