/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKMkmInfoAddOrosiPreTrnCC
*	ソースファイル名：JKKMkmInfoAddOrosiPreTrnCC.java
*	作成者			：FJ）平野
*	日付			：2018年03月15日
*＜機能概要＞
*	申込情報登録(卸先事業者)事前処理の共通コンポーネントクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v37.00.00	2018/03/15	FJ) 平野	新規作成 【ANK-3366-00-00】eo光設備卸対応
*	v39.00.00	2018/10/24	FJ）藤井	【IT1-2018-0000171】卸先事業者名Web断面での表記
*	v41.00.00	2019/03/12	FJ）中原	【ANK-3604-00-00】光卸住所情報の断面更新方式変更
*
* --------------------------------------------------------------------
* nkjmlab-utils-jpdatum 0.0.2-SNAPSHOT
* Copyright (c) 2014 Yuu NAKAJIMA
* Licensed under MIT
* (https://github.com/nkjmlab/nkjmlab-utils-jpdatum/blob/master/LICENSE)
* 
* このライブラリにはApache2.0ライセンスのライセンスで配布されている成果物を含んでいます。
* --------------------------------------------------------------------
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.nkjmlab.gis.datum.LatLon.Detum;
import org.nkjmlab.gis.datum.LatLon.Unit;
import org.nkjmlab.gis.datum.jprect.BasisWithZone;
import org.nkjmlab.gis.datum.jprect.XYWithZone;
import org.nkjmlab.gis.datum.jprect.JapanPlaneRectangular.ZoneId;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JCKLcsDataConverter;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.ECH0911A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECH0911A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EDK0451A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0451A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021B011CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0061A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0061A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0241B005CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B005CBSMsgList;
import eo.ejb.cbs.cbsmsg.EKK0241B006CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B006CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B019CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B019CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B504CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B504CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0591B008CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0591B008CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0791A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0791A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ETU0051A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0051A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0121A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0121B020CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0171B012CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0171B012CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg1List;


/**
* 申込情報登録(卸先事業者)事前処理の共通コンポーネントクラスです。
 * <BR>
 * @author FJ
 */
public class JKKMkmInfoAddOrosiPreTrnCC extends AbstractCommonComponent
{
	/** テンプレートID　引当棚一意照会 */
	private static final String TEMPLATE_ID_EDK0451A010 = "EDK0451A010";
	/** テンプレートID　業務パラメータ管理 */
	private static final String TEMPLATE_ID_EZM0321A010 = "EZM0321A010";
	/** テンプレートID　通信事業者 */
	private static final String TEMPLATE_ID_ETU0051A010 = "ETU0051A010";
	/** テンプレートID　申込情報登録（卸先事業者）事前対象照会 */
	private static final String TEMPLATE_ID_EKK0241B005 = "EKK0241B005";
	/** テンプレートID　卸先事業者一意照会 */
	private static final String TEMPLATE_ID_ECH0911A010 = "ECH0911A010";
	/** テンプレートID　料金プラン一覧照会（卸先事業者コード） */
	private static final String TEMPLATE_ID_EKK0591B008 = "EKK0591B008";
	/** テンプレートID　機器提供サービス契約一覧照会(サービス契約、回線対象サービス契約経由) */
	private static final String TEMPLATE_ID_EKK0341B019 = "EKK0341B019";
	/** テンプレートID　回線契約内機器オプション一覧照会 */
	private static final String TEMPLATE_ID_EKK0241B006 = "EKK0241B006";
	/** テンプレートID　サービス契約回線内訳一意照会 */
	private static final String TEMPLATE_ID_EKK0251A010 = "EKK0251A010";
	/** テンプレートID　申込書番号存在チェック一覧紹介 */
	private static final String TEMPLATE_ID_EKK0021B011 = "EKK0021B011";
		// ANK-3604-00-00 MOD START
	///** テンプレートID　電話番号一意照会 */
	//private static final String TEMPLATE_ID_EZM0121A010 = "EZM0121A010";
	/** テンプレートID　電話番号二重登録チェック一覧照会 */
	private static final String TEMPLATE_ID_EZM0121B020 = "EZM0121B020";
		// ANK-3604-00-00 MOD END
	/** テンプレートID　代理店一意照会 */
	private static final String TEMPLATE_ID_EKK0061A010 = "EKK0061A010";
	/** テンプレートID　機器提供サービス契約一覧照会（サービス契約回線内訳） */
	private static final String TEMPLATE_ID_EKK0341B504 = "EKK0341B504";
	/** テンプレートID　料金コース一意照会 */
	private static final String TEMPLATE_ID_EKK0791A010 = "EKK0791A010";
	
	/** 業務パラメータ（新規申込機器引当指定倉庫コード） */
	private static final String KK_KIKI_HKAT_SOKO_CD = "KK_KIKI_HKAT_SOKO_CD";
	/** 業務パラメータ（通話料指定額到達通知金額初期値） */
	private static final String KK_TWRYO_UPPL_SHKV = "KK_TWRYO_UPPL_SHKV";
	//IT1-2018-0000171 ADD START
	/** テンプレートID コード名称管理コード区分一覧照会 */
	private static final String TEMPLATE_ID_EZM0171B012 = "EZM0171B012";
	//IT1-2018-0000171 ADD END
	
	/**
	* 申込情報登録(卸先事業者)事前処理を行います。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return リクエストパラメータ
	 * @throws Throwable 例外が発生した場合
	 */
	public IRequestParameterReadWrite runPreTran(SessionHandle handle, 
																IRequestParameterReadWrite param, 
																String fixedText) throws Throwable
	{
		
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		// 運用日付
		String opeDate = JCCBPCommon.getOpeDate(null);
		
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// CC設定用取得データ格納用
		Map<String, Object> ccSetteData = new HashMap<String, Object>();
		
		// 卸先事業者マスタの検索を行う
		CAANMsg[] orsjgs = getOrsjgsData(handle, param, fixedText, scCall);
		
		// 新規申込・サービス追加で共通の関連チェックを行う
		chkKnrnComn(handle, param, fixedText, scCall, orsjgs, opeDate, ccSetteData);
		
		// エラーコードが設定されている場合
		if (ccMsg.get("errorCode") != null)
		{
			// 処理を終了
			return param;
		}
		
		// CC設定用取得データとして設定
		// 申込受付種別コード
		ccSetteData.put("mkm_uk_sbt_cd", orsjgs[0].getString(ECH0911A010CBSMsg1List.MKM_UK_SBT_CD));
		// 取扱代理店コード1
		ccSetteData.put("trat_agnt_cd_1", orsjgs[0].getString(ECH0911A010CBSMsg1List.TRAT_AGNT_CD_1));
		// 取扱代理店コード2
		ccSetteData.put("trat_agnt_cd_2", orsjgs[0].getString(ECH0911A010CBSMsg1List.TRAT_AGNT_CD_2));
		
		// 取扱代理店1の名称を取得する
		String agntNm1 = getKKMAgnt(handle, param, fixedText, scCall, opeDate, (String)ccSetteData.get("trat_agnt_cd_1"));
		ccSetteData.put("trat_agnt_nm_1", agntNm1);
		
		// 取扱代理店2の名称を取得する
		String agntNm2 = getKKMAgnt(handle, param, fixedText, scCall, opeDate, (String)ccSetteData.get("trat_agnt_cd_2"));
		ccSetteData.put("trat_agnt_nm_2", agntNm2);
		
		// 依頼元区分
		String channel = (String)ccMsg.get("channel");

		// 料金プラン一覧照会（卸先事業者コード）一意照会の上りマッピング
		Object[][] ekk0591b008In =
		{
			{EKK0591B008CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0591B008},
			{EKK0591B008CBSMsg.FUNC_CODE,  "1"},
			{EKK0591B008CBSMsg.KEY_ORSJGS_CD, channel}
		};
		
		// 料金プラン一覧照会（卸先事業者）実行
		CAANMsg[] ekk0591b008Msg1List = callSC(handle, scCall, param, fixedText, ekk0591b008In,
				new EKK0591B008CBSMsg().getContents()).getCAANMsgList(EKK0591B008CBSMsg.EKK0591B008CBSMSG1LIST);
		
		// 料金プランコード
		String pplanCd = ekk0591b008Msg1List[0].getString(EKK0591B008CBSMsg1List.PPLAN_CD);
		
		// CC設定用取得データとして設定
		// 料金グループコード
		ccSetteData.put("prc_grp_cd", ekk0591b008Msg1List[0].getString(EKK0591B008CBSMsg1List.PRC_GRP_CD));
		// 料金コースコード
		ccSetteData.put("pcrs_cd", ekk0591b008Msg1List[0].getString(EKK0591B008CBSMsg1List.PCRS_CD));
		// 料金プランコード
		ccSetteData.put("pplan_cd", pplanCd);
		
		// 料金コース一意照会の上りマッピング
		Object[][] ekk0791a010In = 
		{
				{EKK0791A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0791A010},
				{EKK0791A010CBSMsg.FUNC_CODE, "2"},
				{EKK0791A010CBSMsg.KEY_PCRS_CD, ekk0591b008Msg1List[0].getString(EKK0591B008CBSMsg1List.PCRS_CD)},
				{EKK0791A010CBSMsg.KEY_RSV_APLY_YMD, opeDate}
		};
		
		// 料金コース一意照会実行
		CAANMsg[] ekk0791a010Msg1List = callSC(handle, scCall, param, fixedText, ekk0791a010In,
				new EKK0791A010CBSMsg().getContents()).getCAANMsgList(EKK0791A010CBSMsg.EKK0791A010CBSMSG1LIST);
		
		// 料金コースコード名称
		ccSetteData.put("pcrs_nm", ekk0791a010Msg1List[0].getString(EKK0791A010CBSMsg1List.PCRS_NM));
		
		// 既存契約共通キー(ネット)
		String commonKeyNet = (String)ccMsg.get("commonKeyNet");
		
		// サービス追加の場合
		if (commonKeyNet != null)
		{
			// サービス追加時に必要なデータの検索を行う
			CAANMsg[] addData = getAddOthData(handle, param, fixedText, scCall, opeDate);
			
			// サービス追加時の関連チェックを行う
			chkKnrnAdd(handle, param, fixedText, scCall, addData, pplanCd);
			
			// エラーコードが設定されている場合
			if (ccMsg.get("errorCode") != null)
			{
				// 処理を終了
				return param;
			}
			
			// サービス追加時の必要データを設定する
			setAddOthData(ccSetteData, addData, ccMsg);
			
			// サービス契約回線内訳の設定
			getSvcKeiKaisenUcwk(handle, param, fixedText, scCall, opeDate, ccSetteData);
			
			// 多機能ルーター用に機器提供サービス契約番号を設定
			getKktkSvcKeiNo(handle, param, fixedText, scCall, opeDate, ccSetteData);
			
			// 機器提供サービス契約状況の設定
			getKktkData(handle, param, fixedText, scCall, opeDate, ccSetteData);
			
			// 機器オプションサービス契約状況の設定
			getKkopData(handle, param, fixedText, scCall, opeDate, ccSetteData);
		}
		
		// エラーコードが設定されている場合
		if (ccMsg.get("errorCode") != null)
		{
			// 処理を終了
			return param;
		}
		
		String funcCode = (String)ccMsg.get("func_code");
		
		// 引当棚一意照会の上りマッピング
		Object[][] edk0451a010In =
		{
			{EDK0451A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0451A010},
			{EDK0451A010CBSMsg.FUNC_CODE,  funcCode},
			{EDK0451A010CBSMsg.KEY_HAMBAI_SBT_CD, "10"},
			{EDK0451A010CBSMsg.KEY_UNYO_YMD, opeDate}
		};
		
		// 引当棚一意照会SIF実行
		CAANMsg[] edk0451a010Msg1List = callSC(handle, scCall, param, fixedText, edk0451a010In,
				new EDK0451A010CBSMsg().getContents()).getCAANMsgList(EDK0451A010CBSMsg.EDK0451A010CBSMSG1LIST);
		
		// CC設定用取得データとして設定
		// 棚コード
		ccSetteData.put("shelf_cd", edk0451a010Msg1List[0].getString(EDK0451A010CBSMsg1List.SHELF_CD));
		
		// 業務パラメータ管理の上りマッピング（新規申込機器引当指定倉庫コード）
		Object[][] ezm0321a010In = 
		{ 
				{ EZM0321A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0321A010 },
				{ EZM0321A010CBSMsg.FUNC_CODE, funcCode },
				{ EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, KK_KIKI_HKAT_SOKO_CD }
		};
		
		// 業務パラメータ管理一意照会実行（新規申込機器引当指定倉庫コード）
		CAANMsg[] ezm0321a010cbsMsg1list = callSC(handle, scCall, param, fixedText, ezm0321a010In,
				new EZM0321A010CBSMsg().getContents()).getCAANMsgList(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST);
		
		// CC設定用取得データとして設定
		// 新規申込機器引当指定倉庫コード
		ccSetteData.put("soko_cd", ezm0321a010cbsMsg1list[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE));
		
		// 業務パラメータ管理の上りマッピング（通話料指定額到達通知金額初期値）
		Object[][] ezm0321a010In2 =
		{
				{ EZM0321A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0321A010 },
				{ EZM0321A010CBSMsg.FUNC_CODE, funcCode },
				{ EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, KK_TWRYO_UPPL_SHKV }
		};
		
		// 業務パラメータ管理一意照会実行（通話料指定額到達通知金額初期値）
		CAANMsg[] ezm0321a010cbsMsg1list2 = callSC(handle, scCall, param, fixedText, ezm0321a010In2,
				new EZM0321A010CBSMsg().getContents()).getCAANMsgList(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST);
		
		// CC設定用取得データとして設定
		// 通話料指定額到達通知金額初期値
		ccSetteData.put("twryo_stiam_ttu_tchi_stiam", ezm0321a010cbsMsg1list2[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE));
		
		// 取得したデータを各CCへ設定する
		setCCData(handle, param, fixedText, ccSetteData, opeDate);
		
		return param;
	}
	
	/**
	 * 代理店名称の取得
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param scCall
	 * @param opeDate
	 * @param agntCd
	 * @return
	 * @throws Throwable
	 */
	private String getKKMAgnt(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			ServiceComponentRequestInvoker scCall, String opeDate, String agntCd) throws Throwable
	{
		// 代理店一意照会の上りマッピング
		Object[][] ekk0061a010In =
		{
			{EKK0061A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0061A010},
			{EKK0061A010CBSMsg.FUNC_CODE, "2"},
			{EKK0061A010CBSMsg.KEY_RSV_APLY_YMD, opeDate},
			{EKK0061A010CBSMsg.KEY_AGNT_CD, agntCd}
		};
		
		// 代理店一意照会実行
		CAANMsg[] ekk0061a010Msg1List = callSC(handle, scCall, param, fixedText, ekk0061a010In,
				new EKK0061A010CBSMsg().getContents()).getCAANMsgList(EKK0061A010CBSMsg.EKK0061A010CBSMSG1LIST);
		
		if (ekk0061a010Msg1List != null)
		{
			// 代理店名称を返却
			return ekk0061a010Msg1List[0].getString(EKK0061A010CBSMsg1List.AGNT_NM);
		}
		
		return null;
	}
	
	/**
	 * サービス追加時に必要なデータの検索を行う
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param scCall
	 * @param opeDate
	 * @return CAANMsg[] 申込情報登録(卸先事業者)事前対象照会データ
	 * @throws Throwable
	 */
	private CAANMsg[] getAddOthData(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			ServiceComponentRequestInvoker scCall, String opeDate) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		// 機能コード
		String funcCode = (String)ccMsg.get("func_code");
		// 既存契約共通キー(ネット)
		String commonKeyNet = (String)ccMsg.get("commonKeyNet");
		
		// 申込情報登録（卸先事業者）事前対象照会上りマッピング
		Object[][] ekk0241b005In =
		{
			{EKK0241B005CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0241B005},
			{EKK0241B005CBSMsg.FUNC_CODE,  funcCode},
			{EKK0241B005CBSMsg.KEY_SVC_KEI_NO, commonKeyNet}
		};
		
		// 申込情報登録（卸先事業者）事前対象照会実行
		return callSC(handle, scCall, param, fixedText, ekk0241b005In,
				new EKK0241B005CBSMsg().getContents()).getCAANMsgList(EKK0241B005CBSMsg.EKK0241B005CBSMSGLIST);
	}
	
	/**
	 * サービス追加時の必要データを設定する
	 * @param ccSetteData
	 * @param addData
	 * @param ccMsg
	 */
	private void setAddOthData(Map<String, Object> ccSetteData, CAANMsg[] addData, Map<String, Object> ccMsg)
	{
		// サービス契約番号
		ccSetteData.put("svc_kei_no", (String)ccMsg.get("commonKeyNet"));
		// 電話申込
		ccSetteData.put("phoneEntry", (String)ccMsg.get("phoneEntry"));
		// テレビ申込
		ccSetteData.put("tvEntry", (String)ccMsg.get("tvEntry"));
		
		// SYSID
		ccSetteData.put("sysid", addData[0].getString(EKK0241B005CBSMsgList.SYSID));
		// サービス契約回線内訳番号
		ccSetteData.put("svc_kei_kaisen_ucwk_no", addData[0].getString(EKK0241B005CBSMsgList.SVC_KEI_KAISEN_UCWK_NO));
		// 請求契約番号
		ccSetteData.put("seiky_kei_no", addData[0].getString(EKK0241B005CBSMsgList.SEIKY_KEI_NO));
		// お客様名
		ccSetteData.put("cust_nm", addData[0].getString(EKK0241B005CBSMsgList.CUST_NM));
		// お客様カナ名
		ccSetteData.put("cust_kana", addData[0].getString(EKK0241B005CBSMsgList.CUST_KANA));
		// 契約者電話番号
		ccSetteData.put("keisha_telno", addData[0].getString(EKK0241B005CBSMsgList.KEISHA_TELNO));
		// お客様性別コード
		ccSetteData.put("cust_sex_cd", addData[0].getString(EKK0241B005CBSMsgList.CUST_SEX_CD));
		// お客様生年月日
		ccSetteData.put("cust_birthd", addData[0].getString(EKK0241B005CBSMsgList.CUST_BIRTHD));
		// 契約者住所コード
		ccSetteData.put("keisha_ad_cd", addData[0].getString(EKK0241B005CBSMsgList.KEISHA_AD_CD));
		// 契約者郵便番号
		ccSetteData.put("keisha_pcd", addData[0].getString(EKK0241B005CBSMsgList.KEISHA_PCD));
		// 契約者都道府県名
		ccSetteData.put("keisha_state_nm", addData[0].getString(EKK0241B005CBSMsgList.KEISHA_STATE_NM));
		// 契約者市区町村名
		ccSetteData.put("keisha_city_nm", addData[0].getString(EKK0241B005CBSMsgList.KEISHA_CITY_NM));
		// 契約者大字通称名
		ccSetteData.put("keisha_oaztsu_nm", addData[0].getString(EKK0241B005CBSMsgList.KEISHA_OAZTSU_NM));
		// 契約者字丁目名
		ccSetteData.put("keisha_azcho_nm", addData[0].getString(EKK0241B005CBSMsgList.KEISHA_AZCHO_NM));
		// 契約者番地号
		ccSetteData.put("keisha_bnchigo", addData[0].getString(EKK0241B005CBSMsgList.KEISHA_BNCHIGO));
		// 契約者住所補記・建物名
		ccSetteData.put("keisha_adrttm", addData[0].getString(EKK0241B005CBSMsgList.KEISHA_ADRTTM));
		// 契約者住所補記・部屋番号
		ccSetteData.put("keisha_adrrm", addData[0].getString(EKK0241B005CBSMsgList.KEISHA_ADRRM));
		// 親権者名
		ccSetteData.put("sksha_nm", addData[0].getString(EKK0241B005CBSMsgList.SKSHA_NM));
		// 親権者カナ名
		ccSetteData.put("sksha_kana", addData[0].getString(EKK0241B005CBSMsgList.SKSHA_KANA));
		// 親権者生年月日
		ccSetteData.put("sksha_birthd", addData[0].getString(EKK0241B005CBSMsgList.SKSHA_BIRTHD));
		// 親権者続柄コード
		ccSetteData.put("sksha_zokugara_cd", addData[0].getString(EKK0241B005CBSMsgList.SKSHA_ZOKUGARA_CD));
		// 続柄その他
		ccSetteData.put("zokugara_other", addData[0].getString(EKK0241B005CBSMsgList.ZOKUGARA_OTHER));
		// 親権者電話番号
		ccSetteData.put("sksha_telno", addData[0].getString(EKK0241B005CBSMsgList.SKSHA_TELNO));
		// 優先電話番号
		ccSetteData.put("keisha_yusen_telno", addData[0].getString(EKK0241B005CBSMsgList.KEISHA_YUSEN_TELNO));
		// メールアドレス
		ccSetteData.put("mlad", addData[0].getString(EKK0241B005CBSMsgList.MLAD));
	}
	
	/**
	 * サービス契約回線内訳の設定を行う
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param scCall
	 * @param opeDate
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void getSvcKeiKaisenUcwk(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			ServiceComponentRequestInvoker scCall, String opeDate, Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		// サービス契約回線内訳番号
		String svcKeiKaisenUcwNo = (String)ccSetteData.get("svc_kei_kaisen_ucwk_no");
		
		// サービス契約回線内訳一意照会上りマッピング
		Object[][] ekk0251a010In =
		{
			{EKK0251A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251A010},
			{EKK0251A010CBSMsg.FUNC_CODE,  "2"},
			{EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwNo}
		};
		
		// サービス契約回線内訳一意照会実行
		CAANMsg[] kaisenUcwkList = callSC(handle, scCall, param, fixedText, ekk0251a010In,
				new EKK0251A010CBSMsg().getContents()).getCAANMsgList(EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST);
		
		if (kaisenUcwkList != null)
		{
			CAANMsg kaisenUcwk = kaisenUcwkList[0];
			
			// 住所形態コード
			ccSetteData.put("ad_form_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.AD_FORM_CD));
			// お客様申告住所未確定フラグ
			ccSetteData.put("cust_skk_ad_mi_fix_flg", kaisenUcwk.getString(EKK0251A010CBSMsg1List.CUST_SKK_AD_MI_FIX_FLG));
			// お客様SOS利用有無
			ccSetteData.put("cust_sos_use_um", kaisenUcwk.getString(EKK0251A010CBSMsg1List.CUST_SOS_USE_UM));
			// 方角コード1
			ccSetteData.put("direction_cd_1", kaisenUcwk.getString(EKK0251A010CBSMsg1List.DIRECTION_CD_1));
			// 方角コード2
			ccSetteData.put("direction_cd_2", kaisenUcwk.getString(EKK0251A010CBSMsg1List.DIRECTION_CD_2));
			// 電力送電予定年月日
			ccSetteData.put("epower_soden_rsv_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.EPOWER_SODEN_RSV_YMD));
			// 該当エリアサービス開始年月日
			ccSetteData.put("gaito_area_svc_staymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.GAITO_AREA_SVC_STAYMD));
			// 引渡し予定年月日
			ccSetteData.put("hikiwatashi_rsv_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.HIKIWATASHI_RSV_YMD));
			// 引越し予定年月日
			ccSetteData.put("hikkoshi_rsv_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.HIKKOSHI_RSV_YMD));
			// 引越し年月日
			ccSetteData.put("hikkoshi_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.HIKKOSHI_YMD));
			// 回線場所住所補記・部屋番号
			ccSetteData.put("kaisen_place_adrrm", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM));
			// 回線場所住所補記・建物名
			ccSetteData.put("kaisen_place_adrttm", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM));
			// 回線場所住所コード
			ccSetteData.put("kaisen_place_ad_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_AD_CD));
			// 回線場所字丁目名
			ccSetteData.put("kaisen_place_azcho_nm", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
			// 回線場所番地号
			ccSetteData.put("kaisen_place_bnchigo", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO));
			// 回線場所市区町村名
			ccSetteData.put("kaisen_place_city_nm", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM));
			// 回線場所番号
			ccSetteData.put("kaisen_place_no", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_NO));
			// 回線場所大字通称名
			ccSetteData.put("kaisen_place_oaztsu_nm", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
			// 回線場所郵便番号
			ccSetteData.put("kaisen_place_pcd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_PCD));
			// 回線場所都道府県名
			ccSetteData.put("kaisen_place_state_nm", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM));
			// 回線場所電話番号
			ccSetteData.put("kaisen_place_telno", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLACE_TELNO));
			// 回線場所カナ名
			ccSetteData.put("kaisen_plc_kana", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLC_KANA));
			// 回線場所_契約者住所差異フラグ
			ccSetteData.put("kaisen_plc_ksh_ad_sai_flg", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_PLC_KSH_AD_SAI_FLG));
			// 回線提供会社コード
			ccSetteData.put("kaisen_tk_comp_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KAISEN_TK_COMP_CD));
			// 関電営業所コード
			ccSetteData.put("kepco_busioffice_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KEPCO_BUSIOFFICE_CD));
			// 回線場所住所未確定フラグ
			ccSetteData.put("kisn_plc_ad_mi_fix_flg", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KISN_PLC_AD_MI_FIX_FLG));
			// 回線場所住所未確定解除年月日
			ccSetteData.put("kisn_plc_ad_mi_fix_rls_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KISN_PLC_AD_MI_FIX_RLS_YMD));
			// 回線場所補足コード1
			ccSetteData.put("kisn_plc_hsk_cd_1", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KISN_PLC_HSK_CD_1));
			// 回線場所補足コード2
			ccSetteData.put("kisn_plc_hsk_cd_2", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KISN_PLC_HSK_CD_2));
			// 回線場所補足メモ
			ccSetteData.put("kisn_plc_hsk_memo", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KISN_PLC_HSK_MEMO));
			// 回線場所区画整理中フラグ名
			ccSetteData.put("kisn_plc_kkk_seiri_chu_flg", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KISN_PLC_KKK_SEIRI_CHU_FLG));
			// 起点変電所コード
			ccSetteData.put("kiten_hdsho_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KITEN_HDSHO_CD));
			// 戸建建築階数コード
			ccSetteData.put("kodate_kcku_flr_cnt_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KODATE_KCKU_FLR_CNT_CD));
			// 契約者住所変更希望年月日
			ccSetteData.put("kshad_chg_kibo_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KSHAD_CHG_KIBO_YMD));
			// 契約者住所変更有無
			ccSetteData.put("kshad_chg_um", kaisenUcwk.getString(EKK0251A010CBSMsg1List.KSHAD_CHG_UM));
			// 経度
			ccSetteData.put("lgtd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.LGTD));
			// 緯度
			ccSetteData.put("lttd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.LTTD));
			// マンション物件番号
			ccSetteData.put("mansion_bukken_no", kaisenUcwk.getString(EKK0251A010CBSMsg1List.MANSION_BUKKEN_NO));
			// 申込明細番号
			ccSetteData.put("mskm_dtl_no", kaisenUcwk.getString(EKK0251A010CBSMsg1List.MSKM_DTL_NO));
			// 入居予定年月日
			ccSetteData.put("nyukyo_rsv_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.NYUKYO_RSV_YMD));
			// PON種別コード
			ccSetteData.put("pon_sbt_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.PON_SBT_CD));
			// 集合住宅入居階数コード
			ccSetteData.put("shugj_nyukyo_flr_cnt_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.SHUGJ_NYUKYO_FLR_CNT_CD));
			// 竣工予定年月日
			ccSetteData.put("shunko_rsv_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.SHUNKO_RSV_YMD));
			// 集約局コード
			ccSetteData.put("shyakk_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.SHYAKK_CD));
			// 請求書送付先住所変更希望年月日
			ccSetteData.put("sks_shs_ad_chg_kibo_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.SKS_SHS_AD_CHG_KIBO_YMD));
			// 請求書送付先住所変更有無
			ccSetteData.put("sks_shs_ad_chg_um", kaisenUcwk.getString(EKK0251A010CBSMsg1List.SKS_SHS_AD_CHG_UM));
			// 請求書用回線場所住所部屋番号
			ccSetteData.put("sks_yo_kisn_place_ad_rm_no", kaisenUcwk.getString(EKK0251A010CBSMsg1List.SKS_YO_KISN_PLACE_AD_RM_NO));
			// サービス契約回線内訳ステータス
			ccSetteData.put("svc_kei_kaisen_ucwk_stat", kaisenUcwk.getString(EKK0251A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_STAT));
			// 撤去工事希望年月日
			ccSetteData.put("tekkyo_koji_kibo_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.TEKKYO_KOJI_KIBO_YMD));
			// 電話BASホストID
			ccSetteData.put("tel_bas_host_id", kaisenUcwk.getString(EKK0251A010CBSMsg1List.TEL_BAS_HOST_ID));
			// 電話VLAN-ID
			ccSetteData.put("tel_vlan_id", kaisenUcwk.getString(EKK0251A010CBSMsg1List.TEL_VLAN_ID));
			// 電話VLAN-ID取込年月日
			ccSetteData.put("tel_vlan_id_trkm_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.TEL_VLAN_ID_TRKM_YMD));
			// TVアンテナ有無
			ccSetteData.put("tv_antenna_um", kaisenUcwk.getString(EKK0251A010CBSMsg1List.TV_ANTENNA_UM));
			// テレビ個別対応コード
			ccSetteData.put("tv_kobet_taio_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.TV_KOBET_TAIO_CD));
			// 更新年月日時分秒
			ccSetteData.put("upd_dtm", kaisenUcwk.getString(EKK0251A010CBSMsg1List.UPD_DTM));
			// VDSL利用電話回線切替予定年月日
			ccSetteData.put("vdsl_use_dksn_swch_rsv_ymd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.VDSL_USE_DKSN_SWCH_RSV_YMD));
			// VDSL利用電話回線種別コード
			ccSetteData.put("vdsl_use_tel_kisn_sbt_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.VDSL_USE_TEL_KISN_SBT_CD));
			// VDSL利用対象電話番号回線種別コード
			ccSetteData.put("vdsl_use_tg_dbksn_sbt_cd", kaisenUcwk.getString(EKK0251A010CBSMsg1List.VDSL_USE_TG_DBKSN_SBT_CD));
			// VDSL利用対象電話番号
			ccSetteData.put("vdsl_use_tg_telno", kaisenUcwk.getString(EKK0251A010CBSMsg1List.VDSL_USE_TG_TELNO));
			// VLAN-ID確定フラグ
			ccSetteData.put("vlan_id_fix_flg", kaisenUcwk.getString(EKK0251A010CBSMsg1List.VLAN_ID_FIX_FLG));
			// X座標
			ccSetteData.put("xzahyo", kaisenUcwk.getString(EKK0251A010CBSMsg1List.XZAHYO));
			// Y座標
			ccSetteData.put("yzahyo", kaisenUcwk.getString(EKK0251A010CBSMsg1List.YZAHYO));
			// 座標補正有無
			ccSetteData.put("zahyo_hosei_um", kaisenUcwk.getString(EKK0251A010CBSMsg1List.ZAHYO_HOSEI_UM));
		}
	}
	
	/**
	 * 多機能ルーター用に機器提供サービス契約番号を設定する
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param scCall
	 * @param opeDate
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void getKktkSvcKeiNo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			ServiceComponentRequestInvoker scCall, String opeDate, Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		// 電話サービスの申込がない場合は処理しない
		if ("0".equals(ccMsg.get("phoneEntry")))
		{
			return;
		}
		
		// サービス契約回線内訳番号
		String svcKeiKaisenUcwNo = (String)ccSetteData.get("svc_kei_kaisen_ucwk_no");
		
		// 機器提供サービス契約一覧照会（サービス契約回線内訳）上りマッピング
		Object[][] ekk0341b504In =
		{
			{EKK0341B504CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341B504},
			{EKK0341B504CBSMsg.FUNC_CODE,  "1"},
			{EKK0341B504CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwNo}
		};
		
		// 機器提供サービス契約一覧照会（サービス契約回線内訳）実行
		CAANMsg[] kktkSvcKeiList = callSC(handle, scCall, param, fixedText, ekk0341b504In,
				new EKK0341B504CBSMsg().getContents()).getCAANMsgList(EKK0341B504CBSMsg.EKK0341B504CBSMSG1LIST);
		
		if (kktkSvcKeiList != null)
		{
			for (CAANMsg kktkSvcKei : kktkSvcKeiList)
			{
				// 多機能ルーターの場合
				if (JKKStrConst.KKTK_SVC_CD_TAKINORT.equals(
						kktkSvcKei.getString(EKK0341B504CBSMsg1List.KKTK_SVC_CD)))
				{
					// 機器提供サービス契約番号を設定する
					ccSetteData.put("takinort_kktk_svc_kei_no",
							kktkSvcKei.getString(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO));
				}
			}
		}
		
	}
	
	/**
	 * 機器提供サービス契約状況の設定を行う
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param scCall
	 * @param opeDate
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void getKktkData(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			ServiceComponentRequestInvoker scCall, String opeDate, Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		// 既存契約共通キー(ネット)
		String commonKeyNet = (String)ccMsg.get("commonKeyNet");
		
		// 機器提供サービス契約一覧照会(サービス契約番号、回線対象サービス契約経由)上りマッピング
		Object[][] ekk0341b019In =
		{
			{EKK0341B019CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341B019},
			{EKK0341B019CBSMsg.FUNC_CODE,  "3"},
			{EKK0341B019CBSMsg.KEY_SVC_KEI_NO, commonKeyNet},
			{EKK0341B019CBSMsg.KEY_BASE_YMD, opeDate}
		};
		
		// 機器提供サービス契約一覧照会(サービス契約番号、回線対象サービス契約経由)実行
		CAANMsg[] kktkList = callSC(handle, scCall, param, fixedText, ekk0341b019In,
				new EKK0341B019CBSMsg().getContents()).getCAANMsgList(EKK0341B019CBSMsg.EKK0341B019CBSMSG1LIST);
		
		if (kktkList != null)
		{
			List<Map<String, Object>> kktkSvcGetList = new ArrayList<Map<String, Object>>();
			Map<String, Object> childMap = null;
			
			for (CAANMsg kktk : kktkList)
			{
				childMap  = new HashMap<String, Object>();
				
				childMap.put("kk0341_kktk_svc_kei_stat", kktk.getString(EKK0341B019CBSMsg1List.KKTK_SVC_KEI_STAT));
				childMap.put("kk0341_kktk_svc_cd", kktk.getString(EKK0341B019CBSMsg1List.KKTK_SVC_CD));
				childMap.put("kk0341_kktk_svc_kei_no", kktk.getString(EKK0341B019CBSMsg1List.KKTK_SVC_KEI_NO));
				
				kktkSvcGetList.add(childMap);
			}
			
			ccSetteData.put("kktk_svc_get_list", kktkSvcGetList);
		}
	}
	
	/**
	 * 機器オプションサービス契約状況の設定を行う
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param scCall
	 * @param opeDate
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void getKkopData(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			ServiceComponentRequestInvoker scCall, String opeDate, Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		// 既存契約共通キー(ネット)
		String commonKeyNet = (String)ccMsg.get("commonKeyNet");
		
		// 回線契約内機器オプション一覧照会上りマッピング
		Object[][] ekk0241b006In =
		{
			{EKK0241B006CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0241B006},
			{EKK0241B006CBSMsg.FUNC_CODE,  "1"},
			{EKK0241B006CBSMsg.KEY_SVC_KEI_NO, commonKeyNet}
		};
		
		// 回線契約内機器オプション一覧照会実行
		CAANMsg[] kkopList = callSC(handle, scCall, param, fixedText, ekk0241b006In,
				new EKK0241B006CBSMsg().getContents()).getCAANMsgList(EKK0241B006CBSMsg.EKK0241B006CBSMSG1LIST);
		
		if (kkopList != null)
		{
			List<Map<String, Object>> kkOpInfoShokaiList = new ArrayList<Map<String, Object>>();
			Map<String, Object> childMap = null;
			
			for (CAANMsg kkop : kkopList)
			{
				childMap = new HashMap<String, Object>();
				
				// 機器オプションサービスコード
				childMap.put("kk2811_kkop_svc_cd", kkop.getString(EKK0241B006CBSMsg1List.KKOP_SVC_CD));
				// 機器オプションサービス契約ステータス
				childMap.put("kk2811_kkop_svc_kei_stat", kkop.getString(EKK0241B006CBSMsg1List.KKOP_SVC_KEI_STAT));
				
				kkOpInfoShokaiList.add(childMap);
			}
			
			ccSetteData.put("kk_op_info_shokai_list", kkOpInfoShokaiList);
		}
	}
	
	/**
	 * 卸先事業者マスタの検索を行う
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param scCall
	 * @return CAANMsg[] 卸先事業者マスタデータ
	 * @throws Throwable
	 */
	private CAANMsg[] getOrsjgsData(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			ServiceComponentRequestInvoker scCall) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		// 依頼元区分
		String channel = (String)ccMsg.get("channel");
		
		// 卸先事業者一意照会上りマッピング
		Object[][] ech0911a010In =
		{
			{ECH0911A010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECH0911A010},
			{ECH0911A010CBSMsg.FUNC_CODE,  "2"},
			{ECH0911A010CBSMsg.KEY_ORSJGS_CD, channel}
		};
		
		// 卸先事業者一意照会実行
		return callSC(handle, scCall, param, fixedText, ech0911a010In,
				new ECH0911A010CBSMsg().getContents()).getCAANMsgList(ECH0911A010CBSMsg.ECH0911A010CBSMSG1LIST);
		
	}
	
	/**
	 * サービス追加時の関連チェックを行う
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param scCall
	 * @param ekk0241b005Msg1List
	 * @param pplanCd
	 * @throws Throwable
	 */
	private void chkKnrnAdd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			ServiceComponentRequestInvoker scCall, CAANMsg[] ekk0241b005Msg1List, String pplanCd) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		// 既存契約共通キー(ネット)
		String commonKeyNet = (String)ccMsg.get("commonKeyNet");
		
		// 既存契約共通キー(ネット)存在チェック
		if (ekk0241b005Msg1List.length == 0)
		{
			// 既存契約共通キー(ネット)存在チェックのエラーコードを設定
			ccMsg.put("errorCode", "1100");
			return;
		}
		
		// 電話申込フラグ
		boolean telAddFlg = (!"0".equals(ccMsg.get("phoneEntry")));
		// テレビ申込フラグ
		boolean tvAddFlg = (!"0".equals(ccMsg.get("tvEntry")));
		
		for (CAANMsg ekk0241b005 : ekk0241b005Msg1List)
		{
			// サービス契約ステータス
			String svcKeiState = ekk0241b005.getString(EKK0241B005CBSMsgList.SVC_KEI_STAT);
			// 料金プランコード
			String zmPplanCd = ekk0241b005.getString(EKK0241B005CBSMsgList.PPLAN_CD);
			// サービスコード
			String svcCd = ekk0241b005.getString(EKK0241B005CBSMsgList.SVC_CD);
			
			// 既存契約共通キー(ネット)のサービス契約である場合
			if (commonKeyNet.equals(ekk0241b005.getString(EKK0241B005CBSMsgList.SVC_KEI_NO)))
			{
				
				// サービス契約の料金プランコードが該当の卸先事業者のネットサービスの料金プランでない場合
				if (!pplanCd.equals(zmPplanCd))
				{
					// 既存契約共通キー(ネット)存在チェックのエラーコードを設定
					ccMsg.put("errorCode", "1100");
					return;
				}
				
				// 既存契約共通キー(ネット)のサービス契約のステータスが「解約済」、「キャンセル済」の場合エラー
				if (JKKStrConst.CD00037_DSL_ZM.equals(svcKeiState) ||
						JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiState))
				{
					// 既存契約共通キー(ネット)存在チェックのエラーコードを設定
					ccMsg.put("errorCode", "1100");
					return;
				}
			}
			else
			{
				// 電話申込ありで、同一回線に解約済、キャンセル済でない電話サービスが存在する場合
				if (telAddFlg && JKKStrConst.CD00130_02.equals(svcCd) &&
						!JKKStrConst.CD00037_DSL_ZM.equals(svcKeiState) &&
						!JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiState))
				{
					// 追加申込時電話2重申込チェックのエラーコードを設定
					ccMsg.put("errorCode", "1101");
					return;
				}
				
				// テレビ申込ありで、同一回線に解約済、キャンセル済でないテレビサービスが存在する場合
				if (tvAddFlg && JKKStrConst.CD00130_03.equals(svcCd) &&
						!JKKStrConst.CD00037_DSL_ZM.equals(svcKeiState) &&
						!JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiState))
				{
					// 追加申込時テレビ2重申込チェックのエラーコードを設定
					ccMsg.put("errorCode", "1102");
					return;
				}
			}
		}
	}
	
	
	/**
	 * 新規申込・サービス追加で共通の関連チェックを行う
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param scCall
	 * @param ech0911a010Msg1List
	 * @param opeDate
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void chkKnrnComn(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			ServiceComponentRequestInvoker scCall, CAANMsg[] ech0911a010Msg1List, String opeDate,
			Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		/* ----------------------------------------------------------------- */
		/* 依頼元区分存在チェック                                            */
		/* ----------------------------------------------------------------- */
		// 結果が取得できていない場合
		if (ech0911a010Msg1List.length == 0)
		{
			// 依頼元区分が設備卸事業者マスタに存在しない場合のエラーコードを設定
			ccMsg.put("errorCode", "1104");
			return;
		}
		else
		{
			// 卸先事業者適用開始年月日
			String orsStaYmd = ech0911a010Msg1List[0].getString(ECH0911A010CBSMsg1List.ORSJGS_TSTAYMD);
			// 卸先事業者適用終了年月日
			String orsEndYmd = ech0911a010Msg1List[0].getString(ECH0911A010CBSMsg1List.ORSJGS_TENDYMD);
			
			// 卸先事業者適用開始年月日 > 運用日 > 卸先適用終了年月日の場合エラー
			if (opeDate.compareTo(orsStaYmd) < 0 || opeDate.compareTo(orsEndYmd) > 0)
			{
				// 依頼元区分が設備卸事業者マスタに存在しない場合のエラーコードを設定
				ccMsg.put("errorCode", "1104");
				return;
			}
		}
		
		/* ----------------------------------------------------------------- */
		/* 電話サービス提供事業者存在チェック                                */
		/* ----------------------------------------------------------------- */
		// 利用中の電話サービス提供事業者1
		String numberPortabilityCompany1 = (String)ccMsg.get("numberPortabilityCompany1");
		// 利用中の電話サービス提供事業者2
		String numberPortabilityCompany2 = (String)ccMsg.get("numberPortabilityCompany2");
		
		if (numberPortabilityCompany1 != null)
		{
			// 通信事業者一意照会上りマッピング
			Object[][] etu0051a010In =
			{
				{ETU0051A010CBSMsg.TEMPLATEID, TEMPLATE_ID_ETU0051A010},
				{ETU0051A010CBSMsg.FUNC_CODE,  "1"},
				{ETU0051A010CBSMsg.KEY_TSJGS_CD, numberPortabilityCompany1}
			};
			
			// 通信事業者一意照会実行
			CAANMsg[] etu0051a010Msg1List = callSC(handle, scCall, param, fixedText, etu0051a010In,
					new ETU0051A010CBSMsg().getContents()).getCAANMsgList(ETU0051A010CBSMsg.ETU0051A010CBSMSG1LIST);
			
			// 結果が取得できていない場合
			if (etu0051a010Msg1List.length == 0)
			{
				// 利用中の電話サービス提供事業者1が通信事業者マスタに存在しない場合のエラーコードを設定
				ccMsg.put("errorCode", "1105-1");
				return;
			}
			
			// 通信事業者名
			ccSetteData.put("tel1_tsjgs_nm", etu0051a010Msg1List[0].getString(ETU0051A010CBSMsg1List.TSJGS_NM));
		}
		
		if (numberPortabilityCompany2 != null)
		{
			// 通信事業者一意照会上りマッピング
			Object[][] etu0051a010In =
			{
				{ETU0051A010CBSMsg.TEMPLATEID, TEMPLATE_ID_ETU0051A010},
				{ETU0051A010CBSMsg.FUNC_CODE,  "1"},
				{ETU0051A010CBSMsg.KEY_TSJGS_CD, numberPortabilityCompany2}
			};
			
			// 通信事業者一意照会実行
			CAANMsg[] etu0051a010Msg1List = callSC(handle, scCall, param, fixedText, etu0051a010In,
					new ETU0051A010CBSMsg().getContents()).getCAANMsgList(ETU0051A010CBSMsg.ETU0051A010CBSMSG1LIST);
			
			// 結果が取得できていない場合
			if (etu0051a010Msg1List.length == 0)
			{
				// 利用中の電話サービス提供事業者2が通信事業者マスタに存在しない場合のエラーコードを設定
				ccMsg.put("errorCode", "1105-2");
				return;
			}
			
			// 通信事業者名
			ccSetteData.put("tel2_tsjgs_nm", etu0051a010Msg1List[0].getString(ETU0051A010CBSMsg1List.TSJGS_NM));
		}
		
		/* ----------------------------------------------------------------- */
		/* 受付番号2重登録チェック                                           */
		/* ----------------------------------------------------------------- */
		// 申込書番号存在チェック上りマッピング
		Object[][] ekk0021b011In =
		{
				{EKK0021B011CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021B011},
				{EKK0021B011CBSMsg.FUNC_CODE, "1"},
				{EKK0021B011CBSMsg.KEY_MSKMSHO_NO, (String)ccMsg.get("receivingNum")}
		};
		
		// 申込書番号存在チェック実行
		CAANMsg[] ekk0021b011List = callSC(handle, scCall, param, fixedText, ekk0021b011In,
				new EKK0021B011CBSMsg().getContents()).getCAANMsgList(EKK0021B011CBSMsg.EKK0021B011CBSMSG1LIST);
		
		// 結果が存在する場合
		if (ekk0021b011List.length > 0)
		{
			// 受付番号2重登録のエラーコードを設定
			ccMsg.put("errorCode", "1106");
			return;
		}
		
		/* ----------------------------------------------------------------- */
		/* 番ポ電話番号2重登録チェック                                       */
		/* ----------------------------------------------------------------- */
		// 番ポ電話番号1の設定がある場合
		if (ccMsg.get("numberPortabilityPhone1") != null)
		{
			// 電話番号2重登録のチェック
			if (checkTelNo(handle, param, fixedText, scCall, (String)ccMsg.get("numberPortabilityPhone1")))
			{
				ccMsg.put("errorCode", "1107-1");
				return;
			}
		}
		
		// 番ポ電話番号2の設定がある場合
		if (ccMsg.get("numberPortabilityPhone2") != null)
		{
			// 電話番号2重登録のチェック
			if (checkTelNo(handle, param, fixedText, scCall, (String)ccMsg.get("numberPortabilityPhone2")))
			{
				ccMsg.put("errorCode", "1107-2");
				return;
			}
		}
	}
	
	/**
	 * 電話番号2重登録のチェックを行います
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param scCall
	 * @param telno
	 * @return
	 * @throws Throwable
	 */
	private boolean checkTelNo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			ServiceComponentRequestInvoker scCall, String telno) throws Throwable
	{
		// ANK-3604-00-00 MOD START
		//// 電話番号一意照会上りマッピング
		//Object[][] ezm0121a010In =
		//{
		//		{EZM0121A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0121A010},
		//		{EZM0121A010CBSMsg.FUNC_CODE, "1"},
		//		{EZM0121A010CBSMsg.KEY_TELNO, telno}
		//};
		//
		//// 電話番号一意照会実行
		//CAANMsg[] ezm0121A010List = callSC(handle, scCall, param, fixedText, ezm0121a010In,
		//		new EZM0121A010CBSMsg().getContents()).getCAANMsgList(EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST);
		//
		//// 結果が存在する場合
		//if (ezm0121A010List != null && ezm0121A010List.length > 0)
		//{
		//	return true;
		//}
		// 電話番号二重登録チェック一覧照会上りマッピング
		Object[][] ezm0121b020In =
		{
				{EZM0121B020CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0121B020},
				{EZM0121B020CBSMsg.FUNC_CODE, "1"},
				{EZM0121B020CBSMsg.KEY_TELNO, telno}
		};
		
		// 電話番号二重登録チェック一覧照会
		CAANMsg[] ezm0121B010List = callSC(handle, scCall, param, fixedText, ezm0121b020In,
				new EZM0121B020CBSMsg().getContents()).getCAANMsgList(EZM0121B020CBSMsg.EZM0121B020CBSMSG1LIST);
		
		// 結果が存在する場合
		if (ezm0121B010List != null && ezm0121B010List.length > 0)
		{
			for (CAANMsg ezm0121B010 : ezm0121B010List)
			{
				String svcKeiUcwkStat = ezm0121B010.getString("svc_kei_ucwk_stat");
				if (!"910".equals(svcKeiUcwkStat) && !"920".equals(svcKeiUcwkStat))
				{
					return true;
				}
			}
		}
		// ANK-3604-00-00 MOD END
		
		return false;
	}
	
	/**
	 * 取得したデータを各CCへ設定する
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param ccSetteData
	 * @param opeDate
	 * @throws Throwable
	 */
	private void setCCData(SessionHandle handle, IRequestParameterReadWrite param,
			String fixedText, Map<String, Object> ccSetteData, String opeDate) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		// 住所編集部品により住所情報を編集する
		Map<String, Object> editedContractorAddress = null;
		Map<String, Object> editedLineAddress = null;
		Map<String, Object> editedBmpAddress1 = null;
		Map<String, Object> editedBmpAddress2 = null;
		// ANK-3604-00-00 ADD START
		Map<String, Object> contractorAddressDmen = null;
		Map<String, Object> lineAddressDmen = null;
		Map<String, Object> bmpAddress1Dmen = null;
		Map<String, Object> bmpAddress2Dmen = null;
		// ANK-3604-00-00 ADD END
		
		// 契約者住所
		if (ccMsg.get("contractorAddressZipcode") != null)
		{
			Map<String, Object> contractorAddress = new HashMap<String, Object>();
			contractorAddress.put("edit_mode", "1");
			contractorAddress.put("pcd", (String)ccMsg.get("contractorAddressZipcode"));
			contractorAddress.put("state_nm", (String)ccMsg.get("contractorAddress1"));
			contractorAddress.put("city_nm", (String)ccMsg.get("contractorAddress2"));
			contractorAddress.put("oaztsu_nm", (String)ccMsg.get("contractorAddress3"));
			contractorAddress.put("azcho_nm", (String)ccMsg.get("contractorAddress4"));
			contractorAddress.put("bnchigo", (String)ccMsg.get("contractorAddress5"));
			contractorAddress.put("adrttm", (String)ccMsg.get("contractorAddress6"));
			contractorAddress.put("adrrm", (String)ccMsg.get("contractorAddress7"));
			
			editedContractorAddress = JKKBpCommon.editAd(handle, param, contractorAddress, fixedText);
			// ANK-3604-00-00 ADD START
			contractorAddressDmen = contractorAddress;
			// ANK-3604-00-00 ADD END
			
		}
		// 利用場所住所
		if (ccMsg.get("lineAddressZipcode") != null)
		{
			Map<String, Object> lineAddress = new HashMap<String, Object>();
			lineAddress.put("edit_mode", "1");
			lineAddress.put("pcd", (String)ccMsg.get("lineAddressZipcode"));
			lineAddress.put("state_nm", (String)ccMsg.get("lineAddress1"));
			lineAddress.put("city_nm", (String)ccMsg.get("lineAddress2"));
			lineAddress.put("oaztsu_nm", (String)ccMsg.get("lineAddress3"));
			lineAddress.put("azcho_nm", (String)ccMsg.get("lineAddress4"));
			lineAddress.put("bnchigo", (String)ccMsg.get("lineAddress5"));
			lineAddress.put("adrttm", (String)ccMsg.get("lineAddress6"));
			lineAddress.put("adrrm", (String)ccMsg.get("lineAddress7"));
			
			editedLineAddress = JKKBpCommon.editAd(handle, param, lineAddress, fixedText);
			// ANK-3604-00-00 ADD START
			lineAddressDmen = lineAddress;
			// ANK-3604-00-00 ADD END
			
		}
		
		// 番ポ１の申込がある場合
		if ("1".equals(ccMsg.get("numberPortability1")))
		{
			Map<String, Object> bmpAddress1 = new HashMap<String, Object>();
			bmpAddress1.put("edit_mode", "1");
			bmpAddress1.put("pcd", (String)ccMsg.get("numberPortabilityAddressZipcode1"));
			bmpAddress1.put("state_nm", (String)ccMsg.get("numberPortabilityAddress1_1"));
			bmpAddress1.put("city_nm", (String)ccMsg.get("numberPortabilityAddress2_1"));
			bmpAddress1.put("oaztsu_nm", (String)ccMsg.get("numberPortabilityAddress3_1"));
			bmpAddress1.put("azcho_nm", (String)ccMsg.get("numberPortabilityAddress4_1"));
			bmpAddress1.put("bnchigo", (String)ccMsg.get("numberPortabilityAddress5_1"));
			bmpAddress1.put("adrttm", (String)ccMsg.get("numberPortabilityAddress6_1"));
			bmpAddress1.put("adrrm", (String)ccMsg.get("numberPortabilityAddress7_1"));
			
			editedBmpAddress1 = JKKBpCommon.editAd(handle, param, bmpAddress1, fixedText);
			// ANK-3604-00-00 ADD START
			bmpAddress1Dmen = bmpAddress1;
			// ANK-3604-00-00 ADD END
		}
		
		// 番ポ２の申込がある場合
		if ("1".equals(ccMsg.get("numberPortability2")))
		{
			Map<String, Object> bmpAddress2 = new HashMap<String, Object>();
			bmpAddress2.put("edit_mode", "1");
			bmpAddress2.put("pcd", (String)ccMsg.get("numberPortabilityAddressZipcode2"));
			bmpAddress2.put("state_nm", (String)ccMsg.get("numberPortabilityAddress1_2"));
			bmpAddress2.put("city_nm", (String)ccMsg.get("numberPortabilityAddress2_2"));
			bmpAddress2.put("oaztsu_nm", (String)ccMsg.get("numberPortabilityAddress3_2"));
			bmpAddress2.put("azcho_nm", (String)ccMsg.get("numberPortabilityAddress4_2"));
			bmpAddress2.put("bnchigo", (String)ccMsg.get("numberPortabilityAddress5_2"));
			bmpAddress2.put("adrttm", (String)ccMsg.get("numberPortabilityAddress6_2"));
			bmpAddress2.put("adrrm", (String)ccMsg.get("numberPortabilityAddress7_2"));
			
			// JKKAdEdit.editAd(handle, param, bmpAddress2);
			editedBmpAddress2 = JKKBpCommon.editAd(handle, param, bmpAddress2, fixedText);
			// ANK-3604-00-00 ADD START
			bmpAddress2Dmen = bmpAddress2;
			// ANK-3604-00-00 ADD END
		}
		
		
		// 契約者情報登録マップ(KKSV089502CC)の設定を行う
		setKKSV089502CC(param, "KKSV089502CC", editedContractorAddress);
		
		// 申込情報登録マップ(KKSV089503CC)の設定を行う
		setKKSV089503CC(param, "KKSV089503CC", ccSetteData);
		
		// 支払方法登録マップ(KKSV089504CC)の設定を行う
		setKKSV089504CC(param, "KKSV089504CC", editedContractorAddress);
		
		// eo光ネット登録マップ(KKSV089505CC)の設定を行う
		setKKSV089505CC(param, "KKSV089505CC", ccSetteData);
		
		// eo光電話登録マップ1(KKSV089506CC)の設定を行う
		setKKSV089506CC(param, "KKSV089506CC", editedLineAddress, editedBmpAddress1, ccSetteData);
		
		// eo光電話登録マップ2(KKSV089507CC)の設定を行う
		setKKSV089507CC(param, "KKSV089507CC", editedLineAddress, editedBmpAddress2, ccSetteData);
		
		// eo光テレビ登録マップ(KKSV089508CC)の設定を行う
		setKKSV089508CC(param, "KKSV089508CC", ccSetteData, editedLineAddress);
		
		// 利用場所情報登録マップ(KKSV089509CC)の設定を行う
		setKKSV089509CC(param, "KKSV089509CC", ccSetteData, editedLineAddress);
		
		// 申込画面入力支援ワーク(KKSV089501SC)の設定を行う
		setKKSV089501SC(param, "KKSV089501SC", ccSetteData);
		
		//IT1-2018-0000171 MOD START
		// 申込断面登録マップ(KKSV089512CC)の設定を行う
		setKKSV089512CC(handle, param, "KKSV089512CC", ccSetteData);
		//IT1-2018-0000171 MOD END
		
		// 申込断面XML部品マップ(MSKM_DMEN)の設定を行う
		// ANK-3604-00-00 <MOD START
		//setMSKM_DMEN(param, "MSKM_DMEN", ccSetteData, editedContractorAddress,
		//		editedLineAddress, editedBmpAddress1, editedBmpAddress2, opeDate);
		setMSKM_DMEN(param, "MSKM_DMEN", ccSetteData, contractorAddressDmen,
				lineAddressDmen, bmpAddress1Dmen, bmpAddress2Dmen, opeDate);
		// ANK-3604-00-00 <MOD END
		
		// 利用場所住所更新マップ(KKSV089515CC)の設定を行う
		setKKSV089515CC(param, "KKSV089515CC", ccSetteData);
		
		// 割引サービス自動適用マップ(KKSV089510CC)の設定を行う
		setKKSV089510CC(param, "KKSV089510CC", ccSetteData);
	}
	
	/**
	 * 契約者情報登録マップの設定を行う
	 * @param param
	 * @param fixedText
	 * @param contractorAddress
	 * @throws Throwable
	 */
	private void setKKSV089502CC(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> contractorAddress) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		// 契約者住所コード
		ccMsg.put("keisha_ad_cd", contractorAddress.get("ad_cd"));
		// 契約者郵便番号
		ccMsg.put("keisha_pcd", contractorAddress.get("pcd"));
		// 契約者都道府県名
		ccMsg.put("keisha_state_nm", contractorAddress.get("state_nm"));
		// 契約者市区町村名
		ccMsg.put("keisha_city_nm", contractorAddress.get("city_nm"));
		// 契約者大字通称名
		ccMsg.put("keisha_oaztsu_nm", contractorAddress.get("oaztsu_nm"));
		// 契約者字丁目名
		ccMsg.put("keisha_azcho_nm", contractorAddress.get("azcho_nm"));
		// 契約者番地号
		ccMsg.put("keisha_bnchigo", contractorAddress.get("bnchigo"));
		// 契約者住所補記・建物名
		ccMsg.put("keisha_adrttm", contractorAddress.get("adrttm"));
		// 契約者住所補記・部屋番号
		ccMsg.put("keisha_adrrm", contractorAddress.get("adrrm"));
		// 契約者住所手動入力フラグ
		ccMsg.put("keisha_ad_man_input_flg", contractorAddress.get("man_input_flg"));
	}
	
	/**
	 * 申込情報登録マップの設定を行う
	 * @param param
	 * @param fixedText
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void setKKSV089503CC(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		List<Map<String, Object>> addMskmList = (List<Map<String, Object>>)ccMsg.get("ADD_MSKM_LIST");
		
		for(Map<String, Object> mskm : addMskmList)
		{
			// 申込受付種別コード
			mskm.put("mkm_uk_sbt_cd", ccSetteData.get("mkm_uk_sbt_cd"));
		}
		
		// 追加申込の場合
		if (ccSetteData.get("svc_kei_no") != null)
		{
			// SYSID
			ccMsg.put("sysid", ccSetteData.get("sysid"));
			
			Map<String, Object> net_tel_dble_psb_map = new HashMap<String, Object>();
			net_tel_dble_psb_map.put("key1", ccSetteData.get("svc_kei_no"));
			ccMsg.put("net_tel_dble_psb_map", net_tel_dble_psb_map);
		}
		
		// 取扱代理店コードの設定
		List<Map<String, Object>> tokkiChgList = new ArrayList<Map<String, Object>>();
		
		Map<String, Object> agentMap1 = new HashMap<String, Object>();
		agentMap1.put("mskm_agnt_no", "001");
		agentMap1.put("dsp_jun", "1");
		agentMap1.put("agnt_cd", ccSetteData.get("trat_agnt_cd_1"));
		
		Map<String, Object> agentMap2 = new HashMap<String, Object>();
		agentMap2.put("mskm_agnt_no", "002");
		agentMap2.put("dsp_jun", "2");
		agentMap2.put("agnt_cd", ccSetteData.get("trat_agnt_cd_2"));
		
		tokkiChgList.add(agentMap1);
		tokkiChgList.add(agentMap2);
		
		ccMsg.put("tokki_chg_list", tokkiChgList);
	}
	
	/**
	 * 支払方法登録マップの設定を行う
	 * @param param
	 * @param fixedText
	 * @param contractorAddress
	 * @throws Throwable
	 */
	private void setKKSV089504CC(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> contractorAddress) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		// 送付先住所コード
		ccMsg.put("sohus_ad_cd", contractorAddress.get("ad_cd"));
		// 送付先郵便番号
		ccMsg.put("sohus_pcd", contractorAddress.get("pcd"));
		// 送付先都道府県名
		ccMsg.put("sohus_state_nm", contractorAddress.get("state_nm"));
		// 送付先市区町村名
		ccMsg.put("sohus_city_nm", contractorAddress.get("city_nm"));
		// 送付先大字通称名
		ccMsg.put("sohus_oaztsu_nm", contractorAddress.get("oaztsu_nm"));
		// 送付先字丁目名
		ccMsg.put("sohus_azcho_nm", contractorAddress.get("azcho_nm"));
		// 送付先番地号
		ccMsg.put("sohus_bnchigo", contractorAddress.get("bnchigo"));
		// 送付先住所補記・建物名
		ccMsg.put("sohus_adrttm", contractorAddress.get("adrttm"));
		// 送付先住所補記・部屋番号
		ccMsg.put("sohus_adrrm", contractorAddress.get("adrrm"));
		// 送付先住所手動入力フラグ
		ccMsg.put("sohus_ad_man_input_flg", contractorAddress.get("man_input_flg"));
	}
	
	/**
	 * eo光ネット登録マップの設定を行う
	 * @param param
	 * @param fixedText
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void setKKSV089505CC(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		// 申込受付種別コード
		ccMsg.put("kk0021_mkm_uk_sbt_cd", ccSetteData.get("mkm_uk_sbt_cd"));
		// 料金グループコード
		ccMsg.put("kk0091_prc_grp_cd", ccSetteData.get("prc_grp_cd"));
		// 料金コースコード
		ccMsg.put("kk0091_pcrs_cd", ccSetteData.get("pcrs_cd"));
		ccMsg.put("key_pcrs_cd", ccSetteData.get("pcrs_cd"));
		// 料金プランコード
		ccMsg.put("kk0091_pplan_cd", ccSetteData.get("pplan_cd"));
	}
	
	/**
	 * eo光電話登録マップ1の設定を行う
	 * @param param
	 * @param fixedText
	 * @param lineAddress
	 * @param bmpAddress1
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void setKKSV089506CC(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> lineAddress, Map<String, Object> bmpAddress1,
			Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		// 通話料指定額到達通知金額初期値
		ccMsg.put("kk0371_twryo_stiam_ttu_tchi_stiam", ccSetteData.get("twryo_stiam_ttu_tchi_stiam"));
		
		if (bmpAddress1 != null)
		{
			// NTT契約者住所コード
			ccMsg.put("kk0191_ntt_keisha_ad_cd", bmpAddress1.get("ad_cd"));
			// NTT契約者郵便番号
			ccMsg.put("kk0191_ntt_keisha_pcd", bmpAddress1.get("pcd"));
			// NTT契約者都道府県名
			ccMsg.put("kk0191_ntt_keisha_state_nm", bmpAddress1.get("state_nm"));
			// NTT契約者市区町村名
			ccMsg.put("kk0191_ntt_keisha_city_nm", bmpAddress1.get("city_nm"));
			// NTT契約者大字通称名
			ccMsg.put("kk0191_ntt_keisha_oaztsu_nm", bmpAddress1.get("oaztsu_nm"));
			// NTT契約者字丁目名
			ccMsg.put("kk0191_ntt_keisha_azcho_nm", bmpAddress1.get("azcho_nm"));
			// NTT契約者番地号
			ccMsg.put("kk0191_ntt_keisha_bnchigo", bmpAddress1.get("bnchigo"));
			// NTT契約者住所補記・建物名
			ccMsg.put("kk0191_ntt_keisha_adrttm", bmpAddress1.get("adrttm"));
			// NTT契約者住所補記・部屋番号
			ccMsg.put("kk0191_ntt_keisha_adrrm", bmpAddress1.get("adrrm"));
			// NTT契約者住所手動入力フラグ
			ccMsg.put("kk0191_nkys_ad_man_input_flg", bmpAddress1.get("man_input_flg"));
		}
		
		// 新規申込の場合
		if (ccSetteData.get("svc_kei_no") == null)
		{
			// 緊急通報用住所コード
			ccMsg.put("kk0191_emg_ad_cd", lineAddress.get("ad_cd"));
			// 緊急通報用補正郵便番号
			ccMsg.put("kk0191_emg_hosei_pcd", lineAddress.get("pcd"));
			// 緊急通報用都道府県名
			ccMsg.put("kk0191_emg_state_nm", lineAddress.get("state_nm"));
			// 緊急通報用市区町村名
			ccMsg.put("kk0191_emg_city_nm", lineAddress.get("city_nm"));
			// 緊急通報用大字通称名
			ccMsg.put("kk0191_emg_oaztsu_nm", lineAddress.get("oaztsu_nm"));
			// 緊急通報用字丁目名
			ccMsg.put("kk0191_emg_azcho_nm", lineAddress.get("azcho_nm"));
			// 緊急通報用番地号
			ccMsg.put("kk0191_emg_bnchigo", lineAddress.get("bnchigo"));
			// 緊急通報用住所補記・建物名
			ccMsg.put("kk0191_emg_adrttm", lineAddress.get("adrttm"));
			// 緊急通報用住所補記・部屋番号
			ccMsg.put("kk0191_emg_adrrm", lineAddress.get("adrrm"));
		}
		// サービス追加の場合
		else
		{
			// サービス契約<eo光電話>.請求契約番号
			ccMsg.put("kk0111_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
			// サービス契約<eo光電話>.SYSID
			ccMsg.put("kk0111_sysid", ccSetteData.get("sysid"));
			// サービス契約内訳<eo光電話>.請求契約番号
			ccMsg.put("kk0191_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
			// 回線対象サービス契約.サービス契約回線内訳
			ccMsg.put("kk0241_svc_kei_kaisen_ucwk_no", ccSetteData.get("svc_kei_kaisen_ucwk_no"));
			// オプションサービス契約<電話>.SYSID
			ccMsg.put("kk0371_sysid", ccSetteData.get("sysid"));
			// オプションサービス契約<電話>.請求契約番号
			ccMsg.put("kk0371cmn_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
			// オプションサービス契約<電話>.SYSID
			ccMsg.put("kk0371cmn_sysid", ccSetteData.get("sysid"));
			
			// 追加時の電話共通設定を行う
			setAddTelCmn(ccMsg, ccSetteData);
		}
	}
	
	/**
	 * eo光電話登録マップ2の設定を行う
	 * @param param
	 * @param fixedText
	 * @param lineAddress
	 * @param bmpAddress2
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void setKKSV089507CC(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> lineAddress, Map<String, Object> bmpAddress2,
			Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		if (bmpAddress2 != null)
		{
			// NTT契約者住所コード
			ccMsg.put("kk0191_ntt_keisha_ad_cd", bmpAddress2.get("ad_cd"));
			// NTT契約者郵便番号
			ccMsg.put("kk0191_ntt_keisha_pcd", bmpAddress2.get("pcd"));
			// NTT契約者都道府県名
			ccMsg.put("kk0191_ntt_keisha_state_nm", bmpAddress2.get("state_nm"));
			// NTT契約者市区町村名
			ccMsg.put("kk0191_ntt_keisha_city_nm", bmpAddress2.get("city_nm"));
			// NTT契約者大字通称名
			ccMsg.put("kk0191_ntt_keisha_oaztsu_nm", bmpAddress2.get("oaztsu_nm"));
			// NTT契約者字丁目名
			ccMsg.put("kk0191_ntt_keisha_azcho_nm", bmpAddress2.get("azcho_nm"));
			// NTT契約者番地号
			ccMsg.put("kk0191_ntt_keisha_bnchigo", bmpAddress2.get("bnchigo"));
			// NTT契約者住所補記・建物名
			ccMsg.put("kk0191_ntt_keisha_adrttm", bmpAddress2.get("adrttm"));
			// NTT契約者住所補記・部屋番号
			ccMsg.put("kk0191_ntt_keisha_adrrm", bmpAddress2.get("adrrm"));
			// NTT契約者住所手動入力フラグ
			ccMsg.put("kk0191_nkys_ad_man_input_flg", bmpAddress2.get("man_input_flg"));
		}
		
		// 通話料指定額到達通知金額初期値
		ccMsg.put("kk0371_twryo_stiam_ttu_tchi_stiam", ccSetteData.get("twryo_stiam_ttu_tchi_stiam"));
		
		// 新規申込の場合
		if (ccSetteData.get("svc_kei_no") == null)
		{
			// 緊急通報用住所コード
			ccMsg.put("kk0191_emg_ad_cd", lineAddress.get("ad_cd"));
			// 緊急通報用補正郵便番号
			ccMsg.put("kk0191_emg_hosei_pcd", lineAddress.get("pcd"));
			// 緊急通報用都道府県名
			ccMsg.put("kk0191_emg_state_nm", lineAddress.get("state_nm"));
			// 緊急通報用市区町村名
			ccMsg.put("kk0191_emg_city_nm", lineAddress.get("city_nm"));
			// 緊急通報用大字通称名
			ccMsg.put("kk0191_emg_oaztsu_nm", lineAddress.get("oaztsu_nm"));
			// 緊急通報用字丁目名
			ccMsg.put("kk0191_emg_azcho_nm", lineAddress.get("azcho_nm"));
			// 緊急通報用番地号
			ccMsg.put("kk0191_emg_bnchigo", lineAddress.get("bnchigo"));
			// 緊急通報用住所補記・建物名
			ccMsg.put("kk0191_emg_adrttm", lineAddress.get("adrttm"));
			// 緊急通報用住所補記・部屋番号
			ccMsg.put("kk0191_emg_adrrm", lineAddress.get("adrrm"));
		}
		// サービス追加の場合
		else
		{
			// オプションサービス契約<電話>.SYSID
			ccMsg.put("kk0371_sysid", ccSetteData.get("sysid"));
			// オプションサービス契約<電話>.請求契約番号
			ccMsg.put("kk0371cmn_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
			// オプションサービス契約<電話>.SYSID
			ccMsg.put("kk0371cmn_sysid", ccSetteData.get("sysid"));
			
			// 追加時の電話共通設定を行う
			setAddTelCmn(ccMsg, ccSetteData);
		}
	}
	
	/**
	 * eo光電話追加時の共通設定を行う
	 * @param ccMsg
	 * @param ccSetteData
	 */
	private void setAddTelCmn(Map<String, Object> ccMsg, Map<String, Object> ccSetteData)
	{
		if (ccMsg == null)
		{
			return;
		}
		
		// 緊急通報用住所コード
		ccMsg.put("kk0191_emg_ad_cd", ccSetteData.get("kaisen_place_ad_cd"));
		// 緊急通報用補正郵便番号
		ccMsg.put("kk0191_emg_hosei_pcd", ccSetteData.get("kaisen_place_pcd"));
		// 緊急通報用都道府県名
		ccMsg.put("kk0191_emg_state_nm", ccSetteData.get("kaisen_place_state_nm"));
		// 緊急通報用市区町村名
		ccMsg.put("kk0191_emg_city_nm", ccSetteData.get("kaisen_place_city_nm"));
		// 緊急通報用大字通称名
		ccMsg.put("kk0191_emg_oaztsu_nm", ccSetteData.get("kaisen_place_oaztsu_nm"));
		// 緊急通報用字丁目名
		ccMsg.put("kk0191_emg_azcho_nm", ccSetteData.get("kaisen_place_azcho_nm"));
		// 緊急通報用番地号
		ccMsg.put("kk0191_emg_bnchigo", ccSetteData.get("kaisen_place_bnchigo"));
		// 緊急通報用住所補記・建物名
		ccMsg.put("kk0191_emg_adrttm", ccSetteData.get("kaisen_place_adrttm"));
		// 緊急通報用住所補記・部屋番号
		ccMsg.put("kk0191_emg_adrrm", ccSetteData.get("kaisen_place_adrrm"));
		// 緊急通報用契約者名
		ccMsg.put("kk0191_emg_ksh_nm", ccSetteData.get("cust_nm"));
		// 緊急通報用契約者名(カナ)
		ccMsg.put("kk0191_emg_ksh_kana", ccSetteData.get("cust_kana"));
		
		// eo光電話パックリストの設定
		if (ccMsg.get("add_eohtl_pack_list") != null)
		{
			List<Map<String, Object>> addEohtlPackList = (List<Map<String, Object>>)ccMsg.get("add_eohtl_pack_list");
			for (Map<String, Object> addEohtlPack : addEohtlPackList)
			{
				// SYSID
				addEohtlPack.put("sysid", ccSetteData.get("sysid"));
			}
		}
		
		// オプションサービスリストの設定
		if (ccMsg.get("OPT_SVC_LIST") != null)
		{
			List<Map<String, Object>> optSvcList = (List<Map<String, Object>>)ccMsg.get("OPT_SVC_LIST");
			for (Map<String, Object> optSvc : optSvcList)
			{
				// オプションサービス契約<電話>.SYSID
				optSvc.put("kk0371_sysid", ccSetteData.get("sysid"));
				// オプションサービス契約<電話>.請求契約番号
				optSvc.put("kk0371_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
			}
		}
		
		// サブオプションサービスリストの設定
		if (ccMsg.get("kk0431_add_sbop_svc_kei_list") != null)
		{
			List<Map<String, Object>> sbopSvcKeiList = (List<Map<String, Object>>)ccMsg.get("kk0431_add_sbop_svc_kei_list");
			for (Map<String, Object> sbopSvcKei : sbopSvcKeiList)
			{
				// サブオプションサービス契約<電話>
				sbopSvcKei.put("kk0431_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
			}
		}
	}
	
	
	/**
	 * eo光テレビ登録マップの設定を行う
	 * @param param
	 * @param fixedText
	 * @param ccSetteData
	 * @param lineAddress
	 * @throws Throwable
	 */
	private void setKKSV089508CC(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> ccSetteData, Map<String, Object> lineAddress) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		// 申込受付種別コード
		ccMsg.put("kk0021_mkm_uk_sbt_cd", ccSetteData.get("mkm_uk_sbt_cd"));
		
		// 機器提供サービス契約リストの取得
		List<Map<String, Object>> kktkSvcKeiList = (List<Map<String, Object>>)ccMsg.get("kktk_svc_kei_list");
		
		// 機器提供サービス契約の設定
		setKktkSvcKei(kktkSvcKeiList, lineAddress, ccSetteData);
		
		// サービス追加の場合
		if (ccSetteData.get("svc_kei_no") != null)
		{
			// 申込明細.SYSID
			ccMsg.put("kk0021_sysid", ccSetteData.get("sysid"));
			// サービス契約<eo光TV>.請求契約番号
			ccMsg.put("kk0101_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
			// サービス契約<eo光TV>.SYSID
			ccMsg.put("kk0101_sysid", ccSetteData.get("sysid"));
			// 回線対象サービス契約.サービス回線内訳番号
			ccMsg.put("kk0241_svc_kei_kaisen_ucwk_no", ccSetteData.get("svc_kei_kaisen_ucwk_no"));
			// オプションサービス契約<TV>.請求契約番号
			ccMsg.put("kk0381_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
			// オプションサービス契約<TV>.SYSID
			ccMsg.put("kk0381_sysid", ccSetteData.get("sysid"));
			
			// サービス内訳リストの設定
			if (ccMsg.get("svc_kei_ucwk_list") != null)
			{
				List<Map<String, Object>> ucwkList = (List<Map<String, Object>>)ccMsg.get("svc_kei_ucwk_list");
				
				for (Map<String, Object> ucwk : ucwkList)
				{
					// サービス契約内訳<eo光TV>.請求契約番号
					ucwk.put("kk0181_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
				}
			}
			
			// 機器提供リストの設定
			if (ccMsg.get("kktk_svc_kei_list") != null)
			{
				List<Map<String, Object>> kktkList = (List<Map<String, Object>>)ccMsg.get("kktk_svc_kei_list");
				
				for (Map<String, Object> kktk : kktkList)
				{
					// 機器提供サービス契約.SYSID
					kktk.put("kk0341_sysid", ccSetteData.get("sysid"));
					// 機器提供サービス契約.請求契約番号
					kktk.put("kk0341_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
				}
			}
			
			// テレビ申込が"3"（地デジ・ＢＳスターチャンネルセット）であった場合
			if ("3".equals(ccSetteData.get("tvEntry")))
			{
				Map<String, Object> addStarChannelSetMap = (Map<String, Object>)ccMsg.get("addStarChannelSetMap");
				
				// SYSIDを設定する
				addStarChannelSetMap.put("sysid", ccSetteData.get("sysid"));
			}
			
		}
	}
	
	/**
	 * 利用場所情報登録マップの設定を行う
	 * @param param
	 * @param fixedText
	 * @param ccSetteData
	 * @param lineAddress
	 * @throws Throwable
	 */
	private void setKKSV089509CC(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> ccSetteData, Map<String, Object> lineAddress) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		// 契約者＿機器送付先住所コード
		ccMsg.put("ksh_kiki_sohus_ad_cd", lineAddress.get("ad_cd"));
		// 契約者＿機器送付先郵便番号
		ccMsg.put("ksh_kiki_sohus_pcd", lineAddress.get("pcd"));
		// 契約者＿機器送付先都道府県名
		ccMsg.put("ksh_kiki_sohus_state_nm", lineAddress.get("state_nm"));
		// 契約者＿機器送付先市区町村名
		ccMsg.put("ksh_kiki_sohus_city_nm", lineAddress.get("city_nm"));
		// 契約者＿機器送付先大字通称名
		ccMsg.put("ksh_kiki_sohus_oaztsu_nm", lineAddress.get("oaztsu_nm"));
		// 契約者＿機器送付先字丁目名
		ccMsg.put("ksh_kiki_sohus_azcho_nm", lineAddress.get("azcho_nm"));
		// 契約者＿機器送付先番地号
		ccMsg.put("ksh_kiki_sohus_bnchigo", lineAddress.get("bnchigo"));
		// 契約者＿機器送付先住所補記・建物名
		ccMsg.put("ksh_kiki_sohus_adrttm", lineAddress.get("adrttm"));
		// 契約者＿機器送付先住所補記・部屋番号
		ccMsg.put("ksh_kiki_sohus_adrrm", lineAddress.get("adrrm"));
		// 契約者＿機器送付先住所手動入力フラグ
		ccMsg.put("ksh_kiki_shs_ad_man_input_flg", lineAddress.get("man_input_flg"));
		
		// 回線場所住所コード
		ccMsg.put("kaisen_place_ad_cd", lineAddress.get("ad_cd"));
		// 回線場所郵便番号
		ccMsg.put("kaisen_place_pcd", lineAddress.get("pcd"));
		// 回線場所都道府県名
		ccMsg.put("kaisen_place_state_nm", lineAddress.get("state_nm"));
		// 回線場所市区町村名
		ccMsg.put("kaisen_place_city_nm", lineAddress.get("city_nm"));
		// 回線場所大字通称名
		ccMsg.put("kaisen_place_oaztsu_nm", lineAddress.get("oaztsu_nm"));
		// 回線場所字丁目名
		ccMsg.put("kaisen_place_azcho_nm", lineAddress.get("azcho_nm"));
		// 回線場所番地号
		ccMsg.put("kaisen_place_bnchigo", lineAddress.get("bnchigo"));
		// 回線場所住所補記・建物名
		ccMsg.put("kaisen_place_adrttm", lineAddress.get("adrttm"));
		// 回線場所住所補記・部屋番号
		ccMsg.put("kaisen_place_adrrm", lineAddress.get("adrrm"));
		
		// X座標（文字型）
		String strX = (String)ccMsg.get("xzahyo");
		// Y座標（文字型）
		String strY = (String)ccMsg.get("yzahyo");
		
		// X座標
		double x = Double.parseDouble(strX);
		// Y座標
		double y = Double.parseDouble(strY);
		
		// 緯度・経度の算出
		// ※国土地理院では兵庫県は5系であるが、全てを6系として扱う
		// ※eoでは国土地理院とは扱いが異なり、xが経度方向(東:+/西:-)、yが緯度方向(北:+、南:-)
		//   となるため、緯度経度算出時はX座標とY座標を入れ替える
		XYWithZone tokyoXy = new XYWithZone(y, x,
				new BasisWithZone(Unit.DEGREE, Detum.TOKYO, ZoneId._6));

		String lat = String.valueOf(tokyoXy.toLatLonWithZone().getLat());
		String lon = String.valueOf(tokyoXy.toLatLonWithZone().getLon());

		BigDecimal latbd = new BigDecimal(lat);
		BigDecimal lonbd = new BigDecimal(lon);

		// 緯度
		ccMsg.put("lttd", latbd.setScale(6, BigDecimal.ROUND_HALF_UP).toString());
		// 経度
		ccMsg.put("lgtd", lonbd.setScale(6, BigDecimal.ROUND_HALF_UP).toString());
		
		// X座標
		ccMsg.put("xzahyo", strX);
		// Y座標
		ccMsg.put("yzahyo", strY);
		
		// 機器提供サービス契約リストの取得
		List<Map<String, Object>> kktkSvcKeiList = (List<Map<String, Object>>)ccMsg.get("kktk_svc_kei_list");
		
		// 機器提供サービス契約の設定を行う
		setKktkSvcKei(kktkSvcKeiList, lineAddress, ccSetteData);
		
		// サービスカウント
		int svcCnt = (Integer)ccMsg.get("svcCnt");
		
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		Map<String, Object> childMap = new HashMap<String, Object>();
		
		// サービス分の空マップを生成する（サービス契約回線内訳の登録箇所でエラーとなる為）
		for(int i = 0; i < svcCnt; i++)
		{
			list.add(childMap);
			childMap = new HashMap<String, Object>();
		}
		
		ccMsg.put("EKK0251D010CBSMsg1List", list);
	}
	
	/**
	 * 機器提供サービス契約の設定を行う
	 * @param kktkSvcKeiList
	 * @param address
	 * @param ccSetteData
	 */
	private void setKktkSvcKei(List<Map<String, Object>> kktkSvcKeiList,
			Map<String, Object> address, Map<String, Object> ccSetteData)
	{
		if (kktkSvcKeiList == null)
		{
			return;
		}
		
		for (Map<String, Object> kktkSvcKei : kktkSvcKeiList)
		{
			// 機器引当指定倉庫コード
			kktkSvcKei.put("kk0341_kiki_hkat_shitei_soko_cd", ccSetteData.get("soko_cd"));
			// 機器引当指定倉庫棚コード
			kktkSvcKei.put("kk0341_kiki_hkat_shitei_skdn_cd", ccSetteData.get("shelf_cd"));
			
			// サービス追加の場合
			if (ccSetteData.get("svc_kei_no") != null)
			{
				// 機器送付先住所コード
				kktkSvcKei.put("kk0341_kiki_sohus_ad_cd", ccSetteData.get("kaisen_place_ad_cd"));
				// 機器送付先郵便番号
				kktkSvcKei.put("kk0341_kiki_sohus_pcd", ccSetteData.get("kaisen_place_pcd"));
				// 機器送付先都道府県名
				kktkSvcKei.put("kk0341_kiki_sohus_state_nm", ccSetteData.get("kaisen_place_state_nm"));
				// 機器送付先市区町村名
				kktkSvcKei.put("kk0341_kiki_sohus_city_nm", ccSetteData.get("kaisen_place_city_nm"));
				// 機器送付先大字通称名
				kktkSvcKei.put("kk0341_kiki_sohus_oaztsu_nm", ccSetteData.get("kaisen_place_oaztsu_nm"));
				// 機器送付先字丁目名
				kktkSvcKei.put("kk0341_kiki_sohus_azcho_nm", ccSetteData.get("kaisen_place_azcho_nm"));
				// 機器送付先番地号
				kktkSvcKei.put("kk0341_kiki_sohus_bnchigo", ccSetteData.get("kaisen_place_bnchigo"));
				// 機器送付先住所補記・建物名
				kktkSvcKei.put("kk0341_kiki_sohus_adrttm", ccSetteData.get("kaisen_place_adrttm"));
				// 機器送付先住所補記・部屋番号
				kktkSvcKei.put("kk0341_kiki_sohus_adrrm", ccSetteData.get("kaisen_place_adrrm"));
				// 機器送付先住所手動入力フラグ
				kktkSvcKei.put("kk0341_kiki_shs_ad_man_input_flg", "0");
				
				// 機器設置先住所コード
				kktkSvcKei.put("kk0341_kiki_stc_saki_ad_cd", ccSetteData.get("kaisen_place_ad_cd"));
				// 機器設置先郵便番号
				kktkSvcKei.put("kk0341_kiki_stc_saki_pcd", ccSetteData.get("kaisen_place_pcd"));
				// 機器設置先都道府県名
				kktkSvcKei.put("kk0341_kiki_stc_saki_state_nm", ccSetteData.get("kaisen_place_state_nm"));
				// 機器設置先市区町村名
				kktkSvcKei.put("kk0341_kiki_stc_saki_city_nm", ccSetteData.get("kaisen_place_city_nm"));
				// 機器設置先大字通称名
				kktkSvcKei.put("kk0341_kiki_stc_saki_oaztsu_nm", ccSetteData.get("kaisen_place_oaztsu_nm"));
				// 機器設置先字丁目名
				kktkSvcKei.put("kk0341_kiki_stc_saki_azcho_nm", ccSetteData.get("kaisen_place_azcho_nm"));
				// 機器設置先番地号
				kktkSvcKei.put("kk0341_kiki_stc_saki_bnchigo", ccSetteData.get("kaisen_place_bnchigo"));
				// 機器設置先住所補記・建物名
				kktkSvcKei.put("kk0341_kiki_stc_saki_adrttm", ccSetteData.get("kaisen_place_adrttm"));
				// 機器設置先住所補記・部屋番号
				kktkSvcKei.put("kk0341_kiki_stc_saki_adrrm", ccSetteData.get("kaisen_place_adrrm"));
				// 機器送付先_契約者住所差異フラグ
				kktkSvcKei.put("kk0341_kiki_sohus_ksh_ad_sai_flg", "0");
				// 機器送付先_契約者住所差異フラグ
				kktkSvcKei.put("kk0341_kiki_stc_sk_ksh_ad_sai_flg", "0");
				// 機器送付先住所個別指定フラグ
				kktkSvcKei.put("kk0341_kiki_shs_kbt_shitei_flg", "1");
				// SYSID
				kktkSvcKei.put("kk0341_sysid", ccSetteData.get("sysid"));
				// 請求契約番号
				kktkSvcKei.put("kk0341_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
				// 機器送付先名
				kktkSvcKei.put("kk0341_kiki_sohus_nm", ccSetteData.get("cust_nm"));
				// 機器送付先カナ名
				kktkSvcKei.put("kk0341_kiki_sohus_kana", ccSetteData.get("cust_kana"));
				// 機器送付先電話番号
				kktkSvcKei.put("kk0341_kiki_sohus_telno", ccSetteData.get("keisha_telno"));
				// 機器設置先電話番号
				kktkSvcKei.put("kk0341_kiki_stc_sk_telno", ccSetteData.get("keisha_telno"));
				
				// ＯＮＵ、Ｖ−ＯＮＵ、モデム、多機能ルーターの場合
				if (JKKStrConst.CD00132_ONU.equals(kktkSvcKei.get("kk0341_kktk_svc_cd")) ||
						JKKStrConst.CD00132_VONU.equals(kktkSvcKei.get("kk0341_kktk_svc_cd")) ||
						JKKStrConst.CD00132_MODEM.equals(kktkSvcKei.get("kk0341_kktk_svc_cd")) ||
						JKKStrConst.KKTK_SVC_CD_TAKINORT.equals(kktkSvcKei.get("kk0341_kktk_svc_cd")))
				{
					// サービス契約回線内訳番号
					kktkSvcKei.put("kk0341_svc_kei_kaisen_ucwk_no", ccSetteData.get("svc_kei_kaisen_ucwk_no"));
					
					if (JKKStrConst.KKTK_SVC_CD_TAKINORT.equals(kktkSvcKei.get("kk0341_kktk_svc_cd")))
					{
						kktkSvcKei.put("kk0341_kktk_svc_kei_no", ccSetteData.get("takinort_kktk_svc_kei_no"));
					}
				}
			}
			else
			{
				// 機器送付先住所コード
				kktkSvcKei.put("kk0341_kiki_sohus_ad_cd", address.get("ad_cd"));
				// 機器送付先郵便番号
				kktkSvcKei.put("kk0341_kiki_sohus_pcd", address.get("pcd"));
				// 機器送付先都道府県名
				kktkSvcKei.put("kk0341_kiki_sohus_state_nm", address.get("state_nm"));
				// 機器送付先市区町村名
				kktkSvcKei.put("kk0341_kiki_sohus_city_nm", address.get("city_nm"));
				// 機器送付先大字通称名
				kktkSvcKei.put("kk0341_kiki_sohus_oaztsu_nm", address.get("oaztsu_nm"));
				// 機器送付先字丁目名
				kktkSvcKei.put("kk0341_kiki_sohus_azcho_nm", address.get("azcho_nm"));
				// 機器送付先番地号
				kktkSvcKei.put("kk0341_kiki_sohus_bnchigo", address.get("bnchigo"));
				// 機器送付先住所補記・建物名
				kktkSvcKei.put("kk0341_kiki_sohus_adrttm", address.get("adrttm"));
				// 機器送付先住所補記・部屋番号
				kktkSvcKei.put("kk0341_kiki_sohus_adrrm", address.get("adrrm"));
				// 機器送付先住所手動入力フラグ
				kktkSvcKei.put("kk0341_kiki_shs_ad_man_input_flg", address.get("man_input_flg"));
				
				// 機器設置先住所コード
				kktkSvcKei.put("kk0341_kiki_stc_saki_ad_cd", address.get("ad_cd"));
				// 機器設置先郵便番号
				kktkSvcKei.put("kk0341_kiki_stc_saki_pcd", address.get("pcd"));
				// 機器設置先都道府県名
				kktkSvcKei.put("kk0341_kiki_stc_saki_state_nm", address.get("state_nm"));
				// 機器設置先市区町村名
				kktkSvcKei.put("kk0341_kiki_stc_saki_city_nm", address.get("city_nm"));
				// 機器設置先大字通称名
				kktkSvcKei.put("kk0341_kiki_stc_saki_oaztsu_nm", address.get("oaztsu_nm"));
				// 機器設置先字丁目名
				kktkSvcKei.put("kk0341_kiki_stc_saki_azcho_nm", address.get("azcho_nm"));
				// 機器設置先番地号
				kktkSvcKei.put("kk0341_kiki_stc_saki_bnchigo", address.get("bnchigo"));
				// 機器設置先住所補記・建物名
				kktkSvcKei.put("kk0341_kiki_stc_saki_adrttm", address.get("adrttm"));
				// 機器設置先住所補記・部屋番号
				kktkSvcKei.put("kk0341_kiki_stc_saki_adrrm", address.get("adrrm"));
			}
		}
	}
	
	/**
	 * 申込画面入力支援ワークの設定を行う
	 * @param param
	 * @param fixedText
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void setKKSV089501SC(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		// サービス追加の場合
		if (ccSetteData.get("svc_kei_no") != null)
		{
			// 追加元サービス契約番号
			ccMsg.put("add_moto_svc_kei_no", ccSetteData.get("svc_kei_no"));
			
			// 番ポ有無1が"1"（番ポ）の場合
			if ("1".equals(ccMsg.get("numberPortability1")))
			{
				// 氏名と番ポ契約者名1の差異確認
				if (ccSetteData.get("cust_nm").equals(ccMsg.get("numberPortabilityName1")))
				{
					// NTT契約者名_契約者名差異フラグ1 ← "0"(無)
					ccMsg.put("nkys_nm_ksh_nm_sai_flg_1", "0");
				}
				else
				{
					// NTT契約者名_契約者名差異フラグ1 ← "1"(有)
					ccMsg.put("nkys_nm_ksh_nm_sai_flg_1", "1");
				}
			}
			
			// 番ポ有無2が"1"（番ポ）の場合
			if ("1".equals(ccMsg.get("numberPortability2")))
			{
				// 氏名と番ポ契約者名2の差異確認
				if (ccSetteData.get("cust_nm").equals(ccMsg.get("numberPortabilityName2")))
				{
					// NTT契約者名_契約者名差異フラグ2 ← "0"(無)
					ccMsg.put("nkys_nm_ksh_nm_sai_flg_2", "0");
				}
				else
				{
					// NTT契約者名_契約者名差異フラグ2 ← "1"(有)
					ccMsg.put("nkys_nm_ksh_nm_sai_flg_2", "1");
				}
			}
		}
	}
	
	/**
	 * 申込断面の設定を行う
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param ccSetteData
	 * @throws Throwable
	 */
	//IT1-2018-0000171 MOD START
	private void setKKSV089512CC(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> ccSetteData) throws Throwable
	{
	//IT1-2018-0000171 MOD END
	//IT1-2018-0000171 ADD START
		// SC呼び出し部品のインスタンス生成
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
	//IT1-2018-0000171 ADD END	
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		// サービス追加の場合
		if (ccSetteData.get("svc_kei_no") != null)
		{
			// お客様カナ名
			ccMsg.put("cust_kana", ccSetteData.get("cust_kana"));
			// 契約者電話番号
			ccMsg.put("keisha_telno", ccSetteData.get("keisha_telno"));
		}
		
		// 取扱代理店設定
		ccMsg.put("agnt_cd_1_1", ccSetteData.get("trat_agnt_cd_1"));
		ccMsg.put("agnt_cd_1_2", ccSetteData.get("trat_agnt_cd_2"));
		
		// 申込受付種別コード
		ccMsg.put("mkm_uk_sbt_cd", ccSetteData.get("mkm_uk_sbt_cd"));
		//IT1-2018-0000171 ADD START
		Map<String, Object> mskmDmenMap = (Map<String, Object>)param.getData("MSKM_DMEN");
		
		mskmDmenMap.put("mskm_sbt", ccSetteData.get("mkm_uk_sbt_cd"));
		
		String mkmUkSbtCd = (String)ccSetteData.get("mkm_uk_sbt_cd");
		
		// コード名称管理コード区分一覧照会上りマッピング
		Object[][] ezm0171b012In =
		{
			{EZM0171B012CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0171B012},
			{EZM0171B012CBSMsg.FUNC_CODE,  "1"},
			{EZM0171B012CBSMsg.KEY_STDARDYMD, JPCBPCommon.getOpeDate(null)},
			{EZM0171B012CBSMsg.KEY_CD_SBT_CD, "CD01270"}
		};
		// コード名称管理コード区分一覧照会を実行
		CAANMsg[] ezm0171b012Msg1List = callSC(handle, scCall, param, fixedText, ezm0171b012In,
				new EZM0171B012CBSMsg().getContents()).getCAANMsgList(EZM0171B012CBSMsg.EZM0171B012CBSMSG1LIST);
		//ezm0171b012Msg1Listに取得したコード名称管理スキーマ全量CD_SBT_CD=CD01270がいる。for文で回してCD_DIVとmkmUkSbtCdRsltに入っている申込種別コード(ForY)が一致したとき卸先事業者名称を取得
		for (int i = 0; i < ezm0171b012Msg1List.length ; i++)
		{
			String cdDiv = ezm0171b012Msg1List[i].getString(EZM0171B012CBSMsg1List.CD_DIV);
			//コード区分と申込種別コードが一致したときにコード区分名を取得
			if (cdDiv.equals(mkmUkSbtCd))
			{
				// 申込種別（表示用）
				mskmDmenMap.put("mskm_sbt_screen", String.valueOf(i + 1) + "." + ezm0171b012Msg1List[i].getString(EZM0171B012CBSMsg1List.CD_DIV_NM));
			}
		}				
//		//IT1-2018-0000171 ADD END
	}
	
	/**
	 * 申込断面XML部品の設定を行う
	 * @param param
	 * @param fixedText
	 * @param ccSetteData
	 * @param contractorAddress
	 * @param lineAddress
	 * @param bmpAddress1
	 * @param bmpAddress2
	 * @param opeDate
	 * @throws Throwable
	 */
	private void setMSKM_DMEN(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> ccSetteData, Map<String, Object> contractorAddress,
			Map<String, Object> lineAddress, Map<String, Object> bmpAddress1,
			Map<String, Object> bmpAddress2, String opeDate) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		// 新規申込の場合
		if (ccSetteData.get("svc_kei_no") == null)
		{
			// 新規申込時の住所情報を断面用に設定する
			setMskmDmenAddrInfoNew(ccMsg, contractorAddress, lineAddress, ccSetteData);
		}
		// サービス追加の場合
		else
		{
			// サービス追加時の住所情報を断面用に設定する
			setMskmDmenAddrInfoAdd(ccMsg, ccSetteData);
			
			// サービス追加時のその他断面項目を設定する
			setMskmDmenOtherAdd(ccMsg, ccSetteData, opeDate);
		}
		
		if (bmpAddress1 != null && bmpAddress1.get("pcd") != null)
		{
			// １番号 郵便番号
			String bmpPcd1 = (String)bmpAddress1.get("pcd");
			// １番号　ご住所
			StringBuilder bmpAd1 = new StringBuilder();
			// ANK-3604-00-00 <MOD START
			//bmpAd1.append(bmpAddress1.get("state_nm")).append("　")
			//	.append(bmpAddress1.get("city_nm")).append("　")
			//	.append(bmpAddress1.get("oaztsu_nm")).append("　")
			//	.append(bmpAddress1.get("azcho_nm")).append("　")
			//	.append(bmpAddress1.get("bnchigo")).append("　")
			//	.append(bmpAddress1.get("adrttm")).append("　")
			//	.append(bmpAddress1.get("adrrm"));
			//
			//// １番号．郵便番号（前）
			//ccMsg.put("tel1_ntt_keisha_pcd_bf", bmpPcd1.substring(0, 3));
			//// １番号．郵便番号（後）
			//ccMsg.put("tel1_ntt_keisha_pcd_af", bmpPcd1.substring(3));
			//// １番号目．都道府県
			//ccMsg.put("tel1_ntt_keisha_state_nm", bmpAddress1.get("state_nm"));
			//// １番号目．市区町村
			//ccMsg.put("tel1_ntt_keisha_city_nm", bmpAddress1.get("city_nm"));
			//// １番号目．大字通称名
			//ccMsg.put("tel1_ntt_keisha_oaztsu_nm", bmpAddress1.get("oaztsu_nm"));
			//// １番号目．字丁目名
			//ccMsg.put("tel1_ntt_keisha_azcho_nm", bmpAddress1.get("azcho_nm"));
			//// １番号目．番地・号
			//ccMsg.put("tel1_ntt_keisha_bnchigo", bmpAddress1.get("bnchigo"));
			//// １番号目．建物名等
			//ccMsg.put("tel1_ntt_keisha_adrttm", bmpAddress1.get("adrttm"));
			//// １番号目．部屋番号等
			//ccMsg.put("tel1_ntt_keisha_adrrm", bmpAddress1.get("adrrm"));
			bmpAd1.append(JKKStringUtil.nullToBlank((String)bmpAddress1.get("state_nm"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress1.get("city_nm"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress1.get("oaztsu_nm"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress1.get("azcho_nm"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress1.get("bnchigo"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress1.get("adrttm"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress1.get("adrrm")));
			
			// １番号．郵便番号（前）
			ccMsg.put("tel1_ntt_keisha_pcd_bf", bmpPcd1.substring(0, 3));
			// １番号．郵便番号（後）
			ccMsg.put("tel1_ntt_keisha_pcd_af", bmpPcd1.substring(3));
			// １番号目．都道府県
			ccMsg.put("tel1_ntt_keisha_state_nm", JKKStringUtil.nullToBlank((String)bmpAddress1.get("state_nm")));
			// １番号目．市区町村
			ccMsg.put("tel1_ntt_keisha_city_nm", JKKStringUtil.nullToBlank((String)bmpAddress1.get("city_nm")));
			// １番号目．大字通称名
			ccMsg.put("tel1_ntt_keisha_oaztsu_nm", JKKStringUtil.nullToBlank((String)bmpAddress1.get("oaztsu_nm")));
			// １番号目．字丁目名
			ccMsg.put("tel1_ntt_keisha_azcho_nm", JKKStringUtil.nullToBlank((String)bmpAddress1.get("azcho_nm")));
			// １番号目．番地・号
			ccMsg.put("tel1_ntt_keisha_bnchigo", JKKStringUtil.nullToBlank((String)bmpAddress1.get("bnchigo")));
			// １番号目．建物名等
			ccMsg.put("tel1_ntt_keisha_adrttm", JKKStringUtil.nullToBlank((String)bmpAddress1.get("adrttm")));
			// １番号目．部屋番号等
			ccMsg.put("tel1_ntt_keisha_adrrm", JKKStringUtil.nullToBlank((String)bmpAddress1.get("adrrm")));
			// ANK-3604-00-00 <MOD END
			// １番号．ご住所
			ccMsg.put("tel1_ntt_keisha_ad_screen", bmpAd1.toString());
			
			// 電話サービス提供事業者
			if (ccSetteData.get("tel1_tsjgs_nm") != null)
			{
				ccMsg.put("tel1_tsjgs_nm_cfm_screen", ccSetteData.get("tel1_tsjgs_nm"));
			}
		}
		
		if (bmpAddress2 != null && bmpAddress2.get("pcd") != null)
		{
			// ２番号 郵便番号
			String bmpPcd2 = (String) bmpAddress2.get("pcd");
			// ２番号　ご住所
			StringBuilder bmpAd2 = new StringBuilder();
			// ANK-3604-00-00 <MOD START
			//bmpAd2.append(bmpAddress2.get("state_nm")).append("　")
			//	.append(bmpAddress2.get("city_nm")).append("　")
			//	.append(bmpAddress2.get("oaztsu_nm")).append("　")
			//	.append(bmpAddress2.get("azcho_nm")).append("　")
			//	.append(bmpAddress2.get("bnchigo")).append("　")
			//	.append(bmpAddress2.get("adrttm")).append("　")
			//	.append(bmpAddress2.get("adrrm"));
			//
			//// ２番号．郵便番号（前）
			//ccMsg.put("tel2_ntt_keisha_pcd_bf", bmpPcd2.substring(0, 3));
			//// ２番号．郵便番号（後）
			//ccMsg.put("tel2_ntt_keisha_pcd_af", bmpPcd2.substring(3));
			//// ２番号目．都道府県
			//ccMsg.put("tel2_ntt_keisha_state_nm", bmpAddress2.get("state_nm"));
			//// ２番号目．市区町村
			//ccMsg.put("tel2_ntt_keisha_city_nm", bmpAddress2.get("city_nm"));
			//// ２番号目．大字通称名
			//ccMsg.put("tel2_ntt_keisha_oaztsu_nm", bmpAddress2.get("oaztsu_nm"));
			//// ２番号目．字丁目名
			//ccMsg.put("tel2_ntt_keisha_azcho_nm", bmpAddress2.get("azcho_nm"));
			//// ２番号目．番地・号
			//ccMsg.put("tel2_ntt_keisha_bnchigo", bmpAddress2.get("bnchigo"));
			//// ２番号目．建物名等
			//ccMsg.put("tel2_ntt_keisha_adrttm", bmpAddress2.get("adrttm"));
			//// ２番号目．部屋番号等
			//ccMsg.put("tel2_ntt_keisha_adrrm", bmpAddress2.get("adrrm"));
			bmpAd2.append(JKKStringUtil.nullToBlank((String)bmpAddress2.get("state_nm"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress2.get("city_nm"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress2.get("oaztsu_nm"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress2.get("azcho_nm"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress2.get("bnchigo"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress2.get("adrttm"))).append("　")
				.append(JKKStringUtil.nullToBlank((String)bmpAddress2.get("adrrm")));
			
			// ２番号．郵便番号（前）
			ccMsg.put("tel2_ntt_keisha_pcd_bf", bmpPcd2.substring(0, 3));
			// ２番号．郵便番号（後）
			ccMsg.put("tel2_ntt_keisha_pcd_af", bmpPcd2.substring(3));
			// ２番号目．都道府県
			ccMsg.put("tel2_ntt_keisha_state_nm", JKKStringUtil.nullToBlank((String)bmpAddress2.get("state_nm")));
			// ２番号目．市区町村
			ccMsg.put("tel2_ntt_keisha_city_nm", JKKStringUtil.nullToBlank((String)bmpAddress2.get("city_nm")));
			// ２番号目．大字通称名
			ccMsg.put("tel2_ntt_keisha_oaztsu_nm", JKKStringUtil.nullToBlank((String)bmpAddress2.get("oaztsu_nm")));
			// ２番号目．字丁目名
			ccMsg.put("tel2_ntt_keisha_azcho_nm", JKKStringUtil.nullToBlank((String)bmpAddress2.get("azcho_nm")));
			// ２番号目．番地・号
			ccMsg.put("tel2_ntt_keisha_bnchigo", JKKStringUtil.nullToBlank((String)bmpAddress2.get("bnchigo")));
			// ２番号目．建物名等
			ccMsg.put("tel2_ntt_keisha_adrttm", JKKStringUtil.nullToBlank((String)bmpAddress2.get("adrttm")));
			// ２番号目．部屋番号等
			ccMsg.put("tel2_ntt_keisha_adrrm", JKKStringUtil.nullToBlank((String)bmpAddress2.get("adrrm")));
			// ANK-3604-00-00 <MOD END
			// ２番号．ご住所
			ccMsg.put("tel2_ntt_keisha_ad_screen", bmpAd2.toString());
			// 電話サービス提供事業者
			if (ccSetteData.get("tel2_tsjgs_nm") != null)
			{
				ccMsg.put("tel2_tsjgs_nm_cfm_screen", ccSetteData.get("tel2_tsjgs_nm"));
			}
		}
		
		// 取扱代理店設定
		ccMsg.put("trat_cd1", ccSetteData.get("trat_agnt_cd_1"));
		ccMsg.put("agnt_nm1", ccSetteData.get("trat_agnt_nm_1"));
		ccMsg.put("trat_cd2", ccSetteData.get("trat_agnt_cd_2"));
		ccMsg.put("agnt_nm2", ccSetteData.get("trat_agnt_nm_2"));
	}
	
	/**
	 * 新規申込時の住所情報を断面用に設定する
	 * @param ccMsg
	 * @param ccSetteData
	 * @param contractorAddress
	 * @param lineAddress
	 * @param bmpAddress1
	 * @param bmpAddress2
	 * @throws Throwable
	 */
	private void setMskmDmenAddrInfoNew(Map<String, Object> ccMsg,
			Map<String, Object> contractorAddress, Map<String, Object> lineAddress, Map<String, Object> ccSetteData) throws Throwable
	{
		// 利用場所郵便番号
		String linePcd = (String)lineAddress.get("pcd");
		// 利用場所 ご住所
		StringBuilder lineAd = new StringBuilder();
		// ANK-3604-00-00 <MOD START
		//lineAd.append(lineAddress.get("state_nm")).append("　")
		//	.append(lineAddress.get("city_nm")).append("　")
		//	.append(lineAddress.get("oaztsu_nm")).append("　")
		//	.append(lineAddress.get("azcho_nm")).append("　")
		//	.append(lineAddress.get("bnchigo")).append("　")
		//	.append(lineAddress.get("adrttm")).append("　")
		//	.append(lineAddress.get("adrrm"));
		//
		//// ご利用場所．郵便番号（前）
		//ccMsg.put("kaisen_place_pcd_bf", linePcd.substring(0, 3));
		//// ご利用場所．郵便番号（後）
		//ccMsg.put("kaisen_place_pcd_af", linePcd.substring(3));
		//// ご利用場所．都道府県
		//ccMsg.put("kaisen_place_state_nm", lineAddress.get("state_nm"));
		//// ご利用場所．市区町村
		//ccMsg.put("kaisen_place_city_nm", lineAddress.get("city_nm"));
		//// ご利用場所．大字通称名
		//ccMsg.put("kaisen_place_oaztsu_nm", lineAddress.get("oaztsu_nm"));
		//// ご利用場所．字丁目名
		//ccMsg.put("kaisen_place_azcho_nm", lineAddress.get("azcho_nm"));
		//// ご利用場所．番地・号
		//ccMsg.put("kaisen_place_bnchigo", lineAddress.get("bnchigo"));
		//// ご利用場所．建物名等
		//ccMsg.put("kaisen_place_adrttm", lineAddress.get("adrttm"));
		//// ご利用場所．部屋番号等
		//ccMsg.put("kaisen_place_adrrm", lineAddress.get("adrrm"));
		lineAd.append(JKKStringUtil.nullToBlank((String)lineAddress.get("state_nm"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)lineAddress.get("city_nm"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)lineAddress.get("oaztsu_nm"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)lineAddress.get("azcho_nm"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)lineAddress.get("bnchigo"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)lineAddress.get("adrttm"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)lineAddress.get("adrrm")));
		
		// ご利用場所．郵便番号（前）
		ccMsg.put("kaisen_place_pcd_bf", linePcd.substring(0, 3));
		// ご利用場所．郵便番号（後）
		ccMsg.put("kaisen_place_pcd_af", linePcd.substring(3));
		// ご利用場所．都道府県
		ccMsg.put("kaisen_place_state_nm", JKKStringUtil.nullToBlank((String)lineAddress.get("state_nm")));
		// ご利用場所．市区町村
		ccMsg.put("kaisen_place_city_nm", JKKStringUtil.nullToBlank((String)lineAddress.get("city_nm")));
		// ご利用場所．大字通称名
		ccMsg.put("kaisen_place_oaztsu_nm", JKKStringUtil.nullToBlank((String)lineAddress.get("oaztsu_nm")));
		// ご利用場所．字丁目名
		ccMsg.put("kaisen_place_azcho_nm", JKKStringUtil.nullToBlank((String)lineAddress.get("azcho_nm")));
		// ご利用場所．番地・号
		ccMsg.put("kaisen_place_bnchigo", JKKStringUtil.nullToBlank((String)lineAddress.get("bnchigo")));
		// ご利用場所．建物名等
		ccMsg.put("kaisen_place_adrttm", JKKStringUtil.nullToBlank((String)lineAddress.get("adrttm")));
		// ご利用場所．部屋番号等
		ccMsg.put("kaisen_place_adrrm", JKKStringUtil.nullToBlank((String)lineAddress.get("adrrm")));
		// ANK-3604-00-00 <MOD END
		// ご利用場所．ご住所
		ccMsg.put("kaisen_place_ad_screen", lineAd.toString());
		
		// 契約者住所郵便番号
		String contPcd = (String)contractorAddress.get("pcd");
		// 契約者　ご住所
		StringBuilder contAd = new StringBuilder();
		// ANK-3604-00-00 <MOD START
		//contAd.append(contractorAddress.get("state_nm")).append("　")
		//	.append(contractorAddress.get("city_nm")).append("　")
		//	.append(contractorAddress.get("oaztsu_nm")).append("　")
		//	.append(contractorAddress.get("azcho_nm")).append("　")
		//	.append(contractorAddress.get("bnchigo")).append("　")
		//	.append(contractorAddress.get("adrttm")).append("　")
		//	.append(contractorAddress.get("adrrm"));
        //
		//// 契約者情報．郵便番号（前）
		//ccMsg.put("keisha_pcd_bf", contPcd.substring(0, 3));
		//// 契約者情報．郵便番号（後）
		//ccMsg.put("keisha_pcd_af", contPcd.substring(3));
		//// ご契約者情報．都道府県
		//ccMsg.put("keisha_state_nm", contractorAddress.get("state_nm"));
		//// ご契約者情報．市区町村
		//ccMsg.put("keisha_city_nm", contractorAddress.get("city_nm"));
		//// ご契約者情報．大字通称名
		//ccMsg.put("keisha_oaztsu_nm", contractorAddress.get("oaztsu_nm"));
		//// ご契約者情報．字丁目名
		//ccMsg.put("keisha_azcho_nm", contractorAddress.get("azcho_nm"));
		//// ご契約者情報．番地・号
		//ccMsg.put("keisha_bnchigo", contractorAddress.get("bnchigo"));
		//// ご契約者情報．建物名等
		//ccMsg.put("keisha_adrttm", contractorAddress.get("adrttm"));
		//// ご契約者情報．部屋番号等
		//ccMsg.put("keisha_adrrm", contractorAddress.get("adrrm"));
		contAd.append(JKKStringUtil.nullToBlank((String)contractorAddress.get("state_nm"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)contractorAddress.get("city_nm"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)contractorAddress.get("oaztsu_nm"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)contractorAddress.get("azcho_nm"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)contractorAddress.get("bnchigo"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)contractorAddress.get("adrttm"))).append("　")
			.append(JKKStringUtil.nullToBlank((String)contractorAddress.get("adrrm")));

		// 契約者情報．郵便番号（前）
		ccMsg.put("keisha_pcd_bf", contPcd.substring(0, 3));
		// 契約者情報．郵便番号（後）
		ccMsg.put("keisha_pcd_af", contPcd.substring(3));
		// ご契約者情報．都道府県
		ccMsg.put("keisha_state_nm", JKKStringUtil.nullToBlank((String)contractorAddress.get("state_nm")));
		// ご契約者情報．市区町村
		ccMsg.put("keisha_city_nm", JKKStringUtil.nullToBlank((String)contractorAddress.get("city_nm")));
		// ご契約者情報．大字通称名
		ccMsg.put("keisha_oaztsu_nm", JKKStringUtil.nullToBlank((String)contractorAddress.get("oaztsu_nm")));
		// ご契約者情報．字丁目名
		ccMsg.put("keisha_azcho_nm", JKKStringUtil.nullToBlank((String)contractorAddress.get("azcho_nm")));
		// ご契約者情報．番地・号
		ccMsg.put("keisha_bnchigo", JKKStringUtil.nullToBlank((String)contractorAddress.get("bnchigo")));
		// ご契約者情報．建物名等
		ccMsg.put("keisha_adrttm", JKKStringUtil.nullToBlank((String)contractorAddress.get("adrttm")));
		// ご契約者情報．部屋番号等
		ccMsg.put("keisha_adrrm", JKKStringUtil.nullToBlank((String)contractorAddress.get("adrrm")));
		// ANK-3604-00-00 <MOD END
		// ご契約者情報．ご住所
		ccMsg.put("keisha_ad_screen", contAd.toString());
		
		// 機器送付先．郵便番号（前）
		ccMsg.put("keisha_kiki_sohus_pcd_bf", linePcd.substring(0, 3));
		// 機器送付先．郵便番号（後）
		ccMsg.put("keisha_kiki_sohus_pcd_af", linePcd.substring(3));
		// ANK-3604-00-00 <MOD START
		//// 機器送付先．都道府県
		//ccMsg.put("keisha_kiki_sohus_state_nm", lineAddress.get("state_nm"));
		//// 機器送付先．市区町村
		//ccMsg.put("keisha_kiki_sohus_city_nm", lineAddress.get("city_nm"));
		//// 機器送付先．大字通称名
		//ccMsg.put("keisha_kiki_sohus_oaztsu_nm", lineAddress.get("oaztsu_nm"));
		//// 機器送付先．字丁目名
		//ccMsg.put("keisha_kiki_sohus_azcho_nm", lineAddress.get("azcho_nm"));
		//// 機器送付先．番地・号
		//ccMsg.put("keisha_kiki_sohus_bnchigo", lineAddress.get("bnchigo"));
		//// 機器送付先．建物名等
		//ccMsg.put("keisha_kiki_sohus_adrttm", lineAddress.get("adrttm"));
		//// 機器送付先．部屋番号等
		//ccMsg.put("keisha_kiki_sohus_adrrm", lineAddress.get("adrrm"));
		// 機器送付先．都道府県
		ccMsg.put("keisha_kiki_sohus_state_nm", JKKStringUtil.nullToBlank((String)lineAddress.get("state_nm")));
		// 機器送付先．市区町村
		ccMsg.put("keisha_kiki_sohus_city_nm", JKKStringUtil.nullToBlank((String)lineAddress.get("city_nm")));
		// 機器送付先．大字通称名
		ccMsg.put("keisha_kiki_sohus_oaztsu_nm", JKKStringUtil.nullToBlank((String)lineAddress.get("oaztsu_nm")));
		// 機器送付先．字丁目名
		ccMsg.put("keisha_kiki_sohus_azcho_nm", JKKStringUtil.nullToBlank((String)lineAddress.get("azcho_nm")));
		// 機器送付先．番地・号
		ccMsg.put("keisha_kiki_sohus_bnchigo", JKKStringUtil.nullToBlank((String)lineAddress.get("bnchigo")));
		// 機器送付先．建物名等
		ccMsg.put("keisha_kiki_sohus_adrttm", JKKStringUtil.nullToBlank((String)lineAddress.get("adrttm")));
		// 機器送付先．部屋番号等
		ccMsg.put("keisha_kiki_sohus_adrrm", JKKStringUtil.nullToBlank((String)lineAddress.get("adrrm")));
		// ANK-3604-00-00 <MOD END
		// 機器送付先．ご住所
		ccMsg.put("bunsho_kind_shs_ad", lineAd.toString());
		
		// ネット．コース選択（表示）
		ccMsg.put("course_choice_nm_cfm_screen", ccSetteData.get("pcrs_nm"));
	}
	
	/**
	 * サービス追加時の住所情報を断面用に設定する
	 * @param ccMsg
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void setMskmDmenAddrInfoAdd(Map<String, Object> ccMsg, Map<String, Object> ccSetteData)
		throws Throwable
	{
		// 利用場所郵便番号
		String linePcd = (String)ccSetteData.get("kaisen_place_pcd");
		// 利用場所 ご住所
		StringBuilder lineAd = new StringBuilder();
		lineAd.append(ccSetteData.get("kaisen_place_state_nm")).append("　")
			.append(ccSetteData.get("kaisen_place_city_nm")).append("　")
			.append(ccSetteData.get("kaisen_place_oaztsu_nm")).append("　")
			.append(ccSetteData.get("kaisen_place_azcho_nm")).append("　")
			.append(ccSetteData.get("kaisen_place_bnchigo")).append("　")
			.append(ccSetteData.get("kaisen_place_adrttm")).append("　")
			.append(ccSetteData.get("kaisen_place_adrrm"));
		
		// ご利用場所．郵便番号（前）
		ccMsg.put("kaisen_place_pcd_bf", linePcd.substring(0, 3));
		// ご利用場所．郵便番号（後）
		ccMsg.put("kaisen_place_pcd_af", linePcd.substring(3));
		// ご利用場所．都道府県
		ccMsg.put("kaisen_place_state_nm", ccSetteData.get("kaisen_place_state_nm"));
		// ご利用場所．市区町村
		ccMsg.put("kaisen_place_city_nm", ccSetteData.get("kaisen_place_city_nm"));
		// ご利用場所．大字通称名
		ccMsg.put("kaisen_place_oaztsu_nm", ccSetteData.get("kaisen_place_oaztsu_nm"));
		// ご利用場所．字丁目名
		ccMsg.put("kaisen_place_azcho_nm", ccSetteData.get("kaisen_place_azcho_nm"));
		// ご利用場所．番地・号
		ccMsg.put("kaisen_place_bnchigo", ccSetteData.get("kaisen_place_bnchigo"));
		// ご利用場所．建物名等
		ccMsg.put("kaisen_place_adrttm", ccSetteData.get("kaisen_place_adrttm"));
		// ご利用場所．部屋番号等
		ccMsg.put("kaisen_place_adrrm", ccSetteData.get("kaisen_place_adrrm"));
		// ご利用場所．ご住所
		ccMsg.put("kaisen_place_ad_screen", lineAd.toString());
		
		// 契約者住所郵便番号
		String contPcd = (String)ccSetteData.get("keisha_pcd");
		// 契約者　ご住所
		StringBuilder contAd = new StringBuilder();
		contAd.append(ccSetteData.get("keisha_state_nm")).append("　")
			.append(ccSetteData.get("keisha_city_nm")).append("　")
			.append(ccSetteData.get("keisha_oaztsu_nm")).append("　")
			.append(ccSetteData.get("keisha_azcho_nm")).append("　")
			.append(ccSetteData.get("keisha_bnchigo")).append("　")
			.append(ccSetteData.get("keisha_adrttm")).append("　")
			.append(ccSetteData.get("keisha_adrrm"));

		// 契約者情報．郵便番号（前）
		ccMsg.put("keisha_pcd_bf", contPcd.substring(0, 3));
		// 契約者情報．郵便番号（後）
		ccMsg.put("keisha_pcd_af", contPcd.substring(3));
		// ご契約者情報．都道府県
		ccMsg.put("keisha_state_nm", ccSetteData.get("keisha_state_nm"));
		// ご契約者情報．市区町村
		ccMsg.put("keisha_city_nm", ccSetteData.get("keisha_city_nm"));
		// ご契約者情報．大字通称名
		ccMsg.put("keisha_oaztsu_nm", ccSetteData.get("keisha_oaztsu_nm"));
		// ご契約者情報．字丁目名
		ccMsg.put("keisha_azcho_nm", ccSetteData.get("keisha_azcho_nm"));
		// ご契約者情報．番地・号
		ccMsg.put("keisha_bnchigo", ccSetteData.get("keisha_bnchigo"));
		// ご契約者情報．建物名等
		ccMsg.put("keisha_adrttm", ccSetteData.get("keisha_adrttm"));
		// ご契約者情報．部屋番号等
		ccMsg.put("keisha_adrrm", ccSetteData.get("keisha_adrrm"));
		// ご契約者情報．ご住所
		ccMsg.put("keisha_ad_screen", contAd.toString());
		
		// 機器送付先．郵便番号（前）
		ccMsg.put("keisha_kiki_sohus_pcd_bf", linePcd.substring(0, 3));
		// 機器送付先．郵便番号（後）
		ccMsg.put("keisha_kiki_sohus_pcd_af", linePcd.substring(3));
		// 機器送付先．都道府県
		ccMsg.put("keisha_kiki_sohus_state_nm", ccSetteData.get("kaisen_place_state_nm"));
		// 機器送付先．市区町村
		ccMsg.put("keisha_kiki_sohus_city_nm", ccSetteData.get("kaisen_place_city_nm"));
		// 機器送付先．大字通称名
		ccMsg.put("keisha_kiki_sohus_oaztsu_nm", ccSetteData.get("kaisen_place_oaztsu_nm"));
		// 機器送付先．字丁目名
		ccMsg.put("keisha_kiki_sohus_azcho_nm", ccSetteData.get("kaisen_place_azcho_nm"));
		// 機器送付先．番地・号
		ccMsg.put("keisha_kiki_sohus_bnchigo", ccSetteData.get("kaisen_place_bnchigo"));
		// 機器送付先．建物名等
		ccMsg.put("keisha_kiki_sohus_adrttm", ccSetteData.get("kaisen_place_adrttm"));
		// 機器送付先．部屋番号等
		ccMsg.put("keisha_kiki_sohus_adrrm", ccSetteData.get("kaisen_place_adrrm"));
		// 機器送付先．ご住所
		ccMsg.put("bunsho_kind_shs_ad", lineAd.toString());
	}
	
	/**
	 * サービス追加時のその他断面項目を設定する
	 * @param ccMsg
	 * @param ccSetteData
	 * @param opeDate
	 * @throws Throwable
	 */
	private void setMskmDmenOtherAdd(Map<String, Object> ccMsg, Map<String, Object> ccSetteData, String opeDate)
		throws Throwable
	{
		/* ----------------------------------------------------------------- */
		/* 利用場所情報                                                      */
		/* ----------------------------------------------------------------- */
		// ご利用場所．電話番号
		ccMsg.put("kaisen_place_telno", ccSetteData.get("kaisen_place_telno"));
		
		// ご利用場所の形態（表示用）
		if (JKKStrConst.CD00627_08.equals(ccSetteData.get("ad_form_cd")))
		{
			ccMsg.put("ad_form_nm_cfm_screen", "一戸建て(持家)");
		}
		else if (JKKStrConst.CD00627_09.equals(ccSetteData.get("ad_form_cd")))
		{
			ccMsg.put("ad_form_nm_cfm_screen", "一戸建て(賃貸)");
		}
		
		// 竣工予定年月
		if (ccSetteData.get("shunko_rsv_ymd") != null)
		{
			String shunkoRsvYmd = (String)ccSetteData.get("shunko_rsv_ymd");
			ccMsg.put("shunko_rsv_ymd_y", shunkoRsvYmd.substring(0, 4));
			ccMsg.put("shunko_rsv_ymd_m", shunkoRsvYmd.substring(4, 6));
		}
		
		// 住所番地確定（表示用）
		if (ccSetteData.get("kisn_plc_ad_mi_fix_flg") != null)
		{
			if ("0".equals(ccSetteData.get("kisn_plc_ad_mi_fix_flg")))
			{
				ccMsg.put("kisn_place_ad_fix_flg_nm_cfm_screen", "決まっている");
			}
			else
			{
				ccMsg.put("kisn_place_ad_fix_flg_nm_cfm_screen", "建築途中で決まっていない");
			}
		}
		
		/* ----------------------------------------------------------------- */
		/* 契約者情報                                                        */
		/* ----------------------------------------------------------------- */
		// 氏名
		ccMsg.put("cust_nm", ccSetteData.get("cust_nm"));
		// 氏名（カナ）
		ccMsg.put("cust_kana", ccSetteData.get("cust_kana"));
		// ご利用場所とご契約者住所(現住所)が同じフラグ
		boolean usePlcFlg = (ccMsg.get("kaisen_place_ad_screen").equals(ccMsg.get("keisha_ad_screen")));
		ccMsg.put("use_plc", usePlcFlg);
		// ご契約者情報．電話番号
		ccMsg.put("keisha_telno", ccSetteData.get("keisha_telno"));
		
		if (ccSetteData.get("keisha_yusen_telno") != null)
		{
			// 優先連絡先名称(電話)（表示）
			ccMsg.put("keisha_yusen_rrsk_tel_nm_cfm_screen", "その他");
			// 優先電話番号
			ccMsg.put("keisha_yusen_telno", ccSetteData.get("keisha_yusen_telno"));
		}
		
		// 生年月日
		String birthDay = (String)ccSetteData.get("cust_birthd");
		// 生年月日を和暦に変換
		String[] ymdArray = JCKLcsDataConverter.toJapaneseYmdArray(birthDay);
		StringBuilder wareki = new StringBuilder();
		wareki.append("（").append(ymdArray[0]).append("）").append(birthDay.substring(0, 4));
		
		ccMsg.put("keisha_birthd_wareki_nm_cfm_screen", wareki.toString());
		ccMsg.put("keisha_birthd_m", birthDay.substring(4, 6));
		ccMsg.put("keisha_birthd_d", birthDay.substring(6, 8));
		
		// 年齢
		ccMsg.put("keisha_age", String.valueOf(Integer.parseInt(
				getAge(birthDay.substring(0, 4), birthDay.substring(4, 6), birthDay.substring(6, 8), opeDate))));
		// 性別
		if (JKKStrConst.CD00245_1.equals(ccSetteData.get("cust_sex_cd")))
		{
			ccMsg.put("keisha_sex_nm_cfm_screen", "男性");
		}
		else if (JKKStrConst.CD00245_2.equals(ccSetteData.get("cust_sex_cd")))
		{
			ccMsg.put("keisha_sex_nm_cfm_screen", "女性");
		}
		else if (JKKStrConst.CD00245_3.equals(ccSetteData.get("cust_sex_cd")))
		{
			ccMsg.put("keisha_sex_nm_cfm_screen", "不明");
		}
		
		// 親権者氏名
		if (ccSetteData.get("sksha_nm") != null)
		{
			ccMsg.put("sksha_nm", ccSetteData.get("sksha_nm"));
		}
		
		// 親権者氏名（カナ）
		if (ccSetteData.get("sksha_kana") != null)
		{
			ccMsg.put("sksha_kana", ccSetteData.get("sksha_kana"));
		}
		
		// 親権者生年月日
		if (ccSetteData.get("sksha_birthd") != null)
		{
			String parentalBirthday = (String)ccSetteData.get("sksha_birthd");
			ccMsg.put("sksha_birthd_year", parentalBirthday.substring(0, 4));
			ccMsg.put("sksha_birthd_month", parentalBirthday.substring(4, 6));
			ccMsg.put("sksha_birthd_day", parentalBirthday.substring(6, 8));
		}
		
		// 親権者続柄
		if (ccSetteData.get("sksha_zokugara_cd") != null)
		{
			ccMsg.put("sksha_zokugara_cd", ccSetteData.get("sksha_zokugara_cd"));
		}
		
		// 親権者続柄その他
		if (ccSetteData.get("zokugara_other") != null)
		{
			ccMsg.put("zokugara_other", ccSetteData.get("zokugara_other"));
		}
		
		// 親権者電話番号
		if (ccSetteData.get("sksha_telno") != null)
		{
			ccMsg.put("sksha_telno", ccSetteData.get("sksha_telno"));
		}
		
		// 機器送付先．送付先名
		ccMsg.put("keisha_kiki_sohus_shs_nm", ccSetteData.get("cust_nm"));
		// 機器送付先．送付先名カナ
		ccMsg.put("keisha_kiki_sohus_shs_nm_kana", ccSetteData.get("cust_kana"));
		// 機器送付先．電話番号
		ccMsg.put("keisha_kiki_sohus_telno", ccSetteData.get("kaisen_place_telno"));
		// 上書予定設定
		if ("1".equals(ccSetteData.get("kshad_chg_um")))
		{
			ccMsg.put("uwagaki_rsv_set", "契約者住所及び請求書送付先住所への上書の予定設定を行う");
		}
		else
		{
			ccMsg.put("uwagaki_rsv_set", "契約者住所及び請求書送付先住所への上書の予定設定を行わない");
		}
	}
	
	/***
	 * 年齢を算出します
	 * @param year 生年月日(西暦年)
	 * @param month 生年月日(月)
	 * @param day 生年月日(日)
	 * @param opeDate 運用日付(yyyyMMdd形式)
	 * @return 年齢
	 */
	private String getAge(String year, String month, String day, String opeDate)
	{
		int age = 0;
		String sysYmd = opeDate;
		int nowYear = Integer.parseInt(sysYmd.substring(0, 4));
		int nowMonth = Integer.parseInt(sysYmd.substring(4, 6));
		int nowDay = Integer.parseInt(sysYmd.substring(6, 8));
		int birthdYear = Integer.parseInt(year);
		int birthdMonth = Integer.parseInt(month);
		int birthdDay = Integer.parseInt(day);

		if (nowMonth < birthdMonth)
		{
			age = nowYear - birthdYear - 1;
		} 
		else if (nowMonth > birthdMonth)
		{
			age = nowYear - birthdYear;
		}
		else if (nowMonth == birthdMonth)
		{
			if(nowDay < birthdDay)
			{
				age = nowYear - birthdYear - 1;
			}
			else
			{
				age = nowYear - birthdYear;
			}
		}
		
		return Integer.toString(age);
	}
	
	/**
	 * 利用場所住所更新の設定を行う
	 * @param param
	 * @param fixedText
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void setKKSV089515CC(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		// サービス追加でない場合
		if (ccSetteData.get("svc_kei_no") == null)
		{
			return;
		}
		
		// SYSID
		ccMsg.put("kk0081_sysid", ccSetteData.get("sysid"));
		// お客様カナ名
		ccMsg.put("cust_kana", ccSetteData.get("cust_kana"));
		// 契約者電話番号
		ccMsg.put("keisha_telno", ccSetteData.get("keisha_telno"));
		// 個別照査対象サービス
		ccMsg.put("kbt_shosa_tg_svc", JKKStrConst.KBT_SHOSA_TG_SVC_IKT_SHOSA);
		
		// 機器送付先チェックフラグ
		ccMsg.put("kkshs_chk_run_flg", false);
		// 機器送付先住所コード
		ccMsg.put("ksh_kiki_sohus_ad_cd", ccSetteData.get("kaisen_place_ad_cd"));
		// 機器送付先郵便番号
		ccMsg.put("ksh_kiki_sohus_pcd", ccSetteData.get("kaisen_place_pcd"));
		// 契約者＿機器送付先都道府県名
		ccMsg.put("ksh_kiki_sohus_state_nm", ccSetteData.get("kaisen_place_state_nm"));
		// 契約者＿機器送付先市区町村名
		ccMsg.put("ksh_kiki_sohus_city_nm", ccSetteData.get("kaisen_place_city_nm"));
		// 契約者＿機器送付先大字通称名
		ccMsg.put("ksh_kiki_sohus_oaztsu_nm", ccSetteData.get("kaisen_place_oaztsu_nm"));
		// 契約者＿機器送付先字丁目名
		ccMsg.put("ksh_kiki_sohus_azcho_nm", ccSetteData.get("kaisen_place_azcho_nm"));
		// 契約者＿機器送付先番地号
		ccMsg.put("ksh_kiki_sohus_bnchigo", ccSetteData.get("kaisen_place_bnchigo"));
		// 契約者＿機器送付先住所補記・建物名
		ccMsg.put("ksh_kiki_sohus_adrttm", ccSetteData.get("kaisen_place_adrttm"));
		// 契約者＿機器送付先住所補記・部屋番号
		ccMsg.put("ksh_kiki_sohus_adrrm", ccSetteData.get("kaisen_place_adrrm"));
		// 契約者＿機器送付先名
		ccMsg.put("ksh_kiki_sohus_nm", ccSetteData.get("cust_nm"));
		// 契約者＿機器送付先カナ名
		ccMsg.put("ksh_kiki_sohus_kana", ccSetteData.get("cust_kana"));
		// 契約者＿機器送付先電話番号
		ccMsg.put("ksh_kiki_sohus_telno", ccSetteData.get("kaisen_place_telno"));
		// 契約者住所変更有無
		ccMsg.put("kshad_chg_um", ccSetteData.get("kshad_chg_um"));
		
		// 更新年月日時分秒（更新前）
		ccMsg.put("upd_dtm_bf", ccSetteData.get("upd_dtm"));
		
		// サービス契約回線内訳番号
		ccMsg.put("svc_kei_kaisen_ucwk_no", ccSetteData.get("svc_kei_kaisen_ucwk_no"));
		// 住所形態コード
		ccMsg.put("ad_form_cd", ccSetteData.get("ad_form_cd"));
		// お客様申告住所未確定フラグ
		ccMsg.put("cust_skk_ad_mi_fix_flg", ccSetteData.get("cust_skk_ad_mi_fix_flg"));
		// お客様SOS利用有無
		ccMsg.put("cust_sos_use_um", ccSetteData.get("cust_sos_use_um"));
		// 方角コード1
		ccMsg.put("direction_cd_1", ccSetteData.get("direction_cd_1"));
		// 方角コード2
		ccMsg.put("direction_cd_2", ccSetteData.get("direction_cd_2"));
		// 電力送電予定年月日
		ccMsg.put("epower_soden_rsv_ymd", ccSetteData.get("epower_soden_rsv_ymd"));
		// 該当エリアサービス開始年月日
		ccMsg.put("gaito_area_svc_staymd", ccSetteData.get("gaito_area_svc_staymd"));
		// 引渡し予定年月日
		ccMsg.put("hikiwatashi_rsv_ymd", ccSetteData.get("hikiwatashi_rsv_ymd"));
		// 引越し予定年月日
		ccMsg.put("hikkoshi_rsv_ymd", ccSetteData.get("hikkoshi_rsv_ymd"));
		// 引越し年月日
		ccMsg.put("hikkoshi_ymd", ccSetteData.get("hikkoshi_ymd"));
		// 引越し年月日
		ccMsg.put("kaisen_place_adrrm", ccSetteData.get("kaisen_place_adrrm"));
		// 回線場所住所補記・建物名
		ccMsg.put("kaisen_place_adrttm", ccSetteData.get("kaisen_place_adrttm"));
		// 回線場所住所コード
		ccMsg.put("kaisen_place_ad_cd", ccSetteData.get("kaisen_place_ad_cd"));
		// 回線場所字丁目名
		ccMsg.put("kaisen_place_azcho_nm", ccSetteData.get("kaisen_place_azcho_nm"));
		// 回線場所番地号
		ccMsg.put("kaisen_place_bnchigo", ccSetteData.get("kaisen_place_bnchigo"));
		// 回線場所市区町村名
		ccMsg.put("kaisen_place_city_nm", ccSetteData.get("kaisen_place_city_nm"));
		// 回線場所番号
		ccMsg.put("kaisen_place_no", ccSetteData.get("kaisen_place_no"));
		// 回線場所大字通称名
		ccMsg.put("kaisen_place_oaztsu_nm", ccSetteData.get("kaisen_place_oaztsu_nm"));
		// 回線場所郵便番号
		ccMsg.put("kaisen_place_pcd", ccSetteData.get("kaisen_place_pcd"));
		// 回線場所都道府県名
		ccMsg.put("kaisen_place_state_nm", ccSetteData.get("kaisen_place_state_nm"));
		// 回線場所電話番号
		ccMsg.put("kaisen_place_telno", ccSetteData.get("kaisen_place_telno"));
		// 回線場所カナ名
		ccMsg.put("kaisen_plc_kana", ccSetteData.get("kaisen_plc_kana"));
		// 回線場所_契約者住所差異フラグ
		ccMsg.put("kaisen_plc_ksh_ad_sai_flg", ccSetteData.get("kaisen_plc_ksh_ad_sai_flg"));
		// 回線提供会社コード
		ccMsg.put("kaisen_tk_comp_cd", ccSetteData.get("kaisen_tk_comp_cd"));
		// 関電営業所コード
		ccMsg.put("kepco_busioffice_cd", ccSetteData.get("kepco_busioffice_cd"));
		// 回線場所住所未確定フラグ
		ccMsg.put("kisn_plc_ad_mi_fix_flg", ccSetteData.get("kisn_plc_ad_mi_fix_flg"));
		// 回線場所住所未確定解除年月日
		ccMsg.put("kisn_plc_ad_mi_fix_rls_ymd", ccSetteData.get("kisn_plc_ad_mi_fix_rls_ymd"));
		// 回線場所補足コード1
		ccMsg.put("kisn_plc_hsk_cd_1", ccSetteData.get("kisn_plc_hsk_cd_1"));
		// 回線場所補足コード2
		ccMsg.put("kisn_plc_hsk_cd_2", ccSetteData.get("kisn_plc_hsk_cd_2"));
		// 回線場所補足メモ
		ccMsg.put("kisn_plc_hsk_memo", ccSetteData.get("kisn_plc_hsk_memo"));
		// 回線場所区画整理中フラグ名
		ccMsg.put("kisn_plc_kkk_seiri_chu_flg", ccSetteData.get("kisn_plc_kkk_seiri_chu_flg"));
		// 起点変電所コード
		ccMsg.put("kiten_hdsho_cd", ccSetteData.get("kiten_hdsho_cd"));
		// 戸建建築階数コード
		ccMsg.put("kodate_kcku_flr_cnt_cd", ccSetteData.get("kodate_kcku_flr_cnt_cd"));
		// 契約者住所変更希望年月日
		ccMsg.put("kshad_chg_kibo_ymd", ccSetteData.get("kshad_chg_kibo_ymd"));
		// 契約者住所変更有無
		ccMsg.put("kshad_chg_um", ccSetteData.get("kshad_chg_um"));
		// 経度
		ccMsg.put("lgtd", ccSetteData.get("lgtd"));
		// 緯度
		ccMsg.put("lttd", ccSetteData.get("lttd"));
		// マンション物件番号
		ccMsg.put("mansion_bukken_no", ccSetteData.get("mansion_bukken_no"));
		// 申込明細番号
		ccMsg.put("mskm_dtl_no", ccSetteData.get("mskm_dtl_no"));
		// 入居予阡N月日
		ccMsg.put("nyukyo_rsv_ymd", ccSetteData.get("nyukyo_rsv_ymd"));
		// PON種別コード
		ccMsg.put("pon_sbt_cd", ccSetteData.get("pon_sbt_cd"));
		// 集合住宅入居階数コード
		ccMsg.put("shugj_nyukyo_flr_cnt_cd", ccSetteData.get("shugj_nyukyo_flr_cnt_cd"));
		// 竣工予定年月日
		ccMsg.put("shunko_rsv_ymd", ccSetteData.get("shunko_rsv_ymd"));
		// 集約局コード
		ccMsg.put("shyakk_cd", ccSetteData.get("shyakk_cd"));
		// 請求書藍t先住所変更希望年月日
		ccMsg.put("sks_shs_ad_chg_kibo_ymd", ccSetteData.get("sks_shs_ad_chg_kibo_ymd"));
		// 請求書送付先住所変更有無
		ccMsg.put("sks_shs_ad_chg_um", ccSetteData.get("sks_shs_ad_chg_um"));
		// 請求書用回線場所住所部屋番号
		ccMsg.put("sks_yo_kisn_place_ad_rm_no", ccSetteData.get("sks_yo_kisn_place_ad_rm_no"));
		// サービス契約回線内訳ステータス
		ccMsg.put("svc_kei_kaisen_ucwk_stat", ccSetteData.get("svc_kei_kaisen_ucwk_stat"));
		// 撤去工事希望年月日
		ccMsg.put("tekkyo_koji_kibo_ymd", ccSetteData.get("tekkyo_koji_kibo_ymd"));
		// 電話BASホストID
		ccMsg.put("tel_bas_host_id", ccSetteData.get("tel_bas_host_id"));
		// 電話VLAN-ID
		ccMsg.put("tel_vlan_id", ccSetteData.get("tel_vlan_id"));
		// 電話VLAN-ID取込年月日
		ccMsg.put("tel_vlan_id_trkm_ymd", ccSetteData.get("tel_vlan_id_trkm_ymd"));
		// TVアンテナ有無
		ccMsg.put("tv_antenna_um", ccSetteData.get("tv_antenna_um"));
		// テレビ個別対応コード
		ccMsg.put("tv_kobet_taio_cd", ccSetteData.get("tv_kobet_taio_cd"));
		// 更新年月日時分秒
		ccMsg.put("upd_dtm", ccSetteData.get("upd_dtm"));
		// VDSL利用電話回線切替予定年月日
		ccMsg.put("vdsl_use_dksn_swch_rsv_ymd", ccSetteData.get("vdsl_use_dksn_swch_rsv_ymd"));
		// VDSL利用電話回線種別コード
		ccMsg.put("vdsl_use_tel_kisn_sbt_cd", ccSetteData.get("vdsl_use_tel_kisn_sbt_cd"));
		// VDSL利用対象電話番号回線種別コード
		ccMsg.put("vdsl_use_tg_dbksn_sbt_cd", ccSetteData.get("vdsl_use_tg_dbksn_sbt_cd"));
		// VDSL利用対象電話番号
		ccMsg.put("vdsl_use_tg_telno", ccSetteData.get("vdsl_use_tg_telno"));
		// VLAN-ID確定フラグ
		ccMsg.put("vlan_id_fix_flg", ccSetteData.get("vlan_id_fix_flg"));
		// X座標
		ccMsg.put("xzahyo", ccSetteData.get("xzahyo"));
		// Y座標
		ccMsg.put("yzahyo", ccSetteData.get("yzahyo"));
		// 座標補正有無
		ccMsg.put("zahyo_hosei_um", ccSetteData.get("zahyo_hosei_um"));
		
		// 機器提供サービス契約リストの設定
		if (ccMsg.get("kktk_svc_add_list") != null)
		{
			List<Map<String, Object>> kktkSvcAddList = (List<Map<String, Object>>)ccMsg.get("kktk_svc_add_list");
			setKktkSvcKei(kktkSvcAddList, null, ccSetteData);
			
		}
		
		// 機器オプションサービス契約リストの設定
		if (ccMsg.get("kkop_svc_add_list") != null)
		{
			List<Map<String, Object>> opAddList = (List<Map<String, Object>>)ccMsg.get("kkop_svc_add_list");
			
			for (Map<String, Object> opAdd : opAddList)
			{
				// 請求契約番号
				opAdd.put("kk2811_seiky_kei_no", ccSetteData.get("seiky_kei_no"));
				// SYSID
				opAdd.put("kk2811_sysid", ccSetteData.get("sysid"));
			}
		}
		
		// 機器提供サービス契約状況の設定
		ccMsg.put("kktk_svc_get_list", ccSetteData.get("kktk_svc_get_list"));
		// 機器オプションサービス契約状況の設定
		ccMsg.put("kk_op_info_shokai_list", ccSetteData.get("kk_op_info_shokai_list"));
	}

	/**
	 * 割引サービス自動適用の設定を行う
	 * @param param
	 * @param fixedText
	 * @param ccSetteData
	 * @throws Throwable
	 */
	private void setKKSV089510CC(IRequestParameterReadWrite param, String fixedText,
			Map<String, Object> ccSetteData) throws Throwable
	{
		Map<String, Object> ccMsg = (Map<String, Object>)param.getData(fixedText);
		
		if (ccMsg == null)
		{
			return;
		}
		
		// サービス追加でない場合
		if (ccSetteData.get("svc_kei_no") == null)
		{
			return;
		}
		
		// SYSiD
		ccMsg.put("sysid", ccSetteData.get("sysid"));
	}

	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * @param handle セッションハンドル
	 * @param scCall SC呼び出し部品
	 * @param param リクエストパラメータ
	 * @param dataMapKey パラメータキー
	 * @param mappingData マッピングデータ
	 * @param contents CAANMsgのコンテンツ
	 * @return CAANMsg
	 * @throws Throwable 例外が発生した場合
	 */
	private CAANMsg callSC(SessionHandle handle, 
							ServiceComponentRequestInvoker scCall, 
							IRequestParameterReadWrite param, 
							String dataMapKey,
							Object[][] mappingData,
							Object[][] contents) throws Throwable
	{
		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, contents);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);

		if (null == errList)
		{
			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++)
		{
			if ("".equals(mappingData[i][1]))
			{
				template.setNull((String)mappingData[i][0]);
			}
			else
			{
				template.set((String)mappingData[i][0], mappingData[i][1]);
			}
		}

		CAANMsg[] templates = new CAANMsg[1];

		templates[0] = template;

		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}
	
	/**
	 * エラー情報を取得します。
	 * @param param リクエストパラメータ
	 * @param templates CAANMsgクラス
	 * @param returnCode リターンコード
	 * @param dataMapKey パラメータキー
	 * @param mappingData マッピングデータ
	 * @param contents CAANMsgのコンテンツ
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException リクエストパラメータの操作でエラーが発生した場合
	 */
	private IRequestParameterReadWrite editErrorInfoCom(IRequestParameterReadWrite param,
														CAANMsg[] templates, 
														int returnCode,
														String dataMapKey,
														Object[][] mappingData,
														Object[][] contents) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		if (0 != returnCode)
		{
			templateStatus = 9000;
		}

		if (null == JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)))
		{
			templateStatus = 0;
		}

		int bpStatus = 0;

		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		
		if (null == obj)
		{
			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);
		}

		Map<String, String> inMap = null;

		// ユーザデータ情報
		inMap = (Map<String, String>)param.getData(dataMapKey);

		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))
				{
					if ("key_sysid_err".equals(itemNm))
					{
						inMap.put("sysid_err", errCd);
					}
					else
					{
						inMap.put(itemNm, errCd);
					}
				}
			}
		}

		return param;
	}
	
	/**
	 * BPチェック用パラメータ作成。<br />
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return BPチェック用パラメータ
	 */
	public HashMap<?, ?> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	{
		// BPチェックはスキップする
		return JCKPmpScParamHenshu.createBpNotCheckParam();
	}
	
	/**
	 * ＢＰチェック結果を編集する。<br />
	 * @param param リクエストパラメータ
	 * @param caanMsgs サービスインターフェイス用のパラメータ配列
	 * @param returnCode リターンコード
	 * @return リクエストパラメータ
	 * @throws Throwable 例外が発生した場合
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] caanMsgs, Integer returnCode) throws Throwable
	{
		return JCKPmpScParamHenshu.editErrorInfo(param, caanMsgs, returnCode);
	}
	
}