/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKSvkeiShosaCC
*   ソースファイル名：JKKSvkeiShosaCC.java
*   作成者          ：富士通
*   日付            ：2011年10月01日
*＜機能概要＞
*   サービス契約照査です。
*＜修正履歴＞
*   バージョン  修正日       修正者          修正内容
*   v4.00.00    2012/07/31   FJ）藤川        ANK0546-00-00、ANK0406-00-00
*   v4.00.01    2012/11/05   FJ）藤川        IT1-2012-0001749 工事ＣＣ呼出時エラーのマッピング漏れ
*   v5.00.00    2013/01/28   FJ) 横井        ANK-1306-00-00 一時金取消対応
*   v5.00.01    2013/02/19   FJ) 江藤        【ANK-1361-00-00】宅内機器管理システムへの「手動入力」フラグ連携
*   v5.00.02    2013/02/04   FJ）藤本        【ANK-1421-00-00】IP-STB
*   v7.00.00    2014/02/18   FJ）阮          【OM-2014-0000714】商用障害-多機能ルーターが無効状態時の処理
*   v7.01.00    2014/02/20   FJ）阮          【IT2-2014-0000132】IT2障害-旧機器（VA、RT）が複数存在時の機器オプション照査処理
*   v8.00.00    2014/02/17   FJ) 五十嵐      【ANK-1844-00-00】スマートバリューのOM4714関連改修
*   v8.01.00    2014/03/18   FJ）藤本        【OM-2013-0002656】対応履歴情報に「テスト用全機能利用権限者」と登録される
*   v9.00.00    2014/04/16   FJ）江藤        【ANK-2054-00-00】スマートリンク端末補償
*   v8.02.00    2014/06/20   FJ) 田中        【OM-2014-0001926】ホスティング契約が存在する場合契約者住所情報とコンテンツ住所情報を同期する
*  v10.00.00    2014/07/31   FJ) 江藤        【ANK-1918-00-00】ＵＳ管理Ｓ向けｅｏ顧客ＳのＩ／Ｆ改修
*  v10.01.00    2014/08/02   FJ）藤本        【ANK-2138-00-00】スマリン端末のトムソンケース同梱
*  v10.02.00    2014/08/09   FJ) 北谷        【IT1-2014-0000269】スマリン端末のトムソンケース同梱の条件追加
*  v10.03.00    2014/09/14   FJ) 田中        【OM-2014-0002974】対応
*  v12.00.00    2015/02/02   FJ) 江藤        【OM-2014-0003754】スマートバリューで解約通知前だと紐付け変更できない不具合対応
*  v12.00.00    2015/02/05   FJ) 鯵坂        【OM-2014-0000223】工事会社配送となるべき多機能ルータが、お客様直送になり出荷された
*  v15.00.00    2015/07/20   FJ) 谷口        【OM-2015-0001291】ネット契約照査完了のスマートバリュー異動通知を連携すると、KDDI側で取込みエラー
*  v26.00.00    2016/08/03   FJ) 松本        【ANK-2722-00-00】電話番号追加時の多機能OPステータス遷移条件の見直し
*  v27.00.00    2016/10/14   FJ) 阮          【ANK-2987-00-00】対応 
*  v27.01.00    2016/12/08   FJ) 柳          【ANK-3082-00-00】コンテンツ連絡用メールアドレス仮登録メールの文面変更
*  v28.00.00    2017/01/31   FJ) 江藤        【OM-2016-0001720】買取機器情報送信（ディレイド用）バッチ廃止
*  v31.00.00    2017/11/16   FJ) クウン      【ANK-3136-00-00】OPMSハードウエア保守切れ対応(STEP2-2)
*  v36.00.00    2018/01/23   FJ) 山地        【ANK-3296-00-00】標準工事費分割請求
*  v31.00.01    2018/06/22   FJ) 麻生        【IT1-2018-0000098】正常な設備流用時にチェックエラーが発生する
*  v31.00.02	2018/07/07	 FJ) 山地        【IT-2018-0000105】設備流用時のエラーメッセージ
*  v31.00.03    2018/07/10   FJ) 藤本        【IT2-2018-0000064】設備流用元の工事案件(撤去解約)に「設備流用有無」などが設定されていない
*  v31.00.04    2018/08/01   FJ) 三原        【IT1-2018-0000114】新規申込・照査前登録で登録した機器が消える
*  v31.00.05    2018/08/01   FJ) 三原        【IT1-2018-0000105】設備流用時のエラーメッセージ
*  v31.00.06    2018/08/16   FJ) 三原        【IT1-2018-0000105】設備流用時のエラーメッセージ
*  v40.00.00    2018/11/16   FJ) 舘山        【ANK-3412-00-00】５ギガ・１０ギガコース導入対応
*  v41.00.00    2019/01/25   FJ) 三原        【ANK-3387-00-00】マンションタイプ光コンセントサービス導入
*  v41.01.00	2019/04/16   FJ) 舘山        【OM-2019-0000362】対応横並び
*  v44.00.00	2019/06/20   FJ)澤田	      ANK-3652-00-00 光コンセントフォロー対応
*  v45.00.00	2019/09/06   FJ) 謝          【ANK-3714-00-00】既存eo電気へ回線番号を紐づけた際のセット割管理Sへの情報連携
*  v49.00.00	2020/03/27   FJ)西窪	     【ANK-3834-00-00】マルウェアブロッキング
*  v52.00.00	2021/01/06	 FJ) 西窪	 　　【ANK-3987-00-00】Netflix導入対応（STEP2）
*  v53.00.00	2021/04/21   GDC)デイブ    【ANK-4009-00-00】CX戦略WG方針対応（異動シェア分・バッチ）
*  v56.00.00	2021/10/15	FJ) 西窪	【ANK-4038-00-00】【eo定期】光ローゼット化対応
*  v57.00.00	2022/01/20   FJ) 杉本		 【ANK-4075-00-00】マンション卸回線(WI-FIスキーム)の不備対応
*  v59.00.00    2022/05/09   FJ) 三原        【OM-2021-0001122】番ポ工事詳細の利用場所の表示不正
*  v60.00.00	2022/08/02   FJ) 南          【ANK-4272-00-00】【eo】 スキームタイプ追加対応
*  v61.00.00    2022/11/06   FJ)宇野         【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
*  v61.00.01	2023/01/04	 FJ)澤田	 	 【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
*  v61.00.02	2023/06/19	 FJ)舘山         【ANK-4315-07-00】【eo定期】 eoホームゲートウェイ導入対応
*  v61.00.03	2023/09/19	 FJ) 藤本涼		 【IT1-2023-0000057】電話番号と機器の紐づき不備
*  v61.00.02	2023/11/13   FJ) 舘山   	 【IT1-2023-0000066】テレビにネット追加でシステムエラー
*  v71.00.09	2024/04/08   FJ) 森下        【ANK-4468-09-00】eo光ネット「シンプルプラン」追加対応 仕変9
*  v71.00.11	2024/05/10   FJ) 森下        【ANK-4468-11-00】eo光ネット「シンプルプラン」追加対応 仕変11
*  v72.00.00	2024/04/04	 FJ) 日岡	     【ANK-4494-00-00】【eo定期】 双方向番ポ対応
*  v71.00.09	2024/07/22   FJ) 森下        【ANK-4468-09-01】eo光ネット「シンプルプラン」追加対応 仕変9
*  v72.00.01	2024/08/24   FJ) 寺田        【ANK-4494-00-00】【eo定期】 双方向番ポ対応 STEP2
*  v72.00.00	2024/08/05   FJ) 森下        【ANK-4577-00-00】eo光ネット「シンプルプラン」追加対応(Step2)
*  v73.00.00	2024/09/24   FJ) 張          【ANK-4427-00-00】NTT卸対応
*  v72.00.00	2024/11/18   FJ) 森下        【IT1-2024-0000044】オプション引継のステータス変更
*  v73.01.00	2025/01/09   FJ) 星野        【IT2-2025-0000001】
*  v73.01.01	2025/03/10   FJ) 舘山        【#83584】HGW瑕疵内障害
*  v75.00.00	2025/02/19   FJ) 寺田        【ANK-4640-00-00】typeN：追加要件対応
*  v75.00.00	2025/04/17   FJ) 辻中        【ANK-4677-00-00】【eo】HGW導入対応フォロー７
**********************************************************************/

package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.fujitsu.futurity.bp.custom.constant.JKKAddBmpTaiorrkiConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKAddSjishoConst;
import com.fujitsu.futurity.bp.custom.constant.JKKKeiIdoKhCheckConstCC;  
import com.fujitsu.futurity.bp.custom.constant.JKKKojiAnkenConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKSmtvlIdoInfAddConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKSvcConst;
import com.fujitsu.futurity.bp.custom.constant.JKKSvkeiShosaChkConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKSvkeiShosaConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKTelnoInfoAddConstCC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0118_KKSV0118OP;
import com.fujitsu.futurity.bp.custom.constant.KKSV0118_KKSV0118OP_WORK;
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.BPMFlowException;
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.bpm.parameter.RequestParameter;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.JSYbpmLog;
import com.fujitsu.futurity.common.x01.sc.ErrorInfoMapKeys;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
import com.fujitsu.futurity.rule.common.JRuleXMLHandler;
import com.fujitsu.futurity.rule.xml.compare.JRuleXMLPattern;

import eo.common.constant.JCKStrConst;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKCommonUtil;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.*;
import eo.ejb.common.JKKModelConst;

/**
 * サービス契約照査処理です。<p>
 * <br>
 * @author FJ
 * @version 2012-06-06 番ポ工事登録本実装（ロット１）
 */
public class JKKSvkeiShosaCC extends JKKSvkeiShosaBaseCC
{
	/** 起動元コード */
	public static final String KIDO_CD_ON = "01";

	/**************************************************************************/
	/** 照査エラー種別コード                                                 **/
	/**************************************************************************/
	/** 照査エラー種別コード　お客様関連エラー */
	public static final String ERR_SBT_CD_CUST = "01";
	/** 照査エラー種別コード　申込関連エラー */
	public static final String ERR_SBT_CD_MSKM = "02";
	/** 照査エラー種別コード　サービス関連エラー */
	public static final String ERR_SBT_CD_SVC = "03";
	/** 照査エラー種別コード　利用場所関連エラー */
	public static final String ERR_SBT_CD_PLC = "04";
	/** 照査エラー種別コード　オプション関連エラー */
	public static final String ERR_SBT_CD_OP = "05";
	/** 照査エラー種別コード　機器関連エラー */
	public static final String ERR_SBT_CD_KIKI = "06";
	/** 照査エラー種別コード　割引関連エラー */
	public static final String ERR_SBT_CD_WRIB = "07";
	/** 照査エラー種別コード　請求関連エラー */
	public static final String ERR_SBT_CD_SEIKY = "08";
	/** 照査エラー種別コード　住所関連エラー */
	public static final String ERR_SBT_CD_AD = "09";
	/** 照査エラー種別コード　その他エラー */
	public static final String ERR_SBT_CD_OTR = "99";
	
	/** 照査対象コード */
	public static final String SHOSA_TRG_CD = "shosa_trg_cd";
	
	/** 照査結果コード */
	public static final String SHOSA_RLT_CD = "shosa_rlt_cd";
	
	/** 照査結果OK */
	public static final String SHOSA_RLT_OK = "0";
	
	/** 照査結果NG */
	public static final String SHOSA_RLT_NG = "1";
	
	/** 照査結果取消 */
	public static final String SHOSA_RLT_DL = "2";
	
//	/** 照査処理区分　01：オンライン */
//	private static final String SHOSA_TRN_DIV_ON = "01";
	
	/** 照査処理区分　02：バッチ */
	private static final String SHOSA_TRN_DIV_BT = "02";
	
	/** サービスコード　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";
	
	/**
	 * オプションサービスコード　B030：ADSLモデム(EM)
	 * @since 2012-07-06 IT2-2012-0001165対応
	 */
	public static final String OP_SVC_CD_ADSL_MODEM_EM = "B030";
	
	/** 連絡方法コード　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";
	
	/** 工事案件ステータス　130：受付済み */
	public static final String KOJIAK_STAT_UK_ZUMI = "130";
	
// 2012-11-06 IT1-2012-0001919 ADD_START
	/** 工事案件ステータス　110：なし */
	public static final String KOJIAK_STATE_NASI = "110";
	/** 工事案件ステータス　200：完了 */
	public static final String KOJIAK_STATE_END = "200";
	/** 工事案件ステータス　900：中止 */
	public static final String KOJIAK_STATE_CL = "900";
// 2012-11-06 IT1-2012-0001919 ADD_END
	
	/** 引継ぎ用工事案件番号 */
	private String kojiak_no = null;
	
	/** 場所番号 */
	private String place_no = null;
	
	/** 認証ID */
	private String ninsho_id = null;
	
	/** サービス契約回線内訳 */
	private String kisnNo = null;
	
	/** サービス契約回線内訳 */
	private String rekisnNo = null;

	// AMK-1578-00-00 ADD START
	/** SC呼び出し部品 */
	ServiceComponentRequestInvoker scCall = null;

	/** マッパークラス */
	protected JKKCancelSvcKeiMapperCC cancelSvcKeiMapper = null;
	// AMK-1578-00-00 ADD END

	// ANK0546-00-00 2012-07-31 ADD_START
	public static final String PCRS_CD_HBRID42M = "A60";
	// ANK0546-00-00 2012-07-31 ADD_END
	
	/** 回線コード　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; 


	/** 割引タイプコード　31：即割 */
	public static final String TYPE_CD_SOKUWR = "31";
	
	/** 割引タイプコード　20：ファミリーパック割引 */
	public static final String TYPE_CD_FAMIPA = "20";
	
	/** 割引種別コード　1：一時費用割引 */
	public static final String WRIB_SBT_CD_ICHIWR = "1";
	
	/** 割引タイプコード　2：月額費用割引 */
	public static final String WRIB_SBT_CD_GTGK = "2";
	
	/** 機器提供サービスコード ＯＮＵ */
	public static final String KKTK_SVC_C012 = "C012";
	
	/** 機器提供サービスコード Ｖ−ＯＮＵ */
	public static final String KKTK_SVC_C013 = "C013";
	
	// ANK0546-00-00 2012-07-31 ADD_START
	/** 機器提供サービスコード タブレット */
	public static final String KKTK_SVC_C021 = "C021";
	
	/** 機器提供サービスコード タブレット用クレードル */
	public static final String KKTK_SVC_C022 = "C022";
	
	/** 機器提供サービスコード 多機能ルーター */
	public static final String KKTK_SVC_C024 = "C024";
	// ANK-4315-00-00 ADD START
	/** 機器提供サービスコード HGW */
	public static final String KKTK_SVC_C025 = "C025";
	// ANK-4315-00-00 ADD END
	// ANK-4577-00-00 ADD START
	/** 機器提供サービスコード PLCモデム */
	public static final String KKTK_SVC_C015 = "C015";
	
	/** 料金コースコード 【管理用】PLCモデムコース（レンタル） */
	public static final String PCRS_CD_C26 = "C26";
	// ANK-4577-00-00 ADD END
	/** サービス開始時配送状況識別コード 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";
// ANK0546-00-00 2012-07-31 ADD_END
	
	/** 要求元アプリ種別コード　W：WEB */
	public static final String YOKYU_MT_APL_SBT_CD_WEB = "W";
	
	/** VLANオーダコード　01：VLAN */
	public static final String VLAN_ORDER_CD_VLAN = "01";
	
	/** 要求種別コード　02：新規 */
	public static final String YOKYU_SBT_CD_NEW = "02";
	
	/** VLANサーバコード　1：設備管理 */
	public static final String VLAN_SERVER_CD_1 = "1";
	
	/** 進捗ステータス　9610：工事予定情報取込 */
	public static final String PRG_STAT_KOJI_RSV_INFO_TRKM = "9610";
	
	/** エラー情報(SVIFから返却されるエラー情報のMapKey)  */
	private static final String ITEM_CHECK_ERRORS = "ITEM_CHECK_ERRORS";
	
	/** エラー返却項目　更新年月日時分秒(更新前) */
	private static final String ERR_ITEM_UPD_DTM_BF = "upd_dtm_bf";
	
	/** エラーフラグ　EA */
	private static final String ERR_FLG_EA = "EA";
// ANK-4009-00-00 DEL START
	// ANK-2987-00-00 2016/09/16 START
//	/** 申込形態コード　ＷＥＢ */
//	private static final String MKSM_FROM_CD_WEB = "01";
// ANK-4009-00-00 DEL END
	/** 機能コード　"1" */
	private static final String FUNC_CODE_1 = "1";
// ANK-4009-00-00 DEL START
//	/** 機能コード　"2" */
//	private static final String FUNC_CODE_2 = "2";
	
//	/** 機能コード　"3" */
//	private static final String FUNC_CODE_3 = "3";
// ANK-4009-00-00 DEL END
	/** 業務パラメータID：期日到来型削除スキーマ条件日数 */
	public static final String WORK_PARAM_ID_SAVE_PRD_CK0251 = "FU_SAVE_PRD_CK0251";
// ANK-4009-00-00 DEL START	
//	/** 業務パラメータID：アクセス認証キー項目長 */
//	private static final String KEY_CR_ACS_NSKEY_LEN = "CR_ACS_NSKEY_LEN";
//	
//	/** 業務パラメータID：アクセス認証キーＰＷ項目長 */
//	private static final String KEY_CR_ACS_NSKEY_PWD_LEN = "CR_ACS_NSKEY_PWD_LEN";
	// ANK-2987-00-00 2016/09/16 END
// ANK-4009-00-00 DEL END	
	// v31.00.04 IT1-2018-0000114 ADD START
	/** 業務パラメータ管理ID : KK_SBRY_DUMMY_ONU */
	private static final String WORK_PARAM_ID_KK_SBRY_DUMMY_ONU = "KK_SBRY_DUMMY_ONU";
	
	/** 業務パラメータ管理ID : KK_SBRY_DUMMY_VONU_VALUE */
	private static final String WORK_PARAM_ID_KK_SBRY_DUMMY_VONU = "KK_SBRY_DUMMY_V-ONU";
	// v31.00.04 IT1-2018-0000114 ADD END
	// ANK-4577-00-00 ADD START
	/** 業務パラメータ管理ID : KK_SBRY_DUMMY_HGW */
	private static final String WORK_PARAM_ID_KK_SBRY_DUMMY_HGW = "KK_SBRY_DUMMY_HGW";
	
	/** 業務パラメータ管理ID : KK_SBRY_DUMMY_TKNRT */
	private static final String WORK_PARAM_ID_KK_SBRY_DUMMY_TKNRT = "KK_SBRY_DUMMY_TKNRT";
	
	/** 業務パラメータ管理ID : KK_SBRY_DUMMY_MESH */
	private static final String WORK_PARAM_ID_KK_SBRY_DUMMY_MESH = "KK_SBRY_DUMMY_MESH";
	
	/** 業務パラメータ管理ID : KK_SBRY_DUMMY_MLAN */
	private static final String WORK_PARAM_ID_KK_SBRY_DUMMY_MLAN = "KK_SBRY_DUMMY_MLAN";
	// ANK-4577-00-00 ADD END
	
	// ANK-4494-00-00 ADD START
	/** 業務パラメータ管理ID : SC_ENUMSOD_DOMAIN */
	private static final String SC_ENUMSOD_DOMAIN = "SC_ENUMSOD_DOMAIN";

	/** 業務パラメータ管理ID : TU_BMP_TNT_TELNO */
	private static final String TU_BMP_TNT_TELNO = "TU_BMP_TNT_TELNO";
	// ANK-4494-00-00 ADD END
	
	/**************************************************************************/
	/** マップキー（一意照会系）                                             **/
	/**************************************************************************/
	/** 申込一意照会 */
	private static final String MAP_KEY_EKK0011A010 = "EKK0011A010";
	/** 申込明細一意照会 */
	private static final String MAP_KEY_EKK0021A010 = "EKK0021A010";
	/** サービス契約一意照会 */
	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";
	/** サービス契約内訳<eo光ネット>一意照会 */
	private static final String MAP_KEY_EKK0171A010 = "EKK0171A010";
	/** サービス契約内訳<eo光TV>一意照会 */
	private static final String MAP_KEY_EKK0181A010 = "EKK0181A010";
	/** サービス契約内訳<eo光電話>一意照会 */
	protected 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_EKK0251A010 = "EKK0251A010";
	/** オプションサービス契約一意照会 */
	private static final String MAP_KEY_EKK0351A010 = "EKK0351A010";
	/** オプションサービス契約<ISP>一意照会 */
	private static final String MAP_KEY_EKK0361A010 = "EKK0361A010";
	/** オプションサービス契約<電話>一意照会 */
	private static final String MAP_KEY_EKK0371A010 = "EKK0371A010";
	/** オプションサービス契約<TV>一意照会 */
	private static final String MAP_KEY_EKK0381A010 = "EKK0381A010";
	/** オプションサービス契約<サポート>一意照会 */
	private static final String MAP_KEY_EKK0391A010 = "EKK0391A010";
	/** サブオプションサービス契約＜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_EKK0341A010 = "EKK0341A010";
	/** 請求オプションサービス契約一意照会 */
	private static final String MAP_KEY_EKK0441A010 = "EKK0441A010";
	/** 割引サービス契約一意照会 */
	private static final String MAP_KEY_EKK0451A010 = "EKK0451A010";
	/** 請求契約一意照会 */
	private static final String MAP_KEY_EKK0491A010 = "EKK0491A010";
	/** 料金プラン一意照会 */
	protected static final String MAP_KEY_EKK0591A010 = "EKK0591A010";
	/** 提供方式契約一意照会 */
	private static final String MAP_KEY_EKK0891A010 = "EKK0891A010";
//	/** オーナー契約一意照会 */
//	private static final String MAP_KEY_EKK0871A010 = "EKK0871A010";
	/** 他事業者割引契約一意照会 */
	private static final String MAP_KEY_EKK2441A010 = "EKK2441A010";
	/** 割賦契約一意照会 */
	private static final String MAP_KEY_EKK2541A010 = "EKK2541A010";
	// AMK-1578-00-00 ADD START
	/** 機器オプションサービス契約一意照会 */
	protected static final String MAP_KEY_EKK2811A010 = "EKK2811A010";
	// AMK-1578-00-00 ADD END
	/** 法人連絡先一意照会 */
	private static final String MAP_KEY_ECK0041A010 = "ECK0041A010";
	/** 住所対象番号区画一意照会 */
	protected static final String MAP_KEY_EZM0091A010 = "EZM0091A010";
	/** 電話番号一意照会 */
	protected static final String MAP_KEY_EZM0121A010 = "EZM0121A010";
	/** 局番一意照会 */
	protected static final String MAP_KEY_EZM0301A010 = "EZM0301A010";
	/** 業務パラメータ一意照会 */
	private static final String MAP_KEY_EZM0321A010 = "EZM0321A010";
	// ANK-3296-00-00 ADD START
	/** 工事費割賦契約一意照会 */
	private static final String MAP_KEY_EKK3131A010 = "EKK3131A010";
	// ANK-3296-00-00 ADD END
	// AMK-4494-00-00 ADD START
	/** 業務パラメータ一意照会 ("SC_ENUMSOD_DOMAIN")*/
	static final String MAP_KEY_EZM0321A010_2 = "EZM0321A010_2";
	/** 業務パラメータ一意照会 ("TU_BMP_TNT_TELNO")*/
	static final String MAP_KEY_EZM0321A010_3 = "EZM0321A010_3";
	// AMK-4494-00-00 ADD END
	
	/**************************************************************************/
	/** マップキー（一覧照会系）                                             **/
	/**************************************************************************/
	/** サービス契約内訳一覧照会 */
	private static final String MAP_KEY_EKK0161B004 = "EKK0161B004";
	/** サービス契約回線内訳一覧照会 */
	protected static final String MAP_KEY_EKK0251B003 = "EKK0251B003";
	/** 支払方法情報請求契約一覧照会 */
	private static final String MAP_KEY_EKK0321B002 = "EKK0321B002";
	/** サービス対象機器提供サービス契約一覧照会 */
	private static final String MAP_KEY_EKK0341B022 = "EKK0341B022";
	/** 同一請求契約内配送待ち機器提供サービス契約一覧照会 */
	private static final String MAP_KEY_EKK0341B028 = "EKK0341B028";
	/** オプションサービス契約一覧照会（サービス契約番号） */
	private static final String MAP_KEY_EKK0351B002 = "EKK0351B002";
	/** サブオプションサービス契約一覧照会 */
	private static final String MAP_KEY_EKK0401B001 = "EKK0401B001";
	/** 請求オプションサービス契約一覧照会（複合検索） */
	private static final String MAP_KEY_EKK0441B002 = "EKK0441B002";
	/** 割引サービス契約一覧照会 */
	private static final String MAP_KEY_EKK0451B001 = "EKK0451B001";
	/** 請求契約一覧照会（SYSID） */
	private static final String MAP_KEY_EKK0491B005 = "EKK0491B005";
	/** マンション情報一覧照会（サービス契約番号） **/
	private static final String MAP_KEY_EKK0861B002 = "EKK0861B002";
	/** 一時金設定一覧照会(申込明細番号) */
	private static final String MAP_KEY_EKK1021B003 = "EKK1021B003";
	/** 進捗一覧照会 */
	private static final String MAP_KEY_EKK1091B001 = "EKK1091B001";
	/** 回線対象サービス契約一覧照会 */
	protected static final String MAP_KEY_EKK0241B002 = "EKK0241B002";
	/** 同一回線内訳使用スマートバリュー設定情報一覧照会 */
	private static final String MAP_KEY_EKK2441B001 = "EKK2441B001";
	/** 他事業者割引契約一覧照会 */
	private static final String MAP_KEY_EKK2441B002 = "EKK2441B002";
	/** 他事業者割引契約対象契約一覧照会 */
	private static final String MAP_KEY_EKK2451B001 = "EKK2451B001";
	// AMK-1578-00-00 ADD START
	/** 機器オプションサービス契約一覧照会（回線経由） */
	private static final String MAP_KEY_EKK2811B011 = "EKK2811B011";
	// AMK-1578-00-00 ADD END
	/** オプトインメール一覧照会 */
	private static final String MAP_KEY_ECK0141B002 = "ECK0141B002";
	/** 連絡先一覧照会 */
	private static final String MAP_KEY_ECK0201B001 = "ECK0201B001";
	/** 同番移転一覧照会 */
	protected static final String MAP_KEY_ETU0021B010 = "ETU0021B010";
// ANK-4494-00-00 Step2 廃止スキーマ対応 20241113 星野 DEL START
//	/** 番ポ工事申込事業所番号取得 */
//	protected static final String MAP_KEY_ETU0121B011 = "ETU0121B011";
// ANK-4494-00-00 Step2 廃止スキーマ対応 20241113 星野 DEL START
	/** エイジング一覧照会（ユニーク） */
	private static final String MAP_KEY_EZM0111B040 = "EZM0111B040";
	// 20140416 ANK-2054-00-00 ADD START
	/**  機器オプションサービス契約一覧照会（機器提供ＳＶ） */
	private static final String MAP_KEY_EKK2811B010 = "EKK2811B010";
	// 20140416 ANK-2054-00-00 ADD END
	// ANK-3834-00-00 ADD START
	/**  業務パラメータ管理一覧照会 */
	private static final String MAP_KEY_EZM0321B010 = "EZM0321B010";
	/** マンションプライベート料金コースリスト */
	private static List<String> mansPrvPcrsList = Arrays.asList(new String[]{"A47", "A48", "A49", "A67", "A68", "A78"});
	// ANK-3834-00-00 ADD END
	// ANK-4075-00-00 ADD START
	/** スキームタイプリスト */
	// ANK-4272-00-00 MOD START
	// private static List<String> scmTypeList = Arrays.asList(new String[]{"A", "B"});
	private static List<String> scmTypeList = Arrays.asList(new String[]{"A", "B", "C"});
	// ANK-4272-00-00 MOD END
	/**  業務パラメータ管理一覧照会 */
	private static final String MAP_KEY_EZM0321B010_02 = "EZM0321B010_02";
	// ANK-4075-00-00 ADD END
	// ANK-4468-09-00 ADD START
	/**  オプションサービス契約一覧照会（サービス契約番号）  */
	private static final String MAP_KEY_EKK0351B002_02 = "EKK0351B002_02";
	// ANK-4468-09-00 ADD END
	// AMK-4494-00-00 ADD START
	/**局番別NTT収容局一覧照会*/
	static final String MAP_KEY_ETU0101B020 = "ETU0101B020";	
	// AMK-4494-00-00 ADD END
	// AMK-4427-00-00 ADD START
	/**料金コース一覧照会*/
	static final String MAP_KEY_EKK0791B001 = "EKK0791B001";	
	// AMK-4427-00-00 ADD END
	

	/**************************************************************************/
	/** マップキー（更新系）                                                 **/
	/**************************************************************************/
	/** 申込明細照査・後続業務依頼 */
	private static final String MAP_KEY_EKK0021C060 = "EKK0021C060";
	/** サービス契約＜eo光ネット＞照査 */
	private static final String MAP_KEY_EKK0091C010 = "EKK0091C010";
	/** サービス契約＜eo光TV＞照査 */
	private static final String MAP_KEY_EKK0101C010 = "EKK0101C010";
	/** サービス契約＜eo光電話＞照査 */
	private static final String MAP_KEY_EKK0111C010 = "EKK0111C010";
	/** サービス契約＜eoモバイル＞照査 */
	private static final String MAP_KEY_EKK0121C010 = "EKK0121C010";
	/** サービス契約＜eoモバイル＞締結 */
	private static final String MAP_KEY_EKK0121C020 = "EKK0121C020";
	/** サービス契約＜eoADSL＞照査 */
	private static final String MAP_KEY_EKK0141C010 = "EKK0141C010";
	/** サービス契約＜eo光ネット＞締結 */
	private static final String MAP_KEY_EKK0091C020 = "EKK0091C020";
	/** サービス契約＜eo光電話＞締結 */
	private static final String MAP_KEY_EKK0111C020 = "EKK0111C020";
	/** サービス契約＜eoADSL＞締結 */
	private static final String MAP_KEY_EKK0141C020 = "EKK0141C020";
	/** サービス契約内訳<eo光ネット>照査 */
	private static final String MAP_KEY_EKK0171C010 = "EKK0171C010";
	/** サービス契約内訳<eo光TV>照査 */
	private static final String MAP_KEY_EKK0181C010 = "EKK0181C010";
	/** サービス契約内訳<eo光電話>照査 */
	private static final String MAP_KEY_EKK0191C010 = "EKK0191C010";
	/** サービス契約内訳<eoモバイル>照査 */
	private static final String MAP_KEY_EKK0201C010 = "EKK0201C010";
	/** サービス契約内訳<eoモバイル>照査締結 */
	private static final String MAP_KEY_EKK0201C030 = "EKK0201C030";
	/** サービス契約内訳＜eoADSL＞照査 */
	private static final String MAP_KEY_EKK0221C010 = "EKK0221C010";
	/** サービス契約内訳<eo光ネット>照査締結 */
	private static final String MAP_KEY_EKK0171C030 = "EKK0171C030";
	/** サービス契約内訳<eo光電話>照査締結 */
	private static final String MAP_KEY_EKK0191C030 = "EKK0191C030";
	/** サービス契約内訳＜eoADSL＞照査締結 */
	private static final String MAP_KEY_EKK0221C030 = "EKK0221C030";
	/** オプションサービス契約<ISP>照査 */
	private static final String MAP_KEY_EKK0361C010 = "EKK0361C010";
	private static final String MAP_KEY_EKK0361C010_MLAD = "EKK0361C010Output";
	/** オプションサービス契約<ISP>照査締結 */
	private static final String MAP_KEY_EKK0361C030 = "EKK0361C030";
	/** オプションサービス契約<TV>照査 */
	private static final String MAP_KEY_EKK0381C010 = "EKK0381C010";
	/** オプションサービス契約<電話>照査 */
	private static final String MAP_KEY_EKK0371C010 = "EKK0371C010";
	/** オプションサービス契約<サポート>照査 */
	private static final String MAP_KEY_EKK0391C010 = "EKK0391C010";
	/** オプションサービス契約<サポート>照査締結 */
	private static final String MAP_KEY_EKK0391C030 = "EKK0391C030";
	/** サブオプションサービス契約<ISP>照査 */
	private static final String MAP_KEY_EKK0411C020 = "EKK0411C020";
	/** サブオプションサービス契約<ISP>照査締結 */
	private static final String MAP_KEY_EKK0411C040 = "EKK0411C040";
	/** サブオプションサービス契約<TV>照査 */
	private static final String MAP_KEY_EKK0421C010 = "EKK0421C010";
	/** サブオプションサービス契約<電話>照査 */
	private static final String MAP_KEY_EKK0431C010 = "EKK0431C010";
	/** オプションサービス契約＜電話＞照査締結 */
	private static final String MAP_KEY_EKK0371C030 = "EKK0371C030";
	/** サブオプションサービス契約＜電話＞照査締結 */
	private static final String MAP_KEY_EKK0431C030 = "EKK0431C030";
	/** 機器提供サービス契約照査 */
	private static final String MAP_KEY_EKK0341C030 = "EKK0341C030";
	/** 機器提供サービス契約照査締結 */
	private static final String MAP_KEY_EKK0341C050 = "EKK0341C050";
	/** 機器設置先場所反映 */
	private static final String MAP_KEY_EKK0341C450 = "EKK0341C450";
	/** オプトインメール受信設定登録 */
	private static final String MAP_KEY_ECK0141D010 = "ECK0141D010";
	/** 機器提供サービス契約情報変更 */
	private static final String MAP_KEY_EKK0341C230 = "EKK0341C230";
	/** 他事業者割引契約対象契約登録 */
	private static final String MAP_KEY_EKK2451D010 = "EKK2451D010";
	/** 他事業者割引契約対象契約適用終了 */
	private static final String MAP_KEY_EKK2451C010 = "EKK2451C010";
	/** 割賦契約一覧照会(サービス契約番号) */
	private static final String MAP_KEY_EKK2541B004 = "EKK2541B004";
	/** 割賦契約照査 */
	private static final String MAP_KEY_EKK2541C030 = "EKK2541C030";
	// AMK-1578-00-00 ADD START
	/** 機器オプションサービス契約照査 */
	private static final String MAP_KEY_EKK2811C030 = "EKK2811C030";
	/** 機器オプションサービス契約照査締結 */
	private static final String MAP_KEY_EKK2811C050 = "EKK2811C050";
	// AMK-1578-00-00 ADD END
	/** 番ポ工事登録 */
	protected static final String MAP_KEY_ETU0011D010 = "ETU0011D010";
//	/** 機器提供サービス契約場所変更 */
//	private static final String MAP_KEY_EKK0341C200 = "EKK0341C200";
	/** サービス契約回線内訳内容変更 */
	private static final String MAP_KEY_EKK0251C030 = "EKK0251C030";
	/** サービス契約内訳＜eo光電話＞情報変更 */
	private static final String MAP_KEY_EKK0191C060 = "EKK0191C060";
	/** エイジング対象回復 */
	public static final String MAP_KEY_EZM0111C020 = "EZM0111C020";
	/** 機器場所番号変更 */
	private static final String MAP_KEY_EKKA0020004 = "EKKA0020004";
	/** エイジング対象登録（外部） */
	static final String MAP_KEY_EZM0111D010 = "EZM0111D010";
	/** 請求オプションサービス契約照査 */
	private static final String MAP_KEY_EKK0441C030 = "EKK0441C030";
	/** 請求オプションサービス契約照査締結 */
	private static final String MAP_KEY_EKK0441C050 = "EKK0441C050";
	
	// ANK-3296-00-00 ADD START
	/** 工事費割賦契約照査 */
	private static final String MAP_KEY_EKK3131C030 = "EKK3131C030";
	// ANK-3296-00-00 ADD END
	
	/** 設置場所番号取得 */
	private static final String MAP_KEY_EKKA0020002 = "EKKA0020002";
    /** 宅内機器一意照会（４） */
	private static final String MAP_KEY_EKKA0020003 = "EKKA0020003";
	
// ▽▽▽ ANK-3412-00-00 ADD START
	/** 機器提供サービス契約機器変更手続開始 */
	private static final String MAP_KEY_EKK0341C530 = "EKK0341C530";
	/** 機器提供サービス契約情報変更（契約変更中） */
	private static final String MAP_KEY_EKK0341C231 = "EKK0341C231";
// ▲▲▲ ANK-3412-00-00 ADD END
	// ANK-4468-09-00 ADD START
	/** オプションサービス契約解約 */
	private static final String MAP_KEY_EKK0351C240 = "EKK0351C240";
	// ANK-4468-09-00 ADD END

// ANK-4494-00-00 STEP2 ADD START
	/** 電話番号変更 */
	protected static final String MAP_KEY_EZM0121C010 = "EZM0121C010";
// ANK-4494-00-00 STEP2 ADD END
	
	//---------v31.00.00 ANK-3136-00-00_ADD START---------//	
	/** ルールコンテンツID サービス契約照査時V-ONU流用有無判定 */
	private static final String RULE_CONT_ID_RULE0092001 = "RULE0092001";
	
	/** ルール定義（XMLファイル）格納パス */
	private static String XML_PATH = "SOKAN_CHECK_XML_PATH";
	
	/** 電話番号順番_1 */
	private static final String TEL_NO_JUNBAN_1 = "1";
	
	/** 流用元VA_1 */
	private static final String RYUYO_MT_VA = "1";
	
	/** 流用元多機能ルータ_0 */
	private static final String RYUYO_MT_TAKINO_RT = "0";
	
	/** 連絡事項 */
	private static final String BIKO_COMMENT = "設備流用による撤去（解約）";
	
	/** 工事案件種別コード 強制解約 */
	private static final String CD00577_KYOSEI_KAIYAKU = "000";
	
	/** 出力項目：処理結果コード */
	private static final String SVKEI_SHOSA_CC_TRAN_RSLT_CD = "svkei_shosa_cc_tran_rslt_cd";
	/** 出力項目：処理結果コード_流用元撤去解約 */
	private static final String TRAN_RSLT_CD_TEKKYO_KAIYAKU = "1";
	// IT-2018-0000105 ADD START
	/** 出力項目：撤去解約時のメッセージリスト */
	private static final String SVKEI_SHOSA_CC_TRAN_MESSAGE_LIST = "svkei_shosa_cc_tran_message_list";
	// IT-2018-0000105 ADD END

	//---------v31.00.00 ANK-3136-00-00_ADD END-----------//
	/** 年月日項目の初期値 */
	public static final String YMD_SHKV = "20991231";
	// 20121124 他事業者割引契約対象契約の適用終了処理追加対応 ADD END

	/** エラー変換テーブル */
	private HashMap<String, HashMap<String, Object>> shosaErrorChgTbl = null;
	
	/** 機器提供サービス契約ステータス(受付済) */
	private static final String KKTK_SVC_KEI_STAT_010 = "010";
// ANK-4009-00-00 DEL START
// ANK0546-00-00 2012-08-27 ADD_START
//	/** サービス契約ステータス(解約済) */
//	private static final String SVC_KEI_STAT_910 = "910";
// ANK0546-00-00 2012-08-27 ADD_END
//	
//	/** サービス契約ステータス(キャンセル済) */
//	private static final String KKTK_SVC_KEI_STAT_920 = "920";
// ANK-4009-00-00 DEL END
//	/** サービス契約ステータス(締結済) */
//	private static final String SVC_KEI_STAT_CNC = "030";
//	
//	/** サービス契約ステータス(サービス提供中) */
//	private static final String SVC_KEI_STAT_ACT = "100";
//	
//	/** サービス契約ステータス(休止・中断中) */
//	private static final String SVC_KEI_STAT_Q4 = "210";

	//2012-02-03追加↓↓↓
	/** ワークエリア・マップ名：エイジング登録用 */
	public static final String AGING_WORK = "AGING_WORK";
	
	/** ワークエリア・エイジング対象値リスト名 */
	public static final String AGING_TG_LIST = "AGING_TG_LIST";

	/**************************************************************************/
	/** エイジング種別                                                       **/
	/**************************************************************************/
	/** エイジング種別：電話番号 */
	public static final String AGING_SBT_TELNO          = "001";
	/** エイジング種別：固定IPアドレス */
	public static final String AGING_SBT_KOTEI_IP_AD    = "002";
	/** エイジング種別：eoID */
	public static final String AGING_SBT_EOID           = "004";
	/** エイジング種別：URL */
	public static final String AGING_SBT_URL            = "005";
	/** エイジング種別：ＷｅｂＩＤ */
	public static final String AGING_SBT_WEBID          = "006";
	/** エイジング種別：ＰＯＰＩＤ */
	public static final String AGING_SBT_POPID          = "007";
	/** エイジング種別：メールエイリアス */
	public static final String AGING_SBT_ALIAS          = "008";
	/** エイジング種別：メールアドレス */
	public static final String AGING_SBT_MLAD           = "009";
	/** エイジング種別：メーリングリスト */
	public static final String AGING_SBT_MLLIST         = "010";
	/** エイジング種別：ＰＰＰ認証ＩＤ */
	public static final String AGING_SBT_PPP_NINSHO_ID  = "012";		//2012-02-03仮決め
	/** エイジング種別：ＩＳＰ認証ＩＤ */
	public static final String AGING_SBT_ISP_NINSHO_ID  = "013";		//2012-02-03仮決め
	/** エイジング種別：ＳＩＰユーザーＩＤ */
	public static final String AGING_SBT_SIP_USER_ID    = "014";		//2012-02-03仮決め
	/** エイジング種別：ＡＤＳＬ認証ＩＤ */
	public static final String AGING_SBT_ADSL_NINSHO_ID = "015";		//2012-02-03仮決め
	
	/** エイジング対象マップ */
	private HashMap<String, Object> agingWorkMap = new HashMap<String, Object>();
	//2012-02-03追加↑↑↑
	// ST1-2012-0000139 2012/07/17 start
	/** ワークエリア・マップ名：処理前エイジング用 */
	private static final String BF_AGING_WORK = "BF_AGING_WORK";
	/** 処理前エイジング対象値マップ */
	private HashMap<String, Object> bfAgingWorkMap = new HashMap<String, Object>();
	
	/** エイジングステータス：回復可能 */
	private static final String AGING_STAT_KAIFUKUKANO = "200";
	// ST1-2012-0000139 2012/07/17 end
	
	// ST1-2012-0000139 2012/07/17 start
	/** 異動区分：オプション引継 */
	private static final String IDO_DIV_OP_HIKITUGI = "00003";
	// ST1-2012-0000139 2012/07/17 start
	// 20120406 住所変更対応 START
	/** 異動区分：住所変更・登録 */
	private static final String IDO_DIV_AD_CHG_ADD = "00019";
	// 20120406 住所変更対応 END
	
	// 2013-03-15 ADD_START
	/** 提供方式コード 008 光配線 */
	private static final String TK_HOSHIKI_CD_008 = "008";
	// ▼▼▼ OM-2015-0000223   2015/02/05   ADD START ▼▼▼
	/** 提供方式コード（マンション旧光直収） */
	private static final String TK_HOSHIKI_CD_009 = "009";
	// ▲▲▲ OM-2015-0000223   2015/02/05   ADD  END  ▲▲▲
	
	/** マンション物件コード　マンション */
	private static final String MANS_BUKKEN_CD_MANS = "001";
	
	// 2013-03-15 ADD_END
	
	/** 宅内機器種別コード：UQ */
	public static final String TAKNKIKI_SBT_J0 = "J0";
	/** 機器提供種別コード 持込 */
	public static final String KIKI_TK_SBT_03 = "03";
	// ANK-0342-00-00 2012/07/24 end

// 2012-11-14 IT1-2012-0001677 ADD_START
	/** 宅内機器型式一意照会 */
	private static final String MAP_KEY_EZM0411A010 = "EZM0411A010";
// 2012-11-14 IT1-2012-0001677 ADD_END
	
//	2012-10-18 KAD-2011-0001102 ADD_START
	/** 番ポ申込通知 */
	private static final String MSKM_TCHI = "01";
//	2012-10-18 KAD-2011-0001102 ADD_END

	/** 法人サービス契約引継ぎ種別コード 01:HT→IO*/
	private static final String HSVC_KEI_HKTG_SBT_CD_01 = "01";
	
// ANK-4640-00-00 ADD START
	/** ＷＡＯ注文連携抑止フラグ_否(DB値) */
	private static final String WAO_RNKI_YKS_FLG_HI = "1";
	
	/** ＷＡＯ注文連携抑止フラグ_否(TypeNで照査OK時に進捗.進捗特記事項1に登録する文言) */
	private static final String WAO_RNKI_YKS_FLG_HI_PRG_TKJK_1 = "WAO連携要否：否";
	
	/** ＷＡＯ注文連携抑止フラグ_要(TypeNで照査OK時に進捗.進捗特記事項1に登録する文言) */
	private static final String WAO_RNKI_YKS_FLG_YOU_PRG_TKJK_1 = "WAO連携要否：要";
// ANK-4640-00-00 ADD END
	
	// ANK-2987-00-00 2016/09/16 ADD START
	/**************************************************************************/
	/** リテラシー定義（共通）                                               **/
	/**************************************************************************/
// ANK-4009-00-00 DEL START
	// ANK-2987-00-00 2016/09/16 ADD END
//	/** 日付編集文言／年 */
//	private static final String DATE_RIT_YYYY = "年";
//	
//	/** 日付編集文言／月 */
//	private static final String DATE_RIT_MM = "月";
//	
//	/** 日付編集文言／日 */
//	private static final String DATE_RIT_DD = "日";
//	
//	/** 日付編集文言／１桁判定（月、日） */
//	private static final String DATE_RIT_ZERODAY = "0";
	// ANK-2987-00-00 2016/09/16 ADD END
// ANK-4009-00-00 DEL END
	// ANK-3387-00-00 ADD START
	/** 提供方式パターンコード 51 光コンセント */
	private static final String TK_HOSHIKI_PATTERN_CD_51 = "51";
	// ANK-3387-00-00 ADD END

	// ANK-4577-00-00 ADD START
	/** オプションサービスコード B004 固定グローバルIPアドレス */
	private static final String OP_SVC_CD_B004 = "B004";

	/** オプションサービスコード B131 インターネットサギウォール for eo */
	private static final String OP_SVC_CD_B131 = "B131";

	/** オプションサービスコード B133 PCプラン */
	private static final String OP_SVC_CD_B133 = "B133";

	/** オプションサービスコード B134 TVプラン */
	private static final String OP_SVC_CD_B134 = "B134";

	/** オプションサービスコード B021 リモートサポートプラス */
	private static final String OP_SVC_CD_B021 = "B021";

	/** オプションサービスコード B001 Eメール */
	private static final String OP_SVC_CD_B001 = "B001";

	/** 割引サービスコード W00000006 ファミリーパック割引 */
	private static final String WRIB_SVC_CD_W00000006 = "W00000006";

	/** 割引サービスコード W00000010 eoセキュリティーパック */
	private static final String WRIB_SVC_CD_W00000010 = "W00000010";

	/** サービス契約ステータス 010 受付済 */
	private static final String SVC_KEI_STAT_010 = "010";

	/** サービス契約ステータス 020 照査済 */
	private static final String SVC_KEI_STAT_020 = "020";

	// IT1-2024-0000044 ADD START
	/** サービス契約ステータス 030 締結済 */
	private static final String SVC_KEI_STAT_030 = "030";
	// IT1-2024-0000044 ADD END

	/** サービス契約ステータス 910 解約済 */
	private static final String SVC_KEI_STAT_910 = "910";

	/** サービス契約ステータス 920 キャンセル済 */
	private static final String SVC_KEI_STAT_920 = "920";

	/** 割引サービス契約ステータス 010 受付済 */
	private static final String WRIB_SVC_KEI_STAT_010 = "010";

	/** 割引サービス契約ステータス 300 適用済 */
	private static final String WRIB_SVC_KEI_STAT_300 = "300";

	/** 割引サービス契約ステータス 910 解約済 */
	private static final String WRIB_SVC_KEI_STAT_910 = "910";

	/** 割引サービス契約ステータス 920 キャンセル済 */
	private static final String WRIB_SVC_KEI_STAT_920 = "920";
	// ANK-4577-00-00 ADD END

	//20111126 sakurai ADD Start↓
	/** 
	 * 照会系サービスインタフェースのリスト(0回目)
	 * 
	 */
	private static final String[] SVIF_MAP_KEY_SHOKAI0_LIST = {
		MAP_KEY_EKK0021A010,
		MAP_KEY_EKK0081A010,
		MAP_KEY_ECK0011A010,
		MAP_KEY_EKK0161B004,
		MAP_KEY_EKK1021B003
	};
	
	/** 
	 * 照会系サービスインタフェースのリスト(1回目)
	 * 
	 */
	private static final String[] SVIF_MAP_KEY_SHOKAI_LIST = {
		MAP_KEY_EKK0351B002,
		MAP_KEY_EKK0341B022,
		MAP_KEY_ECK0201B001,
		MAP_KEY_ECK0021A010,
		MAP_KEY_ECK0031A010,
		MAP_KEY_EKK0251B003,
		MAP_KEY_EKK0321B002,
		MAP_KEY_EKK0451B001,
		MAP_KEY_EKK1091B001,
		MAP_KEY_ECK0141B002,
		MAP_KEY_EKK2541B004,
		MAP_KEY_ECK0121B020,
		// AMK-1578-00-00 ADD START
		MAP_KEY_ECK0111B002,
		MAP_KEY_EKK2811B011
		// AMK-1578-00-00 ADD END
	};
	
	/** 
	 * 照会系サービスインタフェースのリスト(2回目)
	 * 照会系サービスインタフェース(1回目)の実行結果から他の照会系サービスインタフェースをCallするサービスインタフェースのリスト
	 * 
	 */
	private static final String[] SVIF_MAP_KEY_SHOKAI2_LIST = {
		MAP_KEY_EKK0011A010,
		MAP_KEY_EKK0391A010,
		MAP_KEY_EKK0361A010,
		MAP_KEY_EKK0401B001,
		MAP_KEY_EKK0451A010,
		// AMK-4494-00-00 MOD START
//		MAP_KEY_ECK0041A010
		MAP_KEY_ECK0041A010,
		MAP_KEY_ETU0101B020,
		MAP_KEY_EZM0321A010_2,
		MAP_KEY_EZM0321A010_3
		// AMK-4494-00-00 MOD END
	};
	//20111126 sakurai 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,
		MAP_KEY_EKK2441B002,
		MAP_KEY_EKK2441B001,
		MAP_KEY_EKK2541A010,
		// AMK-1578-00-00 ADD START
		// ANK-3834-00-00 MOD START
		//MAP_KEY_EKK2811A010
		MAP_KEY_EKK2811A010,
		// ANK-3834-00-00 MOD END
		// AMK-1578-00-00 ADD END
		// ANK-3834-00-00 ADD START
		// ANK-4075-00-00 MOD START
		// MAP_KEY_EZM0321B010
		MAP_KEY_EZM0321B010,
		// ANK-4075-00-00 MOD END
		// ANK-3834-00-00 ADD END
		// ANK-4075-00-00 ADD START
		MAP_KEY_EZM0321B010_02
		// ANK-4075-00-00 ADD END
	};
	
	/** 
	 * 照会系サービスインタフェースのリスト(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_EKK2441B002,
		MAP_KEY_EKK2441B001,
		// AMK-1578-00-00 ADD START
		MAP_KEY_EKK2811A010
		// AMK-1578-00-00 ADD END
	};

	//↓↓↓2012-05-03追加、電話手続の取込み↓↓↓
	/** 
	 * 番ポ工事登録系サービスインタフェースのリスト第1弾
	 */
	private static final String[][] BANPO_MAP_KEY_LIST = {
		{MAP_KEY_ETU0021B010,	MAP_KEY_EZM0121A010}
// ANK-4494-00-00 Step2 廃止スキーマ対応 20241113 星野 MOD START
//	,	{MAP_KEY_ETU0121B011,	MAP_KEY_EZM0301A010}
	,	{MAP_KEY_EZM0301A010}
// ANK-4494-00-00 Step2 廃止スキーマ対応 20241113 星野 MOD END
 		//AMK-4494-00-00 MOD START
//	,	{MAP_KEY_EZM0091A010}
	,	{MAP_KEY_EZM0091A010,	MAP_KEY_ETU0101B020}
	,	{MAP_KEY_EZM0321A010_2,	MAP_KEY_EZM0321A010_3}
		//AMK-4494-00-00 MOD END
	};
	//↑↑↑2012-05-03追加、電話手続の取込み↑↑↑

// ANK-4494-00-00 STEP2 ADD START
	/** 
	 * 電話番号マスタ更新系サービスインタフェースのリスト第1弾
	 */
	private static final String[][] TELNO_MAP_KEY_LIST = {
		{MAP_KEY_EZM0121A010}
	};
// ANK-4494-00-00 STEP2 ADD END
	
	/**
	 * 照会系サービスインタフェースのリスト(モバイル)
	 * 
	 */
	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,
		MAP_KEY_EKK0591A010
	};

//	/** マンションの料金コード */
//	private static final String[] MANSION_PCRS_CD =
//	{
//			"A47", "A48", "A49", "A50", "A51", "A52", "A53", "A54", "A55", "A56", "A57"
//		  , "A67", "A68", "A69", "A70", "A71"				//2012-12-10追加　ロット２ST2-2012-0001328
//	};

	// ANK-3296-00-00 ADD START
	/** 工事割賦実施済み判定 */
	private Boolean kojihi_kapu_flg = false;
	// ANK-3296-00-00 ADD END
	// ANK-4315-00-00 ADD START
	// ----------
	// エラー定数
	// ----------
	/** エラー項目接尾辞 */
	private static final String ERRITEM_SUFFIX = "_err";
	/** エラーコード */
	public static final String ERROR_CODE = "errCode";
	/** エラーメッセージ */
	public static final String ERROR_MESSAGE = "errMessage";
	/** リターンメッセージ取得キー */
	private static final String RETURN_MESSAGE_STRING = "RETURN_MESSAGE_";
	/** リターンメッセージの書式指定文字列 */
	private static final String RETURN_MESSAGE_FORMAT = "%1$04d";
	/**  TamplateID：EKU0281A010_サービス回線内訳番号一意照会 */
	private static final String TEMPLATE_ID_EKK0251A010 = "EKK0251A010";
	/**  TamplateID：EKU0281A010_申込収容位置空き情報一意照会 */
	private static final String TEMPLATE_ID_EKU0281A010 = "EKU0281A010";
	/** テンプレートＩＤ：サービス契約回線内訳一覧照会 */
	private static final String TEMPLATE_ID_EKK0251B001 = "EKK0251B001";
	/** テンプレートＩＤ：工事案件一覧照会（複合検索） */
	private static final String TEMPLATE_ID_EKU0011B030 = "EKU0011B030";
	/**ローゼット化設置済案件チェック結果: 工事スキップ不可 */
	private static final String RZ_KJ_SKP_IMPSB = "2";
	/** ローゼット化設置済案件チェックCC実行可能リスト　*/
	private static final String[] RZKZMCC_ACT_PSB_LIST = {JKKStrConst.CD00133_02,JKKStrConst.CD00133_03,JKKStrConst.CD00133_04,JKKStrConst.CD00133_10};
	/**ローゼット化設置済案件チェック結果: 工事スキップ可 */
	private static final String RZ_KJ_SKP_PSB = "1";
	/**ローゼット化設置済案件チェック結果: 工事スキップ対象 */
	private static final String RZ_KJ_SKP_OK = "1";
	/**ローゼット化設置済案件チェック結果: 工事スキップ非対象 */
	private static final String RZ_KJ_SKP_NG = "0";
	/** HGW交換不可フラグ */	
	private static final String WORK_PARAM_ID_KK_HGW_KOKAN_FFG = "KK_HGW_KOKAN_FFG";
	/** 異動区分（光電話・番号追加） */
	private static final String IDO_DIV_HTEL_TEL_ADD = "00041";
	/** データマップキー（機器提供サービス契約番号） */
	public static final String KEY_KKTK_SVC_KEI_NO = "kktk_svc_kei_no";
	// ANK-4315-00-00 ADD END

	/**
	 * マッパーを作成する処理です。
	 * 
	 * <br>
	 * @param param 
	 * @throws RequestParameterException 
	 */
	private IRequestParameterReadWrite createMapper(IRequestParameterReadWrite param) throws RequestParameterException
	{
		shokaiMapper = new JKKSvkeiShosaShokaiMapperCC();
		shosaOkMapper = new JKKSvkeiShosaShosaOkMapperCC();
		kkExclusiveMapper = new JKKExclusiveMapper();

		//2012-02-03追加↓↓↓
		Map<Object, Object> workAeraMap = param.getMappingWorkArea();
		if (null == workAeraMap)
		{
			workAeraMap = new HashMap<Object, Object>();
		}

		workAeraMap.put(AGING_WORK, agingWorkMap);
		//2012-02-03追加↑↑↑
		// ST1-2012-0000139 2012/07/17 start
		workAeraMap.put(BF_AGING_WORK, bfAgingWorkMap);
		// ST1-2012-0000139 2012/07/17 end

		return param;
	}
	
	/**
	 * 照査チェックエラーの変換テーブルを作成します。
	 * 
	 * @param kidoCd：起動元コード
	 * 
	 */
	private void createErrorChgTbl(String kidoCd)
	{
		HashMap<String, HashMap<String, Object>> wkErrorChgTbl = new HashMap<String, HashMap<String, Object>>();
		
		// 申込年月日期間超過チェック
		setErrorChgTbl(wkErrorChgTbl, "001", ERR_SBT_CD_MSKM, "");
		// サービス利用開始希望年月日設定チェック
		setErrorChgTbl(wkErrorChgTbl, "002", ERR_SBT_CD_SVC, "");
		// 面開発案件チェック
		setErrorChgTbl(wkErrorChgTbl, "004", ERR_SBT_CD_SVC, "");
		// 
		setErrorChgTbl(wkErrorChgTbl, "005", "", "");
		// 提供外機器存在チェック
		setErrorChgTbl(wkErrorChgTbl, "006", ERR_SBT_CD_SVC, "EKF0800-KW");
		// 機器提供サービス下限チェック
		setErrorChgTbl(wkErrorChgTbl, "007", ERR_SBT_CD_KIKI, "EKF0800-KW");
		// 機器提供サービス上限チェック
		setErrorChgTbl(wkErrorChgTbl, "008", ERR_SBT_CD_KIKI, "EKF0800-KW");
		// 
		setErrorChgTbl(wkErrorChgTbl, "009", "", "");
		// 提供外オプション存在チェック
		setErrorChgTbl(wkErrorChgTbl, "010", ERR_SBT_CD_OP, "");
		// オプションサービス下限チェック
		setErrorChgTbl(wkErrorChgTbl, "011", ERR_SBT_CD_OP, "");
		// オプションサービス上限チェック
		setErrorChgTbl(wkErrorChgTbl, "012", ERR_SBT_CD_OP, "");
		// 
		setErrorChgTbl(wkErrorChgTbl, "013", "", "");
		// 
		setErrorChgTbl(wkErrorChgTbl, "014", "", "");
		// 
		setErrorChgTbl(wkErrorChgTbl, "015", "", "");
		// 
		setErrorChgTbl(wkErrorChgTbl, "016", "", "");
		// 督促状態チェック
		setErrorChgTbl(wkErrorChgTbl, "017", ERR_SBT_CD_SEIKY, "EKF0660-KW");
		// お客様退会チェック
		setErrorChgTbl(wkErrorChgTbl, "018", ERR_SBT_CD_CUST, "EKF0570-KW");
		// オプション引継希望チェック
		setErrorChgTbl(wkErrorChgTbl, "019", ERR_SBT_CD_OP, "");
		// 
		setErrorChgTbl(wkErrorChgTbl, "020", "", "");
		// 部屋番号重複チェック
		setErrorChgTbl(wkErrorChgTbl, "021", ERR_SBT_CD_SVC, "EKF0470-KW");
		// 
		setErrorChgTbl(wkErrorChgTbl, "022", "", "");
		// 
		setErrorChgTbl(wkErrorChgTbl, "023", "", "");
		// 利用場所番地未確定チェック
		setErrorChgTbl(wkErrorChgTbl, "025", ERR_SBT_CD_AD, "EKF0640-KW");
		
		if (KIDO_CD_ON.equals(kidoCd))
		{
			// オンライン
			// サービス利用開始希望年月日未来日チェック
			//OT-2013-0000681 NAKASHIMA MOD START
			//setErrorChgTbl(wkErrorChgTbl, "003", ERR_SBT_CD_SVC, "EKB1950-TW");
			setErrorChgTbl(wkErrorChgTbl, "003", ERR_SBT_CD_SVC, "EKBD800--Q");
			//OT-2013-0000681 NAKASHIMA MOD END
			// 入居予定年月日未来日チェック
			setErrorChgTbl(wkErrorChgTbl, "024", ERR_SBT_CD_SVC, "EKB1950-TW");
		}
		else
		{
			// バッチ
			// サービス利用開始希望年月日未来日チェック
			setErrorChgTbl(wkErrorChgTbl, "003", ERR_SBT_CD_SVC, "");
			// 入居予定年月日未来日チェック
			setErrorChgTbl(wkErrorChgTbl, "024", ERR_SBT_CD_SVC, "");
		}
		
		
		/**照査対象コード(利用場所警告エリアチェック)**/
		setErrorChgTbl(wkErrorChgTbl, "026", "", "EKB8490-KW");

		/**照査対象コード(同一利用場所使用サービス整合性チェック)**/
		setErrorChgTbl(wkErrorChgTbl, "027", "", "EKB8510--Q");

		/**照査対象コード(申込書番号重複チェック)**/
		setErrorChgTbl(wkErrorChgTbl, "028", "", "EKB8520-KW");

		/**照査対象コード(未照査サービス契約存在チェック)**/
		// 20120613 IT2-2012-0000725 START
		//setErrorChgTbl(wkErrorChgTbl, "029", "", "EKF0560--Q");
		setErrorChgTbl(wkErrorChgTbl, "029", "", "EKB8420--Q");
		// 20120613 IT2-2012-0000725 END
		
		/**照査対象コード(ファミリーパック契約数チェック)**/
		setErrorChgTbl(wkErrorChgTbl, "030", "", "");

		/**照査対象コード(マンションサービス状態チェック)**/
		setErrorChgTbl(wkErrorChgTbl, "031", "", "EKB8530-CE");

		/**照査対象コード(テレビコース整合性チェック)**/
		setErrorChgTbl(wkErrorChgTbl, "032", "", "");

		/**照査対象コード(照査取消日チェック)**/
		setErrorChgTbl(wkErrorChgTbl, "033", "", "EKB8540-CE");

		/**照査対象コード(工事状態チェック)**/
		setErrorChgTbl(wkErrorChgTbl, "034", "", "EKB8550-CE");

		/**照査対象コード(機器配送状態チェック)**/
		setErrorChgTbl(wkErrorChgTbl, "035", "", "EKB8560-CE");

		/**照査対象コード(照査不可サービス契約存在チェック)**/
		setErrorChgTbl(wkErrorChgTbl, "036", "", "EKB8570-CE");
		
	}
		
	
	/**
	 * サービス契約照査処理です。<br>
	 * <br>
	 * サービス契約照査でインプットとして必要なデータを<br>
	 * 一意照会、一覧照会より取得してから<br>
	 * サービス契約照査処理をCallします。<br>
	 * <br>
	 * @param	handle		セッションマネージャなどを持ったハンドル
	 * @param	param		モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	fixedText	ユーザ任意文字列
	 * @return				業務データ取得・書込用I/F
	 * @throws	Throwable 
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite runSvkeiShosa(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		// 20140731 ANK-1918-00-00 デバッグログ追加 ADD START
		JKKBpCommon.printBpDebugLog(this.getClass(), "【KK_DEBUG】照査CC start");
		// 20140731 ANK-1918-00-00 デバッグログ追加 ADD END
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap inMap        = null;
		HashMap svkeiDataERR = null;

		String kidoCd = null;

		kisnNo   = null;
		rekisnNo = null;

		//エラー情報のマップを取得
		ArrayList<Object> errorMapList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);

		if(errorMapList == null)
		{
			errorMapList = new ArrayList<Object>();
		}

		// マッパーを作成する
		param = createMapper(param);

		// ユーザデータ情報取得
		inMap = (HashMap)param.getData(JKKSvkeiShosaConstCC.TRGT_DATA);
// ANK-3714-00-00 ADD START
		// 電気進捗登録済フラグ false:未登録、true:登録済
		boolean elecPrgAddZmFlg = false;
		// 同一利用場所ｅｏ電気
		String kaisenSamePlcEoelecScreen = (String)inMap.get(JKKSvkeiShosaConstCC.KAISEN_SAME_PLC_EOELEC_SCREEN);
		// 同一利用場所のeo電気サービス契約番号
		String eoelecSvcKeiNo = "";
		if (!JKKCommonUtil.isNull(kaisenSamePlcEoelecScreen))
		{
			String [] itensEoElecSvkeisub = kaisenSamePlcEoelecScreen.split(JKKStrConst.COLON, -1);
			if (itensEoElecSvkeisub.length >= 3)
			{
				eoelecSvcKeiNo = itensEoElecSvkeisub[0];
			}
		}
// ANK-3714-00-00 ADD END

		List trgtDataList = (List)inMap.get(JKKSvkeiShosaConstCC.TRGT_DATA_LIST);

		svkeiDataERR = (HashMap)trgtDataList.get(0);

		kidoCd = (String)svkeiDataERR.get(JKKSvkeiShosaConstCC.KIDO_CD);

		// 照査チェックエラー変換ＴＢＬ作成
		createErrorChgTbl(kidoCd);
		
		// ANK-4315-00-00 ADD START
		// ユーザデータ情報に設定されたサービス契約情報分、サービス契約照査処理を行う
		for (int i = 0; i < trgtDataList.size(); i++)
		{
			HashMap svkeiData = null;
			// サービス契約照査対象のサービス契約情報を取得する
			svkeiData = (HashMap)trgtDataList.get(i);
			String svcKeiNo = (String)svkeiData.get(JKKSvkeiShosaConstCC.SVC_KEI_NO);
			// 20120406 住所変更対応 START

			List<CAANMsg> wkCaanMsgList = null;
			ArrayList<HashMap> wkMapArray = new ArrayList();
			HashMap<String, Object> wkRsltShokaiMap = null;
			HashMap<String, Object> wkRsltShokai    = null;
			
			
			// サービス契約一意照会
			wkRsltShokaiMap = new HashMap<String, Object>();
			wkCaanMsgList = shokaiMapper.editInMsgEKK0081A010(param, svcKeiNo);
			wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
			wkRsltShokaiMap.put(MAP_KEY_EKK0081A010, wkMapArray);
			wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0081A010});
			CAANMsg[] workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK0081A010);
			
			/**************************************************************************************/
			/** 情報取得                                                                         **/
			/**************************************************************************************/
			String svcCd      = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_CD);		// サービスコード
			String prcGrpCd   = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);	// 料金グループコード
			String sysid     = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SYSID);			// SYSID
			String updDtm     = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.LAST_UPD_DTM);			// SYSID
			// 申込明細は、サービスと同じものを代入
			String mskmDtlNo = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO);
			int svcSbtCd   = getSvcSbtCd(svcCd, prcGrpCd);
			String idoDiv = (String)svkeiData.get(JKKSvkeiShosaConstCC.IDO_DIV);
			// 引数に異動区分が設定されていない場合、サービス契約.異動区分を設定する
			if (JKKBpCommon.isNull(idoDiv))
			{
				// 異動区分
				idoDiv = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.IDO_DIV);
			}
			//光ネットの照査OK時、ＨＧＷ(解約済、キャンセル済以外)が登録されており、機器オプションサービス契約に有線RT機能、無線RT機能が登録されていない場合、「有線RT機能」を機器オプションサービス契約に登録する。
			if (JKKStrConst.CD00576_00002.equals(idoDiv) && (svcSbtCd == SVC_SBT_CD_HNET))
			{
				// 機器提供サービス契約一覧照会
				List<CAANMsg> wkMapArrayEKK0341B022 = shokaiMapper.editInMsgEKK0341B022(param,svcKeiNo);
				HashMap<String, Object> inMsgEKK0341B022Map = editInMsgCmn(param, wkMapArrayEKK0341B022.get(0));
				Map<?, ?> rsltEKK0341B022 = scCall.run(inMsgEKK0341B022Map, handle);
				CAANMsg[] outMsgEKK0341B022List = getWorkData(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST, rsltEKK0341B022);
				
				// 機器提供サービス契約照査
				boolean bolHgw = false;
				boolean bolHgwKkop = false;
				String kktkSvcKeiNo = "";
				if (outMsgEKK0341B022List != null) 
				{
					for (int j = 0; j < outMsgEKK0341B022List.length; j++)
					{
						CAANMsg childTemplate = outMsgEKK0341B022List[j];
						String kktkSvcStat = (String)childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_STAT);
						//サービス契約回線内訳がONUかVONUかで照査を制御する
						if(KKTK_SVC_C025.equals(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD)))
						{
							if ((kktkSvcStat != null && !"".equals(kktkSvcStat))
									&& !"910".equals(kktkSvcStat) && !"920".equals(kktkSvcStat) ) 
							{
								kktkSvcKeiNo = childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);
								bolHgw = true;
								break;
							}
						}
					}
					
					if (!JKKStringUtil.isNullBlank(kktkSvcKeiNo))
					{
						// 一覧一意照会の結果を取得
						// 回線紐付き機器契約一覧照会
		
						// 機器提供サービス契約一覧照会
						List<CAANMsg> wkMapArrayEKK2811B011 = shokaiMapper.editInMsgEKK2811B011(param,i);
						HashMap<String, Object> inMsgEKK2811B011Map = editInMsgCmn(param, wkMapArrayEKK2811B011.get(0));
						Map<?, ?> rsltEKK2811B011 = scCall.run(inMsgEKK2811B011Map, handle);
						CAANMsg[] outMsgEKK2811B011List = getWorkData(EKK2811B011CBSMsg.EKK2811B011CBSMSG1LIST, rsltEKK2811B011);
						
						
						// 機器オプション対象の機器提供サービス契約番号を取得
						if (outMsgEKK2811B011List != null) 
						{
							for (int j = 0; j < outMsgEKK2811B011List.length; j++) 
							{
								CAANMsg childTemplate = outMsgEKK2811B011List[j];

								// 機器オプションサービス契約一意照会
								wkMapArray = new ArrayList();
								// 引数のcaanMsgは他の呼出元と異なるが、項目名が一致しているため、問題なし
								wkCaanMsgList = shokaiMapper.editInMsgEKK2811A010(param, childTemplate);
								wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
								wkRsltShokaiMap.put(MAP_KEY_EKK2811A010, wkMapArray);
								wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK2811A010});
								
								CAANMsg[] msgEKK2811A010List = getWorkParentData(EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK2811A010);
								
								CAANMsg msgEKK2811A010 = msgEKK2811A010List[0];

								// 機器オプションサービスコードを取得
								String kkop_svc_cd = (String)msgEKK2811A010.getString(EKK2811A010CBSMsg1List.KKOP_SVC_CD);
								String kkop_tg_g01_kktk_svc_kei_no = (String)msgEKK2811A010.getString(EKK2811A010CBSMsg1List.KKTK_SVC_KEI_NO);
								String kkopSt = msgEKK2811A010.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT);
	
								// ネットサービスの場合はルータ機能を取得
								if (kktkSvcKeiNo.equals(kkop_tg_g01_kktk_svc_kei_no)
										&& svcSbtCd == SVC_SBT_CD_HNET && "G01".equals(kkop_svc_cd)
										&& !("910".equals(kkopSt) || "920".equals(kkopSt)))
								{
									//該当機器オプションの機器提供サービス契約番号を取得
									bolHgwKkop = true;
								}
							}
						}
					}
				}
				// HGWが存在する場合、有線ルータを登録する。
				if (bolHgw == true && bolHgwKkop == false)
				{
					// 請求契約一覧照会
					wkMapArray = new ArrayList();
					wkRsltShokaiMap = new HashMap<String, Object>();
					wkCaanMsgList = shokaiMapper.editInMsgEKK0491B005(param, i);
					wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
					wkRsltShokaiMap.put(MAP_KEY_EKK0491B005, wkMapArray);
					wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0491B005});
					CAANMsg[] workEKK0491B005 = getWorkParentData(EKK0491B005CBSMsg.EKK0491B005CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK0491B005);
	
					String seikyKeiNoMb = "";
					// ネットのサービス契約番号
					if(workEKK0491B005 != null)
					{
						for (int l = 0; l < workEKK0491B005.length; l++)
						{
							CAANMsg childTemplatekEKK0491B005 = workEKK0491B005[l];
							String tmpSvcKeiNo = (String)childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.SVC_KEI_NO);
	
							// 処理対象のサービス契約番号の場合
							if (svcKeiNo.equals(tmpSvcKeiNo))
							{
								seikyKeiNoMb = (String)childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.SEIKY_KEI_NO);
							}
						}
					}
					
					List<CAANMsg> caanMsgList = shosaOkMapper.editInMsgEKK2811D010(param, idoDiv, sysid, seikyKeiNoMb, kktkSvcKeiNo, mskmDtlNo, updDtm);
					HashMap<String, Object> rsltEkk2811d010 = editInMsgCmn(param, caanMsgList.get(0));
					Map<?, ?> rsltEKK2811D010 = scCall.run(rsltEkk2811d010, handle);
					shosaOkMapper.editResultRPEKK2811D010(rsltEKK2811D010, param);
				}
			}
		}
		// ANK-4315-00-00 ADD END

		// ユーザデータ情報に設定されたサービス契約情報分、サービス契約照査処理を行う
		for (int i = 0; i < trgtDataList.size(); i++)
		{
			ArrayList<Object> errorList   = new ArrayList();
			ArrayList<Object> wkErrorList = null;

			ArrayList<HashMap<String, Object>> shosaErrorInfo = null;

			HashMap<String, Object> wkRsltShokaiMap = null;
			HashMap<String, Object> rsltShokai      = null;
			HashMap<String, Object> wkRsltShokai    = null;
			HashMap<String, Object> wkRsltShokai0   = null;
			HashMap<String, Object> wkMap           = null;

			HashMap svkeiData = null;

			String svcCd            = null;			// サービスコード
			String prcGrpCd         = null;			// 料金グループコード
			String idoDiv           = null;			// 異動区分
			String regitMemberSbtCd = null;			// 
			String mladUmFlg        = "0";			// メールアドレス有無フラグ
			String optinmUmFlg      = "0";			// オプトインメール有無フラグ
			String kojiakStat       = null;			// 工事案件ステータス
			String pcrsCd           = "";			// 料金コースコード
			String svc_kei_no       = "";			// サービス契約番号
			String kojiakSbtCd      = null;			// 工事案件種別コード
			//---------v31.00.00 ANK-3136-00-00_ADD START---------//
			String pplanCd          = null;			// 料金プランコード
			//---------v31.00.00 ANK-3136-00-00_ADD END-----------//

			int svcSbtCd = 0;

			List<CAANMsg> wkCaanMsgList = null;

			Map<?, ?> rsltShosa = null;				// サービス契約一意照会

			CAANMsg[] workEKK0081A010 = null;
			CAANMsg[] workRsltShosa = null;

			kojiak_no = null;
			ninsho_id = null;
			place_no  = null;

			// サービス契約照査対象のサービス契約情報を取得する
			svkeiData = (HashMap)trgtDataList.get(i);

			// 初期処理
			agingWorkMap.clear();		//2012-02-03追加
			// ST1-2012-0000139 2012/07/17 start
			bfAgingWorkMap.clear();
			// ST1-2012-0000139 2012/07/17 end

			/**************************************************************************************/
			/** 一意照会                                                                         **/
			/**************************************************************************************/
			// 一意照会、一覧照会のマッピング0回目(画面、バッチから渡ってきた項目で対応できるもの)
			wkRsltShokaiMap = editMapShokai0(param, i);

			// 一意照会、一覧照会の実行
			rsltShokai = runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI0_LIST);

			workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);

			// 20120406 住所変更対応 START
			idoDiv = (String)svkeiData.get(JKKSvkeiShosaConstCC.IDO_DIV);
			// 引数に異動区分が設定されていない場合、サービス契約.異動区分を設定する
			if (JKKBpCommon.isNull(idoDiv))
			{
				// 異動区分
				idoDiv = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.IDO_DIV);
				svkeiData.put(JKKSvkeiShosaConstCC.IDO_DIV, idoDiv);
			}
			// 20120406 住所変更対応 END

			// 一意照会、一覧照会のマッピング1回目(画面、バッチから渡ってきた項目で対応できるもの)
			wkRsltShokaiMap = editMapShokai(param, i, rsltShokai);

			// 一意照会、一覧照会の実行
			wkRsltShokai0 = runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_LIST);
			rsltShokai.putAll(wkRsltShokai0);

			// 一意照会、一覧照会のマッピング2回目（一意照会、一覧照会の１回目の結果を受けての照会）
			wkRsltShokaiMap = editMapShokai2(param, i, rsltShokai);

			// 一意照会、一覧照会のマッピング2回目の実行結果
			wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI2_LIST);
			rsltShokai.putAll(wkRsltShokai);

			/**************************************************************************************/
			/** 情報取得                                                                         **/
			/**************************************************************************************/
			svc_kei_no = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO);	// サービス契約番号
			svcCd      = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_CD);		// サービスコード
			prcGrpCd   = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);	// 料金グループコード
			pcrsCd     = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.PCRS_CD);		// 料金コースコード
			svcSbtCd   = getSvcSbtCd(svcCd, prcGrpCd);
			//---------v31.00.00 ANK-3136-00-00_ADD START---------//
			pplanCd    = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.PPLAN_CD);		// 料金プランコード
			//---------v31.00.00 ANK-3136-00-00_ADD END-----------//
			kkExclusiveMapper.initParentLastUpdDtm("KK0081", workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.LAST_UPD_DTM));
			// 20140731 ANK-1918-00-00 デバッグログ追加 ADD START
			JKKBpCommon.printBpDebugLog(this.getClass(), "【KK_DEBUG】照査CC "+i+"回目 svc_kei_no:"+svc_kei_no+" svcCd:"+svcCd+" prcGrpCd:"+prcGrpCd+" pcrsCd:"+pcrsCd );
			// 20140731 ANK-1918-00-00 デバッグログ追加 ADD END
			CAANMsg[] workEKK0011A010 = getWorkParentData(EKK0011A010CBSMsg.EKK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0011A010);
			kkExclusiveMapper.initParentLastUpdDtm("KK0011", workEKK0011A010[0].getString(EKK0011A010CBSMsg1List.LAST_UPD_DTM));

			// 2012-03-08 追加↓↓↓
			CAANMsg[] workECK0011A010a = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0011A010);
			kkExclusiveMapper.initParentLastUpdDtm("CK0011", workECK0011A010a[0].getString(ECK0011A010CBSMsg1List.LAST_UPD_DTM));
			// 2012-03-08 追加↑↑↑

			// ANK-1306-00-00 2013/01/28 ADD START
			// 一時金設定変更（完了状態コード変更（NULL→未完了："0"））
			// 一時金設定一覧照会(申込明細番号)取得
			ArrayList<HashMap> workEKK1021B003Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK1021B003);
			if (workEKK1021B003Array != null) 
			{
				for (int k = 0; k < workEKK1021B003Array.size(); k++)
				{
					// 完了状態コード＝NULLの取得情報に対して一時金設定変更処理を行う
					CAANMsg[] wkTenplates = getWorkData(EKK1021B003CBSMsg.EKK1021B003CBSMSG1LIST, (Map)workEKK1021B003Array.get(k));
					for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
					{
						String finStatCd = wkTenplates[j].getString(EKK1021B003CBSMsg1List.FIN_STAT_CD);
						if (finStatCd == null || "".equals(finStatCd))
						{
							wkCaanMsgList = shosaOkMapper.editInMsgEKK1021C010(param, wkTenplates[j]);
							wkMap = editInMsgCmn(param, wkCaanMsgList.get(0));
							Map<?, ?> rslt = scCall.run(wkMap, handle);

							wkErrorList = new ArrayList();
							wkErrorList = shosaOkMapper.editResultRPEKK1021C010(rslt, param);
							ArrayList<Object> errorListTmp = new ArrayList();
							errorListTmp.addAll(wkErrorList);
							errorList.addAll(errorListTmp);
						}
					}
				}
			}
			// ANK-1306-00-00 2013/01/28 ADD END
			
			
			// 照査登録、通知書登録で使用するため照査リストに格納
			// 料金グループコード
			svkeiData.put(JKKSvkeiShosaConstCC.PRC_GRP_CD, prcGrpCd);

			// お客様情報の取得
			CAANMsg[] workECK0011A010 = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0011A010);
			shk_eoId = workECK0011A010[0].getString(ECK0011A010CBSMsg1List.SHK_EOID);
			// ANK-4075-00-00 ADD START
			String scmTypeCd = workECK0011A010[0].getString(ECK0011A010CBSMsg1List.SCM_TYPE_CD);
			String scmJgsCd = workECK0011A010[0].getString(ECK0011A010CBSMsg1List.SCM_JGS_CD);
			// ANK-4075-00-00 ADD END

			// お客様更新
			// ※updCustinfoメソッドでお客様回復も行おうとしているが、有効な契約がない場合は回復しないため、照査後に再度回復を行う
			regitMemberSbtCd = super.updCustinfo(param, handle, rsltShokai, prcGrpCd, svc_kei_no, i, errorList);

			// 締結済まで進めることが可能かを判別するフラグ		2012-01-27
			boolean canCncSvcKei = false;

//↓↓↓2012-12-10無効　ロット２ST2-2012-0001328（締結済まで進めない）↓↓↓
//			// マンション通信設備コード
//			String mansTushinEquipCd = "";
//↑↑↑2012-12-10無効　ロット２ST2-2012-0001328（締結済まで進めない）↑↑↑

			/**************************************************************************************/
			/** サービスタイプ別一意照会                                                         **/
			/**************************************************************************************/
			switch (svcSbtCd) 
			{
				case SVC_SBT_CD_HNET:
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// eo光ネット
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					wkRsltShokaiMap = editMapShokaiHNet(param, i, rsltShokai);
					wkRsltShokai    = runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_HNET_LIST);
					rsltShokai.putAll(wkRsltShokai);
//↓↓↓2012-12-10無効　ロット２ST2-2012-0001328（締結済まで進めない）↓↓↓
//					//2012-01-27 IT1-589 対応↓↓↓
//					param = editRequestMapEKK0081B009(param, JPCModelConstant.FUNC_CD_1, rsltShokai);
//					Map<?, ?> ekk0081b009Rslt = JKKSvkeiShosaCnc.callEKK0081B009(handle, param, KKSV0118_KKSV0118OP.KKSV011888SC);
//					canCncSvcKei = judgeAlreadyUseOtherEOH(svcSbtCd, ekk0081b009Rslt, pcrsCd);
//					//2012-01-27 IT1-589 対応↑↑↑
//↑↑↑2012-12-10無効　ロット２ST2-2012-0001328（締結済まで進めない）↑↑↑
					break;

				case SVC_SBT_CD_HTV:
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// eo光テレビ
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					wkRsltShokaiMap = editMapShokaiHTv(param, i, rsltShokai);
					wkRsltShokai    = runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_HTV_LIST);
					rsltShokai.putAll(wkRsltShokai);
					break;

				case SVC_SBT_CD_HTEL:
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// eo光電話
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					wkRsltShokaiMap = editMapShokaiHTel(param, i, rsltShokai);
					wkRsltShokai    = runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_HTEL_LIST);
					rsltShokai.putAll(wkRsltShokai);
//↓↓↓2012-12-10無効　ロット２ST2-2012-0001328（締結済まで進めない）↓↓↓
//					//2012-01-27 IT1-589 対応↓↓↓
//					param = editRequestMapEKK0081B009(param, JPCModelConstant.FUNC_CD_1, rsltShokai);
//					ekk0081b009Rslt = JKKSvkeiShosaCnc.callEKK0081B009(handle, param, KKSV0118_KKSV0118OP.KKSV011888SC);
//					canCncSvcKei = judgeAlreadyUseOtherEOH(svcSbtCd, ekk0081b009Rslt, pcrsCd);
//					//2012-01-27 IT1-589 対応↑↑↑
//
//					// マンションの通信設備コードを取得
//					mansTushinEquipCd = getMansTushinEquipCd(handle, workEKK0081A010[0], param, i);
//
//					// マンションの通信設備コードが取得できている場合は、マンションと判定
//					canCncSvcKei = canCncSvcKei || !"".equals(mansTushinEquipCd);
//↑↑↑2012-12-10無効　ロット２ST2-2012-0001328（締結済まで進めない）↑↑↑
					break;

				case SVC_SBT_CD_MOBA:
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// eoモバイル
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					wkRsltShokaiMap = editMapShokaiMoba(param, i, rsltShokai);
					wkRsltShokai    = runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_MOBA_LIST);
					rsltShokai.putAll(wkRsltShokai);
					break;

				default:
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// eoADSL
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					wkRsltShokaiMap = editMapShokaiAdsl(param, i, rsltShokai);
					wkRsltShokai    = runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_ADSL_LIST);
					rsltShokai.putAll(wkRsltShokai);
//↓↓↓2012-12-10無効　ロット２ST2-2012-0001328（締結済まで進めない）↓↓↓
//					//2012-01-27 IT1-589 対応↓↓↓
//					canCncSvcKei = isFletsADSL(rsltShokai);
//					//2012-01-27 IT1-589 対応↑↑↑
//↑↑↑2012-12-10無効　ロット２ST2-2012-0001328（締結済まで進めない）↑↑↑
					break;

			}

			// ST1-2012-0000139 2012/07/17 start
			// 処理前エイジング対象値の保存
			saveBfAgingTgValue(handle, param, rsltShokai);
			// ST1-2012-0000139 2012/07/17 end

			/**************************************************************************************/
			/** 照査処理                                                                         **/
			/**************************************************************************************/
			switch (svcSbtCd) 
			{
				case SVC_SBT_CD_HNET:
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// eo光ネット
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// ANK-3834-00-00 ADD START
					// ANK-4075-00-00 MOD START
//					String malwareFlg = malwareum (svkeiData,rsltShokai,pcrsCd);
					String malwareFlg = malwareum (svkeiData,rsltShokai,pcrsCd,scmTypeCd,scmJgsCd);
					// ANK-4075-00-00 MOD END
					// ANK-3834-00-00 ADD END
					wkErrorList = new ArrayList();
					// ANK-3834-00-00 MOD START
					// wkMap       = editMapShosaOkHNet(handle, param, i, rsltShokai, idoDiv, canCncSvcKei);
					wkMap       = editMapShosaOkHNet(handle, param, i, rsltShokai, idoDiv, canCncSvcKei, malwareFlg);
					// ANK-3834-00-00 MOD END
					wkErrorList = runShosaOkHNet(handle, param, wkMap, canCncSvcKei, rsltShokai);
					errorList.addAll(wkErrorList);
					break;

				case SVC_SBT_CD_HTV:
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// eo光テレビ
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					wkErrorList = new ArrayList();
					wkMap       = editMapShosaOkHTv(handle, param, i, rsltShokai, idoDiv);
					wkErrorList = runShosaOkHTv(handle, param, wkMap);
					errorList.addAll(wkErrorList);
					break;

				case SVC_SBT_CD_HTEL:
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// eo光電話
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					wkErrorList = new ArrayList();
					wkMap       = editMapShosaOkHTel(handle, param, i, rsltShokai, idoDiv, canCncSvcKei);
					//↓↓↓2012-06-06追加、番ポ工事登録用S-IF入力マップ編集↓↓↓
					// OM-2021-0001122 MOD START
					//wkMap       = editMapShosaOkHTelBanpo(param, handle, i, rsltShokai, wkMap);
					wkMap       = editMapShosaOkHTelBanpo(param, handle, i, rsltShokai, wkMap, idoDiv);
					// OM-2021-0001122 MOD END
					//↑↑↑2012-06-06追加、番ポ工事登録用S-IF入力マップ編集↑↑↑
					// OM-2016-0001720 2017/01/31 引数追加 MOD START
					
// ANK-4494-00-00 STEP2 ADD START
					// 電話番号マスタ更新用S-IF入力マップ編集
					wkMap       = editMapShosaOkHTelTelno(param, handle, i, rsltShokai, wkMap, idoDiv);
// ANK-4494-00-00 STEP2 ADD END
					
//					wkErrorList = runShosaOkHTel(handle, param, wkMap, canCncSvcKei);
					wkErrorList = runShosaOkHTel(handle, param, wkMap, canCncSvcKei, rsltShokai);
					// OM-2016-0001720 2017/01/31 引数追加 MOD END
					
					errorList.addAll(wkErrorList);
					break;

				case SVC_SBT_CD_MOBA:
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// eoモバイル
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					wkErrorList = new ArrayList();
					wkMap       = editMapShosaOkMoba(handle, param, i, rsltShokai, idoDiv);
					wkErrorList = runShosaOkMoba(handle, param, wkMap);
					errorList.addAll(wkErrorList);
					break;

				default:
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// eoADSL
					// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					wkErrorList = new ArrayList();
					wkMap       = editMapShosaOkAdsl(param, i, rsltShokai, idoDiv, canCncSvcKei);
					wkErrorList = runShosaOkAdsl(handle, param, wkMap, canCncSvcKei);
					errorList.addAll(wkErrorList);
					break;

			}

//↓↓↓2013-05-05追加　巻B外接品質強化試験障害対応（仮メールアドレス払出有無を立てる）↓↓↓
			if (SVC_SBT_CD_HNET == svcSbtCd || SVC_SBT_CD_MOBA == svcSbtCd || SVC_SBT_CD_ADSL == svcSbtCd)
			{
				//メルアド払出しのあったオプションサービス契約＜ＩＳＰ＞照査結果を取得（runShosaメソッド内で設定）
				CAANMsg workEKK0361C010 = (CAANMsg) wkMap.get(MAP_KEY_EKK0361C010_MLAD);
				//メールアドレスあり？
				if(null != workEKK0361C010 && !isNull(workEKK0361C010.getString(EKK0361C010CBSMsg.MLAD)))
				{
					//自動照査結果テーブルに返す項目「仮メールアドレス払出有無」
					mladUmFlg = "1";
				}
			}
//↑↑↑2013-05-05追加　巻B外接品質強化試験障害対応（仮メールアドレス払出有無を立てる）↑↑↑
			
			/**************************************************************************************/
			/** 指示書連携                                                                       **/
			/**************************************************************************************/
			//↓↓↓2012-04-23追加　巻@　指示書CC取込み対応↓↓↓
			// 連携データ区分 02 ：回線契約にかかるサービス契約番号とSYSIDとの紐付け情報
			JKKBpCommon.putAxMRenkeiDataKbn(
					param,
					JKKSvkeiShosaConstCC.SJISHO_MAP,
					JKKAddSjishoConst.RENKEI_DATA_KBN_SYSID,
					JKKAddSjishoConst.TRN_KBN_UPD,
					new String[]{svc_kei_no},
					currentSysid
			);
			// 連携データ区分 07 ：回線契約に紐づく各種サービス契約の情報
			JKKBpCommon.putAxMRenkeiDataKbn07(
					param,
					JKKSvkeiShosaConstCC.SJISHO_MAP,
					JKKAddSjishoConst.TRN_KBN_UPD,
					new String[]{svc_kei_no},
					"料金グループ番号？"
			);
			//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑

			// 2012/08/07 ST1-2012-0000211 ADD START 請求契約番号情報の追加
			// 連携データ区分 06 ：請求契約番号（#T）の情報
			JKKBpCommon.putAxMRenkeiDataKbn(
					param,
					JKKSvkeiShosaConstCC.SJISHO_MAP,
					JKKAddSjishoConst.RENKEI_DATA_KBN_SEIKY_KEI,
					JKKAddSjishoConst.TRN_KBN_ADD,
					new String[]{svc_kei_no},
					currentSysid
			);
			// 2012/08/07 ST1-2012-0000211 ADD START 請求契約番号情報の追加

			//↓↓↓2012-04-25追加　巻@　整理番号発番付替CC取込み対応↓↓↓
			stackSeiriBangoMap(param, svc_kei_no, currentSysid);
			//↑↑↑2012-04-25追加　巻@　整理番号発番付替CC取込み対応↑↑↑

			/**************************************************************************************/
			/**************************************************************************************/
			// 照査OKの場合の共通の照査処理
			wkErrorList = new ArrayList();
			wkMap       = editMapShosaOkCmn(handle, param, i, rsltShokai, idoDiv, svcSbtCd, canCncSvcKei);
			wkErrorList = runShosaOkCmn(handle, param, wkMap, svcSbtCd, canCncSvcKei, idoDiv);
			errorList.addAll(wkErrorList);
			
			// ANK-4315-00-00 ADD START
			// ONU交換工事フラグ
			boolean onuKokankojiflg = false;
			// ローゼット化済み(サービス契約回線内訳.ローゼット設置状態コードが"1"(設置済み))。
			String rozzetflg ="";
			// ANK-4315-00-00 ADD END
			
			// AMK-1578-00-00 2013/12/01 ADD START
			// サービス追加（ネットまたは電話）の場合、同回線に紐付く電話（電話照査時ネット）の契約状態により旧VA（電話照査時は旧ルータ）をキャンセル
			// 解約し、多機能ルータの機器オプション（ネット照査時は電話のVA機能、電話照査時はネットのルータ機能）を照査する（旧VA/ルータが照査以降の場合のみ）
			// 照査されるサービスがネットまたは電話の場合のみ下記処理を考慮
			if (JKKStrConst.CD00576_00002.equals(idoDiv) && (svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_HTEL))
			{
				// 申込明細番号を取得する
				CAANMsg[] msgWorkArray = null;
				CAANMsg msgEKK0021A010 = null;			// 申込明細
				msgWorkArray = getWorkParentData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0021A010);
				msgEKK0021A010 = msgWorkArray[0];
				String mskmshoDtlNo = msgEKK0021A010.getString(EKK0021A010CBSMsg1List.MSKM_DTL_NO);
				
				
				// 一覧一意照会の結果を取得
				// 回線紐付き機器契約一覧照会
				CAANMsg[] workEKK2811B011 = null;
				workEKK2811B011 = getWorkParentData(EKK2811B011CBSMsg.EKK2811B011CBSMSG1LIST, rsltShokai, MAP_KEY_EKK2811B011);
				// 機器オプションサービス契約一意照会
				ArrayList<HashMap> workEKK2811A010Array = null; 
				workEKK2811A010Array = (ArrayList) rsltShokai.get(MAP_KEY_EKK2811A010);
				
				// サービス契約回線内訳番号を取得
				String svckaisenUcwkNo = "";
				
				// 機器サービス契約番号を取得（機器オプション対象）
				String kkop_tg_kktk_svc_kei_no = "";
				
// ▽▽▽ ANK-3412-00-00 ADD START
				String rtMskmCd = "";
// ▲▲▲ ANK-3412-00-00 ADD END
				
				// 機器オプション対象の機器提供サービス契約番号を取得
				if (workEKK2811A010Array != null) {
					for (int a = 0; a < workEKK2811A010Array.size(); a++) {
						CAANMsg[] wkTemplates = getWorkData(EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST,(Map) workEKK2811A010Array.get(a));
						for (int j = 0; null != wkTemplates && j < wkTemplates.length; j++) {
							CAANMsg childTemplate = wkTemplates[j];
							// 機器オプションサービスコードを取得
							String kkop_svc_cd = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_CD);
							// ネットサービスの場合はルータ機能を取得
							if (svcSbtCd == SVC_SBT_CD_HNET && "G01".equals(kkop_svc_cd)) {
								//該当機器オプションの機器提供サービス契約番号を取得
								kkop_tg_kktk_svc_kei_no = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKTK_SVC_KEI_NO);
							// 電話サービスの場合はVA機能を取得
							} else if (svcSbtCd == SVC_SBT_CD_HTEL && "G02".equals(kkop_svc_cd)) {
								//該当機器オプションの機器提供サービス契約番号を取得
								kkop_tg_kktk_svc_kei_no = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKTK_SVC_KEI_NO);
							}
// ▽▽▽ ANK-3412-00-00 ADD START
							// ルータ申込コードを取得
							String kkopSt = childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT);
							if ("G01".equals(kkop_svc_cd) && !("910".equals(kkopSt) || "920".equals(kkopSt))) 
							{
								rtMskmCd = ("G01".equals(childTemplate.getString(EKK2811A010CBSMsg1List.PCRS_CD)) ? "0" : "1");
							}
//▲▲▲ ANK-3412-00-00 ADD END
						}
					}
				}
				
				
				// 機器オプション対象の機器提供サービス契約番号が空白でない場合
				if (kkop_tg_kktk_svc_kei_no != null && !"".equals(kkop_tg_kktk_svc_kei_no)) {
					// 回線紐付き機器契約一覧照会が存在する場合
					if (workEKK2811B011 != null && !"".equals(workEKK2811B011) && workEKK2811B011.length > 0) {
						for (int kop = 0; kop < workEKK2811B011.length ; kop++ ) {
							// 一覧照会１件づつ取得
							CAANMsg getworkEKK2811B011 = workEKK2811B011[kop];
							// 機器提供サービス契約番号を取得
							String kktk_svc_kei_no = getworkEKK2811B011.getString(EKK2811B011CBSMsg1List.KKTK_SVC_KEI_NO);
							// 該当機器提供サービス契約番号が機器オプション対象の機器であれば、サービス回線内訳番号を取得する
							if (kkop_tg_kktk_svc_kei_no.equals(kktk_svc_kei_no)) {
								// サービス契約回線内訳番号をセット
								svckaisenUcwkNo = (String)getworkEKK2811B011.getString(EKK2811B011CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
							}
						}
					}
				}
				
				// 同一回線使用中の対象サービス契約番号
				String eqKaienTgSvcKeiNo = "";
				
				// 同一回線使用の電話（電話照査時はネット）のサービス契約を取得する
				// 回線対象サービス契約一覧照会
				if (svckaisenUcwkNo != null && !"".equals(svckaisenUcwkNo)) {
					List<CAANMsg> inMsgEKK0241B002List = shosaOkMapper.editInMsgEKK0241B002(param, i, svckaisenUcwkNo);
					HashMap<String, Object> inMsgEKK0241B002Map = editInMsgCmn(param, inMsgEKK0241B002List.get(0));
					Map<?, ?> rsltEKK0241B002 = scCall.run(inMsgEKK0241B002Map, handle);
					CAANMsg[] outMsgEKK0241B002List = getWorkData(EKK0241B002CBSMsg.EKK0241B002CBSMSG1LIST, rsltEKK0241B002);
					
					// 取得できる場合
					if (outMsgEKK0241B002List != null && !"".equals(outMsgEKK0241B002List) && outMsgEKK0241B002List.length > 0 ) {
						for (int kw = 0 ; kw < outMsgEKK0241B002List.length ; kw ++) {
							CAANMsg getEKK0241B002List = outMsgEKK0241B002List[kw];
							// サービスコードを取得
							String svc_cd = getEKK0241B002List.getString(EKK0241B002CBSMsg1List.SVC_CD);
							// ネット照査時なら電話のサービス契約番号を取得
							if (svcSbtCd == SVC_SBT_CD_HNET && SVC_CD_TEL.equals(svc_cd)) {
								//　該当電話のサービス契約番号を取得する
								eqKaienTgSvcKeiNo = getEKK0241B002List.getString(EKK0241B002CBSMsg1List.SVC_KEI_NO);
							// 電話照査時ならネットのサービス契約番号を取得
							} else if (svcSbtCd == SVC_SBT_CD_HTEL && SVC_CD_NET.equals(svc_cd)) {
								//　該当電話のサービス契約番号を取得する
								eqKaienTgSvcKeiNo = getEKK0241B002List.getString(EKK0241B002CBSMsg1List.SVC_KEI_NO);
							}
						}
					}
					
				}
				
				// 同一回線使用中の対象サービス契約番号がNULLの場合、セット（ネット照査なら電話、電話照査ならネット）が存在しないと判断
				if (eqKaienTgSvcKeiNo == null || "".equals(eqKaienTgSvcKeiNo)) {
					// 何もしない
				} else {
					
					// IT2-2014-0000003 2014-01-06 ADD_START
					// 返品機器提供サービス契約番号リスト
					List<HashMap<String, String>> hempin_kktk_svc_kei_no_lst = new ArrayList<HashMap<String, String>>();
					// IT2-2014-0000003 2014-01-06 ADD_END
					
					// OM-2014-0000714 2014/02/18 ADD START
					//旧機器キャンセル・解約処理実施可否フラグ
					boolean oldKikiRunFlg = false;
					// OM-2014-0000714 2014/02/18 ADD END
					
					// IT2-2014-0000132 2014/02/20 ADD START
					boolean kkopShosaFlg = false;
					// IT2-2014-0000132 2014/02/20 ADD END
					
					// ネットの場合
					if (svcSbtCd == SVC_SBT_CD_HNET) {
						// 電話がペアで存在する場合
						// 機器提供サービス契約一覧照会（サービス契約番号で）を実施し、旧VA機器のみを取得
						List<CAANMsg> eKK0341B002CaanMsgList = shokaiMapper.editInMsgEKK0341B002(param,eqKaienTgSvcKeiNo , "C004");
						HashMap<String, Object> inMsgEKK0341B002Map = editInMsgCmn(param, eKK0341B002CaanMsgList.get(0));
						Map<?, ?> rsltEKK0341B002 = scCall.run(inMsgEKK0341B002Map, handle);
						CAANMsg[] outMsgEKK0341B002List = getWorkData(EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST, rsltEKK0341B002);
						
						// VA機器の情報を取得成功の場合
						if (outMsgEKK0341B002List != null && !"".equals(outMsgEKK0341B002List) && outMsgEKK0341B002List.length > 0) {
							for (int vk = 0; vk < outMsgEKK0341B002List.length ; vk ++) {
								CAANMsg getEKK0341B002List = outMsgEKK0341B002List[vk];
								// 機器提供サービス契約ステータスを取得
								String kktk_svc_kei_stat = getEKK0341B002List.getString(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT);
								// 機器提供サービス契約番号を取得
								String kktk_svc_kei_no = getEKK0341B002List.getString(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);
// IT2-2014-0000132 2014/02/20 MOD START
//								if ("020".compareTo(kktk_svc_kei_stat) <= 0) {
								// 旧機器が照査済以上(照査済を含む)かつ機器オプションフラグが偽の場合（初回機器オプション照査のみOK）
								if ("020".compareTo(kktk_svc_kei_stat) <= 0 && !kkopShosaFlg) {
// IT2-2014-0000132 2014/02/20 MOD END
									// それに紐付く多機能ルータの機器オプションを取得し、照査を実施
									for (int a = 0; a < workEKK2811A010Array.size(); a++) {
										CAANMsg[] wkTemplates = getWorkData(EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST,(Map) workEKK2811A010Array.get(a));
										for (int j = 0; null != wkTemplates && j < wkTemplates.length; j++) {
											// 機器オプションサービスコードを取得
											CAANMsg childTemplate = wkTemplates[j];
											String kkop_svc_cd = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_CD);
											String kkop_svc_kei_stat = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT);
											// セットの多機能ルータのVA機能を照査する(VA機能が受付済の場合のみ)
											if ("G02".equals(kkop_svc_cd) && "010".equals(kkop_svc_kei_stat)) {
												// 多機能ルータの機器提供オプション.VA機能を照査する
												ArrayList wkMapArray = new ArrayList();
												HashMap<String, Object> rsltShosaMap = new HashMap();
												List<CAANMsg> eKK2811C030CaanMsgList = shosaOkMapper.editInMsgEKK2811C030(param,childTemplate,idoDiv);
												HashMap<String, Object> inMsgEKK2811C030Map = editInMsgCmn(param, eKK2811C030CaanMsgList.get(0));
												wkMapArray.add(inMsgEKK2811C030Map);
												rsltShosaMap.put(MAP_KEY_EKK2811C030, wkMapArray);
												// 機器オプションサービス契約照査
												wkErrorList = runShosa(handle, param, rsltShosaMap, MAP_KEY_EKK2811C030);
												errorList.addAll(wkErrorList);
												// OM-2014-0000714 2014/02/18 ADD START
												// 旧機器のキャンセル・解約を実施する
												oldKikiRunFlg = true;
												// OM-2014-0000714 2014/02/18 ADD END
												
												// IT2-2014-0000132 2014/02/20 ADD START
												kkopShosaFlg = true;
												// IT2-2014-0000132 2014/02/20 ADD END
											}
										}
									}
								}
								// OM-2014-0000714 2014/02/18 MOD START
								//機器オプション機能の照査結果に合わせて、旧機器のキャンセル・解約分岐を行う
								if (oldKikiRunFlg) {
									// 旧機器のキャンセル・解約を実施する（旧機器キャンセル解約CC）
									String workFixedText = "oldKkCnlDelKhkCC";
									HashMap<String, Object> trgt_data = new HashMap<String, Object>();
									// サービス契約番号を渡す（セットの電話）
									trgt_data.put("svc_kei_no", eqKaienTgSvcKeiNo);
									// 機器提供サービス契約番号を渡す（照査処理時はINとして投入）
									trgt_data.put("kktk_svc_kei_no", kktk_svc_kei_no);
									// 申込明細番号を渡す
									trgt_data.put("mskm_sho_dtl_no", mskmshoDtlNo);
									// 異動区分を渡す
									trgt_data.put("ido_div", idoDiv);
									
									createUserData(param, workFixedText);
									HashMap<String, Object> outMap = (HashMap)param.getData(workFixedText);
									ArrayList<HashMap> list = new ArrayList<HashMap>();
									list.add(new HashMap<String, Object>());
									outMap.put("trgt_data_list", list);
									
									//旧機器に対してキャンセル・解約を行う更新処理を呼出す
									JKKBpCommon.oldKkCnlDelCall(handle, param, trgt_data, workFixedText);
									
									// IT2-2014-0000003 2014-01-06 ADD_START
									HashMap td = (HashMap)param.getData(workFixedText);
									ArrayList<HashMap<String, Object>> tdList = (ArrayList<HashMap<String, Object>>)td.get(JKKSvkeiShosaConstCC.TRGT_DATA_LIST);
									
									for (HashMap<String, Object> targetMap : tdList)
									{
										// 旧機器の機器提供サービス契約番号、機器提供サービス契約ステータス
										String oldKktkSveKeiNo = (String)targetMap.get(JKKOldKkCnlDelKhkCC.KEY_KKTK_SVC_KEI_NO);
										String oldKktkSveKeiStat = (String)targetMap.get(JKKOldKkCnlDelKhkCC.KEY_KKTK_SVC_KEI_STAT);
										
										// 機器提供サービス契約番号が一致、かつステータスが解約済かキャンセル済の場合
										if (oldKktkSveKeiNo != null
												&& oldKktkSveKeiStat != null
												&& kktk_svc_kei_no.equals(oldKktkSveKeiNo)
												&& ("910".equals(oldKktkSveKeiStat) || "920".equals(oldKktkSveKeiStat)))
										{
											// 旧機器の機器提供サービス契約番号を保持
											HashMap<String, String> hash = new HashMap<String, String>();
											hash.put(eqKaienTgSvcKeiNo, kktk_svc_kei_no);
											hempin_kktk_svc_kei_no_lst.add(hash);
										}
									}
									// IT2-2014-0000003 2014-01-06 ADD_END
								}
								// OM-2014-0000714 2014/02/18 MOD END
							}
						}
					// 電話の場合	
					} else if (svcSbtCd == SVC_SBT_CD_HTEL ) {
						// ネットがペアで存在する場合
						// 機器提供サービス契約一覧照会（サービス契約番号で）を実施し、旧ルータ機器のみを取得
						List<CAANMsg> eKK0341B002CaanMsgList = shokaiMapper.editInMsgEKK0341B002(param,eqKaienTgSvcKeiNo , "C014");
						HashMap<String, Object> inMsgEKK0341B002Map = editInMsgCmn(param, eKK0341B002CaanMsgList.get(0));
						Map<?, ?> rsltEKK0341B002 = scCall.run(inMsgEKK0341B002Map, handle);
						CAANMsg[] outMsgEKK0341B002List = getWorkData(EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST, rsltEKK0341B002);
						
						// ルーターの情報を取得成功の場合
						if (outMsgEKK0341B002List != null && !"".equals(outMsgEKK0341B002List) && outMsgEKK0341B002List.length > 0) {
							for (int vk = 0; vk < outMsgEKK0341B002List.length ; vk ++) {
								CAANMsg getEKK0341B002List = outMsgEKK0341B002List[vk];
								// 機器提供サービス契約ステータスを取得
								String kktk_svc_kei_stat = getEKK0341B002List.getString(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT);
								// 機器提供サービス契約番号を取得
								String kktk_svc_kei_no = getEKK0341B002List.getString(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);
// IT2-2014-0000132 2014/02/20 MOD START
//								if ("020".compareTo(kktk_svc_kei_stat) <= 0) {
								// 旧機器が照査済以上(照査済を含む)かつ機器オプションフラグが偽の場合（初回機器オプション照査のみOK）
								if ("020".compareTo(kktk_svc_kei_stat) <= 0 && !kkopShosaFlg) {
// IT2-2014-0000132 2014/02/20 MOD END
									// それに紐付く多機能ルータの機器オプションを取得し、照査を実施
									for (int a = 0; a < workEKK2811A010Array.size(); a++) {
										CAANMsg[] wkTemplates = getWorkData(EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST,(Map) workEKK2811A010Array.get(a));
										for (int j = 0; null != wkTemplates && j < wkTemplates.length; j++) {
											// 機器オプションサービスコードを取得
											CAANMsg childTemplate = wkTemplates[j];
											String kkop_svc_cd = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_CD);
											String kkop_svc_kei_stat = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT);
											// セットの多機能ルータのルータ機能を照査する(ルータ機能が受付済の場合のみ)
											if ("G01".equals(kkop_svc_cd) && "010".equals(kkop_svc_kei_stat)) {
												// 多機能ルータの機器提供オプション.ルータ機能を照査する
												ArrayList wkMapArray = new ArrayList();
												HashMap<String, Object> rsltShosaMap = new HashMap();
												List<CAANMsg> eKK2811C030CaanMsgList = shosaOkMapper.editInMsgEKK2811C030(param,childTemplate,idoDiv);
												HashMap<String, Object> inMsgEKK2811C030Map = editInMsgCmn(param, eKK2811C030CaanMsgList.get(0));
												wkMapArray.add(inMsgEKK2811C030Map);
												rsltShosaMap.put(MAP_KEY_EKK2811C030, wkMapArray);
												// 機器オプションサービス契約照査
												wkErrorList = runShosa(handle, param, rsltShosaMap, MAP_KEY_EKK2811C030);
												errorList.addAll(wkErrorList);
												// OM-2014-0000714 2014/02/18 ADD START
												// 旧機器のキャンセル・解約を実施する
												oldKikiRunFlg = true;
												// OM-2014-0000714 2014/02/18 ADD END
												// IT2-2014-0000132 2014/02/20 ADD START
												kkopShosaFlg = true;
												// IT2-2014-0000132 2014/02/20 ADD END
											}
										}
									}
								}
								
								// OM-2014-0000714 2014/02/18 MOD START
								//機器オプション機能の照査結果に合わせて、旧機器のキャンセル・解約分岐を行う
								if (oldKikiRunFlg) {
									// 旧機器のキャンセル・解約を実施する（旧機器キャンセル解約CC）
									String workFixedText = "oldKkCnlDelKhkCC";
									HashMap<String, Object> trgt_data = new HashMap<String, Object>();
									// サービス契約番号を渡す（セットの電話）
									trgt_data.put("svc_kei_no", eqKaienTgSvcKeiNo);
									// 機器提供サービス契約番号を渡す（照査処理時はINとして投入）
									trgt_data.put("kktk_svc_kei_no", kktk_svc_kei_no);
									// 申込明細番号を渡す
									trgt_data.put("mskm_sho_dtl_no", mskmshoDtlNo);
									// 異動区分を渡す
									trgt_data.put("ido_div", idoDiv);
									
									createUserData(param, workFixedText);
									HashMap<String, Object> outMap = (HashMap)param.getData(workFixedText);
									ArrayList<HashMap> list = new ArrayList<HashMap>();
									list.add(new HashMap<String, Object>());
									outMap.put("trgt_data_list", list);
									
									//旧機器に対してキャンセル・解約を行う更新処理を呼出す
									JKKBpCommon.oldKkCnlDelCall(handle, param, trgt_data, workFixedText);
									
									// IT2-2014-0000003 2014-01-06 ADD_START
									HashMap td = (HashMap)param.getData(workFixedText);
									ArrayList<HashMap<String, Object>> tdList = (ArrayList<HashMap<String, Object>>)td.get(JKKSvkeiShosaConstCC.TRGT_DATA_LIST);
									
									for (HashMap<String, Object> targetMap : tdList)
									{
										// 旧機器の機器提供サービス契約番号、機器提供サービス契約ステータス
										String oldKktkSveKeiNo = (String)targetMap.get(JKKOldKkCnlDelKhkCC.KEY_KKTK_SVC_KEI_NO);
										String oldKktkSveKeiStat = (String)targetMap.get(JKKOldKkCnlDelKhkCC.KEY_KKTK_SVC_KEI_STAT);
										
										// 機器提供サービス契約番号が一致、かつステータスが解約済かキャンセル済の場合
										if (oldKktkSveKeiNo != null
												&& oldKktkSveKeiStat != null
												&& kktk_svc_kei_no.equals(oldKktkSveKeiNo)
												&& ("910".equals(oldKktkSveKeiStat) || "920".equals(oldKktkSveKeiStat)))
										{
											// 旧機器の機器提供サービス契約番号を保持
											HashMap<String, String> hash = new HashMap<String, String>();
											hash.put(eqKaienTgSvcKeiNo, kktk_svc_kei_no);
											hempin_kktk_svc_kei_no_lst.add(hash);
										}
									}
									// IT2-2014-0000003 2014-01-06 ADD_END
								}
								// OM-2014-0000714 2014/02/18 MOD END
							}
						}
						
						// 20160803 ANK-2722-00-00_電話番号追加時の多機能OPステータス遷移条件の見直し ADD START
						// 契約中の旧ルーターが存在しなくとも、多機能ルータのルータオプションが「受付済」であり
						// 親契約のネットのステータスが「照査済」以上
						// （「照査済」、「締結済」、「サービス提供中」、「休止・中断中」、「停止中」）
						// である場合、ルータオプションも照査する
						
						else
						{
							// 親契約（ネット）のステータス
							String oyaStat = null;
							if (svckaisenUcwkNo != null && !"".equals(svckaisenUcwkNo))
							{
								// 同一回線使用のネットのサービス契約を取得する
								// 回線対象サービス契約一覧照会
								List<CAANMsg> inMsgEKK0241B002List = shosaOkMapper.editInMsgEKK0241B002(param, i, svckaisenUcwkNo);
								HashMap<String, Object> inMsgEKK0241B002Map = editInMsgCmn(param, inMsgEKK0241B002List.get(0));
								Map<?, ?> rsltEKK0241B002 = scCall.run(inMsgEKK0241B002Map, handle);
								CAANMsg[] outMsgEKK0241B002List = getWorkData(EKK0241B002CBSMsg.EKK0241B002CBSMSG1LIST, rsltEKK0241B002);
								
								// 取得できる場合
								if (outMsgEKK0241B002List != null && !"".equals(outMsgEKK0241B002List) && outMsgEKK0241B002List.length > 0 )
								{
									for (int kw = 0 ; kw < outMsgEKK0241B002List.length ; kw ++) 
									{
										CAANMsg getEKK0241B002List = outMsgEKK0241B002List[kw];
										// サービスコードを取得
										String svc_cd = getEKK0241B002List.getString(EKK0241B002CBSMsg1List.SVC_CD);
										// ネットのサービス契約ステータスを取得
										if (SVC_CD_NET.equals(svc_cd)) 
										{
											oyaStat = getEKK0241B002List.getString(EKK0241B002CBSMsg1List.SVC_KEI_STAT);
											break;
										}
									}
								}
								
							}
							// 親契約のネットのステータスが「照査済」以上
							// （「照査済」、「締結済」、「サービス提供中」、「休止・中断中」、「停止中」）
							// である場合、ルータオプションも照査する
							if(	JKKSvcConst.SVC_KEI_STAT_020.equals(oyaStat) 
									|| JKKSvcConst.SVC_KEI_STAT_030.equals(oyaStat)
									|| JKKSvcConst.SVC_KEI_STAT_100.equals(oyaStat)
									|| JKKSvcConst.SVC_KEI_STAT_210.equals(oyaStat)
									|| JKKSvcConst.SVC_KEI_STAT_220.equals(oyaStat))
							{
								
								for (int a = 0; a < workEKK2811A010Array.size(); a++)
								{
									CAANMsg[] wkTemplates = getWorkData(EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST,(Map) workEKK2811A010Array.get(a));
									for (int j = 0; null != wkTemplates && j < wkTemplates.length; j++)
									{
										// 機器オプションサービスコードを取得
										CAANMsg childTemplate = wkTemplates[j];
										String kkop_svc_cd = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_CD);
										String kkop_svc_kei_stat = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT);
										String idoDiv_rt_op = (String)childTemplate.getString(EKK2811A010CBSMsg1List.IDO_DIV);
										
										// セットの多機能ルータのルータ機能を照査する(ルータ機能が受付済の場合のみ)
										if ("G01".equals(kkop_svc_cd) && JKKSvcConst.SVC_KEI_STAT_010.equals(kkop_svc_kei_stat))
										{
											// 多機能ルータの機器提供オプション.ルータ機能を照査する
											ArrayList wkMapArray = new ArrayList();
											HashMap<String, Object> rsltShosaMap = new HashMap();
											List<CAANMsg> eKK2811C030CaanMsgList = shosaOkMapper.editInMsgEKK2811C030(param,childTemplate,idoDiv_rt_op);
											HashMap<String, Object> inMsgEKK2811C030Map = editInMsgCmn(param, eKK2811C030CaanMsgList.get(0));
											wkMapArray.add(inMsgEKK2811C030Map);
											rsltShosaMap.put(MAP_KEY_EKK2811C030, wkMapArray);
											// 機器オプションサービス契約照査
											wkErrorList = runShosa(handle, param, rsltShosaMap, MAP_KEY_EKK2811C030);
											errorList.addAll(wkErrorList);
										}
									}
								}
							}
						}
						// 20160803 ANK-2722-00-00_電話番号追加時の多機能OPステータス遷移条件の見直し ADD END
						
					}
// ▽▽▽ ANK-3412-00-00 ADD START
					// ▽▽▽ ANK-3412-00-00 ADD START
					// ルータ機器自動交換ＣＣを呼び出し交換が必要か返却するが必要かＣＣを呼び出す。
					HashMap<String, Object> rtKikiChgCkParam = execRtKikiAutoExchangeCC(handle, param, svc_kei_no, idoDiv, pcrsCd, rtMskmCd);
							
					if ("1".equals(rtKikiChgCkParam.get("kiki_chg_um")))
					{
						// 機器交換判定にて多機能ルータが交換と判定された場合に、変更手続きを開始する。
						if ("C024".equals(rtKikiChgCkParam.get("kaishu_kktk_svc_cd_router")))
						{
							String fatRtKKtkSvcKei = (String) rtKikiChgCkParam.get("kaishu_kktk_svc_kei_no_router");
							
							// 一意照会を実施する
							List<CAANMsg> eKK0341A010CaanMsgList = shokaiMapper.editInMsgEKK0341A010(param, fatRtKKtkSvcKei);
							HashMap<String, Object> inMsgEKK0341A010Map = editInMsgCmn(param, eKK0341A010CaanMsgList.get(0));
							Map<?, ?> rsltEKK0341A010 = scCall.run(inMsgEKK0341A010Map, handle);
							CAANMsg[] outMsgEKK0341A010List = getWorkData(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST, rsltEKK0341A010);
							
							CAANMsg outMsgEKK0341A010 = outMsgEKK0341A010List[0];
							
							// EKK0341C530_機器提供サービス契約機器変更手続開始を実行する
							ArrayList wkMapArray = new ArrayList();
							HashMap<String, Object> rsltShosaMap = new HashMap();
							
							// 申込明細は、サービスと同じものを代入
							String mskmDtlNo = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO);
							
							List<CAANMsg> inMsgEKK0341C530List = shosaOkMapper.editInMsgEKK0341C530(param, outMsgEKK0341A010List[0], mskmDtlNo, idoDiv);
							HashMap<String, Object> inMsgEKK0341C530Map = editInMsgCmn(param, inMsgEKK0341C530List.get(0));
							
							wkMapArray.add(inMsgEKK0341C530Map);
							rsltShosaMap.put(MAP_KEY_EKK0341C530, wkMapArray);
							errorList.addAll(wkErrorList);
							
							// 機器提供サービス契約機器変更手続開始
							wkErrorList = runShosa(handle, param, rsltShosaMap, MAP_KEY_EKK0341C530);
							errorList.addAll(wkErrorList);
							
							// 今利用している多機能ルータを返品機器に登録
							HashMap<String, String> hash = new HashMap<String, String>();
							hash.put(eqKaienTgSvcKeiNo, fatRtKKtkSvcKei);
							hempin_kktk_svc_kei_no_lst.add(hash);
							
							String kktkSvcKeiNo = (String)outMsgEKK0341A010.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);
							// EKK0341B008_機器提供サービス契約一覧照会を実行する
							List<CAANMsg> inMsgEKK0341B008List = shokaiMapper.editInMsgEKK0341B008(param, kktkSvcKeiNo);
							HashMap<String, Object> inMsgEKK0341B008Map = editInMsgCmn(param, inMsgEKK0341B008List.get(0));
							Map<?, ?> rsltEKK0341B008 = scCall.run(inMsgEKK0341B008Map, handle);
							CAANMsg[] outMsgEKK0341B008List = getWorkData(EKK0341B008CBSMsg.EKK0341B008CBSMSG1LIST, rsltEKK0341B008);
							
							// EKK0341B008は世代登録年月日の降順でソートして取得しているため、1レコード目が最新のレコードとなる
							CAANMsg caanMsgEKK0341B008 = outMsgEKK0341B008List[0];
							
							// 世代登録年月日を取得する
							String addGeneDtm = (String) caanMsgEKK0341B008.getString("gene_add_dtm");
							
							// EKK0341A010_機器提供サービス契約一意照会を実行する
							List<CAANMsg> inMsgEKK0341A010_01List = shokaiMapper.editInMsgEKK0341A010_01(param, kktkSvcKeiNo, addGeneDtm);
							HashMap<String, Object> inMsgEKK0341A010_01Map = editInMsgCmn(param, inMsgEKK0341A010_01List.get(0));
							Map<?, ?> rsltEKK0341A010_01 = scCall.run(inMsgEKK0341A010_01Map, handle);
							CAANMsg[] outMsgEKK0341A010_01List = getWorkData(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST, rsltEKK0341A010_01);
							CAANMsg caanMsgEKK0341A010_01 = outMsgEKK0341A010_01List[0];
							
							// 交換する多機能ルータは後続の物流にて配送処理を行う。
							// ★★★★★ 以下は、キー情報
							// 配送機器　機器提供サービス契約番号
							svkeiData.put("haiso_kktk_svc_kei_no", (String)caanMsgEKK0341A010_01.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
							// 配送機器　世代登録年月日
							svkeiData.put("haiso_gene_add_dtm", (String)caanMsgEKK0341A010_01.getString(EKK0341A010CBSMsg1List.GENE_ADD_DTM));
							// 配送機器　宅内機器型式コード
							svkeiData.put("taknkiki_model_cd", "R0");
							// ★★★★★ 設定終了
							
// ▽▽▽ OM-2019-0000362 ADD START
							// 住所取得の為、回線利用場所情報の取得
							List<CAANMsg> inMsgEKK0251A010_01List = shokaiMapper.editInMsgEKK0251A010(param, 0, svckaisenUcwkNo);
							HashMap<String, Object> inMsgEKK0251A010Map = editInMsgCmn(param, inMsgEKK0251A010_01List.get(0));
							Map<?, ?> rsltEKK0251A010 = scCall.run(inMsgEKK0251A010Map, handle);
							CAANMsg[] outMsgEKK0251A010List = getWorkData(EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST, rsltEKK0251A010);
// △△△ OM-2019-0000362 ADD END
							
							// EKK0341C231_機器提供サービス契約情報変更（契約変更中）を実行し、機器引当指定倉庫コードに"000001"を設定する
							wkMapArray = new ArrayList();
// ▽▽▽ OM-2019-0000362 Modify START
//							List<CAANMsg> inMsgEKK0341C231List = shosaOkMapper.editInMsgEKK0341C231(param, outMsgEKK0341A010_01List[0]);
							List<CAANMsg> inMsgEKK0341C231List = shosaOkMapper.editInMsgEKK0341C231(param, outMsgEKK0341A010_01List[0], workECK0011A010[0], outMsgEKK0251A010List[0]);
// △△△ OM-2019-0000362 Modify END
							HashMap<String, Object> inMsgEKK0341C231Map = editInMsgCmn(param, inMsgEKK0341C231List.get(0));
							wkMapArray.add(inMsgEKK0341C231Map);
							rsltShosaMap.put(MAP_KEY_EKK0341C231, wkMapArray);
							errorList.addAll(wkErrorList);
							
							// 機器提供サービス契約情報変更（契約変更中）
							wkErrorList = runShosa(handle, param, rsltShosaMap, MAP_KEY_EKK0341C231);
							errorList.addAll(wkErrorList);
							
						}
					}
// ▲▲▲ ANK-3412-00-00 ADD END
					// IT2-2014-0000003 2014-01-06 ADD_START
					// 返品処理に必要なため、旧機器の機器提供サービス契約番号、同一回線のサービス契約番号を引継ぎ
					svkeiData.put(JKKSvkeiShosaConstCC.HEMPIN_KKTK_SVC_KEI_NO_LST, hempin_kktk_svc_kei_no_lst);
					svkeiData.put(JKKSvkeiShosaConstCC.EQ_KAISEN_TG_SVC_KEI_NO, eqKaienTgSvcKeiNo);
					// IT2-2014-0000003 2014-01-06 ADD_END
				}
				
				// ANK-4315-00-00 ADD START
				// HGW交換不可フラグ
				String hgwKknFfg = "";
				// 親機種別コード
				String oyaKikiSbtCd = "";
				// 業務パラメータよりHGW交換不可フラグを取得
				String kkHgwKokanFfg = "";
				
				// サービス契約一意照会
//				/**************************************************************************************/
//				/** 情報取得                                                                         **/
//				/**************************************************************************************/
//				String svcCd      = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_CD);		// サービスコード
//				String prcGrpCd   = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);	// 料金グループコード
//				String sysid     = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SYSID);			// SYSID
//				
//				String prcGrpCd = getRsltMsgListValue(outMapEKK0081A010, EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, EKK0081A010CBSMsg1List.PRC_GRP_CD);
//				ローゼット工事スキップ対象の場合、
//				機器提供サービス契約の送付先住所を利用場所住所で更新するための利用場所住所情報を取得する。
//				サービス契約回線内訳一覧照会（サービス契約番号）サービスIF呼出処理を実施
//				サービス契約回線内訳番号一意照会
				List<CAANMsg> eKK0251B001CaanMsgList = shokaiMapper.editInMsgEKK0251B001(param, i, svc_kei_no);
				HashMap<String, Object> inMsgEKK0251B001Map = editInMsgCmn(param, eKK0251B001CaanMsgList.get(0));
				Map<?, ?> rsltEKK0251B001 = scCall.run(inMsgEKK0251B001Map, handle);
				shokaiMapper.checkResult(param, rsltEKK0251B001);
				CAANMsg[] outMsgEKK0251B001List = getWorkData(EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST, rsltEKK0251B001);
				String svckaisenUcwkNo_EKK0251B001 = "";
				// 取得できる場合
				if (outMsgEKK0251B001List != null && !"".equals(outMsgEKK0251B001List) && outMsgEKK0251B001List.length > 0 )
				{
					if(outMsgEKK0251B001List != null && outMsgEKK0251B001List.length > 0)
					{
						svckaisenUcwkNo_EKK0251B001 = outMsgEKK0251B001List[0].getString(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
					}
				}
				
				List<CAANMsg> inMsgEKK0251A010_01List = shokaiMapper.editInMsgEKK0251A010(param, 0, svckaisenUcwkNo_EKK0251B001);
				HashMap<String, Object> inMsgEKK0251A010Map = editInMsgCmn(param, inMsgEKK0251A010_01List.get(0));
				Map<?, ?> rsltEKK0251A010 = scCall.run(inMsgEKK0251A010Map, handle);
				CAANMsg[] outMsgEKK0251A010List = getWorkData(EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST, rsltEKK0251A010);

				
				if(outMsgEKK0251A010List != null && outMsgEKK0251A010List.length > 0)
				{
					hgwKknFfg = outMsgEKK0251A010List[0].getString(EKK0251A010CBSMsg1List.HGW_KKN_FFG);
				}
				
				// ローゼット化設置済案件チェック結果
				Map chkResultMap = null;
				// 申込収容位置空き情報一意照会
				CAANMsg[] eku0281a010MsgList = null;
				
				// 申込収容位置空き情報一意照会の取得
				Object[][] eku0281a010In =
				{
					{EKU0281A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0281A010}
					// 機能コード
					, {EKU0281A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2}
					// ＫＥＹ＿サービス契約回線内訳番号
					, {EKU0281A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svckaisenUcwkNo_EKK0251B001}
				};
				// サービスIF実行
				eku0281a010MsgList = callSC(handle, scCall, param, JKKSvkeiShosaConstCC.TRGT_DATA, eku0281a010In)
						.getCAANMsgList(EKU0281A010CBSMsg.EKU0281A010CBSMSG1LIST);
				
				// データが存在する場合
				if(eku0281a010MsgList != null && eku0281a010MsgList.length > 0)
				{
					oyaKikiSbtCd = JKKStringUtil.nullToBlank(eku0281a010MsgList[0].getString(EKU0281A010CBSMsg1List.OYA_KIKI_SBT_CD));
				}

				// 実施可能リストに存在する料金グループコードの場合だけチェックCCを実行	
				// 対象料金グループコード：02（ネットホーム）、03（ネットメゾン）、04（ネットマンション）、10（光電話）
				if((Arrays.asList(RZKZMCC_ACT_PSB_LIST).contains(prcGrpCd)))
				{
					// ANK-4038-06-00 MOD END
					// 「ローゼット化設置済案件チェック共通部品」を呼び出し、返却された工事スキップ可否を返却する。
					JKKRzkzmAnkenChkCC rzkzmAnkenChkCC = new JKKRzkzmAnkenChkCC();
					HashMap<String, Object> rzkzmAnkenChkMap = new HashMap<String, Object>();
					//サービス契約番号を設定する。
					rzkzmAnkenChkMap.put("svc_kei_no", svc_kei_no);
					//サービス契約回線内訳番号を設定する。
					rzkzmAnkenChkMap.put("svc_kei_kaisen_ucwk_no", svckaisenUcwkNo_EKK0251B001);
					//共通部品の入力パラメータの「異動区分」は[サービス追加]を設定する。
					rzkzmAnkenChkMap.put("ido_div", JKKStrConst.CD00576_00002);
					param.setData("rzkzm_anken_check_map", rzkzmAnkenChkMap);
					rzkzmAnkenChkCC.jdgeRzkzmAnken(handle, param, "rzkzm_anken_check_map");
				
					//ローゼット化設置済案件チェック結果を取得する
					chkResultMap = (Map) param.getData("rzkzm_anken_check_map");
					rozzetflg = (String) chkResultMap.get("chk_result");

				}
				
				HashMap<String, Object> eck0011a010CBSMSG1 = null;

				CAANMsg[] rsltMsgECK0011A010List = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0011A010);

				if (rsltMsgECK0011A010List != null && rsltMsgECK0011A010List.length != 0)
				{
					eck0011a010CBSMSG1 = rsltMsgECK0011A010List[0].getMsgData();
					scmTypeCd = JKKStringUtil.nullToBlank((String)eck0011a010CBSMSG1.get(ECK0011A010CBSMsg1List.SCM_TYPE_CD));
				}
				
				// 業務パラメータ管理一意照会を実行する(HGW交換不可フラグ)
				HashMap<String, Object> wkVonuDuMmyMap = new HashMap<String, Object>();
				ArrayList<HashMap<String, Object>> wkMapArray1 = new ArrayList<HashMap<String,Object>>();
				List<CAANMsg> xList = this.shokaiMapper.editInMsgEZM0321A010(param, WORK_PARAM_ID_KK_HGW_KOKAN_FFG);
				wkMapArray1.add(editInMsgCmn(param, xList.get(0)));
				wkVonuDuMmyMap.put(MAP_KEY_EZM0321A010, wkMapArray1);
				wkVonuDuMmyMap = runShokai(param, handle, wkVonuDuMmyMap, new String[]{MAP_KEY_EZM0321A010});
				CAANMsg[] workEZM0321A010 = getWorkParentData(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, wkVonuDuMmyMap, MAP_KEY_EZM0321A010);
				
				if (workEZM0321A010 != null && workEZM0321A010.length > 0)
				{
					CAANMsg rsltMsgEZM0321A010 = workEZM0321A010[0];
					kkHgwKokanFfg = rsltMsgEZM0321A010.getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
				}
				
				//対象のサービス契約回線内訳の親機OLTが[10ギガ]の場合。(申込収容位置空き情報.親機種別コードが"04"(10G-EPON)。)
				// お客様の「スキームタイプコード」が"A"(Wi-Fiスキーム)ではない。
				// 対象のサービス契約回線内訳がHGW交換不可でない。(サービス契約回線内訳.HGW交換不可フラグが"1"ではない。)
				// システム全体でHGW交換不可でない。(業務パラメータID："KK_HGW_KOKAN_FFG"(HGW交換不可フラグ)が"1"ではない。)
				if ("04".equals(oyaKikiSbtCd) && !"A".equals(scmTypeCd) && !"1".equals(hgwKknFfg) && !"1".equals(kkHgwKokanFfg))
				{
					boolean bolTakinoRt = false;
					ArrayList<HashMap<String, Object>> kikiKokanHaisoTgInfoList = new ArrayList<HashMap<String, Object>>();
					
					// 機器提供サービス契約一覧照会
					List<CAANMsg> wkMapArrayEKK0341B022 = shokaiMapper.editInMsgEKK0341B022(param, svc_kei_no);
					HashMap<String, Object> inMsgEKK0341B022Map = editInMsgCmn(param, wkMapArrayEKK0341B022.get(0));
					Map<?, ?> rsltEKK0341B022 = scCall.run(inMsgEKK0341B022Map, handle);
					CAANMsg[] outMsgEKK0341B022List = getWorkData(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST, rsltEKK0341B022);
					
					if (outMsgEKK0341B022List != null) 
					{
// ▽▽▽ IT1-2023-0000066 ADD START
// ANK-4315-00-00 ADD
						// 有効なステータス（締結済以上、解約未満）
						List<String> stateList = Arrays.asList(new String[]{"030", "100", "210", "220"});
						
						for (CAANMsg b022msg : outMsgEKK0341B022List)
						{
							// 有効なONUが存在している場合
							if(KKTK_SVC_C012.equals(b022msg.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD)) &&
								stateList.contains(b022msg.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_STAT)))
							{
// ▲▲▲ IT1-2023-0000066 ADD END
								for (int j = 0; j < outMsgEKK0341B022List.length; j++)
								{
									CAANMsg childTemplate = outMsgEKK0341B022List[j];
									String kktkSvcKeiStat = childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_STAT);
									String kktkSvcKeiNo = childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);
									//多機能ルータを追加している場合。
									if(KKTK_SVC_C024.equals(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD))
										&& 	(mskmshoDtlNo != null && mskmshoDtlNo.equals(childTemplate.getString(EKK0341B022CBSMsg1List.MSKM_DTL_NO))))
									{
										if ((kktkSvcKeiStat != null && !"".equals(kktkSvcKeiStat))
												&& !"910".equals(kktkSvcKeiStat) && !"920".equals(kktkSvcKeiStat) ) 
										{
											if((svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_HTEL)) 
											{
												// 配送情報
												HashMap<String, Object> haisoInfo = new HashMap<String, Object>();
												haisoInfo.put(KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
												kikiKokanHaisoTgInfoList.add(haisoInfo);
												bolTakinoRt = true;
											}
										}
									}
								}
// ▽▽▽ IT1-2023-0000066 ADD START
						
							}
						}
// ▲▲▲ IT1-2023-0000066 ADD END
					}
					
					// 多機能ルータが追加された場合
					if (bolTakinoRt == true)
					{
						// 返品取消処理を実施
						ArrayList<HashMap<String, Object>> haisoInfoList = new ArrayList<HashMap<String, Object>>();
						
						ArrayList<HashMap<String, Object>> hempinInfoList = new ArrayList<HashMap<String, Object>>();
	
						// ■物流制御処理を実施（ONUは交換し、ローゼット化の場合多機能ルータを直送する。）
						JKKButuryuCtrlCC buturyuCtrlCc = new JKKButuryuCtrlCC();
						
						//ANK-4677-00-00 ADD Start
						//照査OK押下時のオペレーションクラス（KKSV0118OPOperation）からの呼び出しの場合は、
						//ONU交換送付先を、送付先住所に設定できるように処理を分ける
						if ("KKSV0118OP".equals(param.getOperationID())) {
							
							//ONUの送付先を書き換えるバージョンを呼び出す
							buturyuCtrlCc.onuKokankikiKokanUseSofuSakiJdgTran(param
									, handle
									, idoDiv
									, JKKSvkeiShosaConstCC.TRGT_DATA
									, null
									,  mskmshoDtlNo
									, svc_kei_no
									, haisoInfoList
									, hempinInfoList
									, JKKStrConst.HMPIN_KBN_KSHHEN
									, kikiKokanHaisoTgInfoList
									, svckaisenUcwkNo_EKK0251B001
									, rozzetflg);
							
						} else {
						//ANK-4677-00-00 ADD End
						
							buturyuCtrlCc.onuKokankikiKokanJdgTran(param
																	, handle
																	, idoDiv
																	, JKKSvkeiShosaConstCC.TRGT_DATA
																	, null
																	,  mskmshoDtlNo
																	, svc_kei_no
																	, haisoInfoList
																	, hempinInfoList
																	, JKKStrConst.HMPIN_KBN_KSHHEN
																	, kikiKokanHaisoTgInfoList
																	, svckaisenUcwkNo_EKK0251B001
																	, rozzetflg);
						//ANK-4677-00-00 ADD Start
						}
						//ANK-4677-00-00 ADD End
						
						//ONU交換工事発生
						onuKokankojiflg = true;
					}
				}
				// ANK-4315-00-00 ADD END
			}
			
			// IT2-2012-0001685 2012-11-20 ADD_START
			/**************************************************************************************/
			/** 請求オプション照査処理                                                           **/
			/**************************************************************************************/
			wkErrorList = runShosaSeikyuOp(handle, param, i, rsltShokai, svcSbtCd, canCncSvcKei, idoDiv);
			errorList.addAll(wkErrorList);
			// IT2-2012-0001685 2012-11-20 ADD_END

			/**************************************************************************************/
			/** モバイルサービスの処理                                                           **/
			/**************************************************************************************/
			// ANK-0342-00-00 2012/07/24 start
			if(SVC_SBT_CD_MOBA == svcSbtCd)
			{
				HashMap<String, Object> rsltMap = new HashMap();
				ArrayList<HashMap> wkMapArray = new ArrayList();
				HashMap<String, Object> rslt = null;
				// UQ-WiMAXで、機器を持ち込みの場合は、宅内Sに連携する
				// 機器提供サービス契約を参照
				ArrayList<HashMap> workEKK0341B022Array = null;	// サービス対象機器提供サービス契約一覧照会
				workEKK0341B022Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0341B022);
				if (workEKK0341B022Array != null) 
				{
					for (int k = 0; k < workEKK0341B022Array.size(); k++)
					{
						CAANMsg[] wkTenplates = getWorkData(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST, (Map)workEKK0341B022Array.get(k));
						for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
						{
							CAANMsg childTemplate = wkTenplates[j];
							String taknkikiSbtCd   = childTemplate.getString(EKK0341B022CBSMsg1List.TAKNKIKI_SBT_CD);
							String kktkSbtCd       = childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SBT_CD);
							String kikiSeizoNo     = childTemplate.getString(EKK0341B022CBSMsg1List.KIKI_SEIZO_NO);
							String taknkikiModelCd = childTemplate.getString(EKK0341B022CBSMsg1List.TAKNKIKI_MODEL_CD);

							// 宅内機器製造番号が空白の場合は次へ
							if (JKKCommonUtil.isNull(taknkikiModelCd))
							{
								continue;
							}

							// 宅内機器型式一意照会
							ArrayList<HashMap> eZM0411AMapArray = new ArrayList();
							List<CAANMsg> eZM0411ACaanMsgList = shokaiMapper.editInMsgEZM0411A010(param, taknkikiModelCd);
							eZM0411AMapArray.add(editInMsgCmn(param, eZM0411ACaanMsgList.get(0)));
							wkRsltShokaiMap.put(MAP_KEY_EZM0411A010, eZM0411AMapArray);
							wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EZM0411A010});
							rsltShokai.putAll(wkRsltShokai);

							ArrayList workEZM0411A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EZM0411A010);

							wkMapArray = new ArrayList();
							String seizoNoUm = "";
							if (workEZM0411A010Array != null) 
							{
								CAANMsg[] eZM0411ATenplates = getWorkData(EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST, (Map)workEZM0411A010Array.get(0));
								if (eZM0411ATenplates != null)
								{
									CAANMsg eZM0411ATemplate = eZM0411ATenplates[0];
									
									seizoNoUm = eZM0411ATemplate.getString(EZM0411A010CBSMsg1List.SEIZO_NO_UM);
								}
							}

							// 製造番号有無が空白、または、製造番号有無が「0：無」の場合は処理終了
							if (JKKCommonUtil.isNull(seizoNoUm) || JKKSvcConst.UM_NASI.equals(seizoNoUm))
							{
								continue;
							}

							if(
									TAKNKIKI_SBT_J0.equals(taknkikiSbtCd)
									&& KIKI_TK_SBT_03.equals(kktkSbtCd)
									&& kikiSeizoNo != null
									&& !"".equals(kikiSeizoNo)
							)
							{
								// 宅内機器一意照会（４） を実行し 宅内機器基本Ｔ更新日付を取得する
								String kihontUpdDttm = getKihontUpdDttm(handle, param, taknkikiModelCd, kikiSeizoNo); // 2012-11-14 IT1-2012-0001677 EDIT_PARAM
								if(kihontUpdDttm == null) continue;
								// 機器場所番号SIFの準備
								wkCaanMsgList = shosaOkMapper.editInMsgEKKA0020004(param, childTemplate, place_no, kihontUpdDttm);
								rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
								wkMapArray.add(rslt);
							}
						}
					}
				}
				rsltMap.put(MAP_KEY_EKKA0020004, wkMapArray);

				// 機器場所番号変更
				wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKKA0020004);
				errorList.addAll(wkErrorList);

			}
			// ANK-0342-00-00 2012/07/24 end

			// 20130215 IT2-2013-0000177 DEL START
			// 20120406 住所変更対応 START
//			if (!IDO_DIV_AD_CHG_ADD.equals(idoDiv))
//			{
				// 住所変更・登録以外の場合
				// 20120406 住所変更対応 END
				// 20130215 IT2-2013-0000177 DEL END

// ANK-4038-00-00 ADD START
			CAANMsg[] workEKK0251A010 = null;
			if (
					prcGrpCd.equals(PRC_GRP_CD_HOME)
					|| prcGrpCd.equals(PRC_GRP_CD_MEZON)
					|| prcGrpCd.equals(PRC_GRP_CD_MANS)
					|| prcGrpCd.equals(PRC_GRP_CD_HTEL)
					|| prcGrpCd.equals(PRC_GRP_CD_TV_KCAT)
					|| prcGrpCd.equals(PRC_GRP_CD_TV_KCN)
					|| prcGrpCd.equals(PRC_GRP_CD_TV_SSS)
			)
			{
				if (!IDO_DIV_AD_CHG_ADD.equals(idoDiv))
				{
					// 法人サービス契約引継ぎ種別コード
					String hojinsvkei_hktgi_sbc_cd = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.HOJINSVKEI_HKTGI_SBT_CD);
	
					// 「法人サービス契約引継ぎ種別コード 01:HT→IO」以外の場合のみ、工事ＣＣを実行する
					if (! HSVC_KEI_HKTG_SBT_CD_01.equals(hojinsvkei_hktgi_sbc_cd))
					{
						// 設備流用有無
						String equipRyuyoUm_rozett =(String)svkeiData.get(JKKKojiAnkenConstCC.EQUIP_RYUYO_UM);
						// ANK-4468-11-00 MOD START
						//if(JKKKojiAnkenConstCC.EQUIP_RYUYO_UMU_ARI.equals(equipRyuyoUm_rozett))
						if((Arrays.asList(JKKKojiAnkenConstCC.EQUIP_RYUYO_UMU_ARI_LIST)).contains(equipRyuyoUm_rozett))
						// ANK-4468-11-00 MOD END
						{
							CAANMsg[] workEKU0081B010_1 = null;
							// 流用元案件番号のサービス契約回線内訳番号を取得する。
							// EKU0081B010 サービス契約_工事案件一覧照会（流用元案件番号を設定）を実行する
							List<CAANMsg> inMsgEKU0081B010List_1 = shosaOkMapper.editInMsgEKU0081B010(param, i);
							HashMap<String, Object> inMsgEKU0081B010Map_1 = editInMsgCmn(param, inMsgEKU0081B010List_1.get(0));
							// SSIFの実行
							Map<?, ?> rsltEKU0081B010_1 = scCall.run(inMsgEKU0081B010Map_1, handle);
							shosaOkMapper.editResultRPEKU0081B010(rsltEKU0081B010_1, param, i);
							shosaOkMapper.errChk(rsltEKU0081B010_1);
							workEKU0081B010_1 = getWorkData(EKU0081B010CBSMsg.EKU0081B010CBSMSG1LIST, rsltEKU0081B010_1);
							
							String svcKeiKaisenUcwkNo = "";
							if(workEKU0081B010_1 != null && workEKU0081B010_1.length > 0)
							{
									CAANMsg childTemplate = workEKU0081B010_1[0];
									svcKeiKaisenUcwkNo = (String)childTemplate.getString(EKU0081B010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
							}
							
							// EKK0251A010 サービス契約回線内訳一意照会(流用元)を実行する
							List<CAANMsg> inMsgEKK0251A010List = shosaOkMapper.editInMsgEKK0251A010(param, svcKeiKaisenUcwkNo);
							HashMap<String, Object> inMsgEKK0251A010Map = editInMsgCmn(param, inMsgEKK0251A010List.get(0));
							// SSIFの実行
							Map<?, ?> rsltEKK0251A010 = scCall.run(inMsgEKK0251A010Map, handle);
							shosaOkMapper.errChk(rsltEKK0251A010);
							workEKK0251A010 = getWorkData(EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST, rsltEKK0251A010);
						}
					}
				}
			}
// ANK-4038-00-00 ADD END
			
				// 場所番号更新
				wkErrorList = new ArrayList();
				// ANK-4038-00-00 MOD START
				// wkMap = editUpdPlaceNo(param, i, svcSbtCd, rsltShokai);
				wkMap = editUpdPlaceNo(param, i, svcSbtCd, rsltShokai, workEKK0251A010);
				// ANK-4038-00-00 MOD END
				
				wkErrorList = runUpdPlaceNo(handle, param, wkMap);
				
				errorList.addAll(wkErrorList);
//			}

			// 20140731 ANK-1918-00-00 工事案件CC呼出前に移動 ADD START
			// 20150720 OM-2015-0001291 スマートバリュー異動通知の実行判定は個別に行うよう修正 DEL START
//			boolean smtVlTchiFlg = false;
			// 20150720 OM-2015-0001291 スマートバリュー異動通知の実行判定は個別に行うよう修正 DEL END
				
			if (!IDO_DIV_AD_CHG_ADD.equals(idoDiv))
			{	// 住所変更・登録以外の場合
				// サービス種別コードがネットまたは、電話の照査の場合
				if (svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_HTEL)
				{
					// 20150720 OM-2015-0001291 スマートバリュー異動通知の実行判定は個別に行うよう修正 MOD START
//					// スマートバリュー紐付け登録 登録を行う場合は異動通知を行う
//					smtVlTchiFlg = instSmtVlTaisho(handle, param, rsltShokai, wkMap, errorList, i);
					instSmtVlTaisho(handle, param, rsltShokai, wkMap, errorList, i);
					// 20150720 OM-2015-0001291 スマートバリュー異動通知の実行判定は個別に行うよう修正 MOD END
				}
			}
			// 20140731 ANK-1918-00-00 工事案件CC呼出前に移動 ADD END
			//---------v31.00.00 ANK-3136-00-00_ADD START---------//
			boolean istekkyoKaiyaku = false;
			CAANMsg[] workEKU0081B010 = null;
			// 流用元案件番号
			String ryuyoMtAkNo = (String)svkeiData.get(JKKKojiAnkenConstCC.RYUYO_MOTO_KJAK_NO);
			// 設備流用有無を取得する
			String equipRyuyoUm =(String)svkeiData.get(JKKKojiAnkenConstCC.EQUIP_RYUYO_UM);
			// 希望年月日
			String ryuyoKiboYmd = (String)svkeiData.get(JKKKojiAnkenConstCC.SBRY_KJ_FIN_KIBOYMD);
			//---------v31.00.00 ANK-3136-00-00_ADD END-----------//
			// IT2-2018-0000064 ADD START
			String vonuRyuyoUm = null;
			// IT2-2018-0000064 ADD END
			// ANK-4577-00-00 ADD START
			String nrkemtRozettCd = "";
			// ANK-4577-00-00 ADD END
			/**************************************************************************************/
			/** 工事案件受付                                                                     **/
			/**************************************************************************************/
			// マンションタイプかつ、光配線の場合
			if (
					prcGrpCd.equals(PRC_GRP_CD_HOME)
					|| prcGrpCd.equals(PRC_GRP_CD_MEZON)
					|| prcGrpCd.equals(PRC_GRP_CD_MANS)
					|| prcGrpCd.equals(PRC_GRP_CD_HTEL)
					|| prcGrpCd.equals(PRC_GRP_CD_TV_KCAT)
					|| prcGrpCd.equals(PRC_GRP_CD_TV_KCN)
					|| prcGrpCd.equals(PRC_GRP_CD_TV_SSS)
			)
			{
			
				if (!IDO_DIV_AD_CHG_ADD.equals(idoDiv))
				{
					// 住所変更・登録以外の場合

					// 法人サービス契約引継ぎ種別コード
					String hojinsvkei_hktgi_sbc_cd = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.HOJINSVKEI_HKTGI_SBT_CD);

					// 「法人サービス契約引継ぎ種別コード 01:HT→IO」以外の場合のみ、工事ＣＣを実行する
					if (! HSVC_KEI_HKTG_SBT_CD_01.equals(hojinsvkei_hktgi_sbc_cd))
					{
						// 工事案件CC
						JKKKojiAnkenCC kojiCC = new JKKKojiAnkenCC();

						//↓↓↓2012-09-24追加　JKKSvkeiShosaBaseCC 対応↓↓↓
						workECK0011A010 = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0011A010);
						//↑↑↑2012-09-24追加　JKKSvkeiShosaBaseCC 対応↑↑↑
						CAANMsg[] workEKK0021A010 = getWorkParentData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0021A010);
						CAANMsg[] workEKK0321B002 = getWorkParentData(EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0321B002);
						
                        // ANK-4427-00-00 ADD START
						//eo光type N(料金コース.NTT卸区分が設定あり)であるかどうかを判定する
						boolean typeNFlg = false;
						typeNFlg = JKKBpCommon.isTypeNHantei( param, handle,prcGrpCd, pcrsCd);
                        // ANK-4427-00-00 ADD END
						
						// 2012-11-03 IT1-2012-0001749 EDIT_START
						try
						{
							// ANK-1386-00-00 工事費算出のために工事案件スキーマへの異動区分更新 MOD START
							// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/02 START
							// タブレット、クレードルの工事会社配送設定処理は工事案件CCで行う
//							shosaOkMapper.editMapKojiAnken(param, i, workEKK0021A010[0], workECK0011A010[0], workEKK0321B002[0], idoDiv);
							// タブレット配送区分
							String tabletHaisoKbn = "";
                           // ANK-4427-00-00 MOD START
                           //eo光type Nの場合はオプテージで工事を行わない
							//if (SVC_SBT_CD_HNET == svcSbtCd && isKojiHassei(handle, param, i, workEKK0081A010[0]))
							if (SVC_SBT_CD_HNET == svcSbtCd && isKojiHassei(handle, param, i, workEKK0081A010[0]) && !typeNFlg)
                           // ANK-4427-00-00 MOD END
							{
								tabletHaisoKbn = JKKKojiAnkenConstCC.TABLET_HAISO_KBN_CREATE_KJ_HAISO;
							}
							
							//---------v31.00.00 ANK-3136-00-00_ADD START---------//
							// 設備流用元接続機器種別
							// 工事案件CCに連携する情報を設定する
							HashMap<String, Object> kojiAnkenInfoMap = new HashMap<String, Object>();
							String ryuyoMtSetsuzokuKikiSbt = null;
							// IT2-2018-0000064 DEL START
//							String vonuRyuyoUm = null;
							// IT2-2018-0000064 DEL END
							// ANK-4468-11-00 MOD START
							//if(JKKKojiAnkenConstCC.EQUIP_RYUYO_UMU_ARI.equals(equipRyuyoUm))
							if((Arrays.asList(JKKKojiAnkenConstCC.EQUIP_RYUYO_UMU_ARI_LIST)).contains(equipRyuyoUm))
							// ANK-4468-11-00 MOD END
							{
								// 流用元案件番号の建屋判定、流用元接続機器種別の判定
								// EKU0081B010 サービス契約_工事案件一覧照会（流用元案件番号を設定）を実行する
								List<CAANMsg> inMsgEKU0081B010List = shosaOkMapper.editInMsgEKU0081B010(param, i);
								HashMap<String, Object> inMsgEKU0081B010Map = editInMsgCmn(param, inMsgEKU0081B010List.get(0));
								// SSIFの実行
								Map<?, ?> rsltEKU0081B010 = scCall.run(inMsgEKU0081B010Map, handle);
								shosaOkMapper.editResultRPEKU0081B010(rsltEKU0081B010, param, i);
								shosaOkMapper.errChk(rsltEKU0081B010);
								workEKU0081B010 = getWorkData(EKU0081B010CBSMsg.EKU0081B010CBSMSG1LIST, rsltEKU0081B010);
								
								// ANK-4577-00-00 ADD START
								// 乗換元サービス契約の取得
								ArrayList netList = (ArrayList)inMap.get("trgt_data_list");
								HashMap<String, Object> netMap = (HashMap)netList.get(0);
								String nrkemtSvkeiNo = (String)netMap.get("nrkemt_svkei_no");
								
								if(workEKK0251A010 != null && workEKK0251A010.length > 0)
								{
									//流用元のローゼット設置状態コードを取得する
									nrkemtRozettCd = workEKK0251A010[0].getString(EKK0251A010CBSMsg1List.ROZETT_STC_STAT_CD);
								}
								// ANK-4577-00-00 ADD END
								
								// 流用元接続機器種別判定
								// 対象のサービスコードがネット、電話の場合
								if(SVC_CD_NET.equals(svcCd) 
									|| SVC_CD_TEL.equals(svcCd))
								{
									ryuyoMtSetsuzokuKikiSbt = this.ryuyoMtSetsuzokuKikiSbtJudge(workEKU0081B010, handle, param, i);
									
									// IT1-2018-0000114 ADD START
									// 機器提供サービス契約の更新処理を行う。
									// ANK-4577-00-00 DEL START
//									// ANK-4468-11-00 ADD START
//									// 設備流用有無が2もしくは3の場合、更新処理を行わない
//									if (!("2".equals(equipRyuyoUm) || "3".equals(equipRyuyoUm))){
//									// ANK-4468-11-00 ADD END
									// ANK-4577-00-00 DEL END
										wkMap = updKktkSvcKei(workEKK0081A010
												, handle
												, param
												, i
												, inMap
												, rsltShokai
												// ANK-4577-00-00 MOD START
												//, svcSbtCd);
												, svcSbtCd
												, nrkemtSvkeiNo
												, equipRyuyoUm);
												// ANK-4577-00-00 MOD END
										// SIFの実行
										if (wkMap != null)
										{
											wkErrorList = runHaisojkCd(handle, param, wkMap);
										}
									// IT1-2018-0000114 ADD END
									// ANK-4457-00-00 DEL START
//									// ANK-4468-11-00 ADD START
//									}
//									// ANK-4468-11-00 ADD END
									// ANK-4457-00-00 DEL END
									
								}
								// V-ONU流用有無の設定判定	
								// 対象のサービスコードがテレビの場合
								else if(SVC_CD_TV.equals(svcCd))
								{
									vonuRyuyoUm = this.vonuRyuyoUmJudge(workEKU0081B010
																		, handle
																		, param
																		, pcrsCd
																		, pplanCd
																		, i);
									
									// IT1-2018-0000114 ADD START
									// V-ONU流用有無が"1"(有)の場合、機器提供サービス契約にV-ONUのダミー機器を設定する。
									// V-ONU流用有無が"0"(無)の場合、何もしない。
									if ("1".equals(vonuRyuyoUm))
									{
										// 機器提供サービス契約の更新処理を行う。
										wkMap = updKktkSvcKei(workEKK0081A010
												, handle
												, param
												, i
												, inMap
												, rsltShokai
												, svcSbtCd);
										// SIFの実行
										if (wkMap != null)
										{
											wkErrorList = runHaisojkCd(handle, param, wkMap);
										}
									}
									// IT1-2018-0000114 ADD START
								}
								
								// 撤去(解約)工事の自動登録
								// 設備流用する際に流用元が撤去(解約)がされていない場合、流用元を撤去（解約）することで、１つの設備で重複利用しないようにする。	
								if(workEKU0081B010 != null)
								{
									istekkyoKaiyaku  = this.tekkyoKaiyakuCk(workEKU0081B010, handle, param, i);
								}
							}
							// ANK-4315-00-00 ADD START
							// ONU交換工事が立ち上がらない場合は既存の処理
							if (onuKokankojiflg == false)
							{
							// ANK-4315-00-00 ADD END
								// 流用元接続機器種別を設定する
								kojiAnkenInfoMap.put(JKKKojiAnkenConstCC.RYUYO_MT_TEL_KEI_RYKK_CD, ryuyoMtSetsuzokuKikiSbt);
								// V-ONU流用有無を設定する
								kojiAnkenInfoMap.put(JKKKojiAnkenConstCC.VONU_RYUYO_UM, vonuRyuyoUm);
								ArrayList<HashMap<?, ?>> workEKK0251B003Array = (ArrayList<HashMap<?, ?>>)rsltShokai.get(MAP_KEY_EKK0251B003);
								CAANMsg[] wkTemEKK0251B003 = (null == workEKK0251B003Array ? null : getWorkData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, workEKK0251B003Array.get(0)));
								// 竣工予定年月日を設定する
								kojiAnkenInfoMap.put(JKKKojiAnkenConstCC.SHUNKO_RSV_YMD, wkTemEKK0251B003[0].getString(EKK0251B003CBSMsg1List.SHUNKO_RSV_YMD));
								//---------v31.00.00 ANK-3136-00-00_ADD END-----------//
								
								//---------v31.00.00 ANK-3136-00-00_DEL START---------//
								//shosaOkMapper.editMapKojiAnken(param, i, workEKK0021A010[0], workECK0011A010[0], workEKK0321B002[0], idoDiv, tabletHaisoKbn);
								//---------v31.00.00 ANK-3136-00-00_DEL END-----------//								
                                // ANK-4427-00-00 ADD START
								//eo光type N(料金コース.NTT卸区分が設定あり)の場合は工事受付登録を行わない
								if(!typeNFlg){
									// ANK-4427-00-00 ADD END		
	                                //---------v31.00.00 ANK-3136-00-00_ADD START---------//						
									// ANK-4577-00-00 MOD START
//									shosaOkMapper.editMapKojiAnken(param, i, workEKK0021A010[0], workECK0011A010[0], workEKK0321B002[0], idoDiv, tabletHaisoKbn, kojiAnkenInfoMap);
									shosaOkMapper.editMapKojiAnken(param, i, workEKK0021A010[0], workECK0011A010[0], workEKK0321B002[0], idoDiv, tabletHaisoKbn, kojiAnkenInfoMap, nrkemtRozettCd);
									// ANK-4577-00-00 MOD END
									//---------v31.00.00 ANK-3136-00-00_ADD END-----------//
									
									// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/02 END
									// ANK-1386-00-00 工事費算出のために工事案件スキーマへの異動区分更新 MOD END
									kojiCC.executeKojiAnken(handle, param, KKSV0118_KKSV0118OP.KKSV011806CC);
                                // ANK-4427-00-00 ADD START
								}
                                // ANK-4427-00-00 ADD END
								// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/02 START
								// 工事案件CCから返却されるタブレット配送区分（返却）は、オペレーションクラスで物流制御CCに引き渡す
								if (!tabletHaisoKbn.isEmpty())
								{
									HashMap kojiAnkenMap = (HashMap)param.getData(KKSV0118_KKSV0118OP.KKSV011806CC);
									String retTabletHaisoKbn = (String)kojiAnkenMap.get(JKKKojiAnkenConstCC.RET_TABLET_HAISO_KBN);
									HashMap<String, Object> tbltButuryuMap = new HashMap<String, Object>();
									tbltButuryuMap.put(JKKKojiAnkenConstCC.RET_TABLET_HAISO_KBN, retTabletHaisoKbn);
									// KKSV011806CCの領域は、照査対象のサービス契約ごとにクリアされるため、別領域に保持する
									param.setData("tblt_buturyu_map", tbltButuryuMap);
								}
								// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/02 END
							// ANK-4315-00-00 ADD START
							// ONU交換工事を立ち上げる
							}
							else
							{
// ▽▽▽ ANK-4315-07-00 ADD STAR
								{
									// ONU交換工事の為に、申込書明細番号を更新する。
									String keyFixedText = "MSKMSHONOUPDATECC";
									HashMap<String, Object> ccParamMap = new HashMap<String, Object>();
									ccParamMap.put(JKKMskmDtlUpdCC.PARAM_MSKM_DTL_NO, workEKK0021A010[0].getString(EKK0021A010CBSMsg1List.MSKM_DTL_NO)); // 申込明細番号
									
									// 更新は共通CC
									param.setData(keyFixedText, ccParamMap);
									JKKMskmDtlUpdCC updater = new JKKMskmDtlUpdCC();
									updater.updMskmShoDtlNoForOnuEx(handle, param, keyFixedText);
								}
// ▲▲▲ ANK-4315-07-00 ADD END
								// リクエストパラメータの取得処理
								HashMap<String, Object> trgtData = (HashMap<String, Object>)param.getData(JKKSvkeiShosaConstCC.TRGT_DATA);
								List<Map<String, Object>> taknkikiInfoList = (List<Map<String, Object>>)trgtData.get(JKKKojiAnkenConstCC.TAKNKIKI_INFO_LIST);
                                // ANK-4427-00-00 ADD START
								//eo光type N(料金コース.NTT卸区分が設定あり)の場合は工事受付登録を行わない
								if(!typeNFlg){
                                // ANK-4427-00-00 ADD END
									shosaOkMapper.editMapOnuKojiAnken(param, i, workEKK0011A010[0], workEKK0021A010[0], workECK0011A010[0], workEKK0321B002[0], idoDiv, tabletHaisoKbn, kojiAnkenInfoMap, taknkikiInfoList, rozzetflg, pcrsCd);
									kojiCC.executeKojiAnken(handle, param, KKSV0118_KKSV0118OP.KKSV011806CC);
                                // ANK-4427-00-00 ADD START
								}
                                // ANK-4427-00-00 ADD END
							}
							// ANK-4315-00-00 ADD END
						}
						// 工事案件登録更新処理部品内にて、エラーが発生した場合はCCException発生のため、キャッチ
						catch(CCException e)
						{
							// 工事案件登録更新処理部品内にてエラーが発生した場合エラーリストをマッピングする
							ArrayList<Object> kojiErrorList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
							errorList.addAll(kojiErrorList);
						}
						// 2012-11-03 IT1-2012-0001749 EDIT_END

                        // ANK-4427-00-00 ADD START
						//eo光type N(料金コース.NTT卸区分が設定あり)の場合は工事受付登録を行わない
						if(!typeNFlg){
                        //ANK-4427-00-00 ADD END
						   // 工事案件番号を取得
						   kojiak_no =  (String)(((HashMap)param.getData(KKSV0118_KKSV0118OP.KKSV011806CC)).get(JKKKojiAnkenConstCC.NEW_KOJIAK_NO));
						   // 工事案件ステータスを取得
						   kojiakStat = (String)(((HashMap)param.getData(KKSV0118_KKSV0118OP.KKSV011806CC)).get(JKKKojiAnkenConstCC.NEW_KOJIAK_STAT));
						   // 工事案件種別コードを取得
						   kojiakSbtCd = (String)(((HashMap)param.getData(KKSV0118_KKSV0118OP.KKSV011806CC)).get(JKKKojiAnkenConstCC.NEW_KOJIAK_SBT_CD));
                        // ANK-4427-00-00 ADD START
						}
						// ANK-4427-00-00 ADD END
					}
				}
			}
			else if (prcGrpCd.equals(PRC_GRP_CD_EACCESS))
			{
				// ADSL工事登録
				addAdslKoji(handle, param, i, rsltShokai);
			}

			//---------v31.00.00 ANK-3136-00-00_ADD START---------//
			/**************************************************************************************/
			/** 流用元案件番号の撤去解約処理                                                     **/
			/**************************************************************************************/
			if(istekkyoKaiyaku)
			{
				// ANK-4468-11-00 ADD START
				// プラン乗換フラグを取得
				ArrayList netList = (ArrayList)inMap.get("trgt_data_list");
				HashMap<String, Object> netMap = (HashMap)netList.get(0);
				String plnNrkeFlg = (String)netMap.get("pln_nrke_flg");
				// ANK-4468-11-00 ADD END
				// IT2-2018-0000064 MOD START
//				if (this.ryuyoMtAkTekkyoKaiyaku(workEKU0081B010, handle, param, ryuyoMtAkNo, ryuyoKiboYmd))
				// ANK-4468-11-00 MOD START
				//if (this.ryuyoMtAkTekkyoKaiyaku(workEKU0081B010, handle, param, ryuyoMtAkNo, ryuyoKiboYmd, vonuRyuyoUm))
				// ANK-4577-00-00 MOD START
//				if (this.ryuyoMtAkTekkyoKaiyaku(workEKU0081B010, handle, param, ryuyoMtAkNo, ryuyoKiboYmd, vonuRyuyoUm, equipRyuyoUm, plnNrkeFlg))
				if (this.ryuyoMtAkTekkyoKaiyaku(workEKU0081B010, handle, param, ryuyoMtAkNo, ryuyoKiboYmd, vonuRyuyoUm, equipRyuyoUm, plnNrkeFlg, nrkemtRozettCd))
				// ANK-4577-00-00 MOD END
				// ANK-4468-11-00 MOD END
				// IT2-2018-0000064 MOD END
				{
					// v31.00.04 IT1-2018-0000105 MOD START
					//setExceptionErr(param, inMap, "EKK0361D010", "op_svc_cd_err");
					setExceptionErr(param, inMap, "EKU0081B010", "key_svc_kei_no_err");
					setExceptionErr(param, inMap, "EKU0081B010", "key_kojiak_no_err");
					// v31.00.04 IT1-2018-0000105 MOD END
					param.setData(SVKEI_SHOSA_CC_TRAN_RSLT_CD, "1");
					// IT-2018-0000105 MOD START
					// inMap.put("err_cd", "1");
					HashMap<String, Object> ccMap = (HashMap<String, Object>)param.getData("JKKTekkyoDslRun");
					param.setData(SVKEI_SHOSA_CC_TRAN_MESSAGE_LIST, ccMap.get("message_list"));
					// IT-2018-0000105 MOD END
					// 例外をスロー
					throw new CCException(SVKEI_SHOSA_CC_TRAN_RSLT_CD, new Exception());
				}
			}

			//---------v31.00.00 ANK-3136-00-00_ADD END-----------//
			
			/**************************************************************************************/
			/** 電話サービスの処理                                                               **/
			/**************************************************************************************/
			if(svcSbtCd == SVC_SBT_CD_HTEL)
			{
				if (!IDO_DIV_AD_CHG_ADD.equals(idoDiv))
				{
					// 住所変更・登録以外の場合

					// 申込明細データを取得
					CAANMsg[] msgWorkArray = null;
					CAANMsg msgEKK0021A010 = null;			// 申込明細
					msgWorkArray = getWorkParentData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0021A010);
					msgEKK0021A010 = msgWorkArray[0];
					String mskmshoNo = msgEKK0021A010.getString(EKK0021A010CBSMsg1List.MSKMSHO_NO);

					// 20120622 ST2-2012-0000888 START
					// サービス契約_工事案件一覧照会(基本工事取得)
					List<CAANMsg> inMsgEKU0081B020List = shosaOkMapper.editInMsgEKU0081B020(param, i, kisnNo);
					HashMap<String, Object> inMsgEKU0081B020Map = editInMsgCmn(param, inMsgEKU0081B020List.get(0));
					Map<?, ?> rsltEKU0081B020 = scCall.run(inMsgEKU0081B020Map, handle);
					shosaOkMapper.editResultRPEKU0081B020(rsltEKU0081B020, param, i);
					shosaOkMapper.errChk(rsltEKU0081B020);
					CAANMsg[] outMsgEKU0081B020List = getWorkData(EKU0081B020CBSMsg.EKU0081B020CBSMSG1LIST, rsltEKU0081B020);

					if (outMsgEKU0081B020List != null && outMsgEKU0081B020List.length > 0)
					{
						// 新設工事が存在する場合

						// ST2-2013-0000217 2013/01/25 DEL START
//						// 回線対象サービス契約一覧照会
//						List<CAANMsg> inMsgEKK0241B002List = shosaOkMapper.editInMsgEKK0241B002(param, i, kisnNo);
//						HashMap<String, Object> inMsgEKK0241B002Map = editInMsgCmn(param, inMsgEKK0241B002List.get(0));
//						Map<?, ?> rsltEKK0241B002 = scCall.run(inMsgEKK0241B002Map, handle);
//						CAANMsg[] outMsgEKK0241B002List = getWorkData(EKK0241B002CBSMsg.EKK0241B002CBSMSG1LIST, rsltEKK0241B002);
//						boolean isKojiRsvInfoTrkm = false;
//						for (int j = 0 ; outMsgEKK0241B002List != null && j < outMsgEKK0241B002List.length ;j ++)
//						{
//							CAANMsg outMsgEKK0241B002 = outMsgEKK0241B002List[j];
//							String svcKeiNo = outMsgEKK0241B002.getString(EKK0241B002CBSMsg1List.SVC_KEI_NO);
//							String workSvcCd = outMsgEKK0241B002.getString(EKK0241B002CBSMsg1List.SVC_CD);
//							if (SVC_CD_NET.equals(workSvcCd))
//							{
//								// 進捗一覧照会
//								List<CAANMsg> inMsgEKK1091B001List = shosaOkMapper.editInMsgEKK1091B001(param, i, svcKeiNo);
//								HashMap<String, Object> inMsgEKK1091B001Map = editInMsgCmn(param, inMsgEKK1091B001List.get(0));
//								Map<?, ?> rsltEKK1091B001 = scCall.run(inMsgEKK1091B001Map, handle);
//								shosaOkMapper.editResultRPEKU0081B020(rsltEKK1091B001, param, i);
//								shosaOkMapper.errChk(rsltEKK1091B001);
//								CAANMsg[] outMsgEKK1091B001List = getWorkData(EKK1091B001CBSMsg.EKK1091B001CBSMSG1LIST, rsltEKK1091B001);
//								
//								for (int k = 0 ; outMsgEKK1091B001List != null && k < outMsgEKK1091B001List.length ;k ++)
//								{
//									CAANMsg outMsgEKK1091B001 = outMsgEKK1091B001List[k];
//									String prgStat = outMsgEKK1091B001.getString(EKK1091B001CBSMsg1List.PRG_STAT);
//									if(PRG_STAT_KOJI_RSV_INFO_TRKM.equals(prgStat)){
//										isKojiRsvInfoTrkm = true;
//										break;
//									}
//								}
//
//							}
//							else if (SVC_CD_TEL.equals(workSvcCd))
//							{
//								// 進捗一覧照会
//								List<CAANMsg> inMsgEKK1091B001List = shosaOkMapper.editInMsgEKK1091B001(param, i, svcKeiNo);
//								HashMap<String, Object> inMsgEKK1091B001Map = editInMsgCmn(param, inMsgEKK1091B001List.get(0));
//								Map<?, ?> rsltEKK1091B001 = scCall.run(inMsgEKK1091B001Map, handle);
//								shosaOkMapper.editResultRPEKU0081B020(rsltEKK1091B001, param, i);
//								shosaOkMapper.errChk(rsltEKK1091B001);
//								CAANMsg[] outMsgEKK1091B001List = getWorkData(EKK1091B001CBSMsg.EKK1091B001CBSMSG1LIST, rsltEKK1091B001);
//								
//								for (int k = 0 ; outMsgEKK1091B001List != null && k < outMsgEKK1091B001List.length ;k ++)
//								{
//									CAANMsg outMsgEKK1091B001 = outMsgEKK1091B001List[k];
//									String prgStat = outMsgEKK1091B001.getString(EKK1091B001CBSMsg1List.PRG_STAT);
//									if(PRG_STAT_KOJI_RSV_INFO_TRKM.equals(prgStat)){
//										isKojiRsvInfoTrkm = true;
//										break;
//									}
//								}
//
//							}
//							// 工事予定情報取込済のため、ループを抜ける
//							if (isKojiRsvInfoTrkm)
//							{
//								break;
//							}
//						}
						// ST2-2013-0000217 2013/01/25 DEL END

						// ST2-2013-0000217 2013/01/25 MOD START
						// 工事案件ステータスが160〜200の場合、電話用VLANオーダ受付を行う。
						int kojiak_stat = Integer.parseInt(outMsgEKU0081B020List[0].getString(EKU0081B020CBSMsg1List.KOJIAK_STAT));
						if(kojiak_stat >= 160 && kojiak_stat <= 200)
						{
							// 電話用VLANオーダ受付
							List<CAANMsg> vlCaanMsgList = shosaOkMapper.editInMsgESC0021D010(param, i, outMsgEKU0081B020List[0].getString(EKU0081B020CBSMsg1List.KOJIAK_NO), mskmshoNo);
							HashMap<String, Object> rslt = editInMsgCmn(param, vlCaanMsgList.get(0));
							Map<?, ?> rsltESC0021D010 = scCall.run(rslt, handle);
							shosaOkMapper.editResultRPESC0021D010(rsltESC0021D010, param, i);
						}
						// ST2-2013-0000217 2013/01/25 MOD END
					}
					// 20120622 ST2-2012-0000888 END
					// ANK-3652-00-00 ADD START
					// 光コンセントでもマンション工事案件状態コードが160〜200の場合、電話用VLANオーダ受付を行う。
					if (isHikariConsent(handle, param, workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO)))
					{
						// サービス契約_工事案件一覧照会(基本工事取得)
						List<CAANMsg> inMsgEKU0081B020HikariConsentList = shosaOkMapper.editInMsgHikariConsentEKU0081B020(param, i, kisnNo);
						HashMap<String, Object> inMsgEKU0081B020HikariConsentMap = editInMsgCmn(param, inMsgEKU0081B020HikariConsentList.get(0));
						Map<?, ?> rsltHikariConsentEKU0081B020 = scCall.run(inMsgEKU0081B020HikariConsentMap, handle);
						shosaOkMapper.editResultRPEKU0081B020(rsltHikariConsentEKU0081B020, param, i);
						shosaOkMapper.errChk(rsltHikariConsentEKU0081B020);
						CAANMsg[] outMsgEKU0081B020HikariConsentList = getWorkData(EKU0081B020CBSMsg.EKU0081B020CBSMSG1LIST, rsltHikariConsentEKU0081B020);

						if (outMsgEKU0081B020HikariConsentList != null && outMsgEKU0081B020HikariConsentList.length > 0)
						{
							//マンション工事案件状態コードがNULL以外
							if(!JKKStringUtil.isNullBlank(outMsgEKU0081B020HikariConsentList[0].getString(EKU0081B020CBSMsg1List.MANS_KOJIAK_STAT_CD)))
							{
								int mans_kojiak_stat_cd = Integer.parseInt(outMsgEKU0081B020HikariConsentList[0].getString(EKU0081B020CBSMsg1List.MANS_KOJIAK_STAT_CD));
								// マンション工事案件状態コードが160〜200の場合、電話用VLANオーダ受付を行う。
								if(mans_kojiak_stat_cd >= 160 && mans_kojiak_stat_cd <= 200)
								{
									// 電話用VLANオーダ受付
									List<CAANMsg> vlCaanMsgList = shosaOkMapper.editInMsgESC0021D010(param, i, outMsgEKU0081B020HikariConsentList[0].getString(EKU0081B020CBSMsg1List.KOJIAK_NO), mskmshoNo);
									HashMap<String, Object> rslt = editInMsgCmn(param, vlCaanMsgList.get(0));
									Map<?, ?> rsltESC0021D010 = scCall.run(rslt, handle);
									shosaOkMapper.editResultRPESC0021D010(rsltESC0021D010, param, i);
								}
							}
						}
					}
					// ANK-3652-00-00 ADD END
				}

				// サービス対象機器提供サービス契約一覧照会を実施
				List<CAANMsg> eKK0341B022CaanMsgList = shokaiMapper.editInMsgEKK0341B022(param, 0, "020,030,100,110,210");
				HashMap<String, Object> inMsgEKK0341B022Map = editInMsgCmn(param, eKK0341B022CaanMsgList.get(0));
				Map<?, ?> rsltEKK0341B022 = scCall.run(inMsgEKK0341B022Map, handle);
				shokaiMapper.checkResult(param, rsltEKK0341B022);
				
				ArrayList<Map<?, ?>> workEKK0341B022Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0341B022);
				workEKK0341B022Array.add(rsltEKK0341B022);

				// IT1-2013-0000099 2013/01/25 start
				// サービス契約内訳＜電話＞のVA型番とVA機器変更番号をうめる
				// 内訳＜電話＞照会
				editMapShokaiUcwkHTel(param, rsltShokai);
				wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[] {MAP_KEY_EKK0191A010});
				rsltShokai.putAll(wkRsltShokai);

				// 内訳＜電話＞情報変更
				wkErrorList = new ArrayList();
				wkMap = editMapUpdUcwkHTel(handle, param, rsltShokai, idoDiv, canCncSvcKei);
				wkErrorList = runUpdUcwkHTel(handle, param, wkMap, canCncSvcKei);

				errorList.addAll(wkErrorList);
				// IT1-2013-0000099 2013/01/25 end
			}

			/**************************************************************************************/
			/** 配送抑止、強制配送受付（機器提供サービス契約更新）                               **/
			/**************************************************************************************/
			// ANK-1421-00-00 IP-STB 2013/02/04 START
			// タブレット端末、タブレット用クレードル機器
			updKktkSvcTblt(handle, param, rsltShokai, svcSbtCd, pcrsCd, workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO), wkMap, errorList, i, kojiakStat, kojiakSbtCd, workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO));
			// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/02 START
			// タブレット端末、タブレット用クレードル機器の直送配送設定
			setChokusoTblt(handle, param, rsltShokai, pcrsCd, workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO), errorList, i, idoDiv);
			// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/02 END
			// ANK-3987-00-00 DEL START
//			// IP-STB機器
//			updKktkSvcIpStb(handle, param, rsltShokai, svcSbtCd, pcrsCd, workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO), wkMap, errorList, i, kojiakStat, kojiakSbtCd, workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO));
			// ANK-3987-00-00 DEL END
			// ANK-1421-00-00 IP-STB 2013/02/04 END

			/**************************************************************************************/
			/**************************************************************************************/
			// 20140731 ANK-1918-00-00 工事案件CC呼出前に移動 DEL START
//			boolean smtVlTchiFlg = false;
//// ▼▼▼▼▼▼▼▼ ANK-1844-00-00 20140217 add Start ▼▼▼▼▼▼▼▼
//			if (!IDO_DIV_AD_CHG_ADD.equals(idoDiv))
//			{	// 住所変更・登録以外の場合
//// ▲▲▲▲▲▲▲▲ ANK-1844-00-00 20140217 add End   ▲▲▲▲▲▲▲▲
//			// サービス種別コードがネットまたは、電話の照査の場合
//			if (svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_HTEL)
//			{
//				// スマートバリュー紐付け登録 登録を行う場合は異動通知を行う
//				smtVlTchiFlg = instSmtVlTaisho(handle, param, rsltShokai, wkMap, errorList, i);
//			}
//// ▼▼▼▼▼▼▼▼ ANK-1844-00-00 20140217 add Start ▼▼▼▼▼▼▼▼
//			}
//// ▲▲▲▲▲▲▲▲ ANK-1844-00-00 20140217 add End   ▲▲▲▲▲▲▲▲
			// 20140731 ANK-1918-00-00 工事案件CC呼出前に移動 DEL END

			/**************************************************************************************/
			/**************************************************************************************/
//			2012-10-18 KAD-2011-0001102 ADD_START
			// サービス種別コードが電話の場合
			if (svcSbtCd == SVC_SBT_CD_HTEL)
			{
				// 対応履歴 番ポ申込通知
				addTaiorrki(handle, param, rsltShokai, wkMap, errorList, i, "taiorrk", svc_kei_no, kidoCd, svkeiData);
			}
//			2012-10-18 KAD-2011-0001102 ADD_END

			// ST3-2013-0000954 照査時に「退会済」のお客様が回復されない 2013/04/19 START
			// お客様回復の後で実行するため、後続に移動
//			/**************************************************************************************/
//			/** オプトインメール受信設定登録処理                                                 **/
//			/**************************************************************************************/
//			// 2012/07/07 IT2-2012-0000990 ADD START
//			// 会員種別を確認（非eo会員以外か）
//			if(!regitMemberSbtCd.equals(MBTYPE_CD_MST_NOT))
//			{
//				// オプションサービス契約＜ISP＞一覧照会の情報取得
//				CAANMsg[] workEKK0361B001 = null;
//				wkMap = editInMsgCmn(param, shokaiMapper.editInMsgEKK0361B001(param, svc_kei_no).get(0));
//
//				Map<?, ?> rsltEKK0361B001 = scCall.run(wkMap, handle);
//
//				workEKK0361B001 = getWorkData(EKK0361B001CBSMsg.EKK0361B001CBSMSG1LIST, rsltEKK0361B001);
//
//				for (int ii = 0; ii < workEKK0361B001.length; ii++)
//				{
//					CAANMsg childTemplatekEKK0361B001 = workEKK0361B001[ii];
//
//					// メールアドレスの取得
//					String mlad = childTemplatekEKK0361B001.getString(EKK0361B001CBSMsg1List.MLAD);
//
//					// メールアドレスが登録されているか確認
//					if(mlad != null && !"".equals(mlad))
//					{
//						// オプトインメール受信設定一覧照会(SYSID・メールアドレス)の実行
//						CAANMsg workECK0141B003 = null;
//						wkMap = editInMsgCmn(param, shokaiMapper.editInMsgECK0141B003(param, currentSysid, mlad).get(0));
//
//						Map<?, ?> rsltECK0141B003 = scCall.run(wkMap, handle);
//						workECK0141B003 = ((CAANMsg[])rsltECK0141B003.get(JCMConstants.TEMPLATE_LIST_KEY))[0];
//						CAANMsg[] msgECK0141B003List = workECK0141B003.getCAANMsgList(ECK0141B003CBSMsg.ECK0141B003CBSMSG1LIST);
//	
//						// オプトインメール受信設定に登録されているか確認する(登録されていなければ登録を行う)
//						if(null == msgECK0141B003List || 0 == msgECK0141B003List.length)
//						{
//							CAANMsg[] workECK0141B002 = null;	// オプトインメール一覧照会
//							workECK0141B002 = getWorkParentData(ECK0141B002CBSMsg.ECK0141B002CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0141B002);
//	
//							for (int l = 0; l < workECK0141B002.length; l++)
//							{
//								CAANMsg childTemplatekECK0141B002 = workECK0141B002[l];
//
//								// オプトインメール番号を取得
//								String optinm_no = childTemplatekECK0141B002.getString(ECK0141B002CBSMsg1List.OPTINM_NO);
//								// 2012/08/09 IT2-2012-0000990 ADD START 初期値フラグを取得
//								String shk_value_flg = childTemplatekECK0141B002.getString(ECK0141B002CBSMsg1List.SHK_VALUE_FLG);
//								// 2012/08/09 IT2-2012-0000990 ADD END
//
//								//オプトインメール受信設定登録処理
//								wkErrorList = new ArrayList();
//								// 2012/08/09 IT2-2012-0000990 MOD START 初期値フラグを設定
//								wkMap = editInMsgCmn(param, shosaOkMapper.editInMsgECK0141D010(param, i, optinm_no, mlad, shk_value_flg).get(0));
//								// 2012/08/09 IT2-2012-0000990 MOD END
//
//								// 最終更新年月日のマージ(Set)
//								kkExclusiveMapper.mergeSetLastUpdDtm(wkMap);
//
//								wkErrorList = runOptin(handle, param, wkMap);
//
//								// 最終更新年月日のマージ(Get)
//								kkExclusiveMapper.mergeGetLastUpdDtm(wkMap);
//
//								errorList.addAll(wkErrorList);
//								// エラー情報の設定
//								errorMapList.addAll(errorList);
//								optinmUmFlg = "1";
//							}
//						}
//					}
//				}
//			}
//			// 2012/07/07 IT2-2012-0000990 ADD END
			// ST3-2013-0000954 照査時に「退会済」のお客様が回復されない 2013/04/19 END

			/**************************************************************************************/
			/** セット申込チェック                                                               **/
			/**************************************************************************************/
			// サービス種別判定
			if(kidoCd.equals(SHOSA_TRN_DIV_BT))
			{
				switch (svcSbtCd) 
				{
					case SVC_SBT_CD_HNET:
						// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						// eo光ネット
						// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						// サービス契約<eo光ネット>照査チェック
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0091C012(param, i);
						wkMap         = editInMsgCmn(param, wkCaanMsgList.get(0));
						rsltShosa     = scCall.run(wkMap, handle);
						workRsltShosa = getWorkData(EKK0091C012CBSMsg.EKK0091C012CBSMSG1LIST, rsltShosa);
						wkErrorList   = shosaOkMapper.editResultRPEKK0091C012(rsltShosa, param);
						break;

					case SVC_SBT_CD_HTV:
						// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						// eo光テレビ
						// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						// サービス契約<eo光TV>照査チェック
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0101C012(param, i);
						wkMap         = editInMsgCmn(param, wkCaanMsgList.get(0));
						rsltShosa     = scCall.run(wkMap, handle);
						workRsltShosa = getWorkData(EKK0101C012CBSMsg.EKK0101C012CBSMSG1LIST, rsltShosa);
						wkErrorList   = shosaOkMapper.editResultRPEKK0101C012(rsltShosa, param);
						break;

					case SVC_SBT_CD_HTEL:
						// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						// eo光電話
						// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						// サービス契約<eo光電話>照査チェック
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0111C012(param, i);
						wkMap         = editInMsgCmn(param, wkCaanMsgList.get(0));
						rsltShosa     = scCall.run(wkMap, handle);
						workRsltShosa = getWorkData(EKK0111C012CBSMsg.EKK0111C012CBSMSG1LIST, rsltShosa);
						wkErrorList   = shosaOkMapper.editResultRPEKK0111C012(rsltShosa, param);
						break;

					case SVC_SBT_CD_MOBA:
						// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						// eoモバイル
						// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						// サービス契約<eoモバイル>照査チェック
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0121C012(param, i);
						wkMap         = editInMsgCmn(param, wkCaanMsgList.get(0));
						rsltShosa     = scCall.run(wkMap, handle);
						workRsltShosa = getWorkData(EKK0121C012CBSMsg.EKK0121C012CBSMSG1LIST, rsltShosa);
						wkErrorList   = shosaOkMapper.editResultRPEKK0121C012(rsltShosa, param);
						break;

					default:
						// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						// eoADSL
						// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						// サービス契約<eoADSL>照査チェック
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0141C012(param, i);
						wkMap         = editInMsgCmn(param, wkCaanMsgList.get(0));
						rsltShosa     = scCall.run(wkMap, handle);
						workRsltShosa = getWorkData(EKK0141C012CBSMsg.EKK0141C012CBSMSG1LIST, rsltShosa);
						wkErrorList   = shosaOkMapper.editResultRPEKK0141C012(rsltShosa, param);
						break;

				}

				// 照査エラーコードの変換
				if(workRsltShosa != null)
				{
					shosaErrorInfo = chgErrorCd(workRsltShosa);
				}

				// セット申込チェックでエラーが発生した場合ステータスに照査ＮＧをセットして処理を終了する
				if (shosaErrorInfo != null && !shosaErrorInfo.isEmpty())
				{
					HashMap<String, Object> errData = (HashMap)shosaErrorInfo.get(0);

					// ステータス(照査ＮＧ)
					svkeiData.put(JKKSvkeiShosaConstCC.STATUS, SHOSA_RLT_NG);
					// 照査エラー種別コード
					svkeiData.put(JKKSvkeiShosaConstCC.SHOSA_ERR_SBT_CD, errData.get(JKKSvkeiShosaConstCC.SHOSA_ERR_SBT_CD));
					// 照査エラーメッセージID
					svkeiData.put(JKKSvkeiShosaConstCC.SHOSA_ERR_MSG_ID, errData.get(JKKSvkeiShosaConstCC.SHOSA_ERR_MSG_ID));
					// エラー発生時はExceptionを設定
					throw new BPMFlowException((RequestParameter)param, "排他エラー");
				}
			}

			/**************************************************************************************/
			/** 進捗登録                                                                         **/
			/**************************************************************************************/
			if (!IDO_DIV_AD_CHG_ADD.equals(idoDiv))
			{
				// 住所変更・登録以外の場合

				//↓↓↓2012-02-16追加↓↓↓
				CAANMsg[] workEKK1091B001 = getWorkParentData(EKK1091B001CBSMsg.EKK1091B001CBSMSG1LIST, rsltShokai, MAP_KEY_EKK1091B001);
				//↑↑↑2012-02-16追加↑↑↑

// ANK0406-00-00 2012-08-28 EDIT_START

				// ANK-3296-00-00 ADD START
				// 標準工事費のステータスを受付⇒照査に遷移したときに進捗を登録する
				if (kojihi_kapu_flg)
				{
					CAANMsg[] workEKK3131A010 = getWorkParentData(EKK3131A010CBSMsg.EKK3131A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK3131A010);
					if (workEKK3131A010 != null && workEKK3131A010.length > 0)
					{
						String kapPlanCd = workEKK3131A010[0].getString(EKK3131A010CBSMsg1List.KAP_PLAN_CD);
						switch (svcSbtCd) 
						{
							case SVC_SBT_CD_HNET:
								if(prcGrpCd.equals(PRC_GRP_CD_HOME) || prcGrpCd.equals(PRC_GRP_CD_MEZON))
								{
									// eo光ネット
									// 標準工事費割賦情報登録完了を登録
									wkMap = editInMsgCmn(param, shosaOkMapper.editInMsgEKK1091D010_2(param, i, idoDiv, workEKK1091B001, kapPlanCd).get(0));
									// 進捗登録結果取得
									runPrg(handle, param, wkMap, errorList);
								}
								break;
								
							case SVC_SBT_CD_HTEL:
								// eo光電話
								String pplan_cd = (String)workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.PPLAN_CD);
								if (pplan_cd.equals(JKKStrConst.CD00565_TEL1_HOME) || pplan_cd.equals(JKKStrConst.CD00565_TEL1_MEZON) ||
										pplan_cd.equals(JKKStrConst.CD00565_TEL2_HOME) || pplan_cd.equals(JKKStrConst.CD00565_TEL2_MEZON))
								{
									// 標準工事費割賦情報登録完了を登録
									wkMap = editInMsgCmn(param, shosaOkMapper.editInMsgEKK1091D010_2(param, i, idoDiv, workEKK1091B001, kapPlanCd).get(0));
									// 進捗登録結果取得
									runPrg(handle, param, wkMap, errorList);
								}
								break;
								
							default:
						}
					}
				}
				// ANK-3296-00-00 ADD END
				
// ANK-4640-00-00 ADD START
				String waoChumnRnkiYoksiFlg = "";
				// TypeNかどうか判定する
				boolean typeNFlg = false;
				typeNFlg = JKKBpCommon.isTypeNHantei(param, handle, prcGrpCd, pcrsCd);
				if (typeNFlg)
				{
					CAANMsg[] msgWorkArray = null;
					CAANMsg msgEKK0021A010 = null; // 申込明細
					msgWorkArray = getWorkParentData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0021A010);
					msgEKK0021A010 = msgWorkArray[0];
					waoChumnRnkiYoksiFlg = msgEKK0021A010.getString(EKK0021A010CBSMsg1List.WAO_CHUMN_RNKI_YOKSI_FLG);
					// 進捗.進捗特記事項1に登録する文言を設定
					if (WAO_RNKI_YKS_FLG_HI.equals(waoChumnRnkiYoksiFlg))
					{
						waoChumnRnkiYoksiFlg = WAO_RNKI_YKS_FLG_HI_PRG_TKJK_1;
					}
					else
					{
						waoChumnRnkiYoksiFlg = WAO_RNKI_YKS_FLG_YOU_PRG_TKJK_1;
					}
				}
// ANK-4640-00-00 ADD END
// ANK-4640-00-00 MOD START
//				wkMap = editInMsgCmn(param, shosaOkMapper.editInMsgEKK1091D010(param, i, idoDiv, workEKK1091B001).get(0));
				wkMap = editInMsgCmn(param, shosaOkMapper.editInMsgEKK1091D010(param, i, idoDiv, workEKK1091B001, waoChumnRnkiYoksiFlg).get(0));
// ANK-4640-00-00 MOD END
				// 進捗登録結果取得
				HashMap<String, Object> rsltPrg = runPrg(handle, param, wkMap, errorList);
// ANK-3714-00-00 ADD START
				// 電気進捗登録済フラグがfalse（未登録）かつ同一利用場所のeo電気サービス契約番号が存在する場合、eo電気の進捗を登録する
				if (!elecPrgAddZmFlg && !JKKCommonUtil.isNull(eoelecSvcKeiNo))
				{
					// eo電気同一利用場所グループ設定変更完了を登録する
					wkMap = editInMsgCmn(param, shosaOkMapper.editInMsgEKK1091D010_3(param, i, idoDiv, workEKK1091B001, eoelecSvcKeiNo).get(0));
					// 進捗登録処理を実行する
					runPrg(handle, param, wkMap, errorList);
					// 電気進捗登録済フラグにtrueを設定する
					elecPrgAddZmFlg = true;
				}
// ANK-3714-00-00 ADD END

				// スマートバリュー異動通知
				// 20150720 OM-2015-0001291 スマートバリュー異動通知の実行判定は個別に行うよう修正 DEL START
//				if (smtVlTchiFlg)
				if (svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_HTEL)
				// 20150720 OM-2015-0001291 スマートバリュー異動通知の実行判定は個別に行うよう修正 DEL END
				{
					// スマートバリュー異動情報登録
					HashMap<String, Object> trgtData = new HashMap<String, Object>();
					// サービス契約番号
					trgtData.put(JKKSmtvlIdoInfAddConstCC.SVC_KEI_NO, svc_kei_no);
					// サービス契約内訳番号
					trgtData.put(JKKSmtvlIdoInfAddConstCC.SVC_KEI_UCWK_NO, null);
					// 異動区分
					trgtData.put(JKKSmtvlIdoInfAddConstCC.IDO_DIV, idoDiv);
					// 進捗ステータス
					trgtData.put(JKKSmtvlIdoInfAddConstCC.PRG_STAT, rsltPrg.get(EKK1091D010CBSMsg.PRG_STAT));
					// 進捗年月日時分秒
					trgtData.put(JKKSmtvlIdoInfAddConstCC.PRG_DTM, rsltPrg.get(EKK1091D010CBSMsg.PRG_DTM));
					// スマートバリュー異動詳細コード
					trgtData.put(JKKSmtvlIdoInfAddConstCC.SMTVL_IDO_DTL_CD, null);
					// 工事案件中止理由コード1
					trgtData.put(JKKSmtvlIdoInfAddConstCC.KOJIAK_STP_RSN_CD_1, null);
					// 工事案件中止理由コード2
					trgtData.put(JKKSmtvlIdoInfAddConstCC.KOJIAK_STP_RSN_CD_2, null);
					// 異動理由コードリスト
					trgtData.put(JKKSmtvlIdoInfAddConstCC.IDO_RSN_CD_LIST, null);
					// KDDI割引契約異動通知結果コード
					trgtData.put(JKKSmtvlIdoInfAddConstCC.KDDI_WKEI_IDT_RSLT_CD, null);
					// KDDI割引契約異動通知エラーコード
					trgtData.put(JKKSmtvlIdoInfAddConstCC.KDDI_WKEI_IDT_ERR_CD, null);
					// KDDI割引契約異動通知内容
					trgtData.put(JKKSmtvlIdoInfAddConstCC.KDDI_WKEI_IDT_NAIYO, null);

					// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 START
					// 照査OK押下時のオペレーションクラス（KKSV0118OPOperation）からの呼び出し時、fixedTextは空文字
					// となっているために不正なMapを作成しまい、ビュー層でSAXParseExceptionが発生、システムエラーとなる。
					// 当クラスは定数TRGT_DATAをキーとしてデータの入出力を行っているため、正しいキーに変更。
//					JKKBpCommon.addSmtvlIdoInf(handle, param, trgtData, fixedText);
					JKKBpCommon.addSmtvlIdoInf(handle, param, trgtData, JKKSvkeiShosaConstCC.TRGT_DATA);
					// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 END
				}
// ANK0406-00-00 2012-08-28 EDIT_END
			}

			// ST3-2013-0000954 照査時に「退会済」のお客様が回復されない 2013/04/19 START
			// ※照査前のupdCustinfoメソッドでもお客様回復を行おうとしているが、照査前の時点で有効な契約がない場合に回復できていない
			/**************************************************************************************/
			/** お客様回復処理                                                                   **/
			/**************************************************************************************/
			// ▼▼▼▼▼ ST2-2013-0000028 ADD START ▼▼▼▼▼
			// 「eo光テレビ(KCN)」「eo光テレビ(再送信)」の場合は、照査後に
			// お客様回復を実行し、eoIDを払い出す
			if (PRC_GRP_CD_TV_KCN.equals(prcGrpCd) || PRC_GRP_CD_TV_SSS.equals(prcGrpCd))
			{
				// お客様回復
				super.editCustKaihkMap(param, JKKSvkeiShosaConstCC.CUSTKAIHK_MAP, svc_kei_no);
				(new JCKCustKaihkCmnCC()).execute(handle, param, JKKSvkeiShosaConstCC.CUSTKAIHK_MAP);
			}
			// ▲▲▲▲▲ ST2-2013-0000028 UPD E N D ▲▲▲▲▲
			else
			{
				// お客様の再取得
				wkRsltShokaiMap = editMapShokai0(param, i);
				HashMap<String, Object> rsltShokaiCust = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_ECK0011A010});
				workECK0011A010 = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokaiCust, MAP_KEY_ECK0011A010);

				// お客様退会年月日
				String cust_taikai_ymd = workECK0011A010[0].getString(ECK0011A010CBSMsg1List.CUST_TAIKAI_YMD);
				if (!JKKBpCommon.isNull(cust_taikai_ymd))
				{
					// お客様回復
					editCustKaihkMap(param, JKKSvkeiShosaConstCC.CUSTKAIHK_MAP, svc_kei_no);
					(new JCKCustKaihkCmnCC()).execute(handle, param, JKKSvkeiShosaConstCC.CUSTKAIHK_MAP);
				}
			}

			// お客様の再取得
			wkRsltShokaiMap = editMapShokai0(param, i);
			HashMap<String, Object> rsltShokaiCust = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_ECK0011A010});
			workECK0011A010 = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokaiCust, MAP_KEY_ECK0011A010);

			// 最終更新年月日時分秒を再設定する
			kkExclusiveMapper.initParentLastUpdDtm("CK0011", workECK0011A010[0].getString(ECK0011A010CBSMsg1List.LAST_UPD_DTM));

			/**************************************************************************************/
			/** オプトインメール受信設定登録処理                                                 **/
			/**************************************************************************************/
			// 会員種別を確認（非eo会員以外か）
			if(!regitMemberSbtCd.equals(MBTYPE_CD_MST_NOT))
			{
				// オプションサービス契約＜ISP＞一覧照会の情報取得
				CAANMsg[] workEKK0361B001 = null;
				wkMap = editInMsgCmn(param, shokaiMapper.editInMsgEKK0361B001(param, svc_kei_no).get(0));

				Map<?, ?> rsltEKK0361B001 = scCall.run(wkMap, handle);

				workEKK0361B001 = getWorkData(EKK0361B001CBSMsg.EKK0361B001CBSMSG1LIST, rsltEKK0361B001);

				for (int ii = 0; ii < workEKK0361B001.length; ii++)
				{
					CAANMsg childTemplatekEKK0361B001 = workEKK0361B001[ii];

					// メールアドレスの取得
					String mlad = childTemplatekEKK0361B001.getString(EKK0361B001CBSMsg1List.MLAD);

					// メールアドレスが登録されているか確認
					if(mlad != null && !"".equals(mlad))
					{
						// オプトインメール受信設定一覧照会(SYSID・メールアドレス)の実行
						CAANMsg workECK0141B003 = null;
						wkMap = editInMsgCmn(param, shokaiMapper.editInMsgECK0141B003(param, currentSysid, mlad).get(0));

						Map<?, ?> rsltECK0141B003 = scCall.run(wkMap, handle);
						workECK0141B003 = ((CAANMsg[])rsltECK0141B003.get(JCMConstants.TEMPLATE_LIST_KEY))[0];
						CAANMsg[] msgECK0141B003List = workECK0141B003.getCAANMsgList(ECK0141B003CBSMsg.ECK0141B003CBSMSG1LIST);
	
						// オプトインメール受信設定に登録されているか確認する(登録されていなければ登録を行う)
						if(null == msgECK0141B003List || 0 == msgECK0141B003List.length)
						{
							CAANMsg[] workECK0141B002 = null;	// オプトインメール一覧照会
							workECK0141B002 = getWorkParentData(ECK0141B002CBSMsg.ECK0141B002CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0141B002);
	
							for (int l = 0; l < workECK0141B002.length; l++)
							{
								CAANMsg childTemplatekECK0141B002 = workECK0141B002[l];

								// オプトインメール番号を取得
								String optinm_no = childTemplatekECK0141B002.getString(ECK0141B002CBSMsg1List.OPTINM_NO);
								// 2012/08/09 IT2-2012-0000990 ADD START 初期値フラグを取得
								String shk_value_flg = childTemplatekECK0141B002.getString(ECK0141B002CBSMsg1List.SHK_VALUE_FLG);
								// 2012/08/09 IT2-2012-0000990 ADD END

								//オプトインメール受信設定登録処理
								wkErrorList = new ArrayList();
								// 2012/08/09 IT2-2012-0000990 MOD START 初期値フラグを設定
								wkMap = editInMsgCmn(param, shosaOkMapper.editInMsgECK0141D010(param, i, optinm_no, mlad, shk_value_flg).get(0));
								// 2012/08/09 IT2-2012-0000990 MOD END

								// 最終更新年月日のマージ(Set)
								kkExclusiveMapper.mergeSetLastUpdDtm(wkMap);

								wkErrorList = runOptin(handle, param, wkMap);

								// 最終更新年月日のマージ(Get)
								kkExclusiveMapper.mergeGetLastUpdDtm(wkMap);

								errorList.addAll(wkErrorList);
								// エラー情報の設定
								errorMapList.addAll(errorList);
								optinmUmFlg = "1";
							}
						}
					}
				}
			}
			// ST3-2013-0000954 照査時に「退会済」のお客様が回復されない 2013/04/19 END
// ANK-4009-00-00 DEL START
// ANK-2987-00-00 2016/09/16 ADD START
//			/**************************************************************************************/
//			/** 到達確認メール送信機能                                                           **/
//			/**************************************************************************************/
//			// Web申込の契約のみがメール送信の対象とする。Web申込の契約の特定条件は申込形態コードを基準に判断する。
//			CAANMsg[] msgWorkArray = null;
//			CAANMsg msgEKK0021A010 = null;
//			msgWorkArray = getWorkParentData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0021A010);
//			msgEKK0021A010 = msgWorkArray[0];
//			// 申込明細一意照会明細より、申込形態コードを判断します。
//			String mskmFromCd = msgEKK0021A010.getString(EKK0021A010CBSMsg1List.MSKM_FORM_CD);
//			
//			// 申込契約コード『01：ＷＥＢ』の場合、後続判定へ遷移
//			if(mskmFromCd !=  null && !"".equals(mskmFromCd)
//					&& MKSM_FROM_CD_WEB.equals(mskmFromCd)) 
//			{
//				// ECK0201B030_連絡先一覧照会(PMP連携用)の呼び出しを実施する。
//				// @連絡先一覧照会（回線系）
//				// オプトインメール受信設定一覧照会(SYSID・メールアドレス)の実行
//				CAANMsg workECK0201B030 = null;
//				wkMap = editInMsgCmn(param, shokaiMapper.editInMsgECK0201B030(param, currentSysid, FUNC_CODE_1).get(0));
//				Map<?, ?> rsltECK0201B030 = scCall.run(wkMap, handle);
//				workECK0201B030 = ((CAANMsg[])rsltECK0201B030.get(JCMConstants.TEMPLATE_LIST_KEY))[0];
//				CAANMsg[] msgECK0201B030_kaisen_List = workECK0201B030.getCAANMsgList(ECK0201B030CBSMsg.ECK0201B030CBSMSG1LIST);
//				
//				// A連絡先一覧照会（コンテンツ系（メアド本登録分））
//				// オプトインメール受信設定一覧照会(SYSID・メールアドレス)の実行
//				 workECK0201B030 = null;
//				wkMap = editInMsgCmn(param, shokaiMapper.editInMsgECK0201B030(param, currentSysid, FUNC_CODE_2).get(0));
//				rsltECK0201B030 = scCall.run(wkMap, handle);
//				workECK0201B030 = ((CAANMsg[])rsltECK0201B030.get(JCMConstants.TEMPLATE_LIST_KEY))[0];
//				CAANMsg[] msgECK0201B030_content_main_List = workECK0201B030.getCAANMsgList(ECK0201B030CBSMsg.ECK0201B030CBSMSG1LIST);
//				
//				boolean contentMailFlg = false;
//				
//				// 取得したコンテンツメール分だけ下記処理を実施し、コンテンツメールの有無を判断する
//				if (msgECK0201B030_content_main_List != null && msgECK0201B030_content_main_List.length > 0)
//				{
//					contentMailFlg = contentMailHantei(handle, param, msgECK0201B030_content_main_List);
//				}
//				
//				// 本登録されたコンテンツメールがなく、仮登録が存在するかどうかを確認し、再度判断を行う
//				if(!contentMailFlg)
//				{
//					// B連絡先一覧照会（コンテンツ系（メアド仮登録分））
//					// オプトインメール受信設定一覧照会(SYSID・メールアドレス)の実行
//					 workECK0201B030 = null;
//					wkMap = editInMsgCmn(param, shokaiMapper.editInMsgECK0201B030(param, currentSysid, FUNC_CODE_3).get(0));
//
//					rsltECK0201B030 = scCall.run(wkMap, handle);
//					workECK0201B030 = ((CAANMsg[])rsltECK0201B030.get(JCMConstants.TEMPLATE_LIST_KEY))[0];
//					CAANMsg[] msgECK0201B030_content_sub_List = workECK0201B030.getCAANMsgList(ECK0201B030CBSMsg.ECK0201B030CBSMSG1LIST);
//					
//					contentMailFlg = contentMailHantei(handle, param, msgECK0201B030_content_sub_List);
//				}
//				
//				// コンテンツメールアドレスが無効な場合、下記確認を行う
//				if (!contentMailFlg)
//				{
//					// 連絡先メールアドレスが存在する場合、後続を行う
//					if (msgECK0201B030_kaisen_List != null && msgECK0201B030_kaisen_List.length > 0)
//					{
//						
//						// ECK0251B010_オプトインメール受信設定ワーク一覧照会
//						CAANMsg workECK0251B010 = null;
//						wkMap = editInMsgCmn(param, shokaiMapper.editInMsgECK0251B010(param, currentSysid, FUNC_CODE_2).get(0));
//						Map<?, ?> rsltECK0251B010 = scCall.run(wkMap, handle);
//						workECK0251B010 = ((CAANMsg[])rsltECK0251B010.get(JCMConstants.TEMPLATE_LIST_KEY))[0];
//						CAANMsg[] msgECK0251B010_optInMail_List = workECK0251B010.getCAANMsgList(ECK0251B010CBSMsg.ECK0251B010CBSMSG1LIST);
//						
//						// 連絡先メールアドレス存在かつ仮オプトイン情報が有効場合、フラグＯＮする
//						boolean rrskmailoptInFlg = true;
//						// オプトインメール受信設定ワーク番号格納リスト
//						ArrayList<HashMap<String, Object>> optinmRcvstWkNoList = new ArrayList<HashMap<String, Object>>();
//						// 連絡先メールアドレスの取得
//						String rrskMladset = new String();
//						
//						// msgECK0201B030_kaisen_Listで取得した一覧結果と突合せする
//						for (CAANMsg childTemplateECK0201B030 : msgECK0201B030_kaisen_List)
//						{
//							// メールアドレスの取得
//							String rrskMlad = childTemplateECK0201B030.getString(ECK0201B030CBSMsg1List.MLAD);
//							// 連絡先分類コードを再確認
//							String rrksBunruiCd = childTemplateECK0201B030.getString(ECK0201B030CBSMsg1List.RRKS_BUNRUI_CD);
//							// 連絡先種別コードを再確認
//							String rrksSbtCd = childTemplateECK0201B030.getString(ECK0201B030CBSMsg1List.RRKS_SBT_CD);
//							// 予約適用コード
//							String rsv_aply_cd = childTemplateECK0201B030.getString(ECK0201B030CBSMsg1List.RSV_APLY_CD);
//							// 連絡先分類コード「0（回線系連絡先）」、連絡先種別「5(その他）」の場合、申込時メールアドレスとして判断
//							if (rrksBunruiCd != null && !"".equals(rrksBunruiCd) && "0".equals(rrksBunruiCd)
//									&& rrksSbtCd != null && !"".equals(rrksSbtCd) && "5".equals(rrksSbtCd)
//									&& rsv_aply_cd != null && !"".equals(rsv_aply_cd) && "2".equals(rsv_aply_cd))
//							{
//								// 有効な連絡先メールアドレスとして判定
//								rrskMladset = rrskMlad;
//								break;
//							}
//							
//						}
//						
//						// 有効な連絡先メールアドレス存在すれば
//						if (rrskMladset != null && !"".equals(rrskMladset)) {
//							// 仮オプトインメール受信設定（ＳＹＳＩＤ単位）で検索した結果、有効なものが存在すれば
//							if (msgECK0251B010_optInMail_List !=null && msgECK0251B010_optInMail_List.length > 0 )
//							{
//								for (CAANMsg childTemplateECK0251B010 : msgECK0251B010_optInMail_List) {
//									
//									// 照査時メールアドレスの取得
//									String shosaji_mlad =  childTemplateECK0251B010.getString(ECK0251B010CBSMsg1List.SHOSAJI_RRKS_MLAD);
//									
//									// 照査時メールアドレスが空白の場合、有効と判断し格納を行なう
//									if (shosaji_mlad ==null || "".equals(shosaji_mlad))
//									{
//										// オプトインメール受信設定ワーク番号格納リストにオプトインメール受信設定ワーク番号を格納する
//										HashMap<String, Object> optinmRcvstWkhash = new HashMap<String, Object>();
//										// オプトインメール受信設定ワーク番号を格納する
//										optinmRcvstWkhash.put(ECK0251B010CBSMsg1List.OPTINM_RCVST_WK_NO, childTemplateECK0251B010.getString(ECK0251B010CBSMsg1List.OPTINM_RCVST_WK_NO));
//										optinmRcvstWkhash.put(ECK0251B010CBSMsg1List.RCV_DIV, childTemplateECK0251B010.getString(ECK0251B010CBSMsg1List.RCV_DIV));
//										optinmRcvstWkhash.put(ECK0251B010CBSMsg1List.UPD_DTM, childTemplateECK0251B010.getString(ECK0251B010CBSMsg1List.UPD_DTM));
//										// オプトインメール受信設定ワーク番号を格納する
//										optinmRcvstWkNoList.add(optinmRcvstWkhash);
//									}
//									else
//									{
//										// 一致する仮オプトイン情報が１件でも存在すればフラグをFALSEに変更する
//										if (rrskMladset.equals(shosaji_mlad))
//										{
//											// オプトインメール受信設定ワーク番号格納リストをクリアする
//											optinmRcvstWkNoList.clear();
//											rrskmailoptInFlg = false;
//											break;
//										}
//										else
//										{
//											// オプトインメール受信設定ワーク番号格納リストにオプトインメール受信設定ワーク番号を格納する
//											HashMap<String, Object> optinmRcvstWkhash = new HashMap<String, Object>();
//											// オプトインメール受信設定ワーク番号を格納する
//											optinmRcvstWkhash.put(ECK0251B010CBSMsg1List.OPTINM_RCVST_WK_NO, childTemplateECK0251B010.getString(ECK0251B010CBSMsg1List.OPTINM_RCVST_WK_NO));
//											optinmRcvstWkhash.put(ECK0251B010CBSMsg1List.RCV_DIV, childTemplateECK0251B010.getString(ECK0251B010CBSMsg1List.RCV_DIV));
//											optinmRcvstWkhash.put(ECK0251B010CBSMsg1List.UPD_DTM, childTemplateECK0251B010.getString(ECK0251B010CBSMsg1List.UPD_DTM));
//											// オプトインメール受信設定ワーク番号を格納する
//											optinmRcvstWkNoList.add(optinmRcvstWkhash);
//										}
//									}
//								}
//							}
//							else
//							{
//								rrskmailoptInFlg = false;
//							}
//							
//							// 有効な仮オプトイン情報がある場合のみ、到達確認メールの送信を行う
//							if (rrskmailoptInFlg)
//							{
//								
//								// メール送信情報登録CCを実効
//								JKKSendMailCC mailSendCC = new JKKSendMailCC();
//								
//								HashMap targetMap = null;
//								// ユーザデータ情報
//								targetMap = (HashMap)param.getData("MAIL_SEND_CC_INF");
//								if (null == targetMap)
//								{
//									targetMap = new HashMap<String, Object>();
//									param.setData("MAIL_SEND_CC_INF", targetMap);
//								}
//								else
//								{
//									targetMap.clear();
//								}
//								ArrayList<HashMap> ecc0021D010List1 = new ArrayList<HashMap>();
//								ArrayList<HashMap> ecc0021D010List2 = new ArrayList<HashMap>();
//								ArrayList<HashMap> ecc0021D010List3 = new ArrayList<HashMap>();
//								ArrayList<HashMap> ecc0021D010List4 = new ArrayList<HashMap>();
//								ArrayList<HashMap> ecc0021D010List5 = new ArrayList<HashMap>();
//								
//								HashMap list1Map = new HashMap();
//								
//								/** 第１層　共通パラメータ **/
//								// メール送信情報登録マップ.メールコード
//								targetMap.put(ECC0021D010CBSMsg.MAIL_CD, "KKM1000014");
//								// メール送信パターンコード　01:リアルタイム
//								targetMap.put(ECC0021D010CBSMsg.MAIL_SEND_PATTERN_CD, "01");
//								// メール機能パターンコード　1:リアルタイム　登録＆送信
//								targetMap.put(ECC0021D010CBSMsg.FUNC_CODE, "1");
//								
//								/** 第２層　送信先一覧明細 **/
//								// メールアドレスの設定を行う
//								list1Map.put(ECC0021D010CBSMsg1List.MLAD, rrskMladset);
//								// メール設定フィールドコード　01:to
//								list1Map.put(ECC0021D010CBSMsg1List.MLAD_SET_FIELD_CD, "01");
//								ecc0021D010List1.add(list1Map);
//								targetMap.put(ECC0021D010CBSMsg.ECC0021D010CBSMSG1LIST, ecc0021D010List1);
//								
//								/** 第２層　非定型文字列一覧明細 **/
//								// ANK-3082-00-00 2016/12/08 DEL START
//								// String custNm = workECK0011A010[0].getString(ECK0011A010CBSMsg1List.CUST_NM);
//								// HashMap list2Map = new HashMap();
//								// ANK-3082-00-00 2016/12/08 DEL END
//								HashMap list3Map = new HashMap();
//								HashMap list4Map = new HashMap();
//								HashMap list5Map = new HashMap();
//								HashMap list6Map = new HashMap();
//								
//								// ANK-3082-00-00 2016/12/08 DEL START
//								// // list2Mapメール本文の置換文字列にお客様名を設定
//								// list2Map.put(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI, custNm);
//								// ecc0021D010List2.add(list2Map);
//								// ANK-3082-00-00 2016/12/08 DEL END
//								
//								// list3Mapメール本文の置換文字列に有効期限（本日＋業務パラメータ値）を設定
//								HashMap<String, Object> wkMailKigenMap = new HashMap<String, Object>();
//								ArrayList<HashMap<String, Object>> wkMapArray = new ArrayList<HashMap<String,Object>>();
//								List<CAANMsg> xList = this.shokaiMapper.editInMsgEZM0321A010(param, WORK_PARAM_ID_SAVE_PRD_CK0251);
//								wkMapArray.add(editInMsgCmn(param, xList.get(0)));
//								wkMailKigenMap.put(MAP_KEY_EZM0321A010, wkMapArray);
//								HashMap<String, Object> wkMailKigen = runShokai(param, handle, wkMailKigenMap, new String[]{MAP_KEY_EZM0321A010});
//								CAANMsg[] workEZM0321A010 = getWorkParentData(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, wkMailKigen, MAP_KEY_EZM0321A010);
//								
//								// 期日到来型スキーマの保存期間（仮オプトインメール受信設定）の取得
//								String savePrd = workEZM0321A010[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
//								// 日付計算に用いるため、型変換する
//								int savePrdDate = 0;
//								String yukoKigendate = new String();
//								if (savePrd  != null && !"".equals(savePrd ))
//								{
//									savePrdDate = Integer.parseInt(savePrd);
////								}
////								String yukoKigendate = addYYYYMMDD((String)JCCBPCommon.getOpeDate(null), savePrdDate);
//									String getKigenDate = addYYYYMMDD((String)JCCBPCommon.getOpeDate(null), savePrdDate);
//									if (getKigenDate != null && !"".equals(getKigenDate))
//									{
//										String year  = (String)getKigenDate.substring(0, 4);
//										String month = (String)getKigenDate.substring(4, 6);
//										if (DATE_RIT_ZERODAY.equals(getKigenDate.substring(4, 5)))
//										{
//											// 有効日付部のみ採用
//											month = (String)getKigenDate.substring(5, 6);
//										}
//										String day   = (String)getKigenDate.substring(6, 8);
//										if (DATE_RIT_ZERODAY.equals((String)getKigenDate.substring(6,7)))
//										{
//											// 有効日付部のみ採用
//											day = (String)getKigenDate.substring(7,8);
//										}
//										
//										// 「YYYY」年「MM」月「DD」日形式で日付編集を行なう
//										yukoKigendate = year + DATE_RIT_YYYY + month + DATE_RIT_MM + day +  DATE_RIT_DD;
//									}
//								}
//								
//								// 運用年月日＋業務パラメータ値の合算
//								list3Map.put(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI, yukoKigendate);
//								ecc0021D010List2.add(list3Map);
//								
//								// list4Mapメール本文の置換文字列に送信先メールアドレス（お申し込み時にご登録いただいたメールアドレス）を設定
//								list4Map.put(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI, rrskMladset);
//								ecc0021D010List2.add(list4Map);
//								
//								// list5Mapメール本文の置換文字列に接続先ＵＲＬ（ＷＥＢアクセスキー）を設定する
//								
//								// ＵＲＬの編集を行なう
//								String toutatsu_mail_inf_url = new String();
//								
//								// ＵＲＬのリクエストボディ部（認証キー部）に関してはＤＢ登録を行なう
//								// システム日付 ＋ 有効期限を取得する
//								Calendar calendar = Calendar.getInstance();
//								
//								// システム日時時分秒のフォーマット化する
//								SimpleDateFormat formYMDHMS = new SimpleDateFormat("yyyyMMddHHmmssSSS");
//								// 日付計算の母数にシステム日時時分秒を設定する
//								calendar.setTime(formYMDHMS.parse(JPCBPCommon.getSysDateTimeStamp()));
//								
//								// 業務パラメータより取得した有効期間（日ー月）を設定し試算する。 
//								calendar.add(Calendar.DAY_OF_MONTH, savePrdDate);
//								
//								String work_yk_time = formYMDHMS.format(calendar.getTime());
//								
//								// ***** EZM0511C010（業務パラメータ管理一意照会：アクセス認証キー項目長）*****
//								wkMailKigenMap = new HashMap<String, Object>();
//								wkMapArray = new ArrayList<HashMap<String,Object>>();
//								xList = this.shokaiMapper.editInMsgEZM0321A010(param, KEY_CR_ACS_NSKEY_LEN);
//								wkMapArray.add(editInMsgCmn(param, xList.get(0)));
//								wkMailKigenMap.put(MAP_KEY_EZM0321A010, wkMapArray);
//								wkMailKigen = runShokai(param, handle, wkMailKigenMap, new String[]{MAP_KEY_EZM0321A010});
//								workEZM0321A010 = getWorkParentData(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, wkMailKigen, MAP_KEY_EZM0321A010);
//								String work_param_acs_nskey_len = workEZM0321A010[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
//								
//								// ***** EZM0511C010（業務パラメータ管理一意照会：アクセス認証キーＰＷ項目長）*****
//								wkMailKigenMap = new HashMap<String, Object>();
//								wkMapArray = new ArrayList<HashMap<String,Object>>();
//								xList = this.shokaiMapper.editInMsgEZM0321A010(param, KEY_CR_ACS_NSKEY_PWD_LEN);
//								wkMapArray.add(editInMsgCmn(param, xList.get(0)));
//								wkMailKigenMap.put(MAP_KEY_EZM0321A010, wkMapArray);
//								wkMailKigen = runShokai(param, handle, wkMailKigenMap, new String[]{MAP_KEY_EZM0321A010});
//								workEZM0321A010 = getWorkParentData(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, wkMailKigen, MAP_KEY_EZM0321A010);
//								String work_param_acs_nskey_pwd_len = workEZM0321A010[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
//								
//								// EZM0511D010（Webアクセス認証キー登録）
//								wkErrorList = new ArrayList();
//								HashMap<String, Object> wkWebMap = editInMsgCmn(param, shosaOkMapper.execEZM0511D010(param, workECK0011A010[0].getString(ECK0011A010CBSMsg1List.SYSID),
//										work_param_acs_nskey_len, work_param_acs_nskey_pwd_len, work_yk_time, rrskMladset).get(0));
//								wkErrorList = runWebacc(handle, param, wkWebMap);
//								errorList.addAll(wkErrorList);
//								// エラー情報の設定
//								errorMapList.addAll(errorList);
//								CAANMsg[] templates = (CAANMsg[])wkWebMap.get(JCMConstants.TEMPLATE_LIST_KEY);
//								CAANMsg template  = templates[0];
//								// WEBアクセス認証キー番号
//								String web_accss_nskey_no = getNullToStr(template.getString(EZM0511D010CBSMsg.WEB_ACCSS_NSKEY_NO));
//								// WEBアクセス認証キー
//								String web_accss_nskey = getNullToStr(template.getString(EZM0511D010CBSMsg.WEB_ACCSS_NSKEY));
//								
//								
//								// 仮オプトイン情報の更新を行う
//								if (optinmRcvstWkNoList != null && !"".equals(optinmRcvstWkNoList))
//								{
//									for(int wl = 0; wl < optinmRcvstWkNoList.size(); wl++)
//									{
//										HashMap<String, Object> opinfHash = optinmRcvstWkNoList.get(wl);
//										// ECK0251C010_オプトインメール受信設定ワーク更新を実施し、照査時メールアドレスとＷＥＢ認証キーを設定する
//										wkErrorList = new ArrayList();
//										wkMap = editInMsgCmn(param, shosaOkMapper.execECK0251C010(param, 
//												(String)opinfHash.get(ECK0251B010CBSMsg1List.OPTINM_RCVST_WK_NO), 
//												(String)opinfHash.get(ECK0251B010CBSMsg1List.RCV_DIV), rrskMladset, web_accss_nskey_no, 
//												(String)opinfHash.get(ECK0251B010CBSMsg1List.UPD_DTM)).get(0));
//										wkErrorList = runOptInUpd(handle, param, wkMap);
//										// 最終更新年月日のマージ(Get)
//										kkExclusiveMapper.mergeGetLastUpdDtm(wkMap);
//										errorList.addAll(wkErrorList);
//										// エラー情報の設定
//										errorMapList.addAll(errorList);
//									}
//								}
//								
//								// 到達確認メールＵＲＬの取得
//								String urlhead = JCCBPCommon.getApplicationConst("FU_MAIL_REACH_COMFIRM_URL");
//								
//								// ＵＲＬの補完(リクエストヘッダ＋認証キー情報)
//								toutatsu_mail_inf_url = urlhead + web_accss_nskey;
//								
//								list5Map.put(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI, toutatsu_mail_inf_url);
//								ecc0021D010List2.add(list5Map);
//								
//								// list5Mapメール本文の置換文字列に有効期限（本日＋業務パラメータ値）を設定
//								list6Map.put(ECC0021D010CBSMsg2List.TEXT_HTK_CKAM_MOJI, yukoKigendate);
//								ecc0021D010List2.add(list6Map);
//								
//								/** 第２層　非定型文字列一覧明細 **/
//								targetMap.put(ECC0021D010CBSMsg.ECC0021D010CBSMSG2LIST, ecc0021D010List2);
//								/** 第２層　電子ファイル一覧明細（デフォルト／設定値なし） **/
//								targetMap.put(ECC0021D010CBSMsg.ECC0021D010CBSMSG3LIST, ecc0021D010List3);
//								/** 第２層　メール明細一覧明細（デフォルト／設定値なし） **/
//								targetMap.put(ECC0021D010CBSMsg.ECC0021D010CBSMSG4LIST, ecc0021D010List4);
//								/** 第２層　メールヘッダー一覧明細（デフォルト／設定値なし） **/
//								targetMap.put(ECC0021D010CBSMsg.ECC0021D010CBSMSG5LIST, ecc0021D010List5);
//								
//								// メール送信の登録を行う
//								mailSendCC.sendMailCC(handle, param, "MAIL_SEND_CC_INF");
//							}
//						}
//					}
//					else
//					{
//						// 連絡先メールアドレスが存在しない場合は後続判断しない
//					}
//				}
//				else
//				{
//					// コンテンツメールアドレスが有効な場合後続処理は不要
//				}
//			}
//			else
//			{
//				// 申込契約コード『01：ＷＥＢ』以外の申込形態で申込まれた契約は到達確認メール送信対象外とする
//			}
// ANK-2987-00-00 2016/09/16 END
// ANK-4009-00-00 DEL END
			// ANK-4468-09-00 ADD START
			/**************************************************************************************/
			/** 乗換チェック                                                                     **/
			/**************************************************************************************/
			ArrayList netList = (ArrayList)inMap.get("trgt_data_list");
			HashMap<String, Object> netMap = (HashMap)netList.get(0);
			String plnNrkeFlg = (String)netMap.get("pln_nrke_flg");
			// 通常ネット⇔シンプルプラン間の乗換の場合、
			if(Arrays.asList(JKKStrConst.PLN_NRKE_FLG_LIST).contains(plnNrkeFlg)){
//				// 乗換元に固定IPアドレスオプションがあるか否かを判断する。
				String nrkemtSvkeiNo = (String)netMap.get("nrkemt_svkei_no");
				// EKK0351B002 オプションサービス契約一覧照会（サービス契約番号）を実行する
				List<CAANMsg> inMsgEKK0351B002List = shosaOkMapper.editInMsgEKK0351B002(param, 0, nrkemtSvkeiNo);
				HashMap<String, Object> inMsgEKK0351B002Map = editInMsgCmn(param, inMsgEKK0351B002List.get(0));
				// SSIFの実行
				Map<?, ?> rsltEKK0351B002 = scCall.run(inMsgEKK0351B002Map, handle);
				// ANK-4468-09-01 MOD START
				//shosaOkMapper.editResultRPEKU0081B010(rsltEKK0351B002, param, i);
				shosaOkMapper.editResultRPEKK0351B002(rsltEKK0351B002, param, i);
				// ANK-4468-09-01 MOD END
				shosaOkMapper.errChk(rsltEKK0351B002);
				CAANMsg[] workEKK0351B002 = getWorkData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, rsltEKK0351B002);
				// ANK-4577-00-00 ADD START
				ArrayList workEKK0351B002_hktgiList = new ArrayList();
				ArrayList workEKK0451B002_hktgiList = new ArrayList();
				ArrayList hktgiOptionList = new ArrayList();
				ArrayList hktgiPackOptionList = new ArrayList();
				// ANK-4577-00-00 ADD END

				if(workEKK0351B002 != null && workEKK0351B002.length > 0)
				{
				// ANK-4577-00-00 MOD START
//					CAANMsg childTemplate2 = workEKK0351B002[0];
//					// オプションサービス契約ステータス
//					 String opSvcKeiStat = childTemplate2.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);
//					// オプションサービス契約番号
//					String opSvcKeiNo = childTemplate2.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO);
					CAANMsg childTemplate2 = new CAANMsg();
					for(int j = 0; j<workEKK0351B002.length; j++){
						childTemplate2 = workEKK0351B002[j];
						// オプションサービスコード
						String opSvcCd = childTemplate2.getString(EKK0351B002CBSMsg1List.OP_SVC_CD);
						// オプションサービス契約番号
						String opSvcKeiNo = childTemplate2.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO);
						// オプションサービス契約ステータス
						String opSvcKeiStat = childTemplate2.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);
						
						// IT1-2024-0000044 MOD START
						// 乗換元のオプションサービス契約のうち、ステータスが受付済、照査済、締結済、解約済、キャンセル済以外を抽出する。
//						if (!(SVC_KEI_STAT_010.equals(opSvcKeiStat) || SVC_KEI_STAT_020.equals(opSvcKeiStat)
//									|| SVC_KEI_STAT_910.equals(opSvcKeiStat) || SVC_KEI_STAT_920.equals(opSvcKeiStat)))
						if (!(SVC_KEI_STAT_010.equals(opSvcKeiStat) || SVC_KEI_STAT_020.equals(opSvcKeiStat) || SVC_KEI_STAT_030.equals(opSvcKeiStat)
								|| SVC_KEI_STAT_910.equals(opSvcKeiStat) || SVC_KEI_STAT_920.equals(opSvcKeiStat)))
						// IT1-2024-0000044 MOD END
						{
							Map<String,Object> workEKK0351B002_hktgi = new HashMap<String,Object>();
							workEKK0351B002_hktgi.put(EKK0351B002CBSMsg1List.OP_SVC_CD, opSvcCd);
							workEKK0351B002_hktgi.put(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO, opSvcKeiNo);
							workEKK0351B002_hktgiList.add(workEKK0351B002_hktgi);
						}
					}
				}
				// ANK-4577-00-00 MOD END
				// ANK-4577-00-00 ADD START
				// EKK0451B002 割引サービス契約一覧照会（サービス契約番号）を実行する
				List<CAANMsg> inMsgEKK0451B002List = shosaOkMapper.editInMsgEKK0451B002(param, 0, nrkemtSvkeiNo);
				HashMap<String, Object> inMsgEKK0451B002Map = editInMsgCmn(param, inMsgEKK0451B002List.get(0));
				// SSIFの実行
				Map<?, ?> rsltEKK0451B002 = scCall.run(inMsgEKK0451B002Map, handle);
				shosaOkMapper.editResultRPEKK0451B002(rsltEKK0451B002, param, i);
				shosaOkMapper.errChk(rsltEKK0451B002);
				CAANMsg[] workEKK0451B002 = getWorkData(EKK0451B002CBSMsg.EKK0451B002CBSMSG1LIST, rsltEKK0451B002);
				
				if(workEKK0451B002 != null && workEKK0451B002.length > 0)
				{
					CAANMsg childTemplate2 = new CAANMsg();
					for(int j = 0; j<workEKK0451B002.length; j++)
					{
						childTemplate2 = workEKK0451B002[j];
						// 割引サービスコード
						String wribSvcCd = childTemplate2.getString(EKK0451B002CBSMsg1List.WRIB_SVC_CD);
						// 割引サービス契約番号
						String wribSvcKeiNo = childTemplate2.getString(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_NO);
						// 割引サービス契約ステータス
						String wribSvcKeiStat = childTemplate2.getString(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_STAT);
						
						// 乗換元の割引サービス契約のうち、ステータスが受付済、適用済、解約済、キャンセル済以外を抽出する。
						if (!(WRIB_SVC_KEI_STAT_010.equals(wribSvcKeiStat) || WRIB_SVC_KEI_STAT_300.equals(wribSvcKeiStat)
									|| WRIB_SVC_KEI_STAT_910.equals(wribSvcKeiStat) || WRIB_SVC_KEI_STAT_920.equals(wribSvcKeiStat)))
						{
							Map<String,Object> workEKK0451B002_hktgi = new HashMap<String,Object>();
							workEKK0451B002_hktgi.put(EKK0451B002CBSMsg1List.WRIB_SVC_CD, wribSvcCd);
							workEKK0451B002_hktgi.put(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_NO, wribSvcKeiNo);
							workEKK0451B002_hktgiList.add(workEKK0451B002_hktgi);
						}
					}
				}
				
				// Eメールの抽出を行う
				// EKK0021A010 申込明細一意照会を実行する
				String nrkeskMskmDtlNo = (String)netMap.get("mskm_dtl_no");
				List<CAANMsg> inMsgEKK0021A010List = shosaOkMapper.editInMsgEKK0021A010(param, 0, nrkeskMskmDtlNo);
				HashMap<String, Object> inMsgEKK0021A010Map = editInMsgCmn(param, inMsgEKK0021A010List.get(0));
				// SSIFの実行
				Map<?, ?> rsltEKK0021A010 = scCall.run(inMsgEKK0021A010Map, handle);
				shosaOkMapper.editResultRPEKK0021A010(rsltEKK0021A010, param, i);
				shosaOkMapper.errChk(rsltEKK0021A010);
				CAANMsg[] workEKK0021A010 = getWorkData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, rsltEKK0021A010);
				
				if(workEKK0021A010 != null && workEKK0021A010.length > 0 && workEKK0351B002_hktgiList != null && workEKK0351B002_hktgiList.size() > 0)
				{
					CAANMsg childTemplate2 = workEKK0021A010[0];
					// 引継オプションサービス契約リスト
					String hktgiOpsvkeiList = childTemplate2.getString(EKK0021A010CBSMsg1List.HKTGI_OPSVKEI_LIST);
					if (!JKKStringUtil.isNullBlank(hktgiOpsvkeiList))
					{
						String[] emailOpSvkeiNoList = hktgiOpsvkeiList.split(",");
						
						// 乗換元のオプションサービス契約に存在する場合のみ、引継対象とする。
						for (int j = 0; j < emailOpSvkeiNoList.length; j++)
						{
							String emailOpSvcKeiNo = emailOpSvkeiNoList[j];
							for (int k = 0; k < workEKK0351B002_hktgiList.size(); k++)
							{
								Map<String,Object> getEKK0351B002_hktgi = (Map<String,Object>)workEKK0351B002_hktgiList.get(k);
								String opSvcKeiNo = (String)getEKK0351B002_hktgi.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO);
								if (emailOpSvcKeiNo.equals(opSvcKeiNo))
								{
									hktgiOptionList.add(emailOpSvcKeiNo);
								}
							}
						}
					}
				}
				
				// リモートサポートプラスが引継対象か判断する。
				boolean securityPackUm = false;
				if(workEKK0351B002_hktgiList != null && workEKK0351B002_hktgiList.size() > 0 && workEKK0451B002_hktgiList != null && workEKK0451B002_hktgiList.size() > 0)
				{
					for (int j = 0; j < workEKK0351B002_hktgiList.size(); j++)
					{
						Map<String,Object> getEKK0351B002_hktgi = (Map<String,Object>)workEKK0351B002_hktgiList.get(j);
						String opSvcCd = (String)getEKK0351B002_hktgi.get(EKK0351B002CBSMsg1List.OP_SVC_CD);
						String opSvcKeiNo = (String)getEKK0351B002_hktgi.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO);
						// セキュリティーパックを持っていない場合のみ引継対象とする
						if (OP_SVC_CD_B021.equals(opSvcCd))
						{
							for (int k = 0; k < workEKK0451B002_hktgiList.size(); k++)
							{
								Map<String,Object> getEKK0451B002_hktgi = (Map<String,Object>)workEKK0451B002_hktgiList.get(k);
								String wribSvcCd = (String)getEKK0451B002_hktgi.get(EKK0451B002CBSMsg1List.WRIB_SVC_CD);
								if (WRIB_SVC_CD_W00000010.equals(wribSvcCd))
								{
									securityPackUm = true;
								}
							}
							if (!securityPackUm)
							{
								hktgiOptionList.add(opSvcKeiNo);
							}
						}
					}
				}
				
				// その他のオプションのうち、引継対象のものを抽出する
				if(workEKK0351B002_hktgiList != null && workEKK0351B002_hktgiList.size() > 0)
				{
					for (int j = 0; j < workEKK0351B002_hktgiList.size(); j++)
					{
						Map<String,Object> getEKK0351B002_hktgi = (Map<String,Object>)workEKK0351B002_hktgiList.get(j);
						String opSvcCd = (String)getEKK0351B002_hktgi.get(EKK0351B002CBSMsg1List.OP_SVC_CD);
						String opSvcKeiNo = (String)getEKK0351B002_hktgi.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO);
						if (OP_SVC_CD_B004.equals(opSvcCd) || OP_SVC_CD_B131.equals(opSvcCd) || OP_SVC_CD_B133.equals(opSvcCd) || OP_SVC_CD_B134.equals(opSvcCd))
						{
							hktgiOptionList.add(opSvcKeiNo);
						}
					}
				}
				
				// その他のパックオプションのうち、引継対象のものを抽出する
				if(workEKK0451B002_hktgiList != null && workEKK0451B002_hktgiList.size() > 0)
				{
					for (int j = 0; j < workEKK0451B002_hktgiList.size(); j++)
					{
						Map<String,Object> getEKK0451B002_hktgi = (Map<String,Object>)workEKK0451B002_hktgiList.get(j);
						String wribSvcCd = (String)getEKK0451B002_hktgi.get(EKK0451B002CBSMsg1List.WRIB_SVC_CD);
						String wribSvcKeiNo = (String)getEKK0451B002_hktgi.get(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_NO);
						if (WRIB_SVC_CD_W00000006.equals(wribSvcCd) || WRIB_SVC_CD_W00000010.equals(wribSvcCd))
						{
							hktgiPackOptionList.add(wribSvcKeiNo);
						}
					}
				}
				
				// ANK-4577-00-00 ADD END
				// 世代登録年月日時分秒をサービス契約一意照会から取得
				List<CAANMsg> nrkeCaanMsgList = null;
				ArrayList<HashMap> nrkeMapArray = new ArrayList();
				HashMap<String, Object> nrkeRsltShokaiMap = null;
				HashMap<String, Object> nrkeRsltShokai    = null;
				
				nrkeRsltShokaiMap = new HashMap<String, Object>();
				nrkeCaanMsgList = shokaiMapper.editInMsgEKK0081A010(param, nrkemtSvkeiNo);
				nrkeMapArray.add(editInMsgCmn(param, nrkeCaanMsgList.get(0)));
				nrkeRsltShokaiMap.put(MAP_KEY_EKK0081A010, nrkeMapArray);
				nrkeRsltShokai = runShokai(param, handle, nrkeRsltShokaiMap, new String[]{MAP_KEY_EKK0081A010});
				CAANMsg[] nrkeEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, nrkeRsltShokai, MAP_KEY_EKK0081A010);
				
				String geneAddDtm = nrkeEKK0081A010[0].getString(EKK0081A010CBSMsg1List.LAST_UPD_DTM);
				
				
				// 引継対象のオプションについて、EKK0351C240_オプションサービス契約解約を実行する。
				// ANK-4577-00-00 DEL START
//				// ステータスが締結済以上解約済未満の場合、EKK0351C240_オプションサービス契約解約を実行する。
//				if ("030".equals(opSvcKeiStat) || "100".equals(opSvcKeiStat) || "210".equals(opSvcKeiStat) || "220".equals(opSvcKeiStat)) {
				// ANK-4577-00-00 DEL END
				String mskmDtlNo = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO);
				String opHktgskSvcKeiNo = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO);
				// ANK4577-00-00 ADD START
				if (hktgiOptionList != null && hktgiOptionList.size() > 0)
				{
					for (int j = 0; j < hktgiOptionList.size(); j++)
					{
						String opSvcKeiNo = (String)hktgiOptionList.get(j);
				// ANK-4577-00-00 ADD END
						List<CAANMsg> inMsgEKK0351C240List = shosaOkMapper.editInMsgEKK0351C240(param, 0, opSvcKeiNo,mskmDtlNo,geneAddDtm, opHktgskSvcKeiNo);
						HashMap<String, Object> inMsgEKK0351C240Map = editInMsgCmn(param, inMsgEKK0351C240List.get(0));
						// SSIFの実行
						Map<?, ?> rsltEKK0351C240 = scCall.run(inMsgEKK0351C240Map, handle);
						shosaOkMapper.editResultRPEKK0351C240(rsltEKK0351C240, param, i);
						shosaOkMapper.errChk(rsltEKK0351C240);
					}
				}	
				
				// ANK4577-00-00 ADD START
				// 引継対象のパックオプションについて、EKK0451C021_割引サービス契約解約（異動予約未来登録）を実行する。
				if (hktgiPackOptionList != null && hktgiPackOptionList.size() > 0)
				{
					for (int j = 0; j < hktgiPackOptionList.size(); j++)
					{
						String wribSvcKeiNo = (String)hktgiPackOptionList.get(j);
						List<CAANMsg> inMsgEKK0451C021List = shosaOkMapper.editInMsgEKK0451C021(param, 0, wribSvcKeiNo, mskmDtlNo, geneAddDtm, opHktgskSvcKeiNo);
						HashMap<String, Object> inMsgEKK0451C021Map = editInMsgCmn(param, inMsgEKK0451C021List.get(0));
						// SSIFの実行
						Map<?, ?> rsltEKK0451C021 = scCall.run(inMsgEKK0451C021Map, handle);
						shosaOkMapper.editResultRPEKK0451C021(rsltEKK0451C021, param, i);
						shosaOkMapper.errChk(rsltEKK0451C021);
					}
				}
				// ANK-4577-00-00 ADD END
			}
			// ANK-4468-09-00 ADD END
			// エラー情報の設定
			errorMapList.addAll(errorList);

			// 照査のエラーチェック
			if(errorList != null && !errorList.isEmpty())
			{

				String errMsg = "";
				Integer returnCode = null;
				Integer status = 0;

				for(int m = 0; m <  errorList.size(); m++)
				{
					HashMap<String, Object> errData = (HashMap)errorList.get(m);
					HashMap<String, Object> errItems = (HashMap)errData.get(ITEM_CHECK_ERRORS);
					String errFlg = (String)errItems.get(ERR_ITEM_UPD_DTM_BF);

					// 排他エラーの場合照査取消にしてエラーを返す。
					if (ERR_FLG_EA.equals(errFlg))
					{
						errMsg = "排他制御エラー";
					}
					else
					{
						errMsg = "データ不正";
					}
					// 戻り値を設定
					// ステータス
					svkeiData.put(JKKSvkeiShosaConstCC.STATUS, SHOSA_RLT_DL);

					returnCode = (Integer)errData.get(ErrorInfoMapKeys.RETURN_CODE);
					status = (Integer)errData.get(ErrorInfoMapKeys.STATUS);
				}

				// コントロールマップにエラー情報を設定（2012-06-06追加）
				param.setControlMapData(SCControlMapKeys.ERROR_INFO, errorList);

				//↓↓↓2012-06-06更新、エラー処理の正規化↓↓↓
				// 運用しやすいエラーメッセージを出力
				StringBuilder msg = new StringBuilder(getClass().getSimpleName());
				msg.append("内S-IF呼び出しで");
				JSYbpmLog.println(JSYbpmLog.ERROR, getClass(), errorList, "BPX210E009", new String[]{msg.toString()}, null);

				throw new SCCallException(errMsg, returnCode.toString(), status);
				//↑↑↑2012-06-06更新、エラー処理の正規化↑↑↑
			}

			// 戻り値を設定
			// ステータス
			svkeiData.put(JKKSvkeiShosaConstCC.STATUS, SHOSA_RLT_OK);
			// 正常終了のときはnullと思われ
			// 照査エラー種別コード
			svkeiData.put(JKKSvkeiShosaConstCC.SHOSA_ERR_SBT_CD, null);
			// 照査エラーメッセージID
			svkeiData.put(JKKSvkeiShosaConstCC.SHOSA_ERR_MSG_ID, null);
			// 工事案件番号
			svkeiData.put(JKKSvkeiShosaConstCC.KOJIAK_NO, kojiak_no);
			// 工事案件ステータス
			svkeiData.put(JKKSvkeiShosaConstCC.KOJIAK_STATUS, kojiakStat);
			// 初期eoID
			svkeiData.put(JKKSvkeiShosaConstCC.SHK_EOID, shk_eoId);
			// 認証ID
			svkeiData.put(JKKSvkeiShosaConstCC.NINSHO_ID, ninsho_id);
			// 仮メールアドレス払出有無
			svkeiData.put(JKKSvkeiShosaConstCC.KARI_MLAD_HRADSI_UM, mladUmFlg);
			// オプトインメール設定有無
			svkeiData.put(JKKSvkeiShosaConstCC.OPTINM_SET_UM, optinmUmFlg);
		}

		return param;
	}

// IT2-2012-0001685 2012-11-20 ADD_START
	
	/**
	 * 請求オプション照査処理
	 * @param handle
	 * @param param
	 * @param userDataIndex
	 * @param rsltShokai
	 * @param svcSbtCd
	 * @param canCncSvcKei
	 * @param idoDiv
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> runShosaSeikyuOp(SessionHandle handle, IRequestParameterReadWrite param, int userDataIndex,
			HashMap<String, Object> rsltShokai, int svcSbtCd, boolean canCncSvcKei, String idoDiv) throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		ArrayList<Object> wkErrorList = null;
		ArrayList<Object> errorList = new ArrayList();
		// 締結済にするかどうかのフラグ
		boolean weCanDoShosaAndCnc = (svcSbtCd == SVC_SBT_CD_MOBA || canCncSvcKei);
		
		// インターネットサービスの場合に請求オプションの照査or締結を実施
		if (isNetService(svcSbtCd))
		{
			ArrayList wkMapArray = new ArrayList();
			HashMap<String, Object> wkRsltShokaiMap = new HashMap<String, Object>();
			HashMap<String, Object> wkRsltShokai = new HashMap<String, Object>();
			
			// 課金先一覧照会（請求契約番号/サービス契約番号）
			CAANMsg[] workEKK0321B002 = getWorkParentData(EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0321B002);
			
			CAANMsg workEKK0321B002child = workEKK0321B002[0];
			
			// 請求契約一意照会（最終更新年月日時分秒を取得する）
			List<CAANMsg> wkCaanMsgList = shokaiMapper.editInMsgEKK0491A010(param, workEKK0321B002child);
			wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
			wkRsltShokaiMap.put(MAP_KEY_EKK0491A010, wkMapArray);
			wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0491A010});
			
			CAANMsg[] workEKK0491A010 = getWorkParentData(EKK0491A010CBSMsg.EKK0491A010CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK0491A010);
			
			String updDtm = workEKK0491A010[0].getString(EKK0491A010CBSMsg1List.LAST_UPD_DTM);
			
			// 請求オプションサービス契約一覧照会(複数件取得はないはず・・)
			wkMapArray = new ArrayList();
			wkCaanMsgList = shokaiMapper.editInMsgEKK0441B002(param, workEKK0491A010[0].getString(EKK0491A010CBSMsg1List.SEIKY_KEI_NO));
			wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
			wkRsltShokaiMap.put(MAP_KEY_EKK0441B002, wkMapArray);
			wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0441B002});
			
			CAANMsg[] workEKK0441B002 = getWorkParentData(EKK0441B002CBSMsg.EKK0441B002CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK0441B002);
			
			if (workEKK0441B002 != null && workEKK0441B002.length > 0)
			{
				for (int i = 0; i < workEKK0441B002.length; i++)
				{
					// 請求オプションサービス契約一意照会
					CAANMsg workEKK0441B002child = workEKK0441B002[i];
					wkMapArray = new ArrayList();
					wkCaanMsgList = shokaiMapper.editInMsgEKK0441A010(param, workEKK0441B002child);
					wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
					wkRsltShokaiMap.put(MAP_KEY_EKK0441A010, wkMapArray);
					wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0441A010});
					
					CAANMsg[] workEKK0441A010 = getWorkParentData(EKK0441A010CBSMsg.EKK0441A010CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK0441A010);
					
					CAANMsg workEKK0441A010child = workEKK0441A010[0];
					
					// 請求オプションサービス契約ステータスが「010：受付済」以外の場合は処理しない
					if (!isChkStat(workEKK0441A010child.getString(EKK0441A010CBSMsg1List.SEIOPSVC_KEI_STAT)))
					{
						continue;
					}
					
					// 請求書発行手数料以外のオプションは現状無視
					if (!"E001".equals(workEKK0441A010child.getString(EKK0441A010CBSMsg1List.SEIOPSVC_CD)))
					{
						continue;
					}
					
					// モバイル、または締結済まで進められる契約の場合は照査締結を実施
					if (weCanDoShosaAndCnc)
					{
						// 照査締結
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0441C050(param, workEKK0441A010child, idoDiv, updDtm);
						Map<?, ?> rslt = scCall.run(editInMsgCmn(param, wkCaanMsgList.get(0)), handle);
						
						wkErrorList = new ArrayList();
						wkErrorList = shosaOkMapper.editResultRPEKK0441C050(rslt, param);
						ArrayList<Object> errorListTmp = new ArrayList();
						errorListTmp.addAll(wkErrorList);
						errorList.addAll(errorListTmp);
						
//						CAANMsg[] eKK0441C050Templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
//						
//						if (eKK0441C050Templates != null && eKK0441C050Templates.length > 0)
//						{
//							CAANMsg eKK0441C050Template = eKK0441C050Templates[0];
//							if (!eKK0441C050Template.isNull(EKK0441C050CBSMsg.UPD_DTM)) 
//							{
//								updDtm = eKK0441C050Template.getString(EKK0441C050CBSMsg.UPD_DTM);
//							}
//						}
					}
					else
					{
						// 照査
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0441C030(param, workEKK0441A010child, idoDiv, updDtm);
						Map<?, ?> rslt = scCall.run(editInMsgCmn(param, wkCaanMsgList.get(0)), handle);
						
						wkErrorList = new ArrayList();
						wkErrorList = shosaOkMapper.editResultRPEKK0441C030(rslt, param);
						ArrayList<Object> errorListTmp = new ArrayList();
						errorListTmp.addAll(wkErrorList);
						errorList.addAll(errorListTmp);
						
//						CAANMsg[] eKK0441C030Templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
//						
//						if (eKK0441C030Templates != null && eKK0441C030Templates.length > 0)
//						{
//							CAANMsg eKK0441C030Template = eKK0441C030Templates[0];
//							if (!eKK0441C030Template.isNull(EKK0441C030CBSMsg.UPD_DTM)) 
//							{
//								updDtm = eKK0441C030Template.getString(EKK0441C030CBSMsg.UPD_DTM);
//							}
//						}
					}
				}
			}
		}
		
		return errorList;
	}

	/**
	 * 対象のサービス種別がインターネットサービスかの判定を行う
	 * @param svcSbtCd
	 * @return
	 */
	private boolean isNetService(int svcSbtCd)
	{
		// ネットorモバイルorADSLの場合はTRUEとする
		if (SVC_SBT_CD_HNET == svcSbtCd || SVC_SBT_CD_MOBA == svcSbtCd || SVC_SBT_CD_ADSL == svcSbtCd)
		{
			return true;
		}
		// それ以外の場合はfalse
		return false;
	}
// IT2-2012-0001685 2012-11-20 ADD_END
	
//	2012-10-18 KAD-2011-0001102 ADD_START
	/**
	 * 対応履歴 番ポ申込通知
	 * @param handle
	 * @param param
	 * @param rsltShokai
	 * @param wkMap
	 * @param errorList
	 * @param i
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void addTaiorrki(SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> rsltShokai, HashMap<String, Object> wkMap,
			ArrayList<Object> errorList, int i, String fixedText, String svcKeiNo, String kidoCd, HashMap svkeiData) throws Throwable
	{
		
		// サービス契約内訳<eo光電話>一意照会結果取得
		ArrayList<HashMap> workEKK0191A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0191A010);
		
		// お客様一意照会結果取得
		CAANMsg[] workECK0011A010 = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0011A010);
		
		// サービス契約回線内訳一覧照会
		ArrayList<HashMap<?, ?>> workEKK0251B003Array = (ArrayList<HashMap<?, ?>>)rsltShokai.get(MAP_KEY_EKK0251B003);
		CAANMsg[] wkTemEKK0251B003 = (null == workEKK0251B003Array ? null : getWorkData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, workEKK0251B003Array.get(0)));

		// 申込明細一意照会
		CAANMsg[] workEKK0021A010 = getWorkParentData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0021A010);
		
		for (int b = 0; null != workEKK0191A010Array && b < workEKK0191A010Array.size(); b++)
		{
			CAANMsg[] wkTemplatesEKK0191A010 = getWorkData(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, (Map)workEKK0191A010Array.get(b));
			CAANMsg childTemplateEKK0191A010 = wkTemplatesEKK0191A010[0];
			// 番ポ工事有無が有の場合に実行
			if("1".equals(childTemplateEKK0191A010.getString(EKK0191A010CBSMsg1List.BMP_UM)))
			{
				HashMap<String, Object> trgtData = new HashMap<String, Object>();
				/** 番ポ申込通知 */
				// 登録種別            ◎
				// SYSID               △  お客様名をセットしていない場合にセットする
				// お客様名            ◎
				// 申込日              ◎
				// NTT受付番号         ×
				// 電話番号            ◎
				// 設置場所住所コード  ◎
				// ユーザID            ◎
				// サービス契約番号    ◎
				// 工事日時            ×
				
				// 登録種別
				trgtData.put(JKKAddBmpTaiorrkiConstCC.TRK_SBT, MSKM_TCHI);
				// SYSID お客様名をセットしていない場合にセットする
				trgtData.put(JKKAddBmpTaiorrkiConstCC.SYSID, null);
				// お客様名
				trgtData.put(JKKAddBmpTaiorrkiConstCC.CUST_NM, workECK0011A010[0].getString(ECK0011A010CBSMsg1List.CUST_NM));
				// 申込日
				trgtData.put(JKKAddBmpTaiorrkiConstCC.MSKM_YMD, workEKK0021A010[0].getString(EKK0021A010CBSMsg1List.MSKM_YMD));
				// NTT受付番号
				trgtData.put(JKKAddBmpTaiorrkiConstCC.NTT_UKE_NO, null);
				// 電話番号
				trgtData.put(JKKAddBmpTaiorrkiConstCC.TELNO, childTemplateEKK0191A010.getString(EKK0191A010CBSMsg1List.TELNO));
				// 設置場所住所コード
				trgtData.put(JKKAddBmpTaiorrkiConstCC.SETPLACE_AD_CD, wkTemEKK0251B003[0].getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_AD_CD));
				// サービス契約番号
				trgtData.put(JKKAddBmpTaiorrkiConstCC.SVC_KEI_NO, svcKeiNo);

				// IT2-2012-0001708 2012-11-26 EDIT_START
				// ユーザID
				if (KIDO_CD_ON.equals(kidoCd))
				{
					trgtData.put(JKKAddBmpTaiorrkiConstCC.USER_ID, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
					// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/18 START
					// 組織コード
					trgtData.put(JKKAddBmpTaiorrkiConstCC.ORG_CD, (String)svkeiData.get(JKKSvkeiShosaConstCC.ORG_CD));
					// 組織名
					trgtData.put(JKKAddBmpTaiorrkiConstCC.ORG_NM, (String)svkeiData.get(JKKSvkeiShosaConstCC.ORG_NM));
					// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/18 END
				}
				// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/18 START
				// バッチ起動による電話契約の照査はない
//				else
//				{
//					//バッチ起動時は、オペレーションIDではなく、業務パラメータより取得したユーザを指定
//					trgtData.put(JKKAddBmpTaiorrkiConstCC.USER_ID, (String)svkeiData.get(JKKSvkeiShosaConstCC.USER_ID));
//				}
				// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/18 END
				// IT2-2012-0001708 2012-11-26 EDIT_END
				// 工事日時
				trgtData.put(JKKAddBmpTaiorrkiConstCC.KOJI_DTM, null);
				
				// 番ポ対応履歴登録処理
				JKKBpCommon.addBmpTaiorrki(handle, param, trgtData, fixedText);
			}
		}
	}
//	2012-10-18 KAD-2011-0001102 ADD_END


//↓↓↓2012-08-11無効　ST2-2012-0001485対応（機能していないので）↓↓↓
//	//↓↓↓2012-06-11変更　IT1-2023-0000734（物流CCと足並みを揃えるため、敢えて照査済以降の契約も取得）↓↓↓
//	/**
//	 * 既に照査済／締結済の機器提供サービス契約を取得し、配送登録対象外とする設定を行う
//	 * 
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param foo 処理対象データのインデックス
//	 * @throws Throwable 任意の例外
//	 */
//	@SuppressWarnings("unchecked")
//	private void makeHaisoExcludeKktkSvcKei(IRequestParameterReadWrite param, SessionHandle handle, int foo) throws Throwable
//	{
//		Map<Object, Object> workAreaMap = param.getMappingWorkArea();
//		if (null == workAreaMap)
//		{
//			workAreaMap = new HashMap<Object, Object>();
//			param.setMappingWorkArea(workAreaMap);
//		}
//		Map<String, Object> workMap = (Map<String, Object>)workAreaMap.get(KKSV0118_KKSV0118OP.WORK);
//		if (null == workMap)
//		{
//			workMap = new HashMap<String, Object>();
//			workAreaMap.put(KKSV0118_KKSV0118OP.WORK, workMap);
//		}
//
//		List<String> stackList = (List<String>) workMap.get(JKKButuryuCtrlCC.MAP_NM_EXCL_BUTURYU);
//		if (null == stackList)
//		{
//			stackList = new ArrayList<String>();
//			workMap.put(JKKButuryuCtrlCC.MAP_NM_EXCL_BUTURYU, stackList);
//		}
//
//		HashMap<String, Object> rsltShokaiMap = new HashMap<String, Object>();
//
//		// サービス対象機器提供サービス契約一覧照会
//		 List<HashMap<String, Object>> wkMapArray = new ArrayList<HashMap<String, Object>>();
//		List<CAANMsg> wkCaanMsgList = shokaiMapper.editInMsgEKK0341B022(param, foo,
//				(new StringBuilder("020")).append(",").append("030").toString());
//		wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
//		rsltShokaiMap.put("EKK0341B022EX", wkMapArray);
//
//		//S-IF実行
//		Map<String, Object> retMap = runShokai(param, handle, rsltShokaiMap, new String[]{"EKK0341B022EX"});
//		List<?> retList = (List<?>) retMap.get("EKK0341B022EX");
//		for (int j = 0; null != retList && j < retList.size(); j++)
//		{
//			CAANMsg[] koTemplates = getWorkData(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST, (Map<?, ?>)retList.get(j));
//			for (int k = 0; null != koTemplates && k < koTemplates.length; k++)
//			{
//				String no = koTemplates[k].getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);
//				String stat = koTemplates[k].getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_STAT);
//
//				if("020".compareTo(stat) <= 0)
//				{
//					//配送対象外（照査しない）機器提供サービス契約番号をセット
//					stackList.add(no);
//				}
//			}
//		}
//	}
//	//↑↑↑2012-06-11変更　IT1-2023-0000734（物流CCと足並みを揃えるため、敢えて照査済以降の契約も取得）↑↑↑
//↑↑↑2012-08-11無効　ST2-2012-0001485対応（機能していないので）↑↑↑




	// ANK0406-00-00 2012-08-28 ADD_START
	/**
	 * スマートバリュー紐付け登録
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltShokai 照会結果
	 * @param svcSbtCd サービス種別コード
	 * @param svcKeiNo サービス契約番号
	 * @param wkMap workマップ
	 * @param errorList エラーリスト
	 * @throws Throwable 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean instSmtVlTaisho(SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> rsltShokai,
			HashMap<String, Object> wkMap, ArrayList<Object> errorList, int userDataIndex) throws Throwable
	{
		ArrayList<Object> wkErrorList = new ArrayList();
		
		errorList.addAll(wkErrorList);
		
		// 他事業者割引契約一覧照会（有効中のみ）結果取得
		// EKK2441B002
		ArrayList<HashMap> workEKK2441B002Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK2441B002);
		
		if (workEKK2441B002Array != null)
		{
			for (int m = 0; m < workEKK2441B002Array.size(); m++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK2441B002CBSMsg.EKK2441B002CBSMSG1LIST, (Map)workEKK2441B002Array.get(m));
				
				// 有効な他事業者割引契約が取得できた場合は以降処理を行わない
				if (wkTenplates != null && wkTenplates.length != 0)
				{
					return false;
				}
			}
		}
		else
		{
			return false;
		}
		
		// 同一回線内訳使用スマートバリュー設定情報一覧照会
		// EKK2441B001
		// 他事業者割引契約一意照会 
		// EKK2441A010
		// 同一回線場所を使用するネットor電話のサービス契約が存在する
		// EKK2451D010
		// 他事業者割引契約対象契約登録
		wkMap = editMapShokaiSmtVal(param, rsltShokai, userDataIndex);
		HashMap<String, Object> wkRsltShokai = runShokai(param, handle, wkMap, new String[]{MAP_KEY_EKK2441A010});
		rsltShokai.putAll(wkRsltShokai);
		
		CAANMsg[] workEKK2441A010 = getWorkParentData(EKK2441A010CBSMsg.EKK2441A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK2441A010);
		
		//IT1-2012-0001375 2012/10/14 ADD START
		//一覧照会の結果がNULLならばそのまま終了する。
		if (workEKK2441A010 == null || workEKK2441A010.length <= 0)
		{
			return false;
		}
		//IT1-2012-0001375 2012/10/14 ADD END

		// 他事業者割引契約用排他更新日時設定
		kkExclusiveMapper.initParentLastUpdDtm("KK2451", workEKK2441A010[0].getString(EKK2441A010CBSMsg1List.LAST_UPD_DTM));
		
		// 20121124 他事業者割引契約対象契約の適用終了処理追加対応 ADD START
		wkMap = editMapEKK2451B001(param, rsltShokai, userDataIndex);
		HashMap<String, Object> resultEKK2451B001 = runShokai(param, handle, wkMap, new String[]{MAP_KEY_EKK2451B001});
		rsltShokai.putAll(resultEKK2451B001);

		// OM-2013-0004398 スマートバリュー締結済、ネット・電話が解約通知済の場合に紐付けが変更される 2013/11/14 START
		// スマートバリューが仮登録かどうか
		boolean isSmtvlKariAdd = isSmtvlKariAdd(workEKK2441A010);
		if (!canChgSmtvlTgkei(param, rsltShokai, isSmtvlKariAdd))
		{
			return false;
		}
		// OM-2013-0004398 スマートバリュー締結済、ネット・電話が解約通知済の場合に紐付けが変更される 2013/11/14 END

		// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 START
//		wkMap = editMapTendTajgswkeiTgkei(param, rsltShokai, userDataIndex);
//		if ( wkMap == null || ((ArrayList)wkMap.get(MAP_KEY_EKK2451C010)).size() == 0)
//		{
//			return false;
//		}
//		wkErrorList = tendTajgswkeiTgkei(handle, param, wkMap);
//		if ( wkErrorList.size() > 0)
//		{
//			errorList.addAll(wkErrorList);
//			return false;
//		}
		wkMap = editMapTendTajgswkeiTgkei(param, rsltShokai, userDataIndex, isSmtvlKariAdd);
		// スマートバリューが仮登録でない場合は、前の紐付けを切っていなければ新たな紐付け登録は行わない
		if (!isSmtvlKariAdd && (wkMap == null || ((ArrayList)wkMap.get(MAP_KEY_EKK2451C010)).size() == 0))
		{
			return false;
		}
		if ( null != wkMap && ((ArrayList)wkMap.get(MAP_KEY_EKK2451C010)).size() > 0)
		{
			wkErrorList = tendTajgswkeiTgkei(handle, param, wkMap);
			if ( wkErrorList.size() > 0)
			{
				errorList.addAll(wkErrorList);
				return false;
			}
		}
		// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 END
		// 20121124 他事業者割引契約対象契約の適用終了処理追加対応 ADD END
		
		wkMap = editMapAddSmtVal(param, rsltShokai, userDataIndex);
		
		if ( wkMap == null || ((ArrayList)wkMap.get(MAP_KEY_EKK2451D010)).size() == 0)
		{
			return false;
		}
		wkErrorList = addSmtVal(handle, param, wkMap);
		
		return wkErrorList.size() == 0;
	}
	
// ANK0406-00-00 2012-08-28 ADD_END
// ANK0546-00-00 2012-07-31 ADD_START
	/**
	 * 他事業者割引契約対象契約の登録を行う。
	 * @param handle
	 * @param param
	 * @param wkMap
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> addSmtVal(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> wkMap) 
	throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		ArrayList<Object> wkErrorList = null;
		
		// 他事業者割引契約対象契約登録
		wkErrorList = runShosa(handle, param, wkMap, MAP_KEY_EKK2451D010);
		errorList.addAll(wkErrorList);
		
		return errorList;
	}
	
	/**
	 * 配送抑止、強制配送受付（タブレット端末、タブレット用クレードル機器）
	 * eo光ネットの照査時は条件を満たす場合、抑止情報を設定する
	 * eoモバイルの照査時は条件を満たす場合に、強制配送受付を行う
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltShokai 照会結果
	 * @param svcSbtCd サービス種別コード
	 * @param pcrsCd 料金コースコード
	 * @param svcKeiNo サービス契約番号
	 * @param wkMap workマップ
	 * @param errorList エラーリスト
	 * @param userDataIndex ユーザデータ情報のインデックス
	 * @param kojiakStat 工事案件ステータス
	 * @param kojiakSbtCd 工事案件種別コード
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void updKktkSvcTblt(SessionHandle handle, IRequestParameterReadWrite param,
			Map<String, Object> rsltShokai, int svcSbtCd, String pcrsCd, String svcKeiNo, HashMap<String, Object> wkMap,
			ArrayList<Object> errorList, int userDataIndex, String kojiakStat, String kojiakSbtCd, String tkhoshikKkeiNo) throws Throwable
	{
		String kktkSvcKeiNoC021 = "";
		String kktkSvcKeiNoC022 = "";
		ArrayList<Object> wkErrorList = new ArrayList();
		
		errorList.addAll(wkErrorList);
		
		ArrayList wkMapArray = new ArrayList();
		HashMap<String, Object> wkRsltShokaiMap = new HashMap<String, Object>();
		HashMap<String, Object> wkRsltShokai = new HashMap<String, Object>();

		// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/02 START
//		// マンション
//		boolean isMansion = isMansion(handle, param, userDataIndex);
//		
//		// 光配線
//		boolean isHikari = isHikariHaisen(handle, param, tkhoshikKkeiNo);
//		
//		// 配送抑止
//		// eo光ネットの場合（ホームタイプ、メゾンのみ）
//		if (svcSbtCd == SVC_SBT_CD_HNET && (!(isMansion && !isHikari)))
//		{
//			// ANK-1421-00-00 IP-STB 2013/02/04 START
////			// 工事が発生、または工事中
////			if (!isNull(kojiak_no) && isTrgtKojiState(kojiakStat))
//			// 新設工事が発生、工事中の場合
//			if (!isNull(kojiak_no) && isNewestaKoji(kojiakSbtCd) && isTrgtKojiState(kojiakStat))
//			// ANK-1421-00-00 IP-STB 2013/02/04 END
//			{
//				// サービス対象機器提供サービス契約一覧照会
//				List<CAANMsg> wkCaanMsgList = shokaiMapper.editInMsgEKK0341B022(param, userDataIndex, null);
//				wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
//				wkRsltShokaiMap.put(MAP_KEY_EKK0341B022, wkMapArray);
//				wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0341B022});
//				
//				CAANMsg[] wkTenplates = getWorkParentData(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK0341B022);
//				for (int n = 0; n < wkTenplates.length; n++)
//				{
//					CAANMsg childTemplate = wkTenplates[n];
//					
//					// タブレット端末の機器提供サービス契約番号を取得
//					if(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C021))
//					{
//						kktkSvcKeiNoC021 = childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);
//					}
//					
//					// タブレット用クレードル機器の機器提供サービス契約番号を取得
//					if(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C022))
//					{
//						kktkSvcKeiNoC022 = childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);
//					}
//				}
//				
//				// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 START
////				// タブレット端末、またはタブレット用クレードル機器のどちらかが取得できない場合は以降処理を行わない
////				if (isNull(kktkSvcKeiNoC021) || isNull(kktkSvcKeiNoC022))
//				// タブレット端末が取得できない場合は以降処理を行わない
//				if (isNull(kktkSvcKeiNoC021))
//				// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 END
//				{
//					return;
//				}
//				
//				// 請求契約一覧照会
//				wkMapArray = new ArrayList();
//				wkRsltShokaiMap = new HashMap<String, Object>();
//				wkCaanMsgList = null;
//				wkCaanMsgList = shokaiMapper.editInMsgEKK0491B005(param, userDataIndex);
//				wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
//				wkRsltShokaiMap.put(MAP_KEY_EKK0491B005, wkMapArray);
//				wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0491B005});
//				CAANMsg[] workEKK0491B005 = getWorkParentData(EKK0491B005CBSMsg.EKK0491B005CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK0491B005);
//				
//				// ネット存在フラグ
//				boolean isNet = true;
//				// （有効な）ハイブリッド４２Mが存在しないフラグ
//				boolean isHbrid42m = true;
//				HashMap<String, Object> seikyu = new HashMap<String, Object>();
//				// 請求契約一覧照会の結果より
//				// eoモバイル契約（ハイブリッド 42M）が存在するか確認
//				if(workEKK0491B005 != null)
//				{
//					for (int l = 0; l < workEKK0491B005.length; l++)
//					{
//						CAANMsg childTemplatekEKK0491B005 = workEKK0491B005[l];
//						
//						String seikyuKeiNo = childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.SEIKY_KEI_NO);
//						String pcrsCdSeikyu = childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.PCRS_CD);
//						String svcKeiStat = childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.SVC_KEI_STAT);
//						
//						if (!seikyu.containsKey(seikyuKeiNo))
//						{
//							seikyu.put(seikyuKeiNo, "");
//							// 初期化
//							isNet = true;
//							isHbrid42m = true;
//						}
//						
//						if (svcKeiNo.equals(childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.SVC_KEI_NO)))
//						{
//							isNet = true;
//// 2012-11-06 IT1-2012-0001919 EDIT_START
//							continue;
//						}
////						if (PCRS_CD_HBRID42M.equals(pcrsCdSeikyu))
////						{
////							// サービス契約ステータスが"照査済"以降で、かつキャンセル済み、解約済みでない
////							if(KKTK_SVC_KEI_STAT_010.equals(svcKeiStat) 
////									|| SVC_KEI_STAT_910.equals(svcKeiStat) 
////									||KKTK_SVC_KEI_STAT_920.equals(svcKeiStat))
////							{
////								// 有効でないモバイル（ハイブリッド４２M）が存在する
////								isHbrid42m = true;
////							}
////						}
////						else
////						{
////							// そもそもモバイルがない
////							isHbrid42m = true;
////						}
//						
//						// ハイブリッド４２ｍモバイル
//						if (PCRS_CD_HBRID42M.equals(pcrsCdSeikyu))
//						{
//							// 有効なステータスの契約が存在する
//							if (!KKTK_SVC_KEI_STAT_010.equals(svcKeiStat) 
//									&& !SVC_KEI_STAT_910.equals(svcKeiStat) 
//									&& !KKTK_SVC_KEI_STAT_920.equals(svcKeiStat))
//							{
//								isHbrid42m = false;
//							}
//						}
//// 2012-11-06 IT1-2012-0001919 EDIT_END
//					}
//				}
//					
//				// ネットとモバイル（有効でない）が同一請求内の場合配送抑止を行う
//				if (isNet && isHbrid42m)
//				{
//					
//					// 機器提供サービス契約一意照会実施
//					// kktkSvcKeiNoC021
//					wkMapArray = new ArrayList();
//					wkRsltShokaiMap = new HashMap<String, Object>();
//					wkRsltShokai = null;
//					wkCaanMsgList = null;
//					wkCaanMsgList = shokaiMapper.editInMsgEKK0341A010(param, kktkSvcKeiNoC021);
//					wkRsltShokai = editInMsgCmn(param, wkCaanMsgList.get(0));
//					wkMapArray.add(wkRsltShokai);
//					
//					// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 START
//					if (!isNull(kktkSvcKeiNoC022))
//					{
//					// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 END
//						// kktkSvcKeiNoC022
//						wkRsltShokai = null;
//						wkCaanMsgList = null;
//						wkCaanMsgList = shokaiMapper.editInMsgEKK0341A010(param, kktkSvcKeiNoC022);
//						wkRsltShokai = editInMsgCmn(param, wkCaanMsgList.get(0));
//						wkMapArray.add(wkRsltShokai);
//					// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 START
//					}
//					// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 END
//
//					wkRsltShokaiMap.put(MAP_KEY_EKK0341A010, wkMapArray);
//					
//					wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0341A010});
//					
//					// 配送抑止設定
//					// 機器提供サービス契約情報変更S/IF呼出
//					wkMap = editMapKktkSvcUpd(param, wkRsltShokai, SVC_STA_JI_HIS_JOKYO_SKCD_1, true);
//					wkErrorList = runHaisojkCd(handle, param, wkMap);
//				}
//			}
//		}
		// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/02 END

		// 強制配送
		// eoモバイル（ハイブリッド 42M）の場合
		if (PCRS_CD_HBRID42M.equals(pcrsCd))
		{
			// 同一請求契約内配送待ち機器提供サービス契約一覧照会
			String[] kktkSvcKEyStat = new String [2];
			// 機器提供サービス契約ステータス「010：受付済」
			kktkSvcKEyStat[0] = JKKSvcConst.SVC_KEI_STAT_020;
			kktkSvcKEyStat[1] = JKKSvcConst.SVC_KEI_STAT_030;
			
			List<CAANMsg> wkCaanMsgList = shokaiMapper.editInMsgEKK0341B028(param, userDataIndex, kktkSvcKEyStat, JKKSvcConst.SVC_STA_JI_HIS_TG_SKCD_TG);
			wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
			wkRsltShokaiMap.put(MAP_KEY_EKK0341B028, wkMapArray);
			wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0341B028});
			
			ArrayList<HashMap> workEKK0341B028Array = (ArrayList)wkRsltShokai.get(MAP_KEY_EKK0341B028);
			
			if (workEKK0341B028Array != null)
			{
				for (int m = 0; m < workEKK0341B028Array.size(); m++)
				{
					// IT1-2014-0000269 2014/08/09 add start
					//出荷完了時処理済フラグを取得
					String shkaFinJiSyrzmFlgC021 = "";
					String shkaFinJiSyrzmFlgC022 = "";
					// IT1-2014-0000269 2014/08/09 add end
					CAANMsg[] wkTenplates = getWorkData(EKK0341B028CBSMsg.EKK0341B028CBSMSG1LIST, (Map)workEKK0341B028Array.get(m));
					for (int n = 0; n < wkTenplates.length; n++)
					{
						CAANMsg childTemplate = wkTenplates[n];
						
						// タブレット端末の機器提供サービス契約番号を取得
						if(childTemplate.getString(EKK0341B028CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C021))
						{
							// 配送依頼指定年月日が設定されていない
							if(isNull(childTemplate.getString(EKK0341B028CBSMsg1List.HAISO_REQ_SHITEI_YMD)))
							{
								// サービス開始時配送状況識別コードが「1：サービス開始時配送対象」の場合
								if (SVC_STA_JI_HIS_JOKYO_SKCD_1.equals(childTemplate.getString(EKK0341B028CBSMsg1List.SVC_STA_JI_HIS_JOKYO_SKCD)))
								{
									kktkSvcKeiNoC021 = childTemplate.getString(EKK0341B028CBSMsg1List.KKTK_SVC_KEI_NO);
									// IT1-2014-0000269 2014/08/09 add start
									shkaFinJiSyrzmFlgC021 = childTemplate.getString(EKK0341B028CBSMsg1List.SHKA_FIN_JI_SYRZM_FLG);
									// IT1-2014-0000269 2014/08/09 add end
								}
							}
						}
						
						// タブレット用クレードル機器の機器提供サービス契約番号を取得
						if(childTemplate.getString(EKK0341B028CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C022))
						{
							// 配送依頼指定年月日が設定されていない
							if(isNull(childTemplate.getString(EKK0341B028CBSMsg1List.HAISO_REQ_SHITEI_YMD)))
							{
								// サービス開始時配送状況識別コードが「1：サービス開始時配送対象」の場合
								if (SVC_STA_JI_HIS_JOKYO_SKCD_1.equals(childTemplate.getString(EKK0341B028CBSMsg1List.SVC_STA_JI_HIS_JOKYO_SKCD)))
								{
									kktkSvcKeiNoC022 = childTemplate.getString(EKK0341B028CBSMsg1List.KKTK_SVC_KEI_NO);
									// IT1-2014-0000269 2014/08/09 add start
									shkaFinJiSyrzmFlgC022 = childTemplate.getString(EKK0341B028CBSMsg1List.SHKA_FIN_JI_SYRZM_FLG);
									// IT1-2014-0000269 2014/08/09 add end
								}
							}
						}
					}
					
					// タブレット端末、またはタブレット用クレードル機器の条件を満たした
					// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 START
//					// 機器提供サービス契約番号のどちらかが取得できない場合は以降処理を行わない
//					if (isNull(kktkSvcKeiNoC021) || isNull(kktkSvcKeiNoC022))
					// タブレットを強制配送しない場合は以降処理を行わない
					if (isNull(kktkSvcKeiNoC021))
					// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 END
					{
						return;
					}
					// IT1-2014-0000269 2014/08/09 add start
					// 出荷完了時処理済フラグが1なら以降処理を行わない
					if("1".equals(shkaFinJiSyrzmFlgC021) || "1".equals(shkaFinJiSyrzmFlgC022)){
						return;
					}
					// IT1-2014-0000269 2014/08/09 add end
					
					// 機器提供サービス契約一意照会実施
					// kktkSvcKeiNoC021
					wkMapArray = new ArrayList();
					wkRsltShokaiMap = new HashMap<String, Object>();
					wkRsltShokai = null;
					wkCaanMsgList = null;
					wkCaanMsgList = shokaiMapper.editInMsgEKK0341A010(param, kktkSvcKeiNoC021);
					wkRsltShokai = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(wkRsltShokai);
					
					// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 START
					if (!isNull(kktkSvcKeiNoC022))
					{
					// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 END
						// kktkSvcKeiNoC022
						wkRsltShokai = null;
						wkCaanMsgList = null;
						wkCaanMsgList = shokaiMapper.editInMsgEKK0341A010(param, kktkSvcKeiNoC022);
						wkRsltShokai = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(wkRsltShokai);
					// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 START
					}
					// OM-2013-0005366 クレードルの付かないタブレットが照査後に出荷される 2014/01/17 END

					wkRsltShokaiMap.put(MAP_KEY_EKK0341A010, wkMapArray);
					
					wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0341A010});
					
					wkErrorList = updKktkSvc(param, handle, wkRsltShokai);
					
					

				}
			}
		}
	}

	// ANK-1421-00-00 IP-STB 2013/02/04 START
	// ANK-3987-00-00 DEL START
//	/**
//	 * IP-STB機器の配送抑止処理を行います。
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param rsltShokai 照会結果
//	 * @param svcSbtCd サービス種別コード
//	 * @param pcrsCd 料金コースコード
//	 * @param svcKeiNo サービス契約番号
//	 * @param wkMap workマップ
//	 * @param errorList エラーリスト
//	 * @param userDataIndex ユーザデータ情報のインデックス
//	 * @param kojiakStat 工事案件ステータス
//	 * @param kojiakSbtCd 工事案件種別コード
//	 * @throws Throwable 
//	 */
//	@SuppressWarnings("unchecked")
//	private void updKktkSvcIpStb(SessionHandle handle, IRequestParameterReadWrite param,
//			Map<String, Object> rsltShokai, int svcSbtCd, String pcrsCd, String svcKeiNo, HashMap<String, Object> wkMap,
//			ArrayList<Object> errorList, int userDataIndex, String kojiakStat, String kojiakSbtCd, String tkhoshikKkeiNo) throws Throwable
//	{
//		ArrayList<Object> wkErrorList = new ArrayList();
//		
//		errorList.addAll(wkErrorList);
//		
//		ArrayList wkMapArray = new ArrayList();
//		HashMap<String, Object> wkRsltShokaiMap = new HashMap<String, Object>();
//		HashMap<String, Object> wkRsltShokai = new HashMap<String, Object>();
//		
//		// マンション
//		boolean isMansion = isMansion(handle, param, userDataIndex);
//		
//		// 光配線
//		boolean isHikari = isHikariHaisen(handle, param, tkhoshikKkeiNo);
//		
//		// ANK-3387-00-00 ADD START
//		// 光コンセントかどうか(光コンセント：true、光コンセントではない：false)
//		boolean isConsent = isHikariConsent(handle, param, tkhoshikKkeiNo);
//		// ANK-3387-00-00 ADD END
//		
//		// 配送抑止
//		// eo光ネットの場合（ホームタイプ、メゾンのみ）
//		if (svcSbtCd == SVC_SBT_CD_HNET && (!(isMansion && !isHikari)))
//		{
//			// ANK-3387-00-00 ADD START
//			// マンション光配線(光コンセント)の場合を除く
//			if (!isConsent)
//			{
//			// ANK-3387-00-00 ADD END
//				// 新設工事が発生、工事中の場合
//				if (!isNull(kojiak_no) && isNewestaKoji(kojiakSbtCd) && isTrgtKojiState(kojiakStat))
//				{
//					// サービス対象機器提供サービス契約一覧照会結果取得
//					ArrayList<HashMap> workEKK0341B022Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0341B022);
//	
//					if (workEKK0341B022Array != null)
//					{
//						for (int i = 0; i < workEKK0341B022Array.size(); i++)
//						{
//							CAANMsg[] wkTenplates = getWorkData(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST, (Map)workEKK0341B022Array.get(i));
//							for (int n = 0; n < wkTenplates.length; n++)
//							{
//								CAANMsg childTemplate = wkTenplates[n];
//								// IP-STBの機器提供サービス契約番号を取得
//								if (childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(JKKStrConst.KKTK_SVC_CD_IP_STB))
//								{
//									String kktkSvcKeiNoC023 = childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);
//									// 機器提供サービス契約一意照会実施
//									wkMapArray = new ArrayList();
//									List<CAANMsg> wkCaanMsgList = shokaiMapper.editInMsgEKK0341A010(param, kktkSvcKeiNoC023);
//									wkRsltShokai = editInMsgCmn(param, wkCaanMsgList.get(0));
//									wkMapArray.add(wkRsltShokai);
//									wkRsltShokaiMap.put(MAP_KEY_EKK0341A010, wkMapArray);
//									wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0341A010});
//									// 配送抑止設定
//									// 機器提供サービス契約情報変更S/IF呼出
//									wkMap = editMapKktkSvcUpd(param, wkRsltShokai, SVC_STA_JI_HIS_JOKYO_SKCD_1, true);
//									wkErrorList = runHaisojkCd(handle, param, wkMap);
//								}
//							}
//						}
//					}
//				}
//			// ANK-3387-00-00 ADD START
//			}
//			// ANK-3387-00-00 ADD END
//		}
//	}
	// ANK-3987-00-00 DEL END
// ANK-4009-00-00 DEL START
//	/**
//	 * 工事案件種別コードが新設工事かどうかを返します。
//	 * <br>
//	 * @param kojiakSbtCd 工事案件種別コード
//	 * @return 工事案件種別コードが「新設」または「住所変更(新設)」の場合はture、そうでない場合はfalse
//	 */
//	private boolean isNewestaKoji(String kojiakSbtCd)
//	{
//		if (JKKStrConst.CD00577_NEWESTA.equals(kojiakSbtCd) || JKKStrConst.CD00577_ADCHG_NEWESTA.equals(kojiakSbtCd))
//		{
//			return true;
//		}
//
//		return false;
//	}
// ANK-4009-00-00 DEL END
	// ANK-1421-00-00 IP-STB 2013/02/04 END
// ANK-4009-00-00 DEL START
// 2012-11-07 IT1-2012-0001919 ADD_START
//	/**
//	 * 工事ステータスが工事中かの判断をする
//	 * @param kojiakStat
//	 * @return
//	 */
//	private boolean isTrgtKojiState(String kojiakStat)
//	{
//		// 空白の場合はfalse
//		if (isNull(kojiakStat))
//		{
//			return false;
//		}
//		
//		// 工事案件ステータスが「110:なし」「200:完了」「900:中止」の場合はfalse
//		if (KOJIAK_STATE_NASI.equals(kojiakStat) || KOJIAK_STATE_END.equals(kojiakStat) || KOJIAK_STATE_CL.equals(kojiakStat))
//		{
//			return false;
//		}
//		
//		// 上記以外の場合は工事中と判断するtrue
//		return true;
//	}
// 2012-11-07 IT1-2012-0001919 ADD_END
// ANK-4009-00-00 DEL END
	
// ANK0546-00-00 2012-07-31 ADD_END
	
	/**
	 * 整理番号発番付替CC呼出しデータをサービス契約番号の数だけスタック
	 * @param param リクエストパラメータ
	 * 
	 * @param svc_kei_no
	 * @param sysid
	 * @throws Exception param.getMappingWorkArea()時の例外
	 * @since 2012-04-25 巻@　整理番号発番付替CC取込み対応
	 */
	@SuppressWarnings("unchecked")
	private void stackSeiriBangoMap(IRequestParameterReadWrite param, String svc_kei_no, String sysid) throws Exception
	{
		Map<Object, Object> workAreaMap = param.getMappingWorkArea();
		if (null == workAreaMap)
		{
			workAreaMap = new HashMap<Object, Object>();
			param.setMappingWorkArea(workAreaMap);
		}
		Map<String, Object> workMap = (Map<String, Object>)workAreaMap.get(KKSV0118_KKSV0118OP.WORK);
		if (null == workMap)
		{
			workMap = new HashMap<String, Object>();
			workAreaMap.put(KKSV0118_KKSV0118OP.WORK, workMap);
		}

		List<Map<String, Object>> stackList = (List<Map<String, Object>>) workMap.get(KKSV0118_KKSV0118OP_WORK.STACK_LIST);
		if (null == stackList)
		{
			stackList = new ArrayList<Map<String,Object>>();
			workMap.put(KKSV0118_KKSV0118OP_WORK.STACK_LIST, stackList);
		}

		HashMap<String, Object> stackMap = new HashMap<String, Object>();
		stackMap .put(JKKSvkeiShosaConstCC.SVC_KEI_NO, svc_kei_no);		//サービス契約番号
		stackMap.put(JKKSvkeiShosaConstCC.SYSID, currentSysid);			//SYSID
		stackList.add(stackMap);
	}


	/**
	 * サービスインタフェースの実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param rsltMap マッピング後のデータ
	 * @param mapKey マップキーリスト
	 * @return 実行結果
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> runShokai(
			IRequestParameterReadWrite param, 
			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);
						
						shokaiMapper.checkResult(param, rslt);
					}
					wkRsltArray.add(rslt);
				}
			}
			rsltList.put(mapKey[i], wkRsltArray);
		}

		return rsltList;
	}

	/**
	 * 進捗登録の実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param wkMap 進捗登録実行時に使用するマップ
	 * @return エラー情報
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> runPrg(SessionHandle handle, 
										IRequestParameterReadWrite param, 
										HashMap<String, Object> wkMap, ArrayList<Object> allErrorList ) 
	throws Throwable
	{
		//ArrayList wkMapArray = null;
		ArrayList<Object> errorList = new ArrayList();
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		Map<?, ?> rslt = null;
		ArrayList<Object> wkErrorList = null;
		rslt = scCall.run(wkMap, handle);
		
		wkErrorList = shosaOkMapper.editResultRPEKK1091D010(rslt, param);

		errorList.addAll(wkErrorList);

		allErrorList.addAll(errorList);
		
		CAANMsg[] templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		return parentTemplate.getMsgData();
	}


	/**
	 * EZM0111D010 エイジング対象登録S-IF の実行<br/>
	 * <pre>
	 * エイジング対象マップに登録されている対象値一式をエイジング対象登録する
	 * ※サブ IT1障害841 対応
	 * </pre>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ一式
	 * @return エラーリスト
	 * @throws Exception 任意の例外
	 * @since 2012-02-03
	 */
	private ArrayList<Object> runRegistAging(SessionHandle handle, IRequestParameterReadWrite param) throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList<Object>();
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		for (Entry<String, Object> pair: agingWorkMap.entrySet())
		{
			// ST1-2012-0000139 2012/07/17 start
			String aging_sbt_cd_key = pair.getKey();
			String aging_sbt_cd = aging_sbt_cd_key.substring(0, 3);
			String aging_tg_value = (String) pair.getValue();
			if (null != aging_tg_value){
				if(AGING_SBT_EOID.equals(aging_sbt_cd)){
					// ▼▼▼▼▼ 2012/12/17 IT1-2012-0002272 DEL START ▼▼▼▼▼
					// ====================================== //
					// ※初期eoIDは、エイジング対象外         //
					// ====================================== //
//					//eoIDは常に登録
//					ArrayList<Object> wkErrorList = agingTouroku(handle, param, scCall, aging_sbt_cd, aging_tg_value);
//					errorList.addAll(wkErrorList);
					// ▲▲▲▲▲ 2012/12/17 IT1-2012-0002272 DEL E N D ▲▲▲▲▲
				}else if(AGING_SBT_ISP_NINSHO_ID.equals(aging_sbt_cd)
						|| AGING_SBT_PPP_NINSHO_ID.equals(aging_sbt_cd)
						|| AGING_SBT_SIP_USER_ID.equals(aging_sbt_cd)
						|| AGING_SBT_ADSL_NINSHO_ID.equals(aging_sbt_cd)
						|| AGING_SBT_WEBID.equals(aging_sbt_cd)
						|| AGING_SBT_POPID.equals(aging_sbt_cd)
						|| AGING_SBT_MLAD.equals(aging_sbt_cd)){
					//処理前の値
					String bf_aging_tg_value = (String)bfAgingWorkMap.get(aging_sbt_cd_key);
					if(!aging_tg_value.equals(bf_aging_tg_value)){
						//差異があれば エイジング対象登録
						ArrayList<Object> wkErrorList = agingTouroku(handle, param, scCall, aging_sbt_cd, aging_tg_value);
						errorList.addAll(wkErrorList);

					}else{
						//差異がなければエイジングスキーマを検索し、見つけたら回復
						HashMap<String, Object> agingData = getAgingData(handle, param, aging_sbt_cd, aging_tg_value);
						//回復可能かどうか
						if(agingData != null && AGING_STAT_KAIFUKUKANO.equals((String)agingData.get(EZM0111B040CBSMsg1List.AGING_STAT))){
							//回復する
							String lastUpdDtmBf = (String)agingData.get(EZM0111B040CBSMsg1List.UPD_DTM);
							ArrayList<Object> wkErrorList = agingKaifuku(handle, param, scCall, aging_sbt_cd, aging_tg_value, lastUpdDtmBf);
							errorList.addAll(wkErrorList);
						}
					}

				}else{
					//エイジングスキーマを検索
					HashMap<String, Object> agingData = getAgingData(handle, param, aging_sbt_cd, aging_tg_value);

					if(agingData == null || agingData.size() == 0){
						//無かったら登録
						ArrayList<Object> wkErrorList = agingTouroku(handle, param, scCall, aging_sbt_cd, aging_tg_value);
						errorList.addAll(wkErrorList);

					}else if(agingData != null && AGING_STAT_KAIFUKUKANO.equals((String)agingData.get(EZM0111B040CBSMsg1List.AGING_STAT))){
						//回復可能であれば回復する
						String lastUpdDtmBf = (String)agingData.get(EZM0111B040CBSMsg1List.UPD_DTM);
						ArrayList<Object> wkErrorList = agingKaifuku(handle, param, scCall, aging_sbt_cd, aging_tg_value, lastUpdDtmBf);
						errorList.addAll(wkErrorList);
					}
				}
			}
			// ST1-2012-0000139 2012/07/17 end
		}
		// ST1-2012-0000139 2012/07/19 start
		// agingWorkMapに無くて、bfAgingWorkMapにあるものは回復
		for(Entry<String, Object> entry: bfAgingWorkMap.entrySet()){
			String aging_sbt_cd_key = entry.getKey();
			String aging_sbt_cd = aging_sbt_cd_key.substring(0, 3);
			String aging_tg_value = (String) entry.getValue();
			if(aging_tg_value == null || "".equals(aging_tg_value) || agingWorkMap.containsKey(aging_sbt_cd_key)){
				continue;
			}
			//エイジングスキーマを検索
			HashMap<String, Object> agingData = getAgingData(handle, param, aging_sbt_cd, aging_tg_value);
			if(agingData == null || agingData.size() == 0){
				//無かったら登録
				ArrayList<Object> wkErrorList = agingTouroku(handle, param, scCall, aging_sbt_cd, aging_tg_value);
				errorList.addAll(wkErrorList);

			}else if(agingData != null && AGING_STAT_KAIFUKUKANO.equals((String)agingData.get(EZM0111B040CBSMsg1List.AGING_STAT))){
				//回復可能であれば回復する
				String lastUpdDtmBf = (String)agingData.get(EZM0111B040CBSMsg1List.UPD_DTM);
				ArrayList<Object> wkErrorList = agingKaifuku(handle, param, scCall, aging_sbt_cd, aging_tg_value, lastUpdDtmBf);
				errorList.addAll(wkErrorList);
			}
		}
		// ST1-2012-0000139 2012/07/19 end

		return errorList;
	}

	// 2012/07/07 IT2-2012-0000990 MOD START コメント化を解除
	/**
	 * オプトインメール受信設定の実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param wkMap 進捗登録実行時に使用するマップ
	 * @return エラー情報
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> runOptin(SessionHandle handle, 
										IRequestParameterReadWrite param, 
										HashMap<String, Object> wkMap) 
	throws Throwable
	{
		//ArrayList wkMapArray = null;
		ArrayList<Object> errorList = new ArrayList();
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		Map<?, ?> rslt = null;
		ArrayList<Object> wkErrorList = null;
		rslt = scCall.run(wkMap, handle);
		
		wkErrorList = shosaOkMapper.editResultRPECK0141D010(rslt, param);

		errorList.addAll(wkErrorList);

		return errorList;
	}
	// 2012/07/07 IT2-2012-0000990 MOD END

	/**
	 * 照査の実行処理です。<br>
	 * <br>
	 * @param	handle		セッションマネージャなどを持ったハンドル
	 * @param	param		モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	rsltMap		照査実行時に使用するマップのリスト
	 * @param	mapKey		rsltMapで対象のデータを取得するためのマップキー
	 * @return				エラー情報
	 * @throws	Throwable 
	 */
	@SuppressWarnings("unchecked")
	protected ArrayList<Object> runShosa(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> rsltMap, 
			String mapKey
	) throws Throwable
	{
		ArrayList wkMapArray = null;
		ArrayList<Object> errorList = new ArrayList();
		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		wkMapArray = (ArrayList)rsltMap.get(mapKey);
		if (wkMapArray != null)
		{
			for (int i = 0; i < wkMapArray.size(); i++)
			{
				Map<?, ?> rslt = null;
				HashMap<String, Object> wkMap = (HashMap)wkMapArray.get(i);
				if (wkMap != null)
				{
					ArrayList<Object> wkErrorList = new ArrayList<Object>();

					// 最終更新年月日のマージ(Set)
					kkExclusiveMapper.mergeSetLastUpdDtm(wkMap);

					// SIF実行
					rslt = scCall.run(wkMap, handle);

					// 最終更新年月日のマージ(Get)
					kkExclusiveMapper.mergeGetLastUpdDtm(wkMap);

					if (mapKey.equals(MAP_KEY_EKK0021C060))
					{
						// 申込明細照査・後続業務依頼
						wkErrorList = shosaOkMapper.editResultRPEKK0021C060(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0091C010))
					{
						// サービス契約＜eo光ネット＞照査
						wkErrorList = shosaOkMapper.editResultRPEKK0091C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0101C010))
					{
						// サービス契約＜eo光TV＞照査
						wkErrorList = shosaOkMapper.editResultRPEKK0101C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0111C010))
					{
						// サービス契約＜eo光電話＞照査
						wkErrorList = shosaOkMapper.editResultRPEKK0111C010(rslt, param);
						//IT2-2013-0000568 add start
						String ppp_ninsho_id = shosaOkMapper.getResultRPEKK0111C010(rslt, param);
						ppp_ninsho_id = JKKBpCommon.getAgingNinshoId(ppp_ninsho_id);		//2012-02-23追加　IT障害1023対応
						agingWorkMap.put(AGING_SBT_PPP_NINSHO_ID, ppp_ninsho_id);
						//IT2-2013-0000568 add end
						
					}
					else if (mapKey.equals(MAP_KEY_EKK0121C010))
					{
						// サービス契約＜eoモバイル＞照査
						wkErrorList = shosaOkMapper.editResultRPEKK0121C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0141C010))
					{
						// サービス契約＜eoADSL＞照査
						wkErrorList = shosaOkMapper.editResultRPEKK0141C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0171C010))
					{
						// サービス契約内訳<eo光ネット>照査
						wkErrorList = shosaOkMapper.editResultRPEKK0171C010(rslt, param);
						// 払出されたISP認証IDを取得
						ninsho_id = shosaOkMapper.getResultRPEKK0171C010(rslt, param);
						ninsho_id = JKKBpCommon.getAgingNinshoId(ninsho_id);		//2012-02-23追加　IT障害1023対応
						agingWorkMap.put(AGING_SBT_ISP_NINSHO_ID, ninsho_id);		//2012-02-03追加
					}
					else if (mapKey.equals(MAP_KEY_EKK0181C010))
					{
						// サービス契約内訳<eo光TV>照査
						wkErrorList = shosaOkMapper.editResultRPEKK0181C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0191C010))
					{
						// サービス契約内訳<eo光電話>照査
						wkErrorList = shosaOkMapper.editResultRPEKK0191C010(rslt, param);
						// 払出されたSIPユーザーIDを取得
						ninsho_id = shosaOkMapper.getResultRPEKK0191C010(rslt, param);
						// ST1-2012-0000139 2012/07/17 start
						// AGING_SBT + サービス契約内訳番号
						CAANMsg[] templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
						CAANMsg template = templates[0];
						agingWorkMap.put(AGING_SBT_SIP_USER_ID + template.getString(EKK0191C010CBSMsg.SVC_KEI_UCWK_NO), ninsho_id);		//2012-02-03追加
						// ST1-2012-0000139 2012/07/17 end
					}
					else if (mapKey.equals(MAP_KEY_EKK0221C010))
					{
						// サービス契約内訳＜eoADSL＞照査
						wkErrorList = shosaOkMapper.editResultRPEKK0221C010(rslt, param);
						// 払出されたADSL認証IDを取得（フレッツのみ）
						ninsho_id = shosaOkMapper.getResultRPEKK0221C010(rslt, param);
						// IT1-2013-0001098 ADSL認証IDにVR識別が付与されていない 2013/04/30 START
//						agingWorkMap.put(AGING_SBT_ADSL_NINSHO_ID, ninsho_id);		//2012-02-03追加
						// ADSL認証IDはVR識別なしでエイジング管理する
						String agingTgValue = null;
						if (null != ninsho_id)
						{
							agingTgValue = ninsho_id.split("@")[0];
						}
						agingWorkMap.put(AGING_SBT_ADSL_NINSHO_ID, agingTgValue);
						// IT1-2013-0001098 ADSL認証IDにVR識別が付与されていない 2013/04/30 END
					}
					else if (mapKey.equals(MAP_KEY_EKK0361C010))
					{
						// オプションサービス契約<ISP>照査
						wkErrorList = shosaOkMapper.editResultRPEKK0361C010(rslt, param);
						shosaOkMapper.getResultRPEKK0361C010(rslt, agingWorkMap);
//↓↓↓2013-05-05有効化　巻B外接品質強化試験障害対応（仮メールアドレス払出有無を立てる）↓↓↓
						{
							CAANMsg[] templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
							if (!isNull(templates[0].getString(EKK0361C010CBSMsg.MLAD)))
							{
								rsltMap.put(MAP_KEY_EKK0361C010_MLAD, templates[0]);
							}
						}
//↑↑↑2013-05-05有効化　巻B外接品質強化試験障害対応（仮メールアドレス払出有無を立てる）↑↑↑
					}
					else if (mapKey.equals(MAP_KEY_EKK0381C010))
					{
						// オプションサービス契約<TV>照査
						wkErrorList = shosaOkMapper.editResultRPEKK0381C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0371C010))
					{
						// オプションサービス契約<電話>照査
						wkErrorList = shosaOkMapper.editResultRPEKK0371C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0391C010))
					{
						// オプションサービス契約<サポート>照査
						wkErrorList = shosaOkMapper.editResultRPEKK0391C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0411C020))
					{
						// サブオプションサービス契約<ISP>照査
						wkErrorList = shosaOkMapper.editResultRPEKK0411C020(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0421C010))
					{
						// サブオプションサービス契約<TV>照査
						wkErrorList = shosaOkMapper.editResultRPEKK0421C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0431C010))
					{
						// サブオプションサービス契約<電話>照査
						wkErrorList = shosaOkMapper.editResultRPEKK0431C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0341C030))
					{
						// 機器提供サービス契約照査
						wkErrorList = shosaOkMapper.editResultRPEKK0341C030(rslt, param);
					}
//↓↓↓2012-04-23無効　巻@　指示書CC取込み対応↓↓↓
//					else if (mapKey.equals(MAP_KEY_ECK0151D010))
//					{
//						// 指示書登録
//						wkErrorList = shosaOkMapper.editResultRPECK0151D010(rslt, param);
//					}
//↑↑↑2012-04-23無効　巻@　指示書CC取込み対応↑↑↑
					else if (mapKey.equals(MAP_KEY_ECK0011C120))
					{
						// 会員種別変更
						wkErrorList = shosaOkMapper.editResultRPECK0011C120(rslt, param);

						// ▼▼▼▼▼ 2012/12/17 IT1-2012-0002272 DEL START ▼▼▼▼▼
						// ====================================== //
						// ※初期eoIDは、エイジング対象外         //
						// ====================================== //
//						// 2012/08/22 ST2-2012-0001585 MOD START 変更前情報を参照
//						// 会員種別コードが「00：非eo会員」の場合のみeoIDエイジング情報を設定
//						if(memberSbtCdBefore != null && memberSbtCdBefore.equals(MBTYPE_CD_MST_NOT))
//						{
//							// 20120517 ST2-2012-0000865 START
//							CAANMsg[] eck0011c120Templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
//							CAANMsg eck0011c120Template = eck0011c120Templates[0];
//							if (!eck0011c120Template.isNull(ECK0011C120CBSMsg.EOID)) 
//							{
//								agingWorkMap.put(AGING_SBT_EOID, eck0011c120Template.getString(ECK0011C120CBSMsg.EOID));
//							}
//							// 20120517 ST2-2012-0000865 END
//						}
//						// 2012/08/22 ST2-2012-0001585 MOD END
						// ▲▲▲▲▲ 2012/12/17 IT1-2012-0002272 DEL E N D ▲▲▲▲▲

						//↓↓↓2012-09-25追加　ロット２追加案件対応 ANK-0024-05-00↓↓↓
						CAANMsg[] eck0011c120Templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
						CAANMsg eck0011c120Template = eck0011c120Templates[0];
						if (!eck0011c120Template.isNull(ECK0011C120CBSMsg.SHK_EOID)) 
						{
							shk_eoId = eck0011c120Template.getString(ECK0011C120CBSMsg.SHK_EOID);
						}
						//↑↑↑2012-09-25追加　ロット２追加案件対応 ANK-0024-05-00↑↑↑
					}
					// OM-2014-1926対応 20140620 田中 ADD START
					else if (mapKey.equals(MAP_KEY_ECK0021C010))
					{
						// お客様＜個人＞内容変更 
						wkErrorList = shosaOkMapper.editResultRPECK0021C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_ECK0031C010))
					{
						// お客様＜法人＞内容変更 
						wkErrorList = shosaOkMapper.editResultRPECK0031C010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_ECK0201D010))
					{
						// 連絡先登録 
						wkErrorList = shosaOkMapper.editResultRPECK0201D010(rslt, param);
					}
					// OM-2014-1926対応 20140620 田中 ADD END
					// OM-2014-0002974対応 20140914 田中 ADD START
					else if (mapKey.equals(MAP_KEY_ECK0201C010))
					{
						// 連絡先変更 
						wkErrorList = shosaOkMapper.editResultRPECK0201C010(rslt, param);
					}
					// OM-2014-0002974対応 20140914 田中 ADD END
					else if (mapKey.equals(MAP_KEY_ECK0141D010))
					{
						// オプトインメールアドレス 
						wkErrorList = shosaOkMapper.editResultRPECK0141D010(rslt, param);
					}
//↓↓↓2012-04-24無効、巻@断面合わせ↓↓↓
//					else if (mapKey.equals(MAP_KEY_EKK0461C010))
//					{
//						// 割引サービス契約＜一時費用割引＞照査 
//						wkErrorList = shosaOkMapper.editResultRPEKK0461C010(rslt, param);
//					}
//					else if (mapKey.equals(MAP_KEY_EKK0471C020))
//					{
//						// 割引サービス契約＜月額費用割引＞照査
//						wkErrorList = shosaOkMapper.editResultRPEKK0471C020(rslt, param);
//					}
//↑↑↑2012-04-24無効、巻@断面合わせ↑↑↑
//↓↓↓2012-05-02置換、巻@宅内取込み対応（EKKA0020002 ← ETN0011D010）↓↓↓
					else if (mapKey.equals(MAP_KEY_EKKA0020002))
					{
						// 設置場所番号取得
						wkErrorList = shosaOkMapper.editResultRPEKKA0020002(rslt, param);
						errChk(param, rslt, wkErrorList);   // IT1-2012-0000928 2012/08/03 add
						place_no = shosaOkMapper.getResultRPEKKA0020002(rslt, param);
					}
//↑↑↑2012-05-02置換、巻@宅内取込み対応（EKKA0020002 ← ETN0011D010）↑↑↑
					else if (mapKey.equals(MAP_KEY_EKK0251C030))
					{
						// サービス契約回線内訳内容変更
						wkErrorList = shosaOkMapper.editResultRPEKK0251C030(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0341C450))
					{
						// 機器設置先場所反映
						wkErrorList = shosaOkMapper.editResultRPEKK0341C450(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0121C020))
					{
						// サービス契約<eoモバイル>締結
						wkErrorList = shosaOkMapper.editResultRPEKK0121C020(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0201C030))
					{
						// サービス契約内訳<eoモバイル>照査締結
						wkErrorList = shosaOkMapper.editResultRPEKK0201C030(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0361C030))
					{
						// オプションサービス契約<ISP>照査締結
						wkErrorList = shosaOkMapper.editResultRPEKK0361C030(rslt, param);
						shosaOkMapper.getResultRPEKK0361C030(rslt, agingWorkMap);
					}
					else if (mapKey.equals(MAP_KEY_EKK0411C040))
					{
						// サブオプションサービス契約<ISP>照査締結
						wkErrorList = shosaOkMapper.editResultRPEKK0411C040(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0391C030))
					{
						// オプションサービス契約<サポート>照査締結
						wkErrorList = shosaOkMapper.editResultRPEKK0391C030(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0341C050))
					{
						// 機器提供サービス契約照査締結
						wkErrorList = shosaOkMapper.editResultRPEKK0341C050(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_ECK0111D010))
					{
						// グループ登録
						wkErrorList = shosaOkMapper.editResultRPECK0111D010(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0091C020))
					{
						// サービス契約＜eo光ネット＞締結SC
						wkErrorList = JKKSvkeiShosaCncMapper.editResultRPEKK0091C020(rslt, param, KKSV0118_KKSV0118OP.KKSV011889SC);
					}
					else if (mapKey.equals(MAP_KEY_EKK0111C020))
					{
						// サービス契約＜eo光電話＞締結SC
						wkErrorList = JKKSvkeiShosaCncMapper.editResultRPEKK0111C020(rslt, param, KKSV0118_KKSV0118OP.KKSV011890SC);
					}
					else if (mapKey.equals(MAP_KEY_EKK0141C020))
					{
						// サービス契約＜eoADSL＞締結SC
						wkErrorList = JKKSvkeiShosaCncMapper.editResultRPEKK0141C020(rslt, param, KKSV0118_KKSV0118OP.KKSV011891SC);
					}
					else if (mapKey.equals(MAP_KEY_EKK0171C030))
					{
						// サービス契約内訳＜eo光ネット＞照査締結SC
						wkErrorList = JKKSvkeiShosaCncMapper.editResultRPEKK0171C030(rslt, param, KKSV0118_KKSV0118OP.KKSV011892SC);
					}
					else if (mapKey.equals(MAP_KEY_EKK0191C030))
					{
						// サービス契約内訳＜eo光電話＞照査締結SC
						wkErrorList = JKKSvkeiShosaCncMapper.editResultRPEKK0191C030(rslt, param, KKSV0118_KKSV0118OP.KKSV011893SC, i);
					}
					else if (mapKey.equals(MAP_KEY_EKK0221C030))
					{
						// サービス契約内訳＜eoADSL＞照査締結SC
						wkErrorList = JKKSvkeiShosaCncMapper.editResultRPEKK0221C030(rslt, param, KKSV0118_KKSV0118OP.KKSV011894SC);
					}
					else if (mapKey.equals(MAP_KEY_EKK0371C030))
					{
						// オプションサービス契約＜電話＞照査締結
						wkErrorList = JKKSvkeiShosaCncMapper.editResultRPEKK0371C030(rslt, param, KKSV0118_KKSV0118OP.KKSV011897SC);
					}
					else if (mapKey.equals(MAP_KEY_EKK0431C030))
					{
						// サブオプションサービス契約＜電話＞照査締結
						wkErrorList = JKKSvkeiShosaCncMapper.editResultRPEKK0431C030(rslt, param, KKSV0118_KKSV0118OP.KKSV011899SC);
					}
					else if (MAP_KEY_ETU0011D010.equals(mapKey))
					{
						// 番ポ工事登録
						wkErrorList = shosaOkMapper.editResultRPETU0011D010(rslt, param);
					}
// ANK-4494-00-00 STEP2 ADD START
					else if (MAP_KEY_EZM0121C010.equals(mapKey))
					{
						// 電話番号変更
						wkErrorList = shosaOkMapper.editResultRPEZM0121C010(rslt, param);
					}
// ANK-4494-00-00 STEP2 ADD END
					else if (mapKey.equals(MAP_KEY_EKKA0020003))
					{
						// 宅内機器一意照会（４） 
						wkErrorList = shosaOkMapper.editResultRPEKKA0020003(rslt, param);
						errChk(param, rslt, wkErrorList);
					}
					else if (mapKey.equals(MAP_KEY_EKKA0020004))
					{
						// 機器場所番号変更 
						wkErrorList = shosaOkMapper.editResultRPEKKA0020004(rslt, param);
						errChk(param, rslt, wkErrorList);
					}
					else if (mapKey.equals(MAP_KEY_EKK2541C030))
					{
						// 割賦契約照査
						wkErrorList = JKKSvkeiShosaCncMapper.editResultRPEKK2541C030(rslt, param, "KKSV011850SC");
						errChk(param, rslt, wkErrorList);
					}
					else if (mapKey.equals(MAP_KEY_ECK0121C020))
					{
						// 
						wkErrorList = shosaOkMapper.editResultRPECK0121C020(rslt, param);
						errChk(param, rslt, wkErrorList);
					}
					else if (mapKey.equals(MAP_KEY_EKK0441C030))
					{
						// 請求オプションサービス契約照査
						wkErrorList = shosaOkMapper.editResultRPEKK0441C030(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK0441C050))
					{
						// 請求オプションサービス契約照査締結
						wkErrorList = shosaOkMapper.editResultRPEKK0441C050(rslt, param);
					}
					// 20121124 他事業者割引契約対象契約の適用終了処理を追加 ADD START
					else if (mapKey.equals(MAP_KEY_EKK2451C010))
					{
						// 他事業者割引契約対象契約適用終了
						wkErrorList = shosaOkMapper.editResultRP(rslt, param, new EKK2451C010CBSMsg().getContents());
					}
					// 20121124 他事業者割引契約対象契約の適用終了処理を追加 ADD END
					// IT1-2013-0000099 2013/01/25 start
					else if (mapKey.equals(MAP_KEY_EKK0191C060))
					{
						// 請求オプションサービス契約照査
						wkErrorList = shosaOkMapper.editResultRP(rslt, param, new EKK0191C060CBSMsg().getContents());
					}
					// IT1-2013-0000099 2013/01/25 end
					// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 START
					else if (mapKey.equals(MAP_KEY_EKK2451D010))
					{
						// 他事業者割引契約対象契約登録
						wkErrorList = shosaOkMapper.editResultRP(rslt, param, new EKK2451D010CBSMsg().getContents());
					}
					// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 END

					// AMK-1578-00-00 ADD START
					else if (mapKey.equals(MAP_KEY_EKK2811C030))
					{
						// 機器オプションサービス契約照査
						wkErrorList = shosaOkMapper.editResultRPEKK2811C030(rslt, param);
					}
					else if (mapKey.equals(MAP_KEY_EKK2811C050))
					{
						// 機器オプションサービス契約照査締結
						wkErrorList = shosaOkMapper.editResultRPEKK2811C050(rslt, param);
					}
					// AMK-1578-00-00 ADD END
					// ANK-3296-00-00 ADD START
					else if (mapKey.equals(MAP_KEY_EKK3131C030))
					{
						// 工事費割賦契約照査
						wkErrorList = shosaOkMapper.editResultRPEKK3131C030(rslt, param);
						kojihi_kapu_flg = true;
					}
					// AMK-3296-00-00 ADD END
// ▽▽▽ ANK-3412-00-00 ADD START
					else if (mapKey.equals(MAP_KEY_EKK0341C530))
					{
						// 機器契約変更
						wkErrorList = shosaOkMapper.editResultRPEKK0341C530(rslt, param);
						CAANMsg[] ekk0341c530Templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
						CAANMsg ekk0341c530Template = ekk0341c530Templates[0];
						if (!ekk0341c530Template.isNull(EKK0341C530CBSMsg.GENE_ADD_DTM)) 
						{
							// 登録された世代登録年月日を設定する
							wkMap.put(EKK0341C530CBSMsg.GENE_ADD_DTM, ekk0341c530Template.getString(EKK0341C530CBSMsg.GENE_ADD_DTM));
						}						
					}
					else if (mapKey.equals(MAP_KEY_EKK0341C231))
					{
						// 機器契約変更
						wkErrorList = shosaOkMapper.editResultRPEKK0341C231(rslt, param);
					}
// ▲▲▲ ANK-3412-00-00 ADD END
					
					errorList.addAll(wkErrorList);
				}
			}
		}

		return errorList;
	}

	/**
	 * 照査OK時の共通の実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltMap 照査実行時に使用するマップのリスト
	 * @param canCncSvcKei 締結OKフラグ（eo光ネット／eo光電話／eoADSL）
	 * @param idoDiv 異動区分
	 * @return エラー情報
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> runShosaOkCmn(SessionHandle handle, IRequestParameterReadWrite param,
			HashMap<String, Object> rsltMap, int svcSbtCd, boolean canCncSvcKei, String idoDiv) throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		ArrayList<Object> wkErrorList = null;
		
	// IT12-2012-0001677 2012-11-14 ADD_START
		// モバイルまたは、締結済まで進められる
		boolean weCanDoShosaAndCnc = (svcSbtCd == SVC_SBT_CD_MOBA || canCncSvcKei);
	// IT12-2012-0001677 2012-11-14 ADD_END
		//↓↓↓2012-12-10追加　ロット２ST2-2012-0001328（締結済まで進めない）↓↓↓
		weCanDoShosaAndCnc = canCncSvcKei;
		//↑↑↑2012-12-10追加　ロット２ST2-2012-0001328（締結済まで進めない）↑↑↑
		
		// 申込明細照査・後続業務依頼
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0021C060);
		errorList.addAll(wkErrorList);

	// IT12-2012-0001677 2012-11-14 EDIT_START
		// if (svcSbtCd == SVC_SBT_CD_MOBA)
		// モバイル、または締結済に進められる契約の場合は照査締結を実施
		if (weCanDoShosaAndCnc)
	// IT12-2012-0001677 2012-11-14 EDIT_END
		{
			// オプションサービス契約<サポート>照査締結
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0391C030);
			errorList.addAll(wkErrorList);

			// 機器提供サービス契約照査締結
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0341C050);
			errorList.addAll(wkErrorList);
			
			// 20140416 ANK-2054-00-00 ADD START
			// 機器オプションサービス契約照査締結
			// 20140416時点では、締結済まで状態遷移する仕様はない
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK2811C050);
			errorList.addAll(wkErrorList);
			// 20140416 ANK-2054-00-00 ADD END
		}

		// 上記以外は照査を実施
		else
		{
			// オプションサービス契約<サポート>照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0391C010);
			errorList.addAll(wkErrorList);

//↓↓↓2012-12-10削除　ロット２ST2-2012-0001328（入力マップ編集実装と合っていないので無効化）↓↓↓
//			//2012-01-27追加↓↓↓
//			if (canCncSvcKei)
//			{
//				// 機器提供サービス契約照査締結
//				wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0341C050);
//				errorList.addAll(wkErrorList);
//			}
//			else
//			//2012-01-27追加↑↑↑
//↑↑↑2012-12-10削除　ロット２ST2-2012-0001328（入力マップ編集実装と合っていないので無効化）↑↑↑
			{
				// 機器提供サービス契約照査
				wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0341C030);
				errorList.addAll(wkErrorList);
				
				// 20140416 ANK-2054-00-00 ADD START
				// 機器オプションサービス契約照査
				wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK2811C030);
				errorList.addAll(wkErrorList);
				// 20140416 ANK-2054-00-00 ADD END
			}
		}

		//20130215 IT2-2013-0000177 DEL START
		// 20120406 住所変更対応 START
//		if (!IDO_DIV_AD_CHG_ADD.equals(idoDiv))
//		{
			// 住所変更・登録以外の場合
			// 20120406 住所変更対応 END
			// 20130215 IT2-2013-0000177 DEL END
			
			//↓↓↓2012-05-02置換、巻@宅内取込み対応（EKKA0020002 ← ETN0011D010）↓↓↓
			// 設置場所番号取得（場所登録）
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKKA0020002);
			//↑↑↑2012-05-02置換、巻@宅内取込み対応（EKKA0020002 ← ETN0011D010）↑↑↑
			errorList.addAll(wkErrorList);
//		}
		
		//2012-02-03追加↓↓↓
		//エイジング登録
		wkErrorList = runRegistAging(handle, param);
		errorList.addAll(wkErrorList);
		//2012-02-03追加↑↑↑
		
		return errorList;
	}
	

	// ANK0546-00-00 2012-07-31 ADD_START
	
	/**
	 * 機器提供サービス契約情報更新の実行処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltMap 照査実行時に使用するマップのリスト
	 * 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> runHaisojkCd(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> rsltMap) 
	throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		ArrayList<Object> wkErrorList = null;
		
		// 機器提供サービス契約情報変更
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0341C230);
		errorList.addAll(wkErrorList);
		
		return errorList;

	}
	// ANK0546-00-00 2012-07-31 ADD_END
	
	/**
	 * 場所場号登録の共通の実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltMap 照査実行時に使用するマップのリスト
	 * @return エラー情報
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> runUpdPlaceNo(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> rsltMap) 
	throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		ArrayList<Object> wkErrorList = null;

		// サービス契約回線内訳内容変更
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0251C030);
		errorList.addAll(wkErrorList);
		
		// 機器設置先場所反映
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0341C450);
		errorList.addAll(wkErrorList);

		return errorList;
	}

	/**
	 * 照査OK時のeo光ネットの実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltMap 照査実行時に使用するマップのリスト
	 * @param canCncSvcKei 
	 * @return エラー情報
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> runShosaOkHNet(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> rsltMap, 
			boolean canCncSvcKei, HashMap<String, Object> rsltShokai) 
	throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		ArrayList<Object> wkErrorList = null;

		// サービス契約＜eo光ネット＞照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0091C010);
		errorList.addAll(wkErrorList);

		//締結済まで進める場合、照査S-IFは実行せず照査締結S-IFを実行するため、以下の切替を行う
		if (!canCncSvcKei)			//2012-01-27
		{
			// サービス契約内訳<eo光ネット>照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0171C010);
			errorList.addAll(wkErrorList);
			
			// オプションサービス契約<ISP>照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0361C010);
			errorList.addAll(wkErrorList);
			
			// サブオプションサービス契約<ISP>照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0411C020);
			errorList.addAll(wkErrorList);
			
			// AMK-1578-00-00 ADD START
			// 機器オプションサービス契約照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK2811C030);
			errorList.addAll(wkErrorList);
			// AMK-1578-00-00 ADD END
			
			// ANK-3296-00-00
			// 工事費割賦契約照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK3131C030);
			errorList.addAll(wkErrorList);
			// ANK-3296-00-00
		}
		//2012-01-27 IT1-589 対応↓↓↓
		else
		//照査および締結まで行う
		{
			//サービス契約＜eo光ネット＞締結SC
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0091C020);
			errorList.addAll(wkErrorList);

			//サービス契約内訳＜eo光ネット＞照査締結SC
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0171C030);
			errorList.addAll(wkErrorList);

			//オプションサービス契約＜ISP＞照査締結SC
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0361C030);
			errorList.addAll(wkErrorList);

			//サブオプションサービス契約＜ISP＞照査締結SC
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0411C040);
			errorList.addAll(wkErrorList);
			
			// AMK-1578-00-00 ADD START
			// 機器オプションサービス契約照査締結SC
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK2811C050);
			errorList.addAll(wkErrorList);
			// AMK-1578-00-00 ADD END
		}
		//2012-01-27 IT1-589 対応↑↑↑

		// ANK-0342-00-00 2012/07/24 start
		//宅内機器サービス契約番号更新CCを呼ぶ
		ArrayList<HashMap> workEKK0091A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0091A010);
		CAANMsg[] wkTenplates = getWorkData(EKK0091A010CBSMsg.EKK0091A010CBSMSG1LIST, (Map)workEKK0091A010Array.get(0));
		CAANMsg childTemplate = wkTenplates[0];
		HashMap inMap = new HashMap();
		inMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SVC_KEI_NO, childTemplate.getString(EKK0091A010CBSMsg1List.SVC_KEI_NO));
		inMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SYORI_KBN, JKKTkkkSvKeiNoUpdCC.SYORI_KBN_1);
		param.setData("JKKTkkkSvKeiNoUpdCC", inMap);
		JKKTkkkSvKeiNoUpdCC jKKTkkkSvKeiNoUpdCC = new JKKTkkkSvKeiNoUpdCC();
		jKKTkkkSvKeiNoUpdCC.updTkkkSvKeiNo(handle, param, "JKKTkkkSvKeiNoUpdCC");
		// ANK-0342-00-00 2012/07/24 end
		
		
		// 割賦契約照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK2541C030);
		errorList.addAll(wkErrorList);
		
		
		
		return errorList;
	}

	/**
	 * 照査OK時のeo光Tvの実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltMap 照査実行時に使用するマップのリスト
	 * @return エラー情報
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> runShosaOkHTv(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> rsltMap) 
	throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		ArrayList<Object> wkErrorList = null;

		// サービス契約＜eo光tv＞照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0101C010);
		errorList.addAll(wkErrorList);

		// サービス契約内訳<eo光TV>照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0181C010);
		errorList.addAll(wkErrorList);

		// オプションサービス契約<Tv>照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0381C010);
		errorList.addAll(wkErrorList);

		// サブオプションサービス契約<Tv>照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0421C010);
		errorList.addAll(wkErrorList);

		return errorList;
	}

	/**
	 * 照査OK時のeo光電話の実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltMap 照査実行時に使用するマップのリスト
	 * @param canCncSvcKei 
	 * @param rsltShokai 各種照会結果を格納したマップ
	 * @return エラー情報
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	// OM-2016-0001720 2017/01/31 引数追加 MOD START
//	private ArrayList<Object> runShosaOkHTel(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> rsltMap, boolean canCncSvcKei) 
	private ArrayList<Object> runShosaOkHTel(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> rsltMap, boolean canCncSvcKei, HashMap<String, Object> rsltShokai) 
	// OM-2016-0001720 2017/01/31 引数追加 MOD END
	throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		ArrayList<Object> wkErrorList = null;

		// サービス契約＜EO光電話＞照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0111C010);
		errorList.addAll(wkErrorList);

		if (!canCncSvcKei)			//2012-01-27
		{
			// サービス契約内訳<eo光電話>照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0191C010);
			errorList.addAll(wkErrorList);
	
			// オプションサービス契約<電話>照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0371C010);
			errorList.addAll(wkErrorList);
	
			// サブオプションサービス契約<電話>照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0431C010);
			errorList.addAll(wkErrorList);
			
			// AMK-1578-00-00 ADD START			
			// 機器オプションサービス契約照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK2811C030);
			errorList.addAll(wkErrorList);
			// AMK-1578-00-00 ADD END
			
			// ANK-3296-00-00
			// 工事費割賦契約照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK3131C030);
			errorList.addAll(wkErrorList);
			// ANK-3296-00-00
		}
		//2012-01-27 IT1-589 対応↓↓↓
		else
		//照査および締結まで行う
		{
			//サービス契約＜eo光電話＞締結SC
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0111C020);
			errorList.addAll(wkErrorList);

			// サービス契約内訳<eo光電話>照査締結
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0191C030);
			errorList.addAll(wkErrorList);
	
			// オプションサービス契約<電話>照査締結
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0371C030);
			errorList.addAll(wkErrorList);
	
			// サブオプションサービス契約<電話>照査締結
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0431C030);
			errorList.addAll(wkErrorList);
			
			// AMK-1578-00-00 ADD START
			// 機器オプションサービス契約照査締結SC
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK2811C050);
			errorList.addAll(wkErrorList);
			// AMK-1578-00-00 ADD END
		}
		//2012-01-27 IT1-589 対応↑↑↑

		//↓↓↓2012-05-03追加　巻@　電話手続きの取込み↓↓↓
		//番ポ工事登録
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_ETU0011D010);
		errorList.addAll(wkErrorList);
		//↑↑↑2012-05-03追加　巻@　電話手続きの取込み↑↑↑
		
// ANK-4494-00-00 STEP2 ADD START
		//電話番号更新
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EZM0121C010);
		errorList.addAll(wkErrorList);
// ANK-4494-00-00 STEP2 ADD END

		// OM-2016-0001720 2017/01/31 ADD START
		//宅内機器サービス契約番号更新CCを呼び出す
		ArrayList<HashMap> workEKK0111A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0111A010);
		CAANMsg[] wkTenplates = getWorkData(EKK0111A010CBSMsg.EKK0111A010CBSMSG1LIST, (Map)workEKK0111A010Array.get(0));
		CAANMsg childTemplate = wkTenplates[0];
		HashMap inMap = new HashMap();
		inMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SVC_KEI_NO, childTemplate.getString(EKK0111A010CBSMsg1List.SVC_KEI_NO));
		inMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SYORI_KBN, JKKTkkkSvKeiNoUpdCC.SYORI_KBN_3);
		param.setData("JKKTkkkSvKeiNoUpdCC", inMap);
		JKKTkkkSvKeiNoUpdCC jKKTkkkSvKeiNoUpdCC = new JKKTkkkSvKeiNoUpdCC();
		jKKTkkkSvKeiNoUpdCC.updTkkkSvKeiNo(handle, param, "JKKTkkkSvKeiNoUpdCC");
		// OM-2016-0001720 2017/01/31 ADD END

		return errorList;
	}

	/**
	 * 照査OK時のeoモバイルの実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltMap 照査実行時に使用するマップのリスト
	 * @return エラー情報
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> runShosaOkMoba(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> rsltMap) 
	throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		ArrayList<Object> wkErrorList = null;

		// サービス契約＜EOモバイル＞照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0121C010);
		errorList.addAll(wkErrorList);

//↓↓↓2012-12-10変更　ロット２ST2-2012-0001328（締結済まで進めない）↓↓↓
//		// サービス契約＜EOモバイル＞締結
//		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0121C020);
//		errorList.addAll(wkErrorList);
//
//		// サービス契約内訳<eoモバイル>照査締結
//		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0201C030);
//		errorList.addAll(wkErrorList);
//
//		// オプションサービス契約<ISP>照査締結
//		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0361C030);
//		errorList.addAll(wkErrorList);
//
//		// サブオプションサービス契約<ISP>照査締結
//		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0411C040);
//		errorList.addAll(wkErrorList);
/** ***************************************************************************************************** */
		// サービス契約内訳<eoモバイル>照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0201C010);
		errorList.addAll(wkErrorList);

		// オプションサービス契約<ISP>照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0361C010);
		errorList.addAll(wkErrorList);

		// サブオプションサービス契約<ISP>照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0411C020);
		errorList.addAll(wkErrorList);
//↑↑↑2012-12-10変更　ロット２ST2-2012-0001328（締結済まで進めない）↑↑↑
		
		return errorList;
	}

	/**
	 * 照査OK時のeoADSLの実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltMap 照査実行時に使用するマップのリスト
	 * @param canCncSvcKei 
	 * @return エラー情報
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> runShosaOkAdsl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> rsltMap, boolean canCncSvcKei) 
	throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		ArrayList<Object> wkErrorList = null;

		// サービス契約＜ADSL＞照査
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0141C010);
		errorList.addAll(wkErrorList);

		if (!canCncSvcKei)			//2012-01-27
		{
			// サービス契約内訳<eoADSL>照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0221C010);
			errorList.addAll(wkErrorList);
	
			// オプションサービス契約<ISP>照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0361C010);
			errorList.addAll(wkErrorList);
	
			// サブオプションサービス契約<ISP>照査
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0411C020);
			errorList.addAll(wkErrorList);
		}
		//2012-01-27 IT1-589 対応↓↓↓
		else
		//照査および締結まで行う
		{
			//サービス契約＜eoADSL＞締結SC
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0141C020);
			errorList.addAll(wkErrorList);

			//サービス契約内訳＜eoADSL＞照査締結SC
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0221C030);
			errorList.addAll(wkErrorList);

			// オプションサービス契約<ISP>照査締結
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0361C030);
			errorList.addAll(wkErrorList);

			// サブオプションサービス契約<ISP>照査締結
			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0411C040);
			errorList.addAll(wkErrorList);
		}
		//2012-01-27 IT1-589 対応↑↑↑

		return errorList;
	}
	
//↓↓↓2012-04-23無効　巻@　指示書CC取込み対応↓↓↓
//	/**
//	 * 照査OK時のeo光電話の実行処理です。
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param rsltMap 照査実行時に使用するマップのリスト
//	 * @param mapkey マップキー
//	 * @return エラー情報
//	 * @throws Throwable 
//	 */
//	@SuppressWarnings("unchecked")
//	private ArrayList<Object> runWrib(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> rsltMap,
//			String mapkey) 
//	throws Throwable
//	{
//		ArrayList<Object> errorList = new ArrayList();
//		ArrayList<Object> wkErrorList = null;
//		
//		if(mapkey.equals(MAP_KEY_EKK0461C010))
//		{
//			// 割引サービス契約＜一時費用割引＞
//			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0461C010);
//			errorList.addAll(wkErrorList);
//		}
//		
//		if(mapkey.equals(MAP_KEY_EKK0471C020))
//		{
//			// 割引サービス契約＜月額費用割引＞
//			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0471C020);
//			errorList.addAll(wkErrorList);
//		}
//
//		return errorList;
//	}
//	
//	/**
//	 * 指示書登録の実行処理です。
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param rsltMap 照査実行時に使用するマップのリスト
//	 * @param mapKey サービスインターフェイスID
//	 * @return エラー情報
//	 * @throws Throwable 
//	 */
//	@SuppressWarnings("unchecked")
//	private ArrayList<Object> runSjisho(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> rsltMap,
//			String mapKey) 
//	throws Throwable
//	{
//		
//		ArrayList<Object> errorList = new ArrayList();
//		ArrayList<Object> wkErrorList = null;
//
//		if (mapKey.equals(MAP_KEY_ECK0151D010))
//		{
//			// 指示書登録
//			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_ECK0151D010);
//		}
//		else if (mapKey.equals(MAP_KEY_ECK0011C120))
//		{
//			// 会員種別登録
//			wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_ECK0011C120);
//		}
//		
//		errorList.addAll(wkErrorList);
//		
//		return errorList;
//	}
//↑↑↑2012-04-23無効　巻@　指示書CC取込み対応↑↑↑
	
	//20111126 sakurai ADD Start↓
	/**
	 * 一意照会、一覧照会のマッピング処理です。（0回目）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokai0(IRequestParameterReadOnly param, 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 = shokaiMapper.editInMsgECK0011A010(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_ECK0011A010, wkMapArray);
		
		// 申込明細一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0021A010(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0021A010, wkMapArray);
		
		// サービス契約一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0081A010(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0081A010, wkMapArray);
		
		// サービス契約内訳一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0161B004(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0161B004, wkMapArray);
		
		// ANK-1306-00-00 2013/01/28 DEL START
//		// 2012/08/22 ST2-2012-0001574 ADD START
//		// 一時金設定一覧照会(サービス契約番号指定)
//		wkMapArray = new ArrayList();
//		wkCaanMsgList = shokaiMapper.editInMsgEKK1021B501(param, userDataIndex);
//		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
//		wkMapArray.add(rslt);
//		rsltShokaiMap.put(MAP_KEY_EKK1021B501, wkMapArray);
//		// 2012/08/22 ST2-2012-0001574 ADD END
		// ANK-1306-00-00 2013/01/28 DEL END
		
		// ANK-1306-00-00 2013/01/28 ADD START
		// 一時金設定一覧照会(申込明細番号)
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK1021B003(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK1021B003, wkMapArray);
		// ANK-1306-00-00 2013/01/28 ADD END
		
		return rsltShokaiMap;
	}
	//20111126 sakurai ADD End↑
	
	/**
	 * 一意照会、一覧照会のマッピング処理です。（1回目）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokai(IRequestParameterReadOnly param, 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;

		//20111126 sakurai ADD Start↓
		String svcCd = null;
		
		CAANMsg[] workEKK0081A010 = null;	// サービス契約一意照会
		CAANMsg[] workEKK0161B004 = null;	// サービス契約内訳一覧照会

		workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
		workEKK0161B004 = getWorkParentData(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0161B004);
		
		//料金コースの取得
		svcCd = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_CD);
		
		// オプションサービス契約一覧照会
		wkMapArray = new ArrayList();
		
		//電話オプションの場合は別のS-IFを呼ぶ
		if(!svcCd.equals(SVC_CD_TEL))
		{
			wkCaanMsgList = shokaiMapper.editInMsgEKK0351B002(param, userDataIndex);
			rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
			wkMapArray.add(rslt);
		}
		else
		{
			if (workEKK0161B004 != null)
			{
				for (int i = 0; i < workEKK0161B004.length; i++)
				{
					CAANMsg childTemplate = workEKK0161B004[i];
					
					if(isChkStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
					{
						wkCaanMsgList = shokaiMapper.editInMsgEKK0351B001(param, userDataIndex, childTemplate);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		
		//後続の処理を考慮しキーは「MAP_KEY_EKK0351B002」に統一する
		rsltShokaiMap.put(MAP_KEY_EKK0351B002, wkMapArray);
		//20111126 sakurai ADD End↑
		
		// サービス対象機器提供サービス契約一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0341B022(param, userDataIndex, KKTK_SVC_KEI_STAT_010);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0341B022, wkMapArray);
		
		// 連絡先一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgECK0201B001(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_ECK0201B001, wkMapArray);
		
		// お客様＜個人＞一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgECK0021A010(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_ECK0021A010, wkMapArray);
		
		// お客様＜法人＞一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgECK0031A010(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_ECK0031A010, wkMapArray);
		
		// サービス契約回線内訳一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0251B003(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0251B003, wkMapArray);
		
		// AMK-1578-00-00 ADD START
		// 機器オプションサービス契約一覧照会（回線経由）
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK2811B011(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK2811B011, wkMapArray);
		// AMK-1578-00-00 ADD END
		
		// 課金先一覧照会（請求契約番号／サービス契約番号）		2011-12-19、工事案件CCに請求契約番号を渡すため有効
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0321B002(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0321B002, wkMapArray);
		
		// 割引サービス契約一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0451B001(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0451B001, wkMapArray);

		// オプトインメール一覧照会
		// 2012/07/07 IT2-2012-0000990 MOD START コメント化解除
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgECK0141B002(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_ECK0141B002, wkMapArray);
		// 2012/07/07 IT2-2012-0000990 MOD END
		//↓↓↓2012-02-16追加↓↓↓	ST2-2012-0000185対応
		// 進捗一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK1091B001(param, userDataIndex);
		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();
		wkCaanMsgList = shokaiMapper.editInMsgEKK2541B004(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK2541B004, wkMapArray);
// ANK0546-00-00 2012-09-24 ADD_END
		
		//↓↓↓2012-09-24追加　ロット２ ANK-0024-05-00↓↓↓
		// お客様グループ設定一覧照会(PMP連携用)
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgECK0121B020(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_ECK0121B020, wkMapArray);
		//↑↑↑2012-09-24追加　ロット２ ANK-0024-05-00↑↑↑
		
		// 20130211 ST2-2013-0000652 ADD START
		// ファミリー会員グループ一覧照会（SYSID）
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgECK0111B002(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_ECK0111B002, wkMapArray);		
		// 20130211 ST2-2013-0000652 ADD END
		
		return rsltShokaiMap;
	}

	/**
	 * 一意照会、一覧照会のマッピング処理です。（2回目）
	 * 一意照会、一覧照会（1回目）の実行結果から他の一意照会、一覧照会を実施する際のマッピング処理です。
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokai2(IRequestParameterReadOnly param, 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;
		//20111126 Sakurai ADD Start↓
		String svcCd = null;
		
		CAANMsg[] workEKK0021A010 = null;	// 申込明細一意照会
		CAANMsg[] workEKK0451B001 = null;	// 割引サービス契約一覧照会
//		CAANMsg[] workEKK0251B003 = null;	// サービス契約回線内訳一覧照会
		CAANMsg[] workEKK0081A010 = null;	// サービス契約一意照会
		ArrayList<HashMap> workEKK0351B002Array = null; // オプションサービス契約一覧照会(サービス)
		
		workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
		
		//サービスコードの取得
		svcCd = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_CD);

		// 一意照会、一覧照会の結果データを取得
		workEKK0021A010 = getWorkParentData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0021A010);
		workEKK0351B002Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0351B002);
		workEKK0451B001 = getWorkParentData(EKK0451B001CBSMsg.EKK0451B001CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0451B001);
//		workEKK0251B003 = getWorkParentData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0251B003);
		//20111126 Sakurai ADD End↑
		// AMK-1578-00-00 ADD START
		CAANMsg[] workEKK2811B011 = null; // 機器オプションサービス契約一覧照会（回線経由）
		workEKK2811B011 = getWorkParentData(EKK2811B011CBSMsg.EKK2811B011CBSMSG1LIST, rsltShokai, MAP_KEY_EKK2811B011);
		// AMK-1578-00-00 ADD END
		
		// 申込一意照会
		wkMapArray = new ArrayList();
		if (workEKK0021A010 != null)
		{
			for (int i = 0; i < workEKK0021A010.length; i++)
			{
				CAANMsg childTemplate = workEKK0021A010[i];
				wkCaanMsgList = shokaiMapper.editInMsgEKK0011A010(param, childTemplate);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0011A010, wkMapArray);
		
		// オプションサービス契約<ISP>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0351B002Array != null) 
		{
			for (int i = 0; i < workEKK0351B002Array.size(); i++)
			{
				CAANMsg[] workEKK0351B002 = null;
				
				if(!svcCd.equals(SVC_CD_TEL))
				{
					workEKK0351B002 = getWorkData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, (Map)workEKK0351B002Array.get(i));
				}
				else
				{
					workEKK0351B002 = getWorkData(EKK0351B001CBSMsg.EKK0351B001CBSMSG1LIST, (Map)workEKK0351B002Array.get(i));
				}
				
				for (int j = 0; j < workEKK0351B002.length; j++)
				{
					CAANMsg childTemplate = workEKK0351B002[j];
					
					if(isChkStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
					{
						wkCaanMsgList = shokaiMapper.editInMsgEKK0361A010(param, childTemplate);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0361A010, wkMapArray);
		
		// オプションサービス契約<サポート>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0351B002Array != null) 
		{
			for (int i = 0; i < workEKK0351B002Array.size(); i++)
			{
				CAANMsg[] workEKK0351B002 = null;
				
				if(!svcCd.equals(SVC_CD_TEL))
				{
					workEKK0351B002 = getWorkData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, (Map)workEKK0351B002Array.get(i));
				}
				else
				{
					workEKK0351B002 = getWorkData(EKK0351B001CBSMsg.EKK0351B001CBSMSG1LIST, (Map)workEKK0351B002Array.get(i));
				}
				
				for (int j = 0; j < workEKK0351B002.length; j++)
				{
					CAANMsg childTemplate = workEKK0351B002[j];
					
					if(isChkStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
					{
						wkCaanMsgList = shokaiMapper.editInMsgEKK0391A010(param, childTemplate);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0391A010, wkMapArray);
		
		// サブオプションサービス契約一覧照会
		wkMapArray = new ArrayList();
		if (workEKK0351B002Array != null) 
		{
			for (int i = 0; i < workEKK0351B002Array.size(); i++)
			{
				CAANMsg[] workEKK0351B002 = null;
				
				if(!svcCd.equals(SVC_CD_TEL))
				{
					workEKK0351B002 = getWorkData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, (Map)workEKK0351B002Array.get(i));
				}
				else
				{
					workEKK0351B002 = getWorkData(EKK0351B001CBSMsg.EKK0351B001CBSMSG1LIST, (Map)workEKK0351B002Array.get(i));
				}
				
				for (int j = 0; j < workEKK0351B002.length; j++)
				{
					CAANMsg childTemplate = workEKK0351B002[j];
					
					if(isChkStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
					{
						wkCaanMsgList = shokaiMapper.editInMsgEKK0401B001(param, 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(isChkStat(childTemplate.getString(EKK0451B001CBSMsg1List.WRIB_SVC_KEI_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0451A010(param, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0451A010, wkMapArray);
		
//↓↓↓2012-06-09廃止、EKK0251B003 ← EKK0241B001、IT1-2012-0000734対応↓↓↓
//		// サービス契約回線内訳一意照会
//		wkMapArray = new ArrayList();
//		for (int i = 0; workEKK0251B003 != null && i < workEKK0251B003.length; i++)
//		{
//			CAANMsg childTemplate = workEKK0251B003[i];
//			
//			if(!EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_STAT.equals(KKTK_SVC_KEI_STAT_920))
//			{
//				wkCaanMsgList = shokaiMapper.editInMsgEKK0251A010(param, childTemplate);
//				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
//				wkMapArray.add(rslt);
//			}
//		}
//		rsltShokaiMap.put(MAP_KEY_EKK0251A010, wkMapArray);
//↑↑↑2012-06-10廃止、EKK0251B003 ← EKK0241B001、IT1-2012-0000734対応↑↑↑

		// ST1-2012-0000139 2012/07/14 start
		// 法人の場合　法人連絡先一意照会
		CAANMsg[] workECK0011A010 = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0011A010);
		if(workECK0011A010 != null){
			CAANMsg childTemplate = workECK0011A010[0];
			// お客様スキーマの照会結果から契約者タイプコードを取得
			String keisyaTypeCd =  childTemplate.getString(ECK0011A010CBSMsg1List.KEISHA_TYPE_CD);
			if(KSH_TYPE_CO_HOJIN.equals(keisyaTypeCd)){
				wkMapArray = new ArrayList();
				wkCaanMsgList = shokaiMapper.editInMsgECK0041A010(param, userDataIndex);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
				rsltShokaiMap.put(MAP_KEY_ECK0041A010, wkMapArray);
			}
		}
		// ST1-2012-0000139 2012/07/14 end
		
		// AMK-1578-00-00 ADD START
		// 機器オプションサービス契約一覧照会（回線経由）
		wkMapArray = new ArrayList();
		if (workEKK2811B011 != null) {
			for (int i = 0; i < workEKK2811B011.length; i++) {
				CAANMsg childTemplate = workEKK2811B011[i];
				
				wkCaanMsgList = shokaiMapper.editInMsgEKK2811A010(
						param, childTemplate);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK2811A010, wkMapArray);
		// AMK-1578-00-00 ADD END
		
		return rsltShokaiMap;
	}
	
	/**
	 * 一意照会、一覧照会のマッピング処理です。（eo光ネット個別分）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiHNet(IRequestParameterReadOnly param, 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;	// オプションサービス契約一覧照会
// ANK0546-00-00 2012-09-24 ADD_START
		CAANMsg[] workEKK2541B004 = null;	// 割賦契約一覧照会(サービス契約番号)
// ANK0546-00-00 2012-09-24 ADD_END
		
		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);
// ANK0546-00-00 2012-09-24 ADD_START
		workEKK2541B004 = getWorkParentData(EKK2541B004CBSMsg.EKK2541B004CBSMSG1LIST, rsltShokai, MAP_KEY_EKK2541B004);
// ANK0546-00-00 2012-09-24 ADD_END
// ANK0406-00-00 2012-08-27 ADD_START
		CAANMsg[] workEKK0251B003 = null;
		workEKK0251B003 = getWorkParentData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0251B003);
// ANK0406-00-00 2012-08-27 ADD_END
		// AMK-1578-00-00 ADD START
		CAANMsg[] workEKK2811B011 = null; // 機器オプションサービス契約一覧照会（回線経由）
		workEKK2811B011 = getWorkParentData(EKK2811B011CBSMsg.EKK2811B011CBSMSG1LIST, rsltShokai, MAP_KEY_EKK2811B011);
		// AMK-1578-00-00 ADD END
		
		// サービス契約<eo光ネット>一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0091A010(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0091A010, wkMapArray);
		
		// サービス契約内訳<eo光ネット>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0161B004 != null) 
		{
			for (int i = 0; i < workEKK0161B004.length; i++)
			{
				CAANMsg childTemplate = workEKK0161B004[i];
				
				if(isChkStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0171A010(param, 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(isChkStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0361A010(param, 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; null != workEKK0401B001 && j < workEKK0401B001.length; j++)
				{
					CAANMsg childTemplate = workEKK0401B001[j];
					
					if(isChkStat(childTemplate.getString(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT)))
					{
						wkCaanMsgList = shokaiMapper.editInMsgEKK0411A010(param, childTemplate);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0411A010, wkMapArray);
		
// 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 = shokaiMapper.editInMsgEKK2541A010(param, 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
// ANK0406-00-00 2012-08-27 ADD_START
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK2441B002(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK2441B002, wkMapArray);
		
		
		wkMapArray = new ArrayList();
		if (workEKK0251B003 != null)
		{
			for (int i = 0; i < workEKK0251B003.length; i++)
			{
				CAANMsg childTemplate = workEKK0251B003[i];
				
				wkCaanMsgList = shokaiMapper.editInMsgEKK2441B001(param, childTemplate.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO), userDataIndex);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK2441B001, wkMapArray);
		
		// AMK-1578-00-00 ADD START
		// 機器オプションサービス契約一覧照会（回線経由）
		wkMapArray = new ArrayList();
		if (workEKK2811B011 != null) {
			for (int i = 0; i < workEKK2811B011.length; i++) {
				CAANMsg childTemplate = workEKK2811B011[i];
				
				wkCaanMsgList = shokaiMapper.editInMsgEKK2811A010(
						param, childTemplate);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK2811A010, wkMapArray);
		// AMK-1578-00-00 ADD END
		// ANK-3834-00-00 ADD START
		// 業務パラメータ管理一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEZM0321B010(param);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EZM0321B010, wkMapArray);
		// ANK-3834-00-00 ADD END
		// ANK-4075-00-00 ADD START
		// 業務パラメータ管理一覧照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEZM0321B010_02(param);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EZM0321B010_02, wkMapArray);
		// ANK-4075-00-00 ADD END

// ANK0406-00-00 2012-08-27 ADD_END
		return rsltShokaiMap;
	}

	/**
	 * 一意照会、一覧照会のマッピング処理です。（eo光Tv個別分）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex 既に実施された一意照会、一覧照会の実行結果
	 * @param rsltShokai param内の業務データのインデックス
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiHTv(IRequestParameterReadOnly param, 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 = shokaiMapper.editInMsgEKK0101A010(param, 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(isChkStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0181A010(param, 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(isChkStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0381A010(param, 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; null != workEKK0401B001 && j < workEKK0401B001.length; j++)
				{
					CAANMsg childTemplate = workEKK0401B001[j];

					if(isChkStat(childTemplate.getString(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT)))
					{
						wkCaanMsgList = shokaiMapper.editInMsgEKK0421A010(param, childTemplate);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0421A010, wkMapArray);

		return rsltShokaiMap;
	}

	/**
	 * 一意照会、一覧照会のマッピング処理です。（eo光電話個別分）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiHTel(IRequestParameterReadOnly param, 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;	// サービス契約内訳一覧照会
		ArrayList<HashMap> workEKK0351B001Array = null; // オプションサービス契約一覧照会（サービス契約内訳番号）
		ArrayList<HashMap> workEKK0401B001Array = null; // サブオプションサービス契約一覧照会

		// 一意照会、一覧照会の結果データを取得
		workEKK0161B004 = getWorkParentData(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0161B004);
		workEKK0351B001Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0351B002);
		workEKK0401B001Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0401B001);

// ANK0406-00-00 2012-08-27 ADD_START
		CAANMsg[] workEKK0251B003 = null;
		workEKK0251B003 = getWorkParentData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0251B003);
// ANK0406-00-00 2012-08-27 ADD_END
		// AMK-1578-00-00 ADD START
		CAANMsg[] workEKK2811B011 = null; // 機器オプションサービス契約一覧照会（回線経由）
		workEKK2811B011 = getWorkParentData(EKK2811B011CBSMsg.EKK2811B011CBSMSG1LIST, rsltShokai, MAP_KEY_EKK2811B011);
		// AMK-1578-00-00 ADD END
		
		// サービス契約<eo光電話>一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0111A010(param, 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];
				
				if(isChkStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0191A010(param, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0191A010, wkMapArray);
		
		// オプションサービス契約<電話>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0351B001Array != null) 
		{
			for (int i = 0; i < workEKK0351B001Array.size(); i++)
		{
				CAANMsg[] workEKK0351B001 = getWorkData(EKK0351B001CBSMsg.EKK0351B001CBSMSG1LIST, (Map)workEKK0351B001Array.get(i));
				for (int j = 0; j < workEKK0351B001.length; j++)
				{
					CAANMsg childTemplate = workEKK0351B001[j];
				if(isChkStat(childTemplate.getString(EKK0351B001CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0371A010(param, 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; null != workEKK0401B001 && j < workEKK0401B001.length; j++)
				{
					CAANMsg childTemplate = workEKK0401B001[j];
					
					if(isChkStat(childTemplate.getString(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT)))
					{
						wkCaanMsgList = shokaiMapper.editInMsgEKK0431A010(param, childTemplate);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0431A010, wkMapArray);

// ANK0406-00-00 2012-08-27 ADD_START
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK2441B002(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK2441B002, wkMapArray);
		
		
		wkMapArray = new ArrayList();
		if (workEKK0251B003 != null)
		{
			for (int i = 0; i < workEKK0251B003.length; i++)
			{
				CAANMsg childTemplate = workEKK0251B003[i];
				
				wkCaanMsgList = shokaiMapper.editInMsgEKK2441B001(param, childTemplate.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO), userDataIndex);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK2441B001, wkMapArray);
		
// ANK0406-00-00 2012-0827 ADD_END

		// AMK-1578-00-00 ADD START
		// 機器オプションサービス契約一覧照会（回線経由）
		wkMapArray = new ArrayList();
		if (workEKK2811B011 != null) {
			for (int i = 0; i < workEKK2811B011.length; i++) {
				CAANMsg childTemplate = workEKK2811B011[i];
				
				wkCaanMsgList = shokaiMapper.editInMsgEKK2811A010(
						param, childTemplate);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK2811A010, wkMapArray);
		// AMK-1578-00-00 ADD END
		
		return rsltShokaiMap;
	}


	//↓↓↓2012-05-03追加、電話手続の取込み↓↓↓
	/**
	 * 番ポ工事登録関連情報取得のための入力マッピング
	 * 
	 * @param param リクエストパラメータ一式
	 * @param rsltShokai 全ての一覧照会および一意照会の実行結果の入ったマップ
	 * @param mapList マップ編集対象のサービスＩＦ名のリスト
	 * @param userDataIndex 照査処理リストのインデックス（trgt_data_list のインデックス）
	 * @param caanmsgEKK0191A010 番ポ工事登録対象のサービス契約内訳＜eo光電話＞の一意照会結果
	 * @return 入力マップ
	 * @throws RequestParameterException リクエストパラメータ参照例外
	 * @since 2012-06-06 番ポ工事登録本実装
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMap4ShokaiBanpo(
			IRequestParameterReadWrite param,
			HashMap<String, Object> rsltShokai, String[] mapList, int userDataIndex,
			CAANMsg caanmsgEKK0191A010
	) throws RequestParameterException
	{
		HashMap<String, Object> rsltShokaiMap = new HashMap<String, Object>();

		for (int k = 0; k < mapList.length; k++)
		{
			HashMap<String, Object> rslt = null;
			List<CAANMsg> wkCaanMsgList = null;
			ArrayList<HashMap<String, Object>> wkMapArray = new ArrayList<HashMap<String, Object>>();

			if (MAP_KEY_ETU0021B010.equals(mapList[k]))
			{
				// 同番移転一覧照会
				wkCaanMsgList = shokaiMapper.editInMsgETU0021B010(param, userDataIndex, caanmsgEKK0191A010);
			}
// ANK-4494-00-00 Step2 廃止スキーマ対応 20241113 星野 DEL START
//			else if (MAP_KEY_ETU0121B011.equals(mapList[k]))
//			{
//				ArrayList<HashMap<?, ?>> workEZM0121A010Array = (ArrayList<HashMap<?, ?>>)rsltShokai.get(MAP_KEY_EZM0121A010);
//				if (null != workEZM0121A010Array)
//				{
//					CAANMsg[] wkTemplates = getWorkData(EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST, workEZM0121A010Array.get(0));
//
//					//番ポ工事申込事業所番号取得
//					wkCaanMsgList = shokaiMapper.editInMsgETU0121B011(param, wkTemplates[0]);
//				}
//			}
// ANK-4494-00-00 Step2 廃止スキーマ対応 20241113 星野 DEL END
			else if (MAP_KEY_EZM0091A010.equals(mapList[k]))
			{
				ArrayList<HashMap<?, ?>> workEKK0251B003Array = (ArrayList<HashMap<?, ?>>)rsltShokai.get(MAP_KEY_EKK0251B003);
				CAANMsg[] wkTemEKK0251B003 = (null == workEKK0251B003Array ? null :
					getWorkData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, workEKK0251B003Array.get(0)));

				ArrayList<HashMap<?, ?>> workEZM0301A010Array = (ArrayList<HashMap<?, ?>>)rsltShokai.get(MAP_KEY_EZM0301A010);
				CAANMsg[] wkTemEZM0301A010 = (null == workEZM0301A010Array ? null :
					getWorkData(EZM0301A010CBSMsg.EZM0301A010CBSMSG1LIST, workEZM0301A010Array.get(0)));

				//↓↓↓2012-07-12追加、ST2-2012-0001378対応↓↓↓
				//局番マスタを照会出来なかった場合のヌルポ防止対策
				String noKukakuCd = "";
				if (null != wkTemEZM0301A010 && 0 < wkTemEZM0301A010.length)
				{
					noKukakuCd = wkTemEZM0301A010[0].getString(EZM0301A010CBSMsg1List.NO_KUKAKU_CD);
				}
				//↑↑↑2012-07-12追加、ST2-2012-0001378対応↑↑↑

				//住所対象番号区画一意照会
				wkCaanMsgList = shokaiMapper.editInMsgEZM0091A010(param, wkTemEKK0251B003[0], noKukakuCd);
			}
			else if (MAP_KEY_EZM0121A010.equals(mapList[k]))
			{
//				ArrayList<HashMap<?, ?>> workEKK0191A010Array = (ArrayList<HashMap<?, ?>>)rsltShokai.get(MAP_KEY_EKK0191A010);
//				CAANMsg[] wkTemplates = (null == workEKK0191A010Array ? null :
//					getWorkData(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, workEKK0191A010Array.get(0)));

				//電話番号一意照会
				wkCaanMsgList = shokaiMapper.editInMsgEZM0121A010(param, caanmsgEKK0191A010);	//wkTemplates[0]);
			}
			else if (MAP_KEY_EZM0301A010.equals(mapList[k]))
			{
				ArrayList<HashMap<?, ?>> workEZM0121A010Array = (ArrayList<HashMap<?, ?>>)rsltShokai.get(MAP_KEY_EZM0121A010);
				CAANMsg[] wkTemEZM0121A010 = (null == workEZM0121A010Array ? null :
					getWorkData(EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST, workEZM0121A010Array.get(0)));

				//局番一意照会
				wkCaanMsgList = shokaiMapper.editInMsgEZM0301A010(param, wkTemEZM0121A010[0]);
			}
			// AMK-4494-00-00 ADD START
			else if (MAP_KEY_ETU0101B020.equals(mapList[k]))
			{
				CAANMsg[] workEZM0121A010 = null;

				workEZM0121A010 = getWorkParentData(EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST, rsltShokai, MAP_KEY_EZM0121A010);

				String KyokuNo = "";
				
				if (workEZM0121A010 != null)
				{
					for (int i = 0; i < workEZM0121A010.length; i++)
					{
						CAANMsg childTemplate = workEZM0121A010[i];
						
						if (childTemplate != null)
						{
							KyokuNo = childTemplate.getString(EZM0121A010CBSMsg1List.KYOKU_NO);
						}
						else
						{
							KyokuNo = "";
						}
					}
					//局番別NTT収容局一覧照会
					wkCaanMsgList = shokaiMapper.editInMsgETU0101B020(param,KyokuNo);
				}
			
			}
			
			else if (MAP_KEY_EZM0321A010_2.equals(mapList[k]))
			{
				String workParamId = SC_ENUMSOD_DOMAIN;
				//業務パラメータ一意照会 ("SC_ENUMSOD_DOMAIN")
				wkCaanMsgList = shokaiMapper.editInMsgEZM0321A010(param,workParamId);
			}
			else if (MAP_KEY_EZM0321A010_3.equals(mapList[k]))
			{
				String workParamId = TU_BMP_TNT_TELNO;
				//業務パラメータ一意照会 ("SC_ENUMSOD_DOMAIN")
				wkCaanMsgList = shokaiMapper.editInMsgEZM0321A010(param,workParamId);
			}
			// AMK-4494-00-00 ADD END
			if (null != wkCaanMsgList && 0 < wkCaanMsgList.size())
			{
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
				rsltShokaiMap.put(mapList[k], wkMapArray);
			}
		}

		return rsltShokaiMap;
	}
	//↑↑↑2012-05-03追加、電話手続の取込み↑↑↑

	
// ANK-4494-00-00 STEP2 ADD START
	/**
	 * 電話番号更新関連情報取得のための入力マッピング
	 * 
	 * @param param リクエストパラメータ一式
	 * @param rsltShokai 全ての一覧照会および一意照会の実行結果の入ったマップ
	 * @param mapList マップ編集対象のサービスＩＦ名のリスト
	 * @param userDataIndex 照査処理リストのインデックス（trgt_data_list のインデックス）
	 * @param caanmsgEKK0191A010 電話番号更新対象のサービス契約内訳＜eo光電話＞の一意照会結果
	 * @return 入力マップ
	 * @throws RequestParameterException リクエストパラメータ参照例外
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMap4ShokaiTelno(
			IRequestParameterReadWrite param,
			HashMap<String, Object> rsltShokai, String[] mapList, int userDataIndex,
			CAANMsg caanmsgEKK0191A010
	) throws RequestParameterException
	{
		HashMap<String, Object> rsltShokaiMap = new HashMap<String, Object>();

		for (int k = 0; k < mapList.length; k++)
		{
			HashMap<String, Object> rslt = null;
			List<CAANMsg> wkCaanMsgList = null;
			ArrayList<HashMap<String, Object>> wkMapArray = new ArrayList<HashMap<String, Object>>();
			if (MAP_KEY_EZM0121A010.equals(mapList[k]))
			{
				// 電話番号一意照会
				wkCaanMsgList = shokaiMapper.editInMsgEZM0121A010(param, caanmsgEKK0191A010); // wkTemplates[0]);
			}
			if (null != wkCaanMsgList && 0 < wkCaanMsgList.size())
			{
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
				rsltShokaiMap.put(mapList[k], wkMapArray);
			}
		}

		return rsltShokaiMap;
	}
// ANK-4494-00-00 STEP2 ADD END

	/**
	 * 一意照会、一覧照会のマッピング処理です。（eoモバイル個別分）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @param userDataIndex param内の業務データのインデックス
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiMoba(IRequestParameterReadOnly param, 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 = shokaiMapper.editInMsgEKK0121A010(param, 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(isChkStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0201A010(param, 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(isChkStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0361A010(param, 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; null != workEKK0401B001 && j < workEKK0401B001.length; j++)
				{
					CAANMsg childTemplate = workEKK0401B001[j];
					wkCaanMsgList = shokaiMapper.editInMsgEKK0411A010(param, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0411A010, wkMapArray);

		return rsltShokaiMap;
	}

	/**
	 * 一意照会、一覧照会のマッピング処理です。（eoAdsl個別分）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @param userDataIndex param内の業務データのインデックス
	 * @return 一意照会、一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiAdsl(IRequestParameterReadOnly param, 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 = shokaiMapper.editInMsgEKK0141A010(param, 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(isChkStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0221A010(param, 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(isChkStat(childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0361A010(param, 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; null != workEKK0401B001 && j < workEKK0401B001.length; j++)
				{
					CAANMsg childTemplate = workEKK0401B001[j];
					wkCaanMsgList = shokaiMapper.editInMsgEKK0411A010(param, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0411A010, wkMapArray);

		//2011-12-29↓↓↓追加↓↓↓
		CAANMsg[] workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);

		wkMapArray = new ArrayList();
		if (workEKK0081A010 != null)
		{
			for (int i = 0; i < workEKK0081A010.length; i++)
			{
				//料金コースの取得
				String pcrs_cd = workEKK0081A010[i].getString(EKK0081A010CBSMsg1List.PCRS_CD);
				//料金プランコードの取得
				String pplan_cd = workEKK0081A010[i].getString(EKK0081A010CBSMsg1List.PPLAN_CD);
	
				wkCaanMsgList = shokaiMapper.editInMsgEKK0591A010(param, pcrs_cd, pplan_cd);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0591A010, wkMapArray);
		//2011-12-29↑↑↑追加↑↑↑

		return rsltShokaiMap;
	}


	/**
	 * 照査OK時のサービス共通のマッピング処理です。
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @param canCncSvcKei 締結OKフラグ（eo光ネット／eo光電話／eoADSL）
	 * @return 実行結果
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShosaOkCmn(SessionHandle handle,
													IRequestParameterReadWrite param, 
													int userDataIndex, 
													HashMap<String, Object> rsltShokai,
													String idoDiv,
													int svcSbtCd, boolean canCncSvcKei)
	//throws RequestParameterException
			throws Throwable
	{
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK0021A010Array = null;	// 申込明細一意照会
		ArrayList<HashMap> workEKK0391A010Array = null;	// オプションサービス契約<サポート>一意照会
		ArrayList<HashMap> workEKK0341B022Array = null;	// 機器提供サービス契約一意照会
		ArrayList<HashMap> workEKK0251B003Array = null;	// サービス契約回線内訳一意照会
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		boolean kktkSvcShosaFlg;
		
		// 一意照会、一覧照会の結果データを取得
		workEKK0021A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0021A010);
		workEKK0391A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0391A010);
		workEKK0341B022Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0341B022);
		workEKK0251B003Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0251B003);

		// IT12-2012-0001677 2012-11-14 ADD_START
		// モバイルまたは、締結済まで進められる契約
		boolean weCanDoShosaAndCnc = (svcSbtCd == SVC_SBT_CD_MOBA || canCncSvcKei);
		// IT12-2012-0001677 2012-11-14 ADD_END
		//↓↓↓2012-12-10追加　ロット２ST2-2012-0001328（締結済まで進めない）↓↓↓
		weCanDoShosaAndCnc = canCncSvcKei;
		//↑↑↑2012-12-10追加　ロット２ST2-2012-0001328（締結済まで進めない）↑↑↑
		
		// オプションサービス契約<サポート>照査
		wkMapArray = new ArrayList();
		if (workEKK0391A010Array != null) 
		{
			for (int i = 0; i < workEKK0391A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0391A010CBSMsg.EKK0391A010CBSMSG1LIST,
						(Map)workEKK0391A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					// ST1-2012-0000139 2012/07/17 start
					//オプションサービス契約の異動区分が「オプション引継」のときはそれを渡す
					String currentIdoDiv =  getOpSvcKeiIdoDiv(handle, param, childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
					String op_idoDiv = idoDiv;
					if(IDO_DIV_OP_HIKITUGI.equals(currentIdoDiv)){
						op_idoDiv = currentIdoDiv;
					}
					// ST1-2012-0000139 2012/07/17 end
					// モバイルの場合は照査締結を実施
				// IT12-2012-0001677 2012-11-14 EDIT_START
					// if (svcSbtCd == SVC_SBT_CD_MOBA)
					// モバイル、または締結済に進められる契約の場合は照査締結を実施
					if (weCanDoShosaAndCnc)
				// IT12-2012-0001677 2012-11-14 EDIT_START
					{
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0391C030(param, childTemplate, op_idoDiv);
					}

					// その他サービスに関しては照査を実施
					else
					{
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0391C010(param, childTemplate, op_idoDiv);
					}
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		
		/*eoモバイルまたはeoADSL(フレッツ)、締結まで進められるeo光ネットまたはeo光電話なら、
		  機器提供サービス契約照査締結S-IF実行用編集
		  2012-01-27 */
		// IT12-2012-0001677 2012-11-14 DEL_START
		//boolean weCanDoShosaAndCnc = (svcSbtCd == SVC_SBT_CD_MOBA || canCncSvcKei);
		// IT12-2012-0001677 2012-11-14 DEL_END
		if (weCanDoShosaAndCnc)
		{
			rsltShosaMap.put(MAP_KEY_EKK0391C030, wkMapArray);
		}
		else
		{
			rsltShosaMap.put(MAP_KEY_EKK0391C010, wkMapArray);
		}

		// 機器提供サービス契約照査
		wkMapArray = new ArrayList();
		if (workEKK0341B022Array != null) 
		{
			for (int i = 0; i < workEKK0341B022Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST, (Map)workEKK0341B022Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					kktkSvcShosaFlg = true;
					
					CAANMsg childTemplate = wkTenplates[j];
					// ANK-4315-00-00 MOD STR
					//サービス契約回線内訳がONUかVONUかで照査を制御する
//					if(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C012)
//							|| childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C024))
					if(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C012)
							|| childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C024)
								|| childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C025))
					// ANK-4315-00-00 MOD END
					{
						if(!(svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_HTEL)) 
						{
							kktkSvcShosaFlg = false;
						}
						// ANK-4315-00-00 MOD STR
//						// サービス追加の場合の制御として
//						//多機能ルータの機器提供サービス契約が既に照査済の場合はスキップ
//						if(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C024)
//								&& "010".compareTo(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_STAT)) < 0) 
						// サービス追加の場合の制御として
						//多機能ルータ,HGWの機器提供サービス契約が既に照査済の場合はスキップ
						if((childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C024)
								|| childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C025))
								&& "010".compareTo(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_STAT)) < 0) 
						// ANK-4315-00-00 MOD END
						{
							kktkSvcShosaFlg = false;
						}
					}
					else if(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C013))
					{
						if(svcSbtCd != SVC_SBT_CD_HTV) 
						{
							kktkSvcShosaFlg = false;
						}
					}

					//サービス契約回線内訳制御用
					if(kktkSvcShosaFlg)
					{
						// モバイル、または締結済まで進められる契約の場合は照査締結を実施
						if (weCanDoShosaAndCnc)
						{
							wkCaanMsgList = shosaOkMapper.editInMsgEKK0341C050(param, childTemplate);
						}

						// モバイル以外の場合は照査を実施
						else
						{
							wkCaanMsgList = shosaOkMapper.editInMsgEKK0341C030(param, childTemplate);
						}
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
						
						// 20140416 ANK-2054-00-00 ADD START
						// 機器提供サービス契約を照査した場合、機器オプションサービス契約の照査を行う
						editMapShosaKkop(
								handle
								,param
								,userDataIndex
								,rsltShosaMap	// 入出力項目
								,weCanDoShosaAndCnc
								,childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO)
								,idoDiv
								);
						// 20140416 ANK-2054-00-00 ADD END
					}
				}
			}
		}
		if (weCanDoShosaAndCnc)
		{
			rsltShosaMap.put(MAP_KEY_EKK0341C050, wkMapArray);
		}
		else
		{
			rsltShosaMap.put(MAP_KEY_EKK0341C030, wkMapArray);
		}

		// 申込明細照査・後続業務依頼
		wkMapArray = new ArrayList();
		if (workEKK0021A010Array != null) 
		{
			String updDtm = null;
			for (int i = 0; i < workEKK0021A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, (Map)workEKK0021A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					if (updDtm == null)
					{
						updDtm = childTemplate.getString(EKK0021A010CBSMsg1List.LAST_UPD_DTM);
					}
					wkCaanMsgList = shosaOkMapper.editInMsgEKK0021C060(param, childTemplate, updDtm);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					updDtm = (String)rslt.get(EKK0021C060CBSMsg.UPD_DTM);
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0021C060, wkMapArray);
		
		// 20130215 IT2-2013-0000177 DEL START
		// 20120406 住所変更対応 START
//		if (!IDO_DIV_AD_CHG_ADD.equals(idoDiv))
//		{
			// 住所変更・登録以外の場合
			// 20120406 住所変更対応 END
			// 20130215 IT2-2013-0000177 DEL END
			
			//↓↓↓2012-05-02置換、巻@宅内取込み対応（EKKA0020002 ← ETN0011D010）↓↓↓
			// 設置場所番号取得
			wkMapArray = new ArrayList();
			// ANK-1361-00-00 契約者住所手動入力フラグを追加 20130219 ADD START
			// ■住所手動入力フラグ
			//   モバイルの場合のみ、お客様から取得した契約者住所手動入力フラグを
			//   EKKA0020002_設置場所番号取得SIFのINPUT.ＫＥＹ＿設置場所住所手動入力フラグに指定する。
			//   モバイル以外の場合、手動入力できないため、設定不要。（SIFがデフォルト値を設定する）
			String adManInputFlg = null;
			if(SVC_SBT_CD_MOBA == svcSbtCd)
			{
				//お客様情報の取得
				CAANMsg[] workECK0011A010 = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0011A010);
				adManInputFlg = workECK0011A010[0].getString(ECK0011A010CBSMsg1List.KEISHA_AD_MAN_INPUT_FLG);
			}
			// ANK-1361-00-00 契約者住所手動入力フラグを追加 20130219 ADD END
			if (workEKK0251B003Array != null) 
			{
				for (int i = 0; i < workEKK0251B003Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, (Map)workEKK0251B003Array.get(i));
					for (int j = 0; j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						
						kisnNo = childTemplate.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
						
						//サービス単位で回線番号が異なる場合のみ実行する。
						if(kisnNo != null && !kisnNo.equals(rekisnNo))
						{
							// ANK-1361-00-00 インプットに住所手動入力フラグを追加 20130219 MOD START
//							wkCaanMsgList = shosaOkMapper.editInMsgEKKA0020002(param, childTemplate);
							wkCaanMsgList = shosaOkMapper.editInMsgEKKA0020002(param, childTemplate, adManInputFlg);
							// ANK-1361-00-00 インプットに住所手動入力フラグを追加 20130219 MOD END
							rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
							wkMapArray.add(rslt);
						}
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKKA0020002, wkMapArray);
			//↑↑↑2012-05-02置換、巻@宅内取込み対応（EKKA0020002 ← ETN0011D010）↑↑↑
//		}
		
		return rsltShosaMap;
	}
	
	/**
	 * 照査OK時のサービス共通のマッピング処理です。
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @param svcSbtCd サービス種別
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @return 実行結果
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editUpdPlaceNo(IRequestParameterReadWrite param, 
			int userDataIndex, 
			int svcSbtCd, 
			// ANK-4038-00-00 MOD START
			// HashMap<String, Object> rsltShokai)
			HashMap<String, Object> rsltShokai,
			CAANMsg[] workEKK0251A010)
			// ANK-4038-00-00 MOD END
	throws RequestParameterException
	{
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK0251B003Array = null;	// サービス契約回線内訳一意照会
		ArrayList<HashMap> workEKK0341B022Array = null;	// サービス対象機器提供サービス契約一覧照会
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		String tmpPlaceNo = "";
		
		// 一意照会、一覧照会の結果データを取得
		workEKK0251B003Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0251B003);
		workEKK0341B022Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0341B022);
		
		
		// サービス契約回線内訳内容変更
		wkMapArray = new ArrayList();
		for (int i = 0; workEKK0251B003Array != null && i < workEKK0251B003Array.size(); i++)
		{
			CAANMsg[] wkTenplates = getWorkData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, (Map)workEKK0251B003Array.get(i));
			for (int j = 0; j < wkTenplates.length; j++)
			{
				CAANMsg childTemplate = wkTenplates[j];
				tmpPlaceNo = childTemplate.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_NO);
				//サービス単位で回線番号が異なる場合のみ実行する。
				if(kisnNo != null && !kisnNo.equals(rekisnNo))
				{
					rekisnNo = kisnNo;
					
					// ANK-4038-00-00 MOD START
					//wkCaanMsgList = shosaOkMapper.editInMsgEKK0251C030(param, childTemplate, place_no);
					wkCaanMsgList = shosaOkMapper.editInMsgEKK0251C030(param, childTemplate, place_no, workEKK0251A010);
					// ANK-4038-00-00 MOD END
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0251C030, wkMapArray);
		
		//場所番号登録された場合、登録された場所番号を設定
		if(place_no != null && !"".equals(place_no))
		{
			tmpPlaceNo = place_no;
		}
		
		// 機器設置先場所反映
		boolean kktkPlaceFlg;
		wkMapArray = new ArrayList();
		if (workEKK0341B022Array != null) 
		{
			for (int i = 0; i < workEKK0341B022Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST, (Map)workEKK0341B022Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					kktkPlaceFlg = true;
					
					//サービス契約回線内訳がONUかVONUかで場所反映を制御
					if(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C012)
// ▽▽▽ #83584 ADD START
							|| childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C025)
// △△△ #83584 ADD END
							|| childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C024))
					{
						if(!(svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_HTEL)) 
						{
							kktkPlaceFlg = false;
						}
						// ANK-4315-00-00 MOD STR
//						// サービス追加の場合の制御として
//						//多機能ルータの機器提供サービス契約が既に照査済の場合はスキップ
//						if(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C024)
//								&& "010".compareTo(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_STAT)) < 0) 
						// サービス追加の場合の制御として
						//多機能ルーター,ＨＧＷの機器提供サービス契約が既に照査済の場合はスキップ
						if((childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C024)
								|| childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C025))
								&& "010".compareTo(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_STAT)) < 0) 
						// ANK-4315-00-00 MOD END
						{
							kktkPlaceFlg = false;
						}
					}
					else if(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C013))
					{
						if(svcSbtCd != SVC_SBT_CD_HTV) 
						{
							kktkPlaceFlg = false;
						}
					}
					if(kktkPlaceFlg)
					{
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0341C450(param, childTemplate, tmpPlaceNo);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0341C450, wkMapArray);

		return rsltShosaMap;
	}

	/**
	 * 照査OK時のeo光ネットのマッピング処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @param idoDiv 異同区分
	 * @param canCncSvcKei 
	 * @return 実行結果
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShosaOkHNet(SessionHandle handle, IRequestParameterReadWrite param, int userDataIndex,
			// ANK-3834-00-00 MOD START
			// HashMap<String, Object> rsltShokai, String idoDiv, boolean canCncSvcKei) 
			HashMap<String, Object> rsltShokai, String idoDiv, boolean canCncSvcKei, String malwareFlg) 
			// ANK-3834-00-00 MOD END
	//throws RequestParameterException
			throws Throwable
	{
		// ANK-3296-00-00_ADD START
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// ANK-3296-00-00_ADD END
		
		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＞一意照会
// ANK0546-00-00 2012-09-24 ADD_START
		ArrayList<HashMap> workEKK2541A010Array = null;	// 割賦契約一意照会
// ANK0546-00-00 2012-09-24 ADD_END
		// AMK-1578-00-00 ADD START
		ArrayList<HashMap> workEKK2811A010Array = null; // 機器オプションサービス契約一意照会
		// AMK-1578-00-00 ADD END
		// ANK-3296-00-00 ADD START
		ArrayList<HashMap> workEKK0251B003Array = null; // サービス契約回線内訳一覧照会
		// ANK-3296-00-00 ADD END
		
		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);
// ANK0546-00-00 2012-09-24 ADD_START
		workEKK2541A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK2541A010);
// ANK0546-00-00 2012-09-24 ADD_END
		// AMK-1578-00-00 ADD START
		workEKK2811A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK2811A010);
		// AMK-1578-00-00 ADD END
		// ANK-3296-00-00 ADD START
		workEKK0251B003Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0251B003);
		// ANK-3296-00-00 ADD END

		//↓↓↓2012-04-23追加　巻@　指示書CC取込み対応↓↓↓
		ArrayList<String> svcKeiUcwkNo = new ArrayList<String>();
		ArrayList<String> opSvcKeiNoB001 = new ArrayList<String>();
		ArrayList<String> opSvcKeiNoB002 = new ArrayList<String>();
		//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑

		// サービス契約＜eo光ネット＞照査
		wkMapArray = new ArrayList();
		if (workEKK0091A010Array != null) 
		{
			for (int i = 0; i < workEKK0091A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0091A010CBSMsg.EKK0091A010CBSMSG1LIST, (Map)workEKK0091A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					// ANK-3834-00-00 MOD START
					// wkCaanMsgList = shosaOkMapper.editInMsgEKK0091C010(param, childTemplate, idoDiv);
					wkCaanMsgList = shosaOkMapper.editInMsgEKK0091C010(param, childTemplate, idoDiv ,malwareFlg);
					// ANK-3834-00-00 MOD START
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0091C010, wkMapArray);

		//締結済まで進める場合、照査S-IFは実行せず照査締結S-IFを実行するため、以下の切替を行う
		if (!canCncSvcKei)			//2012-01-27
		{
			// サービス契約内訳<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++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0171C010(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
						svcKeiUcwkNo.add(childTemplate.getString(EKK0171A010CBSMsg1List.SVC_KEI_UCWK_NO));	//←←←2012-04-23追加　巻@　指示書CC取込み対応
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0171C010, wkMapArray);
	
			// オプションサービス契約<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];
						// ST1-2012-0000139 2012/07/17 start
						//オプションサービス契約の異動区分が「オプション引継」のときはそれを渡す
						String currentIdoDiv =  getOpSvcKeiIdoDiv(handle, param, childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						String op_idoDiv = idoDiv;
						if(IDO_DIV_OP_HIKITUGI.equals(currentIdoDiv)){
							op_idoDiv = currentIdoDiv;
						}
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0361C010(param, childTemplate, op_idoDiv);
						// ST1-2012-0000139 2012/07/17 end
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
						//↓↓↓2012-04-23追加　巻@　指示書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 ("B001".equals(op_svc_cd))		//Ｅメールオプション？
						{
							opSvcKeiNoB001.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						}
						else if ("B002".equals(op_svc_cd))		//Myホームページオプション？
						{
							opSvcKeiNoB002.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						}
						//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0361C010, wkMapArray);
	
			// サブオプションサービス契約<ISP>照査
			wkMapArray = new ArrayList();
			if (workEKK0411A010Array != null) 
			{
				for (int i = 0; i < workEKK0411A010Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST, (Map)workEKK0411A010Array.get(i));
					for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0411C020(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0411C020, wkMapArray);
			
			// AMK-1578-00-00 ADD START
			// 機器オプションサービス契約照査
			wkMapArray = new ArrayList();
			if (workEKK2811A010Array != null) {
				for (int i = 0; i < workEKK2811A010Array.size(); i++) {
					CAANMsg[] wkTemplates = getWorkData(
							EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST,
							(Map) workEKK2811A010Array.get(i));
					for (int j = 0; null != wkTemplates
							&& j < wkTemplates.length; j++) {
						CAANMsg childTemplate = wkTemplates[j];
						// 機器オプションサービスコード、サービス契約ステータスを取得
						String kkop_svc_cd = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_CD);
						String kkop_svc_kei_stat = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT);
						// ネット照査時、ルータ機能、かつステータスが受付済のみ照査
						if ("G01".equals(kkop_svc_cd) && "010".equals(kkop_svc_kei_stat)) {
							wkCaanMsgList = shosaOkMapper.editInMsgEKK2811C030(
									param, childTemplate, idoDiv);
							rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
							wkMapArray.add(rslt);
							
						}
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK2811C030, wkMapArray);
			// AMK-1578-00-00 ADD END
			
			// ANK-3296-00-00 ADD START
			wkMapArray = new ArrayList();
			CAANMsg[] workEKK0081A010 = null;
			//サービスコードの取得
			workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
			String prcGrpCd   = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);	// 料金グループコード
			String svcKeiKaisenUcwkNo = null;
			if (prcGrpCd.equals(PRC_GRP_CD_HOME) || prcGrpCd.equals(PRC_GRP_CD_MEZON))
			{
				if (workEKK0081A010 != null) 
				{
					for (int i = 0; i < workEKK0081A010.length; i++) 
					{
						CAANMsg[] wkTemplates = getWorkData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, (Map)workEKK0251B003Array.get(i));
						for (int j = 0; null != wkTemplates && j < wkTemplates.length; j++) 
						{
							CAANMsg childTemplate = wkTemplates[j];
							// サービス契約回線内訳番号を取得
							svcKeiKaisenUcwkNo = childTemplate.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
						}
					}
				}
			}
			
			String kojihi_kap_kei_no = null;
			String kap_kei_stat = null;
			String kojihikapkeino = null;
			String upddtmbf = null;
			wkMapArray = new ArrayList();
			// 工事費割賦契約一覧照会
			if (svcKeiKaisenUcwkNo != null && !"".equals(svcKeiKaisenUcwkNo))
			{
				// EKK3131B010 工事費割賦契約一覧照会を実行する
				List<CAANMsg> inMsgEKK3131B010List = shokaiMapper.editInMsgEKK3131B010(param, userDataIndex, svcKeiKaisenUcwkNo, "1");
				HashMap<String, Object> inMsgEKK3131B010Map = editInMsgCmn(param, inMsgEKK3131B010List.get(0));
				// SSIFの実行
				Map<?, ?> rsltEKK3131B010 = scCall.run(inMsgEKK3131B010Map, handle);
				shosaOkMapper.editResultRPEKK3131B010(rsltEKK3131B010, param, userDataIndex);
				CAANMsg[] workEKK3131B010 = getWorkData(EKK3131B010CBSMsg.EKK3131B010CBSMSG1LIST, rsltEKK3131B010);
				
				for (int i = 0; workEKK3131B010 != null && i < workEKK3131B010.length; i++)
				{
					CAANMsg childTemplate = workEKK3131B010[i];
					// 工事費割賦契約番号を取得する
					kojihi_kap_kei_no = (String)childTemplate.getString(EKK3131B010CBSMsg1List.KOJIHI_KAP_KEI_NO);
					kap_kei_stat = (String)childTemplate.getString(EKK3131B010CBSMsg1List.KAP_KEI_STAT);
					// 契約ステータスを判定する
					if (kap_kei_stat.equals(JKKModelConst.KAP_KEI_STAT_UK_ZM))
					{
						// EKK3131B010 工事費割賦契約一意照会を実行する
						List<CAANMsg> inMsgEKK3131A010List = shokaiMapper.editInMsgEKK3131A010(param, userDataIndex, kojihi_kap_kei_no, "2");
						HashMap<String, Object> inMsgEKK3131A010Map = editInMsgCmn(param, inMsgEKK3131A010List.get(0));
						// SSIFの実行
						Map<?, ?> rsltEKK3131A010 = scCall.run(inMsgEKK3131A010Map, handle);
						shosaOkMapper.editResultRPEKK3131A010(rsltEKK3131A010, param, userDataIndex);
						CAANMsg[] workEKK3131A010 = getWorkData(EKK3131A010CBSMsg.EKK3131A010CBSMSG1LIST, rsltEKK3131A010);
						rslt = editInMsgCmn(param, inMsgEKK3131A010List.get(0));
						wkMapArray.add(rslt);
						rsltShokai.put(MAP_KEY_EKK3131A010, wkMapArray);
						if (workEKK3131A010 != null)
						{
							kojihikapkeino = (String)workEKK3131A010[0].getString(EKK3131A010CBSMsg1List.KOJIHI_KAP_KEI_NO);
							upddtmbf = (String)workEKK3131A010[0].getString(EKK3131A010CBSMsg1List.UPD_DTM);
						}
						wkCaanMsgList = shosaOkMapper.editInMsgEKK3131C030(param, kojihikapkeino, upddtmbf);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
						
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK3131C030, wkMapArray);
			// ANK-3296-00-00 ADD END
		}
		//2012-01-27 IT1-589 対応↓↓↓
		else
		//照査および締結まで行う
		{
			//サービス契約＜eo光ネット＞締結SC
			wkMapArray = new ArrayList();
			if (workEKK0091A010Array != null) 
			{
				for (int i = 0; i < workEKK0091A010Array.size(); i++)
				{
					CAANMsg[] wkTemplates = getWorkData(EKK0091A010CBSMsg.EKK0091A010CBSMSG1LIST, (Map)workEKK0091A010Array.get(i));
					for (int j = 0; j < wkTemplates.length; j++)
					{
						rslt = JKKSvkeiShosaCncMapper.editInMsgEKK0091C020(param, wkTemplates[j], idoDiv);
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0091C020, wkMapArray);

			//サービス契約内訳＜eo光ネット＞照査締結SC
			wkMapArray = new ArrayList();
			if (workEKK0171A010Array != null) 
			{
				for (int i = 0; i < workEKK0171A010Array.size(); i++)
				{
					CAANMsg[] wkTemplates = getWorkData(EKK0171A010CBSMsg.EKK0171A010CBSMSG1LIST, (Map)workEKK0171A010Array.get(i));
					for (int j = 0; j < wkTemplates.length; j++)
					{
						rslt = JKKSvkeiShosaCncMapper.editInMsgEKK0171C030(param, wkTemplates[j], idoDiv);
						wkMapArray.add(rslt);
						svcKeiUcwkNo.add(wkTemplates[j].getString(EKK0171A010CBSMsg1List.SVC_KEI_UCWK_NO));	//←←←2012-04-23追加　巻@　指示書CC取込み対応
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0171C030, wkMapArray);

			//オプションサービス契約＜ISP＞照査締結SC
			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];
						// ST1-2012-0000139 2012/07/17 start
						//オプションサービス契約の異動区分が「オプション引継」のときはそれを渡す
						String currentIdoDiv =  getOpSvcKeiIdoDiv(handle, param, childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						String op_idoDiv = idoDiv;
						if(IDO_DIV_OP_HIKITUGI.equals(currentIdoDiv)){
							op_idoDiv = currentIdoDiv;
						}
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0361C030(param, childTemplate, op_idoDiv);
						// ST1-2012-0000139 2012/07/17 end
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
						//↓↓↓2012-04-23追加　巻@　指示書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 ("B001".equals(op_svc_cd))		//Ｅメールオプション？
						{
							opSvcKeiNoB001.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						}
						else if ("B002".equals(op_svc_cd))		//Myホームページオプション？
						{
							opSvcKeiNoB002.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						}
						//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0361C030, wkMapArray);

			//サブオプションサービス契約＜ISP＞照査締結SC
			wkMapArray = new ArrayList();
			if (workEKK0411A010Array != null) 
			{
				for (int i = 0; i < workEKK0411A010Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST, (Map)workEKK0411A010Array.get(i));
					for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0411C040(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0411C040, wkMapArray);
			
			// AMK-1578-00-00 ADD START
			// 機器オプションサービス契約照査締結
			wkMapArray = new ArrayList();
			if (workEKK2811A010Array != null) {
				for (int i = 0; i < workEKK2811A010Array.size(); i++) {
					CAANMsg[] wkTemplates = getWorkData(
							EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST,
							(Map) workEKK2811A010Array.get(i));
					for (int j = 0; j < wkTemplates.length; j++) {
						rslt = JKKSvkeiShosaCncMapper.editInMsgEKK2811C050(
								param, wkTemplates[j], idoDiv);
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK2811C050, wkMapArray);
			// AMK-1578-00-00 ADD END
		}
		//2012-01-27 IT1-589 対応↑↑↑

// ANK0546-00-00 2012-09-24 ADD_START
		// 割賦契約照査
		wkMapArray = new ArrayList();
		if (workEKK2541A010Array != null)
		{
			for (int i = 0; i < workEKK2541A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK2541A010CBSMsg.EKK2541A010CBSMSG1LIST, (Map)workEKK2541A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					wkCaanMsgList = shosaOkMapper.editInMsgEKK2541C030(param, childTemplate, idoDiv);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK2541C030, wkMapArray);
// ANK0546-00-00 2012-09-24 ADD_END

		//↓↓↓2012-04-23追加　巻@　指示書CC取込み対応↓↓↓
		String[] uw = new String[svcKeiUcwkNo.size()];
		String[] v1 = new String[opSvcKeiNoB001.size()];
		String[] v2 = new String[opSvcKeiNoB002.size()];

		// 連携データ区分 05 ：認証ＩＤの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKSvkeiShosaConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_NINSHO_ID,
				JKKAddSjishoConst.TRN_KBN_ADD,
				svcKeiUcwkNo.toArray(uw),
				currentSysid
		);
		// 連携データ区分 03 ：POPIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKSvkeiShosaConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_POPID,
				JKKAddSjishoConst.TRN_KBN_ADD,
				opSvcKeiNoB001.toArray(v1),
				currentSysid
		);
		// 連携データ区分 04 ：WEBIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKSvkeiShosaConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_WEBID,
				JKKAddSjishoConst.TRN_KBN_ADD,
				opSvcKeiNoB002.toArray(v2),
				currentSysid
		);
		//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑

		return rsltShosaMap;
	}


	/**
	 * 
	 * @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;
	}

	/**
	 * 照査OK時のeo光テレビのマッピング処理です。
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @param idoDiv 異同区分
	 * @return 実行結果
	 * @throws RequestParameterException 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShosaOkHTv(SessionHandle handle, IRequestParameterReadWrite param,
			int userDataIndex, HashMap<String, Object> rsltShokai, String idoDiv) 
	//throws RequestParameterException
			throws Throwable
	{
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK0101A010Array = null;	// サービス契約<eo光TV>一意照会
		ArrayList<HashMap> workEKK0181A010Array = null;	// サービス契約内訳<eo光TV>一意照会
		ArrayList<HashMap> workEKK0381A010Array = null;	// オプションサービス契約<TV>一意照会
		ArrayList<HashMap> workEKK0421A010Array = null;	// サブオプションサービス契約＜TV＞一意照会

		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		
		// 一意照会、一覧照会の結果データを取得
		workEKK0101A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0101A010);
		workEKK0181A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0181A010);
		workEKK0381A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0381A010);
		workEKK0421A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0421A010);

		// サービス契約＜eo光TV＞照査
		wkMapArray = new ArrayList();
		if (workEKK0101A010Array != null) 
		{
			for (int i = 0; i < workEKK0101A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0101A010CBSMsg.EKK0101A010CBSMSG1LIST, (Map)workEKK0101A010Array.get(i));
				if(wkTenplates != null)
				{
					for (int j = 0; j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0101C010(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0101C010, wkMapArray);

		// サービス契約内訳<eo光TV>照査
		wkMapArray = new ArrayList();
		if (workEKK0181A010Array != null) 
		{
			for (int i = 0; i < workEKK0181A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0181A010CBSMsg.EKK0181A010CBSMSG1LIST, (Map)workEKK0181A010Array.get(i));
				if(wkTenplates != null)
				{
					for (int j = 0; j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0181C010(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0181C010, wkMapArray);

		// オプションサービス契約<TV>照査
		wkMapArray = new ArrayList();
		if (workEKK0381A010Array != null) 
		{
			for (int i = 0; i < workEKK0381A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0381A010CBSMsg.EKK0381A010CBSMSG1LIST, (Map)workEKK0381A010Array.get(i));
				if(wkTenplates != null)
				{
					for (int j = 0; j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						// ST1-2012-0000139 2012/07/17 start
						//オプションサービス契約の異動区分が「オプション引継」のときはそれを渡す
						String currentIdoDiv =  getOpSvcKeiIdoDiv(handle, param, childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						String op_idoDiv = idoDiv;
						if(IDO_DIV_OP_HIKITUGI.equals(currentIdoDiv)){
							op_idoDiv = currentIdoDiv;
						}
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0381C010(param, childTemplate, op_idoDiv);
						// ST1-2012-0000139 2012/07/17 end
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0381C010, wkMapArray);

		// サブオプションサービス契約<TV>照査
		wkMapArray = new ArrayList();
		if (workEKK0421A010Array != null) 
		{
			for (int i = 0; i < workEKK0421A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0421A010CBSMsg.EKK0421A010CBSMSG1LIST, (Map)workEKK0421A010Array.get(i));
				if(wkTenplates != null)
				{
					for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0421C010(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0421C010, wkMapArray);

		return rsltShosaMap;
	}

	/**
	 * 照査OK時のeo光電話のマッピング処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @param idoDiv 異同区分
	 * @param canCncSvcKei 
	 * @return 実行結果
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShosaOkHTel(SessionHandle handle, IRequestParameterReadWrite param,
			int userDataIndex, HashMap<String, Object> rsltShokai, String idoDiv, boolean canCncSvcKei)
	//throws RequestParameterException
			throws Throwable
	{
		// ANK-3296-00-00_ADD START
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// ANK-3296-00-00_ADD END
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK0111A010Array = null;	// サービス契約<eo光電話>一意照会
		ArrayList<HashMap> workEKK0191A010Array = null;	// サービス契約内訳<eo光電話>一意照会
		ArrayList<HashMap> workEKK0371A010Array = null;	// オプションサービス契約<電話>一意照会
		ArrayList<HashMap> workEKK0431A010Array = null;	// サブオプションサービス契約＜電話＞一意照会
		// AMK-1578-00-00 ADD START
		ArrayList<HashMap> workEKK2811A010Array = null; // 機器オプションサービス契約一意照会
		// AMK-1578-00-00 ADD END
		// ANK-3296-00-00 ADD START
		ArrayList<HashMap> workEKK0251B003Array = null; // サービス契約回線内訳一覧照会
		// ANK-3296-00-00 ADD END
		
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		
		// 一意照会、一覧照会の結果データを取得
		workEKK0111A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0111A010);
		workEKK0191A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0191A010);
		workEKK0371A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0371A010);
		workEKK0431A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0431A010);
		// AMK-1578-00-00 ADD START
		workEKK2811A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK2811A010);
		// AMK-1578-00-00 ADD END
		// ANK-3296-00-00 ADD START
		workEKK0251B003Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0251B003);
		// AMK-3296-00-00 ADD END
		
		// サービス契約＜eo光電話＞照査
		wkMapArray = new ArrayList();
		if (workEKK0111A010Array != null) 
		{
			for (int i = 0; i < workEKK0111A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0111A010CBSMsg.EKK0111A010CBSMSG1LIST, (Map)workEKK0111A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					wkCaanMsgList = shosaOkMapper.editInMsgEKK0111C010(param, childTemplate, idoDiv);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);

					//登録済のPPP認証IDをエイジング対象値に設定		2012-02-03追加
//					String svc_kei_no = childTemplate.getString(EKK0111A010CBSMsg1List.SVC_KEI_NO);

					//IT2-2013-0000568 del start
//					String ppp_ninsho_id = childTemplate.getString(EKK0111A010CBSMsg1List.PPP_NINSHO_ID);
//					ppp_ninsho_id = JKKBpCommon.getAgingNinshoId(ppp_ninsho_id);		//2012-02-23追加　IT障害1023対応
//					agingWorkMap.put(AGING_SBT_PPP_NINSHO_ID, ppp_ninsho_id);
					//IT2-2013-0000568 del end
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0111C010, wkMapArray);

		//締結済まで進める場合、照査S-IFは実行せず照査締結S-IFを実行するため、以下の切替を行う
		if (!canCncSvcKei)			//2012-01-27
		{
			// サービス契約内訳<eo光電話>照査
			wkMapArray = new ArrayList();
			if (workEKK0191A010Array != null) 
			{
				for (int i = 0; i < workEKK0191A010Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, (Map)workEKK0191A010Array.get(i));
					for (int j = 0; j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0191C010(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0191C010, wkMapArray);
	
			// オプションサービス契約<電話>照査
			wkMapArray = new ArrayList();
			if (workEKK0371A010Array != null) 
			{
				for (int i = 0; i < workEKK0371A010Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EKK0371A010CBSMsg.EKK0371A010CBSMSG1LIST, (Map)workEKK0371A010Array.get(i));
					for (int j = 0; j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						// ST1-2012-0000139 2012/07/17 start
						//オプションサービス契約の異動区分が「オプション引継」のときはそれを渡す
						String currentIdoDiv =  getOpSvcKeiIdoDiv(handle, param, childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						String op_idoDiv = idoDiv;
						if(IDO_DIV_OP_HIKITUGI.equals(currentIdoDiv)){
							op_idoDiv = currentIdoDiv;
						}
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0371C010(param, childTemplate, op_idoDiv);
						// ST1-2012-0000139 2012/07/17 end
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0371C010, wkMapArray);
	
			// サブオプションサービス契約<電話>照査
			wkMapArray = new ArrayList();
			if (workEKK0431A010Array != null) 
			{
				for (int i = 0; i < workEKK0431A010Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EKK0431A010CBSMsg.EKK0431A010CBSMSG1LIST, (Map)workEKK0431A010Array.get(i));
					for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0431C010(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0431C010, wkMapArray);
			
			// AMK-1578-00-00 ADD START
			// 機器オプションサービス契約照査
			wkMapArray = new ArrayList();
			if (workEKK2811A010Array != null) {
				for (int i = 0; i < workEKK2811A010Array.size(); i++) {
					CAANMsg[] wkTemplates = getWorkData(
							EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST,
							(Map) workEKK2811A010Array.get(i));
					for (int j = 0; null != wkTemplates
							&& j < wkTemplates.length; j++) {
						CAANMsg childTemplate = wkTemplates[j];
						// 機器オプションサービスコード、サービス契約ステータスを取得
						String kkop_svc_cd = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_CD);
						String kkop_svc_kei_stat = (String)childTemplate.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT);
						// 電話照査時、VA機能、かつステータスが受付済のみ照査
						if ("G02".equals(kkop_svc_cd) && "010".equals(kkop_svc_kei_stat)) {
							wkCaanMsgList = shosaOkMapper.editInMsgEKK2811C030(
									param, childTemplate, idoDiv);
							rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
							wkMapArray.add(rslt);
						}
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK2811C030, wkMapArray);
			// AMK-1578-00-00 ADD END
			
			// ANK-3296-00-00 ADD START
			wkMapArray = new ArrayList();
			CAANMsg[] workEKK0081A010 = null;
			workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
			String svcKeiKaisenUcwkNo = null;
			String pplan_cd = (String)workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.PPLAN_CD);
			wkMapArray = new ArrayList();
			if (pplan_cd.equals(JKKStrConst.CD00565_TEL1_HOME) || pplan_cd.equals(JKKStrConst.CD00565_TEL1_MEZON) ||
				pplan_cd.equals(JKKStrConst.CD00565_TEL2_HOME) || pplan_cd.equals(JKKStrConst.CD00565_TEL2_MEZON))
			{
				if (workEKK0081A010 != null)
				{
					for (int i = 0; i < workEKK0081A010.length; i++)
					{
						CAANMsg[] wkTemplates = getWorkData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, (Map)workEKK0251B003Array.get(i));
						for (int j = 0; null != wkTemplates && j < wkTemplates.length; j++)
						{
							CAANMsg childTemplate = wkTemplates[j];
							// サービス契約回線内訳番号を取得
							svcKeiKaisenUcwkNo = childTemplate.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
						}
					}
				}
			}
			
			String kojihi_kap_kei_no = null;
			String kap_kei_stat = null;
			String kojihikapkeino = null;
			String upddtmbf = null;
			// 工事費割賦契約一覧照会
			if (svcKeiKaisenUcwkNo != null && !"".equals(svcKeiKaisenUcwkNo))
			{
				// EKK3131B010 工事費割賦契約一覧照会を実行する
				List<CAANMsg> inMsgEKK3131B010List = shokaiMapper.editInMsgEKK3131B010(param, userDataIndex, svcKeiKaisenUcwkNo, "1");
				HashMap<String, Object> inMsgEKK3131B010Map = editInMsgCmn(param, inMsgEKK3131B010List.get(0));
				// SSIFの実行
				Map<?, ?> rsltEKK3131B010 = scCall.run(inMsgEKK3131B010Map, handle);
				shosaOkMapper.editResultRPEKK3131B010(rsltEKK3131B010, param, userDataIndex);
				CAANMsg[] workEKK3131B010 = getWorkData(EKK3131B010CBSMsg.EKK3131B010CBSMSG1LIST, rsltEKK3131B010);
				
				for (int i = 0; workEKK3131B010 != null && i < workEKK3131B010.length; i++)
				{
					CAANMsg childTemplate = workEKK3131B010[i];
					// 工事費割賦契約番号を取得する
					kojihi_kap_kei_no = (String)childTemplate.getString(EKK3131B010CBSMsg1List.KOJIHI_KAP_KEI_NO);
					// 工事費割賦契約ステータスを取得する
					kap_kei_stat = (String)childTemplate.getString(EKK3131B010CBSMsg1List.KAP_KEI_STAT);
					if (kap_kei_stat.equals(JKKModelConst.KAP_KEI_STAT_UK_ZM))
					{
						// EKK3131B010 工事費割賦契約一意照会を実行する
						List<CAANMsg> inMsgEKK3131A010List = shokaiMapper.editInMsgEKK3131A010(param, userDataIndex, kojihi_kap_kei_no, "2");
						HashMap<String, Object> inMsgEKK3131A010Map = editInMsgCmn(param, inMsgEKK3131A010List.get(0));
						// SSIFの実行
						Map<?, ?> rsltEKK3131A010 = scCall.run(inMsgEKK3131A010Map, handle);
						shosaOkMapper.editResultRPEKK3131A010(rsltEKK3131A010, param, userDataIndex);
						CAANMsg[] workEKK3131A010 = getWorkData(EKK3131A010CBSMsg.EKK3131A010CBSMSG1LIST, rsltEKK3131A010);
						rslt = editInMsgCmn(param, inMsgEKK3131A010List.get(0));
						wkMapArray.add(rslt);
						rsltShokai.put(MAP_KEY_EKK3131A010, wkMapArray);
						wkMapArray = new ArrayList();
						if (workEKK3131A010 != null)
						{
							kojihikapkeino = (String)workEKK3131A010[0].getString(EKK3131A010CBSMsg1List.KOJIHI_KAP_KEI_NO);
							upddtmbf = (String)workEKK3131A010[0].getString(EKK3131A010CBSMsg1List.UPD_DTM);
						}
						wkCaanMsgList = shosaOkMapper.editInMsgEKK3131C030(param, kojihikapkeino, upddtmbf);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK3131C030, wkMapArray);
			// ANK-3296-00-00 ADD END
		}
		//2012-01-27 IT1-589 対応↓↓↓
		else
		//照査および締結まで行う
		{
			// サービス契約＜eo光電話＞締結
			wkMapArray = new ArrayList();
			if (workEKK0111A010Array != null) 
			{
				for (int i = 0; i < workEKK0111A010Array.size(); i++)
				{
					CAANMsg[] wkTemplates = getWorkData(EKK0111A010CBSMsg.EKK0111A010CBSMSG1LIST, (Map)workEKK0111A010Array.get(i));
					for (int j = 0; j < wkTemplates.length; j++)
					{
						rslt = JKKSvkeiShosaCncMapper.editInMsgEKK0111C020(param, wkTemplates[j], idoDiv);
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0111C020, wkMapArray);

			// サービス契約内訳<eo光電話>照査締結
			wkMapArray = new ArrayList();
			if (workEKK0191A010Array != null) 
			{
				for (int i = 0; i < workEKK0191A010Array.size(); i++)
				{
					CAANMsg[] wkTemplates = getWorkData(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, (Map)workEKK0191A010Array.get(i));
					for (int j = 0; j < wkTemplates.length; j++)
					{
						rslt = JKKSvkeiShosaCncMapper.editInMsgEKK0191C030(param, wkTemplates[j], idoDiv);
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0191C030, wkMapArray);
	
			//オプションサービス契約＜電話＞照査締結SC
			wkMapArray = new ArrayList();
			if (workEKK0371A010Array != null) 
			{
				for (int i = 0; i < workEKK0371A010Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EKK0371A010CBSMsg.EKK0371A010CBSMSG1LIST, (Map)workEKK0371A010Array.get(i));
					for (int j = 0; j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						// ST1-2012-0000139 2012/07/17 start
						//オプションサービス契約の異動区分が「オプション引継」のときはそれを渡す
						String currentIdoDiv =  getOpSvcKeiIdoDiv(handle, param, childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						String op_idoDiv = idoDiv;
						if(IDO_DIV_OP_HIKITUGI.equals(currentIdoDiv)){
							op_idoDiv = currentIdoDiv;
						}
						rslt = JKKSvkeiShosaCncMapper.editInMsgEKK0371C030(param, childTemplate, op_idoDiv);
						// ST1-2012-0000139 2012/07/17 end
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0371C030, wkMapArray);
	
			//サブオプションサービス契約＜電話＞照査締結SC
			wkMapArray = new ArrayList();
			if (workEKK0431A010Array != null) 
			{
				for (int i = 0; i < workEKK0431A010Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EKK0431A010CBSMsg.EKK0431A010CBSMSG1LIST, (Map)workEKK0431A010Array.get(i));
					for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						rslt = JKKSvkeiShosaCncMapper.editInMsgEKK0431C030(param, childTemplate, idoDiv);
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0431C030, wkMapArray);
			
			// AMK-1578-00-00 ADD START
			// 機器オプションサービス契約照査締結
			wkMapArray = new ArrayList();
			if (workEKK2811A010Array != null) {
				for (int i = 0; i < workEKK2811A010Array.size(); i++) {
					CAANMsg[] wkTemplates = getWorkData(
							EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST,
							(Map) workEKK2811A010Array.get(i));
					for (int j = 0; j < wkTemplates.length; j++) {
						rslt = JKKSvkeiShosaCncMapper.editInMsgEKK2811C050(
								param, wkTemplates[j], idoDiv);
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK2811C050, wkMapArray);
			// AMK-1578-00-00 ADD END
		}
		//2012-01-27 IT1-589 対応↑↑↑

		return rsltShosaMap;
	}


	/**
	 * 番ポ工事登録S-IFの入力マッピング<br>
	 * <br>
	 * @param	param			リクエストパラメータ一式
	 * @param	handle			ハンドル
	 * @param	userDataIndex	照査処理リストのインデックス（trgt_data_list のインデックス）
	 * @param	rsltShokai		全ての一覧照会および一意照会の実行結果の入ったマップ
	 * @param	rsltShosaMap	
	 * @param	idoDiv			異動区分
	 * @return					番ポ工事登録S-IF用入力マップ
	 * @throws	Throwable		任意の例外
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShosaOkHTelBanpo(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			int userDataIndex,
			HashMap<String, Object> rsltShokai,
			// OM-2021-0001122 MOD START
			//HashMap<String, Object> rsltShosaMap
			HashMap<String, Object> rsltShosaMap,
			String idoDiv
			// OM-2021-0001122 MOD END
	) throws Throwable
	{
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = new ArrayList();;
		ArrayList<HashMap> workEKK0191A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0191A010);

		//↓↓↓2012-05-02有効、巻@電話手続き取込み対応↓↓↓
		// 番ポ工事登録　入力マッピング
		for (int i = 0; null != workEKK0191A010Array && i < workEKK0191A010Array.size(); i++)
		{
			CAANMsg[] wkTemplatesEKK0191A010 = getWorkData(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, (Map)workEKK0191A010Array.get(i));
			CAANMsg childTemplateEKK0191A010 = wkTemplatesEKK0191A010[0];

			// 番ポ工事有無が有の場合に実行
			if("1".equals(childTemplateEKK0191A010.getString(EKK0191A010CBSMsg1List.BMP_UM)))
			{
				for (int j = 0; j < BANPO_MAP_KEY_LIST.length; j++)
				{
					// 番ポ工事登録に必要な情報のマッピング
					HashMap<String, Object> wkRsltShokaiMap = editMap4ShokaiBanpo(param, rsltShokai, BANPO_MAP_KEY_LIST[j], userDataIndex, childTemplateEKK0191A010);

					// 番ポ工事登録に必要な情報を取得
					HashMap<String, Object> wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, BANPO_MAP_KEY_LIST[j]);
					rsltShokai.putAll(wkRsltShokai);
				}

				CAANMsg[] wkTemplatesECK0201B001 = null;
				CAANMsg[] wkTemplatesEZM0091A010 = null;
				CAANMsg[] wkTemplatesEZM0121A010 = null;
				CAANMsg[] wkTemplatesEZM0301A010 = null;
				CAANMsg[] wkTemplatesETU0021B010 = null;
				CAANMsg[] wkTemplatesETU0121B011 = null;
				CAANMsg[] wkTemplatesEKK0251B003 = null;
				// AMK-4494-00-00 ADD START
				CAANMsg[] wkTemplatesETU0101B020 = null;
				CAANMsg[] wkTemplatesEZM0321A010_2 = null;
				CAANMsg[] wkTemplatesEZM0321A010_3 = null;
				// AMK-4494-00-00 ADD END
				
				// 連絡先一覧照会
				ArrayList<HashMap> workECK0201B001Array = (ArrayList<HashMap>) rsltShokai.get(MAP_KEY_ECK0201B001);
				wkTemplatesECK0201B001 = (workECK0201B001Array == null ? null : getWorkData(ECK0201B001CBSMsg.ECK0201B001CBSMSG1LIST, (Map)workECK0201B001Array.get(0)));

				//↓↓↓2012-07-12追加、ST2-2012-0001378対応↓↓↓
				String rrksTelno = "";

				for (int r = 0; null != wkTemplatesECK0201B001 && r < wkTemplatesECK0201B001.length; r++)
				{
					String rrk_way_cd = wkTemplatesECK0201B001[r].getString(ECK0201B001CBSMsg1List.RRK_WAY_CD);
					if (JCKStrConst.RRK_WAY_CD_TELNO.equals(rrk_way_cd))
					{
						rrksTelno = wkTemplatesECK0201B001[r].getString(ECK0201B001CBSMsg1List.TELNO);
						break;
					}
				}
				//↑↑↑2012-07-12追加、ST2-2012-0001378対応↑↑↑

				// 住所対象番号区画一意照会
				ArrayList<HashMap> workEZM0091A010Array = (ArrayList<HashMap>) rsltShokai.get(MAP_KEY_EZM0091A010);
				wkTemplatesEZM0091A010 = (workEZM0091A010Array == null ? null : getWorkData(EZM0091A010CBSMsg.EZM0091A010CBSMSG1LIST, (Map)workEZM0091A010Array.get(0)));

				// 電話番号一意照会
				ArrayList<HashMap> workEZM0121A010Array = (ArrayList<HashMap>) rsltShokai.get(MAP_KEY_EZM0121A010);
				wkTemplatesEZM0121A010 = (workEZM0121A010Array == null ? null : getWorkData(EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST, (Map)workEZM0121A010Array.get(0)));
				CAANMsg childEZM0121A010 = (null != wkTemplatesEZM0121A010 && 0 < wkTemplatesEZM0121A010.length ? wkTemplatesEZM0121A010[0] : null);

				// 局番一意照会
				ArrayList<HashMap> workEZM0301A010Array = (ArrayList<HashMap>) rsltShokai.get(MAP_KEY_EZM0301A010);
				wkTemplatesEZM0301A010 = (workEZM0301A010Array == null ? null : getWorkData(EZM0301A010CBSMsg.EZM0301A010CBSMSG1LIST, (Map)workEZM0301A010Array.get(0)));
				CAANMsg childEZM0301A010 = (null != wkTemplatesEZM0301A010 && 0 < wkTemplatesEZM0301A010.length ? wkTemplatesEZM0301A010[0] : null);

				// 同番移転一覧照会
				ArrayList<HashMap> workETU0021B010Array = (ArrayList)rsltShokai.get(MAP_KEY_ETU0021B010);
				wkTemplatesETU0021B010 = (workETU0021B010Array == null ? null : getWorkData(ETU0021B010CBSMsg.ETU0021B010CBSMSG1LIST, (Map)workETU0021B010Array.get(0)));

// ANK-4494-00-00 Step2 廃止スキーマ対応 20241113 星野 DEL START
//				// 番ポ工事申込事業者番号取得
//				ArrayList<HashMap> workETU0121B011Array = (ArrayList)rsltShokai.get(MAP_KEY_ETU0121B011);
//				wkTemplatesETU0121B011 = (workETU0121B011Array == null ? null : getWorkData(ETU0121B011CBSMsg.ETU0121B011CBSMSG1LIST, (Map)workETU0121B011Array.get(0)));
// ANK-4494-00-00 Step2 廃止スキーマ対応 20241113 星野 DEL END

				// サービス契約回線内訳一意照会
				ArrayList<HashMap> workEKK0251B003Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0251B003);
				wkTemplatesEKK0251B003 = (workEKK0251B003Array == null ? null : getWorkData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, (Map)workEKK0251B003Array.get(0)));

				// AMK-4494-00-00 ADD START
				// 局番別NTT収容局一覧照会を行う
				ArrayList<HashMap> workETU0101B020Array = (ArrayList)rsltShokai.get(MAP_KEY_ETU0101B020);
				wkTemplatesETU0101B020 = (workETU0101B020Array == null ? null : getWorkData(ETU0101B020CBSMsg.ETU0101B020CBSMSG1LIST, (Map)workETU0101B020Array.get(0)));
				
				// 業務パラメータ管理一意照会を行う("SC_ENUMSOD_DOMAIN")
				ArrayList<HashMap> workEZM0321A010_2Array = (ArrayList)rsltShokai.get(MAP_KEY_EZM0321A010_2);
				wkTemplatesEZM0321A010_2 = (workEZM0321A010_2Array == null ? null : getWorkData(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, (Map)workEZM0321A010_2Array.get(0)));
				
				// 業務パラメータ管理一意照会を行う("TU_BMP_TNT_TELNO")
				ArrayList<HashMap> workEZM0321A010_3Array = (ArrayList)rsltShokai.get(MAP_KEY_EZM0321A010_3);
				wkTemplatesEZM0321A010_3 = (workEZM0321A010_3Array == null ? null : getWorkData(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, (Map)workEZM0321A010_3Array.get(0)));
				// AMK-4494-00-00 ADD END

				wkCaanMsgList = shosaOkMapper.editInMsgETU0011D010(
						param,
						childTemplateEKK0191A010,
						wkTemplatesEKK0251B003[0],
						rrksTelno,
						wkTemplatesEZM0091A010,
						childEZM0121A010,
						childEZM0301A010,
						wkTemplatesETU0021B010,
						// OM-2021-0001122 MOD START
						//wkTemplatesETU0121B011
						wkTemplatesETU0121B011,
						//AMK-4494-00-00 MOD START
//						idoDiv
						// OM-2021-0001122 MOD END
						idoDiv,
						wkTemplatesETU0101B020,
						wkTemplatesEZM0321A010_2,
						wkTemplatesEZM0321A010_3
						//AMK-4494-00-00 MOD END

				);
				rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
				wkMapArray.add(rslt);

				// 番ポ工事登録用のデータ取得結果をクリア（２番号めも確実動作するよう）
				for (int j = 0; j < BANPO_MAP_KEY_LIST.length; j++)
				{
					for (int k = 0; k < BANPO_MAP_KEY_LIST[j].length; k++)
					{
						rsltShokai.remove(BANPO_MAP_KEY_LIST[j][k]);
					}
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_ETU0011D010, wkMapArray);
		//↑↑↑2012-05-02有効、巻@電話手続き取込み対応↑↑↑

		return rsltShosaMap;
	}
	

// ANK-4494-00-00 STEP2 ADD START
	/**
	 * 電話番号マスタ更新S-IFの入力マッピング<br>
	 * <br>
	 * @param	param			リクエストパラメータ一式
	 * @param	handle			ハンドル
	 * @param	userDataIndex	照査処理リストのインデックス（trgt_data_list のインデックス）
	 * @param	rsltShokai		全ての一覧照会および一意照会の実行結果の入ったマップ
	 * @param	rsltShosaMap	
	 * @param	idoDiv			異動区分
	 * @return					電話番号マスタ更新S-IF用入力マップ
	 * @throws	Throwable		任意の例外
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShosaOkHTelTelno(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			int userDataIndex,
			HashMap<String, Object> rsltShokai,
			HashMap<String, Object> rsltShosaMap,
			String idoDiv
	) throws Throwable
	{
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = new ArrayList();;
		ArrayList<HashMap> workEKK0191A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0191A010);

		// 番ポ工事有無を取得
		for (int i = 0; null != workEKK0191A010Array && i < workEKK0191A010Array.size(); i++)
		{
			CAANMsg[] wkTemplatesEKK0191A010 = getWorkData(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, (Map)workEKK0191A010Array.get(i));
			CAANMsg childTemplateEKK0191A010 = wkTemplatesEKK0191A010[0];

			// 番ポ工事有無が有の場合に実行
			if("1".equals(childTemplateEKK0191A010.getString(EKK0191A010CBSMsg1List.BMP_UM)))
			{
				for (int j = 0; j < TELNO_MAP_KEY_LIST.length; j++)
				{
					// 電話番号更新に必要な情報のマッピング
					HashMap<String, Object> wkRsltShokaiMap = editMap4ShokaiTelno(param, rsltShokai, TELNO_MAP_KEY_LIST[j], userDataIndex, childTemplateEKK0191A010);

					// 電話番号更新に必要な情報を取得
					HashMap<String, Object> wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, TELNO_MAP_KEY_LIST[j]);
					rsltShokai.putAll(wkRsltShokai);
				}

				CAANMsg[] wkTemplatesEZM0121A010 = null;

				// 電話番号一意照会
				ArrayList<HashMap> workEZM0121A010Array = (ArrayList<HashMap>) rsltShokai.get(MAP_KEY_EZM0121A010);
				wkTemplatesEZM0121A010 = (workEZM0121A010Array == null ? null : getWorkData(EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST, (Map)workEZM0121A010Array.get(0)));
				CAANMsg childEZM0121A010 = (null != wkTemplatesEZM0121A010 && 0 < wkTemplatesEZM0121A010.length ? wkTemplatesEZM0121A010[0] : null);

				// 電話番号．個人法人番号帯コードが法人の場合にマッピングする
				if("2".equals(childEZM0121A010.getString(EZM0121A010CBSMsg1List.KOJIN_HOJIN_TLN_TAI_CD)))
				{
					wkCaanMsgList = shosaOkMapper.editInMsgEZM0121C010(param, childEZM0121A010);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}

				// 電話番号用のデータ取得結果をクリア（２番号めも確実動作するよう）
				for (int j = 0; j < TELNO_MAP_KEY_LIST.length; j++)
				{
					for (int k = 0; k < TELNO_MAP_KEY_LIST[j].length; k++)
					{
						rsltShokai.remove(TELNO_MAP_KEY_LIST[j][k]);
					}
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EZM0121C010, wkMapArray);

		return rsltShosaMap;
	}
	
// ANK-4494-00-00 STEP2 ADD END
	
	/**
	 * 照査OK時のeoモバイルのマッピング処理です。
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @param idoDiv 異同区分
	 * @return 実行結果
	 * @throws RequestParameterException 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShosaOkMoba(SessionHandle handle, IRequestParameterReadWrite param, 
			int userDataIndex, HashMap<String, Object> rsltShokai, String idoDiv) 
	throws Throwable
	{
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK0121A010Array = null;	// サービス契約<eoモバイル>一意照会
		ArrayList<HashMap> workEKK0201A010Array = null;	// サービス契約内訳<eoモバイル>一意照会
		ArrayList<HashMap> workEKK0361A010Array = null;	// オプションサービス契約<ISP>一意照会
		ArrayList<HashMap> workEKK0411A010Array = null;	// サブオプションサービス契約＜ISP＞一意照会

		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		
		// 一意照会、一覧照会の結果データを取得
		workEKK0121A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0121A010);
		workEKK0201A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0201A010);
		workEKK0361A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0361A010);
		workEKK0411A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0411A010);

		//↓↓↓2012-04-23追加　巻@　指示書CC取込み対応↓↓↓
		ArrayList<String> opSvcKeiNoB001 = new ArrayList<String>();
		ArrayList<String> opSvcKeiNoB002 = new ArrayList<String>();
		//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑

		// サービス契約＜eoモバイル＞照査
		wkMapArray = new ArrayList();
		if (workEKK0121A010Array != null) 
		{
			for (int i = 0; i < workEKK0121A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0121A010CBSMsg.EKK0121A010CBSMSG1LIST, (Map)workEKK0121A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					wkCaanMsgList = shosaOkMapper.editInMsgEKK0121C010(param, childTemplate, idoDiv);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0121C010, wkMapArray);

//↓↓↓2012-12-10無効　ロット２ST2-2012-0001328（締結済まで進めない）↓↓↓
//		// サービス契約＜eoモバイル＞締結
//		wkMapArray = new ArrayList();
//		if (workEKK0121A010Array != null) 
//		{
//			for (int i = 0; i < workEKK0121A010Array.size(); i++)
//			{
//				CAANMsg[] wkTenplates = getWorkData(EKK0121A010CBSMsg.EKK0121A010CBSMSG1LIST, (Map)workEKK0121A010Array.get(i));
//				for (int j = 0; j < wkTenplates.length; j++)
//				{
//					CAANMsg childTemplate = wkTenplates[j];
//					wkCaanMsgList = shosaOkMapper.editInMsgEKK0121C020(param, childTemplate, idoDiv);
//					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
//					wkMapArray.add(rslt);
//				}
//			}
//		}
//		rsltShosaMap.put(MAP_KEY_EKK0121C020, wkMapArray);
//
//		// サービス契約内訳<eoモバイル>照査締結
//		wkMapArray = new ArrayList();
//		if (workEKK0201A010Array != null) 
//		{
//			for (int i = 0; i < workEKK0201A010Array.size(); i++)
//			{
//				CAANMsg[] wkTenplates = getWorkData(EKK0201A010CBSMsg.EKK0201A010CBSMSG1LIST, (Map)workEKK0201A010Array.get(i));
//				for (int j = 0; j < wkTenplates.length; j++)
//				{
//					CAANMsg childTemplate = wkTenplates[j];
//					wkCaanMsgList = shosaOkMapper.editInMsgEKK0201C030(param, childTemplate, idoDiv);
//					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
//					wkMapArray.add(rslt);
//					
//					ninsho_id = childTemplate.getString(EKK0201A010CBSMsg1List.SPOT_LOGIN_SYSID);
//				}
//			}
//		}
//		rsltShosaMap.put(MAP_KEY_EKK0201C030, wkMapArray);
//
//		// オプションサービス契約<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];
//					wkCaanMsgList = shosaOkMapper.editInMsgEKK0361C030(param, childTemplate, idoDiv);
//					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
//					wkMapArray.add(rslt);
//					//↓↓↓2012-04-23追加　巻@　指示書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 ("B001".equals(op_svc_cd))		//Ｅメールオプション？
//					{
//						opSvcKeiNoB001.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
//					}
//					else if ("B002".equals(op_svc_cd))		//Myホームページオプション？
//					{
//						opSvcKeiNoB002.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
//					}
//					//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑
//				}
//			}
//		}
//		rsltShosaMap.put(MAP_KEY_EKK0361C030, wkMapArray);
//
//		// サブオプションサービス契約<ISP>照査締結
//		wkMapArray = new ArrayList();
//		if (workEKK0411A010Array != null) 
//		{
//			for (int i = 0; i < workEKK0411A010Array.size(); i++)
//			{
//				CAANMsg[] wkTenplates = getWorkData(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST, (Map)workEKK0411A010Array.get(i));
//				for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
//				{
//					CAANMsg childTemplate = wkTenplates[j];
//					wkCaanMsgList = shosaOkMapper.editInMsgEKK0411C040(param, childTemplate, idoDiv);
//					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
//					wkMapArray.add(rslt);
//				}
//			}
//		}
//		rsltShosaMap.put(MAP_KEY_EKK0411C040, wkMapArray);
/** ***************************************************************************************************** */
		//サービス契約内訳＜eoモバイル＞照査
		wkMapArray = new ArrayList();
		if (workEKK0201A010Array != null) 
		{
			for (int i = 0; i < workEKK0201A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0201A010CBSMsg.EKK0201A010CBSMSG1LIST, (Map)workEKK0201A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					wkCaanMsgList = shosaOkMapper.editInMsgEKK0201C010(param, childTemplate, idoDiv);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
					
					//外接品質向上対応No11（eoモバイルで認証ＩＤは不要　2013-05-05）
					//ninsho_id = childTemplate.getString(EKK0201A010CBSMsg1List.SPOT_LOGIN_SYSID);
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0201C010, wkMapArray);
		
		//オプションサービス契約＜eoモバイル＞照査
		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];
					wkCaanMsgList = shosaOkMapper.editInMsgEKK0361C010(param, childTemplate, idoDiv);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
					//↓↓↓2012-04-23追加　巻@　指示書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 ("B001".equals(op_svc_cd))		//Ｅメールオプション？
					{
						opSvcKeiNoB001.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
					}
					else if ("B002".equals(op_svc_cd))		//Myホームページオプション？
					{
						opSvcKeiNoB002.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
					}
					//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0361C010, wkMapArray);
		
		//サブオプションサービス契約＜eoモバイル＞照査
		wkMapArray = new ArrayList();
		if (workEKK0411A010Array != null) 
		{
			for (int i = 0; i < workEKK0411A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST, (Map)workEKK0411A010Array.get(i));
				for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					wkCaanMsgList = shosaOkMapper.editInMsgEKK0411C020(param, childTemplate, idoDiv);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0411C020, wkMapArray);
//↑↑↑2012-12-10無効　ロット２ST2-2012-0001328（締結済まで進めない）↑↑↑

		//↓↓↓2012-04-23追加　巻@　指示書CC取込み対応↓↓↓
		String[] v1 = new String[opSvcKeiNoB001.size()];
		String[] v2 = new String[opSvcKeiNoB002.size()];
		// 連携データ区分 03 ：POPIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKSvkeiShosaConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_POPID,
				JKKAddSjishoConst.TRN_KBN_ADD,
				opSvcKeiNoB001.toArray(v1),
				currentSysid
		);
		// 連携データ区分 04 ：WEBIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKSvkeiShosaConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_WEBID,
				JKKAddSjishoConst.TRN_KBN_ADD,
				opSvcKeiNoB002.toArray(v2),
				currentSysid
		);
		//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑
		
		return rsltShosaMap;
	}

	/**
	 * 照査OK時のeoADSLのマッピング処理です。<br>
	 * <br>
	 * @param	param			モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	userDataIndex	param内の業務データのインデックス
	 * @param	rsltShokai		一意照会、一覧照会の結果データ
	 * @param	idoDiv			異同区分
	 * @param	canCncSvcKei 	
	 * @return					実行結果
	 * @throws	RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShosaOkAdsl(
			IRequestParameterReadWrite param,
			int userDataIndex,
			HashMap<String, Object> rsltShokai,
			String idoDiv,
			boolean canCncSvcKei
	) throws RequestParameterException
	{
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK0141A010Array = null;		// サービス契約<eoADSL>一意照会
		ArrayList<HashMap> workEKK0221A010Array = null;		// サービス契約内訳<eoADSL>一意照会
		ArrayList<HashMap> workEKK0361A010Array = null;		// オプションサービス契約<ISP>一意照会
		ArrayList<HashMap> workEKK0411A010Array = null;		// サブオプションサービス契約＜ISP＞一意照会

		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;

		// 一意照会、一覧照会の結果データを取得
		workEKK0141A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0141A010);
		workEKK0221A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0221A010);
		workEKK0361A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0361A010);
		workEKK0411A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0411A010);

		//↓↓↓2012-04-23追加　巻@　指示書CC取込み対応↓↓↓
		ArrayList<String> opSvcKeiNoB001 = new ArrayList<String>();
		ArrayList<String> opSvcKeiNoB002 = new ArrayList<String>();
		ArrayList<String> svcKeiUcwkNo   = new ArrayList<String>();
		//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑

		// サービス契約＜eoADSL＞照査
		wkMapArray = new ArrayList();
		if (workEKK0141A010Array != null) 
		{
			for (int i = 0; i < workEKK0141A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0141A010CBSMsg.EKK0141A010CBSMSG1LIST, (Map)workEKK0141A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					wkCaanMsgList = shosaOkMapper.editInMsgEKK0141C010(param, childTemplate, idoDiv);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK0141C010, wkMapArray);

		// ****************************************************
		// ＧＯ　ＴＯ　照査済
		// ****************************************************
		if (!canCncSvcKei)			//2012-01-27
		{
			// サービス契約内訳＜eoADSL＞照査
			wkMapArray = new ArrayList();
			if (workEKK0221A010Array != null) 
			{
				for (int i = 0; i < workEKK0221A010Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EKK0221A010CBSMsg.EKK0221A010CBSMSG1LIST, (Map)workEKK0221A010Array.get(i));
					for (int j = 0; j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0221C010(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
						svcKeiUcwkNo.add(childTemplate.getString(EKK0171A010CBSMsg1List.SVC_KEI_UCWK_NO));	//←←←2012-04-23追加　巻@　指示書CC取込み対応
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0221C010, wkMapArray);

			// オプションサービス契約<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];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0361C010(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
						//↓↓↓2012-04-23追加　巻@　指示書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 ("B001".equals(op_svc_cd))
						{
							opSvcKeiNoB001.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						}
						// +++++++++++++++++++++++++++++++
						// Ｍｙホームページオプション？
						// +++++++++++++++++++++++++++++++
						else if ("B002".equals(op_svc_cd))
						{
							opSvcKeiNoB002.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						}
						//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0361C010, wkMapArray);

			// サブオプションサービス契約<ISP>照査
			wkMapArray = new ArrayList();
			if (workEKK0411A010Array != null) 
			{
				for (int i = 0; i < workEKK0411A010Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST, (Map)workEKK0411A010Array.get(i));
					for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0411C020(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0411C020, wkMapArray);
		}
		//2012-01-27 IT1-589 対応↓↓↓
		// ****************************************************
		// ＧＯ　ＴＯ　締結済
		// ****************************************************
		else
		{
			// サービス契約＜eoADSL＞締結
			wkMapArray = new ArrayList();
			if (workEKK0141A010Array != null) 
			{
				for (int i = 0; i < workEKK0141A010Array.size(); i++)
				{
					CAANMsg[] wkTemplates = getWorkData(EKK0141A010CBSMsg.EKK0141A010CBSMSG1LIST, (Map)workEKK0141A010Array.get(i));
					for (int j = 0; j < wkTemplates.length; j++)
					{
						rslt = JKKSvkeiShosaCncMapper.editInMsgEKK0141C020(param, wkTemplates[j], idoDiv);
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0141C020, wkMapArray);
	
			// サービス契約内訳<eoADSL>照査締結
			wkMapArray = new ArrayList();
			if (workEKK0221A010Array != null) 
			{
				for (int i = 0; i < workEKK0221A010Array.size(); i++)
				{
					CAANMsg[] wkTemplates = getWorkData(EKK0221A010CBSMsg.EKK0221A010CBSMSG1LIST, (Map)workEKK0221A010Array.get(i));
					for (int j = 0; j < wkTemplates.length; j++)
					{
						rslt = JKKSvkeiShosaCncMapper.editInMsgEKK0221C030(param, wkTemplates[j], idoDiv);
						wkMapArray.add(rslt);
						svcKeiUcwkNo.add(wkTemplates[j].getString(EKK0171A010CBSMsg1List.SVC_KEI_UCWK_NO));	//←←←2012-04-23追加　巻@　指示書CC取込み対応
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0221C030, wkMapArray);

			// オプションサービス契約<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];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0361C030(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
						//↓↓↓2012-04-23追加　巻@　指示書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 ("B001".equals(op_svc_cd))
						{
							opSvcKeiNoB001.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						}
						// +++++++++++++++++++++++++++++++
						// Ｍｙホームページオプション？
						// +++++++++++++++++++++++++++++++
						else if ("B002".equals(op_svc_cd))
						{
							opSvcKeiNoB002.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));
						}
						//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0361C030, wkMapArray);

			// サブオプションサービス契約<ISP>照査締結
			wkMapArray = new ArrayList();
			if (workEKK0411A010Array != null) 
			{
				for (int i = 0; i < workEKK0411A010Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST, (Map)workEKK0411A010Array.get(i));
					for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0411C040(param, childTemplate, idoDiv);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
				}
			}
			rsltShosaMap.put(MAP_KEY_EKK0411C040, wkMapArray);
		}
		//2012-01-27 IT1-589 対応↑↑↑

		//↓↓↓2012-04-23追加　巻@　指示書CC取込み対応↓↓↓
		// 連携データ区分 05 ：認証ＩＤの情報
		String[] v0 = new String[svcKeiUcwkNo.size()];
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKSvkeiShosaConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_NINSHO_ID,
				JKKAddSjishoConst.TRN_KBN_ADD,
				svcKeiUcwkNo.toArray(v0),
				currentSysid
		);
		String[] v1 = new String[opSvcKeiNoB001.size()];
		String[] v2 = new String[opSvcKeiNoB002.size()];
		// 連携データ区分 03 ：POPIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKSvkeiShosaConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_POPID,
				JKKAddSjishoConst.TRN_KBN_ADD,
				opSvcKeiNoB001.toArray(v1),
				currentSysid
		);
		// 連携データ区分 04 ：WEBIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKSvkeiShosaConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_WEBID,
				JKKAddSjishoConst.TRN_KBN_ADD,
				opSvcKeiNoB002.toArray(v2),
				currentSysid
		);
		//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑

		return rsltShosaMap;
	}
	
	
	/**
	 * ADSL工事登録処理です。
	 * 
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @return void
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void addAdslKoji(SessionHandle handle, 
							IRequestParameterReadWrite param, 
							int userDataIndex,
							HashMap<String, Object> rsltShokai) 
	throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		List<CAANMsg> wkCaanMsgList = null;
		HashMap<String, Object> rslt = null;
		Map<?, ?> rsltEKK0621D010 = null;		// ADSL工事登録
		ArrayList<HashMap> workArray = null;
		CAANMsg[] msgWorkArray = null;
		CAANMsg msgECK0011A010 = null;			// お客様
		CAANMsg msgEKK0011A010 = null;			// 申込
		CAANMsg msgEKK0021A010 = null;			// 申込明細
//		CAANMsg msgEKK0081A010 = null;			// サービス契約		2011-12-29未使用につき無効化
		CAANMsg msgEKK0141A010 = null;			// サービス契約＜eoADSL＞
		CAANMsg msgEKK0221A010 = null;			// サービス契約内訳＜eoADSL＞
		CAANMsg msgEKK0251B003 = null;			// サービス契約回線内訳
		boolean adslModemTkUm = false;			// ADSLモデム有無フラグ（True：モデム有り、False：モデム無し)
		String rrksMlad = "";		// 連絡先メールアドレス
		String rrksTel = "";		// 連絡先電話番号
		String rrksFax = "";		// 連絡先FAX番号
		
		// お客様データを取得
		msgWorkArray = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0011A010);
		msgECK0011A010 = msgWorkArray[0];
		
		// 連絡先データを取得
		msgWorkArray = getWorkParentData(ECK0201B001CBSMsg.ECK0201B001CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0201B001);
		if (0 < msgWorkArray.length)
		{
			for (int j = 0; j < msgWorkArray.length; j++)
			{
				CAANMsg childTemplate = msgWorkArray[j];
				String rrkWayCd = childTemplate.getString(ECK0201B001CBSMsg1List.RRK_WAY_CD);
				
				if (RRK_WAY_CD_MLAD.equals(rrkWayCd))
				{
					rrksMlad = childTemplate.getString(ECK0201B001CBSMsg1List.MLAD);
				}
				else if (RRK_WAY_CD_TEL.equals(rrkWayCd))
				{
					rrksTel = childTemplate.getString(ECK0201B001CBSMsg1List.TELNO);
				}
				else if (RRK_WAY_CD_FAX.equals(rrkWayCd))
				{
					rrksFax = childTemplate.getString(ECK0201B001CBSMsg1List.FAX_NO);
				}
			}
		}

		// 申込データを取得
		msgWorkArray = getWorkParentData(EKK0011A010CBSMsg.EKK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0011A010);
		msgEKK0011A010 = msgWorkArray[0];
		
		// 申込明細データを取得
		msgWorkArray = getWorkParentData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0021A010);
		msgEKK0021A010 = msgWorkArray[0];
		
//		// サービス契約データを取得		2011-12-29、未使用につき無効化
//		msgWorkArray = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
//		msgEKK0081A010 = msgWorkArray[0];
		
		// サービス契約＜eoADSL＞データを取得
		workArray = (ArrayList)rsltShokai.get(MAP_KEY_EKK0141A010);
		if (workArray != null)
		{
			if (0 < workArray.size())
			{
				msgWorkArray = getWorkData(EKK0141A010CBSMsg.EKK0141A010CBSMSG1LIST, (Map)workArray.get(0));
				if (0 < msgWorkArray.length)
				{
					msgEKK0141A010 = msgWorkArray[0];
				}
			}
		}

		// サービス契約内訳＜eoADSL＞データを取得
		workArray = (ArrayList)rsltShokai.get(MAP_KEY_EKK0221A010);
		if (workArray != null)
		{
			if (0 < workArray.size())
			{
				msgWorkArray = getWorkData(EKK0221A010CBSMsg.EKK0221A010CBSMSG1LIST, (Map)workArray.get(0));
				if (0 < msgWorkArray.length)
				{
					msgEKK0221A010 = msgWorkArray[0];
				}
			}
		}

		// サービス契約回線内訳データを取得
		workArray = (ArrayList)rsltShokai.get(MAP_KEY_EKK0251B003);
		if (workArray != null)
		{
			if (0 < workArray.size())
			{
				msgWorkArray = getWorkData(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST, (Map)workArray.get(0));
				if (0 < msgWorkArray.length)
				{
					msgEKK0251B003 = msgWorkArray[0];
				}
			}
		}

		//↓↓↓2012-07-06変更、IT2-2012-0001165対応（EKK0341B022結果による判断からEKK0351B002結果による判断に見直し）↓↓↓
		// ADSLモデム有無判定
		workArray = (ArrayList)rsltShokai.get(MAP_KEY_EKK0351B002);
		for (int i = 0; null != workArray && i < workArray.size(); i++)
		{
			CAANMsg[] wkTemplates = getWorkData(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, (Map)workArray.get(i));
			for (int j = 0; j < wkTemplates.length; j++)
			{
				CAANMsg childTemplate = wkTemplates[j];
				String tmpKktkSvcCd = childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_CD);
				
				if (OP_SVC_CD_ADSL_MODEM_EM.equals(tmpKktkSvcCd))
				{
					adslModemTkUm = true;
					break;
				}
			}
			
			if (adslModemTkUm)
			{
				break;
			}
		}
		//↑↑↑2012-07-06変更、IT2-2012-0001165対応（EKK0341B022結果による判断からEKK0351B002結果による判断に見直し）↑↑↑

		//料金プラン一意照会結果を取得		2011-12-29追加
		CAANMsg msgEKK0591A010 = getWorkParentData(EKK0591A010CBSMsg.EKK0591A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0591A010)[0];

		// ST1-2012-0000139 2012/07/14 start
		//法人の場合は法人連絡先のデータを渡す
		CAANMsg msgECK0041A010 = null;
		CAANMsg[] workECK0011A010 = getWorkParentData(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0011A010);
		if(workECK0011A010 != null){
			CAANMsg childTemplate = workECK0011A010[0];
			// お客様スキーマの照会結果から契約者タイプコードを取得
			String keisyaTypeCd =  childTemplate.getString(ECK0011A010CBSMsg1List.KEISHA_TYPE_CD);
			if(KSH_TYPE_CO_HOJIN.equals(keisyaTypeCd)){
				msgECK0041A010 = getWorkParentData(ECK0041A010CBSMsg.ECK0041A010CBSMSG1LIST, rsltShokai, MAP_KEY_ECK0041A010)[0];
			}
		}
		// ST1-2012-0000139 2012/07/14 end
		
		wkCaanMsgList = shosaOkMapper.editInMsgEKK0621D010(param, 
														userDataIndex, 
														msgECK0011A010, 
														msgEKK0011A010, 
														msgEKK0021A010, 
														msgEKK0591A010, 	//2011-12-29置換
														msgEKK0141A010, 
														msgEKK0221A010, 
														msgEKK0251B003, 
														adslModemTkUm,
														rrksMlad,
														rrksTel,
														rrksFax,
														msgECK0041A010);
		
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		rsltEKK0621D010 = scCall.run(rslt, handle);
		shosaOkMapper.editResultRPEKK0621D010(rsltEKK0621D010, param, userDataIndex);
	}
	
// ANK0546-00-00 2012-07-31 ADD_START
	
	/**
	 * 機器提供サービス契約更新
	 * @param param
	 * @param rsltShokai
	 * @param svcStHisjkCd
	 * 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapKktkSvcUpd(IRequestParameterReadWrite param, Map<String, Object> rsltShokai, String svcStHisjkCd, boolean isNet)
	throws Throwable
	{
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK0341A010Array = null;	
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		boolean setteZmFlg = false;
		// 一意照会の結果データを取得
		workEKK0341A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0341A010);
		
		wkMapArray = new ArrayList();
		if (workEKK0341A010Array != null) 
		{
			for (int i = 0; i < workEKK0341A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST, (Map)workEKK0341A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					
					// 配送依頼指定年月日が未設定の場合のみ処理を行う
					if (isNull(childTemplate.getString(EKK0341A010CBSMsg1List.HAISO_REQ_SHITEI_YMD)))
					{
						wkCaanMsgList = shosaOkMapper.editInMsgEKK0341C230(param, childTemplate, svcStHisjkCd, isNet);
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						wkMapArray.add(rslt);
					}
					else
					{
						setteZmFlg = true;
					}
				}
			}
		}
		// タブレット、クレードルの片方でも設定されている場合は更新処理を行わない
		if (!setteZmFlg)
		{
			rsltShosaMap.put(MAP_KEY_EKK0341C230, wkMapArray);
		}
		return rsltShosaMap;
	}
	
	/**
	 * 機器提供サービス契約更新（eoモバイルハイブリッド４２M時）
	 * @param param
	 * @param handle
	 * @param wkRsltShokai
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> updKktkSvc(IRequestParameterReadWrite param, SessionHandle handle, Map<String, Object> wkRsltShokai) throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		
		// 機器提供サービス契約情報変更S/IF呼出
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		HashMap<String, Object> rsltMap = editMapKktkSvcUpd(param, wkRsltShokai, SVC_STA_JI_HIS_JOKYO_SKCD_2, false);
//		Map<?, ?> rslt = scCall.run(wkMap, handle);
//		errorList.addAll(wkErrorList);
		String updDtm = null;
		ArrayList wkMapArray = null;
		
		wkMapArray = (ArrayList)rsltMap.get(MAP_KEY_EKK0341C230);
		if (wkMapArray != null)
		{
			for (int i = 0; i < wkMapArray.size(); i++)
			{
				Map<?, ?> rslt = null;
				HashMap<String, Object> wkMap = (HashMap)wkMapArray.get(i);
				if (wkMap != null)
				{
					ArrayList<Object> wkErrorList = null;
					CAANMsg[] templates = (CAANMsg[])wkMap.get("templates");
					CAANMsg template = templates[0];
					
					// ２週目以降の場合
					if (updDtm != null)
					{
						template.set("upd_dtm_bf", updDtm);
					}
					
					//SIF実行
					rslt = scCall.run(wkMap, handle);
					
					updDtm = template.getString("upd_dtm");
					wkErrorList = shosaOkMapper.editResultRPEKK0341C230(rslt, param);
					errorList.addAll(wkErrorList);
				}
			}
		}
		return errorList;
	}
	/**
	 * 他事業者割引契約一意照会録mapping
	 * @param param
	 * @param rsltShokai
	 * @param svcStHisjkCd
	 * 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiSmtVal(IRequestParameterReadWrite param, Map<String, Object> rsltShokai, int userDataIndex)
	throws Throwable
	{
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK2441B001Array = null;	// 同一回線内訳使用スマートバリュー設定情報一覧照会
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		
		// 一意照会、一覧照会の結果データを取得
		workEKK2441B001Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK2441B001);
		
		wkMapArray = new ArrayList();
		if (workEKK2441B001Array != null) 
		{
			for (int i = 0; i < workEKK2441B001Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK2441B001CBSMsg.EKK2441B001CBSMSG1LIST, (Map)workEKK2441B001Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					
					wkCaanMsgList = shosaOkMapper.editInMsgEKK2441A010(param, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		
		rsltShosaMap.put(MAP_KEY_EKK2441A010, wkMapArray);
		
		return rsltShosaMap;
	}
	
	/**
	 * 他事業者割引契約対象契約登録mapping
	 * @param param
	 * @param rsltShokai
	 * @param svcStHisjkCd
	 * 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapAddSmtVal(IRequestParameterReadWrite param, Map<String, Object> rsltShokai, int userDataIndex)
	throws Throwable
	{
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK2441A010Array = null;	// 他事業者割引契約一意照会
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		
		// 一意照会、一覧照会の結果データを取得
		workEKK2441A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK2441A010);
		
		wkMapArray = new ArrayList();
		if (workEKK2441A010Array != null) 
		{
			for (int i = 0; i < workEKK2441A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK2441A010CBSMsg.EKK2441A010CBSMSG1LIST, (Map)workEKK2441A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					
					wkCaanMsgList = shosaOkMapper.editInMsgEKK2451D010(param, childTemplate, userDataIndex);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		
		rsltShosaMap.put(MAP_KEY_EKK2451D010, wkMapArray);
		
		return rsltShosaMap;
	}
// ANK0546-00-00 2012-07-31 ADD_END
	
	/**
	 * 業務データの取得処理です。
	 * rsltShokaiに設定されているArrayListの1件目から業務データを取得します。
	 * <br>
	 * @param workMapKey 業務データのマップキー
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @param shokaiMapKey 一意照会、一覧照会のマップキー
	 * @return 業務データ
	 */
	@SuppressWarnings("unchecked")
	protected CAANMsg[] getWorkParentData(String workMapKey, Map<String, Object> rsltShokai, String shokaiMapKey)
	{
		ArrayList wkRsltShokaiArray = null;
		CAANMsg[] templateArray = null;

		wkRsltShokaiArray = (ArrayList)rsltShokai.get(shokaiMapKey);

		if (wkRsltShokaiArray != null && wkRsltShokaiArray.size() > 0)
		{
			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がスローされます 。
	 */
	protected 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 cust_old お客様生年月日
	 * @return
	 */
//	private int getOld(String sysDate, String cust_old)
//	{
//		// 年取得
//		int sysYear = Integer.parseInt(sysDate.substring(0,4));
//		int custYear = Integer.parseInt(cust_old.substring(0,4));
//		
//		// 年齢算出
//		int old = sysYear - custYear;
//		
//		// 月日の判定
//		int sysMmdd = Integer.parseInt(sysDate.substring(4, 8));
//		int custMmdd = Integer.parseInt(cust_old.substring(4, 8));
//		
//		// 現在の月日より誕生日の月日が小さい場合は年齢をに1を引く
//		if(sysMmdd <= custMmdd)
//		{
//			old = old - 1;
//		}
//		
//		return old;
//	}
	
	/**
	 * 照査チェックでエラーが発生した場合、<br>
	 * エラー情報を生成します。<br>
	 * <br>
	 * 
	 * @param workData 業務データ
	 * @return エラー情報
	 */
	private ArrayList<HashMap<String, Object>> chgErrorCd(CAANMsg[] workData)
	{
		ArrayList<HashMap<String, Object>> errorInfoList = new ArrayList<HashMap<String, Object>>();
		for (int i = 0; i < workData.length; i++)
		{
			HashMap<String, Object> errorInfo = new HashMap<String, Object>();
			String shosaTrgCd = workData[i].getString(SHOSA_TRG_CD);		// 照査対象コード
			String shosaRltCd = workData[i].getString(SHOSA_RLT_CD);		// 照査結果コード
			
			if(shosaRltCd.equals(SHOSA_RLT_NG))
			{
				HashMap<String, Object> wkShosaErrorChgData = this.shosaErrorChgTbl.get(shosaTrgCd);
				errorInfo.put(JKKSvkeiShosaConstCC.SHOSA_ERR_SBT_CD, wkShosaErrorChgData.get(JKKSvkeiShosaConstCC.SHOSA_ERR_SBT_CD));
//				errorInfo.put(JKKSvkeiShosaConstCC.SHOSA_ERR_MSG_ID, wkShosaErrorChgData.get(JKKSvkeiShosaConstCC.SHOSA_ERR_MSG_ID));
				errorInfo.put(JKKSvkeiShosaConstCC.SHOSA_ERR_MSG_ID, "");
				errorInfoList.add(errorInfo);
			}
		}
		
		return errorInfoList;
	}
	
	/**
	 * 照査チェック結果を設定します。
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param errorInfoList エラー情報
	 * @return void
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public void setRsltData(IRequestParameterReadWrite param, ArrayList<ArrayList<HashMap<String, Object>>> errorInfoList)
	throws Throwable
	{
		// ユーザデータ情報
		HashMap<String, Object> inMap = (HashMap)param.getData(JKKSvkeiShosaChkConstCC.TEMPLATE_ID);
		
		List shosaList = (List)inMap.get(JKKSvkeiShosaChkConstCC.SHOSA_CHK_LIST);

		for (int i = 0; i < shosaList.size(); i++)
		{
			HashMap<String, Object> svkeiData = (HashMap)shosaList.get(i);
			
			ArrayList<HashMap<String, Object>> rsltData = errorInfoList.get(i);
			svkeiData.put(JKKSvkeiShosaChkConstCC.RSLT_SHOSA_CHK_LIST, rsltData);
		}
	}
	
	/**
	 * 照査エラー変換テーブルにデータを設定します。
	 * 
	 * @param wkErrorChgTbl	照査エラー変換テーブル
	 * @param shosaTrgCd	照査対象エラーコード
	 * @param shosaErrorSbtCd	照査エラー種別コード
	 * @param shosaErrorMsgId	エラーメッセージＩＤ
	 */
	private void setErrorChgTbl(HashMap<String, HashMap<String, Object>> wkErrorChgTbl, 
								String shosaTrgCd,
								String shosaErrorSbtCd,
								String shosaErrorMsgId)
	{
		HashMap<String, Object> errorChgMap = new HashMap<String, Object>();
		
		errorChgMap.put(JKKSvkeiShosaChkConstCC.SHOSA_ERR_SBT_CD, shosaErrorSbtCd);
		errorChgMap.put(JKKSvkeiShosaChkConstCC.SHOSA_ERR_MSG_ID, shosaErrorMsgId);
		wkErrorChgTbl.put(shosaTrgCd, errorChgMap);
	}
	
	/**
	 * ステータスが照査可能（受付済）か判定する。
	 * 
	 * @param stat	ステータス
	 */
	private boolean isChkStat(String stat)
	{
		if(stat.equals(KKTK_SVC_KEI_STAT_010))
		{
			return true;
		}
		
		return false;
	}




//	/**
//	 * 同一利用場所サービス契約一覧照会呼び出し用マップ編集
//	 * 
//	 * @param param リクエストパラメータ
//	 * @param funcCd 機能コード
//	 * @param rsltShokai 各照会結果一式が入るマップ
//	 * @return リクエストパラメータ
//	 * @throws RequestParameterException パラメータ不在の場合に発生
//	 */
//	private IRequestParameterReadWrite editRequestMapEKK0081B009(
//			IRequestParameterReadWrite param, String funcCd, HashMap<String, Object> rsltShokai) throws RequestParameterException
//	{
//		//入力パラメータの準備
//		HashMap<String, Object> inMap = new HashMap<String, Object>();
//
//		//機能コード
//		inMap.put(JCMConstants.FUNC_CODE_KEY, funcCd);
//
//		//入力データ設定
//		String svc_kei_no = null;
//
//		CAANMsg[] workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
//		//サービス契約番号
//		svc_kei_no = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO);
//
//		inMap.put(KKSV0118_KKSV0118OP_KKSV011888SC.KEY_SVC_KEI_NO, svc_kei_no);
//
//		//入力マップをリクエストマップにセット
//		param.setData(KKSV0118_KKSV0118OP.KKSV011888SC, inMap);
//		
//		return param;
//	}





//	/**
//	 * 締結まで進めるかどうかを判定
//	 * 
//	 * @param svcSbtCd 照査対象のサービス契約の種別
//	 * @param ekk0081b009Rslt 同一利用場所サービス契約一覧照会実行結果
//	 * @param pcrsCd 料金コースコード
//	 * @return true:締結OK，false:照査まで
//	 */
//	private boolean judgeAlreadyUseOtherEOH(int svcSbtCd, Map<?, ?> ekk0081b009Rslt, String pcrsCd)
//	{
//		boolean ret = false;
//
//		// マンションタイプは締結を実施する
//		if (isMansion(pcrsCd))
//		{
//			return true;
//		}
//
//		CAANMsg[] wkTemplates = getWorkData(EKK0081B009CBSMsg.EKK0081B009CBSMSG1LIST, ekk0081b009Rslt);
//		
//		for (int i = 0; null != wkTemplates && i < wkTemplates.length; i++)
//		{
//			CAANMsg childTemplate = wkTemplates[i];
//			
//			//同一利用場所のほかのサービス契約のサービス種別を判別
//			String svcCd = childTemplate.getString(KKSV0118_KKSV0118OP_KKSV011888SC_EKK0081B009CBSMsg1List.SVC_CD);
//			String prcGrpCd = childTemplate.getString(KKSV0118_KKSV0118OP_KKSV011888SC_EKK0081B009CBSMsg1List.PRC_GRP_CD);
//			int svcSbt = getSvcSbtCd(svcCd, prcGrpCd);
//			
//			String svcKeiStat = childTemplate.getString(KKSV0118_KKSV0118OP_KKSV011888SC_EKK0081B009CBSMsg1List.SVC_KEI_STAT);
//			
//			//照査対象がeo光ネットでeo光電話を契約されている、照査対象がeo光電話でeo光ネットを契約されている
//			if (	(SVC_SBT_CD_HNET == svcSbtCd && SVC_SBT_CD_HTEL == svcSbt) ||
//					(SVC_SBT_CD_HTEL == svcSbtCd && SVC_SBT_CD_HNET == svcSbt))
//			{
//				//使われているサービス契約が締結済かサービス提供中なら締結OK
//				if (SVC_KEI_STAT_CNC.equals(svcKeiStat) || SVC_KEI_STAT_ACT.equals(svcKeiStat))
//				{
//					ret = true;
//					break;
//				}
//			}
//
//		}
//
//		return ret;
//	}


//	/**
//	 * マンションデータとして締結済までステータス更新可能かを判断する
//	 * @param workEKK0081A010 サービス契約一意照会の結果
//	 * @return 
//	 */
//	private String getMansTushinEquipCd(SessionHandle handle,CAANMsg workEKK0081A010,IRequestParameterReadWrite param, int userDataIndex)  throws Throwable
//	{
//
//		String tkHoshikiKeiNo = null;
//		HashMap<String, Object> mansionData = null;
//		String mansTushinEquipCd = null;
////		String ipHaraidashiCd = null;
//		String mansionBukkenCd = null;
//		
//		//提供方式契約番号の取得
//		tkHoshikiKeiNo = workEKK0081A010.getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO);
//		
//		//提供方式契約番号がNullまたは空文字（未設定）の場合はホームと判断
//		if(tkHoshikiKeiNo==null || "".equals(tkHoshikiKeiNo))
//		{
//			//照査済みまで
//			return "";
//		}
//		
//		//EKK0861B002_マンション情報一覧照会（サービス契約番号）にてマンション情報を取得
//		mansionData = getMantionData(handle ,param, userDataIndex);
//		
//		if(mansionData == null)
//		{
//			//照査済みまで
//			return "";
//		}
//		
//		//マンション通信設備の取得
//		mansTushinEquipCd = (String)mansionData.get(EKK0861B002CBSMsg1List.MANS_TUSHIN_EQUIP_CD);
//		
////		//IP払出の取得
////		ipHaraidashiCd = (String)mansionData.get(EKK0861B002CBSMsg1List.IP_HRADSI_CD);
//		
//		//マンション物件コードの取得
//		mansionBukkenCd = (String)mansionData.get(EKK0861B002CBSMsg1List.MANSION_BUKKEN_CD);
//		
//		//メゾンは除外
//		if("002".equals(mansionBukkenCd))
//		{
//			//照査済みまで
//			return "";
//		}
//
//		//締結済まで
//		return mansTushinEquipCd;
//	}
	
	/**
	 * マンション情報一覧照会（サービス契約番号）の結果を取得
	 * @param param
	 * @param userDataIndex
	 * @return
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getMantionData(
			SessionHandle handle, IRequestParameterReadWrite param, int userDataIndex) throws Throwable
	{
		
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		CAANMsg[] resultCaanMsgList = null;
		CAANMsg eKK0861B002CBSMsgCaanMsg = null;
		CAANMsg[] eKK0861B002CBSMsgCaanMsg1List = null;
		CAANMsg eKK0861B002CBSMsgCaanMsg1ListElement = null;
		ArrayList<HashMap> wkMapArray = null;
		ArrayList<HashMap> resultArray = null;
		HashMap<String, Object> resultArrayElement = null;
		HashMap<String, Object> rsltShokai = null;
		
		// マンション情報一覧照会（サービス契約番号）
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0861B002(param, userDataIndex);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0861B002, wkMapArray);

		// SIFコール
		rsltShokai = runShokai(param, handle, rsltShokaiMap, new String[]{MAP_KEY_EKK0861B002});
		
		//結果の取得
		resultArray = (ArrayList<HashMap>)rsltShokai.get("EKK0861B002");
		
		//結果がなければnull返却
		if(resultArray == null || resultArray.size()==0)
		{
			return null;
		}
		
		//結果の取得
		resultArrayElement = resultArray.get(0);
		resultCaanMsgList = (CAANMsg[])resultArrayElement.get("templates");
		
		eKK0861B002CBSMsgCaanMsg = resultCaanMsgList[0];
		eKK0861B002CBSMsgCaanMsg1List = eKK0861B002CBSMsgCaanMsg.getCAANMsgList(EKK0861B002CBSMsg.EKK0861B002CBSMSG1LIST);
		
		if(eKK0861B002CBSMsgCaanMsg1List == null || eKK0861B002CBSMsgCaanMsg1List.length == 0)
		{
			return null;
		}
		
		eKK0861B002CBSMsgCaanMsg1ListElement = eKK0861B002CBSMsgCaanMsg1List[0];

		return eKK0861B002CBSMsgCaanMsg1ListElement.getMsgData();
	}
	

//	/**
//	 * eoADSLサービス契約について、料金グループコードが‘フレッツADSL’かどうかを判別する
//	 * 
//	 * @param rsltShokai
//	 * @return true:フレッツ，false:eAccess
//	 */
//	private boolean isFletsADSL(HashMap<String, Object> rsltShokai)
//	{
//		boolean ret = false;
//
//		CAANMsg[] wkTemplates = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
//		CAANMsg childTemplate = wkTemplates[0];
//		
//		//料金グループコード
//		String prcGrpCd = childTemplate.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);
//		
//		if (PRC_GRP_CD_FU.equals(prcGrpCd))
//		{
//			ret = true;
//		}
//
//		return ret;
//	}

	/**
	 * マンション判定（光配線を除く）
	 * @param pcrsCd 料金コース
	 * @return true マンション
	 * 			false マンション以外 or 光配線
	 * @throws Throwable 
	 */
	private boolean isMansion(SessionHandle handle, IRequestParameterReadWrite param, int userDataIndex) throws Throwable
	{
		
		//EKK0861B002_マンション情報一覧照会（サービス契約番号）にてマンション情報を取得
		HashMap<String, Object> mansionData = getMantionData(handle ,param, userDataIndex);
		
		if (mansionData == null)
		{
			return false;
		}
		
		//マンション物件コードの取得
		String mansionBukkenCd = (String)mansionData.get(EKK0861B002CBSMsg1List.MANSION_BUKKEN_CD);
		
		if (MANS_BUKKEN_CD_MANS.equals(mansionBukkenCd))
		{
			return true;
		}
		
		
		return false;
	}
	
	/**
	 * マンション光配線かどうか
	 * @param handle
	 * @param param
	 * @param userDataIndex
	 * @param tkhoshikKkeiNo
	 * @return
	 * @throws Throwable
	 */
	private boolean isHikariHaisen(SessionHandle handle, IRequestParameterReadWrite param, String tkhoshikKkeiNo) throws Throwable
	{
		
		// 提供方式契約番号が設定されていない場合は戸建
		if(tkhoshikKkeiNo == null || tkhoshikKkeiNo.length() == 0)
		{
			// 戸建の為FALSEを設定
			return false;
		}
		else
		{
			// マンションの為、光配線MTかそれ以外かを判断する。
			// 提供方式契約番号より提供方式契約を一意照会
			HashMap<String, Object> ekk0891a010Hash = gettkhoshikData(handle, param, tkhoshikKkeiNo);

			// 提供方式契約情報を取り出す
			if (ekk0891a010Hash != null)
			{
				// ▼▼▼ OM-2015-0000223   2015/02/05 光配線の判定に009:旧光直収を追加  MOD START ▼▼▼
				// 提供方式コードが(008：光配線)または(009：旧光直収)の場合
				if(
					TK_HOSHIKI_CD_008.equals((String)ekk0891a010Hash.get(EKK0891A010CBSMsg1List.TK_HOSHIKI_CD)) ||
					TK_HOSHIKI_CD_009.equals((String)ekk0891a010Hash.get(EKK0891A010CBSMsg1List.TK_HOSHIKI_CD)))
				// ▲▲▲ OM-2015-0000223   2015/02/05 光配線の判定に009:旧光直収を追加  MOD  END  ▲▲▲)
				{
					// 光配線の為TRUEを設定
					return true;
				}
			}
		}
		
		return false;
	}
	
	// ANK-3387-00-00 ADD START
	/**
	 * マンション光配線(光コンセント)かどうか
	 * @param handle
	 * @param param
	 * @param userDataIndex
	 * @param tkhoshikKkeiNo
	 * @return
	 * @throws Throwable
	 */
	private boolean isHikariConsent(SessionHandle handle, IRequestParameterReadWrite param, String tkhoshikKkeiNo) throws Throwable
	{
		
		// 提供方式契約番号が設定されていない場合は戸建
		if (tkhoshikKkeiNo == null || tkhoshikKkeiNo.length() == 0)
		{
			// 戸建の為FALSEを設定
			return false;
		}
		else
		{
			// 提供方式契約番号より提供方式契約を一意照会
			HashMap<String, Object> ekk0891a010Hash = gettkhoshikData(handle, param, tkhoshikKkeiNo);
			
			// 提供方式契約情報を取り出す
			if (ekk0891a010Hash != null)
			{
				// 提供方式パターンコードが(51：光コンセント)の場合
				if (TK_HOSHIKI_PATTERN_CD_51.equals((String)ekk0891a010Hash.get(EKK0891A010CBSMsg1List.TK_HOSHIKI_PATTERN_CD)))
				{
					// 光コンセントの為TRUEを設定
					return true;
				}
			}
		}
		
		return false;
	}
	// ANK-3387-00-00 ADD END
	
	/**
	 * 提供方式契約一意照会
	 * @param handle
	 * @param param
	 * @param userDataIndex
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> gettkhoshikData(
			SessionHandle handle, IRequestParameterReadWrite param, String tkhoshikKkeiNo) throws Throwable
	{
		
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		CAANMsg[] resultCaanMsgList = null;
		CAANMsg EKK0891A010CBSMsgCaanMsg = null;
		CAANMsg[] EKK0891A010CBSMsgCaanMsg1List = null;
		CAANMsg EKK0891A010CBSMsgCaanMsg1ListElement = null;
		ArrayList<HashMap> wkMapArray = null;
		ArrayList<HashMap> resultArray = null;
		HashMap<String, Object> resultArrayElement = null;
		HashMap<String, Object> rsltShokai = null;
		
		// 提供方式契約一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0891A010(param, tkhoshikKkeiNo);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0891A010, wkMapArray);

		// SIFコール
		rsltShokai = runShokai(param, handle, rsltShokaiMap, new String[]{MAP_KEY_EKK0891A010});
		
		//結果の取得
		resultArray = (ArrayList<HashMap>)rsltShokai.get("EKK0891A010");
		
		//結果がなければnull返却
		if(resultArray == null || resultArray.size()==0)
		{
			return null;
		}
		
		//結果の取得
		resultArrayElement = resultArray.get(0);
		resultCaanMsgList = (CAANMsg[])resultArrayElement.get("templates");
		
		EKK0891A010CBSMsgCaanMsg = resultCaanMsgList[0];
		EKK0891A010CBSMsgCaanMsg1List = EKK0891A010CBSMsgCaanMsg.getCAANMsgList(EKK0891A010CBSMsg.EKK0891A010CBSMSG1LIST);
		
		if(EKK0891A010CBSMsgCaanMsg1List == null || EKK0891A010CBSMsgCaanMsg1List.length == 0)
		{
			return null;
		}
		
		EKK0891A010CBSMsgCaanMsg1ListElement = EKK0891A010CBSMsgCaanMsg1List[0];

		return EKK0891A010CBSMsgCaanMsg1ListElement.getMsgData();
	}

	// ST1-2012-0000139 2012/07/17 start
	/**
	 *  処理前エイジング対象値の保存
	 */
	@SuppressWarnings("unchecked")
	private void saveBfAgingTgValue(SessionHandle handle, IRequestParameterReadWrite param, 
			HashMap<String, Object> rsltShokai) throws Throwable{
		
		//ISP認証ID
		//サービス契約内訳<eo光ネット>一意照会の情報取得
		ArrayList<HashMap> workEKK0171A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0171A010);
		if (workEKK0171A010Array != null && workEKK0171A010Array.size() > 0)
		{
			CAANMsg[] workEKK0171A010 = getWorkData(EKK0171A010CBSMsg.EKK0171A010CBSMSG1LIST, (Map)workEKK0171A010Array.get(0));
			if(workEKK0171A010 != null && workEKK0171A010.length > 0){
				String bfIspNinshoId = workEKK0171A010[0].getString(EKK0171A010CBSMsg1List.ISP_NINSHO_ID);
				bfAgingWorkMap.put(AGING_SBT_ISP_NINSHO_ID, bfIspNinshoId);
			}
			
		}
		
		//PPP認証ID
		//サービス契約<eo光電話>一意照会
		ArrayList<HashMap> workEKK0111A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0111A010);
		if (workEKK0111A010Array != null && workEKK0111A010Array.size() > 0)
		{
			CAANMsg[] workEKK0111A010 = getWorkData(EKK0111A010CBSMsg.EKK0111A010CBSMSG1LIST, (Map)workEKK0111A010Array.get(0));
			if(workEKK0111A010 != null && workEKK0111A010.length > 0){
				String bfPppNinshoId = workEKK0111A010[0].getString(EKK0111A010CBSMsg1List.PPP_NINSHO_ID);
				
				//20130629 IT1-2013-0000568 add start
				bfPppNinshoId = JKKBpCommon.getAgingNinshoId(bfPppNinshoId);
				//20130629 IT1-2013-0000568 add end
				
				bfAgingWorkMap.put(AGING_SBT_PPP_NINSHO_ID, bfPppNinshoId);
			}
			
		}
		
		//SIPユーザーID　　電話番号
		//サービス契約内訳<eo光電話>一意照会
		ArrayList<HashMap> workEKK0191A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0191A010);
		if (workEKK0191A010Array != null && workEKK0191A010Array.size() > 0)
		{
			for(int i=0; i<workEKK0191A010Array.size(); i++){
				CAANMsg[] workEKK0191A010 = getWorkData(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, (Map)workEKK0191A010Array.get(i));
				if(workEKK0191A010 != null && workEKK0191A010.length > 0){
					String svcKeiUcwkNo = workEKK0191A010[0].getString(EKK0191A010CBSMsg1List.SVC_KEI_UCWK_NO);
					String bfSipUserId = workEKK0191A010[0].getString(EKK0191A010CBSMsg1List.SIP_USER_ID);
					String telno = workEKK0191A010[0].getString(EKK0191A010CBSMsg1List.TELNO);
					bfAgingWorkMap.put(AGING_SBT_SIP_USER_ID + svcKeiUcwkNo, bfSipUserId);
					// 案件対応 ANK-1670-00-00 2013/11/05 MOD START
					// 該当電話契約は番ポ番号かどうかを確認、番ポ番号の場合は電話番号のエイジング対象にならない
					String bmpUm = workEKK0191A010[0].getString(EKK0191A010CBSMsg1List.BMP_UM);
					if (!"1".equals(bmpUm)) {
						bfAgingWorkMap.put(AGING_SBT_TELNO + svcKeiUcwkNo, telno);
					}
					// 案件対応 ANK-1670-00-00 2013/11/05 MOD END
				}
			}
		}
		
		//ADSL認証ID
		//サービス契約内訳<eoADSL>一意照会
		ArrayList<HashMap> workEKK0221A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0221A010);
		if (workEKK0221A010Array != null && workEKK0221A010Array.size() > 0)
		{
			CAANMsg[] workEKK0221A010 = getWorkData(EKK0221A010CBSMsg.EKK0221A010CBSMSG1LIST, (Map)workEKK0221A010Array.get(0));
			if(workEKK0221A010 != null && workEKK0221A010.length > 0){
				String bfAdslNianshoId = workEKK0221A010[0].getString(EKK0221A010CBSMsg1List.ADSL_NINSHO_ID);
				// IT1-2013-0001098 ADSL認証IDにVR識別が付与されていない 2013/04/30 START
				// ADSL認証IDはVR識別なしでエイジング管理する
				if (null != bfAdslNianshoId)
				{
					bfAdslNianshoId = bfAdslNianshoId.split("@")[0];
				}
				// IT1-2013-0001098 ADSL認証IDにVR識別が付与されていない 2013/04/30 END
				bfAgingWorkMap.put(AGING_SBT_ADSL_NINSHO_ID, bfAdslNianshoId);
			}
			
		}
		
		//POPID　WebID　メールアドレス　　メーリングリスト　URL（ドメイン、アカウント）　固定IPアドレス
		//オプションサービス契約<ISP>一意照会
		ArrayList<HashMap> workEKK0361A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0361A010);
		if (workEKK0361A010Array != null && workEKK0361A010Array.size() > 0)
		{
			for(int i=0; i<workEKK0361A010Array.size(); i++){
				CAANMsg[] workEKK0361A010 = getWorkData(EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST, (Map)workEKK0361A010Array.get(i));
				if(workEKK0361A010 != null && workEKK0361A010.length > 0){
					String opSvcKeiNo = workEKK0361A010[0].getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO);
					String bfPopid = workEKK0361A010[0].getString(EKK0361A010CBSMsg1List.POP_ID);
					String bfWebid = workEKK0361A010[0].getString(EKK0361A010CBSMsg1List.WEB_ID);
					String bfMlad = workEKK0361A010[0].getString(EKK0361A010CBSMsg1List.MLAD);
					String bfMllist = workEKK0361A010[0].getString(EKK0361A010CBSMsg1List.MLLIST_NM);
					if(bfMllist != null && !"".equals(bfMllist)){
						//メーリングリストのドメイン部を業務パラメータ管理スキーマから検索
						HashMap<String, Object> wkRsltShokaiMap = new HashMap<String, Object>();
						ArrayList<HashMap<String, Object>> wkMapArray = new ArrayList<HashMap<String,Object>>();
						List<CAANMsg> xList = this.shokaiMapper.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(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EZM0321A010});
						CAANMsg[] workEZM0321A010 = getWorkParentData(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, wkRsltShokai, MAP_KEY_EZM0321A010);
						bfMllist = bfMllist + "@" +workEZM0321A010[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
					}
					String bfUrl = (workEKK0361A010[0].getString(EKK0361A010CBSMsg1List.URL_DOMAIN) == null ? "" : workEKK0361A010[0].getString(EKK0361A010CBSMsg1List.URL_DOMAIN))
							+(workEKK0361A010[0].getString(EKK0361A010CBSMsg1List.URL_ACCOUNT) == null ? "" : workEKK0361A010[0].getString(EKK0361A010CBSMsg1List.URL_ACCOUNT));
					String bfKoteiIpAd = workEKK0361A010[0].getString(EKK0361A010CBSMsg1List.KOTEI_IP_AD);
					bfAgingWorkMap.put(AGING_SBT_POPID + opSvcKeiNo, bfPopid);
					bfAgingWorkMap.put(AGING_SBT_WEBID + opSvcKeiNo, bfWebid);
					bfAgingWorkMap.put(AGING_SBT_MLAD + opSvcKeiNo, bfMlad);
					bfAgingWorkMap.put(AGING_SBT_MLLIST + opSvcKeiNo, bfMllist);
					bfAgingWorkMap.put(AGING_SBT_URL + opSvcKeiNo, bfUrl);
					bfAgingWorkMap.put(AGING_SBT_KOTEI_IP_AD + opSvcKeiNo, bfKoteiIpAd);
				}
			}
		}
		
		//メールエイリアス
		//サブオプションサービス契約＜ISP＞一意照会
		ArrayList<HashMap> workEKK0411A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0411A010);
		if (workEKK0411A010Array != null && workEKK0411A010Array.size() > 0)
		{
			for(int i=0; i<workEKK0411A010Array.size(); i++){
				CAANMsg[] workEKK0411A010 = getWorkData(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST, (Map)workEKK0411A010Array.get(i));
				if(workEKK0411A010 != null && workEKK0411A010.length > 0){
					String bfAlias = workEKK0411A010[0].getString(EKK0411A010CBSMsg1List.ALIAS);
					bfAgingWorkMap.put(AGING_SBT_ALIAS + workEKK0411A010[0].getString(EKK0411A010CBSMsg1List.OP_SVC_KEI_NO)
							+ workEKK0411A010[0].getString(EKK0411A010CBSMsg1List.SBOP_SVC_KEI_NO), bfAlias);
				}
			}
		}
	}
	
	/**
	 * エイジング一覧照会（ユニーク）
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getAgingData(SessionHandle handle, IRequestParameterReadWrite param, 
			String aging_sbt_cd, String aging_tg_value) throws Throwable
	{
		
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		CAANMsg[] resultCaanMsgList = null;
		CAANMsg eZM0111B040CBSMsgCaanMsg = null;
		CAANMsg[] eZM0111B040CBSMsgCaanMsg1List = null;
		CAANMsg eZM0111B040CBSMsgCaanMsg1ListElement = null;
		ArrayList<HashMap> wkMapArray = null;
		ArrayList<HashMap> resultArray = null;
		HashMap<String, Object> resultArrayElement = null;
		HashMap<String, Object> rsltShokai = null;
		
		// エイジング一覧照会（ユニーク）
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEZM0111B040(param, aging_sbt_cd, aging_tg_value);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EZM0111B040, wkMapArray);

		// SIFコール
		rsltShokai = runShokai(param, handle, rsltShokaiMap, new String[]{MAP_KEY_EZM0111B040});
		
		//結果の取得
		resultArray = (ArrayList<HashMap>)rsltShokai.get(MAP_KEY_EZM0111B040);
		
		//結果がなければnull返却
		if(resultArray == null || resultArray.size()==0)
		{
			return null;
		}
		
		//結果の取得
		resultArrayElement = resultArray.get(0);
		resultCaanMsgList = (CAANMsg[])resultArrayElement.get("templates");
		
		eZM0111B040CBSMsgCaanMsg = resultCaanMsgList[0];
		eZM0111B040CBSMsgCaanMsg1List = eZM0111B040CBSMsgCaanMsg.getCAANMsgList(EZM0111B040CBSMsg.EZM0111B040CBSMSG1LIST);
		
		if(eZM0111B040CBSMsgCaanMsg1List == null || eZM0111B040CBSMsgCaanMsg1List.length == 0)
		{
			return null;
		}
		
		eZM0111B040CBSMsgCaanMsg1ListElement = eZM0111B040CBSMsgCaanMsg1List[0];

		return eZM0111B040CBSMsgCaanMsg1ListElement.getMsgData();
	}
	
	/**
	 * オプションサービス契約一意照会 を実行し 異動区分を取得する
	 */
	@SuppressWarnings("unchecked")
	private String getOpSvcKeiIdoDiv(SessionHandle handle, IRequestParameterReadWrite param, 
			String opSvcKeiNo) throws Throwable
	{
		
		HashMap rsltShokaiMap = new HashMap();
		HashMap<String, Object> rslt = null;
		List<CAANMsg> wkCaanMsgList = null;
		CAANMsg[] resultCaanMsgList = null;
		CAANMsg eKK0351A010CBSMsgCaanMsg = null;
		CAANMsg[] eKK0351A010CBSMsgCaanMsg1List = null;
		CAANMsg eKK0351A010CBSMsgCaanMsg1ListElement = null;
		ArrayList<HashMap> wkMapArray = null;
		ArrayList<HashMap> resultArray = null;
		HashMap<String, Object> resultArrayElement = null;
		HashMap<String, Object> rsltShokai = null;
		
		// オプションサービス契約一意照会
		wkMapArray = new ArrayList();
		wkCaanMsgList = shokaiMapper.editInMsgEKK0351A010(param, opSvcKeiNo);
		rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
		wkMapArray.add(rslt);
		rsltShokaiMap.put(MAP_KEY_EKK0351A010, wkMapArray);

		// SIFコール
		rsltShokai = runShokai(param, handle, rsltShokaiMap, new String[]{MAP_KEY_EKK0351A010});
		
		//結果の取得
		resultArray = (ArrayList<HashMap>)rsltShokai.get(MAP_KEY_EKK0351A010);
		
		//結果がなければnull返却
		if(resultArray == null || resultArray.size()==0)
		{
			return null;
		}
		
		//結果の取得
		resultArrayElement = resultArray.get(0);
		resultCaanMsgList = (CAANMsg[])resultArrayElement.get("templates");
		
		eKK0351A010CBSMsgCaanMsg = resultCaanMsgList[0];
		eKK0351A010CBSMsgCaanMsg1List = eKK0351A010CBSMsgCaanMsg.getCAANMsgList(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST);
		
		if(eKK0351A010CBSMsgCaanMsg1List == null || eKK0351A010CBSMsgCaanMsg1List.length == 0)
		{
			return null;
		}
		
		eKK0351A010CBSMsgCaanMsg1ListElement = eKK0351A010CBSMsgCaanMsg1List[0];

		HashMap<String, Object> eKK0351A010CBSMsg1 = eKK0351A010CBSMsgCaanMsg1ListElement.getMsgData();
		
		return (String)eKK0351A010CBSMsg1.get(EKK0351A010CBSMsg1List.IDO_DIV);
	}
	
	/**
	 * エイジング対象登録S-IF を実行する
	 * @param handle
	 * @param param
	 * @param scCall
	 * @param aging_sbt_cd
	 * @param aging_tg_value
	 * @return エラーリスト
	 * @throws Throwable
	 */
	private ArrayList<Object> agingTouroku(SessionHandle handle, IRequestParameterReadWrite param,
			ServiceComponentRequestInvoker scCall, String aging_sbt_cd, String aging_tg_value) throws Throwable{
		HashMap<String, Object> wkMap = JKKSvkeiShosaCncMapper.editInMsgEZM0111D010(param, aging_sbt_cd, aging_tg_value);
		Map<?, ?> rslt = scCall.run(wkMap, handle);
		return JKKSvkeiShosaCncMapper.editResultRPEZM0111D010(rslt, param);
	}
	
	/**
	 * エイジング対象回復S-IF を実行する
	 * @param handle
	 * @param param
	 * @param scCall
	 * @param aging_sbt_cd
	 * @param aging_tg_value
	 * @return エラーリスト
	 * @throws Throwable
	 */
	private ArrayList<Object> agingKaifuku(SessionHandle handle, IRequestParameterReadWrite param,
			ServiceComponentRequestInvoker scCall, String aging_sbt_cd, String aging_tg_value,
			String lastUpdDtmBf) throws Throwable{
		HashMap<String, Object> wkMap = JKKSvkeiShosaCncMapper.editInMsgEZM0111C020(param, aging_sbt_cd, aging_tg_value, lastUpdDtmBf);
		Map<?, ?> rslt = scCall.run(wkMap, handle);
		return JKKSvkeiShosaCncMapper.editResultRPEZM0111C020(rslt, param);
	}
	// ST1-2012-0000139 2012/07/17 end
	
	// 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 = shokaiMapper.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(param, 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
	// IT1-2012-0000928 2012/08/03 start
	/**
	 * エラーチェック処理です。
	 * <br>
	 * @param msgList サービスインタフェース実行結果
	 * return void
	 * @throws Exception 
	 * @throws SCCallException 
	 */
	private void errChk(IRequestParameterReadWrite param, Map<?, ?> msgList, ArrayList<Object> errorList ) 
	throws Exception
	{
		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))
		{
			param.setControlMapData(SCControlMapKeys.ERROR_INFO, errorList);
			String errMsg = "INVALID_RETURN_MESSAGE";
			throw new SCCallException(errMsg, String.valueOf(returnCode), templateStatus);
		}
	}
	// IT1-2012-0000928 2012/08/03 end

	/**
	 * オブジェクトに値が設定されているか判定する
	 * 
	 * @param arg0 判定するオブジェクト
	 * @return オブジェクトに値が設定されていない場合はtrue
	 */
	private boolean isNull(Object arg0) 
	{
		if (arg0 == null) 
		{
			return true;
		}

		return 0 == arg0.toString().length();
	}
	// 20121124 他事業者割引契約対象契約の適用終了処理追加対応 ADD START
	/**
	 * 他事業者割引契約対象契約一覧照会mapping
	 * @param param
	 * @param rsltShokai
	 * @param svcStHisjkCd
	 * 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapEKK2451B001(IRequestParameterReadWrite param, Map<String, Object> rsltShokai, int userDataIndex)
	throws Throwable
	{
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK2441A010Array = null;	// 他事業者割引契約一意照会
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		
		// 一意照会、一覧照会の結果データを取得
		workEKK2441A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK2441A010);
		
		wkMapArray = new ArrayList();
		if (workEKK2441A010Array != null) 
		{
			for (int i = 0; i < workEKK2441A010Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK2441A010CBSMsg.EKK2441A010CBSMSG1LIST, (Map)workEKK2441A010Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					
					wkCaanMsgList = shosaOkMapper.editInMsgEKK2451B001(param, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShosaMap.put(MAP_KEY_EKK2451B001, wkMapArray);
		return rsltShosaMap;
	}
	/**
	 * 他事業者割引契約対象契約適用終了mapping
	 * @param param
	 * @param rsltShokai
	 * @param svcStHisjkCd
	 * 
	 */
	@SuppressWarnings("unchecked")
	// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 START
//	private HashMap<String, Object> editMapTendTajgswkeiTgkei(IRequestParameterReadWrite param, Map<String, Object> rsltShokai, int userDataIndex)
	private HashMap<String, Object> editMapTendTajgswkeiTgkei(IRequestParameterReadWrite param,
			Map<String, Object> rsltShokai, int userDataIndex, boolean isSmtvlKariAdd)
	throws Throwable
	// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 END
	{
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK2451B001Array = null;	// 他事業者割引契約対象契約一覧照会
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		
		// 一意照会、一覧照会の結果データを取得
		workEKK2451B001Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK2451B001);
		// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 START
		// サービス契約一意照会結果取得
		CAANMsg[] workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
		// サービスコード
		String svcCd = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_CD);
		// サービス契約番号
		String svcKeiNo = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 END
		wkMapArray = new ArrayList();
		if (workEKK2451B001Array != null) 
		{
			for (int i = 0; i < workEKK2451B001Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK2451B001CBSMsg.EKK2451B001CBSMSG1LIST, (Map)workEKK2451B001Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					
					// OM-2014-0003754 20150202 解約他事業者通知年月日が設定されている条件は不要のため削除 DEL START
//					// 解約他事業者通知年月日
//					String dslTagjsTchYmd = childTemplate.getString(EKK2451B001CBSMsg1List.DSL_TAJGS_TCH_YMD);
					// OM-2014-0003754 20150202 解約他事業者通知年月日が設定されている条件は不要のため削除 DEL END
					// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 START
//					if (dslTagjsTchYmd != null && !YMD_SHKV.equals(dslTagjsTchYmd))
//					{
//						wkCaanMsgList = shosaOkMapper.editInMsgEKK2451C010(param, childTemplate, userDataIndex);
//						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
//						wkMapArray.add(rslt);
//					}
					String tgkeiSvcCd = childTemplate.getString(EKK2451B001CBSMsg1List.SVC_CD);
					String tgkeiSvcKeiNo = childTemplate.getString(EKK2451B001CBSMsg1List.SVC_KEI_NO);
					// 照査対象と同一のサービスコード、サービス契約番号が照査対象のサービス契約番号ではない場合
					if (svcCd.equals(tgkeiSvcCd) && !svcKeiNo.equals(tgkeiSvcKeiNo))
					{
						// OM-2014-0003754 20150202 解約他事業者通知年月日が設定されている条件は不要のため削除 DEL START
//						// スマートバリューが仮登録の場合、またはスマートバリューが締結済で解約他事業者通知年月日が設定されている場合
//						if (isSmtvlKariAdd
//							|| (!isSmtvlKariAdd && null != dslTagjsTchYmd && !YMD_SHKV.equals(dslTagjsTchYmd)))
//						{
						// OM-2014-0003754 20150202 解約他事業者通知年月日が設定されている条件は不要のため削除 DEL END
							wkCaanMsgList = shosaOkMapper.editInMsgEKK2451C010(param, childTemplate, userDataIndex);
							rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
							wkMapArray.add(rslt);
						// OM-2014-0003754 20150202 解約他事業者通知年月日が設定されている条件は不要のため削除 DEL START
//						}
						// OM-2014-0003754 20150202 解約他事業者通知年月日が設定されている条件は不要のため削除 DEL END
					}
					// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 END
				}
			}
		}
		
		rsltShosaMap.put(MAP_KEY_EKK2451C010, wkMapArray);
		
		return rsltShosaMap;
	}
	
	/**
	 * 他事業者割引契約対象契約の適用終了を行う。
	 * @param handle
	 * @param param
	 * @param wkMap
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> tendTajgswkeiTgkei(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> wkMap) 
	throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		ArrayList<Object> wkErrorList = null;
		
		// 他事業者割引契約対象契約適用終了
		wkErrorList = runShosa(handle, param, wkMap, MAP_KEY_EKK2451C010);
		errorList.addAll(wkErrorList);
		
		return errorList;
	}
	// 20121124 他事業者割引契約対象契約の適用終了処理追加対応 ADD END
	
	// IT1-2013-0000099 2013/01/25 start
	/**
	 * 一覧照会のマッピング処理です。（内訳＜電話＞）
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltShokai 既に実施された一意照会、一覧照会の実行結果
	 * @return 一覧照会のマッピングデータ
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapShokaiUcwkHTel(IRequestParameterReadOnly param, 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;	// サービス契約内訳一覧照会

		// 一意照会、一覧照会の結果データを取得
		workEKK0161B004 = getWorkParentData(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0161B004);
		
		// サービス契約内訳<eo光電話>一意照会
		wkMapArray = new ArrayList();
		if (workEKK0161B004 != null) 
		{
			for (int i = 0; i < workEKK0161B004.length; i++)
			{
				CAANMsg childTemplate = workEKK0161B004[i];
				
				if(isChkStat(childTemplate.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT)))
				{
					wkCaanMsgList = shokaiMapper.editInMsgEKK0191A010(param, childTemplate);
					rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
					wkMapArray.add(rslt);
				}
			}
		}
		rsltShokaiMap.put(MAP_KEY_EKK0191A010, wkMapArray);
		
		return rsltShokaiMap;
	}
	
	/**
	 * eo光電話のマッピング処理です。
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex param内の業務データのインデックス
	 * @param rsltShokai 一意照会、一覧照会の結果データ
	 * @param idoDiv 異同区分
	 * @param canCncSvcKei 
	 * @return 実行結果
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> editMapUpdUcwkHTel(SessionHandle handle, IRequestParameterReadWrite param,
			HashMap<String, Object> rsltShokai, String idoDiv, boolean canCncSvcKei)
			throws Throwable
	{
		// IT1-2013-0001686 START 2013/12/10 ADD START
		// サービス契約の一意照会を取得
		scCall = new ServiceComponentRequestInvoker();
		
		CAANMsg[] workEKK0081A010 = null;	// サービス契約一意照会
		workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
		
		// サービス契約番号を取得
		String svcKeino = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		
		// 機器提供サービス契約一覧照会
		List<CAANMsg> wkMapArrayEKK0341B022 = shokaiMapper.editInMsgEKK0341B022(param,svcKeino);
		HashMap<String, Object> inMsgEKK0341B022Map = editInMsgCmn(param, wkMapArrayEKK0341B022.get(0));
		Map<?, ?> rsltEKK0341B022 = scCall.run(inMsgEKK0341B022Map, handle);
		CAANMsg[] outMsgEKK0341B022List = getWorkData(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST, rsltEKK0341B022);
		// IT1-2013-0001686 START 2013/12/10 ADD END
		
		HashMap<String, Object> rsltShosaMap = new HashMap();
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> workEKK0191A010Array = null;	// サービス契約内訳<eo光電話>一意照会
		// IT1-2013-0001686 START 2013/12/10 DEL START
//		ArrayList<HashMap> workEKK0341B022Array = null;	// サービス対象機器提供サービス契約一覧照会
		// IT1-2013-0001686 START 2013/12/10 DEL END
		ArrayList<HashMap> workEKK0081A010Array = null;	// サービス契約一意照会
		
		List<CAANMsg> wkCaanMsgList = null;
		ArrayList<HashMap> wkMapArray = null;
		
		// 一覧照会の結果データを取得
		workEKK0191A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0191A010);
		// IT1-2013-0001686 START 2013/12/10 DEL START
//		workEKK0341B022Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0341B022);
		// IT1-2013-0001686 START 2013/12/10 DEL END
		workEKK0081A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0081A010);
		
		// IT1-2013-0001686 START 2013/12/10 MOD START
		String mskmDtlNo = "";
		CAANMsg[] wk0081Tenplates = getWorkData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, (Map)workEKK0081A010Array.get(0));
		mskmDtlNo = wk0081Tenplates[0].getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO);
			
		CAANMsg vaChildTemplate = null;
		ArrayList<CAANMsg> workTgEKK0341B022 = new ArrayList<CAANMsg>();
//		for (int i = 0; i < workEKK0341B022Array.size(); i++)
//		{
//			CAANMsg[] wkTenplates = getWorkData(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST, (Map)workEKK0341B022Array.get(i));
			CAANMsg[] wkTenplates = outMsgEKK0341B022List;
			for (int j = 0; j < wkTenplates.length; j++)
			{
				vaChildTemplate = wkTenplates[j];
				
//				if("50".equals(vaChildTemplate.getString(EKK0341B022CBSMsg1List.TAKNKIKI_SBT_CD)))
//				{
//					break;
//				}
				
				// 旧VAまたは多機能ルータまたはＨＧＷの場合、機器の情報をターゲットリストに格納
				// IT1-2023-0000057 MOD START
//				if("R0".equals(vaChildTemplate.getString(EKK0341B022CBSMsg1List.TAKNKIKI_SBT_CD))
//				    || "50".equals(vaChildTemplate.getString(EKK0341B022CBSMsg1List.TAKNKIKI_SBT_CD)))
				if("R0".equals(vaChildTemplate.getString(EKK0341B022CBSMsg1List.TAKNKIKI_SBT_CD))
					|| "50".equals(vaChildTemplate.getString(EKK0341B022CBSMsg1List.TAKNKIKI_SBT_CD))
					|| "S0".equals(vaChildTemplate.getString(EKK0341B022CBSMsg1List.TAKNKIKI_SBT_CD)))
				// IT1-2023-0000057 MOD END
				{
					// 機器提供サービス契約ステータスの取得
					String kktkSvcStat = vaChildTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_STAT);
					
					if ((kktkSvcStat != null && !"".equals(kktkSvcStat))
							&& !"910".equals(kktkSvcStat) && !"920".equals(kktkSvcStat) ) {
						// ターゲットリストに格納
						workTgEKK0341B022.add(vaChildTemplate);
					}
				}
			}
//		}
		// IT1-2013-0001686 START 2013/12/10 MOD END
		
		// サービス契約内訳<eo光電話>情報変更
		wkMapArray = new ArrayList();
		// IT1-2013-0001686 START 2013/12/10 MOD START
		if (workTgEKK0341B022 != null && !"".equals(workTgEKK0341B022) && workTgEKK0341B022.size() > 0) {
			for (int a = 0; a < workTgEKK0341B022.size(); a++)
			{
				// 機器の情報を取得
				CAANMsg vaChildGetKktkData = null;
				
				vaChildGetKktkData = (CAANMsg)workTgEKK0341B022.get(a);
				
				if (workEKK0191A010Array != null) 
				{
					for (int i = 0; i < workEKK0191A010Array.size(); i++)
					{
						CAANMsg[] wkTenplate = getWorkData(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, (Map)workEKK0191A010Array.get(i));
						for (int j = 0; j < wkTenplate.length; j++)
						{
							CAANMsg childTemplate = wkTenplate[j];
							wkCaanMsgList = shosaOkMapper.editInMsgEKK0191C060(param, childTemplate, vaChildGetKktkData, idoDiv, mskmDtlNo);
							rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
							wkMapArray.add(rslt);
						}
					}
				}
			}
		}
		// IT1-2013-0001686 START 2013/12/10 MOD END
		rsltShosaMap.put(MAP_KEY_EKK0191C060, wkMapArray);

		return rsltShosaMap;
	}
	
	/**
	 * eo光電話の実行処理です。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltMap 照査実行時に使用するマップのリスト
	 * @param canCncSvcKei 
	 * @return エラー情報
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<Object> runUpdUcwkHTel(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> rsltMap, boolean canCncSvcKei) 
	throws Throwable
	{
		ArrayList<Object> errorList = new ArrayList();
		ArrayList<Object> wkErrorList = null;

		// サービス契約内訳<eo光電話>情報更新
		wkErrorList = runShosa(handle, param, rsltMap, MAP_KEY_EKK0191C060);
		errorList.addAll(wkErrorList);

		return errorList;
	}
	// IT1-2013-0000099 2013/01/25 end

	// OM-2013-0004398 スマートバリュー締結済、ネット・電話が解約通知済の場合に紐付けが変更される 2013/11/14 START
	/**
	 * スマートバリュー対象契約の紐付けが変更可能かどうかを判定して返します。
	 * <br>
	 * @param param
	 * @param rsltShokai
	 * @param isSmtvlKariAdd スマートバリューが仮登録かどうか
	 * @return スマートバリュー対象契約の紐付けが変更可能な場合はtrue、そうでない場合はfalse
	 */
	@SuppressWarnings("unchecked")
	private boolean canChgSmtvlTgkei(IRequestParameterReadWrite param, Map<String, Object> rsltShokai, boolean isSmtvlKariAdd )
	{
		// サービス契約一意照会結果取得
		CAANMsg[] workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK0081A010);
		// 他事業者割引契約一意照会結果取得
		CAANMsg[] workEKK2441A010 = getWorkParentData(EKK2441A010CBSMsg.EKK2441A010CBSMSG1LIST, rsltShokai, MAP_KEY_EKK2441A010);
		// サービス契約番号
		String svcKeiNo = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		// 他事業者割引契約対象契約一覧照会結果取得
		ArrayList<HashMap> workEKK2451B001Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK2451B001);

		// 他事業者割引契約解約年月日
		String tajgsWribKeiDslYmd = workEKK2441A010[0].getString(EKK2441B003CBSMsg1List.TAJGS_WRIB_KEI_DSL_YMD);
		// スマートバリューが解約済の場合
		if (null != tajgsWribKeiDslYmd && !YMD_SHKV.equals(tajgsWribKeiDslYmd))
		{
			// 紐付け変更不可
			return false;
		}

		// スマートバリュー対象契約の紐付けが変更可能かどうか
		boolean canChgSmtvlTgkei = true;
		if (null != workEKK2451B001Array)
		{
			for (int i = 0; i < workEKK2451B001Array.size(); i++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK2451B001CBSMsg.EKK2451B001CBSMSG1LIST, (Map)workEKK2451B001Array.get(i));
				for (int j = 0; j < wkTenplates.length; j++)
				{
					CAANMsg childTemplate = wkTenplates[j];
					String tgkeiSvcKeiNo = childTemplate.getString(EKK2451B001CBSMsg1List.SVC_KEI_NO);
					// 照査対象のサービス契約番号が既に紐付いている場合 ※照査取消の後、再照査した場合
					if (svcKeiNo.equals(tgkeiSvcKeiNo))
					{
						// 紐付け変更不可
						canChgSmtvlTgkei = false;
						break;
					}
					// スマートバリューが締結済で未解約の場合
					if (!isSmtvlKariAdd
						&& (null == tajgsWribKeiDslYmd || YMD_SHKV.equals(tajgsWribKeiDslYmd)))
					{
						// 解約他事業者通知年月日
						String dslTagjsTchYmd = childTemplate.getString(EKK2451B001CBSMsg1List.DSL_TAJGS_TCH_YMD);
						// 解約他事業者通知年月日が設定されていない場合
						if (null == dslTagjsTchYmd || YMD_SHKV.equals(dslTagjsTchYmd))
						{
							// 1件でも解約通知済でなければ紐付け変更可能
							canChgSmtvlTgkei = true;
							break;
						}
						else
						{
							// 紐付く契約がすべて解約通知済の場合は紐付け変更不可（breakしない）
							canChgSmtvlTgkei = false;
						}
					}
				}
			}
		}

		return canChgSmtvlTgkei;
	}
	// OM-2013-0004398 スマートバリュー締結済、ネット・電話が解約通知済の場合に紐付けが変更される 2013/11/14 END

	// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 START
	/**
	 * 他事業者割引契約一意照会結果から、スマートバリューが仮登録状態かどうかを返します。
	 * <br>
	 * @param workEKK2441A010 他事業者割引契約一意照会結果
	 * @return 仮登録の場合はtrue、仮登録でない場合はfalse
	 */
	private boolean isSmtvlKariAdd(CAANMsg[] workEKK2441A010)
	{
		boolean isSmtvlKariAdd = false;
		if (null != workEKK2441A010 && workEKK2441A010.length > 0)
		{
			// 他事業者割引契約締結年月日
			String tajgsWribKeiCncYmd = workEKK2441A010[0].getString(EKK2441A010CBSMsg1List.TAJGS_WRIB_KEI_CNC_YMD);
			// 他事業者割引契約締結年月日がnull、または初期値の場合は、仮登録
			if (null == tajgsWribKeiCncYmd || YMD_SHKV.equals(tajgsWribKeiCncYmd))
			{
				isSmtvlKariAdd = true;
			}
		}

		return isSmtvlKariAdd;
	}
	// OM-2013-0003663 サービス追加した契約が照査時に仮登録したスマートバリューに紐付かない 2013/11/14 END
	
	/**
	 * ユーザ定義文字列がユーザ情報になければデータを作成します。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @param workMapKey 業務データのマップキー
	 * @return true：作成した　False：存在していたため作成不要
	 * @throws RequestParameterException 
	 */
	private boolean createUserData(IRequestParameterReadWrite param, String workMapKey) 
	throws RequestParameterException
	{
		if (param.getData(workMapKey) == null)
		{
			param.setData(workMapKey, new HashMap<String, Object>());
			return true;
		}
		
		return false;
	}
	
	// 20140416 ANK-2054-00-00 ADD START
	/**
	 * 機器オプションサービス契約照査処理
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userDataIndex ユーザ任意文字列
	 * @param rsltShosaMap 照査取消実行用のMAP 
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param idoDiv 異動区分
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void editMapShosaKkop(
			SessionHandle handle
			,IRequestParameterReadWrite param
			,int userDataIndex
			,HashMap<String, Object> rsltShosaMap
			,boolean canCncSvcKei
			,String kktkSvcKeiNo
			,String idoDiv
	) throws Throwable
	{
		// 照査対象の機器オプションサービス契約のSIF呼出情報
		ArrayList shosaMapArray ;
		
		if (canCncSvcKei)
		{
			shosaMapArray = (ArrayList)rsltShosaMap.get(MAP_KEY_EKK2811C050);
		}
		else
		{
			shosaMapArray = (ArrayList)rsltShosaMap.get(MAP_KEY_EKK2811C030);
		}
		
		if (shosaMapArray == null) {
			shosaMapArray = new ArrayList();
		}
		
		// 照会SIF用のワーク
		ArrayList wkMapArray = new ArrayList();
		HashMap<String, Object> wkRsltShokaiMap = new HashMap<String, Object>();
		HashMap<String, Object> wkRsltShokai = new HashMap<String, Object>();
		HashMap<String, Object> rslt = null;
			
		// 機器オプションサービス契約一覧照会（機器提供ＳＶ）
		wkMapArray = new ArrayList();
		List<CAANMsg> wkCaanMsgList = shokaiMapper.editInMsgEKK2811B010(param, kktkSvcKeiNo, null);
		wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
		wkRsltShokaiMap.put(MAP_KEY_EKK2811B010, wkMapArray);
		wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK2811B010});
		
		CAANMsg[] msgEKK2811B010List = getWorkParentData(EKK2811B010CBSMsg.EKK2811B010CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK2811B010);
		
		if (msgEKK2811B010List != null && msgEKK2811B010List.length > 0)
		{
			// 機器提供サービス契約番号に紐付く機器オプションサービス契約分、繰り返し
			for (CAANMsg msgEKK2811B010 : msgEKK2811B010List)
			{
				// 機器オプションサービス契約異動可否判定処理を呼出し、無条件で状態遷移可能な機器オプションか否かを判定
				HashMap<String, Object> checkKkopIdoKhInputdata = new HashMap<String, Object>();
				
				// 機器オプションサービスコード
				checkKkopIdoKhInputdata.put(JKKKeiIdoKhCheckConstCC.KKOP_SVC_CD, msgEKK2811B010.getString(EKK2811B010CBSMsg1List.KKOP_SVC_CD));
				
				// 異動区分
				checkKkopIdoKhInputdata.put(JKKKeiIdoKhCheckConstCC.IDO_DIV, idoDiv);
				
				String checkKkopIdoKhFixedText ="checkKkopIdoKh";  
				
				param.setData(checkKkopIdoKhFixedText, checkKkopIdoKhInputdata);
				
				// 機器オプションサービス契約異動可否判定
				if (JKKBpCommon.checkKkopIdoKh(handle, param, checkKkopIdoKhInputdata, checkKkopIdoKhFixedText))
				{
					// 機器オプションサービス契約一意照会
					wkMapArray = new ArrayList();
					// 引数のcaanMsgは他の呼出元と異なるが、項目名が一致しているため、問題なし
					wkCaanMsgList = shokaiMapper.editInMsgEKK2811A010(param, msgEKK2811B010);
					wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
					wkRsltShokaiMap.put(MAP_KEY_EKK2811A010, wkMapArray);
					wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK2811A010});
					
					CAANMsg[] msgEKK2811A010List = getWorkParentData(EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK2811A010);
					
					CAANMsg msgEKK2811A010 = msgEKK2811A010List[0];
					
					// 照査対象のスタータスかをチェック
					if (isChkStat(msgEKK2811A010.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT)))
					{
						if (canCncSvcKei)
						{
							// 照査締結
							wkCaanMsgList = shosaOkMapper.editInMsgEKK2811C050(param, msgEKK2811A010, idoDiv);
						}
						else
						{
							// 照査
							wkCaanMsgList = shosaOkMapper.editInMsgEKK2811C030(param, msgEKK2811A010, idoDiv);
						}
						rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
						shosaMapArray.add(rslt);
					}
					else
					{
						// 照査対象外のステータスのため、処理なし
					}
				}
				else
				{
					// 機器オプションが照査対象外または個別処理が必要な機器オプションのため、処理なし
				}
			}
		}
		else
		{
			// 機器オプションが存在しないため、処理なし
		}
		
		if (!shosaMapArray.isEmpty())
		{
			if (canCncSvcKei)
			{
				rsltShosaMap.put(MAP_KEY_EKK2811C050, shosaMapArray);
			}
			else
			{
				rsltShosaMap.put(MAP_KEY_EKK2811C030, shosaMapArray);
			}
		}
		
	}
	// 20140416 ANK-2054-00-00 ADD END

	// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/02 START
	/**
	 * 直送配送設定（タブレット端末、タブレット用クレードル機器）を行います。<br>
	 * <br>
	 * 次の詳細処理は、各部品により実行されます。<br>
	 * ・工事会社配送の確認（配送の有無、配送ステータスの判定）<br>
	 * ・工事会社配送の工事案件対象宅内機器からタブレットとクレードルを削除<br>
	 * 　⇒工事案件CC<br>
	 * ・工事会社配送の配送取消<br>
	 * ・直送配送の作成
	 * 　⇒物流制御CC<br>
	 * <br>
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param rsltShokai 照会結果
	 * @param pcrsCd 料金コースコード
	 * @param svcKeiNo サービス契約番号
	 * @param errorList エラーリスト
	 * @param userDataIndex ユーザデータ情報のインデックス
	 * @param idoDiv 異動区分
	 * @throws Throwable 例外が発生した場合
	 */
	private void setChokusoTblt(SessionHandle handle, IRequestParameterReadWrite param,
			Map<String, Object> rsltShokai, String pcrsCd, String svcKeiNo,
			ArrayList<Object> errorList, int userDataIndex, String idoDiv) throws Throwable
	{
		String kktkSvcKeiNoC021 = "";
		String kktkSvcKeiNoC022 = "";
		ArrayList<Object> wkErrorList = new ArrayList();
		
		errorList.addAll(wkErrorList);
		
		ArrayList wkMapArray = new ArrayList();
		HashMap<String, Object> wkRsltShokaiMap = new HashMap<String, Object>();
		HashMap<String, Object> wkRsltShokai = new HashMap<String, Object>();
		
		// 直送配送設定
		// eoモバイル（ハイブリッド）の場合
		if (PCRS_CD_HBRID42M.equals(pcrsCd))
		{
			// 同一請求契約内配送待ち機器提供サービス契約一覧照会
			String[] kktkSvcKeiStat = new String [7];
			kktkSvcKeiStat[0] = JKKSvcConst.KKTK_SVC_KEI_STAT_010;
			kktkSvcKeiStat[1] = JKKSvcConst.KKTK_SVC_KEI_STAT_020;
			kktkSvcKeiStat[2] = JKKSvcConst.KKTK_SVC_KEI_STAT_030;
			kktkSvcKeiStat[3] = JKKSvcConst.KKTK_SVC_KEI_STAT_100;
			kktkSvcKeiStat[4] = JKKSvcConst.KKTK_SVC_KEI_STAT_110;
			kktkSvcKeiStat[5] = JKKSvcConst.KKTK_SVC_KEI_STAT_210;
			kktkSvcKeiStat[6] = JKKSvcConst.KKTK_SVC_KEI_STAT_220;
			
			List<CAANMsg> wkCaanMsgList = shokaiMapper.editInMsgEKK0341B028(param, userDataIndex, kktkSvcKeiStat, null);
			wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
			wkRsltShokaiMap.put(MAP_KEY_EKK0341B028, wkMapArray);
			wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0341B028});
			
			ArrayList<HashMap> workEKK0341B028Array = (ArrayList)wkRsltShokai.get(MAP_KEY_EKK0341B028);
			
			if (workEKK0341B028Array != null)
			{
				for (int m = 0; m < workEKK0341B028Array.size(); m++)
				{
					// IT1-2014-0000269 2014/08/09 add start
					//出荷完了時処理済フラグを取得
					String shkaFinJiSyrzmFlgC021 = "";
					String shkaFinJiSyrzmFlgC022 = "";
					// IT1-2014-0000269 2014/08/09 add end
					CAANMsg[] wkTenplates = getWorkData(EKK0341B028CBSMsg.EKK0341B028CBSMSG1LIST, (Map)workEKK0341B028Array.get(m));
					for (int n = 0; n < wkTenplates.length; n++)
					{
						CAANMsg childTemplate = wkTenplates[n];
						
						// タブレット端末の機器提供サービス契約番号を取得
						if (childTemplate.getString(EKK0341B028CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C021))
						{
							kktkSvcKeiNoC021 = childTemplate.getString(EKK0341B028CBSMsg1List.KKTK_SVC_KEI_NO);
							// IT1-2014-0000269 2014/08/09 add start
							shkaFinJiSyrzmFlgC021 = childTemplate.getString(EKK0341B028CBSMsg1List.SHKA_FIN_JI_SYRZM_FLG);
							// IT1-2014-0000269 2014/08/09 add end
						}
						
						// タブレット用クレードル機器の機器提供サービス契約番号を取得
						if (childTemplate.getString(EKK0341B028CBSMsg1List.KKTK_SVC_CD).equals(KKTK_SVC_C022))
						{
							kktkSvcKeiNoC022 = childTemplate.getString(EKK0341B028CBSMsg1List.KKTK_SVC_KEI_NO);
							// IT1-2014-0000269 2014/08/09 add start
							shkaFinJiSyrzmFlgC022 = childTemplate.getString(EKK0341B028CBSMsg1List.SHKA_FIN_JI_SYRZM_FLG);
							// IT1-2014-0000269 2014/08/09 add end
						}
					}
					
					// タブレット端末が取得できない場合は以降処理を行わない
					if (isNull(kktkSvcKeiNoC021))
					{
						return;
					}
					// IT1-2014-0000269 2014/08/09 add start
					// 出荷完了時処理済フラグが1なら以降処理を行わない
					if("1".equals(shkaFinJiSyrzmFlgC021) || "1".equals(shkaFinJiSyrzmFlgC022)){
						return;
					}
					// IT1-2014-0000269 2014/08/09 add end
				}

				// 請求契約一覧照会
				wkMapArray = new ArrayList();
				wkRsltShokaiMap = new HashMap<String, Object>();
				wkCaanMsgList = shokaiMapper.editInMsgEKK0491B005(param, userDataIndex);
				wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
				wkRsltShokaiMap.put(MAP_KEY_EKK0491B005, wkMapArray);
				wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0491B005});
				CAANMsg[] workEKK0491B005 = getWorkParentData(EKK0491B005CBSMsg.EKK0491B005CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK0491B005);

				String seikyKeiNoMb = "";
				String seikyKeiNoNet = "";
				// ネットのサービス契約番号
				String svcKeiNoNet = "";
				if(workEKK0491B005 != null)
				{
					for (int l = 0; l < workEKK0491B005.length; l++)
					{
						CAANMsg childTemplatekEKK0491B005 = workEKK0491B005[l];
						String tmpSvcKeiNo = (String)childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.SVC_KEI_NO);
						String prcGrpCd = (String)childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.PRC_GRP_CD);
						String svcKeiStat = (String)childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.SVC_KEI_STAT);

						// 処理対象のサービス契約番号の場合
						if (svcKeiNo.equals(tmpSvcKeiNo))
						{
							seikyKeiNoMb = (String)childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.SEIKY_KEI_NO);
						}
						// 有効なネットの場合
						if ((prcGrpCd.equals(PRC_GRP_CD_HOME) || prcGrpCd.equals(PRC_GRP_CD_MEZON) || prcGrpCd.equals(PRC_GRP_CD_MANS))
							&& !JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStat)
							&& !JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStat))
						{
							seikyKeiNoNet = (String)childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.SEIKY_KEI_NO);
							svcKeiNoNet = (String)childTemplatekEKK0491B005.getString(EKK0491B005CBSMsg1List.SVC_KEI_NO);
						}
					}

					// 処理対象のサービスと請求契約番号が一致しない場合
					if (!seikyKeiNoMb.equals(seikyKeiNoNet))
					{
						return;
					}
				}

				// ネットの情報を取得
				// サービス契約一意照会
				wkMapArray = new ArrayList();
				wkRsltShokaiMap = new HashMap<String, Object>();
				wkCaanMsgList = shokaiMapper.editInMsgEKK0081A010(param, svcKeiNoNet);
				wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
				wkRsltShokaiMap.put(MAP_KEY_EKK0081A010, wkMapArray);
				wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0081A010});
				CAANMsg[] workEKK0081A010 = getWorkParentData(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK0081A010);
				String mskmDtlNo = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO);

				// IT1-2014-0000269 2014/08/09 add start
				//ホーム、メゾン、マンション光配線であること
				String prcGrpCdNet = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);
				String pcrsCdNet = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.PCRS_CD);
				if (!PRC_GRP_CD_HOME.equals(prcGrpCdNet) && !PRC_GRP_CD_MEZON.equals(prcGrpCdNet)
					&& !(PRC_GRP_CD_MANS.equals(prcGrpCdNet) 
							&& (JKKSvcConst.PCRS_CD_MANS_GLB_MHIKARI.equals(pcrsCdNet)
								|| JKKSvcConst.PCRS_CD_MANS_GLB_GHIKARI.equals(pcrsCdNet)
								|| JKKSvcConst.PCRS_CD_MANS_GLB_MPHIKARI.equals(pcrsCdNet)
// IT2-2025-0000001対応 20250109 星野 ADD START
								|| JKKSvcConst.PCRS_CD_MANS_GLB_10GHIKARI.equals(pcrsCdNet)
// IT2-2025-0000001対応 20250109 星野 ADD END
							)
						)
					){
					return;
				}
				
				// ANK-3387-00-00 ADD START
				// マンション光配線(光コンセント)の場合は処理対象外とする
				if (isHikariConsent(handle, param, workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO)))
				{
					return;
				}
				// ANK-3387-00-00 ADD END
				
				//サービス契約ステータスが照査済以上でサービス提供中未満であること
				String svcKeiStatNet = workEKK0081A010[0].getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
				if(JKKSvcConst.SVC_KEI_STAT_020.compareTo(svcKeiStatNet) > 0
					|| JKKSvcConst.SVC_KEI_STAT_100.compareTo(svcKeiStatNet) <= 0){
					return;
				}
				// IT1-2014-0000269 2014/08/09 add end
				
				// 申込明細一意照会
				wkMapArray = new ArrayList();
				wkRsltShokaiMap = new HashMap<String, Object>();
				wkCaanMsgList = shokaiMapper.editInMsgEKK0021A010(param, mskmDtlNo);
				wkMapArray.add(editInMsgCmn(param, wkCaanMsgList.get(0)));
				wkRsltShokaiMap.put(MAP_KEY_EKK0021A010, wkMapArray);
				wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, new String[]{MAP_KEY_EKK0021A010});
				CAANMsg[] workEKK0021A010 = getWorkParentData(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST, wkRsltShokai, MAP_KEY_EKK0021A010);

				// 工事案件CC実行（工事案件諸変更SIF）　※ネットの情報をもとにする
				JKKKojiAnkenCC kojiCC = new JKKKojiAnkenCC();
				shosaOkMapper.editMapKojiAnkenKikiChg(param, userDataIndex, workEKK0021A010[0], workEKK0081A010[0],
						idoDiv, JKKKojiAnkenConstCC.TABLET_HAISO_KBN_CNCL_KJ_HAISO);
				kojiCC.executeKojiAnken(handle, param, KKSV0118_KKSV0118OP.KKSV011806CC);

				// 工事案件CCから返却されるタブレット配送区分（返却）は、オペレーションクラスで物流制御CCに引き渡す
				HashMap kojiAnkenMap = (HashMap)param.getData(KKSV0118_KKSV0118OP.KKSV011806CC);
				String retTabletHaisoKbn = (String)kojiAnkenMap.get(JKKKojiAnkenConstCC.RET_TABLET_HAISO_KBN);
				HashMap<String, Object> tbltButuryuMap = new HashMap<String, Object>();
				tbltButuryuMap.put(JKKKojiAnkenConstCC.RET_TABLET_HAISO_KBN, retTabletHaisoKbn);
				// KKSV011806CCの領域は、照査対象のサービス契約ごとにクリアされるため、別領域に保持する
				param.setData("tblt_buturyu_map", tbltButuryuMap);
			}
		}
	}

	/**
	 * 工事が発生するかどうかを返します。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param userIndex ユーザデータ情報のインデックス
	 * @param workEKK0081A010 サービス契約一意照会結果
	 * @return 工事が発生する場合はtrue、発生しない場合はfalse
	 * @throws Throwable 例外が発生した場合
	 */
	private boolean isKojiHassei(SessionHandle handle, IRequestParameterReadWrite param, int userIndex, CAANMsg workEKK0081A010)
	throws Throwable
	{
		// マンションかどうか
		boolean isMansion = isMansion(handle, param, userIndex);

		// 光配線かどうか
		boolean isHikari = isHikariHaisen(handle, param, workEKK0081A010.getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO));

		// ANK-3387-00-00 ADD START
		// 光コンセントかどうか(光コンセント：true、光コンセントではない：false)
		boolean isConsent = isHikariConsent(handle, param, workEKK0081A010.getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO));
		// ANK-3387-00-00 ADD END
		
		// ホーム、メゾン、マンション（光配線）のいずれかの場合
		if (!(isMansion && !isHikari))
		{
			// ANK-3387-00-00 ADD START
			// マンション光配線(光コンセント)の場合、工事が発生しないためfalseを返す
			if (isConsent)
			{
				return false;
			}
			// ANK-3387-00-00 ADD END
			return true;
		}

		return false;
	}
	// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/02 END
// ANK-4009-00-00 DEL START
// ANK-2987-00-00 2016/09/16 ADD START
//	/**
//	 * コンテンツメールが存在するかどうかを返します。
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param userIndex ユーザデータ情報のインデックス
//	 * @param workEKK0081A010 サービス契約一意照会結果
//	 * @return 工事が発生する場合はtrue、発生しない場合はfalse
//	 * @throws Throwable 例外が発生した場合
//	 */
//	private boolean contentMailHantei(SessionHandle handle, IRequestParameterReadWrite param, CAANMsg[] msgECK0201B030_content_List)
//	throws Throwable
//	{
//		boolean contentMailFlg = false;
//		
//		scCall = new ServiceComponentRequestInvoker();
//		
//		//	判定実施
//		MAILLOOP:for (CAANMsg childTemplateECK0201B030 : msgECK0201B030_content_List)
//		{
//			// メールアドレスの取得
//			String contMlad = childTemplateECK0201B030.getString(ECK0201B030CBSMsg1List.MLAD);
//			// 連絡先分類コードを再確認
//			String rrksBunruiCd = childTemplateECK0201B030.getString(ECK0201B030CBSMsg1List.RRKS_BUNRUI_CD);
//			// 連絡先種別コードを再確認
//			String rrksSbtCd = childTemplateECK0201B030.getString(ECK0201B030CBSMsg1List.RRKS_SBT_CD);
//			// 予約適用コード
//			String rsv_aply_cd = childTemplateECK0201B030.getString(ECK0201B030CBSMsg1List.RSV_APLY_CD);
//			// 連絡先分類コード「1」（コンテンツ系連絡先）、連絡先種別「1」(自宅）の場合、コンテンツメールとして判断
//			if (rrksBunruiCd != null && !"".equals(rrksBunruiCd) && "1".equals(rrksBunruiCd)
//					&& rrksSbtCd != null && !"".equals(rrksSbtCd) && "1".equals(rrksSbtCd)
//					&& rsv_aply_cd != null && !"".equals(rsv_aply_cd) && ("1".equals(rsv_aply_cd) || "2".equals(rsv_aply_cd)))
//			{
//				// オプトインメール受信設定一覧照会(SYSID・メールアドレス)の実行
//				CAANMsg workECK0141B003 = null;
//				HashMap<String, Object>wkMap = editInMsgCmn(param, shokaiMapper.editInMsgECK0141B003(param, currentSysid, contMlad).get(0));
//
//				Map<?, ?> rsltECK0141B003 = scCall.run(wkMap, handle);
//				workECK0141B003 = ((CAANMsg[])rsltECK0141B003.get(JCMConstants.TEMPLATE_LIST_KEY))[0];
//				CAANMsg[] msgECK0141B003List = workECK0141B003.getCAANMsgList(ECK0141B003CBSMsg.ECK0141B003CBSMSG1LIST);
//				
//				// 取得したオプトインメール受信設定がない場合は次のレコードへ
//				if(msgECK0141B003List == null|| msgECK0141B003List.length == 0)
//				{
//					continue;
//				}
//				else
//				{
//					// 取得したオプトインメール受信設定分ループ処理を行う
//					for(CAANMsg childTemplateECK0141B003 : msgECK0141B003List)
//					{
//						// オプトインメール受信設定ステータスが有効な場合
//						String optinmRcvSetteStat = childTemplateECK0141B003.getString(ECK0141B003CBSMsg1List.OPTINM_RCV_SETTE_STAT);
//						if("010".equals(optinmRcvSetteStat))
//						{
//							contentMailFlg = true;
//							break MAILLOOP;
//						}
//					}
//				}
//			}
//		}
//
//		return contentMailFlg;
//	}
// ANK-4009-00-00 DEL END
	/**
	 * 日付の計算（ＹＹＹＹＭＭＤＤ専用）クラス
	 * <br>
	 * @param trgtYmd セッションマネージャなどを持ったハンドル
	 * @param addDay モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @throws Throwable 例外が発生した場合
	 */
	public static String addYYYYMMDD(String trgtYmd, int addDay) throws Throwable
	{
		// 年月日が空の場合
		if (trgtYmd == null || "".equals(trgtYmd))
		{
			return trgtYmd;
		}

		// 年月日が８桁に満たない場合
		if (trgtYmd.length() < 8)
		{
			return trgtYmd;
		}

		// 年月日の抽出
		int year  = Integer.parseInt(trgtYmd.substring(0, 4));
		int month = Integer.parseInt(trgtYmd.substring(4, 6));
		int day   = Integer.parseInt(trgtYmd.substring(6, 8));

		Calendar cal = Calendar.getInstance();
		cal.set(year, month - 1, day);
		// 日付を算出
		cal.add(Calendar.DATE, addDay);

		return String.format("%tY%tm%td", cal, cal, cal);
	}
// ANK-4009-00-00 DEL START
//	/**
//	 * オプトインメール受信設定の実行処理です。
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param wkMap 進捗登録実行時に使用するマップ
//	 * @return エラー情報
//	 * @throws Throwable 
//	 */
//	@SuppressWarnings("unchecked")
//	private ArrayList<Object> runWebacc(SessionHandle handle, 
//										IRequestParameterReadWrite param, 
//										HashMap<String, Object> wkMap) 
//	throws Throwable
//	{
//		//ArrayList wkMapArray = null;
//		ArrayList<Object> errorList = new ArrayList();
//		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//
//		Map<?, ?> rslt = null;
//		ArrayList<Object> wkErrorList = null;
//		rslt = scCall.run(wkMap, handle);
//		
//		wkErrorList = shosaOkMapper.editResultRPEZM0511D010(rslt, param);
//
//		errorList.addAll(wkErrorList);
//
//		return errorList;
//	}
//	
//	/**
//	 * オプトインメール受信設定の実行処理です。
//	 * <br>
//	 * @param handle セッションマネージャなどを持ったハンドル
//	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param wkMap 進捗登録実行時に使用するマップ
//	 * @return エラー情報
//	 * @throws Throwable 
//	 */
//	@SuppressWarnings("unchecked")
//	private ArrayList<Object> runOptInUpd(SessionHandle handle, 
//										IRequestParameterReadWrite param, 
//										HashMap<String, Object> wkMap) 
//	throws Throwable
//	{
//		//ArrayList wkMapArray = null;
//		ArrayList<Object> errorList = new ArrayList();
//		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
//		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
//
//		Map<?, ?> rslt = null;
//		ArrayList<Object> wkErrorList = null;
//		rslt = scCall.run(wkMap, handle);
//		
//		wkErrorList = shosaOkMapper.editResultRPECK0251C010(rslt, param);
//
//		errorList.addAll(wkErrorList);
//
//		return errorList;
//	}
//	
//	/**
//	 * パラメタがNullの場合空白を返却します。
//	 * @param str 文字列
//	 * @return str
//	 */
//	private String getNullToStr(String str)
//	{
//		if (str == null || "".equals(str.trim()))
//		{
//			return "";
//		}
//		return str;
//	}
// ANK-2987-00-00 2016/09/16 ADD  END
// ANK-4009-00-00 DEL END
	//---------v31.00.00 ANK-3136-00-00_ADD START---------//
	/**
	 * .流用元接続種別機器種別
	 * <br>
	 * @param   kk0191_b001_map_list      サービス契約内訳<eo光電話>一覧照会（サービス契約番号）取得情報
	 * @return  照会結果を格納したマップ情報
	 */
	private String ryuyoMtSetsuKikiSbtJudge(CAANMsg[] kk0191_b001_map_list)
	{
		String ryuyoMtSetsuKikiSbt = null;
		// 宅内機器種別コード初期化
		String taknkikiSbt = null;
		// 電話番号順番='1'でサービス終了年月日='20991231'もしくはNULLのレコードが存在する場合、
		taknkikiSbt = svcEndYmdCk1(kk0191_b001_map_list);
		
		if(taknkikiSbt != null)
		{
			ryuyoMtSetsuKikiSbt = ryuyoMotsbtJudge(taknkikiSbt);
			return ryuyoMtSetsuKikiSbt;
		}
		// 電話番号順番='1'でサービス終了年月日='20991231'以外のレコードが存在する場合
		taknkikiSbt = svcEndYmdCk2(kk0191_b001_map_list);
		if(taknkikiSbt != null)
		{
			ryuyoMtSetsuKikiSbt = ryuyoMotsbtJudge(taknkikiSbt);
			return ryuyoMtSetsuKikiSbt;
		}
		return ryuyoMtSetsuKikiSbt;
	}
	
	/**
	 * .電話番号順番='1'でサービス終了年月日='20991231'もしくはNULLのレコードが存在する場合
	 * <br>
	 * @param   kk0191_b001_map_list      サービス契約内訳<eo光電話>一覧照会（サービス契約番号）取得情報
	 * @return  taknkikiSbtCdEKK0191B001 宅内機器種別コード
	 */
	private String svcEndYmdCk1(CAANMsg[] kk0191_b001_map_list)
	{
		// 宅内機器種別コード初期化
		String taknkikiSbtCdEKK0191B001 = null;
		for (int i = 0 ;kk0191_b001_map_list != null && i < kk0191_b001_map_list.length; i++ )
		{
			CAANMsg mapEKK0191B001 = kk0191_b001_map_list[i];
			// 電話番号順番を取得する
			String telNoJunEKK0191B001 = (String)mapEKK0191B001.getString(EKK0191B001CBSMsg1List.TELNO_JUN);
			// サービス終了年月日を取得する
			String svcEndYmdEKK0191B001 = (String)mapEKK0191B001.getString(EKK0191B001CBSMsg1List.SVC_ENDYMD);
			// 電話番号順番が「1」の場合
			if (TEL_NO_JUNBAN_1.equals(telNoJunEKK0191B001))
			{
				if(JKKStringUtil.isNullBlank(svcEndYmdEKK0191B001) 
						|| JKKStrConst.END_YMD_DEFAULT.equals(svcEndYmdEKK0191B001))
				{
					// 宅内機器種別コードを取得する
					 taknkikiSbtCdEKK0191B001 = (String)mapEKK0191B001.getString(EKK0191B001CBSMsg1List.TAKNKIKI_SBT_CD);
					return taknkikiSbtCdEKK0191B001;
				}
			}
		}
		return taknkikiSbtCdEKK0191B001;
	}
	
	/**
	 * .電話番号順番='1'でサービス終了年月日='20991231'もしくはNULLのレコードが存在する場合
	 * <br>
	 * @param   kk0191_b001_map_list      サービス契約内訳<eo光電話>一覧照会（サービス契約番号）取得情報
	 * @return  taknkikiSbtCdEKK0191B001 宅内機器種別コード
	 */
	private String svcEndYmdCk2(CAANMsg[] kk0191_b001_map_list)
	{
		// 宅内機器種別コード初期化
		String taknkikiSbtCdEKK0191B001 = null;
		for (int i = 0 ;kk0191_b001_map_list != null && i < kk0191_b001_map_list.length; i++ )
		{
			CAANMsg mapEKK0191B001 = kk0191_b001_map_list[i];
			// 電話番号順番を取得する
			String telNoJunEKK0191B001 = (String)mapEKK0191B001.getString(EKK0191B001CBSMsg1List.TELNO_JUN);
			// サービス終了年月日を取得する
			String svcEndYmdEKK0191B001 = (String)mapEKK0191B001.getString(EKK0191B001CBSMsg1List.SVC_ENDYMD);
			// 電話番号順番が「1」の場合
			if (TEL_NO_JUNBAN_1.equals(telNoJunEKK0191B001))
			{
				if(!JKKStringUtil.isNullBlank(svcEndYmdEKK0191B001) 
						&& !JKKStrConst.END_YMD_DEFAULT.equals(svcEndYmdEKK0191B001) )
				{
					// 宅内機器種別コードを取得する
					taknkikiSbtCdEKK0191B001 = (String)mapEKK0191B001.getString(EKK0191B001CBSMsg1List.TAKNKIKI_SBT_CD);
					return taknkikiSbtCdEKK0191B001;
				}
			}
		}
		return taknkikiSbtCdEKK0191B001;
	}
	
	/**
	 * .接続機器判定_「1_流用元VA」、「0_流用元多機能」、「null」
	 * <br>
	 * @param   taknkikiSbt      宅内機器種別コード
	 * @return  流用元接続機器種別
	 */
	private String ryuyoMotsbtJudge(String taknkikiSbt)
	{
		if(JKKStrConst.TAKNKIKI_SBT_CD_VA.equals(taknkikiSbt))
		{
			// 流用元接続機器種別に「1_流用元VA」を設定する
			return RYUYO_MT_VA;
		}
		else if (JKKStrConst.TAKNKIKI_SBT_CD_TAKINORT.equals(taknkikiSbt))
		{
			// 流用元接続機器種別に「0_流用元多機能ルータ」を設定する
			return RYUYO_MT_TAKINO_RT;
		}
		else
		{
			// 流用元接続機器種別に「NULL」を設定する
			return null;
		}
	}

	/**
	 * ルール定義パス、ルールID、モードタイプ【単一条件/複数条件】を引数に、JRuleXMLHandler(String, String, int)
	 * を呼び出して相関チェック用ルールエンジンのハンドラクラスオブジェクトを生成します。
	 * <br>
	 * @param ruleId 相関チェックしたいXMLのルールID
	 * @param modeType モードタイプ SINGLE_MODE_TYPE【単一条件】/MULTI_MODE_TYPE【複数条件】
	 * @return JRuleXMLHandler 相関チェックルールエンジン用ハンドラクラスオブジェクト
	 */
	private JRuleXMLHandler createSokanRuleEngine(String ruleId, int modeType)
	{
		return new JRuleXMLHandler(JCCBPCommon.getApplicationConst(XML_PATH), ruleId, modeType);
	}
	
	/**
	 * .VONU流用有無の設定判定
	 * <br>
	 * @param   workEKU0081B010
	 * @param   wkRsltShokaiMap
	 * @param   rsltShokai
	 * @param   handle
	 * @param   param
	 * @param   pcrsCd
	 * @param   pplanCd
	 * @return  流用元接続機器種別
	 */
	private String vonuRyuyoUmJudge(CAANMsg[] workEKU0081B010
									, SessionHandle handle
									, IRequestParameterReadWrite param
									, String pcrsCd
									, String pplanCd 
									, int userIndex
									) throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		String vonuRyuyoUm = "";
		for (int t = 0; workEKU0081B010 != null && t < workEKU0081B010.length; t++)
		{
			CAANMsg childTemplate = workEKU0081B010[t];
			// サービスコードを取得する
			String svcCdEKU0081B010 = (String)childTemplate.getString(EKU0081B010CBSMsg1List.SVC_CD);
			
			if (SVC_CD_TV.equals(svcCdEKU0081B010))
			{
				// サービス契約回線内訳番号を取得する
				String svcKaisenUcwkNokEKU0081B010 = (String)childTemplate.getString(EKU0081B010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
				// EKK0341B504 機器提供サービス契約一覧照会(サービス契約回線内訳)を実行する。
				List<CAANMsg> inMsgEKK0341B504List = shosaOkMapper.editInMsgEKK0341B504(param, userIndex, svcKaisenUcwkNokEKU0081B010);
				HashMap<String, Object> inMsgEKK0341B504Map = editInMsgCmn(param, inMsgEKK0341B504List.get(0));	
				Map<?, ?> rsltEKK0341B504 = scCall.run(inMsgEKK0341B504Map, handle);
				shosaOkMapper.editResultRPEKK0341B504(rsltEKK0341B504, param, userIndex);
				shosaOkMapper.errChk(rsltEKK0341B504);
				CAANMsg[] workEKK0341B504 = getWorkData(EKK0341B504CBSMsg.EKK0341B504CBSMSG1LIST, rsltEKK0341B504);
	
				for (int j = 0; workEKK0341B504 != null && j < workEKK0341B504.length ; j++ )
				{
					CAANMsg childTemplate3 = workEKK0341B504[j];
					
					ArrayList<ArrayList<HashMap<String, Object>>> outMsgList = new ArrayList<ArrayList<HashMap<String, Object>>>();
					HashMap<String, Object> map = new HashMap<String, Object>();
					if(JKKStrConst.TAKNKIKI_SBT_CD_VONU.equals(childTemplate3.getString(EKK0341B504CBSMsg1List.TAKNKIKI_SBT_CD)))
					{
						//V-ONU機器情報
						map.put(JKKKojiAnkenConstCC.VONU_KK_INF, childTemplate3.getString(EKK0341B504CBSMsg1List.TAKNKIKI_MODEL_CD));
						//設備流用元料金コースコード
						map.put(JKKKojiAnkenConstCC.RYUYO_MOTO_PCRS_CD, childTemplate3.getString(EKK0341B504CBSMsg1List.PCRS_CD));
						//設備流用元料金プランコード
						map.put(JKKKojiAnkenConstCC.RYUYO_MOTO_PPLAN_CD, childTemplate3.getString(EKK0341B504CBSMsg1List.PPLAN_CD));
						// 入力料金コースコード
						map.put(JKKKojiAnkenConstCC.RYUYO_SAKI_PCRS_CD, pcrsCd);
						// 入力料金プランコード
						map.put(JKKKojiAnkenConstCC.RYUYO_SAKI_PPLAN_CD, pplanCd);
						
						// RULE0092 サービス契約照査時V-ONU流用有無判定を呼出す
						JRuleXMLHandler xmlHandler = createSokanRuleEngine(RULE_CONT_ID_RULE0092001, JRuleXMLPattern.SINGLE_MODE_TYPE);
						outMsgList = xmlHandler.getCheckResultArray(map);
						
						if (outMsgList.get(0) != null)
						{
							vonuRyuyoUm = (String)outMsgList.get(0).get(0).get(JKKKojiAnkenConstCC.VONU_RYUYO_UM);
							return vonuRyuyoUm;
						}
					}
				}
			}
		}
		return vonuRyuyoUm;
	}
	
	/**
	 * .撤去(解約)のチェック判定
	 * <br>
	 * @param   wkRsltShokaiMap
	 * @param   rsltShokai
	 * @param   handle
	 * @param   param
	 * @return  true 撤去解約自動登録を行う, false 撤去解約自動登録を行わない
	 */
	private boolean tekkyoKaiyakuCk(CAANMsg[] workEKU0081B010
									, SessionHandle handle
									, IRequestParameterReadWrite param
									, int userIndex
									) throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		// 返却用
		boolean tekkyoKaiyaku = true;
		for (int t = 0; workEKU0081B010 != null && t < workEKU0081B010.length; t++)
		{
			CAANMsg childTemplate = workEKU0081B010[t];
			// 工事案件番号を取得する
			String kojiAkNo = (String)childTemplate.getString(EKU0081B010CBSMsg1List.KOJIAK_NO);
			// EKU0011A010 工事案件一意照会を実行する。
			List<CAANMsg> inMsgEKU0011A010List = shosaOkMapper.editInMsgEKU0011A010(param, userIndex, kojiAkNo);
			HashMap<String, Object> inMsgEKU0011A010Map = editInMsgCmn(param, inMsgEKU0011A010List.get(0));
			Map<?, ?> rsltEKU0011A010 = scCall.run(inMsgEKU0011A010Map, handle);
			shosaOkMapper.editResultRPEKU0011A010(rsltEKU0011A010, param, userIndex);
			shosaOkMapper.errChk(rsltEKU0011A010);
			CAANMsg[] workEKU0011A010 = getWorkData(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST, rsltEKU0011A010);
			if(workEKU0011A010 != null)
			{
				CAANMsg childTemplate2 = workEKU0011A010[0];
				// 工事案件種別コード
				String kojiAkSbtCd = childTemplate2.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD);
				// 工事案件ステータス
				String kojiAkStat = childTemplate2.getString(EKU0011A010CBSMsg1List.KOJIAK_STAT);
				// 工事案件種別コード＝強制解約、撤去(解約)、住所変更(撤去)
				// 工事案件ステータス＝中止以外
				if((CD00577_KYOSEI_KAIYAKU.equals(kojiAkSbtCd)
					|| JKKStrConst.CD00577_002.equals(kojiAkSbtCd)
					|| JKKStrConst.CD00577_004.equals(kojiAkSbtCd))
					&& !JKKStrConst.CD00474_900.equals(kojiAkStat))
				{
					tekkyoKaiyaku = false;
					break;
				}
			}	
		}
		
		return tekkyoKaiyaku;
	}
	
		
	/**
	 * .流用元接続機器種別の設定判定
	 * <br>
	 * @param   workEKU0081B010 
	 * @param   wkRsltShokaiMap 
	 * @param   rsltShokai 
	 * @param   handle ハンドル
	 * @param   param パラメータ
	 * @param   prcGrpCd パラメータ.料金グループコード
	 * @param   pplanCd パラメータ。料金プランコード
	 * @return  ryuyoMtSetsuzokuKikiSbt 流用元接続機器種別
	 */
	private String ryuyoMtSetsuzokuKikiSbtJudge(CAANMsg[] workEKU0081B010
									, SessionHandle handle
									, IRequestParameterReadWrite param
									, int userIndex
									) throws Throwable
	{
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		String ryuyoMtSetsuzokuKikiSbt = null;
		for (int i = 0; workEKU0081B010 != null && i < workEKU0081B010.length; i++)
		{
			CAANMsg childTemplate = workEKU0081B010[i];
			// サービスコードを取得する
			String svcCdEKU0081B010 = (String)childTemplate.getString(EKU0081B010CBSMsg1List.SVC_CD);
			// 電話サービスが存在するかどうかを確認する
			// 流用元接続種別機器種別を検索する
			if(SVC_CD_TEL.equals(svcCdEKU0081B010))
			{
				// サービス契約番号を取得する
				String svcKeiNoEKU0081B010 = (String)childTemplate.getString(EKU0081B010CBSMsg1List.SVC_KEI_NO);
				// EKK0191B001 サービス契約内訳<eo光電話>一覧照会（サービス契約番号）を実行する。(機能コード:7)
				List<CAANMsg> inMsgEKK0191B001List = shosaOkMapper.editInMsgEKK0191B001(param, userIndex, svcKeiNoEKU0081B010);
				HashMap<String, Object> inMsgEKK0191B001Map = editInMsgCmn(param, inMsgEKK0191B001List.get(0));
				// SSIFの実行
				Map<?, ?> rsltEKK0191B001 = scCall.run(inMsgEKK0191B001Map, handle);
				shosaOkMapper.editResultRPEKK0191B001(inMsgEKK0191B001Map, param, userIndex);
				shosaOkMapper.errChk(inMsgEKK0191B001Map);
				CAANMsg[] workEKK0191B001 = getWorkData(EKK0191B001CBSMsg.EKK0191B001CBSMSG1LIST, rsltEKK0191B001);
				
				// 流用元接続種別機器種別
				ryuyoMtSetsuzokuKikiSbt = this.ryuyoMtSetsuKikiSbtJudge(workEKK0191B001);
				break;
			}
			
		}
		return ryuyoMtSetsuzokuKikiSbt;
	}

	/**
	 * .撤去(解約)情報設定
	 * <br>
	 * @param   workEKU0081B010
	 * @param   handle
	 * @param   param
	 * @param   ryuyoMtAkNo 流用元案件番号
	 * @param   ryuyoKiboYmd 流用希望年月日
	 * @param   vonuRyuyoUm VONU流用有無
	 * @param   equipRyuyoUm 設備流用有無
	 * @param   plnNrkeFlg プラン乗換フラグ
	 * @param   nrkemtRozettCd 乗換元ローゼット設置状態コード
	 * @return  true 異常終了, false 正常終了
	 */
	private boolean ryuyoMtAkTekkyoKaiyaku(CAANMsg[] workEKU0081B010
									, SessionHandle handle
									, IRequestParameterReadWrite param
									, String ryuyoMtAkNo
									, String ryuyoKiboYmd
									// IT2-2018-0000064 ADD START
									, String vonuRyuyoUm
									// IT2-2018-0000064 ADD END
									// ANK-4468-11-00 ADD START
									, String equipRyuyoUm
									, String plnNrkeFlg
									// ANK-4468-11-00 ADD END
									// ANK-4577-00-00 ADD START
									, String nrkemtRozettCd
									// ANK-4577-00-00 ADD END
									) throws Throwable
	{
		boolean returnRsl = false;
		
		String fixedText = "JKKTekkyoDslRun";
		// サービスに渡す業務データを格納するMAP
		HashMap<String, Object> dataMap = (HashMap<String, Object>)param.getData(fixedText);
		if (dataMap == null)
		{
			dataMap = new HashMap<String, Object>();
			param.setData(fixedText, dataMap);
		}

		// 請求契約番号
		String seikyKeiNo = "";
		// SYSID
		String sysId = "";
		//工事範囲は流用元工事案件の回線に紐づく全サービスを全撤去する。
		// 工事範囲
		String kojiScope = "";
		// サービス契約番号
		String svcKeiNo = "";
		// サービスコード
		String svcCd = "";
		
		for (int i = 0; workEKU0081B010 != null && i < workEKU0081B010.length; i++)
		{
			CAANMsg childTemplate = workEKU0081B010[i];
			// サービスコードを取得する
			String svcCdEKU0081B010 = (String)childTemplate.getString(EKU0081B010CBSMsg1List.SVC_CD);
			// 電話サービスが存在するかどうかを確認する
			// 流用元接続種別機器種別を検索する
			// IT1-2018-0000098 MOD START
//			if(SVC_CD_TEL.equals(svcCdEKU0081B010))
//			{
//				continue;
//			}
//			else
//			{
//				svcCd = workEKU0081B010[i].getString(EKU0081B010CBSMsg1List.SVC_CD);
//				if(SVC_CD_NET.equals(svcCd)  )
//				{
//					kojiScope = JKKKojiAnkenConstCC.KOJI_SCOPE_CD_IP_ZENTEKKYO;
//				}
//				else if(SVC_CD_TV.equals(svcCd))
//				{
//					kojiScope = JKKKojiAnkenConstCC.KOJI_SCOPE_CD_TV_ZENTEKKYO;
//				}
//				svcKeiNo =  workEKU0081B010[i].getString(EKU0081B010CBSMsg1List.SVC_KEI_NO);
//				// SYSID 
//				sysId = workEKU0081B010[i].getString(EKU0011A010CBSMsg1List.SYSID);
//			}
			svcKeiNo =  childTemplate.getString(EKU0081B010CBSMsg1List.SVC_KEI_NO);
			sysId = childTemplate.getString(EKU0011A010CBSMsg1List.SYSID);
			if(SVC_CD_NET.equals(svcCdEKU0081B010))
			{
				kojiScope = JKKKojiAnkenConstCC.KOJI_SCOPE_CD_IP_ZENTEKKYO;
				break;
			}
			else if(SVC_CD_TEL.equals(svcCdEKU0081B010))
			{
				kojiScope = JKKKojiAnkenConstCC.KOJI_SCOPE_CD_IP_ZENTEKKYO;
			}
			else if (SVC_CD_TV.equals(svcCdEKU0081B010))
			{
				kojiScope = JKKKojiAnkenConstCC.KOJI_SCOPE_CD_TV_ZENTEKKYO;
				break;
			}
			// IT1-2018-0000098 MOD END
		}

		// 共通情報のマッピング
		dataMap.put("func_code", FUNC_CODE_1);
		// 部品呼び出し → 解約実行マップ.起動元コード
		dataMap.put("kido_cd", String.valueOf("01"));
		// ＳＹＳＩＤ → 解約実行マップ.ＳＹＳＩＤ
		dataMap.put("sysid", sysId);
		// サービス契約番号 → 解約実行マップ.サービス契約番号
		dataMap.put("svc_kei_no", svcKeiNo);
		// サービスコード → 解約実行マップ.サービスコード
		dataMap.put("tekyo_kbn_svc_cd", svcCd);
		// 撤去方法種別コード  → 解約実行マップ.工事範囲コード
		dataMap.put("tk_way_sbt_cd", kojiScope);
		// 工事会社連携情報メモ  → 解約実行マップ.工事案件連絡事項
		dataMap.put("rrk_jiko", BIKO_COMMENT);
		// 解約問合せ客名   → 解約実行マップ.申込者名 
		dataMap.put("mskmsha_nm", null);
		// 撤去工事連絡先電話番号  → 解約実行マップ.工事アポ連絡先電話番号
		dataMap.put("koji_apo_rrks_telno", null);
		// 工事立会者名、工事アポ対応者名 → 解約実行マップ.工事案件備考1
		dataMap.put("kojiak_biko_1", null);
		// 流用元希望年月日  → 解約実行マップ.解約希望日
		dataMap.put("dsl_ymd_tekkyo", ryuyoKiboYmd);
		
		//異動区分:異動区分 撤去(解約)を設定
		dataMap.put("ido_div", JKKStrConst.CD00576_TK_DSL);
		// 備考 → 解約実行マップ.業務連絡備考
		dataMap.put("work_rrk_biko", null);
		// サービス終了年月日 → 解約実行マップ.サービス終了年月日
		dataMap.put("svc_endymd", (String)JCCBPCommon.getOpeDate(null));
		// サービス課金終了年月日 → 解約実行マップ.サービス課金終了年月日
		dataMap.put("svc_chrg_endymd", (String)JCCBPCommon.getOpeDate(null));
		// 違約金発生コード	
		// 0_違約金なし
		dataMap.put("pnlty_hassei_cd", JKKStrConst.CD01375_PNLTY_NASHI);
		
		HashMap<String,Object> inputIdoRsnCd = new HashMap<String,Object>();
		// 異動理由データリストをArrayListで構築する。
		ArrayList<HashMap<String,Object>> inputIdoRsnDataList = new ArrayList<HashMap<String,Object>>();
		// 異動理由明細リスト.異動理由コード → 進捗登録マップ.異動理由明細.異動理由コード
		inputIdoRsnCd.put("ido_rsn_cd", JKKStrConst.CD00846_OTHER);
		inputIdoRsnDataList.add(inputIdoRsnCd);
		dataMap.put("ido_list", inputIdoRsnDataList);

		//請求先番号
		dataMap.put("seiky_kei_no", seikyKeiNo);
		//基準日
		dataMap.put("reqymd", (String)JCCBPCommon.getOpeDate(null));
		// IT2-2018-0000064 ADD START
		// 流用希望年月日 → 解約実行マップ.工事希望年月日
		dataMap.put("koji_kibo_ymd_tekkyo", ryuyoKiboYmd);
		// 設備流用有無「有」 → 解約実行マップ.設備流用有無
		// ANK-4468-11-00 MOD START
		//dataMap.put("equip_ryuyo_um", JKKKojiAnkenConstCC.EQUIP_RYUYO_UMU_ARI);
		dataMap.put("equip_ryuyo_um", equipRyuyoUm);
		// ANK-4468-11-00 MOD END
		// VONU流用有無 → 解約実行マップ.VONU流用有無
		dataMap.put("vonu_ryuyo_um", vonuRyuyoUm);
		// 流用希望年月日 → 解約実行マップ.設備流用工事完了希望年月日
		// ANK-4468-11-00 ADD START
		// 設備流用有無が"2","3"の場合は設備流用工事完了希望年月日にnullを設定
		if ("2".equals(equipRyuyoUm) || "3".equals(equipRyuyoUm)){
			dataMap.put("sbry_kj_fin_kiboymd", null);
		} else{
		// ANK-4468-11-00 ADD END
			dataMap.put("sbry_kj_fin_kiboymd", ryuyoKiboYmd);
		// ANK-4468-11-00 ADD START
		}
		// ANK-4468-11-00 ADD END
		// IT2-2018-0000064 ADD END
		// ANK-4468-11-00 ADD START
		// プラン乗換フラグ → 解約実行マップ.プラン乗換フラグ
		dataMap.put("pln_nrke_flg", plnNrkeFlg);
		// ANK-4468-11-00 ADD END
		// ANK-4577-00-00 ADD START
		// 乗換元ローゼット設置状態コード → 解約実行マップ.乗換元ローゼット設置状態コード
		dataMap.put("nrkemt_rozett_cd", nrkemtRozettCd);
		// ANK-4577-00-00 ADD END

		// v31.00.06 IT1-2018-0000105 MOD START
		//if ("0".equals(JKKBpCommon.runTekyoDslPreChk(handle, param, fixedText)))
		if ("0".equals(JKKBpCommon.runTekyoDslPreChkRyuyomoto(handle, param, fixedText, ryuyoMtAkNo)))
		// v31.00.06 IT1-2018-0000105 MOD END 
		{
			// v31.00.04 IT1-2018-0000105 ADD START
			try
			{
			// v31.00.04 IT1-2018-0000105 ADD END
				// 撤去解約実行処理を呼び出す。
				JKKBpCommon.runTekkyoDsl(handle, param, fixedText);
				HashMap<String, Object> ccMap = (HashMap<String, Object>)param.getData(fixedText);
				if (!JKKStrConst.CHECK_OK.equals(param.getControlMapData(SCControlMapKeys.RETURN_CODE))
					|| "1".equals(ccMap.get("err_flg")))
				{
					returnRsl = true;
				}
			// v31.00.04 IT1-2018-0000105 ADD START
			}
			catch (Throwable e)
			{
				return true;
			}
			// v31.00.04 IT1-2018-0000105 ADD END
		}
		return returnRsl;
	}
	
	/**
	 * 例外発生させるためのサービスIFエラー（ダミー）を設定します。
	 * <br>
	 * @param param
	 * @param paramMap
	 * @param errIfId エラー発生サービスIFID
	 * @param errItem エラー発生項目
	 * @return パラメータマップ
	 * @throws RequestParameterException
	 */
	protected void setExceptionErr(IRequestParameterReadWrite param, HashMap<String, Object> inMap, String errIfId, String errItem)
			throws RequestParameterException
	{
		inMap.put(errItem, "EZ");
		
		int templateStatus = JPCModelConstant.RELATION_ERR;
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}
		
		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		// エラー情報のリストを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if (errList == null)
		{
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		HashMap<String, Object> errorMap = new HashMap<String, Object>();
		HashMap<String, String> errorMapChild = new HashMap<String, String>();
		
		errorMap.put(ErrorInfoMapKeys.RETURN_CODE, JPCModelConstant.NORMAL_END);
		errorMap.put(ErrorInfoMapKeys.TEMPLATE_ID, errIfId);
		errorMap.put(ErrorInfoMapKeys.STATUS, JPCModelConstant.RELATION_ERR);
		
		errorMapChild.put(errItem, "EZ");
		errorMap.put(ErrorInfoMapKeys.ITEM_CHECK_ERRORS, errorMapChild);
		
		errList.add(errorMap);
		
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, errList);
	}
	//---------v31.00.00 ANK-3136-00-00_ADD END-----------//

	// v31.00.04 IT1-2018-0000114 ADD START
	/**
	 * 機器提供サービス契約の更新処理を行います
	 * <br>
	 * @param   workEKU0081B010
	 * @param   wkRsltShokaiMap
	 * @param   rsltShokai
	 * @param   handle
	 * @param   param
	 * @param   pcrsCd
	 * @param   pplanCd
	 */
	private HashMap<String, Object> updKktkSvcKei(CAANMsg[] workEKK0081A010
									, SessionHandle handle
									, IRequestParameterReadWrite param
									, int userIndex
									, HashMap inMap
									, HashMap<String, Object> rsltShokai
									, int svcSbtCd
									) throws Throwable
	{
	// ANK-4577-00-00 ADD START
		 return updKktkSvcKei(workEKK0081A010
				, handle
				, param
				, userIndex
				, inMap
				, rsltShokai
				, svcSbtCd
				, null
				, null);
	}
		/**
		 * 機器提供サービス契約の更新処理を行います
		 * <br>
		 * @param   workEKU0081B010
		 * @param   wkRsltShokaiMap
		 * @param   rsltShokai
		 * @param   handle
		 * @param   param
		 * @param   pcrsCd
		 * @param   pplanCd
		 */
		private HashMap<String, Object> updKktkSvcKei(CAANMsg[] workEKK0081A010
										, SessionHandle handle
										, IRequestParameterReadWrite param
										, int userIndex
										, HashMap inMap
										, HashMap<String, Object> rsltShokai
										, int svcSbtCd
										, String nrkemtSvkeiNo
										, String equipRyuyoUm
										) throws Throwable
		{
		// ANK-4577-00-00 ADD END
		HashMap<String, Object> rsltShosaMap = new HashMap();
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		
		// ANK-4577-00-00 ADD START
		Map<String,String> tknkkDummyCdList = new HashMap();
		// ANK-4577-00-00 ADD END
		
		// 業務パラメータ管理一意照会を実行する(V-ONUダミー機器)
		HashMap<String, Object> wkVonuDuMmyMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> wkMapArray1 = new ArrayList<HashMap<String,Object>>();
		List<CAANMsg> xList = this.shokaiMapper.editInMsgEZM0321A010(param, WORK_PARAM_ID_KK_SBRY_DUMMY_VONU);
		wkMapArray1.add(editInMsgCmn(param, xList.get(0)));
		wkVonuDuMmyMap.put(MAP_KEY_EZM0321A010, wkMapArray1);
		wkVonuDuMmyMap = runShokai(param, handle, wkVonuDuMmyMap, new String[]{MAP_KEY_EZM0321A010});
		CAANMsg[] workEZM0321A010 = getWorkParentData(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, wkVonuDuMmyMap, MAP_KEY_EZM0321A010);
		// V-ONUダミー機器の宅内機器型式コードの取得
		String tknkkMdlCdVonu = workEZM0321A010[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
		
		// 業務パラメータ管理一意照会を実行する(ONUダミー機器)
		wkVonuDuMmyMap = new HashMap<String, Object>();
		wkMapArray1 = new ArrayList<HashMap<String,Object>>();
		xList = this.shokaiMapper.editInMsgEZM0321A010(param, WORK_PARAM_ID_KK_SBRY_DUMMY_ONU);
		wkMapArray1.add(editInMsgCmn(param, xList.get(0)));
		wkVonuDuMmyMap.put(MAP_KEY_EZM0321A010, wkMapArray1);
		wkVonuDuMmyMap = runShokai(param, handle, wkVonuDuMmyMap, new String[]{MAP_KEY_EZM0321A010});
		workEZM0321A010 = getWorkParentData(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, wkVonuDuMmyMap, MAP_KEY_EZM0321A010);
		// V-ONUダミー機器の宅内機器型式コードの取得
		String tknkkMdlCdOnu = workEZM0321A010[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
		
		// ANK-4577-00-00 ADD START
		// HGWダミー機器の宅内機器型式コードの取得
		String tknkkMdlCdHgw = getDummyCd(param, handle, WORK_PARAM_ID_KK_SBRY_DUMMY_HGW);
		tknkkDummyCdList.put(WORK_PARAM_ID_KK_SBRY_DUMMY_HGW, tknkkMdlCdHgw);
		
		// 多機能ルーターダミー機器の宅内機器型式コードの取得
		String tknkkMdlCdTknrt = getDummyCd(param, handle, WORK_PARAM_ID_KK_SBRY_DUMMY_TKNRT);
		tknkkDummyCdList.put(WORK_PARAM_ID_KK_SBRY_DUMMY_TKNRT, tknkkMdlCdTknrt);
		
		// メッシュwifiダミー機器の宅内機器型式コードの取得
		String tknkkMdlCdMesh = getDummyCd(param, handle, WORK_PARAM_ID_KK_SBRY_DUMMY_MESH);
		tknkkDummyCdList.put(WORK_PARAM_ID_KK_SBRY_DUMMY_MESH, tknkkMdlCdMesh);
		
		// 無線LAN中継器ダミー機器の宅内機器型式コードの取得
		String tknkkMdlCdMlan = getDummyCd(param, handle, WORK_PARAM_ID_KK_SBRY_DUMMY_MLAN);
		tknkkDummyCdList.put(WORK_PARAM_ID_KK_SBRY_DUMMY_MLAN,tknkkMdlCdMlan);
		// ANK-4577-00-00 ADD END
		
		// EKK0251B003 サービス契約回線内訳一覧照会（現在利用中）よりサービス契約回線内訳番号を取得する
		HashMap<String, Object> rslt = null;
		ArrayList<HashMap> wkMapArray = new ArrayList();
		
		boolean kktkSvcKeiUpdFlg;
		
		// 機器提供サービス契約を参照
		ArrayList<HashMap> workEKK0341B022Array = null;	// サービス対象機器提供サービス契約一覧照会
		workEKK0341B022Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0341B022);
		if (workEKK0341B022Array != null) 
		{
			for (int k = 0; k < workEKK0341B022Array.size(); k++)
			{
				CAANMsg[] wkTenplates = getWorkData(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST, (Map)workEKK0341B022Array.get(k));
				for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)
				{
					kktkSvcKeiUpdFlg = false;
					
					CAANMsg childTemplate = wkTenplates[j];
					
					// 機器提供サービスコードがONU、かつ、サービス種別コードが"1"(ネット)または"3"(電話)の場合、
					// 機器提供サービス契約の更新処理を行う
					if((KKTK_SVC_C012.equals(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD))
							&& (svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_HTEL)))
					{
						kktkSvcKeiUpdFlg = true;
					}
					// 機器提供サービスコードがV-ONU、かつ、サービス種別コードが"2"(テレビ)の場合、
					// 機器提供サービス契約の更新処理を行う
					else if(KKTK_SVC_C013.equals(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD))
							&& svcSbtCd == SVC_SBT_CD_HTV)
					{
						kktkSvcKeiUpdFlg = true;
					}
					else
					{
						kktkSvcKeiUpdFlg = false;
					}
					
					// ANK-4577-00-00 ADD START
					// 乗換の場合、機器提供サービス契約の更新処理
					if (!(JKKStringUtil.isNullBlank(nrkemtSvkeiNo)))
					{
						kktkSvcKeiUpdFlg = false;
						// 乗換元で無線LAN中継器もしくはメッシュwifiを所有している場合
						if (KKTK_SVC_C015.equals(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD)) 
								&& !(PCRS_CD_C26.equals(childTemplate.getString(EKK0341B022CBSMsg1List.PCRS_CD))))
						{
							kktkSvcKeiUpdFlg = true;
						}
						if ("1".equals(equipRyuyoUm))
						{
							// 設備流用有無が1で、ONU/HGW/多機能ルーターを所有している場合
							if (KKTK_SVC_C012.equals(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD))
									|| KKTK_SVC_C025.equals(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD))
									|| KKTK_SVC_C024.equals(childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_CD)))
							{
								kktkSvcKeiUpdFlg = true;
							}
						}
					}
					// ANK-4577-00-00 ADD END
					
					if (kktkSvcKeiUpdFlg)
					{
						// 機器提供サービス契約番号を取得する
						String kktkSvcKeiNo = childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_NO);
						
						// 機器提供サービス契約一意照会を実行する
						if (!"".equals(kktkSvcKeiNo))
						{
							List<CAANMsg> inMsgEKK0341A010List = shosaOkMapper.editInMsgEKK0341A010(param, kktkSvcKeiNo);
							HashMap<String, Object> inMsgEKK0341A010Map = editInMsgCmn(param, inMsgEKK0341A010List.get(0));
							// SIFの実行
							Map<?, ?> rsltEKK0341A010 = scCall.run(inMsgEKK0341A010Map, handle);
							shosaOkMapper.editResultRPEKK0341A010(rsltEKK0341A010, param, userIndex);
							
							CAANMsg[] workEKK0341A010 = getWorkData(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST, rsltEKK0341A010);
							
							List<CAANMsg> wkCaanMsgList = null;
							if (workEKK0341A010 != null)
							{
								// 宅内機器形式コードを取得する。
								String tknkkMdlCd = workEKK0341A010[0].getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
								// 宅内機器種別コードを取得する。
								String taknkikiSbtCd = workEKK0341A010[0].getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD);
								// 機器提供サービス契約ステータスを取得する。
								String kktkTeikyoSvcKeiStat = workEKK0341A010[0].getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
								
								// 宅内機器型式コードがnull、かつ、宅内機器種別コードが"D0"(ONU)または"E0"(V-ONU)または"S0"(HGW)または"R0"(多機能ルーター)、かつ、
								// 機器提供サービス契約ステータスが"020"(照査済)の場合にダミー機器を設定する。
								// また、宅内機器種別コードが"G0"(PLCモデム)かつ、機器提供サービス契約ステータスが"020"(照査済)の場合、ダミー機器を設定する。
								// 上記以外の場合は更新なし。
								// ANK-4577-00-00 MOD START
//								if (JKKStringUtil.isNullBlank(tknkkMdlCd) &&
//									(JKKStrConst.TAKNKIKI_SBT_CD_ONU.equals(taknkikiSbtCd) || JKKStrConst.TAKNKIKI_SBT_CD_VONU.equals(taknkikiSbtCd)) &&
//									(JKKSvcConst.KKTK_SVC_KEI_STAT_020.equals(kktkTeikyoSvcKeiStat)))
								if (((JKKStringUtil.isNullBlank(tknkkMdlCd) &&
										(JKKStrConst.TAKNKIKI_SBT_CD_ONU.equals(taknkikiSbtCd) || JKKStrConst.TAKNKIKI_SBT_CD_VONU.equals(taknkikiSbtCd)
											|| JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(taknkikiSbtCd) || JKKStrConst.TAKNKIKI_SBT_CD_TAKINORT.equals(taknkikiSbtCd)))
									 || JKKStrConst.TAKNKIKI_SBT_CD_PLC.equals(taknkikiSbtCd))
									 && (JKKSvcConst.KKTK_SVC_KEI_STAT_020.equals(kktkTeikyoSvcKeiStat)))
								// ANK-4577-00-00 MOD END
								{
									// 機器提供サービス契約更新を実行する
									// ANK-4577-00-00 MOD START
//									wkCaanMsgList = shosaOkMapper.editInMsgEKK0341C230TknkkModelCd(param, workEKK0341A010[0], tknkkMdlCdOnu, tknkkMdlCdVonu);
									wkCaanMsgList = shosaOkMapper.editInMsgEKK0341C230TknkkModelCd(param, workEKK0341A010[0], tknkkMdlCdOnu, tknkkMdlCdVonu, tknkkDummyCdList);
									// ANK-4577-00-00 MOD END
									rslt = editInMsgCmn(param, wkCaanMsgList.get(0));
									wkMapArray.add(rslt);
								}
							}
						}
					}
				}
			}
		}
		
		if (wkMapArray != null)
		{
			rsltShosaMap.put(MAP_KEY_EKK0341C230, wkMapArray);
		}
		
		return rsltShosaMap;
	}
	// v31.00.04 IT1-2018-0000114 ADD END
// ▽▽▽ ANK-3412-00-00 ADD START
	/**
	 * ルータ機器自動交換ＣＣを呼び出す
	 * <p>
	 * @param handle
	 * @param param
	 * @param svcKeiNo
	 * @param idoDiv
	 * @param pcrsCd
	 * @param rtMskmCd
	 */
	private HashMap<String, Object> execRtKikiAutoExchangeCC(SessionHandle handle, 
			IRequestParameterReadWrite param, String svcKeiNo, String idoDiv, String pcrsCd, String rtMskmCd) throws Throwable
	{
		// 機器の交換が必要かＣＣを呼び出す。
		HashMap<String, Object> rtKikiChgCkParam = new HashMap<String, Object>();
		
		// パラメータを設定する
		rtKikiChgCkParam.put("svc_kei_no",     svcKeiNo);
		rtKikiChgCkParam.put("ido_div",        idoDiv);
		rtKikiChgCkParam.put("pcrs_cd",        pcrsCd);
		rtKikiChgCkParam.put("router_mskm_cd", rtMskmCd);
		rtKikiChgCkParam.put("func_cd",        FUNC_CODE_1);
		
		// CC呼び出すために固定のキー時も列で登録
		param.setData("JKKRouterKikiAtknCmnCC", rtKikiChgCkParam);

		// 機器交換判定を行う。
		JKKRouterKikiAtknCmnCC rtKikiAtknCC = new JKKRouterKikiAtknCmnCC();
		rtKikiAtknCC.execute(handle, param, "JKKRouterKikiAtknCmnCC");
		
		return (HashMap<String, Object>)param.getData("JKKRouterKikiAtknCmnCC");
	}
// ▲▲▲ ANK-3412-00-00 ADD END

	// ▽▽▽ ANK-3834-00-00 ADD START
	/**
	 * マルウェア有無決める
	 * <p>
	 * @param svkeiData
	 * @param rsltShokai
	 * @param pcrsCd
	 * @param scmTypeCd
	 * @param scmJgsCd
	 * @return malwareum
	 */
	// ANK-4075-00-00 MOD START
//	private String malwareum(HashMap svkeiData,HashMap<String, Object> rsltShokai,String pcrsCd) throws Throwable
	private String malwareum(HashMap svkeiData,HashMap<String, Object> rsltShokai,String pcrsCd, String scmTypeCd, String scmJgsCd) throws Throwable
	// ANK-4075-00-00 MOD END
	{
		String malwareFlg = "";	
		String trat_cd1 = (String)svkeiData.get(JKKSvkeiShosaConstCC.TRAT_CD1);
		String trat_cd3 = (String)svkeiData.get(JKKSvkeiShosaConstCC.TRAT_CD3);
		
		ArrayList<HashMap> workEZM0321B010Array = null; // 業務パラメータ管理一覧照会

		if(!"".equals(trat_cd1)||!"".equals(trat_cd3)){
			if (null != rsltShokai)
			{
				workEZM0321B010Array = (ArrayList)rsltShokai.get(MAP_KEY_EZM0321B010);
				String workParamSetteValue = "";
				if (workEZM0321B010Array != null) 
				{
					for (int i = 0; i < workEZM0321B010Array.size(); i++)
					{
						CAANMsg[] wkTenplates = getWorkData(EZM0321B010CBSMsg.EZM0321B010CBSMSG1LIST, (Map)workEZM0321B010Array.get(i));
						for (int j = 0; j < wkTenplates.length; j++)
						{
							CAANMsg childTemplate = wkTenplates[j];
							workParamSetteValue = workParamSetteValue + childTemplate.getString(EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE) + ",";
							
						}
						List<String> malwareNoList = Arrays.asList(workParamSetteValue.split(","));
						
						if(!mansPrvPcrsList.contains(pcrsCd) )
						{
							if(malwareNoList.contains(trat_cd1) || malwareNoList.contains(trat_cd3))
							{
								malwareFlg = "1";
							}
						}
					}
				}
			}
		}
		// ANK-4075-00-00 ADD START
		ArrayList<HashMap> workEZM0321B010_02Array = null; // 業務パラメータ管理一覧照会

		if (!malwareFlg.equals("1") && scmTypeList.contains(scmTypeCd))
		{
			workEZM0321B010_02Array = (ArrayList)rsltShokai.get(MAP_KEY_EZM0321B010_02);
			String workParamSetteValue = "";
			if (workEZM0321B010_02Array != null) 
			{
				for (int i = 0; i < workEZM0321B010_02Array.size(); i++)
				{
					CAANMsg[] wkTenplates = getWorkData(EZM0321B010CBSMsg.EZM0321B010CBSMSG1LIST, (Map)workEZM0321B010_02Array.get(i));
					for (int j = 0; j < wkTenplates.length; j++)
					{
						CAANMsg childTemplate = wkTenplates[j];
						workParamSetteValue = workParamSetteValue + childTemplate.getString(EZM0321B010CBSMsg1List.WORK_PARAM_SETTE_VALUE) + ",";

					}
					List<String> malwareNoList = Arrays.asList(workParamSetteValue.split(","));
					if(malwareNoList.contains(scmJgsCd))
					{
						malwareFlg = "1";
					}
				}
			}
		}
		// ANK-4075-00-00 ADD END
		return malwareFlg;
	}
// ▲▲▲ ANK-3834-00-00 ADD END
	// ANK-4315-00-00 ADD START
	/**
	 * SC(サービスインターフェイス）を呼び出します。
	 * @param handle セッションハンドル
	 * @param scCall SC呼び出し部品
	 * @param param リクエストパラメータ
	 * @param dataMapKey パラメータキー
	 * @param mappingData マッピングデータ
	 * @return サービスインターフェイス実行結果
	 * @throws Throwable 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSC(SessionHandle handle, 
							ServiceComponentRequestInvoker scCall, 
							IRequestParameterReadWrite param, 
							String dataMapKey,
							Object[][] mappingData) throws Throwable
	{
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);

		Map<?, ?> result = scCall.run(paramMap, handle);

		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);

		CAANMsg msg = templates[0];

		// リターンコード取得
		Object RETURN_CODE = result.get(JCMConstants.RET_CD_INT_KEY);

		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);

		editErrorInfoCom(param, templates, (Integer)RETURN_CODE, dataMapKey);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);

		if (null == errList)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(RETURN_CODE.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", RETURN_CODE.toString(), status);
		}

		return msg;
	}

	/**
	 * エラーチェック処理です。
	 * <br>
	 * @param msgList サービスインタフェース実行結果
	 * @return void
	 * @throws SCCallException 
	 */
	protected 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(JCMConstants.STATUS_INT_KEY);
		
		if ((0 != returnCode.intValue()) || (0 != templateStatus))
		{
			String errMsg = JKKTelnoInfoAddConstCC.ERR_MSG;
			throw new SCCallException(errMsg, String.valueOf(returnCode), templateStatus);
		}
	}


	/**
	 * 共通項目のメッセージを作成します。
	 * @param param リクエストパラメータ
	 * @param mappingData マッピングデータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException リクエストパラメータの操作でエラーが発生した場合
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param,
												Object[][] mappingData) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());

		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());

		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());

		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));

		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));

		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));

		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		String svcIf = (String)mappingData[0][1];

		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));

		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));
		
		for (int i = 0; i < mappingData.length; i++)
		{
			if (mappingData[i][1] instanceof CAANMsg[])
			{
				template.set((String)mappingData[i][0], (CAANMsg[])mappingData[i][1]);
			}
			else
			{
				if ("".equals(mappingData[i][1]))
				{
					template.setNull((String)mappingData[i][0]);
				}
				else
				{
					template.set((String)mappingData[i][0], mappingData[i][1]);
				}
			}
		}

		CAANMsg[] templates = new CAANMsg[1];

		templates[0] = template;

		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * エラー情報を取得します。
	 * @param param リクエストパラメータ
	 * @param templates CAANMsgクラス
	 * @param errorCode リターンコード
	 * @param dataMapKey パラメータキー
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException リクエストパラメータの操作でエラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoCom(IRequestParameterReadWrite param,
														CAANMsg[] templates, 
														int errorCode,
														String dataMapKey) throws RequestParameterException
	{
		CAANMsg template = templates[0];

		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);
		
		if (0 != errorCode)
		{
			templateStatus = 9000;
		}

		if (null == JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + String.format(RETURN_MESSAGE_FORMAT, templateStatus)))
		{
			templateStatus = 0;
		}

		int bpStatus = 0;

		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		
		if (null == obj)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format(RETURN_MESSAGE_FORMAT, templateStatus);
			
			String message = JCMAPLConstMgr.getString(RETURN_MESSAGE_STRING + formatStatus);
			
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		// ユーザデータ情報
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(dataMapKey);

		HashMap map = template.getHashMap();
		Iterator it = map.keySet().iterator();
		while (it.hasNext())
		{
			String key = (String)it.next();
			Object value = map.get(key);
			if (value instanceof HashMap[])
			{
				HashMap[] childMapList = (HashMap[])value;
				for (HashMap childMap : childMapList)
				{
					Iterator childIt = childMap.keySet().iterator();
					while (childIt.hasNext())
					{
						String childKey = (String)childIt.next();
						if (childKey.endsWith(ERRITEM_SUFFIX))
						{
							int keyIdx = childKey.lastIndexOf(ERRITEM_SUFFIX);
							if (inMap.containsKey(childKey.substring(0, keyIdx)))
							{
								inMap.put(childKey, childMap.get(childKey));
							}
						}
					}
				}
			}
			else
			{
				if (key.endsWith(ERRITEM_SUFFIX))
				{
					int keyIdx = key.lastIndexOf(ERRITEM_SUFFIX);
					if (inMap.containsKey(key.substring(0, keyIdx)))
					{
						inMap.put(key, map.get(key));
					}
				}
			}
		}

		return param;
	}
	// ANK-4315-00-00 ADD END
	// ANK-4577-00-00 ADD START
	/**
	 * 業務パラメータ管理一意照会を実行します。
	 * @param param リクエストパラメータ
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param workParamId 業務パラメータ管理ID
	 * @return String
	 * @throws Throwable
	 */
	private String getDummyCd(IRequestParameterReadWrite param, SessionHandle handle, String workParamId) throws Throwable
	{
		// 業務パラメータ管理一意照会を実行する
		HashMap<String, Object> wkTknkkDummyMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> wkMapArray1 = new ArrayList<HashMap<String,Object>>();
		
		List<CAANMsg> xList = this.shokaiMapper.editInMsgEZM0321A010(param, workParamId);
		wkMapArray1.add(editInMsgCmn(param, xList.get(0)));
		wkTknkkDummyMap.put(MAP_KEY_EZM0321A010, wkMapArray1);
		wkTknkkDummyMap = runShokai(param, handle, wkTknkkDummyMap, new String[]{MAP_KEY_EZM0321A010});
		CAANMsg[] workEZM0321A010 = getWorkParentData(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, wkTknkkDummyMap, MAP_KEY_EZM0321A010);
		
		return workEZM0321A010[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
	}
	// ANK-4577-00-00 ADD END
}

