/********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************
 *＜プログラム内容＞
 *  システム名      ：eo顧客基幹システム
 *  モジュール名    ：住所変更共通登録コンポーネント部品クラス
 *  ソースファイル名：JKKAdchgAddCmnCC.java
 *  作成者          ：FJ
 *  日付            ：2011年11月10日
 *＜機能概要＞
 *  住所変更に伴う申込情報，顧客情報の登録処理を行う部品クラス。
 *＜修正履歴＞
 *  バージョン  修正日      修正者      修正内容
 *  v1.00.00    2011/11/10  FJ          新規作成
 *
 ********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKAdchgConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKKojiAnkenConstCC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0098_KKSV0098OP;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.sun.enterprise.tools.common.util.StringUtils;

import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0021C010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0031C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0011D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B501CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0020002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020002CBSMsg2List;
import eo.ejb.cbs.cbsmsg.ETN0011D010CBSMsg;

/**
 * 住所変更共通登録コンポーネント部品クラス.
 * <br>
 * @author FJ
 */
public class JKKAdchgAddCmnCC extends AbstractCommonComponent {

	/** セッションハンドル保持域 */
	private static ThreadLocal<SessionHandle> keepSesHandle = new ThreadLocal<SessionHandle>()
	{
		// 保持域への設定はinitialValue()ではなくset()を使用する為、
		// initialValue()は実装しない
	};

	/**
	 * コンストラクタ.
	 * <br>
	 */
	public JKKAdchgAddCmnCC() {
	}

	/**
	 * 住所変更共通登録処理.
	 * <br>
	 * @param   handle     セッションマネージャなどを持ったハンドル情報
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Throwable  例外が発生した場合
	 * @return  リクエストパラメータ(param)に戻り値を追加して返却する
	 */
	public IRequestParameterReadWrite adchgAddCmn( SessionHandle handle, IRequestParameterReadWrite param, String fixedText ) throws Throwable {

		try {
			/** 事前準備 */
			HashMap<String, String> condMap;
			HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);
			HashMap<String, Object> reqMap;
			Map<?, ?> resMap;

			// 住所変更登録コモンコンポーネントマッピングクラスインスタンスを取得
			JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

			// SCリクエストInvokerを取得
			ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();


			/** リソース保持 */
			// セッションハンドルをローカル変数に保持
			keepSesHandle.set( handle );

			// ●● 2重登録回避の対応 START
			if (isNull(paramMap.get(JKKAdchgConstCC.PARAM_KEY_MSKM_NO))) {
						
				/** 住所変更申込 登録 */
				mskmIns( param, fixedText );
				
			} else {
				
				// ・EKK0011A010 申込一意照会
				condMap = new HashMap<String, String>();
				condMap.put( JKKAdchgMapperCC.COND_KEY_MSKM_NO, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_MSKM_NO) );
				reqMap = mapper.setEKK0011A010( param, fixedText, condMap );
				resMap = scCall.run( reqMap, keepSesHandle.get() );
				HashMap<String, Object> kk0011_a010 = mapper.getEKK0011A010( param, fixedText, resMap );
				mapper.scResultCheck( param );

				// 申込番号, 申込明細番号は画面から引き継いだパラメータを利用
				// 申込の最終更新年月日時分秒をparamへ設定
				paramMap.put( JKKAdchgConstCC.PARAM_KEY_MSKM_UPD_DTM_AF, kk0011_a010.get( EKK0011A010CBSMsg1List.LAST_UPD_DTM ) );

			}
			// ●● 2重登録回避の対応 END

			/** お客様情報 取得 */
			// ・ECK0011A010  お客様一意照会
			condMap = new HashMap<String, String>();
			condMap.put( JKKAdchgMapperCC.COND_KEY_SYSID, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_SYSID ) );
			condMap.put( JKKAdchgMapperCC.COND_KEY_OPEDATE, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_OPE_DATE ) );
			reqMap = mapper.setECK0011A010( param, fixedText, condMap );
			resMap = scCall.run( reqMap, keepSesHandle.get() );
			HashMap<String, Object> ck0011_a010_map = mapper.getECK0011A010( param, fixedText, resMap );
			mapper.scResultCheck( param );

			// ▼▼▼ 2012-02-20 IT1-2012-0000297 ADD ▼▼▼
			// 取得した世代登録年月日時分秒をparamへ設定
			paramMap.put( JKKAdchgConstCC.PARAM_KEY_KKYA_GENE_ADD_DTM_BF, ck0011_a010_map.get( ECK0011A010CBSMsg1List.GENE_ADD_DTM ).toString() );
			// ▲▲▲ 2012-02-20 IT1-2012-0000297 ADD ▲▲▲

			// 取得したお客様名をparamへ設定
			paramMap.put( JKKAdchgConstCC.PARAM_KEY_CUST_NM, (String)ck0011_a010_map.get( ECK0011A010CBSMsg1List.CUST_NM ) );

			// 取得したお客様カナ名をparamへ設定
			paramMap.put( JKKAdchgConstCC.PARAM_KEY_CUST_KANA, (String)ck0011_a010_map.get( ECK0011A010CBSMsg1List.CUST_KANA ) );


			/** 契約者住所変更要否判定 */
			// param.契約者住所同時変更有無を元に、契約者住所の変更を実施
			boolean ksh_ad_chg_flg = Boolean.parseBoolean( (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_KSH_AD_CHG_FLG ) );
			if( ksh_ad_chg_flg ){

				// お客様一意照会で取得した契約者タイプコードを元に、更新対象スキーマを特定
				String keisha_type_cd = (String)ck0011_a010_map.get( ECK0011A010CBSMsg1List.KEISHA_TYPE_CD );
				if( JKKAdchgConstCC.CD00036_OWN_ORNER.equals( keisha_type_cd ) ){

					/** お客様情報＜個人＞更新 */
					kkykOwnOrnerUpd( param, ck0011_a010_map, fixedText );
				}

				if( JKKAdchgConstCC.CD00036_COMP_ORNER.equals( keisha_type_cd ) ){

					/** お客様情報＜法人＞更新 */
					kkykCompOrnerUpd( param, ck0011_a010_map, fixedText );
				}
			}

			// ▼▼▼ 2012-03-13 HINKO.KIKI ADD ▼▼▼
			/** 転居先場所情報の登録 */
			ins_itens_place( param, fixedText );
			// ▲▲▲ 2012-03-13 HINKO.KIKI ADD ▲▲▲

			// ●● IT2-2012-0000371 START
			/** 工事に引渡す機器情報の設定 */
			make_kjtg_kiki_list( param, fixedText );
			// ●● IT2-2012-0000371 END

		} finally {

			// スレッドローカル変数のリソース解放
			if( keepSesHandle.get() != null ){
				keepSesHandle.remove();
			}
		}

		return param;
	}

	/**
	 * 住所変更申込登録処理.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	private void mskmIns( IRequestParameterReadWrite param, String fixedText ) throws Exception {

		/** 事前準備 */
		HashMap<String, Object> reqMap;
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);
		Map<?, ?> resMap;

		// 住所変更登録コモンコンポーネントマッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();


		/** 申込情報登録情報生成 */
		// 申込情報
		HashMap<String, Object> parent_map = new HashMap<String, Object>();
		parent_map.put( EKK0011D010CBSMsg.SYSID, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_SYSID ) );
		parent_map.put( EKK0011D010CBSMsg.MSKM_SBT_CD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_MSKM_SBT_CD ) );
		parent_map.put( EKK0011D010CBSMsg.MSKMSHO_ARIV_YMD, paramMap.get( JKKAdchgConstCC.PARAM_KEY_MSKM_ARIV_YMD ).toString() );
		parent_map.put( EKK0011D010CBSMsg.MSKM_UK_DTM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_MSKM_YMD ) + JKKAdchgConstCC.APPEND_HHMMSSFFF );
		parent_map.put( EKK0011D010CBSMsg.MSKM_UK_TNT_USER_ID, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_MSKM_UK_TNT_USER_ID ) );
		parent_map.put( EKK0011D010CBSMsg.MSKM_YMD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_MSKM_YMD ) );
		parent_map.put( EKK0011D010CBSMsg.TTL_BUSINESS_CENTER_UK_NO, JKKAdchgConstCC.STR_EMPTY );
		parent_map.put( EKK0011D010CBSMsg.TTL_BUSINESS_MSKM_OPT_CD, JKKAdchgConstCC.STR_EMPTY );
		parent_map.put( EKK0011D010CBSMsg.MSKM_RRKS_TELNO, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_MSKM_RRKS_TELNO ) );
		parent_map.put( EKK0011D010CBSMsg.MSKM_JSSIS_SBT_CD, JKKAdchgConstCC.STR_EMPTY );
		parent_map.put( EKK0011D010CBSMsg.CUST_YOBO_JIKO, JKKAdchgConstCC.STR_EMPTY );
// Model対応 20120910 新城 Start
		//parent_map.put( EKK0011D010CBSMsg.HNIN_CFM_BUNSHO_KIND_NM, JKKAdchgConstCC.STR_EMPTY );
// Model対応 20120910 新城 End
		parent_map.put( EKK0011D010CBSMsg.TEL_RRK_KIBOD_SBT_CD, JKKAdchgConstCC.STR_EMPTY );
		if (((String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_TEL_RRK_KIBO_TIME_CD )).length() > 1) {
			parent_map.put( EKK0011D010CBSMsg.TEL_RRK_KIBO_TIME_CD, ((String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_TEL_RRK_KIBO_TIME_CD )).substring(1) );
		} else {
			parent_map.put( EKK0011D010CBSMsg.TEL_RRK_KIBO_TIME_CD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_TEL_RRK_KIBO_TIME_CD ) );
		}
		parent_map.put( EKK0011D010CBSMsg.TAKCHO_KIBOD_SBT_CD, JKKAdchgConstCC.STR_EMPTY );
		parent_map.put( EKK0011D010CBSMsg.TAKCHO_KIBO_TIME_CD, JKKAdchgConstCC.STR_EMPTY );
		parent_map.put( EKK0011D010CBSMsg.KARI_MSKM_FLG, JKKAdchgConstCC.STR_EMPTY );
		parent_map.put( EKK0011D010CBSMsg.REFERER, JKKAdchgConstCC.STR_EMPTY );
		parent_map.put( EKK0011D010CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_KEPCO_CUSTINFO_JUJU_DOI_UM ).toString() );
		parent_map.put( EKK0011D010CBSMsg.SHOSA_BF_RRK_JIKO_YH, JKKAdchgConstCC.STR_EMPTY );
		parent_map.put( EKK0011D010CBSMsg.SHOSA_BF_RRK_JIKO, JKKAdchgConstCC.STR_EMPTY );
		parent_map.put( EKK0011D010CBSMsg.USE_SVC_KEIZK_SBT_CD, JKKAdchgConstCC.STR_EMPTY );
		parent_map.put( EKK0011D010CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD, JKKAdchgConstCC.CD00760_SHIN );
// ●● 巻@−２ 対応 start
		// 受付担当者識別コード
		parent_map.put( EKK0011D010CBSMsg.UK_TNTSHA_SKBT_CD, paramMap.get(JKKAdchgConstCC.PARAM_KEY_MSKM_UK_TNTSHA_SKBT_CD) );
		// 工事依頼情報連絡事項
		parent_map.put( EKK0011D010CBSMsg.KOJI_REQ_INFO_RRK_JIKO, JKKAdchgConstCC.STR_EMPTY );
		// 申込経路識別コード
		parent_map.put( EKK0011D010CBSMsg.MSKM_ROUTE_SKBT_CD, JKKAdchgConstCC.STR_EMPTY );
//●● 巻@−２ 対応 end

		// 申込明細情報

		int count = 0;

		String[] useSvcChgDivList = new String[]{
						JKKAdchgConstCC.PARAM_KEY_EOHNT_USE_SVC_CHG_DIV,
						// ▼▼▼ 2012-02-04 #052 CHG ▼▼▼
						JKKAdchgConstCC.PARAM_KEY_EOHTL_USE_SVC_CHG_DIV,
						JKKAdchgConstCC.PARAM_KEY_EOHTV_USE_SVC_CHG_DIV
//						JKKAdchgConstCC.PARAM_KEY_EOHTV_USE_SVC_CHG_DIV,
//						JKKAdchgConstCC.PARAM_KEY_EOHTL_USE_SVC_CHG_DIV
						// ▲▲▲ 2012-02-04 #052 CHG ▲▲▲
						};

		for(int i = 0; i < useSvcChgDivList.length ; i++ )
		{
			// 利用サービス変更区分が継続または変更または追加の場合
			if(isKeepOrChgOrAdd((String)paramMap.get( useSvcChgDivList[i] )))
			{
				count++;
			}
		}

		ArrayList<HashMap<String, Object>> child_list = new ArrayList<HashMap<String, Object>>();
		for(int i = 0; i < count ; i++ )
		{
			HashMap<String, Object> child_map = new HashMap<String, Object>();
			child_map.put( EKK0011D010CBSMsg1List.MSKMSHO_NO, paramMap.get( JKKAdchgConstCC.PARAM_KEY_MSKMSHO_NO ).toString() );
			child_map.put( EKK0011D010CBSMsg1List.WEB_UK_NO, JKKAdchgConstCC.STR_EMPTY );
// ●● マンション対応 START
//			child_map.put( EKK0011D010CBSMsg1List.MSKM_FORM_CD, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.MSKM_FORM_CD, paramMap.get( JKKAdchgConstCC.PARAM_KEY_MSKM_FORM_CD ) );
// ●● マンション対応 END
			child_map.put( EKK0011D010CBSMsg1List.MSKM_DTL_SBT_CD, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.RRKS_KTAI_TELNO, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.RRKS_OFFC_NM, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.DT_RRKS_TELNO, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.NEW_MSKM_SBT_CD, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.MSKM_OPTNTY_CD, JKKAdchgConstCC.STR_EMPTY );
// Model対応 20120910 新城 Start
			//child_map.put( EKK0011D010CBSMsg1List.MSKM_ROUTE_CD, JKKAdchgConstCC.STR_EMPTY );
// Model対応 20120910 新城 End
			child_map.put( EKK0011D010CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.KOJI_APO_RRKS_SHITEI_CD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_KOJI_APO_RRKS_SHITEI_CD ) );
			child_map.put( EKK0011D010CBSMsg1List.KOJI_APO_RRKS_TELNO, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_KOJI_APO_RRKS_TELNO ) );
			child_map.put( EKK0011D010CBSMsg1List.RRK_JIKO_ADD_DTM, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.MSKM_RRKS_MLAD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_MSKM_RRKS_MLAD ) );
			child_map.put( EKK0011D010CBSMsg1List.KOJI_PRG_TCHI_MLAD, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.RRK_JIKO, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.KJSC_TCH_KTAI_MLAD, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.ML_SEND_JGI_FLG, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.ML_SEND_JGI_RSN_MEMO, JKKAdchgConstCC.STR_EMPTY );
			// ▼▼▼ サービス追加時の対応 ▼▼▼
			child_map.put( EKK0011D010CBSMsg1List.OP_SVC_HKTGI_UM, JKKAdchgConstCC.CD00002_NASHI );
			// ▲▲▲ サービス追加時の対応 ▲▲▲
			child_map.put( EKK0011D010CBSMsg1List.BMP_MSKM_RRKS_TLN, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.DSL_ATICLE_SOHU_KIBO_UM, JKKAdchgConstCC.STR_EMPTY );
// ●● UI残 仕様整理対応 START
			//child_map.put( EKK0011D010CBSMsg1List.RRK_WAY_HOKI, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.RRK_WAY_HOKI, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_TKKJ_RRK_WAY_HOKI ));
// TODO	 MODEL資材の為、対応待ち(巻き対応@−２で対応予定)
//			child_map.put( EKK0011D010CBSMsg1List.KOJI_REQ_INFO_RRK_JIKO, JKKAdchgConstCC.PARAM_KEY_TPPV_TKKJ_ANKEN_BIKO );
// ●● UI残 仕様整理対応 END
			child_map.put( EKK0011D010CBSMsg1List.NEWCONST_BUKKEN_CD, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.HUKKAT_ANKEN_FLG, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.SAME_EQUIP_RE_MSKM_CD, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.HNIN_CFM_ATICLE_SBT_CD, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.MSKMSHO_SBT_CD, JKKAdchgConstCC.STR_EMPTY );
// ●● 巻@−２ 対応 START
			// 契約付加コード
			child_map.put( EKK0011D010CBSMsg1List.KEI_HUKA_CD, JKKAdchgConstCC.STR_EMPTY );
// ●● 巻@−２ 対応 END
			child_map.put( EKK0011D010CBSMsg1List.MAP_TEMP_UM, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.KCN_STB_MSKM_CNT, JKKAdchgConstCC.STR_EMPTY );
			child_map.put( EKK0011D010CBSMsg1List.KCN_STB_KIND_CD, JKKAdchgConstCC.STR_EMPTY );
// ●● 巻@-1 対応 START
//			//child_map.put( EKK0011D010CBSMsg1List.UK_TNTSHA_SKBT_CD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_MSKM_UK_TNTSHA_SKBT_CD ) );
// ●● 巻@-1 対応 END
// ●● 巻@−２ 対応 START
			// マンション設備システム連携用記事欄
			child_map.put( EKK0011D010CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN, JKKAdchgConstCC.STR_EMPTY  );
			// マンションID
			child_map.put( EKK0011D010CBSMsg1List.MANSION_ID, JKKAdchgConstCC.STR_EMPTY  );
			// CAT-ID
			child_map.put( EKK0011D010CBSMsg1List.CATID, JKKAdchgConstCC.STR_EMPTY  );
			// 申込受付種別コード
			child_map.put( EKK0011D010CBSMsg1List.MKM_UK_SBT_CD, JKKAdchgConstCC.STR_EMPTY  );
			// 申込書取扱情報担当者名
			child_map.put( EKK0011D010CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM, JKKAdchgConstCC.STR_EMPTY  );
			// 申込書取扱情報電話番号
			child_map.put( EKK0011D010CBSMsg1List.MSKMSHO_TRAT_IF_TELNO, JKKAdchgConstCC.STR_EMPTY  );
//●●巻@−２ 対応 END
			child_list.add( child_map );
		}

		/** 申込登録 */
		// ・EKK0011D010  申込登録
		reqMap = mapper.setEKK0011D010( param, fixedText, parent_map, child_list );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		HashMap<String, Object> kk0011_d010_res_map = mapper.getEKK0011D010( param, fixedText, resMap );
		mapper.scResultCheck( param );


		// 払い出された申込番号をparamへ設定
		paramMap.put( JKKAdchgConstCC.PARAM_KEY_MSKM_NO, kk0011_d010_res_map.get( EKK0011D010CBSMsg.MSKM_NO ) );

		// 払い出された申込の更新年月日時分秒をparamへ設定
		paramMap.put( JKKAdchgConstCC.PARAM_KEY_MSKM_UPD_DTM_AF, kk0011_d010_res_map.get( EKK0011D010CBSMsg.UPD_DTM ) );

		// 登録された申込明細情報をparamへ設定
		// ▼▼▼ 2012-02-18 #SUB2-6 CHG ▼▼▼
		ArrayList kk0011_d010_list_list = (ArrayList)( kk0011_d010_res_map.get( EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST ) );
//		ArrayList kk0011_d010_list_list = (ArrayList)( kk0011_d010_res_map.get( EKK0011D010CBSMsg.EKK0011D010CBSMSG1LIST ) );
		// ▲▲▲ 2012-02-18 #SUB2-6 CHG ▲▲▲
		ArrayList<HashMap<String, Object>> res_mskm_dtl = new ArrayList<HashMap<String, Object>>();

		int n = 0;
		for(int i = 0; i < useSvcChgDivList.length ; i++ )
		{
			// 利用サービス変更区分が継続または変更または追加の場合
			if(isKeepOrChgOrAdd((String)paramMap.get( useSvcChgDivList[i] )))
			{
				HashMap kk0011_d010_list_map = (HashMap)kk0011_d010_list_list.get(n);
				HashMap<String, Object> res_mskm_dtl_inf = new HashMap<String, Object>();
				res_mskm_dtl_inf.put( JKKAdchgConstCC.PARAM_KEY_MSKM_DTL_NO, kk0011_d010_list_map.get( EKK0011D010CBSMsg1List.MSKM_DTL_NO ).toString() );
				res_mskm_dtl.add( res_mskm_dtl_inf );
				n++;
			}
			else
			{
				res_mskm_dtl.add( new HashMap<String, Object>() );
			}
		}
		paramMap.put( JKKAdchgConstCC.PARAM_KEY_MSKM_DTL_LIST, res_mskm_dtl );

	}

	/**
	 * お客様情報＜個人＞更新処理.
	 * <br>
	 * @param   param            モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   ck0011_a010_map  お客様一意照会マップ
	 * @param   fixedText        ユーザ任意文字列
	 * @throws  Exception        例外が発生した場合
	 */
	private void kkykOwnOrnerUpd( IRequestParameterReadWrite param, HashMap<String, Object> ck0011_a010_map, String fixedText ) throws Exception {

		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所変更登録コモンコンポーネントマッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();


		/** お客様＜個人＞ 更新 */
		// 更新内容設定
		HashMap<String, Object> upd_ck0011_a010 = new HashMap<String, Object>();
		upd_ck0011_a010.putAll( ck0011_a010_map );

		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_AD_CD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_CD ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_PCD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_POST_CD ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_STATE_NM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_STATE ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_CITY_NM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_CITY ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_OAZTSU_NM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_OAZTSU ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_AZCHO_NM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_AZCHO ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_BNCHIGO, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_BNCHIGO ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_ADRTTM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_ADRTTM ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_ADRRM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_ADRRM ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_TELNO, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_TLN ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.RSV_APLY_YMD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_CHG_RSV_YMD ) );
		upd_ck0011_a010.put( JKKAdchgMapperCC.UPD_DT_CUST_UPD_DTM_BEF, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_KKYA_UPD_DTM_BF ) );

		// ・ECK0021A010  お客様<個人>一意照会
		condMap = new HashMap<String, String>();
		condMap.put( JKKAdchgMapperCC.COND_KEY_SYSID, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_SYSID ) );
		condMap.put( JKKAdchgMapperCC.COND_KEY_OPEDATE, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_OPE_DATE ) );
		reqMap = mapper.setECK0021A010( param, fixedText, condMap );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		HashMap<String, Object> ck0021_a010_map = mapper.getECK0021A010( param, fixedText, resMap );
		mapper.scResultCheck( param );


		/** お客様＜個人＞ 更新 */
		// ・ECK0021C010  お客様<個人>内容変更
		reqMap = mapper.setECK0021C010( param, fixedText, upd_ck0011_a010, ck0021_a010_map );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		HashMap<String, Object> ck0021_c010_res_map = mapper.getECK0021C010( param, fixedText, resMap );
		mapper.scResultCheck( param );


		// 更新後の更新年月日時分秒をparamへ設定
		paramMap.put( JKKAdchgConstCC.PARAM_KEY_KKYA_UPD_DTM_AF, (String)ck0021_c010_res_map.get( ECK0021C010CBSMsg.UPD_DTM ) );

	}

	/**
	 * お客様情報＜法人＞更新処理.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   ck0011_a010_map  お客様一意照会マップ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	private void kkykCompOrnerUpd( IRequestParameterReadWrite param, HashMap<String, Object> ck0011_a010_map, String fixedText ) throws Exception {

		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所変更登録コモンコンポーネントマッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();


		/** お客様＜個人＞ 更新 */
		// 更新内容設定
		HashMap<String, Object> upd_ck0011_a010 = new HashMap<String, Object>();
		upd_ck0011_a010.putAll( ck0011_a010_map );

		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_AD_CD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_CD ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_PCD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_POST_CD ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_STATE_NM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_STATE ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_CITY_NM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_CITY ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_OAZTSU_NM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_OAZTSU ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_AZCHO_NM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_AZCHO ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_BNCHIGO, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_BNCHIGO ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_ADRTTM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_ADRTTM ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_ADRRM, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_ADRRM ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.KEISHA_TELNO, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_TLN ) );
		upd_ck0011_a010.put( ECK0011A010CBSMsg1List.RSV_APLY_YMD, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_CHG_RSV_YMD ) );
		upd_ck0011_a010.put( JKKAdchgMapperCC.UPD_DT_CUST_UPD_DTM_BEF, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_KKYA_UPD_DTM_BF ) );

		// ・ECK0031A010  お客様<法人>一意照会
		condMap = new HashMap<String, String>();
		condMap.put( JKKAdchgMapperCC.COND_KEY_SYSID, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_SYSID ) );
		condMap.put( JKKAdchgMapperCC.COND_KEY_OPEDATE, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_OPE_DATE ) );
		reqMap = mapper.setECK0031A010( param, fixedText, condMap );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		HashMap<String, Object> ck0031_a010_map = mapper.getECK0031A010( param, fixedText, resMap );
		mapper.scResultCheck( param );


		/** お客様＜個人＞ 更新 */
		// ・ECK0021C010  お客様<個人>内容変更
		reqMap = mapper.setECK0031C010( param, fixedText, upd_ck0011_a010, ck0031_a010_map );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		HashMap<String, Object> ck0031_c010_res_map = mapper.getECK0031C010( param, fixedText, resMap );
		mapper.scResultCheck( param );


		// 更新後の更新年月日時分秒をparamへ設定
		paramMap.put( JKKAdchgConstCC.PARAM_KEY_KKYA_UPD_DTM_AF, (String)ck0031_c010_res_map.get( ECK0031C010CBSMsg.UPD_DTM ) );

	}

	/**
	 * チェック処理.
	 * <br>
	 * @param   handle     セッションマネージャなどを持ったハンドル情報
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 * @return  リクエストパラメータ(param)に戻り値を追加して返却する
	 */
	public HashMap<String, Object> getInvokeCBS( SessionHandle handle, IRequestParameterReadWrite param, String fixedText ) throws Exception {

		/** 事前準備 */
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);

		// 住所変更登録コモンコンポーネントマッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();


		/** お客様一意照会 上りマッピング生成 */
		// 検索条件格納マップ 生成
		HashMap<String, String> condMap = new HashMap<String, String>();
		condMap.put( JKKAdchgMapperCC.COND_KEY_SYSID, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_SYSID ) );
		condMap.put( JKKAdchgMapperCC.COND_KEY_OPEDATE, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_OPE_DATE ) );

		// 呼び元へ上りマッピングを返却
		HashMap<String, Object> reqMap = mapper.setECK0011A010( param, fixedText, condMap);
		return reqMap;
	}

	/**
	 * 住所変更処理種別コードが継続または変更または追加か判定する.
	 * <br>
	 * @param   useSvcChgDiv    住所変更処理種別コード
	 * @return  継続または変更または追加：true  それ以外：false
	 */
	private boolean isKeepOrChgOrAdd(String useSvcChgDiv) {

		if(JKKAdchgConstCC.CD00849_KEEP.equals(useSvcChgDiv) || 
			JKKAdchgConstCC.CD00849_CHG.equals(useSvcChgDiv) ||
			JKKAdchgConstCC.CD00849_ADD.equals(useSvcChgDiv))
		{
			return true;
		}

		return false;
	}

	/**
	 * 処理結果(エラー情報)取得処理.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   templates  テンプレート情報一覧
	 * @param   returnCd   リターンコード
	 * @throws  Exception  例外が発生した場合
	 * @return  リクエストパラメータ(param)に戻り値を追加して返却する
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode) {

		return param;
	}
	
	/**
	 * オブジェクトに値が設定されているか判定します。
	 * <br>
	 * @param arg0 判定するオブジェクト
	 * @return オブジェクトに値が設定されていない場合はtrue
	 */
	private boolean isNull(Object arg0) 
	{
		if (arg0 == null) 
		{
			return true;
		}
	
		return 0 == arg0.toString().length();
	}

	// ▼▼▼ 2012-03-13 HINKO.KIKI ADD ▼▼▼
	/**
	 * 転居先場所情報の登録.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	private void ins_itens_place( IRequestParameterReadWrite param, String fixedText ) throws Exception {

		/** 事前準備 */
		HashMap<String, Object> paramMap = (HashMap<String, Object>)( param.getData(fixedText) );
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		HashMap<String, Object> kksv_9800_map = (HashMap<String, Object>)( param.getData( KKSV0098_KKSV0098OP.KKSV009800CC ) );

		// 住所変更登録コモンコンポーネントマッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

/**
		// ■ ETN0011D010 場所登録
		// place_map生成
		HashMap<String, Object> place_map = new HashMap<String, Object>();
		// 場所ステータス
		place_map.put( ETN0011D010CBSMsg.PLACE_STAT, null );
		// 場所種別コード
		place_map.put( ETN0011D010CBSMsg.PLACE_SBT_CD, null );
		// 住所形態コード
		place_map.put( ETN0011D010CBSMsg.AD_FORM_CD, kksv_9800_map.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_FORM_CD ).toString() );
		// TODO 固定値を設定
		// マンション物件番号
		place_map.put( ETN0011D010CBSMsg.MANSION_BUKKEN_NO, "MANSION00001" );
		// 場所住所コード
		place_map.put( ETN0011D010CBSMsg.PLACE_AD_CD, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_CD ).toString() );
		// 場所郵便番号
		place_map.put( ETN0011D010CBSMsg.PLACE_PCD, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_POST_CD ).toString() );
		// 場所都道府県名
		place_map.put( ETN0011D010CBSMsg.PLACE_STATE_NM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_STATE ).toString() );
		// 場所市区町村名
		place_map.put( ETN0011D010CBSMsg.PLACE_CITY_NM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_CITY ).toString() );
		// 場所大字通称名
		place_map.put( ETN0011D010CBSMsg.PLACE_OAZTSU_NM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_OAZTSU ).toString() );
		// 場所字丁目名
		place_map.put( ETN0011D010CBSMsg.PLACE_AZCHO_NM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_AZCHO ).toString() );
		// 場所番地号
		place_map.put( ETN0011D010CBSMsg.PLACE_BNCHIGO, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_BNCHIGO ).toString() );
		// 場所住所補記・建物名
		place_map.put( ETN0011D010CBSMsg.PLACE_ADRTTM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_ADRTTM ).toString() );
		// 場所住所補記・部屋番号
		place_map.put( ETN0011D010CBSMsg.PLACE_ADRRM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_ADRRM ).toString() );
		// 場所登録年月日
		place_map.put( ETN0011D010CBSMsg.PLACE_ADD_YMD, JCCBPCommon.getOpeDate( null ) );
		// 場所照査年月日
		place_map.put( ETN0011D010CBSMsg.PLACE_SHOSA_YMD, JCCBPCommon.getOpeDate( null ) );
		// 残置開始年月日
		place_map.put( ETN0011D010CBSMsg.ZANCHI_STAYMD, JCCBPCommon.getOpeDate( null ) );
		// 残置終了年月日
		place_map.put( ETN0011D010CBSMsg.ZANCHI_ENDYMD, JCCBPCommon.getOpeDate( null ) );

		reqMap = mapper.setETN0011D010( param, fixedText, place_map );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		HashMap<String, Object> tn0011_d010_map = mapper.getETN0011D010( param, fixedText, resMap );
		mapper.scResultCheck( param );

		// 場所番号の引継
		kksv_9800_map.put( JKKAdchgConstCC.PARAM_KEY_ITENS_PLACE_NO, tn0011_d010_map.get( ETN0011D010CBSMsg.PLACE_NO ).toString() );
**/
		
// ●● 巻@-2 対応 START
// 巻@-2　対象外のため
		// ■ EKKA0020002 設置場所番号取得
		// place_map生成
		HashMap<String, Object> place_map = new HashMap<String, Object>();
		
		ArrayList<HashMap<String, Object>> place_map_list = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> place_meisai_map = new HashMap<String, Object>();

		// 場所住所コード
		place_meisai_map.put( EKKA0020002CBSMsg1List.KEY_SETPLACE_AD_CD, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_CD ).toString() );
		// 場所郵便番号
		place_meisai_map.put( EKKA0020002CBSMsg1List.KEY_SETPLACE_PCD, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_POST_CD ).toString() );
		// 場所都道府県名
		place_meisai_map.put( EKKA0020002CBSMsg1List.KEY_SETPLACE_STATE_NM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_STATE ).toString() );
		// 場所市区町村名
		place_meisai_map.put( EKKA0020002CBSMsg1List.KEY_SETPLACE_CITY_NM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_CITY ).toString() );
		// 場所大字通称名
		place_meisai_map.put( EKKA0020002CBSMsg1List.KEY_SETPLACE_OAZTSU_NM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_OAZTSU ).toString() );
		// 場所字丁目名
		place_meisai_map.put( EKKA0020002CBSMsg1List.KEY_SETPLACE_AZCHO_NM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_AZCHO ).toString() );
		// 場所番地号
		place_meisai_map.put( EKKA0020002CBSMsg1List.KEY_SETPLACE_BNCHIGO, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_BNCHIGO ).toString() );
		// 場所住所補記・建物名
		place_meisai_map.put( EKKA0020002CBSMsg1List.KEY_SETPLACE_ADRTTM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_ADRTTM ).toString() );
		// 場所住所補記・部屋番号
		place_meisai_map.put( EKKA0020002CBSMsg1List.KEY_SETPLACE_ADRRM, paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_AD_ADRRM ).toString() );
		place_map_list.add(place_meisai_map);
		place_map.put(EKKA0020002CBSMsg.EKKA0020002CBSMSG1LIST, new ArrayList<HashMap<String, Object>>());

		reqMap = mapper.setEKKA0020002( param, fixedText, place_map, place_map_list );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		ArrayList<HashMap<String, Object>> ekka002_0002_map_list = mapper.getEKKA0020002( param, fixedText, resMap );
		mapper.scResultCheck( param );

		// 場所番号の引継
		if (ekka002_0002_map_list.isEmpty()) {
			// ■取得件数が0件の場合
			//   引継情報無しの為、以下の処理は行わない。
			return;
		}

		// ■取得件数が1件以上の場合
		//   EKKA0020002 設置場所番号取得にて取得した場所番号を引継情報として設定
		HashMap<String, Object> place_ret_map = ekka002_0002_map_list.get(0);
		kksv_9800_map.put( JKKAdchgConstCC.PARAM_KEY_ITENS_PLACE_NO, place_ret_map.get( EKKA0020002CBSMsg2List.SETPLACE_NO ).toString() );
// ●● 巻@-2 対応 END
	}
	// ▲▲▲ 2012-03-13 HINKO.KIKI ADD ▲▲▲
// ●● IT2-2012-0000371 START
	/**
	 * 工事対象の機器リストを作成.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	private void make_kjtg_kiki_list( IRequestParameterReadWrite param, String fixedText ) throws Exception {

		/** 事前準備 */
		HashMap<String, Object> paramMap = (HashMap<String, Object>)( param.getData(fixedText) );
		ArrayList<HashMap<String,Object>> nt_kj_kktk_list = new ArrayList<HashMap<String,Object>>();
		ArrayList<HashMap<String,Object>> tl_kj_kktk_list = new ArrayList<HashMap<String,Object>>();
		ArrayList<HashMap<String,Object>> tv_kj_kktk_list = new ArrayList<HashMap<String,Object>>();
		HashMap<String, Object> kj_kktk_map;

		HashMap<String, Object> kksv_9800_map = (HashMap<String, Object>)( param.getData( KKSV0098_KKSV0098OP.KKSV009800CC ) );

		// ネットの機器情報を設定
		set_svc_kiki_list(param, fixedText, nt_kj_kktk_list, (String)kksv_9800_map.get(KKSV0098_KKSV0098OP.EOH_NT_SVC_KEI_NO));
		// 電話の機器情報を設定
		set_svc_kiki_list(param, fixedText, tl_kj_kktk_list, (String)kksv_9800_map.get(KKSV0098_KKSV0098OP.EOH_TL_SVC_KEI_NO));
		// テレビの機器情報を設定
		set_svc_kiki_list(param, fixedText, tv_kj_kktk_list, (String)kksv_9800_map.get(KKSV0098_KKSV0098OP.EOH_TV_SVC_KEI_NO));

		// ＳＴＢ機器一覧
		ArrayList<HashMap<String, Object>> stb_tppv_map_list = (ArrayList<HashMap<String, Object>>)kksv_9800_map.get( KKSV0098_KKSV0098OP.STB_TPPV_MAP_LIST );

		Iterator<HashMap<String, Object>> stb_tppv_map_list_ite = stb_tppv_map_list.iterator();
		while ( stb_tppv_map_list_ite.hasNext() ) {
			HashMap<String, Object> stb_map = stb_tppv_map_list_ite.next();
			// 宅内機器異動コード
			String tkkiki_ido_cd = (String)stb_map.get(KKSV0098_KKSV0098OP.STB_TPPV_TAKNKIKI_IDO_CD);
			// 交換以外かつ、一部撤去以外かつ、移動以外の場合
			if(!"02".equals(tkkiki_ido_cd) && !"03".equals(tkkiki_ido_cd) && !"04".equals(tkkiki_ido_cd)) {
				continue;
			}
			String svcUcwkNo = (String) stb_map.get(KKSV0098_KKSV0098OP.STB_TPPV_SVC_KEI_UCWK_NO);
			List<HashMap<String, Object>> kikiList = getKikiListBySvcUcwkNo(param, fixedText, svcUcwkNo);
			
			/** ＳＴＢの情報を設定 */
			kj_kktk_map = new HashMap<String, Object>();
//			// 機器提供サービス契約番号＿ＳＴＢ
//			kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO, stb_map.get(KKSV0098_KKSV0098OP.STB_TPPV_KKTK_SVC_KEI_NO));
//			// 世代登録年月日時分秒＿ＳＴＢ
//			kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, stb_map.get(KKSV0098_KKSV0098OP.STB_TPPV_KKTK_SVC_KEI_GENE_ADD_DTM));
			for (HashMap<String, Object> map : kikiList) {
				if ("A0".equals(map.get(EKK0341B501CBSMsg1List.TAKNKIKI_SBT_CD)))
				{
					// 機器提供サービス契約番号＿ＢＣＡＳ
					kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO, map.get(EKK0341B501CBSMsg1List.KKTK_SVC_KEI_NO));
					// 世代登録年月日時分秒＿ＢＣＡＳ
					kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, map.get(EKK0341B501CBSMsg1List.GENE_ADD_DTM));
					break;
				}
			}
			tv_kj_kktk_list.add(kj_kktk_map);
			/** ＢＣＡＳの情報を設定 */
			kj_kktk_map = new HashMap<String, Object>();
//			// 機器提供サービス契約番号＿ＢＣＡＳ
//			kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO, stb_map.get(KKSV0098_KKSV0098OP.STB_TPPV_KKTK_SVC_KEI_NO_BCAS));
//			// 世代登録年月日時分秒＿ＢＣＡＳ
//			kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, stb_map.get(KKSV0098_KKSV0098OP.STB_TPPV_KKTK_SVC_KEI_GENE_ADD_DTM_BCAS));
			for (HashMap<String, Object> map : kikiList) {
				if ("B0".equals(map.get(EKK0341B501CBSMsg1List.TAKNKIKI_SBT_CD)))
				{
					// 機器提供サービス契約番号＿ＢＣＡＳ
					kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO, map.get(EKK0341B501CBSMsg1List.KKTK_SVC_KEI_NO));
					// 世代登録年月日時分秒＿ＢＣＡＳ
					kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, map.get(EKK0341B501CBSMsg1List.GENE_ADD_DTM));
					break;
				}
			}
			tv_kj_kktk_list.add(kj_kktk_map);
			/** ＣＣＡＳの情報を設定 */
			kj_kktk_map = new HashMap<String, Object>();
//			// 機器提供サービス契約番号＿ＣＣＡＳ
//			kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO, stb_map.get(KKSV0098_KKSV0098OP.STB_TPPV_KKTK_SVC_KEI_NO_CCAS));
//			// 世代登録年月日時分秒＿ＣＣＡＳ
//			kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, stb_map.get(KKSV0098_KKSV0098OP.STB_TPPV_KKTK_SVC_KEI_GENE_ADD_DTM_CCAS));
			for (HashMap<String, Object> map : kikiList) {
				if ("C0".equals(map.get(EKK0341B501CBSMsg1List.TAKNKIKI_SBT_CD)))
				{
					// 機器提供サービス契約番号＿ＢＣＡＳ
					kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO, map.get(EKK0341B501CBSMsg1List.KKTK_SVC_KEI_NO));
					// 世代登録年月日時分秒＿ＢＣＡＳ
					kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, map.get(EKK0341B501CBSMsg1List.GENE_ADD_DTM));
					break;
				}
			}
			tv_kj_kktk_list.add(kj_kktk_map);
		}

		kksv_9800_map.put(JKKAdchgConstCC.KJ_KKTK_LIST_NT, nt_kj_kktk_list);
		kksv_9800_map.put(JKKAdchgConstCC.KJ_KKTK_LIST_TL, tl_kj_kktk_list);
		kksv_9800_map.put(JKKAdchgConstCC.KJ_KKTK_LIST_TV, tv_kj_kktk_list);
	}

	/**
	 * サービス契約内訳番号で機器提供サービスの一覧を取得します.
	 * @param param
	 * @param fixedText
	 * @param svcUcwkNo
	 * @return
	 * @throws Exception 
	 */
	private List<HashMap<String, Object>> getKikiListBySvcUcwkNo(IRequestParameterReadWrite param, String fixedText, String svcUcwkNo) throws Exception
	{
		/** 前準備 **/
		HashMap<String, String> condMap;
		HashMap<String, Object> paramMap = (HashMap<String, Object>)( param.getData(fixedText) );
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所変更登録コモンコンポーネントマッピングクラスインスタンス
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		// SCリクエストInvoker
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		condMap = new HashMap<String, String>();
		// サービス契約内訳番号
		condMap.put("svc_kei_ucwk_no", svcUcwkNo);
		reqMap = mapper.setEKK00341B501( param, fixedText, condMap );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		List<HashMap<String, Object>> kk0341_b501_map_list = mapper.getEKK00341B501( param, fixedText, resMap );
		mapper.scResultCheck( param );

		return kk0341_b501_map_list;
	}

	/**
	 * サービス毎の工事対象の機器リストを作成.
	 * <br>
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Exception  例外が発生した場合
	 */
	private void set_svc_kiki_list( IRequestParameterReadWrite param, String fixedText, ArrayList<HashMap<String,Object>> kj_kktk_list, String svc_kei_no) throws Exception {

		if(svc_kei_no == null || "".equals(svc_kei_no)) {
			return;
		}
		/** 事前準備 */
		HashMap<String, String> condMap;
		HashMap<String, Object> paramMap = (HashMap<String, Object>)( param.getData(fixedText) );
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		HashMap<String, Object> kj_kktk_map;

		HashMap<String, Object> kksv_9800_map = (HashMap<String, Object>)( param.getData( KKSV0098_KKSV0098OP.KKSV009800CC ) );

		// 住所変更登録コモンコンポーネントマッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// ■ EKK0081A010 サービス契約一意照会
		condMap = new HashMap<String, String>();
		condMap.put( JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, svc_kei_no );
		condMap.put( JKKAdchgMapperCC.COND_KEY_OPEDATE, paramMap.get( JKKAdchgConstCC.PARAM_KEY_OPE_DATE ).toString() );
		reqMap = mapper.setEKK0081A010( param, fixedText, condMap );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		HashMap<String, Object> kk0081_a010_map = mapper.getEKK0081A010( param, fixedText, resMap );
		mapper.scResultCheck( param );

		// ※ サービス契約に紐付く機器
		// ■ EKK0801B001 料金コース_機器提供サービス一覧照会(料金コースコード)
		condMap = new HashMap<String, String>();
		condMap.put( "key_pcrs_cd", (String)kk0081_a010_map.get( EKK0081A010CBSMsg1List.PCRS_CD ) );
		reqMap = mapper.setEKK0801B001( param, fixedText, condMap );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		ArrayList<HashMap<String, Object>> svc_kei_kk0801_b001_list = mapper.getEKK0801B001( param, fixedText, resMap );
		mapper.scResultCheck( param );

		// 利用中機器一覧
		ArrayList<HashMap<String, Object>> rykk_tppv_map_list = (ArrayList<HashMap<String, Object>>)kksv_9800_map.get( KKSV0098_KKSV0098OP.RYKK_TPPV_MAP_LIST );

		Iterator<HashMap<String, Object>> rykk_tppv_map_list_ite = rykk_tppv_map_list.iterator();
		while ( rykk_tppv_map_list_ite.hasNext() ) {
			kj_kktk_map = new HashMap<String,Object>();
			// 機器一覧
			HashMap<String, Object> rykk_map = rykk_tppv_map_list_ite.next();
			// 宅内機器撤去種別コード
			String tkkiki_tekkyo_sbt_cd = (String)rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_TKKIKI_TEKKYO_SBT_CD);
			// 残置の場合
			if("2".equals(tkkiki_tekkyo_sbt_cd)) {
				continue;
			}
			// 機器提供サービスコード
			String tg_kktk_svc_cd = (String)rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_CD);
			String svc_cd = (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.SVC_CD);
			// ONUの場合
			if("C012".equals(tg_kktk_svc_cd) && ("01".equals(svc_cd) || "02".equals(svc_cd))) {
				// 機器提供サービス契約番号
				kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO, rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_NO));
				// 世代登録年月日時分秒
				if (StringUtils.isEmpty((String) rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_GENE_ADD_DTM)))
				{
					HashMap<String, Object> kk0341_a010_map = getKktkSvcKei(param, fixedText, (String) rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_NO));
					kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, kk0341_a010_map.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM));
				}
				else
				{
					kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_GENE_ADD_DTM));
				}
				kj_kktk_list.add(kj_kktk_map);
				continue;
			}
			// VONUの場合
			if("C013".equals(tg_kktk_svc_cd) && "03".equals(svc_cd)) {
				// 機器提供サービス契約番号
				kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO, rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_NO));
				// 世代登録年月日時分秒
				if (StringUtils.isEmpty((String) rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_GENE_ADD_DTM)))
				{
					HashMap<String, Object> kk0341_a010_map = getKktkSvcKei(param, fixedText, (String) rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_NO));
					kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, kk0341_a010_map.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM));
				}
				else
				{
					kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_GENE_ADD_DTM));
				}
				kj_kktk_list.add(kj_kktk_map);
				continue;
			}
			Iterator<HashMap<String, Object>> svc_kk0801_b001_iterator = svc_kei_kk0801_b001_list.iterator();
			while ( svc_kk0801_b001_iterator.hasNext() ) {
				// (契約)料金コース_機器提供サービス一覧．次要素
				HashMap<String, Object> svc_kk0801_b001_map = svc_kk0801_b001_iterator.next();

				// 機器提供サービスコードでマッチング
				if ( svc_kk0801_b001_map.get( "kktk_svc_cd" ).toString().equals( tg_kktk_svc_cd ) ) {
					// 機器提供サービス契約番号
					kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO, rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_NO));
					// 世代登録年月日時分秒
					if (StringUtils.isEmpty((String) rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_GENE_ADD_DTM)))
					{
						HashMap<String, Object> kk0341_a010_map = getKktkSvcKei(param, fixedText, (String) rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_NO));
						kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, kk0341_a010_map.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM));
					}
					else
					{
						kj_kktk_map.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, rykk_map.get(KKSV0098_KKSV0098OP.RYKK_TPPV_KKTK_SVC_KEI_GENE_ADD_DTM));
					}
					kj_kktk_list.add(kj_kktk_map);
					break;
				}
			}
		}
	}
// ●● IT2-2012-0000371 END
	
	public HashMap<String, Object> getKktkSvcKei( IRequestParameterReadWrite param, String fixedText, String kktk_svc_kei_no ) throws Exception {

		/** 前準備 **/
		HashMap<String, Object> paramMap = (HashMap<String, Object>)( param.getData(fixedText) );
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所変更登録コモンコンポーネントマッピングクラスインスタンス
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		// SCリクエストInvoker
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ■ EKK0341A010_機器提供サービス契約一意照会
		HashMap<String, String> condMap = new HashMap<String, String>();
		condMap.put( JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kktk_svc_kei_no );
		condMap.put( JKKAdchgMapperCC.COND_KEY_OPEDATE, paramMap.get( JKKAdchgConstCC.PARAM_KEY_OPE_DATE ).toString() );

		reqMap = mapper.setEKK0341A010( param, fixedText, condMap );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		HashMap<String, Object> kk0341_a010_map = mapper.getEKK0341A010( param, fixedText, resMap );
		mapper.scResultCheck( param );

		return kk0341_a010_map;
	}

}
