/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKSV0674074MappingCC
*	ソースファイル名：JKKSV0674074MappingCC.java
*	作成者			：富士通
*	日付			：2012年09月05日
*＜機能概要＞
*	マッピングCCです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v9.00.00	2014/04/30  FJ)北谷     ANK-2056-00-00対応
*	v9.01.00	2014/05/19  FJ)星野     IT1-2014-0000158対応
*	v10.00.00   2014/09/17  FJ)北谷     ST-2014-0000153対応
*	v20.00.00	2015/10/20	FJ)星野		【ANK-2643-00-00】 住変時のVA解約処理の見直し対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKAdchgConstCC;
import com.fujitsu.futurity.bp.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.sun.enterprise.tools.common.util.StringUtils;

import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B032CBSMsg1List;

public class JKKSV0674074MappingCC extends AbstractCommonComponent
{
	
	/** 作業マップ名 */
	private static final String CC_WORK_AREA_NAME_MSKM = "JKKAddMskmServiceCCWork";
	
	/**
	 * CCへのマッピング処理を行います
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return
	 * @throws Throwable
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		// 住所変更情報登録ＣＣのMapを取得
		HashMap<String, Object> KKSV0674074ccMap = (HashMap<String, Object>) param.getData("KKSV0674074CC");
		if(KKSV0674074ccMap==null){
			return param;
		}
		
		/** 照会 事前準備 */
		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> adchg_map = (HashMap<String, Object>) KKSV0674074ccMap.get("adchg_map");
		if(adchg_map!=null){
			adchg_map.put("adchg_mskm_no", getMskmWorkMapValue(param, "mskm_no"));
		}
		
		// サービス契約回線内訳情報リストを生成
		ArrayList<HashMap<String, Object>> kei_kais_ucwk_list = new ArrayList<HashMap<String,Object>>();
		HashMap<String, Object> kei_kais_ucwk = new HashMap<String, Object>();
		
		//サービス契約回線内訳登録
		HashMap<String, Object> KKSV0674001SC = (HashMap<String, Object>) param.getData("KKSV0674001SC"); 
		
		if (KKSV0674001SC != null)
		{
			// 払い出されたサービス契約回線内訳番号をmapへ設定
			kei_kais_ucwk.put( "new_kei_kais_ucwk_no", KKSV0674001SC.get( "svc_kei_kaisen_ucwk_no" ) );
			// 登録後の更新年月日時分秒をmapへ設定
			kei_kais_ucwk.put( "svc_kei_upd_dtm_aft", KKSV0674001SC.get( "upd_dtm" ) );
		}
		
		// 生成したサービス契約回線内訳情報リストをparamへ設定
		kei_kais_ucwk_list.add( kei_kais_ucwk );
		KKSV0674074ccMap.put( "kei_kais_ucwk_list", kei_kais_ucwk_list );
		
		/** 新規登録で払い出されたものを格納 */
		// ネット新規のワーク
		HashMap<String, Object> network = (HashMap<String, Object>) param.getMappingWorkArea().get("JKKAddSvcKeiNetCCWork");
		String net_svc_kei = null;
		String net_svc_kei_ucwk = null;
		if(network != null){
			
			net_svc_kei = (String)network.get("svc_kei_no");
			net_svc_kei_ucwk = (String)network.get("svc_kei_ucwk_no");
		}
		
		// 電話新規のワーク
		HashMap<String, Object> telwork = (HashMap<String, Object>) param.getMappingWorkArea().get("JKKAddSvcKeiTelCCWork");
		String tel_svc_kei = null;
		String tel_svc_kei_ucwk = null;
		if(telwork != null){
			
			tel_svc_kei = (String)telwork.get("svc_kei_no");
			tel_svc_kei_ucwk = (String)telwork.get("svc_kei_ucwk_no");
		}
		
		// テレビ新規のワーク
		HashMap<String, Object> tvwork = (HashMap<String, Object>) param.getMappingWorkArea().get("JKKAddSvcKeiTvCCWork");
		String tv_svc_kei = null;
		String tv_svc_kei_ucwk = null;
		if(tvwork != null){
			
			tv_svc_kei = (String)tvwork.get("svc_kei_no");
			tv_svc_kei_ucwk = (String)tvwork.get("svc_kei_ucwk_no");
		}
		
		// 新規番号を設定
		ArrayList<HashMap<String, Object>> svcKeiInfo = (ArrayList<HashMap<String, Object>>) KKSV0674074ccMap.get("adchg_dtl_svc_kei_info");
		HashMap<String, Object> netMap = svcKeiInfo.get(0);
		HashMap<String, Object> telMap = svcKeiInfo.get(1);
		HashMap<String, Object> tvMap = svcKeiInfo.get(2);
		
		if (!StringUtils.isEmpty(net_svc_kei)) {
			netMap.put("new_svc_kei_no", net_svc_kei);
		}
		
		if (!StringUtils.isEmpty(tel_svc_kei)) {
			telMap.put("new_svc_kei_no", tel_svc_kei);
		}
		
		if (!StringUtils.isEmpty(tv_svc_kei)) {
			tvMap.put("new_svc_kei_no", tv_svc_kei);
		}
		
		/** サービス契約内訳 */
		ArrayList<HashMap<String, Object>> adchg_dtl_list_svc_kei_ucwk = (ArrayList<HashMap<String, Object>>)KKSV0674074ccMap.get("adchg_dtl_list_svc_kei_ucwk");
		// ネット
		HashMap<String, Object> netWcwkMap = (HashMap<String, Object>) KKSV0674074ccMap.get("adchg_dtl_map_svc_kei_ucwk_net");
		if(netWcwkMap != null){
			String bf_wcwk = (String)netWcwkMap.get("adchg_dtl_chbf_skbt_no");
			String af_wcwk = (String)netWcwkMap.get("adchg_dtl_chaf_skbt_no");
			
			// 変更前のサービス契約番号を取得
			HashMap<String, Object> svckeimapNet = (HashMap<String, Object>) param.getData("KKSV0674011SC");
			String netsvckei = (String) svckeimapNet.get("svc_kei_no");
			
			if (!StringUtils.isEmpty(net_svc_kei_ucwk)) {
				af_wcwk = net_svc_kei_ucwk;
			} else if (!StringUtils.isEmpty(netsvckei)) {
				
				condMap.clear();
				condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, netsvckei);
				reqMap = mapper.setEKK0161B004(param, fixedText, condMap);
				resMap = scCall.run(reqMap, handle);
				ArrayList<HashMap<String, Object>> kk0161_b004 = mapper.getEKK0161B004(param, fixedText, resMap);
				mapper.scResultCheck(param);
				
				boolean chgFlg = true;
				Iterator<HashMap<String, Object>> kk0161_b004_ite = kk0161_b004.iterator();
				while(kk0161_b004_ite.hasNext()) {

					HashMap<String, Object> svc_kei_ucwk_map = kk0161_b004_ite.next();
					String ucwk = (String)svc_kei_ucwk_map.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
					// サービス契約内訳ステータスを取得
					String ucwk_state = (String)svc_kei_ucwk_map.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
					
					if ("010".equals(ucwk_state) || "020".equals(ucwk_state) || "030".equals(ucwk_state)) {
						
						if (ucwk.equals(bf_wcwk)) {
							chgFlg = false;
							
						} else if (ucwk.equals(af_wcwk)) {
							chgFlg = false;
							
						}
						
						if (chgFlg) {
							af_wcwk = ucwk;
							break;
						}
					}
					
				}
				
			}
			
			if (!StringUtils.isEmpty(bf_wcwk) || !StringUtils.isEmpty(af_wcwk)) {
				netWcwkMap.put("adchg_dtl_chaf_skbt_no", af_wcwk);
				adchg_dtl_list_svc_kei_ucwk.add(netWcwkMap);
			}
		}
		
		// ST-2014-0000153 2014/09/17 add start
		// サービス契約内訳（電話のみ）
		ArrayList<HashMap<String, Object>> adchg_dtl_list_svc_kei_ucwk_tel = new ArrayList<HashMap<String, Object>>();
		// ST-2014-0000153 2014/09/17 add end
		
		// 電話
		ArrayList<HashMap<String, Object>> telWcwkList = (ArrayList<HashMap<String, Object>>)KKSV0674074ccMap.get("adchg_dtl_list_svc_kei_ucwk_tel");
		Iterator<HashMap<String, Object>> svc_kei_ucwk_list_ite = telWcwkList.iterator();
		ArrayList<String> list = new ArrayList<String>();
		// 既存サービス契約内訳リストを作成
		while(svc_kei_ucwk_list_ite.hasNext()) {

			HashMap<String, Object> cur_svc_kei_ucwk = svc_kei_ucwk_list_ite.next();
			String tel_bf_ucwk = (String)cur_svc_kei_ucwk.get("adchg_dtl_chbf_skbt_no");
			if (!StringUtils.isEmpty(tel_bf_ucwk)) {
				list.add(tel_bf_ucwk);
			}
		}
		
		// ST-2014-0000153 2014/09/17 add start
		adchg_dtl_list_svc_kei_ucwk_tel.addAll(telWcwkList);
		ArrayList<HashMap<String, Object>> adchg_dtl_list_svc_kei_ucwk_tel_new = (ArrayList<HashMap<String, Object>>)KKSV0674074ccMap.get("adchg_dtl_list_svc_kei_ucwk_tel_new");
		if(adchg_dtl_list_svc_kei_ucwk_tel_new != null){
			adchg_dtl_list_svc_kei_ucwk_tel.addAll(adchg_dtl_list_svc_kei_ucwk_tel_new);
		}
		// ST-2014-0000153 2014/09/17 add end
		
		// 使用するサービス契約番号を特定。サービス追加→新番、番号追加→旧番
		HashMap<String, Object> svckeimap = (HashMap<String, Object>) param.getData("KKSV0674012SC");
		String telsvckei = null;
		if (!StringUtils.isEmpty(tel_svc_kei)) {
			telsvckei = tel_svc_kei;
		} else {
			telsvckei = (String) svckeimap.get("svc_kei_no");
		}
		
		int i = 0;	// カウンタ
		boolean new_flg = true;
		boolean chg_flg = false;
		
		if (!StringUtils.isEmpty(telsvckei)) {
			
			condMap.clear();
			condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, telsvckei);
// OT-2013-0000311対応 START
// 機能コード：3 でS-IFを呼び出すよう修正
//			reqMap = mapper.setEKK0161B004(param, fixedText, condMap);
			reqMap = mapper.setEKK0161B004(param, fixedText, condMap, JPCModelConstant.FUNC_CD_3);
// OT-2013-0000311対応 END
			resMap = scCall.run(reqMap, handle);
			ArrayList<HashMap<String, Object>> kk0161_b004 = mapper.getEKK0161B004(param, fixedText, resMap);
			mapper.scResultCheck(param);
			
			Iterator<HashMap<String, Object>> kk0161_b004_ite = kk0161_b004.iterator();
			while(kk0161_b004_ite.hasNext()) {

				HashMap<String, Object>teltWcwkMap = new HashMap<String, Object>();	// 格納用マップ
				HashMap<String, Object> svc_kei_ucwk_map = kk0161_b004_ite.next();
				String ucwk = (String)svc_kei_ucwk_map.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
				
// OT-2013-0000311対応 START
				// EKK0161A010 サービス契約内訳一意照会
				condMap.clear();
				condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_UCWK_NO, ucwk);
				condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, "20991231");
				reqMap = mapper.setEKK0161A010( param, fixedText, condMap);
				resMap = scCall.run(reqMap, handle);
				HashMap<String, Object> kk0161_a010_map = mapper.getEKK0161A010(param, fixedText, resMap);
				mapper.scResultCheck(param);
				
				// 継続元内訳番号を取得
				String moto_ucwk = (String)kk0161_a010_map.get(EKK0161A010CBSMsg1List.KEIZK_MT_SVC_KEI_UCWK_NO);
				// サービス契約内訳ステータスを取得
				String ucwk_state = (String)kk0161_a010_map.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_STAT);
// OT-2013-0000311対応 END
				if ("010".equals(ucwk_state) || "020".equals(ucwk_state) || "030".equals(ucwk_state)) {
					
					if (list.size() > 0) {
						new_flg = true;
						chg_flg = false;
						
						for (i = 0; i < list.size(); i ++){
							String kizon_ucwk = list.get(i);
							
							if (ucwk.equals(kizon_ucwk)) {
								new_flg = false;
							}
							if (kizon_ucwk.equals(moto_ucwk)) {
								chg_flg = true;
							}
						}
						
					}
					
					if (new_flg && !chg_flg) {
						teltWcwkMap.put("adchg_dtl_chaf_skbt_no", ucwk);
						adchg_dtl_list_svc_kei_ucwk.add(teltWcwkMap);
						// ST-2014-0000153 2014/09/17 add start
						adchg_dtl_list_svc_kei_ucwk_tel.add(teltWcwkMap);
						// ST-2014-0000153 2014/09/17 add end
					}
					
	// OT-2013-0000311対応 START
					if (chg_flg) {
						telUcwkchg(param, fixedText, handle, ucwk , moto_ucwk);
					}
	// OT-2013-0000311対応 END
				}
			}
		}
		
		// テレビ
		ArrayList<HashMap<String, Object>> tvWcwkList = (ArrayList<HashMap<String, Object>>)KKSV0674074ccMap.get("adchg_dtl_list_svc_kei_ucwk_tv");
		Iterator<HashMap<String, Object>> svc_kei_ucwk_listTv_ite = tvWcwkList.iterator();
		ArrayList<String> listTv = new ArrayList<String>();
		// 既存サービス契約内訳リストを作成
		while(svc_kei_ucwk_listTv_ite.hasNext()) {

			HashMap<String, Object> cur_svc_kei_ucwkTv = svc_kei_ucwk_listTv_ite.next();
			String tv_bf_ucwk = (String)cur_svc_kei_ucwkTv.get("adchg_dtl_chbf_skbt_no");
			if (!StringUtils.isEmpty(tv_bf_ucwk)) {
				listTv.add(tv_bf_ucwk);
			}
		}
		
		// 使用するサービス契約番号を特定。サービス追加→新番、STB追加→旧番
		HashMap<String, Object> svckeimapTv = (HashMap<String, Object>) param.getData("KKSV0674013SC");
		String tvsvckei = null;
		if (!StringUtils.isEmpty(tv_svc_kei)) {
			tvsvckei = tv_svc_kei;
		} else {
			tvsvckei = (String) svckeimapTv.get("svc_kei_no");
		}
		
// IT1-2013-0000112 2013.01.19 Y.MORIMOTO ADD START
		new_flg = true;
// IT1-2013-0000112 2013.01.19 Y.MORIMOTO ADD END
		
		if (!StringUtils.isEmpty(tvsvckei)) {
			
			condMap.clear();
			condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_NO, tvsvckei);
			reqMap = mapper.setEKK0161B004(param, fixedText, condMap);
			resMap = scCall.run(reqMap, handle);
			ArrayList<HashMap<String, Object>> kk0161_b004 = mapper.getEKK0161B004(param, fixedText, resMap);
			mapper.scResultCheck(param);
			
			Iterator<HashMap<String, Object>> kk0161_b004_ite = kk0161_b004.iterator();
			while(kk0161_b004_ite.hasNext()) {

				HashMap<String, Object>tvWcwkMap = new HashMap<String, Object>();	// 格納用マップ
				HashMap<String, Object> svc_kei_ucwk_map = kk0161_b004_ite.next();
				String ucwk = (String)svc_kei_ucwk_map.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
				
				// サービス契約内訳ステータスを取得
				String ucwk_state = (String)svc_kei_ucwk_map.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
				if ("010".equals(ucwk_state) || "020".equals(ucwk_state) || "030".equals(ucwk_state)) {
					
					if (listTv.size() > 0) {
						new_flg = true;
						
						for (i = 0; i < listTv.size(); i ++){
							String kizon_ucwk = listTv.get(i);
							
							if (ucwk.equals(kizon_ucwk)) {
								new_flg = false;
							}
						}
						
					}
					
					if (new_flg) {
						tvWcwkMap.put("adchg_dtl_chaf_skbt_no", ucwk);
						adchg_dtl_list_svc_kei_ucwk.add(tvWcwkMap);
					}
				}
			}
		}
		
		/** 機器提供サービス契約 */
		kikiDtlSet(param, fixedText, handle);
		
		/** 工事案件 */
		
// OM-2013-0002573対応 20130926 星野 MOD START
//		String svcKeiNo = null;
//		String svcKeiNoTv = null;
//		String kojiAkSbtCd = null;
//		String kojiAkNo = null;
//		String kojiAkNoTv = null;
//		
//		// ネット・電話編
//		HashMap<String, Object> workMap = (HashMap<String, Object>) param.getData("KKSV0674008SC");
//		HashMap<String, Object> workMap_bf = (HashMap<String, Object>) param.getData("KKSV0674011SC");
//		if (workMap_bf != null && workMap_bf.containsKey("svc_kei_no")) {
//			svcKeiNo = (String) workMap_bf.get("svc_kei_no");
//		} else if(workMap != null && workMap.containsKey("svc_kei_no")) {
//			svcKeiNo = (String) workMap.get("svc_kei_no");
//		}
//		
//		if (!StringUtils.isEmpty(svcKeiNo)) {
//			// ●工事案件番号の取得
//			condMap.clear();
//			condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO_SVC_KEI_NO, svcKeiNo);
//			reqMap = mapper.setEKU0011B050(param, fixedText, condMap);
//			resMap = scCall.run(reqMap, handle);
//			ArrayList<HashMap<String, Object>> ku0011_b050 = mapper.getEKU0011B050(param, fixedText, resMap);
//			mapper.scResultCheck(param);
//			
//			// ■工事案件番号を抽出し、対象の工事案件情報を取得する。
//			Iterator<HashMap<String, Object>> ku0011_b050Ite = ku0011_b050.iterator();
//			while(ku0011_b050Ite.hasNext())
//			{
//				// カレントの工事案件情報を取得
//				HashMap<String, Object> curKu0011_b050 = ku0011_b050Ite.next();
//				
//				// 工事案件種別コードを取得
//				kojiAkSbtCd = (String) curKu0011_b050.get(EKU0011B050CBSMsg1List.KOJIAK_SBT_CD);
//				
//				if ("002".equals(kojiAkSbtCd) || "004".equals(kojiAkSbtCd)) {
//					// 工事案件番号の取得
//					kojiAkNo = (String) curKu0011_b050.get(EKU0011B050CBSMsg1List.KOJIAK_NO);
//				}
//			}
//		}
//		
//		if (StringUtils.isEmpty(kojiAkNo)) {
//			workMap = (HashMap<String, Object>) param.getData("KKSV0674009SC");
//			workMap_bf = (HashMap<String, Object>) param.getData("KKSV0674012SC");
//			if (workMap_bf != null && workMap_bf.containsKey("svc_kei_no")) {
//				svcKeiNo = (String) workMap_bf.get("svc_kei_no");
//			} else if(workMap != null && workMap.containsKey("svc_kei_no")) {
//				svcKeiNo = (String) workMap.get("svc_kei_no");
//			}
//			
//			if (!StringUtils.isEmpty(svcKeiNo)) {
//				// ●工事案件番号の取得
//				condMap.clear();
//				condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO_SVC_KEI_NO, svcKeiNo);
//				reqMap = mapper.setEKU0011B050(param, fixedText, condMap);
//				resMap = scCall.run(reqMap, handle);
//				ArrayList<HashMap<String, Object>> ku0011_b050 = mapper.getEKU0011B050(param, fixedText, resMap);
//				mapper.scResultCheck(param);
//				
//				// ■工事案件番号を抽出し、対象の工事案件情報を取得する。
//				Iterator<HashMap<String, Object>> ku0011_b050Ite = ku0011_b050.iterator();
//				while(ku0011_b050Ite.hasNext())
//				{
//					// カレントの工事案件情報を取得
//					HashMap<String, Object> curKu0011_b050 = ku0011_b050Ite.next();
//					
//					// 工事案件種別コードを取得
//					kojiAkSbtCd = (String) curKu0011_b050.get(EKU0011B050CBSMsg1List.KOJIAK_SBT_CD);
//					
//					if ("002".equals(kojiAkSbtCd) || "004".equals(kojiAkSbtCd)) {
//						// 工事案件番号の取得
//						kojiAkNo = (String) curKu0011_b050.get(EKU0011B050CBSMsg1List.KOJIAK_NO);
//					}
//				}
//			}
//		}
//		
//		// テレビ編
//		workMap = (HashMap<String, Object>) param.getData("KKSV0674010SC");
//		workMap_bf = (HashMap<String, Object>) param.getData("KKSV0674013SC");
//		if (workMap_bf != null && workMap_bf.containsKey("svc_kei_no")) {
//			svcKeiNoTv = (String) workMap_bf.get("svc_kei_no");
//		} else if(workMap != null && workMap.containsKey("svc_kei_no")) {
//			svcKeiNoTv = (String) workMap.get("svc_kei_no");
//		}
//		
//		if (!StringUtils.isEmpty(svcKeiNoTv)) {
//			// ●工事案件番号の取得
//			condMap.clear();
//			condMap.put(JKKAdchgMapperCC.COND_KEY_KOJIAK_NO_SVC_KEI_NO, svcKeiNoTv);
//			reqMap = mapper.setEKU0011B050(param, fixedText, condMap);
//			resMap = scCall.run(reqMap, handle);
//			ArrayList<HashMap<String, Object>> ku0011_b050 = mapper.getEKU0011B050(param, fixedText, resMap);
//			mapper.scResultCheck(param);
//			
//			// ■工事案件番号を抽出し、対象の工事案件情報を取得する。
//			Iterator<HashMap<String, Object>> ku0011_b050Ite = ku0011_b050.iterator();
//			while(ku0011_b050Ite.hasNext())
//			{
//				// カレントの工事案件情報を取得
//				HashMap<String, Object> curKu0011_b050 = ku0011_b050Ite.next();
//				
//				// 工事案件種別コードを取得
//				kojiAkSbtCd = (String) curKu0011_b050.get(EKU0011B050CBSMsg1List.KOJIAK_SBT_CD);
//				
//				if ("002".equals(kojiAkSbtCd) || "004".equals(kojiAkSbtCd)) {
//					// 工事案件番号の取得
//					kojiAkNoTv = (String) curKu0011_b050.get(EKU0011B050CBSMsg1List.KOJIAK_NO);
//				}
//			}
//		}
		
		// ネット撤去工事
		HashMap<String, Object> netDelKojiMap = (HashMap<String, Object>) param.getData("KKSV0674060CC");
		// 電話撤去工事
		HashMap<String, Object> telDelKojiMap = (HashMap<String, Object>) param.getData("KKSV0674061CC");
		// テレビ撤去工事
		HashMap<String, Object> tvDelKojiMap1 = (HashMap<String, Object>) param.getData("KKSV0674062CC");
		HashMap<String, Object> tvDelKojiMap2 = (HashMap<String, Object>) param.getData("KKSV0674220CC");
		
		String kojiAkNo = "";
		kojiAkNo = getDelKojiAkNo(kojiAkNo, netDelKojiMap);
		kojiAkNo = getDelKojiAkNo(kojiAkNo, telDelKojiMap);
		/* ++++++++++ v20.00.00 ADD START ++++++++++ */
		// 撤去工事依頼（ネット/電話）を行っていない場合
		if( StringUtils.isEmpty(kojiAkNo) ){
			
			// 住所変更紐付け対象工事案件番号取得ＣＣの処理結果Mapを取得
			HashMap<String, Object> KKSV0674292CC = (HashMap<String, Object>)param.getData("KKSV0674292CC");
			if(KKSV0674292CC!=null){
				// 紐付け対象工事案件番号（ネット/電話）
				String himozukeKojiakNoNetTel = (String)KKSV0674292CC.get(JKKAdchgHimozukeKojiakNoGetterCC.HIMOZUKE_KOJIAK_NO_NET_TEL);
				if(!StringUtils.isEmpty(himozukeKojiakNoNetTel)){
					kojiAkNo = himozukeKojiakNoNetTel;
				}
			}
		}
		/* ++++++++++ v20.00.00 ADD END ++++++++++++ */
		
		
		String kojiAkNoTv = "";
		kojiAkNoTv =  getDelKojiAkNo(kojiAkNoTv, tvDelKojiMap1);
		kojiAkNoTv =  getDelKojiAkNo(kojiAkNoTv, tvDelKojiMap2);
		/* ++++++++++ v20.00.00 ADD START ++++++++++ */
		// 撤去工事依頼（テレビ）を行っていない場合
		if( StringUtils.isEmpty(kojiAkNoTv) ){
			
			// 住所変更紐付け対象工事案件番号取得ＣＣの処理結果Mapを取得
			HashMap<String, Object> KKSV0674292CC = (HashMap<String, Object>)param.getData("KKSV0674292CC");
			if(KKSV0674292CC!=null){
				// 紐付け対象工事案件番号（テレビ）
				String himozukeKojiakNoTv = (String)KKSV0674292CC.get(JKKAdchgHimozukeKojiakNoGetterCC.HIMOZUKE_KOJIAK_NO_TV);
				if(!StringUtils.isEmpty(himozukeKojiakNoTv)){
					kojiAkNoTv = himozukeKojiakNoTv;
				}
			}
		}
		/* ++++++++++ v20.00.00 ADD END ++++++++++++ */
// OM-2013-0002573対応 20130926 星野 MOD END
		
// ST1-2013-0000045対応 20130110 星野 ADD START
		// 新設工事分 ネット・電話
		// ネット新設工事
		HashMap<String, Object> netNewKojiMap = (HashMap<String, Object>) param.getData("KKSV0674063CC");
		// 電話新設工事
		HashMap<String, Object> telNewKojiMap = (HashMap<String, Object>) param.getData("KKSV0674064CC");
		// テレビ新設工事
		HashMap<String, Object> tvNewKojiMap1 = (HashMap<String, Object>) param.getData("KKSV0674065CC");
		HashMap<String, Object> tvNewKojiMap2 = (HashMap<String, Object>) param.getData("KKSV0674200CC");
		
		String newKojiAkNoNetTel = "";
		newKojiAkNoNetTel = getNewKojiAkNo(newKojiAkNoNetTel, netNewKojiMap);
		newKojiAkNoNetTel = getNewKojiAkNo(newKojiAkNoNetTel, telNewKojiMap);
		String newKojiAkNoTv = "";
		newKojiAkNoTv =  getNewKojiAkNo(newKojiAkNoTv, tvNewKojiMap1);
		newKojiAkNoTv =  getNewKojiAkNo(newKojiAkNoTv, tvNewKojiMap2);
// ST1-2013-0000045対応 20130110 星野 ADD END
		
		// 設定編
		ArrayList<HashMap<String, Object>> adchg_dtl_list_kojiak = (ArrayList<HashMap<String, Object>>) KKSV0674074ccMap.get("adchg_dtl_list_kojiak");
		Iterator<HashMap<String, Object>> adchg_dtl_list_kojiakIte = adchg_dtl_list_kojiak.iterator();
		while(adchg_dtl_list_kojiakIte.hasNext()) {
			
			HashMap<String, Object> adchg_dtl_list_kojiakMap = adchg_dtl_list_kojiakIte.next();
			String koji_sbt = (String)adchg_dtl_list_kojiakMap.get("adchg_dtl_koji_svc_sbt");
			
			if ("Net_Tel".equals(koji_sbt)) {
				adchg_dtl_list_kojiakMap.put("tkkj_kojiak_no", kojiAkNo);
// ST1-2013-0000045対応 20130110 星野 ADD START
				if(!StringUtils.isEmpty(newKojiAkNoNetTel)){
					adchg_dtl_list_kojiakMap.put("sinsetsu_kojiak_no", newKojiAkNoNetTel);
				}
// ST1-2013-0000045対応 20130110 星野 ADD END
			}
			
			if ("Tv".equals(koji_sbt)) {
				adchg_dtl_list_kojiakMap.put("tkkj_kojiak_no", kojiAkNoTv);
// ST1-2013-0000045対応 20130110 星野 ADD START
				if(!StringUtils.isEmpty(newKojiAkNoTv)){
					adchg_dtl_list_kojiakMap.put("sinsetsu_kojiak_no", newKojiAkNoTv);
				}
// ST1-2013-0000045対応 20130110 星野 ADD END
			}
		}

// ANK-1578-00-00 2013.12.06 T.TORIKAI ADD START
		/** 機器オプションサービス契約 */
// ANK-1578-00-00 2013.12.25 T.TORIKAI MOD START（IT1-2013-0001743）
//		kkopDtlSet(param, handle, fixedText);
		kkopDtlSet(param);
// ANK-1578-00-00 2013.12.25 T.TORIKAI MOD END  （IT1-2013-0001743）
// ANK-1578-00-00 2013.12.06 T.TORIKAI ADD END

		// ANK-2056-00-00 2014/04/28 start
		/** 電話オプションパック */
		// ST-2014-0000153 2014/09/17 mod start
		//telOpPackDtlSet(param, fixedText, handle, telsvckei, adchg_dtl_list_svc_kei_ucwk);
		telOpPackDtlSet(param, fixedText, handle, telsvckei, adchg_dtl_list_svc_kei_ucwk_tel);
		// ST-2014-0000153 2014/09/17 mod end
		// ANK-2056-00-00 2014/04/28 end
		
		return param;
	}

// OM-2013-0002573対応 20130926 星野 ADD START
	private String getDelKojiAkNo(String newKojiAkNo, HashMap<String, Object> delKojiMap) {
		if(delKojiMap!=null){
			if( !StringUtils.isEmpty( (String)delKojiMap.get("new_kojiak_no") ) ){
				newKojiAkNo = (String)delKojiMap.get("new_kojiak_no");
			}
		}
		return newKojiAkNo;
	}
// OM-2013-0002573対応 20130926 星野 ADD END
// ST1-2013-0000045対応 20130110 星野 ADD START
	private String getNewKojiAkNo(String newKojiAkNo, HashMap<String, Object> newKojiMap) {
		if(newKojiMap!=null){
			if( !StringUtils.isEmpty( (String)newKojiMap.get("new_kojiak_no") ) ){
				newKojiAkNo = (String)newKojiMap.get("new_kojiak_no");
			}else if( !StringUtils.isEmpty( (String)newKojiMap.get("haraidashi_kojiak_no") ) ){
				newKojiAkNo = (String)newKojiMap.get("haraidashi_kojiak_no");
			}
		}
		return newKojiAkNo;
	}
// ST1-2013-0000045対応 20130110 星野 ADD END
	
	/**
	 * 作業マップ（申込）の値を取得します。
	 * 
	 * <br>
	 * @param param
	 * @param key
	 * @return 取得した値
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private String getMskmWorkMapValue(IRequestParameterReadWrite param, String key) throws RequestParameterException
	{
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();

		HashMap inMap = null;
		/* 申込作業項目情報 */
		if (workMap != null)
		{
			inMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_MSKM);
		}
		else
		{
			inMap = null;
		}

		String result = null;
		if (inMap != null)
		{
			result = (String)inMap.get(key);
		}

		if ("".equals(result))
		{
			result = null;
		}

		return result;
	}
	

	/**
	 * 住所変更明細に設定する機器提供サービス契約の設定を行います。
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void kikiDtlSet(IRequestParameterReadWrite param, String fixedText, SessionHandle handle) throws Exception {
		
		// 住所変更情報登録ＣＣのMapを取得
		HashMap<String, Object> KKSV0674074ccMap = (HashMap<String, Object>) param.getData("KKSV0674074CC");
		
		/** 照会 事前準備 */
		HashMap<String, String> condMap = new HashMap<String, String>();
		HashMap<String, Object> reqMap;
		Map<?, ?> resMap;
		
		// 住所情報変更初期表示情報取得コモンコンポーネント
		// マッピングクラスインスタンスを取得
		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
		// SCリクエストInvokerを取得
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// 機器の明細リストを取得
		ArrayList<HashMap<String, Object>> targetList = (ArrayList<HashMap<String, Object>>)KKSV0674074ccMap.get("adchg_dtl_list_kktk_svc_kei");
		
		/** 住変後の機器リストを取得 */
		HashMap<String, Object> workMapNet = (HashMap<String, Object>) param.getData("KKSV0674008SC");
		HashMap<String, Object> workMapTel = (HashMap<String, Object>) param.getData("KKSV0674009SC");
		HashMap<String, Object> workMapTv = (HashMap<String, Object>) param.getData("KKSV0674010SC");
		List<HashMap<String, Object>> kk0341_b002_map_list_net = null;
		List<HashMap<String, Object>> kk0341_b002_map_list_tel = null;
		List<HashMap<String, Object>> kk0341_b002_map_list_tv = null;
		List<HashMap<String, Object>> kk0341_b504_map_list = null;
		List<HashMap<String, Object>> kk0341_b504_map_list_old = null;
		
		//サービス契約回線内訳登録（新規分）
		HashMap<String, Object> KKSV0674001SC = (HashMap<String, Object>) param.getData("KKSV0674001SC"); 
		
		String kaisen_ucwk = null;
		if (!StringUtils.isEmpty((String)KKSV0674001SC.get("svc_kei_kaisen_ucwk_no"))) {
			kaisen_ucwk = (String)KKSV0674001SC.get("svc_kei_kaisen_ucwk_no");
		}
		
		//サービス契約回線内訳登録（継続分）
		HashMap<String, Object> adchgMap = (HashMap<String, Object>)KKSV0674074ccMap.get("adchg_map");
		String kaisen_ucwk_old = null;
		if (!StringUtils.isEmpty((String)adchgMap.get("adchg_itnm_svkei_kisuw_no"))) {
			kaisen_ucwk_old = (String)adchgMap.get("adchg_itnm_svkei_kisuw_no");
		}
		
		// ネットサービス分
		if (workMapNet.containsKey("svc_kei_no")) {
			// ・EKK0341B002 機器提供サービス契約一覧照会（サービス契約番号）
			condMap.clear();
			condMap.put("cond_key_svc_kei_no", (String)workMapNet.get("svc_kei_no"));
			reqMap = mapper.setEKK0341B002( param, fixedText, condMap);
			resMap = scCall.run( reqMap, handle);
			kk0341_b002_map_list_net = mapper.getEKK0341B002( param, fixedText, resMap );
			mapper.scResultCheck( param );
		}
		// 電話サービス分
		if (workMapTel.containsKey("svc_kei_no")) {
			// ・EKK0341B002 機器提供サービス契約一覧照会（サービス契約番号）
			condMap.clear();
			condMap.put("cond_key_svc_kei_no", (String)workMapTel.get("svc_kei_no"));
			reqMap = mapper.setEKK0341B002( param, fixedText, condMap);
			resMap = scCall.run( reqMap, handle);
			kk0341_b002_map_list_tel = mapper.getEKK0341B002( param, fixedText, resMap );
			mapper.scResultCheck( param );
		}
		// テレビサービス分
		if (workMapTv.containsKey("svc_kei_no")) {
			// ・EKK0341B002 機器提供サービス契約一覧照会（サービス契約番号）
			condMap.clear();
			condMap.put("cond_key_svc_kei_no", (String)workMapTv.get("svc_kei_no"));
			reqMap = mapper.setEKK0341B002( param, fixedText, condMap);
			resMap = scCall.run( reqMap, handle);
			kk0341_b002_map_list_tv = mapper.getEKK0341B002( param, fixedText, resMap );
			mapper.scResultCheck( param );
		}
		// 回線に紐づく機器(新規分)
		if (!StringUtils.isEmpty(kaisen_ucwk)) {
			// ・EKK0341B504 機器提供サービス契約一覧照会（サービス契約回線内訳番号）
			condMap.clear();
			condMap.put("key_svc_kei_kaisen_ucwk_no", kaisen_ucwk);
			reqMap = mapper.setEKK0341B504( param, fixedText, condMap);
			resMap = scCall.run( reqMap, handle);
			kk0341_b504_map_list = mapper.getEKK0341B504( param, fixedText, resMap );
			mapper.scResultCheck( param );
		}
		// 回線に紐づく機器(従来分)
		if (!StringUtils.isEmpty(kaisen_ucwk_old)) {
			// ・EKK0341B504 機器提供サービス契約一覧照会（サービス契約回線内訳番号）
			condMap.clear();
			condMap.put("key_svc_kei_kaisen_ucwk_no", kaisen_ucwk_old);
			reqMap = mapper.setEKK0341B504( param, fixedText, condMap);
			resMap = scCall.run( reqMap, handle);
			kk0341_b504_map_list_old = mapper.getEKK0341B504( param, fixedText, resMap );
			mapper.scResultCheck( param );
		}
		
		// ネットサービス分
		int i = 0;	//	カウンタ
		boolean newflg = true;		// 新規機器フラグ
		if (kk0341_b002_map_list_net != null) {
			Iterator<HashMap<String, Object>> kk0341_b002_map_list_net_ite = kk0341_b002_map_list_net.iterator();
			while(kk0341_b002_map_list_net_ite.hasNext()) {
				
				newflg = true;	// 	フラグリセット
	
				HashMap<String, Object> afterKikiMap = new HashMap<String, Object>();	// 	格納マップ
				HashMap<String, Object> kikiteikyo_map = kk0341_b002_map_list_net_ite.next();
				String kikiteikyoNo = (String)kikiteikyo_map.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);
				
				// 機器提供サービス契約一意紹介
				condMap.clear();
				condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kikiteikyoNo);
				condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
				reqMap = mapper.setEKK0341B032(param, fixedText, condMap);
				resMap = scCall.run(reqMap, handle);
				List<HashMap<String, Object>> kk0341_b032_map_af = mapper.getEKK0341B032( param, fixedText, resMap );
				mapper.scResultCheck(param);
				
				HashMap<String, Object> kk0341_a010_map = new HashMap<String, Object>();
				if (kk0341_b032_map_af.size() > 0) {
					kk0341_a010_map = kk0341_b032_map_af.get(0);
				}
				
// OM-2014-0000455対応 20140131 星野 ADD START
				// 解約済・キャンセル済は処理対象外
				String kktkSvcKeiStat = (String)kk0341_a010_map.get(EKK0341B032CBSMsg1List.KKTK_SVC_KEI_STAT);
				if("910".equals(kktkSvcKeiStat) || "920".equals(kktkSvcKeiStat)){
					continue;
				}
// OM-2014-0000455対応 20140131 星野 ADD END
				
				String kikichgNo = (String)kk0341_a010_map.get(EKK0341A010CBSMsg1List.KIKI_CHG_NO);
				for (i = 0; i < targetList.size(); i ++) {
					HashMap<String, Object> exsistKikiMap = targetList.get(i);
					String targetNo = (String)exsistKikiMap.get("adchg_dtl_chg_tg_kei_no");
					String dtlafNo = (String)exsistKikiMap.get("adchg_dtl_chaf_skbt_no");
					
					// 明細リストにあり、変更後識別番号があるものは引継ぎ対象
					if ( kikiteikyoNo.equals(targetNo) ) {
						if( !StringUtils.isEmpty(dtlafNo) ){
							exsistKikiMap.put("adchg_dtl_chaf_skbt_no", kikichgNo);
						}
						newflg = false;
					}
				}
				
				// リストにヒットしなかった場合は新規機器
				if (newflg) {
					afterKikiMap.put("adchg_dtl_chg_tg_kei_no", kikiteikyoNo);
					afterKikiMap.put("adchg_dtl_chaf_skbt_no", kikichgNo);
					targetList.add(afterKikiMap);
				}
				
			}
		}
		// 電話サービス分
		if (kk0341_b002_map_list_tel != null) {
			Iterator<HashMap<String, Object>> kk0341_b002_map_list_tel_ite = kk0341_b002_map_list_tel.iterator();
			while(kk0341_b002_map_list_tel_ite.hasNext()) {
				
				newflg = true;	// 	フラグリセット
	
				HashMap<String, Object> afterKikiMap = new HashMap<String, Object>();	// 	格納マップ
				HashMap<String, Object> kikiteikyo_map = kk0341_b002_map_list_tel_ite.next();
				String kikiteikyoNo = (String)kikiteikyo_map.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);
				
				// 機器提供サービス契約一意紹介
				condMap.clear();
				condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kikiteikyoNo);
				condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
				reqMap = mapper.setEKK0341B032(param, fixedText, condMap);
				resMap = scCall.run(reqMap, handle);
				List<HashMap<String, Object>> kk0341_b032_map_af = mapper.getEKK0341B032( param, fixedText, resMap );
				mapper.scResultCheck(param);
				
				HashMap<String, Object> kk0341_a010_map = new HashMap<String, Object>();
				if (kk0341_b032_map_af.size() > 0) {
					kk0341_a010_map = kk0341_b032_map_af.get(0);
				}
				
// OM-2014-0000455対応 20140131 星野 ADD START
				// 解約済・キャンセル済は処理対象外
				String kktkSvcKeiStat = (String)kk0341_a010_map.get(EKK0341B032CBSMsg1List.KKTK_SVC_KEI_STAT);
				if("910".equals(kktkSvcKeiStat) || "920".equals(kktkSvcKeiStat)){
					continue;
				}
// OM-2014-0000455対応 20140131 星野 ADD END
				String kikichgNo = (String)kk0341_a010_map.get(EKK0341A010CBSMsg1List.KIKI_CHG_NO);
				for (i = 0; i < targetList.size(); i ++) {
					HashMap<String, Object> exsistKikiMap = targetList.get(i);
					String targetNo = (String)exsistKikiMap.get("adchg_dtl_chg_tg_kei_no");
					String dtlafNo = (String)exsistKikiMap.get("adchg_dtl_chaf_skbt_no");
					
					// 明細リストにあり、変更後識別番号があるものは引継ぎ対象
					if( kikiteikyoNo.equals(targetNo) ){
						if( !StringUtils.isEmpty(dtlafNo) ) {
							exsistKikiMap.put("adchg_dtl_chaf_skbt_no", kikichgNo);
						}
						newflg = false;
					}
				}
				
				// リストにヒットしなかった場合は新規機器
				if (newflg) {
					afterKikiMap.put("adchg_dtl_chg_tg_kei_no", kikiteikyoNo);
					afterKikiMap.put("adchg_dtl_chaf_skbt_no", kikichgNo);
					targetList.add(afterKikiMap);
				}
				
			}
		}
		// テレビサービス分
		if (kk0341_b002_map_list_tv != null) {
			Iterator<HashMap<String, Object>> kk0341_b002_map_list_tv_ite = kk0341_b002_map_list_tv.iterator();
			while(kk0341_b002_map_list_tv_ite.hasNext()) {
				
				newflg = true;	// 	フラグリセット
	
				HashMap<String, Object> afterKikiMap = new HashMap<String, Object>();	// 	格納マップ
				HashMap<String, Object> kikiteikyo_map = kk0341_b002_map_list_tv_ite.next();
				String kikiteikyoNo = (String)kikiteikyo_map.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);
				
				// 機器提供サービス契約一意紹介
				condMap.clear();
				condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kikiteikyoNo);
				condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
				reqMap = mapper.setEKK0341B032(param, fixedText, condMap);
				resMap = scCall.run(reqMap, handle);
				List<HashMap<String, Object>> kk0341_b032_map_af = mapper.getEKK0341B032( param, fixedText, resMap );
				mapper.scResultCheck(param);
				
				HashMap<String, Object> kk0341_a010_map = new HashMap<String, Object>();
				if (kk0341_b032_map_af.size() > 0) {
					kk0341_a010_map = kk0341_b032_map_af.get(0);
				}
				
// OM-2014-0000455対応 20140131 星野 ADD START
				// 解約済・キャンセル済は処理対象外
				String kktkSvcKeiStat = (String)kk0341_a010_map.get(EKK0341B032CBSMsg1List.KKTK_SVC_KEI_STAT);
				if("910".equals(kktkSvcKeiStat) || "920".equals(kktkSvcKeiStat)){
					continue;
				}
// OM-2014-0000455対応 20140131 星野 ADD END
				String kikichgNo = (String)kk0341_a010_map.get(EKK0341A010CBSMsg1List.KIKI_CHG_NO);
				for (i = 0; i < targetList.size(); i ++) {
					HashMap<String, Object> exsistKikiMap = targetList.get(i);
					String targetNo = (String)exsistKikiMap.get("adchg_dtl_chg_tg_kei_no");
					String dtlafNo = (String)exsistKikiMap.get("adchg_dtl_chaf_skbt_no");
					
					// 明細リストにあり、変更後識別番号があるものは引継ぎ対象
					if( kikiteikyoNo.equals(targetNo) ){
						if( !StringUtils.isEmpty(dtlafNo) ) {
							exsistKikiMap.put("adchg_dtl_chaf_skbt_no", kikichgNo);
						}
						newflg = false;
					}
				}
				
				// リストにヒットしなかった場合は新規機器
				if (newflg) {
					afterKikiMap.put("adchg_dtl_chg_tg_kei_no", kikiteikyoNo);
					afterKikiMap.put("adchg_dtl_chaf_skbt_no", kikichgNo);
					targetList.add(afterKikiMap);
				}
				
			}
		}
		// 回線に紐づく機器（新規分）
		if (kk0341_b504_map_list != null) {
			Iterator<HashMap<String, Object>> kk0341_b504_map_list_ite = kk0341_b504_map_list.iterator();
			while(kk0341_b504_map_list_ite.hasNext()) {
				
				newflg = true;	// 	フラグリセット
	
				HashMap<String, Object> afterKikiMap = new HashMap<String, Object>();	// 	格納マップ
				HashMap<String, Object> kikiteikyo_map = kk0341_b504_map_list_ite.next();
				String kikiteikyoNo = (String)kikiteikyo_map.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);
				
				// 機器提供サービス契約一意紹介
				condMap.clear();
				condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kikiteikyoNo);
				condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
				reqMap = mapper.setEKK0341B032(param, fixedText, condMap);
				resMap = scCall.run(reqMap, handle);
				List<HashMap<String, Object>> kk0341_b032_map_af = mapper.getEKK0341B032(param, fixedText, resMap);
				mapper.scResultCheck(param);
				
				HashMap<String, Object> kk0341_a010_map = new HashMap<String, Object>();
				if (kk0341_b032_map_af.size() > 0) {
					kk0341_a010_map = kk0341_b032_map_af.get(0);
				}
				
// OM-2014-0000455対応 20140131 星野 ADD START
				// 解約済・キャンセル済は処理対象外
				String kktkSvcKeiStat = (String)kk0341_a010_map.get(EKK0341B032CBSMsg1List.KKTK_SVC_KEI_STAT);
				if("910".equals(kktkSvcKeiStat) || "920".equals(kktkSvcKeiStat)){
					continue;
				}
// OM-2014-0000455対応 20140131 星野 ADD END
				String kikichgNo = (String)kk0341_a010_map.get(EKK0341A010CBSMsg1List.KIKI_CHG_NO);
				for (i = 0; i < targetList.size(); i ++) {
					HashMap<String, Object> exsistKikiMap = targetList.get(i);
					String targetNo = (String)exsistKikiMap.get("adchg_dtl_chg_tg_kei_no");
					String dtlafNo = (String)exsistKikiMap.get("adchg_dtl_chaf_skbt_no");
					
					// 明細リストにあり、変更後識別番号があるものは引継ぎ対象
					if( kikiteikyoNo.equals(targetNo) ){
						if( !StringUtils.isEmpty(dtlafNo) ){
							exsistKikiMap.put("adchg_dtl_chaf_skbt_no", kikichgNo);
						}
						newflg = false;
					}
				}
				
				// リストにヒットしなかった場合は新規機器
				if (newflg) {
					afterKikiMap.put("adchg_dtl_chg_tg_kei_no", kikiteikyoNo);
					afterKikiMap.put("adchg_dtl_chaf_skbt_no", kikichgNo);
					targetList.add(afterKikiMap);
				}
				
			}
		}
		// 回線に紐づく機器（従来分）
		if (kk0341_b504_map_list_old != null) {
			Iterator<HashMap<String, Object>> kk0341_b504_map_list_ite = kk0341_b504_map_list_old.iterator();
			while(kk0341_b504_map_list_ite.hasNext()) {
				
				newflg = true;	// 	フラグリセット
	
				HashMap<String, Object> afterKikiMap = new HashMap<String, Object>();	// 	格納マップ
				HashMap<String, Object> kikiteikyo_map = kk0341_b504_map_list_ite.next();
				String kikiteikyoNo = (String)kikiteikyo_map.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);
				
				// 機器提供サービス契約一意紹介
				condMap.clear();
				condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kikiteikyoNo);
				condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
				reqMap = mapper.setEKK0341B032(param, fixedText, condMap);
				resMap = scCall.run(reqMap, handle);
				List<HashMap<String, Object>> kk0341_b032_map_af = mapper.getEKK0341B032(param, fixedText, resMap);
				mapper.scResultCheck(param);
				
				HashMap<String, Object> kk0341_a010_map = new HashMap<String, Object>();
				if (kk0341_b032_map_af.size() > 0) {
					kk0341_a010_map = kk0341_b032_map_af.get(0);
				}
				
// OM-2014-0000455対応 20140131 星野 ADD START
				// 解約済・キャンセル済は処理対象外
				String kktkSvcKeiStat = (String)kk0341_a010_map.get(EKK0341B032CBSMsg1List.KKTK_SVC_KEI_STAT);
				if("910".equals(kktkSvcKeiStat) || "920".equals(kktkSvcKeiStat)){
					continue;
				}
// OM-2014-0000455対応 20140131 星野 ADD END
				String kikichgNo = (String)kk0341_a010_map.get(EKK0341A010CBSMsg1List.KIKI_CHG_NO);
				for (i = 0; i < targetList.size(); i ++) {
					HashMap<String, Object> exsistKikiMap = targetList.get(i);
					String targetNo = (String)exsistKikiMap.get("adchg_dtl_chg_tg_kei_no");
					String dtlafNo = (String)exsistKikiMap.get("adchg_dtl_chaf_skbt_no");
					
					// 明細リストにあり、変更後識別番号があるものは引継ぎ対象
					if( kikiteikyoNo.equals(targetNo) ){
						if( !StringUtils.isEmpty(dtlafNo) ){
							exsistKikiMap.put("adchg_dtl_chaf_skbt_no", kikichgNo);
						}
						newflg = false;
					}
				}
				
				// リストにヒットしなかった場合は新規機器
				if (newflg) {
					afterKikiMap.put("adchg_dtl_chg_tg_kei_no", kikiteikyoNo);
					afterKikiMap.put("adchg_dtl_chaf_skbt_no", kikichgNo);
					targetList.add(afterKikiMap);
				}
				
			}
		}
		
// IT1-2013-0000956対応 20130417 星野 ADD START
		// 一覧照会で取得できなかった分の一意照会
		for (i = 0; i < targetList.size(); i ++) {
			HashMap<String, Object> exsistKikiMap = targetList.get(i);
			String targetNo = (String)exsistKikiMap.get("adchg_dtl_chg_tg_kei_no");
			String dtlbfNo = (String)exsistKikiMap.get("adchg_dtl_chbf_skbt_no");
			String dtlafNo = (String)exsistKikiMap.get("adchg_dtl_chaf_skbt_no");
			
			// 初期設定のままのものについてはもう一度一意照会
			if( !StringUtils.isEmpty(dtlbfNo) && !StringUtils.isEmpty(dtlafNo) && dtlbfNo.equals(dtlafNo) ){
				
				// 機器提供サービス契約一意紹介
				condMap.clear();
				condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, targetNo);
				condMap.put(JKKAdchgMapperCC.COND_KEY_OPEDATE, JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD);
				reqMap = mapper.setEKK0341B032(param, fixedText, condMap);
				resMap = scCall.run(reqMap, handle);
				List<HashMap<String, Object>> kk0341_b032_map_af = mapper.getEKK0341B032(param, fixedText, resMap);
				mapper.scResultCheck(param);
				
				if (kk0341_b032_map_af != null && kk0341_b032_map_af.size() > 0) {
					HashMap<String, Object> kk0341_a010_map = kk0341_b032_map_af.get(0);
					String kikichgNo = (String)kk0341_a010_map.get(EKK0341A010CBSMsg1List.KIKI_CHG_NO);
					
					if(!StringUtils.isEmpty(kikichgNo)){
						exsistKikiMap.put("adchg_dtl_chaf_skbt_no", kikichgNo);
					}
				}

			}
		}		
// IT1-2013-0000956対応 20130417 星野 ADD END
	}
	
// OT-2013-0000311対応 START
	/**
	 * 電話の内訳が解約/新規されていた場合に明細を再設定する。
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void telUcwkchg(IRequestParameterReadWrite param, String fixedText, SessionHandle handle, String newUcwk, String oldUcwk) throws Exception {
		
		// 住所変更情報登録ＣＣのMapを取得
		HashMap<String, Object> KKSV0674074ccMap = (HashMap<String, Object>) param.getData("KKSV0674074CC");
		
		/** サービス契約内訳 */
		ArrayList<HashMap<String, Object>> adchg_dtl_list_svc_kei_ucwk = (ArrayList<HashMap<String, Object>>)KKSV0674074ccMap.get("adchg_dtl_list_svc_kei_ucwk");
		
		Iterator<HashMap<String, Object>> svc_kei_ucwk_list_ite = adchg_dtl_list_svc_kei_ucwk.iterator();
		
		// 既存サービス契約内訳リストを作成
		while(svc_kei_ucwk_list_ite.hasNext()) {

			HashMap<String, Object> cur_svc_kei_ucwk = svc_kei_ucwk_list_ite.next();
			String tel_bf_ucwk = (String)cur_svc_kei_ucwk.get("adchg_dtl_chbf_skbt_no");
			if (oldUcwk.equals(tel_bf_ucwk)) {
				cur_svc_kei_ucwk.put("adchg_dtl_chaf_skbt_no", newUcwk);
				
			}
		}
	}
// OT-2013-0000311対応 END

// ANK-1578-00-00 2013.12.25 T.TORIKAI DEL START（IT1-2013-0001743）
// ANK-1578-00-00 2013.12.06 T.TORIKAI メソッド追加
//	/**
//	 * 住所変更明細：機器オプションサービス契約のパラメータを更新する
//	 * 
//	 * @param param
//	 * @param handle
//	 * @param fixedText
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private void kkopDtlSet(IRequestParameterReadWrite param, SessionHandle handle, String fixedText) throws Throwable {
//
//		// 住所変更情報登録ＣＣのパラメータを取得
//		HashMap<String, Object> paramKKSV0674074CC = (HashMap<String, Object>) param.getData("KKSV0674074CC");
//		if (paramKKSV0674074CC == null) {
//			return;
//		}
//		// 住所変更明細：機器オプションサービス契約の一覧を取得
//		ArrayList<HashMap<String, Object>> kkopList = (ArrayList<HashMap<String, Object>>)paramKKSV0674074CC.get("adchg_dtl_list_kkop_svc_kei");
//
//		// 転居先のサービス契約回線内訳番号を取得
//		HashMap<String, Object> resultKKSV0674001SC = (HashMap<String, Object>) param.getData("KKSV0674001SC"); 
//		if (resultKKSV0674001SC == null) {
//			return;
//		}
//		String svcKeiKaisenUcwkNo = (String)resultKKSV0674001SC.get("svc_kei_kaisen_ucwk_no");
//		if (StringUtils.isEmpty(svcKeiKaisenUcwkNo)) {
//			return;
//		}
//
//		// 転居先の回線に紐付く機器一覧取得
//		ArrayList<HashMap<String, Object>> listEKK0341B504 = getEKK0341B504(param, fixedText, handle, svcKeiKaisenUcwkNo);
//		if (listEKK0341B504 == null || listEKK0341B504.isEmpty()) {
//			return;
//		}
//		for (HashMap<String, Object> mapEKK0341B504 : listEKK0341B504) {
//			// 宅内機器種別コード
//			String taknkikiSbtCd = (String)mapEKK0341B504.get(EKK0341B504CBSMsg1List.TAKNKIKI_SBT_CD);
//			if (!"R0".equals(taknkikiSbtCd)) {
//				continue;	// 多機能ルータ以外はスキップ
//			}
//			// 機器提供サービス契約番号
//			String kktkSvcKeiNo = (String)mapEKK0341B504.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO);
//			// 機器オプション取得
//			ArrayList<HashMap<String, Object>> listEKK2811B010 = getEKK2811B010(param, fixedText, handle, kktkSvcKeiNo);
//			if (listEKK2811B010 == null || listEKK2811B010.isEmpty()) {
//				continue;	// 機器オプションなしのためスキップ
//			}
//			for (HashMap<String, Object> mapEKK2811B010 : listEKK2811B010) {
//				// 機器オプションサービス契約番号
//				String kkopSvcKeiNo = (String)mapEKK2811B010.get(EKK2811B504CBSMsg1List.KKOP_SVC_KEI_NO);
//				boolean existFlag = false;
//				for (HashMap<String, Object> kkopMap : kkopList) {
//					String oldNo = (String)kkopMap.get("adchg_dtl_chbf_skbt_no");	// 転居元
//					if (kkopSvcKeiNo.equals(oldNo)) {
//						existFlag = true;
//						continue;	// 機器オプションが転居元にあり
//					}
//					String newNo = (String)kkopMap.get("adchg_dtl_chaf_skbt_no");	// 転居先
//					if (kkopSvcKeiNo.equals(newNo)) {
//						existFlag = true;
//						continue;	// 機器オプションが転居先にあり
//					}
//				}
//				if (existFlag) {
//					continue;	// 追加された機器オプションではない
//				}
//				// 住所変更明細：機器オプションを追加
//				HashMap<String, Object> adchgDtlMap = new HashMap<String, Object>();
//				adchgDtlMap.put("adchg_dtl_chg_tg_kei_no", kktkSvcKeiNo);
//				adchgDtlMap.put("adchg_dtl_chbf_skbt_no", null);
//				adchgDtlMap.put("adchg_dtl_chaf_skbt_no", kkopSvcKeiNo);
//				kkopList.add(adchgDtlMap);
//			}
//		}
//	}
// ANK-1578-00-00 2013.12.25 T.TORIKAI DEL END  （IT1-2013-0001743）

// ANK-1578-00-00 2013.12.25 T.TORIKAI DEL START（IT1-2013-0001743）
//// ANK-1578-00-00 2013.12.06 T.TORIKAI メソッド追加
//	/**
//	 * EKK0341B504 機器提供サービス契約一覧照会<br>
//	 * 回線に紐付く機器の一覧を取得する
//	 * 
//	 * @param param
//	 * @param fixedText
//	 * @param handle
//	 * @param svcKeiKaisenUcwkNo
//	 * @return
//	 * @throws Throwable
//	 */
//	private ArrayList<HashMap<String, Object>> getEKK0341B504(IRequestParameterReadWrite param, String fixedText, SessionHandle handle, String svcKeiKaisenUcwkNo) throws Throwable {
//
//		// マッピングクラスインスタンスを取得
//		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
//		// SCリクエストInvokerを取得
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//
//		// EKK0341B504 機器提供サービス契約一覧照会
//		HashMap<String, String> condMap = new HashMap<String, String>();
//		condMap.put("key_svc_kei_kaisen_ucwk_no", svcKeiKaisenUcwkNo);
//		HashMap<String, Object> reqMap = mapper.setEKK0341B504(param, fixedText, condMap);
//
//		Map<?, ?> resMap = scCall.run( reqMap, handle);
//		ArrayList<HashMap<String, Object>> listEKK0341B504 = mapper.getEKK0341B504(param, fixedText, resMap );
//		mapper.scResultCheck( param );
//		
//		return listEKK0341B504;
//	}
// ANK-1578-00-00 2013.12.25 T.TORIKAI DEL END  （IT1-2013-0001743）

// ANK-1578-00-00 2013.12.25 T.TORIKAI DEL START（IT1-2013-0001743）
//// ANK-1578-00-00 2013.12.06 T.TORIKAI メソッド追加
//	/**
//	 * EKK2811B010 機器オプションサービス契約一覧照会<br>
//	 * 機器提供サービス契約に紐付く機器オプションの一覧を取得する
//	 * 
//	 * @param param
//	 * @param fixedText
//	 * @param handle
//	 * @param svcKeiKaisenUcwkNo
//	 * @return
//	 * @throws Throwable
//	 */
//	private ArrayList<HashMap<String, Object>> getEKK2811B010(IRequestParameterReadWrite param, String fixedText, SessionHandle handle, String kktkSvcKeiNo) throws Throwable {
//
//		// マッピングクラスインスタンスを取得
//		JKKAdchgMapperCC mapper = JKKAdchgMapperCC.getInstance();
//		// SCリクエストInvokerを取得
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//
//		// EKK2811B010 機器オプションサービス契約一覧照会
//		HashMap<String, String> condMap = new HashMap<String, String>();
//		condMap.put(JKKAdchgMapperCC.COND_KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
//		HashMap<String, Object> reqMap = mapper.setEKK2811B010(param, fixedText, condMap);
//
//		Map<?, ?> resMap = scCall.run( reqMap, handle);
//		ArrayList<HashMap<String, Object>> listEKK2811B010 = mapper.getEKK2811B010(param, fixedText, resMap);
//		mapper.scResultCheck( param );
//		
//		return listEKK2811B010;
//	}
// ANK-1578-00-00 2013.12.25 T.TORIKAI DEL END  （IT1-2013-0001743）

// ANK-1578-00-00 2013.12.25 T.TORIKAI メソッド追加（IT1-2013-0001743）
	/**
	 * 住所変更明細：機器オプションサービス契約のパラメータを設定する
	 * @param param
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void kkopDtlSet(IRequestParameterReadWrite param) throws Throwable {

		// 作業領域を取得
		Map workMap = param.getMappingWorkArea();
		if (workMap == null) {
			return;	
		}
		// 機器オプション情報変更CCの作業領域を取得
		Map<String, Object> ccWorkMap = (Map<String, Object>)workMap.get(JKKAdchgConstCC.CC_WORK_AREA_NAME_KKOP);
		if (ccWorkMap == null) {
			return;
		}
		// 機器オプション情報変更CCの処理結果を取得
		List<Map<String, String>> ccResultList = (List<Map<String, String>>)ccWorkMap.get(JKKAdchgKkopInfoChgCC.ADCHG_DTL_KKOP_LIST);
		if (ccResultList == null) {
			return;
		}

		// 住変明細：機器オプションサービス契約を作成
		List<Map<String, String>> adchgDtlKkopList = new ArrayList<Map<String, String>>();
		for (Map<String, String> kkopInfo : ccResultList) {
			String motoMultiRouterNo = kkopInfo.get(JKKAdchgKkopInfoChgCC.MOTO_MULTI_ROUTER_KKTK_SVC_KEI_NO);
			String sakiMultiRouterNo = kkopInfo.get(JKKAdchgKkopInfoChgCC.SAKI_MULTI_ROUTER_KKTK_SVC_KEI_NO);
			String motokkopSvcKeiNo = kkopInfo.get(JKKAdchgKkopInfoChgCC.MOTO_KKOP_SVC_KEI_NO);
			String sakikkopSvcKeiNo = kkopInfo.get(JKKAdchgKkopInfoChgCC.SAKI_KKOP_SVC_KEI_NO);

			Map<String, String> adchgDtlKkop = new HashMap<String, String>();
			adchgDtlKkop.put("adchg_dtl_chbf_skbt_no", motokkopSvcKeiNo);	// 変更前識別番号
			adchgDtlKkop.put("adchg_dtl_chaf_skbt_no", sakikkopSvcKeiNo);	// 変更後識別番号
			if (StringUtils.isEmpty(sakikkopSvcKeiNo)) {
				// 転居先に機器オプション無し
				adchgDtlKkop.put("adchg_dtl_chg_tg_kei_no", motoMultiRouterNo);
			} else {
				// 転居先に機器オプション有り
				adchgDtlKkop.put("adchg_dtl_chg_tg_kei_no", sakiMultiRouterNo);
			}
			adchgDtlKkopList.add(adchgDtlKkop);
		}

		// 住所変更情報登録ＣＣのパラメータを取得
		HashMap<String, Object> paramKKSV0674074CC = (HashMap<String, Object>) param.getData("KKSV0674074CC");
		if (paramKKSV0674074CC == null) {
			return;
		}
		paramKKSV0674074CC.put("adchg_dtl_list_kkop_svc_kei", adchgDtlKkopList);
	}
	
	// ANK-2056-00-00 2014/04/28 start
	/**
	 * 住所変更明細：電話オプションパックのパラメータを設定する
	 * @param param
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void telOpPackDtlSet(IRequestParameterReadWrite param, String fixedText, SessionHandle handle, 
			String tel_svc_kei, ArrayList<HashMap<String, Object>> adchg_dtl_list_svc_kei_ucwk) throws Throwable {

		// 住所変更情報登録ＣＣのパラメータを取得
		HashMap<String, Object> paramKKSV0674074CC = (HashMap<String, Object>) param.getData("KKSV0674074CC");
		if (paramKKSV0674074CC == null) {
			return;
		}
		// 電話オプションパック情報変更CCの作業領域を取得
		ArrayList<HashMap<String, Object>> opPackList = (ArrayList<HashMap<String, Object>>)paramKKSV0674074CC.get(JKKAdchgConstCC.PARAM_KEY_ADCHG_DTL_LIST_OP_PAC);
		if (opPackList == null || opPackList.size()==0) {
			return;
		}
		
		// 住変明細：電話オプションパックを作成
		List<Map<String, String>> adchgDtlOpPacList = new ArrayList<Map<String, String>>();

		//新しくできたサービス契約内訳について
		for(int i=0; i<adchg_dtl_list_svc_kei_ucwk.size(); i++){
			String adchg_dtl_chbf_skbt_no = (String)adchg_dtl_list_svc_kei_ucwk.get(i).get("adchg_dtl_chbf_skbt_no");
			String adchg_dtl_chaf_skbt_no = (String)adchg_dtl_list_svc_kei_ucwk.get(i).get("adchg_dtl_chaf_skbt_no");
			if(StringUtils.isEmpty(adchg_dtl_chbf_skbt_no) && !StringUtils.isEmpty(adchg_dtl_chaf_skbt_no)){
				ArrayList<HashMap<String, Object>> wribSvcKeiList = getTelSelectOpPack(handle, param,
						tel_svc_kei, adchg_dtl_chaf_skbt_no);
				if(wribSvcKeiList != null && wribSvcKeiList.size()>0){
					String wribSvcKeiNo = (String)wribSvcKeiList.get(0).get("wrib_svc_kei_no");

					Map<String, String> adchgDtlOpPac = new HashMap<String, String>();
					adchgDtlOpPac.put("adchg_dtl_chbf_skbt_no", "");	// 変更前割引サービス契約番号
					adchgDtlOpPac.put("adchg_dtl_chaf_skbt_no", wribSvcKeiNo);	// 変更後割引サービス契約番号
					adchgDtlOpPacList.add(adchgDtlOpPac);
				}
			}
		}
		
		//引継(そのまま)あるいは変更あるいは解約のサービス契約内訳について
		for (Map<String, Object> opPacInfo : opPackList) {
			String motoSvcKeiUcwkNo = (String)opPacInfo.get("adchg_dtl_bf_svc_kei_ucwk_no");
			String adchg_dtl_chbf_pack_skcd = (String)opPacInfo.get("adchg_dtl_chbf_pack_skcd");
			String adchg_dtl_chaf_pack_skcd = (String)opPacInfo.get("adchg_dtl_chaf_pack_skcd");
			
			Map<String, String> adchgDtlOpPac = new HashMap<String, String>();
			if("0".equals(adchg_dtl_chbf_pack_skcd) && "0".equals(adchg_dtl_chaf_pack_skcd)){
				//なし→なし
				continue;
			}
			
			ArrayList<HashMap<String, Object>> wribSvcKeiList = getTelSelectOpPack(handle, param,
					tel_svc_kei, motoSvcKeiUcwkNo);
			
			if("0".equals(adchg_dtl_chaf_pack_skcd)){
				//解約
				adchgDtlOpPac.put("adchg_dtl_chbf_skbt_no", (String)wribSvcKeiList.get(0).get("wrib_svc_kei_no"));	// 変更前割引サービス契約番号
				adchgDtlOpPac.put("adchg_dtl_chaf_skbt_no", "");	// 変更後割引サービス契約番号
			}else{
				//継続あるいは変更
				String motoWribSvcKeiNo = "";
				String sakiWribSvcKeiNo = "";
				for(int j=0; j<wribSvcKeiList.size(); j++){
					if(adchg_dtl_chbf_pack_skcd.equals(wribSvcKeiList.get(j).get("pack_div"))){
						motoWribSvcKeiNo = (String)wribSvcKeiList.get(j).get("wrib_svc_kei_no");
					}
					if(adchg_dtl_chaf_pack_skcd.equals(wribSvcKeiList.get(j).get("pack_div"))){
						sakiWribSvcKeiNo = (String)wribSvcKeiList.get(j).get("wrib_svc_kei_no");
					}
				}
				if((!"".equals(motoWribSvcKeiNo) && !"".equals(sakiWribSvcKeiNo))
					||("".equals(motoWribSvcKeiNo) && !"".equals(sakiWribSvcKeiNo))){  //←オプションは持っていたけどパックだけ付けたとき
					adchgDtlOpPac.put("adchg_dtl_chbf_skbt_no", motoWribSvcKeiNo);	// 変更前割引サービス契約番号
					adchgDtlOpPac.put("adchg_dtl_chaf_skbt_no", sakiWribSvcKeiNo);	// 変更後割引サービス契約番号
				}
			}
			// IT1-2014-0000158対応 20140519 星野 MOD START			
			if(StringUtils.isEmpty(adchgDtlOpPac.get("adchg_dtl_chbf_skbt_no")) && StringUtils.isEmpty(adchgDtlOpPac.get("adchg_dtl_chaf_skbt_no")) ){
				continue;
			}
			else{
				adchgDtlOpPacList.add(adchgDtlOpPac);
			}
			// IT1-2014-0000158対応 20140519 星野 MOD END
		}

		// 住所変更情報登録ＣＣのパラメータを置き換え
		paramKKSV0674074CC.put(JKKAdchgConstCC.PARAM_KEY_ADCHG_DTL_LIST_OP_PAC, adchgDtlOpPacList);
	}
	
	/**
	 * 電話セレクトオプションパック操作CCでパック情報を取得
	 * 
	 * @param param
	 * @param fixedText
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> getTelSelectOpPack(SessionHandle handle, IRequestParameterReadWrite param, 
			String svc_kei_no, String svc_kei_ucwk_no) throws Throwable {
		
// IT1-2014-0000158対応 20140519 星野 ADD START
		// 必須パラメータ未設定の場合は空リストを返却
		if(StringUtils.isEmpty(svc_kei_no) || StringUtils.isEmpty(svc_kei_ucwk_no)){
			return new ArrayList<HashMap<String, Object>>();
		}
// IT1-2014-0000158対応 20140519 星野 ADD END
		
		String fixedTextPackCC = "fixedTextPackCC";
		JKKTelSelectOpPackOperateCC telSelectOpPackOperateCC = new JKKTelSelectOpPackOperateCC();
		//電話セレクトオプションパック操作CCに渡すパラメータを作成
		HashMap<String, Object> paramMapPackCC = new HashMap<String, Object>();
		paramMapPackCC.put("func_cd", "1");
		paramMapPackCC.put("trn_div","00"); //照会
		paramMapPackCC.put("svc_kei_no",svc_kei_no);
		paramMapPackCC.put("svc_kei_ucwk_no",svc_kei_ucwk_no);
		param.setData(fixedTextPackCC, paramMapPackCC);
		//照会を実行
		param = telSelectOpPackOperateCC.execute(handle, param, fixedTextPackCC);

		HashMap<String, Object> retMapPackCC = (HashMap<String, Object>)param.getData(fixedTextPackCC);
		ArrayList<HashMap<String, Object>> retList = (ArrayList<HashMap<String, Object>>)retMapPackCC.get("wrib_svc_kei_list"); 
		//無効な割引サービス契約情報は除く
		for(int i=retList.size()-1; i>=0; i--){
			if("900".compareTo((String)retList.get(i).get("wrib_svc_kei_stat")) <= 0 ){
				retList.remove(i);
			}
		}
		return retList;
	}
	// ANK-2056-00-00 2014/04/28 end
	
}
