/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKSvkeiShosaClCC
*   ソースファイル名：JKKSvkeiShosaClCC.java
*   作成者          ：富士通
*   日付            ：2011年12月01日
*＜機能概要＞
*   照査取消クラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/07/31   FJ）藤川    ANK0546-00-00、ANK0406-00-00
*   v4.00.01    2012/10/18   FJ）藤川    KAD-2011-0001102
*   v4.00.02    2012/11/26   FJ) 脇田    ANK-1213-00-00
*   v8.00.00    2014/03/28   FJ) 星野    OM-2013-0002656対応
*   v33.00.00   2017/09/07   FJ) 岡村    【ANK-3264-00-00】住変キャンセル時の電話番号エイジング誤更新(OM-2017-0000257)
*   v37.00.00   2018/06/12   FJ) 河邊    【OM-2018-0000541】住変キャンセルメールエイジング更新不正
*   v38.00.00   2018/09/13   FJ) 河邊    【OM-2018-0000653】固定ＩＰエイジング更新不備
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.fujitsu.futurity.bp.custom.constant.JKKAdchgCancelShijishoConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKAddSjishoConst;
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.IRequestParameterReadOnly;
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.cc.exception.SCCallException;
import com.fujitsu.futurity.bp.x21.sc.exception.SCException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.sun.enterprise.tools.common.util.StringUtils;

import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0111A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0111A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0171A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0171A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0241B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0361A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0401B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0411A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0411A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1021B501CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2101B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0020003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0020003CBSMsg2List;
import eo.ejb.cbs.cbsmsg.ETU0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ETU0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0111B030CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111B030CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0121A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg1List;


/**
 * サービス契約照査取消処理です。<p>
 * <br>
 * @author FJ
 */
public class JKKAdchgCancelShijishoCC extends AbstractCommonComponent
{
	/** オプトインメール受信設定ステータス−有効 */
	public static final String OPTINM_RCV_SETTE_STAT_YK = "010";
	
	/** サービスコード　01：インターネット */
	public static final String SVC_CD_NET = "01";
	
	/** サービスコード　02：電話 */
	public static final String SVC_CD_TEL = "02";
	
	/** サービスコード　03：テレビ */
	public static final String SVC_CD_TV = "03";


	/** 料金グループコード　02：eo光ネットホームタイプ */
	public static final String PRC_GRP_CD_HOME = "02";
	
	/** 料金グループコード　03：eo光ネットメゾンタイプ */
	public static final String PRC_GRP_CD_MEZON = "03";
	
	/** 料金グループコード　04：eo光ネットマンションタイプ */
	public static final String PRC_GRP_CD_MANS = "04";
	
	/** 料金グループコード　05：eoADSL(eAccess) */
	public static final String PRC_GRP_CD_EACCESS = "05";
	
	/** 料金グループコード　06：eoADSL(フレッツ) */
	public static final String PRC_GRP_CD_FU = "06";
	
	/** 料金グループコード　07：eoモバイル(Wi-Fi) */
	public static final String PRC_GRP_CD_WIFI = "07";
	
	/** 料金グループコード　08：eoモバイル(EM) */
	public static final String PRC_GRP_CD_EM = "08";
	
	/** 料金グループコード　09：eoモバイル(UQ-WiMAX) */
	public static final String PRC_GRP_CD_WIMAX = "09";
	
	/** 料金グループコード　10：eo光電話 */
	public static final String PRC_GRP_CD_HTEL = "10";
	
	/** 料金グループコード　11：eo光テレビ(K-CAT) */
	public static final String PRC_GRP_CD_TV_KCAT = "11";
	
	/** 料金グループコード　12：eo光テレビ(KCN) */
	public static final String PRC_GRP_CD_TV_KCN = "12";
	
	/** 料金グループコード　13：eo光テレビ(再送信) */
	public static final String PRC_GRP_CD_TV_SSS = "13";
	
	/** 回線コード　1004 光回線(マンション光配線) */
	public static final String KISN_CD_HIKARI_HAISEN = "1004";
	
	/** サービス種別コード　01：eo光ネット */
	public static final int SVC_SBT_CD_HNET = 1;
	
	/** サービス種別コード　02：eo光TV */
	public static final int SVC_SBT_CD_HTV = 2;
	
	/** サービス種別コード　03：eo光電話 */
	public static final int SVC_SBT_CD_HTEL = 3;
	
	/** サービス種別コード　04：eoモバイル */
	public static final int SVC_SBT_CD_MOBA = 4;
	
	/** サービス種別コード　05：eoADSL */
	public static final int SVC_SBT_CD_ADSL = 5; 
	
	/** 割引種別コード　1：一時費用割引 */
	public static final String WRIB_SBT_CD_ICHIWR = "1";
	
	/** 割引種別コード　2：月額費用割引 */
	public static final String WRIB_SBT_CD_GTGK = "2";
	
	/** 機器提供サービスコード　C005：モデム */
	public static final String KKTK_SVC_CD_MODEM = "C005";
	
	/** 連絡方法コード　001：メールアドレス */
	public static final String RRK_WAY_CD_MLAD = "001";
	
	/** 連絡方法コード　003：電話番号 */
	public static final String RRK_WAY_CD_TEL = "003";
	
	/** 連絡方法コード　005：FAX */
	public static final String RRK_WAY_CD_FAX = "005";
	
	/** 申込一意照会 */
	private static final String MAP_KEY_EKK0011A010 = "EKK0011A010";
	
	/** 申込明細一意照会 */
	private static final String MAP_KEY_EKK0021A010 = "EKK0021A010";
	
	/** 引継元情報サービス契約一覧照会 */
	private static final String MAP_KEY_EKK0081B006 = "EKK0081B006";
	
	/** サービス契約一意照会 */
	private static final String MAP_KEY_EKK0081A010 = "EKK0081A010";
	
	/** サービス契約<eo光ネット>一意照会 */
	private static final String MAP_KEY_EKK0091A010 = "EKK0091A010";
	
	/** サービス契約<eo光TV>一意照会 */
	private static final String MAP_KEY_EKK0101A010 = "EKK0101A010";
	
	/** サービス契約<eo光電話>一意照会 */
	private static final String MAP_KEY_EKK0111A010 = "EKK0111A010";
	
	/** サービス契約<eoモバイル>一意照会 */
	private static final String MAP_KEY_EKK0121A010 = "EKK0121A010";
	
	/** サービス契約<eoADSL>一意照会 */
	private static final String MAP_KEY_EKK0141A010 = "EKK0141A010";
	
	/** サービス契約内訳一覧照会 */
	private static final String MAP_KEY_EKK0161B004 = "EKK0161B004";
	
	/** サービス契約内訳<eo光ネット>一意照会 */
	private static final String MAP_KEY_EKK0171A010 = "EKK0171A010";
	
	/** サービス契約内訳<eo光TV>一意照会 */
	private static final String MAP_KEY_EKK0181A010 = "EKK0181A010";
	
	/** サービス契約内訳<eo光電話>一意照会 */
	private static final String MAP_KEY_EKK0191A010 = "EKK0191A010";
	
	/** サービス契約内訳<eoモバイル>一意照会 */
	private static final String MAP_KEY_EKK0201A010 = "EKK0201A010";
	
	/** サービス契約内訳<eoADSL>一意照会 */
	private static final String MAP_KEY_EKK0221A010 = "EKK0221A010";
	
	/** オプションサービス契約一覧照会（サービス契約番号） */
	private static final String MAP_KEY_EKK0351B002 = "EKK0351B002";
	
	/** オプションサービス契約<ISP>一意照会 */
	private static final String MAP_KEY_EKK0361A010 = "EKK0361A010";
	
	/** オプションサービス契約<TV>一意照会 */
	private static final String MAP_KEY_EKK0381A010 = "EKK0381A010";
	
	/** オプションサービス契約<電話>一意照会 */
	private static final String MAP_KEY_EKK0371A010 = "EKK0371A010";
	
	/** オプションサービス契約<サポート>一意照会 */
	private static final String MAP_KEY_EKK0391A010 = "EKK0391A010";
	
	/** サブオプションサービス契約一覧照会 */
	private static final String MAP_KEY_EKK0401B001 = "EKK0401B001";
	
	/** サブオプションサービス契約＜ISP＞一意照会 */
	private static final String MAP_KEY_EKK0411A010 = "EKK0411A010";
	
	/** サブオプションサービス契約＜TV＞一意照会 */
	private static final String MAP_KEY_EKK0421A010 = "EKK0421A010";
	
	/** サブオプションサービス契約＜電話＞一意照会 */
	private static final String MAP_KEY_EKK0431A010 = "EKK0431A010";
	
	/** 機器提供サービス契約一覧照会（サービス契約番号） */
	private static final String MAP_KEY_EKK0341B002 = "EKK0341B002";
	
	/** 機器提供サービス契約一意照会 */
	private static final String MAP_KEY_EKK0341A010 = "EKK0341A010";
	
	/** お客様一意照会 */
	private static final String MAP_KEY_ECK0011A010 = "ECK0011A010";

	/** 割引サービス契約一覧照会 */
	private static final String MAP_KEY_EKK0451B001 = "EKK0451B001";

	/** 割引サービス契約一意照会 */
	private static final String MAP_KEY_EKK0451A010 = "EKK0451A010";
	

	/** サービス契約回線内訳一覧照会 */
	private static final String MAP_KEY_EKK0241B001 = "EKK0241B001";
	
	/** サービス契約回線内訳一意照会 */
	private static final String MAP_KEY_EKK0251A010 = "EKK0251A010";

	/** 連絡先一覧照会 */
	private static final String MAP_KEY_ECK0201B001 = "ECK0201B001";

	/** 通知書一覧照会
	 * @since 2012-05-16 巻@　通知書CC取込み対応
	 */
	private static final String MAP_KEY_EKK0561B001 = "EKK0561B001";
	
// ANK0546-00-00 2012-08-02 ADD_END
// ANK0546-00-00 2012-09-24 ADD_START
	/** 割賦契約一覧照会(サービス契約番号) */
	private static final String MAP_KEY_EKK2541B004 = "EKK2541B004";
	
	/** 割賦契約一意照会 */
	private static final String MAP_KEY_EKK2541A010 = "EKK2541A010";
	
	
	// 2012-06-23 ADD_START
	/** サービス契約_工事案件一覧照会(基本工事取得) */
	private static final String MAP_KEY_EKU0081B020 = "EKU0081B020";
	
	/** 電話用VLANオーダ受付 */
	private static final String MAP_KEY_ESC0021D010 = "ESC0021D010";
	// 2012-06-23 ADD_END

	// 2012-10-18 KAD-2011-0001102 ADD_START
	/** 番ポ工事一覧照会 */
	private static final String MAP_KEY_ETU0011B018 = "ETU0011B018";
	
	/** 番ポ工事一意照会 */
	private static final String MAP_KEY_ETU0011A010 = "ETU0011A010";
	
	/** 番ポ工事取消 */
	private static final String MAP_KEY_ETU0011C021 = "ETU0011C021";
	
	// 2012-10-18 KAD-2011-0001102 ADD_END
	
	/** サービス契約ステータス(照査済み) */
	private static final String SVC_KEI_STAT_UKETUKE_ZUMI = "010";

	/** サービス契約ステータス(照査済み) */
	private static final String SVC_KEI_STAT_SHOSA_ZUMI = "020";
	
	/** サービス契約ステータス(締結済み) */
	private static final String SVC_KEI_STAT_CNC_ZUMI = "030";
	
	/** サービス契約ステータス(サービス提供中) */
	private static final String SVC_KEI_STAT_SVCTK = "100";
	
	/** サービス契約ステータス(休止・中断中) */
	private static final String SVC_KEI_STAT_PAUSE = "210";
	
	/** サービス契約ステータス(停止中) */
	private static final String SVC_KEI_STAT_STP = "220";
	
	/** 割引サービス契約ステータス(受付済み) */
	private static final String WRRIB_SVC_KEI_STAT_UK_ZUMI = "010";
	
	/** サービス契約ステータス(解約済み) */
	private static final String SVC_KEI_STAT_DSL = "910";

	/** サービス契約ステータス(キャンセル済み) */
	private static final String SVC_KEI_STAT_CL = "920";

	/** サービス契約回線内訳ステータス(キャンセル済み) */
	private static final String SVC_KEI_KAISEN_UCWK_STAT_CL = "920";
	
// ANK0546-00-00 2012-08-02 ADD_START
	private static final String PCRS_CD_HBRID42M = "A60";
	/** 機器提供サービスコード タブレット */
	public static final String KKTK_SVC_C021 = "C021";
	
	/** 機器提供サービスコード タブレット用クレードル */
	public static final String KKTK_SVC_C022 = "C022";
	
	/** サービス開始時配送状況識別コード 1:サービス開始時配送対象 */
	public static final String SVC_STA_JI_HIS_JOKYO_SKCD_1 = "1";
	/** サービス開始時配送状況識別コード 2:サービス開始時配送作成済 */
	public static final String SVC_STA_JI_HIS_JOKYO_SKCD_2 = "2";
	
	/** 配送ステータス 001:受付済 */
	private static final String HAISO_STAT_001 = "001";
	
	/**
	 * 
	 */
	public static final String TRGT_DATA_LIST = "trgt_data_list";
		
// ANK0546-00-00 2012-08-02 ADD_END
	
// 2012-10-18 KAD-2011-0001102 ADD_START
	/** 番ポキャンセル通知 */
	private static final String CANCEL_TCHI = "02";
// 2012-10-18 KAD-2011-0001102 ADD_END
		
	/**
	 * 現在処理中のSYSID
	 * @since 2012-05-16 巻@　指示書CC取込み対応
	 */
	private String currentSysid = null;

	//↓↓↓2012-02-16追加↓↓↓
	/**
	 * 進捗一覧照会
	 * @since 2012-02-16 ST2-2012-0000185対応
	 */
	private static final String MAP_KEY_EKK1091B001 = "EKK1091B001";

	/**
	 * 工事案件一覧照会
	 * @since 2012-02-16 ST2-2012-0000185対応
	 */
	private static final String MAP_KEY_EKU0011B010 = "EKU0011B010";
	//↑↑↑2012-02-16追加↑↑↑

	//↓↓↓2012-07-07追加、ST2-2012-0001346対応↓↓↓
	/**
	 * 電話番号一意照会
	 * @since 2012-07-07 ST2-2012-0001346対応
	 */
	private static final String MAP_KEY_EZM0121A010 = "EZM0121A010";

	/**
	 * 業務パラメータ一意照会
	 * @since 2012-07-07 ST2-2012-0001346対応
	 */
	private static final String MAP_KEY_EZM0321A010 = "EZM0321A010";

	/**
	 * エイジング一覧照会
	 * @since 2012-07-07 ST2-2012-0001346対応
	 */
	private static final String MAP_KEY_EZM0111B030 = "EZM0111B030";

	/**
	 * 電話番号物理削除
	 * @since 2012-07-07 ST2-2012-0001346対応
	 */
	private static final String MAP_KEY_EZM0121E011 = "EZM0121E011";


	/**
	 * エイジング種別コード：ｅｏＩＤ
	 */
	public static final String AGING_SBT_CD_EOID = "004";
	//↑↑↑2012-07-07追加、ST2-2012-0001346対応

	// ANK-0342-00-00 2012/07/24 start
	/** サービス対象機器提供サービス契約一覧照会 */
	private static final String MAP_KEY_EKK0341B022 = "EKK0341B022";
	/** 機器場所番号変更 */
	private static final String MAP_KEY_EKKA0020004 = "EKKA0020004";
	/** 宅内機器種別コード：UQ */
	public static final String TAKNKIKI_SBT_J0 = "J0";
	/** 機器提供種別コード 持込 */
	public static final String KIKI_TK_SBT_03 = "03";
    /** 宅内機器一意照会（４） */
	private static final String MAP_KEY_EKKA0020003 = "EKKA0020003";
	// ANK-0342-00-00 2012/07/24 end

	// 2012/08/22 ST2-2012-0001574 ADD START
	/** 一時金設定一覧照会(サービス契約番号指定) */
	private static final String MAP_KEY_EKK1021B501 = "EKK1021B501";
	// 2012/08/22 ST2-2012-0001574 ADD END
	

	/** 
	 * 照会系サービスインタフェースのリスト(1回目)
	 * 
	 */
	private static final String[] SVIF_MAP_KEY_SHOKAI_LIST = {
		MAP_KEY_ECK0011A010,	MAP_KEY_ECK0201B001,
		MAP_KEY_EKK0021A010,	MAP_KEY_EKK0081A010,
		MAP_KEY_EKK0081B006,	MAP_KEY_EKK0241B001,
		MAP_KEY_EKK0161B004,	MAP_KEY_EKK0351B002,
		MAP_KEY_EKK0341B002,	MAP_KEY_EKK0451B001,
		MAP_KEY_EKK0561B001
		// 2012/08/22 ST2-2012-0001574 ADD START
		,MAP_KEY_EKK1021B501
		// 2012/08/22 ST2-2012-0001574 ADD END
		// ANK0546-00-00 2012-09-24 ADD_START
//		,MAP_KEY_EKK2541B004
		// ANK0546-00-00 2012-09-24 ADD_END
	};
	
	/** 
	 * 照会系サービスインタフェースのリスト(2回目)
	 * 照会系サービスインタフェース(1回目)の実行結果から他の照会系サービスインタフェースをCallするサービスインタフェースのリスト
	 * 
	 */
	private static final String[] SVIF_MAP_KEY_SHOKAI2_LIST = {
		MAP_KEY_EKK0011A010,	MAP_KEY_EKK0251A010,
		MAP_KEY_EKK0391A010,	MAP_KEY_EKK0401B001,
		MAP_KEY_EKK0341A010,	MAP_KEY_EKK0451A010
		,MAP_KEY_EKK1091B001
		// ANK0546-00-00 2012-09-24 ADD_START
		,MAP_KEY_EKK2541A010
		// ANK0546-00-00 2012-09-24 ADD_END
	};
	
	/** 
	 * 照会系サービスインタフェースのリスト(eo光ネット)
	 * 
	 */
	private static final String[] SVIF_MAP_KEY_SHOKAI_HNET_LIST = {
		MAP_KEY_EKK0091A010,	MAP_KEY_EKK0171A010,	
		MAP_KEY_EKK0361A010,	MAP_KEY_EKK0411A010
	};
	
	/** 
	 * 照会系サービスインタフェースのリスト(eo光Tv)
	 * 
	 */
	private static final String[] SVIF_MAP_KEY_SHOKAI_HTV_LIST = {
		MAP_KEY_EKK0101A010,	MAP_KEY_EKK0181A010,
		MAP_KEY_EKK0381A010,	MAP_KEY_EKK0421A010
	};
	
	/** 
	 * 照会系サービスインタフェースのリスト(光電話)
	 * 
	 */
	private static final String[] SVIF_MAP_KEY_SHOKAI_HTEL_LIST = {
		MAP_KEY_EKK0111A010,	MAP_KEY_EKK0191A010,
		MAP_KEY_EKK0371A010,	MAP_KEY_EKK0431A010,
		MAP_KEY_EKU0081B020
	};
	
	/** 
	 * 照会系サービスインタフェースのリスト(モバイル)
	 * 
	 */
	private static final String[] SVIF_MAP_KEY_SHOKAI_MOBA_LIST = {
		MAP_KEY_EKK0121A010,	MAP_KEY_EKK0201A010,
		MAP_KEY_EKK0361A010,	MAP_KEY_EKK0411A010
	};
	
	/** 
	 * 照会系サービスインタフェースのリスト(ADSL)
	 * 
	 */
	private static final String[] SVIF_MAP_KEY_SHOKAI_ADSL_LIST = {
		MAP_KEY_EKK0141A010,	MAP_KEY_EKK0221A010,
		MAP_KEY_EKK0361A010,	MAP_KEY_EKK0411A010
	};

	/** 一意照会、一覧照会のサービスインタフェース呼び出しで使用するマッパー群 */
	private JKKAdchgCancelShijishoShokaiMapperCC adchgCnclSijishoShokaiMapper = null;
	
	/** 照査取消の場合にサービスインタフェース呼び出しで使用するマッパー群 */
	private JKKAdchgCancelShijishoMapperCC adchgCnclShijishoMapper = null;

	/** 排他対応更新年月日管理マッパー **/
	private JKKExclusiveMapper kkExclusiveMapper = null;


	/**
	 * マッパーを作成する処理です。
	 * 
	 * <br>
	 */
	private void createMapper()
	{
		adchgCnclSijishoShokaiMapper = new JKKAdchgCancelShijishoShokaiMapperCC();
		adchgCnclShijishoMapper = new JKKAdchgCancelShijishoMapperCC();
	}


	/**
	 * サービス契約照査取消処理です。
	 * 
	 * サービス契約照査取消でインプットとして必要なデータを
	 * 一意照会、一覧照会より取得してから
	 * サービス契約照査取消処理をCallします。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite cancel(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		HashMap userMap = null;
		
		// マッパーを作成する
		createMapper();
		
		// ユーザデータ情報取得
		userMap = (HashMap)param.getData(fixedText);

		List trgtDataList = (List)userMap.get(TRGT_DATA_LIST);
		
		// ユーザデータ情報に設定されたサービス契約情報分、サービス契約照査処理を行う
		for (int i = 0; i < trgtDataList.size(); i++)
		{
			HashMap<String, Object> wkRsltShokaiMap = null;
			HashMap<String, Object> rsltShokai = null;
			HashMap<String, Object> wkRsltShokai = null;
			HashMap<String, Object> wkMap = null;
			HashMap svkeiData = null;
			String svcCd = null;
			String prcGrpCd = null;
			String idoDiv = null;
			int svcSbtCd = 0;
			CAANMsg[] workEKK0081A010 = null;
			
			// サービス契約照査対象のサービス契約情報を取得する
			svkeiData = (HashMap)trgtDataList.get(i);
			
			// 初期処理
			// 一意照会、一覧照会のマッピング1回目
			wkRsltShokaiMap = editMapShokai(param, fixedText, i);
			
			// 一意照会、一覧照会の実行
			rsltShokai = runShokai(handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_LIST);
			
			// 一意照会、一覧照会のマッピング2回目（一意照会、一覧照会の１回目の結果を受けての照会）
			wkRsltShokaiMap = editMapShokai2(param, fixedText, i, rsltShokai);
			
			// 一意照会、一覧照会のマッピング2回目の実行結果
			wkRsltShokai = runShokai(handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI2_LIST);
			rsltShokai.putAll(wkRsltShokai);

			//↓↓↓2012-05-16追加　巻@　指示書CC取込み対応↓↓↓
			//お客様情報の取得
			CAANMsg[] workECK0011A010 = null;	// お客様一意照会
			
			workECK0011A010 = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0011A010);
			currentSysid = workECK0011A010[0].getString(ECK0011A010CBSMsg1List.SYSID);
			//↑↑↑2012-05-16追加　巻@　指示書CC取込み対応↑↑↑

			workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
			
//			if (0 == workEKK0081A010.length)		//こけたら、それで良い（エラー通知されるから）
//			{
//				return param;
//			}
			svcCd = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_CD);
			prcGrpCd = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);
			idoDiv = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.IDO_DIV);
			svcSbtCd = getSvcSbtCd(svcCd, prcGrpCd);
			String svcKeiStat = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);

			// 料金グループコード
			svkeiData.put(JKKAdchgCancelShijishoConstCC.PRC_GRP_CD, prcGrpCd);
			// 異動区分
			svkeiData.put(JKKAdchgCancelShijishoConstCC.IDO_DIV, idoDiv);

			
//			kkExclusiveMapper.initParentLastUpdDtm("KK0081", workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.LAST_UPD_DTM));

			// サービス種別を判定してサービス別に必要な一意照会を実行する
			// サービス種別判定
			switch (svcSbtCd) 
			{
				case SVC_SBT_CD_HNET:
					// eo光ネット
					wkRsltShokaiMap = editMapShokaiHNet(param, fixedText, i, rsltShokai);
					wkRsltShokai = runShokai(handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_HNET_LIST);
					rsltShokai.putAll(wkRsltShokai);
					break;
	
				case SVC_SBT_CD_HTV:
					// eo光テレビ
					wkRsltShokaiMap = editMapShokaiHTv(param, fixedText, i, rsltShokai);
					wkRsltShokai = runShokai(handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_HTV_LIST);
					rsltShokai.putAll(wkRsltShokai);
					break;
	
				case SVC_SBT_CD_HTEL:
					// eo光電話
					wkRsltShokaiMap = editMapShokaiHTel(param, fixedText, i, rsltShokai);
					wkRsltShokai = runShokai(handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_HTEL_LIST);
					rsltShokai.putAll(wkRsltShokai);
					break;
			}

			//↓↓↓2012-07-07追加、ST2-2012-0001346対応↓↓↓
			//エイジング使用終了
//			if(!SVC_KEI_STAT_CL.equals(svcKeiStat))
//			{
				useEndAging(handle, param, fixedText, i, rsltShokai, svcSbtCd,svcKeiStat);
//			}
			//↑↑↑2012-07-07追加、ST2-2012-0001346対応↑↑↑
			
			// サービス種別判定
			switch (svcSbtCd) 
			{
				case SVC_SBT_CD_HNET:
					// eo光ネット
					wkMap = editMapShosaClHNet(param, fixedText, i, rsltShokai);
					break;
	
				case SVC_SBT_CD_HTV:
					
					break;
	
				case SVC_SBT_CD_HTEL:
					
					break;
			}

			String svc_kei_no = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO);
			//連携データ区分 02 ：回線契約にかかるサービス契約番号とSYSIDとの紐付け情報
			JKKBpCommon.putAxMRenkeiDataKbn(
					param, JKKAdchgCancelShijishoConstCC.SJISHO_MAP, JKKAddSjishoConst.RENKEI_DATA_KBN_SYSID, JKKAddSjishoConst.TRN_KBN_UPD, 
					new String[]{svc_kei_no}, currentSysid);
			//連携データ区分 07 ：回線契約に紐づく各種サービス契約の情報
			JKKBpCommon.putAxMRenkeiDataKbn07(
					param, JKKAdchgCancelShijishoConstCC.SJISHO_MAP, JKKAddSjishoConst.TRN_KBN_UPD, 
					new String[]{svc_kei_no}, "料金グループ番号？");
			//↑↑↑2012-05-16追加　巻@　指示書CC取込み対応↑↑↑
			
			// 2012/08/07 ST1-2012-0000211 ADD START 請求契約番号情報の削除
			//連携データ区分 06 ：請求契約番号（#T）の情報
//			JKKBpCommon.putAxMRenkeiDataKbn(
//					param, JKKAdchgCancelShijishoConstCC.SJISHO_MAP, JKKAddSjishoConst.RENKEI_DATA_KBN_SEIKY_KEI, JKKAddSjishoConst.TRN_KBN_DEL, 
//					new String[]{svc_kei_no}, currentSysid);
			// 2012/08/07 ST1-2012-0000211 ADD START 請求契約番号情報の削除

		}

		//戻り値：正常
		param.setControlMapData(SCControlMapKeys.RETURN_CODE, "0000");		//2012-02-16追加
		
		return param;
	}

	
// OM-2013-0002656対応 20140328 星野 DEL START
// 未使用メソッド削除
//// KAD-2011-0001102 2012-10-25 ADD_START
//	/**
//	 * 番ポキャンセル　電話番号物理削除
//	 * @param handle
//	 * @param param
//	 * @param fixedText
//	 * @param i
//	 * @param wkMap
//	 * @param svcKeiNo
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private void bmpCancel(SessionHandle handle,
//			IRequestParameterReadWrite param, String fixedText, int userDataIndex,
//			HashMap<String, Object> wkMap, String svcKeiNo, String custNm, HashMap<String, Object> rsltShokai) throws Throwable
//	{
//		ArrayList wkMapArray = new ArrayList();
//		HashMap<String, Object> wkRsltShokaiMap = new HashMap<String, Object>();
//		HashMap<String, Object> wkRsltShokai = new HashMap<String, Object>();
//		
//		// 電話番号物理削除
//		// UI記載無しの為一旦コメントアウト 
//		//delTelno(handle, param, fixedText, userDataIndex, rsltShokai);
//		
////		// 番ポ工事一覧照会
////		// key:サービス契約番号
////		// ETU0011B010
////		List<CAANMsg> wkCaanMsgList = shokaiMapper.editInMsgETU0011B010(param, fixedText, userDataIndex, null, null);
////		wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
////		wkRsltShokaiMap.put(MAP_KEY_ETU0011B010, wkMapArray);
////		wkRsltShokai = runShokai(handle, wkRsltShokaiMap, new String[]{MAP_KEY_ETU0011B010});
////		
////		CAANMsg[] workETU0011B010 = getWorkParentData(ETU0011B010CBSMsg.ETU0011B010CBSMSG1LIST, wkRsltShokai, MAP_KEY_ETU0011B010);
////		
////		if (workETU0011B010 != null)
////		{
////			for (int i =0 ; i < workETU0011B010.length; i++)
////			{
////				CAANMsg childTemplateETU0011B010 = workETU0011B010[i];
////				
////				// 番ポ工事一意照会
////				// ETU0011A010
////				wkMapArray = new ArrayList();
////				List<CAANMsg> wkCaanMsgList2 = shokaiMapper.editInMsgETU0011A010(param, childTemplateETU0011B010.getString(ETU0011B010CBSMsg1List.BMP_KOJI_NO));
////				wkMapArray.add(editInMsgCmn(param, wkCaanMsgList2.get(0)));
////				wkRsltShokaiMap.put(MAP_KEY_ETU0011A010, wkMapArray);
////			}
////			
////			wkRsltShokai = runShokai(handle, wkRsltShokaiMap, new String[]{MAP_KEY_ETU0011A010});
////			rsltShokai.putAll(wkRsltShokai);
////			
////			// 番ポ工事取消
////			// UI記載無しの為一旦コメントアウト 
////			//delBmpKoji(handle, param, fixedText, userDataIndex, rsltShokai);
////		}
//		
//		// 番ポ工事一覧照会
//		// key:サービス契約番号
//		// ETU0011B018
//		List<CAANMsg> wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgETU0011B018(param, fixedText, userDataIndex, null, null);
//		wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
//		wkRsltShokaiMap.put(MAP_KEY_ETU0011B018, wkMapArray);
//		wkRsltShokai = runShokai(handle, wkRsltShokaiMap, new String[]{MAP_KEY_ETU0011B018});
//		
//		CAANMsg[] workETU0011B018 = getWorkParentData(ETU0011B018CBSMsg.ETU0011B018CBSMSG1LIST, wkRsltShokai, MAP_KEY_ETU0011B018);
//		
//		if (workETU0011B018 != null)
//		{
//			for (int i =0 ; i < workETU0011B018.length; i++)
//			{
//				CAANMsg childTemplateETU0011B018 = workETU0011B018[i];
//				
//				// 番ポ工事一意照会
//				// ETU0011A010
//				wkMapArray = new ArrayList();
//				List<CAANMsg> wkCaanMsgList2 = adchgCnclSijishoShokaiMapper.editInMsgETU0011A010(param, childTemplateETU0011B018.getString(ETU0011B018CBSMsg1List.BMP_KOJI_NO));
//				wkMapArray.add(editInMsgCmn(param, wkCaanMsgList2.get(0)));
//				wkRsltShokaiMap.put(MAP_KEY_ETU0011A010, wkMapArray);
//			}
//			
//			wkRsltShokai = runShokai(handle, wkRsltShokaiMap, new String[]{MAP_KEY_ETU0011A010});
//			rsltShokai.putAll(wkRsltShokai);
//			
//			// 番ポ工事取消
//			// UI記載無しの為一旦コメントアウト 
//			//delBmpKoji(handle, param, fixedText, userDataIndex, rsltShokai);
//		}
//		
//		// サービス契約内訳一意照会結果
//		List<Map<String, Object>> wkEKK0191A010rslts = (List<Map<String, Object>>)rsltShokai.get(MAP_KEY_EKK0191A010);
//		for (int b = 0; null != wkEKK0191A010rslts && b < wkEKK0191A010rslts.size(); b++)
//		{
//			CAANMsg[] workEKK0191A010 = getWorkData(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, (Map)wkEKK0191A010rslts.get(b));
//			if (null != workEKK0191A010 && 0 < workEKK0191A010.length)
//			{
//				CAANMsg childTemplateEKK0191A010 = workEKK0191A010[0];
//				
//				// 番ポ有りの場合
//				if(JKKStrConst.CD00001_1.equals(childTemplateEKK0191A010.getString(EKK0191A010CBSMsg1List.BMP_UM)))
//				{
//					/** 番ポキャンセル通知 */
//					// 登録種別            ◎
//					// お客様名            ◎
//					// 申込日              ◎
//					// NTT受付番号         △
//					// 電話番号            ×
//					// 設置場所住所コード  ×
//					// ユーザID            ◎
//					// サービス契約番号    ◎
//					// 工事日時            ×
//					
//					HashMap<String, Object> taiorrk = new HashMap<String, Object>();
//					// 登録種別
//					taiorrk.put(JKKAddBmpTaiorrkiConstCC.TRK_SBT, CANCEL_TCHI);
//					// SYSID
//					taiorrk.put(JKKAddBmpTaiorrkiConstCC.SYSID, null);
//					// お客様名
//					taiorrk.put(JKKAddBmpTaiorrkiConstCC.CUST_NM, custNm);
//					// 申込日
//					taiorrk.put(JKKAddBmpTaiorrkiConstCC.MSKM_YMD, JCCBPCommon.getOpeDate(null));
//					// NTT受付番号
//					taiorrk.put(JKKAddBmpTaiorrkiConstCC.NTT_UKE_NO, 
//							getNttUkNo(wkRsltShokai, childTemplateEKK0191A010.getString(EKK0191A010CBSMsg1List.SVC_KEI_UCWK_NO)));
//					
//					// 電話番号
//					taiorrk.put(JKKAddBmpTaiorrkiConstCC.TELNO, null);
//					// 設置場所住所コード
//					taiorrk.put(JKKAddBmpTaiorrkiConstCC.SETPLACE_AD_CD, null);
//					// サービス契約番号
//					taiorrk.put(JKKAddBmpTaiorrkiConstCC.SVC_KEI_NO, svcKeiNo);
//					// ユーザID
//					taiorrk.put(JKKAddBmpTaiorrkiConstCC.USER_ID, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
//					// 工事日時
//					taiorrk.put(JKKAddBmpTaiorrkiConstCC.KOJI_DTM, null);
//					
//					// 番ポ対応履歴登録部品呼出
//					JKKBpCommon.addBmpTaiorrki(handle, param, taiorrk, fixedText);
//					
//				}
//			}
//		}
//	}
// OM-2013-0002656対応 20140328 星野 DEL START
	
	/**
	 * NTT受付番号を取得（サービス契約内訳番号より）
	 * @param workETU0011A010
	 * @param svcKeiUcwkNo
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private String getNttUkNo(HashMap<String, Object> rsltShokai, String svcKeiUcwkNo)
	{
		String nttUkeno = "";
		
		if (isNull(svcKeiUcwkNo))
		{
			return null;
		}
		
		List<Map<String, Object>> wkETU0011A010rslts = (List<Map<String, Object>>)rsltShokai.get(MAP_KEY_ETU0011A010);
		for (int b = 0; null != wkETU0011A010rslts && b < wkETU0011A010rslts.size(); b++)
		{
			CAANMsg[] workETU0011A010 = getWorkData(ETU0011A010CBSMsg.ETU0011A010CBSMSG1LIST, (Map)wkETU0011A010rslts.get(b));
			if (null != workETU0011A010 && 0 < workETU0011A010.length)
			{
				CAANMsg childTemplateETU0011A010 = workETU0011A010[0];
				
				// 引数のサービス契約内訳番号と同じ番号の場合NTT受付番号を取得する
				if (svcKeiUcwkNo.equals(childTemplateETU0011A010.getString(ETU0011A010CBSMsg1List.SVC_KEI_UCWK_NO)))
				{
					nttUkeno = childTemplateETU0011A010.getString(ETU0011A010CBSMsg1List.NTT_UK_NO);
				}
			}
		}
		
		return nttUkeno;
	}
	
	
	/**
	 * 電話番号削除
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param userDataIndex
	 * @param rsltShokai
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void delTelno(SessionHandle handle,
			IRequestParameterReadWrite param, String fixedText, int userDataIndex, HashMap<String, Object> rsltShokai) throws Throwable
	{
		// 電話番号物理削除
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		HashMap<String, Object> rslt = null;
		HashMap<String, Object> rsltShosaMap = new HashMap();
		
		ArrayList<HashMap> workEKK0191A010Array = null;	// サービス契約内訳<eo光電話>一意照会
		workEKK0191A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0191A010);
		
		wkMapArray = new ArrayList();
		for (int x = 0; workEKK0191A010Array != null && x < workEKK0191A010Array.size(); x++) 
		{
			CAANMsg[] wkTenplatesEKK0191A010 = getWorkData(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, (Map)workEKK0191A010Array.get(x));
			CAANMsg childTemplateEKK0191A010 = wkTenplatesEKK0191A010[0];
			// 番ポ有無が有の場合に実行
			if(JKKStrConst.CD00001_1.equals(childTemplateEKK0191A010.getString(EKK0191A010CBSMsg1List.BMP_UM)))
			{
				//電話番号一意照会
				HashMap<String, Object> wkRsltShokaiMap = new HashMap<String, Object>();
				ArrayList<HashMap<String, Object>> hogeArray = new ArrayList<HashMap<String,Object>>();
				List<CAANMsg> xList = this.adchgCnclSijishoShokaiMapper.editInMsgEZM0121A010(param, 
						childTemplateEKK0191A010.getString(EKK0191A010CBSMsg1List.TELNO));
				hogeArray.add(editInMsgCmn(param, xList.get(0)));
				wkRsltShokaiMap.put(MAP_KEY_EZM0121A010, hogeArray);
				HashMap<String, Object> wkRsltShokai = runShokai(handle, wkRsltShokaiMap, new String[]{MAP_KEY_EZM0121A010});
				CAANMsg[] workEZM0121A010 = getWorkParentData(EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST, wkRsltShokai, MAP_KEY_EZM0121A010);

				//電話番号物理削除
				wkCaanMsgList = adchgCnclShijishoMapper.editInMsgEZM0121E011(param, fixedText, userDataIndex, workEZM0121A010[0]);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
			}
		}
		rsltShosaMap.put(MAP_KEY_EZM0121E011, wkMapArray);
		
//		runShosa(handle, param, fixedText, userDataIndex, rsltShosaMap, MAP_KEY_EZM0121E011);
	}
	
	/**
	 * 番ポ工事取消
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param userDataIndex
	 * @param rsltShokai
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void delBmpKoji(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			int userDataIndex, HashMap<String, Object> rsltShokai) throws Throwable
	{
		
		ArrayList wkMapArray = new ArrayList();
		HashMap<String, Object> rsltShosaMap = new HashMap<String, Object>();
		
		List<Map<String, Object>> wkETU0011A010rslts = (List<Map<String, Object>>)rsltShokai.get(MAP_KEY_ETU0011A010);
		for (int b = 0; null != wkETU0011A010rslts && b < wkETU0011A010rslts.size(); b++)
		{
			CAANMsg[] workETU0011A010 = getWorkData(ETU0011A010CBSMsg.ETU0011A010CBSMSG1LIST, (Map)wkETU0011A010rslts.get(b));
			if (null != workETU0011A010 && 0 < workETU0011A010.length)
			{
				CAANMsg childTemplateETU0011A010 = workETU0011A010[0];
				
				// 番ポ工事取消
				// ETU0011C021
				wkMapArray = new ArrayList();
				List<CAANMsg> wkCaanMsgList3 = adchgCnclShijishoMapper.editInMsgETU0011C021(param, childTemplateETU0011A010);
				wkMapArray.add(editInMsgCmn(param, wkCaanMsgList3.get(0)));
				rsltShosaMap.put(MAP_KEY_ETU0011C021, wkMapArray);
			}
		}
		
//		runShosa(handle, param, fixedText, userDataIndex, rsltShosaMap, MAP_KEY_ETU0011C021);
	}
// KAD-2011-0001102 2012-10-25 ADD_END

	/**
	 * エイジング使用終了処理<br/>
	 * <pre>
	 * サービスに応じたエイジング使用終了処理をします。
	 * </pre>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ一式
	 * @param fixedText マップ名
	 * @param idx 照査取消対象のカウンタ
	 * @param rsltShokai 各照会結果の入ったマップ
	 * @param svcSbtCd サービス種別
	 * @throws Throwable 
	 * @since 2012-07-07 ST2-2012-0001346対応
	 */
	@SuppressWarnings("unchecked")
	private void useEndAging(SessionHandle handle,
			IRequestParameterReadWrite param, String fixedText, int idx,
			HashMap<String, Object> rsltShokai, int svcSbtCd,String svcKeiStat) throws Throwable
{
		//*******************************************************************************
		//オプションサービス契約絡みのエイジング使用終了処理
		//メアド、POPID、WebID、メーリングリスト、メールエイリアス
		//*******************************************************************************
		String mlDomain = null;
		List<Map<String, String>> agingEndList = new ArrayList<Map<String,String>>();
		List<String> agingStatList = new ArrayList<String>();

		String aging_value = null;
// OM-2018-0000653 2018/09/13 ADD START
		// INPUTの申込明細番号（ネット）
		HashMap userMap = (HashMap)param.getData(fixedText);
		String mskmDtlNoNet = (String)userMap.get("mskm_dtl_no_net");
// OM-2018-0000653 2018/09/13 ADD END

		CAANMsg[] workEKK0351B002 = getWorkParentData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0351B002);
		for (int i = 0; null != workEKK0351B002 && i < workEKK0351B002.length; i++)
		{
			CAANMsg childTemplate = workEKK0351B002[i];
			
			String op_svc_kei_no = childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO);
			String op_svc_cd = childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_CD);
			String op_svc_stat = childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);
// OM-2018-0000653 2018/09/13 ADD START
			// サービス契約内訳の申込明細番号
			String mskmDtlNo = childTemplate.getString(EKK0351B002CBSMsg1List.MSKM_DTL_NO);
			
			if (JKKStringUtil.isNullBlank(mskmDtlNoNet) || !mskmDtlNoNet.equals(mskmDtlNo))
			{
				// INPUTの申込明細番号（ネット）がnull、または、
				// INPUTの申込明細番号（ネット）と
				// オプションサービス契約一覧照会の申込明細番号が不一致の場合
				continue;
			}
// OM-2018-0000653 2018/09/13 ADD END

			if (JKKStrConst.OP_SVC_CD_EMAIL.equals(op_svc_cd))		//Ｅメール
			{
				//メールエイリアス
				ArrayList<HashMap<?, ?>> workEKK0411A010Array = (ArrayList<HashMap<?, ?>>)rsltShokai.get(MAP_KEY_EKK0411A010);
				for (int j = 0; null != workEKK0411A010Array && j < workEKK0411A010Array.size(); j++)
				{
					CAANMsg[] wkTemplates = getWorkData(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST, (Map)workEKK0411A010Array.get(j));
					for (int k = 0; k < wkTemplates.length; k++)
					{
						String alias = wkTemplates[k].getString(EKK0411A010CBSMsg1List.ALIAS);
// OM-2018-0000541 2018/06/12 ADD START
						if (null != alias && !"".equals(alias))
						{
							// エイリアスに値が設定されている場合
// OM-2018-0000541 2018/06/12 ADD END
							agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_ALIAS, alias);
							if(op_svc_stat.equals(SVC_KEI_STAT_CL)
	// OM-2013-0003636対応 20131103 星野 MOD START
								|| SVC_KEI_STAT_DSL.equals(op_svc_stat)
	// OM-2013-0003636対応 20131103 星野 MOD END
							){
								// エイジング使用終了
								agingStatList.add("0");
							}
							else 
							{
								// エイジング回復
								agingStatList.add("1");
							}
// OM-2018-0000541 2018/06/12 ADD START
						}
// OM-2018-0000541 2018/06/12 ADD END
					}
				}
				//メールアドレス
				aging_value = getValuableData(rsltShokai, MAP_KEY_EKK0361A010, 
						EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST,
						EKK0361A010CBSMsg1List.OP_SVC_KEI_NO, op_svc_kei_no, 
						EKK0361A010CBSMsg1List.MLAD);
				agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_MLAD, aging_value);
				if(op_svc_stat.equals(SVC_KEI_STAT_CL)
// OM-2013-0003636対応 20131103 星野 MOD START
					|| SVC_KEI_STAT_DSL.equals(op_svc_stat)
// OM-2013-0003636対応 20131103 星野 MOD END
				){
					// エイジング使用終了
					agingStatList.add("0");
				}
				else 
				{
					// エイジング回復
					agingStatList.add("1");
				}

				//ＰＯＰＩＤ
				aging_value = getValuableData(rsltShokai, MAP_KEY_EKK0361A010, 
						EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST,
						EKK0361A010CBSMsg1List.OP_SVC_KEI_NO, op_svc_kei_no, 
						EKK0361A010CBSMsg1List.POP_ID);
				agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_POP_ID, aging_value);
				if(op_svc_stat.equals(SVC_KEI_STAT_CL)
// OM-2013-0003636対応 20131103 星野 MOD START
					|| SVC_KEI_STAT_DSL.equals(op_svc_stat)
// OM-2013-0003636対応 20131103 星野 MOD END
				){
					// エイジング使用終了
					agingStatList.add("0");
				}
				else 
				{
					// エイジング回復
					agingStatList.add("1");
				}
		}
			else if (JKKStrConst.OP_SVC_CD_MYHOMEPAGE.equals(op_svc_cd))		//Ｍｙホームページ
			{
				//WebID
				aging_value = getValuableData(rsltShokai, MAP_KEY_EKK0361A010, 
						EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST,
						EKK0361A010CBSMsg1List.OP_SVC_KEI_NO, op_svc_kei_no, 
						EKK0361A010CBSMsg1List.WEB_ID);
				agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_WEB_ID, aging_value);
				if(op_svc_stat.equals(SVC_KEI_STAT_CL)
// OM-2013-0003636対応 20131103 星野 MOD START
					|| SVC_KEI_STAT_DSL.equals(op_svc_stat)
// OM-2013-0003636対応 20131103 星野 MOD END
				){
					// エイジング使用終了
					agingStatList.add("0");
				}
				else 
				{
					// エイジング回復
					agingStatList.add("1");
				}
			}
			else if (JKKDslRun.OP_SVC_CD_MLIST.equals(op_svc_cd))				//メーリングリスト
			{
				if (null == mlDomain)
				{
					//メーリングリストのドメイン部を業務パラメータ管理スキーマから検索
					HashMap<String, Object> wkRsltShokaiMap = new HashMap<String, Object>();
					ArrayList<HashMap<String, Object>> wkMapArray = new ArrayList<HashMap<String,Object>>();
					List<CAANMsg> xList = this.adchgCnclSijishoShokaiMapper.editInMsgEZM0321A010(param, JKKDslRun.WORK_PARAM_ID_MLLIST_NM_DOMAIN);
					wkMapArray.add(editInMsgCmn(param, xList.get(0)));
					wkRsltShokaiMap.put(MAP_KEY_EZM0321A010, wkMapArray);
					HashMap<String, Object> wkRsltShokai = runShokai(handle, wkRsltShokaiMap, new String[]{MAP_KEY_EZM0321A010});
					CAANMsg[] workEZM0321A010 = getWorkParentData(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, wkRsltShokai, MAP_KEY_EZM0321A010);
					mlDomain = workEZM0321A010[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
				}
				//メーリングリスト
				aging_value = getValuableData(rsltShokai, MAP_KEY_EKK0361A010, 
						EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST,
						EKK0361A010CBSMsg1List.OP_SVC_KEI_NO, op_svc_kei_no, 
						EKK0361A010CBSMsg1List.MLLIST_NM);
				aging_value += ("@" + mlDomain);
				agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_MLLIST, aging_value);
				if(op_svc_stat.equals(SVC_KEI_STAT_CL)
// OM-2013-0003636対応 20131103 星野 MOD START
					|| SVC_KEI_STAT_DSL.equals(op_svc_stat)
// OM-2013-0003636対応 20131103 星野 MOD END
				){
					// エイジング使用終了
					agingStatList.add("0");
				}
				else 
				{
					// エイジング回復
					agingStatList.add("1");
				}
			}
			else if (JKKDslRun.OP_SVC_CD_FIXIPAD.equals(op_svc_cd))		//Ｍｙホームページ
			{
				//ＩＰアドレス
				aging_value = getValuableData(rsltShokai, MAP_KEY_EKK0361A010, 
						EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST,
						EKK0361A010CBSMsg1List.OP_SVC_KEI_NO, op_svc_kei_no, 
						EKK0361A010CBSMsg1List.KOTEI_IP_AD);
				agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_IP, aging_value);
				if(op_svc_stat.equals(SVC_KEI_STAT_CL)
// OM-2013-0003636対応 20131103 星野 MOD START
					|| SVC_KEI_STAT_DSL.equals(op_svc_stat)
// OM-2013-0003636対応 20131103 星野 MOD END
				){
					// エイジング使用終了
					agingStatList.add("0");
				}
				else 
				{
					// エイジング回復
					agingStatList.add("1");
				}
			}
			else if (JKKDslRun.OP_SVC_CD_FIXIPAD.equals(op_svc_cd))		//Ｍｙホームページ
			{
				//ＵＲＬ
				aging_value = getValuableData(rsltShokai, MAP_KEY_EKK0361A010, 
						EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST,
						EKK0361A010CBSMsg1List.OP_SVC_KEI_NO, op_svc_kei_no, 
						EKK0361A010CBSMsg1List.URL_DOMAIN + EKK0361A010CBSMsg1List.URL_ACCOUNT);
				agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_URL, aging_value);
				if(op_svc_stat.equals(SVC_KEI_STAT_CL)
// OM-2013-0003636対応 20131103 星野 MOD START
					|| SVC_KEI_STAT_DSL.equals(op_svc_stat)
//OM-2013-0003636対応 20131103 星野 MOD END
				){
					// エイジング使用終了
					agingStatList.add("0");
				}
				else 
				{
					// エイジング回復
					agingStatList.add("1");
				}
			}
		}

		//*******************************************************************************
		//サービス契約絡みのエイジング使用終了処理
		//eo光ネット：ＩＳＰ認証ＩＤ
		//eo光電話　：ＰＰＰ認証ＩＤ、ＳＩＰユーザＩＤ、電話番号
		//eoADSL　　：ＡＤＳＬ認証ＩＤ
		//*******************************************************************************

		// サービス種別判定
		switch (svcSbtCd) 
		{
			case SVC_SBT_CD_HNET:			// eo光ネット
				//ＩＳＰ認証ＩＤ
				CAANMsg[] workEKK0171A010 = getWorkParentData(EKK0171A010CBSMsg.EKK0171A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0171A010);

				for (int i = 0; null != workEKK0171A010 && i < workEKK0171A010.length; i++)
				{
					String ucwk_no = workEKK0171A010[i].getString(EKK0171A010CBSMsg1List.SVC_KEI_UCWK_NO);
					String ucwk_stat = getSvcKeiUcwkStat(ucwk_no, rsltShokai);
					
					String isp_ninsho_id = workEKK0171A010[i].getString(EKK0171A010CBSMsg1List.ISP_NINSHO_ID);
					if (!(null == isp_ninsho_id || "".equals(isp_ninsho_id)))
					{
						aging_value = JKKBpCommon.getAgingNinshoId(isp_ninsho_id);
						agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_ISP_ID, aging_value);
						
						if(SVC_KEI_STAT_CL.equals(ucwk_stat)
// OM-2013-0003636対応 20131103 星野 MOD START
							|| SVC_KEI_STAT_DSL.equals(ucwk_stat)
// OM-2013-0003636対応 20131103 星野 MOD END
						){
							// エイジング使用終了
							agingStatList.add("0");
						}
						else 
						{
							// エイジング回復
							agingStatList.add("1");
						}
					}
				}
				break;

			case SVC_SBT_CD_HTEL:			// eo光電話
				//ＰＰＰ認証ＩＤ
				CAANMsg[] workEKK0111A010 = getWorkParentData(EKK0111A010CBSMsg.EKK0111A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0111A010);
				CAANMsg[] workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
				
				String svc_kei_stat = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
				
				for (int i = 0; null != workEKK0111A010 && i < workEKK0111A010.length; i++)
				{
					String ppp_ninsho_id = workEKK0111A010[i].getString(EKK0111A010CBSMsg1List.PPP_NINSHO_ID);
					if (!(null == ppp_ninsho_id || "".equals(ppp_ninsho_id)))
					{
						aging_value = JKKBpCommon.getAgingNinshoId(ppp_ninsho_id);
						agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_PPP_ID, aging_value);
						if(SVC_KEI_STAT_CL.equals(svc_kei_stat)
// OM-2013-0003636対応 20131103 星野 MOD START
							|| SVC_KEI_STAT_DSL.equals(svc_kei_stat)
// OM-2013-0003636対応 20131103 星野 MOD END
						){
							// エイジング使用終了
							agingStatList.add("0");
						}
						else 
						{
							// エイジング回復
							agingStatList.add("1");
						}
					}
				}
				
				List<Map<String, Object>> wkEKK0191A010rslts = (List<Map<String, Object>>)rsltShokai.get(MAP_KEY_EKK0191A010);
				for (int i = 0; null != wkEKK0191A010rslts && i < wkEKK0191A010rslts.size(); i++)
				{
					CAANMsg[] workEKK0191A010 = getWorkData(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, (Map)wkEKK0191A010rslts.get(i));
// 住所変更キャンセル故障(100059) 2012.1.9 OOYAMA START 
					String ucwk_no = workEKK0191A010[0].getString(EKK0191A010CBSMsg1List.SVC_KEI_UCWK_NO);
// 住所変更キャンセル故障(100059) 2012.1.9 OOYAMA END
// OM-2013-0003636対応 20131103 星野 MOD START
//					String ucwk_stat = getSvcKeiUcwkStat(ucwk_no, rsltShokai);
					String ucwk_stat = getSvcKeiUcwkStatTelWithKK2101(handle, param, fixedText, ucwk_no, rsltShokai);
// OM-2013-0003636対応 20131103 星野 MOD END

					if (null != workEKK0191A010 && 0 < workEKK0191A010.length)
					{
						//電話番号
						String telno = workEKK0191A010[0].getString(EKK0191A010CBSMsg1List.TELNO);
						agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_TEL, telno);
// OM-2013-0003636対応 20131103 星野 MOD START
//						agingStatList.add("2");
						if(SVC_KEI_STAT_CL.equals(ucwk_stat) 
							|| SVC_KEI_STAT_DSL.equals(ucwk_stat)
						){
							// エイジング使用終了
							agingStatList.add("0");
						}
						else 
						{
							// エイジング回復
							agingStatList.add("1");
						}
// OM-2013-0003636対応 20131103 星野 MOD END
	
						//ＳＩＰユーザＩＤ
						String sip_user_id = workEKK0191A010[0].getString(EKK0191A010CBSMsg1List.SIP_USER_ID);
						if (!(null == sip_user_id || "".equals(sip_user_id)))
						{
							agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_SIP_ID, sip_user_id);
							if(SVC_KEI_STAT_CL.equals(ucwk_stat)
// OM-2013-0003636対応 20131103 星野 MOD START
								|| SVC_KEI_STAT_DSL.equals(ucwk_stat)
// OM-2013-0003636対応 20131103 星野 MOD END
							){
								// エイジング使用終了
								agingStatList.add("0");
							}
							else 
							{
								// エイジング回復
								agingStatList.add("1");
							}
						}
					}
				}
				break;

//			case SVC_SBT_CD_ADSL:			// eoADSL
//				//ＡＤＳＬ認証ＩＤ
//				CAANMsg[] workEKK0221A010 = getWorkParentData(EKK0221A010CBSMsg.EKK0221A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0221A010);
//				for (int i = 0; null != workEKK0221A010 && i < workEKK0221A010.length; i++)
//				{
//					String adsl_ninsho_id = workEKK0221A010[i].getString(EKK0221A010CBSMsg1List.ADSL_NINSHO_ID);
//					String ucwk_no = workEKK0221A010[i].getString(EKK0221A010CBSMsg1List.SVC_KEI_UCWK_NO);
//					String ucwk_stat = getSvcKeiUcwkStat(ucwk_no, rsltShokai);
//
//					if (null != adsl_ninsho_id && !"".equals(adsl_ninsho_id))
//					{
//						agingEndList = addArrayListSafety(agingEndList, JKKDslRun.AGING_SBT_CD_ADSL_ID, adsl_ninsho_id);
//						if(SVC_KEI_STAT_CL.equals(ucwk_stat))
//						{
//							agingStatList.add("0");
//						}
//						else 
//						{
//							agingStatList.add("1");
//						}
//					}
//				}
//				break;

			default:
		}
		
		//エイジング終了処理
		closeAging(handle, param, fixedText, idx, agingEndList,svcKeiStat , agingStatList);
	}


	/**
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @param idx
	 * @param agingEndList
	 * @throws Throwable
	 */
	private void closeAging(SessionHandle handle, IRequestParameterReadWrite param,
			 String fixedText, int idx, List<Map<String, String>> agingEndList,
			 String svcKeiStat,
			 List<String> agingStatList) throws Throwable
	{
		HashMap<String, Object> wkRsltShokaiMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> wkMapArray = new ArrayList<HashMap<String,Object>>();

		int aec = agingEndList.size();
		int aec2 = agingStatList.size();
		
		for (int i = 0; i < agingEndList.size(); i++)
		{
			String agingKbn = agingStatList.get(i);
			
			for (Entry<String, String> e: agingEndList.get(i).entrySet())
			{
				wkRsltShokaiMap.clear();
				wkMapArray.clear();

				//エイジング一覧照会を実行
				CAANMsg msg = this.adchgCnclSijishoShokaiMapper.editInMsgEZM0111B030(param, e);
				wkMapArray.add(editInMsgCmn(param, msg));
				wkRsltShokaiMap.put(MAP_KEY_EZM0111B030, wkMapArray);
				HashMap<String, Object> wkRsltShokai = runShokai(handle, wkRsltShokaiMap, new String[]{MAP_KEY_EZM0111B030});

				CAANMsg[] workEZM0111B030 = getWorkParentData(EZM0111B030CBSMsg.EZM0111B030CBSMSG1LIST, wkRsltShokai, MAP_KEY_EZM0111B030);
				
				
				if(workEZM0111B030 != null)
				{
					String sging_stat = workEZM0111B030[0].getString(EZM0111B030CBSMsg1List.AGING_STAT);

// OM-2013-0003636対応 20131103 星野 DEL START
//					if (JKKDslRun.AGING_SBT_CD_TEL.equals(e.getKey())			//エイジング種別＝電話番号？
//							||	JKKDslRun.AGING_SBT_CD_MLLIST.equals(e.getKey())		//エイジング種別＝メーリングリスト？
//							||	JKKDslRun.AGING_SBT_CD_PPP_ID.equals(e.getKey()))		//エイジング種別＝ＰＰＰ認証ＩＤ？
//						// ▼▼▼▼▼ 2012/12/17 IT1-2012-0002272 DEL START ▼▼▼▼▼
//						//				||	AGING_SBT_CD_EOID.equals(e.getKey()))					//エイジング種別＝ＥＯＩＤ？
//						// ▲▲▲▲▲ 2012/12/17 IT1-2012-0002272 DEL E N D ▲▲▲▲▲
//					{
//
//						if(("0".equals(agingKbn) || "2".equals(agingKbn)) && "100".equals(sging_stat))
//						{
//							//エイジング削除
//							msg = this.adchgCnclShijishoMapper.editInMsgEZM0111E010(param, e, workEZM0111B030[0]);
//							HashMap<String, Object> wkMap = editInMsgCmn(param, msg);
//							Map<?, ?> rslt = (new ServiceComponentRequestInvoker()).run(wkMap, handle);
//							adchgCnclShijishoMapper.editResultRPEZM0111E010(rslt, param, fixedText, idx);
//							errChk(rslt);
//						}
//						else if(("1".equals(agingKbn)|| "2".equals(agingKbn)) && "200".equals(sging_stat))
//						{
//							//エイジング回復
//							msg = this.adchgCnclShijishoMapper.editInMsgEZM0111C020(param, e, workEZM0111B030[0]);
//							HashMap<String, Object> wkMap = editInMsgCmn(param, msg);
//							Map<?, ?> rslt = (new ServiceComponentRequestInvoker()).run(wkMap, handle);
//							adchgCnclShijishoMapper.editResultRPEZM0111C020(rslt, param, fixedText, idx);
//							errChk(rslt);
//						}
//
//					}
// OM-2013-0003636対応 20131103 星野 DEL END
					// ▼▼▼▼▼ 2012/12/17 IT1-2012-0002272 ADD START ▼▼▼▼▼
					// ====================================== //
					// ※初期eoIDは、エイジング対象外         //
					// ====================================== //
// OM-2013-0003636対応 20131103 星野 MOD START
//					else if (AGING_SBT_CD_EOID.equals(e.getKey()))
					if (AGING_SBT_CD_EOID.equals(e.getKey()))
// OM-2013-0003636対応 20131103 星野 MOD END
					{
					}
					// ▲▲▲▲▲ 2012/12/17 IT1-2012-0002272 ADD E N D ▲▲▲▲▲
					else
					{

// OM-2013-0003636対応 20131103 星野 MOD START
//						if(("0".equals(agingKbn) || "2".equals(agingKbn))&&"100".equals(sging_stat))
						if( "0".equals(agingKbn) &&"100".equals(sging_stat))
// OM-2013-0003636対応 20131103 星野 MOD END
						{
							//エイジング使用終了
							msg = this.adchgCnclShijishoMapper.editInMsgEZM0111C010(param, e, workEZM0111B030[0]);
							HashMap<String, Object> wkMap = editInMsgCmn(param, msg);
							Map<?, ?> rslt = (new ServiceComponentRequestInvoker()).run(wkMap, handle);
							adchgCnclShijishoMapper.editResultRPEZM0111C010(rslt, param, fixedText, idx);
							errChk(rslt);
							
						}
// OM-2013-0003636対応 20131103 星野 MOD START
//						else if(("1".equals(agingKbn) || "2".equals(agingKbn))&& "200".equals(sging_stat))
						else if( "1".equals(agingKbn) && "200".equals(sging_stat))
// OM-2013-0003636対応 20131103 星野 MOD END
						{
							//エイジング回復
							msg = this.adchgCnclShijishoMapper.editInMsgEZM0111C020(param, e, workEZM0111B030[0]);
							HashMap<String, Object> wkMap = editInMsgCmn(param, msg);
							Map<?, ?> rslt = (new ServiceComponentRequestInvoker()).run(wkMap, handle);
							adchgCnclShijishoMapper.editResultRPEZM0111C020(rslt, param, fixedText, idx);
							errChk(rslt);

						}
					}
				}
			}
		}
	}


	/**
	 * エイジング終了対象リスト登録処理
	 * 
	 * @param agingEndList エイジング終了対象リスト
	 * @param aging_sbt エイジング種別コード（CD00412）
	 * @param aging_value エイジング対象値
	 * @return エイジング終了対象リスト
	 * @since 2012-07-07 ST2-2012-0001346対応
	 */
	private List<Map<String, String>> addArrayListSafety(List<Map<String, String>> agingEndList, String aging_sbt, String aging_value)
	{
		if (!(null == aging_value || "".equals(aging_value)))
		{
			HashMap<String, String> xmap = new HashMap<String,String>();
			xmap.put(aging_sbt, aging_value);
			agingEndList.add(xmap);
		}
		
		return agingEndList;
	}


	/**
	 * サービスインタフェースの実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param rsltMap マッピング後のデータ
	 * @param mapKey マップキーリスト
	 * @return 実行結果
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> runShokai(SessionHandle handle, HashMap<String, Object> rsltMap, String[] mapKey)
	throws Throwable
	{
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap<String, Object>rsltList = new HashMap();

		for (int i = 0; i < mapKey.length; i++)
		{
			ArrayList wkMapArray = (ArrayList)rsltMap.get(mapKey[i]);
			ArrayList wkRsltArray = new ArrayList();
			if (wkMapArray != null)
			{
				for (int j = 0; j < wkMapArray.size(); j++)
				{
					Map<?, ?> rslt = null;
					HashMap<String, Object> wkMap = (HashMap)wkMapArray.get(j);
					if (wkMap != null)
					{
						rslt = scCall.run(wkMap, handle);
						errChk(rslt);
					}
					wkRsltArray.add(rslt);
				}
			}
			rsltList.put(mapKey[i], wkRsltArray);
		}

		return rsltList;
	}


	/**
	 * 一意照会、一覧照会のマッピング処理です。（1回目）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param userDataIndex param内の業務データのインデックス
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokai(IRequestParameterReadOnly param, String fixedText, int userDataIndex)
	throws Throwable
	{
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;

		// お客様一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgECK0011A010(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_ECK0011A010, wkMapArray);
		
		// 申込明細一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0021A010(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0021A010, wkMapArray);
		
		// サービス契約一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0081A010(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0081A010, wkMapArray);
		
		// 引継元情報サービス契約一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0081B006(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0081B006, wkMapArray);
		
		// サービス契約内訳一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0161B004(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0161B004, wkMapArray);
		
		// オプションサービス契約一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0351B002(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0351B002, wkMapArray);
		
		// 機器提供サービス契約一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0341B002(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0341B002, wkMapArray);
		
		// 連絡先一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgECK0201B001(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_ECK0201B001, wkMapArray);
		
		// サービス契約回線内訳一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0241B001(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0241B001, wkMapArray);
		
		// 割引サービス契約一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0451B001(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0451B001, wkMapArray);

		//↓↓↓2012-05-16追加　巻@　通知書CC取込み対応↓↓↓
		// 通知書一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0561B001(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0561B001, wkMapArray);
		//↑↑↑2012-05-16追加　巻@　通知書CC取込み対応↑↑↑

		// 2012/08/22 ST2-2012-0001574 ADD START
		// 一時金設定一覧照会(サービス契約番号指定)
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK1021B501(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK1021B501, wkMapArray);
		// 2012/08/22 ST2-2012-0001574 ADD END

		
// ANK0546-00-00 2012-09-24 ADD_START
//		wkMapArray = new ArrayList();
//		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK2541B004(param, fixedText, userDataIndex);
//		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
//		wkMapArray.add(rslt);
//		rsltShokaiMap.put(MAP_KEY_EKK2541B004, wkMapArray);
// ANK0546-00-00 2012-09-24 ADD_END
		
		return rsltShokaiMap;
	}

	/**
	 * 一意照会、一覧照会のマッピング処理です。（2回目）
	 * 一意照会、一覧照会（1回目）の実行結果から他の一意照会、一覧照会を実施する際のマッピング処理です。
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokai2(IRequestParameterReadOnly param, 
													String fixedText, 
													int userDataIndex,
													HashMap<String, Object> rsltShokai)
	throws Throwable
	{
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		CAANMsg[] workEKK0021A010 = null;	// 申込明細一意照会
		CAANMsg[] workEKK0351B002 = null;	// オプションサービス契約一覧照会
		CAANMsg[] workEKK0341B002 = null;	// 機器提供サービス契一覧照会
		CAANMsg[] workEKK0451B001 = null;	// 割引サービス契約一覧照会
		CAANMsg[] workEKK0241B001 = null;	// サービス契約回線内訳一覧照会
// ANK0546-00-00 2012-09-24 ADD_START
		CAANMsg[] workEKK2541B004 = null;	// 割賦契約一覧照会(サービス契約番号)
// ANK0546-00-00 2012-09-24 ADD_END
		
		// 一意照会、一覧照会の結果データを取得
		workEKK0021A010 = getWorkParentData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0021A010);
		workEKK0351B002 = getWorkParentData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0351B002);
		workEKK0341B002 = getWorkParentData(EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0341B002);
		workEKK0451B001 = getWorkParentData(EKK0451B001CBSMsg.EKK0451B001CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0451B001);
		workEKK0241B001 = getWorkParentData(EKK0241B001CBSMsg.EKK0241B001CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0241B001);
// ANK0546-00-00 2012-09-24 ADD_START
//		workEKK2541B004 = getWorkParentData(EKK2541B004CBSMsg.EKK2541B004CBSMSG1LIST, rsltShokai, MAP_KEY_EKK2541B004);
// ANK0546-00-00 2012-09-24 ADD_END
		
		// 申込一意照会
		wkMapArray = new ArrayList();
		if (workEKK0021A010 != null)
		{
			for (int i = 0; i < workEKK0021A010.length; i++)
			{
				CAANMsg childTemplate = workEKK0021A010[i];
				wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0011A010(param, fixedText, userDataIndex, childTemplate);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0011A010, wkMapArray);

		// オプションサービス契約<サポート>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0351B002 != null)
		{
			for (int i = 0; i < workEKK0351B002.length; i++)
			{
				CAANMsg childTemplate = workEKK0351B002[i];
				
				if(isChkSvcKeiStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0391A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0391A010, wkMapArray);
		
		// 機器提供サービス契約一意照会(サービス契約番号)
		wkMapArray = new ArrayList();
		if (workEKK0341B002 != null)
		{
			for (int i = 0; i < workEKK0341B002.length; i++)
			{
				CAANMsg childTemplate = workEKK0341B002[i];
				
				if(isChkSvcKeiStat(childTemplate.getString(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0341A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0341A010, wkMapArray);
		
		// サブオプションサービス契約一覧照会
		wkMapArray = new ArrayList();
		if (workEKK0351B002 != null) 
		{
			for (int i = 0; i < workEKK0351B002.length; i++)
			{
				CAANMsg childTemplate = workEKK0351B002[i];
				
				if(isChkSvcKeiStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0401B001(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0401B001, wkMapArray);
		
		// 割引サービス契約一意照会
		wkMapArray = new ArrayList();
		if (workEKK0451B001 != null)
		{
			for (int i = 0; i < workEKK0451B001.length; i++)
			{
				CAANMsg childTemplate = workEKK0451B001[i];
				
				if(isChkWribSvcKeiStat(childTemplate.getString(EKK0451B001CBSMsg1List.WRIB_SVC_KEI_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0451A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0451A010, wkMapArray);
		
		// サービス契約回線内訳一意照会
		wkMapArray = new ArrayList();
		if (workEKK0241B001 != null)
		{
			for (int i = 0; i < workEKK0241B001.length; i++)
			{
				CAANMsg childTemplate = workEKK0241B001[i];
				
				if(isChkSvcKeiKaisenStat(childTemplate.getString(EKK0241B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0251A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0251A010, wkMapArray);

		//↓↓↓2012-02-16追加↓↓↓	ST2-2012-0000185対応
		CAANMsg[] workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
		String idoDiv = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.IDO_DIV);

		// 進捗一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK1091B001(param, fixedText, userDataIndex, idoDiv);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK1091B001, wkMapArray);
		//↑↑↑2012-02-16追加↑↑↑

		
// ANK0546-00-00 2012-09-24 ADD_START
		// 割賦契約一意照会
//		wkMapArray = new ArrayList();
//		if (workEKK2541B004 != null)
//		{
//			for (int i = 0; i < workEKK2541B004.length; i++)
//			{
//				CAANMsg childTemplate = workEKK2541B004[i];
				
//				wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK2541A010(param, fixedText, userDataIndex, childTemplate);
//				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
//				wkMapArray.add(rslt);
//			}
//		}
//		rsltShokaiMap.put(MAP_KEY_EKK2541A010, wkMapArray);
// ANK0546-00-00 2012-09-24 ADD_END

		return rsltShokaiMap;
	}

	/**
	 * 一意照会、一覧照会のマッピング処理です。（eo光ネット個別分）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiHNet(IRequestParameterReadOnly param, 
													String fixedText, 
													int userDataIndex,
													HashMap<String, Object> rsltShokai)
	throws Throwable
	{
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		CAANMsg[] workEKK0161B004 = null;	// サービス契約内訳一覧照会
		CAANMsg[] workEKK0351B002 = null;	// オプションサービス契約一覧照会
		ArrayList<HashMap> workEKK0401B001Array = null; // サブオプションサービス契約一覧照会
		
		// 一意照会、一覧照会の結果データを取得
		workEKK0161B004 = getWorkParentData(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0161B004);
		workEKK0351B002 = getWorkParentData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0351B002);
		workEKK0401B001Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0401B001);

		// サービス契約<eo光ネット>一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0091A010(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0091A010, wkMapArray);
// OM-2018-0000653 2018/09/13 ADD START
		// INPUTの申込明細番号（ネット）
		HashMap userMap = (HashMap)param.getData(fixedText);
		String mskmDtlNoNet = (String)userMap.get("mskm_dtl_no_net");
//OM-2018-0000653 2018/09/13 ADD END
		
		// サービス契約内訳<eo光ネット>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0161B004 != null) 
		{
			for (int i = 0; i < workEKK0161B004.length; i++)
			{
				CAANMsg childTemplate = workEKK0161B004[i];
				
// OM-2018-0000653 2018/09/13 MOD START
//				if(isChkSvcKeiStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
				// サービス契約内訳の申込明細番号
				String mskmDtlNo = childTemplate.getString(EKK0161B004CBSMsg1List.MSKM_DTL_NO);
				if (isChkSvcKeiStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)) && 
						!JKKStringUtil.isNullBlank(mskmDtlNoNet) && mskmDtlNoNet.equals(mskmDtlNo))
// OM-2018-0000653 2018/09/13 MOD END
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0171A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		
		rsltShokaiMap.put(MAP_KEY_EKK0171A010, wkMapArray);
		
		// オプションサービス契約<ISP>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0351B002 != null) 
		{
			for (int i = 0; i < workEKK0351B002.length; i++)
			{
				CAANMsg childTemplate = workEKK0351B002[i];
				
				if(isChkSvcKeiStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0361A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0361A010, wkMapArray);
		
		// サブオプションサービス契約＜ISP＞一意照会
		wkMapArray = new ArrayList();
		if (workEKK0401B001Array != null) 
		{
			for (int i = 0; i < workEKK0401B001Array.size(); i++)
			{
				CAANMsg[] workEKK0401B001 = getWorkData(EKK0401B001CBSMsg.EKK0401B001CBSMSG1LIST, (Map)workEKK0401B001Array.get(i));
				for (int j = 0; j < workEKK0401B001.length; j++)
				{
					CAANMsg childTemplate = workEKK0401B001[j];
					
// OM-2018-0000653 2018/09/13 MOD START
//					if(isChkSvcKeiStat(childTemplate.getString(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT)))
					// サブオプションサービス契約の申込明細番号
					String mskmDtlNo = childTemplate.getString(EKK0401B001CBSMsg1List.MSKM_DTL_NO);
					if (isChkSvcKeiStat(childTemplate.getString(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT)) &&
							!JKKStringUtil.isNullBlank(mskmDtlNoNet) && mskmDtlNoNet.equals(mskmDtlNo))
// OM-2018-0000653 2018/09/13 MOD END
					{
						wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0411A010(param, fixedText, userDataIndex, childTemplate);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0411A010, wkMapArray);

		return rsltShokaiMap;
	}

	/**
	 * 一意照会、一覧照会のマッピング処理です。（eo光Tv個別分）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai param内の業務データのインデックス
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiHTv(IRequestParameterReadOnly param, 
													String fixedText, 
													int userDataIndex,
													HashMap<String, Object> rsltShokai)
	throws Throwable
	{
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		CAANMsg[] workEKK0161B004 = null;	// サービス契約内訳一覧照会
		CAANMsg[] workEKK0351B002 = null;	// オプションサービス契約一覧照会
		ArrayList<HashMap> workEKK0401B001Array = null; // サブオプションサービス契約一覧照会

		// 一意照会、一覧照会の結果データを取得
		workEKK0161B004 = getWorkParentData(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0161B004);
		workEKK0351B002 = getWorkParentData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0351B002);
		workEKK0401B001Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0401B001);

		// サービス契約<eo光TV>一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0101A010(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0101A010, wkMapArray);
		
		// サービス契約内訳<eo光TV>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0161B004 != null) 
		{
			for (int i = 0; i < workEKK0161B004.length; i++)
			{
				CAANMsg childTemplate = workEKK0161B004[i];
				
				if(isChkSvcKeiStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0181A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0181A010, wkMapArray);
		
		// オプションサービス契約<TV>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0351B002 != null) 
		{
			for (int i = 0; i < workEKK0351B002.length; i++)
			{
				CAANMsg childTemplate = workEKK0351B002[i];
				
				if(isChkSvcKeiStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0381A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0381A010, wkMapArray);
		
		// サブオプションサービス契約＜TV＞一意照会
		wkMapArray = new ArrayList();
		if (workEKK0401B001Array != null) 
		{
			for (int i = 0; i < workEKK0401B001Array.size(); i++)
			{
				CAANMsg[] workEKK0401B001 = getWorkData(EKK0401B001CBSMsg.EKK0401B001CBSMSG1LIST, (Map)workEKK0401B001Array.get(i));
				for (int j = 0; j < workEKK0401B001.length; j++)
				{
					CAANMsg childTemplate = workEKK0401B001[j];

					if(isChkSvcKeiStat(childTemplate.getString(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT)))
					{
						wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0421A010(param, fixedText, userDataIndex, childTemplate);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0421A010, wkMapArray);

		return rsltShokaiMap;
	}

	/**
	 * 一意照会、一覧照会のマッピング処理です。（eo光電話個別分）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiHTel(IRequestParameterReadOnly param, 
													String fixedText, 
													int userDataIndex,
													HashMap<String, Object> rsltShokai)
	throws Throwable
	{
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		CAANMsg[] workEKK0161B004 = null;	// サービス契約内訳一覧照会
		CAANMsg[] workEKK0351B002 = null;	// オプションサービス契約一覧照会
		ArrayList<HashMap> workEKK0401B001Array = null; // サブオプションサービス契約一覧照会
		CAANMsg[] workEKK0081A010 = null;	// サービス契約一意照会
		CAANMsg[] workEKK0241B001 = null;	// サービス契約回線内訳一覧照会

		// 一意照会、一覧照会の結果データを取得
		workEKK0161B004 = getWorkParentData(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0161B004);
		workEKK0351B002 = getWorkParentData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0351B002);
		workEKK0401B001Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0401B001);
		workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
		workEKK0241B001 = getWorkParentData(EKK0241B001CBSMsg.EKK0241B001CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0241B001);

		// サービス契約<eo光電話>一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0111A010(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0111A010, wkMapArray);
		
		// サービス契約内訳<eo光電話>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0161B004 != null) 
		{
			for (int i = 0; i < workEKK0161B004.length; i++)
			{
				CAANMsg childTemplate = workEKK0161B004[i];
				
				// ANK-3264-00-00 ADD START
				// INPUTの申込明細番号（電話）
				HashMap userMap = (HashMap)param.getData(fixedText);
				String mskmDtlNoTel = (String)userMap.get("mskm_dtl_no_tel");
				
				// サービス契約内訳の申込明細番号
				String mskmDtlNo = childTemplate.getString(EKK0161B004CBSMsg1List.MSKM_DTL_NO);
				
				if (!JKKStringUtil.isNullBlank(mskmDtlNoTel) && mskmDtlNoTel.equals(mskmDtlNo))
				{
				// ANK-3264-00-00 ADD END
//				if(isChkSvcKeiStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
//				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0191A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
//				}
				// ANK-3264-00-00 ADD START
				}
				// ANK-3264-00-00 ADD END
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0191A010, wkMapArray);
		
		// オプションサービス契約<電話>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0351B002 != null) 
		{
			for (int i = 0; i < workEKK0351B002.length; i++)
			{
				CAANMsg childTemplate = workEKK0351B002[i];

				if(isChkSvcKeiStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0371A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0371A010, wkMapArray);
		
		// サブオプションサービス契約＜電話＞一意照会
		wkMapArray = new ArrayList();
		if (workEKK0401B001Array != null) 
		{
			for (int i = 0; i < workEKK0401B001Array.size(); i++)
			{
				CAANMsg[] workEKK0401B001 = getWorkData(EKK0401B001CBSMsg.EKK0401B001CBSMSG1LIST, (Map)workEKK0401B001Array.get(i));
				for (int j = 0; j < workEKK0401B001.length; j++)
				{
					CAANMsg childTemplate = workEKK0401B001[j];
					
					if(isChkSvcKeiStat(childTemplate.getString(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT)))
					{
						wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0431A010(param, fixedText, userDataIndex, childTemplate);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0431A010, wkMapArray);
		
		// 2012-06-23 ADD_START
		// サービス契約_工事案件一覧照会(基本工事取得)
		wkMapArray = new ArrayList();
		if (workEKK0241B001 != null)
		{
			for (int i = 0; i < workEKK0241B001.length; i++)
			{
				CAANMsg childTemplate = workEKK0241B001[i];
				
				wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKU0081B020(param, fixedText, userDataIndex, childTemplate, workEKK0081A010[0]);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKU0081B020, wkMapArray);
		// 2012-06-23 ADD_END

		return rsltShokaiMap;
	}

	/**
	 * 一意照会、一覧照会のマッピング処理です。（eoモバイル個別分）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiMoba(IRequestParameterReadOnly param, 
													String fixedText, 
													int userDataIndex,
													HashMap<String, Object> rsltShokai)
	throws Throwable
	{
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		CAANMsg[] workEKK0161B004 = null;	// サービス契約内訳一覧照会
		CAANMsg[] workEKK0351B002 = null;	// オプションサービス契約一覧照会
		ArrayList<HashMap> workEKK0401B001Array = null; // サブオプションサービス契約一覧照会

		// 一意照会、一覧照会の結果データを取得
		workEKK0161B004 = getWorkParentData(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0161B004);
		workEKK0351B002 = getWorkParentData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0351B002);
		workEKK0401B001Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0401B001);

		// サービス契約<eoモバイル>一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0121A010(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0121A010, wkMapArray);
		
		// サービス契約内訳<eoモバイル>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0161B004 != null) 
		{
			for (int i = 0; i < workEKK0161B004.length; i++)
			{
				CAANMsg childTemplate = workEKK0161B004[i];
				if(isChkSvcKeiStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0201A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0201A010, wkMapArray);
		
		// オプションサービス契約<ISP>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0351B002 != null) 
		{
			for (int i = 0; i < workEKK0351B002.length; i++)
			{
				CAANMsg childTemplate = workEKK0351B002[i];
	
				if(isChkSvcKeiStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0361A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0361A010, wkMapArray);
		
		// サブオプションサービス契約＜ISP＞一意照会
		wkMapArray = new ArrayList();
		if (workEKK0401B001Array != null) 
		{
			for (int i = 0; i < workEKK0401B001Array.size(); i++)
			{
				CAANMsg[] workEKK0401B001 = getWorkData(EKK0401B001CBSMsg.EKK0401B001CBSMSG1LIST, (Map)workEKK0401B001Array.get(i));
				for (int j = 0; j < workEKK0401B001.length; j++)
				{
					CAANMsg childTemplate = workEKK0401B001[j];
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0411A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0411A010, wkMapArray);
		
		return rsltShokaiMap;
	}

	/**
	 * 一意照会、一覧照会のマッピング処理です。（eoAdsl個別分）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiAdsl(IRequestParameterReadOnly param, 
													String fixedText, 
													int userDataIndex,
													HashMap<String, Object> rsltShokai)
	throws Throwable
	{
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		CAANMsg[] workEKK0161B004 = null;	// サービス契約内訳一覧照会
		CAANMsg[] workEKK0351B002 = null;	// オプションサービス契約一覧照会
		ArrayList<HashMap> workEKK0401B001Array = null; // サブオプションサービス契約一覧照会

		// 一意照会、一覧照会の結果データを取得
		workEKK0161B004 = getWorkParentData(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0161B004);
		workEKK0351B002 = getWorkParentData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0351B002);
		workEKK0401B001Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0401B001);

		// サービス契約<eoADSL>一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0141A010(param, fixedText, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0141A010, wkMapArray);
		
		// サービス契約内訳<eoADSL>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0161B004 != null) 
		{
			for (int i = 0; i < workEKK0161B004.length; i++)
			{
				CAANMsg childTemplate = workEKK0161B004[i];
				if(isChkSvcKeiStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0221A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0221A010, wkMapArray);
		
		// オプションサービス契約<ISP>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0351B002 != null) 
		{
			for (int i = 0; i < workEKK0351B002.length; i++)
			{
				CAANMsg childTemplate = workEKK0351B002[i];
				if(isChkSvcKeiStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0361A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0361A010, wkMapArray);
		
		// サブオプションサービス契約＜ISP＞一意照会
		wkMapArray = new ArrayList();
		if (workEKK0401B001Array != null) 
		{
			for (int i = 0; i < workEKK0401B001Array.size(); i++)
			{
				CAANMsg[] workEKK0401B001 = getWorkData(EKK0401B001CBSMsg.EKK0401B001CBSMSG1LIST, (Map)workEKK0401B001Array.get(i));
				for (int j = 0; j < workEKK0401B001.length; j++)
				{
					CAANMsg childTemplate = workEKK0401B001[j];
					wkCaanMsgList = adchgCnclSijishoShokaiMapper.editInMsgEKK0411A010(param, fixedText, userDataIndex, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0411A010, wkMapArray);

		return rsltShokaiMap;
	}

	
	/**
	 * 照査取消時のeo光ネットのマッピング処理です。
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @return 実行結果
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShosaClHNet(IRequestParameterReadWrite param, 
														String fixedText,
														int userDataIndex,
														HashMap<String, Object> rsltShokai) 
	throws RequestParameterException
	{
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK0091A010Array = null;	// サービス契約<eo光ネット>一意照会
		ArrayList<HashMap> workEKK0171A010Array = null;	// サービス契約内訳<eo光ネット>一意照会
		ArrayList<HashMap> workEKK0361A010Array = null;	// オプションサービス契約<ISP>一意照会
		ArrayList<HashMap> workEKK0411A010Array = null;	// サブオプションサービス契約＜ISP＞一意照会

		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		
		// 一意照会、一覧照会の結果データを取得
		workEKK0091A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0091A010);
		workEKK0171A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0171A010);
		workEKK0361A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0361A010);
		workEKK0411A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0411A010);

		//↓↓↓2012-05-16追加　巻@　指示書CC取込み対応↓↓↓
		String[] svcKeiUcwkNo = new String[workEKK0171A010Array.size()];
		int pos = 0;
// OM-2014-0000320 2014.02.04 Y.Kanata MOD START
// 解約済みオプションが存在する場合を想定できておらずExceptionとなったため対応
//		String[] opSvcKeiNoB001 = new String[workEKK0171A010Array.size()*5];
//		int posB001 = 0;
//		String[] opSvcKeiNoB002 = new String[workEKK0171A010Array.size()*5];
//		int posB002 = 0;
		// オプション格納配列の大きさをオプション一覧照会の結果で初期化する。
		int aryInitSize = 0;
		if (workEKK0361A010Array == null || workEKK0361A010Array.size() == 0) {
			// オプション一覧照会の結果が無い場合は修正前ロジックと同じ大きさで初期化しておく。
			aryInitSize = workEKK0171A010Array.size() * 5;
		} else {
			// オプション一覧照会のsizeで初期化する。
			aryInitSize = workEKK0361A010Array.size();
		}
		String[] opSvcKeiNoB001 = new String[aryInitSize];
		int posB001 = 0;
		String[] opSvcKeiNoB002 = new String[aryInitSize];
		int posB002 = 0;
// OM-2014-0000320 2014.02.04 Y.Kanata MOD END
		//↑↑↑2012-05-16追加　巻@　指示書CC取込み対応↑↑↑

		// サービス契約内訳<eo光ネット>照査取消
		wkMapArray = new ArrayList();
		if (workEKK0171A010Array != null) 
		{
			for (int i = 0; i < workEKK0171A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0171A010CBSMsg.EKK0171A010CBSMSG1LIST, (Map)workEKK0171A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					svcKeiUcwkNo[pos++] = wkTenplates[j].getString(EKK0171A010CBSMsg1List.SVC_KEI_UCWK_NO);	//←←←2012-05-16追加　巻@　指示書CC取込み対応
				}
			}
		}

		// オプションサービス契約<ISP>照査取消
		wkMapArray = new ArrayList();
		if (workEKK0361A010Array != null) 
		{
			for (int i = 0; i < workEKK0361A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST, (Map)workEKK0361A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					//↓↓↓2012-05-16追加　巻@　指示書CC取込み対応↓↓↓
					String op_svc_cd = getValuableData(rsltShokai, MAP_KEY_EKK0351B002, 
							EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST,
							EKK0351B002CBSMsg1List.OP_SVC_KEI_NO, childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO), 
							EKK0351B002CBSMsg1List.OP_SVC_CD);
					if (JKKStrConst.OP_SVC_CD_EMAIL.equals(op_svc_cd))		//Ｅメールオプション？
					{
						opSvcKeiNoB001[posB001++] = childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO);
					}
					else if (JKKStrConst.OP_SVC_CD_MYHOMEPAGE.equals(op_svc_cd))		//Myホームページオプション？
					{
						opSvcKeiNoB002[posB002++] = childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO);
					}
					//↑↑↑2012-05-16追加　巻@　指示書CC取込み対応↑↑↑
				}
			}
		}

		//連携データ区分 05 ：認証ＩＤの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param, JKKAdchgCancelShijishoConstCC.SJISHO_MAP, JKKAddSjishoConst.RENKEI_DATA_KBN_NINSHO_ID, JKKAddSjishoConst.TRN_KBN_UPD, 
				svcKeiUcwkNo, currentSysid);
		//連携データ区分 03 ：POPIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param, JKKAdchgCancelShijishoConstCC.SJISHO_MAP, JKKAddSjishoConst.RENKEI_DATA_KBN_POPID, JKKAddSjishoConst.TRN_KBN_UPD, 
				opSvcKeiNoB001, currentSysid);
		//連携データ区分 04 ：WEBIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param, JKKAdchgCancelShijishoConstCC.SJISHO_MAP, JKKAddSjishoConst.RENKEI_DATA_KBN_WEBID, JKKAddSjishoConst.TRN_KBN_UPD, 
				opSvcKeiNoB002, currentSysid);
		
		return rsltShosaMap;
	}

	


	
	/**
	 * 業務データの取得処理です。
	 * rsltShokaiに設定されているArrayListの1件目から業務データを取得します。
	 * <br>
	 * @param workMapKey 業務データのマップキー
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @param shokaiMapKey 一意照会、一覧照会のマップキー
	 * @return 業務データ
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getWorkParentData(String workMapKey, Map<String, Object> rsltShokai, String shokaiMapKey)
	{
		ArrayList wkRsltShokaiArray = null;
		CAANMsg[] templateArray = null;

		wkRsltShokaiArray = (ArrayList)rsltShokai.get(shokaiMapKey);
		
		if (null != wkRsltShokaiArray && 0 < wkRsltShokaiArray.size())
		{
			templateArray = getWorkData(workMapKey, (Map)wkRsltShokaiArray.get(0));
		}
		return templateArray;
	}

	/**
	 * 業務データの取得処理です。
	 * <br>
	 * @param workMapKey 業務データのマップキー
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @return 業務データ
	 */
	protected CAANMsg[] getWorkData(String workMapKey, Map<?, ?> rsltShokai)
	{
		CAANMsg[] templateArray = null;
		CAANMsg[] templates = (CAANMsg[])rsltShokai.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		templateArray = parentTemplate.getCAANMsgList(workMapKey);
		
		return templateArray;
	}

	/**
	 * サービス種別コードの取得処理です。
	 * サービスコード、料金グループコードからサービスを判定する。
	 * <br>
	 * @param svcCd サービスコード
	 * @param prcGrpCd 料金グループコード
	 * @return サービス種別コード
	 */
	private int getSvcSbtCd(String svcCd, String prcGrpCd)
	{
		int svcSbtCd = SVC_SBT_CD_HNET;
		
		if (svcCd.equals(SVC_CD_NET))
		{
			if (prcGrpCd.equals(PRC_GRP_CD_HOME) ||
				prcGrpCd.equals(PRC_GRP_CD_MEZON) ||
				prcGrpCd.equals(PRC_GRP_CD_MANS))
			{
				// eo光ネット
				svcSbtCd = SVC_SBT_CD_HNET;
			}
			else if (prcGrpCd.equals(PRC_GRP_CD_EACCESS) ||
				prcGrpCd.equals(PRC_GRP_CD_FU))
			{
				// eoADSL
				svcSbtCd = SVC_SBT_CD_ADSL;
			}
			else
			{
				// eoモバイル
				svcSbtCd = SVC_SBT_CD_MOBA;
			}
		}
		else if (svcCd.equals(SVC_CD_TEL))
		{
			// eo光電話
			svcSbtCd = SVC_SBT_CD_HTEL;
		}
		else
		{
			// eo光TV
			svcSbtCd = SVC_SBT_CD_HTV;
		}
		
		return svcSbtCd;
	}

	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param msg データ登録内容
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	private HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param, CAANMsg msg) 
	throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		/* SCインプット共通データ */
		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		
		// **********************************************
		// 【取得元：ユーザエリア(コントロールマップ)】
		// **********************************************
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		
		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = msg;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);
		
		return paramMap;
		
	}
	
	/**
	 * エラーチェック処理です。
	 * <br>
	 * @param msgList サービスインタフェース実行結果
	 * return void
	 * @throws SCCallException 
	 */
	private void errChk(Map<?, ?> msgList) 
	throws SCCallException
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// ステータス
		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);
		
		if ((0 != returnCode.intValue()) || (0 != templateStatus))
		{
			String errMsg = "INVALID_RETURN_MESSAGE";
			throw new SCCallException(errMsg, String.valueOf(returnCode), templateStatus);
		}
	}
	
	/**
	 * 各サービス契約ステータスが照査取消可能（照査済みor締結済み）か判定する。
	 *   各サービス契約…（サービス契約、サービス契約内訳、オプションサービス契約
	 *                     サブオプションサービス契約、機器提供サービス契約）
	 * 
	 * @param stat	ステータス
	 * @return True：照査取消処理可能　False：照査取消処理不可能
	 */
	private boolean isChkSvcKeiStat(String stat)
	{
		if (
				stat.equals(SVC_KEI_STAT_UKETUKE_ZUMI) ||
				stat.equals(SVC_KEI_STAT_SHOSA_ZUMI) ||
				stat.equals(SVC_KEI_STAT_CNC_ZUMI) ||
				stat.equals(SVC_KEI_STAT_SVCTK) ||
				stat.equals(SVC_KEI_STAT_DSL) ||
			stat.equals(SVC_KEI_STAT_CL))
		{
			return true;
		}
		
		return false;
	}

	/**
	 * 割引サービス契約が照査取消可能（受付済み）か判定する。
	 * 
	 * @param stat	ステータス
	 * @return True：照査取消処理可能　False：照査取消処理不可能
	 */
	private boolean isChkWribSvcKeiStat(String stat)
	{
		if (stat.equals(WRRIB_SVC_KEI_STAT_UK_ZUMI))
		{
			return true;
		}
		
		return false;
	}

	/**
	 * サービス契約回線内訳が使用可能（キャンセル済み以外）か判定する。
	 * 
	 * @param stat	ステータス
	 * @return True：使用可能　False：使用不可能
	 */
	private boolean isChkSvcKeiKaisenStat(String stat)
	{
		if (!stat.equals(SVC_KEI_KAISEN_UCWK_STAT_CL))
		{
			return true;
		}
		
		return false;
	}

	//↓↓↓2012-05-16更新　巻@　指示書CC取込み対応↓↓↓
	/**
	 * 
	 * @param rsltShokai
	 * @param map_key
	 * @param listNm
	 * @param keyNm
	 * @param keyVal
	 * @param gettableMapNm
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private String getValuableData(HashMap<String, Object> rsltShokai, 
			String map_key, String listNm, String keyNm, String keyVal,
			String gettableMapNm)
	{
		String ret = null;

		ArrayList workArray = (ArrayList)rsltShokai.get(map_key);
		for (int i = 0; i < workArray.size(); i++)
		{
			CAANMsg[] wkTemplates = getWorkData(listNm, (Map)workArray.get(i));
			for (int j = 0; j < wkTemplates.length; j++)
			{
				String srcVal = wkTemplates[j].getString(keyNm);
				if (keyVal.equals(srcVal))
				{
					ret = wkTemplates[j].getString(gettableMapNm);
					break;
				}
			}
		}
	
		return ret;
	}
	//↑↑↑2012-05-16更新　巻@　指示書CC取込み対応↑↑↑
	
	// ANK-0342-00-00 2012/07/24 start
	/**
	 * 宅内機器一意照会（４） を実行し 宅内機器基本Ｔ更新日付を取得する
	 */
	@SuppressWarnings("unchecked")
	private String getKihontUpdDttm(SessionHandle handle, IRequestParameterReadWrite param, 
			 String taknkiki_model_cd, String kiki_seizo_no) throws Throwable
	{
		
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		CAANMsg[] resultCaanMsgList = null;
		CAANMsg eKKA0020003CBSMsgCaanMsg = null;
		CAANMsg[] eKKA0020003CBSMsgCaanMsg2List = null;
		CAANMsg eKKA0020003CBSMsgCaanMsg2ListElement = null;
		ArrayList<HashMap> wkMapArray = null;
		ArrayList<HashMap> resultArray = null;
		HashMap<String, Object> resultArrayElement = null;
		HashMap<String, Object> rsltShokai = null;
		
		// 宅内機器一意照会（４）
		wkMapArray = new ArrayList();
		wkCaanMsgList = adchgCnclShijishoMapper.editInMsgEKKA0020003(param, taknkiki_model_cd, kiki_seizo_no);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKKA0020003, wkMapArray);

		// SIFコール
		rsltShokai = runShokai( handle, rsltShokaiMap, new String[]{MAP_KEY_EKKA0020003});
		
		//結果の取得
		resultArray = (ArrayList<HashMap>)rsltShokai.get(MAP_KEY_EKKA0020003);
		
		//結果がなければnull返却
		if(resultArray == null || resultArray.size()==0)
		{
			return null;
		}
		
		//結果の取得
		resultArrayElement = resultArray.get(0);
		resultCaanMsgList = (CAANMsg[])resultArrayElement.get("templates");
		
		eKKA0020003CBSMsgCaanMsg = resultCaanMsgList[0];
		eKKA0020003CBSMsgCaanMsg2List = eKKA0020003CBSMsgCaanMsg.getCAANMsgList(EKKA0020003CBSMsg.EKKA0020003CBSMSG2LIST);
		
		if(eKKA0020003CBSMsgCaanMsg2List == null || eKKA0020003CBSMsgCaanMsg2List.length == 0)
		{
			return null;
		}
		
		eKKA0020003CBSMsgCaanMsg2ListElement = eKKA0020003CBSMsgCaanMsg2List[0];

		HashMap<String, Object> eKKA0020003CBSMsg2 = eKKA0020003CBSMsgCaanMsg2ListElement.getMsgData();
		
		return (String)eKKA0020003CBSMsg2.get(EKKA0020003CBSMsg2List.KIHONT_UPD_DTTM);
	}
	// ANK-0342-00-00 2012/07/24 end

	/**
	 * 一時金設定変更処理です。
	 * 
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @return void
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void updIchijikin(SessionHandle handle, 	
								IRequestParameterReadWrite param, 
								String fixedText, 
								int userDataIndex,
								HashMap<String, Object> rsltShokai)
	throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		List<CAANMsg> wkCaanMsgList = null;
		HashMap<String, Object> wkMapEKK1021C010 = null;
		Map<?, ?> rsltEKK1021C010 = null;
		// 一時金設定一覧照会(サービス契約番号指定)取得
		ArrayList<HashMap> workEKK1021B501Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK1021B501);
		if (workEKK1021B501Array != null) 
		{
			for (int k = 0; k < workEKK1021B501Array.size(); k++)
			{
				// 取得情報すべてに対して一時金設定変更処理を行う
				CAANMsg[] wkTenplates = getWorkData(EKK1021B501CBSMsg.EKK1021B501CBSMSG1LIST, (Map)workEKK1021B501Array.get(k));
				for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
				{
					wkCaanMsgList = this.adchgCnclShijishoMapper.editInMsgEKK1021C010(param, wkTenplates[j]);
					wkMapEKK1021C010 = editInMsgCmn(param, wkCaanMsgList.get(0));
					rsltEKK1021C010 = scCall.run(wkMapEKK1021C010, handle);
					this.adchgCnclShijishoMapper.editResultRPEKK1021C010(rsltEKK1021C010, param, fixedText, userDataIndex);
					errChk(rsltEKK1021C010);
				}
			}
		}
	}
	
		/**
	 * オブジェクトに値が設定されているか判定する
	 * 
	 * @param arg0 判定するオブジェクト
	 * @return オブジェクトに値が設定されていない場合はtrue
	 */
	private boolean isNull(Object arg0) 
	{
		if (arg0 == null) 
		{
			return true;
		}

		return 0 == arg0.toString().length();
	}
	
	private String getSvcKeiUcwkStat(String svc_kei_ucwk_no,HashMap<String, Object> rsltShokai)
	{
		CAANMsg[] workEKK0161B004 = getWorkParentData(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0161B004);
		
		String ucwk_stat = "";
		for(int i = 0 ; i < workEKK0161B004.length ; i++)
		{
			String ucwk_no = workEKK0161B004[i].getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
			if(ucwk_no.equals(svc_kei_ucwk_no))
			{
				ucwk_stat = workEKK0161B004[i].getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
				break;
			}
		}
		
		return ucwk_stat;
	}
	
// OM-2013-0003636対応 20131103 星野 ADD START
	private String getSvcKeiUcwkStatTelWithKK2101(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String svc_kei_ucwk_no,HashMap<String, Object> rsltShokai) throws Exception
	{
		// サービス契約内訳ステータスの取得
		String ucwk_stat = getSvcKeiUcwkStat(svc_kei_ucwk_no, rsltShokai);
		// 既にキャンセル済or解約済の場合、そのまま返却
		if(SVC_KEI_STAT_CL.equals(ucwk_stat) || SVC_KEI_STAT_DSL.equals(ucwk_stat)){
			return ucwk_stat;
		}
		
		// 住所変更明細一覧照会リスト（内訳レコード）の取得
		ArrayList<HashMap<String, Object>> kk2101_b001_list = getEKK2101B001List(handle, param, fixedText);
		
		if(kk2101_b001_list != null){
			for(HashMap<String, Object> kk2101_b001_map : kk2101_b001_list){
				String chafSkbtNo = (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
				String chbfSkbtNo = (String)kk2101_b001_map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
				
				// 変更後識別番号と内訳番号が一致するものを探す
				if(!svc_kei_ucwk_no.equals(chafSkbtNo)){
					continue;
				}
				// 内訳番号が追加or変更となっている場合
				if( !StringUtils.isEmpty(chafSkbtNo) && !chafSkbtNo.equals(chbfSkbtNo) ){
					
					// 電話番号追加・番号変更の内訳は後続処理で論理削除されるため、今時点のサービス契約内訳ステータスは使えない。
					// キャンセル済み扱いとするため、きゃんせる済みステータスを返却
					return SVC_KEI_STAT_CL;
				}
			}
		}
		
		// ここまできたらそのまま返却
		return ucwk_stat;
	}
	
	private ArrayList<HashMap<String, Object>> getEKK2101B001List(
			SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
			throws RequestParameterException, SCException, Exception, CCException {
		/** 事前準備 */
		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();
		
		/** 住所変更明細スキーマデータの取得 */
		condMap.clear();
		condMap.put( JKKAdchgMapperCC.COND_KEY_SYSID, (String)paramMap.get("sysid") );
		condMap.put( JKKAdchgMapperCC.COND_KEY_ADCHG_NO, (String)paramMap.get("adchg_no") );
		condMap.put( JKKAdchgMapperCC.COND_KEY_ADCHG_DTL_SBT_CD, "02" );
		reqMap = mapper.setEKK2101B001( param, fixedText, condMap );
		resMap = scCall.run( reqMap, handle );
		ArrayList<HashMap<String, Object>> kk2101_b001_list = mapper.getEKK2101B001( param, fixedText, resMap );
		mapper.scResultCheck( param );
		return kk2101_b001_list;
	}
// OM-2013-0003636対応 20131103 星野 ADD END


}
