/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKFindVhMskmDtlCC
*	ソースファイル名：JKKFindVhMskmDtlCC.java
*	作成者			：FJ)柳
*	日付			：2017年04月03日
*＜機能概要＞
*	訪販申込詳細照会の共通コンポーネントクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v29.00.00	2017/04/03	FJ)柳		【ANK-3158-00-00】訪販申込情報の検索・取得API作成
*	v29.01.00	2017/04/26	FJ)柳		【ANK-3158-01-00】訪販申込情報の検索・取得API作成【案件内仕変1:訪販申込情報詳細照会のパラメータ名変更】
*	v33.00.00	2017/06/05	FJ)舘山		【ANK-3214-00-00】訪販申込情報詳細取得ＡＰＩの改修　〜その@〜
*	v33.01.00	2017/10/18	FJ)舘山		【ANK-3307-00-00】訪販申込情報閲覧システム向けAPIへの工事進捗・キャンセル状況取得機能追加
*   v33.01.01	2017/11/06	FJ)舘山		【IT1-2017-0000136】文書登録時にお客様カナ名が表示されない
*   v48.00.00	2020/03/03	FJ)吉田		【OM-2020-0000202】訪販閲覧システムで出力する特記事項が申込断面のデータになっている
*	v53.00.00	2021/05/13	FJ)永井	    【ANK-4046-00-00】訪販申込情報閲覧システム向けAPIへの検索条件・連携項目追加対応
*	v54.00.00	2021/08/23	FJ)永井		【ANK-4044-01-00】訪販申込情報閲覧システムへのテレビ再送信契約情報連携
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
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.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.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKCommonUtil;
import eo.common.util.JKKStringUtil;
import eo.common.util.JZMAdOutputEdit;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021B012CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021B012CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021B015CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021B015CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0041A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0041A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0051B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0051B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B042CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B042CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0861B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0861B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg1List;

/**
 * 訪販申込詳細照会の共通コンポーネントクラスです。
 * <BR>
 * @author FJ
 */
public class JKKFindVhMskmDtlCC extends AbstractCommonComponent
{
	/** テンプレートID　訪販申込詳細一覧照会 */
	private static final String TEMPLATE_ID_EKK0021B012 = "EKK0021B012";
	
	/** テンプレートID　工事案件一意照会 */
	private static final String TEMPLATE_ID_EKU0011A010 = "EKU0011A010";
	
	/** テンプレートID　アンケート回答一覧照会 */
	private static final String TEMPLATE_ID_EKK0051B001 = "EKK0051B001";
	
	/** テンプレートID　アンケートコード一意照会 */
	private static final String TEMPLATE_ID_EKK0041A010 = "EKK0041A010";
	
	/** テンプレートID　マンション物件一覧照会（複合検索） */
	private static final String TEMPLATE_ID_EKK0861B001 = "EKK0861B001";
// ANK-4046-00-00 ADD START
	/** テンプレートID　機器提供サービス契約一覧照会（申込書番号） */
	private static final String TEMPLATE_ID_EKK0341B042 = "EKK0341B042";
	
	/** テンプレートID　申込明細一覧照会（受付種別名） */
	private static final String TEMPLATE_ID_EKK0021B015 = "EKK0021B015";
// ANK-4046-00-00 ADD END
	
	/** アンケート番号　Ｑ１ 【単一選択】現在ご利用のインターネット回線 */
	private static final String ENQUETE_NO_10001013 = "10001013";
	
	/** 機能コード　1：照会 */
	private static final String FUNC_CODE_1 = "1";
	
// ▼▼▼ ANK-3214-00-00 Add START
	/** テンプレートID　お客様一意照会 */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";
// △△△ ANK-3214-00-00 Add END
	
// ▼▼▼ ANK-3307-00-00 ADD START
	/** サービス契約回線内訳一意照会 */
	private static final String TEMPLATE_ID_EKK0251A010 = "EKK0251A010";
	
	/** 申込キャンセル除外承認申請年月日(ネット) */
	private static final String CNCL_JGI_SNN_SIN_NET = "mskm_cncl_jgi_snn_shin_ymd_net";
	/** 申込キャンセル除外承認年月日(ネット) */
	private static final String CNCL_JGI_SNN_NET = "mskm_cncl_jgi_snn_ymd_net";
	/** 申込キャンセル除外否認年月日(ネット) */
	private static final String CNCL_JGI_HNN_NET = "mskm_cncl_jgi_hnn_ymd_net";
	
	/** 申込キャンセル除外承認申請年月日(電話) */
	private static final String CNCL_JGI_SNN_SIN_TEL = "mskm_cncl_jgi_snn_shin_ymd_tel";
	/** 申込キャンセル除外承認年月日(電話) */
	private static final String CNCL_JGI_SNN_TEL = "mskm_cncl_jgi_snn_ymd_tel";
	/** 申込キャンセル除外否認年月日(電話) */
	private static final String CNCL_JGI_HNN_TEL = "mskm_cncl_jgi_hnn_ymd_tel";
	
	/** 申込キャンセル除外承認申請年月日(ＴＶ) */
	private static final String CNCL_JGI_SNN_SIN_TV = "mskm_cncl_jgi_snn_shin_ymd_tv";
	/** 申込キャンセル除外承認年月日(ＴＶ) */
	private static final String CNCL_JGI_SNN_TV = "mskm_cncl_jgi_snn_ymd_tv";
	/** 申込キャンセル除外否認年月日(ＴＶ) */
	private static final String CNCL_JGI_HNN_TV = "mskm_cncl_jgi_hnn_ymd_tv";
	
	/** 申込キャンセル除外承認申請年月日(eo電気) */
	private static final String CNCL_JGI_SNN_SIN_EOELEC = "mskm_cncl_jgi_snn_shin_ymd_eoelec";
	/** 申込キャンセル除外承認年月日(eo電気) */
	private static final String CNCL_JGI_SNN_EOELEC = "mskm_cncl_jgi_snn_ymd_eoelec";
	/** 申込キャンセル除外否認年月日(eo電気) */
	private static final String CNCL_JGI_HNN_EOELEC = "mskm_cncl_jgi_hnn_ymd_eoelec";
	
	/** 申込キャンセル除外承認申請年月日(mineo) */
	private static final String CNCL_JGI_SNN_SIN_MINEO = "mskm_cncl_jgi_snn_shin_ymd_mineo";
	/** 申込キャンセル除外承認年月日(mineo) */
	private static final String CNCL_JGI_SNN_MINEO = "mskm_cncl_jgi_snn_ymd_mineo";
	/** 申込キャンセル除外否認年月日(mineo) */
	private static final String CNCL_JGI_HNN_MINEO = "mskm_cncl_jgi_hnn_ymd_mineo";
	
	/** eo電気受付番号 */
	private static final String EOELEC_UKE_NO = "eoelec_uke_no";
	
	/** 利用場所郵便番号 */
	private static final String USE_PLACE_PCD = "use_place_pcd";
	/** 利用場所住所名 */
	private static final String USE_PLACE_AD_NM = "use_place_ad_nm";

	/** キャンセル分類１(IP) */
	private static final String CNCL_BNRUI1_IP = "cncl_bnrui1_ip";
	/** キャンセル分類２(IP) */
	private static final String CNCL_BNRUI2_IP = "cncl_bnrui2_ip";
	/** 申込番号(IP) */	
	private static final String KOJIAK_NO_IP = "kojiak_no_ip";
	/** キャンセル分類１(TV) */
	private static final String CNCL_BNRUI1_TV = "cncl_bnrui1_tv";
	/** キャンセル分類２(TV) */
	private static final String CNCL_BNRUI2_TV = "cncl_bnrui2_tv";
	/** 申込番号(TV) */
	private static final String KOJIAK_NO_TV = "kojiak_no_tv";

// △△△ ANK-3307-00-00 ADD END
// ANK-4046-00-00 ADD START
//	/** 受付日 */
	private static final String UK_YMD = "uk_ymd";
//	/** 受付種別名 */
	private static final String UK_SBT_NM = "uk_sbt_nm";
//	/** SYSID */
	private static final String SYSID = "sysid";
//	/** お客さまID(ネット) */
	private static final String SVC_KEI_NO_NET = "svc_kei_no_net";
//	/** お客さまID(電話) */
	private static final String SVC_KEI_NO_TEL = "svc_kei_no_tel";
//	/** お客さまID(テレビ) */
	private static final String SVC_KEI_NO_TV = "svc_kei_no_tv";
//	/** お客さまID(電気) */
	private static final String SVC_KEI_NO_EDEN = "svc_kei_no_eden";
//	/** お客さまID(mineo) */
	private static final String SVC_KEI_NO_MINEO = "svc_kei_no_mineo";
//	/** VDSL(料金プラン) */
	private static final String PPLAN_CD_VDSL = "pplan_cd_vdsl";
//	/** サンキューレター送付日 */
	private static final String KANUORE_SOHU_YMD = "kanuore_sohu_ymd";
// ANK-4046-00-00 ADD END
// ANK-4044-01-00 ADD START
//	/** 料金コース名(テレビ再送信) */
	private static final String PCRS_NM_TVSAISS = "pcrs_nm_tvsaiss";
// ANK-4044-01-00 ADD END
// OM-2020-0000202 ADD START
	/** 工事案件連絡事項取得フラグ */
	private static final String KOJIAK_RRK_JIKO_GET_FLG = "kojiak_rrk_jiko_get_flg";
	/** 工事案件連絡事項 */
	private static final String KOJIAK_RRK_JIKO = "kojiak_rrk_jiko";
// OM-2020-0000202 ADD END
	/**
	 * 訪販申込詳細を照会します。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return IRequestParameterReadWrite
	 * @throws Throwable 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite exeFindVhMskmDtl(SessionHandle handle,
			IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		/** パラメータ取得 */
		// 訪販申込詳細照会CCマップの取得
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		if (null == ccMsg)
		{
			ccMsg = new HashMap<String, Object>();
			param.setData(fixedText, ccMsg);
		}
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// 訪販申込詳細リストを作成
		List<Map<String, Object>> vhMskmDtlList = new ArrayList<Map<String, Object>>();
		
		// 訪販申込詳細を作成
		Map<String, Object> vhMskmDtl = new HashMap<String, Object>();
		
		// 初期値を設定
		vhMskmDtl.put("mskm_dt", "");						// 申込日
		vhMskmDtl.put("mansion_nm", "");					// マンション名
		vhMskmDtl.put("bf_use_kaisen", "");					// 前利用回線
// ANK-3158-01-00 2017/04/26 MOD START
//		vhMskmDtl.put("net_cancel_um", "");					// ネットキャンセル有無
		vhMskmDtl.put("net_cancel_ymd", "");				// ネットキャンセル年月日
// ANK-3158-01-00 2017/04/26 MOD END
		vhMskmDtl.put("net_cancel_rsn", "");				// ネットキャンセル理由
// ANK-3158-01-00 2017/04/26 MOD START
//		vhMskmDtl.put("tel_cancel_um", "");					// 電話キャンセル有無
		vhMskmDtl.put("tel_cancel_ymd", "");				// 電話キャンセル年月日
// ANK-3158-01-00 2017/04/26 MOD END
		vhMskmDtl.put("tel_cancel_rsn", "");				// 電話キャンセル理由
// ANK-3158-01-00 2017/04/26 MOD START
//		vhMskmDtl.put("tv_cancel_um", "");					// テレビキャンセル有無
		vhMskmDtl.put("tv_cancel_ymd", "");					// ネットキャンセル年月日
// ANK-3158-01-00 2017/04/26 MOD END
		vhMskmDtl.put("tv_cancel_rsn", "");					// テレビキャンセル理由
		vhMskmDtl.put("takcho_day_ip", "");					// 宅内調査日(IP)
		vhMskmDtl.put("house_work_plan_date_ip", "");		// 宅内工事予定日(IP)
		vhMskmDtl.put("house_work_date_ip", "");			// 宅内工事日(IP)
		vhMskmDtl.put("kiki_shipment_date", "");			// 機器出荷日
		vhMskmDtl.put("open_kibo_day", "");					// 開通希望日
		vhMskmDtl.put("svc_staymd_ip", "");					// サービス開始日(IP)
		vhMskmDtl.put("takcho_day_tv", "");					// 宅内調査日(TV)
		vhMskmDtl.put("house_work_plan_date_tv", "");		// 宅内工事予定日(TV)
		vhMskmDtl.put("house_work_date_tv", "");			// 宅内工事日(TV)
		vhMskmDtl.put("svc_staymd_tv", "");					// サービス開始日(TV)
		vhMskmDtl.put("thnx_call_jssi_ymd", "");			// サンキューコール実施年月日
		vhMskmDtl.put("mskm_cncl_jgi_snn_shin_ymd", "");	// 申込キャンセル除外承認申請年月日
		vhMskmDtl.put("mskm_cncl_jgi_snn_ymd", "");			// 申込キャンセル除外承認年月日
		vhMskmDtl.put("mskm_cncl_jgi_hnn_ymd", "");			// 申込キャンセル除外否認年月日
// ▼▼▼ ANK-3214-00-00 Add START
		vhMskmDtl.put("eoelec_cancel_ymd", "");				// eo電気キャンセル年月日
		vhMskmDtl.put("mineo_cancel_ymd", "");				// mineoキャンセル年月日
		vhMskmDtl.put("eoelec_mskm_ymd", "");				// eo電気申込年月日
		vhMskmDtl.put("mineo_mskm_ymd", "");				// mineo申込年月日
		vhMskmDtl.put("mskm_dmen_um", "");					// 申込断面有無
// △△△ ANK-3214-00-00 Add END
// ▼▼▼ ANK-3307-00-00 ADD START
		vhMskmDtl.put(CNCL_JGI_SNN_SIN_NET, "");	// 申込キャンセル除外承認申請年月日(ネット)
		vhMskmDtl.put(CNCL_JGI_SNN_NET, "");		// 申込キャンセル除外承認年月日(ネット)
		vhMskmDtl.put(CNCL_JGI_HNN_NET, "");		// 申込キャンセル除外否認年月日(ネット)

		vhMskmDtl.put(CNCL_JGI_SNN_SIN_TEL, "");	// 申込キャンセル除外承認申請年月日(電話)
		vhMskmDtl.put(CNCL_JGI_SNN_TEL, "");		// 申込キャンセル除外承認年月日(電話)
		vhMskmDtl.put(CNCL_JGI_HNN_TEL, "");		// 申込キャンセル除外否認年月日(電話)

		vhMskmDtl.put(CNCL_JGI_SNN_SIN_TV, "");		// 申込キャンセル除外承認申請年月日(ＴＶ)
		vhMskmDtl.put(CNCL_JGI_SNN_TV, "");			// 申込キャンセル除外承認年月日(ＴＶ)
		vhMskmDtl.put(CNCL_JGI_HNN_TV, "");			// 申込キャンセル除外否認年月日(ＴＶ)

		vhMskmDtl.put(CNCL_JGI_SNN_SIN_EOELEC, "");	// 申込キャンセル除外承認申請年月日(eo電気)
		vhMskmDtl.put(CNCL_JGI_SNN_EOELEC, "");		// 申込キャンセル除外承認年月日(eo電気)
		vhMskmDtl.put(CNCL_JGI_HNN_EOELEC, "");		// 申込キャンセル除外否認年月日(eo電気)

		vhMskmDtl.put(CNCL_JGI_SNN_SIN_MINEO, "");	// 申込キャンセル除外承認申請年月日(mineo)
		vhMskmDtl.put(CNCL_JGI_SNN_MINEO, "");		// 申込キャンセル除外承認年月日(mineo)
		vhMskmDtl.put(CNCL_JGI_HNN_MINEO, "");		// 申込キャンセル除外否認年月日(mineo)
		
		vhMskmDtl.put(EOELEC_UKE_NO, "");			// eo電気受付番号

		vhMskmDtl.put(USE_PLACE_PCD, "");			// 利用場所郵便番号
		vhMskmDtl.put(USE_PLACE_AD_NM, "");			// 利用場所住所名

		vhMskmDtl.put(CNCL_BNRUI1_IP, "");			// キャンセル分類１(IP)
		vhMskmDtl.put(CNCL_BNRUI2_IP, "");			// キャンセル分類２(IP)
		vhMskmDtl.put(KOJIAK_NO_IP, "");			// 申込番号(IP) 
		vhMskmDtl.put(CNCL_BNRUI1_TV, "");			// キャンセル分類１(TV)
		vhMskmDtl.put(CNCL_BNRUI2_TV, "");			// キャンセル分類２(TV)
		vhMskmDtl.put(KOJIAK_NO_TV, "");			// 申込番号(TV)
		
// △△△ ANK-3307-00-00 ADD END
// OM-2020-0000202 ADD START
		vhMskmDtl.put(KOJIAK_RRK_JIKO_GET_FLG, "");	// 工事依頼情報連絡事項取得フラグ
		vhMskmDtl.put(KOJIAK_RRK_JIKO, "");			// 工事依頼情報連絡事項
// OM-2020-0000202 ADD END
// ANK-4046-00-00 ADD START
		vhMskmDtl.put(UK_YMD, "");					// 受付日
		vhMskmDtl.put(UK_SBT_NM, "");				// 受付種別名
		vhMskmDtl.put(SVC_KEI_NO_NET, "");			// お客さまID(ネット)
		vhMskmDtl.put(SVC_KEI_NO_TEL, "");			// お客さまID(電話)
		vhMskmDtl.put(SVC_KEI_NO_TV, "");			// お客さまID(テレビ)
		vhMskmDtl.put(SVC_KEI_NO_EDEN, "");			// お客さまID(電気)
		vhMskmDtl.put(SVC_KEI_NO_MINEO, "");		// お客さまID(mineo)
		vhMskmDtl.put(PPLAN_CD_VDSL, "");			// VDSL(料金プラン)
		vhMskmDtl.put(KANUORE_SOHU_YMD, "");		// サンキューレター送付日
// ANK-4046-00-00 ADD END
// ANK-4044-01-00 ADD START
		vhMskmDtl.put(PCRS_NM_TVSAISS, "");		// 料金コース名(テレビ再送信)
// ANK-4044-01-00 ADD END
		// ＫＥＹ＿機能コード
		String keyFuncCode = (String)ccMsg.get("key_func_code");
		// ＫＥＹ＿受付番号
		String keyUkNo = (String)ccMsg.get("key_uk_no");
		
		// ネットの工事案件番号
		String netKojiakNo = "";
		// テレビの工事案件番号
		String tvKojiakNo = "";
		// 申込番号
		String mskmNo = "";
		// マンションID
		String mansionId = "";
		// SYSID
		String sysid = "";
// ▼▼▼ ANK-3214-00-00 Add START
		// 世代登録年月日
		String gene_add_dtm = "";
// △△△ ANK-3214-00-00 Add END
// ▼▼▼ ANK-3307-00-00 ADD START
		// サービス契約回線内訳番号
		String svcKeiKisenUcwkNo = "";
// △△△ ANK-3307-00-00 ADD END
		// 機能コードが1：照会の場合
		if (FUNC_CODE_1.equals(keyFuncCode))
		{
			/** 訪販申込詳細一覧照会 */
			// 訪販申込詳細一覧照会の上りマッピング
			Object[][] ekk0021b012In = {
					{EKK0021B012CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021B012},
					{EKK0021B012CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
					{EKK0021B012CBSMsg.KEY_MSKMSHO_NO, keyUkNo},
					{EKK0021B012CBSMsg.KEY_RSV_APLY_YMD, JPCBPCommon.getOpeDate(null)}};
			
			// サービスIF実行
			CAANMsg[] ekk0021b012Msg1List = callSC(handle, scCall, param, ekk0021b012In,
					fixedText, new EKK0021B012CBSMsg().getContents()).getCAANMsgList(EKK0021B012CBSMsg.EKK0021B012CBSMSG1LIST);
			
			if (ekk0021b012Msg1List != null && 0 < ekk0021b012Msg1List.length)
			{
				HashMap<String, String> mergeMap = new HashMap<String, String>();
				mergeMap.put("net_stat", "");
				mergeMap.put("tel_stat", "");
				mergeMap.put("tv_stat", "");
				
// ANK-4046-00-00 ADD START
				// 受付種別名
				String ukSbtNm = "";
				// VDSL(料金プラン)
				String pplanCdVdsl = "";
				
				/** 申込明細一覧照会（受付種別名） */
				// 申込明細一覧照会（受付種別名）の上りマッピング
				Object[][] ekk0021b015In = {
						{EKK0021B015CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021B015},
						{EKK0021B015CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
						{EKK0021B015CBSMsg.KEY_MSKMSHO_NO, keyUkNo}};
				
				// サービスIF実行
				CAANMsg[] ekk0021b015Msg1List = callSC(handle, scCall, param, ekk0021b015In,
						fixedText, new EKK0021B015CBSMsg().getContents()).getCAANMsgList(EKK0021B015CBSMsg.EKK0021B015CBSMSG1LIST);
				if (ekk0021b015Msg1List != null && 0 < ekk0021b015Msg1List.length)
				{
					ukSbtNm = ekk0021b015Msg1List[0].getString(EKK0021B015CBSMsg1List.UK_SBT_NM);
				}
				
				/** 機器提供サービス契約一覧照会（申込書番号） */
				// 機器提供サービス契約一覧照会（申込書番号）の上りマッピング
				Object[][] ekk0341b042In = {
						{EKK0341B042CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341B042},
						{EKK0341B042CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
						{EKK0341B042CBSMsg.KEY_MSKMSHO_NO, keyUkNo},
						{EKK0341B042CBSMsg.KEY_UNYO_YMD, JPCBPCommon.getOpeDate(null)}};
				
				// サービスIF実行
				CAANMsg[] ekk0341b042Msg1List = callSC(handle, scCall, param, ekk0341b042In,
						fixedText, new EKK0341B042CBSMsg().getContents()).getCAANMsgList(EKK0341B042CBSMsg.EKK0341B042CBSMSG1LIST);
				if (ekk0341b042Msg1List != null && ekk0341b042Msg1List.length > 0)
				{
					pplanCdVdsl = ekk0341b042Msg1List[0].getString(EKK0341B042CBSMsg1List.PPLAN_CD_VDSL);
				}
// ANK-4046-00-00 ADD END
				for (int i = 0; i < ekk0021b012Msg1List.length; i++)
				{
					// ネットの工事案件番号を取得
					netKojiakNo = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.KOJIAK_IP);
					// テレビの工事案件番号を取得
					tvKojiakNo = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.KOJIAK_TV);
					// 申込番号を取得
					mskmNo = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_NO);
					// マンションIDを取得
					mansionId = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MANSION_ID);
					// SYSIDを取得
					sysid = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.SYSID);
					// 配送依頼指定年月日を機器出荷日として訪販申込詳細に追加
					String haisoReqShiteiYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.HAISO_REQ_SHITEI_YMD);
					vhMskmDtl.put("kiki_shipment_date", haisoReqShiteiYmd);
					
					String netMskmYmd = "";
					String telMskmYmd = "";
					String tvMskmYmd = "";
					
// ANK-3158-01-00 2017/04/26 DEL START
//					// マージマップのネットステータスが空の場合、ネットのデータを設定する
//					if (JKKCommonUtil.isNull(mergeMap.get("net_stat")))
//					{
//						// ネットステータスを取得し、ネットキャンセル有無を訪販申込詳細に追加
//						String netStat = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.NET_STAT);
//						// マージマップにネットステータスを設定
//						mergeMap.put("net_stat", netStat);
//						
//						String netCancelRsn = "";
//						
//						if (JKKStrConst.CD00037_CANCEL_ZM.equals(netStat))
//						{
//							vhMskmDtl.put("net_cancel_um", JKKStrConst.CD_DIV_UM_ARI);
//							netCancelRsn = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.NET_CANCEL_RSN);
//						}
//						else if(JKKCommonUtil.isNull(netStat))
//						{
//							// 何もしない
//						}
//						else
//						{
//							vhMskmDtl.put("net_cancel_um", JKKStrConst.CD_DIV_UM_NASHI);
//						}
//						
//						// ネットキャンセル理由を訪販申込詳細に追加
//						vhMskmDtl.put("net_cancel_rsn", netCancelRsn);
//						
//						// ネット開始希望年月日を取得し、開通希望日として訪販申込詳細に追加
//						String netStaKiboYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.NET_STA_KIBO_YMD);
//						vhMskmDtl.put("open_kibo_day", netStaKiboYmd);
//						
//						// ネット申込年月日を取得
//						netMskmYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.NET_MSKM_YMD);
//					}
// ANK-3158-01-00 2017/04/26 DEL END
// ANK-3158-01-00 2017/04/26 ADD START
					// マージマップのネット申込年月日が空の場合、ネットのデータを設定する
					if (JKKCommonUtil.isNull(mergeMap.get("net_mskm_ymd")))
					{
						// ネットキャンセル年月日を取得し、訪販申込詳細に追加
						String netCancelYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.NET_CANCEL_YMD);
						vhMskmDtl.put("net_cancel_ymd", netCancelYmd);
						
						// ネットキャンセル年月日が存在する場合、ネットキャンセル理由を取得し、訪販申込詳細に追加
						if (!JKKCommonUtil.isNull(netCancelYmd))
						{
							String netCancelRsn = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.NET_CANCEL_RSN);
							vhMskmDtl.put("net_cancel_rsn", netCancelRsn);
						}
						
						// ネット開始希望年月日を取得し、開通希望日として訪販申込詳細に追加
						String netStaKiboYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.NET_STA_KIBO_YMD);
						vhMskmDtl.put("open_kibo_day", netStaKiboYmd);
						
						// ネット申込年月日を取得
						netMskmYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.NET_MSKM_YMD);
						// マージマップにネット申込年月日を設定
						mergeMap.put("net_mskm_ymd", netMskmYmd);
					}
// ANK-3158-01-00 2017/04/26 ADD END
// ANK-3158-01-00 2017/04/26 DEL START
//					// マージマップの電話ステータスが空の場合、電話のデータを設定する
//					if (JKKCommonUtil.isNull(mergeMap.get("tel_stat")))
//					{
//						// 電話ステータスを取得し、電話キャンセル有無を訪販申込詳細に追加
//						String telStat = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TEL_STAT);
//						// マージマップに電話ステータスを設定
//						mergeMap.put("tel_stat", telStat);
//						
//						String telCancelRsn = "";
//						
//						if (JKKStrConst.CD00037_CANCEL_ZM.equals(telStat))
//						{
//							vhMskmDtl.put("tel_cancel_um", JKKStrConst.CD_DIV_UM_ARI);
//							telCancelRsn = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TEL_CANCEL_RSN);
//						}
//						else if(JKKCommonUtil.isNull(telStat))
//						{
//							// 何もしない
//						}
//						else
//						{
//							vhMskmDtl.put("tel_cancel_um", JKKStrConst.CD_DIV_UM_NASHI);
//						}
//						
//						// 電話キャンセル理由を訪販申込詳細に追加
//						vhMskmDtl.put("tel_cancel_rsn", telCancelRsn);
//						// 電話申込年月日を取得
//						telMskmYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TEL_MSKM_YMD);
//					}
// ANK-3158-01-00 2017/04/26 DEL END
// ANK-3158-01-00 2017/04/26 ADD START
					// マージマップの電話申込年月日が空の場合、電話のデータを設定する
					if (JKKCommonUtil.isNull(mergeMap.get("tel_mskm_ymd")))
					{
						// 電話キャンセル年月日を取得し、訪販申込詳細に追加
						String telCancelYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TEL_CANCEL_YMD);
						vhMskmDtl.put("tel_cancel_ymd", telCancelYmd);
						
						// 電話キャンセル年月日が存在する場合、電話キャンセル理由を取得し、訪販申込詳細に追加
						if (!JKKCommonUtil.isNull(telCancelYmd))
						{
							String telCancelRsn = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TEL_CANCEL_RSN);
							vhMskmDtl.put("tel_cancel_rsn", telCancelRsn);
						}
						
						// 電話申込年月日を取得
						telMskmYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TEL_MSKM_YMD);
						// マージマップに電話申込年月日を設定
						mergeMap.put("tel_mskm_ymd", telMskmYmd);
					}
// ANK-3158-01-00 2017/04/26 ADD END
// ANK-3158-01-00 2017/04/26 DEL START
//					// マージマップのテレビステータスが空の場合、テレビのデータを設定する
//					if (JKKCommonUtil.isNull(mergeMap.get("tv_stat")))
//					{
//						// テレビステータスを取得し、テレビキャンセル有無を訪販申込詳細に追加
//						String tvStat = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TV_STAT);
//						// マージマップにテレビステータスを設定
//						mergeMap.put("tv_stat", tvStat);
//						
//						String tvCancelRsn = "";
//						
//						if (JKKStrConst.CD00037_CANCEL_ZM.equals(tvStat))
//						{
//							vhMskmDtl.put("tv_cancel_um", JKKStrConst.CD_DIV_UM_ARI);
//							tvCancelRsn = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TV_CANCEL_RSN);
//						}
//						else if(JKKCommonUtil.isNull(tvStat))
//						{
//							// 何もしない
//						}
//						else
//						{
//							vhMskmDtl.put("tv_cancel_um", JKKStrConst.CD_DIV_UM_NASHI);
//						}
//						
//						// テレビキャンセル理由を訪販申込詳細に追加
//						vhMskmDtl.put("tv_cancel_rsn", tvCancelRsn);
//						// テレビ申込年月日を取得
//						tvMskmYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TV_MSKM_YMD);
//					}
// ANK-3158-01-00 2017/04/26 DEL END
// ANK-3158-01-00 2017/04/26 ADD START
					// マージマップのテレビ申込年月日が空の場合、テレビのデータを設定する
					if (JKKCommonUtil.isNull(mergeMap.get("tv_mskm_ymd")))
					{
						// テレビキャンセル年月日を取得し、訪販申込詳細に追加
						String tvCancelYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TV_CANCEL_YMD);
						vhMskmDtl.put("tv_cancel_ymd", tvCancelYmd);
						
						// テレビキャンセル年月日が存在する場合、テレビキャンセル理由を取得し、訪販申込詳細に追加
						if (!JKKCommonUtil.isNull(tvCancelYmd))
						{
							String tvCancelRsn = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TV_CANCEL_RSN);
							vhMskmDtl.put("tv_cancel_rsn", tvCancelRsn);
						}
						
						// テレビ申込年月日を取得
						tvMskmYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.TV_MSKM_YMD);
						// マージマップにテレビ申込年月日を設定
						mergeMap.put("tv_mskm_ymd", tvMskmYmd);
					}
// ANK-3158-01-00 2017/04/26 ADD END
// ▼▼▼ ANK-3214-00-00 Add START
					// eo電気申込年月日を取得し、訪販申込詳細に追加
					String elecMskmYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.EOELEC_MSKM_YMD);
					vhMskmDtl.put("eoelec_mskm_ymd", elecMskmYmd);
					// eo電気キャンセル年月日を取得し、訪販申込詳細に追加
					String elecCancelYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.EOELEC_CANCEL_YMD);
					vhMskmDtl.put("eoelec_cancel_ymd", elecCancelYmd);
					
// ▼▼▼ ANK-3307-00-00 Modify START
//					// mineo申込年月日を取得し、訪販申込詳細に追加
//					String mineoMskmYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MINEO_MSKM_YMD);
//					vhMskmDtl.put("mineo_mskm_ymd", mineoMskmYmd);
//					// mineoキャンセル年月日を取得し、訪販申込詳細に追加
//					String mineoCancelYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MINEO_CANCEL_YMD);
//					vhMskmDtl.put("mineo_cancel_ymd", mineoCancelYmd);

					// MVNO申込年月日を取得し、訪販申込詳細に追加
					String mineoMskmYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MVNO_MSKM_YMD);
					vhMskmDtl.put("mineo_mskm_ymd", mineoMskmYmd);
					// MVNOキャンセル年月日を取得し、訪販申込詳細に追加
					String mineoCancelYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MVNO_CANCEL_YMD);
					vhMskmDtl.put("mineo_cancel_ymd", mineoCancelYmd);
// △△△ ANK-3307-00-00 Modify END
					
					// 申込断面有無を取得し、訪販申込詳細に追加
					String dmneUm = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_DMEN_UM);
					vhMskmDtl.put("mskm_dmen_um", dmneUm);

					// お客様世代登録年月日時分秒を取得
					gene_add_dtm = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.CUST_GENE_ADD_DTM);
// △△△ ANK-3214-00-00 Add END
					// サンキューコール実施年月日を取得し、訪販申込詳細に追加
					String thnxCallJssiYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.THNX_CALL_JSSI_YMD);
					vhMskmDtl.put("thnx_call_jssi_ymd", thnxCallJssiYmd);
// ▼▼▼ ANK-3307-00-00 Modify START
//					// 申込キャンセル除外承認申請年月日を取得し、訪販申込詳細に追加
//					String mskmCnclJgiSnnShinYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_SHIN_YMD);
//					vhMskmDtl.put("mskm_cncl_jgi_snn_shin_ymd", mskmCnclJgiSnnShinYmd);
//					// 申込キャンセル除外承認年月日を取得し、訪販申込詳細に追加
//					String mskmCnclJgiSnnYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_YMD);
//					vhMskmDtl.put("mskm_cncl_jgi_snn_ymd", mskmCnclJgiSnnYmd);
//					// 申込キャンセル除外否認年月日を取得し、訪販申込詳細に追加
//					String mskmCnclJgiHnnYmd = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_HNN_YMD);
//					vhMskmDtl.put("mskm_cncl_jgi_hnn_ymd", mskmCnclJgiHnnYmd);

					// 申込キャンセル除外承認申請年月日（ネット）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_SNN_SIN_NET, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_SHIN_YMD_NET));
					// 申込キャンセル除外承認年月日（ネット）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_SNN_NET, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_YMD_NET));
					// 申込キャンセル除外否認年月日（ネット）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_HNN_NET, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_HNN_YMD_NET));
// △△△ ANK-3307-00-00 Modify END
					
// ▼▼▼ ANK-3307-00-00 ADD START
					// 申込キャンセル除外承認申請年月日（電話）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_SNN_SIN_TEL, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_SHIN_YMD_TEL));
					// 申込キャンセル除外承認年月日（電話）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_SNN_TEL, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_YMD_TEL));
					// 申込キャンセル除外否認年月日（電話）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_HNN_TEL, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_HNN_YMD_TEL));

					// 申込キャンセル除外承認申請年月日（ＴＶ）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_SNN_SIN_TV, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_SHIN_YMD_TV));
					// 申込キャンセル除外承認年月日（ＴＶ）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_SNN_TV, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_YMD_TV));
					// 申込キャンセル除外否認年月日（ＴＶ）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_HNN_TV, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_HNN_YMD_TV));

					// 申込キャンセル除外承認申請年月日（eo電気）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_SNN_SIN_EOELEC, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_SHIN_YMD_EOELEC));
					// 申込キャンセル除外承認年月日（eo電気）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_SNN_EOELEC, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_YMD_EOELEC));
					// 申込キャンセル除外否認年月日（eo電気）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_HNN_EOELEC, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_HNN_YMD_EOELEC));

					// 申込キャンセル除外承認申請年月日（MVNO）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_SNN_SIN_MINEO, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_SHIN_YMD_MVNO));
					// 申込キャンセル除外承認年月日（MVNO）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_SNN_MINEO, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_SNN_YMD_MVNO));
					// 申込キャンセル除外否認年月日（MVNO）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(CNCL_JGI_HNN_MINEO, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKM_CNCL_JGI_HNN_YMD_MVNO));

					// 申込書番号（電気）を取得し、訪販申込詳細に追加
					vhMskmDtl.put(EOELEC_UKE_NO, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.MSKMSHO_NO_EOELEC));

					// サービス契約回線内訳番号
					svcKeiKisenUcwkNo = ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
					
// △△△ ANK-3307-00-00 ADD END
// ANK-4046-00-00 ADD START
					// 受付日を取得し、訪販申込詳細に追加
					vhMskmDtl.put(UK_YMD, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.UK_YMD));
					// 受付種別名を取得し、訪販申込詳細に追加
					vhMskmDtl.put(UK_SBT_NM, ukSbtNm);
					// SYSIDを取得し、訪販申込詳細に追加
					vhMskmDtl.put(SYSID, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.SYSID));
					// お客さまID(ネット)を取得し、訪販申込詳細に追加
					vhMskmDtl.put(SVC_KEI_NO_NET, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.SVC_KEI_NO_NET));
					// お客さまID(電話)を取得し、訪販申込詳細に追加
					vhMskmDtl.put(SVC_KEI_NO_TEL, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.SVC_KEI_NO_TEL));
					// お客さまID(テレビ)を取得し、訪販申込詳細に追加
					vhMskmDtl.put(SVC_KEI_NO_TV, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.SVC_KEI_NO_TV));
					// お客さまID(電気)を取得し、訪販申込詳細に追加
					vhMskmDtl.put(SVC_KEI_NO_EDEN, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.SVC_KEI_NO_EDEN));
					// お客さまID(mineo)を取得し、訪販申込詳細に追加
					vhMskmDtl.put(SVC_KEI_NO_MINEO, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.SVC_KEI_NO_MINEO));
					// VDSL(料金プラン)を取得し、訪販申込詳細に追加
					vhMskmDtl.put(PPLAN_CD_VDSL, pplanCdVdsl);
					// サンキューレター送付日を取得し、訪販申込詳細に追加
					vhMskmDtl.put(KANUORE_SOHU_YMD, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.KANUORE_SOHU_YMD));
// ANK-4046-00-00 ADD END
// ANK-4044-01-00 ADD START
					// 料金コース名(テレビ再送信)を取得し、訪販申込詳細に追加
					vhMskmDtl.put(PCRS_NM_TVSAISS, ekk0021b012Msg1List[i].getString(EKK0021B012CBSMsg1List.PCRS_NM_TVSAISS));
// ANK-4044-01-00 ADD END
					// 申込日の取得
					// ネット申込年月日が存在する場合
					if (!JKKCommonUtil.isNull(netMskmYmd))
					{
						vhMskmDtl.put("mskm_dt", netMskmYmd);
					}
					// ネット申込年月日が存在しない かつ 電話申込年月日が存在する場合
					else if (JKKCommonUtil.isNull(netMskmYmd) && !JKKCommonUtil.isNull(telMskmYmd))
					{
						vhMskmDtl.put("mskm_dt", telMskmYmd);
					}
					// ネット申込年月日、電話申込年月日が存在しない かつ テレビ申込年月日が存在する場合
					else if (JKKCommonUtil.isNull(netMskmYmd) && JKKCommonUtil.isNull(telMskmYmd) &&
							!JKKCommonUtil.isNull(tvMskmYmd))
					{
						vhMskmDtl.put("mskm_dt", tvMskmYmd);
					}
// ▼▼▼ ANK-3214-00-00 Add START
					// ネット・電話・テレビの申込年月日が未設定かつ、eo電気の申込年月日が存在する場合
					else if (!JKKCommonUtil.isNull(elecMskmYmd))
					{
						vhMskmDtl.put("mskm_dt", elecMskmYmd);
					}
					// ネット・電話・テレビ・eo電気の申込年月日が未設定かつ、mineoの申込年月日が存在する場合
					else if (!JKKCommonUtil.isNull(mineoMskmYmd))
					{
						vhMskmDtl.put("mskm_dt", mineoMskmYmd);
					}
// △△△ ANK-3214-00-00 Add END
				}
			}
// ▼▼▼ ANK-3214-00-00 Add START
			// 申込断面が存在しない場合、お客様から名前等を取得する
			if (JKKStrConst.CD_DIV_UM_NASHI.equals(vhMskmDtl.get("mskm_dmen_um")))
			{
				// お客様情報を取得する
				 exeCustomerInfoQuery(handle, param, fixedText, scCall, sysid, gene_add_dtm, vhMskmDtl);
			}
// △△△ ANK-3214-00-00 Add END
			
			// ネットの工事案件番号が存在する場合
			if (!JKKCommonUtil.isNull(netKojiakNo))
			{
// ▼▼▼ ANK-3307-00-00 ADD START
				vhMskmDtl.put(KOJIAK_NO_IP, netKojiakNo);
// △△△ ANK-3307-00-00 ADD END
				exeKojiakUniqueQuery(handle, param, fixedText, scCall, vhMskmDtl, netKojiakNo);
			}
			
			// テレビの工事案件番号が存在する場合
			if (!JKKCommonUtil.isNull(tvKojiakNo))
			{
// ▼▼▼ ANK-3307-00-00 ADD START
				vhMskmDtl.put(KOJIAK_NO_TV, tvKojiakNo);
// △△△ ANK-3307-00-00 ADD END
				exeKojiakUniqueQuery(handle, param, fixedText, scCall, vhMskmDtl, tvKojiakNo);
			}
			
			// 申込書明細番号が存在する かつ SYSIDが存在する場合
			if (!JKKCommonUtil.isNull(mskmNo) && !JKKCommonUtil.isNull(sysid))
			{
				/** アンケート回答一覧照会 */
				// アンケート回答一覧照会の上りマッピング
				Object[][] ekk0051b001In = {
						{EKK0051B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0051B001},
						{EKK0051B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
						{EKK0051B001CBSMsg.KEY_SYSID, sysid},
						{EKK0051B001CBSMsg.KEY_MSKM_NO, mskmNo}};
				
				// サービスIF実行
				CAANMsg[] ekk0051b001Msg1List = callSC(handle, scCall, param, ekk0051b001In,
						fixedText, new EKK0051B001CBSMsg().getContents()).getCAANMsgList(EKK0051B001CBSMsg.EKK0051B001CBSMSG1LIST);
				
				if (ekk0051b001Msg1List != null && 0 < ekk0051b001Msg1List.length)
				{
					for (int i = 0; i < ekk0051b001Msg1List.length; i++)
					{
						// アンケート番号を取得
						String enqueteNo = ekk0051b001Msg1List[i].getString(EKK0051B001CBSMsg1List.ENQUETE_NO);
						// アンケートコードを取得
						String enqueteCd = ekk0051b001Msg1List[i].getString(EKK0051B001CBSMsg1List.ENQUETE_CD);
						
						// アンケート番号が10001013：Ｑ１ 【単一選択】現在ご利用のインターネット回線である場合
						if (ENQUETE_NO_10001013.equals(enqueteNo))
						{
							/** アンケートコード一意照会 */
							// アンケートコード一意照会の上りマッピング
							Object[][] ekk0041a010In = {
									{EKK0041A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0041A010},
									{EKK0041A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
									{EKK0041A010CBSMsg.KEY_ENQUETE_NO, enqueteNo},
									{EKK0041A010CBSMsg.KEY_ENQUETE_CD, enqueteCd}};
							
							// サービスIF実行
							CAANMsg[] ekk0041a010Msg1List = callSC(handle, scCall, param, ekk0041a010In,
									fixedText, new EKK0041A010CBSMsg().getContents()).getCAANMsgList(EKK0041A010CBSMsg.EKK0041A010CBSMSG1LIST);
							
							if (ekk0041a010Msg1List != null && 0 < ekk0041a010Msg1List.length)
							{
								// アンケートコード内容を取得し、前利用回線として訪販申込詳細に追加
								String enqueteCdNaiyo = ekk0041a010Msg1List[0].getString(EKK0041A010CBSMsg1List.ENQUETE_CD_NAIYO);
								vhMskmDtl.put("bf_use_kaisen", enqueteCdNaiyo);
							}
						}
					}
				}
			}
			
			// マンションIDが存在する場合
			if (!JKKCommonUtil.isNull(mansionId))
			{
				/** マンション物件一覧照会（複合検索） */
				// マンション物件一覧照会（複合検索）の上りマッピング
				Object[][] ekk0861b001In = {
						{EKK0861B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0861B001},
						{EKK0861B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
						{EKK0861B001CBSMsg.KEY_MANSION_ID, mansionId},
						{EKK0861B001CBSMsg.DISPLAY_NUM, "1"},
						{EKK0861B001CBSMsg.DISPLAY_PAGE_NUM, "1"}};
				
				// サービスIF実行
				CAANMsg[] ekk0861b001Msg1List = callSC(handle, scCall, param, ekk0861b001In,
						fixedText, new EKK0861B001CBSMsg().getContents()).getCAANMsgList(EKK0861B001CBSMsg.EKK0861B001CBSMSG1LIST);
				
				if (ekk0861b001Msg1List != null && 0 < ekk0861b001Msg1List.length)
				{
					for (int i = 0; i < ekk0861b001Msg1List.length; i++)
					{
						// マンション名を取得し、訪販申込詳細に追加
						String mansionNm = ekk0861b001Msg1List[i].getString(EKK0861B001CBSMsg1List.MANSION_NM);
						vhMskmDtl.put("mansion_nm", mansionNm);
					}
				}
			}
// ▼▼▼ ANK-3307-00-00 ADD START
			// サービス契約回線契約番号が存在する場合
			if (!JKKCommonUtil.isNull(svcKeiKisenUcwkNo))
			{
				// 回線利用場所住所を設定
				exeSvcKeiKaisenUcwkQuery(handle, param, fixedText, scCall,  svcKeiKisenUcwkNo, vhMskmDtl);
			}
// △△△ ANK-3307-00-00 ADD END
			// 訪販申込詳細照会リストに追加
			vhMskmDtlList.add(vhMskmDtl);
		}
		
		// 訪販申込詳細リストを設定
		ccMsg.put("vhMskmDtlList", vhMskmDtlList);
		
		return param;
	}
	
	/**
	 * 工事案件一意照会を行います。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return IRequestParameterReadWrite
	 * @throws Throwable 例外が発生した場合
	 */
	private void exeKojiakUniqueQuery(SessionHandle handle,
			IRequestParameterReadWrite param, String fixedText,
			ServiceComponentRequestInvoker scCall,
			Map<String, Object> vhMskmDtl, String kojiakNo) throws Throwable
	{
		/** 工事案件一意照会 */
		// 工事案件一意照会の上りマッピング
		Object[][] eku0011a010In = {
				{EKU0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0011A010},
				{EKU0011A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1},
				{EKU0011A010CBSMsg.KEY_KOJIAK_NO, kojiakNo}};
		
		// サービスIF実行
		CAANMsg[] eku0011a010Msg1List = callSC(handle, scCall, param, eku0011a010In,
				fixedText, new EKU0011A010CBSMsg().getContents()).getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);
		
		if (eku0011a010Msg1List != null && 0 < eku0011a010Msg1List.length)
		{
			// 宅内調査実施年月日を取得
			String takchoJssiYmd = eku0011a010Msg1List[0].getString(EKU0011A010CBSMsg1List.TAKCHO_JSSI_YMD);
			// 宅内工事完了予定年月日を取得
			String takniKojiFinRsvYmd = eku0011a010Msg1List[0].getString(EKU0011A010CBSMsg1List.TAKNI_KOJI_FIN_RSV_YMD);
			// 工事案件実施年月日を取得
			String kojiakJssiYmd = eku0011a010Msg1List[0].getString(EKU0011A010CBSMsg1List.KOJIAK_JSSI_YMD);
			// 料金グループコードを取得
			String prcGrpCd = eku0011a010Msg1List[0].getString(EKU0011A010CBSMsg1List.PRC_GRP_CD);
// ▼▼▼ ANK-3307-00-00 ADD START
			// 工事案件中止理由名称1 
			String kojiakStpRsn1 = eku0011a010Msg1List[0].getString(EKU0011A010CBSMsg1List.KOJIAK_STP_RSN_NM_1);
			// 工事案件中止理由名称2
			String kojiakStpRsn2 = eku0011a010Msg1List[0].getString(EKU0011A010CBSMsg1List.KOJIAK_STP_RSN_NM_2);
// △△△ ANK-3307-00-00 ADD END
// OM-2020-0000202 ADD START
			// 工事案件連絡事項
			String kojiakRrkJiko = eku0011a010Msg1List[0].getString(EKU0011A010CBSMsg1List.KOJIAK_RRK_JIKO);
// OM-2020-0000202 ADD END
			
			// 料金グループコードが02：ｅｏ光ネットホームタイプ または 03：ｅｏ光ネットメゾンタイプ または
			// 04：ｅｏ光ネットマンションタイプ または 10：ｅｏ光電話の場合
			if (JKKStrConst.CD00133_02.equals(prcGrpCd) || JKKStrConst.CD00133_03.equals(prcGrpCd) ||
					JKKStrConst.CD00133_04.equals(prcGrpCd) || JKKStrConst.CD00133_10.equals(prcGrpCd))
			{
				// 宅内調査実施年月日を宅内調査日(IP)として訪販申込詳細に追加
				vhMskmDtl.put("takcho_day_ip", takchoJssiYmd);
				// 宅内工事完了予定年月日を宅内工事予定日(IP)として訪販申込詳細に追加
				vhMskmDtl.put("house_work_plan_date_ip", takniKojiFinRsvYmd);
				// 工事案件実施年月日を宅内工事日(IP)として訪販申込詳細に追加
				vhMskmDtl.put("house_work_date_ip", kojiakJssiYmd);
				// 工事案件実施年月日をサービス開始日(IP)として訪販申込詳細に追加
				vhMskmDtl.put("svc_staymd_ip", kojiakJssiYmd);
// ▼▼▼ ANK-3307-00-00 ADD START
				// キャンセル分類１(IP)を追加
				vhMskmDtl.put(CNCL_BNRUI1_IP, kojiakStpRsn1);
				// キャンセル分類２(IP)を追加
				vhMskmDtl.put(CNCL_BNRUI2_IP, kojiakStpRsn2);
// △△△ ANK-3307-00-00 ADD END
				// OM-2020-0000202 ADD START
				// 工事案件連絡事項取得フラグが空の場合
				if (JKKStringUtil.isNullEmpty(vhMskmDtl.get(KOJIAK_RRK_JIKO_GET_FLG)))
				{
					// 工事案件連絡事項を訪販申込詳細に追加して工事案件連絡事項取得フラグに1を入れる
					vhMskmDtl.put(KOJIAK_RRK_JIKO_GET_FLG, "1");
					vhMskmDtl.put(KOJIAK_RRK_JIKO, kojiakRrkJiko);
				}
				// OM-2020-0000202 ADD END
			}
			// 料金グループコードが11：ｅｏ光テレビ または
			// 12：ｅｏ光テレビ（ＫＣＮ） または 13：ｅｏ光テレビ（再送信）の場合
			else if (JKKStrConst.CD00133_11.equals(prcGrpCd) || 
					JKKStrConst.CD00133_12.equals(prcGrpCd) || JKKStrConst.CD00133_13.equals(prcGrpCd))
			{
				// 宅内調査実施年月日を宅内調査日(TV)として訪販申込詳細に追加
				vhMskmDtl.put("takcho_day_tv", takchoJssiYmd);
				// 宅内工事完了予定年月日を宅内工事予定日(TV)として訪販申込詳細に追加
				vhMskmDtl.put("house_work_plan_date_tv", takniKojiFinRsvYmd);
				// 工事案件実施年月日を宅内工事日(TV)として訪販申込詳細に追加
				vhMskmDtl.put("house_work_date_tv", kojiakJssiYmd);
				// 工事案件実施年月日をサービス開始日(TV)として訪販申込詳細に追加
				vhMskmDtl.put("svc_staymd_tv", kojiakJssiYmd);
// ▼▼▼ ANK-3307-00-00 ADD START
				// キャンセル分類１(TV)を追加
				vhMskmDtl.put(CNCL_BNRUI1_TV, kojiakStpRsn1);
				// キャンセル分類２(TV)を追加
				vhMskmDtl.put(CNCL_BNRUI2_TV, kojiakStpRsn2);
// △△△ ANK-3307-00-00 ADD END
				// OM-2020-0000202 ADD START
				// 工事案件連絡事項取得フラグが空の場合
				if (JKKStringUtil.isNullEmpty(vhMskmDtl.get(KOJIAK_RRK_JIKO_GET_FLG)))
				{
					// 工事案件連絡事項を訪販申込詳細に追加して工事案件連絡事項取得フラグに1を入れる
					vhMskmDtl.put(KOJIAK_RRK_JIKO_GET_FLG, "1");
					vhMskmDtl.put(KOJIAK_RRK_JIKO, kojiakRrkJiko);
				}
				// OM-2020-0000202 ADD END
			}
		}
	}
	
	/**
	 * チェック処理です。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return HashMap<String, Object>
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		List<CAANMsg> templates = new ArrayList<CAANMsg>();
		
		// チェック用サービスインターフェイス
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, Arrays.asList(templates));
		
		return paramMap;
	}
	
	/**
	 * エラー情報を設定します。
	 * @param param リクエストパラメータ
	 * @param templates CAANMsgクラス
	 * @param returnCode リターンコード
	 * @param fixedText ユーザ定義文字列
	 * @param contents CAANMsgのコンテンツ
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException リクエストパラメータの操作でエラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param,
			CAANMsg[] templates, int returnCode, String fixedText, Object[][] contents) 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 (bpStatus < templateStatus)
		{
			// 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(fixedText);
		
		for (int i = 0; null != contents && i < contents.length ; i++)
		{
			String itemNm = (String)contents[i][0];
			if (itemNm.endsWith("_err"))
			{
				String errCd = (String)template.getString(itemNm);
				if (!JKKStringUtil.isNullBlank(errCd))
				{
					inMap.put(itemNm, errCd);
				}
			}
		}

		return param;
	}
	
	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * @param handle セッションハンドル
	 * @param scCall SC呼び出し部品
	 * @param param リクエストパラメータ
	 * @param mappingData マッピングデータ
	 * @param fixedText ユーザ定義文字列
	 * @param contents CAANMsgのコンテンツ
	 * @return CAANMsg
	 * @throws Throwable 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSC(SessionHandle handle, ServiceComponentRequestInvoker scCall, 
			IRequestParameterReadWrite param, Object[][] mappingData,
			String fixedText, Object[][] contents) throws Throwable
	{
		// 上りマッピング処理
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);
		
		// サービスI/F呼出し実行
		Map<?, ?> result = scCall.run(paramMap, handle);
		
		// SCからの戻り値からCAANMsgを取得
		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];
		
		// リターンコード取得
		Object returnCode = result.get(JCMConstants.RET_CD_INT_KEY);
		// ステータス取得
		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);
		
		// エラー情報の設定
		editErrorInfo(param, templates, (Integer)returnCode, fixedText, contents);
		
		// エラー情報のマップを取得
		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));
		
		// 異常の場合、CCExceptionを生成してスローする
		if(!("0".equals(returnCode.toString()) && 0 == status))
		{
			throw new CCException("サービスコンポーネントエラー", new Exception());
		}
		
		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));
		
		// サービスインターフェイス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[] templates = new CAANMsg[1];
		
		templates[0] = template;
		
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		
		return paramMap;
	}
// ▼▼▼ ANK-3214-00-00 ADD START
	
	/**
	 * お客様一意照会を実行する
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @param scCall SC呼び出し部品
	 * @param outMap 出力マップ
	 */
	private void exeCustomerInfoQuery(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
									   ServiceComponentRequestInvoker scCall, String sysid, String gene_add_dtm, Map<String, Object> outMap) throws Throwable
	{
		// お客様一意照会の上りマッピング
		Object[][] eck0011a010In = {
				{ECK0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECK0011A010},
				{ECK0011A010CBSMsg.FUNC_CODE,  JPCModelConstant.FUNC_CD_1},
				{ECK0011A010CBSMsg.KEY_SYSID,  sysid},
				{ECK0011A010CBSMsg.KEY_GENE_ADD_DTM, gene_add_dtm}};
		
		// サービスIF実行
		CAANMsg[] eck0011a010Msg1List = callSC(handle, scCall, param, eck0011a010In,
				fixedText, new ECK0011A010CBSMsg().getContents()).getCAANMsgList(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST);
		
		ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
		
		HashMap<String, Object> childMap = new HashMap<String, Object>();
		if (eck0011a010Msg1List != null && 0 < eck0011a010Msg1List.length)
		{
			// お客様名
			childMap.put("keisha_cust_nm", eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.CUST_NM));
// ▼▼▼ IT1-2017-0000136 2017-11-06 ADD START
			// お客様名（カナ）
			childMap.put("keisha_cust_kana", eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.CUST_KANA));
// △△△ IT1-2017-0000136 2017-11-06 ADD END
			// 契約者タイプコード
			childMap.put("keisha_type_cd", "1"); // 個人固定
			// 契約者電話番号
			childMap.put("keisha_telno", eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.KEISHA_TELNO));
			// 契約者郵便番号
			childMap.put("keisha_pcd_bf", eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.KEISHA_PCD));
			childMap.put("keisha_pcd_af", "");
			// 契約者住所
			String addr = JZMAdOutputEdit.getPtn02(
									eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.KEISHA_STATE_NM),
									eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.KEISHA_CITY_NM),
									eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.KEISHA_OAZTSU_NM),
									eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.KEISHA_AZCHO_NM),
									eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.KEISHA_BNCHIGO),
									eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.KEISHA_ADRTTM),
									eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.KEISHA_ADRRM));
			childMap.put("keisha_address", addr);
			// 生年月日
			String brthday  = eck0011a010Msg1List[0].getString(ECK0011A010CBSMsg1List.CUST_BIRTHD);
			if (!JKKCommonUtil.isNull(brthday) && brthday.length() >= 8)
			{
				String year = brthday.substring(0, 4);
				String month = brthday.substring(4, 6); // keisha_birthd_m
				String day = brthday.substring(6, 8); // keisha_birthd_d
				// 契約者生年月日（年）和暦
				childMap.put("keisha_birthd_wareki", getWareki(year, month, day));  
				// 契約者生年月日（月）
				childMap.put("keisha_birthd_m", month);  
				// 契約者生年月日（日）
				childMap.put("keisha_birthd_d", day);  
				// 契約者年齢
				childMap.put("keisha_age", getAge(year, month, day, JPCBPCommon.getOpeDate(null))); 
				
			}
			list.add(childMap);
		}
		// お客様情報を登録する
		outMap.put("custInfoList", list);
	}
	
	/**
	 * 和暦変換処理
	 * 
	 * @param year 年
	 * @param month 月
	 * @param day 日
	 * @return 和暦
	 */
	private String getWareki(String year, String month, String day)
	{
		if (JKKCommonUtil.isNull(year) || JKKCommonUtil.isNull(month) || JKKCommonUtil.isNull(day))
		{
			return "";
		}
		Calendar gCal = new GregorianCalendar(Integer.parseInt(year), 
				Integer.parseInt(month) -1, Integer.parseInt(day));
		Locale local = new java.util.Locale("ja", "JP", "JP");
		SimpleDateFormat format = new SimpleDateFormat("(GGGGyyyy年) ", local);
		format.setTimeZone(gCal.getTimeZone());
		String wareki = format.format(gCal.getTime());
		return wareki + year;
	}
	/**
	 * 年齢取得処理.<br>
	 * 
	 * @param year 生年月日（年）
	 * @param month 生年月日（月）
	 * @param day 生年月日（日）
	 * @param targetDate 判定日
	 * @return 年齢
	 */
	private String getAge(String year, String month, String day, String targetDate)
	{
		if (JKKCommonUtil.isNull(year) || JKKCommonUtil.isNull(month) || JKKCommonUtil.isNull(day)
				|| JKKCommonUtil.isNull(targetDate))
		{
			return "";
		}

		// 生年月日
		int intBYear = Integer.parseInt(year, 10);
		int intBYmonth = Integer.parseInt(month, 10);
		int intBYday = Integer.parseInt(day, 10);

		// 対象日付
		int intTYear = Integer.parseInt(targetDate.substring(0, 4), 10);
		int intTYmonth = Integer.parseInt(targetDate.substring(4, 6), 10);
		int intTYday = Integer.parseInt(targetDate.substring(6, 8), 10);
		
		// 年齢
		int age = 0;
		
		if (intTYmonth < intBYmonth)
		{
			age = intTYear - intBYear - 1;
		} 
		else if (intTYmonth > intBYmonth)
		{
			age = intTYear - intBYear;
		}
		else if (intTYmonth == intBYmonth)
		{
			if(intTYday < intBYday)
			{
				age = intTYear - intBYear - 1;
			}
			else
			{
				age = intTYear - intBYear;
			}
		}
		
		return String.valueOf(age);
	}
// △△△ ANK-3214-00-00 ADD END
// ▼▼▼ ANK-3307-00-00 ADD START
	/**
	 * サービス契約回線内訳から利用場所住所を取得する。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @param scCall SC呼び出し部品
	 * @param svcKeiKisenUcwkNo サービス契約回線内訳
	 * @param outMap 出力マップ
	 */
	private void exeSvcKeiKaisenUcwkQuery(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
									   ServiceComponentRequestInvoker scCall, String svcKeiKisenUcwkNo, Map<String, Object> outMap) throws Throwable
	{
		// サービス契約回線内訳一意照会の上りマッピング
		Object[][] ekk0251a010In = {
					{EKK0251A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251A010},
					{EKK0251A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2},
					{EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiKisenUcwkNo},
				};
		
		// サービスIF実行
		CAANMsg[] ekk0251a010Msg1List = callSC(handle, scCall, param, ekk0251a010In,
				fixedText, new EKK0251A010CBSMsg().getContents()).getCAANMsgList(EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST);
		
		HashMap<String, Object> childMap = new HashMap<String, Object>();
		if (ekk0251a010Msg1List != null && 0 < ekk0251a010Msg1List.length)
		{
			// 回線利用場所住所
			outMap.put(USE_PLACE_PCD, ekk0251a010Msg1List[0].getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_PCD));

			// 回線場所を部品で編集する。
			String usePlaceAd = JZMAdOutputEdit.getPtn02(
										ekk0251a010Msg1List[0].getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM),
										ekk0251a010Msg1List[0].getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM),
										ekk0251a010Msg1List[0].getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM),
										ekk0251a010Msg1List[0].getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM),
										ekk0251a010Msg1List[0].getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO),
										ekk0251a010Msg1List[0].getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM),
										ekk0251a010Msg1List[0].getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM));
			// 利用場所住所名
			outMap.put(USE_PLACE_AD_NM, usePlaceAd);
		}
	}
// △△△ ANK-3307-00-00 ADD END
}
