/********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************
 *＜プログラム内容＞
 *  システム名      ：eo顧客基幹システム
 *  モジュール名    ：住所変更情報日付変更コンポーネント部品クラス
 *  ソースファイル名：JKKAdchgRsvDateChgCC.java
 *  作成者          ：FJ
 *  日付            ：2012年12月27日
 *＜機能概要＞
 *  住所変更修正に伴う日付変更処理を行う部品クラス。
 *＜修正履歴＞
 *  バージョン  修正日      修正者      修正内容
 *  v1.00.00    2012/12/27  FJ          新規作成
 *	v8.00.00	2014/04/20	FJ) 星野	OM-2014-0000041対応
 *	v8.01.00	2014/04/28	FJ) 星野	OM-2014-0001642対応
 *	v9.00.00	2014/04/30  FJ)北谷     ANK-2056-00-00対応
 * v10.00.00	2014/09/01  FJ)北谷     ANK-2120-00-00対応
 * v10.01.00	2014/10/11  FJ)北谷     IT1-2014-0000330対応
 * v10.02.00	2014/11/16  FJ)阮       OM-2014-0003579対応 
 * v12.00.00	2015/02/13  FJ)鯵坂     OM-2015-0000137対応
 * v14.00.00	2015/05/14  FJ)藤本     【ANK-2460-00-00】【MUSe対応】ＭＴの撤去（解約）変更
 * v19.00.00	2015/09/17  FJ)谷口     【OM-2015-0001224】ECS-SODの緊急通報住所と利用場所住所が不一致
 * v19.00.01	2015/10/01  FJ)谷口     【OM-2015-0001224】IT1不具合対応
 * v20.00.00	2015/12/28	FJ)星野		【OM-2015-0003154】住所変更確定時に違約金発生区分が「無」に上書きされた
 * v28.00.00	2017/01/12	FJ)舘山		【OM-2016-0002491】住変解約希望日変更による機器OP解約不正
 * v29.00.00	2017/02/13	FJ)森脇		【OM-2016-0002358】サービス課金終了年月日更新不備
 * v33.00.00	2017/09/09	FJ)星野		OM-2017-0000920
 * v61.00.00	2023/01/04  FJ)澤田	   【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
 * v68.00.00	2023/12/06	FJ)舘山		【ANK-4516-00-00】【eo】 HGW交換不可フラグ設定機能の追加
 * v71.00.00	2024/08/20	FJ)舘山		IT1-2024-0000030_HGW交換不可フラグがリセットされない
 ********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKAdchgConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKAdchgInitDspConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKKojiAnkenConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKAdchgConstCC.IDO_RSV_DTL_CD;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.bp.x21.sc.exception.SCException;
import com.sun.enterprise.tools.common.util.StringUtils;

import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCDateUtil;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081E010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0101A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161B011CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B031CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0381A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1681C021CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2091B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2101B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0081B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0091B020CBSMsg1List;

/**
 * 住所変更情報日付変更コンポーネント部品クラス.
 * <br>
 * @author FJ
 */
public class JKKAdchgRsvDateChgCC extends AbstractCommonComponent {

	/** セッションハンドル保持域 */
	private static ThreadLocal<SessionHandle> keepSesHandle = new ThreadLocal<SessionHandle>()
	{
	};

	/**
	 * コンストラクタ.
	 * <br>
	 */
	public JKKAdchgRsvDateChgCC() {
	}

	/**
	 * 日付変更処理.
	 * <br>
	 * @param   handle     セッションマネージャなどを持ったハンドル情報
	 * @param   param      モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param   fixedText  ユーザ任意文字列
	 * @throws  Throwable  例外が発生した場合
	 * @return  リクエストパラメータ(param)に戻り値を追加して返却する
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable {

		try {

			/** リソース保持 */
			// セッションハンドルをローカル変数に保持
			keepSesHandle.set(handle);
			
			/** 事前準備 */
			HashMap<String, String> condMap = new HashMap<String, String>();
			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();
			
			
			/** 住所変更スキーマデータの取得 */
			// ・EKK2091B001 住所変更一覧照会
			condMap.clear();
			condMap.put( JKKAdchgMapperCC.COND_KEY_ADCHG_NO, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ADCHG_ADCHG_NO ) );
			condMap.put( JKKAdchgMapperCC.COND_KEY_SVC_KEI_KAIS_UCWK_NO, (String)paramMap.get( JKKAdchgInitDspConstCC.SVC_KEI_KAISEN_UCWK_NO ) );
			reqMap = mapper.setEKK2091B001( param, fixedText, condMap );
			resMap = scCall.run( reqMap, keepSesHandle.get() );
			ArrayList<HashMap<String, Object>> kk2091_b001_list = mapper.getEKK2091B001( param, fixedText, resMap );
			mapper.scResultCheck( param );
			
			if(kk2091_b001_list == null || kk2091_b001_list.isEmpty()){
				// 該当データなしの場合リターン
				return param;
			}
			// 住所変更データの取得
			HashMap<String, Object> kk2091_b001_map = kk2091_b001_list.get(0);
			// 住所変更番号
			String adchgNo = (String)kk2091_b001_map.get( EKK2091B001CBSMsg1List.ADCHG_NO );
			// 20150514 ANK-2460-00-00 【MUSe対応】ＭＴの撤去（解約）変更 ADD START
			// 申込番号
			String mskmNo = (String)kk2091_b001_map.get( EKK2091B001CBSMsg1List.MSKM_NO );
			// 20150514 ANK-2460-00-00 【MUSe対応】ＭＴの撤去（解約）変更 ADD END
			
			
			/** 住所変更明細スキーマデータの取得（解約/入居予定日） */
			ArrayList<HashMap<String, Object>> kk2101_b001_list = getAdchgDtlList(param, fixedText, adchgNo, JKKAdchgConstCC.CD01241_DSL_NYUKYO_YMD);
			if(kk2101_b001_list == null || kk2101_b001_list.isEmpty()){
				// 該当データなしの場合リターン
				return param;
			}
			// 住所変更明細データの取得
			HashMap<String, Object> kk2101_b001_map = kk2101_b001_list.get(0);
			
			// 変更前入居予定日
			String nyukyoRsvYmdBef = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
			// 変更前解約希望日
			String dslKiboYmdBef = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
			// 入居予定日
			String nyukyoRsvYmdAft = (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_ITENS_NYUKYO_RSV_YMD );
			// 解約希望日
			String dslKiboYmdAft = (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_TPPV_TKKJ_DSL_KIBO_YMD );
			
// OM-2014-0000041対応 20140420 星野 ADD START
			// 住所変更確定時は日付変更なしでもreturnしない。20991231のデータを戻す必要があるため
			if(!isAdchgFix(paramMap)){
//OM-2014-0000041対応 20140420 星野 ADD END
				// 日付変更なしの場合リターン
				if(nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft) && dslKiboYmdBef.equals(dslKiboYmdAft)){
					return param;
				}
// OM-2014-0000041対応 20140420 星野 ADD START
			}
//OM-2014-0000041対応 20140420 星野 ADD END
			
// OM-2013-0004475対応 20131124 星野 ADD START
			String mskmDtlNoNet = (String)paramMap.get("mskm_dtl_no_net");
			String mskmDtlNoTel = (String)paramMap.get("mskm_dtl_no_tel");
			String mskmDtlNoTv  = (String)paramMap.get("mskm_dtl_no_tv");
			
			String mskmDtlNoNetTelTv;
			if(!StringUtils.isEmpty(mskmDtlNoNet)){
				mskmDtlNoNetTelTv = mskmDtlNoNet;
			}else if(!StringUtils.isEmpty(mskmDtlNoTel)){
				mskmDtlNoNetTelTv = mskmDtlNoTel;
			}else{
				mskmDtlNoNetTelTv = mskmDtlNoTv;
			}
// OM-2013-0004475対応 20131124 星野 ADD END
			
			
			/** サービス契約回線内訳の更新 */
			String svcKeiKaisUcwkNo = (String) kk2091_b001_map.get(EKK2091B001CBSMsg1List.ITENS_SVKEI_KISUW_NO);
// OM-2013-0004475対応 20131124 星野 MOD START
//			updSvcKeiKaisUcwkInf(param, fixedText, paramMap, svcKeiKaisUcwkNo, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
// ANK-4516-00-00 Modify START
//			updSvcKeiKaisUcwkInf(param, fixedText, paramMap, svcKeiKaisUcwkNo, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNetTelTv);
			updSvcKeiKaisUcwkInf(param, fixedText, paramMap, svcKeiKaisUcwkNo, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNetTelTv, adchgNo);
// ANK-4516-00-00 Modify END
// OM-2013-0004475対応 20131124 星野 MOD END
			
			/** お客様の更新 */
			String sysid = (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_SYSID );
			updCustInf(param, fixedText, paramMap, sysid, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
			
			/** サービス契約の更新 */
// OM-2013-0004475対応 20131124 星野 MOD START
//			updSvcKeiInf(param, fixedText, paramMap, adchgNo, dslKiboYmdBef, dslKiboYmdAft, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
			updSvcKeiInf(param, fixedText, paramMap, adchgNo, dslKiboYmdBef, dslKiboYmdAft, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNet, mskmDtlNoTel, mskmDtlNoTv);
// OM-2013-0004475対応 20131124 星野 MOD END
			
			/** サービス契約内訳の更新 */
// OM-2013-0004475対応 20131124 星野 MOD START
//			updSvcKeiUcwkInf(param, fixedText, paramMap, adchgNo, dslKiboYmdBef, dslKiboYmdAft, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
			updSvcKeiUcwkInf(param, fixedText, paramMap, adchgNo, dslKiboYmdBef, dslKiboYmdAft, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNet, mskmDtlNoTel, mskmDtlNoTv);
// OM-2013-0004475対応 20131124 星野 MOD END
			
			/** 機器提供サービス契約の更新 */
// OM-2013-0004475対応 20131124 星野 MOD START
//			updKktkSvcKeiInf(param, fixedText, paramMap, adchgNo, dslKiboYmdBef, dslKiboYmdAft, nyukyoRsvYmdBef, nyukyoRsvYmdAft, );
			updKktkSvcKeiInf(param, fixedText, paramMap, adchgNo, dslKiboYmdBef, dslKiboYmdAft, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNet, mskmDtlNoTel, mskmDtlNoTv);
// OM-2013-0004475対応 20131124 星野 MOD END
			
			// ANK-2120-00-00 2014/09/01 add start
			/** 機器オプションサービス契約の更新 */
			updKkOpSvcKeiInf(param, fixedText, paramMap, adchgNo, dslKiboYmdBef, dslKiboYmdAft, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNet, mskmDtlNoTel, mskmDtlNoTv);
			// ANK-2120-00-00 2014/09/01 add end
			
			/** オプションサービス契約の更新 */
// OM-2013-0004475対応 20131124 星野 MOD START
//			updOpSvcKeiInf(param, fixedText, paramMap, adchgNo, dslKiboYmdBef, dslKiboYmdAft, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
			updOpSvcKeiInf(param, fixedText, paramMap, adchgNo, dslKiboYmdBef, dslKiboYmdAft, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNet, mskmDtlNoTel, mskmDtlNoTv);
// OM-2013-0004475対応 20131124 星野 MOD END
			
			/** 請求契約の更新 */
// OM-2013-0004475対応 20131124 星野 MOD START
			updSeikyKeiInf(param, fixedText, paramMap, adchgNo, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNetTelTv);
// OM-2013-0004475対応 20131124 星野 MOD END
			
// ANK-2056-00-00 2014/04/28 start
			/** 電話オプションパックの更新 */
			updTelOpPackInf(param, fixedText, paramMap, adchgNo, dslKiboYmdBef, dslKiboYmdAft, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNet, mskmDtlNoTel, mskmDtlNoTv);
// ANK-2056-00-00 2014/04/28 end

			// 20150514 ANK-2460-00-00 【MUSe対応】ＭＴの撤去（解約）変更 ADD START
			/** 工事案件情報の更新 */
			updKojiakInf(param, fixedText, paramMap, adchgNo, dslKiboYmdBef, dslKiboYmdAft, mskmNo);
			// 20150514 ANK-2460-00-00 【MUSe対応】ＭＴの撤去（解約）変更 ADD END

			// 住所変更・住所変更明細の更新は後続の本登録ＣＣ・仮登録ＣＣに委ねる
			
						
		} finally {

			if(keepSesHandle.get() != null) {
				keepSesHandle.remove();
			}
		}

		return param;
	}

// OM-2014-0000041対応 20140420 星野 ADD START
	private boolean isAdchgFix(HashMap<String, Object> paramMap) {
		return "1".equals( paramMap.get("isAdchgFixFlg") );
	}
// OM-2014-0000041対応 20140420 星野 ADD END

	private void updSvcKeiKaisUcwkInf(
		IRequestParameterReadWrite param, 
		String fixedText, 
		HashMap<String, Object> paramMap, 
		String svcKeiKaisUcwkNo, 
		String nyukyoRsvYmdBef, 
		String nyukyoRsvYmdAft
// OM-2013-0004475対応 20131124 星野 ADD START
		, String mskmDtlNo
// OM-2013-0004475対応 20131124 星野 ADD END
// ANK-4516-00-00 ADD START
		, String adchgNo
// ANK-4516-00-00 ADD END
	) throws Exception {
		
		// 日付変更なしの場合リターン
		if(nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)){
			return;
		}

		
		/** 事前準備 */
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		/** サービス契約回線内訳スキーマデータの取得 */
		// ・EKK0251A010 サービス契約回線内訳一意照会
		condMap.clear();
		condMap.put( JKKAdchgMapperCC.COND_KEY_SVC_KEI_KAIS_UCWK_NO, svcKeiKaisUcwkNo );
		reqMap = mapper.setEKK0251A010( param, fixedText, condMap );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		HashMap<String, Object> kk0251_a010 = mapper.getEKK0251A010( param, fixedText, resMap );
		mapper.scResultCheck( param );
		
		if(kk0251_a010 == null || kk0251_a010.isEmpty()){
			// 該当データなしの場合リターン
			return;
		}
		
// OM-2013-0004793対応 20131203 星野 DEL START
// 入居予定日については、他異動の更新内容を上書きして可
//		// 変更前入居予定日が不一致の場合は更新しない
//		if( !nyukyoRsvYmdBef.equals( kk0251_a010.get(EKK0251A010CBSMsg1List.NYUKYO_RSV_YMD) ) ){
//			return;
//		}
// OM-2013-0004793対応 20131203 星野 DEL END
		
		// 入居予定日を書き換え
		kk0251_a010.put(EKK0251A010CBSMsg1List.NYUKYO_RSV_YMD, nyukyoRsvYmdAft);
// OM-2013-0004475対応 20131124 星野 ADD START
		// 申込明細番号を設定
		if(!StringUtils.isEmpty(mskmDtlNo)){
			kk0251_a010.put(EKK0251A010CBSMsg1List.MSKM_DTL_NO, mskmDtlNo);
		}
// OM-2013-0004475対応 20131124 星野 ADD END
		
		// 更新年月日時分秒(更新前)に更新年月日を設定
// IKK-2013-0001024対応 20130426 星野 MOD START
//		kk0251_a010.put( JKKAdchgMapperCC.UPD_DT_KEI_KAIS_UCWK_UPD_DTM_BEF, (String)kk0251_a010.get( EKK0251A010CBSMsg1List.UPD_DTM ) );
		kk0251_a010.put( JKKAdchgMapperCC.UPD_DT_KEI_KAIS_UCWK_UPD_DTM_BEF, (String)kk0251_a010.get( EKK0251A010CBSMsg1List.LAST_UPD_DTM ) );
// IKK-2013-0001024対応 20130426 星野 MOD END
// IT1-2024-0000030 DEL START
//// ANK-4516-00-00 ADD START
//		if (isResetHGWKknFfg(param, fixedText, adchgNo, kk0251_a010))
//		{
//			// 可に変更する
//			kk0251_a010.put(EKK0251C030CBSMsg.HGW_KKN_FFG, "0");
//		}
//// ANK-4516-00-00 ADD END
// IT1-2024-0000030 DEL END
		
		// ・EKK0251C030  サービス契約回線内訳内容変更
		reqMap = mapper.setEKK0251C030( param, fixedText, kk0251_a010 );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		mapper.getEKK0251C030( param, fixedText, resMap );
		mapper.scResultCheck( param );
	}
	
	private void updCustInf(
		IRequestParameterReadWrite param, 
		String fixedText,
		HashMap<String, Object> paramMap, 
		String sysid,
		String nyukyoRsvYmdBef, 
		String nyukyoRsvYmdAft
	) throws Exception {
		
		// 日付変更なしの場合リターン
		if(nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)){
			return;
		}

		
		/** 異動予約スキーマの更新 */
		updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_SYSID, sysid, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
		
		/** お客様スキーマの更新 */
		updCust(param, fixedText, paramMap, sysid, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
	}

	private void updCust(
		IRequestParameterReadWrite param, 
		String fixedText,
		HashMap<String, Object> paramMap, 
		String sysid,
		String nyukyoRsvYmdBef, 
		String nyukyoRsvYmdAft
	) throws Exception {
		
		// 日付変更なしの場合リターン
		if(nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)){
			return;
		}
		
		/** 事前準備 */
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ・ECK0011A010  お客様一意照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SYSID, sysid);
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
		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);
		
		// 変更前予約適用年月日が不一致の場合は更新しない
		if( !nyukyoRsvYmdBef.equals( ck0011_a010_map.get(ECK0011A010CBSMsg1List.RSV_APLY_YMD) ) ){
			return;
		}
		
		// 予約適用年月日を更新
		ck0011_a010_map.put(ECK0011A010CBSMsg1List.RSV_APLY_YMD, nyukyoRsvYmdAft);
		
		// 更新前年月日時分秒を更新
// 20130712 MOD START
//		ck0011_a010_map.put("upd_dt_cust_upd_dtm_bef", ck0011_a010_map.get(ECK0011A010CBSMsg1List.UPD_DTM));
		ck0011_a010_map.put("upd_dt_cust_upd_dtm_bef", ck0011_a010_map.get(ECK0011A010CBSMsg1List.LAST_UPD_DTM));
// 20130712 MOD END

		// お客様一意照会で取得した契約者タイプコードを元に、更新対象スキーマを特定
		String keisha_type_cd = (String)ck0011_a010_map.get(ECK0011A010CBSMsg1List.KEISHA_TYPE_CD);
		if(JKKAdchgConstCC.CD00036_OWN_ORNER.equals(keisha_type_cd)) {
			
			// ・ECK0021A010  お客様<個人>一意照会
			condMap = new HashMap<String, String>();
			condMap.put(JKKAdchgMapperCC.COND_KEY_SYSID, sysid);
			condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
			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, ck0011_a010_map, ck0021_a010_map);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			mapper.getECK0021C010(param, fixedText, resMap);
			mapper.scResultCheck(param);

		}else if(JKKAdchgConstCC.CD00036_COMP_ORNER.equals(keisha_type_cd)) {
			
			// ・ECK0031A010  お客様<法人>一意照会
			condMap = new HashMap<String, String>();
			condMap.put(JKKAdchgMapperCC.COND_KEY_SYSID, sysid);
			condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
			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, ck0011_a010_map, ck0031_a010_map);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			mapper.getECK0031C010(param, fixedText, resMap);
			mapper.scResultCheck(param);
		}
		
	}

	private void updSvcKeiInf(
		IRequestParameterReadWrite param,
		String fixedText, 
		HashMap<String, Object> paramMap, 
		String adchgNo,
		String dslKiboYmdBef,
		String dslKiboYmdAft,
		String nyukyoRsvYmdBef,
		String nyukyoRsvYmdAft
// OM-2013-0004475対応 20131124 星野 ADD START
		, String mskmDtlNoNet,
		String mskmDtlNoTel,
		String mskmDtlNoTv
// OM-2013-0004475対応 20131124 星野 ADD END
	) throws Exception {
		
		/** 住所変更明細スキーマデータの取得（サービス契約番号） */
		// ・EKK2101B001 住所変更明細一覧照会
		ArrayList<HashMap<String, Object>> kk2101_b001_list = getAdchgDtlList(param, fixedText, adchgNo, JKKAdchgConstCC.CD01241_SVC_KEI_NO);
		if(kk2101_b001_list == null || kk2101_b001_list.isEmpty()){
			// 該当データなしの場合リターン
			return;
		}
		
		for(HashMap<String, Object> kk2101_b001_map : kk2101_b001_list){
			
			// 解約 または 解約新規 レコードの場合
			if( isDsl(kk2101_b001_map) ){
				
				// 解約希望日変更の場合
				// ANK-2120-00-00 2014/09/01 mod start
				//  または 住所変更確定時
				//if(!dslKiboYmdBef.equals(dslKiboYmdAft)){
				if(!dslKiboYmdBef.equals(dslKiboYmdAft) || isAdchgFix(paramMap)){
				// ANK-2120-00-00 2014/09/01 mod end
					// 変更前サービス契約番号
					String svcKeiNoBf = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
					
					/** 異動予約スキーマの更新 */
					updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNoBf, dslKiboYmdBef, dslKiboYmdAft);
				}
				
			}
			
			// 変更後サービス契約番号がある場合
			if( !StringUtils.isEmpty( (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO) ) ){
				
				// 入居予定日変更の場合 または 住所変更確定時
				if(!nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)
// OM-2014-0000041対応 20140420 星野 ADD START
					|| isAdchgFix(paramMap)
// OM-2014-0000041対応 20140420 星野 ADD END
				){
					
					// 変更後サービス契約番号
					String svcKeiNoAf = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
					
					/** 異動予約スキーマの更新 */
					updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNoAf, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
					
					/** サービス契約スキーマの更新 */
// OM-2013-0004475対応 20131124 星野 MOD START
//					updSvcKei(param, fixedText, paramMap, svcKeiNoAf, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
					updSvcKei(param, fixedText, paramMap, svcKeiNoAf, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNet, mskmDtlNoTel, mskmDtlNoTv);
// OM-2013-0004475対応 20131124 星野 MOD END
				}
			}
		}
		
	}

	private void updSvcKei(
		IRequestParameterReadWrite param, 
		String fixedText,
		HashMap<String, Object> paramMap, 
		String svcKeiNoAf,
		String nyukyoRsvYmdBef, 
		String nyukyoRsvYmdAft
// OM-2013-0004475対応 20131124 星野 ADD START
		, String mskmDtlNoNet,
		String mskmDtlNoTel,
		String mskmDtlNoTv
// OM-2013-0004475対応 20131124 星野 ADD END
	) throws Exception {
		
		// 日付変更なしの場合リターン
		if(nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)
// OM-2014-0001642対応 20140428 星野 ADD START
			&& !isAdchgFix(paramMap)
// OM-2014-0001642対応 20140428 星野 ADD END
		){
			return;
		}
		
		/** 事前準備 */
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ・EKK0081A010  サービス契約一意照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, svcKeiNoAf);
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
		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);
		
		/* ++++++++++ v20.00.00 ADD START ++++++++++ */
		// 解約済サービスは更新対象外
		if( JKKStrConst.CD00037_DSL_ZM.equals( kk0081_a010_map.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT) ) ){
			return;
		}
		/* ++++++++++ v20.00.00 ADD END   ++++++++++ */
		
		// 変更前予約適用年月日・サービス開始希望年月日が不一致の場合は更新しない
		if( !nyukyoRsvYmdBef.equals( kk0081_a010_map.get(EKK0081A010CBSMsg1List.RSV_APLY_YMD) ) 
// OM-2014-0000041対応 20140420 星野 ADD START
			// 住所変更確定時は未来日レコードも更新対象
			&& !( isAdchgFix(paramMap) && JCCBPCommon.getOpeDate(null).compareTo( (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.RSV_APLY_YMD) )< 0 ) 
// OM-2014-0000041対応 20140420 星野 ADD END
// 20130711 ADD START
			&& !nyukyoRsvYmdBef.equals( kk0081_a010_map.get(EKK0081A010CBSMsg1List.SVC_USE_STA_KIBO_YMD) )
// 20130711 ADD END
		){
			return;
		}

		
// OM-2014-0000041対応 20140420 星野 ADD START
		boolean isRsvAplyYmdUpd = false;
// OM-2014-0000041対応 20140420 星野 ADD END
// 20130711 ADD START
		if( nyukyoRsvYmdBef.equals( kk0081_a010_map.get(EKK0081A010CBSMsg1List.RSV_APLY_YMD) ) ){ 
// 20130711 ADD END
			// 予約適用年月日を更新
			kk0081_a010_map.put(EKK0081A010CBSMsg1List.RSV_APLY_YMD, nyukyoRsvYmdAft);
// 20130711 ADD START
			
// OM-2014-0000041対応 20140420 星野 ADD START
			isRsvAplyYmdUpd = true;
		}else if( isAdchgFix(paramMap) && JCCBPCommon.getOpeDate(null).compareTo( (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.RSV_APLY_YMD) )< 0 ){
			// 予約適用年月日を更新
			kk0081_a010_map.put(EKK0081A010CBSMsg1List.RSV_APLY_YMD, (String)paramMap.get("adchgFixYmd") );
			isRsvAplyYmdUpd = true;
// OM-2014-0000041対応 20140420 星野 ADD END
		}
// 20130711 ADD END
// 20130711 ADD START
// OM-2015-0000137 2015/02/13 DEL START
//		if( nyukyoRsvYmdBef.equals( kk0081_a010_map.get(EKK0081A010CBSMsg1List.SVC_USE_STA_KIBO_YMD) ) ){ 
//// 20130711 ADD END
//			// サービス利用開始希望年月日を更新
//			kk0081_a010_map.put(EKK0081A010CBSMsg1List.SVC_USE_STA_KIBO_YMD, nyukyoRsvYmdAft);
//// 20130711 ADD START
//		}
// OM-2015-0000137 2015/02/13 DEL END
// 20130711 ADD END
// OM-2013-0004475対応 20131124 星野 ADD START
		// 異動区分を設定
		kk0081_a010_map.put(EKK0081A010CBSMsg1List.IDO_DIV, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_IDO_DIV ) );
// OM-2013-0004475対応 20131124 星野 ADD END
		
		// サービスコードによる判定
		String svc_cd = (String) kk0081_a010_map.get(EKK0081A010CBSMsg1List.SVC_CD);
		// ネットの場合
		if(JKKAdchgConstCC.CD00130_INET_SVC.equals(svc_cd)){
			
// OM-2013-0004475対応 20131124 星野 ADD START
			// 申込明細番号を設定
			if(!StringUtils.isEmpty(mskmDtlNoNet)){
				kk0081_a010_map.put(EKK0081A010CBSMsg1List.MSKM_DTL_NO, mskmDtlNoNet);
			}
// OM-2013-0004475対応 20131124 星野 ADD END
			
			// ・EKK0091A010  サービス契約＜eo光ネット＞一意照会
			condMap = new HashMap<String, String>();
			condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, svcKeiNoAf);
			reqMap = mapper.setEKK0091A010(param, fixedText, condMap);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			HashMap<String, Object> kk0091_a010_map = mapper.getEKK0091A010(param, fixedText, resMap);
			mapper.scResultCheck(param);

			// ・EKK0091C041  サービス契約＜eo光ネット＞情報変更
			reqMap = mapper.setEKK0091C041(param, fixedText, kk0081_a010_map, kk0091_a010_map);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			mapper.getEKK0091C041(param, fixedText, resMap);
			mapper.scResultCheck(param);
			
		// 電話の場合
		}else if( JKKAdchgConstCC.CD00130_TEL_SVC.equals(svc_cd) ){
			
// OM-2013-0004475対応 20131124 星野 ADD START
			// 申込明細番号を設定
			if(!StringUtils.isEmpty(mskmDtlNoTel)){
				kk0081_a010_map.put(EKK0081A010CBSMsg1List.MSKM_DTL_NO, mskmDtlNoTel);
			}
// OM-2013-0004475対応 20131124 星野 ADD END
			
			// ・EKK0111A010  サービス契約＜eo光電話＞一意照会
			condMap = new HashMap<String, String>();
			condMap.put( JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, svcKeiNoAf );
			reqMap = mapper.setEKK0111A010( param, fixedText, condMap );
			resMap = scCall.run( reqMap, keepSesHandle.get() );
			HashMap<String, Object> kk0111_a010_map = mapper.getEKK0111A010( param, fixedText, resMap );
			mapper.scResultCheck( param );

			// ・EKK0111C041  サービス契約＜eo光電話＞情報変更
			reqMap = mapper.setEKK0111C041( param, fixedText, kk0081_a010_map, kk0111_a010_map );
			resMap = scCall.run( reqMap, keepSesHandle.get() );
			mapper.getEKK0111C041( param, fixedText, resMap );
			mapper.scResultCheck( param );
			
		// テレビの場合
		}else if( JKKAdchgConstCC.CD00130_TV_SVC.equals(svc_cd) ){
			
// OM-2013-0004475対応 20131124 星野 ADD START
			// 申込明細番号を設定
			if(!StringUtils.isEmpty(mskmDtlNoTv)){
				kk0081_a010_map.put(EKK0081A010CBSMsg1List.MSKM_DTL_NO, mskmDtlNoTv);
			}
// OM-2013-0004475対応 20131124 星野 ADD END
			// ・EKK0101A010  サービス契約＜eo光ＴＶ＞一意照会
			condMap = new HashMap<String, String>();
			condMap.put( JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, svcKeiNoAf );
			reqMap = mapper.setEKK0101A010( param, fixedText, condMap );
			resMap = scCall.run( reqMap, keepSesHandle.get() );
			HashMap<String, Object> kk0101_a010_map = mapper.getEKK0101A010( param, fixedText, resMap );
			mapper.scResultCheck( param );
			
// OM-2014-0000041対応 20140420 星野 ADD START
			// 予約適用年月日更新時は元世代を論理削除
			if(isRsvAplyYmdUpd){
				String lastUpdDtm = svcKeiRonriDel(param, fixedText, svcKeiNoAf);
				if(!StringUtils.isEmpty(lastUpdDtm)){
					kk0101_a010_map.put( EKK0101A010CBSMsg1List.LAST_UPD_DTM, lastUpdDtm );
				}
			}
// OM-2014-0000041対応 20140420 星野 ADD END
			
			// ・EKK0101C041  サービス契約＜eo光ＴＶ＞情報変更
			reqMap = mapper.setEKK0101C041( param, fixedText, kk0081_a010_map, kk0101_a010_map );
			resMap = scCall.run( reqMap, keepSesHandle.get() );
			mapper.getEKK0101C041( param, fixedText, resMap );
			mapper.scResultCheck( param );
		}

	}

	private String svcKeiRonriDel(
		IRequestParameterReadWrite param,
		String fixedText, 
		String svcKeiNoAf
	) throws Exception{
		
		String lastUpdDtm = null;
		
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// サービス契約一意照会を実行
		HashMap<String , Object>k081_a001_map = null;
		condMap.clear();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, svcKeiNoAf);
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, "20991231");
		reqMap = mapper.setEKK0081A010( param, fixedText, condMap);
		resMap = scCall.run( reqMap, keepSesHandle.get());
		k081_a001_map = mapper.getEKK0081A010( param, fixedText, resMap );
		mapper.scResultCheck( param );
		
		if (k081_a001_map.isEmpty()) {
			return null;
		}
		
		String rsvYmd = (String)k081_a001_map.get(EKK0081A010CBSMsg1List.RSV_APLY_YMD);
		String idoDiv = (String)k081_a001_map.get(EKK0081A010CBSMsg1List.IDO_DIV);
		String svcKeiState = (String)k081_a001_map.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
		
		if (rsvYmd.compareTo(JCCBPCommon.getOpeDate(null)) <= 0) {
			return null;
		}
		
		if ("00019".equals(idoDiv) && !"910".equals(svcKeiState)) {
			
			// kk0081_a010_mapへ更新年月日時分秒(更新前)を設定
			k081_a001_map.put( JKKAdchgMapperCC.UPD_DT_SVC_KEI_UPD_DTM_BEF, (String) k081_a001_map.get(EKK0081A010CBSMsg1List.LAST_UPD_DTM) );
			
			// kk0081_a010_mapへ更新年月日時分秒(更新前)を設定
			k081_a001_map.put( JKKAdchgMapperCC.UPD_DT_SVC_KEI_GENE_ADD_DTM, (String) k081_a001_map.get(EKK0081A010CBSMsg1List.GENE_ADD_DTM) );
			
			// 論理削除
			HashMap<String, Object> kk0081_e010_map = svcKeiRonriDelUpdate( param, fixedText, k081_a001_map);
			
			// 更新後の更新年月日時分秒をparamへ設定
			lastUpdDtm = (String)kk0081_e010_map.get( EKK0081E010CBSMsg.UPD_DTM );
			
		}
		return lastUpdDtm;
	}

// OM-2014-0000041対応 20140420 星野 ADD START
	/**
	 * サービス契約の論理削除メソッド
	 * @param param モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param fixedText ユーザ任意文字列
	 * @param kk0081_a010_map サービス契約一意照会の結果map
	 * @return
	 * @throws Exception
	 */
	private HashMap<String, Object> svcKeiRonriDelUpdate(IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> kk0081_a010_map) throws Exception
	{
		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// ・EKK0081E010  サービス契約論理削除
		HashMap<String, Object> reqMap = mapper.setEKK0081E010( param, fixedText, kk0081_a010_map );
		Map<?, ?> resMap = scCall.run( reqMap, keepSesHandle.get() );
		HashMap<String, Object> kk0081_e010_map = mapper.getEKK0081E010( param, fixedText, resMap );
		mapper.scResultCheck( param );

		return kk0081_e010_map;
	}
// OM-2014-0000041対応 20140420 星野 ADD END
	private void updSvcKeiUcwkInf(
		IRequestParameterReadWrite param,
		String fixedText, 
		HashMap<String, Object> paramMap, 
		String adchgNo,
		String dslKiboYmdBef,
		String dslKiboYmdAft,
		String nyukyoRsvYmdBef,
		String nyukyoRsvYmdAft
// OM-2013-0004475対応 20131124 星野 ADD START
		, String mskmDtlNoNet,
		String mskmDtlNoTel,
		String mskmDtlNoTv
// OM-2013-0004475対応 20131124 星野 ADD END
	) throws Exception {
		
		/** 住所変更明細スキーマデータの取得（サービス契約内訳番号） */
		// ・EKK2101B001 住所変更明細一覧照会
		ArrayList<HashMap<String, Object>> kk2101_b001_list = getAdchgDtlList(param, fixedText, adchgNo, JKKAdchgConstCC.CD01241_SVC_KEI_UCWK_NO);
		if(kk2101_b001_list == null || kk2101_b001_list.isEmpty()){
			// 該当データなしの場合リターン
			return;
		}
		
		for(HashMap<String, Object> kk2101_b001_map : kk2101_b001_list){
			
			// 解約 または 解約新規 レコードの場合
			if( isDsl(kk2101_b001_map) ){
				
				// 解約希望日変更の場合
				// ANK-2120-00-00 2014/09/01 mod start
				//  または 住所変更確定時
				//if(!dslKiboYmdBef.equals(dslKiboYmdAft)){
				if(!dslKiboYmdBef.equals(dslKiboYmdAft) || isAdchgFix(paramMap)){
				// ANK-2120-00-00 2014/09/01 mod end
				
					// 変更前サービス契約内訳番号
					String svcKeiUcwkNoBf = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
					
					/** 異動予約スキーマの更新 */
					updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNoBf, dslKiboYmdBef, dslKiboYmdAft);
				}
			}
			
			// 変更後サービス契約内訳番号がある場合
			if( !StringUtils.isEmpty( (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO) ) ){
				
				// 入居予定日変更の場合 または 住所変更確定時
				if(!nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)
// OM-2014-0000041対応 20140420 星野 ADD START
					|| isAdchgFix(paramMap)
// OM-2014-0000041対応 20140420 星野 ADD END
				){

					// 変更後サービス契約内訳番号
					String svcKeiUcwkNoAf = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
					
					/** 異動予約スキーマの更新 */
					updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNoAf, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
	
					// OM-2015-0001224 20150917 ADD START
					// 予約適用年月日が"20991231"で登録しているデータをカレントになるように世代を積む
					// マッピングクラスインスタンスを取得
					JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
					HashMap<String, Object> reqMap;
					Map<?, ?> resMap;
					HashMap<String, String> condMap = new HashMap<String, String>();
					// SCリクエストInvokerを取得
					ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
					
					// サービス契約内訳一意照会を実行
					// 予約適用年月日が"20991231"時点で予約適用コードが"2:予約確定"のカレントが取得される
					condMap.clear();
					condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNoAf);
					condMap.put(JKKAdchgMapperCC.COND_KEY_RSV_APLY_YMD, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
					reqMap = mapper.setEKK0161A010_2( param, fixedText, condMap);
					resMap = scCall.run( reqMap, keepSesHandle.get());
					HashMap<String , Object>kk0161_a010_map = mapper.getEKK0161A010( param, fixedText, resMap );
					mapper.scResultCheck( param );
					
					// OM-2015-0001224 20151001 ADD START
					if(kk0161_a010_map == null || kk0161_a010_map.isEmpty())
					{
						return;
					}
					// OM-2015-0001224 20151001 ADD END
					
					/* ++++++++++ v20.00.00 ADD START ++++++++++ */
					// 解約済内訳は更新対象外
					if( JKKStrConst.CD00037_DSL_ZM.equals( kk0161_a010_map.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_STAT) ) ){
						continue;
					}
					/* ++++++++++ v20.00.00 ADD END   ++++++++++ */

					
					String svcKeiUcwkNo = (String)kk0161_a010_map.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO);
					String rsvAplyYmd = (String)kk0161_a010_map.get(EKK0161A010CBSMsg1List.RSV_APLY_YMD);
					String geneAddDtm = (String)kk0161_a010_map.get(EKK0161A010CBSMsg1List.GENE_ADD_DTM);
					String svcKeiNo = (String)kk0161_a010_map.get(EKK0161B011CBSMsg1List.SVC_KEI_NO);
					String svcCd = getSvcCd(param, fixedText, paramMap, svcKeiNo);
					// サービスコードが"02:電話"かつ予約適用年月日が"20991231"の場合
					if(JKKStrConst.CD00130_02.equals(svcCd) && JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD.equals(rsvAplyYmd))
					{
						// サービス契約内訳<eo光電話>一意照会を行う。
						condMap.clear();
						condMap.put( JKKAdchgMapperCC.COND_KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo );
						condMap.put(JKKAdchgMapperCC.COND_KEY_GENE_ADD_DTM, geneAddDtm);
						reqMap = mapper.setEKK0191A010_Func1( param, fixedText, condMap );
						resMap = scCall.run( reqMap, keepSesHandle.get());
						HashMap<String, Object> kk0191_a010_map = mapper.getEKK0191A010( param, fixedText, resMap );
						mapper.scResultCheck( param );
						
						// サービス契約内訳<eo光電話>情報変更を行う。
						reqMap.clear();
						reqMap = mapper.setEKK0191C061_2( param, fixedText, kk0161_a010_map, kk0191_a010_map );
						resMap = scCall.run( reqMap, keepSesHandle.get());
						mapper.getEKK0191C061( param, fixedText, resMap );
						mapper.scResultCheck( param );
					}
					// OM-2015-0001224 20150917 ADD END

					/** サービス契約内訳スキーマの更新 */
// OM-2013-0004475対応 20131124 星野 ADD START
//					updSvcKeiUcwk(param, fixedText, paramMap, svcKeiUcwkNoAf, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
					updSvcKeiUcwk(param, fixedText, paramMap, svcKeiUcwkNoAf, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNet, mskmDtlNoTel, mskmDtlNoTv);
// OM-2013-0004475対応 20131124 星野 ADD END
				}
			}
		}
		
	}

	private void updSvcKeiUcwk(
		IRequestParameterReadWrite param,
		String fixedText, 
		HashMap<String, Object> paramMap,
		String svcKeiUcwkNoAf, 
		String nyukyoRsvYmdBef,
		String nyukyoRsvYmdAft
// OM-2013-0004475対応 20131124 星野 ADD START
		, String mskmDtlNoNet,
		String mskmDtlNoTel,
		String mskmDtlNoTv
// OM-2013-0004475対応 20131124 星野 ADD END
	) throws Exception {
		
		// 日付変更なしの場合リターン
		if(nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)
// OM-2014-0001642対応 20140428 星野 ADD START
			&& !isAdchgFix(paramMap)
// OM-2014-0001642対応 20140428 星野 ADD END
		){
			return;
		}
		
		/** 事前準備 */
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
// OM-2013-0004618対応 20131203 星野 DEL START
//		JKKAdchgCmnLogicCC lclCmnLogic = new JKKAdchgCmnLogicCC(keepSesHandle.get());
// OM-2013-0004618対応 20131203 星野 DEL END
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
// OM-2013-0004618対応 20131203 星野 MOD START
//		/** サービス契約内訳一意照会 */
//		// ■ EKK0161A010 サービス契約内訳一意照会
//		HashMap<String, Object> kk0161_a010_map =lclCmnLogic.getEKK0161A010(param, mapper, fixedText, scCall, svcKeiUcwkNoAf, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
		
		HashMap<String, String> condMap = new HashMap<String, String>();
		condMap.clear();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNoAf);
		reqMap = mapper.setEKK0161B011_2( param, fixedText, condMap);
		resMap = scCall.run( reqMap, keepSesHandle.get());
		List<HashMap<String, Object>> kk0161_b011_map_list = mapper.getEKK0161B011( param, fixedText, resMap );
		mapper.scResultCheck( param );
		
		for (HashMap<String, Object> kk0161_b011_map : kk0161_b011_map_list ) {
			
			String geneAddDtm = (String)kk0161_b011_map.get(EKK0161B011CBSMsg1List.GENE_ADD_DTM);
			
			// サービス契約内訳一意照会を実行
			condMap.clear();
			condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNoAf);
			condMap.put(JKKAdchgMapperCC.COND_KEY_GENE_ADD_DTM, geneAddDtm);
			reqMap = mapper.setEKK0161A010_Func1( param, fixedText, condMap);
			resMap = scCall.run( reqMap, keepSesHandle.get());
			HashMap<String , Object>kk0161_a010_map = mapper.getEKK0161A010( param, fixedText, resMap );
			mapper.scResultCheck( param );

// OM-2013-0004618対応 20131203 星野 MOD END
		
		
			// 変更前予約適用年月日が不一致の場合は更新しない
			if( !nyukyoRsvYmdBef.equals( kk0161_a010_map.get(EKK0161A010CBSMsg1List.RSV_APLY_YMD) ) 
// OM-2014-0000041対応 20140420 星野 ADD START
				// 住所変更確定時は予約適用年月日20991231も更新対象
				&& !( isAdchgFix(paramMap) && JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD.equals( kk0161_a010_map.get(EKK0161A010CBSMsg1List.RSV_APLY_YMD) ) )
// OM-2014-0000041対応 20140420 星野 ADD END
			){
// OM-2014-0001642対応 20140428 星野 MOD START
//				return;
				continue;
// OM-2014-0001642対応 20140428 星野 MOD END
			}
	
	// OM-2013-0004475対応 20131124 星野 ADD START
			// サービス契約番号よりサービスコードを取得
			// 現状は電話しかないはずだが、念のため
			String svcCd = getSvcCd(param, fixedText, paramMap, (String)kk0161_a010_map.get(EKK0161A010CBSMsg1List.SVC_KEI_NO));
			String mskmDtlNo = "";
			if("01".equals(svcCd)){
				mskmDtlNo = mskmDtlNoNet;
			}else if("02".equals(svcCd)){
				mskmDtlNo = mskmDtlNoTel;
			}else if("03".equals(svcCd)){
				mskmDtlNo = mskmDtlNoTv;
			}
	// OM-2013-0004475対応 20131124 星野 ADD END
			
			/** サービス契約内訳予約適用年月日入力 */
			HashMap<String, Object> kk0161_c030_inmap = new HashMap<String, Object>();
			kk0161_c030_inmap.put(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO, (String)kk0161_a010_map.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO));
			kk0161_c030_inmap.put(EKK0161A010CBSMsg1List.GENE_ADD_DTM, (String)kk0161_a010_map.get(EKK0161A010CBSMsg1List.GENE_ADD_DTM));
	// OM-2013-0004475対応 20131124 星野 ADD START
			if(!StringUtils.isEmpty(mskmDtlNo)){
				kk0161_c030_inmap.put(EKK0161A010CBSMsg1List.MSKM_DTL_NO, mskmDtlNo);
			}else{
	// OM-2013-0004475対応 20131124 星野 ADD END
				kk0161_c030_inmap.put(EKK0161A010CBSMsg1List.MSKM_DTL_NO, (String)kk0161_a010_map.get( EKK0161A010CBSMsg1List.MSKM_DTL_NO ));
	// OM-2013-0004475対応 20131124 星野 ADD START
			}
	// OM-2013-0004475対応 20131124 星野 ADD END
// OM-2014-0000041対応 20140420 星野 ADD START
			if( isAdchgFix(paramMap) 
				&& JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD.equals( kk0161_a010_map.get(EKK0161A010CBSMsg1List.RSV_APLY_YMD) )
			){
				kk0161_c030_inmap.put(EKK0161A010CBSMsg1List.RSV_APLY_YMD, (String)paramMap.get("adchgFixYmd"));
			}else{
// OM-2014-0000041対応 20140420 星野 ADD END
				kk0161_c030_inmap.put(EKK0161A010CBSMsg1List.RSV_APLY_YMD, nyukyoRsvYmdAft);
// OM-2014-0000041対応 20140420 星野 ADD START
			}
// OM-2014-0000041対応 20140420 星野 ADD END
			kk0161_c030_inmap.put(EKK0161A010CBSMsg1List.RSV_APLY_CD, (String)kk0161_a010_map.get( EKK0161A010CBSMsg1List.RSV_APLY_CD ));
			kk0161_c030_inmap.put(JKKAdchgMapperCC.UPD_DT_SVC_KEI_UPD_DTM_BEF, (String)kk0161_a010_map.get(EKK0161A010CBSMsg1List.LAST_UPD_DTM));
			reqMap = mapper.setEKK0161C030( param, fixedText, kk0161_c030_inmap );
			resMap = scCall.run( reqMap, keepSesHandle.get() );
			mapper.getEKK0161C030( param, fixedText, resMap );
			mapper.scResultCheck( param );
	
// OM-2013-0004618対応 20131203 星野 ADD START
		}
// OM-2013-0004618対応 20131203 星野 ADD END
		
	}
	
// OM-2013-0004475対応 20131124 星野 ADD START
	private String getSvcCd(
		IRequestParameterReadWrite param, 
		String fixedText,
		HashMap<String, Object> paramMap, 
		String svcKeiNo
	) throws Exception {
		
		if(StringUtils.isEmpty(svcKeiNo)){
			return null;
		}
		
		/** 事前準備 */
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ・EKK0081A010  サービス契約一意照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, svcKeiNo);
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
		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);
		
		if(kk0081_a010_map!=null){
			return (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.SVC_CD);
		}else{
			return null;
		}
	}
// OM-2013-0004475対応 20131124 星野 ADD END
	

	private void updKktkSvcKeiInf(
		IRequestParameterReadWrite param,
		String fixedText, 
		HashMap<String, Object> paramMap, 
		String adchgNo,
		String dslKiboYmdBef,
		String dslKiboYmdAft,
		String nyukyoRsvYmdBef,
		String nyukyoRsvYmdAft
// OM-2013-0004475対応 20131124 星野 ADD START
		, String mskmDtlNoNet,
		String mskmDtlNoTel,
		String mskmDtlNoTv
// OM-2013-0004475対応 20131124 星野 ADD END
	) throws Exception {
		
		/** 住所変更明細スキーマデータの取得（機器提供サービス契約番号） */
		// ・EKK2101B001 住所変更明細一覧照会
		ArrayList<HashMap<String, Object>> kk2101_b001_list = getAdchgDtlList(param, fixedText, adchgNo, JKKAdchgConstCC.CD01241_KKTK_SVC_KEI_NO);
		if(kk2101_b001_list == null || kk2101_b001_list.isEmpty()){
			// 該当データなしの場合リターン
			return;
		}
		

		// OM-2015-0001224 20150917 ADD START
		// 予約適用年月日が"20991231"で登録しているデータをカレントになるように世代を積む
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		HashMap<String, String> condMap = new HashMap<String, String>();
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		for(HashMap<String, Object> kk2101_b001_map : kk2101_b001_list)
		{
			
			// 機器提供サービス契約番号
			String kktkSvcKeiNo = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHG_TG_KEI_NO);
			
			// 機器提供サービス契約一意照会を実行
			// 予約適用年月日が"20991231"時点で予約適用コードが"2:予約確定"のカレントが取得される
			condMap.clear();
			condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
			condMap.put(JKKAdchgMapperCC.COND_KEY_GENE_ADD_DTM, "");
			condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
			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 );
			
			// OM-2015-0001224 20151001 MOD START
			// nullまたは空の場合は何もしないように条件を変更
//			if(!kk0341_a010_map.isEmpty())
//			{
//				String rsvAplyYmd = (String)kk0341_a010_map.get(EKK0341A010CBSMsg1List.RSV_APLY_YMD);
//				// 予約適用年月日が"20991231"の場合
//				if(JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD.equals(rsvAplyYmd))
//				{
//					// 機器提供サービス契約情報変更(住所変更)を行う。
//					reqMap = mapper.setEKK0341C232_2( param, fixedText, kk0341_a010_map );
//					resMap = scCall.run( reqMap, keepSesHandle.get());
//					mapper.getEKK0341C232( param, fixedText, resMap );
//					mapper.scResultCheck( param );
//				}
//			}
			if(kk0341_a010_map == null || kk0341_a010_map.isEmpty())
			{
				return;
			}
			
			/* ++++++++++ v20.00.00 ADD START ++++++++++ */
			// 解約済機器は更新対象外
			if( JKKStrConst.CD00056_STAT_DSLZUMI.equals( kk0341_a010_map.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT) ) ){
				continue;
			}
			/* ++++++++++ v20.00.00 ADD END   ++++++++++ */

			
			String rsvAplyYmd = (String)kk0341_a010_map.get(EKK0341A010CBSMsg1List.RSV_APLY_YMD);
			// 予約適用年月日が"20991231"の場合
			if(JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD.equals(rsvAplyYmd))
			{
				// 機器提供サービス契約情報変更(住所変更)を行う。
				reqMap = mapper.setEKK0341C232_2( param, fixedText, kk0341_a010_map );
				resMap = scCall.run( reqMap, keepSesHandle.get());
				mapper.getEKK0341C232( param, fixedText, resMap );
				mapper.scResultCheck( param );
			}
			// OM-2015-0001224 20151001 MOD END
		}
		// OM-2015-0001224 20150917 ADD END
		
// LT-2013-0000299対応 20130707 星野 ADD START
		// SYSID
		String sysid = (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_SYSID );
		// 異動区分
		String idoDiv = (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_IDO_DIV);
		
		// OM-2017-0000920対応 20170920 星野 ADD START
		// サービス契約から拾ったSYSIDも合わせてSYSIDリストを作成
		// お客様併合・分割によりSYSIDが複数となっているケースの考慮
		List<String> sysidList = makeSysidList(param, fixedText, adchgNo, sysid);
		// OM-2017-0000920対応 20170920 星野 ADD END
		
		/** 機器提供サービス契約取得（SYSID・異動区分をキーに履歴全件） */
		// OM-2017-0000920対応 20170920 星野 MOD START
//		ArrayList<HashMap<String, Object>> kk0341b031_list = getKktkSvcKeiList(param, fixedText, sysid, idoDiv);
		ArrayList<HashMap<String, Object>> kk0341b031_list = getKktkSvcKeiList(param, fixedText, sysidList, idoDiv);
		// OM-2017-0000920対応 20170920 星野 MOD END
// LT-2013-0000299対応 20130707 星野 ADD END
		
		for(HashMap<String, Object> kk2101_b001_map : kk2101_b001_list){
			
			// 機器提供サービス契約番号
			String kktkSvcKeiNo = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHG_TG_KEI_NO);
			
			// 解約レコードの場合
			// （機器提供サービスだけ判定方法が違うので注意）
			if( !StringUtils.isEmpty( (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO) ) &&
				StringUtils.isEmpty( (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO) ) 
			){
				
				// 解約希望日変更の場合
				// ANK-2120-00-00 2014/09/01 mod start
				//  または 住所変更確定時
				//if(!dslKiboYmdBef.equals(dslKiboYmdAft)){
				if(!dslKiboYmdBef.equals(dslKiboYmdAft) || isAdchgFix(paramMap)){
				// ANK-2120-00-00 2014/09/01 mod end
				
					/** 異動予約スキーマの更新 */
					updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo, dslKiboYmdBef, dslKiboYmdAft);
				}
			}
			
			// 変更後機器変更番号がある場合
			if( !StringUtils.isEmpty( (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO) ) ){
				
				// 入居予定日変更の場合 または 住所変更確定時
				if(!nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)
// OM-2014-0000041対応 20140420 星野 ADD START
					|| isAdchgFix(paramMap)
// OM-2014-0000041対応 20140420 星野 ADD END
				){

					/** 異動予約スキーマの更新 */
					updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
	
					/** 機器提供サービス契約スキーマの更新 */
// OM-2013-0004475対応 20131124 星野 MOD START
//// LT-2013-0000299対応 20130707 星野 MOD START
////					updKktkSvcKei(param, fixedText, paramMap, kktkSvcKeiNo, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
//					updKktkSvcKei(param, fixedText, paramMap, kktkSvcKeiNo, nyukyoRsvYmdBef, nyukyoRsvYmdAft, kk0341b031_list);
//// LT-2013-0000299対応 20130707 星野 MOD END
					
					updKktkSvcKei(param, fixedText, paramMap, kktkSvcKeiNo, nyukyoRsvYmdBef, nyukyoRsvYmdAft, kk0341b031_list, mskmDtlNoNet, mskmDtlNoTel, mskmDtlNoTv);
					
// OM-2013-0004475対応 20131124 星野 MOD END
				}
			}
		}
	}

	// OM-2017-0000920対応 20170920 星野 ADD START
	private List<String> makeSysidList(
		IRequestParameterReadWrite param, 
		String fixedText,
		String adchgNo, 
		String sysid
	) throws Exception {
		List<String> sysidList = new ArrayList<String>();
		sysidList.add(sysid);
		
		/** 住所変更明細スキーマデータの取得（サービス契約番号） */
		// ・EKK2101B001 住所変更明細一覧照会
		ArrayList<HashMap<String, Object>> svkei_kk2101_b001_list = getAdchgDtlList(param, fixedText, adchgNo, JKKAdchgConstCC.CD01241_SVC_KEI_NO);
		if(svkei_kk2101_b001_list != null){
			for(HashMap<String, Object> svkei_kk2101:svkei_kk2101_b001_list){
				addSysidFromSvkei(param, fixedText, sysidList,(String)svkei_kk2101.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO));
				addSysidFromSvkei(param, fixedText, sysidList,(String)svkei_kk2101.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO));
			}
		}
		
		return sysidList;
	}

	private void addSysidFromSvkei(
		IRequestParameterReadWrite param,
		String fixedText, 
		List<String> sysidList,
		String svcKeiNo
	) throws Exception {
		
		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		JKKAdchgCmnLogicCC lclCmnLogic = new JKKAdchgCmnLogicCC(keepSesHandle.get());
		
		if(!StringUtils.isEmpty(svcKeiNo)){
			// EKK0081A010_サービス契約一意照会
			HashMap<String, Object> kk0081_a010_map = 
				lclCmnLogic.getEKK0081A010( param, mapper, fixedText, scCall, svcKeiNo, JCCBPCommon.getOpeDate(null) );
			if(kk0081_a010_map!=null){
				String sysid = (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.SYSID);
				if(!StringUtils.isEmpty(sysid) && !sysidList.contains(sysid)){
					sysidList.add(sysid);
				}
			}
	
		}
	}
	// OM-2017-0000920対応 20170920 星野 ADD END

	private void updKktkSvcKei(
		IRequestParameterReadWrite param,
		String fixedText, 
		HashMap<String, Object> paramMap,
		String kktkSvcKeiNo, 
		String nyukyoRsvYmdBef, 
		String nyukyoRsvYmdAft
// LT-2013-0000299対応 20130707 星野 ADD START
		, ArrayList<HashMap<String, Object>> kk0341b031_list
// LT-2013-0000299対応 20130707 星野 ADD END
// OM-2013-0004475対応 20131124 星野 ADD START
		, String mskmDtlNoNet,
		String mskmDtlNoTel,
		String mskmDtlNoTv
// OM-2013-0004475対応 20131124 星野 ADD END
	) throws Exception {
		
		// 日付変更なしの場合リターン
		if(nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)
// OM-2014-0001642対応 20140428 星野 ADD START
			&& !isAdchgFix(paramMap)
// OM-2014-0001642対応 20140428 星野 ADD END
		){
			return;
		}
		
		/** 事前準備 */
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		JKKAdchgCmnLogicCC lclCmnLogic = new JKKAdchgCmnLogicCC(keepSesHandle.get());
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		
		/* ++++++++++ v20.00.00 ADD START ++++++++++ */
		// 機器提供サービス契約一意照会を実行
		// 予約適用年月日が"20991231"時点で予約適用コードが"2:予約確定"のカレントが取得される
		HashMap<String, String> condMap2 = new HashMap<String, String>();
		condMap2.clear();
		condMap2.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		condMap2.put(JKKAdchgMapperCC.COND_KEY_GENE_ADD_DTM, "");
		condMap2.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
		reqMap = mapper.setEKK0341A010( param, fixedText, condMap2);
		resMap = scCall.run( reqMap, keepSesHandle.get());
		HashMap<String , Object>kk0341_a010_map2 = mapper.getEKK0341A010( param, fixedText, resMap );
		mapper.scResultCheck( param );
		
		if(kk0341_a010_map2 == null || kk0341_a010_map2.isEmpty())
		{
			return;
		}
		
		// 解約済機器は更新対象外
		if( JKKStrConst.CD00056_STAT_DSLZUMI.equals( kk0341_a010_map2.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT) ) ){
			return;
		}
		/* ++++++++++ v20.00.00 ADD END   ++++++++++ */

		

// LT-2013-0000299対応 20130707 星野 MOD START
//		// ■ EKK0341A010 機器提供サービス契約一意照会
//		HashMap<String, Object> kk0341_a010_map = lclCmnLogic.getEKK0341A010(param, mapper, fixedText, scCall, kktkSvcKeiNo, JCCBPCommon.getOpeDate(null));
//		
//		// 変更前予約適用年月日が不一致の場合は更新しない
//		if( !nyukyoRsvYmdBef.equals( kk0341_a010_map.get(EKK0341A010CBSMsg1List.RSV_APLY_YMD) ) ){
//			return;
//		}
//
//		
//		// EKK0341C232 機器提供サービス契約情報変更（予約）
//		reqMap = mapper.setEKK0341C232( param, fixedText, kk0341_a010_map );
//		resMap = scCall.run( reqMap, keepSesHandle.get() );
//		mapper.getEKK0341C232( param, fixedText, resMap );
//		mapper.scResultCheck( param );
		
		for(HashMap<String, Object> kk0341b031_map : kk0341b031_list){
			// 機器提供サービス契約番号の一致を確認
// OM-2014-0000597対応 20140210 星野 MOD START
//			if( kktkSvcKeiNo.equals(kk0341b031_map.get(EKK0341B031CBSMsg1List.KKTK_SVC_KEI_NO)) ){
			if( !kktkSvcKeiNo.equals(kk0341b031_map.get(EKK0341B031CBSMsg1List.KKTK_SVC_KEI_NO)) ){
// OM-2014-0000597対応 20140210 星野 MOD END
				continue;
			}
			
			// 変更前予約適用年月日が不一致の場合は更新しない
			if( !nyukyoRsvYmdBef.equals( kk0341b031_map.get(EKK0341B031CBSMsg1List.RSV_APLY_YMD) ) 
// OM-2014-0000041対応 20140420 星野 ADD START
				// 住所変更確定時は予約適用年月日20991231も更新対象
				&& !( isAdchgFix(paramMap) && JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD.equals( kk0341b031_map.get(EKK0341B031CBSMsg1List.RSV_APLY_YMD) ) )
// OM-2014-0000041対応 20140420 星野 ADD END
			){
				continue;
			}
			
			/** 排他用更新年月日時分秒取得のため、世代で一意照会 */
			HashMap<String, String> condMap = new HashMap<String, String>();
			condMap.put( JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, (String) kk0341b031_map.get(EKK0341B031CBSMsg1List.KKTK_SVC_KEI_NO));
			condMap.put( JKKAdchgMapperCC.COND_KEY_GENE_ADD_DTM, (String) kk0341b031_map.get(EKK0341B031CBSMsg1List.GENE_ADD_DTM));
			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 );
			
			// 万が一ノーヒットの場合はコンティニュー
			if( kk0341_a010_map == null || kk0341_a010_map.isEmpty() ){
				continue;
			}
			
			/** 予約適用年月日を差し替え */
// OM-2014-0000041対応 20140420 星野 ADD START
			if( isAdchgFix(paramMap) 
				&& JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD.equals( kk0341b031_map.get(EKK0341B031CBSMsg1List.RSV_APLY_YMD) )
			){
				kk0341_a010_map.put(EKK0341A010CBSMsg1List.RSV_APLY_YMD, (String)paramMap.get("adchgFixYmd"));
			}else{
// OM-2014-0000041対応 20140420 星野 ADD END
				kk0341_a010_map.put(EKK0341A010CBSMsg1List.RSV_APLY_YMD, nyukyoRsvYmdAft);
// OM-2014-0000041対応 20140420 星野 ADD START
			}
// OM-2014-0000041対応 20140420 星野 ADD END
// OM-2013-0004475対応 20131124 星野 ADD START
			// 異動区分を設定
			kk0341_a010_map.put(EKK0341A010CBSMsg1List.IDO_DIV, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_IDO_DIV ) );
			
			// 宅内機器種別コードを元に申込明細番号を設定
			String mskmDtlNo;
			String taknKikiSbtCd = (String)kk0341b031_map.get(EKK0341B031CBSMsg1List.RSV_APLY_YMD);
			// ONU・VDSLモデム・スプリッター・インラインフィルタの場合
			if( JKKAdchgConstCC.TAKNKIKI_SBT.CODE_D0.equals(taknKikiSbtCd) 
				|| JKKAdchgConstCC.TAKNKIKI_SBT.CODE_60.equals(taknKikiSbtCd)
				|| JKKAdchgConstCC.TAKNKIKI_SBT.CODE_70.equals(taknKikiSbtCd)
				|| JKKAdchgConstCC.TAKNKIKI_SBT.CODE_90.equals(taknKikiSbtCd)
				// ANK-4315-00-00 ADD START
				|| JKKAdchgConstCC.TAKNKIKI_SBT.CODE_S0.equals(taknKikiSbtCd)
				// ANK-4315-00-00 ADD END
			){
				// ネットの申込明細番号を優先
				if(!StringUtils.isEmpty(mskmDtlNoNet)){
					mskmDtlNo = mskmDtlNoNet;
				}else{
					mskmDtlNo = mskmDtlNoTel;
				}
				
			// V-ONU・STB・B-CAS・C-CASの場合
			}else if(
				JKKAdchgConstCC.TAKNKIKI_SBT.CODE_E0.equals(taknKikiSbtCd) 
				|| JKKAdchgConstCC.TAKNKIKI_SBT.CODE_A0.equals(taknKikiSbtCd) 
				|| JKKAdchgConstCC.TAKNKIKI_SBT.CODE_B0.equals(taknKikiSbtCd)
				|| JKKAdchgConstCC.TAKNKIKI_SBT.CODE_C0.equals(taknKikiSbtCd)
			){
				// テレビの申込明細番号を使用
				mskmDtlNo = mskmDtlNoTv;
			}else{
				// サービス契約番号よりサービスコードを取得
				String svcCd = getSvcCd(param, fixedText, paramMap, (String)kk0341_a010_map.get(EKK0341A010CBSMsg1List.SVC_KEI_NO));
				if("01".equals(svcCd)){
					mskmDtlNo = mskmDtlNoNet;
				}else if("02".equals(svcCd)){
					mskmDtlNo = mskmDtlNoTel;
				}else if("03".equals(svcCd)){
					mskmDtlNo = mskmDtlNoTv;
				}else{
					mskmDtlNo = "";
				}
			}
			// 申込明細番号を設定
			if(!StringUtils.isEmpty(mskmDtlNo)){
				kk0341_a010_map.put(EKK0341A010CBSMsg1List.MSKM_DTL_NO, mskmDtlNo);
			}
// OM-2013-0004475対応 20131124 星野 ADD END
			
			/** EKK0341C100 機器提供サービス契約予約適用年月日入力 */
			reqMap = mapper.setEKK0341C100( param, fixedText, kk0341_a010_map );

			resMap = scCall.run( reqMap, keepSesHandle.get() );
			mapper.getEKK0341C100( param, fixedText, resMap );
			mapper.scResultCheck( param );
			
		}
// LT-2013-0000299対応 20130707 星野 MOD END

	}

	// ANK-2120-00-00 2014/09/01 add start
	private void updKkOpSvcKeiInf(
			IRequestParameterReadWrite param,
			String fixedText, 
			HashMap<String, Object> paramMap, 
			String adchgNo,
			String dslKiboYmdBef,
			String dslKiboYmdAft,
			String nyukyoRsvYmdBef,
			String nyukyoRsvYmdAft,
			String mskmDtlNoNet,
			String mskmDtlNoTel,
			String mskmDtlNoTv
		) throws Exception {
			
		/** 住所変更明細スキーマデータの取得（機器オプションサービス契約番号） */
		// ・EKK2101B001 住所変更明細一覧照会
		ArrayList<HashMap<String, Object>> kk2101_b001_list = getAdchgDtlList(param, fixedText, adchgNo, JKKAdchgConstCC.CD01241_KKOP_SVC_KEI);
		if(kk2101_b001_list == null || kk2101_b001_list.isEmpty()){
			// 該当データなしの場合リターン
			return;
		}

// OM-2017-0000920対応 20170920 星野 DEL START
// 未使用だったので消す
//		// SYSID
//		String sysid = (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_SYSID );
//		// 異動区分
//		String idoDiv = (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_IDO_DIV);
//		
//		/** 機器オプションサービス契約契約取得（SYSID・異動区分をキーに履歴全件） */
//		ArrayList<HashMap<String, Object>> kk0341b031_list = getKktkSvcKeiList(param, fixedText, sysid, idoDiv);
// OM-2017-0000920対応 20170920 星野 DEL END

		for(HashMap<String, Object> kk2101_b001_map : kk2101_b001_list){

			// 機器オプションサービス契約契約番号
// OM-2014-0003579 2014/11/16 MOD START
//			String kkOpSvcKeiNo = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHG_TG_KEI_NO);
			// 変更前識別番号の取得
			String kkOpSvcKeiNo = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
// OM-2014-0003579 2014/11/16 MOD END

			// 解約レコードの場合
			if( !StringUtils.isEmpty( (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO) ) &&
				 StringUtils.isEmpty( (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO) ) 
			){
// ▼▼▼ OM-2016-0002491 2017-01-12 Modify START
//				// 住所変更確定時
//				if(isAdchgFix(paramMap)){
				// 解約希望日変更または 住所変更確定時
				if(!dslKiboYmdBef.equals(dslKiboYmdAft) || isAdchgFix(paramMap)){
// ▲▲▲ OM-2016-0002491 2017-01-12 Modify END
					/** 異動予約スキーマの更新 */
					updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_KKOP_SVC_KEI_NO, kkOpSvcKeiNo, dslKiboYmdBef, dslKiboYmdAft);
				}
			}
		}
	}
	// ANK-2120-00-00 2014/09/01 add end

	private void updOpSvcKeiInf(
		IRequestParameterReadWrite param,
		String fixedText, 
		HashMap<String, Object> paramMap, 
		String adchgNo,
		String dslKiboYmdBef,
		String dslKiboYmdAft,
		String nyukyoRsvYmdBef,
		String nyukyoRsvYmdAft
// OM-2013-0004475対応 20131124 星野 ADD START
		, String mskmDtlNoNet,
		String mskmDtlNoTel,
		String mskmDtlNoTv
// OM-2013-0004475対応 20131124 星野 ADD END
	) throws Exception {
		
		/** 住所変更明細スキーマデータの取得（オプションサービス契約番号） */
		// ・EKK2101B001 住所変更明細一覧照会
		ArrayList<HashMap<String, Object>> kk2101_b001_list = getAdchgDtlList(param, fixedText, adchgNo, JKKAdchgConstCC.CD01241_OP_SVC_KEI_NO);
		if(kk2101_b001_list == null || kk2101_b001_list.isEmpty()){
			// 該当データなしの場合リターン
			return;
		}
		
		for(HashMap<String, Object> kk2101_b001_map : kk2101_b001_list){
			
			// 解約 または 解約新規 レコードの場合
			if( isDsl(kk2101_b001_map) ){
				
				// ANK-2120-00-00 2014/09/01 mod start
				//  または 住所変更確定時
				//if(!dslKiboYmdBef.equals(dslKiboYmdAft)){
				if(!dslKiboYmdBef.equals(dslKiboYmdAft) || isAdchgFix(paramMap)){
				// ANK-2120-00-00 2014/09/01 mod end
				
					// 変更前オプションサービス契約番号
					String opSvcKeiNoBf = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
					
					/** 異動予約スキーマの更新 */
					updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_OP_SVC_KEI_NO, opSvcKeiNoBf, dslKiboYmdBef, dslKiboYmdAft);
				}
			}
			
			// 変更後サービス契約内訳番号がある場合
			if( !StringUtils.isEmpty( (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO) ) ){
				
				// 入居予定日変更の場合
				if(!nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)){

					// 変更後サービス契約内訳番号
					String opSvcKeiNoAf = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
					
					/** 異動予約スキーマの更新 */
					updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_OP_SVC_KEI_NO, opSvcKeiNoAf, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
	
					// OM-2015-0001224 20150917 ADD START
					HashMap<String, String> condMap = new HashMap<String, String>();
					HashMap<String, Object> reqMap;
					Map<?, ?> resMap;

					// 住所情報変更初期表示情報取得コモンコンポーネント
					// マッピングクラスインスタンスを取得
					JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
					// SCリクエストInvokerを取得
					ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
					
					// ・EKK0351A010  オプションサービス契約一意照会
					// 予約適用年月日が"20991231"時点で予約適用コードが"2:予約確定"のカレントが取得される
					condMap = new HashMap<String, String>();
					condMap.put(JKKAdchgMapperCC.COND_KEY_OP_SVC_KEI_NO, opSvcKeiNoAf);
					condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
					reqMap = mapper.setEKK0351A010(param, fixedText, condMap);
					resMap = scCall.run(reqMap, keepSesHandle.get());
					HashMap<String, Object> kk0351_a010_map = mapper.getEKK0351A010(param, fixedText, resMap);
					mapper.scResultCheck(param);
					
					
					// OM-2015-0001224 20151001 MOD START
					// nullまたは空の場合は何もしないように条件を変更
//					if(!kk0351_a010_map.isEmpty())
//					{
//						String opSvcKeiNo = (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO);
//						String geneAddDtm = (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM);
//						String rsvAplyYmd = (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.RSV_APLY_YMD);
//						String svcKeiNo = (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.SVC_KEI_NO);
//						String svcCd = getSvcCd(param, fixedText, paramMap, svcKeiNo);
//						// サービスコードが"03:テレビ"かつ予約適用年月日が入居予定日と同じ場合
//						if(JKKStrConst.CD00130_03.equals(svcCd) && rsvAplyYmd.equals(nyukyoRsvYmdBef))
//						{
//							// オプションサービス契約<TV>一意照会を行う。
//							condMap.clear();
//							condMap.put( JKKAdchgMapperCC.COND_KEY_OP_SVC_KEI_NO, opSvcKeiNo );
//							condMap.put( EKK0381A010CBSMsg.KEY_GENE_ADD_DTM, geneAddDtm);
//							reqMap = mapper.setEKK0381A010_2( param, fixedText, condMap );
//							resMap = scCall.run( reqMap, keepSesHandle.get());
//							HashMap<String, Object> kk0381_a010_map = mapper.getEKK0381A010( param, fixedText, resMap );
//							mapper.scResultCheck( param );
//							
//							// オプションサービス契約<TV>情報変更(住所変更)を行う。
//							reqMap = mapper.setEKK0381C052( param, fixedText, kk0351_a010_map, kk0381_a010_map);
//							resMap = scCall.run( reqMap, keepSesHandle.get());
//							HashMap<String, Object> kk0381_C052_map = mapper.getEKK0381C052( param, fixedText, resMap);
//							mapper.scResultCheck( param );
//						}
//					}
//					// OM-2015-0001224 20150917 ADD END
					if(kk0351_a010_map == null || kk0351_a010_map.isEmpty())
					{
						return;
					}
					
					/* ++++++++++ v20.00.00 ADD START ++++++++++ */
					// 解約済オプションは更新対象外
					if( JKKStrConst.CD00037_DSL_ZM.equals( kk0351_a010_map.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT) ) ){
						continue;
					}
					/* ++++++++++ v20.00.00 ADD END   ++++++++++ */
					
					String opSvcKeiNo = (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO);
					String geneAddDtm = (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM);
					String rsvAplyYmd = (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.RSV_APLY_YMD);
					String svcKeiNo = (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.SVC_KEI_NO);
					String svcCd = getSvcCd(param, fixedText, paramMap, svcKeiNo);
					// サービスコードが"03:テレビ"かつ予約適用年月日が入居予定日と同じ場合
					if(JKKStrConst.CD00130_03.equals(svcCd) && rsvAplyYmd.equals(nyukyoRsvYmdBef))
					{
						// オプションサービス契約<TV>一意照会を行う。
						condMap.clear();
						condMap.put( JKKAdchgMapperCC.COND_KEY_OP_SVC_KEI_NO, opSvcKeiNo );
						condMap.put( EKK0381A010CBSMsg.KEY_GENE_ADD_DTM, geneAddDtm);
						reqMap = mapper.setEKK0381A010_2( param, fixedText, condMap );
						resMap = scCall.run( reqMap, keepSesHandle.get());
						HashMap<String, Object> kk0381_a010_map = mapper.getEKK0381A010( param, fixedText, resMap );
						mapper.scResultCheck( param );
						
						// オプションサービス契約<TV>情報変更(住所変更)を行う。
						reqMap = mapper.setEKK0381C052( param, fixedText, kk0351_a010_map, kk0381_a010_map);
						resMap = scCall.run( reqMap, keepSesHandle.get());
						HashMap<String, Object> kk0381_C052_map = mapper.getEKK0381C052( param, fixedText, resMap);
						mapper.scResultCheck( param );
					}
					// OM-2015-0001224 20151001 MOD END
					
					/** オプションサービス契約スキーマの更新 */
// OM-2013-0004475対応 20131124 星野 MOD START
//					updOpSvcKei(param, fixedText, paramMap, opSvcKeiNoAf, nyukyoRsvYmdBef, nyukyoRsvYmdAft);
					updOpSvcKei(param, fixedText, paramMap, opSvcKeiNoAf, nyukyoRsvYmdBef, nyukyoRsvYmdAft, mskmDtlNoNet, mskmDtlNoTel, mskmDtlNoTv);
// OM-2013-0004475対応 20131124 星野 MOD START
				}
			}
		}
	}

	private void updOpSvcKei(
		IRequestParameterReadWrite param,
		String fixedText, 
		HashMap<String, Object> paramMap,
		String opSvcKeiNoAf, 
		String nyukyoRsvYmdBef, 
		String nyukyoRsvYmdAft
// OM-2013-0004475対応 20131124 星野 ADD START
		, String mskmDtlNoNet,
		String mskmDtlNoTel,
		String mskmDtlNoTv
// OM-2013-0004475対応 20131124 星野 ADD END
	) throws Exception {
		
		// 日付変更なしの場合リターン
		if(nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)){
			return;
		}
		
		/** 事前準備 */
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// OM-2015-0001224 20150917 ADD START
		// 対象のオプションからサービス契約番号を取得
		// ・EKK0351A010  オプションサービス契約一意照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_OP_SVC_KEI_NO, opSvcKeiNoAf);
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
		reqMap = mapper.setEKK0351A010(param, fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> wk_kk0351_a010_map = mapper.getEKK0351A010(param, fixedText, resMap);
		mapper.scResultCheck(param);
		
		// OM-2015-0001224 20151001 ADD START
		if(wk_kk0351_a010_map == null || wk_kk0351_a010_map.isEmpty())
		{
			return;
		}
		// OM-2015-0001224 20151001 ADD END
		
		String wkSvcKeiNo = (String)wk_kk0351_a010_map.get(EKK0351A010CBSMsg1List.SVC_KEI_NO);
		
		// サービス契約番号が入っていなければ何もしない
		// OM-2015-0001224 20151001 MOD START
		// 空文字列を条件追加
//		if(null == wkSvcKeiNo)
		if(null == wkSvcKeiNo || "".equals(wkSvcKeiNo))
		// OM-2015-0001224 20151001 MOD END
		{
			return;
		}
		
		// EKK0351B003 オプション履歴一覧照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, wkSvcKeiNo);
		reqMap = mapper.setEKK0351B003(param, fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		List<HashMap<String, Object>> kk0351_b003_map_list = mapper.getEKK0351B003(param, fixedText, resMap);
		mapper.scResultCheck(param);
		
		for(HashMap<String, Object> kk0351_b003_map : kk0351_b003_map_list)
		{
			// 対象のオプションサービス契約番号の世代を取得
			String opSvcKeiNo = (String)kk0351_b003_map.get(EKK0351B003CBSMsg1List.KK0351_OP_SVC_KEI_NO);
			if(opSvcKeiNoAf.equals(opSvcKeiNo))
			{
				String gene_add_dtm = (String)kk0351_b003_map.get(EKK0351B003CBSMsg1List.KK0351_GENE_ADD_DTM);
		// OM-2015-0001224 20150917 ADD END
				// ・EKK0351A010  オプションサービス契約一意照会
				condMap = new HashMap<String, String>();
				condMap.put(JKKAdchgMapperCC.COND_KEY_OP_SVC_KEI_NO, opSvcKeiNoAf);
				// OM-2015-0001224 20150917 MOD START
				// 全ての世代を参照し、予約適用年月日が未来日(入居予定日)のレコードを更新する
		//		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
		//		reqMap = mapper.setEKK0351A010(param, fixedText, condMap);
				condMap.put(JKKAdchgMapperCC.COND_KEY_GENE_ADD_DTM, gene_add_dtm);
				reqMap = mapper.setEKK0351A010_Func1(param, fixedText, condMap);
				// OM-2015-0001224 20150917 MOD END
				resMap = scCall.run(reqMap, keepSesHandle.get());
				HashMap<String, Object> kk0351_a010_map = mapper.getEKK0351A010(param, fixedText, resMap);
				mapper.scResultCheck(param);
				
				// 変更前予約適用年月日が不一致の場合は更新しない
				if( !nyukyoRsvYmdBef.equals( kk0351_a010_map.get(EKK0351A010CBSMsg1List.RSV_APLY_YMD) ) ){
					return;
				}
				
		// OM-2013-0004475対応 20131124 星野 ADD START
				String svcKeiNo = (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.SVC_KEI_NO);
				if(StringUtils.isEmpty(svcKeiNo)){
					String svcKeiUcwkNo = (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.SVC_KEI_UCWK_NO);
					/** サービス契約内訳一意照会 */
					// ■ EKK0161A010 サービス契約内訳一意照会
					JKKAdchgCmnLogicCC lclCmnLogic = new JKKAdchgCmnLogicCC(keepSesHandle.get());
					HashMap<String, Object> kk0161_a010_map =lclCmnLogic.getEKK0161A010(param, mapper, fixedText, scCall, svcKeiUcwkNo, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
					svcKeiNo = (String)kk0161_a010_map.get(EKK0161A010CBSMsg1List.SVC_KEI_NO);
				}
				
				// サービス契約番号よりサービスコードを取得
				// 現状はテレビしかないはずだが、念のため
				String svcCd = getSvcCd(param, fixedText, paramMap, svcKeiNo);
				String mskmDtlNo = "";
				if("01".equals(svcCd)){
					mskmDtlNo = mskmDtlNoNet;
				}else if("02".equals(svcCd)){
					mskmDtlNo = mskmDtlNoTel;
				}else if("03".equals(svcCd)){
					mskmDtlNo = mskmDtlNoTv;
				}
		// OM-2013-0004475対応 20131124 星野 ADD END
		
		
				/** オプションサービス予約適用年月日入力 */
				HashMap<String, Object> kk0351_c030_inmap = new HashMap<String, Object>();
				kk0351_c030_inmap.put(EKK0351C030CBSMsg.OP_SVC_KEI_NO, (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
				kk0351_c030_inmap.put(EKK0351C030CBSMsg.GENE_ADD_DTM, (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM));
		// OM-2013-0004475対応 20131124 星野 ADD START
				if(!StringUtils.isEmpty(mskmDtlNo)){
					kk0351_c030_inmap.put(EKK0351C030CBSMsg.MSKM_DTL_NO, mskmDtlNo);
				}else{
		// OM-2013-0004475対応 20131124 星野 ADD END
					kk0351_c030_inmap.put(EKK0351C030CBSMsg.MSKM_DTL_NO, (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.MSKM_DTL_NO));
		// OM-2013-0004475対応 20131124 星野 ADD START
				}
		// OM-2013-0004475対応 20131124 星野 ADD END
				kk0351_c030_inmap.put(EKK0351C030CBSMsg.RSV_APLY_YMD, nyukyoRsvYmdAft);
				kk0351_c030_inmap.put(EKK0351C030CBSMsg.RSV_APLY_CD, (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.RSV_APLY_CD));
		// OM-2013-0004475対応 20131124 星野 MOD START
		//		kk0351_c030_inmap.put(EKK0351C030CBSMsg.IDO_DIV, (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.IDO_DIV));
				kk0351_c030_inmap.put(EKK0351C030CBSMsg.IDO_DIV, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_IDO_DIV ));
		// OM-2013-0004475対応 20131124 星野 MOD END
				kk0351_c030_inmap.put(JKKAdchgMapperCC.UPD_DT_SVC_KEI_UPD_DTM_BEF, (String)kk0351_a010_map.get(EKK0351A010CBSMsg1List.LAST_UPD_DTM));
				reqMap = mapper.setEKK0351C030(param, fixedText, kk0351_c030_inmap);
				resMap = scCall.run(reqMap, keepSesHandle.get());
				mapper.getEKK0351C030(param, fixedText, resMap);
				mapper.scResultCheck(param);
		// OM-2015-0001224 20150917 ADD START
			}
			else
			{
				// 何もしない
			}
		}
		// OM-2015-0001224 20150917 ADD END
	}

	private void updSeikyKeiInf(
		IRequestParameterReadWrite param,
		String fixedText, 
		HashMap<String, Object> paramMap, 
		String adchgNo,
		String nyukyoRsvYmdBef,
		String nyukyoRsvYmdAft
// OM-2013-0004475対応 20131124 星野 ADD START
		, String mskmDtlNo
// OM-2013-0004475対応 20131124 星野 ADD END
	) throws Exception {
		
		// 日付変更なしの場合リターン
		if(nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)){
			return;
		}
		
		/** 事前準備 */
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		

		/** 住所変更明細スキーマデータの取得（請求契約番号） */
		// ・EKK2101B001 住所変更明細一覧照会
		ArrayList<HashMap<String, Object>> kk2101_b001_list = getAdchgDtlList(param, fixedText, adchgNo, JKKAdchgConstCC.CD01241_SEI_KEI_NO);
		if(kk2101_b001_list == null || kk2101_b001_list.isEmpty()){
			// 該当データなしの場合リターン
			return;
		}
		
		for(HashMap<String, Object> kk2101_b001_map : kk2101_b001_list){
			
			
			// 変更後請求契約番号がある場合
			if( !StringUtils.isEmpty( (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO) ) ){
				
				// 変更後請求契約番号
				String seiKeiNoAf = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
				
				// 住所変更では請求契約番号を対象とした異動予約は出力しないため、異動予約の更新処理なし

				/** 請求契約スキーマの取得 */
				// ・EKK0491A010  請求契約一意照会
				condMap = new HashMap<String, String>();
				condMap.put(JKKAdchgMapperCC.COND_KEY_SEIKY_KEI_NO, seiKeiNoAf);
				condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
				reqMap = mapper.setEKK0491A010( param, fixedText, condMap);
				resMap = scCall.run(reqMap, keepSesHandle.get());
				HashMap<String, Object> kk0491_a010_map = mapper.getEKK0491A010(param, fixedText, resMap);
				mapper.scResultCheck(param);
				
				// 変更前予約適用年月日が不一致の場合は更新しない
				if( !nyukyoRsvYmdBef.equals( kk0491_a010_map.get(EKK0491A010CBSMsg1List.RSV_APLY_YMD) ) ){
					continue;
				}
				
				// kk0491_a010_map.予約適用年月日をparam.変更予定年月日に差替
				kk0491_a010_map.put(EKK0491A010CBSMsg1List.RSV_APLY_YMD, nyukyoRsvYmdAft);
				
// OM-2013-0004475対応 20131124 星野 ADD START
				// 申込明細番号を設定
				if(!StringUtils.isEmpty(mskmDtlNo)){
					kk0491_a010_map.put(EKK0491A010CBSMsg1List.MSKM_DTL_NO, mskmDtlNo);
				}
				// 異動区分を設定
				kk0491_a010_map.put(EKK0491A010CBSMsg1List.IDO_DIV, (String)paramMap.get( JKKAdchgConstCC.PARAM_KEY_IDO_DIV ) );
// OM-2013-0004475対応 20131124 星野 ADD END
				// kk0491_a010_map.最終更新年月日時分秒をparam.変更年月日時分秒に差替
// 20130712 MOD START
//				kk0491_a010_map.put("upd_dt_seiky_kei_upd_dtm_bef", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.UPD_DTM));
				kk0491_a010_map.put("upd_dt_seiky_kei_upd_dtm_bef", (String)kk0491_a010_map.get(EKK0491A010CBSMsg1List.LAST_UPD_DTM));
// 20130712 MOD END
				
				/** 請求契約スキーマの更新 */
				// ・EKK0491C060  請求契約内容変更
				reqMap = mapper.setEKK0491C060(param, fixedText, kk0491_a010_map);
				resMap = scCall.run(reqMap, keepSesHandle.get());
				mapper.getEKK0491C060(param, fixedText, resMap);
				mapper.scResultCheck(param);
			}
		}
	}

	private boolean isDsl(HashMap<String, Object> kk2101_b001_map) {
		return !StringUtils.isEmpty( (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO) ) && 
			!kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO).equals( kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO) );
	}

	private void updIdoRsv(
		IRequestParameterReadWrite param, 
		String fixedText,
		HashMap<String, Object> paramMap, 
		String idoRsvSearchKey, 
		String idoRsvSearchValue,
		String dateBef,
		String dateAft
	) throws Exception{
		
		// 日付変更なしの場合リターン
		if(dateBef.equals(dateAft)
// OM-2014-0001642対応 20140428 星野 ADD START
			&& !isAdchgFix(paramMap)
// OM-2014-0001642対応 20140428 星野 ADD END
		){
			return;
		}
		
		// OM-2014-0003579 2014/11/16 ADD START
		// 異動予約特定に使用するキーが空白の場合は異動予約の検索・変更も行わない
		if  ( StringUtils.isEmpty( idoRsvSearchKey )
				|| StringUtils.isEmpty( idoRsvSearchValue )) {
			return;
		}
		// OM-2014-0003579 2014/11/16 ADD END
		
		/** 事前準備 */
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		
		/** 異動予約スキーマの取得 */
		condMap.clear();
		// ＫＥＹ＿異動区分
		condMap.put(EKK1681B001CBSMsg.KEY_IDO_DIV, (String) paramMap.get(JKKAdchgConstCC.PARAM_KEY_IDO_DIV));
		// ＫＥＹ＿識別番号
		condMap.put(idoRsvSearchKey, idoRsvSearchValue);
// LT-2013-0000350対応 20130711 星野 ADD START
		// ＫＥＹ＿異動予約状態コード
		condMap.put(EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, "00,03,04");
// LT-2013-0000350対応 20130711 星野 ADD END
		// ＫＥＹ＿ソート項目Ｎｏ
		condMap.put(EKK1681B001CBSMsg.KEY_SORT_ITEM_NO, JKKAdchgConstCC.EKK1681B001_SORT_ITEM.RSV_APLY_YMD);
		// ＫＥＹ＿ソート区分
		condMap.put(EKK1681B001CBSMsg.KEY_SORT_KBN, JKKAdchgConstCC.SORT_KBN.DESC);
		
		reqMap = mapper.setEKK1681B001(param, fixedText, condMap);
		resMap = scCall.run( reqMap, keepSesHandle.get());
		ArrayList<HashMap<String,Object>> kk1681_b001_list = mapper.getEKK1681B001(param, fixedText, resMap);
		mapper.scResultCheck(param);
		
		if(kk1681_b001_list != null){
			
			for( HashMap<String, Object> kk1681_b001_map : kk1681_b001_list ){
				
				/** 該当レコードの予約的曜日が変更前日付と一致するか確認 */
				if( !dateBef.equals( kk1681_b001_map.get(EKK1681B001CBSMsg1List.RSV_APLY_YMD) ) 
// OM-2014-0000041対応 20140420 星野 ADD START
					// 住所変更確定時は予約適用年月日20991231も更新対象 ただし予約手続中除く
					&& !( 
							isAdchgFix(paramMap) 
							&& JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD.equals( kk1681_b001_map.get(EKK1681B001CBSMsg1List.RSV_APLY_YMD) )
							&& !"03".equals( kk1681_b001_map.get(EKK1681B001CBSMsg1List.IDO_RSV_STAT_CD) )
						)
// OM-2014-0000041対応 20140420 星野 ADD END
				){
					// 不一致なら更新対象外
					continue;
				}
				
				/** 異動予約スキーマの更新 */
				condMap.clear();
				// 異動予約番号
				condMap.put(EKK1681C021CBSMsg.IDO_RSV_NO, (String) kk1681_b001_map.get(EKK1681B001CBSMsg1List.IDO_RSV_NO));
				// 異動区分
				condMap.put(EKK1681C021CBSMsg.IDO_DIV, (String) paramMap.get(JKKAdchgConstCC.PARAM_KEY_IDO_DIV));
				// 予約適用年月日を更新
// OM-2014-0000041対応 20140420 星野 ADD START
				// ANK-2120-00-00 2014/09/01 add start
				String idoRsvDtlCd = (String) kk1681_b001_map.get(EKK1681B001CBSMsg1List.IDO_RSV_DTL_CD);
				// ANK-2120-00-00 2014/09/01 add end

				// OM-2016-0002358 ADD START
				// サービス課金終了年月日
				String svcChrgEndymd = (String) kk1681_b001_map.get(EKK1681B001CBSMsg1List.SVC_CHRG_ENDYMD);
				boolean svcChrgEndymdUpdFlg = false;
				if (svcChrgEndymd != null && !svcChrgEndymd.equals(""))
				{
					// サービス課金終了年月日が設定されている場合は更新
					svcChrgEndymdUpdFlg = true;
				}
				// OM-2016-0002358 ADD END

				if( isAdchgFix(paramMap) 
					&& JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD.equals( kk1681_b001_map.get(EKK1681B001CBSMsg1List.RSV_APLY_YMD) )
					&& !"03".equals( kk1681_b001_map.get(EKK1681B001CBSMsg1List.IDO_RSV_STAT_CD) )
				){
					condMap.put(EKK1681C021CBSMsg.RSV_APLY_YMD, (String)paramMap.get("adchgFixYmd"));
					// OM-2016-0002358 ADD START
					if (svcChrgEndymdUpdFlg)
					{
						condMap.put(EKK1681C021CBSMsg.SVC_CHRG_ENDYMD, JPCDateUtil.addDay((String)paramMap.get("adchgFixYmd"), -1));
					}
					// OM-2016-0002358 ADD END
				// ANK-2120-00-00 2014/09/01 add start
				// 住変確定時に未反映のものは予約適用年月日を更新
				}else if(isAdchgFix(paramMap) 
					&& "00".equals(kk1681_b001_map.get(EKK1681B001CBSMsg1List.IDO_RSV_STAT_CD))
					&& (IDO_RSV_DTL_CD.CSL_SVC.equals(idoRsvDtlCd)
						|| IDO_RSV_DTL_CD.CSL_KIKI.equals(idoRsvDtlCd)
						|| IDO_RSV_DTL_CD.CSL_KIKI_OP.equals(idoRsvDtlCd)
						// IT1-2014-0000330 2014/10/11 mod start
						//|| IDO_RSV_DTL_CD.STA_OPT.equals(idoRsvDtlCd)
						|| IDO_RSV_DTL_CD.CSL_OP.equals(idoRsvDtlCd)
						// IT1-2014-0000330 2014/10/11 mod end
						|| IDO_RSV_DTL_CD.CSL_TEL_OP_PAC.equals(idoRsvDtlCd)
						|| IDO_RSV_DTL_CD.STA_TEL_OP_PAC.equals(idoRsvDtlCd) )
				){
					condMap.put(EKK1681C021CBSMsg.RSV_APLY_YMD, (String)paramMap.get("adchgFixYmd"));
					// OM-2016-0002358 ADD START
					if (svcChrgEndymdUpdFlg)
					{
						condMap.put(EKK1681C021CBSMsg.SVC_CHRG_ENDYMD, JPCDateUtil.addDay((String)paramMap.get("adchgFixYmd"), -1));
					}
					// OM-2016-0002358 ADD END
				// ANK-2120-00-00 2014/09/01 add end
				}else{
// OM-2014-0000041対応 20140420 星野 ADD END
					condMap.put(EKK1681C021CBSMsg.RSV_APLY_YMD, dateAft);
					// OM-2016-0002358 ADD START
					if (svcChrgEndymdUpdFlg)
					{
						condMap.put(EKK1681C021CBSMsg.SVC_CHRG_ENDYMD, JPCDateUtil.addDay(dateAft, -1));
					}
					// OM-2016-0002358 ADD END
// OM-2014-0000041対応 20140420 星野 ADD START
				}
// OM-2014-0000041対応 20140420 星野 ADD END
				// 更新年月日時分秒（更新前）
				condMap.put(EKK1681C021CBSMsg.UPD_DTM_BF, (String) kk1681_b001_map.get(EKK1681B001CBSMsg1List.UPD_DTM));
				
				reqMap = mapper.setEKK1681C021(param, fixedText, condMap);
				resMap = scCall.run( reqMap, keepSesHandle.get());
				mapper.getEKK1681C021(param, fixedText, resMap);
				mapper.scResultCheck(param);
				
			}
			
		}
	}

	private ArrayList<HashMap<String, Object>> getAdchgDtlList(
		IRequestParameterReadWrite param, 
		String fixedText,
		String adchgNo,
		String adchgDtlSbtCd
	) throws Exception{
		/** 事前準備 */
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		condMap.clear();
		condMap.put( JKKAdchgMapperCC.COND_KEY_ADCHG_NO, adchgNo );
		condMap.put( JKKAdchgMapperCC.COND_KEY_ADCHG_DTL_SBT_CD, adchgDtlSbtCd );
		reqMap = mapper.setEKK2101B001( param, fixedText, condMap );
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		ArrayList<HashMap<String, Object>> kk2101_b001_list = mapper.getEKK2101B001( param, fixedText, resMap );
		mapper.scResultCheck( param );
		return kk2101_b001_list;
	}

// LT-2013-0000299対応 20130707 星野 ADD START
	private ArrayList<HashMap<String, Object>> getKktkSvcKeiList(
			IRequestParameterReadWrite param, 
			String fixedText,
			// OM-2017-0000920対応 20170920 星野 MOD START
//			String sysid,
			List<String> sysidList,
			// OM-2017-0000920対応 20170920 星野 MOD END
			String idoDiv
	) throws Exception{
		
		// OM-2017-0000920対応 20170920 星野 MOD START
//		// 住所情報変更初期表示情報取得コモンコンポーネント
//		// マッピングクラスインスタンスを取得
//		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
//		
//		// SCリクエストInvokerを取得
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//		
//		/** EKK0341B031　機器提供サービス契約履歴一覧照会（SYSID） */
//		HashMap<String, String> condMap = new HashMap<String, String>();
//		condMap.put(JKKAdchgMapperCC.COND_KEY_SYSID, sysid);
//		condMap.put(JKKAdchgMapperCC.COND_KEY_IDO_DIV, idoDiv);
//		HashMap<String, Object> reqMap = mapper.setEKK0341B031( param, fixedText, condMap);
//		Map<?, ?> resMap = scCall.run( reqMap, keepSesHandle.get());
//		ArrayList<HashMap<String, Object>> kk0341b031List = mapper.getEKK0341B031( param, fixedText, resMap );
//		mapper.scResultCheck( param );
//		return kk0341b031List;
		
		ArrayList<HashMap<String, Object>> retList = new ArrayList<HashMap<String, Object>>();
		
		if(sysidList==null){
			return retList;
		}
		
		for(String sysid:sysidList){
			ArrayList<HashMap<String, Object>> ekk0341b031List = getEkk0341b031List(param, fixedText, sysid, idoDiv);
			if(ekk0341b031List!=null){
				retList.addAll(ekk0341b031List);
			}
		}
		
		// 返却前に機器提供サービス契約番号（昇順）、世代登録年月日時分秒（降順）でソート
		Collections.sort(
			retList, 
			new Comparator<HashMap<String, Object>>(){
				public int compare(HashMap<String, Object> arg0, HashMap<String, Object> arg1) {
					if(arg0==null){
						arg0 = new HashMap<String, Object>();
					}
					if(arg1==null){
						arg1 = new HashMap<String, Object>();
					}
					
					String kktkSvcKeiNo0 = JKKStringUtil.nullToBlank((String)arg0.get(EKK0341B031CBSMsg1List.KKTK_SVC_KEI_NO)).trim();
					String kktkSvcKeiNo1 = JKKStringUtil.nullToBlank((String)arg1.get(EKK0341B031CBSMsg1List.KKTK_SVC_KEI_NO)).trim();
					String geneAddDtm0 = JKKStringUtil.nullToBlank((String)arg0.get(EKK0341B031CBSMsg1List.GENE_ADD_DTM)).trim();
					String geneAddDtm1 = JKKStringUtil.nullToBlank((String)arg1.get(EKK0341B031CBSMsg1List.GENE_ADD_DTM)).trim();
					
					// 機器提供サービス契約番号（昇順）
					int ret = kktkSvcKeiNo0.compareTo(kktkSvcKeiNo1);
					if(ret!=0){
						return ret;
					}else{
						// 世代登録年月日時分秒（降順）
						return geneAddDtm1.compareTo(geneAddDtm0);
					}
				}
			}
		);
		return retList;
		// OM-2017-0000920対応 20170920 星野 MOD END
	}

	// OM-2017-0000920対応 20170920 星野 ADD START
	private ArrayList<HashMap<String, Object>> getEkk0341b031List(
			IRequestParameterReadWrite param, 
			String fixedText, 
			String sysid,
			String idoDiv
	) throws RequestParameterException, SCException,
			Exception, CCException {
		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		/** EKK0341B031　機器提供サービス契約履歴一覧照会（SYSID） */
		HashMap<String, String> condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SYSID, sysid);
		condMap.put(JKKAdchgMapperCC.COND_KEY_IDO_DIV, idoDiv);
		HashMap<String, Object> reqMap = mapper.setEKK0341B031( param, fixedText, condMap);
		Map<?, ?> resMap = scCall.run( reqMap, keepSesHandle.get());
		ArrayList<HashMap<String, Object>> kk0341b031List = mapper.getEKK0341B031( param, fixedText, resMap );
		mapper.scResultCheck( param );
		return kk0341b031List;
	}
	// OM-2017-0000920対応 20170920 星野 ADD END
//LT-2013-0000299対応 20130707 星野 ADD END
	
	// ANK-2056-00-00 2014/04/28 start
	private void updTelOpPackInf(
			IRequestParameterReadWrite param,
			String fixedText, 
			HashMap<String, Object> paramMap, 
			String adchgNo,
			String dslKiboYmdBef,
			String dslKiboYmdAft,
			String nyukyoRsvYmdBef,
			String nyukyoRsvYmdAft, 
			String mskmDtlNoNet,
			String mskmDtlNoTel,
			String mskmDtlNoTv
		) throws Exception {
			
			/** 住所変更明細スキーマデータの取得（電話オプションパック ） */
			// ・EKK2101B001 住所変更明細一覧照会
			ArrayList<HashMap<String, Object>> kk2101_b001_list = getAdchgDtlList(param, fixedText, adchgNo, JKKAdchgConstCC.CD01241_TEL_OP_PACK);
			if(kk2101_b001_list == null || kk2101_b001_list.isEmpty()){
				// 該当データなしの場合リターン
				return;
			}
			
			for(HashMap<String, Object> kk2101_b001_map : kk2101_b001_list){
				
				// 解約 または 解約新規 レコードの場合
				if( isDsl(kk2101_b001_map) ){
					
					// 解約希望日変更の場合
					// ANK-2120-00-00 2014/09/01 mod start
					//  または 住所変更確定時
					//if(!dslKiboYmdBef.equals(dslKiboYmdAft)){
					if(!dslKiboYmdBef.equals(dslKiboYmdAft) || isAdchgFix(paramMap)){
					// ANK-2120-00-00 2014/09/01 mod end
					
						// 変更前割引サービス契約番号
						String opSvcKeiNoBf = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
						
						/** 異動予約スキーマの更新 */
						updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_WRIB_SVC_KEI_NO, opSvcKeiNoBf, dslKiboYmdBef, dslKiboYmdAft);
					}
				}
				
				// 変更後サービス契約内訳番号がある場合
				if( !StringUtils.isEmpty( (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO) ) ){
					
					// 解約希望日変更の場合
					if(!nyukyoRsvYmdBef.equals(nyukyoRsvYmdAft)){

						// 変更後サービス契約内訳番号
						String opSvcKeiNoAf = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
						
						/** 異動予約スキーマの更新 */
						updIdoRsv(param, fixedText, paramMap, EKK1681B001CBSMsg.KEY_WRIB_SVC_KEI_NO, opSvcKeiNoAf, dslKiboYmdBef, dslKiboYmdAft);
					}
				}
			}
		}
	// ANK-2056-00-00 2014/04/28 end

	// 20150514 ANK-2460-00-00 【MUSe対応】ＭＴの撤去（解約）変更 ADD START
	/**
	 * 工事案件情報の更新を行います。
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param fixedText ユーザ任意文字列
	 * @param paramMap リクエストパラメータ
	 * @param adchgNo 住所変更番号
	 * @param dslKiboYmdBef 解約希望日（変更前）
	 * @param dslKiboYmdAft 解約希望日（変更後）
	 * @param mskmNo 申込番号
	 * @throws Exception 例外が発生した場合
	 */
	private void updKojiakInf(
			IRequestParameterReadWrite param,
			String fixedText, 
			HashMap<String, Object> paramMap, 
			String adchgNo,
			String dslKiboYmdBef,
			String dslKiboYmdAft,
			String mskmNo
	) throws Exception
	{
		// 解約希望日が変更されていない場合
		if (dslKiboYmdBef.equals(dslKiboYmdAft))
		{
			// 更新を行わない
			return;
		}

		/** 住所変更明細スキーマデータの取得（工事案件番号） */
		// ・EKK2101B001 住所変更明細一覧照会
		ArrayList<HashMap<String, Object>> kk2101_b001_list = getAdchgDtlList(param, fixedText, adchgNo, JKKAdchgConstCC.CD01241_KOJI_ANKN_NO);
		if(kk2101_b001_list == null || kk2101_b001_list.isEmpty()){
			// 該当データなしの場合リターン
			return;
		}

		for (HashMap<String, Object> kk2101_b001_map : kk2101_b001_list)
		{
			// 撤去工事の場合
			if (!StringUtils.isEmpty((String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO)))
			{
				// 撤去工事の工事案件番号
				String kojiakNo = (String) kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);

				/** 工事案件情報の更新 */
				updKojiak(param, fixedText, paramMap, kojiakNo, dslKiboYmdAft, mskmNo);
			}
		}
	}

	/**
	 * 工事案件CCを呼び出し、工事案件情報を更新をします。<br>
	 * ※MUSe連携の場合のみ
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むリクエストパラメータ
	 * @param fixedText ユーザ任意文字列
	 * @param paramMap リクエストパラメータ
	 * @param kojiakNo 工事案件番号（撤去工事）
	 * @param dslKiboYmdAft 解約希望日（変更後）
	 * @param mskmNo 申込番号
	 * @throws Exception 例外が発生した場合
	 */
	private void updKojiak(
			IRequestParameterReadWrite param, 
			String fixedText,
			HashMap<String, Object> paramMap, 
			String kojiakNo,
			String dslKiboYmdAft,
			String mskmNo
	) throws Exception
	{
		/** 事前準備 */
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;

		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// ・EKU0011A010  工事案件一意照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO, kojiakNo);
		reqMap = mapper.setEKU0011A010(param, fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		HashMap<String, Object> ku0011_a010_map = mapper.getEKU0011A010(param, fixedText, resMap);
		mapper.scResultCheck(param);

		String mansKojiakStatCd = (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.MANS_KOJIAK_STAT_CD);
		// MUSe連携ではない、またはマンション工事案件状態コードが「工事完了済」以降の場合
		if (null == mansKojiakStatCd || mansKojiakStatCd.isEmpty() || JKKStrConst.CD01651_KJFIN.compareTo(mansKojiakStatCd) <= 0)
		{
			// 工事情報を更新しない
			return;
		}

		// ・EKU0081B010  サービス契約_工事案件一覧照会
		condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO, kojiakNo);
		reqMap = mapper.setEKU0081B010(param, fixedText, condMap);
		resMap = scCall.run( reqMap, keepSesHandle.get() );
		List<HashMap<String,Object>> ku0081_b010_list = mapper.getEKU0081B010( param, fixedText, resMap );
		mapper.scResultCheck( param );

		// サービス契約番号
		String svcKeiNo = "";
		for (HashMap<String,Object> ku0081_b010_map : ku0081_b010_list)
		{
			svcKeiNo = (String)ku0081_b010_map.get(EKU0081B010CBSMsg1List.SVC_KEI_NO);
			String svcCd = (String)ku0081_b010_map.get(EKU0081B010CBSMsg1List.SVC_CD);
			// ネットの場合
			if (JKKAdchgConstCC.CD00130_INET_SVC.equals(svcCd))
			{
				// ネット・電話の撤去工事の場合はネットのサービス契約番号を優先する
				break;
			}
		}

		// ・EKU0091B020  申込明細_工事案件一覧照会（工事案件番号）
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO, kojiakNo);
		reqMap = mapper.setEKU0091B020(param, fixedText, condMap);
		resMap = scCall.run(reqMap, keepSesHandle.get());
		List<HashMap<String,Object>> ku0091_b020_list = mapper.getEKU0091B020(param, fixedText, resMap);
		mapper.scResultCheck(param);
		if (null == ku0091_b020_list)
		{
			// 工事情報を更新しない（ありえないが念のため）
			return;
		}

		// 申込明細番号
		String mskmDtlNo = "";
		if (1 == ku0091_b020_list.size())
		{
			mskmDtlNo = (String)ku0091_b020_list.get(0).get(EKU0091B020CBSMsg1List.MSKM_DTL_NO);
		}
		else
		{
			// 工事案件に紐づく申込明細番号のリスト
			List<String> mskmDtlNoList = new ArrayList<String>();
			for (HashMap<String, Object> ku0091_b020_map : ku0091_b020_list)
			{
				mskmDtlNoList.add((String)ku0091_b020_map.get(EKU0091B020CBSMsg1List.MSKM_DTL_NO));
			}
			// ・EKK0021B002  申込明細履歴一覧照会
			condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, svcKeiNo);
			reqMap = mapper.setEKK0021B002(param, fixedText, condMap);
			resMap = scCall.run( reqMap, keepSesHandle.get() );
			List<HashMap<String,Object>> kk0021_b002_list = mapper.getEKK0021B002( param, fixedText, resMap );
			mapper.scResultCheck( param );

			for (HashMap<String,Object> kk0021_b002_map : kk0021_b002_list)
			{
				String tmpMskmDtlNo = (String)kk0021_b002_map.get(EKK0021B002CBSMsg1List.MSKM_DTL_NO);
				// 主契約の申込明細番号の場合
				if (mskmDtlNoList.contains(tmpMskmDtlNo))
				{
					mskmDtlNo = tmpMskmDtlNo;
					break;
				}
			}
		}

		if (mskmDtlNo.isEmpty())
		{
			// 工事情報を更新しない（ありえないが念のため）
			return;
		}

		// ・EKK0081A010  サービス契約一意照会
		condMap = new HashMap<String, String>();
		condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, svcKeiNo);
		condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
		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);

		// 料金グループコード
		String prcGrpCd = (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		// 料金プランコード
		String pplanCd = (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.PPLAN_CD);
		// 工事案件のサブタイプ情報
		HashMap<String, Object> ku0011_subtype_map = new HashMap<String, Object>();

		// ネットホームタイプ、電話ホームタイプの場合 ※MUSe連携のみ工事情報を変更することとなったため、実際はありえないケース
		if (JKKStrConst.CD00133_02.equals(prcGrpCd)
			|| (JKKStrConst.CD00133_10.equals(prcGrpCd)
				&& (JKKStrConst.CD00565_TEL1_HOME.equals(pplanCd) || JKKStrConst.CD00565_TEL2_HOME.equals(pplanCd))))
		{
			// ・EKU0021A010  工事案件＜eo光ネット＞一意照会
			condMap = new HashMap<String, String>();
			condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO, kojiakNo);
			reqMap = mapper.setEKU0021A010(param, fixedText, condMap);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			ku0011_subtype_map = mapper.getEKU0021A010(param, fixedText, resMap);
			mapper.scResultCheck(param);
		}
		// ネットマンションタイプ、ネットメゾンタイプ、電話マンションタイプ、電話メゾンタイプの場合
		else if (JKKStrConst.CD00133_04.equals(prcGrpCd)
			|| JKKStrConst.CD00133_03.equals(prcGrpCd)
			|| (JKKStrConst.CD00133_10.equals(prcGrpCd)
				&& !(JKKStrConst.CD00565_TEL1_HOME.equals(pplanCd) || JKKStrConst.CD00565_TEL2_HOME.equals(pplanCd))))
		{
			// ・EKU0061A010  工事案件＜eo光ネットマンション＞一意照会
			condMap = new HashMap<String, String>();
			condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO, kojiakNo);
			reqMap = mapper.setEKU0061A010(param, fixedText, condMap);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			ku0011_subtype_map = mapper.getEKU0061A010(param, fixedText, resMap);
			mapper.scResultCheck(param);
		}
		// テレビ(K-CAT)、テレビ(再送信)の場合 ※MUSe連携のみ工事情報を変更することとなったため、実際はありえないケース
		else if (JKKStrConst.CD00133_11.equals(prcGrpCd) || JKKStrConst.CD00133_13.equals(prcGrpCd))
		{
			// ・EKU0031A010  工事案件＜eo光テレビ＞一意照会
			condMap = new HashMap<String, String>();
			condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO, kojiakNo);
			reqMap = mapper.setEKU0031A010(param, fixedText, condMap);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			ku0011_subtype_map = mapper.getEKU0031A010(param, fixedText, resMap);
			mapper.scResultCheck(param);
		}
		// テレビ(KCN)の場合 ※MUSe連携のみ工事情報を変更することとなったため、実際はありえないケース
		else if (JKKStrConst.CD00133_12.equals(prcGrpCd))
		{
			// ・EKU0041A010  工事案件＜eo光テレビ回線＞一意照会
			condMap = new HashMap<String, String>();
			condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO, kojiakNo);
			reqMap = mapper.setEKU0041A010(param, fixedText, condMap);
			resMap = scCall.run(reqMap, keepSesHandle.get());
			ku0011_subtype_map = mapper.getEKU0041A010(param, fixedText, resMap);
			mapper.scResultCheck(param);
		}
		// 上記以外
		else
		{
			// 工事情報を更新しない（ありえないが念のため）
			return;
		}

		// ・工事案件CC（諸変更：工事情報変える）
		final String MAP_KEY_KOJIANKENCC = fixedText + "_JKKKojiAnkenCC";
		Map<String, Object> parentMap = getParamKojiAnkenCC(paramMap, dslKiboYmdAft, kk0081_a010_map, ku0011_a010_map, ku0011_subtype_map, mskmNo, mskmDtlNo);
		param.setData(MAP_KEY_KOJIANKENCC, parentMap);

		JKKKojiAnkenCC kojiAnkenCC = new JKKKojiAnkenCC();
		kojiAnkenCC.executeKojiAnken(keepSesHandle.get(), param, MAP_KEY_KOJIANKENCC);
	}

	/**
	 * 工事案件CC（諸変更：工事情報変える）へのパラメータを取得します。
	 * <br>
	 * @param paramMap リクエストパラメータ
	 * @param dslKiboYmdAft 解約希望日（変更後）
	 * @param kk0081_a010_map サービス契約一意照会結果
	 * @param ku0011_a010_map 工事案件一意照会結果
	 * @param ku0011_subtype_map 工事案件サブタイプの照会結果
	 * @param mskmNo 申込番号
	 * @param mskmDtlNo 申込明細番号
	 * @return 工事案件CC（諸変更：工事情報変える）へのパラメータ
	 */
	public HashMap<String, Object> getParamKojiAnkenCC(
			HashMap<String, Object> paramMap,
			String dslKiboYmdAft,
			HashMap<String, Object> kk0081_a010_map,
			HashMap<String, Object> ku0011_a010_map,
			HashMap<String, Object> ku0011_subtype_map,
			String mskmNo,
			String mskmDtlNo
	)
	{
		/** 設定値格納マップ 生成 */
		HashMap<String, Object> paramCC = new HashMap<String, Object>();

		// 異動区分
		paramCC.put(JKKKojiAnkenConstCC.IDO_DIV, (String)paramMap.get(JKKAdchgConstCC.PARAM_KEY_IDO_DIV));
		// サービス契約番号
		paramCC.put(JKKKojiAnkenConstCC.SVC_KEI_NO, (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		// サービス契約回線内訳番号
		// ※設定しない（工事案件CCで移転元の回線を取得している）
		// 申込番号
		paramCC.put(JKKKojiAnkenConstCC.MSKM_NO, mskmNo);
		// 申込明細番号
		paramCC.put(JKKKojiAnkenConstCC.MSKM_DTL_NO, mskmDtlNo);
		// 工事案件番号
		paramCC.put(JKKKojiAnkenConstCC.KOJIAK_NO, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_NO));
		// 工事受付コード
		paramCC.put(JKKKojiAnkenConstCC.KOJI_UK_CD, "070");			// 070：内容変更
		// 工事受付詳細コード
		paramCC.put(JKKKojiAnkenConstCC.KOJI_UK_DTL_CD, "A5");		// A5：工事情報変える
		// サービスコード
		paramCC.put(JKKKojiAnkenConstCC.SVC_CD, (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.SVC_CD));
		// プラン変更確定年月日時分秒
		paramCC.put(JKKKojiAnkenConstCC.PLAN_CHG_FIX_DTM, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.PLAN_CHG_FIX_DTM));
		// SYSID
		paramCC.put(JKKKojiAnkenConstCC.SYSID, (String)kk0081_a010_map.get(EKK0081A010CBSMsg1List.SYSID));
		// 申込者名
		paramCC.put(JKKKojiAnkenConstCC.MSKMSHA_NM, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.MSKMSHA_NM));
		// 工事範囲コード
		paramCC.put(JKKKojiAnkenConstCC.KOJI_SCOPE_CD, (String)ku0011_subtype_map.get("koji_scope_cd"));
		// 移設コード
		paramCC.put(JKKKojiAnkenConstCC.ISETSU_CD, (String)ku0011_subtype_map.get("isetsu_cd"));
		// 工事希望年月日
		paramCC.put(JKKKojiAnkenConstCC.KOJI_KIBO_YMD, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJI_KIBO_YMD));
		// 解約希望年月日
		paramCC.put(JKKKojiAnkenConstCC.DSL_KIBO_YMD, dslKiboYmdAft);
		// 竣工予定年月日
		paramCC.put(JKKKojiAnkenConstCC.SHUNKO_RSV_YMD, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.SHUNKO_RSV_YMD));
		// 入居予定年月日
		paramCC.put(JKKKojiAnkenConstCC.NYUKYO_RSV_YMD, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.NYUKYO_RSV_YMD));
		// 引渡し予定年月日
		paramCC.put(JKKKojiAnkenConstCC.HIKIWATASHI_RSV_YMD, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.HIKIWATASHI_RSV_YMD));
		// 電力送電予定年月日
		paramCC.put(JKKKojiAnkenConstCC.EPOWER_SODEN_RSV_YMD, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.EPOWER_SODEN_RSV_YMD));
		// 電話連絡希望年月日
		paramCC.put(JKKKojiAnkenConstCC.TEL_RRK_KIBO_YMD, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.TEL_RRK_KIBO_YMD));
		// 電話連絡希望時間帯コード
		paramCC.put(JKKKojiAnkenConstCC.TEL_RRK_KIBO_TIME_CD, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.TEL_RRK_KIBO_TIME_CD));
		// 宅内調査希望アポ期限年月日
		paramCC.put(JKKKojiAnkenConstCC.TAKCHO_KIBO_APO_KIGEN_YMD, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD));
		// 宅内工事希望アポ期限年月日
		paramCC.put(JKKKojiAnkenConstCC.TNKJ_KIBO_APO_KIGEN_YMD, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.TNKJ_KIBO_APO_KIGEN_YMD));
		// 工事アポ連絡先指定コード
		paramCC.put(JKKKojiAnkenConstCC.KOJI_APO_RRKS_SHITEI_CD, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJI_APO_RRKS_SHITEI_CD));
		// 工事アポ連絡先電話番号
		paramCC.put(JKKKojiAnkenConstCC.KOJI_APO_RRKS_TELNO, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJI_APO_RRKS_TELNO));
		// 連絡手段コード
		paramCC.put(JKKKojiAnkenConstCC.RRK_WAY_CD, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.RRK_WAY_CD));
		// 連絡手段補記
		paramCC.put(JKKKojiAnkenConstCC.RRK_WAY_HOKI, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.RRK_WAY_HOKI));
		// 工事案件備考（工事案件連絡事項）
		paramCC.put(JKKKojiAnkenConstCC.KOJIAK_BIKO, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_RRK_JIKO));
		// 工事案件備考1
		paramCC.put(JKKKojiAnkenConstCC.KOJIAK_BIKO_1, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_BIKO_1));
		// 工事案件備考2
		paramCC.put(JKKKojiAnkenConstCC.KOJIAK_BIKO_2, (String)ku0011_a010_map.get(EKU0011A010CBSMsg1List.KOJIAK_BIKO_2));
		// マンション設備システム連携用記事欄
		if (null != ku0011_subtype_map.get("manssbsys_rnki_kijiran"))
		{
			paramCC.put(JKKKojiAnkenConstCC.MANSSBSYS_RNKI_KIJIRAN, (String)ku0011_subtype_map.get("manssbsys_rnki_kijiran"));
		}

		return paramCC;
	}
	// 20150514 ANK-2460-00-00 【MUSe対応】ＭＴの撤去（解約）変更 ADD END
// ANK-4516-00-00 ADD START

	/**
	 * HGW不可フラグリセット判定
	 * <br>
	 * @param param
	 * @param fixedText
	 * @param adchgNo
	 * @param kk0251_a010
	 * @throws Exception 
	 */
	private boolean isResetHGWKknFfg(IRequestParameterReadWrite param, String fixedText, String adchgNo, HashMap<String, Object> kk0251_a010) throws Exception
	{
		if ("1".equals(kk0251_a010.get(EKK0251A010CBSMsg1List.HGW_KKN_FFG)))
		{
			// 住所変更明細(機器提供サービス契約)を検索
			// 
			ArrayList<HashMap<String, Object>> kk2101_b001_list = getAdchgDtlList(param, fixedText, adchgNo, JKKAdchgConstCC.CD01241_KKTK_SVC_KEI_NO);
			if(kk2101_b001_list != null && !kk2101_b001_list.isEmpty()){
				
				// SCリクエストInvokerを取得
				ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
				// マッピングクラス
				JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();

				for (HashMap<String, Object> kk2101_b001 : kk2101_b001_list)
				{
					// 移転元／移転先の機器契約変更番号
					String bfKikiChgNo = JKKStringUtil.nullToBlank((String)kk2101_b001.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO));
					String afKikiChgNo = JKKStringUtil.nullToBlank((String)kk2101_b001.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO));
					
					// 機器引継を判定
					if (!bfKikiChgNo.equals(afKikiChgNo))
					{
						// 引継以外は対象外
						continue;
					}
					
					// 機器契約変更から取得
					HashMap<String, String> condMap = new HashMap<String, String>();
					condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, (String)kk2101_b001.get(EKK2101B001CBSMsg1List.CHG_TG_KEI_NO));
					condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JCCBPCommon.getOpeDate(null));
					HashMap<String, Object> reqMap = mapper.setEKK0341A010( param, fixedText, condMap);
					
					Map<?, ?> resMap = scCall.run( reqMap, keepSesHandle.get());
					HashMap<String , Object>kk0341_a010_map = mapper.getEKK0341A010( param, fixedText, resMap );
					mapper.scResultCheck( param );
					
					if (kk0341_a010_map != null && kk0341_a010_map.size() > 0)
					{
						// 多機能ルータの場合、対象と認定
						if ("R0".equals(kk0341_a010_map.get(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD)))
						{
							return true;
						}
					}
				}
			}
		}
		return false;

	}
// ANK-4516-00-00 ADD START
}