/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom, 2011
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：JKKCancelSvcKeiCC
 *   ソースファイル名：JKKCancelSvcKeiCC.java
 *   作成者          ：富士通
 *   日付            ：2011年09月29日
 *＜機能概要＞
 *   サービス契約キャンセル実行CCクラスです。
 *＜修正履歴＞
 *   バージョン        修正日       修正者      修正内容
 *   v1.00.00          2011/09/23   FJ）        新規作成
 *   ST2-2012-0001657  2012/09/10   FJ)中野     受付済のネットをキャンセルできない。
 *   v4.00.00          2012/07/20   FJ）島岡    スマートバリュー異動情報登録処理追加
 *   v4.00.00          2012/09/20   FJ）森本    申込書番号の発番検討における対応について
 *                                              宅内プラットフォーム事業本格対応
 *                                              お客さまID通知停止・初期eoID未発番対応
 *   v4.00.01          2012/10/02   FJ) 敷地    SEP-0016-00-00 照査前の契約キャンセル・回復時の更新仕様について
 *                                              SEP-0020-00-00 現行ICS指摘対応：337
 *                                              KAD-2011-0001102 UI残_No.917
 *   v5.00.00          2013/01/23   FJ)横井     ANK-1306-00-00 一時金取消対応
 *   v5.01.00          2013/02/07   FJ)横井     ANK-1421-00-00 IP-STB
 *   v6.00.00          2013/12/21   FJ)五十嵐   IT1-2013-0001709 多機能ルータ使用中電話をキャンセルでSODがでない
 *   v8.00.00          2014/03/18   FJ)藤本     【OM-2013-0002656】対応履歴情報に「テスト用全機能利用権限者」と登録される
 *   v8.01.00          2014/04/24   FJ)藤本     【OM-2014-0001140】照査取消後にID通知書が出力されない
 *   v8.02.00          2014/05/13   FJ)中野     【OM-2014-0001860】キャンセル時に解約、キャンセルの機器が存在するとその時点で機器のキャンセル処理が終了してしまう
 *   v9.00.00          2014/05/02   FJ)齋藤     【ANK-2056-00-00】光電話セレクトオプションパック
 *   v9.00.01          2014/05/07   FJ)江藤     【ANK-2054-00-00】スマートリンク端末補償
 *   v9.01.00          2014/06/12   FJ)寺田     【ANK-2095-00-00】【Ｎｏ．１４５９】タブレット誤出荷対応
 *  v10.00.00		   2014/07/23   FJ)松本     【ANK-1918-00-00】ＵＳ管理Ｓ向けｅｏ顧客ＳのＩ／Ｆ改修
 *  v10.01.00          2014/07/25   FJ)北谷     【ANK-2138-00-00】スマリン端末のトムソンケース同梱
 *  v10.02.00          2014/08/09   FJ)北谷     【IT1-2014-0000269】スマリン端末のトムソンケース同梱の条件追加
 *  v10.03.00          2014/08/15   FJ)江藤     【IT1-2014-0000286】工事取消連携契約キャンセルバッチを実行したところワーニング
 *  v10.04.00          2014/09/29   FJ)北谷     【IT1-2014-0000315】クレードル一体のタブレットの対応
 *  v10.05.00          2014/10/09   FJ)田中     【OM-2014-0003279】対応
 *  v10.06.00          2014/10/10   FJ)阮       【OM-2014-0003101】工事案件解約（回線残す）コール基準の変更  
 *  v10.07.00          2014/10/27   FJ)北谷     【OM-2014-0003440】TVのキャンセルでVDSLモデムを処理しないように修正
 *  v11.00.00          2014/12/24   FJ)中野     【OM-2014-0003617】新設工事時にコース変更を投入した後工事キャンセルすると諸変更が連携されてしまう
 *  v11.01.00          2014/12/24   FJ)中野     【OM-2014-0003778】工事連携契約キャンセルからの呼出で電話単独チェックにかかってしまう。
 *  v22.00.00          2016/01/13   FJ)清水     【ANK-2293-00-00】対応 モバイルセット割が外れない
 *  v23.00.00          2016/02/15   FJ)澤田     【IT2-2016-0000004】電話申込が存在してネットのキャンセルを行ったら工事案件が取り消さない
 *  v35.00.00          2017/11/20   FJ)河邊     【OM-2017-0001066】サービスキャンセル時解約オーダ不備
 *  v37.00.00          2018/03/12   FJ)中原     【ANK-3366-00-00】eo光設備卸対応
 *  v37.00.01          2018/05/07   FJ)吉田     【OM-2017-0001289】OLT設定変更連携不備
 *  v40.00.00          2018/12/03   FJ)大崎     【ANK-3412-00-00】５ギガ・１０ギガコース導入対応
 *  v47.00.00          2019/12/02   FJ)谷川     【ANK-3732-00-00】【OPMS再構築フォロー】住変確定後の工事取消取込対応
 *  v47.00.01          2019/12/16   FJ)谷川     【IT1-2019-0000085】工事案件取消エラー対応
 *  v48.00.00          2020/01/22   FJ)吉田     【OM-2019-0001446】機器連帯契約変更手続中の機器オプション解約キャンセル時メッセージ出力対応
 *  v51.00.00		   2020/10/20	FJ)吉村		【ANK-3949-00-00】Netflix導入対応（STEP1）
 *  v51.00.00          2020/10/28   FJ)澤田     【ANK-3949-00-00】Netflix導入対応（STEP1）
 *  v61.00.00          2023/04/11	FJ)藤本涼	【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
 *  v71.00.00          2024/02/13	GDC)ml.alcantara	【ANK-4468-00-00】eo光ネット「シンプルプラン」追加対応
 *  v73.00.00          2024/010/28	FJ)橋本     【ANK-4427-00-00】NTT卸対応
 *  v73.00.00          2024/10/30	FJ) 森      【ANK-4493-00-00】【eo定期】 光配線マンションのコースアップ対応
 *  v72.00.00          2024/12/10   FJ)星野     【ANK-4494-00-00】【eo定期】双方向番ポ対応_STEP2
 *  v73.01.00          2025/01/09   FJ)星野     【IT2-2025-0000001】
 *  v74.00.00          2025/02/17   FJ)森下     【ANK-4592-00-00】テレビ新コース（スカパー用）導入対応
 *  v75.00.00          2025/05/20   FJ)藤井     【ANK-4685-00-00】【eo】双方向番ポSTEP3
 **********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKAddSjishoConst;
import com.fujitsu.futurity.bp.custom.constant.JKKCancelBmpkjConst;
import com.fujitsu.futurity.bp.custom.constant.JKKHakkoSODConstCC;
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.KKSV0196_KKSV0196OP;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
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.sun.enterprise.tools.common.util.StringUtils;

import eo.common.constant.JCKStrConst;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.*;



/**
 * サービス契約キャンセル実行CCクラス
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JKKCancelSvcKeiCC extends AbstractCommonComponent 
{
	/** ----- 強制解約 ----- **/
	/** 根元の要素(強制解約) **/
	private static final String KKSV019601CC = KKSV0196_KKSV0196OP.TRGT_DATA;		//"TRGT_DATA";

	//-- リクエストパラメータのキー
	/** 対象データ */
	public static final String REQ_TRGT_DATA = "trgt_data";
	/** IN-呼び出しパターン番号 */
	public static final String REQ_PARAM_CALL_PTN_NO = "call_ptn_no";
	/** IN-サービス契約番号 */
	public static final String REQ_PARAM_SVC_KEI_NO = "svc_kei_no";
	/** IN-異動区分 */
	public static final String REQ_PARAM_IDO_DIV = "ido_div";
	/** IN-進捗ステータス */
	public static final String REQ_PARAM_PRG_STAT = "prg_stat";
	/** IN-工事キャンセル年月日 */
	public static final String REQ_PARAM_KOJI_CANCEL_YMD = "koji_cancel_ymd";
	/** IN-工事キャンセル理由コード */
	public static final String REQ_PARAM_KOJI_CANCEL_RSN_CD = "koji_cancel_rsn_cd";
	/** IN-工事キャンセル理由メモ */
	public static final String REQ_PARAM_KOJI_CANCEL_RSN_MEMO = "koji_cancel_rsn_memo";
	/** IN-工事NGデータ判定フラグ */
	public static final String REQ_PARAM_KOJI_NG_DATA_JDG_FLG = "koji_NG_data_jdg_flg";
	//ANK-0406-00-0007_20120717_ADD_START
	/** IN-工事案件中止理由コード１ */
	public static final String REQ_PARAM_KOJIAK_STP_RSN_CD_1 = "kojiak_stp_rsn_cd_1";
	/** IN-工事案件中止理由コード２ */
	public static final String REQ_PARAM_KOJIAK_STP_RSN_CD_2 = "kojiak_stp_rsn_cd_2";
	//ANK-0406-00-0007_20120717_ADD_END
	/** IN-業務連絡備考 */
	public static final String REQ_PARAM_WORK_RRK_BIKO = "work_rrk_biko";
	/** IN-異動理由データリスト */
	public static final String REQ_PARAM_IDO_RSN_DATA_LIST = "ido_rsn_data_list";
	/** IN-異動理由コード */
	public static final String REQ_PARAM_IDO_RSN_CD = "ido_rsn_cd";
	/** IN-呼び出しパターン番号 */
	public static final String MANSSBSYS_RNKI_YO_KIJIRAN = "manssbsys_rnki_yo_kijiran";
	//ANK-0397-00-00_20120927_ADD_START
	/** IN-申込書番号 */
	public static final String REQ_MSKMSHO_NO = "mskmsho_no";
	/** IN-申込書明細番号 */
	public static final String REQ_MSKMSHO_DTL_NO = "mskmsho_dtl_no";
	//ANK-0397-00-00_20120927_ADD_END
	// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/18 START
	/** IN-組織コード */
	public static final String REQ_ORG_CD = "org_cd";
	/** IN-組織名 */
	public static final String REQ_ORG_NM = "org_nm";
	// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/18 END
//ANK-3732-00-00 2019/12/02 ADD START
	/** IN-工事案件番号 */
	public static final String REQ_PARAM_KOJIAK_NO = "kojiak_no";
//ANK-3732-00-00 2019/12/02 ADD END

	// ANK-1578-00-00 2013/12/12 MOD START
	// 多機能ルータ
	public static final String KKTK_SVC_CD_TAKINO = "C024";
	// ANK-1578-00-00 2013/12/12 MOD END
	// ANK-4315-00-00 ADD START
	// ＨＧＷ
	public static final String KKTK_SVC_CD_HGW = "C025";
	// ANK-4315-00-00 ADD END


	/** 正常終了 */
	public static final int STAT_NORMAL = 0;

	/** エラーメッセージ */
	private static final String ERR_MSG = "INVALID_RETURN_MESSAGE";

	///-- 呼び出しパターン番号
	/** 呼び出しパターン番号 1  ( 現在は「工事取消契約キャンセル」のみ ) */
	public static final String CALL_PTN_NO_1 = "1";
	/** 呼び出しパターン番号 2  ( 現在は「照査NGキャンセル」のみ ) */
	public static final String CALL_PTN_NO_2 = "2";
	/** 呼び出しパターン番号 3 （ 現在は「強制解約後の光電話自動キャンセル」のみ） */
	public static final String CALL_PTN_NO_3 = "3";
	/** 呼び出しパターン番号 4 （ 現在は「サービス契約更新画面」のみ） */
	public static final String CALL_PTN_NO_4 = "4";

	///-- 工事ＮＧデータ判定フラグ
	/** 工事ＮＧ保持期間経過データ */
	public static final String KOJI_NG_DATA_FLG_ON = "1";
	/** 工事ＮＧ保持期間経過データ以外 */
	public static final String KOJI_NG_DATA_FLG_OFF = "0";

	/**************************************************************************/
	/** ＷＯＲＫ領域ＭＡＰキー                                               **/
	/**************************************************************************/
	/** サービス契約照会結果（カレント） */	
	public static final String SVC_KEI             = "svc_kei";
	/** サービス契約内訳照会結果（カレント） */	
	public static final String SVC_KEI_UCWK        = "svc_kei_ucwk";
	/** サービス契約内訳照会結果（指示書用） */	
	public static final String SVC_KEI_UCWK_SHIJI  = "svc_kei_ucwk_shiji";
	/** サービス契約内訳＜eo光ネット＞照会結果（指示書用） */
	public static final String SVKEIUW_EOH_NET     = "svkeiuw_eoh_net";
	/** サービス契約内訳＜eo光電話＞照会結果（カレント） */
	public static final String SVKEIUW_EOH_TEL     = "svkeiuw_eoh_tel";
	/** サービス契約内訳＜eoADSL＞一意照会結果 */
	public static final String SVKEIUW_EOADSL      = "KK0221A010";			//2012-02-24
	/** オプションサービス契約照会結果（カレント） */
	public static final String OP_SVC_KEI          = "op_svc_kei";
	/** オプションサービス契約＜ISP＞照会結果（カレント） */
	public static final String OPSVKEI_ISP         = "opsvkei_isp";
	/** オプションサービス契約照会結果_POPID指示書登録用 */
	public static final String OP_SVC_KEI_POP      = "op_svc_kei_pop";
	/** オプションサービス契約＜ISP＞照会結果_POPID指示書登録用 */
	public static final String OPSVKEI_ISP_POP     = "opsvkei_isp_pop";
	/** オプションサービス契約照会結果_WEBID指示書登録用 */
	public static final String OP_SVC_KEI_WEB      = "op_svc_kei_web";
	/** オプションサービス契約＜ISP＞照会結果_WEBID指示書登録用 */
	public static final String OPSVKEI_ISP_WEB     = "opsvkei_isp_web";
	/** オプションサービス契約＜電話＞照会結果（カレント） */
	public static final String OPSVKEI_TEL         = "opsvkei_tel";
	/** サブオプションサービス契約照会結果（カレント） */
	public static final String SBOP_SVC_KEI        = "sbop_svc_kei";
	/** サブオプションサービス契約＜ISP＞照会結果（カレント） */
	public static final String SBOPSVKEI_ISP       = "sbopsvkei_isp";
	/** オプトインメール受信設定照会結果 */
	public static final String OPTINM_RCV_SET      = "optinm_rcv_set";
	/** 電話帳申込照会結果 */
	public static final String DNWACHOMSK          = "dnwachomsk";
	/** 請求オプションサービス契約照会結果（カレント） */
	public static final String SEIOPSVC_KEI        = "seiopsvc_kei";
	/** サービス契約回線内訳照会結果*/
	public static final String SVKEI_KAISEN_UW     = "svkei_kaisen_uw";
	/** 機器提供サービス契約照会情報（カレント） */
	public static final String KKTK_SVC_KEI        = "kktk_svc_kei";
	/** 機器提供サービス契約照会情報（工事案件） */
	public static final String KKTK_SVC_KEI_KOJIAK = "kktk_svc_kei_kojiak";
	/** 申込明細一意照会情報 */
	public static final String MSKM_DTL            = "mskm_dtl";
	/** サービス契約_工事案件情報 */
	public static final String SVCKEI_KOJIAK       = "svckei_kojiak";
	/** サービス契約_工事案件情報（基本工事） */
	public static final String SVCKEI_KIHON_KOJIAK = "svckei_kihon_kojiak";
	/** 申込明細番号リスト */
	public static final String MSKM_DTL_NO_LIST    = "mskmDtlNoList";
	/** キャンセル理由コード */
	public static final String CANCEL_RSN_CD       = "cancel_rsn_cd";
	/** 申込明細番号 */
	public static final String MSKM_DTL_NO         = "mskm_dtl_no";
	/** 申込番号 */
	public static final String MSKM_NO             = "mskm_no";
	//ANK-0406-00-0007_20120717_ADD_START
	/** 進捗登録結果*/
	public static final String PRG_LIST            = "prg_list";
	//ANK-0406-00-0007_20120717_ADD_END
	// KAD-2011-0001102 UI残_No.917 ADD START
	/** 番ポ工事一覧照会情報 */
	public static final String BMP_KOJI_ICRN       = "bmp_koji_icrn";
	// KAD-2011-0001102 ADD END
	// ANK-2293-00-00 対応 FJ)清水 2016/01/13 ADD START
	/** セット割引用_異動区分 **/
	public static final String WRIB_IDO_DIV            = "wrib_ido_div";
	/** セット割引用_進捗ステータス **/
	public static final String WRIB_PRG_STAT           = "wrib_prg_stat";
	// ANK-2293-00-00 対応 FJ)清水 2016/01/13 ADD END

	//-- work領域mapキー※予約についてはサービスＩＦの副次処理にて消してくれるため、現在未使用

	/**************************************************************************/
	/** サービス種別                                                         **/
	/**************************************************************************/
	/** サービス種別コード　00：デフォルト（未決定） */
	private static final int SVC_SBT_CD_DFLT = 0;
	/** サービス種別コード　01：eo光ネット */
	private static final int SVC_SBT_CD_HNET = 1;
	/** サービス種別コード　04：eoモバイル */
	private static final int SVC_SBT_CD_MOBA = 2;
	/** サービス種別コード　05：eoADSL */
	private static final int SVC_SBT_CD_ADSL = 3; 
	/** サービス種別コード　03：eo光電話 */
	private static final int SVC_SBT_CD_HTEL = 4;
	/** サービス種別コード　02：eo光TV */
	private static final int SVC_SBT_CD_HTV  = 5;

	/**************************************************************************/
	/** サービスコード                                                       **/
	/**************************************************************************/
	/** サービスコード　01：インターネット */
	private static final String SVC_CD_NET = "01";
	/** サービスコード　02：電話 */
	private static final String SVC_CD_TEL = "02";
	/** サービスコード　03：テレビ */
	private static final String SVC_CD_TV  = "03";

	/**************************************************************************/
	/** オプションサービスコード                                             **/
	/**************************************************************************/
	/** オプションサービスコード　B021：リモートサポートプラス */
	private static final String OP_SVC_CD_RMTSPRTPLUS = "B021";

	/**************************************************************************/
	/** 料金グループコード                                                   **/
	/**************************************************************************/
	/** 料金グループコード　02：eo光ネットホームタイプ */
	private static final String PRC_GRP_CD_HOME    = "02";
	/** 料金グループコード　03：eo光ネットメゾンタイプ */
	private static final String PRC_GRP_CD_MEZON   = "03";
	/** 料金グループコード　04：eo光ネットマンションタイプ */
	private static final String PRC_GRP_CD_MANS    = "04";
	/** 料金グループコード　05：eoADSL(eAccess) */
	private static final String PRC_GRP_CD_EACCESS = "05";
	/** 料金グループコード　06：eoADSL(フレッツ) */
	private static final String PRC_GRP_CD_FU      = "06";
	/** 料金グループコード　11：eo光テレビ(K-CAT) */
	private static final String PRC_GRP_CD_TV_KCAT = "11";
	/** 料金グループコード　12：eo光テレビ(KCN) */
	private static final String PRC_GRP_CD_TV_KCN  = "12";
	/** 料金グループコード　13：eo光テレビ(再送信) */
	private static final String PRC_GRP_CD_TV_SSS  = "13";

	/**************************************************************************/
	/** 料金コースコード（ネット）                                           **/
	/**************************************************************************/
	/** 料金コースコード １００Ｍコース **/
	private static final String PCRS_CD_A03 = "A03";
	/** 料金コースコード １００Ｍプレミアムコース **/
	private static final String PCRS_CD_A04 = "A04";
	/** 料金コースコード １ギガコース **/
	private static final String PCRS_CD_A05 = "A05";
	/** 料金コースコード ２００Ｍコース **/
	private static final String PCRS_CD_A07 = "A07";
	/** 料金コースコード メゾンタイプ１００Ｍ **/
	private static final String PCRS_CD_A08 = "A08";
	/** 料金コースコード メゾンタイプ１００Ｍプレミアム **/
	private static final String PCRS_CD_A09 = "A09";
	/** 料金コースコード メゾンタイプ１ギガ **/
	private static final String PCRS_CD_A10 = "A10";
	/** 料金コースコード */
	private static final String PCRS_CD_A11 = "A11";
	/** 料金コースコード */
	private static final String PCRS_CD_A47 = "A47";
	/** 料金コースコード マンションタイプ　プライベート　１００Ｍ　ＶＤＳＬ２ */
	private static final String PCRS_CD_A48 = "A48";
	/** 料金コースコード */
	private static final String PCRS_CD_A49 = "A49";
	/** 料金コースコード */
	private static final String PCRS_CD_A50 = "A50";
	/** 料金コースコード */
	private static final String PCRS_CD_A51 = "A51";
	/** 料金コースコード */
	private static final String PCRS_CD_A52 = "A52";
	/** 料金コースコード */
	private static final String PCRS_CD_A53 = "A53";
	/** 料金コースコード */
	private static final String PCRS_CD_A54 = "A54";
	/** 料金コースコード */
	private static final String PCRS_CD_A55 = "A55";
	/** 料金コースコード マンションタイプ　光配線　１００Ｍ */
	private static final String PCRS_CD_A56 = "A56";
	/** 料金コースコード マンションタイプ　光配線　１ギガ */
	private static final String PCRS_CD_A57 = "A57";
	//ANK-4493-00-00 ADD START
	/** 料金コースコード (eo光ネット・マンション　光配線 10ギガ) */
	private static final String PCRS_CD_A74 = "A74";
	//ANK-4493-00-00 ADD END
	/** 料金コースコード */
	private static final String PCRS_CD_A67 = "A67";
	/** 料金コースコード */
	private static final String PCRS_CD_A68 = "A68";
	/** 料金コースコード */
	private static final String PCRS_CD_A69 = "A69";
	/** 料金コースコード */
	private static final String PCRS_CD_A70 = "A70";
	/** 料金コースコード */
	private static final String PCRS_CD_A71 = "A71";

	// IT2-2016-0000004 2016/02/15 ADD START
	/** 料金コースコード ホームタイプ１０ギガ*/
	private static final String PCRS_CD_A83 = "A83";
	/** 料金コースコード メゾンタイプ１０ギガ*/
	private static final String PCRS_CD_A84 = "A84";
	// IT2-2016-0000004 2016/02/15 ADD END
	// ANK-3366-00-00 2018/03/12 ADD START
	/** 料金コースコード ホームタイプ卸１ギガコース*/
	private static final String PCRS_CD_A88  = "A88";
	// ANK-3366-00-00 2018/03/12 ADD END
	// ANK-3412-00-00 2018/12/03 ADD START
	/** 料金コースコード ホームタイプ５ギガ*/
	private static final String PCRS_CD_A89 = "A89";
	/** 料金コースコード メゾンタイプ５ギガ*/
	private static final String PCRS_CD_A90 = "A90";
	// ANK-3412-00-00 2018/12/03 ADD END
	// ANK-3949-00-00 ADD START
	/** 料金コースコード ホームタイプ１ギガ Netflixパック*/
	private static final String PCRS_CD_A91 = "A91";
	/** 料金コースコード メゾンタイプ１ギガ Netflixパック*/
	private static final String PCRS_CD_A92 = "A92";
	/** 料金コースコード ホームタイプ５ギガ Netflixパック*/
	private static final String PCRS_CD_A93 = "A93";
	/** 料金コースコード メゾンタイプ５ギガ Netflixパック*/
	private static final String PCRS_CD_A94 = "A94";
	/** 料金コースコード ホームタイプ１０ギガ Netflixパック*/
	private static final String PCRS_CD_A95 = "A95";
	/** 料金コースコード メゾンタイプ１０ギガ Netflixパック*/
	private static final String PCRS_CD_A96 = "A96";
	// ANK-3949-00-00 ADD END
	// ANK-4468-00-00 ADD START
	/** 料金コースコード ホームタイプシンプル10ギガコース*/
	private static final String PCRS_CD_A97 = "A97";
	/** 料金コースコード ホームタイプシンプル10ギガコース Netflixパック*/
	private static final String PCRS_CD_A99 = "A99";
	// ANK-4468-00-00 ADD END
	//ANK-4427-00-00 ADD START
	/** 料金コースコード （ｔｙｐｅ　Ｎ）ホームタイプ１ギガコース */
	private static final String PCRS_CD_AA0 = "AA0";
	/** 料金コースコード （ｔｙｐｅ　Ｎ）ホームタイプ１０ギガコース */
	private static final String PCRS_CD_AA1 = "AA1";
	/** 料金コースコード （ｔｙｐｅ　Ｎ）マンションタイプ１００Ｍコース */
	private static final String PCRS_CD_AA2 = "AA2";
	/** 料金コースコード （ｔｙｐｅ　Ｎ）マンションタイプ１ギガコース */
	private static final String PCRS_CD_AA3 = "AA3";
	/** 料金コースコード （ｔｙｐｅ　Ｎ）マンションタイプ１０ギガコース */
	private static final String PCRS_CD_AA4 = "AA4";
	/** 料金コースコード （ｔｙｐｅ　Ｎ）ホームタイプ１ギガコース　ＮＦパック */
	private static final String PCRS_CD_AB0 = "AB0";
	/** 料金コースコード （ｔｙｐｅ　Ｎ）ホームタイプ１０ギガコース　ＮＦパック */
	private static final String PCRS_CD_AB1 = "AB1";
	/** 料金コースコード （ｔｙｐｅ　Ｎ）マンションタイプ１００Ｍコース　ＮＦパック */
	private static final String PCRS_CD_AB2 = "AB2";
	/** 料金コースコード （ｔｙｐｅ　Ｎ）マンションタイプ１ギガコース　ＮＦパック */
	private static final String PCRS_CD_AB3 = "AB3";
	/** 料金コースコード （ｔｙｐｅ　Ｎ）マンションタイプ１０ギガコース　ＮＦパック */
	private static final String PCRS_CD_AB4 = "AB4";
	//ANK-4427-00-00 ADD END


	
	/** ネットの料金コード群 **/
	private static final String[] PCRS_NET_CDS = 
		new String[]{
		// IT1-2012-0002329 2012-12-18 ADD_START
		PCRS_CD_A03,PCRS_CD_A04,PCRS_CD_A05,PCRS_CD_A07,PCRS_CD_A08,PCRS_CD_A09,
		PCRS_CD_A10,PCRS_CD_A11,PCRS_CD_A47,PCRS_CD_A48,PCRS_CD_A49,PCRS_CD_A50,
		PCRS_CD_A51,PCRS_CD_A52,PCRS_CD_A53,PCRS_CD_A54,PCRS_CD_A55,PCRS_CD_A56,
		PCRS_CD_A57,PCRS_CD_A67,PCRS_CD_A68,PCRS_CD_A69,PCRS_CD_A70,PCRS_CD_A71,
		// IT1-2012-0002329 2012-12-18 ADD_END
		//ANK-4493-00-00 ADD START
		PCRS_CD_A74,
		//ANK-4493-00-00 ADD END
		// ANK-3412-00-00 2018/12/03 MOD START
		// IT2-2016-0000004 2016/02/15 ADD START
		//PCRS_CD_A83,PCRS_CD_A84,
		// IT2-2016-0000004 2016/02/15 ADD END
		PCRS_CD_A83,PCRS_CD_A84,PCRS_CD_A89,PCRS_CD_A90,
		// ANK-3412-00-00 2018/12/03 MOD END
		// ANK-3366-00-00 2018/03/12 ADD START
		PCRS_CD_A88,
		// ANK-3366-00-00 2018/03/12 ADD END
		// ANK-3949-00-00 ADD START
		PCRS_CD_A91,PCRS_CD_A92,PCRS_CD_A93,PCRS_CD_A94,PCRS_CD_A95,PCRS_CD_A96,
		// ANK-3949-00-00 ADD END
		// ANK-4468-00-00 ADD START
		PCRS_CD_A97,PCRS_CD_A99,
		// ANK-4468-00-00 ADD END
		//ANK-4427-00-00 ADD START
		PCRS_CD_AA0,PCRS_CD_AA1,PCRS_CD_AA2,PCRS_CD_AA3,PCRS_CD_AA4,
		PCRS_CD_AB0,PCRS_CD_AB1,PCRS_CD_AB2,PCRS_CD_AB3,PCRS_CD_AB4
		//ANK-4427-00-00 ADD END
	};

	/**************************************************************************/
	/** 料金コースコード（電話）                                             **/
	/**************************************************************************/
	/** 料金コースコード １番号コース **/
	private static final String PCRS_CD_A31 = "A31";
	/** 料金コースコード ２番号コース **/
	private static final String PCRS_CD_A32 = "A32";

	/** 電話の料金コード群 **/
	private static final String[] PCRS_TEL_CDS =
		new String[]{
		PCRS_CD_A31,PCRS_CD_A32
	};

	/**************************************************************************/
	/** 料金コースコード（ＡＤＳＬ）                                         **/
	/**************************************************************************/
	/** 料金コースコード ｅｏＡＤＳＬ（フレッツ） **/
	private static final String PCRS_CD_ADSL_FURETTSU = "A22";

	/**************************************************************************/
	/** 機器提供サービスコード                                               **/
	/**************************************************************************/
	/** 機器提供サービスコード 光電話用ＶＡ **/
	private static final String KKTK_SVC_CD_VA   = "C004";
// ▼▼▼ 2013/12/21 IT1-2013-0001709 mod START
	private static final String KKTK_SVC_CD_MRT   = "C024";
// ▲▲▲ 2013/12/21 IT1-2013-0001709 mod END
	// OM-2014-0003440 2014/10/27 add start
	/** 機器提供サービスコード Ｖ−ＯＮＵ **/
	private static final String KKTK_SVC_CD_VONU  = "C013";
	// OM-2014-0003440 2014/10/27 add end

	/**************************************************************************/
	/** 機能コード                                                           **/
	/**************************************************************************/
	/** 機能コード 1 */
	private static final String FUNC_CODE_ONE = JPCModelConstant.FUNC_CD_1;
//ANK-3732-00-00 ADD START
	/** 機能コード 12 */
	private static final String FUNC_CODE_12 = "12";
//ANK-3732-00-00 ADD END

	/**************************************************************************/
	/** 異動区分                                                             **/
	/**************************************************************************/
	/** キャンセル */
	private static final String IDO_KBN_CANCEL   = "00008";
	// 住所変更キャンセル 100041対応 2013-01-06 ADD START
	/** 住所変更・登録 */
	private static final String IDO_KBN_ADCHGADD = "00019";
	// 住所変更キャンセル 100041対応 2013-01-06 ADD END

	/**************************************************************************/
	/** キャンセル理由コード                                                 **/
	/**************************************************************************/
	/** 申出によるキャンセル */
	private static final String CANCEL_RSN_CD_01 = "01";
	/** 宅内工事ＮＧキャンセル */
	private static final String CANCEL_RSN_CD_02 = "02";
	/** 工事ＮＧキャンセル */
	private static final String CANCEL_RSN_CD_03 = "03";
	/** 審査ＮＧキャンセル */
	private static final String CANCEL_RSN_CD_04 = "04";
	/** その他の理由によるキャンセル */
	private static final String CANCEL_RSN_CD_05 = "05";
	/** 強制解約によるキャンセル */
	private static final String CANCEL_RSN_CD_07 = "07";

	//ANK-0406-00-0007_20120717_ADD_START
	/**************************************************************************/
	/** スマートバリュー異動詳細コード                                       **/
	/**************************************************************************/
//	/** スマートバリュー対象 **/
//	private static final String SMTVL_IDO_DTL_CD_00 = "00";
//	/** スマートバリュー対象外 **/
//	private static final String SMTVL_IDO_DTL_CD_01 = "01";
//	/** 申込 **/
//	private static final String SMTVL_IDO_DTL_CD_02 = "02";
//	/** 申込取込結果 **/
//	private static final String SMTVL_IDO_DTL_CD_03 = "03";
	/** 工事NG起因キャンセル **/
	private static final String SMTVL_IDO_DTL_CD_04 = "04";
	/** 照査NGキャンセル **/
	private static final String SMTVL_IDO_DTL_CD_05 = "05";
	/** 強制解約後の光電話自動キャンセル **/
	private static final String SMTVL_IDO_DTL_CD_06 = "06";
	//ANK-0406-00-0007_20120717_ADD_END

	/**************************************************************************/
	/** 異動理由（キャンセル理由コード判定のため）                           **/
	/**************************************************************************/
	/** +++++++++++++++++++++++++++++++ **/
	/** 申出によるキャンセル用          **/
	/** +++++++++++++++++++++++++++++++ **/
	/** お客様理由 */
	private static final String IDO_RSN_CD_F3 = "F3";
	/** 訪問キャンセル(使用場所電波不安) */
	private static final String IDO_RSN_CD_D8 = "D8";
	/** 訪問キャンセル(使用場所以外OK) */
	private static final String IDO_RSN_CD_D9 = "D9";
	/**訪問キャンセル(他社へ変更) */
	private static final String IDO_RSN_CD_E0 = "E0";
	/** 訪問キャンセル(ネット見送り) */
	private static final String IDO_RSN_CD_E1 = "E1";
	/** 訪問キャンセル(思っていた内容と相違) */
	private static final String IDO_RSN_CD_E2 = "E2";
	/** 訪問キャンセル(アポ時キャンセル) */
	private static final String IDO_RSN_CD_E3 = "E3";
	/** 訪問キャンセル(その他) */
	private static final String IDO_RSN_CD_E4 = "E4";
	/** 電話受付キャンセル */
	private static final String IDO_RSN_CD_D7 = "D7";
	/** 出荷前キャンセル */
	private static final String IDO_RSN_CD_E5 = "E5";
	/** 不具合取引(直送キャンセル) */
	private static final String IDO_RSN_CD_E6 = "E6";
	/** 不具合取引(電話受付) */
	private static final String IDO_RSN_CD_E7 = "E7";
	/** 昇格返送時キャンセル申出 */
	private static final String IDO_RSN_CD_G4 = "G4";
	/** +++++++++++++++++++++++++++++++ **/
	/** 宅内工事NGキャンセル用          **/
	/** +++++++++++++++++++++++++++++++ **/
	/** 宅内NG等工事都合NG */
	private static final String IDO_RSN_CD_E9 = "E9";
	/** +++++++++++++++++++++++++++++++ **/
	/** 審査NGキャンセル用              **/
	/** +++++++++++++++++++++++++++++++ **/
	/** 審査NG */
	private static final String IDO_RSN_CD_F1 = "F1";
	/** エリアNG */
	private static final String IDO_RSN_CD_F2 = "F2";
	/** 電測NG(６０日経過)*/
	private static final String IDO_RSN_CD_G0 = "G0";
	/** +++++++++++++++++++++++++++++++ **/
	/** その他理由によるキャンセル用    **/
	/** +++++++++++++++++++++++++++++++ **/
	/** その他 */
	private static final String IDO_RSN_CD_56 = "56";
	/** その他キャンセル票受付 */
	private static final String IDO_RSN_CD_E8 = "E8";
	/** 接続不良NG */
	private static final String IDO_RSN_CD_F0 = "F0";
	/** 申込書未着(量販) */
	private static final String IDO_RSN_CD_G1 = "G1";
	/** 申込書未着(持込) */
	private static final String IDO_RSN_CD_G2 = "G2";
	/** 昇格未返送 */
	private static final String IDO_RSN_CD_G3 = "G3";

	/**************************************************************************/
	/** エイジング終了種別コード                                             **/
	/**************************************************************************/
	/** エイジング種別コード：電話番号 */
	private static final String AGING_SBT_CD_TELNO     = JKKDslRun.AGING_SBT_CD_TEL;
	/** エイジング種別コード：固定IPアドレス */
	private static final String AGING_SBT_CD_FIXIPAD   = JKKDslRun.AGING_SBT_CD_IP;
	/** エイジング種別コード：URL */
	private static final String AGING_SBT_CD_URL       = JKKDslRun.AGING_SBT_CD_URL;
	/** エイジング種別コード：WebID */
	private static final String AGING_SBT_CD_WEBID     = JKKDslRun.AGING_SBT_CD_WEB_ID;
	/**エイジング種別コード： POPID */
	private static final String AGING_SBT_CD_POPID     = JKKDslRun.AGING_SBT_CD_POP_ID;
	/** エイジング種別コード：メールエイリアス */
	private static final String AGING_SBT_CD_MAILALIAS = JKKDslRun.AGING_SBT_CD_ALIAS;
	/** エイジング種別コード：メールアドレス */
	private static final String AGING_SBT_CD_MLAD      = JKKDslRun.AGING_SBT_CD_MLAD;
	/** エイジング種別コード：メーリングリスト */
	private static final String AGING_SBT_CD_MLLIST    = JKKDslRun.AGING_SBT_CD_MLLIST;
	/** エイジング種別コード：PPP認証ID（サービス契約＜eo光電話＞） */
	private static final String AGING_SBT_CD_PPP_ID    = JKKDslRun.AGING_SBT_CD_PPP_ID;
	/** エイジング種別コード：ISP認証ID（サービス契約内訳＜eo光ネット＞） */
	private static final String AGING_SBT_CD_ISP_ID    = JKKDslRun.AGING_SBT_CD_ISP_ID;
	/** エイジング種別コード：SIPユーザーID（サービス契約内訳約＜eo光電話＞） */
	private static final String AGING_SBT_CD_SIP_ID    = JKKDslRun.AGING_SBT_CD_SIP_ID;
	/** エイジング種別コード：ADSL認証ID（サービス契約内訳＜eoADSL(Flets)＞） */
	private static final String AGING_SBT_CD_ADSL_ID   = JKKDslRun.AGING_SBT_CD_ADSL_ID;

	/**************************************************************************/
	/** エイジング照会hashMapキー                                            **/
	/**************************************************************************/
	/** エイジング種別コード */
	public static final String PARAM_AGING_SBT_CD   = "aging_sbt_cd";
	/** エイジング対象値 */
	public static final String PARAM_AGING_TG_VALUE = "aging_tg_value";

	/**************************************************************************/
	/** 各スキーマのステータス値                                             **/
	/**************************************************************************/
	/** ステータス(各スキーマのステータス)：受付済 */
	private static final String STAT_UK_ZUMI       = "010";
	/** ステータス(各スキーマのステータス)：照査済 */
	private static final String STAT_SHOSA_ZUMI    = "020";
	/** ステータス(各スキーマのステータス)：締結済 */
	private static final String STAT_CNC_ZUMI      = "030";
	/** ステータス(各スキーマのステータス)：サービス提供中 */
	private static final String STAT_SVCTK_CHU     = "100";
	/** ステータス(各スキーマのステータス)：休止・中断中 */
	private static final String STAT_PAUSE_STP_CHU = "210";
	/** ステータス(各スキーマのステータス)：停止中 */
	private static final String STAT_STP_CHU       = "220";
	/** ステータス(各スキーマのステータス)：解約済 */
	private static final String STAT_DSL_ZUMI      = "910";
	/** ステータス(各スキーマのステータス)：キャンセル済 */
	private static final String STAT_CNCL_ZUMI     = "920";

	/**************************************************************************/
	/** 業務パラメータID                                                     **/
	/**************************************************************************/
	/** 業務パラメータID：メーリングリストドメイン */
	private static final String WORK_PARAM_ID_MLLIST_NM_DOMAIN = "KK_MLLIST_NM_DOMAIN";

	/**************************************************************************/
	/** 配送ステータス                                                       **/
	/**************************************************************************/
	/** 配送ステータス（受付済） */
	private static final String HAISO_STAT_UK_ZM = "001";
	/** 配送ステータス（指示済） */
	private static final String HAISO_STAT_SJ_ZM = "002";
	/** 配送ステータス（出荷済） */
	private static final String HAISO_STAT_SK_ZM = "003";
	/** 配送ステータス（完了済） */
	private static final String HAISO_STAT_KNRYO = "004";
	/** 配送ステータス（中止） */
	private static final String HAISO_STAT_CHUSI = "005";

	/**************************************************************************/
	/** テンプレートＩＤ                                                     **/
	/**************************************************************************/
	/** 機器提供サービス一意照会 */
	private static final String TEMPLATE_ID_EKK0771A010 = "EKK0771A010";
	/** 一時金設定一覧照会（申込明細番号） */
	private static final String TEMPLATE_ID_EKK1021B003 = "EKK1021B003";
	/** 一時金設定変更 */
	private static final String TEMPLATE_ID_EKK1021C010 = "EKK1021C010";
	/** 割賦契約一覧照会（機器提供サービス契約番号） */
	private static final String TEMPLATE_ID_EKK2541B001 = "EKK2541B001";
	/** 割賦契約キャンセル */
	private static final String TEMPLATE_ID_EKK2541C170 = "EKK2541C170";
	// LT-2013-0000163 2013/07/10 ADD START 割賦のステータスにより処理を切り分け
	/** 割賦契約解約 */
	private static final String TEMPLATE_ID_EKK2541C190 = "EKK2541C190";
	/** 割賦契約情報変更 */
	private static final String TEMPLATE_ID_EKK2541C080 = "EKK2541C080";
	// LT-2013-0000163 2013/07/10 ADD END 割賦のステータスにより処理を切り分け
	/** 回線利用中サービス契約一覧照会 **/
	private static final String MAP_KEY__EKK0081B007 = "EKK0081B007";
	
	/** 電話用VLANオーダ一意照会 **/
	private static final String MAP_KEY__ESC0021A010 = "ESC0021A010";
// 20140612 ANK-2095-00-00 Add Start
	/** 機器提供サービス契約情報更新 */
	private static final String TEMPLATE_ID_EKK0341C230 = "EKK0341C230";
// 20140612 ANK-2095-00-00 Add End
//ANK-3732-00-00 ADD START
	/** 機器提供サービス契約機器変更手続中止 */
	private static final String TEMPLATE_ID_EKK0341C540 = "EKK0341C540";
	/** 機器提供サービス契約料金コース変更中止 */
	private static final String TEMPLATE_ID_EKK0341C170 = "EKK0341C170";
//ANK-3732-00-00 ADD END

	/**************************************************************************/
	/** 申込ステータス                                                       **/
	/**************************************************************************/
	/** 申込ステータス：キャンセル済 */
	private static final String MSKM_STAT_CANCEL_ZM = "920";

	/**************************************************************************/
	/** 申込明細ステータス                                                   **/
	/**************************************************************************/
	/** 申込明細ステータス：キャンセル済 */
	private static final String MSKM_DTL_STAT_CANCEL_ZM = "920";

	/**************************************************************************/
	/** 工事案件ステータス                                                   **/
	/**************************************************************************/
	// 20120420 ST2-2012-0000742 START
	/** 工事案件ステータス：工事完了済 */
	private static final String KOJIAK_STAT_FIN = "200";
	/** 工事案件ステータス：中止 */
	private static final String KOJIAK_STAT_STP = "900";
	// 20120420 ST2-2012-0000742 END
	
	//▼▼▼▼▼ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 ADD START ▼▼▼▼▼
	/** 工事案件ステータス：登録済 */
	private static final String KOJIAK_STAT_ADD = "120";
	
	/** 工事案件ステータス：現場作業完了済 */
	private static final String KOJIAK_STAT_WK_FIN = "190";
	
	/**************************************************************************/
	/** 工事案件種別コード                                                   **/
	/**************************************************************************/
	/** 工事案件種別コード：住所変更(新設) */
	private static final String KOJIAK_SBT_AD_CHG_NEW = "003";
	
	//▲▲▲▲▲ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 ADD END   ▲▲▲▲▲
//IT1-2019-0000085 ADD START
	/** 工事案件種別コード：撤去(解約) */
	private static final String KOJIAK_SBT_TK_DSL = JKKStrConst.CD00577_TK_DSL;

	/** 工事案件種別コード：住所変更(撤去) */
	private static final String KOJIAK_SBT_AD_CHG_TEKKYO = JKKStrConst.CD00577_ADCHG_TK;
//IT1-2019-0000085 ADD END
	
	/**************************************************************************/
	/** 解約種別フラグ                                                       **/
	/**************************************************************************/
	/** 解約種別フラグ(サービス契約解約) */
	public static final String DSL_SBT_FLG_SVC_KEI_DSL = "1";
	/** 解約種別フラグ(オプションサービス契約解約) */
	public static final String DSL_SBT_FLG_OP_SVC_KEI_DSL = "2";
	/** 解約種別フラグ(サブオプションサービス契約解約) */
	public static final String DSL_SBT_FLG_SBOP_SVC_KEI_DSL = "3";


	/** ----- オプトインメール受信設定ステータス値 ----- */
	/** ステータス：有効 */
	private static final String STAT_YK = JCKStrConst.CD00622_YK;
	/** ----- エイジングステータス値 ----- */
	/** ステータス：使用中 */
	private static final String STAT_USECHU = "100";




	// 20120404 ST2-2012-0000484 START
	/** 照査解約完了コード：照査NG */
	private static final String SHOSA_DSL_FIN_CD_SHOSA_NG = "2";

	/** VLAN-ID確定フラグ：確定済 */
	private static final String VLAN_ID_FIX_FLG_ON = "1";
	// 20120404 ST2-2012-0000484 END

	//↓↓↓2012-04-24追加　巻@指示書CC取込み対応↓↓↓
	private static final String SJISHO_MAP = "KKSV036835CC";
	//↑↑↑2012-04-24追加　巻@指示書CC取込み対応↑↑↑


	// 2012/09/03 ANK-0024-05-00 ADD START お客様退会処理追加
	/** マップCCID */
	private static final String MAP_JCKCUSTTAIKAICMNCC_ID = "JCKCustTaikaiCmnCC";
	// 2012/09/03 ANK-0024-05-00 ADD END

	// KAD-2011-0001102 UI残_No.917 ADD START
	/** 番ポ工事ステータス：番ポ工事完了 */
	private static final String BMP_KOJI_STAT_BMP_KOJI_FIN = "050";
	// KAD-2011-0001102 ADD END


	// ST2-2013-0000099 2013/01/17 start
	/** バッチのときのオペレータID*/
	private static final String BATSERVICE = "BATSERVICE";
	/** 業務パラメータID：契約用対応履歴登録ユーザ */
	private static final String WORK_PARAM_ID_TAIORRK_ADD_USER = "KK_TAIORRK_ADD_USER";
	// ST2-2013-0000099 2013/01/17 end

	public static final String WORK_FIELD_ENABLE_SERVICES = "ENABLE_SERVICES";

	private static final String WORK_FIELD_EX_SVKEI_KAISEN_UW = "EX_SVKEI_KAISEN_UW";

	// IT1-2013-0000291 2013/02/26 MOD START
	/** 運用日付 */
	private String oPE_DATE = "";
	/** 運用日時 */
	private String oPE_DATE_TIME = "";
	// IT1-2013-0000291 2013/02/26 MOD END

	/** SC呼び出し部品 */
	ServiceComponentRequestInvoker scCall = null;

	/** サービス契約排他制御 更新年月日時分秒 */
	private String svcKeiUpdDtm = "";

	//↓↓↓2012-08-17復活　IT1-2012-0000943対応（対策TAI-2012-0000087）↓↓↓
	/** お客様一意照会結果のwork格納キー */
	private static final String CUST_RECORD = "kk0011_current_record";
	//↑↑↑2012-08-17復活　IT1-2012-0000943対応（対策TAI-2012-0000087）↑↑↑

	// 20140725 ANK-2138-00-00 Add Start
	/** 工事受付契機異動区分 新規契約 */
	private static final String KOJI_UK_OPTNTY_IDO_DIV_NEW = "00001";
	/** 工事受付契機異動区分 サービス追加 */
	private static final String KOJI_UK_OPTNTY_IDO_DIV_ADD = "00002";
	
	/** サービス開始時配送状況識別コード 1:サービス開始時配送対象 */
	private static final String SVC_STA_JI_HIS_JOKYO_SKCD_1 = "1";
	/** サービス開始時配送状況識別コード 2:サービス開始時配送作成済 */
	private static final String SVC_STA_JI_HIS_JOKYO_SKCD_2 = "2";
	
	/** 物流CCでタブレットの配送を変更するときの区分 */
	private String tabletHaisoKbn = "";
	// 20140725 ANK-2138-00-00 Add End
//ANK-3732-00-00 ADD START
	/** 機器提供サービス契約一覧照会（サービス契約番号）のソート区分 1:機器製造番号(昇順)＋世代登録年月日時分秒(昇順) */
	private static final String sortKbn = "1";
//ANK-3732-00-00 ADD END
	/** マッパークラス */
	protected JKKCancelSvcKeiMapperCC cancelSvcKeiMapper = null;
	// ANK-4592-00-00 ADD START
	/** 作業マップ名 */
	private static final String CC_WORK_SPTVDSL_STP_PAUSE = "JKKSptvDslStpPause";
	// ANK-4592-00-00 ADD END

	/**
	 * 初期処理
	 * 
	 * @param fixedText ユーザ任意文字列
	 */
	private void init(String fixedText)
	{
		// SC呼び出し部品のインスタンス生成
		if (this.scCall == null)
		{
			this.scCall = new ServiceComponentRequestInvoker();
		}

		// 運用日付設定
		oPE_DATE = JCCBPCommon.getOpeDate(null);
		// 運用日時設定
		oPE_DATE_TIME = JCCBPCommon.getOpeDateTimeStamp(null);		//2011-11-29, YYYYMMDDhhmmssSSS形式でないといけない

		// マッパークラス
		cancelSvcKeiMapper = new JKKCancelSvcKeiMapperCC();

		cancelSvcKeiMapper.setOpeDate(oPE_DATE);
		cancelSvcKeiMapper.setOpeDateTime(oPE_DATE_TIME);
	}



	/**
	 * サービス契約キャンセル実行制御処理（main処理に相当）
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable 例外時にスローします
	 */
	public IRequestParameterReadWrite cancelSvcKei(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			String fixedText
	) throws Throwable
	{
		init(fixedText);

		// ステータスコード
		int statusCode = STAT_NORMAL;
		// 検索結果等持ち回り用ワーク領域
		HashMap<String, Object> workField = new HashMap<String, Object>();	
		// ターゲットデータ(処理に使用する入力パラメータ)の取得
		HashMap<String, Object> trgt_data =  new HashMap<String, Object>();	
		trgt_data = analyzeRequestParam(param);

		// データ抽出制御処理
		statusCode = ctlChshtData( handle, param, trgt_data, workField);

		// ステータスコードの確認
		if(statusCode != STAT_NORMAL)
		{
			// 抽出の時点で失敗した場合
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}

		// データキャンセル実行制御処理
		statusCode = ctlCancelData( handle, param,  trgt_data,  workField, fixedText);

		// ステータスコードの確認
		if(statusCode != STAT_NORMAL)
		{
			// キャンセルの時点で失敗した場合
			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
		}

		// リターンコードの設定
		param.setControlMapData(SCControlMapKeys.RETURN_CODE, String.valueOf(statusCode));

		// 処理終了
		return param;
	}

	/**
	 * チェック処理<br>
	 * サービスコンポーネント実行用CAANMsgを返却します。<br>
	 * <br>
	 * 
	 * @param handle セッションハンドル
	 * @param param (I) 業務データ取得用I/F
	 * @param fixedText (I) ユーザ定義文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception Throwableがスローされます 。
	 */
	public HashMap<String, Object> getInvokeCBS(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText
	) throws Throwable
	{

		// 初期処理を実施
		init(fixedText);

		HashMap<String, Object> trgt_data = null;
		trgt_data = analyzeRequestParam(param);
		HashMap<String, Object> paramMap = cancelSvcKeiMapper.editInMsg(param, fixedText ,trgt_data);

		return paramMap;
	}

	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得<br>
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 * 
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param outMsg サービスインタフェース実行結果のMap
	 * @param CAANMsg[] メッセージキャリアクラスの配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite editErrorInfo(
			IRequestParameterReadWrite param ,
			CAANMsg[] subCAANMsgs,
			Integer returnCode
	) throws Throwable
	{
		cancelSvcKeiMapper.editResultRPEKK0081A010(param, subCAANMsgs);

		return param;
	}

	/**
	 * データ抽出制御処理
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param trgt_data ターゲットデータ
	 * @param svcSbtCd サービス種別結果領域
	 * @param workField work領域（結果保持領域）
	 * @return ステータスコード
	 * @throws Throwable 例外時にスローします
	 */
	private int ctlChshtData(
			SessionHandle handle, 
			IRequestParameterReadWrite param,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL ;
		// サービス種別		
		int svcSbtCd  = SVC_SBT_CD_DFLT;

		String svcCd    = null;		// サービスコード
		String prcGrpCd = null;		// 料金グループコード


		/*************************************************************************************/
		/** サービス契約一意照会                                                            **/
		/*************************************************************************************/
		HashMap<String, Object> eKK0081A010Hash = new HashMap<String, Object>();
		callEKK0081A010SC(param, handle, trgt_data, eKK0081A010Hash);

		// データが0件であった場合
		if(isNull(eKK0081A010Hash))
		{
			// 画面表示時、バッチ抽出時は存在していたが、ＣＣ内処理時にはデータが消えてしまったケース。
			// 通常考えられないが、検索時DBエラーとして例外を返却する。
			throw new CCException("", new SCCallException("", String.valueOf(9051), 8014));
		}

		// work領域にサービス契約一意照会（カレント）の結果を詰める。
		workField.put(SVC_KEI, eKK0081A010Hash);		

		// サービス種別判定
		svcCd    = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD);
		prcGrpCd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		svcSbtCd = getSvcSbtCd(svcCd, prcGrpCd);

		// ▼▼▼▼▼ 2013/09/11 OM-2013-0001096 UPD START ▼▼▼▼▼
		// 非課金実行部品実行
		cancelSvcKeiMapper.runHiChrgJdgUtil(
				handle,
				param,
				trgt_data,
				workField,
				eKK0081A010Hash,
				null,
				null,
				null,
				DSL_SBT_FLG_SVC_KEI_DSL
		);
		// ▲▲▲▲▲ 2013/09/11 OM-2013-0001096 UPD E N D ▲▲▲▲▲

		/*************************************************************************************/
		/** サービス契約内訳情報取得処理                                                    **/
		/*************************************************************************************/
		statusCode = getSrvKeiUcwkData(param, handle, svcSbtCd, trgt_data, workField);
		// ステータスコードの確認
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

		/*************************************************************************************/
		/** オプション契約、サブオプション契約情報取得処理                                  **/
		/*************************************************************************************/
		statusCode = getOpSbopKeiData(param, handle, svcSbtCd, trgt_data, workField);
		// ステータスコードの確認
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

		/*************************************************************************************/
		/** 請求オプション情報取得処理                                                      **/
		/*************************************************************************************/
		statusCode = getSeiOpSvcKeiData(param, handle, trgt_data, workField);
		// ステータスコードの確認
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

		/*************************************************************************************/
		/** サービス契約回線内訳情報取得処理                                                **/
		/*************************************************************************************/
		statusCode = getSvkeiKaisenUwData(param, handle, trgt_data, workField);
		// ステータスコードの確認
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

		// サービス種別がネット系の場合
		if (svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_ADSL || svcSbtCd == SVC_SBT_CD_MOBA)
		{
			//↓↓↓2012-08-17復活　IT1-2012-0000943対応（対策TAI-2012-0000087）↓↓↓
			// オプトインメール受信設定情報取得処理 
			statusCode = getOptInMailData(param, handle, trgt_data, workField);
			// ステータスコードの確認
			if(statusCode != STAT_NORMAL)
			{
				// 失敗
				return statusCode;
			}
			//↑↑↑2012-08-17復活　IT1-2012-0000943対応（対策TAI-2012-0000087）↑↑↑
		}
		// サービス種別が電話系の場合
		else if(svcSbtCd == SVC_SBT_CD_HTEL)
		{
			// LT-2013-0000622 工事連携契約キャンセル処理で高負荷によるシステムエラーが発生 2013/07/24 START
//			// 電話帳申込設定情報取得処理 
//			statusCode = getDnwachomskData(param, handle, trgt_data, workField);
//			// ステータスコードの確認
//			if(statusCode != STAT_NORMAL)
//			{
//				// 失敗
//				return statusCode;
//			}
			// LT-2013-0000622 工事連携契約キャンセル処理で高負荷によるシステムエラーが発生 2013/07/24 END
		}

		/*************************************************************************************/
		/** 機器提供サービス契約情報取得処理                                                **/
		/*************************************************************************************/
		statusCode = getKktkSvcKeiData(param, handle, trgt_data, workField ) ;
		// ステータスコードの確認
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

//↓↓↓2013-03-13削除　ロット２IT1-2013-0000446（キャンセル後に決済方法が変わってしまう）↓↓↓
//		//支払方法入力支援情報取得処理
//		
//		//ステータスコードの確認
//		statusCode = getPaywayInsuportData(param, handle, workField ) ;
//		if(statusCode != STAT_NORMAL )
//		{
//			//失敗
//			return statusCode;
//		}		
//↑↑↑2013-03-13削除　ロット２IT1-2013-0000446（キャンセル後に決済方法が変わってしまう）↑↑↑

		// 2012.3.26 ST2-2012-0000467_CRUD554_555 Start
		/*************************************************************************************/
		/** 申込情報取得処理                                                                **/
		/*************************************************************************************/
		statusCode = getMskmDtlData(param, handle, workField);
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

		/*************************************************************************************/
		/** サービス契約_工事案件情報取得処理                                               **/
		/*************************************************************************************/
		statusCode = getSvcKeiKojiakData(param, handle, workField);
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}
		// 2012.3.15 ST2-2012-0000467_CRUD554_555 End

		// 2012-06-23 ADD_START
		/*************************************************************************************/
		/*************************************************************************************/
		statusCode = getSvcKeiKihonKojiakData(param, handle, workField);
		if (statusCode != STAT_NORMAL)
		{
			return statusCode;
		}
		// 2012-06-23 ADD_END

		return statusCode;
	}

	/**
	 * データキャンセル実行制御処理
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param trgt_data ターゲットデータ
	 * @param svcSbtCd サービス種別
	 * @param workField work領域（結果保持等）
	 * @return ステータスコード
	 * @throws Throwable 例外時にスローします
	 */
	private int ctlCancelData(
			SessionHandle handle, 
			IRequestParameterReadWrite param,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField,
			String fixedText
	) throws Throwable
	{
		int statusCode = STAT_NORMAL ;
		int svcSbtCd   = SVC_SBT_CD_DFLT;

		String sysid    = null;
		String svcCd    = null;
		String prcGrpCd = null;

		// サービス契約一意照会結果
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>) workField.get(SVC_KEI);

		// ▼▼▼▼▼ 2013/09/11 OM-2013-0001096 UPD START ▼▼▼▼▼
		// ******************************************************* //
		// 非課金判定部品実行処理＜サービス＞                      //
		// ******************************************************* //
		// ※「サービス課金終了年月日」について
		// 　　サービスの解約時に呼び出す非課金判定部品が返却する「サービス課金終了年月日」を
		// 　　サービスに紐づくすべてのオプション、サブオプションに設定する。
		HashMap<String, Object> jdgHiChrgMapSvcKei =
			cancelSvcKeiMapper.runHiChrgJdgUtil(
					handle,
					param,
					trgt_data,
					workField,
					eKK0081A010Hash,
					null,
					null,
					null,
					DSL_SBT_FLG_SVC_KEI_DSL
			);
		// ▲▲▲▲▲ 2013/09/11 OM-2013-0001096 UPD E N D ▲▲▲▲▲

		// サービス契約一意照会の結果よりサービス契約ステータスを取得
		String tmpSvcKeiStat = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);

		sysid    = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID);			// ＳＹＳＩＤ
		svcCd    = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD);			// サービスコード
		prcGrpCd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);		// 料金グループコード
		svcSbtCd = getSvcSbtCd(svcCd, prcGrpCd);										// サービス種別

		// キャンセル理由コード判定処理
		String CancelRtnCd = getCancelRtnCd( trgt_data );
		workField.put(CANCEL_RSN_CD, CancelRtnCd);

		// 申込登録実施処理
		statusCode = setMskmAdd(param, handle, trgt_data, workField, eKK0081A010Hash);
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

		/*************************************************************************************/
		/** サービス契約キャンセル・解約処理                                                **/
		/*************************************************************************************/
		statusCode = callCancelSrvKei(param, handle, trgt_data, workField);
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

		/*************************************************************************************/
		/** サービス契約内訳キャンセル・解約処理                                            **/
		/*************************************************************************************/
		ArrayList<HashMap<String, Object>> svcKeiUcwkDataList = new ArrayList<HashMap<String,Object>>();
		statusCode = callCancelSrvKeiUcwk(param, handle, trgt_data, workField, svcKeiUcwkDataList, sysid, svcSbtCd, prcGrpCd);
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

		// KAD-2011-0001102 UI残_No.917 ADD START
		/*************************************************************************************/
		/** 対応履歴登録処理                                                                **/
		/*************************************************************************************/
		addTaiokrk(handle, param, fixedText, trgt_data, workField, svcSbtCd);
		// KAD-2011-0001102 ADD END

		/*************************************************************************************/
		/** オプションサービス契約キャンセル・解約処理                                      **/
		/*************************************************************************************/
		statusCode = callCancelOpSvcKei(param, handle, trgt_data, workField, sysid, jdgHiChrgMapSvcKei);
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

		/*************************************************************************************/
		/** サブオプションサービス契約キャンセル・解約処理                                  **/
		/*************************************************************************************/
		statusCode = callCancelSbopSvcKei(param, handle, trgt_data, workField, jdgHiChrgMapSvcKei);
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

		//↓↓↓2012-10-19追加　ロット２IT1-2012-0001229派生対応（お客様退会CCとI/F 合わせ）↓↓↓
		// サービス契約番号
		String svc_kei_no = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		// サービス契約ステータス
		String svc_kei_stat = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
		//↑↑↑2012-10-19追加　ロット２IT1-2012-0001229派生対応（お客様退会CCとI/F 合わせ）↑↑↑

		/*************************************************************************************/
		/** サービス契約回線内訳キャンセル処理                                              **/
		/*************************************************************************************/
		statusCode = callCancelSvKeiKaisenUw(param, handle, trgt_data, workField, svc_kei_no);
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

		/*************************************************************************************/
		/** 指示書連携処理                                                                  **/
		/*************************************************************************************/
		// 連携データ区分 07 ：回線契約に紐づく各種サービス契約の情報
		JKKBpCommon.putAxMRenkeiDataKbn07(
				param,
				SJISHO_MAP,
				JKKAddSjishoConst.TRN_KBN_DEL,
				new String[]{svc_kei_no},
				"料金グループ番号？"
		);


		// 20130413 IKK-2013-0000889 連携対象データ区分 02を追加 START
		// 連携対象データ区分 02 ：回線契約にかかるサービス契約番号とSYSIDとの紐付け情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_SYSID,
				JKKAddSjishoConst.TRN_KBN_UPD,	// 指示書登録CCでは使用していないが設定が必要なため、更新を設定
				new String[]{svc_kei_no},
				""								// 連携対象データ区分 02の場合、SYSIDは設定不要のため、空文字を設定
		);
		// 20130413 IKK-2013-0000889 連携対象データ区分 02を追加 END

		/*************************************************************************************/
		/** 機器提供サービス契約キャンセル・解約処理                                        **/
		/*************************************************************************************/
		statusCode = callCancelKktkSvcKei(param, handle, trgt_data, workField);
		if(statusCode != STAT_NORMAL)
		{
			// 失敗
			return statusCode;
		}

//↓↓↓2013-03-13削除　ロット２IT1-2013-0000446（キャンセル後に決済方法が変わってしまう）↓↓↓
//		// 支払方法入力支援削除（指示書CC入力データ出力のみ）
//		statusCode = callDelPaywayInsuport(param, handle, workField, sysid,
//				svc_kei_no, false) ;
//		if(statusCode != STAT_NORMAL )
//		{
//			//失敗
//			return statusCode;
//		}		
//↑↑↑2013-03-13削除　ロット２IT1-2013-0000446（キャンセル後に決済方法が変わってしまう）↑↑↑

		// サービス種別がネット系の場合
		if (svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_ADSL || svcSbtCd == SVC_SBT_CD_MOBA)
		{
			//↓↓↓2012-08-17復活　IT1-2012-0000943対応（対策TAI-2012-0000087）↓↓↓
			//2011-11-28, CRUD指摘によりオプトインメール受信設定は制御しない
			/*************************************************************************************/
			/** オプトインメール受信設定取消                                                    **/
			/*************************************************************************************/
			statusCode = callCancelOptInMail(param, handle, workField);
			if(statusCode != STAT_NORMAL)
			{
				// 失敗
				return statusCode;
			}
			//↑↑↑2012-08-17復活　IT1-2012-0000943対応（対策TAI-2012-0000087）↑↑↑

			/*************************************************************************************/
			/** エイジング使用終了（ネット）                                                    **/
			/*************************************************************************************/
			statusCode = callCloseAgingNet(param, handle, workField, svcSbtCd);
			if(statusCode != STAT_NORMAL)
			{
				// 失敗
				return statusCode;
			}
		}
		// サービス種別が電話系の場合
		else if(svcSbtCd == SVC_SBT_CD_HTEL)
		{
			/*************************************************************************************/
			/** 電話帳申込中止                                                                  **/
			/*************************************************************************************/
// LT-2013-0000356 2013/07/21 DEL START
//			statusCode = callCancelDnwachomsk(param, handle, workField);
//			if(statusCode != STAT_NORMAL)
//			{
//				// 失敗
//				return statusCode;
//			}
// LT-2013-0000356 2013/07/21 DEL END
			
			/*************************************************************************************/
			/** 電話用VLANオーダ受付                                                            **/
			/*************************************************************************************/
			if (!STAT_UK_ZUMI.equals(tmpSvcKeiStat))
			{
				tmpSvcKeiStat = "";
				statusCode = callVLANOrderUK(param, handle, workField);
				if(statusCode != STAT_NORMAL)
				{
					// 失敗
					return statusCode;
				}
			}

			/*************************************************************************************/
			/** エイジング使用終了（電話）                                                      **/
			/*************************************************************************************/
			statusCode = callCloseAgingTel(param, handle, workField);
			if(statusCode != STAT_NORMAL)
			{
				// 失敗
				return statusCode;
			}
// IT1-2013-0000777 2013/04/06 DEL START
// 解約時には番ポ工事を取消す必要はない為コメントアウト		
////↓↓↓2013-03-05追加　ロット２ST2-2013-0001271（番ポ工事が取消されない）↓↓↓
//			HashMap<String, Object> cancelBmpkjMap = new HashMap<String, Object>();
//			cancelBmpkjMap.put(JKKCancelBmpkjConst.SVC_KEI_NO, svc_kei_no);
//			JKKBpCommon.cancelBmpkj(handle, param, fixedText, cancelBmpkjMap);
////↑↑↑2013-03-05追加　ロット２ST2-2013-0001271（番ポ工事が取消されない）↑↑↑
// IT1-2013-0000777 2013/04/06 DEL END

			// OM-2013-0004242 2013/11/27 ADD START
			// 番ポ電話の場合、工事案件のステータスによって番ポ取消を行う
			// work領域からサービス契約内訳＜eo光電話＞照会結果を取得
			ArrayList<HashMap<String, Object>> inHashlistSvkeiUwEohTel = (ArrayList<HashMap<String, Object>>) workField.get( SVKEIUW_EOH_TEL );
			
			for(int i = 0 ; i < inHashlistSvkeiUwEohTel.size() ; i++)
			{
				// スーパータイプの結果から移送したステータスを取得
				String tmpSvcKeiUcwkStat = (String)inHashlistSvkeiUwEohTel.get(i).get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
				
				// サービス契約内訳＜eo光電話＞照会結果から番ポ有無を取得
				String tmpBmpUm = (String)inHashlistSvkeiUwEohTel.get(i).get(EKK0191A010CBSMsg1List.BMP_UM);
				
				if (isTrgtBySvcKeiStat(tmpSvcKeiUcwkStat))
				{
					if ("1".equals(tmpBmpUm)) 
					{
						// 番ポ電話番号を取得
						String bmp_Telno = (String)inHashlistSvkeiUwEohTel.get(i).get(EKK0191A010CBSMsg1List.TELNO);
						// 番ポ工事取消処理部品マップを作成する
						HashMap<String, Object> cancelBmpkjMap = new HashMap<String, Object>();
						// 番ポ工事取消処理部品マップ.サービス契約番号を設定
						cancelBmpkjMap.put(JKKCancelBmpkjConst.SVC_KEI_NO, svc_kei_no);
						// 番ポ工事取消処理部品マップ.対象番ポ電話番号を設定
						cancelBmpkjMap.put(JKKCancelBmpkjConst.BMP_TELNO, bmp_Telno);
						// 番ポ工事取消処理部品を呼び出し、番ポ取消を行う（但し、番ポ工事ステータスが「000」時のみ）
						JKKBpCommon.cancelBmpkj(handle, param, fixedText, cancelBmpkjMap);
					}
				}
				
			}
			// OM-2013-0004242 2013/11/27 ADD END
// ANK-4494-00-00 Step2品質強化対応No.33 20241204 星野 ADD START
			/*************************************************************************************/
			/** 電話番号・個人法人番号帯コード更新                                              **/
			/*************************************************************************************/
			statusCode = updTelNokojinHojin(param, handle, workField);
			if(statusCode != STAT_NORMAL)
			{
				// 失敗
				return statusCode;
			}
// ANK-4494-00-00 Step2品質強化対応No.33 20241204 星野 ADD END
			
		}

		// 20120327 ST2-2012-0000471 START
		/*************************************************************************************/
		/** 申込キャンセル処理                                                              **/
		/*************************************************************************************/
		callCancelMskm(param, handle, workField);
		// 20120327 ST2-2012-0000471 END

// 20140612 ANK-2095-00-00 Add Start
		// 料金コースコード
		String pcrsCd    = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PCRS_CD);
		// 配送抑止取消
		updKktkSvcTblt(handle, param, pcrsCd, svcSbtCd, svc_kei_no, fixedText);
// 20140612 ANK-2095-00-00 Add End

		// サービス契約ステータスがすでにキャンセル済、解約済であれば処理対象外
		if(isTrgtBySvcKeiStat(tmpSvcKeiStat))
		{
			// さらに受付済の場合は進捗以外実行しない
			if(! STAT_UK_ZUMI.equals(tmpSvcKeiStat))
			{
				// 2012.3.26 ST2-2012-0000467_CRUD554_555 Start
				/*************************************************************************************/
				/** 工事案件ＣＣ実行                                                                **/
				/*************************************************************************************/
				executeKojiakCC(param, handle, trgt_data, workField);
				// 2012.3.26 ST2-2012-0000467_CRUD554_555 End

				/*************************************************************************************/
				/** 物流ＣＣ実行                                                                    **/
				/*************************************************************************************/
				executeButuryuCtrlCC(param, handle, trgt_data, workField ) ;

//				// 契約CC（通知書登録CC）呼び出し
//				editMapJKKTchishoAdd(param, handle, trgt_data, workField ) ;
				// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 START
				/*************************************************************************************/
				/** 通知書登録ＣＣ実行                                                              **/
				/*************************************************************************************/
				executeTchishoAddCC(param, handle, trgt_data, workField);
				// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 END

				//↓↓↓2012-04-24追加　巻@指示書CC取込み対応↓↓↓
				/*************************************************************************************/
				/** 指示書登録ＣＣ実行                                                              **/
				/*************************************************************************************/
				// 20130413 IKK-2013-0000889 照査OKのキャンセル時のみ、指示書登録するよう修正 MOD START
				String shosaDslFinCd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SHOSA_DSL_FIN_CD);
				if(JKKStrConst.CD00469_1.equals(shosaDslFinCd))
				{
					(new JKKAddSjishoCC()).addSjisho(handle, param, SJISHO_MAP);
				}
				// 20130413 IKK-2013-0000889 照査OKのキャンセル時のみ、指示書登録するよう修正 MOD END

				// 20120404 ST2-2012-0000484 START
				boolean sodHakkoFlg = false;

				String tmpShosaDslFinCd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SHOSA_DSL_FIN_CD);

// OM-2017-0001066 2017/11/20 DEL START
//				// *****************************************
//				// 電話サービスの場合
//				// *****************************************
//				if(svcSbtCd == SVC_SBT_CD_HTEL)
//				{
//					// 20120808 VLAN_ID対応 START
//					// サービス契約回線内訳一意照会を実施
//					String tmpVlanIdFixFlg = null;
//					ArrayList<HashMap<String, Object>> eKK0251A010HashList = (ArrayList<HashMap<String, Object>>)workField.get(SVKEI_KAISEN_UW);
//					if (eKK0251A010HashList != null && eKK0251A010HashList.size() > 0)
//					{
//						HashMap<String, Object> eKK0251A010HashListElement = eKK0251A010HashList.get(0);
//						tmpVlanIdFixFlg = (String) eKK0251A010HashListElement.get(EKK0251A010CBSMsg1List.VLAN_ID_FIX_FLG);
//					}
//					// 20120808 VLAN_ID対応 END
//
//					// work領域から機器提供サービス契約一意照会の結果を取得
//					ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get(KKTK_SVC_KEI);
//					
//					// OM-2014-0003279対応 20141009 田中 ADD START
//					// work領域からサービス契約内訳一意照会の結果を取得
//					HashMap<String, Object> eKK0191A010Hash = ((ArrayList<HashMap<String, Object>>) workField.get(SVKEIUW_EOH_TEL)).get(0);
//					// OM-2014-0003279対応 20141009 田中 ADD END
//					
//					String tmpKikiSeizoNo = null;
//					for(int i = 0 ; i < inHashlist.size() ; i++)
//					{
//						String tmpKktkSvcCd = (String)inHashlist.get(i).get(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
//// ▼▼▼ 2013/12/21 IT1-2013-0001709 mod START
//						if ( KKTK_SVC_CD_VA.equals(tmpKktkSvcCd) || KKTK_SVC_CD_MRT.equals(tmpKktkSvcCd) )
//// ▼▼▼ 2013/12/21 IT1-2013-0001709 mod END
//						{
//							// 機器提供サービスコードがVAの場合
//							// OM-2014-0003279対応 20141009 田中 ADD START
//							// 内訳と機器から機器変更番号と一致する場合
//							String vaKikiChgNo = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.VA_KIKI_CHG_NO);
//							String kikiChgNo = (String)inHashlist.get(i).get(EKK0341A010CBSMsg1List.KIKI_CHG_NO);
//							
//							// 機器変更番号が空欄でなく、内訳と機器の変更番号が一致する場合
//							if (kikiChgNo != null & kikiChgNo.equals(vaKikiChgNo)) {
//							// OM-2014-0003279対応 20141009 田中 ADD END
//							
//								tmpKikiSeizoNo = (String)inHashlist.get(i).get(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);
//								break;
//								
//							// OM-2014-0003279対応 20141009 田中 ADD START
//							}
//							// OM-2014-0003279対応 20141009 田中 ADD END
//						}
//					}
//
//					if (
//							! SHOSA_DSL_FIN_CD_SHOSA_NG.equals(tmpShosaDslFinCd)
//							&& VLAN_ID_FIX_FLG_ON.equals(tmpVlanIdFixFlg)
//							&& ! isNull(tmpKikiSeizoNo)
//					)
//					{
//						// 照査解約完了コードが照査NG以外、
//						// かつ、VLAN-ID確定フラグが確定済、
//						// かつ、VAの機器製造番号が設定されている場合
//
//						// SOD発行フラグにtrueを設定
//						sodHakkoFlg = true;
//					}
//					
////↓↓↓2013-07-11追加　IT2-2013-0000592（SOD品向No.23　キャンセルで転送電話OPによるSIP・解約が出ない）↓↓↓
//					// work領域からオプションサービス契約一意照会の結果を取得
//					ArrayList<HashMap<String, Object>> ekk0351a010AllList = (ArrayList<HashMap<String, Object>>) workField.get( OP_SVC_KEI );
//					for(int i = 0 ; !sodHakkoFlg && i < ekk0351a010AllList.size() ; i++)
//					{
//						// オプションサービスコード
//						String opSvcCd = (String)ekk0351a010AllList.get(i).get(EKK0351A010CBSMsg1List.OP_SVC_CD);
//						String opSvcKeiStat = (String)ekk0351a010AllList.get(i).get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
//						if (JKKSvcConst.OP_SVC_CD_TENSO.equals(opSvcCd)
//						&&	JKKSvcConst.SVC_KEI_STAT_020.compareTo(opSvcKeiStat) <= 0 && JKKSvcConst.SVC_KEI_STAT_910.compareTo(opSvcKeiStat) > 0)
//						{
//							sodHakkoFlg = true;
//						}
//					}
////↑↑↑2013-07-11追加　IT2-2013-0000592（SOD品向No.23　キャンセルで転送電話OPによるSIP・解約が出ない）↑↑↑
//				}
//				// *****************************************
//				// 電話サービス以外の場合
//				// *****************************************
//				else
//				{
// OM-2017-0001066 2017/11/20 DEL END
				if (!SHOSA_DSL_FIN_CD_SHOSA_NG.equals(tmpShosaDslFinCd))
				{
					// 照査解約完了コードが照査NG以外の場合

					// SOD発行フラグにtrueを設定
					sodHakkoFlg = true;
				}
// OM-2017-0001066 2017/11/20 DEL START
//				}
// OM-2017-0001066 2017/11/20 DEL END

				/*************************************************************************************/
				/** 発行ＳＯＤＣＣ実行                                                              **/
				/*************************************************************************************/
				if (sodHakkoFlg)
				{
					// サービスオーダ発行CC呼び出し
					executeHakkoSodCC(param, handle, trgt_data, eKK0081A010Hash, svcKeiUcwkDataList, workField) ;
				}
				// 20120404 ST2-2012-0000484 END
			}
			//▼▼▼▼▼【ANK-2056-00-00】光電話セレクトオプションパックADD START▼▼▼▼▼
			/*************************************************************************************/
			/** 電話セレクトオプションパック操作部品実行                                                            **/
			/*************************************************************************************/
			if(SVC_CD_TEL.equals(svcCd))
			{
				// work領域からサービス契約内訳一意照会の結果を取得
				ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( SVC_KEI_UCWK );
				for(int i = 0 ; i < inHashlist.size() ; i++)
				{
					String svc_kei_ucwk_no = (String)inHashlist.get(i).get((EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO));
					
					executeTelSelectOpPackOperateCC(param, handle, trgt_data, eKK0081A010Hash, svc_kei_ucwk_no, workField);
					
				}
			}
			//▲▲▲▲▲【ANK-2056-00-00】光電話セレクトオプションパック ADD E N D▲▲▲▲▲
			
			// IT2-2012-0000771 2012-06-12 ADD_START
			/*************************************************************************************/
			/** 割引自動適用ＣＣ実行                                                            **/
			/*************************************************************************************/
			executeWribAutoAplyCC(param, handle, trgt_data, eKK0081A010Hash, workField);
			// IT2-2012-0000771 2012-06-12 ADD_END
			
			// ANK-2293-00-00 対応 FJ)清水 2016/01/13 ADD START
			/*************************************************************************************/
			/** 進捗登録(セット割引対応)                                                        **/
			/*************************************************************************************/
			// 割引自動適用CCの返却値の割引サービスコードが"W00000005"が含まれているかの判定
			boolean tmpSetwribFlg = false;
			// 割引自動適用CCの割引サービスコードの取得
			HashMap wrisvcAutoAplyCC = (HashMap)param.getData("WrisvcAutoAplyCC");
			if(wrisvcAutoAplyCC != null && wrisvcAutoAplyCC.size() > 0)
			{
				ArrayList<HashMap<String, Object>> wrib_svc_kei_grp_list = (ArrayList<HashMap<String, Object>>)wrisvcAutoAplyCC.get("wrib_svc_kei_grp_list");
				if(wrib_svc_kei_grp_list != null && wrib_svc_kei_grp_list.size() > 0)
				{
					for(int i = 0; i < wrib_svc_kei_grp_list.size(); i++)
					{
						HashMap<String, Object> wrib_svc_kei_grp = (HashMap<String, Object>) wrib_svc_kei_grp_list.get(i);
						if(wrib_svc_kei_grp != null)
						{
							ArrayList<HashMap<String, String>> wrib_svc_kei_list = (ArrayList<HashMap<String, String>>)wrib_svc_kei_grp.get("wrib_svc_kei_list");
							
							if(wrib_svc_kei_list != null && wrib_svc_kei_list.size() > 0)
							{
								for(int j = 0; j < wrib_svc_kei_list.size(); j++)
								{
									HashMap<String, String> wrib_svc_kei = wrib_svc_kei_list.get(j);
									if(wrib_svc_kei != null && JKKSvcConst.WRIB_SVC_CD_NET_MOBSET.equals(wrib_svc_kei.get("wrib_svc_cd")))
									{
										tmpSetwribFlg = true;
										break;
									}
								}
							}
						}
					}
				}
			}
			
			// 割引自動適用CCの返却値の割引サービスコードが"W00000005"(インターネット･モバイルセット割引)を含んでいる場合｡
			if (tmpSetwribFlg)
			{
				// 異動区分:00049(割引情報登録)
				workField.put(WRIB_IDO_DIV, JKKSvcConst.IDO_DIV_WRIBINFOADD);
				// 進捗ステータス:F051(割引･キャンペーン取消完了)
				workField.put(WRIB_PRG_STAT, JKKSvcConst.PRG_STAT_F051);
				statusCode = callAddPrgWrib(param, handle, trgt_data, workField);
				if(statusCode != STAT_NORMAL)
				{
					// 失敗
					return statusCode;
				}
				// セット割引用フィールドの初期化
				workField.remove(WRIB_IDO_DIV);
				workField.remove(WRIB_PRG_STAT);
			}
			// ANK-2293-00-00 対応 FJ)清水 2016/01/13 ADD END

			/*************************************************************************************/
			/** 進捗登録                                                                        **/
			/*************************************************************************************/
			statusCode = callAddPrg(param, handle, trgt_data, workField);
			if(statusCode != STAT_NORMAL)
			{
				// 失敗
				return statusCode;
			}

			// LT-2013-0000608 キャンセル処理のスマートバリュー異動情報登録CC呼び出し時にシステムエラー 2013/07/24 START
			/*************************************************************************************/
			/** スマートバリュー異動情報登録ＣＣ実行                                            **/
			/*************************************************************************************/
			executeSmtvlIdoInfAddCC(param, handle, trgt_data, workField);
			if(statusCode != STAT_NORMAL)
			{
				// 失敗
				return statusCode;
			}

			/*************************************************************************************/
			/** お客様退会                                                                      **/
			/*************************************************************************************/
			if (!JKKStrConst.CD00037_UK_ZM.equals(svc_kei_stat))		//2012-10-19追加　受付済でないなら
			{
				callCusTaikaiCmnKino(handle, param, sysid, svc_kei_no);
			}

			// ネットの場合　宅内機器サービス契約番号更新CCを呼ぶ
			if(SVC_CD_NET.equals(svcCd))
			{
				HashMap ccMap = new HashMap();
				ccMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SVC_KEI_NO, (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
				ccMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SYORI_KBN,  JKKTkkkSvKeiNoUpdCC.SYORI_KBN_2);
				ccMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_IDO_DIV,    (String)trgt_data.get(JKKCancelSvcKeiCC.REQ_PARAM_IDO_DIV));
				param.setData("JKKTkkkSvKeiNoUpdCC", ccMap);
				JKKTkkkSvKeiNoUpdCC jKKTkkkSvKeiNoUpdCC = new JKKTkkkSvKeiNoUpdCC();
				jKKTkkkSvKeiNoUpdCC.updTkkkSvKeiNo(handle, param, "JKKTkkkSvKeiNoUpdCC");
			}
			// LT-2013-0000608 キャンセル処理のスマートバリュー異動情報登録CC呼び出し時にシステムエラー 2013/07/24 START
		}
		
		// ANK-3949-00-00 ADD START
		// サービスコードがネットのみ、Netflix用他事業者契約解約異動通知登録コモンコンポーネント部品を実施
		if (SVC_CD_NET.equals(svcCd))
		{
			JKKNetflixTajgsKeiIdtslAddCC NetflixCC = new JKKNetflixTajgsKeiIdtslAddCC();
			
			setNetflixCC(param, (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
			
			NetflixCC.main(handle, param, "NETFLIXCC");
		}
		// ANK-3949-00-00 ADD END

		// LT-2013-0000608 キャンセル処理のスマートバリュー異動情報登録CC呼び出し時にシステムエラー 2013/07/24 START
		// キャンセル処理前のステータスがキャンセル済・解約済でない場合のみ以下の処理を実行するため上に移動
//		//ANK-0406-00-0007_20120717_ADD_START
//		/*************************************************************************************/
//		/** スマートバリュー異動情報登録ＣＣ実行                                            **/
//		/*************************************************************************************/
//		executeSmtvlIdoInfAddCC(param, handle, trgt_data, workField);
//		if(statusCode != STAT_NORMAL)
//		{
//			// 失敗
//			return statusCode;
//		}
//		//ANK-0406-00-0007_20120717_ADD_END
//
//		// 2012/09/03 ANK-0024-05-00 ADD START お客様退会処理追加
//		/*************************************************************************************/
//		/** お客様退会                                                                      **/
//		/*************************************************************************************/
//		if (!JKKStrConst.CD00037_UK_ZM.equals(svc_kei_stat))		//2012-10-19追加　受付済でないなら
//		{
//			callCusTaikaiCmnKino(handle, param, sysid, svc_kei_no);
//		}
//		// 2012/09/03 ANK-0024-05-00 ADD END
//
//		// ANK-0342-00-00 2012/07/24 start
//		// ネットの場合　宅内機器サービス契約番号更新CCを呼ぶ
//		if(SVC_CD_NET.equals(svcCd))
//		{
//			HashMap ccMap = new HashMap();
//			ccMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SVC_KEI_NO, (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
//			ccMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SYORI_KBN,  JKKTkkkSvKeiNoUpdCC.SYORI_KBN_2);
//			ccMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_IDO_DIV,    (String)trgt_data.get(JKKCancelSvcKeiCC.REQ_PARAM_IDO_DIV));
//			param.setData("JKKTkkkSvKeiNoUpdCC", ccMap);
//			JKKTkkkSvKeiNoUpdCC jKKTkkkSvKeiNoUpdCC = new JKKTkkkSvKeiNoUpdCC();
//			jKKTkkkSvKeiNoUpdCC.updTkkkSvKeiNo(handle, param, "JKKTkkkSvKeiNoUpdCC");
//		}
//		// ANK-0342-00-00 2012/07/24 end
		// LT-2013-0000608 キャンセル処理のスマートバリュー異動情報登録CC呼び出し時にシステムエラー 2013/07/24 END

		return statusCode;

	}

	/*********************************************************************************************************************/
	/** サービスＩＦ呼び出し制御処理                                                                                    **/
	/*********************************************************************************************************************/

	/**
	 * サービス契約内訳情報取得処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int getSrvKeiUcwkData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			int svcSbtCd,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;

		// <work>サービス契約内訳一覧情報照会結果（カレント）
		ArrayList<HashMap<String, Object>> eKK0161B004HashList = new ArrayList<HashMap<String, Object>>();

		// サービス契約内訳一覧情報照会
		callEKK0161B004SC(param, handle, trgt_data, eKK0161B004HashList);

		// サービス契約内訳一意照会結果
		HashMap<String, Object> eKK0161A010Hash                = new HashMap<String, Object>();
		// サービス契約内訳一覧照会結果
		ArrayList<HashMap<String, Object>>eKK0161A010HashList  = new ArrayList<HashMap<String, Object>>();
		// サービス契約内訳<eo光電話>照会結果（カレント）一覧
		ArrayList<HashMap<String, Object>> eKK0191A010HashList = new ArrayList<HashMap<String, Object>>();
		// サービス契約内訳<eoADSL>照会結果（カレント）一覧
		ArrayList<HashMap<String, Object>> eKK0221A010HashList = new ArrayList<HashMap<String, Object>>();		//2012-02-24
		// サービス契約内訳<eo光電話>一意照会（カレント）
		HashMap<String, Object> eKK0191A010Hash                = new HashMap<String, Object>();
		// サービス契約内訳<eo光ネット>照会結果（カレント）
		HashMap<String, Object> eKK0171A010Hash                = new HashMap<String, Object>();
		// サービス契約内訳照会結果（指示書登録用）
		HashMap<String, Object> shjishoYoHash                  = new HashMap<String, Object>();
		// サービス契約内訳<eo光ネット>照会結果（指示書登録用）
		HashMap<String, Object> shjishoYouEOHNetHash           = new HashMap<String, Object>();
		// KAD-2011-0001102 UI残_No.917 ADD START
		// 番ポ工事一覧照会結果
		ArrayList<HashMap<String, Object>> eTU0011B018HashList = new ArrayList<HashMap<String,Object>>();
		// KAD-2011-0001102 ADD END

		for(int i = 0 ; i < eKK0161B004HashList.size() ; i++)
		{
			// サービス契約内訳一意照会結果
			eKK0161A010Hash =  new HashMap<String, Object>();
			// サービス契約内訳一意照会
			callEKK0161A010SC(param, handle, eKK0161B004HashList.get(i), eKK0161A010Hash);

			eKK0161A010HashList.add(eKK0161A010Hash);
			// サービス契約内訳ステータス取得
			String tmpSvcKeiStat = (String)eKK0161B004HashList.get(i).get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);

			if (svcSbtCd == SVC_SBT_CD_HTEL)
			{
				// サービス契約内訳<eo光電話>一意照会（カレント）
				eKK0191A010Hash = new HashMap<String, Object>();
				callEKK0191A010SC(param, handle, eKK0161B004HashList.get(i), eKK0191A010Hash);

				// サービスＩＦの結果にステータス項目が存在しないので付与
				eKK0191A010Hash.put(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT, tmpSvcKeiStat);
				eKK0191A010HashList.add(eKK0191A010Hash);

				// KAD-2011-0001102 UI残_No.917 ADD START
				// 番ポ工事一覧照会結果
				callETU0011B018SC(param, handle, eKK0161B004HashList.get(i), eTU0011B018HashList);
				// KAD-2011-0001102 ADD END
			}

			//↓↓↓2012-02-24追加↓↓↓IT障害1023対応
			// eoADSL
			if (SVC_SBT_CD_ADSL == svcSbtCd)
			{
				// サービス契約内訳<eoADSL>一意照会（カレント）
				HashMap<String, Object> eKK0221A010Hash = new HashMap<String, Object>();		//2012-02-24

				// サービス契約内訳<eoADSL>一意照会（カレント）
				callEKK0221A010SC(param, handle, eKK0161B004HashList.get(i), eKK0221A010Hash);
				eKK0221A010HashList.add(eKK0221A010Hash);
			}
			//↑↑↑2012-02-24追加↑↑↑

			/*********************************************/
			/* 以下は指示書登録向けデータ取得処理        */
			/* 現在は指示書CCのIF待ちのため取得のみ      */
			/*********************************************/

			// サービス種別がEO光ネットの場合
			if (svcSbtCd == SVC_SBT_CD_HNET)
			{
				// ステータスが照査済以降であれば取得
				if(
						STAT_SHOSA_ZUMI.equals(tmpSvcKeiStat)
						|| STAT_CNC_ZUMI.equals(tmpSvcKeiStat)
						|| STAT_SVCTK_CHU.equals(tmpSvcKeiStat)
						|| STAT_PAUSE_STP_CHU.equals(tmpSvcKeiStat)
						|| STAT_STP_CHU.equals(tmpSvcKeiStat)
				)
				{
					// サービス契約内訳<eo光ネット>一意照会（カレント）
					eKK0171A010Hash = new HashMap<String, Object>();
					callEKK0171A010SC(param, handle, eKK0161B004HashList.get(i), eKK0171A010Hash);

					// サービス契約内訳<eo光ネット>一意照会結果を設定
					shjishoYoHash.putAll(eKK0161B004HashList.get(i));
					shjishoYouEOHNetHash.putAll(eKK0171A010Hash);
				}
			}
		}

		// work領域にサービス契約内訳一意照会の結果リストを詰める。
		workField.put(SVC_KEI_UCWK,       eKK0161A010HashList);
		// work領域にサービス契約内訳<eo光電話>一意照会（カレント）の結果リストを詰める。
		workField.put(SVKEIUW_EOH_TEL,    eKK0191A010HashList);
		// work領域にサービス契約内訳照会結果（指示書）の結果リストを詰める。
		workField.put(SVC_KEI_UCWK_SHIJI, shjishoYoHash);
		// work領域にサービス契約内訳<eo光ネット>一意照会結果の結果リストを詰める。
		workField.put(SVKEIUW_EOH_NET,    shjishoYouEOHNetHash);
		//↓↓↓2012-02-24追加↓↓↓IT障害1023対応
		workField.put(SVKEIUW_EOADSL,     eKK0221A010HashList);
		//↑↑↑2012-02-24追加↑↑↑
		// KAD-2011-0001102 UI残_No.917 ADD START
		// 番ポ工事一覧照会結果
		workField.put(BMP_KOJI_ICRN,      eTU0011B018HashList);
		// KAD-2011-0001102 ADD END

		return statusCode;
	}


	/**
	 * オプション契約、サブオプション契約情報取得処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private int getOpSbopKeiData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			int svcSbtCd,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;

		// オプションサービス契約一意照会結果
		HashMap<String, Object> eKK0351A010Hash                     = new HashMap<String, Object>();
		// オプションサービス契約一覧照会結果
		ArrayList<HashMap<String, Object>> eKK0351B010HashList      = new ArrayList<HashMap<String, Object>>();
		// オプションサービス契約一意照会結果（全結果）
		ArrayList<HashMap<String, Object>> eKK0351A010HashListAll   = new ArrayList<HashMap<String, Object>>();
		// オプションサービス契約<ISP>一意照会結果
		HashMap<String, Object> eKK0361A010Hash                     = new HashMap<String, Object>();
		// オプションサービス契約<ISP>一意照会結果（全結果）
		ArrayList<HashMap<String, Object>> eKK0361A010HashListAll   = new ArrayList<HashMap<String, Object>>();
		// オプションサービス契約<電話>一意照会結果
		HashMap<String, Object> eKK0371A010Hash                     = new HashMap<String, Object>();
		// オプションサービス契約<電話>一意照会結果（全結果）
		ArrayList<HashMap<String, Object>> eKK0371A010HashListAll   = new ArrayList<HashMap<String, Object>>();
		// サブオプションサービス契約一覧照会結果
		ArrayList<HashMap<String, Object>> eKK0401B001HashList      = new ArrayList<HashMap<String, Object>>();
		// サブオプションサービス契約一意照会結果
		HashMap<String, Object> eKK0401A010Hash                     = new HashMap<String, Object>();
		// サブオプションサービス契約一意照会結果（全結果）
		ArrayList<HashMap<String, Object>> eKK0401A010HashList      = new ArrayList<HashMap<String, Object>>();
		// サブオプションサービス契約<ISP>一意照会結果
		HashMap<String, Object> eKK0411A010Hash                     = new HashMap<String, Object>();
		// サブオプションサービス契約一覧照会結果（全結果）
		ArrayList<HashMap<String, Object>> eKK0411A010HashAll       = new ArrayList<HashMap<String, Object>>();
		// オプションサービス契約照会結果（POPID_指示書登録用）
		ArrayList<HashMap<String, Object>> shijisyoPopHashList      = new ArrayList<HashMap<String, Object>>();
		// オプションサービス契約照会結果（POPID_指示書登録用）
		ArrayList<HashMap<String, Object>> shijisyoPopChildHashList = new ArrayList<HashMap<String, Object>>();
		// オプションサービス契約照会結果（WEBID_指示書登録用）
		ArrayList<HashMap<String, Object>> shijisyoWebHashList      = new ArrayList<HashMap<String, Object>>();
		// オプションサービス契約照会結果（WEBID_指示書登録用）
		ArrayList<HashMap<String, Object>> shijisyoWebChildHashList = new ArrayList<HashMap<String, Object>>();

		// オプションサービス契約一覧照会（カレント）
		callEKK0351B010SC(param, handle, trgt_data, eKK0351B010HashList);

		for(int i = 0 ; i < eKK0351B010HashList.size() ; i++)
		{
			// オプションサービス契約一意照会
			eKK0351A010Hash = new HashMap<String, Object>();
			callEKK0351A010SC(param, handle, eKK0351B010HashList.get(i), eKK0351A010Hash);

			// オプションサービス契約ステータスの取得
			String tmpSvcKeiStat = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			String tmpOpSvcCd    = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_CD);

			if (! OP_SVC_CD_RMTSPRTPLUS.equals(tmpOpSvcCd))
			{
				// リモートサポートプラス以外の場合
				if (svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_ADSL || svcSbtCd == SVC_SBT_CD_MOBA)
				{
					// オプションサービス契約<ISP>一意照会(カレント)
					eKK0361A010Hash = new HashMap<String, Object>();
					callEKK0361A010SC(param, handle,  eKK0351A010Hash, eKK0361A010Hash);

					if(eKK0361A010Hash.size() != 0)
					{
						// ステータスを付与
						eKK0361A010Hash.put(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT, tmpSvcKeiStat);
						// オプションサービス契約<ISP>一意照会結果を取得
						eKK0361A010HashListAll.add(eKK0361A010Hash);

						/*********************************************/
						/* 以下は指示書登録向けデータ取得処理        */
						/* 現在は指示書CCのIF待ちのため取得のみ      */
						/*********************************************/

						// ステータスが照査済以降であれば取得
						if(
								STAT_SHOSA_ZUMI.equals(tmpSvcKeiStat)
								|| STAT_CNC_ZUMI.equals(tmpSvcKeiStat)
								|| STAT_SVCTK_CHU.equals(tmpSvcKeiStat)
								|| STAT_PAUSE_STP_CHU.equals(tmpSvcKeiStat)
								|| STAT_STP_CHU.equals(tmpSvcKeiStat)
						)
						{
							// 対象データの取得
							String tmpWebId = "";
							String tmpPopId = "";

							tmpPopId = (String) eKK0361A010Hash.get(EKK0361A010CBSMsg1List.POP_ID);
							tmpWebId = (String)eKK0361A010Hash.get(EKK0361A010CBSMsg1List.WEB_ID);

							// POPID存在時
							if (!"".equals(tmpPopId))
							{
								// POPID指示書登録用データとして取得
								shijisyoPopHashList.add(eKK0351A010Hash);
								shijisyoPopChildHashList.add(eKK0361A010Hash);
							}

							// WEBID
							if (!"".equals(tmpWebId))
							{
								// WEBID指示書用データとして取得
								shijisyoWebHashList.add(eKK0351A010Hash);
								shijisyoWebChildHashList.add(eKK0361A010Hash);	
							}
						}
					}
				} 
				else if (svcSbtCd == SVC_SBT_CD_HTEL)
				{
					// オプションサービス契約<電話>一意照会(カレント)
					eKK0371A010Hash = new HashMap<String, Object>();
					callEKK0371A010SC(param, handle, eKK0351A010Hash, eKK0371A010Hash);

					// オプションサービス契約ステータスの取得
					if(eKK0371A010Hash.size() != 0)
					{
						// ステータスを付与
						eKK0371A010Hash.put(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT, tmpSvcKeiStat);
						// オプションサービス契約<電話>一意照会を付与
						eKK0371A010HashListAll.add(eKK0371A010Hash);
					}

				}
			}

			// サブオプションサービス契約一覧照会（カレント）
			eKK0401B001HashList = new ArrayList<HashMap<String, Object>>();
			callEKK0401B001SC(param, handle, eKK0351A010Hash, eKK0401B001HashList);

			if(eKK0401B001HashList.size() != 0 )
			{
				for(int j = 0 ; j < eKK0401B001HashList.size() ; j++)
				{
					// サブオプションサービス契約一意照会
					eKK0401A010Hash = new HashMap<String, Object>();
					callEKK0401A010SC(param, handle, eKK0401B001HashList.get(j), eKK0401A010Hash);

					// サブオプションサービス契約一意照会をworkに格納
					eKK0401A010HashList.add(eKK0401A010Hash);
					// ステータスを取得
					String tmpSbOpStat = (String)eKK0401A010Hash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);

					if (svcSbtCd == SVC_SBT_CD_HNET || svcSbtCd == SVC_SBT_CD_ADSL || svcSbtCd == SVC_SBT_CD_MOBA)
					{
						// サブオプションサービス契約<ISP>一意照会（カレント）
						eKK0411A010Hash = new HashMap<String, Object>();
						callEKK0411A010SC(param, handle, eKK0401B001HashList.get(j), eKK0411A010Hash);

						if(eKK0411A010Hash.size() != 0 )
						{
							eKK0411A010Hash.put(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT, tmpSbOpStat);
							//  サブオプションサービス契約<ISP>一意照会をworkに格納
							eKK0411A010HashAll.add(eKK0411A010Hash);
						}
					}
				}
			}

			eKK0351A010HashListAll.add(eKK0351A010Hash);
		}

		// work領域にオプションサービス契約一意照会（カレント）の全結果リストを詰める。
		workField.put(OP_SVC_KEI,      eKK0351A010HashListAll);
		// work領域にオプションサービス契約<ISP>一意照会(カレント)の全結果リストを詰める。
		workField.put(OPSVKEI_ISP,     eKK0361A010HashListAll);
		// work領域にオプションサービス契約<電話>一意照会(カレント)の全結果リストを詰める。
		workField.put(OPSVKEI_TEL,     eKK0371A010HashListAll);
		// work領域にサブオプションサービス契約一覧照会（カレント）の全結果リストを詰める。
		workField.put(SBOP_SVC_KEI,    eKK0401A010HashList);
		// work領域にサブオプションサービス契約<ISP>一意照会(カレント)の全結果リストを詰める。
		workField.put(SBOPSVKEI_ISP,   eKK0411A010HashAll);
		// work領域にオプションサービス契約照会結果_POPID指示書登録用の全結果を詰める。
		workField.put(OP_SVC_KEI_POP,  shijisyoPopHashList);
		// work領域にオプションサービス契約照会結果_POPID指示書登録用の全結果を詰める。
		workField.put(OPSVKEI_ISP_POP, shijisyoPopChildHashList);
		// work領域にオプションサービス契約照会結果_WEBID指示書登録用の全結果を詰める。
		workField.put(OP_SVC_KEI_WEB,  shijisyoWebHashList);
		// work領域にオプションサービス契約照会結果_WEBID指示書登録用の全結果を詰める。
		workField.put(OPSVKEI_ISP_WEB, shijisyoWebChildHashList);

		return statusCode;
	}


	/**
	 * オプトインメール情報取得処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 * @since 2012-08-17 IT1-2012-0000943対応（対策TAI-2012-0000087）
	 */	
	private int getOptInMailData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		// サービス契約一意照会結果
		HashMap<String, Object> kk0081CurrMap = (HashMap<String, Object>)workField.get(SVC_KEI);

		// ステータスコード
		int statusCode = STAT_NORMAL;

		// work領域からオプションサービス契約<ISP>一意照会(カレント)の全結果リスト取得
		ArrayList<HashMap<String, Object>> eKK0361A010HashListAll =  (ArrayList<HashMap<String, Object>>) workField.get(OPSVKEI_ISP );

		// オプトインメール受信設定一覧照会結果
		ArrayList<HashMap<String, Object>> eCK0141B003HashList = new ArrayList<HashMap<String, Object>>();

		StringBuilder mladList = new StringBuilder();
		boolean isSep = false;

		for(int i = 0 ; i < eKK0361A010HashListAll.size() ; i++)
		{
			HashMap<String, Object> kk0361Map = eKK0361A010HashListAll.get(i);

			// メールアドレスが存在するかチェックする。
			String tmpMlad = (String) kk0361Map.get(EKK0361A010CBSMsg1List.MLAD);

			if (! JKKBpCommon.isNull(tmpMlad))
			{
				// スーパータイプの結果から移送したステータスを取得
				String tmpOpSvcKeiStat = (String)kk0361Map.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);

				// 解約済、キャンセル済は処理対象外
				if (isTrgtBySvcKeiStat(tmpOpSvcKeiStat))
				{
					mladList.append((isSep ? "," : ""));
					mladList.append(tmpMlad);
					isSep = true;
				}
			}
		}

		// ST2-2012-0001657 2012/09/10 ADD START
		// 対象メールアドレスが1件も存在しない場合はオプトインメール受信設定を処理しない
		if (mladList.length() == 0 || mladList.toString() == null)
		{
			// 空の場合はこのタイミングでリターン
			return statusCode;
		}
		// ST2-2012-0001657 2012/09/10 ADD END

		// オプトインメール受信設定情報取得処理呼び出し
		eCK0141B003HashList = callECK0141B005SC(param, handle, mladList.toString(),  kk0081CurrMap);

		// オプトインメール受信設定情報をworkに格納
		workField.put(OPTINM_RCV_SET, eCK0141B003HashList);

		//お客様一意照会を行い、結果をworkに格納
		HashMap<String, Object> eck0011a010ListMap = callECK0011A010SC(param, handle, kk0081CurrMap);
		workField.put(CUST_RECORD, eck0011a010ListMap);

		return statusCode;
	}

	// LT-2013-0000622 工事連携契約キャンセル処理で高負荷によるシステムエラーが発生 2013/07/24 START
//	/**
//	 * 電話帳申込情報取得処理
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param trgt_data アプリ固有の入力パラメータ
//	 * @param workField 結果取得領域
//	 * @return 各サービスのリターンコード
//	 * @throws Throwable 例外時にスローされます。
//	 */	
//	private int getDnwachomskData(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> trgt_data,
//			HashMap<String, Object> workField
//	) throws Throwable
//	{
//		//ステータスコード
//		int statusCode = STAT_NORMAL;
//
//		// 電話帳申込一覧照会結果
//		ArrayList<HashMap<String, Object>> eTU0081B010HashList    = new ArrayList<HashMap<String, Object>>();
//		// 電話帳申込一意照会結果
//		HashMap<String, Object> eTU0091A010Hash                   = new HashMap<String, Object>();
//		// 電話帳申込一意照会結果（全て）
//		ArrayList<HashMap<String, Object>> eTU0091A010HashListAll = new ArrayList<HashMap<String, Object>>();
//
//		// 電話帳申込設定情報一覧照会処理呼び出し
//		callETU0081B010SC(param, handle, trgt_data, eTU0081B010HashList);
//
//		for(int i = 0 ; i < eTU0081B010HashList.size() ; i++)
//		{
//			// 電話帳申込設定情報一意照会
//			eTU0091A010Hash =  new HashMap<String, Object>();
//			callETU0091A010SC(param, handle,  eTU0081B010HashList.get(i), eTU0091A010Hash);
//
//			eTU0091A010HashListAll.add(eTU0091A010Hash);
//		}
//
//		// 電話帳申込設定情報一意照会結果（すべて）を格納
//		workField.put(DNWACHOMSK, eTU0091A010HashListAll);
//
//		return statusCode;
//	}
	// LT-2013-0000622 工事連携契約キャンセル処理で高負荷によるシステムエラーが発生 2013/07/24 END

	/**
	 * 請求オプションサービス契約情報取得処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int getSeiOpSvcKeiData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;		

		// 請求オプションサービス一覧照会結果
		ArrayList<HashMap<String, Object>> EKK0441B001HashList = new ArrayList<HashMap<String, Object>>();
		// 請求オプションサービス一意照会結果
		HashMap<String, Object> EKK0441A010Hash                = new HashMap<String, Object>();
		// 請求オプションサービス一意照会結果（すべて）
		ArrayList<HashMap<String, Object>> eKK0441A010HashList = new ArrayList<HashMap<String, Object>>();

		// 請求オプションサービス契約一覧照会
		callEKK0441B001SC(param, handle, trgt_data, EKK0441B001HashList);

		for(int i = 0 ; i < EKK0441B001HashList.size() ; i++)
		{
			// 請求オプションサービス契約一意照会
			EKK0441A010Hash = new HashMap<String, Object>();
			callEKK0441A010SC(param, handle, EKK0441B001HashList.get(i), EKK0441A010Hash);

			eKK0441A010HashList.add(EKK0441A010Hash);
		}

		// 請求オプションサービス一意照会結果（すべて）を格納
		workField.put(SEIOPSVC_KEI, eKK0441A010HashList);

		return statusCode;
	}

	/**
	 * サービス契約回線内訳情報取得処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int getSvkeiKaisenUwData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;

		// サービス契約回線内訳一覧照会結果
		ArrayList<HashMap<String, Object>> eKK0251B001HashList = new ArrayList<HashMap<String, Object>>();
		// サービス契約回線内訳一意照会結果
		HashMap<String, Object> 	eKK0251A010Hash            = new HashMap<String, Object>();
		// サービス契約回線内訳一意照会結果（すべて）
		ArrayList<HashMap<String, Object>> eKK0251A010HashList = new ArrayList<HashMap<String, Object>>();

		// サービス契約回線内訳一覧照会
		callEKK0251B001SC(param, handle, trgt_data, eKK0251B001HashList);

		for(int i = 0 ; i < eKK0251B001HashList.size() ; i++)
		{
			// サービス契約回線内訳一意照会
			eKK0251A010Hash = new HashMap<String, Object>();
			callEKK0251A010SC(param, handle, eKK0251B001HashList.get(i), eKK0251A010Hash);

			eKK0251A010HashList.add(eKK0251A010Hash);
		}

		// サービス契約回線内訳一意照会結果（すべて）を格納
		workField.put(SVKEI_KAISEN_UW, eKK0251A010HashList);

		return statusCode;
	}


	/**
	 * 機器提供サービス契約情報取得処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int getKktkSvcKeiData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		HashMap<String, Object> eKK0081A010Hash = null;
		String prcGrpCd = null;
		String pcrsCd   = null;
		String svcKeiNo = null;

		// ステータスコード
		int statusCode = STAT_NORMAL;	

		// サービス契約一意照会のマップ取得
		eKK0081A010Hash = (HashMap<String, Object>)workField.get(SVC_KEI);

		// サービス契約番号の取得
		svcKeiNo = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		// 料金グループコードの取得
		prcGrpCd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		// 料金コースコードの取得
		pcrsCd   = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PCRS_CD);

		// 機器提供サービス契約一覧照会結果(サービス契約番号)
		ArrayList<HashMap<String, Object>> eKK0341B011HashList       = new ArrayList<HashMap<String, Object>>();
		// 機器提供サービス契約一意照会結果
		HashMap<String, Object> 	eKK0341A010Hash                  = new HashMap<String, Object>();
		// 機器提供サービス契約一意照会結果（すべて）
		ArrayList<HashMap<String, Object>> eKK0341A010HashList       = new ArrayList<HashMap<String, Object>>();
		// 20120603 ST2-2012-0001014 START
		// 工事案件CCへの引数となる機器提供サービス契約一意照会結果
		ArrayList<HashMap<String, Object>> eKK0341A010HashListKojiak = new ArrayList<HashMap<String, Object>>();
		// 20120603 ST2-2012-0001014 END

		// 機器提供サービス契約一覧照会結果(サービス契約番号)
		callEKK0341B011SC(param, handle, trgt_data, eKK0341B011HashList);

		for(int i = 0 ; i < eKK0341B011HashList.size() ; i++)
		{
			// 機器提供サービス契約一意照会
			eKK0341A010Hash =  new HashMap<String, Object>();
			callEKK0341A010SC(param, handle, SVC_KEI, eKK0341B011HashList.get(i), eKK0341A010Hash);

			eKK0341A010HashList.add(eKK0341A010Hash);
		}

		// 回線内訳に関連する機器提供サービス契約を検索から、他サービス契約で利用していないものを抽出
		ArrayList<HashMap<String, Object>> eKK0251A010HashList = null;
		eKK0251A010HashList = (ArrayList<HashMap<String, Object>>)workField.get(SVKEI_KAISEN_UW);

		// ST2-2012-0000889 2012/05/13 ADD START
		List<String> exSvkeiKaisenUw = new ArrayList<String>();
		workField.put(WORK_FIELD_EX_SVKEI_KAISEN_UW, exSvkeiKaisenUw);
		// ST2-2012-0000889 2012/05/13 ADD END

		// 取得したサービス契約回線内訳分だけループ
		for(int i = 0 ; i < eKK0251A010HashList.size() ; i ++)
		{
			HashMap<String, Object> eKK0251A010HashListElement = null;
			ArrayList<HashMap<String, Object>> eKK0081B007ResultList = null;
			ArrayList<HashMap<String, Object>> eKK0341B504ResultList;
			eKK0341B504ResultList = new ArrayList<HashMap<String,Object>>();

			// １要素取得
			eKK0251A010HashListElement = eKK0251A010HashList.get(i);

			// 回線内訳に関連する機器提供サービス契約の一覧を取得
			callEKK0341B504SC(
					param,
					handle,
					(String)eKK0251A010HashListElement.get(EKK0251A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO),
					eKK0341B504ResultList
			);

			// EKK0081B007_回線利用中サービス契約一覧照会から結果を取得
			eKK0081B007ResultList = new ArrayList<HashMap<String,Object>>();
			callEKK0081B007SC(
					param,
					handle,
					(String)eKK0251A010HashListElement.get(EKK0251A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO), 
					eKK0081B007ResultList);

			// ST2-2012-0000889 2012/05/13 ADD START
			// 回線利用中サービス契約一覧照会の結果が２件以上ある場合、他に利用中のサービス契約がある
			if (eKK0081B007ResultList != null && eKK0081B007ResultList.size() > 1)
			{
				exSvkeiKaisenUw.add((String)eKK0251A010HashListElement.get(EKK0251A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
			}
			// ST2-2012-0000889 2012/05/13 ADD END

			// ST2-2012-0000421 2012/03/30 MOD START
			//「元」サービスがテレビか？
			if (
					PRC_GRP_CD_TV_KCAT.equals(prcGrpCd)
					|| PRC_GRP_CD_TV_SSS.equals(prcGrpCd)
					|| PRC_GRP_CD_TV_KCN.equals(prcGrpCd)
			)
			{
				//--テレビ
				// テレビの場合、他サービス契約と機材が被らないため無条件で
				// 回線内訳に関連する機器(V-ONU)のキャンセルを実施
				ArrayList<HashMap<String, Object>> vonuArray = null;

				// 2012/12/15 IT1-2012-0002329 MOD START
				// 機器提供のリストを取得
				// OM-2014-0003440 2014/10/27 mod start
				//vonuArray = eKK0341B504ResultList;
				vonuArray = new ArrayList<HashMap<String, Object>>();
				// V-ONUのみ取り出す（VDSLマンションの場合モデムが入ってしまうので）
				for(int k=0; k<eKK0341B504ResultList.size(); k++){
					String kktkSvcCd = (String)(eKK0341B504ResultList.get(k).get(EKK0341B504CBSMsg1List.KKTK_SVC_CD));
					if(KKTK_SVC_CD_VONU.equals(kktkSvcCd)){
						vonuArray.add(eKK0341B504ResultList.get(k));
					}
				}
				// OM-2014-0003440 2014/10/27 mod end
				// 2012/12/15 IT1-2012-0002329 MOD END

				// 取得したVONUの機器提供を一意照会し、リストに設定
				for(int j = 0 ; j < vonuArray.size() ; j++)
				{
					HashMap<String, Object> eKK0341A010Result = null;
					HashMap<String, Object> onuArrayElement = null;

					// １件分の結果を取得
					onuArrayElement = vonuArray.get(j);

					// 対象の機器提供サービス契約を一意紹介
					eKK0341A010Result = new HashMap<String, Object>();
					callEKK0341A010SC(
							param,
							handle,
							SVC_KEI,
							(String)onuArrayElement.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO),
							eKK0341A010Result
					);

					// 機器提供のリストに追加
					eKK0341A010HashList.add(eKK0341A010Result);
				}
			}
			else
			{
				ArrayList<HashMap<String, Object>> enableServices = null; 

				//--テレビ以外
				// ネットか？
				for(int j = 0 ; j < PCRS_NET_CDS.length ; j++)
				{
					if(pcrsCd.equals(PCRS_NET_CDS[j]))
					{
						// 電話の有効なサービスを取得
						enableServices = getEnableService(
								pcrsCd,
								svcKeiNo,
								PCRS_TEL_CDS,
								eKK0081B007ResultList
						);
						break;
					}
				}

				// 電話か？
				for(int j = 0 ; j < PCRS_TEL_CDS.length ; j++)
				{
					if(pcrsCd.equals(PCRS_TEL_CDS[j]))
					{
						// ネットの有効なサービスを取得
						enableServices = getEnableService(
								pcrsCd,
								svcKeiNo,
								PCRS_NET_CDS,
								eKK0081B007ResultList
						);
						break;
					}
				}

				ArrayList<HashMap<String, Object>> onuArray = null;

				// 2012/12/15 IT1-2012-0002329 MOD START
				// 機器提供のリストを取得
				// OM-2014-0003440 2014/10/27 mod start
				//onuArray = eKK0341B504ResultList;
				onuArray = new ArrayList<HashMap<String, Object>>();
				// V-ONU以外
				for(int k=0; k<eKK0341B504ResultList.size(); k++){
					String kktkSvcCd = (String)(eKK0341B504ResultList.get(k).get(EKK0341B504CBSMsg1List.KKTK_SVC_CD));
					if(!KKTK_SVC_CD_VONU.equals(kktkSvcCd)){
						onuArray.add(eKK0341B504ResultList.get(k));
					}
				}
				// OM-2014-0003440 2014/10/27 mod end
				// 2012/12/15 IT1-2012-0002329 MOD END

				// 取得したONUの機器提供を一意照会し、リストに設定
				for(int j = 0 ; j < onuArray.size() ; j++)
				{
					HashMap<String, Object> eKK0341A010Result = null;
					HashMap<String, Object> onuArrayElement = null;

					// １件分の結果を取得
					onuArrayElement = onuArray.get(j);

					// 20140127 IT2-2014-0000087 既に解約・キャンセルされている機器は処理対象外とする ADD START
					String kktkSvcKeiStat = (String)onuArrayElement.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_STAT);
					if (STAT_DSL_ZUMI.equals(kktkSvcKeiStat) || STAT_CNCL_ZUMI.equals(kktkSvcKeiStat))
					{
						continue;
					}
					// 20140127 IT2-2014-0000087 既に解約・キャンセルされている機器は処理対象外とする ADD END
					
					// 対象の機器提供サービス契約を一意紹介
					eKK0341A010Result = new HashMap<String, Object>();
					callEKK0341A010SC(
							param,
							handle,
							SVC_KEI,
							(String)onuArrayElement.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO),
							eKK0341A010Result
					);
					
					// ANK-1578-00-00 2013/12/12 MOD START
					String kktkSvcCd = (String)onuArrayElement.get(EKK0341B504CBSMsg1List.KKTK_SVC_CD);
					
					// 有効なサービスが自分のサービス以外で存在しない場合はONUのキャンセル
					if(enableServices != null && (enableServices.size() == 0))
					{
						// 機器提供のリストに追加
						eKK0341A010HashList.add(eKK0341A010Result);
					}
					// 有効なサービスが自分以外に存在する場合、多機能ルータ又はＨＧＷ以外（ONU）の場合は工事案件CCに
					// 多機能ルータ又はＨＧＷの場合は多機能ルータ独自ルートで処理（機器オプション更新CC）するため、キャンセル対象になる
					else
					{
						// ANK-4315-00-00 MOD START
//						if (KKTK_SVC_CD_TAKINO.equals(kktkSvcCd))
						if (KKTK_SVC_CD_TAKINO.equals(kktkSvcCd) || KKTK_SVC_CD_HGW.equals(kktkSvcCd))
						// ANK-4315-00-00 MOD END
						{
							// 機器提供のリストに追加
							eKK0341A010HashList.add(eKK0341A010Result);
						} 
						else
						{
							// 有効なサービスが自分のサービス以外で存在する場合、ONU情報を工事案件CCに引き渡す
							eKK0341A010HashListKojiak.add(eKK0341A010Result);
						}
					}
					// ANK-1578-00-00 2013/12/12 MOD END
				}

				// ST2-2012-0000889 2012/05/13 ADD START
				// 利用中の他サービスをWORKに保持
				workField.put(WORK_FIELD_ENABLE_SERVICES, enableServices);
				// ST2-2012-0000889 2012/05/13 ADD END
			}
		}

		// 機器提供サービス契約一意照会結果（すべて）を格納
		workField.put(KKTK_SVC_KEI,        eKK0341A010HashList );
		// 20120603 ST2-2012-0001014 START
		workField.put(KKTK_SVC_KEI_KOJIAK, eKK0341A010HashListKojiak );
		// 20120603 ST2-2012-0001014 END

		return statusCode;
	}

	/**
	 * 回線利用中サービス契約一覧照会の結果から、
	 * sourceSvcKeiNo以外でtaretPrcsCdsに該当するサービスだけを切り出す
	 * @param sourcePcrsCd
	 * @param sourceSvcKeiNo
	 * @param targetPrcsCds
	 * @param eKK0081B007ResultList
	 * @return
	 */
	private ArrayList<HashMap<String, Object>> getEnableService(
			String sourcePcrsCd,
			String sourceSvcKeiNo,
			String[] targetPrcsCds,
			ArrayList<HashMap<String, Object>> eKK0081B007ResultList
	)
	{
		ArrayList<HashMap<String, Object>> retList = new ArrayList<HashMap<String,Object>>();
		HashMap<String, Object> eKK0081B007ResultListElement = null;

		// 回線利用中サービス契約一覧照会の結果分だけループ
		for(int i = 0 ; i < eKK0081B007ResultList.size() ; i++)
		{
			String svcKeiNo;
			String pcrsCd;

			// １要素取得
			eKK0081B007ResultListElement = eKK0081B007ResultList.get(i);

			// サービス契約番号を取得
			svcKeiNo = (String)eKK0081B007ResultListElement.get(EKK0081B007CBSMsg1List.SVC_KEI_NO);
			// 料金コースコードの取得
			pcrsCd   = (String)eKK0081B007ResultListElement.get(EKK0081B007CBSMsg1List.PCRS_CD);

			// sourceSvcKeiNo以外のサービス契約番号が対象
			if(!sourceSvcKeiNo.equals(svcKeiNo))
			{
				// targetPrcsCdsの該当の料金コースコードかを調べる
				for(int j = 0 ; j < targetPrcsCds.length ; j++)
				{
					if(pcrsCd.equals(targetPrcsCds[j]))
					{
						//対象を格納
						retList.add(eKK0081B007ResultListElement);
						break;
					}
				}
			}
		}

		return retList;
	}


	// 2012.3.26 ST2-2012-0000467_CRUD554_555 Start
	/**
	 * 申込明細情報取得処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int getMskmDtlData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> workField
	) throws Throwable
	{
		HashMap<String, Object> eKK0081A010Hash = null;
		String mskmDtlNo = null;

		// ステータスコード
		int statusCode = STAT_NORMAL;	

		// IN項目からの申込明細番号を取得
		eKK0081A010Hash = (HashMap<String, Object>)workField.get(SVC_KEI);
		mskmDtlNo = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.MSKM_DTL_NO);

		// 申込明細一意照会取得情報
		HashMap<String, Object>eKK0021A010Hash = new HashMap<String,Object>();
		callEKK0021A010SC(param, handle, mskmDtlNo, eKK0021A010Hash);

		// 申込明細一意照会結果を格納
		workField.put(MSKM_DTL, eKK0021A010Hash);

		return statusCode;
	}

	/**
	 * サービス契約_工事案件情報取得処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int getSvcKeiKihonKojiakData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> workField
	) throws Throwable
	{
		//ステータスコード
		int statusCode = STAT_NORMAL;	

		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( SVKEI_KAISEN_UW );
		ArrayList<HashMap<String, Object>> eKU0081B020HashList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> eKK0081A010Hash = null;

		String svcKeiNo = null;
		String tmpSvcKeiKaisenUcwkNo = null;

		// サービス契約番号を取得
		eKK0081A010Hash = (HashMap<String, Object>)workField.get(SVC_KEI);
		svcKeiNo = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);

		for(int i = 0 ; i < inHashlist.size() ; i++)
		{
			// サービス契約回線内訳番号
			tmpSvcKeiKaisenUcwkNo = (String)inHashlist.get(i).get(EKK0251A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);

			// サービス契約_工事案件一覧照会取得情報
			HashMap<String, Object> eKU0081B020Hash = new HashMap<String,Object>();
			callEKU0081B020SC(param, handle, svcKeiNo, tmpSvcKeiKaisenUcwkNo, eKU0081B020Hash);

			eKU0081B020HashList.add(eKU0081B020Hash);
		}

		// サービス契約_工事案件結果を格納
		workField.put(SVCKEI_KIHON_KOJIAK, eKU0081B020HashList);

		return statusCode;
	}
	// 2012-06-23 ADD_START

	/**
	 * サービス契約_工事案件情報取得処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int getSvcKeiKojiakData(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> workField
	) throws Throwable
	{
		HashMap<String, Object> eKU0081A010Hash = null;
		String svcKeiNo = null;

		// ステータスコード
		int statusCode = STAT_NORMAL;

		// サービス契約番号を取得
		eKU0081A010Hash = (HashMap<String, Object>)workField.get(SVC_KEI);
		svcKeiNo = (String)eKU0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);

		// サービス契約_工事案件一覧照会取得情報
//↓↓↓2013-07-13変更　LT-2013-0000380↓↓↓
//		HashMap<String, Object>eKU0081B010Hash = new HashMap<String,Object>();
		//複数件の取得を可能とするようリスト化する
		ArrayList<HashMap<String, Object>> eKU0081B010Hash = new ArrayList<HashMap<String,Object>>();
//↑↑↑2013-07-13変更　LT-2013-0000380↑↑↑
		callEKU0081B010SC(param, handle, svcKeiNo, eKU0081B010Hash);

		// サービス契約_工事案件結果を格納
		workField.put(SVCKEI_KOJIAK, eKU0081B010Hash);

		return statusCode;
	}
	// 2012-06-23 ADD_END


	/**
	 * 申込登録処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data 結果取得領域
	 * @param workField 
	 * @param eKK0081A010Hash サービス契約一意照会結果
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int setMskmAdd(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String,Object> workField,
			HashMap<String, Object> eKK0081A010Hash
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;
		String mskmDtlNo = null;

		// work領域からサービス契約一意照会の結果を取得
		HashMap<String, Object> inHash = (HashMap<String, Object>) workField.get( SVC_KEI );

		// SEP-0016-00-00 照査前の契約キャンセル・回復時の更新仕様について ADD START
		// サービス契約ステータスを取得
		String svcKeiStat = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
		// サービス契約番号を取得
		String svcKeiNo   = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);

		boolean isTrgtSvcStatUk;

		if(!STAT_UK_ZUMI.equals(svcKeiStat))
		{
			// 申込内容承認登録
			CAANMsg msgEKK0011D020 = callEKK0011D020SC(param, handle, inHash, trgt_data);

			// 申込明細照査・後続業務依頼
			CAANMsg msgEKK0021C060 = callEKK0021C060SC(param, handle, trgt_data, msgEKK0011D020);

			// 申込番号を保持
			workField.put(MSKM_NO , msgEKK0011D020.getString(EKK0011D020CBSMsg.MSKM_NO));

			// 申込明細番号を保持
			mskmDtlNo = msgEKK0021C060.getString(EKK0021C060CBSMsg.MSKM_DTL_NO);
			workField.put(MSKM_DTL_NO , mskmDtlNo);

			isTrgtSvcStatUk = false;
		}
		else
		{
			// 申込サービス契約一覧照会
			CAANMsg msgEKK0081B013 = callEKK0081B013SC(param, handle, svcKeiNo);
			CAANMsg[] eKK0081B013Msg1List = msgEKK0081B013.getCAANMsgList(EKK0081B013CBSMsg.EKK0081B013CBSMSG1LIST);

			// 申込番号を保持
			workField.put(MSKM_NO , eKK0081B013Msg1List[0].getString(EKK0081B013CBSMsg1List.MSKM_NO));

			// 申込明細番号を保持
			mskmDtlNo = eKK0081B013Msg1List[0].getString(EKK0081B013CBSMsg1List.MSKM_DLT_NO);
			workField.put(MSKM_DTL_NO , mskmDtlNo);

			isTrgtSvcStatUk = true;
		}

		cancelSvcKeiMapper.setIsTrgtSvcStatUk(isTrgtSvcStatUk);

		putMskmDtlNoToWorkField(workField, mskmDtlNo);
		// SEP-0016-00-00 ADD END

		return statusCode;
	}


	/**
	 * サービス契約キャンセル・解約処理呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param callPtnNo 呼び出しパターン番号
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int callCancelSrvKei(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;

		// 2012.3.15 IT1-2012-0000349 Start
		// work領域からサービス契約一意照会の結果を取得
		HashMap<String, Object> inHash = (HashMap<String, Object>) workField.get(SVC_KEI);
		String tmpSvcKeiStat = (String)inHash.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
		String tmpGeneAddDtm = "";

		// 結果領域の生成
		HashMap<String, Object> resultHash     =  new HashMap<String, Object>();
		HashMap<String, Object> resultHashFix  =  new HashMap<String, Object>();
		HashMap<String, Object> resultHashBiko =  new HashMap<String, Object>();

		if(
				STAT_UK_ZUMI.equals(tmpSvcKeiStat)
				|| STAT_SHOSA_ZUMI.equals(tmpSvcKeiStat)
		)
		{
			// サービス契約キャンセル呼び出し
			callEKK0081C160SC(param, handle, trgt_data, inHash, workField, resultHash);
			tmpGeneAddDtm = (String)resultHash.get(EKK0081C160CBSMsg.GENE_ADD_DTM);
		}
		else if(
				STAT_CNC_ZUMI.equals(tmpSvcKeiStat)
				|| STAT_SVCTK_CHU.equals(tmpSvcKeiStat)
				|| STAT_PAUSE_STP_CHU.equals(tmpSvcKeiStat)
				|| STAT_STP_CHU.equals(tmpSvcKeiStat)
		)
		{
			// サービス契約解約呼び出し
			callEKK0081C180SC(param, handle, trgt_data, inHash, workField, resultHash);

			// サービス契約解約確定呼び出し
			callEKK0081C260SC(param, handle, resultHash, resultHashFix);
			tmpGeneAddDtm = (String)resultHashFix.get(EKK0081C260CBSMsg.GENE_ADD_DTM);
			
			// ANK-4592-00-00 ADD START
			// スカパー鍵情報操作上りマッピング
			cancelSvcKeiMapper.editJKKSptvKeyInfOperate(param, trgt_data, inHash);

			// スカパー鍵情報操作CC呼出
			JKKSptvKeyInfOperateCC JKKSptvKeyInfOperateCC = new JKKSptvKeyInfOperateCC();
			JKKSptvKeyInfOperateCC.execute(handle,  param, CC_WORK_SPTVDSL_STP_PAUSE);
			// ANK-4592-00-00 ADD END
		}

		// ステータスがキャンセル済、解約済は何もしない。

		// 世代登録年月日を取得している場合のみ
		if (tmpGeneAddDtm != null && !"".equals(tmpGeneAddDtm))
		{
			// サービス契約業務連絡備考変更呼び出し
			callEKK0081C014SC(param, handle, trgt_data, inHash, resultHashBiko, tmpGeneAddDtm);
		}
		// 2012.3.15 IT1-2012-0000349 End

		return statusCode;
	}


	/**
	 * サービス契約内訳キャンセル・解約処理呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @param svcKeiUcwkDataList サービス契約内訳データリスト
	 * @param sysid SYSID, since 2012-04-24 指示書CC取込み対応
	 * @param svcSbtCd サービス種別
	 * @param prcGrpCd グループコード
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int callCancelSrvKeiUcwk(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField,
			ArrayList<HashMap<String, Object>> svcKeiUcwkDataList,
			String sysid,
			int svcSbtCd,
			String prcGrpCd
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;

		// work領域からサービス契約一意照会の結果を取得
		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( SVC_KEI_UCWK );

		//↓↓↓2012-04-24追加　巻@　指示書CC取込み対応↓↓↓
		String[] svcKeiUcwkNo = new String[inHashlist.size()];
		int pos = 0;
		//↑↑↑2012-04-24追加　巻@　指示書CC取込み対応↑↑↑

		for(int i = 0 ; i < inHashlist.size() ; i++)
		{
			// 結果領域の生成
			HashMap<String, Object> resultHash    =  new HashMap<String, Object>();
			HashMap<String, Object> resultHashFix =  new HashMap<String, Object>();

			// サービス契約内訳ステータス判定
			String tmpSvcKeiStat = (String)inHashlist.get(i).get((EKK0161A010CBSMsg1List.SVC_KEI_UCWK_STAT));

			boolean procd = false;			//2012-04-24

			if(
					(STAT_UK_ZUMI.equals(tmpSvcKeiStat))
					|| (STAT_SHOSA_ZUMI.equals(tmpSvcKeiStat))
			)
			{
				// サービス契約内訳キャンセル呼び出し
				callEKK0161C160SC(param, handle, trgt_data, workField, inHashlist.get(i), resultHash);	

				HashMap<String, Object> svcKeiUcwkData = new HashMap<String, Object>();
				svcKeiUcwkData.put("svc_kei_ucwk_no", resultHash.get(EKK0161C160CBSMsg.SVC_KEI_UCWK_NO));
				svcKeiUcwkData.put("gene_add_dtm",    resultHash.get(EKK0161C160CBSMsg.GENE_ADD_DTM));
				svcKeiUcwkDataList.add(svcKeiUcwkData);
				procd = true;				//2012-04-24
			}
			else if(
					(STAT_CNC_ZUMI.equals(tmpSvcKeiStat))
					|| (STAT_SVCTK_CHU.equals(tmpSvcKeiStat))
					|| (STAT_PAUSE_STP_CHU.equals(tmpSvcKeiStat))
					|| (STAT_STP_CHU.equals(tmpSvcKeiStat))
			)
			{
				// サービス契約内訳解約呼び出し
				callEKK0161C180SC(param, handle, trgt_data, inHashlist.get(i), resultHash,workField);	

				// サービス契約内訳解約確定呼び出し
				callEKK0161C190SC(param, handle, resultHash, resultHashFix);	

				HashMap<String, Object> svcKeiUcwkData = new HashMap<String, Object>();
				svcKeiUcwkData.put("svc_kei_ucwk_no", resultHashFix.get(EKK0161C190CBSMsg.SVC_KEI_UCWK_NO));
				svcKeiUcwkData.put("gene_add_dtm",    resultHashFix.get(EKK0161C190CBSMsg.GENE_ADD_DTM));
				svcKeiUcwkDataList.add(svcKeiUcwkData);
				procd = true;				//2012-04-24
			}

			// ステータスがキャンセル済、解約済は何もしない。

			//↓↓↓2012-04-24追加　巻@指示書CC取込み対応↓↓↓
			if (procd)
			{
				svcKeiUcwkNo[pos++] = (String)inHashlist.get(i).get((EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO));
			}
			//↑↑↑2012-04-24追加　巻@指示書CC取込み対応↑↑↑
		}

		//↓↓↓2012-04-24追加　巻@　指示書CC取込み対応↓↓↓
		// 連携データ区分 05 ：認証ＩＤの情報
		// 2012/09/07 ST1-2012-0000506 MOD START eoADSL(フレッツ)を追加
		if (svcSbtCd == SVC_SBT_CD_HNET || (svcSbtCd == SVC_SBT_CD_ADSL && prcGrpCd.equals(PRC_GRP_CD_FU)))
		{
			JKKBpCommon.putAxMRenkeiDataKbn(
					param,
					SJISHO_MAP,
					JKKAddSjishoConst.RENKEI_DATA_KBN_NINSHO_ID,
					JKKAddSjishoConst.TRN_KBN_DEL,
					svcKeiUcwkNo,
					sysid
			);
		}
		// 2012/09/07 ST1-2012-0000506 MOD END
		//↑↑↑2012-04-24追加　巻@　指示書CC取込み対応↑↑↑

		return statusCode;
	}


	/**
	 * オプションサービス契約キャンセル・解約処理呼び出し<br>
	 * <br>
	 * @param	param					リクエストパラメータ
	 * @param	handle					セッションハンドル
	 * @param	trgt_data				アプリ固有の入力パラメータ
	 * @param	workField				結果取得領域
	 * @param	sysid					SYSID, since 2012-04-24 指示書CC取込み対応
	 * @param	jdgHiChrgMapSvcKei		非課金判定部品結果＜サービス＞
	 * @return 						各サービスのリターンコード
	 * @throws	Throwable				例外時にスローされます。
	 */	
	private int callCancelOpSvcKei(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField,
			String sysid,
			HashMap<String, Object> jdgHiChrgMapSvcKei
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;	

		// work領域からオプションサービス契約一意照会の結果を取得
		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( OP_SVC_KEI );

		//↓↓↓2012-04-24追加　巻@　指示書CC取込み対応↓↓↓
		String[] opSvcKeiNoB001 = new String[inHashlist.size()];
		int posB001 = 0;
		String[] opSvcKeiNoB002 = new String[inHashlist.size()];
		int posB002 = 0;
		//↑↑↑2012-04-24追加　巻@　指示書CC取込み対応↑↑↑

		for(int i = 0 ; i < inHashlist.size() ; i++)
		{
			// 結果領域の生成
			HashMap<String, Object> resultHash    =  new HashMap<String, Object>();
			HashMap<String, Object> resultHashFix =  new HashMap<String, Object>();

			boolean procd = false;			//2012-04-24

			// オプションサービス契約ステータス判定
			String tmpSvcKeiStat = (String)inHashlist.get(i).get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);

			if(
					STAT_UK_ZUMI.equals(tmpSvcKeiStat)
					|| STAT_SHOSA_ZUMI.equals(tmpSvcKeiStat)
			)
			{
				// ******************************************************* //
				// オプションサービス契約キャンセル呼び出し                //
				// ******************************************************* //
				callEKK0351C220SC(param, handle,  trgt_data, workField, inHashlist.get(i),resultHash);	
				procd = true;				//2012-04-24
			}
			else if(
					STAT_CNC_ZUMI.equals(tmpSvcKeiStat)
					|| STAT_SVCTK_CHU.equals(tmpSvcKeiStat)
					|| STAT_PAUSE_STP_CHU.equals(tmpSvcKeiStat)
					|| STAT_STP_CHU.equals(tmpSvcKeiStat)
			) {
				// ▼▼▼▼▼ 2013/09/11 OM-2013-0001096 UPD START ▼▼▼▼▼
				// ******************************************************* //
				// 非課金判定部品実行処理＜オプション＞                    //
				// ******************************************************* //
				// ※「解約時課金フラグ」について
				// 　　オプション、サブオプションごとに非課金判定部品を実行し、
				// 　　各々の解約時課金フラグを設定する。
				HashMap<String, Object> jdgHiChrgMapOpSvcKei =
					cancelSvcKeiMapper.runHiChrgJdgUtil(
							handle,
							param,
							trgt_data,
							workField,
							(HashMap<String, Object>)workField.get(SVC_KEI),
							null,
							inHashlist.get(i),
							null,
							DSL_SBT_FLG_OP_SVC_KEI_DSL
					);
				// ▲▲▲▲▲ 2013/09/11 OM-2013-0001096 UPD E N D ▲▲▲▲▲

				// ******************************************************* //
				// オプションサービス契約解約呼び出し                      //
				// ******************************************************* //
				callEKK0351C240SC(param, handle, trgt_data, inHashlist.get(i), resultHash, workField, jdgHiChrgMapSvcKei);	

				// ******************************************************* //
				// オプションサービス契約解約確定呼び出し                  //
				// ******************************************************* //
				callEKK0351C250SC(param, handle, resultHash, resultHashFix, jdgHiChrgMapSvcKei, jdgHiChrgMapOpSvcKei);
				procd = true;				//2012-04-24
			}

			// ステータスがキャンセル済、解約済は何もしない。

			//↓↓↓2012-04-24追加　巻@指示書CC取込み対応↓↓↓
			if (procd)
			{
				String op_svc_cd = (String)inHashlist.get(i).get(EKK0351A010CBSMsg1List.OP_SVC_CD);
				if ("B001".equals(op_svc_cd))			//Ｅメール？
				{
					opSvcKeiNoB001[posB001++] = (String)inHashlist.get(i).get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO);
				}
				else if ("B002".equals(op_svc_cd))		//Myホームページ？
				{
					opSvcKeiNoB002[posB002++] = (String)inHashlist.get(i).get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO);
				}
			}
			//↑↑↑2012-04-24追加　巻@指示書CC取込み対応↑↑↑
		}

		//↓↓↓2012-04-24追加　巻@　指示書CC取込み対応↓↓↓
		// 連携データ区分 03 ：POPIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_POPID,
				JKKAddSjishoConst.TRN_KBN_DEL,
				opSvcKeiNoB001,
				sysid
		);
		// 連携データ区分 04 ：WEBIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_WEBID,
				JKKAddSjishoConst.TRN_KBN_DEL,
				opSvcKeiNoB002,
				sysid
		);
		//↑↑↑2012-04-24追加　巻@　指示書CC取込み対応↑↑↑

		return statusCode;
	}


	/**
	 * サブオプションサービス契約キャンセル・解約処理呼び出し<br>
	 * <br>
	 * @param	param					リクエストパラメータ
	 * @param	handle					セッションハンドル
	 * @param	trgt_data				アプリ固有の入力パラメータ
	 * @param	workField				結果取得領域
	 * @param	jdgHiChrgMapSvcKei		非課金判定部品結果＜サービス＞
	 * @return							各サービスのリターンコード
	 * @throws	Throwable				例外時にスローされます。
	 */	
	private int callCancelSbopSvcKei(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField,
			HashMap<String, Object> jdgHiChrgMapSvcKei
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;	

		// work領域からサブオプションサービス契約一意照会の結果を取得
		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( SBOP_SVC_KEI );

		for(int i = 0 ; i < inHashlist.size() ; i++)
		{
			// 結果領域の生成
			HashMap<String, Object> resultHash    =  new HashMap<String, Object>();
			HashMap<String, Object> resultHashFix =  new HashMap<String, Object>();

			// サブオプションサービス契約ステータス判定
			String tmpSvcKeiStat = (String)inHashlist.get(i).get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);

			if(
					STAT_UK_ZUMI.equals(tmpSvcKeiStat)
					|| STAT_SHOSA_ZUMI.equals(tmpSvcKeiStat)
			) {
				// ******************************************************* //
				// サブオプションサービス契約キャンセル呼び出し            //
				// ******************************************************* //
				callEKK0401C150SC(param, handle, trgt_data, workField, inHashlist.get(i), resultHash);	
			}
			else if(
					STAT_CNC_ZUMI.equals(tmpSvcKeiStat)
					|| STAT_SVCTK_CHU.equals(tmpSvcKeiStat)
					|| STAT_PAUSE_STP_CHU.equals(tmpSvcKeiStat)
					|| STAT_STP_CHU.equals(tmpSvcKeiStat)
			) {
				// ▼▼▼▼▼ 2013/09/11 OM-2013-0001096 UPD START ▼▼▼▼▼
				// ******************************************************* //
				// 非課金判定部品実行処理＜サブオプション＞                //
				// ******************************************************* //
				// ※「解約時課金フラグ」について
				// 　　オプション、サブオプションごとに非課金判定部品を実行し、
				// 　　各々の解約時課金フラグを設定する。
				HashMap<String, Object> jdgHiChrgMapSbopSvcKei =
					cancelSvcKeiMapper.runHiChrgJdgUtil(
							handle,
							param,
							trgt_data,
							workField,
							(HashMap<String, Object>)workField.get(SVC_KEI),
							null,
							null,
							inHashlist.get(i),
							DSL_SBT_FLG_SBOP_SVC_KEI_DSL
					);
				// ▲▲▲▲▲ 2013/09/11 OM-2013-0001096 UPD E N D ▲▲▲▲▲

				// ******************************************************* //
				// サブオプションサービス契約解約呼び出し                  //
				// ******************************************************* //
				callEKK0401C170SC(param, handle, trgt_data, inHashlist.get(i), resultHash, workField, jdgHiChrgMapSvcKei);	

				// ******************************************************* //
				// サブオプションサービス契約解約確定呼び出し              //
				// ******************************************************* //
				callEKK0401C180SC(param, handle, resultHash, resultHashFix, jdgHiChrgMapSvcKei, jdgHiChrgMapSbopSvcKei);	

			}
			// ステータスがキャンセル済、解約済は何もしない。
		}

		return statusCode;
	}


//	/**
//	 * 請求オプションサービス契約キャンセル・解約処理呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param trgt_data アプリ固有の入力パラメータ
//	 * @param workField 結果取得領域
//	 * @return 各サービスのリターンコード
//	 * @throws Throwable 例外時にスローされます。
//	 */	
//	 private int callCancelSeiOpSvcKei(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> trgt_data,
//			HashMap<String, Object> workField
//	) throws Throwable
//	{
//		// TODO しなくていいのか？
//
//		// ステータスコード
//		int statusCode = STAT_NORMAL;
//
//		// work領域から請求オプションサービス契約一意照会の結果を取得
//		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( SEIOPSVC_KEI );
//
//		for(int i = 0 ; i < inHashlist.size() ; i++)
//		{
//			// 結果領域の生成
//			HashMap<String, Object> resultHash    =  new HashMap<String, Object>();
//			HashMap<String, Object> resultHashFix =  new HashMap<String, Object>();
//
//			// 請求オプションサービス契約ステータス判定
//			String tmpSvcKeiStat = (String)inHashlist.get(i).get(EKK0441A010CBSMsg1List.SEIOPSVC_KEI_STAT);
//
//			if(
//					STAT_UK_ZUMI.equals(tmpSvcKeiStat)
//					|| STAT_SHOSA_ZUMI.equals(tmpSvcKeiStat)
//			)
//			{
//				// 請求オプションサービス契約キャンセル呼び出し
//				callEKK0441C210SC(param, handle, trgt_data, workField, inHashlist.get(i), resultHash);	
//			}
//			else if(
//					(STAT_CNC_ZUMI.equals(tmpSvcKeiStat))
//					|| (STAT_SVCTK_CHU.equals(tmpSvcKeiStat))
//					|| (STAT_PAUSE_STP_CHU.equals(tmpSvcKeiStat))
//					|| (STAT_STP_CHU.equals(tmpSvcKeiStat))
//			)
//			{
//				// 請求オプションサービス契約解約呼び出し
//				callEKK0441C230SC(param, handle, trgt_data, inHashlist.get(i),resultHash);	
//
//				// 請求オプションサービス契約解約確定呼び出し
//				callEKK0441C240SC(param, handle, resultHash, resultHashFix);	
//			}
//
//			// ステータスがキャンセル済、解約済は何もしない。
//		}
//
//		return statusCode;
//	}

	/**
	 * サービス契約回線内訳キャンセル呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @param svc_kei_no サービス契約番号, since 2012-04-24 指示書CC取込み対応
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int callCancelSvKeiKaisenUw(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField,
			String svc_kei_no
	) throws Throwable
	{
		//ステータスコード
		int statusCode = STAT_NORMAL;

		// サービス契約一意照会結果
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>) workField.get(SVC_KEI);
		String tmpSvcKeiNo   = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		String tmpSvcKeiStat = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
		String tmpPcrsCd     = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PCRS_CD);

		// work領域からサービス契約回線内訳一意照会の結果を取得
		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( SVKEI_KAISEN_UW );
		// 結果領域の生成
		HashMap<String, Object> resultHash =  new HashMap<String, Object>();

		// ST2-2012-0000889 2012/05/13 ADD START
		// 作業領域より排他サービス契約回線内訳番号リストを取得
		List<String> exSvkeiKaisenUw = (List<String>)workField.get(WORK_FIELD_EX_SVKEI_KAISEN_UW);
		// ST2-2012-0000889 2012/05/13 ADD START

		for(int i = 0 ; i < inHashlist.size() ; i++)
		{
			// サービス契約回線内訳ステータス取得
			String tmpSvcKeiKaisenUcwkNo   = (String)inHashlist.get(i).get(EKK0251A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
			String tmpSvcKeiKaisenUcwkStat = (String)inHashlist.get(i).get(EKK0251A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_STAT);

			// ST2-2012-0000889 2012/05/13 ADD START
			// 他のサービス契約で使用されている回線はキャンセルしない
			if (exSvkeiKaisenUw.indexOf(tmpSvcKeiKaisenUcwkNo) > -1)
			{
				continue;
			}
			// ST2-2012-0000889 2012/05/13 ADD END

			// サービス契約回線内訳のステータスが受付済の場合
			if( tmpSvcKeiKaisenUcwkStat.equals(STAT_UK_ZUMI) )
			{
				// サービス契約回線内訳キャンセル呼び出し
				callEKK0251C070SC(param, handle, trgt_data, workField, inHashlist.get(i), resultHash);	
			}

			// 20120327 ST2-2012-0000473 START
			// 照査済、締結済かつフレッツ契約の場合
			if (
					(
							STAT_SHOSA_ZUMI.equals(tmpSvcKeiStat)
							|| STAT_CNC_ZUMI.equals(tmpSvcKeiStat)
					)
					&& PCRS_CD_ADSL_FURETTSU.equals(tmpPcrsCd)
			)
			{
				// サービス契約回線内訳のステータスが使用中の場合
				if (tmpSvcKeiKaisenUcwkStat.equals(STAT_SVCTK_CHU))
				{
					// サービス契約回線内訳使用停止
					callEKK0251C050SC(param, handle, tmpSvcKeiKaisenUcwkNo, tmpSvcKeiNo);
				}
			}
		}

		return statusCode;
	}

	// ▼▼▼▼▼ 2013/02/17 IT2-2013-0000047 UPD START ▼▼▼▼▼
	/**
	 * 機器提供サービス契約キャンセル・解約処理呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	trgt_data	アプリ固有の入力パラメータ
	 * @param	workField	結果取得領域
	 * @return				各サービスのリターンコード
	 * @throws	Throwable	例外時にスローされます。
	 */	
	private int callCancelKktkSvcKei(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;

		// work領域から機器提供サービス契約一意照会の結果を取得
		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( KKTK_SVC_KEI );

		// work領域からサービス契約一意照会の結果を取得
		HashMap<String, Object> svcKeiMap = (HashMap<String, Object>) workField.get( SVC_KEI );
		String svcCd = (String)svcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
		
		// ANK-1578-00-00 
		// 処理対象サービス契約番号
		String tgSvckeiNo = (String)svcKeiMap.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		// ANK-1578-00-00

		for(int i = 0 ; i < inHashlist.size() ; i++)
		{
			// 20140507 ANK-2054-00-00 ADD START
			boolean isKktkSvcCancel = false;	// 機器提供サービス契約をキャンセルor解約を実行したらtrue
			// 20140507 ANK-2054-00-00 ADD END
			// 結果領域の生成
			HashMap<String, Object> resultHash    =  new HashMap<String, Object>();
			HashMap<String, Object> resultHashFix =  new HashMap<String, Object>();

			// 機器提供サービス契約ステータス判定
			String tmpSvcKeiStat = (String)inHashlist.get(i).get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
			// 宅内機器種別判定
			String tmpTaknkikiSbtCd = (String)inHashlist.get(i).get(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
			// ANK-1578-00-00
			String tgKKtkSvcKeiNo = (String)inHashlist.get(i).get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);
			// ANK-1578-00-00
			// ▼▼▼▼▼ 2013/02/17 IT2-2013-0000047 ADD START ▼▼▼▼▼
			if (SVC_CD_NET.equals(svcCd) || SVC_CD_TEL.equals(svcCd))
			{
				// ネット、または電話の場合
				if (JKKSvcConst.KKTK_SVC_CD_VONU.equals(tmpTaknkikiSbtCd))
				{
					// V-ONUは「キャンセル」「解約」しない
					continue;
				}
			}
			else if (SVC_CD_TV.equals(svcCd))
			{
				// テレビの場合
				// ANK-4315-00-00 MOD START
//				if (JKKSvcConst.KKTK_SVC_CD_ONU.equals(tmpTaknkikiSbtCd))
				if (JKKSvcConst.KKTK_SVC_CD_ONU.equals(tmpTaknkikiSbtCd) || JKKSvcConst.KKTK_SVC_CD_HGW.equals(tmpTaknkikiSbtCd))
				// ANK-4315-00-00 MOD END
				{
					// ONUは「キャンセル」「解約」しない
					continue;
				}
			}
			// ▲▲▲▲▲ 2013/02/17 IT2-2013-0000047 ADD E N D ▲▲▲▲▲
			// ANK-1578-00-00 2013/12/11 MOD START
			// 多機能ルータ又はＨＧＷの場合は独自ルート
			// ANK-4315-00-00 MOD START
//			if ("C024".equals(tmpTaknkikiSbtCd)) {
			if ("C024".equals(tmpTaknkikiSbtCd) || "C025".equals(tmpTaknkikiSbtCd)) {
			// ANK-4315-00-00 MOD END
				String workKKkopSvcUseKeiUpdDataKey = "KKkopSvcUseKeiUpdCC";
				createUserData(param, workKKkopSvcUseKeiUpdDataKey);
				JKKKkopSvcUseKeiUpdCC kkopSvcUseKeiUpdCC = new JKKKkopSvcUseKeiUpdCC();
				
				cancelSvcKeiMapper.editMapKKkopSvcUseKeiUpd(
						param,
						inHashlist.get(i),				// 異動区分
						workKKkopSvcUseKeiUpdDataKey,
						tgSvckeiNo,		// サービス契約番号取得可能
						workField,			// 申込明細番号
						tgKKtkSvcKeiNo,	// 対象機器提供サービス契約番号
						svcKeiUpdDtm,		// 最終更新年月日
						resultHash
				);
				// 機器オプションサービス利用機器契約更新CCメイン処理をコール
				kkopSvcUseKeiUpdCC.updateKkopSvcKeiTran(handle, param, workKKkopSvcUseKeiUpdDataKey);
				
				HashMap workOutMap = (HashMap)param.getData(workKKkopSvcUseKeiUpdDataKey);
				ArrayList<HashMap> workArray = (ArrayList<HashMap>)workOutMap.get("trgt_data_list");
				HashMap workKktkCoshjMap = workArray.get(0);
				// 機器オプションサービス契約の更新年月日を取得
				String kktk_up_dtm = (String)workKktkCoshjMap.get(kkopSvcUseKeiUpdCC.KEY_UPD_DTM);
				// 対となる機器の機器提供サービス契約のサービス契約番号を取得
				String svcKeiNoPair = (String)workKktkCoshjMap.get(kkopSvcUseKeiUpdCC.KEY_SVC_KEI_NO_PAIR);
				// 対となる機器の機器提供サービス契約のサービス契約番号を取得
				String updDtmPair = (String)workKktkCoshjMap.get(kkopSvcUseKeiUpdCC.KEY_UPD_DTM_PAIR);
				
				// CC更新後機器提供サービス契約の更新時間が空白でない場合はサービス契約系排他更新時間を更新
				if (kktk_up_dtm != null && !"".equals(kktk_up_dtm)) {
					cancelSvcKeiMapper.setSvcKeiUpdDtm(kktk_up_dtm);
				}
				// 20140127 IT2-2014-0000087 解約・キャンセルされれていない多機能ルーターを工事案件CCに連携する処理を追加 ADD START
				// 機器オプションサービス利用機器契約更新CC呼出後、多機能ルーターが解約・キャンセルされていない場合、
				// 工事案件CCに多機能ルーターをを引き渡す
				HashMap<String, Object> eKK0341A010Result =  new HashMap<String, Object>();
				callEKK0341A010SC(param, handle, SVC_KEI, tgKKtkSvcKeiNo, eKK0341A010Result);
				if (eKK0341A010Result != null)
				{
					String kktkSvcKeiStat = (String)eKK0341A010Result.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
					if (!STAT_DSL_ZUMI.equals(kktkSvcKeiStat)
							&& !STAT_CNCL_ZUMI.equals(kktkSvcKeiStat)
					)
					{
						ArrayList<HashMap<String, Object>> eKK0341A010HashListKojiak = (ArrayList<HashMap<String, Object>>)workField.get(KKTK_SVC_KEI_KOJIAK);
						eKK0341A010HashListKojiak.add(eKK0341A010Result);
					}
				}
				// OM-2019-0001446 2020/01/22 ADD START
				String kikiRntaiKeiKkopSvcDslCnslFlg = (String)workOutMap.get("kiki_rntai_kei_kkop_svc_dsl_cnsl_Flg");
				if (JKKStringUtil.isNullEmpty(kikiRntaiKeiKkopSvcDslCnslFlg))
				{
					kikiRntaiKeiKkopSvcDslCnslFlg = "0";
				}
				HashMap inMap = (HashMap)param.getData(KKSV019601CC);
				inMap.put("kiki_rntai_kei_kkop_svc_dsl_cnsl_Flg", kikiRntaiKeiKkopSvcDslCnslFlg);
				
				// OM-2019-0001446 2020/01/22 ADD END
				
				// 20140127 IT2-2014-0000087 解約・キャンセルされれていない多機能ルーターを工事案件CCに連携する処理を追加 ADD END
			} else {
//ANK-3732-00-00 ADD START
				// （入力）工事案件番号
				String kojiakNo = (String)trgt_data.get(JKKCancelSvcKeiCC.REQ_PARAM_KOJIAK_NO);
				// テレビサービス かつ サービス提供中 かつ （入力）工事案件番号が設定されている場合
				if(SVC_CD_TV.equals(svcCd) && tmpSvcKeiStat.equals(STAT_SVCTK_CHU) && !isNull(kojiakNo) && !"".equals(kojiakNo))
				{
					// 工事案件一意照会を実施
					CAANMsg eku0011a010Msg = callEKU0011A010SC(param, handle, kojiakNo);
					CAANMsg eku0011a010ListMsg = eku0011a010Msg.getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST)[0];
					String kojiUkOptntyIdoDiv = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV);
					// 工事受付契機異動区分が「00019（住所変更・登録）」の場合
					if(IDO_KBN_ADCHGADD.equals(kojiUkOptntyIdoDiv))
					{
						ArrayList<HashMap<String, Object>> resultKK0341B002List = new ArrayList<HashMap<String, Object>>();
						callEKK0341B002SC(param, handle, FUNC_CODE_12, tgSvckeiNo, tmpTaknkikiSbtCd, tgKKtkSvcKeiNo, sortKbn, resultKK0341B002List);
						// （予約）世代登録年月日時分秒
						String rsvGeneAddDtm = "";
						// （予約）料金コースコード
						String rsvPcrsCd = "";
						// （予約）機器変更番号
						String rsvKikiChgNo = "";
						// （予約）最終更新年月日時分秒
						String rsvLastUpdDtm = "";
						
						// 機器提供サービス契約一覧照会（サービス契約番号）の取得結果が存在する場合
						if(resultKK0341B002List != null && resultKK0341B002List.size() > 0)
						{
							// 機器提供サービス契約一覧照会（サービス契約番号）の結果を取得
							for(int j = 0 ; j < resultKK0341B002List.size() ; j++)
							{
								// 機器提供サービス契約ステータス
								String kktkSvcKeiStat = (String)resultKK0341B002List.get(j).get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT);
								// 機器提供サービス契約ステータスが契約変更中の場合
								if(JKKStrConst.CD00056_STAT_KEI_CHG_CHU.equals(kktkSvcKeiStat))
								{
									// （予約）世代登録年月日時分秒
									rsvGeneAddDtm = (String)resultKK0341B002List.get(j).get(EKK0341B002CBSMsg1List.GENE_ADD_DTM);
									// （予約）料金コースコード
									rsvPcrsCd = (String)resultKK0341B002List.get(j).get(EKK0341B002CBSMsg1List.PCRS_CD);
									// （予約）機器変更番号
									rsvKikiChgNo = (String)resultKK0341B002List.get(j).get(EKK0341B002CBSMsg1List.KIKI_CHG_NO);
									// （予約）最終更新年月日時分秒
									rsvLastUpdDtm = (String)resultKK0341B002List.get(j).get(EKK0341B002CBSMsg1List.LAST_UPD_DTM);
									break;
								}
							}
							// 料金コースコード
							String pcrsCd = (String)inHashlist.get(i).get(EKK0341A010CBSMsg1List.PCRS_CD);
							// 予約データが存在する場合
							if(!rsvGeneAddDtm.isEmpty() && !rsvPcrsCd.isEmpty() && !rsvKikiChgNo.isEmpty() && !rsvLastUpdDtm.isEmpty())
							{
								// JKKAdchgCancelHaisoCC_住所変更配送キャンセル部品
								// CC呼出用のパラメータ設定
								ArrayList<HashMap<String, String>> haisoCancelKikiList = new ArrayList<HashMap<String, String>>();
								HashMap<String, String> haisoCancelKiki = new HashMap<String, String>();
								// 機器提供サービス契約番号
								haisoCancelKiki.put("kktkSvcKeiNo", tgKKtkSvcKeiNo);
								// 機器変更番号
								haisoCancelKiki.put("kkChgNo", rsvKikiChgNo);
								// 機器変更番号
								haisoCancelKiki.put("kikiChgNo", rsvKikiChgNo);
								// サービス契約番号
								haisoCancelKiki.put("svcKeiNo", tgSvckeiNo);
								//マップをリストへ追加
								haisoCancelKikiList.add(haisoCancelKiki);
								HashMap<String, Object> haisoCancelParam = new HashMap<String, Object>();
								haisoCancelParam.put("haiso_cancel_kiki_list", haisoCancelKikiList);
								String fixedText = "JKKAdchgCancelHaisoCC";
								param.setData(fixedText, haisoCancelParam);
								// 配送取消CC呼出
								JKKAdchgCancelHaisoCC haisoCancelCc = new JKKAdchgCancelHaisoCC();
								haisoCancelCc.kikiHaisoCancel(handle, param, fixedText);

								// （予約）料金コースコードと（カレント）料金コースコードが同一の場合
								if(rsvPcrsCd.equals(pcrsCd))
								{
									// 機器提供サービス契約機器変更手続中止
									HashMap<String, Object> eKK0341C540Hash =  new HashMap<String, Object>();
									callEKK0341C540SC(param, handle, FUNC_CODE_ONE, tgKKtkSvcKeiNo, rsvGeneAddDtm, rsvLastUpdDtm, eKK0341C540Hash);
								}
								else
								{
									// 機器提供サービス契約料金コース変更中止
									HashMap<String, Object> eKK0341C170Hash =  new HashMap<String, Object>();
									callEKK0341C170SC(param, handle, FUNC_CODE_ONE, tgKKtkSvcKeiNo, rsvGeneAddDtm, rsvLastUpdDtm, eKK0341C170Hash);
								}
							}
						}
					}
				}
//ANK-3732-00-00 ADD END
				if( (tmpSvcKeiStat.equals(STAT_UK_ZUMI)) || (tmpSvcKeiStat.equals(STAT_SHOSA_ZUMI)) )
				{
					//機器提供サービス契約キャンセル呼び出し
					callEKK0341C330SC(param, handle, trgt_data, inHashlist.get(i),  workField, resultHash);	
					// 20140507 ANK-2054-00-00 ADD START
					isKktkSvcCancel = true;
					// 20140507 ANK-2054-00-00 ADD END
				}
				else if( (tmpSvcKeiStat.equals(STAT_CNC_ZUMI)) || (tmpSvcKeiStat.equals(STAT_SVCTK_CHU)) || (tmpSvcKeiStat.equals(STAT_PAUSE_STP_CHU)) || (tmpSvcKeiStat.equals(STAT_STP_CHU)) )
				{
					// ANK-1421-00-00 2013/02/07 ADD START
					// 機器提供サービス一意照会呼び出し
					callEKK0771A010SC(param, handle, inHashlist.get(i), resultHash);
					// ANK-1421-00-00 2013/02/07 ADD END
					// 機器提供サービス契約解約呼び出し
					callEKK0341C340SC(param, handle, trgt_data, inHashlist.get(i),  workField, resultHash);	
					// 機器提供サービス契約解約確定呼び出し
					callEKK0341C350SC(param, handle, resultHash, resultHashFix);	
					// 20140507 ANK-2054-00-00 ADD START
					isKktkSvcCancel = true;
					// 20140507 ANK-2054-00-00 ADD END
				}
				else if( (tmpSvcKeiStat.equals(STAT_CNCL_ZUMI)) || (tmpSvcKeiStat.equals(STAT_DSL_ZUMI)) )
				{
					// ▼▼▼▼▼OM-2014-0001860 2014/05/13 MOD START▼▼▼▼▼
					// 対象の機器のステータスがキャンセル済、解約済の場合はbreakではなく、continueにて対象レコードをスキップする
//					// ステータスがキャンセル済、解約済は何もしない。
//					break;
					continue;
					// ▲▲▲▲▲OM-2014-0001860 2014/05/13 MOD END  ▲▲▲▲▲
				}
			}
			// ANK-1578-00-00 2013/12/11 MOD END
			
			// 20140507 ANK-2054-00-00 ADD START
			if (isKktkSvcCancel)
			{
				// 機器オプションサービス契約キャンセル
				callCancelKktkSvcKei(param, handle, trgt_data, workField, tgKKtkSvcKeiNo);
			}
			// 20140507 ANK-2054-00-00 ADD END
			
			// 2012/09/20 ANK-0546-00-00 ADD START
			if (
					JKKSvcConst.KKTK_SVC_CD_TABLET.equals(tmpTaknkikiSbtCd)
					|| JKKSvcConst.KKTK_SVC_CD_CRADLE.equals(tmpTaknkikiSbtCd)
			)
			{
				// 機器提供サービスコードが「タブレット」または「タブレット用クレードル」の場合、割賦契約キャンセル処理を実行
				statusCode = kappu_cancel(handle, param, inHashlist.get(i), resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
			// 2012/09/20 ANK-0546-00-00 ADD END
		}
		
		// ANK-2138-00-00 2014/08/07 add start
		String pcrsCd = (String)svcKeiMap.get(EKK0081A010CBSMsg1List.PCRS_CD);
		// ハイブリッドの場合   タブレット、クレードルの工事配送設定
		if (JKKSvcConst.PCRS_CD_3G_42M_HYBRID.equals(pcrsCd)) {
			updateTbltKei(
					handle,
					param,
					(String)svcKeiMap.get(EKK0081A010CBSMsg1List.SYSID),
					(String)trgt_data.get(JKKCancelSvcKeiCC.REQ_PARAM_IDO_DIV),
					tgSvckeiNo,
					pcrsCd);
		}
		// ANK-2138-00-00 2014/08/07 add end

		return statusCode;
	}
	// ▲▲▲▲▲ 2013/02/17 IT2-2013-0000047 UPD E N D ▲▲▲▲▲

	/**
	 * 指示書登録処理呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	@SuppressWarnings("unused")
	private int callAddSjisho(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> workField )
	throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;

		return statusCode;
	}


	/**
	 * オプトインメール受信設定取消処理呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 * @since 2012-08-17 IT1-2012-0000943対応（対策TAI-2012-0000087）
	 */
	private int callCancelOptInMail(
			IRequestParameterReadWrite param,
			SessionHandle handle, 
			HashMap<String, Object> workField )
	throws Throwable
	{
		//ステータスコード
		int statusCode = STAT_NORMAL;	

		// work領域からオプトインメール受信設定照会の結果を取得
		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( OPTINM_RCV_SET );

		// ST2-2012-0001657 2012/09/10 ADD START
		// 対象メールアドレスが1件も存在しない場合はオプトインメール受信設定を処理しない
		if (inHashlist == null)
		{
			// 空の場合はこのタイミングでリターン
			return statusCode;
		}
		// ST2-2012-0001657 2012/09/10 ADD END

		for(int i = 0 ; i < inHashlist.size() ; i++)
		{
			HashMap<String, Object> ck0141Map = inHashlist.get(i);

			// オプトインメールのステータスが有効のもののみを対象とする。
			String tmpStat = (String)ck0141Map.get(ECK0141B005CBSMsg1List.OPTINM_RCV_SETTE_STAT);
			if(tmpStat.equals(STAT_YK))
			{
				//オプトインメール受信設定取消サービスIF呼び出し
				callECK0141C030SC(param, handle, ck0141Map);
			}
		}

		return statusCode;
	}


	/**
	 * 電話帳申込中止処理呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int callCancelDnwachomsk(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> workField
	)
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;

		// work領域から電話帳申込照会の結果を取得
		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( DNWACHOMSK );

		for(int i = 0 ; i < inHashlist.size() ; i++)
		{
			// TODO 何もしてない
		}

		return statusCode;
	}

	/**
	 * エイジング使用終了(ネット系)処理呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workField 結果取得領域
	 * @param svcSbtCd 
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int callCloseAgingNet(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> workField, int svcSbtCd
	) throws Throwable
	{
		// ステータスコード
		int statusCode = STAT_NORMAL;	

		//↓↓↓2012-02-24追加↓↓↓IT障害1023対応
		// eo光ネット
		if (SVC_SBT_CD_HNET == svcSbtCd)
		{
			// work領域からサービス契約内訳＜eo光ネット＞照会結果を取得
			HashMap<String, Object> inHashSvkeiUwEohNet = (HashMap<String, Object>) workField.get( SVKEIUW_EOH_NET );

			// ISP認証IDのエイジング使用終了
			String isp_ninsho_id = (String) inHashSvkeiUwEohNet.get(EKK0171A010CBSMsg1List.ISP_NINSHO_ID);
			if (null != isp_ninsho_id && 0 < isp_ninsho_id.length())
			{
				isp_ninsho_id = JKKBpCommon.getAgingNinshoId(isp_ninsho_id);
				closeAging(param, handle, AGING_SBT_CD_ISP_ID, isp_ninsho_id);
			}
		}
		// eoADSL(フレッツ)
		else if (SVC_SBT_CD_ADSL == svcSbtCd)
		{
			// work領域からサービス契約内訳＜eoADSL＞照会結果を取得
			ArrayList<HashMap<String, Object>> inHashlistSvkeiUwEoADSL = (ArrayList<HashMap<String, Object>>) workField.get( SVKEIUW_EOADSL );
			for (int i = 0; null != inHashlistSvkeiUwEoADSL && i < inHashlistSvkeiUwEoADSL.size(); i++)
			{
				HashMap<String, Object> inHash = inHashlistSvkeiUwEoADSL.get(i);

				// ADSL認証IDのエイジング使用終了
				String adsl_ninsho_id = (String) inHash.get(EKK0221A010CBSMsg1List.ADSL_NINSHO_ID);
				if (null != adsl_ninsho_id && 0 < adsl_ninsho_id.length())
				{
					// IT1-2013-0001098 ADSL認証IDにVR識別が付与されていない 2013/04/30 START
					// ADSL認証IDはVR識別なしでエイジング管理する
					adsl_ninsho_id = adsl_ninsho_id.split("@")[0];
					// IT1-2013-0001098 ADSL認証IDにVR識別が付与されていない 2013/04/30 END
					closeAging(param, handle, AGING_SBT_CD_ADSL_ID, adsl_ninsho_id);
				}
			}
		}
		//↑↑↑2012-02-24追加↑↑↑

		// work領域からオプションサービス契約<ISP>照会結果を取得
		ArrayList<HashMap<String, Object>> inHashlistOp = (ArrayList<HashMap<String, Object>>) workField.get( OPSVKEI_ISP );
		// work領域からサブオプションサービス契約<ISP>照会結果を取得
		ArrayList<HashMap<String, Object>> inHashlistSbOp = (ArrayList<HashMap<String, Object>>) workField.get( SBOPSVKEI_ISP );


		for(int i = 0 ; i < inHashlistOp.size() ; i++)
		{
			// スーパータイプの結果から移送したステータスを取得
			String tmpOpSvcKeiStat = (String)inHashlistOp.get(i).get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			// 解約済、キャンセル済は処理対象外
			if (isTrgtBySvcKeiStat(tmpOpSvcKeiStat))
			{

				String tmpVoipTelNo    = "";
				String tmpKoshumoTelNo = "";
				String tmpIp           = "";
				String tmpUrlDomain    = "";
				String tmpUrlAccount   = "";
				String tmpWebId        = "";
				String tmpPopId        = "";
				String tmpMlad         = "";
				String tmpMllist       = "";

				// エイジング対象データの取得
				tmpVoipTelNo    = (String)inHashlistOp.get(i).get(EKK0361A010CBSMsg1List.VOIP_TELNO);
				tmpKoshumoTelNo = (String)inHashlistOp.get(i).get(EKK0361A010CBSMsg1List.KOSHUMO_TELNO);
				tmpMlad         = (String)inHashlistOp.get(i).get(EKK0361A010CBSMsg1List.MLAD);
				tmpPopId        = (String) inHashlistOp.get(i).get(EKK0361A010CBSMsg1List.POP_ID);
				tmpIp           = (String)inHashlistOp.get(i).get(EKK0361A010CBSMsg1List.KOTEI_IP_AD);
				tmpMllist       = (String)inHashlistOp.get(i).get(EKK0361A010CBSMsg1List.MLLIST_NM);
				tmpWebId        = (String)inHashlistOp.get(i).get(EKK0361A010CBSMsg1List.WEB_ID);
				tmpUrlAccount   = (String)inHashlistOp.get(i).get(EKK0361A010CBSMsg1List.URL_ACCOUNT);
				tmpUrlDomain    = (String)inHashlistOp.get(i).get(EKK0361A010CBSMsg1List.URL_DOMAIN);

				// VOIP電話番号
				if ((null != tmpVoipTelNo) && (!"".equals(tmpVoipTelNo)))
				{
					closeAging(param, handle, AGING_SBT_CD_TELNO, tmpVoipTelNo);
				}

				// 公衆網電話番号
				if ((null != tmpKoshumoTelNo) && (!"".equals(tmpKoshumoTelNo)))
				{
					closeAging(param, handle, AGING_SBT_CD_TELNO, tmpKoshumoTelNo);
				}
				// ST3-2013-0000919 2013/05/23 START
				// メールアドレス
				if ((null != tmpMlad) && (!"".equals(tmpMlad)))
				{
					closeAging(param, handle, AGING_SBT_CD_MLAD, tmpMlad);
					
					String oyaOpSvcKeiNo = (String)inHashlistOp.get(i).get(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO);
					
					for(int k = 0 ; k < inHashlistSbOp.size() ; k++)
					{
						// スーパータイプの結果から移送したステータスを取得
						String tmpSbOpSvcKeiStat = (String)inHashlistSbOp.get(k).get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);
						
						// 解約済、キャンセル済は処理対象外
						if (isTrgtBySvcKeiStat(tmpSbOpSvcKeiStat)) {
							
							// エイリアス
							String tmpAlias = (String)inHashlistSbOp.get(k).get(EKK0411A010CBSMsg1List.ALIAS);
							
							// エイリアスがNULLでなければ
							if ((null != tmpAlias) && (!"".equals(tmpAlias))){
								
								// エイリアスのオプションサービス契約番号取得
								String koOpSvcKeiNo = (String)inHashlistSbOp.get(k).get(EKK0411A010CBSMsg1List.OP_SVC_KEI_NO);
								
								if ((null != koOpSvcKeiNo) && (!"".equals(koOpSvcKeiNo))) {
									
									// このエイリアスはこの親のSBOPか。親OPの特定に
									if (koOpSvcKeiNo.equals(oyaOpSvcKeiNo)) {
										// ＠で抽出
										String[] tmpMladBunkatsu = tmpMlad.split("@");
										// エイリアスを結合
										tmpAlias = tmpAlias + "@" + tmpMladBunkatsu[tmpMladBunkatsu.length-1];
										// エイリアスの エイジング更新を行う。
										closeAging(param, handle, AGING_SBT_CD_MAILALIAS, tmpAlias);
									}
								}
							}
						}
					}
				}
				// ST3-2013-0000919 2013/05/23 END

				// PopID
				if ((null != tmpPopId) && (!"".equals(tmpPopId)))
				{
					closeAging(param, handle, AGING_SBT_CD_POPID, tmpPopId);
				}

				// 固定IPアドレス
				if ((null != tmpIp) && (!"".equals(tmpIp)))
				{
					closeAging(param, handle, AGING_SBT_CD_FIXIPAD, tmpIp);
				}

				// メーリングリスト
				if ((null != tmpMllist) && (!"".equals(tmpMllist)))
				{
					//↓↓↓2012-03-09 IT2-2012-0000328↓↓↓
					// 業務パラメータ管理一意照会サービスＩＦ呼び出し
					HashMap<String, Object> ezm0321A010Hash = new HashMap<String, Object>();
					callEZM0321A010SC(param, handle, WORK_PARAM_ID_MLLIST_NM_DOMAIN, ezm0321A010Hash);
					// メーリングリストドメインを取得
					String mlListDomain = (String)ezm0321A010Hash.get(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
					// エイジング対象使用終了処理を呼び出し
					closeAging(param, handle, AGING_SBT_CD_MLLIST, tmpMllist + "@" + mlListDomain);
					//↑↑↑2012-03-09 IT2-2012-0000328↑↑↑
				}

				// WebID
				if ((null != tmpWebId) && (!"".equals(tmpWebId)))
				{		
					closeAging(param, handle, AGING_SBT_CD_WEBID, tmpWebId);
				}

				// URLドメイン + // URLアカウント
				if (
						(null != tmpUrlAccount) && (!"".equals(tmpUrlAccount))
						&& (null != tmpUrlDomain) && (!"".equals(tmpUrlDomain))
				)
				{
					closeAging(param, handle, AGING_SBT_CD_URL, (tmpUrlDomain + tmpUrlAccount));
				}
			}
		}
		// ST3-2013-0000919 2013/05/23 START
//		for(int k = 0 ; k < inHashlistSbOp.size() ; k++)
//		{
//			// スーパータイプの結果から移送したステータスを取得
//			String tmpSbOpSvcKeiStat = (String)inHashlistSbOp.get(k).get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);
//
//			// 解約済、キャンセル済は処理対象外
//			if (isTrgtBySvcKeiStat(tmpSbOpSvcKeiStat)) {
//
//				// エイリアス
//				String tmpAlias = (String)inHashlistSbOp.get(k).get(EKK0411A010CBSMsg1List.ALIAS);
//				if ((null != tmpAlias) && (!"".equals(tmpAlias)))
//				{
//					closeAging(param, handle, AGING_SBT_CD_MAILALIAS, tmpAlias);
//				}
//			}
//		}
		// ST3-2013-0000919 2013/05/23 END

		return statusCode;
	}

	/**
	 * 電話用VLANオーダ受付処理呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int callVLANOrderUK(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> workField )
	throws Throwable
	{
		int statusCode = STAT_NORMAL;	
		String kojiakNo = null;

		// work領域からサービス契約一意照会の結果を取得
		HashMap<String, Object> inHash = (HashMap<String, Object>) workField.get( SVC_KEI );

		// 2012-06-23 EDIT_START
		// サービス契約_工事案件情報（基本工事）の結果を取得
		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( SVCKEI_KIHON_KOJIAK );

		// eo光電話					
		// 対象電話VLANオーダサービス契約番号の取得
		String telVlanTgSvcKeiNo = telVlanUmu(param,workField,handle);
		
		// 基本工事情報がない場合はVLANオーダ受付処理を行わない
		if (inHashlist != null)
		{
			for (int i =0; i < inHashlist.size(); i++)
			{
				kojiakNo = (String)inHashlist.get(i).get((EKU0081B020CBSMsg1List.KOJIAK_NO));

				// 工事案件番号が取得できた場合は処理を行う
				if ((kojiakNo != null && !"".equals(kojiakNo)) 
						// 対象電話VLANオーダサービス契約番号がNULLの場合電話VLANオーダが存在しないことを示すため、VLANオーダ受付処理を行わない
						&& (telVlanTgSvcKeiNo) != null && !"".equals(telVlanTgSvcKeiNo))
				{
					//結果領域の生成
					HashMap<String, Object> resultHash =  new HashMap<String, Object>();

					callESC0021D010SC(param, handle, inHash, resultHash, workField, kojiakNo,telVlanTgSvcKeiNo);
				}
			}
		}
		// 2012-06-23 EDIT_END

		return statusCode;

	}

	/**
	 * エイジング使用終了(電話)呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int callCloseAgingTel(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> workField
	) throws Throwable
	{
		//ステータスコード
		int statusCode = STAT_NORMAL;	

		//↓↓↓2012-02-24追加↓↓↓IT障害1023対応
		// work領域からサービス契約一意照会の結果を取得
		HashMap<String, Object> kk0081Map = (HashMap<String, Object>) workField.get( SVC_KEI );

		// 結果領域の生成
		HashMap<String, Object> resultHash =  new HashMap<String, Object>();

		callEKK0111A010SC(param, handle, kk0081Map, resultHash);

		// PPP認証IDのエイジング使用終了
		String ppp_ninsho_id = (String) resultHash.get(EKK0111A010CBSMsg1List.PPP_NINSHO_ID);
		if (null != ppp_ninsho_id && 0 < ppp_ninsho_id.length())
		{
			ppp_ninsho_id = JKKBpCommon.getAgingNinshoId(ppp_ninsho_id);
			closeAging(param, handle, AGING_SBT_CD_PPP_ID, ppp_ninsho_id);
		}
		//↑↑↑2012-02-24追加↑↑↑

		// work領域からサービス契約内訳＜eo光電話＞照会結果を取得
		ArrayList<HashMap<String, Object>> inHashlistSvkeiUwEohTel = (ArrayList<HashMap<String, Object>>) workField.get( SVKEIUW_EOH_TEL );
		// work領域からオプションサービス契約＜電話＞照会結果を取得
		ArrayList<HashMap<String, Object>> inHashlistOpSvKeiTel = (ArrayList<HashMap<String, Object>>) workField.get( OPSVKEI_TEL );


		for(int i = 0 ; i < inHashlistSvkeiUwEohTel.size() ; i++)
		{
			// スーパータイプの結果から移送したステータスを取得
			String tmpSvcKeiUcwkStat = (String)inHashlistSvkeiUwEohTel.get(i).get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
			
			// 案件対応 ANK-1670-00-00 2013/11/05 ADD START
			// サービス契約内訳＜eo光電話＞照会結果から番ポ有無を取得
			String tmpBmpUm = (String)inHashlistSvkeiUwEohTel.get(i).get(EKK0191A010CBSMsg1List.BMP_UM);
			// 案件対応 ANK-1670-00-00 2013/11/05 ADD END
			
			// 解約済、キャンセル済は処理対象外
			if (isTrgtBySvcKeiStat(tmpSvcKeiUcwkStat))
			{
				// 案件対応 ANK-1670-00-00 2013/11/05 MOD START
				// 番ポ番号の場合、電話番号のエイジングに対して振舞わない
				if (!"1".equals(tmpBmpUm)) {
					// 電話番号のエイジング使用終了
					String tmpTelNo = (String)inHashlistSvkeiUwEohTel.get(i).get(EKK0191A010CBSMsg1List.TELNO );
					if ((null != tmpTelNo) && (!"".equals(tmpTelNo)))
					{
						closeAging(param, handle, AGING_SBT_CD_TELNO, tmpTelNo);
					}
				}
				// 案件対応 ANK-1670-00-00 2013/11/05 MOD END

				// SIPユーザーIDのエイジング使用終了
				String sip_user_id = (String)inHashlistSvkeiUwEohTel.get(i).get(EKK0191A010CBSMsg1List.SIP_USER_ID);
				if ((null != sip_user_id) && (!"".equals(sip_user_id)))
				{
					closeAging(param, handle, AGING_SBT_CD_SIP_ID, sip_user_id);
				}
			}
		}


		for(int k = 0 ; k < inHashlistOpSvKeiTel.size() ; k++)
		{
			// スーパータイプの結果から移送したステータスを取得
			String tmpOpSvcKeiStat = (String)inHashlistOpSvKeiTel.get(k).get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
			// 解約済、キャンセル済は処理対象外
			if (isTrgtBySvcKeiStat(tmpOpSvcKeiStat))
			{
				// 050電話番号のエイジング使用終了
				String tmp050TelNo = (String)inHashlistOpSvKeiTel.get(k).get(EKK0371A010CBSMsg1List.N_050_OP_TELNO);
				if ((null != tmp050TelNo) && (!"".equals(tmp050TelNo)))
				{
					closeAging(param, handle, AGING_SBT_CD_TELNO, tmp050TelNo);
				}
			}
		}

		return statusCode;
	}


	/**
	 * エイジング対象使用終了処理
	 * 
	 * @param param
	 * @param handle
	 * @param agingSbtCd
	 * @param agingVal
	 * @throws Throwable
	 * @since 2012-02-24 IT障害1023対応
	 */
	private void closeAging(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String agingSbtCd,
			String agingVal
	) throws Throwable
	{
		HashMap<String, Object> workInHash = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> resultHashList = new ArrayList<HashMap<String,Object>>();

		// エイジング対象データの取得
		workInHash.put(PARAM_AGING_SBT_CD , agingSbtCd);
		workInHash.put(PARAM_AGING_TG_VALUE, agingVal);

		// エイジング一覧照会サービスIF呼び出し
		callEZM0111B030SC(param, handle, workInHash, resultHashList);

		for(int j = 0 ; j < resultHashList.size() ; j++)
		{		
			String tmpStat = null ;
			tmpStat = (String)resultHashList.get(j).get(EZM0111B030CBSMsg1List.AGING_STAT);
			if(STAT_USECHU.equals(tmpStat))
			{
				// エイジング使用終了サービスIF呼び出し
				HashMap<String, Object> resultHash = new HashMap<String, Object>();
				callEZM0111C010SC(param, handle, workInHash ,resultHashList.get(j), resultHash);	
			}
		}
	}

// ANK-4494-00-00 Step2品質強化対応No.33 20241204 星野 ADD START
	/**
	 * 電話番号・個人法人番号帯コード更新
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int updTelNokojinHojin(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> workField
	) throws Throwable
	{
		//ステータスコード
		int statusCode = STAT_NORMAL;
		
		// work領域からサービス契約内訳＜eo光電話＞照会結果を取得
		ArrayList<HashMap<String, Object>> inHashlistSvkeiUwEohTel = (ArrayList<HashMap<String, Object>>) workField.get( SVKEIUW_EOH_TEL );
		
		// ANK-4685-00-00 ADD START
		// ■通信事業者一覧照会を実施
		CAANMsg etu0051B010Msg = callETU0051B010SC(param, handle);
		CAANMsg[] msgETU0051B010List = etu0051B010Msg.getCAANMsgList(ETU0051B010CBSMsg.ETU0051B010CBSMSG1LIST);
		if (msgETU0051B010List == null || msgETU0051B010List.length == 0)
		{
			return statusCode;
		}
		CAANMsg msgETU0051B010 = msgETU0051B010List[0];
		
		String jishaCd = msgETU0051B010.getString(ETU0051B010CBSMsg1List.TSJGS_CD);
		// ANK-4685-00-00 ADD END

		for(int i = 0 ; i < inHashlistSvkeiUwEohTel.size() ; i++)
		{
			// スーパータイプの結果から移送したステータスを取得
			String tmpSvcKeiUcwkStat = (String)inHashlistSvkeiUwEohTel.get(i).get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
			
			// 解約済、キャンセル済は処理対象外
			if (isTrgtBySvcKeiStat(tmpSvcKeiUcwkStat))
			{
				String telno = (String)inHashlistSvkeiUwEohTel.get(i).get(EKK0191A010CBSMsg1List.TELNO );
				if (StringUtils.isEmpty(telno)){
					continue;
				}

				// ■電話番号一意照会を実施
				CAANMsg ezm0121A010Msg = callEZM0121A010SC(param, handle, telno);
				CAANMsg[] msgEZM0121A010List = ezm0121A010Msg.getCAANMsgList(EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST);
				if (msgEZM0121A010List == null || msgEZM0121A010List.length == 0)
				{
					continue;
				}
				CAANMsg msgEZM0121A010 = msgEZM0121A010List[0];
				
				// 初期個人法人電話番号帯コード
				String shokiKojinHojinCd = msgEZM0121A010.getString(EZM0121A010CBSMsg1List.SHK_KOJIN_HOJIN_TLN_TAI_CD);
				
				// ANK-4685-00-00 ADD START
				// 電話番号取得通信事業者コード
				String tlnStkuTsjgsCd = msgEZM0121A010.getString(EZM0121A010CBSMsg1List.TLN_STKU_TSJGS_CD);
				// ANK-4685-00-00 ADD END
				
				// 電話番号の「初期個人法人コード」が[法人]かつ自社番号の場合、「個人法人コード」を[法人]に更新する。
				// ANK-4685-00-00 MOD START
//				if ( JKKStrConst.CD00410_HOJIN.equals(shokiKojinHojinCd))
				if ( JKKStrConst.CD00410_HOJIN.equals(shokiKojinHojinCd) && jishaCd != null && jishaCd.equals(tlnStkuTsjgsCd))
				// ANK-4685-00-00 MOD END
				{
					// ■電話番号変更を実施
					callEZM0121C010SC(param, handle, msgEZM0121A010);
				}
			}
		}

		
		return statusCode;
	}

// ANK-4494-00-00 Step2品質強化対応No.33 20241204 星野 ADD END


	/**
	 * 進捗登録呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int callAddPrg(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data, 
			HashMap<String, Object> workField
	) throws Throwable
	{
		//ステータスコード
		int statusCode = STAT_NORMAL;	

		// work領域からサービス契約一意照会の結果を取得
		HashMap<String, Object> inHash = (HashMap<String, Object>) workField.get( SVC_KEI );
		//結果領域の生成
		HashMap<String, Object> resultHash =  new HashMap<String, Object>();

		callEKK1091D010SC(param, handle, trgt_data, inHash, resultHash, workField);	

		return statusCode;
	}

	// ANK-2293-00-00 対応 FJ)清水 2016/01/13 ADD START
	/**
	 * 進捗登録呼び出し (セット割引対応)
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	private int callAddPrgWrib(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data, 
			HashMap<String, Object> workField
	) throws Throwable
	{
		//ステータスコード
		int statusCode = STAT_NORMAL;	

		// work領域からサービス契約一意照会の結果を取得
		HashMap<String, Object> inHash = (HashMap<String, Object>) workField.get( SVC_KEI );
		//結果領域の生成
		HashMap<String, Object> resultHash =  new HashMap<String, Object>();
		callEKK1091D010SCwrib(param, handle, trgt_data, inHash, resultHash, workField);	

		return statusCode;
	}
	// ANK-2293-00-00 対応 FJ)清水 2016/01/13 ADD END

	/*********************************************************************************************************************/
	/** 各サービスインターフェイスの呼び出し処理                                                                        **/
	/*********************************************************************************************************************/

	/**
	 * 
	 */
	private CAANMsg[] callScCmn(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			CAANMsg template
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		Map<?, ?> sIFResult = null;

		// サービスIF共通の情報を設定
		sIFRequest = cancelSvcKeiMapper.editInMsgCmn(param);

		// 共通パラメータ設定
		cancelSvcKeiMapper.editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SIFの呼び出し
		sIFResult = this.scCall.run(sIFRequest, handle);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

//		 // リターンコード取得
//		 int returnCode = (Integer)sIFResult.get(JCMConstants.RET_CD_INT_KEY);

		// エラー情報のマッピング
		cancelSvcKeiMapper.editResultRP(sIFResult, param, REQ_TRGT_DATA);

		errChk(sIFResult);

		return resultMsgs;
	}

	/**
	 * サービス契約一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0081A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0081A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0081A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		cancelSvcKeiMapper.editResultRPEKK0081A010(param, resultMsgs);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST, resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("last_upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}

	/**
	 * サービス契約内訳一覧照会（カレント）サービスＩＦを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	inHash			条件用Hash
	 * @param	resultHashList	サービス契約内訳一覧照会（カレント）の結果
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0161B004SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0161B004への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161B004CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0161B004SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST, resultMsgs));
	}


	/**
	 * サービス契約内訳一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0161A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0161A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0161A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST, resultMsgs));
	}

	/**
	 * サービス契約内訳＜eo光ネット＞一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0171A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0171A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0171A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0171A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0171A010CBSMsg.EKK0171A010CBSMSG1LIST, resultMsgs));
	}

	/**
	 * サービス契約内訳＜eo光電話＞一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0191A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0191A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0191A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0191A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST, resultMsgs));
	}


	/**
	 * オプションサービス契約一覧照会（サービス契約番号・カレント）サービスＩＦを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	inHash			条件用Hash
	 * @param	resultHashList	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0351B010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0351B010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351B010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0351B010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0351B010CBSMsg.EKK0351B010CBSMSG1LIST, resultMsgs));
	}

	/**
	 * 機器提供サービス契約一覧照会（回線内訳）サービスＩＦを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	svcKeiKaiUcwkNo	サービス契約回線内訳番号
	 * @param	resultHashList	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0341B504SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiKaiUcwkNo,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0341B504への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341B504CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0341B504SCInMsg(template, svcKeiKaiUcwkNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		//結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0341B504CBSMsg.EKK0341B504CBSMSG1LIST, resultMsgs));
	}

	/**
	 * 回線利用中サービス契約一覧照会サービスＩＦを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	svcKeiKaiUcwkNo	サービス契約回線内訳番号
	 * @param	resultHashList	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0081B007SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiKaiUcwkNo,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0081B007への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081B007CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0081B007SCInMsg(template, svcKeiKaiUcwkNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0081B007CBSMsg.EKK0081B007CBSMSG1LIST, resultMsgs));
	}

	/**
	 * オプションサービス契約一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0351A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0351A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0351A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST, resultMsgs));
	}

	/**
	 * オプションサービス契約<ISP>一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0361A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0361A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0361A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0361A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST, resultMsgs));
	}

	/**
	 * オプションサービス契約<電話>一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0371A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0371A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0371A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0371A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0371A010CBSMsg.EKK0371A010CBSMSG1LIST, resultMsgs));
	}


	/**
	 * サブオプションサービス契約一覧照会（サービス契約番号・カレント）サービスＩＦを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	inHash			条件用Hash
	 * @param	resultHashList	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0401B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0401B001への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401B001CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0401B001SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0401B001CBSMsg.EKK0401B001CBSMSG1LIST, resultMsgs));
	}


	/**
	 * サブオプションサービス契約一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0401A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0401A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0401A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0401A010CBSMsg.EKK0401A010CBSMSG1LIST, resultMsgs));
	}


	/**
	 * サブオプションサービス契約<ISP>一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0411A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0411A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0411A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0411A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST, resultMsgs));
	}

	/**
	 * オプトンメール一覧照会（ＳＹＳＩＤ）２サービスＩＦを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	csvMlad		
	 * @param	inHash2		条件用Hash2 (サービス契約一意照会の結果)
	 * @return				
	 * @throws	Throwable
	 */
	private ArrayList<HashMap<String, Object>> callECK0141B005SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String csvMlad,
			HashMap<String, Object> inHash2
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// ECK0141B005への呼び出しパラメータ設定
		template = new CAANMsg(ECK0141B005CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingECK0141B005SCInMsg(template, csvMlad, inHash2);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		ArrayList<HashMap<String, Object>> resultHashList = new ArrayList<HashMap<String,Object>>();
		resultHashList.addAll(mappingCAANOutMsg(ECK0141B005CBSMsg.ECK0141B005CBSMSG1LIST, resultMsgs));

		return resultHashList;
	}


	/**
	 * 電話帳申込一覧照会（サービス契約番号）サービスＩＦを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	inHash			条件用Hash
	 * @param	resultHashList	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callETU0081B010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// ETU0081B010への呼び出しパラメータ設定
		template = new CAANMsg(ETU0081B010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingETU0081B010SCInMsg(template, inHash );

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(ETU0081B010CBSMsg.ETU0081B010CBSMSG1LIST, resultMsgs));
	}


	/**
	 * 電話帳申込一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用hash
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callETU0091A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// ETU0091A010への呼び出しパラメータ設定
		template = new CAANMsg(ETU0091A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingETU0091A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(ETU0091A010CBSMsg.ETU0091A010CBSMSG1LIST, resultMsgs));
	}


	/**
	 * 請求オプションサービス一覧照会（サービス契約番号）サービスＩＦを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	inHash			条件用hash
	 * @param	resultHashList	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0441B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0441B001への呼び出しパラメータ設定
		template = new CAANMsg(EKK0441B001CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0441B001SCInMsg(template, inHash );

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0441B001CBSMsg.EKK0441B001CBSMSG1LIST, resultMsgs));
	}


	/**
	 * 請求オプションサービス契約一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		入力パラメータ
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0441A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0441A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0441A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0441A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0441A010CBSMsg.EKK0441A010CBSMSG1LIST, resultMsgs));
	}

	/**
	 * サービス契約回線内訳一覧照会（サービス契約番号）サービスＩＦを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	inHash			条件用hash
	 * @param	resultHashList	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0251B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0251B001への呼び出しパラメータ設定
		template = new CAANMsg(EKK0251B001CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0251B001SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST, resultMsgs));
	}


	/**
	 * サービス契約回線内訳一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		入力パラメータ
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0251A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0251A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0251A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0251A010SCInMsg(template, inHash );

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST, resultMsgs));
	}


	/**
	 * 機器提供サービス契約一覧照会サービスIF(サービス契約番号)を呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	inHash			条件用hash
	 * @param	resultHashList	機器提供サービス契約一覧照会の結果
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0341B011SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0341B011への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341B011CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0341B011SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0341B011CBSMsg.EKK0341B011CBSMSG1LIST, resultMsgs));
	}


	/**
	 * 機器提供サービス契約一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	callMethodFlg	呼び元を識別するフラグ
	 * @param	kktkSvcKeiNo	機器提供サービス契約番号
	 * @param	resultHash		サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0341A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String callMethodFlg,
			String kktkSvcKeiNo,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> inHash;

		// オーバーライドメソッド用にHash作成
		inHash = new HashMap<String, Object>();

		// 機器提供サービス契約番号を設定
		inHash.put(EKK0341B011CBSMsg1List.KKTK_SVC_KEI_NO,kktkSvcKeiNo);

		callEKK0341A010SC(param,handle,callMethodFlg,inHash,resultHash);
	}

	/**
	 * 機器提供サービス契約一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	callMethodFlg	呼び元を識別するフラグ
	 * @param	inHash			条件用hash
	 * @param	resultHash		サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0341A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String callMethodFlg,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0341A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0341A010SCInMsg(template, inHash, callMethodFlg);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST, resultMsgs));
	}


	// ANK-1421-00-00 2013/02/07 ADD START
	/**
	 * EKK0771A010 機器提供サービス一意照会を実行します<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		設定条件
	 * @param	resultHash	機器提供サービス一意照会結果
	 * @return	サービスインターフェースのリターンコード
	 * @throws	Throwable
	 */
	private int callEKK0771A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		int status = 0;

		// EKK0771A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0771A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0771A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			CAANMsg[] msgList = resultMsgs[0].getCAANMsgList(EKK0771A010CBSMsg.EKK0771A010CBSMSG1LIST);
			if (msgList != null && msgList.length > 0)
			{
				resultHash.put(TEMPLATE_ID_EKK0771A010, mappingCAANOutMsgOne(EKK0771A010CBSMsg.EKK0771A010CBSMSG1LIST, resultMsgs));
			}
			else
			{
				resultHash.put(TEMPLATE_ID_EKK0771A010, null);
			}
		}

		return status;
	}
	// ANK-1421-00-00 2013/02/07 ADD END


	/**
	 * EKK0081C160サービスＩＦ呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	trgt_data	アプリ独自の入力パラメータ
	 * @param	inHash		条件用hash
	 * @param	workField	
	 * @param	resultHash	EKK0081C160SCの結果
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0081C160SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> inHash,
			HashMap<String, Object> workField,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0081C160への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081C160CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0081C160SCInMsg(template, trgt_data, inHash, workField);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}


	/**
	 * EKK0081C180サービスＩＦ呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	trgt_data	アプリ固有のデータ
	 * @param	inHash		条件用hash
	 * @param	workField	
	 * @param	resultHash	EKK0081C180SCの結果
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0081C180SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> inHash,
			HashMap<String, Object> workField,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0081C180への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081C180CBSMsg.class.getName());
		
		// ▼▼▼▼▼ OM-2014-0003778 2014/12/24 MOD START ▼▼▼▼▼
		// 工事連携契約キャンセルからの呼出かを判断(工事連携契約キャンセルからの場合は電話単独チェックを行わない)
//		cancelSvcKeiMapper.mappinEKK0081C180SCInMsg(template, trgt_data, inHash ,workField);
		cancelSvcKeiMapper.mappinEKK0081C180SCInMsg(template, trgt_data, inHash ,workField ,param);
		// ▲▲▲▲▲ OM-2014-0003778 2014/12/24 MOD END   ▲▲▲▲▲
		
		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}



	/**
	 * EKK0081C260サービスＩＦ呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用hash
	 * @param	resultHash	EKK0081C260SCの結果
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0081C260SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0081C260への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081C260CBSMsg.class.getName());
		// ▼▼▼▼▼ OM-2014-0003778 2014/12/24 MOD START ▼▼▼▼▼
		// 工事連携契約キャンセルからの呼出かを判断(工事連携契約キャンセルからの場合は電話単独チェックを行わない)
//		cancelSvcKeiMapper.mappinEKK0081C260SCInMsg(template, inHash);
		cancelSvcKeiMapper.mappinEKK0081C260SCInMsg(template,inHash ,param);
		// ▲▲▲▲▲ OM-2014-0003778 2014/12/24 MOD END   ▲▲▲▲▲
		
		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}

	/**
	 * EKK0161C160サービスＩＦ呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	trgt_data	アプリ固有のデータ
	 * @param	workField	
	 * @param	inHash		条件用hash
	 * @param	resultHash	EKK0161C160SCの結果
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0161C160SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0161C160への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161C160CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0161C160SCInMsg(template, trgt_data, workField, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}


	/**
	 * EKK0161C180サービスＩＦ呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	trgt_data	
	 * @param	inHash		条件用hash
	 * @param	resultHash	EKK0161C180SCの結果
	 * @param	workField	
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0161C180SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> workField
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0161C180への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161C180CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0161C180SCInMsg(template, trgt_data, inHash, workField);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}


	/**
	 * EKK0161C190サービスＩＦ呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用hash
	 * @param	resultHash	EKK0161C190SCの結果
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0161C190SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0161C190への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161C190CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0161C190SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}


	/**
	 * EKK0351C220サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash EKK0351C220SCの結果
	 * @return EKK0351C220サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK0351C220SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0351C220への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351C220CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0351C220SCInMsg(template, trgt_data, workField, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}



	/**
	 * EKK0351C240サービスＩＦ呼び出し<br>
	 * <br>
	 * @param	param					リクエストパラメータ
	 * @param	handle					
	 * @param	trgt_data				アプリ固有のデータ
	 * @param	inHash					条件用hash
	 * @param	resultHash				EKK0351C240SCの結果
	 * @param	jdgHiChrgMapSvcKei		非課金判定部品結果
	 * @return							EKK0351C240サービスＩＦのリターンコード
	 * @throws	Throwable				例外時にスローされます。
	 */
	private void callEKK0351C240SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> workField,
			HashMap<String, Object> jdgHiChrgMapSvcKei
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0351C240への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351C240CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0351C240SCInMsg(template, trgt_data, inHash, workField, jdgHiChrgMapSvcKei);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}


	/**
	 * EKK0351C250サービスＩＦ呼び出し<br>
	 * <br>
	 * @param	param						リクエストパラメータ
	 * @param	handle						
	 * @param	trgt_data					アプリ固有のデータ
	 * @param	inHash						条件用hash
	 * @param	resultHash					EKK0351C250SCの結果
	 * @param	jdgHiChrgMapSvcKei			非課金判定部品結果＜サービス＞
	 * @param	jdgHiChrgMapOpSvcKei		非課金判定部品結果＜オプションサービス＞
	 * @return	EKK0351C250サービスＩＦのリターンコード
	 * @throws	Throwable 例外時にスローされます。
	 */
	private void callEKK0351C250SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash ,
			HashMap<String, Object> jdgHiChrgMapSvcKei,
			HashMap<String, Object> jdgHiChrgMapOpSvcKei
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0351C250への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351C250CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0351C250SCInMsg(template, inHash, jdgHiChrgMapSvcKei, jdgHiChrgMapOpSvcKei);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}


	/**
	 * EKK0401C150サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash EKK0401C150SCの結果
	 * @return EKK0401C150サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK0401C150SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0401C150への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401C150CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0401C150SCInMsg(template, trgt_data, workField, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}



	/**
	 * EKK0401C170サービスＩＦ呼び出し<br>
	 * <br>
	 * @param	param					リクエストパラメータ
	 * @param	handle					
	 * @param	trgt_data				
	 * @param	inHash					条件用hash
	 * @param	resultHash				EKK0401C170SCの結果
	 * @param	workField				
	 * @param	jdgHiChrgMapSvcKei		非課金判定部品結果＜サービス＞
	 * @return							EKK0401C170サービスＩＦのリターンコード
	 * @throws	Throwable				例外時にスローされます。
	 */
	private void callEKK0401C170SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> workField,
			HashMap<String, Object> jdgHiChrgMapSvcKei
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0401C170への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401C170CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0401C170SCInMsg(template, trgt_data, inHash, workField, jdgHiChrgMapSvcKei);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}


	/**
	 * EKK0401C180サービスＩＦ呼び出し<br>
	 * <br>
	 * @param	param						リクエストパラメータ
	 * @param	handle						
	 * @param	inHash						条件用hash
	 * @param	resultHash					EKK0401C180SCの結果
	 * @param	jdgHiChrgMapSvcKei			非課金判定部品結果＜サービス＞
	 * @param	jdgHiChrgMapSbopSvcKei		非課金判定部品結果＜サブオプション＞
	 * @return								EKK0401C180サービスＩＦのリターンコード
	 * @throws	Throwable					例外時にスローされます。
	 */
	private void callEKK0401C180SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> jdgHiChrgMapSvcKei,
			HashMap<String, Object> jdgHiChrgMapSbopSvcKei
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0401C180への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401C180CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0401C180SCInMsg(template, inHash, jdgHiChrgMapSvcKei, jdgHiChrgMapSbopSvcKei);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}


//	/**
//	 * EKK0441C210サービスＩＦ呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param inHash 条件用hash
//	 * @param resultHash EKK0441C210SCの結果
//	 * @return EKK0441C210サービスＩＦのリターンコード
//	 * @throws Throwable 例外時にスローされます。
//	 */
//	private void callEKK0441C210SC(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> trgt_data,
//			HashMap<String, Object> workField,
//			HashMap<String, Object> inHash,
//			HashMap<String, Object> resultHash
//	) throws Throwable
//	{
//		// SIFの実行結果から取得したCAANMsg[]
//		CAANMsg[] resultMsgs = null;
//		// テンプレート情報部（入力時の情報）
//		CAANMsg template = null;
//
//		// EKK0441C210への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0441C210CBSMsg.class.getName());
//		cancelSvcKeiMapper.mappinEKK0441C210SCInMsg(template, trgt_data, workField, inHash);
//
//		// SIF実行
//		resultMsgs = callScCmn(param, handle, template);
//
//		// 結果を設定(登録時)
//		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));
//	}

//	/**
//	 * EKK0441C230サービスＩＦ呼び出し
//	 * @param param リクエストパラメータ
//	 * @param inHash 条件用hash
//	 * @param resultHash EKK0441C230SCの結果
//	 * @return EKK0441C230サービスＩＦのリターンコード
//	 * @throws Throwable 例外時にスローされます。
//	 */
//	private void callEKK0441C230SC(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> trgt_data,
//			HashMap<String, Object> inHash,
//			HashMap<String, Object> resultHash
//	) throws Throwable
//	{
//		// SIFの実行結果から取得したCAANMsg[]
//		CAANMsg[] resultMsgs = null;
//		// テンプレート情報部（入力時の情報）
//		CAANMsg template = null;
//
//		// EKK0441C230への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0441C230CBSMsg.class.getName());
//		cancelSvcKeiMapper.mappinEKK0441C230SCInMsg(template, trgt_data, inHash);
//
//		// SIF実行
//		resultMsgs = callScCmn(param, handle, template);
//
//		// 結果を設定(登録時)
//		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));
//	}

//	/**
//	 * EKK0441C240サービスＩＦ呼び出し
//	 * @param param リクエストパラメータ
//	 * @param inHash 条件用hash
//	 * @param resultHash EKK0441C240SCの結果
//	 * @return EKK0441C240サービスＩＦのリターンコード
//	 * @throws Throwable 例外時にスローされます。
//	 */
//	private void callEKK0441C240SC(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> inHash,
//			HashMap<String, Object> resultHash
//	) throws Throwable
//	{
//		// SIFの実行結果から取得したCAANMsg[]
//		CAANMsg[] resultMsgs = null;
//		// テンプレート情報部（入力時の情報）
//		CAANMsg template = null;
//
//		// EKK0441C240への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0441C240CBSMsg.class.getName());
//		cancelSvcKeiMapper.mappinEKK0441C240SCInMsg(template, inHash);
//
//		// SIF実行
//		resultMsgs = callScCmn(param, handle, template);
//
//		// 結果を設定(登録時)
//		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));
//	}


	/**
	 * EKK0251C070サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash EKK0251C070SCの結果
	 * @return EKK0251C070サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK0251C070SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0251C070への呼び出しパラメータ設定
		template = new CAANMsg(EKK0251C070CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0251C070SCInMsg(template, trgt_data, workField, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}



	/**
	 * EKK0341C330サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash EKK0341C330SCの結果
	 * @return EKK0341C330サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK0341C330SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> inHash,
			HashMap<String, Object> workField,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0341C330への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C330CBSMsg.class.getName());

		// IKK-2013-0000782対応 START 住所変更からの場合はパラメータの値を使用
		cancelSvcKeiMapper.mappinEKK0341C330SCInMsg(template, inHash , workField , trgt_data);
		// IKK-2013-0000782対応 END 住所変更からの場合はパラメータの値を使用

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}


	/**
	 * EKK0341C340サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param inHash 条件用hash
	 * @param workField 結果取得領域
	 * @param resultHash EKK0341C340SCの結果
	 * @return EKK0341C340サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK0341C340SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> inHash,
			HashMap<String, Object> workField,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0341C340への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C340CBSMsg.class.getName());
		// ANK-1421-00-00 2013/02/07 MOD START
		cancelSvcKeiMapper.mappinEKK0341C340SCInMsg(template, trgt_data, workField, inHash, resultHash);
		// ANK-1421-00-00 2013/02/07 MOD END

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}


	/**
	 * EKK0341C350サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param inHash 条件用hash
	 * @param resultHash EKK0341C350SCの結果
	 * @return EKK0341C350サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK0341C350SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0341C350への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C350CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0341C350SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}


	/**
	 * ECK0141C030サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash ssSCの結果
	 * @return ECK0141C030サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 * @since 2012-08-17 IT1-2012-0000943対応（対策TAI-2012-0000087）
	 */
	private HashMap<String, Object> callECK0141C030SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// ECK0141C030への呼び出しパラメータ設定
		template = new CAANMsg(ECK0141C030CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinECK0141C030SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		HashMap<String, Object>  resultHash = mappingCAANOutMsgAdd(resultMsgs);

		// 更新年月日時分秒を保持
		String custUpdDtm = (String)resultHash.get(ECK0141C030CBSMsg.UPD_DTM);
		cancelSvcKeiMapper.setCustUpdDtm(custUpdDtm);

		return resultHash;
	}


	/**
	 * EZM0111B030サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash ssSCの結果
	 * @return EZM0111B030サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEZM0111B030SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EZM0111B030への呼び出しパラメータ設定
		template = new CAANMsg(EZM0111B030CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEZM0111B030SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 一覧照会結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EZM0111B030CBSMsg.EZM0111B030CBSMSG1LIST,resultMsgs));
	}


	/**
	 * EZM0111C010サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash EZM0111C010SCの結果
	 * @return EZM0111C010サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEZM0111C010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash1,
			HashMap<String, Object> inHash2,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EZM0111C010への呼び出しパラメータ設定
		template = new CAANMsg(EZM0111C010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEZM0111C010SCInMsg(template, inHash1, inHash2 );

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));
	}

	/**
	 * EKK0021A010サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param mskmDtlNo 申込明細番号
	 * @param resultHash EKK0021A010の結果
	 */
	private void callEKK0021A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String mskmDtlNo,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		HashMap<String, Object> result    = null;
		HashMap<String, Object>[] results = null;

		// EKK0021A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0021A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0021A010SCInMsg(template, mskmDtlNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		results = (HashMap<String, Object>[])mappingCAANOutMsgAdd(resultMsgs).get(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST);
		result = results[0];

		resultHash.putAll(result);
	}

	// 2012.3.26 ST2-2012-0000467_CRUD554_555 Start
	/**
	 * EKU0081B010サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiNo サービス契約番号
	 * @param resultHash EKU0081B010の結果
	 */
	private void callEKU0081B010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiNo,
			ArrayList<HashMap<String, Object>> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		HashMap<String, Object> result    = null;
		HashMap<String, Object>[] results = null;

		// EKU0081B010への呼び出しパラメータ設定
		template = new CAANMsg(EKU0081B010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKU0081B010SCInMsg(template, svcKeiNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		results = (HashMap<String, Object>[])mappingCAANOutMsgAdd(resultMsgs).get(EKU0081B010CBSMsg.EKU0081B010CBSMSG1LIST);

		// 結果が取得できている場合だけ
//↓↓↓2013-07-13変更　LT-2013-0000380↓↓↓
//		if(results != null && results.length > 0)
//		{
//			result = results[0];
//			resultHash.putAll(result);
//		}
		//一覧照会の結果全件を取得してリストに詰める
		for (int i=0; null != results && i < results.length; i++)
		{
			resultHash.add(results[i]);
		}
//↑↑↑2013-07-13変更　LT-2013-0000380↑↑↑
	}
	// 2012.3.26 ST2-2012-0000467_CRUD554_555 End

	/**
	 * EKU0081B020サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiNo サービス契約番号
	 * @param resultHash EKU0081B010の結果
	 */
	private void callEKU0081B020SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiNo,
			String svcKeiKaisenUcwkNo,
			HashMap<String, Object>  resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		HashMap<String, Object> result    = null;
		HashMap<String, Object>[] results = null;

		// EKU0081B020への呼び出しパラメータ設定
		template = new CAANMsg(EKU0081B020CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKU0081B020SCInMsg(template, svcKeiNo, svcKeiKaisenUcwkNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		results = (HashMap<String, Object>[])mappingCAANOutMsgAdd(resultMsgs).get(EKU0081B020CBSMsg.EKU0081B020CBSMSG1LIST);

		// 結果が取得できている場合だけ
		if(results != null && results.length > 0)
		{
			result = results[0];
			resultHash.putAll(result);
		}
	}


	/**
	 * ESC0021D010サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash ESC0021D010SCの結果
	 * @return ESC0021D010サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callESC0021D010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object>  resultHash,
			HashMap<String, Object> workField,
			String kojiakNo,
			String svcKeiNo
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// ESC0021D010への呼び出しパラメータ設定
		template = new CAANMsg(ESC0021D010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinESC0021D010SCInMsg(template, inHash, workField, kojiakNo,svcKeiNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));
	}


	// 2012.3.26 ST2-2012-0000467_CRUD554_555 Start
	/**
	 * 工事CC実行処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @return リターンコード
	 * @throws Throwable
	 */
	private void executeKojiakCC(
			IRequestParameterReadWrite param,
			SessionHandle handle, 
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		HashMap targetMap = new HashMap<String, Object>();
		HashMap<String, Object> eKK0081A010Hash = null;
		HashMap<String, Object> eKK0021A010Hash = null;
//		HashMap<String, Object> eKU0081B010Hash = null;
		JKKKojiAnkenCC kojiCC = new JKKKojiAnkenCC();
		String workFixedText = "KojiakCC";

		// サービス契約一意照会の結果を取得
		eKK0081A010Hash = (HashMap<String, Object>)workField.get(SVC_KEI);

		// 申込明細一意照会の結果を取得
		eKK0021A010Hash = (HashMap<String, Object>)workField.get(MSKM_DTL);

		// サービス契約_工事案件の結果を取得
//↓↓↓2013-07-13変更　LT-2013-0000380↓↓↓
//		eKU0081B010Hash = (HashMap<String, Object>)workField.get(SVCKEI_KOJIAK);
		ArrayList<HashMap<String, Object>> eKU0081B010Hash = (ArrayList<HashMap<String, Object>>)workField.get(SVCKEI_KOJIAK);

		// そもそも工事案件が取れなかった場合は工事案件CCを呼ばない
		if(
//				eKU0081B010Hash == null
//				|| (eKU0081B010Hash.get(EKU0081B010CBSMsg1List.KOJIAK_NO) == null)
//				|| "".equals(eKU0081B010Hash.get(EKU0081B010CBSMsg1List.KOJIAK_NO)))
			null == eKU0081B010Hash || 1 > eKU0081B010Hash.size()
		)
//↑↑↑2013-07-13変更　LT-2013-0000380↑↑↑
		{
			return;
		}

		//▼▼▼▼▼ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 MOD START ▼▼▼▼▼
		// サービス契約_工事案件一覧の分だけ評価を行う。
		HashMap<String, Object> eKU0081B010HashNew = null;
		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get(SVCKEI_KOJIAK);
		
		for(int i = 0 ; i < inHashlist.size() ; i++)
		{
			// 20120420 ST2-2012-0000742 START
			// 工事案件一意照会を実施
			CAANMsg eku0011a010Msg = callEKU0011A010SC(param, handle, (String)inHashlist.get(i).get(EKU0081B010CBSMsg1List.KOJIAK_NO));
			CAANMsg eku0011a010ListMsg = eku0011a010Msg.getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST)[0];
			String kojiakStat = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.KOJIAK_STAT);
			// 20140815 IT1-2014-0000286 マンション工事案件状態コードを判定するよう修正 ADD START
			String mansKojiakStatCd = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.MANS_KOJIAK_STAT_CD);
			// 20140815 IT1-2014-0000286 マンション工事案件状態コードを判定するよう修正 ADD END
//IT1-2019-0000085 ADD START
			// 工事案件種別コード取得
			String kojiakSbt = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD);
			// 入力の工事案件番号を取得
			String kojiakNo = (String)trgt_data.get(JKKCancelSvcKeiCC.REQ_PARAM_KOJIAK_NO);
			// 入力の工事案件番号が設定されている場合
			if (!isNull(kojiakNo) && !"".equals(kojiakNo))
			{
				// 工事案件種別が撤去(解約)または住所変更(撤去)の場合
				if (
						KOJIAK_SBT_TK_DSL.equals(kojiakSbt)
						|| KOJIAK_SBT_AD_CHG_TEKKYO.equals(kojiakSbt) 
				)
				{
					// 工事案件CCを呼び出さない
					continue;
				}
			}
//IT1-2019-0000085 ADD END
			// 20140815 IT1-2014-0000286 マンション工事案件状態コードを判定するよう修正 MOD START
//			//ANK-1918-00-00 MOD START 
//			//登録済の場合も工事案件CCが呼び出されるように条件を変更
//			//if (KOJIAK_STAT_STP.equals(kojiakStat) || KOJIAK_STAT_ADD.equals(kojiakStat) || KOJIAK_STAT_WK_FIN.equals(kojiakStat))
//			if (KOJIAK_STAT_STP.equals(kojiakStat) || KOJIAK_STAT_WK_FIN.equals(kojiakStat))
			if (KOJIAK_STAT_STP.equals(kojiakStat) || KOJIAK_STAT_WK_FIN.equals(kojiakStat)
					|| KOJIAK_STAT_STP.equals(mansKojiakStatCd)
				)
			//ANK-1918-00-00 MOD END
			// 20140815 IT1-2014-0000286 マンション工事案件状態コードを判定するよう修正 MOD END
			{
				// 工事案件ステータスが工事中止、現場作業完了済の場合、工事案件CCを呼び出さない
				continue;
			}
			// 20140815 IT1-2014-0000286 マンション工事案件状態コードを判定するよう修正(このルートはありえないけど工事案件ステータスとあわせておく) MOD START
//			else if(KOJIAK_STAT_FIN.equals(kojiakStat))
			else if(KOJIAK_STAT_FIN.equals(kojiakStat) || KOJIAK_STAT_FIN.equals(mansKojiakStatCd))
			// 20140815 IT1-2014-0000286 マンション工事案件状態コードを判定するよう修正(このルートはありえないけど工事案件ステータスとあわせておく) MOD END
			{
				// 工事案件ステータスが工事完了の場合
				// 最新基本工事フラグ、工事案件種別、住所変更確定年月日時分秒によって処理を分岐する。
				String rcntKihonKojiFlg = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.RCNT_KIHON_KOJI_FLG);	// 最新基本工事フラグ
				String kojiakSbtCd = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD);	// 工事案件種別
				String adChgFixDtm = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.AD_CHG_FIX_DTM);	// 住所変更確定年月日時分秒

				// ▼▼▼▼▼ OM-2017-0001289 2018/05/07 MOD START ▼▼▼▼▼
//				if (rcntKihonKojiFlg == "0")
				if ("0".equals(rcntKihonKojiFlg))
				// ▲▲▲▲▲ OM-2017-0001289 2018/05/07 MOD END ▲▲▲▲▲
				{
					// 最新基本工事フラグが0の場合、工事案件種別コードが003で住所変更確定年月日時分秒が設定されていない場合は連携
					if(KOJIAK_SBT_AD_CHG_NEW.equals(kojiakSbtCd) && ("".equals(adChgFixDtm) || isNull(adChgFixDtm)))
					{
						// 連携対象
						eKU0081B010HashNew = inHashlist.get(i);
						break;
					}
					else
					{
						// 工事案件CCを呼び出さない
						continue;
					}
				}
				// ▼▼▼▼▼ OM-2017-0001289 2018/05/07 MOD START ▼▼▼▼▼
//				else if(rcntKihonKojiFlg == "1")
				else if("1".equals(rcntKihonKojiFlg))
				// ▲▲▲▲▲ OM-2017-0001289 2018/05/07 MOD END ▲▲▲▲▲
				{
					// 最新基本工事フラグが1の場合は連携対象
					// 連携対象
					eKU0081B010HashNew = inHashlist.get(i);
					break;
				}
				else
				{
					// 工事案件CCを呼び出さない
					continue;
				}
			}
			else
			{
				// ▼▼▼▼▼ OM-2014-0003617 2014/12/24 ADD START ▼▼▼▼▼
				// 工事案件ステータスが120の場合は、マンション工事案件状態コードが130、140、160、200の場合のみ
				// 諸変更を連携
				if(KOJIAK_STAT_ADD.equals(kojiakStat))
				{
					// マンション工事案件状態コードが130、140、160、200の場合のみ諸変更を連携する。
					if(JKKStrConst.CD01651_UKTZ.equals(mansKojiakStatCd) || 
						JKKStrConst.CD01651_IRIZ.equals(mansKojiakStatCd) || 
						JKKStrConst.CD01651_KJCOMPFIX.equals(mansKojiakStatCd) || 
						JKKStrConst.CD01651_KJFIN.equals(mansKojiakStatCd) )
					{
						eKU0081B010HashNew = inHashlist.get(i);
						break;
					}
					else
					{
						// 工事案件CCを呼び出さない
						continue;
					}
				} 
				else if( JKKStrConst.CD00474_130.equals(kojiakStat) || 
						JKKStrConst.CD00474_140.equals(kojiakStat) || 
						JKKStrConst.CD00474_150.equals(kojiakStat) || 
						JKKStrConst.CD00474_160.equals(kojiakStat) || 
						JKKStrConst.CD00474_170.equals(kojiakStat) || 
						JKKStrConst.CD00474_180.equals(kojiakStat))
				{
					// 工事案件ステータスが130、140、150、160、170、180の場合のみ諸変更を連携する。
					// 連携対象
					eKU0081B010HashNew = inHashlist.get(i);
					break;
				}
				else
				{
					// 工事案件CCを呼び出さない
					continue;
				}
//				// それ以外の場合は処理を継続。
//				// 連携対象
//				eKU0081B010HashNew = inHashlist.get(i);
//				break;
			}
//			if (KOJIAK_STAT_FIN.equals(kojiakStat) || KOJIAK_STAT_STP.equals(kojiakStat))
//			{
//				// 工事案件ステータスが工事完了済・中止の場合、工事案件CCを呼び出さない
//				return;
//			}
		}
		// ▲▲▲▲▲ OM-2014-0003617 2014/12/24 ADD END   ▲▲▲▲▲
		
		// 諸変更を呼ぶかの判断
		if (eKU0081B010HashNew == null)
		{
			// 該当レコードがNULLなら諸変更を実施しない
// 処理中断しないように改修
// OM-2014-0003101 2014/10/10 DEL START
//			return;
// OM-2014-0003101 2014/10/10 DEL END
		}
		else
		{
			// それ以外は継続
// OM-2014-0003101 2014/10/10 ADD START
			executeKojiakCCKkifChg(param, handle, trgt_data, workField, eKU0081B010HashNew);
// OM-2014-0003101 2014/10/10 ADD END
		}
		//▲▲▲▲▲ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 MOD END ▲▲▲▲▲
		
		// 20120420 ST2-2012-0000742 END
		
		//▼▼▼▼▼ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 MOD START ▼▼▼▼▼
		// 工事CC実行処理(機器情報変更)
		// ANK-1386-00-00 工事費算出のために工事案件スキーマへの異動区分更新 MOD START
//		executeKojiakCCKkifChg(param, handle, trgt_data, workField);
// OM-2014-0003101 2014/10/10 DEL START
//		executeKojiakCCKkifChg(param, handle, trgt_data, workField, eKU0081B010HashNew);
// OM-2014-0003101 2014/10/10 DEL END
		// ANK-1386-00-00 工事費算出のために工事案件スキーマへの異動区分更新 MOD END
		//▲▲▲▲▲ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 MOD END   ▲▲▲▲▲
		
// OM-2014-0003101 2014/10/10 ADD START
		for(int i = 0 ; i < inHashlist.size() ; i++)
		{
			// 20120420 ST2-2012-0000742 START
			// 工事案件一意照会を実施
			CAANMsg eku0011a010Msg = callEKU0011A010SC(param, handle, (String)inHashlist.get(i).get(EKU0081B010CBSMsg1List.KOJIAK_NO));
			CAANMsg eku0011a010ListMsg = eku0011a010Msg.getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST)[0];
			String kojiakStat = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.KOJIAK_STAT);
			String mansKojiakStatCd = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.MANS_KOJIAK_STAT_CD);
//IT1-2019-0000085 ADD START
			// 工事案件種別コード取得
			String kojiakSbt = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD);
			// 入力の工事案件番号を取得
			String kojiakNo = (String)trgt_data.get(JKKCancelSvcKeiCC.REQ_PARAM_KOJIAK_NO);
			// 入力の工事案件番号が設定されている場合
			if (!isNull(kojiakNo) && !"".equals(kojiakNo))
			{
				// 工事案件種別が撤去(解約)または住所変更(撤去)の場合
				if (
						KOJIAK_SBT_TK_DSL.equals(kojiakSbt)
						|| KOJIAK_SBT_AD_CHG_TEKKYO.equals(kojiakSbt) 
				)
				{
					// 工事案件CCを呼び出さない
					continue;
				}
			}
//IT1-2019-0000085 ADD END
			if (KOJIAK_STAT_STP.equals(kojiakStat) || KOJIAK_STAT_STP.equals(mansKojiakStatCd)
				){
				continue;
			}
			else if(KOJIAK_STAT_FIN.equals(kojiakStat) || KOJIAK_STAT_FIN.equals(mansKojiakStatCd))
			{
				// 工事案件ステータスが工事完了の場合
				// 最新基本工事フラグ、工事案件種別、住所変更確定年月日時分秒によって処理を分岐する。
				String rcntKihonKojiFlg = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.RCNT_KIHON_KOJI_FLG);	// 最新基本工事フラグ
				String kojiakSbtCd = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD);	// 工事案件種別
				String adChgFixDtm = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.AD_CHG_FIX_DTM);	// 住所変更確定年月日時分秒
				
				// ▼▼▼▼▼ OM-2017-0001289 2018/05/07 MOD START ▼▼▼▼▼
//				if (rcntKihonKojiFlg == "0")
				if ("0".equals(rcntKihonKojiFlg))
				// ▲▲▲▲▲ OM-2017-0001289 2018/05/07 MOD END ▲▲▲▲▲
				{
					// 最新基本工事フラグが0の場合、工事案件種別コードが003で住所変更確定年月日時分秒が設定されていない場合は連携
					if(KOJIAK_SBT_AD_CHG_NEW.equals(kojiakSbtCd) && ("".equals(adChgFixDtm) || isNull(adChgFixDtm)))
					{
						// 連携対象
						eKU0081B010HashNew = inHashlist.get(i);
						break;
					}
					else
					{
						// 工事案件CCを呼び出さない
						continue;
					}
				}
				// ▼▼▼▼▼ OM-2017-0001289 2018/05/07 MOD START ▼▼▼▼▼
//				else if(rcntKihonKojiFlg == "1")
				else if("1".equals(rcntKihonKojiFlg))
				// ▲▲▲▲▲ OM-2017-0001289 2018/05/07 MOD END ▲▲▲▲▲
				{
					// 最新基本工事フラグが1の場合は連携対象
					// 連携対象
					eKU0081B010HashNew = inHashlist.get(i);
					break;
				}
				else
				{
					// 工事案件CCを呼び出さない
					continue;
				}
			}
			else
			{
				// ▼▼▼▼▼ OM-2014-0003617 2014/12/24 ADD START ▼▼▼▼▼
				// 工事案件ステータスが120の場合は、マンション工事案件状態コードが130、140、160の場合のみ
				// 取消を連携
				if(KOJIAK_STAT_ADD.equals(kojiakStat))
				{
					// マンション工事案件状態コードが130、140、160の場合のみ取消を連携する。
					if(JKKStrConst.CD01651_UKTZ.equals(mansKojiakStatCd) || 
						JKKStrConst.CD01651_IRIZ.equals(mansKojiakStatCd) || 
						JKKStrConst.CD01651_KJCOMPFIX.equals(mansKojiakStatCd))
					{
						eKU0081B010HashNew = inHashlist.get(i);
						break;
					}
					else
					{
						// 工事案件CCを呼び出さない
						continue;
					}
				} 
				else if( JKKStrConst.CD00474_130.equals(kojiakStat) || 
						JKKStrConst.CD00474_140.equals(kojiakStat) || 
						JKKStrConst.CD00474_150.equals(kojiakStat) || 
						JKKStrConst.CD00474_160.equals(kojiakStat) || 
						JKKStrConst.CD00474_170.equals(kojiakStat) || 
						JKKStrConst.CD00474_180.equals(kojiakStat) ||
						JKKStrConst.CD00474_190.equals(kojiakStat))
				{
					// 工事案件ステータスが130、140、150、160、170、180、190の場合のみを連携する。
					// 連携対象
					eKU0081B010HashNew = inHashlist.get(i);
					break;
				}
				else
				{
					// 工事案件CCを呼び出さない
					continue;
				}
				
//				// それ以外の場合は処理を継続。
//				// 連携対象
//				eKU0081B010HashNew = inHashlist.get(i);
//				break;
				// ▲▲▲▲▲ OM-2014-0003617 2014/12/24 ADD END   ▲▲▲▲▲
			}
		}
		
		if (eKU0081B010HashNew == null)
		{
			return;
		}
		else {
			// 後続処理を行う
		}
// OM-2014-0003101 2014/10/10 ADD END
		
		//▼▼▼▼▼ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 MOD START ▼▼▼▼▼
		// マッピング
//		targetMap = cancelSvcKeiMapper.mappingKojiCC(trgt_data, workField, eKK0021A010Hash, eKK0081A010Hash, eKU0081B010Hash);
		targetMap = cancelSvcKeiMapper.mappingKojiCC(trgt_data, workField, eKK0021A010Hash, eKK0081A010Hash, eKU0081B010HashNew);
		//▲▲▲▲▲ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 MOD END   ▲▲▲▲▲
		
		// パラメータをparamに格納
		param.setData(workFixedText, targetMap);

		// 工事案件CC呼び出し
		kojiCC.executeKojiAnken(handle, param, workFixedText);
	}
	// 2012.3.26 ST2-2012-0000467_CRUD554_555 End

	// 20120603 ST2-2012-0001014 START
	/**
	 * 工事CC実行処理(機器情報変更)
	 * ※ネット・電話のセット契約で片方がキャンセルされた場合にONU以外の工事案件対象宅内機器情報を無効化する
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param trgt_data 対象データ
	 * @param workField 作業領域
	 * @throws Throwable
	 */
	private void executeKojiakCCKkifChg(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			// ANK-1386-00-00 工事費算出のために工事案件スキーマへの異動区分更新 ADD START
			HashMap<String, Object> trgt_data,
			// ANK-1386-00-00 工事費算出のために工事案件スキーマへの異動区分更新 ADD END
			HashMap<String, Object> workField
			//▼▼▼▼▼ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 ADD START ▼▼▼▼▼
			,HashMap<String, Object> eKU0081B010HashNew
			//▲▲▲▲▲ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 ADD END   ▲▲▲▲▲
	) throws Throwable
	{
		HashMap targetMap = new HashMap<String, Object>();
		JKKKojiAnkenCC kojiCC = new JKKKojiAnkenCC();
		String workFixedText = "KojiakCCKiki";

		ArrayList<HashMap<String, Object>> eKK0341A010HashListKojiak = null;
		HashMap<String, Object> eKK0081A010Hash = null;
		HashMap<String, Object> eKK0021A010Hash = null;
		//▼▼▼▼▼ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 DEL START ▼▼▼▼▼
//		HashMap<String, Object> eKU0081B010Hash = null;
		//▲▲▲▲▲ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 DEL END   ▲▲▲▲▲
		
		// 機器提供サービス契約照会情報（工事案件）を取得
		eKK0341A010HashListKojiak = (ArrayList<HashMap<String, Object>>)workField.get(KKTK_SVC_KEI_KOJIAK);
		if (eKK0341A010HashListKojiak == null || eKK0341A010HashListKojiak.size() == 0)
		{
			return;
		}

		// サービス契約一意照会の結果を取得
		eKK0081A010Hash = (HashMap<String, Object>)workField.get(SVC_KEI);

		// 申込明細一意照会の結果を取得
		eKK0021A010Hash = (HashMap<String, Object>)workField.get(MSKM_DTL);

		//▼▼▼▼▼ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 MOD START ▼▼▼▼▼
		// サービス契約_工事案件の結果を取得
//		eKU0081B010Hash = (HashMap<String, Object>)workField.get(SVCKEI_KOJIAK);

		// マッピング
//		targetMap = cancelSvcKeiMapper.mappingKojiakCCKkifChg(trgt_data, workField, eKK0021A010Hash, eKK0081A010Hash, eKU0081B010Hash, eKK0341A010HashListKojiak);
		targetMap = cancelSvcKeiMapper.mappingKojiakCCKkifChg(trgt_data, workField, eKK0021A010Hash, eKK0081A010Hash, eKU0081B010HashNew, eKK0341A010HashListKojiak);
		//▲▲▲▲▲ LT-2013-0000380 2013/07/12 工事諸変更を連携する条件を変更 MOD END   ▲▲▲▲▲
		// パラメータをparamに格納
		param.setData(workFixedText, targetMap);

		// 工事案件CC呼び出し
		kojiCC.executeKojiAnken(handle, param, workFixedText);
	}
	// 20120603 ST2-2012-0001014 END

	/**
	 * 物流制御CC実行処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @return リターンコード
	 * @throws Throwable
	 */
	private void executeButuryuCtrlCC(
			IRequestParameterReadWrite param,
			SessionHandle handle, 
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		// ANK-1578-00-00 2013/12/12 START
		String svcKeiNoPair = "";
		
		String workKKkopSvcUseKeiUpdDataKey = "KKkopSvcUseKeiUpdCC";
		HashMap workOutMap = (HashMap)param.getData(workKKkopSvcUseKeiUpdDataKey);
		if (workOutMap != null && !"".equals(workOutMap) && workOutMap.size() > 0) {
			ArrayList<HashMap> workArray = (ArrayList<HashMap>)workOutMap.get("trgt_data_list");
			HashMap workKktkCoshjMap = workArray.get(0);
			// 対となる機器の機器提供サービス契約のサービス契約番号を取得
			svcKeiNoPair = (String)workKktkCoshjMap.get("svc_kei_no_pair");
		}
		
		// ANK-1578-00-00 2013/12/12 END
		
		// 物流制御CCをCCとして呼び出し
		String workFixedText = "ButuryuCtrlCC";
		boolean workButuryuCtrlDataKeyFlg = createUserData(param, workFixedText);

		JKKButuryuCtrlCC buturyuCtrlCC = new JKKButuryuCtrlCC();

		HashMap<String, Object> buturyu_trgt_data = new HashMap<String, Object>();		//対象データマップ
		HashMap<String, Object> buturyu_map = new HashMap<String, Object>();			//物流マップ
		ArrayList trgt_data_list = new ArrayList();										//対象データリスト

		// サービス契約一意照会結果の取り出し
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)workField.get(SVC_KEI);

		// マッピング
		buturyu_map = cancelSvcKeiMapper.mappinguButuryuCC(trgt_data, workField, eKK0081A010Hash ,svcKeiNoPair);
		// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/06 START
		if(tabletHaisoKbn != null && !"".equals(tabletHaisoKbn)){
			buturyu_map.put("tablet_haiso_kbn", tabletHaisoKbn);
		}
		// ANK-2138-00-00 スマリン端末のトムソンケース同梱 2014/08/06 END
		
		// 物流マップ設定
		trgt_data_list.add(buturyu_map);
		buturyu_trgt_data.put("trgt_data_list", trgt_data_list);
		param.setData(workFixedText, buturyu_trgt_data);

		// 物流制御CC呼び出し
		buturyuCtrlCC.buturyuCtrlTran(handle, param, workFixedText);

		if (workButuryuCtrlDataKeyFlg)
		{
			param.removeData(workFixedText);
		}

//		// サービスの処理結果が格納されるMAPを生成
//		HashMap<String, Object> outputMap = new HashMap<String, Object>();
//		// 物流制御要求サービスを呼び出します。
//		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
	}

	// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 START
	/**
	 * 通知書登録CC実行処理
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param trgt_data 対象データ
	 * @param workField 結果取得領域
	 * @throws Throwable 例外が発生した場合
	 */
	private void executeTchishoAddCC(
			IRequestParameterReadWrite param,
			SessionHandle handle, 
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		// SYSIDを取得
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)workField.get(SVC_KEI);
		String sysid = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID);

		// 通知書一覧照会（SYSID）
		ArrayList<HashMap<String, Object>> eKK0561B002HashList = new ArrayList<HashMap<String,Object>>();
		callEKK0561B002SC(param, handle, sysid, eKK0561B002HashList);

		if (null != eKK0561B002HashList)
		{
			// 通知書番号が新しいものを対象とする（照会結果は通知書番号の昇順）
			for (int i = eKK0561B002HashList.size() - 1; 0 <= i; i--)
			{
				HashMap<String, Object> eKK0561B002Hash = eKK0561B002HashList.get(i);
				String tchishoStat = (String)eKK0561B002Hash.get(EKK0561B002CBSMsg1List.TCHISHO_STAT);
				String tchishoHakkoCd = (String)eKK0561B002Hash.get(EKK0561B002CBSMsg1List.TCHISHO_HAKKO_CD);
				// 通知書ステータスが「受付済」、かつ通知書発行コードが「新規発行」の場合
				if (JKKSvcConst.TCHISHO_STAT_UK_ZM.equals(tchishoStat) && JKKSvcConst.TCHISHO_HAKKO_CD_NEW_HAKKO.equals(tchishoHakkoCd))
				{
					editMapJKKTchishoAdd(param, handle, trgt_data, workField, eKK0561B002Hash);
					// 通知書登録CCの呼び出しは1回のみ
					break;
				}
			}
		}
	}
	// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 END

	/**
	 *<DL>
	 *<DT>処理概要:通知書CC
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param param (I) 業務データ取得用I/F
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param trgt_data 対象データ
	 * @param workField 結果領域
	 * @param eKK0561B002Hash 通知書一覧照会（SYSID）明細
	 * @throws Throwable 例外が発生した場合
	 * @since 2011.06.07
	 */
	public void editMapJKKTchishoAdd(
			IRequestParameterReadWrite param, 
			SessionHandle handle, 
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField,
			// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 START
			HashMap<String, Object> eKK0561B002Hash
			// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 END
	) throws Throwable 
	{

		HashMap outMap = null;

		// 通知書用ユーザ定義領域名設定
		String workFixedText = "TchishoAddCC";
		// ユーザ定義領域作成
		boolean workTchishoAddDataKeyFlg = createUserData(param, workFixedText);
		// CCのインスタンス生成
		JKKTchishoAddCC tchishoAddCC = new JKKTchishoAddCC();

		// サービス契約一意照会結果の取り出し
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)workField.get(SVC_KEI);

		// ユーザデータ情報の取得
		outMap = (HashMap)param.getData(workFixedText);

		// 対象データリスト
		ArrayList<HashMap> workArray = new ArrayList<HashMap>();

		// 対象データ
		// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 START
//		HashMap<String, Object> workMap = cancelSvcKeiMapper.mappingTchishoAddCC(trgt_data, workField, eKK0081A010Hash);
		HashMap<String, Object> workMap = cancelSvcKeiMapper.mappingTchishoAddCC(trgt_data, workField, eKK0081A010Hash, eKK0561B002Hash);
		// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 END

		workArray.add(workMap);

		outMap.put("trgt_data_list", workArray);

		// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 START
//		tchishoAddCC.hakkoCl(handle, param, workFixedText);
		// サービス取消用
		tchishoAddCC.delSvcTchisho(handle, param, workFixedText);
		// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 END

		if (workTchishoAddDataKeyFlg)
		{
			param.removeData(workFixedText);
		}
	}


	/**
	 * SOD CC実行処理
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param requestParam リクエストパラメータ
	 * @param svcKeiUcwkDataList サービス契約内訳データリスト
	 * @param eKK0081A010Hash サービス契約一意紹介結果のハッシュ
	 * @param workField 結果取得領域 2013-03-11追加
	 * @return リターンコード
	 * @throws Throwable
	 */
	private void executeHakkoSodCC(
			IRequestParameterReadWrite param,
			SessionHandle handle, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> eKK0081A010Hash,
			ArrayList<HashMap<String, Object>> svcKeiUcwkDataList,
			HashMap<String, Object> workField
	) throws Throwable
	{
		//申込明細番号
		String tmpMskmDtlNo = (String)workField.get(MSKM_DTL_NO);

		// SOD用データ作成
		String workFixedText = "HakkoSODCC";
		boolean workHakkoSODDataKeyFlg = createUserData(param, workFixedText);

		JKKHakkoSODCC hakkoSODCC = new JKKHakkoSODCC();

		// ユーザデータ情報
		HashMap outMap = (HashMap)param.getData(workFixedText);

		// サービスオーダ発行処理の引数を生成
		// 対象データリスト
		ArrayList<HashMap<String, Object>> trgtDataList = new ArrayList<HashMap<String, Object>>();
		outMap.put(JKKHakkoSODConstCC.TRGT_DATA_LIST, trgtDataList);

		//↓↓↓2012-11-26追加　ロット２IT1-2012-0002165（サービス契約内訳の無いモデルにも対応）↓↓↓
		String prcGrpCd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		//eoADSL(eAccess)，eoモバイル(メールアドレス)の場合、サービス契約内訳なしでもSODが出るようにする
		if (JKKStrConst.CD00133_05.equals(prcGrpCd) || JKKStrConst.CD00133_16.equals(prcGrpCd) ||
				1 > svcKeiUcwkDataList.size())
		{
			svcKeiUcwkDataList.clear();
			svcKeiUcwkDataList.add(new HashMap<String, Object>());
		}
		//↑↑↑2012-11-26追加　ロット２IT1-2012-0002165（サービス契約内訳の無いモデルにも対応）↑↑↑
		for (HashMap<String, Object> svcKeiUcwkData : svcKeiUcwkDataList)
		{
			// SODマップ
			HashMap<String, Object> sodMap = new HashMap<String, Object>();
			trgtDataList.add(sodMap);
			// SOD基本情報
			HashMap<String, Object> sodKihonInfo = new HashMap<String, Object>();
			sodKihonInfo.put(JKKHakkoSODConstCC.INFO_SYSID, (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID));
			sodKihonInfo.put(JKKHakkoSODConstCC.INFO_IDO_DIV, (String)requestParam.get(REQ_PARAM_IDO_DIV));
			sodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, sodKihonInfo);
			// サービス契約情報
			HashMap<String, Object> svcKeiInfo = new HashMap<String, Object>();
			svcKeiInfo.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
			//↓↓↓2013-03-11追加　巻取３IT2-2013-0000250（電話番号解約したら順直し）↓↓↓
			svcKeiInfo.put(JKKHakkoSODConstCC.INFO_MSKM_DTL_NO, tmpMskmDtlNo);
			//↑↑↑2013-03-11追加　巻取３IT2-2013-0000250（電話番号解約したら順直し）↑↑↑
			sodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, svcKeiInfo);
			// サービス契約内訳情報
			HashMap<String, Object> svcKeiUcwkInfo = new HashMap<String, Object>();
			//↓↓↓2012-11-26変更　ロット２IT1-2012-0002165（サービス契約内訳の無いモデルにも対応）↓↓↓
			//	svcKeiUcwkInfo.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, svcKeiUcwkData.get("svc_kei_ucwk_no"));
			//	svcKeiUcwkInfo.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, svcKeiUcwkData.get("gene_add_dtm"));
			/** ************************************************************************************************ */
			String svcKeiUcwkNo = (String)svcKeiUcwkData.get("svc_kei_ucwk_no");
			if (null != svcKeiUcwkNo && 0 < svcKeiUcwkNo.length())
			{
				svcKeiUcwkInfo.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, svcKeiUcwkNo);
				svcKeiUcwkInfo.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, svcKeiUcwkData.get("gene_add_dtm"));
			}
			//↑↑↑2012-11-26変更　ロット２IT1-2012-0002165（サービス契約内訳の無いモデルにも対応）↑↑↑
			sodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, svcKeiUcwkInfo);
			// オプションサービス契約情報
			sodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, new HashMap<String, Object>());
			// 機器提供サービス契約情報
			HashMap<String, Object> kktsvkeiInfo = new HashMap<String, Object>();
			sodMap.put(JKKHakkoSODConstCC.KKTSVKEI_INFO, kktsvkeiInfo);
		}
		// 機能コード
		outMap.put(JCMConstants.FUNC_CODE_KEY, JPCModelConstant.FUNC_CD_1);

		hakkoSODCC.hakkoSOD(handle, param, workFixedText);

		if (workHakkoSODDataKeyFlg)
		{
			param.removeData(workFixedText);
		}
	}


	/**
	 * EKK1091D010サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash EKK1091D010SCの結果
	 * @param workField 
	 * @return EKK1091D010サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK1091D010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			HashMap<String,Object> workField
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK1091D010への呼び出しパラメータ設定
		template = new CAANMsg(EKK1091D010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK1091D010SCInMsg(template, trgt_data, inHash, workField);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		//ANK-0406-00-0007_20120717_ADD_START
		// workFieldに結果を保持	
		workField.put(PRG_LIST, resultHash);
		//ANK-0406-00-0007_20120717_ADD_END
	}

	// ANK-2293-00-00 対応 FJ)清水 2016/01/13 ADD START
	/**
	 * EKK1091D010サービスＩＦ呼び出し(セット割対応)
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash EKK1091D010SCの結果
	 * @param workField 
	 * @return EKK1091D010サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK1091D010SCwrib(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			HashMap<String,Object> workField
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK1091D010への呼び出しパラメータ設定
		template = new CAANMsg(EKK1091D010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK1091D010SCInMsgWrib(template, trgt_data, inHash, workField);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		// workFieldに結果を保持	
		workField.put(PRG_LIST, resultHash);
	}
	// ANK-2293-00-00 対応 FJ)清水 2016/01/13 ADD END
	
	// 2012.3.15 IT1-2012-0000349 Start
	/**
	 * EKK0081C014_サービス契約業務連絡備考変更サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param inHash 条件用hash
	 * @param resultHash EKK0081C014SCの結果
	 * @return EKK0081C014サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK0081C014SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String geneAddDtm
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0081C014への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081C014CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0081C014SCInMsg(template, trgt_data, inHash, geneAddDtm);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}
	// 2012.3.15 IT1-2012-0000349 End

	/**
	 *<DL>
	 *<DT>処理概要:サービス契約一意照会結果を取得する。
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param outMsg サービスインタフェース実行結果のMap
	 * @param CAANMsg[] メッセージキャリアクラスの配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 */
	public IRequestParameterReadWrite editResultRPEKK0081A010(
			IRequestParameterReadWrite param,
			CAANMsg[]  gettemplates,
			Integer returnCode
	) throws Throwable 
	{
		cancelSvcKeiMapper.editResultRPEKK0081A010(param, gettemplates);

		return param;
	}

	/**
	 * サービス契約＜eo光電話＞一意照会
	 * 
	 * @param param
	 * @param handle
	 * @param inHash
	 * @param resultHash
	 * @throws Throwable
	 * @since 2012-02-24 IT障害1023対応
	 */
	private void callEKK0111A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0111A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0111A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0111A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0111A010CBSMsg.EKK0111A010CBSMSG1LIST, resultMsgs));
	}


	/**
	 * サービス契約内訳＜eoADSL＞一意照会
	 * 
	 * @param param
	 * @param handle
	 * @param inHash
	 * @param resultHash
	 * @throws Throwable
	 * @since 2012-02-24 IT障害1023対応
	 */
	private void callEKK0221A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0221A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0221A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0221A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		//結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK0221A010CBSMsg.EKK0221A010CBSMSG1LIST,resultMsgs));
	}

	//↓↓↓2012-03-09 IT2-2012-0000328↓↓↓
	/**
	 * EZM0321A010_業務パラメータ管理一意照会サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workParamId 業務パラメータID
	 * @param resultHash EZM0321A010の結果
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEZM0321A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String workParamId,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EZM0321A010への呼び出しパラメータ設定
		template = new CAANMsg(EZM0321A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEZM0321A010SCInMsg(template, workParamId);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(一意照会用)
		resultHash.putAll(mappingCAANOutMsgOne(EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST, resultMsgs));
	}
	//↑↑↑2012-03-09 IT2-2012-0000328↑↑↑

	// 20120420 ST2-2012-0000742 START
	/**
	 * EKU0011A010_工事案件一意照会
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param kojiakNo 工事案件番号
	 * @return S/IF実行結果
	 * @throws Throwable 例外時にスローされます。
	 */
	private CAANMsg callEKU0011A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String kojiakNo
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKU0011A010への呼び出しパラメータ設定
		template = new CAANMsg(EKU0011A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKU0011A010SCInMsg(template, kojiakNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		return resultMsgs[0];
	}
	// 20120420 ST2-2012-0000742 END

	// 20120327 ST2-2012-0000473 START
	/**
	 * サービス契約回線内訳使用停止サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiKaisenUcwkNo サービス契約回線内訳番号
	 * @param svcKeiNo サービス契約番号
	 * @return サービス契約回線内訳使用停止の結果
	 * @throws Throwable 例外時にスローされます。
	 */
	private CAANMsg callEKK0251C050SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiKaisenUcwkNo,
			String svcKeiNo
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0251C050への呼び出しパラメータ設定
		template = new CAANMsg(EKK0251C050CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0251C050SCInMsg(template, svcKeiKaisenUcwkNo, svcKeiNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		svcKeiUpdDtm = resultMsgs[0].getString(EKK0251C050CBSMsg.KK0251_UPD_DTM);
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);

		return resultMsgs[0];
	}
	// 20120327 ST2-2012-0000473 END

	/**
	 * 申込内容承認登録サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param trgt_data 
	 * @return 申込内容承認登録の結果
	 * @throws Throwable 例外時にスローされます。
	 */
	private CAANMsg callEKK0011D020SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String,Object> trgt_data
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0011D020への呼び出しパラメータ設定
		template = new CAANMsg(EKK0011D020CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0011D020SCInMsg(template, inHash, trgt_data);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		return resultMsgs[0];
	}

	/**
	 * 申込明細照査・後続業務依頼サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data 業務パラメータ
	 * @param msgEKK0011D020 申込内容承認登録の実行結果
	 * @return 申込明細照査・後続業務依頼の結果
	 * @throws Throwable 例外時にスローされます。
	 */
	private CAANMsg callEKK0021C060SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String,Object> trgt_data,
			CAANMsg msgEKK0011D020
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0021C060への呼び出しパラメータ設定
		template = new CAANMsg(EKK0021C060CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0021C060SCInMsg(template, trgt_data, msgEKK0011D020);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		return resultMsgs[0];
	}

	// SEP-0016-00-00 照査前の契約キャンセル・回復時の更新仕様について ADD START
	/**
	 * 申込明細照査・後続業務依頼サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiNo サービス契約番号
	 * @return 申込明細照査・後続業務依頼の結果
	 * @throws Throwable 例外時にスローされます。
	 */
	private CAANMsg callEKK0081B013SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiNo
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0081B013への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081B013CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0081B013SCInMsg(template, svcKeiNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		return resultMsgs[0];
	}
	// SEP-0016-00-00 ADD END

	/**
	 * 申込サービス契約内訳一覧照会サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param mskmNo 申込番号
	 * @return 申込サービス契約内訳一覧照会の結果
	 * @throws Throwable 例外時にスローされます。
	 */
	private CAANMsg callEKK0011B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String mskmNo
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0011B001への呼び出しパラメータ設定
		template = new CAANMsg(EKK0011B001CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0011B001SCInMsg(template, mskmNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		return resultMsgs[0];
	}

	/**
	 * EKK0011C060_申込キャンセル
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param mskmDtlInfoList 申込明細一意照会結果リスト
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK0011C060SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			ArrayList<HashMap<String, Object>> mskmDtlInfoList
	) throws Throwable
	{
		CAANMsg template = null;

		// EKK0011C060への呼び出しパラメータ設定
		template = new CAANMsg(EKK0011C060CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0011C060SCInMsg(template, mskmDtlInfoList);

		// ST2-2012-0000889 2012/05/13 ADD START
		// 明細が１件も無い場合は何もせず戻る
		CAANMsg[] ekk0011c060CBsMsg = template.getCAANMsgList(EKK0011C060CBSMsg.EKK0011C060CBSMSG1LIST);
		if (ekk0011c060CBsMsg == null || ekk0011c060CBsMsg.length == 0)
		{
			return;
		}
		// ST2-2012-0000889 2012/05/13 ADD END

		// SIF実行
		callScCmn(param, handle, template);
	}

	// ANK-1306-00-00 2013/01/24 ADD START
	/**
	 * EKK1021B003 一時金設定一覧照会を実行します
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 設定条件
	 * @param resultHash 一時金設定一覧照会結果
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 任意の例外
	 */
	private int callEKK1021B003SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		int status;

		// EKK1021B003への呼び出しパラメータ設定
		template = new CAANMsg(EKK1021B003CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK1021B003SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK1021B003, mappingCAANOutMsg(EKK1021B003CBSMsg.EKK1021B003CBSMSG1LIST, resultMsgs));
		}

		return status;
	}

	/**
	 * 一時金設定変更サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiNo サービス契約番号
	 * @param inHash 設定条件
	 * @param resultHash 一時金設定変更結果
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private int callEKK1021C010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		int status = 0;

		// 一時金設定一覧照会の結果取得
		HashMap<String, Object> eKK1021B003Hash = null;
		eKK1021B003Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK1021B003 + "tmp");

		// EKK1021C010への呼び出しパラメータ設定
		template = new CAANMsg(EKK1021C010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK1021C010SCInMsg(template, inHash, eKK1021B003Hash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK1021C010, mappingCAANOutMsgAdd(resultMsgs));
		}

		return status;
	}
	// ANK-1306-00-00 2013/01/24 ADD END

	/**
	 * EKK0021C070_申込明細キャンセル
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param mskmDtlNo 申込明細番号
	 * @param updDtm 更新年月日時分秒
	 * @return 申込明細キャンセルの結果
	 * @throws Throwable 例外時にスローされます。
	 */
	private CAANMsg callEKK0021C070SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String mskmDtlNo,
			String updDtm
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0021C070への呼び出しパラメータ設定
		template = new CAANMsg(EKK0021C070CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0021C070SCInMsg(template, mskmDtlNo, updDtm);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		return resultMsgs[0];
	}

	/**
	 * ECK0011A010 お客様一意照会を実行します（カレントを取得）
	 * <br/>
	 * オプトインメール受信設定の無効化にあたり、KK0011の更新年月日時分秒を取得します
	 * 
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash サービス契約一意照会結果
	 * @param resultHash 照会結果
	 * @throws Throwable 任意の例外
	 * @since 2012-08-17 IT1-2012-0000943対応（対策TAI-2012-0000087）
	 */
	private HashMap<String, Object> callECK0011A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// ECK0011A010への呼び出しパラメータ設定
		template = new CAANMsg(ECK0011A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinECK0011A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		HashMap<String, Object> resultHash = mappingCAANOutMsgOne(ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST, resultMsgs);

		// お客様系の採集更新年月日時分秒
		String custUpdDtm = (String)resultHash.get(ECK0011A010CBSMsg1List.LAST_UPD_DTM);
		cancelSvcKeiMapper.setCustUpdDtm(custUpdDtm);

		return resultHash;
	}

	/**
	 * 割賦契約処理用SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @param sifID サービスインターフェース
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callKAPPUSC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String sifID
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;
		// LT-2013-0000163 2013/07/10 ADD START 割賦のステータスにより処理を切り分け
		// 割賦契約一意照会マップ
		HashMap<String, Object> eKK2541A010map = new HashMap<String, Object>();
		// LT-2013-0000163 2013/07/10 ADD START 割賦のステータスにより処理を切り分け

		int status = 0;

		if(sifID.equals(TEMPLATE_ID_EKK2541B001))
		{
			// 割賦契約一覧照会（機器提供サービス契約番号）SIFを呼び出し
			template = new CAANMsg(EKK2541B001CBSMsg.class.getName());
			cancelSvcKeiMapper.mappingEKK2541B001InMsg(template, resultHash);
		}
		else if(sifID.equals(TEMPLATE_ID_EKK2541C170))
		{
			// 割賦契約キャンセルSIFを呼び出し
			template = new CAANMsg(EKK2541C170CBSMsg.class.getName());
			cancelSvcKeiMapper.mappingEKK2541C170InMsg(template, inHash, resultHash);
		}
		// LT-2013-0000163 2013/07/10 MOD START 割賦のステータスにより処理を切り分け
		else if(sifID.equals(TEMPLATE_ID_EKK2541C190))
		{
			// 割賦情報一意照会SIFを呼出
			eKK2541A010map = callEKK2541A010SC(param, handle, resultHash);
			
			// 割賦契約解約SIFを呼び出し
			template = new CAANMsg(EKK2541C190CBSMsg.class.getName());
			cancelSvcKeiMapper.mappingEKK2541C190InMsg(template, inHash, resultHash, eKK2541A010map);
		}
		else if(sifID.equals(TEMPLATE_ID_EKK2541C080))
		{
			// 割賦情報一意照会SIFを呼出
			eKK2541A010map = callEKK2541A010SC(param, handle, resultHash);
			
			// 割賦契約解約SIFを呼び出し
			template = new CAANMsg(EKK2541C080CBSMsg.class.getName());
			cancelSvcKeiMapper.mappingEKK2541C080InMsg(template, inHash, eKK2541A010map);
		}
		// LT-2013-0000163 2013/07/10 MOD END 割賦のステータスにより処理を切り分け

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			if(sifID.equals(TEMPLATE_ID_EKK2541B001))
			{
				resultHash.put(TEMPLATE_ID_EKK2541B001, cancelSvcKeiMapper.mappingEKK2541B001SCOutMsg(resultMsgs));
			}
			else if(sifID.equals(TEMPLATE_ID_EKK2541C170))
			{
				resultHash.put(TEMPLATE_ID_EKK2541C170, cancelSvcKeiMapper.mappingEKK2541C170CSCOutMsg(resultMsgs));
			}
			// LT-2013-0000163 2013/07/10 MOD START 割賦のステータスにより処理を切り分け
			else if(sifID.equals(TEMPLATE_ID_EKK2541C190))
			{
				resultHash.put(TEMPLATE_ID_EKK2541C190, cancelSvcKeiMapper.mappingEKK2541C170CSCOutMsg(resultMsgs));
			}
			else if(sifID.equals(TEMPLATE_ID_EKK2541C080))
			{
				resultHash.put(TEMPLATE_ID_EKK2541C080, cancelSvcKeiMapper.mappingEKK2541C170CSCOutMsg(resultMsgs));
			}
			// LT-2013-0000163 2013/07/10 MOD END 割賦のステータスにより処理を切り分け
		}

		return status;
	}

	/**
	 * 番ポ工事一覧照会サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash サービスOUT結果のハッシュ
	 * @return ETU0011B018SCのリターンコード
	 * @throws RequestParameterException, SCException　例外時にスローされます
	 */
	private void callETU0011B018SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// templateとしてETU0011B018形式のクラスを生成
		template = new CAANMsg(ETU0011B018CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingETU0011B018SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(ETU0011B018CBSMsg.ETU0011B018CBSMSG1LIST,resultMsgs));
	}

	/**
	 * 番ポ工事一意照会サービスIFを呼び出し
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	サービスOUT結果のハッシュ
	 * @return				ETU0011A010SCのリターンコード
	 * @throws	RequestParameterException, SCException　例外時にスローされます
	 */
	private void callETU0011A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// ETU0011A010への呼び出しパラメータ設定
		template = new CAANMsg(ETU0011A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingETU0011A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(ETU0011A010CBSMsg.ETU0011A010CBSMSG1LIST, resultMsgs));
	}

	// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 START
	/**
	 * 通知書一覧照会（SYSID）サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param sysid SYSID
	 * @return 通知書一覧照会（SYSID）の結果
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK0561B002SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String sysid,
			ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0561B002への呼び出しパラメータ設定
		template = new CAANMsg(EKK0561B002CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0561B002SCInMsg(template, sysid);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0561B002CBSMsg.EKK0561B002CBSMSG1LIST, resultMsgs));
	}
	// OM-2014-0001140 照査取消後にID通知書が出力されない 2014/04/24 END

	/*********************************************************************************************************************/
	/** これ以下はサービスIF用の共通メソッド                                                                            **/
	/*********************************************************************************************************************/

	/**
	 * リクエストパラメータからアプリ固有のパラメータ部分だけを抜き出す
	 * @param param リクエストパラメータ
	 * @return パラメータ
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	private HashMap<String, Object> analyzeRequestParam(IRequestParameterReadWrite param)
	throws RequestParameterException
	{

		HashMap<String, Object> retParam = new HashMap<String, Object>();
		HashMap<String, Object> element = null;		
		element = (HashMap<String, Object>)param.getData(REQ_TRGT_DATA);

		//呼び出しパターン番号
		retParam.put(REQ_PARAM_CALL_PTN_NO, element.get(REQ_PARAM_CALL_PTN_NO));
		//サービス契約番号
		retParam.put(REQ_PARAM_SVC_KEI_NO, element.get(REQ_PARAM_SVC_KEI_NO));
		//異動区分
		retParam.put(REQ_PARAM_IDO_DIV, element.get(REQ_PARAM_IDO_DIV));
		//進捗ステータス
		retParam.put(REQ_PARAM_PRG_STAT, element.get(REQ_PARAM_PRG_STAT));
		//工事キャンセル年月日
		retParam.put(REQ_PARAM_KOJI_CANCEL_YMD, element.get(REQ_PARAM_KOJI_CANCEL_YMD));
		//工事キャンセル理由コード
		retParam.put(REQ_PARAM_KOJI_CANCEL_RSN_CD, element.get(REQ_PARAM_KOJI_CANCEL_RSN_CD));
		//工事キャンセル理由メモ
		retParam.put(REQ_PARAM_KOJI_CANCEL_RSN_MEMO, element.get(REQ_PARAM_KOJI_CANCEL_RSN_MEMO));
		//工事NGデータ判定フラグ
		retParam.put(REQ_PARAM_KOJI_NG_DATA_JDG_FLG, element.get(REQ_PARAM_KOJI_NG_DATA_JDG_FLG));
		//IN-工事案件中止理由コード１
		retParam.put(REQ_PARAM_KOJIAK_STP_RSN_CD_1, element.get(REQ_PARAM_KOJIAK_STP_RSN_CD_1));		
		//ANK-0406-00-0007_20120717_ADD_START
		//IN-工事案件中止理由コード２
		retParam.put(REQ_PARAM_KOJIAK_STP_RSN_CD_2, element.get(REQ_PARAM_KOJIAK_STP_RSN_CD_2));
		//業務連絡備考
		retParam.put(REQ_PARAM_WORK_RRK_BIKO, element.get(REQ_PARAM_WORK_RRK_BIKO));
		//ANK-0406-00-0007_20120717_ADD_END
		//異動理由データリスト(異動理由コードの配列)
		retParam.put(REQ_PARAM_IDO_RSN_DATA_LIST, element.get(REQ_PARAM_IDO_RSN_DATA_LIST));
		//ANK-0397-00-00_20120927_ADD_START
		//申込書番号
		retParam.put(REQ_MSKMSHO_NO, element.get(REQ_MSKMSHO_NO));
		//申込書明細番号
		retParam.put(REQ_MSKMSHO_DTL_NO, element.get(REQ_MSKMSHO_DTL_NO));
		//ANK-0397-00-00_20120927_ADD_END
		// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/27 START
		// 組織コード
		retParam.put(REQ_ORG_CD, element.get(REQ_ORG_CD));
		// 組織名
		retParam.put(REQ_ORG_NM, element.get(REQ_ORG_NM));
		// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/27 END
//ANK-3732-00-00 ADD START
		// 工事案件番号
		retParam.put(REQ_PARAM_KOJIAK_NO, element.get(REQ_PARAM_KOJIAK_NO));
//ANK-3732-00-00 ADD END
		return retParam;

	}


	/**
	 * CAANMsg[]の結果をHashとして抽出する（一覧照会用）
	 * @param workMapKey テンプレートリストのマップキー
	 * @param resultMsgs テンプレートリスト
	 * @return サービスＩＦ実行の結果部分(ArrayListのハッシュマップ)
	 */
	private ArrayList<HashMap<String, Object>> mappingCAANOutMsg(String workMapKey,CAANMsg[] resultMsgs)
	{
		ArrayList<HashMap<String, Object>> retHashList = null;
		CAANMsg[] msgs = null;

		// 結果の抽出
		retHashList = new ArrayList<HashMap<String, Object>>();
		msgs = resultMsgs[0].getCAANMsgList(workMapKey);

		if(msgs != null)
		{
			for(int i = 0 ; i < msgs.length ; i++)
			{
				retHashList.add(msgs[i].getMsgData());
			}
		}

		return retHashList;
	}

	/**
	 * CAANMsg[]の結果をHashとして抽出する（一意照会用）
	 * @param workMapKey テンプレートリストのマップキー
	 * @param resultMsgs テンプレートリスト
	 * @return EKK0081A010SCの結果部分
	 */
	private HashMap<String, Object> mappingCAANOutMsgOne(String workMapKey,CAANMsg[] resultMsgs)
	{
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;

		// 結果の抽出
		msg = resultMsgs[0].getCAANMsgList(workMapKey)[0];

		if(msg != null)
		{
			retHash = msg.getMsgData();
		}

		return retHash;
	}

	/**
	 * CAANMsg[]の結果をHashとして抽出する（登録用）
	 * @param resultMsgs EKK0451C030のテンプレートリスト
	 * @return EKK0451C030の結果部分
	 */
	private HashMap<String, Object> mappingCAANOutMsgAdd(CAANMsg[] resultMsgs)
	{
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;

		// 結果の抽出
		msg = resultMsgs[0];

		// 結果の取得
		retHash = msg.getHashMap();

		return retHash;
	}

	/**
	 * エラーチェック処理
	 * 
	 * @param msgList サービスインタフェース実行結果
	 * return void
	 * @throws SCCallException 
	 */
	private void errChk(Map<?, ?> msgList) 
	throws SCCallException
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		int returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		// ステータス
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if ((0 != returnCode) || (0 != templateStatus))
		{
			throw new SCCallException(ERR_MSG, String.valueOf(returnCode), templateStatus);
		}
	}

	/**
	 * オブジェクトに値が設定されているか判定する
	 * 
	 * @param arg0 判定するオブジェクト
	 * @return オブジェクトに値が設定されていない場合はtrue
	 */
	private boolean isNull(Object arg0) 
	{
		if (arg0 == null) 
		{
			return true;
		}

		return 0 == arg0.toString().length();
	}

	/**
	 * ユーザ定義文字列がユーザ情報になければデータを作成します。
	 * <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;
	}

	/**
	 * サービス種別コードの取得処理です。
	 * サービスコード、料金グループコードからサービスを判定する。
	 * <br>
	 * @param svcCd サービスコード
	 * @param prcGrpCd 料金グループコード
	 * @return サービス種別コード
	 */

	private int getSvcSbtCd(String svcCd, String prcGrpCd)
	{
		int svcSbtCd = SVC_SBT_CD_DFLT;

		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;
	}


	/**
	 * 処理対象外ステータス判定処理です。
	 * <br>
	 * @param stat 各サービス契約ステータス
	 * @return True キャンセル処理対象 False キャンセル処理対象外
	 */
	private boolean isTrgtBySvcKeiStat(String stat)
	{
		if (stat.equals(STAT_DSL_ZUMI) || stat.equals(STAT_CNCL_ZUMI))
		{
			return false;
		}

		return true;
	}


	/**
	 * 状況に適するキャンセル理由コードを取得します。
	 * 呼び出しパターン、異動理由から適するキャンセル理由コードを割り出します。
	 * <br>
	 * @param trgt_data アプリ固有のパラメータ
	 * @return キャンセル理由コード
	 */
	private String getCancelRtnCd( HashMap<String, Object> trgt_data )
	{
		String callPtnNo = null;
		String kojiNGdatajdgflg = null;
		String idoRsn = null;
		ArrayList inList = null;

		callPtnNo = (String)trgt_data.get(REQ_PARAM_CALL_PTN_NO );
		kojiNGdatajdgflg = (String)trgt_data.get(REQ_PARAM_KOJI_NG_DATA_JDG_FLG );


		if (callPtnNo.equals(CALL_PTN_NO_1))
		{
			//呼び出しパターンが１の場合

			if (kojiNGdatajdgflg.equals(KOJI_NG_DATA_FLG_ON))
			{
				// 工事ＮＧ保持期間経過データの場合
				return CANCEL_RSN_CD_03;
			}
			else
			{
				// 工事ＮＧ保持期間経過データ以外の場合
				return CANCEL_RSN_CD_02;
			}
		}
		else if ( callPtnNo.equals(CALL_PTN_NO_2) )
		{
			//呼び出しパターンが２の場合
			return CANCEL_RSN_CD_04;
		}
		else if ( callPtnNo.equals(CALL_PTN_NO_3) )
		{
			//呼び出しパターンが３の場合
			return CANCEL_RSN_CD_07;
		}
		else
		{
			// 呼び出しパターンが４の場合

			// 異動理由の一件目を取得
			inList = (ArrayList) trgt_data.get(REQ_PARAM_IDO_RSN_DATA_LIST);
			if (inList.size() != 0) {
				HashMap childMap = (HashMap) inList.get(0);
				idoRsn = (String) childMap.get(REQ_PARAM_IDO_RSN_CD);
			}

			// 申し出によるキャンセルの場合
			if(
					idoRsn.equals(IDO_RSN_CD_D7) 
					|| idoRsn.equals(IDO_RSN_CD_D8) 
					|| idoRsn.equals(IDO_RSN_CD_D9) 
					|| idoRsn.equals(IDO_RSN_CD_E0) 
					|| idoRsn.equals(IDO_RSN_CD_E1) 
					|| idoRsn.equals(IDO_RSN_CD_E2) 
					|| idoRsn.equals(IDO_RSN_CD_E3) 
					|| idoRsn.equals(IDO_RSN_CD_E4) 
					|| idoRsn.equals(IDO_RSN_CD_E5) 
					|| idoRsn.equals(IDO_RSN_CD_E6) 
					|| idoRsn.equals(IDO_RSN_CD_E7) 
					|| idoRsn.equals(IDO_RSN_CD_F3) 
					|| idoRsn.equals(IDO_RSN_CD_G4)
			) 
			{
				return CANCEL_RSN_CD_01;
			}
			// 宅内工事NGキャンセルの場合
			else if ( idoRsn.equals(IDO_RSN_CD_E9 ) )
			{
				return CANCEL_RSN_CD_02;
			}
			// 審査NGキャンセルの場合
			else if (
					idoRsn.equals(IDO_RSN_CD_F1)
					|| idoRsn.equals(IDO_RSN_CD_F2) 
					|| idoRsn.equals(IDO_RSN_CD_G0)
			)
			{
				return CANCEL_RSN_CD_04;
			}
			// その他理由によるキャンセルの場合
			else if (
					idoRsn.equals(IDO_RSN_CD_56)
					|| idoRsn.equals(IDO_RSN_CD_E8) 
					|| idoRsn.equals(IDO_RSN_CD_F0) 
					|| idoRsn.equals(IDO_RSN_CD_G1) 
					|| idoRsn.equals(IDO_RSN_CD_G2) 
					|| idoRsn.equals(IDO_RSN_CD_G3)
			)
			{
				return CANCEL_RSN_CD_05;
			}
			else
			{
				// それ以外は現状こない。エラーになる。
				return CANCEL_RSN_CD_05;
			}
		}
	}
	
	//▼▼▼▼▼【ANK-2056-00-00】光電話セレクトオプションパックADD START▼▼▼▼▼
	/**
	 * 電話セレクトオプションパック操作部品実行の実行
	 * 
	 * @param param
	 * @param handle
	 * @param trgt_data
	 * @param ekk0081a010Map
	 * @param svc_kei_ucwk_no 
	 * @param workField 
	 * @throws Throwable 
	 * @since 2011-12-12
	 */
	private void executeTelSelectOpPackOperateCC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> eKK0081A010Hash,
			String svc_kei_ucwk_no,
			HashMap<String, Object> workField
	) throws Throwable
	{	
		
		//処理区分
		String trnDiv = "";
		//パック区分
		String packDiv ="";
	    //電話セレクトオプションパック操作部品に渡すサービス契約内訳番号
		String SvcKeiUcwkNo = svc_kei_ucwk_no;
		
		//  電話セレクトオプションパック操作部品実行処理
		String fixedText = "TelSelectOpPackCC";
		JKKTelSelectOpPackOperateCC telSelectOpPackCC = new JKKTelSelectOpPackOperateCC();
		
		//処理区分を(照会)にする
		trnDiv = "00" ;
		cancelSvcKeiMapper.editJKKTelSelectOpPackOperate(
				param,
				trgt_data,
				eKK0081A010Hash,
				trnDiv,
				packDiv,
				SvcKeiUcwkNo,
				workField,
				fixedText
		);
		
		//電話セレクトオプションパック操作部品CC(照会)実行
		telSelectOpPackCC.execute(handle, param, fixedText);
		
		HashMap outMap = (HashMap)param.getData(fixedText);
		ArrayList<HashMap<String, String>> wrib_svc_kei_list = (ArrayList<HashMap<String, String>>)outMap.get("wrib_svc_kei_list");
		
		//結果のリスト分ループ処理
		for (int j = 0; wrib_svc_kei_list != null && wrib_svc_kei_list.size() > j; j++)
		{
			HashMap<String, String>wrib_svc_kei_info = wrib_svc_kei_list.get(j);
			//割引サービス契約ステータスを取得
			String wrib_svc_kei_stat = (String)wrib_svc_kei_info.get("wrib_svc_kei_stat");
			//パック割区分を取得
			packDiv = (String)wrib_svc_kei_info.get("pack_div");
			
			// 変更前の割引サービス契約ステータスが「解約済」未満である場合
			if (JKKSvcConst.SVC_KEI_STAT_910.compareTo(wrib_svc_kei_stat) > 0)
			{
				//電話セレクトオプションパック操作部品CC(解約)を呼び出す。	
				//処理区分を(解約)にする
				trnDiv = "02" ;
				cancelSvcKeiMapper.editJKKTelSelectOpPackOperate(
						param,
						trgt_data,
						eKK0081A010Hash,
						trnDiv,
						packDiv,
						SvcKeiUcwkNo,
						workField,
						fixedText
				);
				//電話セレクトオプションパック操作部品CC(解約)実行
				telSelectOpPackCC.execute(handle, param, fixedText);
				//返却値の更新年月日時分秒を入れる
				svcKeiUpdDtm  = (String) outMap.get("upd_dtm");
				cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
			}
		}

	}
	//▲▲▲▲▲【ANK-2056-00-00】光電話セレクトオプションパック ADD E N D▲▲▲▲▲

	/**
	 * 割引サービス契約自動適用CCの実行
	 * 
	 * @param param
	 * @param handle
	 * @param trgt_data
	 * @param ekk0081a010Map
	 * @param workField 
	 * @throws Throwable 
	 * @since 2011-12-12
	 */
	private void executeWribAutoAplyCC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> ekk0081a010Map,
			HashMap<String,Object> workField
	) throws Throwable
	{
		String mskmNo = (String) workField.get(MSKM_NO);

		// 割引サービス自動適用CC実行処理
		String workWrisvcAutoAplyDataKey = "WrisvcAutoAplyCC";
		// 2012-04-19 変45 EDIT_START
		createUserData(param, workWrisvcAutoAplyDataKey);
		// 2012-04-19 変45 EDIT_END
		JKKWrisvcAutoAplyCC wrisvcAutoAplyCC = new JKKWrisvcAutoAplyCC();

// 2013-01-06 住所変更キャンセル IT故障100041 修正 start
//		editMapWrisvcAutoAply(param, workWrisvcAutoAplyDataKey,
//				IDO_KBN_CANCEL,
//				mskmNo,
//				ekk0081a010Map
//				// IT1-2012-0002147 2012-11-26 ADD_START
//				, workField
//				// IT1-2012-0002147 2012-11-26 ADD_END
//		);

		// 割引サービス自動適用CCに渡す異動区分
		String idoDiv = "";
		// パラメータの異動区分が住所変更・登録 の場合、その異動区分を設定
		if (isAddChg(trgt_data))
		{
			idoDiv = IDO_KBN_ADCHGADD;
		}
		else
		{
			// 上記以外、"00008"をCCに渡す
			idoDiv = IDO_KBN_CANCEL;
		}
		cancelSvcKeiMapper.editMapWrisvcAutoAply(
				param,
				workWrisvcAutoAplyDataKey,
				idoDiv,
				mskmNo,
				ekk0081a010Map,
				workField
		);
		// 2013-01-06 住所変更キャンセル IT故障100041 修正 end
		wrisvcAutoAplyCC.execute(handle, param, workWrisvcAutoAplyDataKey);

	}


	/**
	 * キャンセル対象の申込明細番号を作業領域に保持する
	 * 
	 * @param workField 作業マップ
	 * @param mskmDtlNo 申込明細番号
	 */
	private void putMskmDtlNoToWorkField(HashMap<String, Object> workField, String mskmDtlNo)
	{
		if (isNull(mskmDtlNo))
		{
			return;
		}

		ArrayList<String> mskmDtlNoList = (ArrayList<String>)workField.get(MSKM_DTL_NO_LIST);
		if (mskmDtlNoList == null)
		{
			mskmDtlNoList = new ArrayList<String>();
			workField.put(MSKM_DTL_NO_LIST, mskmDtlNoList);
		}

		if (!mskmDtlNoList.contains(mskmDtlNo))
		{
			mskmDtlNoList.add(mskmDtlNo);
		}
	}


	/**
	 * 
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workField 結果取得領域
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callCancelMskm(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> workField )
	throws Throwable
	{
		ArrayList<String> mskmDtlNoList = (ArrayList<String>)workField.get(MSKM_DTL_NO_LIST);
		if (mskmDtlNoList == null || mskmDtlNoList.size() == 0)
		{
			// キャンセル対象の申込明細番号リストが存在しない場合、処理終了

			return;
		}

		// 申込明細番号リストのループ
		HashMap<String, ArrayList<HashMap<String, Object>>> mskmDtlInfoListMap = new HashMap<String, ArrayList<HashMap<String, Object>>>();
		ArrayList<String> mskmNoList = new ArrayList<String>();
		for (String mskmDtlNo : mskmDtlNoList)
		{
			// 申込明細一意照会
			HashMap<String, Object> eKK0021A010Map = new HashMap<String, Object>();
			callEKK0021A010SC(param, handle, mskmDtlNo, eKK0021A010Map);
			String mskmNo = (String)eKK0021A010Map.get(EKK0021A010CBSMsg1List.MSKM_NO);

			// 申込番号リストを生成
			if (!mskmNoList.contains(mskmNo))
			{
				mskmNoList.add(mskmNo);
			}

			// 申込番号をキーに申込明細一意照会結果リストをセット
			ArrayList<HashMap<String, Object>> mskmDtlInfoList = mskmDtlInfoListMap.get(mskmNo);
			if (mskmDtlInfoList == null)
			{
				mskmDtlInfoList = new ArrayList<HashMap<String,Object>>();
				mskmDtlInfoListMap.put(mskmNo, mskmDtlInfoList);
			}
			mskmDtlInfoList.add(eKK0021A010Map);
		}

		// 申込番号リストのループ
		for (String mskmNo : mskmNoList)
		{
			// 申込明細一意照会結果リストを取り出す
			ArrayList<HashMap<String, Object>> mskmDtlInfoList = mskmDtlInfoListMap.get(mskmNo);

			// IT1-2013-0000302 EDIT_START S/IF変更
			// 申込サービス契約内訳一覧照会
//			CAANMsg eKK0011B020Msg = callEKK0011B020SC(param, handle, mskmNo);
//			CAANMsg[] eKK0011B020Msg1List = eKK0011B020Msg.getCAANMsgList(EKK0011B020CBSMsg.EKK0011B020CBSMSG1LIST);
			CAANMsg eKK0011B001Msg = callEKK0011B001SC(param, handle, mskmNo);
			CAANMsg[] eKK0011B001Msg1List = eKK0011B001Msg.getCAANMsgList(EKK0011B001CBSMsg.EKK0011B001CBSMSG1LIST);

			// 申込サービス契約内訳一覧照会の結果でループ
			boolean isMskmDtlCancel = false;
//			for (int i = 0; i < eKK0011B020Msg1List.length; i++)
//			{
//				CAANMsg eKK0011B020Msg1 = eKK0011B020Msg1List[i];
//				String mskmDtlNo1 = eKK0011B020Msg1.getString(EKK0011B020CBSMsg1List.MSKM_DTL_NO);
//				String mskmDtlStat1 = eKK0011B020Msg1.getString(EKK0011B020CBSMsg1List.MSKM_DTL_STAT);
//				// ST2-2012-0000889 2012/05/13 ADD START
//				String mskmStat = eKK0011B020Msg1.getString(EKK0011B020CBSMsg1List.MSKM_STAT);
//				// ST2-2012-0000889 2012/05/13 ADD END
			for (int i = 0; i < eKK0011B001Msg1List.length; i++)
			{
				CAANMsg eKK0011B001Msg1 = eKK0011B001Msg1List[i];
				String mskmDtlNo1 = eKK0011B001Msg1.getString(EKK0011B001CBSMsg1List.MSKM_DTL_NO);
				String mskmDtlStat1 = eKK0011B001Msg1.getString(EKK0011B001CBSMsg1List.MSKM_DTL_STAT);
				String mskmStat = eKK0011B001Msg1.getString(EKK0011B001CBSMsg1List.MSKM_STAT);

				// IT1-2013-0000302 EDIT_END S/IF変更
				if (!MSKM_DTL_STAT_CANCEL_ZM.equals(mskmDtlStat1))
				{
					// ST2-2012-0000889 2012/05/13 ADD START
					// 申込自体がキャンセルされている場合は、明細単位にキャンセルを実施する
					if (MSKM_STAT_CANCEL_ZM.equals(mskmStat))
					{
						isMskmDtlCancel = true;
						break;
					}
					// ST2-2012-0000889 2012/05/13 ADD END

					// 申込明細ステータスがキャンセル済以外の場合

					// 申込明細一意照会結果リストに同一申込明細番号が存在するかチェック
					boolean isSameMskmDtlNo = false;
					for (HashMap<String, Object> mskmDtlInfo : mskmDtlInfoList)
					{
						String mskmDtlNo2 = (String)mskmDtlInfo.get(EKK0021A010CBSMsg1List.MSKM_DTL_NO);

						if (mskmDtlNo1.equals(mskmDtlNo2))
						{
							isSameMskmDtlNo = true;
							break;
						}
					}

					if (!isSameMskmDtlNo)
					{
						// 同一申込明細番号が存在しなかった場合

						// 申込明細単位のキャンセルフラグを立てる
						isMskmDtlCancel = true;
						break;
					}
				}
			}

			if (isMskmDtlCancel)
			{
				// 申込明細単位のキャンセルの場合

				String updDtm = null;
				for (HashMap<String, Object> mskmDtlInfo : mskmDtlInfoList)
				{
					String mskmDtlNo = (String)mskmDtlInfo.get(EKK0021A010CBSMsg1List.MSKM_DTL_NO);

					// ST2-2012-0000889 2012/05/13 ADD START
					// 申込明細ステータスがキャンセルだった場合はキャンセルしない
					String mskmDtlStat = (String)mskmDtlInfo.get(EKK0021A010CBSMsg1List.MSKM_DTL_STAT);
					if (MSKM_DTL_STAT_CANCEL_ZM.equals(mskmDtlStat))
					{
						continue;
					}
					// ST2-2012-0000889 2012/05/13 ADD END

					if (isNull(updDtm))
					{
						updDtm = (String)mskmDtlInfo.get(EKK0021A010CBSMsg1List.LAST_UPD_DTM);
					}

					// 申込明細キャンセル
					CAANMsg eKK0021C070Msg = callEKK0021C070SC(param, handle, mskmDtlNo, updDtm);
					updDtm = eKK0021C070Msg.getString(EKK0021C070CBSMsg.UPD_DTM);
				}
			}
			else
			{
				// 申込単位のキャンセルの場合

				// 申込キャンセル
				callEKK0011C060SC(param, handle, mskmDtlInfoList);
			}
		}
	}



	//ANK-0406-00-0007_20120717_ADD_START
	/**
	 * スマートバリュー異動情報登録CC実行処理
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param trgt_data ターゲットデータ
	 * @param workField work領域（結果保持領域）
	 * @throws Throwable
	 */
	private void executeSmtvlIdoInfAddCC(
			IRequestParameterReadWrite param,
			SessionHandle handle, 
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField
	) throws Throwable
	{
		//スマートバリュー異動情報登録CCをCCとして呼び出し
		String workFixedText = "SmtvlIdoInfAdd";

		HashMap<String, Object> smtvlIdoInfAdd_map = new HashMap<String, Object>();				//スマートバリューマップ

		// OM-2013-0003304 住所変更キャンセル時のスマートバリュー異動情報登録処理でシステムエラー 2013/10/17 START
		// ※「LT-2013-0000381 工事取消キャンセルにて工事案件中止理由コードが設定されない」の対応に条件を追加
		String kojiakStpRsnCd1 = (String)trgt_data.get(JKKCancelSvcKeiCC.REQ_PARAM_KOJIAK_STP_RSN_CD_1);
		String kojiakStpRsnCd2 = (String)trgt_data.get(JKKCancelSvcKeiCC.REQ_PARAM_KOJIAK_STP_RSN_CD_2);
		ArrayList<Map> idoRsnDataList = (ArrayList<Map>)trgt_data.get(JKKCancelSvcKeiCC.REQ_PARAM_IDO_RSN_DATA_LIST);
		if (isNull(kojiakStpRsnCd1) && isNull(kojiakStpRsnCd2) && (null == idoRsnDataList || idoRsnDataList.isEmpty()))
		{
			HashMap<String, String> idoRsnHash = new HashMap<String, String>();
			idoRsnHash.put(REQ_PARAM_IDO_RSN_CD, IDO_RSN_CD_E9);
			idoRsnDataList = new ArrayList<Map>();
			idoRsnDataList.add(idoRsnHash);
			trgt_data.put(JKKCancelSvcKeiCC.REQ_PARAM_IDO_RSN_DATA_LIST, idoRsnDataList);
		}
		// OM-2013-0003304 住所変更キャンセル時のスマートバリュー異動情報登録処理でシステムエラー 2013/10/17 END

		//スマートバリュー異動情報登録処理で必要となるデータセットを作成
		//サービス契約番号
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.SVC_KEI_NO, trgt_data.get(REQ_PARAM_SVC_KEI_NO));
		//異動区分
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.IDO_DIV, trgt_data.get(REQ_PARAM_IDO_DIV));
		//進捗ステータス
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.PRG_STAT, trgt_data.get(REQ_PARAM_PRG_STAT));
		//進捗年月日時分秒
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.PRG_DTM, ((HashMap<String,Object>) workField.get(PRG_LIST)).get(EKK1091D010CBSMsg.PRG_DTM));
		//工事案件中止理由コード1
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.KOJIAK_STP_RSN_CD_1, trgt_data.get(REQ_PARAM_KOJIAK_STP_RSN_CD_1));
		//工事案件中止理由コード2
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.KOJIAK_STP_RSN_CD_2, trgt_data.get(REQ_PARAM_KOJIAK_STP_RSN_CD_2));
		//異動理由コードリスト
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.IDO_RSN_CD_LIST,trgt_data.get(REQ_PARAM_IDO_RSN_DATA_LIST));
		/**********************************/
		// スマートバリュー異動詳細コード //
		/**********************************/
		//呼び出しパターン番号を取得
		String callPtnNo = (String)trgt_data.get(REQ_PARAM_CALL_PTN_NO );
		//工事ＮＧデータ判定フラグを取得
		String kojiNGdatajdgflg = (String)trgt_data.get(REQ_PARAM_KOJI_NG_DATA_JDG_FLG );
		String worksmtvlidodtlcd = null;
		//呼び出しパターン
		if( CALL_PTN_NO_1.equals(callPtnNo) ){
			//工事取消契約キャンセルの場合
			if (kojiNGdatajdgflg.equals(KOJI_NG_DATA_FLG_ON)){
				//工事ＮＧ保持期間経過データの場合
				worksmtvlidodtlcd = SMTVL_IDO_DTL_CD_04;
			}
		}else if( CALL_PTN_NO_2.equals(callPtnNo) ){
			//照査NGキャンセルの場合
			worksmtvlidodtlcd  = SMTVL_IDO_DTL_CD_05;
		}else if( CALL_PTN_NO_3.equals(callPtnNo) ){
			//強制解約後の光電話自動キャンセルの場合
			worksmtvlidodtlcd  = SMTVL_IDO_DTL_CD_06;
		}
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.SMTVL_IDO_DTL_CD, worksmtvlidodtlcd);

		//スマートバリュー異動情報登録処理を呼出
		JKKBpCommon.addSmtvlIdoInf(handle, param, smtvlIdoInfAdd_map, workFixedText);

	}
	//ANK-0406-00-0007_20120717_ADD_END


	// 2012/09/03 ANK-0024-05-00 ADD START お客様退会処理追加
	/**
	 * お客様退会共通機能を呼び出す。
	 * <br>
	 * @param handle セッションハンドル
	 * @param sysid 退会対象SYSID
	 * @return void
	 */
	private void callCusTaikaiCmnKino(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			String sysid, String svc_kei_no
	) throws Throwable
	{
		// マップ生成
		HashMap<String, Object> taikaiCCMap = new HashMap<String, Object>();

		// マップ編集
		taikaiCCMap.put("sysid", sysid);
		taikaiCCMap.put("svc_kei_no", svc_kei_no);
		taikaiCCMap.put(JCMConstants.FUNC_CODE_KEY, FUNC_CODE_ONE );
		param.setData(MAP_JCKCUSTTAIKAICMNCC_ID, taikaiCCMap);

		JCKCustTaikaiCmnCC jCKCustTaikaiCmnCC = new JCKCustTaikaiCmnCC();
		jCKCustTaikaiCmnCC.execute(handle, (IRequestParameterReadWrite)param, MAP_JCKCUSTTAIKAICMNCC_ID);
	}
	// 2012/09/03 ANK-0024-05-00 ADD END

	// 2012/09/20 ANK-0546-00-00 ADD START 割賦契約キャンセル処理を追加
	/**
	 * 割賦契約キャンセル・解約処理、一時金取消処理呼び出し
	 * 
	 * @param handle セッションハンドル
	 * @param param  リクエストパラメータ
	 * @param requestParam 機器提供サービス契約一意照会の結果(1レコード分)
	 * @param resultHash 結果領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private int kappu_cancel(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		int statusCode = 0;

		// 割賦契約一覧照会（機器提供サービス契約番号）
		statusCode = callKAPPUSC(param, handle, requestParam, resultHash, TEMPLATE_ID_EKK2541B001);
		if(statusCode != 0)
		{
			return statusCode;
		}
		ArrayList<HashMap<String, Object>> eKK2541B001HashList = 
			(ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK2541B001);

		// 割賦契約が1件も存在しない場合は抜ける
		if(eKK2541B001HashList.size() == 0)
		{
			return 0;
		}

		//サービス契約番号
		String svcKeiNo = (String)requestParam.get(EKK0341A010CBSMsg1List.SVC_KEI_NO);

		// 2012-11-02 IT1-2012-0001867 EDIT_START
		//機器提供サービス契約番号（タブレットorクレードル）
		String kktkSvcKeiNo = (String)requestParam.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);
		// 2012-11-02 IT1-2012-0001867 EDIT_END

		// 配送情報一覧照会処理を実施
		ArrayList<String> haisoStatList = new ArrayList<String>();
		haisoStatList.add(HAISO_STAT_UK_ZM);	// 受付済の情報を検索
		// 2012-11-02 IT1-2012-0001867 ADD_START
		// 全ステータスの配送データ取得
		haisoStatList.add(HAISO_STAT_SJ_ZM);
		haisoStatList.add(HAISO_STAT_SK_ZM);
		haisoStatList.add(HAISO_STAT_KNRYO);
		haisoStatList.add(HAISO_STAT_CHUSI);
		// 2012-11-02 IT1-2012-0001867 ADD_END

		HashMap<String, Object> eDK0011B080Hash = new HashMap<String, Object>();
		JKKBpCommon.searchHaisoInfo(param, handle, svcKeiNo, null, null, null, haisoStatList, eDK0011B080Hash, KKSV019601CC);

		// 配送情報を取り出す
		CAANMsg[] eDK0011B080CBSMSG1list = (CAANMsg[])eDK0011B080Hash.get(EDK0011B080CBSMsg.EDK0011B080CBSMSG1LIST);
		if (eDK0011B080CBSMSG1list == null || eDK0011B080CBSMSG1list.length == 0)
		{
// 2012-11-02 IT1-2012-0001867 EDIT_START
//			// 取得できない場合、処理終了
//			return 0;
// そもそも配送データが取得できない場合でも割賦契約のキャンセルは行う
// 2012-11-02 IT1-2012-0001867 EDIT_END
		}
		else
		{
			// 機器提供サービス番号が一致するものが存在するかどうかチェック
			boolean bHaiso = false;
			for (int i = 0; i < eDK0011B080CBSMSG1list.length; i++)
			{
				HashMap<String, Object> eDK0011B080CBSMsg1 = eDK0011B080CBSMSG1list[i].getMsgData();
				String kktkSvcKeiNoTmp = (String)eDK0011B080CBSMsg1.get(EDK0011B080CBSMsg1List.KKTK_SVC_KEI_NO);
				// 2012-11-02 IT1-2012-0001867 EDIT_START
				String haisoStat = (String)eDK0011B080CBSMsg1.get(EDK0011B080CBSMsg1List.HAISO_STAT);
				// 配送ステータスが受付済みの場合
				if(kktkSvcKeiNo.equals(kktkSvcKeiNoTmp) && HAISO_STAT_UK_ZM.equals(haisoStat))
					// 2012-11-02 IT1-2012-0001867 EDIT_END
				{
					bHaiso = true;
					break;
				}
			}
			// 受付済の配送情報が存在しない場合は抜ける
			if(!bHaiso)
			{
				return 0;
			}
		}


		// ANK-1306-00-00 2013/01/23 ADD START
		boolean isCancelKapKei = false;
		// ANK-1306-00-00 2013/01/23 ADD END
		// 割賦契約のキャンセル処理を行う
		for(int i = 0 ; i < eKK2541B001HashList.size() ; i++)
		{
			resultHash.put(TEMPLATE_ID_EKK2541B001 + "tmp", eKK2541B001HashList.get(i));
			
			// LT-2013-0000163 2013/07/10 MOD START 割賦のステータスにより処理を切り分け
			HashMap<String, Object> eKK2541B001map = eKK2541B001HashList.get(i);
			
			String kapState = (String)eKK2541B001map.get(EKK2541B001CBSMsg1List.KAP_KEI_STAT);

			if (STAT_SHOSA_ZUMI.equals(kapState) || STAT_UK_ZUMI.equals(kapState)) {
				
				statusCode = callKAPPUSC(param, handle, requestParam, resultHash, TEMPLATE_ID_EKK2541C170);
				if(statusCode != 0)
				{
					return statusCode;
				}
				// ANK-1306-00-00 2013/01/23 ADD START
				isCancelKapKei = true;
				// ANK-1306-00-00 2013/01/23 ADD END
				
			} else if (STAT_CNC_ZUMI.equals(kapState)) {
				
				statusCode = callKAPPUSC(param, handle, requestParam, resultHash, TEMPLATE_ID_EKK2541C190);
				if(statusCode != 0)
				{
					return statusCode;
				}
				
				statusCode = callKAPPUSC(param, handle, requestParam, resultHash, TEMPLATE_ID_EKK2541C080);
				if(statusCode != 0)
				{
					return statusCode;
				}
				
				isCancelKapKei = true;
			}
			// LT-2013-0000163 2013/07/10 MOD END 割賦のステータスにより処理を切り分け
			
		}
		// ANK-1306-00-00 2013/01/23 ADD START
		// 割賦契約がキャンセルされた場合、一時金をキャンセルする
		if (isCancelKapKei)
		{
			// 一時金設定一覧照会（申込明細番号）
			statusCode = callEKK1021B003SC(param, handle, requestParam, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}
			ArrayList<HashMap<String, Object>> eKK1021B003HashList = 
				(ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK1021B003);

			// 一時金設定が1件も存在しない場合は抜ける
			if(eKK1021B003HashList.size() == 0)
			{
				return 0;
			}

			for (int i = 0; i < eKK1021B003HashList.size(); i++)
			{
				HashMap<String, Object> eKK1021B003Hash = eKK1021B003HashList.get(i);
				//完了状態コード
				String kapKeiStat = (String)eKK1021B003Hash.get(EKK1021B003CBSMsg1List.FIN_STAT_CD);
				resultHash.put(TEMPLATE_ID_EKK1021B003 + "tmp", eKK1021B003Hash);

				// 一時金設定の完了状態コードが未完了（0）の場合
				if (JKKStrConst.CD01147_MI_KANRYO.equals(kapKeiStat))
				{
					// 一時金設定変更実行処理
					statusCode = callEKK1021C010SC(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
				}
			}
		}
		// ANK-1306-00-00 2013/01/23 ADD END

		return statusCode;
	}


	// KAD-2011-0001102 UI残_No.917 ADD START
	/**
	 * 対応履歴登録処理<br>
	 * <br>
	 * @param	handle		セッションハンドル
	 * @param	param		
	 * @param	fixedText	ユーザー任意文字列
	 * @param	trgt_data	
	 * @param	workField	
	 * @param	svcSbtCd	
	 * @throws	Throwable
	 */
	private void addTaiokrk(SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			HashMap<String, Object> trgt_data,
			HashMap<String, Object> workField,
			int svcSbtCd
	) throws Throwable
	{
		// 電話以外は処理を終える
		if(SVC_SBT_CD_HTEL != svcSbtCd)
		{
			return;
		}

		// サービス契約内訳一意照会結果を取得
		ArrayList<HashMap<String, Object>> eKK0161A010HashList = (ArrayList<HashMap<String, Object>>)workField.get(SVC_KEI_UCWK);

		// サービス契約内訳<eo光電話>一意照会結果を取得
		ArrayList<HashMap<String, Object>> eKK0191A010HashList = (ArrayList<HashMap<String, Object>>)workField.get(SVKEIUW_EOH_TEL);

		// 番ポ工事一覧照会結果を取得
		ArrayList<HashMap<String, Object>> eTU0011B018HashList = (ArrayList<HashMap<String, Object>>)workField.get(BMP_KOJI_ICRN);

		// 結果がどれかNULLだった場合は、処理を終える
		if(eKK0161A010HashList == null || eKK0191A010HashList == null || eTU0011B018HashList == null)
		{
			return;
		}

		for(int i = 0; i < eKK0161A010HashList.size(); i++)
		{
			HashMap<String, Object> eKK0161A010Hash = eKK0161A010HashList.get(i);

			// サービス契約内訳番号取得
			String svcKeiUcwkNo = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO);

			HashMap<String, Object> eTU0011B018Hash = null;

			for(int j = 0; j < eTU0011B018HashList.size(); j++)
			{
				eTU0011B018Hash = eTU0011B018HashList.get(j);

				// サービス契約内訳番号が一致するレコードを取得する
				if(svcKeiUcwkNo.equals(eTU0011B018Hash.get(ETU0011B010CBSMsg1List.SVC_KEI_UCWK_NO)))
				{
					break;
				}
			}

			// 内訳に紐づく番ポ工事一覧照会の値がNULLの場合、処理を終了する
			if(eTU0011B018Hash == null)
			{
				return;
			}

			// 対象のサービス契約内訳レコードに紐ずく、サービス契約内訳＜eo光電話＞のレコードを取得
			HashMap<String, Object> eKK0191A010Hash = null;
			for(int j = 0; j < eKK0191A010HashList.size(); j++)
			{
				eKK0191A010Hash = eKK0191A010HashList.get(j);
				// サービス契約内訳番号が一致するレコードを取得する
				if(svcKeiUcwkNo.equals(eKK0191A010Hash.get(EKK0191A010CBSMsg1List.SVC_KEI_UCWK_NO)))
				{
					break;
				}
			}

			// 対象のサービス契約内訳レコードに紐ずく、サービス契約内訳＜eo光電話＞のレコードがNULLの場合、処理を終了する
			if(eKK0191A010Hash == null)
			{
				return;
			}

			// 番ポ工事ステータス取得
			String bmpKojiStat = (String)eTU0011B018Hash.get(ETU0011B018CBSMsg1List.BMP_KOJI_STAT);

			// 番ポ有無取得
			String bmpUm = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.BMP_UM);

			// 番ポ工事ステータスが「番ポ工事完了」未満で、番ポ有の場合、対応記録を登録する。
			if(
					Integer.parseInt(bmpKojiStat) < Integer.parseInt(BMP_KOJI_STAT_BMP_KOJI_FIN)
					&& JKKStrConst.CD00001_1.equals(bmpUm)
			)
			{
				// 番ポ工事一意照会
				HashMap<String, Object> eTU0011A010Hash = new HashMap<String, Object>();
				callETU0011A010SC(param, handle, eTU0011B018Hash, eTU0011A010Hash);

				// サービス契約一意照会結果を取得
				HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)workField.get(SVC_KEI);

				// お客様一意照会実行処理
				HashMap<String, Object> eCK0011A010Hash = callECK0011A010SC(param, handle, eKK0081A010Hash);

				// ユーザＩＤ
				String opeID = (String)param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
				// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/27 START
				String orgCd = "";
				String orgNm = "";
				// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/27 END

				if(BATSERVICE.equals(opeID))
				{
					// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/27 START
					// バッチ起動時のパラメータは、番ポ対応履歴登録部品内で設定するため、以下コメントアウト
//					// バッチ起動の場合は、番ポ工事一意照会の結果から
//					// LT-2013-0000189 工事連携契約キャンセルの番ポ対応履歴登録時にエラー 2013/07/02 START
////					opeID = (String)eTU0011A010Hash.get(ETU0011A010CBSMsg1List.UPD_OPEACNT);
//					opeID = (String)eTU0011A010Hash.get(ETU0011A010CBSMsg1List.BMP_UK_TNT_USER_ID);
//					// LT-2013-0000189 工事連携契約キャンセルの番ポ対応履歴登録時にエラー 2013/07/02 END
					// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/27 END
				}
				// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/27 START
				// オンライン起動の場合
				else
				{
					orgCd = (String)trgt_data.get(REQ_ORG_CD);
					orgNm = (String)trgt_data.get(REQ_ORG_NM);
				}
				// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/27 END

				HashMap<String, Object> bmpTaiorrkiMap = null;
				// 番ポ対応履歴登録部品マップ
				bmpTaiorrkiMap = cancelSvcKeiMapper.editMapBmpTaiorrki(
						param,
						eKK0081A010Hash,
						eTU0011A010Hash,
						eCK0011A010Hash,
						// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/27 START
//						opeID
						opeID,
						orgCd,
						orgNm
						// OM-2013-0002656 対応履歴情報に「テスト用全機能利用権限者」と登録される 2014/03/27 END
				);

				// 番ポ対応履歴登録部品実行
				JKKBpCommon.addBmpTaiorrki(handle, param, bmpTaiorrkiMap, fixedText);
			}
		}
	}
	// KAD-2011-0001102 ADD END

	// 住所変更キャンセル 100041対応 2013-01-06 ADD START
	/**
	 * 住所変更から呼び出されているかを判定する
	 * @param trgt_data リクエストデータのマップ
	 * @return 住所変更からの場合true、それ以外の場合false
	 */
	private boolean isAddChg(HashMap<String, Object> trgt_data)
	{
		String idoDiv = (String)trgt_data.get(REQ_PARAM_IDO_DIV);
		if (idoDiv != null && IDO_KBN_ADCHGADD.equals(idoDiv))
		{
			return true;
		}
		return false;
	}
	// 住所変更キャンセル 100041対応 2013-01-06 ADD END

	// ST2-2013-0000099 2013/01/17 start
	/**
	 * 契約用対応履歴登録ユーザ取得処理
	 * @param 
	 * @return 契約用対応履歴登録ユーザ
	 */
	public String getTaiorrkAddUser(IRequestParameterReadWrite param, SessionHandle handle) throws Throwable
	{
		// 業務パラメータ管理一意照会サービスＩＦ呼び出し
		HashMap<String, Object> ezm0321A010Hash = new HashMap<String, Object>();
		callEZM0321A010SC(param, handle, WORK_PARAM_ID_TAIORRK_ADD_USER, ezm0321A010Hash);
		// 契約用対応履歴登録ユーザを取得
		return (String)ezm0321A010Hash.get(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
	}
	// ST2-2013-0000099 2013/01/17 end

//	/**
//	 * オプトンメール一覧照会（SYSID,メールアドレス・カレント）サービスＩＦを呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param inHash1 条件用Hash1 (オプションサービス契約＜ＩＳＰ＞照会の結果)
//	 * @param inHash2 条件用Hash2 (サービス契約一意照会の結果)
//	 * @param resultHash サービスOUT結果のハッシュ
//	 * @return サービス契約内訳一覧照会（カレント）のリターンコード
//	 * @throws Throwable 例外時にスローされます。
//	 */
//	private void callECK0141B003SC(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> inHash1,
//			HashMap<String, Object> inHash2,
//			ArrayList<HashMap<String, Object>> resultHashList)
//			throws Throwable		
//	{
//		// 変数定義
//		
//		// リクエストパラメータ
//		HashMap<String, Object> sIFRequest = null;
//		// SIFの実行結果から取得したCAANMsg[]
//		CAANMsg[] resultMsgs = null;
//		// テンプレート情報部（入力時の情報）
//		CAANMsg template = null;
//		// 結果情報域
//		Map<?, ?> sIFResult = null;
//		// 実行ステータス判定
//
//		
//		// 上りデータマッピング情報の作成
//		//リクエストパラメータにメッセージ共通部を設定
//		sIFRequest = editInMsgCmn(param);
//		
//		//templateとしてECK0141B003形式のクラスを生成
//		template = new CAANMsg(ECK0141B003CBSMsg.class.getName());
//		
//		//テンプレート共通部のID,機能コード、検索条件を設定
//		mappingECK0141B003SCInMsg(template, inHash1, inHash2);
//		//テンプレート共通部の固定的な項目を設定
//		editBasicCmn(param, template);
//
//		//条件を詰めたテンプレートクラスの配列を生成し、リクエストパラメータに設定
//		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
//
//		//SIFの呼び出し
//		sIFResult = scCall.run(sIFRequest, handle);
//
//		errChk(sIFResult);
//
//		// 結果の取得
//		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
//
//		
//			//結果を設定
//			resultHashList.addAll(mappingCAANOutMsg(ECK0141B003CBSMsg.ECK0141B003CBSMSG1LIST,resultMsgs));
//			
//		
//
//		
//	}
//
//
//	/**
//	 * templateに対してECK0141B003SCの条件に関する部分を設定する
//	 * @param template 条件の設定先
//	 * @param inHash1 条件用Hash1 (オプションサービス契約＜ＩＳＰ＞照会の結果)
//	 * @param inHash2 条件用Hash2 (サービス契約一意照会の結果)
//	 * @return
//	 */
//	private void mappingECK0141B003SCInMsg(CAANMsg template, HashMap<String, Object> inHash1, HashMap<String, Object> inHash2 )
//	{
//
//		//まずは全条件のNullマッピング
//		fillCAANMSGNullMapping(template, new ECK0141B003CBSMsg().getContents());
//		
//		//テンプレートID(SIFのID)
//		template.set(ECK0141B003CBSMsg.TEMPLATEID, "ECK0141B003");
//
//		//機能コード-オプションサービス契約一覧照会（カレント）
//		template.set(ECK0141B003CBSMsg.FUNC_CODE, FUNC_CODE_ONE);
//
//		//ＫＥＹ＿ＳＹＳＩＤ
//		template.set(ECK0141B003CBSMsg.KEY_SYSID, inHash2.get(EKK0081A010CBSMsg1List.SYSID));
//
//		//ＫＥＹ＿メール
//		template.set(ECK0141B003CBSMsg.KEY_MLAD, inHash1.get(EKK0361A010CBSMsg1List.MLAD));
//
//	}

//	/**
//	 * 支払方法入力支援一覧照会サービスＩＦ呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param inHash 条件用hash
//	 * @param resultHashList 支払方法入力支援一覧照会の結果
//	 * @return ECN0131B006SCのリターンコード
//	 * @throws Throwable 例外時にスローされます。
//	 */
//	private void callECN0131B006SC(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> inHash,
//			ArrayList<HashMap<String, Object>> resultHashList)
//			throws Throwable
//	{
//		
//		HashMap<String, Object> sIFRequest = null;
//		CAANMsg[] resultMsgs = null;
//		CAANMsg template = null;
//		Map<?, ?> sIFResult = null;
//
//
//		// サービスIF共通の情報を設定
//		sIFRequest = editInMsgCmn(param);
//		
//		// ECN0131B006への呼び出しパラメータ設定
//		template = new CAANMsg(ECN0131B006CBSMsg.class.getName());
//		mappingECN0131B006SCInMsg(template, inHash);
//		editBasicCmn(param, template);
//		
//		// リクエスト用クラスの設定
//		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
//
//		// SIFの呼び出し
//		sIFResult = scCall.run(sIFRequest, handle);
//
//		errChk(sIFResult);
//		
//		// 結果の取得
//		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
//
//		String key_svc_kei_no = (String)inHash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);
//		ArrayList<HashMap<String, Object>> resultList = mappingCAANOutMsg(ECN0131B006CBSMsg.ECN0131B006CBSMSGLIST,resultMsgs);
//		ArrayList<HashMap<String, Object>> outArr = new ArrayList<HashMap<String, Object>>();
//		for (int i = 0; i < resultList.size(); i ++)
//		{
//			HashMap<String, Object> rs = resultList.get(i);
//			
//			//指定サービス契約番号のレコードのみ格納		2011-11-24
//			String isp_kessai_svc_kei_no = (String)rs.get(ECN0131B006CBSMsgList.ISP_KSSAI_SVC_KEI_NO);
//			if (null != isp_kessai_svc_kei_no && isp_kessai_svc_kei_no.equals(key_svc_kei_no))		//2012-05-10ヌルポ回避
//			{
//				outArr.add(rs);
//			}
//		}
//
//		// 結果を設定
//		resultHashList.addAll(outArr);
//
//	}
//
//	/**
//	 * templateに対してECN0131B001SCの条件に関する部分を設定する
//	 * @param template 条件の設定先
//	 * @param inHash 条件用hash
//	 */
//	private void mappingECN0131B006SCInMsg(
//			CAANMsg template,
//			HashMap<String, Object> inHash)
//	{
//		
//
//		//まずは全条件のNullマッピング
//		fillCAANMSGNullMapping(template, new ECN0131B006CBSMsg().getContents());
//		
//		//テンプレートID(SIFのID)
//		template.set(ECN0131B006CBSMsg.TEMPLATEID, "ECN0131B006");
//
//		//機能コード--サービス契約一意照会
//		template.set(ECN0131B006CBSMsg.FUNC_CODE, FUNC_CODE_ONE);
//
//		//ＫＥＹ＿ＳＹＳＩＤ
//		template.set(ECN0131B006CBSMsg.KEY_SYSID, inHash.get(EKK0081A010CBSMsg1List.SYSID));
//
//	}

//	/**
//	 * 申込登録サービスＩＦ呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param inHash 条件用hash
//	 * @param resultHash 申込登録の結果
//	 * @param trgt_data 
//	 * @return 申込登録サービスＩＦのリターンコード
//	 * @throws Throwable 例外時にスローされます。
//	 */
//	private void callEKK0011D010SC(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> inHash,
//			HashMap<String, Object>  resultHash, HashMap<String,Object> trgt_data )
//			throws Throwable
//	{
//		
//		HashMap<String, Object> sIFRequest = null;
//		CAANMsg[] resultMsgs = null;
//		CAANMsg template = null;
//		Map<?, ?> sIFResult = null;
//
//
//		// サービスIF共通の情報を設定
//		sIFRequest = editInMsgCmn(param);
//		
//		// EKK0011D010への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0011D010CBSMsg.class.getName());
//		mappinEKK0011D010SCInMsg(template, param, inHash, trgt_data);
//		editBasicCmn(param, template);
//		
//		// リクエスト用クラスの設定
//		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
//		
//		// SIFの呼び出し
//		sIFResult = scCall.run(sIFRequest, handle);
//
//		errChk(sIFResult);
//		
//		// 結果の取得
//		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
//
//		CAANMsg workEKK0011D010 = resultMsgs[0];
//		
//		//申込番号の取得
//		String mskmNo = workEKK0011D010.getString(EKK0011D010CBSMsg.MSKM_NO);
//		if (null != mskmNo)
//		{
//			resultHash.put(MSKM_NO, mskmNo);
//		}
//		
//		// 明細部のリスト結果を取得
//		CAANMsg[] msgEKK0011D010List = workEKK0011D010.getCAANMsgList(EKK0011D010CBSMsg.EKK0011D010CBSMSG1LIST);
//
//		if (0 != msgEKK0011D010List.length)
//		{
//			//１件目の取得
//			resultHash.putAll(mappingCAANOutMsgAdd(msgEKK0011D010List));
//		}
//				
//
//		
//	}
//
//	/**
//	 * templateに対してEKK0011D010SCの条件に関する部分を設定する
//	 * @param template 条件の設定先
//	 * @param inHash 条件用hash
//	 * @param trgt_data 
//	 * @throws RequestParameterException 
//	 */
//	private void mappinEKK0011D010SCInMsg(
//			CAANMsg template,
//			IRequestParameterReadWrite param,
//			HashMap<String, Object> inHash, HashMap<String,Object> trgt_data) throws RequestParameterException
//	{
//		
//
//		//まずは全条件のNullマッピング
//		fillCAANMSGNullMapping(template, new EKK0011D010CBSMsg().getContents());
//		
//		// v3.00.00 ANK-0326-00-00 ADD START
//		HashMap<String, Object> element = null;		
//		element = (HashMap<String, Object>)param.getData(REQ_TRGT_DATA);
//		// v3.00.00 ANK-0326-00-00 ADD END
//
//		//テンプレートID(SIFのID)
//		template.set(EKK0011D010CBSMsg.TEMPLATEID, "EKK0011D010");
//
//		//機能コード--申込登録
//		template.set(EKK0011D010CBSMsg.FUNC_CODE, FUNC_CODE_ONE);
//
//		//ＫＥＹ＿ＳＹＳＩＤ
//		template.set(EKK0011D010CBSMsg.SYSID, inHash.get(EKK0081A010CBSMsg1List.SYSID));
//
//		//ＫＥＹ＿申込種別コード　00006:キャンセル申込
//		template.set(EKK0011D010CBSMsg.MSKM_SBT_CD, MKSBT_CD_CANCEL );
//
//		//ＫＥＹ＿申込受付年月日時分秒
//		template.set(EKK0011D010CBSMsg.MSKM_UK_DTM, oPE_DATE_TIME);
//
//		//ＫＥＹ＿申込受付年月日
//		template.set(EKK0011D010CBSMsg.MSKM_YMD, oPE_DATE);
//		
//		//コンシューマ営業用申込状態識別コード(04:承認済)
//		template.set(EKK0011D010CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD, "04");		//2011-11-29, 必須項目なので指定
//
//		// 業務連絡備考
//		String tmpWorkRrkBiko = (String)trgt_data.get(REQ_PARAM_WORK_RRK_BIKO);
//
//		//2011-11-29, 申込明細
//		CAANMsg childTemplate = new CAANMsg(EKK0011D010CBSMsg1List.class.getName());
//		//まずは全条件のNullマッピング
//		fillCAANMSGNullMapping(childTemplate, new EKK0011D010CBSMsg1List().getContents());
//
//		// 申込内容承認登録明細.連絡事項登録年月日時分秒
//		childTemplate.set(EKK0011D010CBSMsg1List.RRK_JIKO_ADD_DTM, oPE_DATE_TIME);
//		// 申込内容承認登録明細.連絡事項
//		childTemplate.set(EKK0011D010CBSMsg1List.RRK_JIKO, (String) tmpWorkRrkBiko);
//		// 申込内容承認登録明細.申込形態コード
//		childTemplate.set(EKK0011D010CBSMsg1List.MSKM_FORM_CD, "05");
//
//		// v3.00.00 ANK-0326-00-00 ADD START
//		// 申込内容承認登録明細.マンション設備システム連携用記事欄
//		//↓↓↓2012-05-10更新　巻@　指示書CC対応で、画面とマッチしないため適宜改修↓↓↓
//		String kiji = (String)element.get(MANSSBSYS_RNKI_YO_KIJIRAN);
//		if (null != kiji && 0 < kiji.trim().length())
//		{
//			childTemplate.set(EKK0011D010CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN, kiji.trim());
//		}
//		else
//		{
//			childTemplate.setNull(EKK0011D010CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN);
//		}
////		childTemplate.set(EKK0011D010CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN, element.get(MANSSBSYS_RNKI_YO_KIJIRAN));
//		//↑↑↑2012-05-10更新　巻@　指示書CC対応で、画面とマッチしないため適宜改修↑↑↑
//		// v3.00.00 ANK-0326-00-00 ADD END
//
//		CAANMsg[] templateArray = new CAANMsg[]{childTemplate};
//		template.set(EKK0011D010CBSMsg.EKK0011D010CBSMSG1LIST, templateArray);
//
//	}

//	/**
//	 * ECN0131E010サービスＩＦ呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param inHash 条件用hash
//	 * @param resultHash ssSCの結果
//	 * @return ECN0131E010サービスＩＦのリターンコード
//	 * @throws Throwable 例外時にスローされます。
//	 */
//	private void callECN0131E010SC(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> inHash,
//			HashMap<String, Object>  resultHash )
//			throws Throwable
//	{
//		
//		HashMap<String, Object> sIFRequest = null;
//		CAANMsg[] resultMsgs = null;
//		CAANMsg template = null;
//
//		Map<?, ?> sIFResult = null;
//
//		// サービスIF共通の情報を設定
//		sIFRequest = editInMsgCmn(param);
//		
//		// ECN0131E010への呼び出しパラメータ設定
//		template = new CAANMsg(ECN0131E011CBSMsg.class.getName());		//2012-05-10, ECN0131E011に差替え（陳腐化）
//		mappinECN0131E010SCInMsg(template, inHash);
//		editBasicCmn(param, template);
//		
//		// リクエスト用クラスの設定
//		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
//
//		// SIFの呼び出し
//		sIFResult = scCall.run(sIFRequest, handle);
//
//		errChk(sIFResult);
//		
//		// 結果の取得
//		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
//
//		// 結果を設定(登録時)
//			
//		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));
//
//
//		
//	}
//
//	/**
//	 * 支払方法入力支援削除S-IF　入力マッピング<br/>
//	 * templateに対してECN0131E010SCの条件に関する部分を設定する
//	 * 
//	 * @param template 条件の設定先
//	 * @param inHash 条件用hash
//	 * @version 2012-05-10, ECN0131E011に差替え（ECN0131E010 が巻取フェーズで陳腐化したので）
//	 */
//	private void mappinECN0131E010SCInMsg(
//			CAANMsg template,
//			HashMap<String, Object> inHash)
//	{
//		
//		//まずは全条件のNullマッピング
//		fillCAANMSGNullMapping(template, new ECN0131E011CBSMsg().getContents());
//		
//		//テンプレートID(SIFのID)
//		template.set(ECN0131E011CBSMsg.TEMPLATEID, "ECN0131E011");
//
//		//機能コード--チェック＆登録
//		template.set(ECN0131E011CBSMsg.FUNC_CODE, FUNC_CODE_ONE);
//
//		
//		//ＫＥＹ＿支払方法番号
//		template.set(ECN0131E011CBSMsg.KEY_PAYWAY_NO, inHash.get(ECN0131B006CBSMsgList.PAYWAY_NO));
//
//		//ＫＥＹ＿更新年月日時分秒
//		template.set(ECN0131E011CBSMsg.KEY_UPD_DTM, inHash.get(ECN0131B006CBSMsgList.UPD_DTM));
//
////		//ＫＥＹ＿ＳＹＳＩＤ
////		template.set(ECN0131E011CBSMsg.KEY_SYSID, inHash.get(ECN0131B006CBSMsgList.SYSID));
//		
//	}

//	/**
//	 * 申込サービス契約内訳一覧照会サービスＩＦ呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param mskmNo 申込番号
//	 * @return 申込サービス契約内訳一覧照会の結果
//	 * @throws Throwable 例外時にスローされます。
//	 */
//	private CAANMsg callEKK0011B020SC(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			String mskmNo)
//			throws Throwable
//	{
//		
//		HashMap<String, Object> sIFRequest = null;
//		CAANMsg[] resultMsgs = null;
//		CAANMsg template = null;
//		Map<?, ?> sIFResult = null;
//		
//		// サービスIF共通の情報を設定
//		sIFRequest = editInMsgCmn(param);
//		
//		// EKK0011B020への呼び出しパラメータ設定
//		template = new CAANMsg(EKK0011B020CBSMsg.class.getName());
//		mappinEKK0011B020SCInMsg(template, param, mskmNo);
//		editBasicCmn(param, template);
//		
//		// リクエスト用クラスの設定
//		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
//		
//		// SIFの呼び出し
//		sIFResult = scCall.run(sIFRequest, handle);
//		
//		// エラーマッピング処理
//		editResultRP(sIFResult, param, REQ_TRGT_DATA);
//		
//		errChk(sIFResult);
//		
//		// 結果の取得
//		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
//		return resultMsgs[0];
//	}
//
//	/**
//	 * templateに対してEKK0011B020SCの条件に関する部分を設定する
//	 * @param template 条件の設定先
//	 * @param param リクエストパラメータ
//	 * @param mskmNo 申込番号
//	 * @throws RequestParameterException 
//	 */
//	private void mappinEKK0011B020SCInMsg(
//			CAANMsg template,
//			IRequestParameterReadWrite param,
//			String mskmNo) throws RequestParameterException
//	{
//		
//		//まずは全条件のNullマッピング
//		fillCAANMSGNullMapping(template, new EKK0011B020CBSMsg().getContents());
//		
//		//テンプレートID(SIFのID)
//		template.set(EKK0011B020CBSMsg.TEMPLATEID, "EKK0011B020");
//		
//		//機能コード--申込サービス契約内訳一覧照会
//		template.set(EKK0011B020CBSMsg.FUNC_CODE, FUNC_CODE_ONE);
//		
//		// ＫＥＹ＿申込番号
//		template.set(EKK0011B020CBSMsg.KEY_MSKM_NO, mskmNo);
//		// ＫＥＹ＿予約適用年月日
//		template.set(EKK0011B020CBSMsg.KEY_RSV_APLY_YMD, oPE_DATE);
//	}

//↓↓↓2013-03-13削除　ロット２IT1-2013-0000446（キャンセル後に決済方法が変わってしまう）↓↓↓
//	/**
//	 * 支払方法入力支援情報取得処理
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param trgt_data アプリ固有の入力パラメータ
//	 * @param workField 結果取得領域
//	 * @return 各サービスのリターンコード
//	 * @throws Throwable 例外時にスローされます。
//	 */	
//	private int getPaywayInsuportData(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> workField 
//			) throws Throwable
//	{
//		//ステータスコード
//		int statusCode = STAT_NORMAL;	
//
//		// work領域からサービス契約一意照会の結果を取得
//		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>) workField.get( SVC_KEI );
//		
//		// 支払方法入力支援一覧照会取得情報
//		ArrayList<HashMap<String, Object>>eCN0131B006HashList = new ArrayList<HashMap<String, Object>>();
//
//		callECN0131B006SC(param, handle,  eKK0081A010Hash, eCN0131B006HashList);
//		
//		// 支払方法入力支援照会結果を格納		
//		workField.put(PAYWAY_INSUPORT,eCN0131B006HashList);
//
//		
//		
//		return statusCode;
//	}
//↑↑↑2013-03-13削除　ロット２IT1-2013-0000446（キャンセル後に決済方法が変わってしまう）↑↑↑

//↓↓↓2013-03-13削除　ロット２IT1-2013-0000446（キャンセル後に決済方法が変わってしまう）↓↓↓
//	/**
//	 * 支払方法入力支援削除処理呼び出し
//	 * @param param リクエストパラメータ
//	 * @param handle セッションハンドル
//	 * @param workField 結果取得領域
//
//	 * @param sysid SYSID, since 2012-04-24 指示書CC取込み対応
//	 * @param svc_kei_no サービス契約番号, since 2012-04-24 指示書CC取込み対応
//	 * @param ex true：支払方法入力支援削除を行う　false：S-IF呼び出しはせず指示書CC用データ出力のみ行う
//	 * @return 各サービスのリターンコード
//	 * @throws Throwable 例外時にスローされます。
//	 */	
//	 private int callDelPaywayInsuport(
//			IRequestParameterReadWrite param,
//			SessionHandle handle,
//			HashMap<String, Object> workField, String sysid, String svc_kei_no,
//			boolean ex)
//			throws Throwable
//	{
//		//ステータスコード
//		int statusCode = STAT_NORMAL;	
//
//		// work領域から支払方法入力支援一覧照会の結果を取得
//		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( PAYWAY_INSUPORT );
//		//結果領域の生成
//		HashMap<String, Object> resultHash =  new HashMap<String, Object>();
//		
//		int did = 0;		//2012-04-24追加　巻@　指示書CC取込み対応
//
//		for(int i = 0 ; i < inHashlist.size() ; i++){
//			
//			// 無効状態のデータも取得しているので有効のデータのみを対象とする。
//			
//			if(((String)inHashlist.get(i).get(ECN0131B006CBSMsgList.MK_FLG)).equals(MK_FLG_YK))
//			{
//				if (ex)
//				{
//					//支払方法入力支援削除サービスIF呼び出し
//					callECN0131E010SC(param, handle, inHashlist.get(i), resultHash);	
//				}
//				did ++;
//			}
//		}
//		
//
//		//↓↓↓2012-04-24追加　巻@　指示書CC取込み対応↓↓↓
//		if (!ex && 0 < did)
//		{
//			//連携データ区分 08 ：支払方法入力支援の情報
//			JKKBpCommon.putAxMRenkeiDataKbn(
//					param, SJISHO_MAP, JKKAddSjishoConst.RENKEI_DATA_KBN_PAYWAY, JKKAddSjishoConst.TRN_KBN_DEL, 
//					new String[]{svc_kei_no}, sysid);
//		}
//		//↑↑↑2012-04-24追加　巻@　指示書CC取込み対応↑↑↑
//		
//		return statusCode;
//	}	
//↑↑↑2013-03-13削除　ロット２IT1-2013-0000446（キャンセル後に決済方法が変わってしまう）↑↑↑
	
	// LT-2013-0000163 2013/07/10 ADD START 割賦のステータスにより処理を切り分け
	/**
	 * EKK2541A010 割賦契約一意照会を実行します（カレントを取得）
	 * <br/>
	 * 
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash サービス契約一意照会結果
	 * @param resultHash 照会結果
	 * @throws Throwable 任意の例外
	 */
	private HashMap<String, Object> callEKK2541A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK2541A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2541A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK2541A010SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		HashMap<String, Object> resultHash = mappingCAANOutMsgOne(EKK2541A010CBSMsg.EKK2541A010CBSMSG1LIST, resultMsgs);

		return resultHash;
	}
	// LT-2013-0000163 2013/07/10 ADD END 割賦のステータスにより処理を切り分け
	
	/**
	 * 電話VLANオーダ存在有無判定処理
	 * 
	 * @param arg0 判定するオブジェクト
	 * @return 対象サービス契約番号
	 */
	private String telVlanUmu(
			IRequestParameterReadWrite param,
			HashMap<String, Object> workField,
			SessionHandle handle) throws Throwable
	{
		String tgSvcKeiNo = "";
		
		ArrayList wkMapArray = new ArrayList();
		// S-IF結果格納用
		HashMap<String, Object> resultHash =  new HashMap<String, Object>();
		
		// work領域からサービス契約回線内訳一意照会の結果を取得
		ArrayList<HashMap<String, Object>> inHashlist = (ArrayList<HashMap<String, Object>>) workField.get( SVKEI_KAISEN_UW );

		// ST2-2012-0000889 2012/05/13 ADD START
		// 作業領域より排他サービス契約回線内訳番号リストを取得
		List<String> exSvkeiKaisenUw = (List<String>)workField.get(WORK_FIELD_EX_SVKEI_KAISEN_UW);
		// ST2-2012-0000889 2012/05/13 ADD START
		
		
		// サービス契約回線内訳一意照会の結果を取得し、回線内訳番号を取得
		wkMapArray = new ArrayList();
		
		String useNowKaisenUcwkNo = "";
		
		for(int i = 0 ; i < inHashlist.size() ; i++)
		{
			// サービス契約回線内訳ステータス取得
			String tmpSvcKeiKaisenUcwkNo   = (String)inHashlist.get(i).get(EKK0251A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
			String tmpSvcKeiKaisenUcwkStat = (String)inHashlist.get(i).get(EKK0251A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_STAT);
			
			// サービス契約回線内訳のステータスがキャンセル済以外の場合
			if( !tmpSvcKeiKaisenUcwkStat.equals(STAT_CNCL_ZUMI) )
			{
				useNowKaisenUcwkNo = tmpSvcKeiKaisenUcwkNo;
			}
			
		}
			
		// 利用可能な回線内訳番号が取得できない場合は「空」の対象サービス契約番号を返却
		if ("".equals(useNowKaisenUcwkNo)) {
			return tgSvcKeiNo;
		}
		
		// EKK0081B007_回線利用中サービス契約一覧照会 同じ回線を使用するサービス契約番号を取得
		CAANMsg[] getEKK0081B007 = callEKK0081B007SC(param, handle , resultHash, useNowKaisenUcwkNo);
		
		if (!"".equals(getEKK0081B007) && getEKK0081B007.length != 0) {
			for (int j = 0; j < getEKK0081B007.length; j++)
			{
				// EKK0081B007で取得したサービス契約番号分ループし、サービスコードがネット、電話の場合のみ電話VLANオーダの存在有無を実施
				CAANMsg childTemplate = getEKK0081B007[j];
				String svcCd = (String)childTemplate.getString(EKK0081B007CBSMsg1List.SVC_CD);
				
				String svcKeino = (String)childTemplate.getString(EKK0081B007CBSMsg1List.SVC_KEI_NO);
				
				if (SVC_CD_NET.equals(svcCd) || SVC_CD_TEL.equals(svcCd)) {
					// ECS0021A010_電話VLANオーダ一意照会
					CAANMsg[] getECS0021A010 = callESC0021A010SC(param, handle , resultHash, svcKeino);
					if (!"".equals(getECS0021A010) && getECS0021A010.length != 0) {
						// ESC0021A010の結果が空でない（電話VLANオーダ存在する）場合、そのサービス契約番号を返却する
						String umuflg =  (String)getECS0021A010[0].getString(ESC0021A010CBSMsg1List.TEL_VLAN_ORDER_STAT);
						if (umuflg != null && !"".equals(umuflg)) {
							tgSvcKeiNo = svcKeino;
							return tgSvcKeiNo;
						}
					}
				}
			}
		}
		
		return tgSvcKeiNo;
	}
	
	/**
	 * 回線利用中サービス契約一覧照会SIFを呼び出し
	 * @param	param		リクエストパラメータ	
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	結果のハッシュ
	 * @param	svcKeiNo	サービス契約番号
	 * @return				サービスインターフェースのリターンコード
	 * @throws	RequestParameterException, SCException 例外時にスローされます
	 */
	private CAANMsg[] callEKK0081B007SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> resultHash,
			String kaisenUcwkNo
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		CAANMsg[] msgList = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081B007への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081B007CBSMsg.class.getName());
		mappingEKK0081B007InMsg(template, param, kaisenUcwkNo);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			msgList = mappingEKK0081B007SCOutMsg(resultMsgs);
		}

		return msgList;
	}
	
	/**
	 * サービスI/F実行用の共通部を設定します<br>
	 * <br>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param msg データ登録内容
	 * @return オプションサービス契約作成数
	 * @throws RequestParameterException
	 * @exception RequestParameterExceptionがスローされます 。
	 */
	private HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param) 
	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));
		
		return paramMap;
	}
	
	/**
	 * templateに対してEKK0081B007の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param svcKeiNo サービス契約番号
	 * @param requestParam アプリ固有のパラメータ
	 * @throws RequestParameterException 
	 */
	private void mappingEKK0081B007InMsg(CAANMsg template,IRequestParameterReadOnly param, String kaisenUcwkNo) throws RequestParameterException
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new EKK0081B007CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(EKK0081B007CBSMsg.TEMPLATEID, MAP_KEY__EKK0081B007);

		//機能コード--回線利用中サービス契約一覧照会
		template.set(EKK0081B007CBSMsg.FUNC_CODE, "1");

		//ＫＥＹ＿サービス契約回線内訳番号
		template.set(EKK0081B007CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, kaisenUcwkNo);
		
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		//ＫＥＹ＿運用日
		template.set(EKK0081B007CBSMsg.KEY_OPE_YMD, operateDate);
	}
	
	/**
	 * 回線利用中サービス契約一覧照会SIFを呼び出し
	 * @param	param		リクエストパラメータ	
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	結果のハッシュ
	 * @param	svcKeiNo	サービス契約番号
	 * @return				サービスインターフェースのリターンコード
	 * @throws	RequestParameterException, SCException 例外時にスローされます
	 */
	private CAANMsg[] callESC0021A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> resultHash,
			String kaisenUcwkNo
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		CAANMsg[] msgList = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// ECS0021A010への呼び出しパラメータ設定
		template = new CAANMsg(ESC0021A010CBSMsg.class.getName());
		mappingESC0021A010InMsg(template, param, kaisenUcwkNo);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			msgList = mappingESC0021A010SCOutMsg(resultMsgs);
		}

		return msgList;
	}
	/**
	 * templateに対してESC0021A010の条件に関する部分を設定する
	 * @param template 条件の設定先
	 * @param inHash 設定条件
	 * @param svcKeiNo サービス契約番号
	 * @param requestParam アプリ固有のパラメータ
	 * @throws RequestParameterException 
	 */
	private void mappingESC0021A010InMsg(CAANMsg template,IRequestParameterReadOnly param, String svcKeiNo) throws RequestParameterException
	{

		//まずは全条件のNullマッピング
		fillCAANMSGNullMapping(template, new ESC0021A010CBSMsg().getContents());
		
		//テンプレートID(SIFのID)
		template.set(ESC0021A010CBSMsg.TEMPLATEID, MAP_KEY__ESC0021A010);

		//機能コード--電話用VLANオーダ一意照会
		template.set(ESC0021A010CBSMsg.FUNC_CODE, "1");

		//ＫＥＹ＿サービス契約番号
		template.set(ESC0021A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}
	
	/**
	 * 持ちうるフィールドにNullマッピングで埋める
	 * @param msg 対象クラス
	 * @param contents 対応クラスのフィールド列挙
	 */
	private void fillCAANMSGNullMapping(CAANMsg msg, Object[][] contents)
	{
		
		//要素ごとのループ
		for(int i = 0 ; i < contents.length ; i++)
		{
			
			Object element = null;
			
			//キーに該当する箇所の取得
			element = contents[i][0];

			//Nullでマッピング
			msg.setNull((String)element);
			
		}
	}
	
	/**
	 * 条件部の共通する項目の設定
	 * @param param リクエストパラメータ
	 * @param template template 条件の設定先
	 * @throws RequestParameterException
	 */
	private void editBasicCmn(IRequestParameterReadOnly param, CAANMsg template)
	throws RequestParameterException
	{
		
		// オペレータID
		Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);
		template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

		// 運用日時
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		
	}
	
	/**
	 * <pre>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 * 
	 * </pre>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	private void editResultRP(Map<?, ?> msgList, IRequestParameterReadWrite param) throws Throwable 
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		// テンプレートID、ステータス取得
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if (returnCode.intValue() != 0)
		{
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		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>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
	}
	
	/**
	 * EKK0081B007の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0081A010の結果部分
	 */
	private CAANMsg[] mappingESC0021A010SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(ESC0021A010CBSMsg.ESC0021A010CBSMSG1LIST);

		return msgList;
	}
	
	/**
	 * EKK0081B007の結果をHashとして抽出する
	 * @param resultMsgs EKK0081A010のテンプレートリスト
	 * @return EKK0081A010の結果部分
	 */
	private CAANMsg[] mappingEKK0081B007SCOutMsg(CAANMsg[] resultMsgs)
	{
		
		HashMap<String, Object> retHash = null;
		CAANMsg msg = null;
		CAANMsg[] msgList = null;
		
		//結果の抽出
		msg = resultMsgs[0];
		
		//結果の取得
		msgList = 
			(CAANMsg[])msg.getMsgData().get(EKK0081B007CBSMsg.EKK0081B007CBSMSG1LIST);

		return msgList;
	}
	
	// 20140507 ANK-2054-00-00 ADD START
	/**
	 * 解約対象か判定する。<br>
	 * <br>
	 * @param	stat	判定対象ステータス
	 */
	private boolean isDslTrgt(String stat)
	{
		if (
				JKKStrConst.CD00037_SHOSA_ZUMI.compareTo(stat) < 0
				&& JKKStrConst.CD00037_DSL_ZM.compareTo(stat) > 0
		)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	/**
	 * キャンセル対象か判定する。<br>
	 * <br>
	 * @param	stat	判定対象ステータス
	 */
	private boolean isCancelTrgt(String stat)
	{
		if (
				JKKStrConst.CD00037_SHOSA_ZUMI.compareTo(stat) >= 0
		)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	/**
	 * 機器オプションサービス契約キャンセル・解約処理呼び出し<br>
	 * <br>
	 * @param	handle				セッションマネージャなどを持ったハンドル
	 * @param	param				モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	trgt_data			業務情報を保持するマップ
	 * @param	workField			ワークエリア
	 * @param	kktkSvcKeiNo		機器提供サービス契約番号
	 * @throws	Throwable
	 */
	private int callCancelKktkSvcKei(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,HashMap<String, Object> trgt_data
			,HashMap<String, Object> workField
			,String kktkSvcKeiNo
	) throws Throwable
	{
		
		// 機器オプションサービス契約一覧照会（機器提供ＳＶ）
		ArrayList<HashMap<String, Object>> eKK2811B010HashList = new ArrayList<HashMap<String, Object>>();
		callEKK2811B010SC(param, handle, trgt_data, kktkSvcKeiNo, null, eKK2811B010HashList);
		
		if (eKK2811B010HashList != null && eKK2811B010HashList.size() > 0)
		{
			for (HashMap<String, Object> eKK2811B010HashListElement : eKK2811B010HashList)
			{
				// ■機器オプションサービス契約異動可否判定処理を呼出し、無条件で状態遷移可能な機器オプションか否かを判定します
				HashMap<String, Object> checkKkopIdoKhInputdata = new HashMap<String, Object>();
				
				// 機器オプションサービスコード
				checkKkopIdoKhInputdata.put(JKKKeiIdoKhCheckConstCC.KKOP_SVC_CD, (String)eKK2811B010HashListElement.get(EKK2811B010CBSMsg1List.KKOP_SVC_CD));
				
				// 異動区分
				checkKkopIdoKhInputdata.put(JKKKeiIdoKhCheckConstCC.IDO_DIV, (String)trgt_data.get(REQ_PARAM_IDO_DIV));
				
				String checkKkopIdoKhFixedText ="checkKkopIdoKh";  
				
				param.setData(checkKkopIdoKhFixedText, checkKkopIdoKhInputdata);

				if (JKKBpCommon.checkKkopIdoKh(handle, param, checkKkopIdoKhInputdata, checkKkopIdoKhFixedText))
				{
					// ■機器オプションサービス契約のステータスに従い、解約またはキャンセル処理を実行
					// 機器オプションサービス契約ステータス
					String kkopSvcKeiStat = (String)eKK2811B010HashListElement.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_STAT);
					
					if (isCancelTrgt(kkopSvcKeiStat))
					{
						// 機器オプションサービス契約一意照会
						HashMap<String, Object> eKK2811A010Hash =  new HashMap<String, Object>();
						callEKK2811A010SC(param, handle, (String)eKK2811B010HashListElement.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO), eKK2811A010Hash);
						
						// 機器オプションサービス契約キャンセル実行処理
						HashMap<String, Object> eKK2811C110Hash    =  new HashMap<String, Object>();
						callEKK2811C110SC(param, handle, trgt_data, workField, eKK2811A010Hash, eKK2811C110Hash);
						
					}
					else if (isDslTrgt(kkopSvcKeiStat))
					{
						// 機器オプションサービス契約一意照会
						HashMap<String, Object> eKK2811A010Hash =  new HashMap<String, Object>();
						callEKK2811A010SC(param, handle, (String)eKK2811B010HashListElement.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO), eKK2811A010Hash);
						
						// 機器オプションサービス契約一意照会
						HashMap<String, Object> eKK2801A010Hash =  new HashMap<String, Object>();
						callEKK2801A010SC(param, handle, (String)eKK2811B010HashListElement.get(EKK2811B010CBSMsg1List.KKOP_SVC_CD), eKK2801A010Hash);
						
						// 機器オプションサービス契約解約実行処理
						HashMap<String, Object> eKK2811C140Hash =  new HashMap<String, Object>();
						callEKK2811C140SC(param, handle, trgt_data, workField, eKK2811A010Hash, eKK2801A010Hash, eKK2811C140Hash);
						
						// 機器オプションサービス契約解約確定実行処理
						HashMap<String, Object> eKK2811C150Hash =  new HashMap<String, Object>();
						callEKK2811C150SC(param, handle, trgt_data, workField, eKK2811A010Hash,  eKK2811C150Hash);
						
					}
					else
					{
						// 処理対象外
					}
				}
				else
				{
					// 処理対象外
				}
			}
		}
		
		return 0;
	}

	/**
	 * 機器オプションサービス契約一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	callMethodFlg	呼び元を識別するフラグ
	 * @param	inHash			条件用hash
	 * @param	resultHash		サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK2811A010SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String kkopSvcKeiNo
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK2811A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK2811A010SCInMsg(template, kkopSvcKeiNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgOne(EKK2811A010CBSMsg.EKK2811A010CBSMSG1LIST, resultMsgs));
	}

	/**
	 * 機器オプションサービス契約一覧照会（機器提供ＳＶ）を呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	inHash			条件用hash
	 * @param	resultHashList	機器提供サービス契約一覧照会の結果
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK2811B010SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,HashMap<String, Object> inHash
			,String kktkSvcKeiNo
			,String kkopSvcCd
			,ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK2811B010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811B010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK2811B010SCInMsg(template, inHash, kktkSvcKeiNo, kkopSvcCd);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK2811B010CBSMsg.EKK2811B010CBSMSG1LIST, resultMsgs));
	}
	/**
	 * EKK2801A010 機器オプションサービス一意照会を実行します<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	kkopSvcCd	機器オプションサービスコード
	 * @param	resultHash	機器提供サービス一意照会結果
	 * @return	サービスインターフェースのリターンコード
	 * @throws	Throwable
	 */
	private int callEKK2801A010SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String kkopSvcCd
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		int status = 0;

		// EKK2801A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2801A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK2801A010SCInMsg(template, kkopSvcCd);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		return status;
	}
	/**
	 * EKK2811C110_機器オプションサービス契約キャンセルサービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * 
	 * @param inHash 条件用hash
	 * @param resultHash EKK0341C330SCの結果
	 * @return EKK0341C330サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK2811C110SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,HashMap<String, Object> trgt_data
			,HashMap<String, Object> workField
			,HashMap<String, Object> inHash
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK2811C110への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811C110CBSMsg.class.getName());

		cancelSvcKeiMapper.mappinEKK2811C110SCInMsg(template, inHash , workField , trgt_data);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}
	
	/**
	 * EKK2811C140サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param eKK2811A010Hash 機器オプションサービス契約一意照会結果
	 * @param eKK2801A010Hash 機器オプションサービス一意照会結果
	 * @param workField 結果取得領域
	 * @param resultHash EKK2811C140SCの結果
	 * @return EKK2811C140サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK2811C140SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,HashMap<String, Object> trgt_data
			,HashMap<String, Object> workField
			,HashMap<String, Object> eKK2811A010Hash
			,HashMap<String, Object> eKK2801A010Hash
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK2811C140への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811C140CBSMsg.class.getName());
		
		cancelSvcKeiMapper.mappinEKK2811C140SCInMsg(template, trgt_data, workField, eKK2811A010Hash, eKK2801A010Hash, resultHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}
	
	/**
	 * EKK2811C150サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param inHash 条件用hash
	 * @param resultHash EKK0341C350SCの結果
	 * @return EKK0341C350サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEKK2811C150SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,HashMap<String, Object> trgt_data
			,HashMap<String, Object> workField
			,HashMap<String, Object> inHash
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK2811C150への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811C150CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK2811C150SCInMsg(template, inHash);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定(登録時)
		resultHash.putAll(mappingCAANOutMsgAdd(resultMsgs));

		svcKeiUpdDtm = (String)resultHash.get("upd_dtm");
		cancelSvcKeiMapper.setSvcKeiUpdDtm(svcKeiUpdDtm);
	}
	// 20140507 ANK-2054-00-00 ADD END
	
// 20140612 ANK-2095-00-00 Add Start
	/**
	 * 同一請求契約内配送待ち機器提供サービス契約一覧照会サービスIF呼出処理<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	callMethodFlg	呼び元を識別するフラグ
	 * @param	inHash			条件用hash
	 * @param	resultHash		サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0341B028SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String[] kktkSvcKeiStat
			,String svcStaJiHsjksbCd
			,String svcKeiNo
			,ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0341B028への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341B028CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0341B028SCInMsg(template, 0, kktkSvcKeiStat, svcStaJiHsjksbCd, svcKeiNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0341B028CBSMsg.EKK0341B028CBSMSG1LIST, resultMsgs));
	}

	/**
	 * 機器提供サービス契約情報更新サービスIF呼出処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param EKK0341A010Msg 照会結果データ
	 * @param svcStaJiHisJkSkCd サービス開始時配送状況識別コード
	 * @param updDtm 更新日時
	 * @param resultHash 結果のハッシュ
	 * @throws Throwable 例外時にスローされます
	 */
	private void callEKK0341C230SC(
		IRequestParameterReadWrite param,
		SessionHandle handle,
		CAANMsg EKK0341A010Msg,
		String svcStaJiHisJkSkCd,
		String updDtm,
		HashMap<String, Object> resultHash) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341C230への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C230CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0341C230InMsg(template, svcStaJiHisJkSkCd, updDtm, EKK0341A010Msg);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		// SIFの実行結果を設定
		resultHash.put(TEMPLATE_ID_EKK0341C230, cancelSvcKeiMapper.mappingEKK0341C230SCOutMsg(resultMsgs));
	}

	/**
	 * 配送抑止取消（タブレット端末、タブレット用クレードル機器）
	 * @param handle
	 * @param param
	 * @param pcrsCd
	 * @param svcSbtCd
	 * @param svcKeiNo
	 * @param fixedText
	 * @throws Throwable
	 */
	private void updKktkSvcTblt(SessionHandle handle, IRequestParameterReadWrite param,
			String pcrsCd, int svcSbtCd, String svcKeiNo, String fixedText) throws Throwable
	{
		// eoモバイル（ハイブリッド 42M）の場合
		if (JKKSvcConst.PCRS_CD_3G_42M_HYBRID.equals(pcrsCd))
		{
			String[] kktkSvcKeiStat = new String [2];
			kktkSvcKeiStat[0] = JKKSvcConst.SVC_KEI_STAT_020;
			kktkSvcKeiStat[1] = JKKSvcConst.SVC_KEI_STAT_030;
			
			// 同一請求契約内配送待ち機器提供サービス契約一覧照会
			ArrayList<HashMap<String, Object>> eKK0341B028HashList = new ArrayList<HashMap<String, Object>>();
			callEKK0341B028SC(param, handle, kktkSvcKeiStat, JKKSvcConst.SVC_STA_JI_HIS_TG_SKCD_SKSIZM, svcKeiNo, eKK0341B028HashList);
			
			if (eKK0341B028HashList != null && eKK0341B028HashList.size() > 0)
			{
				// 配送更新フラグ
				boolean haisoFlg = false;
				for (HashMap<String, Object> eKK0341B028HashListElement : eKK0341B028HashList)
				{
					// 配送依頼指定年月日が未設定の場合
					String hisReqshiteiYmd = (String)eKK0341B028HashListElement.get(EKK0341B028CBSMsg1List.HAISO_REQ_SHITEI_YMD);
					if (isNull(hisReqshiteiYmd))
					{
						// サービス契約番号WORK
						String svcKeiNoWk = "";
						// 機器提供サービス契約番号WORK
						String kktkSvcKeiNoWk = "";
						// 機器提供サービスコード
						String kktkSvcCd = (String)eKK0341B028HashListElement.get(EKK0341B028CBSMsg1List.KKTK_SVC_CD);
						
						// 機器提供サービスコードが「C021：タブレット」または「C022：タブレット用クレードル」の場合
						if(JKKSvcConst.KKTK_SVC_CD_TABLET.equals(kktkSvcCd) ||
							JKKSvcConst.KKTK_SVC_CD_CRADLE.equals(kktkSvcCd))
						{
							svcKeiNoWk = (String)eKK0341B028HashListElement.get(EKK0341B028CBSMsg1List.SVC_KEI_NO);
							kktkSvcKeiNoWk = (String)eKK0341B028HashListElement.get(EKK0341B028CBSMsg1List.KKTK_SVC_KEI_NO);
						}
						// 機器提供サービスコードが上記以外の場合
						else
						{
							continue;
						}
						
						// 同一請求内の有効サービス契約チェック
						boolean yukoFlg = false;
						for (HashMap<String, Object> eKK0341B028HashListElement2 : eKK0341B028HashList)
						{
							String eKK0341BSvcKeiNo = (String)eKK0341B028HashListElement2.get(EKK0341B028CBSMsg1List.SVC_KEI_NO);
							
							// 自分以外のサービス契約番号かどうか
							if (!isNull(eKK0341BSvcKeiNo) && !svcKeiNo.equals(eKK0341BSvcKeiNo))
							{
								// サービス契約一意照会結果を取得
								HashMap<String, Object> eKK0081A010Hash = new HashMap<String, Object>();
								HashMap<String, Object> setParam = new HashMap<String, Object>();
								setParam.put(REQ_PARAM_SVC_KEI_NO, eKK0341BSvcKeiNo);
								callEKK0081A010SC(param, handle, setParam, eKK0081A010Hash);
								
								String EKK0081APcrsCd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PCRS_CD);
								String EKK0081ASvcKeiStat = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
								// 料金コースがeoモバイル（ハイブリッド 42M）かつ
								// 契約ステータスが「照査済」以降で、かつ「キャンセル済」「解約済み」でない場合
								if (JKKSvcConst.PCRS_CD_3G_42M_HYBRID.equals(EKK0081APcrsCd) &&
									!JKKSvcConst.SVC_KEI_STAT_010.equals(EKK0081ASvcKeiStat) &&
									!JKKSvcConst.SVC_KEI_STAT_920.equals(EKK0081ASvcKeiStat) &&
									!JKKSvcConst.SVC_KEI_STAT_910.equals(EKK0081ASvcKeiStat))
								{
									yukoFlg = true;
									break;
								}
							}
						}
						
						if (!yukoFlg)
						{
							// 配送情報一覧照会
							// サービス契約番号に紐づいている機器より配送情報を取得する(配送ステータスが受付済のもの)
							HashMap<String, Object> workEDK0011B080Rslt = new HashMap<String, Object>();
							ArrayList haisoStatList = new ArrayList<String>();
							haisoStatList.add(HAISO_STAT_UK_ZM);
							JKKBpCommon.searchHaisoInfo(param, handle, svcKeiNoWk, null, null, null, haisoStatList, workEDK0011B080Rslt, fixedText);
							
							CAANMsg[] eDK0011B080CBSMsg1List = (CAANMsg[])workEDK0011B080Rslt.get(EDK0011B080CBSMsg.EDK0011B080CBSMSG1LIST);
							
							if (eDK0011B080CBSMsg1List != null && eDK0011B080CBSMsg1List.length > 0)
							{
								String haisoNo = "";
								haisoFlg = true;
								
								for (int i = 0; i < eDK0011B080CBSMsg1List.length; i++)
								{
									CAANMsg childTemplate = eDK0011B080CBSMsg1List[i];
									
									// タブレット端末、タブレット用クレードル機器の機器提供サービス契約番号と一致する配送番号取得
									if (kktkSvcKeiNoWk.equals(childTemplate.getString(EDK0011B080CBSMsg1List.KKTK_SVC_KEI_NO)))
									{
										haisoNo = childTemplate.getString(EDK0011B080CBSMsg1List.HAISO_NO);
										break;
									}
								}
								// 配送中止
								if (!isNull(haisoNo))
								{
									// 配送中止処理を実施
									HashMap<String, Object> eDK0011C090Hash = new HashMap<String, Object>();
									JKKBpCommon.updateHaisoStp(param, handle, haisoNo, eDK0011C090Hash, fixedText);
								}
							}
							
							if (haisoFlg)
							{
								// 機器提供サービス契約一意照会処理を実施
								HashMap<String, Object> eKK0341A010Hash = new HashMap<String, Object>();
								JKKBpCommon.searchKktkSvcKei(param, handle, kktkSvcKeiNoWk, eKK0341A010Hash, fixedText);
								
								// 機器提供サービス契約情報を取り出す
								CAANMsg[] eKK0341A010CBSMSG1list = (CAANMsg[])eKK0341A010Hash.get(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST);
								HashMap<String, Object> eKK0341A010CBSMSG1 = null;
								String ekk0341updDtm = "";
								if (eKK0341A010CBSMSG1list != null && eKK0341A010CBSMSG1list.length > 0)
								{
									// 機器提供サービス契約情報を取得できた場合
									eKK0341A010CBSMSG1 = eKK0341A010CBSMSG1list[0].getMsgData();
									// 最終更新年月日時分秒
									ekk0341updDtm = (String)eKK0341A010CBSMSG1.get(EKK0341A010CBSMsg1List.LAST_UPD_DTM);
								
								}
								// 機器提供サービス契約情報更新処理
								HashMap<String, Object> eKK0341C230Hash = new HashMap<String, Object>();
								callEKK0341C230SC(param, handle, eKK0341A010CBSMSG1list[0], JKKSvcConst.SVC_STA_JI_HIS_TG_SKCD_TG, ekk0341updDtm ,eKK0341C230Hash);
							}
						}
					}
				}
			}
		}
	}
// 20140612 ANK-2095-00-00 Add End
	
	// ANK-2138-00-00 2014/08/07 add start
	/**
	 * タブレット契約の状態チェック
	 * 工事の状態により、工事会社配送設定・工事完了後配送設定・配送取消を行う
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param idoDiv 異動区分
	 * @param svcKeiNo サービス契約番号
	 * @param pcrsCd 料金コースコード
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void updateTbltKei(SessionHandle handle, IRequestParameterReadWrite param,
			String sysid,
			String idoDiv,
			String svcKeiNo, String pcrsCd
			) throws Throwable
	{

		// EKK0491B005 請求契約一覧照会
		ArrayList<HashMap<String, Object>> resultKK491B005List = new ArrayList<HashMap<String, Object>>();
		callEKK0491B005SC(param, handle, sysid, resultKK491B005List);
		
		String seikyKeiNo = ""; //請求契約番号（ハイブリッドの）
		for(int i = 0 ; i < resultKK491B005List.size() ; i++)
		{		
			String tmpSvcKeiNo = (String)resultKK491B005List.get(i).get(EKK0491B005CBSMsg1List.SVC_KEI_NO);
			if(svcKeiNo.equals(tmpSvcKeiNo)){
				seikyKeiNo = (String)resultKK491B005List.get(i).get(EKK0491B005CBSMsg1List.SEIKY_KEI_NO);
				break;
			}
		}
		
		//ハイブリッドのネット契約を検索し、新設工事を検索する

		boolean anotherHybridFlg = false;
		CAANMsg netKojiak = null;
		String svcKeiNoNet = "";

		for(int i = 0 ; i < resultKK491B005List.size() ; i++)
		{
				String svcCd = (String)resultKK491B005List.get(i).get(EKK0491B005CBSMsg1List.SVC_CD);
				String tmpPcrsCd = (String)resultKK491B005List.get(i).get(EKK0491B005CBSMsg1List.PCRS_CD);
				String tmpSvcKeiNo = (String)resultKK491B005List.get(i).get(EKK0491B005CBSMsg1List.SVC_KEI_NO);
				String svcKeiStat = (String)resultKK491B005List.get(i).get(EKK0491B005CBSMsg1List.SVC_KEI_STAT);
				String tmpSeikyKeiNo = (String)resultKK491B005List.get(i).get(EKK0491B005CBSMsg1List.SEIKY_KEI_NO);

				// 照査済で有効なネット契約の場合
				if (JKKSvcConst.SVC_CD_NET.equals(svcCd)
					&& !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStat)
					&& !JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStat)
					&& !JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStat)
					&& seikyKeiNo.equals(tmpSeikyKeiNo))
				{
					svcKeiNoNet = tmpSvcKeiNo;
				}
				
				// 自分以外の照査済で有効なモバイル（光ハイブリッド）の場合
				if (JKKStrConst.CD00134_3G21M_HYBRID.equals(tmpPcrsCd)
						&& !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStat)
						&& !JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStat)
						&& !JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStat)
						&& !tmpSvcKeiNo.equals(svcKeiNo))
				{
					anotherHybridFlg = true;
				}
			}
		
		// ネットのサービス契約がみつからない || 自分以外のハイブリッドがある
		if (isNull(svcKeiNoNet) || anotherHybridFlg){
			 return;
		}
		
		//タブレット契約しているかどうか検索
		ArrayList<HashMap<String, Object>> resultKK0341B002List = new ArrayList<HashMap<String, Object>>();
		callEKK0341B002SC(param, handle, svcKeiNoNet, resultKK0341B002List);
		
		// タブレット端末機器提供サービス契約番号
		String kktkSvcKeiNoTblt = "";
		// タブレット用クレードル機器提供サービス契約番号
		String kktkSvcKeiNoCrdl = "";
		// IT1-2014-0000315 2014/09/29 add start
		boolean tbltFlg = false;  //タブレット処理するフラグ
		boolean crdlFlg = false;  //クレードル処理するフラグ
		// IT1-2014-0000315 2014/09/29 add end
		CAANMsg tbltTemplate = null;
		CAANMsg crdlTemplate = null;
		if(resultKK0341B002List!=null && resultKK0341B002List.size()>0){
			for (int k=0; k < resultKK0341B002List.size(); k++)
			{
				// 機器提供サービスコード
				String kktkSvcCd = (String)resultKK0341B002List.get(k).get(EKK0341B028CBSMsg1List.KKTK_SVC_CD);

				// 機器提供サービスコードが「C021：タブレット」の場合機器提供サービス契約番号を退避
				if(JKKSvcConst.KKTK_SVC_CD_TABLET.equals(kktkSvcCd))
				{
					kktkSvcKeiNoTblt = (String)resultKK0341B002List.get(k).get(EKK0341B028CBSMsg1List.KKTK_SVC_KEI_NO);
					// IT1-2014-0000315 2014/09/29 add start
					tbltFlg = true;
					// IT1-2014-0000315 2014/09/29 add end
				}

				// 機器提供サービスコードが「C022：タブレット用クレードル」の場合、機器提供サービス契約番号を退避
				if (JKKSvcConst.KKTK_SVC_CD_CRADLE.equals(kktkSvcCd))
				{
					kktkSvcKeiNoCrdl = (String)resultKK0341B002List.get(k).get(EKK0341B028CBSMsg1List.KKTK_SVC_KEI_NO);
					// IT1-2014-0000315 2014/09/29 add start
					crdlFlg = true;
					// IT1-2014-0000315 2014/09/29 add end
				}
			}
		}
		
		// IT1-2014-0000315 2014/09/29 mod start
		//タブレットもクレードルもない
		//if(isNull(kktkSvcKeiNoTblt) || isNull(kktkSvcKeiNoCrdl)){
		if(!tbltFlg && !crdlFlg){
			return;
		}
		// IT1-2014-0000315 2014/09/29 mod end
		
		//ネットの新設工事を検索する
		// 工事案件一覧照会
		// 工事案件番号を取得(KEY:サービス契約番号)
		ArrayList<HashMap<String, Object>> resultKU0011B010List = new ArrayList<HashMap<String, Object>>();
		callEKU0011B010SC(param, handle, svcKeiNoNet, resultKU0011B010List);
		
		for (int i = 0; i < resultKU0011B010List.size(); i++) {
			// 工事案件番号
			String kojiakNo = (String)resultKU0011B010List.get(i).get(EKU0011B010CBSMsg1List.KOJIAK_NO);

			// 工事案件一意照会
			// 工事案件ステータス・工事案件種別コード・工事受付契機異動区分を取得(KEY:工事案件番号)
			CAANMsg eku0011a010Msg = callEKU0011A010SC(param, handle, kojiakNo);
			CAANMsg eku0011a010ListMsg = eku0011a010Msg.getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST)[0];
			
			// 工事案件ステータス
			String kojiakStat = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.KOJIAK_STAT);
			// 工事案件種別コード
			String kojiakSbtCd = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD);
			// 工事受付契機異動区分
			String kojiukOptIdoDiv = eku0011a010ListMsg.getString(EKU0011A010CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV);
			
			if (checkKojiakState(kojiakStat)
				&& JKKStrConst.CD00577_NEWESTA.equals(kojiakSbtCd)
				&& (KOJI_UK_OPTNTY_IDO_DIV_NEW.equals(kojiukOptIdoDiv) || KOJI_UK_OPTNTY_IDO_DIV_ADD.equals(kojiukOptIdoDiv))) {
				//ネットの新設工事
				netKojiak = eku0011a010ListMsg;
				break;
			}
		}
		
		// ネットの新設工事がない
		if(netKojiak == null){
			return;
		}
		
		
		// 配送情報一覧照会
		// サービス契約番号（ネット）に紐づいている機器より配送情報を取得する
		HashMap<String, Object> workEDK0011B080Rslt = new HashMap<String, Object>();
		ArrayList haisoStatList = new ArrayList<String>();
		haisoStatList.add(HAISO_STAT_UK_ZM);
		haisoStatList.add(HAISO_STAT_SJ_ZM);
		haisoStatList.add(HAISO_STAT_SK_ZM);
		haisoStatList.add(HAISO_STAT_KNRYO);
		haisoStatList.add(HAISO_STAT_CHUSI);
		JKKBpCommon.searchHaisoInfo(param, handle, svcKeiNoNet, null, null, null, haisoStatList, workEDK0011B080Rslt, "cancelSvcKeiCCSearchHaiso");

		CAANMsg[] eDK0011B080CBSMSG1LIST = (CAANMsg[])workEDK0011B080Rslt.get(EDK0011B080CBSMsg.EDK0011B080CBSMSG1LIST);

		String haisoNoTblt = "";
		String haisoNoCrdl = "";
		boolean haisoFlgTblt = false;
		boolean haisoFlgCrdl = false;
		// IT1-2014-0000315 2014/09/29 add start
		String haisoTaibpinNoTblt = "";
		// IT1-2014-0000315 2014/09/29 add end

		for (int l=0; l < eDK0011B080CBSMSG1LIST.length; l++)
		{
			CAANMsg childTemplate = eDK0011B080CBSMSG1LIST[l];
			String haisoStat = childTemplate.getString(EDK0011B080CBSMsg1List.HAISO_STAT);

			// タブレット端末の機器提供サービス契約番号と一致する配送番号取得
			if (kktkSvcKeiNoTblt.equals(childTemplate.getString(EDK0011B080CBSMsg1List.KKTK_SVC_KEI_NO))){
				haisoFlgTblt = true;
				if (HAISO_STAT_UK_ZM.equals(haisoStat) || HAISO_STAT_CHUSI.equals(haisoStat)){
					haisoNoTblt = childTemplate.getString(EDK0011B080CBSMsg1List.HAISO_NO);
					// IT1-2014-0000315 2014/09/29 add start
					haisoTaibpinNoTblt = childTemplate.getString(EDK0011B080CBSMsg1List.HAISO_TAIBPIN_NO);
					// IT1-2014-0000315 2014/09/29 add end
				}
			}

			// タブレット用クレードル機器の機器提供サービス契約番号と一致する配送番号取得
			// IT1-2014-0000315 2014/09/29 mod start
			//if (kktkSvcKeiNoCrdl.equals(childTemplate.getString(EDK0011B080CBSMsg1List.KKTK_SVC_KEI_NO))){
			if (!StringUtils.isEmpty(kktkSvcKeiNoCrdl) && kktkSvcKeiNoCrdl.equals(childTemplate.getString(EDK0011B080CBSMsg1List.KKTK_SVC_KEI_NO))){
			// IT1-2014-0000315 2014/09/29 mod end
				haisoFlgCrdl = true;
				if (HAISO_STAT_UK_ZM.equals(haisoStat) || HAISO_STAT_CHUSI.equals(haisoStat)){
					haisoNoCrdl = childTemplate.getString(EDK0011B080CBSMsg1List.HAISO_NO);
				}
			}
		}
		
		// 配送ステータスが進んでいたら以降処理を行わない
		// IT1-2014-0000315 2014/09/29 mod start
		//if ((haisoFlgTblt && isNull(haisoNoTblt)) || (haisoFlgCrdl && isNull(haisoNoCrdl)))
		if (haisoFlgTblt && isNull(haisoNoTblt)){
			tbltFlg = false;
		}
		if (haisoFlgCrdl && isNull(haisoNoCrdl)){
			crdlFlg = false;
		}
		if(!tbltFlg && !crdlFlg){
			return;
		}
		// IT1-2014-0000315 2014/09/29 mod end
		
		// IT1-2014-0000315 2014/09/29 add start
		// 登録契機契約異動区分を取得
		String addOptntyKeiIdoDiv = "";
		ArrayList<HashMap<String, Object>> resultDK0011B090List = new ArrayList<HashMap<String, Object>>();
		callEDK0011B090SC(param, handle, haisoTaibpinNoTblt, resultDK0011B090List);
		if (resultDK0011B090List != null && resultDK0011B090List.size() > 0)
		{
			addOptntyKeiIdoDiv = (String)resultDK0011B090List.get(0).get(EDK0011B090CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV);
		}
		// 個別追加された配送の場合、以降処理をしない
		if(JKKSvcConst.IDO_DIV_KIKIKEICHGE.equals(addOptntyKeiIdoDiv))
		{
			return;
		}
		// IT1-2014-0000315 2014/09/29 add end
		
		// IT1-2014-0000269 2014/08/09 add start
		//出荷完了時処理済フラグを取得
		String shkaFinJiSyrzmFlgTblt = "";
		String shkaFinJiSyrzmFlgCrdl = "";
		// IT1-2014-0000269 2014/08/09 add end
		//機器提供サービス契約の一意照会
		if(!"".equals(kktkSvcKeiNoTblt)){
			CAANMsg ekk0341A010Msg = callEKK0341A010SC(param, handle, kktkSvcKeiNoTblt);
			tbltTemplate = ekk0341A010Msg.getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0];
			// IT1-2014-0000269 2014/08/09 add start
			shkaFinJiSyrzmFlgTblt = tbltTemplate.getString(EKK0341A010CBSMsg1List.SHKA_FIN_JI_SYRZM_FLG);
			// IT1-2014-0000269 2014/08/09 add end
		}
		if(!"".equals(kktkSvcKeiNoCrdl)){
			CAANMsg ekk0341A010Msg = callEKK0341A010SC(param, handle, kktkSvcKeiNoCrdl);
			crdlTemplate = ekk0341A010Msg.getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0];
			// IT1-2014-0000269 2014/08/09 add start
			shkaFinJiSyrzmFlgCrdl = tbltTemplate.getString(EKK0341A010CBSMsg1List.SHKA_FIN_JI_SYRZM_FLG);
			// IT1-2014-0000269 2014/08/09 add end
		}
		// IT1-2014-0000269 2014/08/09 add start
		// 出荷完了時処理済フラグが1なら以降処理を行わない
		// IT1-2014-0000315 2014/09/29 mod start
		//if("1".equals(shkaFinJiSyrzmFlgTblt) || "1".equals(shkaFinJiSyrzmFlgCrdl)){
		if("1".equals(shkaFinJiSyrzmFlgTblt)){
			tbltFlg = false;
		}
		if("1".equals(shkaFinJiSyrzmFlgCrdl)){
			crdlFlg = false;
		}
		if(!tbltFlg && !crdlFlg){
			return;
		}
		// IT1-2014-0000315 2014/09/29 mod end
		
		String kojiakStat = netKojiak.getString(EKU0011B010CBSMsg1List.KOJIAK_STAT);
		
		// ネットの情報を取得
		// サービス契約一意照会
		HashMap<String, Object> eKK0081A010Hash = new HashMap<String, Object>();
		HashMap<String, Object> inHash = new HashMap<String, Object>();
		inHash.put(JKKCancelSvcKeiCC.REQ_PARAM_SVC_KEI_NO, svcKeiNoNet);
		callEKK0081A010SC(param, handle, inHash, eKK0081A010Hash);
		
		// IT1-2014-0000269 2014/08/09 add start
		//ホーム、メゾン、マンション光配線であること
		String prcGrpCdNet = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		String pcrsCdNet = (String)eKK0081A010Hash.get(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;
		}
		// IT1-2014-0000269 2014/08/09 add end
		
		String mskmDtlNo = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.MSKM_DTL_NO);
		String lastUpdDtm = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.LAST_UPD_DTM);
		
		
		// 工事案件ステータスが宅内調査完了済以下
		if (checkKojiakState150(kojiakStat)) {
			//N-1タブレット端末(タブレット用クレードル機器含む)の工事会社配送設定
			
			// 申込明細一意照会
			HashMap<String, Object> eKK0021A010Map = new HashMap<String, Object>();
			callEKK0021A010SC(param, handle, mskmDtlNo, eKK0021A010Map);
			
			// 「機器提供サービス契約」のサービス開始時配送状況識別コードをNULLに更新
			// IT1-2014-0000315 2014/09/29 mod start
			// タブレット
			if(tbltFlg){
				lastUpdDtm = callEKK0341C230SC(param,handle,tbltTemplate,lastUpdDtm,"");
			}
			// クレードル
			if(crdlFlg){
				lastUpdDtm = callEKK0341C230SC(param,handle,crdlTemplate,lastUpdDtm,"");
			}
			// IT1-2014-0000315 2014/09/29 mod end
			
			// 工事案件CC実行（工事案件諸変更SIF）　※ネットの情報をもとにする
			// タブレットとクレードルを工事案件対象宅内機器に登録
			JKKKojiAnkenCC kojiCC = new JKKKojiAnkenCC();
			cancelSvcKeiMapper.editMapKojiAnkenKikiChg(param, sysid, eKK0021A010Map, eKK0081A010Hash,
					idoDiv, JKKKojiAnkenConstCC.TABLET_HAISO_KBN_RE_CREATE_KJ_HAISO);
			kojiCC.executeKojiAnken(handle, param, "fixedTextTabletAddKoji");
			
			//物流CCにパラメータを渡し、タブレット・クレードルの直送を取り消す (KKSV0408OPOperationで物流CCにセット)
			// IT1-2014-0000315 2014/09/29 mod start
			//if(!isNull(haisoNoTblt) && !isNull(haisoNoCrdl)){
			if(tbltFlg || crdlFlg){
			// IT1-2014-0000315 2014/09/29 mod end
				tabletHaisoKbn = JKKKojiAnkenConstCC.TABLET_HAISO_KBN_RE_CREATE_KJ_HAISO;
			}
			
		// 工事案件ステータスが工事会社決定済以上
		} else if (checkKojiakState160(kojiakStat)) {
			//N-2タブレット端末(タブレット用クレードル機器含む)の工事完了後配送設定
			
			// 「機器提供サービス契約」のサービス開始時配送状況識別コードを"サービス開始時配送対象"に更新
			// IT1-2014-0000315 2014/09/29 mod start
			// タブレット
			if(tbltFlg){
				lastUpdDtm = callEKK0341C230SC(param,handle,tbltTemplate,lastUpdDtm,SVC_STA_JI_HIS_JOKYO_SKCD_1);
			}
			// クレードル
			if(crdlFlg){
				lastUpdDtm = callEKK0341C230SC(param,handle,crdlTemplate,lastUpdDtm,SVC_STA_JI_HIS_JOKYO_SKCD_1);
			}
			// IT1-2014-0000315 2014/09/29 mod end
			
			//物流CCにパラメータを渡し、タブレット・クレードルの直送を取り消す
			// IT1-2014-0000315 2014/09/29 mod start
			//if(!isNull(haisoNoTblt) && !isNull(haisoNoCrdl)){
			if(tbltFlg || crdlFlg){
			// IT1-2014-0000315 2014/09/29 mod end
				tabletHaisoKbn = JKKKojiAnkenConstCC.TABLET_HAISO_KBN_RE_CREATE_KJ_HAISO;
			}
			
		}
	}
	
	/**
	 * ハイブリッド→ネットのタブレット、クレードル処理専用
	 * EKK0341C230の実行
	 */
	private String callEKK0341C230SC(IRequestParameterReadWrite param, SessionHandle handle, 
			CAANMsg msg, String lastUpdDtm, String svcStaJiHisJkSkCd) throws Throwable{

		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0341C230への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C230CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0341C230SCInMsg(template, msg, svcStaJiHisJkSkCd, lastUpdDtm);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		return resultMsgs[0].getString(EKK0341C230CBSMsg.UPD_DTM);
	}
	
	/**
	 * 工事案件ステータスから工事状況の判断を行う
	 * @param kojiakStat
	 * @return
	 */
	private boolean checkKojiakState(String kojiakStat)
	{
		// 空白の場合はfalse
		if (isNull(kojiakStat)) {
			return false;
		}
		
		// 工事案件ステータスが「200:工事完了済」、「900:中止」はfalse
		int intKojiakStat = Integer.parseInt(kojiakStat);
		if (intKojiakStat >= 200) {
			return false;
		}
		
		// 上記以外の場合はtrue
		return true;
	}

	/**
	 * 工事案件ステータスから工事状況の判断を行う(150:宅内調査完了済以下)
	 * @param kojiakStat
	 * @return
	 */
	private boolean checkKojiakState150(String kojiakStat)
	{
		// 空白の場合はfalse
		if (isNull(kojiakStat)) {
			return false;
		}
		
		// 工事案件ステータスが「160:工事会社決定済」以降はfalse
		int intKojiakStat = Integer.parseInt(kojiakStat);
		if (intKojiakStat > 150) {
			return false;
		}
		
		// 上記以外の場合はtrue
		return true;
	}

	/**
	 * 工事案件ステータスから工事状況の判断を行う(160:工事会社決定済以上)
	 * @param kojiakStat
	 * @return
	 */
	private boolean checkKojiakState160(String kojiakStat)
	{
		// 空白の場合はfalse
		if (isNull(kojiakStat)) {
			return false;
		}
		
		// 工事案件ステータスが「160:工事会社決定済」未満はfalse
		int intKojiakStat = Integer.parseInt(kojiakStat);
		if (intKojiakStat < 160) {
			return false;
		}
		
		// 上記以外の場合はtrue
		return true;
	}
	
	/**
	 * 請求契約一覧照会サービスIF呼出処理<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	sysid
	 * @param	resultHash		サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0491B005SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String sysid
			,ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0491B005への呼び出しパラメータ設定
		template = new CAANMsg(EKK0491B005CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0491B005SCInMsg(template, sysid);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0491B005CBSMsg.EKK0491B005CBSMSG1LIST, resultMsgs));
	}
	
	/**
	 * 機器提供サービス契約一覧照会（サービス契約番号）サービスIF呼出処理<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	sysid
	 * @param	resultHash		サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0341B002SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String svcKeiNo
			,ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0341B002への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341B002CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0341B002SCInMsg(template, svcKeiNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST, resultMsgs));
	}

//ANK-3732-00-00 ADD START
	/**
	 * 機器提供サービス契約一覧照会（サービス契約番号）サービスIF呼出処理<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	funcCd			機能コード
	 * @param	svcKeiNo		サービス契約番号
	 * @param	kktkSvcCd		機器提供サービスコード
	 * @param	kktkSvcKeiNo	機器提供サービス契約番号
	 * @param	sortKbn			ソート区分
	 * @param	resultHash		サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKK0341B002SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String funcCd
			,String svcKeiNo
			,String kktkSvcCd
			,String kktkSvcKeiNo
			,String sortKbn
			,ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0341B002への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341B002CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0341B002SCInMsg(template, funcCd, svcKeiNo, kktkSvcCd, kktkSvcKeiNo, sortKbn);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST, resultMsgs));
	}
//ANK-3732-00-00 ADD END

	/**
	 * 工事案件一覧照会サービスIF呼出処理<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	svcKeiNo
	 * @param	resultHash		サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEKU0011B010SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String svcKeiNo
			,ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKU0011B010への呼び出しパラメータ設定
		template = new CAANMsg(EKU0011B010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKU0011B010SCInMsg(template, svcKeiNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EKU0011B010CBSMsg.EKU0011B010CBSMSG1LIST, resultMsgs));
	}
	
	/**
	 * 機器提供サービス契約一意照会サービスIFを呼び出し<br>
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @return S/IF実行結果
	 * @throws Throwable 例外時にスローされます。
	 */
	private CAANMsg callEKK0341A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String kktkSvcKeiNo
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKK0341A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEKK0341A010SCInMsg(template, kktkSvcKeiNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		return resultMsgs[0];
	}
	// ANK-2138-00-00 2014/08/07 add end
	
	// IT1-2014-0000315 2014/09/29 add start
	/**
	 * 契約機器配送対象物品一覧照会サービスIF呼出処理<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	haisoTaibpinNo
	 * @param	resultHash		サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private void callEDK0011B090SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String haisoTaibpinNo
			,ArrayList<HashMap<String, Object>> resultHashList
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EKU0011B010への呼び出しパラメータ設定
		template = new CAANMsg(EDK0011B090CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEDK0011B090SCInMsg(template, haisoTaibpinNo);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		// 結果を設定
		resultHashList.addAll(mappingCAANOutMsg(EDK0011B090CBSMsg.EDK0011B090CBSMSG1LIST, resultMsgs));
	}
	// IT1-2014-0000315 2014/09/29 add end

//ANK-3732-00-00 ADD START
	/**
	 * 機器提供サービス契約料金コース変更中止サービスIF呼出処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param tgKKtkSvcKeiNo 機器提供サービス契約番号
	 * @param geneAddDtm 世代登録年月日時分秒
	 * @param updDtmBf 更新年月日時分秒(更新前)
	 * @param funcCd 機能コード
	 * @param resultHash 結果のハッシュ
	 * @throws Throwable 例外時にスローされます
	 */
	private void callEKK0341C170SC(
		IRequestParameterReadWrite param,
		SessionHandle handle,
		String funcCd,
		String tgKKtkSvcKeiNo,
		String geneAddDtm,
		String updDtmBf,
		HashMap<String, Object> resultHash) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;
		Map<?, ?> sIFResult = null;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341C170への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C170CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0341C170SCInMsg(template, funcCd, tgKKtkSvcKeiNo, geneAddDtm, updDtmBf);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		// SIFの実行結果を設定
		resultHash.put(TEMPLATE_ID_EKK0341C170, cancelSvcKeiMapper.mappingEKK0341C170SCOutMsg(resultMsgs));
	}

	/**
	 * 機器提供サービス契約機器変更手続中止サービスIF呼出処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param tgKKtkSvcKeiNo 機器提供サービス契約番号
	 * @param geneAddDtm 世代登録年月日時分秒
	 * @param updDtmBf 更新年月日時分秒(更新前)
	 * @param funcCd 機能コード
	 * @param resultHash 結果のハッシュ
	 * @throws Throwable 例外時にスローされます
	 */
	private void callEKK0341C540SC(
		IRequestParameterReadWrite param,
		SessionHandle handle,
		String funcCd,
		String tgKKtkSvcKeiNo,
		String geneAddDtm,
		String updDtmBf,
		HashMap<String, Object> resultHash) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;
		Map<?, ?> sIFResult = null;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341C540への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C540CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEKK0341C540SCInMsg(template, funcCd, tgKKtkSvcKeiNo, geneAddDtm, updDtmBf);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SC呼び出しクラスの生成
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// SIFの呼び出し
		sIFResult = scCall.run(sIFRequest, handle);

		// エラーマッピング処理
		editResultRP(sIFResult, param);

		// エラーチェック
		errChk(sIFResult);

		// 結果の取得
		resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		// SIFの実行結果を設定
		resultHash.put(TEMPLATE_ID_EKK0341C540, cancelSvcKeiMapper.mappingEKK0341C540SCOutMsg(resultMsgs));
	}
//ANK-3732-00-00 ADD END
	// ANK-3949-00-00 ADD START
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得用I/F
	 * @param adchgNo 住所変更番号
	 * @return サービスコンポーネント実行用CAANMsg
	 * @since 2012.12.05
	 */
	@SuppressWarnings("unchecked")
	public void setNetflixCC(IRequestParameterReadWrite param, String svcKeiNo)
	throws Throwable 
	{
		
		HashMap targetMap = null;

		// ユーザデータ情報
		targetMap = (HashMap)param.getData("NETFLIXCC");
		if (null == targetMap)
		{
			targetMap = new HashMap<String, Object>();
			param.setData("NETFLIXCC", targetMap);
		}
		else
		{
			targetMap.clear();
		}
		
		// サービス契約番号
		targetMap.put("svc_kei_no", (String) svcKeiNo);

		// 処理区分
		targetMap.put("syori_kbn", "01"); // 01：解約・強制解約・キャンセル
		
		
	}
	// ANK-3949-00-00 ADD END
// ANK-4494-00-00 Step2品質強化対応No.33 20241204 星野 ADD START
	/**
	 * 電話番号一意照会サービスIFを呼び出し<br>
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param telno 電話番号
	 * @return S/IF実行結果
	 * @throws Throwable 例外時にスローされます。
	 */
	private CAANMsg callEZM0121A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String telno
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EZM0121A010への呼び出しパラメータ設定
		template = new CAANMsg(EZM0121A010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappingEZM0121A010SCInMsg(template, telno);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);

		return resultMsgs[0];
	}
	
	/**
	 * EZM0121C010サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用hash
	 * @param resultHash EZM0121C010SCの結果
	 * @return EZM0121C010サービスＩＦのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private void callEZM0121C010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			CAANMsg msgEZM0121A010
	) throws Throwable
	{
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// EZM0121C010への呼び出しパラメータ設定
		template = new CAANMsg(EZM0121C010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinEZM0121C010SCInMsg(template, msgEZM0121A010 );

		// SIF実行
		callScCmn(param, handle, template);
	}
// ANK-4494-00-00 Step2品質強化対応No.33 20241204 星野 ADD END
	// ANK-4685-00-00 ADD START
	/**
	 * ETU0051B010サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @throws Throwable 例外時にスローされます。
	 */
	private CAANMsg callETU0051B010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle
	) throws Throwable
	{
		// SIFの実行結果から取得したCAANMsg[]
		CAANMsg[] resultMsgs = null;
		// テンプレート情報部（入力時の情報）
		CAANMsg template = null;

		// ETU0051B010への呼び出しパラメータ設定
		template = new CAANMsg(ETU0051B010CBSMsg.class.getName());
		cancelSvcKeiMapper.mappinETU0051B010SCInMsg(template);

		// SIF実行
		resultMsgs = callScCmn(param, handle, template);
		
		return resultMsgs[0];
	}
	// ANK-4685-00-00 ADD END

}