/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKKyoseiDslRunCC
*   ソースファイル名：JKKKyoseiDslRunCC.java
*   作成者          ：富士通
*   日付            ：2011年09月19日
*＜機能概要＞
*   強制解約対象の抽出、強制解約実行を行う。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/09/19   FJ）        新規作成
*   v3.00.00    2012/03/05   FJ)敷地     【ANK-0061-00-00】サービス終了年月日とサービス課金終了年月日の設定値を変更
*   v3.00.01    2012/04/23   FJ)敷地     【UI残905】解約確定のサービス課金終了年月日に設定する値を変更
*   v4.00.00    2012/07/20   FJ）島岡	スマートバリュー異動情報登録処理追加
*   									フェムトセル異動情報登録処理追加
*   v4.00.01    2012/08/03   FJ)森本     【ANK-0342-00-00】宅内機器管理システムとの「サービス契約番号」の連携
*   v4.00.02    2012/09/03   FJ)中野（泰）	「TAI-2012-0000067」請求オプションサービス契約の解約について
*   										「ANK-0024-05-00」 - お客さまID通知停止・初期eoID未発番対応
*   										「ANK-0546-00-00」 - 宅内プラットフォーム事業本格対応（追加要件取り込み）
*   v4.00.03    2012/10/28   FJ)敷地      SEP-0020-00-00 現行ICS指摘対応：337
*   v5.00.00    2013/01/24   FJ)横井     ANK-1306-00-00 一時金取消対応
*   v5.01.00    2013/02/08   FJ)横井     ANK-1421-00-00 IP-STB
*   v5.01.00    2013/03/26   FJ)大山     OT-2013-0000311
*   v5.01.01    2013/04/16   FJ)坂本     KT1-2013-0000418 
*   v7.00.00    2014/02/24   FJ)藤本     【ST-2014-0000057】強制解約バッチ実行時に多機能ルーターが宅内連携できていない
*   v7.01.00    2014/03/20   FJ)阮       【OM-2014-0000894】住所変更時に番号追加・番号変更した内訳が解約されない
*   v8.00.00    2014/04/07   FJ)藤田     【ANK-1988-00-00】マンション全戸一括オプション停止（ファミパ割対応）
*   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/05/14   FJ)藤田     【IT1-2014-0000131】 電話セレクトオプションパックが存在する状態でサービス解約時、正常に解約できない
*  v11.00.00	2014/10/11   FJ)齋藤	 【ANK-2248-00-00】 NHK団体一括対象範囲拡大について
*  v15.00.00	2015/07/15   FJ)森脇	 【OM-2015-0001577】eoメールアドレスの強制解約でSODが発行されない
*  v15.01.00    2015/07/15   FJ)森脇     【OM-2015-0000711】多機能ルータに対する解約・消去オーダを発行したら異常応答
*  v16.00.00	2015/05/19   FJ)中原	 【ANK-2480-00-00】新電力対応
*  v28.00.00    2017/01/31   FJ)江藤     【OM-2016-0001720】買取機器情報送信（ディレイド用）バッチ廃止
*  v29.00.00	2017/02/21   FJ)中原	 【OM-2016-0001956】強制解約返品登録不備
*  v33.00.00	2017/10/09   FJ)田原	 【ANK-2801-01-00】全戸一括マンション子契約強制解約処理改善対応（サービス解約版）
*  v36.00.00	2018/02/20   FJ)河邊	 【OM-2018-0000005】強制解約エラー
*  v51.00.00	2020/10/28   FJ)澤田     【ANK-3949-00-00】Netflix導入対応（STEP1）
*  v61.00.00	2022/12/14   FJ)宇野     【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
*  v66.00.00	2023/06/04   FJ)菅原     【#62776】ONUが解約されず利用停止中のままになっている障害対応
*  v72.00.00	2024/08/13	 FJ)張	     【ANK-4494-00-00】【eo定期】双方向番ポ対応_STEP2
*  v72.00.01	2024/09/06   FJ)張 	     【ANK-4494-00-00】【eo定期】双方向番ポ対応_STEP2
*  v73.48.00	2025/01/31   FJ)辻中 	 【ANK-4427-48-00】NTT卸対応：工事なし対応
*  v74.00.00	2025/02/10   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.Calendar;
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.JKKDslRunConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKFmtcelIdoInfAddConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKHakkoSODConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKKeiIdoKhCheckConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKKkopHiChrgJdgConstCC;
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.JKKTelnoStatJudgeConstCC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0167_KKSV0167OP;
import com.fujitsu.futurity.bp.custom.constant.KKSV0167_KKSV0167OP_KKSV016701CC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0167_KKSV0167OP_KKSV016701CC_KAI_TAI_LST;
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.SCCallException;
import com.fujitsu.futurity.bp.x21.sc.exception.SCException;
import com.fujitsu.futurity.bp.x21.values.MessageID;
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.fujitsu.futurity.model.ejb.common.JSYejbLog;

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 JKKKyoseiDslRunCC extends AbstractCommonComponent
{
	
	/*********** クラスフィールド ******************/
	/** ----- 作業用クラスフィールド ----- **/
	/** 運用日付 */
	private String oPE_DATE = "";
	/** 処理結果フラグ **/
	private boolean wk_Fuka_flg = false;
	/** SODCC用 サービス契約内訳番号リスト **/
	private ArrayList<HashMap<String, Object>> sodSvcKeiUcwkList = null;
// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 ADD START
	/** 電話番号スキーマ更新用 電話番号リスト **/
	private ArrayList<String> dslTelnoList = null;
// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 ADD END
	
	/** サービス契約 更新年月日時分秒 */
	private String svcKeiUpdDtm = "";
	/** 起動コード */
	private String kidoCd = "";

	/** サービスインタフェース呼び出しで使用するマッパー群 */
	private JKKKyoseiDslRunMapperCC mapper = null;

	/** ----- リクエスト・レスポンス パラメータ ----- **/
	/** ----- 強制解約対象抽出 ----- **/
	/** 根元の要素(強制解約対象抽出) **/
	private static final String KKSV017201CC            = "KKSV017201CC";
	/** 抽出対象請求契約番号 **/
	public static final String CHSHT_TRGT_SEIKY_KEI_NO = "chsht_trgt_seiky_kei_no";
	/** サービス契約番号リスト */
	public static final String SVC_KEI_NO_LIST  = "svc_kei_no_list";
	/** 請求契約番号 **/
	public static final String SEIKY_KEI_NO     = "SEIKY_KEI_NO";
	/** サービス契約番号 */
	public static final String SVC_KEI_NO       = "SVC_KEI_NO";
	/** 申込明細番号 */
	public static final String MSKM_DTL_NO      = KKSV0167_KKSV0167OP_KKSV016701CC_KAI_TAI_LST.MSKM_DTL_NO;
	/** レスポンスキー　サービス契約番号 */
	public static final String RES_SVC_KEI_NO   = "svc_kei_no";
	/** レスポンスキー　請求契約番号 */
	public static final String RES_SEIKY_KEI_NO = "seiky_kei_no";
	/** レスポンスキー　ＳＹＳＩＤ */
	public static final String RES_SYSID        = "sysid";
	// TG1-2013-0000840 強制解約対象抽出処理で撤去解約中の契約を抽出しなかった場合のメッセージが不明確 2013/08/06 START
	/** 撤去解約予約リスト */
	public static final String TEKKYO_DSL_RSV_LIST  = "tekkyo_dsl_rsv_list";
	// TG1-2013-0000840 強制解約対象抽出処理で撤去解約中の契約を抽出しなかった場合のメッセージが不明確 2013/08/06 END
	
	/** ----- 強制解約 ----- **/
	/** 根元の要素(強制解約) **/
	private static final String KKSV016701CC      = KKSV0167_KKSV0167OP.KKSV016701CC;
	/** 処理結果 */
	private static final String SYORI_RESULT      = "SYORI_RESULT";
	/** 強制解約対象者リスト */
	private static final String KAI_TAI_LST       = KKSV0167_KKSV0167OP_KKSV016701CC.KAI_TAI_LST;
	/** 強制解約不可対象者リスト */
	private static final String FUKA_KAI_TAI_LST  = "FUKA_KAI_TAI_LST";
	/** 解約不可請求契約番号 */
	private static final String FUKA_SEIKY_KEI_NO = "FUKA_SEIKY_KEI_NO";
	/** 解約不可サービス契約番号 */
	private static final String FUKA_SVC_KEI_NO   = "FUKA_SVC_KEI_NO";
	/** 解約不可サービス名 */
	private static final String FUKA_SVC_KEI_NAME = "FUKA_SVC_KEI_NAME";
	/** 解約不可サービスコード */
	private static final String FUKA_SVC_KEI_CD   = "FUKA_SVC_KEI_CD";
	/** 解約不可SYSID */
	private static final String FUKA_SYSID        = "FUKA_SYSID";
	/** 解約不可料金グループ名 */
	private static final String FUKA_PRC_GRP_NM   = "FUKA_PRC_GRP_NM";
	/** 解約不可理由 */
	private static final String FUKA_RESON        = "FUKA_RESON";
	/** 起動コード */
	private static final String KIDO_CD           = "KIDO_CD";
	// KT1-2013-0000723 強制解約バッチでサービス層のエラーが発生した場合に対象データが特定できない 2013/07/14 START
	/** 業務エラー情報 */
	private static final String BUSINESS_ERROR_INFO = "BUSINESS_ERROR_INFO";
	// KT1-2013-0000723 強制解約バッチでサービス層のエラーが発生した場合に対象データが特定できない 2013/07/14 END

	/** 解約不可理由(依頼取消) */
	private static final String FUKA_RESON_RTN_IRAI_TORI = "01";
	/** 解約不可理由(契約手続中) */
	private static final String FUKA_RESON_RTN_KEITK_CHU = "02";
	/** 解約不可理由(eo光テレビ（KCN)) */
	private static final String FUKA_RESON_RTN_TV_KCN = "03";
	
	/** 機器提供サービスコード：ONU */
	private static final String KKTK_SVC_CD_ONU = "C012";
	
	/** 宅内サービス契約番号更新情報(月次)リスト */
	private static final String GETSUJI_TAKNI_SVKEI_LIST  = "GETSUJI_TAKNI_SVKEI_LIST";
	/** 宅内機器型式コード */
	private static final String GETSUJI_TAKNKIKI_MODEL_CD = "GETSUJI_TAKNKIKI_MODEL_CD";
	/** 機器製造番号 */
	private static final String GETSUJI_KIKI_SEIZO_NO     = "GETSUJI_KIKI_SEIZO_NO";
	/** サービス契約番号 */
	private static final String GETSUJI_SVC_KEI_NO        = "GETSUJI_SVC_KEI_NO";
	
	private static final String NET_KAI_SVKEI_LIST        = "NET_KAI_SVKEI_LIST";
	
	/** 処理結果(強制解約実行) */
	private static final String SYORI_RESULT_OK      = "0";
	/** 処理結果(強制解約不可サービスあり) */
	private static final String SYORI_RESULT_FUKA    = "1";
	
	/** 進捗ステータス(強制解約完了) */
	public static final String PRG_STAT_KYOKAI_FIN = "2203";
	/** 異動理由コード(強制解約(料金滞納)) */
	public static final String IDO_RSN_CD_KYOKAI_TAINO = "01";
	
	/** サービス契約内訳番号 */
	public static final String SVC_KEI_UCWK_NO = "svc_kei_ucwk_no";
	/** オプションサービス契約番号 */
	public static final String OP_SVC_KEI_NO = "op_svc_kei_no";
	/** 依頼年月日 **/
	public static final String REQYMD = "REQYMD";
	/** サービス解約起算年月日 */
	public static final String SVC_DSL_KISAN_YMD = "SVC_DSL_KISAN_YMD";
	/** サービス課金終了年月日 */
	public static final String SVC_CHRG_ENDYMD = "SVC_CHRG_ENDYMD";
	
	/** ------- 支払方式コード ------ **/
	/** 全戸一括 **/
	private static final String PAY_HOSHIKI_CD_ZKI = "003";
	/** 全居住者一括 **/
	private static final String PAY_HOSHIKI_CD_KYI = "004";
	
	/**************************************************************************/
	/** サービスコード                                                       **/
	/**************************************************************************/
	/** サービスコード：インターネット */
	private static final String SVC_CD_NET = "01";
	/** サービスコード：電話 */
	private static final String SVC_CD_TEL = JKKDslRun.SVC_CD_TEL;
	
	/**************************************************************************/
	/** オプションサービスコード                                             **/
	/**************************************************************************/
//	/** オプションサービスコード：Eメール */
//	private static final String OP_SVC_CD_EMAIL = "B001";
	/** オプションサービスコード：０５０電話 */
	private static final String OP_SVC_CD_N050  = JKKDslRun.OP_SVC_CD_N050;
	
	/**************************************************************************/
	/** サブオプションサービスコード                                         **/
	/**************************************************************************/
	/** サブオプションサービスコード：メールエイリアス */
	private static final String SBOP_SVC_CD_ALIAS = "D01";
	
	/**************************************************************************/
	/** サービス解約理由コード                                               **/
	/**************************************************************************/
	/** サービス解約理由コード：強制解約 */
	public static final String SVC_DLRE_CD_KYOSEI = "02";
	
	/**************************************************************************/
	/** サービスキャンセル理由コード                                         **/
	/**************************************************************************/
	/** サービスキャンセル理由コード：強制解約 */
	public static final String SVC_CANCEL_RSN_CD_KYOSEI = "07";
	
	/**************************************************************************/
	/** 異動区分                                                             **/
	/**************************************************************************/
	/** 異動区分：強制解約 */
	public static final String IDO_DIV_KYOSEI = "00064";
	
	/**************************************************************************/
	/** 料金グループコード値                                                 **/
	/**************************************************************************/
	/** 料金グループ:eo光ネットホームタイプ */
	private static final String PRC_GRP_CD_NET_HM      = "02";
	/** 料金グループ:eo光ネットメゾンタイプ */
	private static final String PRC_GRP_CD_NET_MZ      = "03";
	/** 料金グループ:eo光ネットマンションタイプ */
	private static final String PRC_GRP_CD_NET_MN      = "04";
	/** 料金グループ:eoADSL(eAccess) */
	private static final String PRC_GRP_CD_EACCESS     = "05";
	/** 料金グループコード：eoADSL(フレッツ) */
	private static final String PRC_GRP_CD_FLETS       = "06";
	/** 料金グループ:eo光電話 */
	private static final String PRC_GRP_CD_TEL         = "10";
	/** 料金グループ:eo光テレビ（ＫＣＮ） */
	private static final String PRC_GRP_CD_TV_KCN      = "12";
	/** 料金グループ:マンション・オーナー */
	private static final String PRC_GRP_CD_MANSION_OYA = "99";
	// 20130228 ST2-2013-0000739 ADD END
	// 20131223 ANK-1584-00-00 ADD START
	/** 料金グループ:ｍｉｎｅｏ */
	private static final String PRC_GRP_CD_MINEO = "51";
	// 20131223 ANK-1584-00-00 ADD END
	// OM-2015-0001577 ADD START
	/** 料金グループ:ｅｏメールアドレス */
	private static final String PRC_GRP_CD_MAIL = "16";
	// OM-2015-0001577 ADD END
	//2015-5-19　中原　ANK-2480-00-00 新電力対応 ADD START
	/** 料金グループ:ｅｏ電気 */
	private static final String PRC_GRP_CD_EODENKI = "17";
	//2015-5-19　中原　ANK-2480-00-00 新電力対応 ADD END
	/**************************************************************************/
	/** サービス契約ステータス                                               **/
	/**************************************************************************/
	/** 受付済 */
	private static final String SVC_KEI_STAT_UKE   = "010";
	/** 照査済 */
	private static final String SVC_KEI_STAT_SHOSA = "020";
	/** 締結済 */
	private static final String SVC_KEI_STAT_TEIK  = "030";
	/** サービス提供中 */
	private static final String SVC_KEI_STAT_TKC   = "100";
	/** 休止・中断中 */
	private static final String SVC_KEI_STAT_KYUS  = "210";
	/** 停止中 */
	private static final String SVC_KEI_STAT_STP   = "220";
	/** 解約済 */
	private static final String SVC_KEI_STAT_DSL   = "910";
	/** キャンセル済 */
	private static final String SVC_KEI_STAT_CNCL  = "920";

	/** ----- 支払い方法入力支援コード ----- */
//	/** 支払い方法入力支援コード：クレジットカード */
//	private static final String PAYWAY_INPUT_SHIEN_CD_CRECD = "1";
//	/** 支払い方法入力支援コード=ISP決済 */
//	private static final String PAYWAY_INPUT_SHIEN_CD_ISP = "2";

	/** ----- オプトインメール受信設定ステータス ----- */
	/** オプトインメール受信設定ステータス：有効 */
	private static final String OPTINM_RCV_SETTE_STAT_YK = "010";

	/**************************************************************************/
	/** エイジング種別                                                       **/
	/**************************************************************************/
	/** 電話番号 */
	private static final String AGING_SBT_CD_TELNO   = JKKDslRun.AGING_SBT_CD_TEL;
	/** 固定IPアドレス */
	private static final String AGING_SBT_CD_KTI_IP  = 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_ARIAS   = 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;

	//ANK-0035-00-0007_20120718_START
	/** ----- フェムトセル異動詳細コード ----- */
	/** 初期値(00) */
	private static final String FMTCEL_IDO_DTL_CD_00 = "00";
	//ANK-0035-00-0007_20120718_END
	
	/** ----- 電話用VLANオーダ受付関連 ----- **/
	/** 要求元アプリ種別コード:バッチ */
	public static final String YOKYU_MT_APL_SBT_CD_BAT = "B";
	/** VLANオーダコード:VLAN */
	public static final String VLAN_ORDER_CD_VLAN = "01";
	/** 要求種別コード:解約 */
	public static final String YOKYU_SBT_CD_KAIYK = "03";
	/** VLANサーバコード:設備管理 */
	public static final String VLAN_SERVER_CD_STB_KANRI = "1";
	
	/** ----- エイジング関連 ----- **/
	/** エイジング種別コード */
	public static final String AGING_SBT_CD = "aging_sbt_cd";
	/** エイジング対象値 */
	public static final String AGING_TG_VALUE = "aging_tg_value";
	/** エイジング更新年月日時分秒 */
	public static final String AGING_TG_UPD_DTM = "aging_tg_upd_dtm";
	
	/** ----- 割引CC関連 ----- **/
	/** 登録／変更区分（解約） */
	public static final String ADD_CHGE_DIV_DSL = "03";
	/** 対象契約識別コード　01：サービス契約 */
	public static final String TG_KEI_SKBT_CD_SVC_KEI = "01";
	/** グループ区分　00：基準契約 */
	public static final String GRP_DIV_STDARD = "00";

	/**************************************************************************/
	/** テンプレートＩＤ                                                     **/
	/**************************************************************************/
	/** 課金先一覧照会（請求契約番号／サービス契約番号） **/
	public static final String TEMPLATE_ID_EKK0321B002 = "EKK0321B002";
	/** 課金先一意照会 **/
	public static final String TEMPLATE_ID_EKK0321A010 = "EKK0321A010";
	/** サービス契約一意照会 **/
	public static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/** サービス契約内訳一意照会 **/
	public static final String TEMPLATE_ID_EKK0161A010 = "EKK0161A010";
	/** サービス契約内訳一覧照会 **/
	public static final String TEMPLATE_ID_EKK0161B004 = "EKK0161B004";
	/** オプションサービス契約一意照会 **/
	public static final String TEMPLATE_ID_EKK0351A010 = "EKK0351A010";
	/** サブオプションサービス契約一意照会 **/
	public static final String TEMPLATE_ID_EKK0401A010 = "EKK0401A010";
	/** 機器提供サービス契約一意照会 **/
	public static final String TEMPLATE_ID_EKK0341A010 = "EKK0341A010";
	/** 機器提供サービス一意照会 **/
	public static final String TEMPLATE_ID_EKK0771A010 = "EKK0771A010";
	/** サービス契約解約 **/
	public static final String TEMPLATE_ID_EKK0081C180 = "EKK0081C180";
	/** サービス契約内訳解約 **/
	public static final String TEMPLATE_ID_EKK0161C180 = "EKK0161C180";
	/** 機器提供サービス契約解約 **/
	public static final String TEMPLATE_ID_EKK0341C340 = "EKK0341C340";
	/** 機器提供サービス契約キャンセル **/
	public static final String TEMPLATE_ID_EKK0341C330 = "EKK0341C330";
	/** オプションサービス契約解約 **/
	public static final String TEMPLATE_ID_EKK0351C240 = "EKK0351C240";
	/** オプションサービス契約キャンセル **/
	public static final String TEMPLATE_ID_EKK0351C220 = "EKK0351C220";
	/** サブオプションサービス契約解約 **/
	public static final String TEMPLATE_ID_EKK0401C170 = "EKK0401C170";
	/** サブオプションサービス契約キャンセル **/
	public static final String TEMPLATE_ID_EKK0401C150 = "EKK0401C150";
	/** サービス契約解約確定 **/
	public static final String TEMPLATE_ID_EKK0081C260 = "EKK0081C260";
	/** サービス契約内訳解約確定 **/
	public static final String TEMPLATE_ID_EKK0161C190 = "EKK0161C190";
	/** オプションサービス契約解約確定 **/
	public static final String TEMPLATE_ID_EKK0351C250 = "EKK0351C250";
	/** サブオプションサービス契約解約確定 **/
	public static final String TEMPLATE_ID_EKK0401C180 = "EKK0401C180";
	/** 機器提供サービス契約解約確定 **/
	public static final String TEMPLATE_ID_EKK0341C350 = "EKK0341C350";
	/** お客様一意照会 **/
	public static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";
	/** オプトインメール受信設定一覧照会（SYSID）２ **/
	public static final String TEMPLATE_ID_ECK0141B005 = "ECK0141B005";
	/** オプトインメール受信設定無効 **/
	public static final String TEMPLATE_ID_ECK0141C030 = "ECK0141C030";
	/** サービス契約内訳＜eo光電話＞一意照会 **/
	public static final String TEMPLATE_ID_EKK0191A010 = "EKK0191A010";
	/** サービス契約内訳＜eo光ネット＞一意照会 **/
	public static final String TEMPLATE_ID_EKK0171A010 = "EKK0171A010";
	/** オプションサービス契約＜ISP＞一意照会 **/
	public static final String TEMPLATE_ID_EKK0361A010 = "EKK0361A010";
	/** サブオプションサービス契約＜ISP＞一意照会 **/
	public static final String TEMPLATE_ID_EKK0411A010 = "EKK0411A010";
	/** エイジング一覧照会(エイジング対象値) **/
	public static final String TEMPLATE_ID_EZM0111B030 = "EZM0111B030";
	/** エイジング対象使用終了 **/
	public static final String TEMPLATE_ID_EZM0111C010 = "EZM0111C010";
	/** 電話用VLANオーダ受付 **/
	public static final String TEMPLATE_ID_ESC0021D010 = "ESC0021D010";
	/** 進捗登録 **/
	public static final String TEMPLATE_ID_EKK1091D010 = "EKK1091D010";
	/** 業務パラメータ管理一意照会 **/
	public static final String TEMPLATE_ID_EZM0321A010 = "EZM0321A010";
	/** 申込明細一意照会 */
	public static final String TEMPLATE_ID_EKK0021A010 = "EKK0021A010";
	/** マンション情報一覧照会（サービス契約番号） **/
	public static final String TEMPLATE_ID_EKK0861B002 = "EKK0861B002";
	/** 同一利用場所サービス契約一覧照会 **/
	public static final String TEMPLATE_ID_EKK0081B009 = "EKK0081B009";
	/** 同一利用場所サービス契約一覧照会 **/
	public static final String TEMPLATE_ID_EKK0341B012 = "EKK0341B012";
	/** サービス契約回線内訳一覧照会 **/
	public static final String TEMPLATE_ID_EKK0241B001 = "EKK0241B001";
	/** サービス契約_工事案件一覧照会 **/
	public static final String TEMPLATE_ID_EKU0081B020 = "EKU0081B020";
	/** サービス契約回線内訳一覧照会（サービス契約番号） **/
	public static final String TEMPLATE_ID_EKK0251B001 = "EKK0251B001";
	/** サービス契約＜eo光電話＞一意照会 */
	public static final String TEMPLATE_ID_EKK0111A010 = "EKK0111A010";
	/** サービス契約内訳＜eoADSL＞一意照会 */
	public static final String TEMPLATE_ID_EKK0221A010 = null;
	/** テンプレートID：オプションサービス契約＜電話＞一意照会 */
	public static final String TEMPLATE_ID_EKK0371A010 = "EKK0371A010";
	/** 請求オプションサービス契約一意照会 */
	public static final String TEMPLATE_ID_EKK0441A010 = "EKK0441A010";
	/** 請求オプションサービス契約キャンセル */
	public static final String TEMPLATE_ID_EKK0441C210 = "EKK0441C210";
	/** 請求オプションサービス契約解約 */
	public static final String TEMPLATE_ID_EKK0441C230 = "EKK0441C230";
	/** 請求オプションサービス契約解約確定 */
	public static final String TEMPLATE_ID_EKK0441C240 = "EKK0441C240";
	/** インターネットサービス一覧照会（請求契約番号） */
	public static final String TEMPLATE_ID_EKK0081B526 = "EKK0081B526";
	/** 進捗登録(全データ) **/
	public static final String TEMPLATE_ID_EKK1091D010_1 = "EKK1091D010_1";
	/** 割賦契約一覧照会（機器提供サービス契約番号） */
	public static final String TEMPLATE_ID_EKK2541B001 = "EKK2541B001";
	/** 割賦契約キャンセル */
	public static final String TEMPLATE_ID_EKK2541C170 = "EKK2541C170";
	/** 一時金設定一覧照会（申込明細番号） */
	public static final String TEMPLATE_ID_EKK1021B003 = "EKK1021B003";
	/** 一時金設定変更 */
	public static final String TEMPLATE_ID_EKK1021C010 = "EKK1021C010";
	/** 契約一時金一覧照会 */
	public static final String TEMPLATE_ID_EKK1051B001 = "EKK1051B001";
	/** 契約一時金変更 */
	public static final String TEMPLATE_ID_EKK1051C020 = "EKK1051C020";
	/** 回線利用中サービス契約一覧照会 */
	public static final String TEMPLATE_ID_EKK0081B007 = "EKK0081B007";
	/** 回線対象サービス契約一覧照会 */
	public static final String TEMPLATE_ID_EKK0241B002 = "EKK0241B002";
	/** 回線対象サービス契約一覧照会（サービス契約番号） */
	public static final String TEMPLATE_ID_EKK0241B003 = "EKK0241B003";
	/** 機器提供サービス契約一覧照会(サービス契約回線内訳) */
	public static final String TEMPLATE_ID_EKK0341B504 = "EKK0341B504";
	/**  **/
	public static final String TEMPLATE_ID_EKK0251B003 = "EKK0251B003";
	/**  **/
	public static final String TEMPLATE_ID_EKK2091B001 = "EKK2091B001";
	/** 番ポ工事一覧照会（番ポ申込書タイプ） */
	public static final String TEMPLATE_ID_ETU0011B018 = "ETU0011B018";
	/** 異動予約一覧照会 */
	public static final String TEMPLATE_ID_EKK1681B001 = "EKK1681B001";
	// 20140507 ANK-2054-00-00 ADD START
	/** 機器オプションサービス契約一覧照会（機器提供ＳＶ） */
	public static final String TEMPLATE_ID_EKK2811B010 = "EKK2811B010";
	/** 機器オプションサービス契約一意照会 */
	public static final String TEMPLATE_ID_EKK2811A010 = "EKK2811A010";
	/** 機器オプションサービス一意照会 */
	public static final String TEMPLATE_ID_EKK2801A010 = "EKK2801A010";
	/** 機器オプションサービス契約キャンセル */
	public static final String TEMPLATE_ID_EKK2811C110 = "EKK2811C110";
	/** 機器オプションサービス契約解約 */
	public static final String TEMPLATE_ID_EKK2811C140 = "EKK2811C140";
	/** 機器オプションサービス契約解約確定 */
	public static final String TEMPLATE_ID_EKK2811C150 = "EKK2811C150";
	// 20140507 ANK-2054-00-00 ADD END
	
// ANK-4494-00-00 ADD START
	/** 電話番号一覧照会 */
	public static final String TEMPLATE_ID_EZM0121A010 = "EZM0121A010";
	/** 電話番号更新 */
	public static final String TEMPLATE_ID_EZM0121C010 = "EZM0121C010";
// ANK-4494-00-00 ADD END
	// ANK-4685-00-00 ADD START
	/** 通信事業者一覧照会 */
	public static final String TEMPLATE_ID_ETU0051B010 = "ETU0051B010";
	// ANK-4685-00-00 ADD END
	
	// 20140507 ANK-2054-00-00 ADD START
	/** 機器オプションサービス非課金判定処理 */
	public static final String MAP_KEY_JKKKKOPHICHRGJDG = "JKKKkopHiChrgJdg";
	// 20140507 ANK-2054-00-00 ADD END
	
	/** 業務パラメータID：メーリングリストドメイン */
	public static final String WORK_PARAM_ID_MLLIST_NM_DOMAIN = "KK_MLLIST_NM_DOMAIN";

	// 2012/09/03 TAI-2012-0000067 ADD START 請求オプションサービス契約追加
	/** 請求オプションサービス契約番号 */
	public static final String SEIOP_SVC_KEI_NO = "seiopsvc_kei_no";
	// 2012/09/03 TAI-2012-0000067 ADD END
	
	// 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

	// 2012/09/11 ANK-0546-00-00 ADD START 割賦契約キャンセル処理を追加
	/** 配送ステータス（受付済） */
	private static final String HAISO_STAT_UK_ZM = "001";
	// ST1-2012-0001079 2012-12-19 ADD_END
	
	// SEP-0020-00-00 現行ICS指摘対応：337 ADD START
	/** 解約種別フラグ(サービス契約解約) */
	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";
	// SEP-0020-00-00 ADD END
	
	/** 作業項目マップのキー **/
	public static final String WORK_KEY = "WORK";
	
	/**************************************************************************/
	/** サービス契約回線内訳ステータス                                       **/
	/**************************************************************************/
	/** サービス契約回線内訳ステータス−使用中 */
	private static final String SVC_KEI_KAISEN_UCWK_STAT_USE = "100";

	/**************************************************************************/
	/** 住所変更ステータス                                                   **/
	/**************************************************************************/
	/** 住所変更ステータス 完了済 */
	private static final String ADCHG_STAT_003 = "003";

	/**************************************************************************/
	/** 継続後契約変更手続中フラグ                                           **/
	/**************************************************************************/
	/** 継続後契約変更手続中フラグ 電話変更手続き中 */
	private static final String KEIZK_AF_KEI_CHGECHU_FLG_TEL_CHNG_CHU = "1";
//	/** 継続後契約変更手続中フラグ 電話変更手続き済み */
//	private static final String KEIZK_AF_KEI_CHGECHU_FLG_TEL_CHNG_FIN = "0";

	/**************************************************************************/
	/** 起動コード                                                           **/
	/**************************************************************************/
	/** 起動コード：バッチ */
	public static final String KIDO_CD_BAT = "02";
	
	// 案件対応 ANK-1670-00-00 2013/11/08 ADD START
	/**************************************************************************/
	/** 番ポ有無（有）                                                      **/
	/**************************************************************************/
	public static final String BMP_UM_1 = "1";
	// 案件対応 ANK-1670-00-00 2013/11/08 END START
	//ANK-2248-00-00 ADD START
	/**************************************************************************/
	/** 請求オプションサービスコード                                         **/
	/**************************************************************************/
	/** 請求オプションサービスコード：請求書発行手数料 */
	private static final String SEIOPSVC_CD_SEIKYSH_HAKKO = "E001";
	//ANK-2248-00-00 ADD END
	
	// ANK-4494-00-00 ADD START
	/**************************************************************************/
	/**　個人法人番号帯コード                                                **/
	/**************************************************************************/
	/** 「個人法人番号帯コード」(法人)*/
	private static final String KOJIN_HOJIN_TLN_TAI_CD = "2";
	// ANK-4494-00-00 ADD END
	// ANK-4494-00-00 ADD START
	/**************************************************************************/
	/**　ポートアウト有                                                **/
	/**************************************************************************/
	/** ポートアウト有*/
	private static final String PORTOUT_ARI = "1";
	// ANK-4494-00-00 ADD END
	
	// ANK-4592-00-00 ADD START
    /** 作業マップ名 */
    private static final String CC_WORK_KYOSEI_DSL = "JKKKYOSEIDSLRUNCC";
    /** 処理コード 解約・停止・休止 */
    private static final String SHORI_CD_DSL_STP_PAUSE = "4";
    /** 操作区分 解約  */
    private static final String OPE_DIV_DSL = "1";
	// ANK-4592-00-00 ADD END

	/**
	 * 強制解約対象抽出メソッド
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable 例外時にスローします
	 */
	public IRequestParameterReadWrite chshtKyoseiDslSvc(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			String fixedText
	) throws Throwable
	{
		int statusCode = 0;

		HashMap<String, Object> paramHash = null;

		// マッパーの初期化
		if (null == this.mapper)
		{
			this.mapper = new JKKKyoseiDslRunMapperCC();
		}

		// 作業日の取得
//↓↓↓2013-07-05変更　巻取BLT-2013-0000241（オンライン日付で更新されたサービスが強制解約されない）↓↓↓
		oPE_DATE = JCCBPCommon.getOpeDate(null);
//↑↑↑2013-07-05変更　巻取BLT-2013-0000241（オンライン日付で更新されたサービスが強制解約されない）↑↑↑

		mapper.setOpeDate(oPE_DATE);

		// リクエストパラメータ情報取得(強制解約対象抽出)
		paramHash = analyzeRequestSearchParam(param);

		// メイン処理の実行
		statusCode = chshtKyoseiDslSvcProc(
				handle,
				param,
				paramHash,
				fixedText
		);

// ▼▼▼▼▼ サービスインターフェースのエラー発生時の対処変更 ▼▼▼▼▼
//		if(statusCode != 0)
//		{
//			// リターンコードの設定
//			param.setControlMapData(SCControlMapKeys.RETURN_CODE, String.valueOf(statusCode));
//			throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//		}

		// リターンコードの設定
		String formedCode = String.format("%1$04d", statusCode);
		param.setControlMapData(SCControlMapKeys.RETURN_CODE, String.valueOf(formedCode));

		// 処理終了
		return param;
	}
	
	/**
	 * リクエストパラメータの取得(強制解約対象抽出)
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return リクエストパラメータのHash
	 * @throws RequestParameterException 例外時にスローされます
	 */
	private HashMap<String, Object> analyzeRequestSearchParam(IRequestParameterReadWrite param) 
	throws RequestParameterException
	{
		
		HashMap<String, Object> paramData = null;
		HashMap<String, Object> rootData = null;

		paramData = new HashMap<String, Object>();
		
		//--データの受け取り
		//まずは根元の要素を取得
		rootData = (HashMap<String, Object>)param.getData(KKSV017201CC);

		if(rootData == null)
		{
			return null;
		}
		paramData.put(SEIKY_KEI_NO, rootData.get(CHSHT_TRGT_SEIKY_KEI_NO));

		return paramData;
	
	}
	
	
	
	/**
	 * 強制解約メソッド
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable 例外時にスローします
	 */
	public IRequestParameterReadWrite executeKyoseiDsl(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			String fixedText
	) throws Throwable
	{
		int statusCode = 0;

		HashMap<String, Object> paramHash    = null;
		HashMap<String, Object> kaitaiHash   = null;
		HashMap<String, Object> kksv016701CC = null;

		// マッパーの初期化
		if (null == this.mapper)
		{
			this.mapper = new JKKKyoseiDslRunMapperCC();
		}

		// 作業日の取得
//↓↓↓2013-07-05変更　巻取BLT-2013-0000241（オンライン日付で更新されたサービスが強制解約されない）↓↓↓
		oPE_DATE = JCCBPCommon.getOpeDate(null);
//↑↑↑2013-07-05変更　巻取BLT-2013-0000241（オンライン日付で更新されたサービスが強制解約されない）↑↑↑

		mapper.setOpeDate(oPE_DATE);

		// リクエストパラメータ情報取得(強制解約)
		paramHash = analyzeRequestKyoKaiParam(param);

		kksv016701CC = (HashMap<String, Object>)param.getData(KKSV016701CC);

		// 強制解約対象者リスト取得
		ArrayList<HashMap<String, Object>> kaiTaiLst = (ArrayList<HashMap<String, Object>>)paramHash.get(KAI_TAI_LST);

		// 強制解約不可対象者リスト生成
		ArrayList<HashMap<String, Object>> fukaKaiTaiLst = new ArrayList<HashMap<String, Object>>();
		// 宅内サービス契約番号更新情報(月次)リスト生成
		ArrayList<HashMap<String, Object>> getsujiTakniSvkeiList = new ArrayList<HashMap<String, Object>>();
		// ネット解約対象者リスト生成
		ArrayList<HashMap<String, String>> netKaiTaiLst = new ArrayList<HashMap<String, String>>();  // ST1-2012-0001075 2012/12/14 

		// 強制解約不可フラグ初期化
		this.wk_Fuka_flg = false;

		// 起動コード取得
		this.kidoCd = (String)kksv016701CC.get(KIDO_CD);

		// 繰り返し処理
		// 強制解約対象者数分ループ
		for(int i = 0 ; i < kaiTaiLst.size() ; i++)
		{
			kaitaiHash = kaiTaiLst.get(i);
			paramHash.put(SEIKY_KEI_NO,      kaitaiHash.get(SEIKY_KEI_NO));		// 請求契約番号
			paramHash.put(SVC_KEI_NO,        kaitaiHash.get(SVC_KEI_NO));		// サービス契約番号
			paramHash.put(MSKM_DTL_NO,       kaitaiHash.get(MSKM_DTL_NO));		// 申込明細番号
			paramHash.put(REQYMD,            kaitaiHash.get(REQYMD));			// 依頼年月日
			paramHash.put(SVC_DSL_KISAN_YMD, kaitaiHash.get(SVC_CHRG_ENDYMD));							// サービス解約起算年月日
			paramHash.put(SVC_CHRG_ENDYMD,   getDayOfBefore((String)kaitaiHash.get(SVC_CHRG_ENDYMD)));	// サービス課金終了年月日

			this.sodSvcKeiUcwkList = new ArrayList<HashMap<String, Object>>();
// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 ADD START
			this.dslTelnoList = new ArrayList<String>();
// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 ADD END
			this.svcKeiUpdDtm = "";

			// KT1-2013-0000723 強制解約バッチでサービス層のエラーが発生した場合に対象データが特定できない 2013/07/14 START
			try
			{
			// KT1-2013-0000723 強制解約バッチでサービス層のエラーが発生した場合に対象データが特定できない 2013/07/14 END
				// メイン処理の実行
				statusCode = executeKyoseiDslProc(
						handle,
						param,
						paramHash,
						fixedText,
						kksv016701CC,
						fukaKaiTaiLst,
						netKaiTaiLst
				);

// ▼▼▼▼▼ サービスインターフェースのエラー発生時の対処変更 ▼▼▼▼▼
//				if(statusCode != 0)
//				{
//					// リターンコードの設定
//					param.setControlMapData(SCControlMapKeys.RETURN_CODE, String.valueOf(statusCode));
//					throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//				}
			}
			// KT1-2013-0000723 強制解約バッチでサービス層のエラーが発生した場合に対象データが特定できない 2013/07/14 START
			catch (Exception e)
			{
				// エラー情報として強制解約対象者リストの対象データを設定する
				kksv016701CC.put(BUSINESS_ERROR_INFO, kaitaiHash);
				throw e;
			}
			// KT1-2013-0000723 強制解約バッチでサービス層のエラーが発生した場合に対象データが特定できない 2013/07/14 END
		}

		// OM-2016-0001720 宅内機器ステータスチェックを実現するために自前の処理をやめてJKKTkkkSvKeiNoUpdCCに共通化する 2017/01/31 MOD START
//		// ST1-2012-0001075 2012/12/14 start
//		// 強制解約したネットのリストを元にループ
//		// 同一場所の電話契約（キャンセル/解約以外）があればONUの情報を宅内Sに連携する必要がある
//		for(int k = 0; k < netKaiTaiLst.size(); k++)
//		{
//			HashMap<String, Object> inHash     = new HashMap<String, Object>();
//			HashMap<String, Object> resultHash = new HashMap<String, Object>();
//
//			inHash.put(EKK0081B009CBSMsg1List.SVC_KEI_NO, netKaiTaiLst.get(k).get(EKK0081A010CBSMsg1List.SVC_KEI_NO));	//ＫＥＹ＿サービス契約番号
//			callEKK0081B009SC(param, handle, inHash, resultHash);
//
//			ArrayList<HashMap<String, Object>> EKK0081B009HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0081B009);
//
//			for(int l = 0 ; l < EKK0081B009HashList.size() ; l++)
//			{
//				HashMap<String, Object> EKK0081B009Hash = EKK0081B009HashList.get(l);
//
//				// IKK-2013-0000926 2013-04-15 ADD_START
//				// サービス契約番号
//				String svcKeiNo = (String)EKK0081B009Hash.get(EKK0081B009CBSMsg1List.SVC_KEI_NO);
//				// IKK-2013-0000926 2013-04-15 ADD_END
//				// サービスコード取得
//				String svcCd     = (String)EKK0081B009Hash.get(EKK0081B009CBSMsg1List.SVC_CD);
//				// サービス契約ステータス取得
//				String svcKeiStat = (String)EKK0081B009Hash.get(EKK0081B009CBSMsg1List.SVC_KEI_STAT);
//
//				if(
//						SVC_CD_TEL.equals(svcCd)
//					&& !SVC_KEI_STAT_CNCL.equals(svcKeiStat)
//					&& !SVC_KEI_STAT_DSL.equals(svcKeiStat)
//				)
//				{
//					HashMap<String, Object> resultHash_kiki = new HashMap<String, Object>();
//					// ST-2014-0000057 強制解約バッチ実行時に多機能ルーターが宅内連携できていない 2014/02/24 START
////					HashMap<String, Object> takniHash       = new HashMap<String, Object>();
//					// ST-2014-0000057 強制解約バッチ実行時に多機能ルーターが宅内連携できていない 2014/02/24 END
//
//					// 機器提供サービス契約より宅内機器型式コード・機器製造番号を取得する。
//					statusCode = kktkSvcKei_getKIKIInfo(handle, param, inHash, resultHash_kiki);
//
//					if(statusCode != 0)
//					{
//						// リターンコードの設定
////						param.setControlMapData(SCControlMapKeys.RETURN_CODE, String.valueOf(statusCode));
//						throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode));
//					}
//
//					ArrayList<HashMap<String, Object>> eKK0341B012CBSMsg1List = null;
//					eKK0341B012CBSMsg1List = (ArrayList<HashMap<String, Object>>)resultHash_kiki.get(TEMPLATE_ID_EKK0341B012);
//
//					for(int lCnt = 0 ; lCnt  < eKK0341B012CBSMsg1List.size() ; lCnt++)
//					{
//						String kiki_seizo_no          = (String)eKK0341B012CBSMsg1List.get(lCnt).get(EKK0341B012CBSMsg1List.KIKI_SEIZO_NO);
//						String kiki_taknkiki_model_cd = (String)eKK0341B012CBSMsg1List.get(lCnt).get(EKK0341B012CBSMsg1List.TAKNKIKI_MODEL_CD);
//						String kiki_kktk_svc_cd       = (String)eKK0341B012CBSMsg1List.get(lCnt).get(EKK0341B012CBSMsg1List.KKTK_SVC_CD);
//
//						// ST-2014-0000057 強制解約バッチ実行時に多機能ルーターが宅内連携できていない 2014/02/24 START
////						if(KKTK_SVC_CD_ONU.equals(kiki_kktk_svc_cd))
////						{
//						if(KKTK_SVC_CD_ONU.equals(kiki_kktk_svc_cd) || JKKStrConst.KKTK_SVC_CD_TAKINORT.equals(kiki_kktk_svc_cd))
//						{
//							HashMap<String, Object> takniHash = new HashMap<String, Object>();
//							// ST-2014-0000057 強制解約バッチ実行時に多機能ルーターが宅内連携できていない 2014/02/24 END
//							takniHash.put(GETSUJI_TAKNKIKI_MODEL_CD, kiki_taknkiki_model_cd);
//							takniHash.put(GETSUJI_KIKI_SEIZO_NO,     kiki_seizo_no);
//							// IKK-2013-0000926 2013-04-15 ADD_START 電話のサービス契約番号を連携
//							takniHash.put(GETSUJI_SVC_KEI_NO,        svcKeiNo);
//							// IKK-2013-0000926 2013-04-15 ADD_END
//							// 宅内サービス契約番号更新情報(月次)リスト追加
//							getsujiTakniSvkeiList.add(takniHash);
//						}
//					}
//				}
//			}
//		}
//		// ST1-2012-0001075 2012/12/14 end
		// バッチ起動の場合、宅内サービス契約番号更新情報(月次)リストを出力
		if (KIDO_CD_BAT.equals(kidoCd))
		{
			getsujiTakniSvkeiList = callJKKTkkkSvKeiNoUpdCC(handle, param, fixedText, netKaiTaiLst);
		}
		// OM-2016-0001720 宅内機器ステータスチェックを実現するために自前の処理をやめてJKKTkkkSvKeiNoUpdCCに共通化する 2017/01/31 MOD END

		// 処理結果設定
		if(wk_Fuka_flg)
		{
			// 強制解約不可あり
			kksv016701CC.put(SYORI_RESULT, SYORI_RESULT_FUKA);
		}
		else
		{
			// 強制解約正常終了
			kksv016701CC.put(SYORI_RESULT, SYORI_RESULT_OK);
		}

		// 強制解約不可対象者リスト設定
		kksv016701CC.put(FUKA_KAI_TAI_LST, fukaKaiTaiLst);
		// 宅内サービス契約番号更新情報(月次)リスト設定
		kksv016701CC.put(GETSUJI_TAKNI_SVKEI_LIST, getsujiTakniSvkeiList);
		// ネットで解約したリスト設定
		kksv016701CC.put(NET_KAI_SVKEI_LIST, netKaiTaiLst);  // ST1-2012-0000875 2012/11/18 

		// 処理結果書き戻し
		param.setData(KKSV016701CC, kksv016701CC);

		// リターンコードの設定
		String formedCode = String.format("%1$04d", statusCode);
		param.setControlMapData(SCControlMapKeys.RETURN_CODE, formedCode);

		// 処理終了
		return param;

	}
	
	/**
	 * リクエストパラメータの取得(強制解約)
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @return リクエストパラメータのHash
	 * @throws RequestParameterException 例外時にスローされます
	 */
	private HashMap<String, Object> analyzeRequestKyoKaiParam(IRequestParameterReadWrite param) 
	throws RequestParameterException
	{
		
		HashMap<String, Object> paramData = null;
		HashMap<String, Object> rootData = null;

		paramData = new HashMap<String, Object>();
		
		//--データの受け取り
		//まずは根元の要素を取得
		rootData = (HashMap<String, Object>)param.getData(KKSV016701CC);

		if(rootData == null)
		{
			return null;
		}
		paramData.put(KAI_TAI_LST, rootData.get(KAI_TAI_LST));

		return paramData;
	
	}
	
	/**
	 * 強制解約対象抽出メイン処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param fixedText ユーザ任意文字列
	 * @return SIF呼び出し時のリターンコード
	 * @throws Throwable
	 */
	private int chshtKyoseiDslSvcProc(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			String fixedText
	) throws Throwable
	{
		ArrayList<HashMap<String, Object>> svcKeiNoList = new ArrayList<HashMap<String, Object>>();
		// TG1-2013-0000840 強制解約対象抽出処理で撤去解約中の契約を抽出しなかった場合のメッセージが不明確 2013/08/06 START
		ArrayList<HashMap<String, Object>> tekkyoDslRsvList = new ArrayList<HashMap<String, Object>>();
		// TG1-2013-0000840 強制解約対象抽出処理で撤去解約中の契約を抽出しなかった場合のメッセージが不明確 2013/08/06 END
		ArrayList<HashMap<String, Object>> eKK0321B002HashList = null;
		HashMap<String, Object> resultHash =  new HashMap<String, Object>();
		int statusCode = 0;

		String chsht_seiky_kei_no = (String)requestParam.get(SEIKY_KEI_NO);

		// 抽出請求契約番号なしの場合
		if(chsht_seiky_kei_no == null || "".equals(chsht_seiky_kei_no))
		{
			return 0;
		}

		// 課金先一覧照会（請求契約番号／サービス契約番号）
		statusCode = callEKK0321B002SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		eKK0321B002HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0321B002);

		// 課金先一覧照会結果判定処理
		// 0件の場合、終了
		if(eKK0321B002HashList.size() == 0)
		{
			return 0;
		}

		// 課金先の取得分だけループ
		for(int i = 0 ; i < eKK0321B002HashList.size() ; i++)
		{
			HashMap<String, Object> eKK0321B002Hash = null;
			eKK0321B002Hash = eKK0321B002HashList.get(i);
			String svc_kei_no = (String)eKK0321B002Hash.get(EKK0321B002CBSMsg1List.SVC_KEI_NO);
			String sysid      = (String)eKK0321B002Hash.get(EKK0321B002CBSMsg1List.SYSID);	//2012-02-07, サブIT障害938対応

			// サービス契約番号なしの場合
			if(svc_kei_no == null || "".equals(svc_kei_no))
			{
				continue;
			}
// OM-2018-0000005 2018/02/20 ADD START
			// SYSIDなしの場合
			if(sysid == null || "".equals(sysid))
			{
				// サービス契約一意照会
				HashMap<String, Object> requestParamEKK0081A010 = new HashMap<String, Object>();
				requestParamEKK0081A010.put(SVC_KEI_NO, svc_kei_no);
				statusCode = callEKK0081A010SC(param, handle, requestParamEKK0081A010, resultHash);
				if (statusCode != 0)
				{
					return statusCode;
				}
				
				// サービス契約一意照会の結果取得
				HashMap<String, Object> eKK0081A010Hash = null;
				eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
				sysid = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID);
			}
// OM-2018-0000005 2018/02/20 ADD END

			// ▼▼▼▼▼ 2013/07/09 TG1-2013-0000667 ADD START ▼▼▼▼▼
			// 予約適用年月日を過ぎた撤去解約の予約が未反映の状態で存在する場合
			if (isPastedTekkyoDslRsv(param, handle, requestParam, resultHash, svc_kei_no))
			{
				// TG1-2013-0000840 強制解約対象抽出処理で撤去解約中の契約を抽出しなかった場合のメッセージが不明確 2013/08/06 START
				HashMap<String, Object> tekkyoDslRsvInfo = new HashMap<String, Object>();
				tekkyoDslRsvInfo.put(RES_SVC_KEI_NO, svc_kei_no);
				tekkyoDslRsvInfo.put(RES_SEIKY_KEI_NO, chsht_seiky_kei_no);
				tekkyoDslRsvInfo.put(RES_SYSID, sysid);
				tekkyoDslRsvList.add(tekkyoDslRsvInfo);
				// TG1-2013-0000840 強制解約対象抽出処理で撤去解約中の契約を抽出しなかった場合のメッセージが不明確 2013/08/06 END
				continue;
			}
			// ▲▲▲▲▲ 2013/07/09 TG1-2013-0000667 ADD E N D ▲▲▲▲▲

			// サービス契約情報生成
			HashMap<String, Object> svc_kei_info = new HashMap<String, Object>();
			svc_kei_info.put(RES_SVC_KEI_NO,   svc_kei_no);
			svc_kei_info.put(RES_SEIKY_KEI_NO, chsht_seiky_kei_no);
			svc_kei_info.put(RES_SYSID,        sysid);										//2012-02-07, サブIT障害938対応
			// サービス契約情報追加
			svcKeiNoList.add(svc_kei_info);
		}

		// 抽出結果書き戻し
		HashMap<String, Object> kksv017201CC = new HashMap<String, Object>();
		kksv017201CC.put(SVC_KEI_NO_LIST, svcKeiNoList);
		// TG1-2013-0000840 強制解約対象抽出処理で撤去解約中の契約を抽出しなかった場合のメッセージが不明確 2013/08/06 START
		kksv017201CC.put(TEKKYO_DSL_RSV_LIST, tekkyoDslRsvList);
		// TG1-2013-0000840 強制解約対象抽出処理で撤去解約中の契約を抽出しなかった場合のメッセージが不明確 2013/08/06 END
		param.setData(KKSV017201CC, kksv017201CC);

		// 正常
		return 0;
	}
	
	
	
	/**
	 * 強制解約メイン処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param fixedText ユーザ任意文字列
	 * @param kksv016701CC 強制解約マップ
	 * @param fukaKaiTaiLst 強制解約不可リスト
	 * @return リターンコード
	 * @throws Throwable
	 */
	private int executeKyoseiDslProc(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			String fixedText,
			HashMap<String, Object> kksv016701CC,
			ArrayList<HashMap<String, Object>> fukaKaiTaiLst,
			ArrayList<HashMap<String, String>> netKaiTaiLst
	) throws Throwable   // ST1-2012-0000875 2012/11/18 
	{
		HashMap<String, Object> resultHash =  new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> eKK0321B002HashList = null;
		int statusCode = 0;

		String prm_svc_kei_no = (String)requestParam.get(SVC_KEI_NO);

		// サービス契約番号無しの場合、処理なし
		if(prm_svc_kei_no == null && "".equals(prm_svc_kei_no))
		{
			return 0;
		}

		// サービス契約一意照会
		statusCode = callEKK0081A010SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		// 20130228 ST2-2013-0000739 ADD START
		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		String prc_grp_cd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);

		if (PRC_GRP_CD_MANSION_OYA.equals(prc_grp_cd))
		{
			return 0;
		}
		// 20130228 ST2-2013-0000739 ADD END

		// 20131219 ANK-1584-00-00 ADD START
		//  料金グループコードが「ｍｉｎｅｏ」の場合
		// 処理なし
		if(PRC_GRP_CD_MINEO.equals(prc_grp_cd))
		{
			return 0;
		}
		// 20131219 ANK-1584-00-00 ADD END

		//2015-5-19　中原　ANK-2480-00-00 新電力対応 ADD START
		//  料金グループコードが「ｅｏ電気」の場合
		// 処理なし
		if(PRC_GRP_CD_EODENKI.equals(prc_grp_cd))
		{
			return 0;
		}
		//2015-5-19　中原　ANK-2480-00-00 新電力対応 ADD END

		// 強制解約可能判定処理（強制解約不可ありの場合、終了）
		if(kyoseiDslFukaCheck(fukaKaiTaiLst, requestParam, resultHash))
		{
			wk_Fuka_flg = true;
			return 0;
		}

		// サービス契約世代登録年月日の取得
		this.svcKeiUpdDtm = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.LAST_UPD_DTM);

		// ▼▼▼▼▼ 2013/09/11 OM-2013-0001096 UPD START ▼▼▼▼▼
		// ******************************************************* //
		// 非課金判定部品実行処理＜サービス＞                      //
		// ******************************************************* //
		// ※「サービス課金終了年月日」について
		// 　　サービスの解約時に呼び出す非課金判定部品が返却する「サービス課金終了年月日」を
		// 　　サービスに紐づくすべてのオプション、サブオプションに設定する。
		HashMap<String, Object> jdgHiChrgMapSvcKei =
			runHiChrgJdgUtil(
					handle,
					param,
					requestParam,
					resultHash,
					(HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010),
					null,
					null,
					null,
					DSL_SBT_FLG_SVC_KEI_DSL
			);
		// ▲▲▲▲▲ 2013/09/11 OM-2013-0001096 UPD E N D ▲▲▲▲▲

		// 課金先一覧照会（請求契約番号／サービス契約番号）
		statusCode = callEKK0321B002SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		eKK0321B002HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0321B002);

		// マンション情報一覧照会（サービス契約番号）
		statusCode = callEKK0861B002SC(param , handle , requestParam , resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		// 2012/09/03 TAI-2012-0000067 ADD START 請求オプションサービス契約追加
		// 請求オプションサービス契約番号保持用
		ArrayList<String> seiop_svc_kei_no_list = new ArrayList<String>();
		// 2012/09/03 TAI-2012-0000067 ADD END

		// 課金先の取得分だけループ
		for(int i = 0 ; i < eKK0321B002HashList.size() ; i++)
		{
			HashMap<String, Object> eKK0321B002Hash = null;
			eKK0321B002Hash = eKK0321B002HashList.get(i);

			// 課金先一意照会
			statusCode = callEKK0321A010SC(param, handle, eKK0321B002Hash, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}

			// 課金先一意照会結果取得
			HashMap<String, Object> eKK0321A010Hash = null;
			eKK0321A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0321A010);

			if(eKK0321A010Hash == null)
			{
				continue;
			}

			// サービス契約番号
			String svc_kei_no      = (String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.SVC_KEI_NO);
			// 機器提供サービス契約番号
			String kktk_svc_kei_no = (String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.KKTK_SVC_KEI_NO);
			// オプションサービス契約番号
			String op_svc_kei_no   = (String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.OP_SVC_KEI_NO);
			// サブオプションサービス契約番号
			String sbop_svc_kei_no = (String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.SBOP_SVC_KEI_NO);

			// 2012/09/03 TAI-2012-0000067 ADD START 請求オプションサービス契約追加
			// 請求オプションサービス契約番号
			String seiop_svc_kei_no = (String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.SEIOPSVC_KEI_NO);
			// 2012/09/03 TAI-2012-0000067 ADD END

			// サービス契約番号有りの場合
			if(svc_kei_no != null && !"".equals(svc_kei_no))
			{
				/*************************************************************************************/
				/** サービス契約 強制解約処理                                                       **/
				/*************************************************************************************/
				statusCode = svcKei_KyoseiDsl(handle, param, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}

			// オプションサービス契約番号有りの場合
			if(
					(op_svc_kei_no != null && !"".equals(op_svc_kei_no))
					&& (sbop_svc_kei_no == null || "".equals(sbop_svc_kei_no))
			)
			{
				/*************************************************************************************/
				/** オプションサービス契約 強制解約処理                                             **/
				/*************************************************************************************/
				statusCode = opSvcKei_KyoseiDsl(handle, param, requestParam, resultHash, jdgHiChrgMapSvcKei);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}

			// サブオプションサービス契約番号有りの場合
			if(sbop_svc_kei_no != null && !"".equals(sbop_svc_kei_no))
			{
				/*************************************************************************************/
				/** サブオプションサービス契約 強制解約処理                                         **/
				/*************************************************************************************/
				statusCode = sbOpSvcKei_KyoseiDsl(handle, param, requestParam, resultHash, jdgHiChrgMapSvcKei);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}

			// 機器提供サービス契約番号有りの場合
			if(kktk_svc_kei_no != null && !"".equals(kktk_svc_kei_no))
			{
				/*************************************************************************************/
				/** 機器提供サービス契約 強制解約処理                                               **/
				/*************************************************************************************/
				// 2013/12/14 ANK1578-00-00 nakashima Mod start
				//statusCode = kktkSvcKei_KyoseiDsl(handle, param, requestParam, resultHash,fixedText);
				statusCode = kktkSvcKei_KyoseiDsl(handle, param, requestParam, resultHash,fixedText);
				// 2013/12/14 ANK1578-00-00 nakashima Mod end
				if(statusCode != 0)
				{
					return statusCode;
				}
			}

			// 2012/09/03 TAI-2012-0000067 ADD START 請求オプションサービス契約解約処理追加
			// 請求オプションサービス契約番号有りの場合
			if(seiop_svc_kei_no != null && !"".equals(seiop_svc_kei_no))
			{
				// 請求オプションサービス契約番号を保持
				seiop_svc_kei_no_list.add(seiop_svc_kei_no);
			}
			// 2012/09/03 TAI-2012-0000067 ADD END
		}

		// ST1-2012-0001079 ST1-2012-0001079 ADD_START
		// 回線に紐づいている機器（ONU）の解約orキャンセルを実施（課金先が違う場合のみ）
		dslTrgtByKaisuckw(handle, param, requestParam, resultHash);
		// ST1-2012-0001079 ST1-2012-0001079 ADD_END

		// 2012/09/03 TAI-2012-0000067 ADD START 請求オプションサービス契約追加
		// サービスコードが「インターネットサービス」＋請求オプションサービス契約番号を取得している
		String svc_cd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD);
		if(svc_cd.equals(SVC_CD_NET) && seiop_svc_kei_no_list.size() > 0)
		{
			// インターネットサービス一覧照会（請求契約番号）を実行
			statusCode = callSEIKYUSC(param, handle, requestParam, resultHash, TEMPLATE_ID_EKK0081B526);
			if(statusCode != 0)
			{
				return statusCode;
			}

			ArrayList<HashMap<String, Object>> eKK0081B526HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0081B526);

			boolean bSeikyuOpDslFlg = true;
			for(int i = 0 ; i < eKK0081B526HashList.size() ; i++)
			{
				HashMap<String, Object> eKK0081B526Hash = eKK0081B526HashList.get(i);

				//サービス契約ステータスが「解約済」または「キャンセル済み」以外のものがあるかチェック
				String svc_kei_stat = (String)eKK0081B526Hash.get(EKK0081B526CBSMsg1List.SVC_KEI_STAT);
				if(!svc_kei_stat.equals(SVC_KEI_STAT_DSL) && !svc_kei_stat.equals(SVC_KEI_STAT_CNCL))
				{
					bSeikyuOpDslFlg = false;
					break;
				}
			}
			// 「解約済」または「キャンセル済み」しかない場合のみ請求オプションサービス契約の解約処理を行う
			if(bSeikyuOpDslFlg)
			{
				for(int i = 0; i < seiop_svc_kei_no_list.size(); i++)
				{
					requestParam.put(SEIOP_SVC_KEI_NO, seiop_svc_kei_no_list.get(i));
					
					// 請求オプションサービス契約解約処理
					statusCode = seiOpSvcKei_KyoseiDsl(handle, param, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
				}
			}
		}
		// 2012/09/03 TAI-2012-0000067 ADD END

		/*************************************************************************************/
		/** 指示書発行処理                                                                  **/
		/*************************************************************************************/
		//↓↓↓2012-04-23追加　巻@　指示書CC取込み対応↓↓↓
		// 連携データ区分 07 ：回線契約に紐づく各種サービス契約の情報
		JKKBpCommon.putAxMRenkeiDataKbn07(
				param,
				JKKDslRunConstCC.SJISHO_MAP,
				JKKAddSjishoConst.TRN_KBN_DEL, 
				new String[]{(String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO)},
				"料金グループ番号？"
		);
		//↑↑↑2012-04-23追加　巻@　指示書CC取込み対応↑↑↑
		
		// 20130413 指示書対応 START
		// 連携対象データ区分 02 ：回線契約にかかるサービス契約番号とSYSIDとの紐付け情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKDslRunConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_SYSID,
				JKKAddSjishoConst.TRN_KBN_UPD,	// 更新(AxMへの連携情報は、サービス契約の状態を元に作成されるため、更新が必要なことだけを通知したらよい)
				new String[]{(String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO)},
				""								// 連携対象データ区分 02の場合、SYSIDは設定不要のため、空文字を設定
		);
		// 20130413 指示書対応 END

		/*************************************************************************************/
		/** お客様退会                                                                      **/
		/*************************************************************************************/
		String sysid = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID);
		// IT1-2013-0000704 未移行会員の強制解約後にマスター会員がオープン会員になっていない 2013/04/01 START
		callCusTaikaiCmnKino(handle, param, sysid, prm_svc_kei_no);
		// IT1-2013-0000704 未移行会員の強制解約後にマスター会員がオープン会員になっていない 2013/04/01 END

		/*************************************************************************************/
		/** サービス制御管理S 強制解約要求処理                                              **/
		/*************************************************************************************/
		statusCode = svcCtlKyoKaiReq(
				handle, 
				param, 
				requestParam,
				resultHash,
				fixedText
		);
		if(statusCode != 0)
		{
			return statusCode;
		}

		/*************************************************************************************/
		/** 指示書登録ＣＣ実行                                                              **/
		/*************************************************************************************/
		(new JKKAddSjishoCC()).addSjisho(handle, param, JKKDslRunConstCC.SJISHO_MAP);

		// ST1-2012-0000875 2012/11/18 start
		// OM-2016-0001720 母体不具合の修正。本来、ep光ネットを判定すべきなので料金グループに変更 2017/01/31 MOD START
//		if(SVC_CD_NET.equals(svc_cd))
		if (JKKStrConst.CD00133_02.equals(prc_grp_cd) || JKKStrConst.CD00133_03.equals(prc_grp_cd)|| JKKStrConst.CD00133_04.equals(prc_grp_cd))
		// OM-2016-0001720 母体不具合の修正。本来、ep光ネットを判定すべきなので料金グループに変更 2017/01/31 MOD END
		{
			HashMap<String, String> svcKeiNoMap = new HashMap<String, String>();
			svcKeiNoMap.put(EKK0081A010CBSMsg1List.SVC_KEI_NO, (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
			netKaiTaiLst.add(svcKeiNoMap);
		}
		// ST1-2012-0000875 2012/11/18 end

		// 正常
		return 0;
	}
	
	
	
	/**
	 * サービス契約 強制解約処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @return リターンコード
	 * @throws Throwable
	 */
	private int svcKei_KyoseiDsl(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		int statusCode = 0;

		
		// 課金先一意照会結果取得
		HashMap<String, Object> eKK0321A010Hash = null;
		eKK0321A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0321A010);

		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		// 住所変更中フラグの取得
		boolean isNowAdchgFlg = isNowAdChg(handle, param, requestParam, "",eKK0081A010Hash);
		
		// 料金グループコード
		String prc_grp_cd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		// SYSID
		String sysid      = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID);

		// パラメータ.サービス契約番号≠課金先.サービス契約番号不一致の場合、処理なし
		String prm_svc_kei_no = (String)requestParam.get(SVC_KEI_NO);
		if(!prm_svc_kei_no.equals((String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.SVC_KEI_NO)))
		{
			return 0;
		}

		// ANK-2801-01-00 DEL START
		// IT1-2013-0001459 全戸一括／居住者一括マンションの子契約の強制解約時に電話・テレビが解約されない 2013/07/24 START
		// 処理対象がネットで、全戸一括／居住者一括の場合は処理しない
		// if (chkMansPayHoshiki(param, handle, resultHash))
		// {
		//  return 0;
		// }
		// IT1-2013-0001459 全戸一括／居住者一括マンションの子契約の強制解約時に電話・テレビが解約されない 2013/07/24 END
		// ANK-2801-01-00 DEL END
		
		// *************************************
		// サービス契約解約
		// *************************************
		statusCode = callEKK0081C180SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}
		HashMap<String, Object> eKK0081C180Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081C180);
		this.svcKeiUpdDtm = (String)eKK0081C180Hash.get(EKK0081C180CBSMsg.UPD_DTM);

		// *************************************
		// サービス契約解約確定
		// *************************************
		statusCode = callEKK0081C260SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}
		HashMap<String, Object> eKK0081C260Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081C260);
		this.svcKeiUpdDtm = (String)eKK0081C260Hash.get(EKK0081C260CBSMsg.UPD_DTM);

		// ANK-4592-00-00 ADD START
		// スカパー鍵情報操作上りマッピング
		HashMap<String, Object> workMap = new HashMap<String, Object>();
		workMap.put("func_cd", "1");
		workMap.put("shori_cd", SHORI_CD_DSL_STP_PAUSE);
		workMap.put("svc_kei_no", eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		workMap.put("snst_mt_ymd", requestParam.get(JKKKyoseiDslRunCC.REQYMD));
		workMap.put("ope_div", OPE_DIV_DSL);
		param.setData(CC_WORK_KYOSEI_DSL, workMap);
		
		// スカパー鍵情報操作CC呼出
		JKKSptvKeyInfOperateCC JKKSptvKeyInfOperateCC = new JKKSptvKeyInfOperateCC();
		JKKSptvKeyInfOperateCC.execute(handle,  param, CC_WORK_KYOSEI_DSL);
		// ANK-4592-00-00 ADD END

		// 料金グループコード = eoADSL(eAccess)の場合
		// OM-2015-0001577 MOD START
//		if (PRC_GRP_CD_EACCESS.equals(prc_grp_cd))
		// またはｅｏメールアドレスの場合
		if (PRC_GRP_CD_EACCESS.equals(prc_grp_cd) || PRC_GRP_CD_MAIL.equals(prc_grp_cd))
		// OM-2015-0001577 MOD END
		{
			// SODCC用 サービス契約内訳番号退避
			// eoADSL(eAccess)の場合はサービス契約内訳が存在しないためサービス契約内訳番号未設定でSOD発行
			HashMap<String, Object> sodUcwkMap = new HashMap<String, Object>();
			sodUcwkMap.put("svc_kei_ucwk_no", "");
			sodUcwkMap.put("upd_dtm",         "");
			this.sodSvcKeiUcwkList.add(sodUcwkMap);
			return 0;
		}

		//↓↓↓2012-02-24追加↓↓↓IT障害1023対応
		// eo光電話の場合、PPP認証IDをエイジング使用終了
		else if (PRC_GRP_CD_TEL.equals(prc_grp_cd))
		{
			statusCode = callEKK0111A010SC(param, handle, requestParam, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}
			HashMap<String, Object> eKK0111a010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0111A010);

			String ppp_ninsho_id = (String) eKK0111a010Hash.get(EKK0111A010CBSMsg1List.PPP_NINSHO_ID);
			if (null != ppp_ninsho_id && 0 < ppp_ninsho_id.length())
			{
				ppp_ninsho_id = JKKBpCommon.getAgingNinshoId(ppp_ninsho_id);
				requestParam.put(AGING_SBT_CD,   AGING_SBT_CD_PPP_ID);		// エイジング種別コード
				requestParam.put(AGING_TG_VALUE, ppp_ninsho_id);			// エイジング対象値
				statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
		}
		//↑↑↑2012-02-24追加↑↑↑

		// サービス契約内訳一覧照会
		statusCode = callEKK0161B004SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		ArrayList<HashMap<String, Object>> eKK0161B004HashList = null;
		eKK0161B004HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0161B004);

		// 指示書連携用サービス契約内訳番号格納
		ArrayList<String> sjishoSvcKeiUcwk = new ArrayList<String>();

		// OM-2015-0000711 ADD START
		int targetSvcKeiUcwkCnt = 0;
		// OM-2015-0000711 ADD END
		// サービス契約内訳一覧の取得分だけループ
		for(int idx_su = 0 ; idx_su < eKK0161B004HashList.size() ; idx_su++)
		{
			HashMap<String, Object> eKK0161B004Hash = null;
			eKK0161B004Hash = eKK0161B004HashList.get(idx_su);

			// サービス契約内訳一意照会
			statusCode = callEKK0161A010SC(param, handle, eKK0161B004Hash, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}

			HashMap<String, Object> eKK0161A010Hash = null;
			eKK0161A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161A010);
			
// IT1-2013-0000847 2013-04-16 ADD_START
			// サービス契約内訳番号
			String svc_kei_ucwk_no = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO);
// IT1-2013-0000847 2013-04-16 ADD_END
			
			String svc_kei_ucwk_stat = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_STAT);
			String kahi_flg = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.KEIZK_AF_KEI_CHGECHU_FLG);
			
			// 締結中、サービス提供中、停止中、休止・中断中の場合
			if(
					SVC_KEI_STAT_TEIK.equals(svc_kei_ucwk_stat)
					|| SVC_KEI_STAT_TKC.equals(svc_kei_ucwk_stat)
					|| SVC_KEI_STAT_STP.equals(svc_kei_ucwk_stat)
					|| SVC_KEI_STAT_KYUS.equals(svc_kei_ucwk_stat)
			)
			{
				// OM-2014-0000894 2014/03/20 DEL START
//				if(!(isNowAdchgFlg && KEIZK_AF_KEI_CHGECHU_FLG_TEL_CHNG_CHU.equals(kahi_flg)))
				// OM-2014-0000894 2014/03/20 DEL END
				{
//↓↓↓2013-08-05追加　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↓↓↓
					Boolean isNewCourse = false;
					String kk0161_ido_div = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.IDO_DIV);
					if (SVC_KEI_STAT_TEIK.equals(svc_kei_ucwk_stat) && 
					(JKKHakkoSODConstCC.IDO_DIV_COURSECHG.equals(kk0161_ido_div) || JKKHakkoSODConstCC.IDO_DIV_KAIHK.equals(kk0161_ido_div)))
					{
						isNewCourse = true;
					}
//↑↑↑2013-08-05追加　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↑↑↑
// OM-2015-0000711 ADD START
					Boolean isAdChgAdd = false;
					// 住所変更に伴い払い出された内訳の場合
					if (SVC_KEI_STAT_TEIK.equals(svc_kei_ucwk_stat) && (JKKHakkoSODConstCC.IDO_DIV_ADCHGADD.equals(kk0161_ido_div)))
					{
						isAdChgAdd = true;
					}
// OM-2015-0000711 ADD END
					
					// *************************************
					// サービス契約内訳解約
					// *************************************
					statusCode = callEKK0161C180SC(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
					HashMap<String, Object> eKK0161C180Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161C180);
					this.svcKeiUpdDtm = (String)eKK0161C180Hash.get(EKK0161C180CBSMsg.UPD_DTM);

					// *************************************
					// サービス契約内訳解約確定
					// *************************************
					statusCode = callEKK0161C190SC(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
					HashMap<String, Object> eKK0161C190Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161C190);
					this.svcKeiUpdDtm = (String)eKK0161C190Hash.get(EKK0161C190CBSMsg.UPD_DTM);

// IT1-2013-0000847 2013-04-16 EDIT_START
//					// SODCC用 サービス契約内訳番号退避
//					if(!KEIZK_AF_KEI_CHGECHU_FLG_TEL_CHNG_CHU.equals(kahi_flg))
//					{
//						HashMap<String, Object> sodUcwkMap = new HashMap<String, Object>();
//						sodUcwkMap.put("svc_kei_ucwk_no", (String)eKK0161C190Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO));
//						sodUcwkMap.put("upd_dtm",         (String)eKK0161C190Hash.get(EKK0161A010CBSMsg1List.GENE_ADD_DTM));
//						this.sodSvcKeiUcwkList.add(sodUcwkMap);
//					}
					// ＳＯＤ発行判定を行う
					if (judgeHakkoSod(param, handle, requestParam, resultHash, svc_kei_ucwk_no, prc_grp_cd))
					{
// IT1-2013-0000847 2013-04-16 EDIT_END
						HashMap<String, Object> sodUcwkMap = new HashMap<String, Object>();
						sodUcwkMap.put("svc_kei_ucwk_no", (String)eKK0161C190Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO));
						sodUcwkMap.put("upd_dtm",         (String)eKK0161C190Hash.get(EKK0161A010CBSMsg1List.GENE_ADD_DTM));
//↓↓↓2013-08-05追加　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↓↓↓
						sodUcwkMap.put(JKKHakkoSODConstCC.INFO_NEW_CRS_FLAG, isNewCourse );
//↑↑↑2013-08-05追加　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↑↑↑
// OM-2015-0000711 ADD START
						// オーダ発行対象となる内訳のカウントを設定
						targetSvcKeiUcwkCnt++;
						sodUcwkMap.put(JKKHakkoSODConstCC.TARGET_SVC_KEI_UCWK_CNT, targetSvcKeiUcwkCnt);
						// 住所変更に伴い払い出された内訳かどうかフラグを設定
						sodUcwkMap.put(JKKHakkoSODConstCC.INFO_AD_CHG_ADD_FLAG, isAdChgAdd );
// OM-2015-0000711 ADD END
						this.sodSvcKeiUcwkList.add(sodUcwkMap);
					}
				}
			}
			//以外の場合、処理対象外
			else
			{
				continue;
			}

			// 料金グループコード = eo光電話の場合
			if (PRC_GRP_CD_TEL.equals(prc_grp_cd))
			{
				// サービス契約内訳＜eo光電話＞一意照会
				statusCode = callEKK0191A010SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}

				// サービス契約内訳＜eo光電話＞一意照会結果取得
				HashMap<String, Object> eKK0191A010Hash = null;
				eKK0191A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0191A010);
				// 電話番号取得
				String telno = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.TELNO);
				
				// 案件対応 ANK-1670-00-00 2013/11/05 MOD START
				// 番ポ有無取得
				String bmpUm = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.BMP_UM);

				if(telno != null && !"".equals(telno))
				{
// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 ADD START
					this.dslTelnoList.add(telno);
// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 ADD END
					
// ANK-4494-00-00 ADD START
					String telnoPortoutUm = null;
					//ポートアウト状態取得		
					telnoPortoutUm = getTelnPortoutUm(handle, param, telno);
// ANK-4494-00-00 ADD END
// ANK-4494-00-00 MOD START
//					// 番ポ番号の場合はエイジング振舞い対象外
//					if (!BMP_UM_1.equals(bmpUm)) {
					//対象の電話番号がポートアウト中以外の場合、エイジングを更新する
					if (!BMP_UM_1.equals(bmpUm) && !PORTOUT_ARI.equals(telnoPortoutUm)) {
// ANK-4494-00-00 MOD END
						// エイジング対象使用終了（電話番号）
						requestParam.put(AGING_SBT_CD,   AGING_SBT_CD_TELNO);		// エイジング種別コード
						requestParam.put(AGING_TG_VALUE, telno);					// エイジング対象値
						statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
						if(statusCode != 0)
						{
							return statusCode;
						}
					}
				}
				// 案件対応 ANK-1670-00-00 2013/11/05 MOD END
				//↓↓↓2012-02-24追加↓↓↓IT障害1023対応
				// SIPユーザーIDのエイジング終了
				String sip_user_id = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.SIP_USER_ID);
				if (null != sip_user_id && 0 < sip_user_id.length())
				{
					requestParam.put(AGING_SBT_CD,   AGING_SBT_CD_SIP_ID);		// エイジング種別コード
					requestParam.put(AGING_TG_VALUE, sip_user_id);				// エイジング対象値
					statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
				}
				//↑↑↑2012-02-24追加↑↑↑
			}
			// 料金グループコード = ネットの場合
			else if(
					PRC_GRP_CD_NET_HM.equals(prc_grp_cd)
					|| PRC_GRP_CD_NET_MZ.equals(prc_grp_cd)
					|| PRC_GRP_CD_NET_MN.equals(prc_grp_cd)
			)
			{
				// 指示書連携用サービス契約内訳番号格納
				sjishoSvcKeiUcwk.add((String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO));

				// サービス契約内訳＜eo光ネット＞一意照会
				statusCode = callEKK0171A010SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
				// サービス契約内訳＜eo光ネット＞一意照会結果取得
				HashMap<String, Object> eKK0171A010Hash = null;
				eKK0171A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0171A010);

				//↓↓↓2012-02-24追加↓↓↓IT障害1023対応
				// ISP認証ID取得
				String isp_ninsho_id = (String)eKK0171A010Hash.get(EKK0171A010CBSMsg1List.ISP_NINSHO_ID);

				// ISP認証IDをエイジング使用終了
				if (null != isp_ninsho_id && 0 < isp_ninsho_id.length())
				{
					isp_ninsho_id = JKKBpCommon.getAgingNinshoId(isp_ninsho_id);
					requestParam.put(AGING_SBT_CD,   AGING_SBT_CD_ISP_ID);		// エイジング種別コード
					requestParam.put(AGING_TG_VALUE, isp_ninsho_id);			// エイジング対象値
					statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
				}
				//↑↑↑2012-02-24追加↑↑↑
			}
			//↓↓↓2012-02-24追加↓↓↓IT障害1023対応
			else if (PRC_GRP_CD_FLETS.equals(prc_grp_cd))
			{
				// 指示書連携用サービス契約内訳番号格納
				sjishoSvcKeiUcwk.add((String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO));

				// ADSL認証IDをエイジング使用終了
				statusCode = callEKK0221A010SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
				HashMap<String, Object> eKK0221a010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0221A010);

				// ADSL認証ID取得
				String adsl_ninsho_id = (String) eKK0221a010Hash.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
					requestParam.put(AGING_SBT_CD,   AGING_SBT_CD_ADSL_ID);		// エイジング種別コード
					requestParam.put(AGING_TG_VALUE, adsl_ninsho_id);			// エイジング対象値
					statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
				}
			}
			//↑↑↑2012-02-24追加↑↑↑
		}

		String[] v1 = new String[sjishoSvcKeiUcwk.size()];
		// 連携データ区分 05 ：認証ＩＤの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKDslRunConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_NINSHO_ID,
				JKKAddSjishoConst.TRN_KBN_DEL,
				sjishoSvcKeiUcwk.toArray(v1),
				sysid
		);
		
		// ANK-3949-00-00 ADD START
		String svcCd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD);
		// サービスコードがネットのみ、Netflix用他事業者契約解約異動通知登録コモンコンポーネント部品を実施
		if (SVC_CD_NET.equals(svcCd))
		{
			JKKNetflixTajgsKeiIdtslAddCC NetflixCC = new JKKNetflixTajgsKeiIdtslAddCC();
			
			this.mapper.setNetflixCC(param, (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
			
			NetflixCC.main(handle, param, "NETFLIXCC");
		}
		// ANK-3949-00-00 ADD END

		return 0;
	}
	
	/**
	 * ＳＯＤを発行するかの判定を行う
	 * @param param
	 * @param handle
	 * @param requestParam
	 * @param resultHash
	 * @param svc_kei_ucwk_no
	 * @param prc_grp_cd
	 * @return
	 * @throws Exception 
	 * @throws RequestParameterException 
	 */
	private boolean judgeHakkoSod(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String svc_kei_ucwk_no,
			String prc_grp_cd) throws Throwable
	{
		ArrayList<HashMap<String, Object>> eKK0161B004HashList = null;
		eKK0161B004HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0161B004);
		
		// 電話以外の場合は関係なし
		if (!PRC_GRP_CD_TEL.equals(prc_grp_cd))
		{
			return true;
		}
		
		boolean checkBmpKoji = false;
		// チェック区分
		int checkKbn = 0;
		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		
		String svcKeiNo = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		
		String bmpSvcKeiUcwkNo = "";
		
		// サービス契約内訳一覧の取得分だけループ
		HashMap<String, Object> eKK0161B004Hash = null;
		eKK0161B004Hash = getSvcKeiUcwkInfo(svc_kei_ucwk_no, eKK0161B004HashList, EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
		// サービス契約内訳番号
		String tmpSvcKeiUcwk = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
		// 継続後契約変更中フラグ
		String kzkAfKeiFlg = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.KEIZK_AF_KEI_CHGECHU_FLG);
//		String kzkmtSvcKeuUcwkNo = (String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.KEIZK_MT_SVC_KEI_UCWK_NO);
		
		if (svc_kei_ucwk_no.equals(tmpSvcKeiUcwk))
		{
			// ■利用停止対象
			// 番号変更中でない
			if (!JKKSvcConst.KEIZK_AF_KEI_FLG_1.equals(kzkAfKeiFlg))
			{
				HashMap<String, Object> map = getSvcKeiUcwkInfo(svc_kei_ucwk_no, eKK0161B004HashList, EKK0161B004CBSMsg1List.KEIZK_MT_SVC_KEI_UCWK_NO);
				
				// 自身が番号変更中の旧電話の場合
				if (checkKzkAfKeiChgFlg(map))
				{
					checkBmpKoji = true;
					checkKbn = 1;
					// 継続元サービス契約内訳番号で番ポ工事チェックを実施
					bmpSvcKeiUcwkNo = (String)map.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
				}
			}
			// 番号変更中である
			else if (JKKSvcConst.KEIZK_AF_KEI_FLG_1.equals(kzkAfKeiFlg))
			{
				checkBmpKoji = true;
				checkKbn = 2;
				// サービス契約内訳番号で番ポ工事チェックを実施
				bmpSvcKeiUcwkNo = tmpSvcKeiUcwk;
			}
		}
		
		// 番ポ工事チェックを行う場合
		if (checkBmpKoji)
		{
			// 番ポ工事
			callETU0011B018SC
			(
					param, 
					handle, 
					svcKeiNo, 
					JKKSvcConst.BMP_IRAI_NAIYO_CD_ITEN + "," + JKKSvcConst.BMP_IRAI_NAIYO_CD_UPD,
					resultHash
			);
			
			ArrayList<HashMap<String, Object>> eTU0011B018HashList = null;
			eTU0011B018HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_ETU0011B018);
			if (eTU0011B018HashList != null && !eTU0011B018HashList.isEmpty())
			{
				HashMap<String, Object> bmpHash = getSvcKeiUcwkInfo(bmpSvcKeiUcwkNo, eTU0011B018HashList, ETU0011B018CBSMsg1List.SVC_KEI_UCWK_NO);
//↓↓↓2014-01-21追加　OM-2014-0000018（住変中に番号変更（番ポ→eo番号）しているeo光電話の強制解約でヌルポ）↓↓↓
				//番ポ工事が無いので番ポ工事ステータスのチェックは不要、解約SOD発行はOK
				if (null == bmpHash)
				{
					return true;
				}
//↑↑↑2014-01-21追加　OM-2014-0000018（住変中に番号変更（番ポ→eo番号）しているeo光電話の強制解約でヌルポ）↑↑↑
				String bmpKojiStat = (String)bmpHash.get(ETU0011B018CBSMsg1List.BMP_KOJI_STAT);
				// 番ポ工事チェック
				// 継続元の番ポ工事ステータスが040なら新番号でSODを発行する為、処理しない
				if (checkKbn == 1)
				{
					// 番ポ工事ステータスが「040：SOD発行済み」以上、「090：番ポ工事取消」未満の場合はSOD発行しない
					if (JKKSvcConst.BMP_KOJI_STAT_SOD_HAKKOZM.compareTo(bmpKojiStat) <= 0
							&& JKKSvcConst.BMP_KOJI_STAT_KOJICL.compareTo(bmpKojiStat) > 0)
					{
						return false;
					}
					else
					{
						return true;
					}
				}
				// 番号変更中の場合
				else if (checkKbn == 2)
				{
					// 番ポ工事ステータスが「040：SOD発行済み」以上、「090：番ポ工事取消」未満の場合はSOD発行しない
					if (JKKSvcConst.BMP_KOJI_STAT_SOD_HAKKOZM.compareTo(bmpKojiStat) <= 0
							&& JKKSvcConst.BMP_KOJI_STAT_KOJICL.compareTo(bmpKojiStat) > 0)
					{
						return true;
					}
					else
					{
						return false;
					}
				}
			}
		}
		
		return true;
	}
	
	/**
	 * 変更手続き中チェック
	 * @param eKK0161B004Hash
	 * @return 
	 */
	private boolean checkKzkAfKeiChgFlg(HashMap<String, Object> eKK0161B004Hash)
	{
		if (eKK0161B004Hash == null)
		{
			return false;
		}
		
		return JKKSvcConst.KEIZK_AF_KEI_FLG_1.equals((String)eKK0161B004Hash.get(EKK0161B004CBSMsg1List.KEIZK_AF_KEI_CHGECHU_FLG));
	}
	
	/**
	 * argsと一致する情報を取得
	 * @param svcKeiUcwkNo
	 * @param list
	 * @return
	 */
	private HashMap<String, Object> getSvcKeiUcwkInfo(String args, ArrayList<HashMap<String, Object>> list, String key)
	{
		// 一覧の取得分だけループ
		for(int i = 0 ; i < list.size(); i++)
		{
			HashMap<String, Object> outHash = null;
			outHash = list.get(i);
			
			// 一致する情報を返却する
			if (args.equals((String)outHash.get(key)))
			{
				return outHash;
			}
		}
		return null;
	}
	
	/**
	 * オプションサービス契約 強制解約処理<br>
	 * <br>
	 * @param	handle					セッションマネージャなどを持ったハンドル
	 * @param	param					モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam			リクエストパラメータ
	 * @param	resultHash				結果のハッシュ
	 * @param	jdgHiChrgMapSvcKei		非課金判定部品結果＜サービス＞
	 * @return							リターンコード
	 * @throws	Throwable
	 */
	private int opSvcKei_KyoseiDsl(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> jdgHiChrgMapSvcKei
	) throws Throwable
	{
		int statusCode = 0;

		// 課金先一意照会結果取得
		HashMap<String, Object> eKK0321A010Hash = null;
		eKK0321A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0321A010);

		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		String svc_cd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD);

		// オプションサービス契約一意照会
		statusCode = callEKK0351A010SC(param, handle, eKK0321A010Hash, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		// オプションサービス契約データ取得
		HashMap<String, Object> eKK0351A010Hash = null;
		eKK0351A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0351A010);
		String svc_kei_no = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.SVC_KEI_NO);

		// サービス契約番号が設定されないオプションサービス契約の場合はサービス契約内訳から取得
		if(svc_kei_no == null || "".equals(svc_kei_no))
		{
			// サービス契約内訳一意照会
			statusCode = callEKK0161A010SC(param, handle, eKK0351A010Hash, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}

			HashMap<String, Object> eKK0161A010Hash = null;
			eKK0161A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161A010);
			svc_kei_no = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_NO);
		}

		// パラメータ.サービス契約番号≠サービス契約内訳.サービス契約番号不一致の場合、処理なし
		String prm_svc_kei_no = (String)requestParam.get(SVC_KEI_NO);
		if(!prm_svc_kei_no.equals(svc_kei_no))
		{
			return 0;
		}

		// オプションサービス契約ステータス取得
		String op_svc_kei_stat = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);

		ArrayList<String> opSvcKeiNoB001 = new ArrayList<String>();
		ArrayList<String> opSvcKeiNoB002 = new ArrayList<String>();

		// 受付済(010)または照査済(020)の場合
		if(
				SVC_KEI_STAT_UKE.equals(op_svc_kei_stat)
				|| SVC_KEI_STAT_SHOSA.equals(op_svc_kei_stat)
		)
		{
			// ******************************************************* //
			// オプションサービス契約キャンセル処理実行                //
			// ******************************************************* //
			statusCode = callEKK0351C220SC(param, handle, requestParam, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}
			HashMap<String, Object> eKK0351C220Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0351C220);
			this.svcKeiUpdDtm = (String)eKK0351C220Hash.get(EKK0351C220CBSMsg.UPD_DTM);
		}
		// 締結中、サービス提供中、停止中、休止・中断中の場合
		else if(
				SVC_KEI_STAT_TEIK.equals(op_svc_kei_stat)
				|| SVC_KEI_STAT_TKC.equals(op_svc_kei_stat)
				|| SVC_KEI_STAT_STP.equals(op_svc_kei_stat)
				|| SVC_KEI_STAT_KYUS.equals(op_svc_kei_stat)
		)
		{
			// ▼▼▼▼▼ 2013/09/11 OM-2013-0001096 UPD START ▼▼▼▼▼
			// ******************************************************* //
			// 非課金判定部品実行処理＜オプション＞                    //
			// ******************************************************* //
			// ※「解約時課金フラグ」について
			// 　　オプション、サブオプションごとに非課金判定部品を実行し、
			// 　　各々の解約時課金フラグを設定する。
			HashMap<String, Object> jdgHiChrgMapOpSvcKei =
				runHiChrgJdgUtil(
						handle,
						param,
						requestParam,
						resultHash,
						(HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010),
						null,
						(HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0351A010),
						null,
						DSL_SBT_FLG_OP_SVC_KEI_DSL
				);
			// ▲▲▲▲▲ 2013/09/11 OM-2013-0001096 UPD E N D ▲▲▲▲▲

			// ******************************************************* //
			// オプションサービス契約解約処理実行                      //
			// ******************************************************* //
			statusCode = callEKK0351C240SC(param, handle, requestParam, resultHash, jdgHiChrgMapSvcKei);
			if(statusCode != 0)
			{
				return statusCode;
			}
			HashMap<String, Object> eKK0351C240Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0351C240);
			this.svcKeiUpdDtm = (String)eKK0351C240Hash.get(EKK0351C240CBSMsg.UPD_DTM);

			// ******************************************************* //
			// オプションサービス契約解約確定処理実行                  //
			// ******************************************************* //
			statusCode = callEKK0351C250SC(param, handle, requestParam, resultHash, jdgHiChrgMapSvcKei, jdgHiChrgMapOpSvcKei);
			if(statusCode != 0)
			{
				return statusCode;
			}
			HashMap<String, Object> eKK0351C250Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0351C250);
			this.svcKeiUpdDtm = (String)eKK0351C250Hash.get(EKK0351C250CBSMsg.UPD_DTM);
		}
		// 以外の場合、処理対象外
		else
		{
			return 0;
		}

		// ネットの場合
		if(SVC_CD_NET.equals(svc_cd))
		{
//↓↓↓2013-08-18追加　巻取BKT1-2013-0000818（SOHOパック10付きeo光ネットの強制解約でエイジングエラー）↓↓↓
			String op_svc_cd = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_CD);
			
			// Ｅメール、Ｍｙホームページ、メーリングリスト、固定グローバルＩＰアドレス、マルチセッションではない場合は処理しない
			if(
					!JKKSvcConst.OP_SVC_CD_EMAIL.equals(op_svc_cd)
				&&  !JKKSvcConst.OP_SVC_CD_HP.equals(op_svc_cd)
				&&  !JKKSvcConst.OP_SVC_CD_MLIST.equals(op_svc_cd)
				&&  !JKKSvcConst.OP_SVC_CD_FIXIPAD.equals(op_svc_cd)
				&&  !JKKSvcConst.OP_SVC_CD_MLTISE.equals(op_svc_cd)
			)
			{
				return 0;
			}
//↑↑↑2013-08-18追加　巻取BKT1-2013-0000818（SOHOパック10付きeo光ネットの強制解約でエイジングエラー）↑↑↑
			
			// オプションサービス契約<ISP>一意照会
			statusCode = callEKK0361A010SC(param, handle, requestParam, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}

			// オプションサービス契約<ISP>一意照会結果取得
			HashMap<String, Object> eKK0361A010Hash = null;
			eKK0361A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0361A010);

			if(eKK0361A010Hash != null)
			{
				// お客様一意照会
				statusCode = callECK0011A010SC(param, handle, eKK0351A010Hash, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
				// お客様情報取得
				HashMap<String, Object> eCK0011A010Hash = null;
				eCK0011A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_ECK0011A010);

				// Eメールの場合
//↓↓↓2013-08-18変更　巻取BKT1-2013-0000818（SOHOパック10付きeo光ネットの強制解約でエイジングエラー）↓↓↓
//				String op_svc_cd = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_CD);
//				if (OP_SVC_CD_EMAIL.equals(op_svc_cd))
				if (JKKSvcConst.OP_SVC_CD_EMAIL.equals(op_svc_cd))
//↑↑↑2013-08-18変更　巻取BKT1-2013-0000818（SOHOパック10付きeo光ネットの強制解約でエイジングエラー）↑↑↑
				{
					// お客様一意照会.更新年月日時分秒を取得
					String tmp_upd_dtm = (String)eCK0011A010Hash.get(ECK0011A010CBSMsg1List.UPD_DTM);

					// オプトインメール受信設定一覧照会（SYSID）２
					statusCode = callECK0141B005SC(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}

					ArrayList<HashMap<String, Object>> eCK0141B005HashList = null;
					eCK0141B005HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_ECK0141B005);

					// オプトインメール受信設定の取得分だけループ
					for(int i = 0 ; i < eCK0141B005HashList.size() ; i++)
					{
						HashMap<String, Object> eCK0141B005Hash = null;
						eCK0141B005Hash = eCK0141B005HashList.get(i);
						// オプトインメール受信設定ステータス=有効の場合
						if(OPTINM_RCV_SETTE_STAT_YK.equals(eCK0141B005Hash.get(ECK0141B005CBSMsg1List.OPTINM_RCV_SETTE_STAT)))
						{
							// オプトインメール受信設定無効
							statusCode = callECK0141C030SC(param, handle, eCK0141B005Hash, resultHash, tmp_upd_dtm);
							if(statusCode != 0)
							{
								return statusCode;
							}
							HashMap<String, Object> eCK0141C030Hash = null;
							eCK0141C030Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_ECK0141C030);
							// 更新後の更新年月日時分秒を更新
							tmp_upd_dtm = (String)eCK0141C030Hash.get(ECK0011A010CBSMsg1List.UPD_DTM);
						}
					}
				}

				// エイジング対象使用終了
				// 固定IPアドレス取得
				String kotei_ip_ad = (String)eKK0361A010Hash.get(EKK0361A010CBSMsg1List.KOTEI_IP_AD);
				// URL取得
				String url_domain = (String)eKK0361A010Hash.get(EKK0361A010CBSMsg1List.URL_DOMAIN);
				String url_account = (String)eKK0361A010Hash.get(EKK0361A010CBSMsg1List.URL_ACCOUNT);
				String aging_url = "";
				if((url_domain != null && !"".equals(url_domain))
					&& (url_account != null && !"".equals(url_account)))
				{
					aging_url = url_domain + url_account;
				}
				// WebID取得
				String web_id = (String)eKK0361A010Hash.get(EKK0361A010CBSMsg1List.WEB_ID);
				// POPID取得
				String pop_id = (String)eKK0361A010Hash.get(EKK0361A010CBSMsg1List.POP_ID);
				// メールアドレス取得
				String mlad = (String)eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MLAD);
				// メーリングリスト取得
				String mllist = (String)eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MLLIST_NM);

				// 固定IPアドレス
				if(kotei_ip_ad != null && !"".equals(kotei_ip_ad))
				{
					// エイジング対象使用終了（固定IPアドレス）
					requestParam.put(AGING_SBT_CD, AGING_SBT_CD_KTI_IP);	// エイジング種別コード
					requestParam.put(AGING_TG_VALUE, kotei_ip_ad);			// エイジング対象値
					statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
				}
				// URL
				if(aging_url != null && !"".equals(aging_url))
				{
					// エイジング対象使用終了（URL）
					requestParam.put(AGING_SBT_CD, AGING_SBT_CD_URL);		// エイジング種別コード
					requestParam.put(AGING_TG_VALUE, aging_url);			// エイジング対象値
					statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
				}
				// WebID
				if(web_id != null && !"".equals(web_id))
				{
					// 指示書連携
					opSvcKeiNoB002.add((String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));

					// エイジング対象使用終了（WebID）
					requestParam.put(AGING_SBT_CD, AGING_SBT_CD_WEBID);		// エイジング種別コード
					requestParam.put(AGING_TG_VALUE, web_id);				// エイジング対象値
					statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
				}
				// POPID
				if(pop_id != null && !"".equals(pop_id))
				{
					// 指示書連携
					opSvcKeiNoB001.add((String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));

					// エイジング対象使用終了（POPID）
					requestParam.put(AGING_SBT_CD, AGING_SBT_CD_POPID);		// エイジング種別コード
					requestParam.put(AGING_TG_VALUE, pop_id);				// エイジング対象値
					statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
				}
				// メールアドレス
				if(mlad != null && !"".equals(mlad))
				{
					// エイジング対象使用終了（メールアドレス）
					requestParam.put(AGING_SBT_CD, AGING_SBT_CD_MLAD);		// エイジング種別コード
					requestParam.put(AGING_TG_VALUE, mlad);					// エイジング対象値
					statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
				}
				// メーリングリスト
				if(mllist != null && !"".equals(mllist))
				{
					//↓↓↓2012-03-09 IT2-2012-0000328↓↓↓
					// 業務パラメータ管理一意照会サービスIFを呼び出し
					callEZM0321A010SC(param, handle, WORK_PARAM_ID_MLLIST_NM_DOMAIN, resultHash);
					HashMap<String, Object> ezm0321A010Result = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EZM0321A010);
					String mlListDomain = "";
					if (ezm0321A010Result != null)
					{
						mlListDomain = (String)ezm0321A010Result.get(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
					}
					// エイジング対象使用終了（メーリングリスト）
					requestParam.put(AGING_SBT_CD, AGING_SBT_CD_MLLIST);	// エイジング種別コード
					//requestParam.put(AGING_TG_VALUE, mllist);				// エイジング対象値
					requestParam.put(AGING_TG_VALUE, mllist + "@" + mlListDomain);				// エイジング対象値
					statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
					//↑↑↑2012-03-09 IT2-2012-0000328↑↑↑
				}
			}
		}
		//↓↓↓2012-02-24追加↓↓↓IT障害1023対応
		else if(SVC_CD_TEL.equals(svc_cd))
		{
			String op_svc_cd = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_CD);
			if (OP_SVC_CD_N050.equals(op_svc_cd))
			{
				// オプションサービス契約<電話>一意照会
				statusCode = callEKK0371A010SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
				// オプションサービス契約<電話>一意照会結果取得
				HashMap<String, Object> eKK0371A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0371A010);
				if(null != eKK0371A010Hash)
				{
					// ０５０電話番号のエイジング終了
					String tmp050No = (String)eKK0371A010Hash.get(EKK0371A010CBSMsg1List.N_050_OP_TELNO);
					if (null != tmp050No && 0 < tmp050No.length())
					{
						requestParam.put(AGING_SBT_CD, AGING_SBT_CD_TELNO);		// エイジング種別コード
						requestParam.put(AGING_TG_VALUE, tmp050No);				// エイジング対象値
						statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
						if(statusCode != 0)
						{
							return statusCode;
						}
					}
				}
			}
		}
		//↑↑↑2012-02-24追加↑↑↑

		String[] v1 = new String[opSvcKeiNoB001.size()];
		String[] v2 = new String[opSvcKeiNoB002.size()];
		String sysid = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID);

		// 連携データ区分 03 ：POPIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKDslRunConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_POPID,
				JKKAddSjishoConst.TRN_KBN_DEL,
				opSvcKeiNoB001.toArray(v1),
				sysid
		);
		// 連携データ区分 04 ：WEBIDの情報
		JKKBpCommon.putAxMRenkeiDataKbn(
				param,
				JKKDslRunConstCC.SJISHO_MAP,
				JKKAddSjishoConst.RENKEI_DATA_KBN_WEBID,
				JKKAddSjishoConst.TRN_KBN_DEL, 
				opSvcKeiNoB002.toArray(v2),
				sysid
		);

		return 0;
	}

	/**
	 * サブオプションサービス契約 強制解約処理<br>
	 * <br>
	 * @param	handle					セッションマネージャなどを持ったハンドル
	 * @param	param					モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	requestParam			リクエストパラメータ
	 * @param	resultHash				結果のハッシュ
	 * @param	jdgHiChrgMapSvcKei		非課金判定部品結果＜サービス＞
	 * @return							リターンコード
	 * @throws	Throwable
	 */
	private int sbOpSvcKei_KyoseiDsl(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> jdgHiChrgMapSvcKei
	) throws Throwable
	{
		int statusCode = 0;

		// 課金先一意照会結果取得
		HashMap<String, Object> eKK0321A010Hash = null;
		eKK0321A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0321A010);

		// オプションサービス契約一意照会
		statusCode = callEKK0351A010SC(param, handle, eKK0321A010Hash, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}
		HashMap<String, Object> eKK0351A010Hash = null;
		eKK0351A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0351A010);
		String svc_kei_no = (String)eKK0351A010Hash.get(EKK0351A010CBSMsg1List.SVC_KEI_NO);


		// サービス契約番号が設定されないオプションサービス契約の場合はサービス契約内訳から取得
		if(svc_kei_no == null || "".equals(svc_kei_no))
		{
			// サービス契約内訳一意照会
			statusCode = callEKK0161A010SC(param, handle, eKK0351A010Hash, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}

			HashMap<String, Object> eKK0161A010Hash = null;
			eKK0161A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0161A010);
			svc_kei_no = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_NO);
		}

		// パラメータ.サービス契約番号≠サービス契約内訳.サービス契約番号不一致の場合、処理なし
		String prm_svc_kei_no = (String)requestParam.get(SVC_KEI_NO);
		if(!prm_svc_kei_no.equals(svc_kei_no))
		{
			return 0;
		}

		// サブオプションサービス契約一意照会
		statusCode = callEKK0401A010SC(param, handle, eKK0321A010Hash, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		// サブオプションサービス契約データ取得
		HashMap<String, Object> eKK0401A010Hash = null;
		eKK0401A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0401A010);

		// サブオプションサービス契約ステータス取得
		String sbop_svc_kei_stat = (String)eKK0401A010Hash.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);

		// 受付済(010)または照査済(020)の場合
		if(
				SVC_KEI_STAT_UKE.equals(sbop_svc_kei_stat)
				|| SVC_KEI_STAT_SHOSA.equals(sbop_svc_kei_stat)
		)
		{
			// ******************************************************* //
			// サブオプションサービス契約キャンセル処理実行            //
			// ******************************************************* //
			statusCode = callEKK0401C150SC(param, handle, requestParam, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}
			HashMap<String, Object> eKK0401C150Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0401C150);
			this.svcKeiUpdDtm = (String)eKK0401C150Hash.get(EKK0401C150CBSMsg.UPD_DTM);
			return 0;
		}
		// 締結中、サービス提供中、停止中、休止・中断中の場合
		else if(
				SVC_KEI_STAT_TEIK.equals(sbop_svc_kei_stat)
				|| SVC_KEI_STAT_TKC.equals(sbop_svc_kei_stat)
				|| SVC_KEI_STAT_STP.equals(sbop_svc_kei_stat)
				|| SVC_KEI_STAT_KYUS.equals(sbop_svc_kei_stat)
		)
		{
			// ▼▼▼▼▼ 2013/09/11 OM-2013-0001096 UPD START ▼▼▼▼▼
			// ******************************************************* //
			// 非課金判定部品実行処理＜サブオプション＞                //
			// ******************************************************* //
			// ※「解約時課金フラグ」について
			// 　　オプション、サブオプションごとに非課金判定部品を実行し、
			// 　　各々の解約時課金フラグを設定する。
			HashMap<String, Object> jdgHiChrgMapSbopSvcKei =
				runHiChrgJdgUtil(
						handle,
						param,
						requestParam,
						resultHash,
						(HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010),
						null,
						null,
						(HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0401A010),
						DSL_SBT_FLG_SBOP_SVC_KEI_DSL
				);
			// ▲▲▲▲▲ 2013/09/11 OM-2013-0001096 UPD E N D ▲▲▲▲▲

			// ******************************************************* //
			// サブオプションサービス契約解約                          //
			// ******************************************************* //
			statusCode = callEKK0401C170SC(param, handle, requestParam, resultHash, jdgHiChrgMapSvcKei);
			if(statusCode != 0)
			{
				return statusCode;
			}
			HashMap<String, Object> eKK0401C170Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0401C170);
			this.svcKeiUpdDtm = (String)eKK0401C170Hash.get(EKK0401C170CBSMsg.UPD_DTM);

			// ******************************************************* //
			// サブオプションサービス契約解約確定                      //
			// ******************************************************* //
			statusCode = callEKK0401C180SC(param, handle, requestParam, resultHash, jdgHiChrgMapSvcKei, jdgHiChrgMapSbopSvcKei);
			if(statusCode != 0)
			{
				return statusCode;
			}
			HashMap<String, Object> eKK0401C180Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0401C180);
			this.svcKeiUpdDtm = (String)eKK0401C180Hash.get(EKK0401C180CBSMsg.UPD_DTM);

			// サブオプションサービスコード取得
			String sbop_svc_cd = (String)eKK0401A010Hash.get(EKK0401A010CBSMsg1List.SBOP_SVC_CD);
			
			// ST3-2013-0000919 2013/05/23 start
			// サブオプション＝メールエイリアスの場合
			if(SBOP_SVC_CD_ALIAS.equals(sbop_svc_cd))
			{
				// オプションサービス契約<ISP>一意照会
				statusCode = callEKK0361A010SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}

				// オプションサービス契約<ISP>一意照会結果取得
				HashMap<String, Object> eKK0361A010Hash = null;
				eKK0361A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0361A010);
				
				String oyaOpSvcKeiNo = (String)eKK0361A010Hash.get(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO);
				
				String mlad = (String)eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MLAD);
				
				// サブオプションサービス契約<ISP>一意照会
				statusCode = callEKK0411A010SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
				// サブオプションサービス契約<ISP>一意照会結果取得
				HashMap<String, Object> eKK0411A010Hash = null;
				eKK0411A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0411A010);
				
				if(eKK0411A010Hash != null)
				{
					// メールエイリアス
					String mailArias = (String)eKK0411A010Hash.get(EKK0411A010CBSMsg1List.ALIAS);
					
					String koOpSvcKei = (String)eKK0411A010Hash.get(EKK0411A010CBSMsg1List.OP_SVC_KEI_NO);
					
					// エイジング対象使用終了（メールエイリアス）
					if(mailArias != null && !"".equals(mailArias))
					{
						if (koOpSvcKei.equals(oyaOpSvcKeiNo)) {
							
							String[] mladBunkatsu = mlad.split("@");
							
							mailArias = mailArias + "@" + mladBunkatsu[mladBunkatsu.length-1];
							
							requestParam.put(AGING_SBT_CD, AGING_SBT_CD_ARIAS);		// エイジング種別コード
							requestParam.put(AGING_TG_VALUE, mailArias);			// エイジング対象値
							statusCode = updateAgingUseEnd(param, handle, requestParam, resultHash);
							if(statusCode != 0)
							{
								return statusCode;
							}
						}
					}
				}
				// ST3-2013-0000919 2013/05/23 end
			}
		}
		
		return 0;
	}
	
	
	/**
	 * 機器提供サービス契約 強制解約処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @return リターンコード
	 * @throws Throwable
	 */
	private int kktkSvcKei_KyoseiDsl(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String fixedText
	) throws Throwable
	{
		int statusCode = 0;
		// 20140507 ANK-2054-00-00 ADD START
		boolean isKktkSvcCancel = false;	// 機器提供サービス契約の強制解約を実行したらtrue
		// 20140507 ANK-2054-00-00 ADD END

		// 機器提供サービス契約一意照会
		statusCode = callEKK0341A010SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		HashMap<String, Object> eKK0341A010Hash = null;
		eKK0341A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341A010);

		// ST2-2012-0001598 2012/08/29 start
		// パラメータ(処理対象の契約)と機器提供サービス契約を見て、サービス契約番号かサービス契約回線内訳番号が一致の場合、処理する
		boolean syoriFlg = false;
		String prm_svc_kei_no     = (String)requestParam.get(SVC_KEI_NO);
		String kiki_svc_kei_no    = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.SVC_KEI_NO);
		String kiki_svc_kei_uw_no = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO);
		String kiki_kaisen_uw_no  = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);

		if (kiki_svc_kei_no != null && !"".equals(kiki_svc_kei_no))
		{
			// 機器提供サービス契約にサービス契約番号があれば　サービス契約番号で比較
			if(prm_svc_kei_no.equals(kiki_svc_kei_no))
			{
				syoriFlg = true;
			}
		}
		else if(kiki_svc_kei_uw_no != null && !"".equals(kiki_svc_kei_uw_no))
		{
			// 機器提供サービス契約にサービス契約番号が無いとき
			// サービス契約内訳番号が一致しないか確認する

			// 今見ているサービス契約番号に対応するサービス契約内訳番号を取得
			ArrayList<HashMap<String, Object>> eKK0161B004HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0161B004);
			if(eKK0161B004HashList == null)
			{
				statusCode = callEKK0161B004SC(param, handle, requestParam, resultHash); //EKK0161B004_サービス契約内訳一覧照会
				if(statusCode != 0)
				{
					return statusCode;
				}
				eKK0161B004HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0161B004);
			}
			for(int i=0;eKK0161B004HashList!=null && i<eKK0161B004HashList.size(); i++)
			{
				if(kiki_svc_kei_uw_no.equals((String)eKK0161B004HashList.get(i).get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO)))
				{
					// サービス契約内訳番号が一致
					syoriFlg = true;
					break;
				}
			}
		}
		else if(kiki_kaisen_uw_no != null && !"".equals(kiki_kaisen_uw_no))
		{
			// 機器提供サービス契約にサービス契約番号,サービス契約内訳番号が無いとき
			// サービス契約回線内訳番号が一致しないか確認する

			// 今見ているサービス契約番号に対応するサービス契約回線内訳番号を検索
			statusCode = callEKK0251B001SC(param, handle, requestParam, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}
			ArrayList<HashMap<String, Object>> eKK0251B001HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0251B001);
			for(int i=0;eKK0251B001HashList!=null && i<eKK0251B001HashList.size(); i++)
			{
				if(kiki_kaisen_uw_no.equals((String)eKK0251B001HashList.get(i).get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)))
				{
					// サービス契約回線内訳番号が一致
					syoriFlg = true;
					break;
				}
			}
		}

		if(!syoriFlg){
			// 処理なし
			return 0;
		}
		// ST2-2012-0001598 2012/08/29 end

		// 回線に紐づく機器の場合、機器の解約を行うかの判定を行う
		
		if (isDslTrgtByKaisucwk(kiki_kaisen_uw_no, handle, param, requestParam, resultHash))
		{
			return 0;
		}

		// ST1-2013-0000180 2013-01-21 ADD_START
		// 回線に紐づく機器の場合、機器の解約を行うかの判定を行う（VONU）
		if (isDslTrgtKaisucwkVonu(kiki_kaisen_uw_no, handle, param, requestParam, resultHash))
		{
			return 0;
		}
		// ST1-2013-0000180 2013-01-21 ADD_END

		String kktk_svc_kei_stat = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);

		// 2013/12/14 ANK1578-00-00 nakashima Mod start
		// 機器提供サービス一意照会
		statusCode = callEKK0771A010SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}
		String kktk_svc_cd = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD);

		// ANK-4315-00-00 MOD STR
		// 解約対象機器が多機能ルータ,HGWの場合、多機能CCを呼び出す。
		// 多機能CC以外の場合、当クラス内で機器解約処理を実行。
//		if(JKKStrConst.KKTK_SVC_CD_TAKINORT.endsWith(kktk_svc_cd)){
		if(JKKStrConst.KKTK_SVC_CD_TAKINORT.endsWith(kktk_svc_cd) || JKKStrConst.KKTK_SVC_CD_HGW.endsWith(kktk_svc_cd)){
		// ANK-4315-00-00 MOD END
			
			String workkkopUsekkDataKey= "KKkopSvcUseKeiUpdCC";
			statusCode = executekkopUsekkUpdCC(handle, 
											param, 
											requestParam, 
											resultHash, 
											fixedText, 
											workkkopUsekkDataKey);
			if(statusCode != 0)
			{
				return statusCode;
			}

		}
		else
		{
			// 受付済(010)または照査済(020)の場合
			if(SVC_KEI_STAT_UKE.equals(kktk_svc_kei_stat) || SVC_KEI_STAT_SHOSA.equals(kktk_svc_kei_stat))
			{
				// 機器提供サービス契約キャンセル
				statusCode = callEKK0341C330SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
				HashMap<String, Object> eKK0341C330Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341C330);
				this.svcKeiUpdDtm = (String)eKK0341C330Hash.get(EKK0341C330CBSMsg.UPD_DTM);
				// 20140507 ANK-2054-00-00 ADD START
				isKktkSvcCancel = true;	
				// 20140507 ANK-2054-00-00 ADD END

			}
			// 締結中、サービス提供中、停止中、休止・中断中の場合
			else if(
					SVC_KEI_STAT_TEIK.equals(kktk_svc_kei_stat)
					|| SVC_KEI_STAT_TKC.equals(kktk_svc_kei_stat)
					|| SVC_KEI_STAT_STP.equals(kktk_svc_kei_stat)
					|| SVC_KEI_STAT_KYUS.equals(kktk_svc_kei_stat)
			)
			{
				// 多機能CC呼出前に処理を移動
				// ANK-1421-00-00 2013/02/08 ADD START
				// 機器提供サービス一意照会
				//statusCode = callEKK0771A010SC(param, handle, requestParam, resultHash);
				//if(statusCode != 0)
				//{
				//	return statusCode;
				//}
				// ANK-1421-00-00 2013/02/08 ADD END
				// 機器提供サービス契約解約
				statusCode = callEKK0341C340SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
				HashMap<String, Object> eKK0341C340Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341C340);
				this.svcKeiUpdDtm = (String)eKK0341C340Hash.get(EKK0341C340CBSMsg.UPD_DTM);
	
				// 機器提供サービス契約解約確定
				statusCode = callEKK0341C350SC(param, handle, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
				HashMap<String, Object> eKK0341C350Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341C350);
				this.svcKeiUpdDtm = (String)eKK0341C350Hash.get(EKK0341C350CBSMsg.UPD_DTM);
				// 20140507 ANK-2054-00-00 ADD START
				isKktkSvcCancel = true;	
				// 20140507 ANK-2054-00-00 ADD END
	
				// ST1-2012-0000670 2012/10/07 start
				addTaknkikiInfoList(param, eKK0341C350Hash);
				// ST1-2012-0000670 2012/10/07 end
			}
		}
		// 2013/12/14  ANK1578-00-00 nakashima Mod end
		// 20140507 ANK-2054-00-00 ADD START
		if (isKktkSvcCancel)
		{
			// 機器オプションサービス契約強制解約
			kkopSvcKei_KyoseiDsl(handle, param, requestParam, resultHash, fixedText, (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
		}
		// 20140507 ANK-2054-00-00 ADD END
		
		
		// 2012/09/11 ANK-0546-00-00 ADD START 割賦契約キャンセル処理を追加
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		String prc_grp_cd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);

		// eo光ネットかどうかチェック
		if(PRC_GRP_CD_NET_HM.equals(prc_grp_cd) || PRC_GRP_CD_NET_MZ.equals(prc_grp_cd) || PRC_GRP_CD_NET_MN.equals(prc_grp_cd))
		{
			String kktkSvcCd = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
			if ((JKKSvcConst.KKTK_SVC_CD_TABLET.equals(kktkSvcCd) || JKKSvcConst.KKTK_SVC_CD_CRADLE.equals(kktkSvcCd)))
			{
				// 機器提供サービスコードが「タブレット」または「タブレット用クレードル」の場合、割賦契約キャンセル処理を実行
				statusCode = kappu_cancel(handle, param, requestParam, resultHash);
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
		}
		// 2012/09/11 ANK-0546-00-00 ADD END

		return 0;
	}

	/**
	 * 回線に紐づく機器（ONU）の解約処理を行うかの判定を行う
	 * 
	 */
	private boolean isDslTrgtKaisucwkVonu(String kiki_kaisen_uw_no, SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash) throws Throwable
	{
		// 回線に紐づいていない機器以外は判定対象外
		if (kiki_kaisen_uw_no == null || "".equals(kiki_kaisen_uw_no))
		{
			return false;
		}
		
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		HashMap<String, Object> eKK0341A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341A010);
		
		String svcCd81A010 = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD);
		
		// 解約対象の機器がVONU以外の場合
		if (JKKSvcConst.KKTK_SVC_CD_VONU.equals((String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD)))
		{
			// ＴＶの契約以外は対象外
			if (!JKKSvcConst.SVC_CD_TV.equals(svcCd81A010))
			{
				return true;
			}
		}
		
		return false;
	}

	/**
	 * 回線に紐づく機器（ONU）の解約処理を行うかの判定を行う
	 * 
	 */
	private boolean isDslTrgtByKaisucwk(String kiki_kaisen_uw_no, SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash) throws Throwable
	{
		// 回線に紐づいていない機器以外は判定対象外
		if (kiki_kaisen_uw_no == null || "".equals(kiki_kaisen_uw_no))
		{
			return false;
		}
		
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		HashMap<String, Object> eKK0341A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341A010);
		
		String svcCd81A010 = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD);
		
		// ST1-2013-0000180 2013-01-21 EDIT_START
		// OM-2016-0001956 20170221 MOD START
		// 解約対象の機器がONU、モデム、インラインフィルタ、スプリッター以外の場合は判定対象外
		//if (JKKSvcConst.KKTK_SVC_CD_ONU.equals((String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD)))
		if (JKKSvcConst.KKTK_SVC_CD_ONU.equals((String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD)) ||
			JKKSvcConst.KKTK_SVC_CD_MODEM.equals((String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD)) ||
			JKKSvcConst.KKTK_SVC_CD_SPLIT.equals((String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD)) ||
			JKKSvcConst.KKTK_SVC_CD_IFILTER.equals((String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD)) )
		// OM-2016-0001956 20170221 MOD END
		{
			// ネットか電話の契約の場合は判定対象
			if (JKKSvcConst.SVC_CD_NET.equals(svcCd81A010) || JKKSvcConst.SVC_CD_TEL.equals(svcCd81A010))
			{
				
			}
			// ネットか電話以外の契約の場合は解約対象外
			else
			{
				return true;
			}
		}
		// ONU以外はチェック対象外
		else
		{
			return false;
		}
		// ST1-2013-0000180 2013-01-21 EDIT_END
		
		// 回線利用中サービス契約一覧照会
		callEKK0081B007SC(param, handle, requestParam, resultHash, kiki_kaisen_uw_no);
		
		ArrayList<HashMap<String, Object>> eKK0081B007HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0081B007);
		
		if (null != eKK0081B007HashList && eKK0081B007HashList.size() > 0)
		{
			for (int j = 0; j < eKK0081B007HashList.size(); j++)
			{
				HashMap<String, Object> workEKK0081B007 = eKK0081B007HashList.get(j);
				
				// 解約対象と同じサービス契約の場合は対象外
				if (((String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO)).equals((String)workEKK0081B007.get(EKK0081B007CBSMsg1List.SVC_KEI_NO)))
				{
					continue;
				}
				
				String svcCd81B007 = (String)workEKK0081B007.get(EKK0081B007CBSMsg1List.SVC_CD);
				
				//解約対象がネットの場合
				if (JKKSvcConst.SVC_CD_NET.equals(svcCd81A010))
				{
					// 利用中の回線に電話が存在する場合
					if (JKKSvcConst.SVC_CD_TEL.equals(svcCd81B007))
					{
						// 電話の契約が取得できた場合（回線を残す為、解約対象外）
						return true;
					}
				}
				// 解約対象が電話の場合
				else if (JKKSvcConst.SVC_CD_TEL.equals(svcCd81A010))
				{
					// 利用中の回線にネットが存在する場合
					if (JKKSvcConst.SVC_CD_NET.equals(svcCd81B007))
					{
						// ネットの契約が取得できた場合（回線を残す為、解約対象外）
						return true;
					}
				}
			}
		}
		
		return false;
	}

	/**
	 * 回線利用中サービス契約一覧照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0081B007SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String kaisenUcwkNo
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081B007への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081B007CBSMsg.class.getName());
		mapper.mappingEKK0081B007InMsg(template, requestParam, 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)
		{
			resultHash.put(TEMPLATE_ID_EKK0081B007, mapper.mappingEKK0081B007SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 回線に紐づく機器（ONU）の解約処理を行うかの判定を行う
	 * 
	 */
	private int dslTrgtByKaisuckw(SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash) throws Throwable
	{
		
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		
		String svcCd81A010 = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD);
		
		// ネットか電話の契約以外は対象外
		if (!(JKKSvcConst.SVC_CD_NET.equals(svcCd81A010) || JKKSvcConst.SVC_CD_TEL.equals(svcCd81A010)))
		{
			return 0;
		}
		
		// 回線対象サービス契約一覧照会
		// サービス契約よりサービス契約回線内訳番号を取得
		callEKK0241B003SC(param, handle, eKK0081A010Hash, resultHash);
		ArrayList<HashMap<String, Object>> eKK0241B003HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0241B003);
		
		if (eKK0241B003HashList != null && eKK0241B003HashList.size() > 0)
		{
			HashMap<String, Object> eKK0241B003Hash = eKK0241B003HashList.get(0);
			
			String svcKeiKaisenUcwkNo = (String)eKK0241B003Hash.get(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
			
			// 回線対象サービス契約一覧照会
			callEKK0241B002SC(param, handle, requestParam, resultHash, svcKeiKaisenUcwkNo);
			
			ArrayList<HashMap<String, Object>> eKK0241B002HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0241B002);
			
			if (null != eKK0241B002HashList)
			{
				// 回線に紐づいている契約が複数でない場合は判定対象外
				if (eKK0241B002HashList.size() < 2)
				{
					return 0;
				}
				
				for (int j = 0; j < eKK0241B002HashList.size(); j++)
				{
					HashMap<String, Object> workEKK0241B002 = eKK0241B002HashList.get(j);
					
					// 解約対象と同じサービス契約の場合は対象外
					if (((String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO)).equals((String)workEKK0241B002.get(EKK0241B002CBSMsg1List.SVC_KEI_NO)))
					{
						continue;
					}
					
					String svcCd241B = (String)workEKK0241B002.get(EKK0241B002CBSMsg1List.SVC_CD);
					String svcKeiStat241B = (String)workEKK0241B002.get(EKK0241B002CBSMsg1List.SVC_KEI_STAT);
					
					//解約対象がネットの場合
					if (JKKSvcConst.SVC_CD_NET.equals(svcCd81A010))
					{
						// 電話が存在する場合
						if (JKKSvcConst.SVC_CD_TEL.equals(svcCd241B))
						{
							// サービス契約ステータスが解約済み、または、キャンセル済みでない場合は回線を残す
							if (JKKSvcConst.SVC_KEI_STAT_910.equals(svcKeiStat241B) || JKKSvcConst.SVC_KEI_STAT_920.equals(svcKeiStat241B))
							{
								// 課金先が違う場合、ONUが残っている可能性があるので、その場合にはここで解約orキャンセルを実施
								dslOnu(param, handle, requestParam, resultHash, svcKeiKaisenUcwkNo);
							}
							else
							{
								// 電話の契約が取得できた場合（回線を残す為、解約対象外）
								return 0;
							}
						}
					}
					// 解約対象が電話の場合
					else if (JKKSvcConst.SVC_CD_TEL.equals(svcCd81A010))
					{
						// 利用中の回線にネットが存在する場合
						if (JKKSvcConst.SVC_CD_NET.equals(svcCd241B))
						{
							if (JKKSvcConst.SVC_KEI_STAT_910.equals(svcKeiStat241B) || JKKSvcConst.SVC_KEI_STAT_920.equals(svcKeiStat241B))
							{
								// 課金先が違う為、ここで解約orキャンセルを実施
								dslOnu(param, handle, requestParam, resultHash, svcKeiKaisenUcwkNo);
							}
							else
							{
								// ネットの契約が取得できた場合（回線を残す為、解約対象外）
								return 0;
							}
						}
					}
				}
			}
		}
		
		return 0;
	}
	
	/**
	 * ONUが残っている場合には解約する
	 * @param param
	 * @param handle
	 * @param requestParam
	 * @param resultHash
	 * @param kaisenUcwkNo
	 * @return
	 * @throws Throwable
	 */
	private int dslOnu(IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String svcKeiKaisenUcwkNo)
			throws Throwable
	 {
		int statusCode = 0;
		
		// 回線に紐づいている機器を取得
		callEKK0341B504SC(param, handle, requestParam, resultHash, svcKeiKaisenUcwkNo);
		ArrayList<HashMap<String, Object>> eKK0341B504HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0341B504);
		
		if (eKK0341B504HashList != null && eKK0341B504HashList.size() > 0)
		{
			for(int i=0; i < eKK0341B504HashList.size(); i++)
			{
				HashMap<String, Object> eKK0341B504Hash = eKK0341B504HashList.get(i);
				// 解約対象の機器がONU以外の場合は判定対象外
				if (!JKKSvcConst.KKTK_SVC_CD_ONU.equals((String)eKK0341B504Hash.get(EKK0341B504CBSMsg1List.KKTK_SVC_CD)))
				{
// 2023/06/04 #62776 MOD START
//					return 0;
					continue;
// 2023/06/04 #62776 MOD END
				}
				String kktkSvcKeiNo = (String)eKK0341B504Hash.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO);
				
				//機器提供サービス契約一意照会
				statusCode = callEKK0341A010SC2(param, handle, kktkSvcKeiNo, resultHash);
				
				HashMap<String, Object> eKK0341A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341A010);
				
				String kktk_svc_kei_stat = (String)eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
				
				//受付済(010)または照査済(020)の場合
				if(SVC_KEI_STAT_UKE.equals(kktk_svc_kei_stat) || SVC_KEI_STAT_SHOSA.equals(kktk_svc_kei_stat))
				{
					//機器提供サービス契約キャンセル
					statusCode = callEKK0341C330SC(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
					HashMap<String, Object> eKK0341C330Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341C330);
					this.svcKeiUpdDtm = (String)eKK0341C330Hash.get(EKK0341C330CBSMsg.UPD_DTM);
				}
				//締結中、サービス提供中、停止中、休止・中断中の場合
				else if(SVC_KEI_STAT_TEIK.equals(kktk_svc_kei_stat) ||
						SVC_KEI_STAT_TKC.equals(kktk_svc_kei_stat) ||
						SVC_KEI_STAT_STP.equals(kktk_svc_kei_stat) ||
						SVC_KEI_STAT_KYUS.equals(kktk_svc_kei_stat))
				{
					// ANK-1421-00-00 2013/02/08 ADD START
					//機器提供サービス一意照会
					statusCode = callEKK0771A010SC(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
					// ANK-1421-00-00 2013/02/08 ADD END
					//機器提供サービス契約解約
					statusCode = callEKK0341C340SC(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
					HashMap<String, Object> eKK0341C340Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341C340);
					this.svcKeiUpdDtm = (String)eKK0341C340Hash.get(EKK0341C340CBSMsg.UPD_DTM);
					
					//機器提供サービス契約解約確定
					statusCode = callEKK0341C350SC(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
					HashMap<String, Object> eKK0341C350Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341C350);
					this.svcKeiUpdDtm = (String)eKK0341C350Hash.get(EKK0341C350CBSMsg.UPD_DTM);
					
					addTaknkikiInfoList(param, eKK0341C350Hash);
				}
			}
		}
		
		return 0;
	 }

	/**
	 * 機器提供サービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0341A010SC2(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String kktkSvcKeiNo,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341A010CBSMsg.class.getName());
		mapper.mappingEKK0341A010InMsg2(template, kktkSvcKeiNo);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0341A010, mapper.mappingEKK0341A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	// ANK-1421-00-00 2013/02/08 ADD START
	/**
	 * EKK0771A010 機器提供サービス一意照会を実行します
	 * @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
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		HashMap<String, Object> eKK0341A010Hash = null;
		eKK0341A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0341A010);

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0771A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0771A010CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0771A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0771A010);

		// 機能コード
		template.set(EKK0771A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// 機器提供サービスコード
		template.set(EKK0771A010CBSMsg.KEY_KKTK_SVC_CD, eKK0341A010Hash.get(EKK0341A010CBSMsg1List.KKTK_SVC_CD));

		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)
		{
			CAANMsg[] msgList = resultMsgs[0].getCAANMsgList(EKK0771A010CBSMsg.EKK0771A010CBSMSG1LIST);
			if (msgList != null && msgList.length > 0)
			{
				resultHash.put(TEMPLATE_ID_EKK0771A010, mapper.mappingCAANOutMsgOne(EKK0771A010CBSMsg.EKK0771A010CBSMSG1LIST, resultMsgs));
			}
			else
			{
				resultHash.put(TEMPLATE_ID_EKK0771A010, null);
			}
		}
		
		return status;
	}
	// ANK-1421-00-00 2013/02/08 ADD END
	
	/**
	 * 回線対象サービス契約一覧照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0341B504SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String kaisenUcwkNo
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341B504への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341B504CBSMsg.class.getName());
		mapper.mappingEKK0341B504InMsg(template, requestParam, 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)
		{
			resultHash.put(TEMPLATE_ID_EKK0341B504, mapper.mappingEKK0341B504SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 回線対象サービス契約一覧照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0241B003SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> eKK0081A010Hash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0241B003への呼び出しパラメータ設定
		template = new CAANMsg(EKK0241B003CBSMsg.class.getName());
		mapper.mappingEKK0241B003InMsg(template, eKK0081A010Hash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0241B003, mapper.mappingEKK0241B003SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 回線対象サービス契約一覧照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0241B002SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String kaisenUcwkNo
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0241B002への呼び出しパラメータ設定
		template = new CAANMsg(EKK0241B002CBSMsg.class.getName());
		mapper.mappingEKK0241B002InMsg(template, requestParam, 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)
		{
			resultHash.put(TEMPLATE_ID_EKK0241B002, mapper.mappingEKK0241B002SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サービス制御管理S 強制解約要求処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash パラメータ
	 * @return リターンコード
	 * @throws Throwable
	 */
	private int svcCtlKyoKaiReq(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String fixedText
	) throws Throwable
	{
		int statusCode = 0;

		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		// お客様一意照会
		statusCode = callECK0011A010SC(param, handle, eKK0081A010Hash, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		// 料金グループコード取得
		String prc_grp_cd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		
		//【ANK-4427-48-00】2025/01/30 Add Start
		// NTT卸区分
		String nttOrsDiv = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.NTTORS_DIV);
		//【ANK-4427-48-00】2025/01/30 Add End

		// 料金グループコード = eo光電話の場合
		if (PRC_GRP_CD_TEL.equals(prc_grp_cd))
		{
			// 2012-08-06 [ANK-0342-00-00] add start
			ArrayList<HashMap<String, Object>> eKK0241B001HashList = new ArrayList<HashMap<String, Object>>();

			// サービス契約回線内訳一覧照会
			statusCode = callEKK0241B001SC(param, handle, requestParam, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}

			// 結果の抽出
			eKK0241B001HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0241B001);

			if(eKK0241B001HashList != null)
			{
				// サービス契約回線内訳一覧数分ループ
				for(int i = 0 ; i < eKK0241B001HashList.size() ; i++)
				{
					HashMap<String, Object> eKK0241B001Hash = eKK0241B001HashList.get(i);

					// サービス契約回線内訳番号を取得
					String svcKeiKaisenUcwkNo = (String)eKK0241B001Hash.get(EKK0241B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);

					// サービス契約_工事案件一覧照会
					statusCode = callEKU0081B020SC(param, handle, requestParam, resultHash, svcKeiKaisenUcwkNo);
					if(statusCode != 0)
					{
						return statusCode;
					}

					ArrayList<HashMap<String, Object>> eKU0081B020HashList = new ArrayList<HashMap<String, Object>>();

					// 結果の抽出
					eKU0081B020HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKU0081B020);

					if(eKU0081B020HashList != null)
					{
						// サービス契約_工事案件一覧数分ループ
						for(int j = 0; j < eKU0081B020HashList.size() ; j++)
						{
							HashMap<String, Object> eKU0081B020Hash = eKU0081B020HashList.get(j);

							// 工事案件番号を取得
							String kojiankNo = (String)eKU0081B020Hash.get(EKU0081B020CBSMsg1List.KOJIAK_NO);

							// 工事案件番号が取得できた場合のみＶＬＡＮオーダ受付を実施する
							if (kojiankNo != null && !"".equals(kojiankNo))
							{
								// 電話用VLANオーダ受付サービスIF呼び出し
								statusCode = callESC0021D010SC(param, handle, requestParam, resultHash, kojiankNo);
								if(statusCode != 0)
								{
									return statusCode;
								}
							}
						}
					}
				}
			}
		}

		//▼▼▼▼▼【ANK-2056-00-00】光電話セレクトオプションパック ADD START▼▼▼▼▼
		/*************************************************************************************/
		/** 電話セレクトオプションパック操作部品実行                                        **/
		/*************************************************************************************/
		// 料金グループコード取得
		String svc_cd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD);
		if(SVC_CD_TEL.equals(svc_cd))
		{
			ArrayList<HashMap<String, Object>> eKK0161B004HashList = null;
			eKK0161B004HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK0161B004);
	
			
			// サービス契約内訳一覧の取得分だけループ
			for(int idx_su = 0 ; idx_su < eKK0161B004HashList.size() ; idx_su++)
			{
				HashMap<String, Object> eKK0161B004Hash = null;
				eKK0161B004Hash = eKK0161B004HashList.get(idx_su);
	
	
	
				// サービス契約内訳番号
				String svc_kei_ucwk_no = (String)eKK0161B004Hash.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO);
				statusCode = executeTelSelectOpPackOperateCC(param, handle, requestParam, resultHash, svc_kei_ucwk_no,eKK0081A010Hash);
			
				if(statusCode != 0)
				{
					return statusCode;
				}
			}
		}
		//▲▲▲▲▲【ANK-2056-00-00】光電話セレクトオプションパック ADD E N D▲▲▲▲▲
		/*************************************************************************************/
		/** 割引サービス自動適用ＣＣ実行                                                    **/
		/*************************************************************************************/
		statusCode = executeWribAutoAplyCC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		/*************************************************************************************/
		/** 進捗登録実行処理                                                                **/
		/*************************************************************************************/
		statusCode = callEKK1091D010SC(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		/*************************************************************************************/
		/** 工事案件ＣＣ実行                                                                **/
		/*************************************************************************************/
		// 処理対象がネットで、全戸一括／居住者一括の場合は処理しない
		// ANK-2801-01-00 DEL START
		//if (! chkMansPayHoshiki(param, handle, resultHash))
		//{
		// ANK-2801-01-00 DEL END
		
		//【ANK-4427-48-00】2025/01/30 Add Start
		if (JKKStringUtil.isNullEmpty(nttOrsDiv)){
		//【ANK-4427-48-00】2025/01/30 Add End
			statusCode = executeKojiAnkenCC(handle, param, requestParam, resultHash, fixedText);
			if(statusCode != 0)
			{
				return statusCode;
			}
		//【ANK-4427-48-00】2025/01/30 Add Start
		}
		//【ANK-4427-48-00】2025/01/30 Add End
		
		// ANK-2801-01-00 DEL START	
		//}
		// ANK-2801-01-00 DEL END

		/*************************************************************************************/
		/** 物流制御ＣＣ実行                                                                **/
		/*************************************************************************************/
		statusCode = executeButuryuCtrlCC(handle, param, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}

		// IT2-2012-0001287 2012/08/01 DEL START
//		//通知書登録CC（通知書取消処理）
//		statusCode = executeTchishoAddCC(handle, param, requestParam, resultHash);
//		if(statusCode != 0)
//		{
//			return statusCode;
//		}
		// IT2-2012-0001287 2012/08/01 DEL END

		/*************************************************************************************/
		/** 発行ＳＯＤＣＣ実行                                                              **/
		/*************************************************************************************/
		statusCode = executeHakkoSodCC(handle, param, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}
		
// ANK-4494-00-00 ADD START
		/*************************************************************************************/
		/** 電話番号更新                                                                    **/
		/*************************************************************************************/
		// 料金グループコード = eo光電話の場合
		if (PRC_GRP_CD_TEL.equals(prc_grp_cd))
		{
// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 MOD START
//			// サービス契約内訳＜eo光電話＞一意照会
//			statusCode = callEKK0191A010SC(param, handle, requestParam, resultHash);
//			if(statusCode != 0)
//			{
//				return statusCode;
//			}
//
//			// サービス契約内訳＜eo光電話＞一意照会結果取得
//			HashMap<String, Object> eKK0191A010Hash = null;
//			eKK0191A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0191A010);
//			// 電話番号取得
//			String telno = (String)eKK0191A010Hash.get(EKK0191A010CBSMsg1List.TELNO);
			
			// ANK-4685-00-00 ADD START
			statusCode = callETU0051B010SC(param, handle, resultHash);
			if(statusCode != 0)
			{
				return statusCode;
			}
			HashMap<String, Object> eETU0051B010HashList = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_ETU0051B010);
			
			// 通信事業者コード（自社）
			String jishaCd = (String)eETU0051B010HashList.get(ETU0051B010CBSMsg1List.TSJGS_CD);
			// ANK-4685-00-00 ADD END
			
			if(this.dslTelnoList != null && this.dslTelnoList.size() != 0){
				
				// 解約対象となった電話番号分繰り返し
				for(String telno : dslTelnoList){
// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 MOD END
			
					if(telno != null && !"".equals(telno)){
						
		// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 MOD START
		//				// 電話番号状態を判定する。
		//				String telnoMonaiBmpUm = null;	
		//				telnoMonaiBmpUm = getTelnMonaiBmpUm(handle, param, telno);
						
						// サービス契約内訳の解約・キャンセル後のため、電話番号状態判定CCでは正確な判定ができない。
						// 電話番号一意照会結果を元に判定を行う。
						// 電話番号一意照会（電話番号）
						statusCode = callEZM0121A010SC(param, handle, telno, resultHash);
						if(statusCode != 0)
						{
							return statusCode;
						}
						HashMap<String, Object> eZM0121A010HashList = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EZM0121A010);
						
						// 網内番ポ有無（初期個人法人電話番号帯が法人の場合「有」）
						String telnoMonaiBmpUm = JKKStrConst.CD00410_HOJIN.equals(eZM0121A010HashList.get(EZM0121A010CBSMsg1List.SHK_KOJIN_HOJIN_TLN_TAI_CD)) ? JKKStrConst.CD00002_UMU_1 : JKKStrConst.CD00002_UMU_0;
		// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 MOD END
						
						//網内番ポかつ自社番号の場合、電話番号「個人法人番号帯コード」を"2"(法人)に更新する。
						// ANK-4685-00-00 MOD START
//						if (JKKTelnoStatJudgeConstCC.MONAIBMPUM_ARI.equals(telnoMonaiBmpUm)){
						if (JKKTelnoStatJudgeConstCC.MONAIBMPUM_ARI.equals(telnoMonaiBmpUm) && jishaCd != null && jishaCd.equals(eZM0121A010HashList.get(EZM0121A010CBSMsg1List.TLN_STKU_TSJGS_CD))){
						// ANK-4685-00-00 MOD END
							// 電話番号「個人法人番号帯コード」を"2"(法人)に更新
							
		// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 DEL START
		// 上に移動
		//					// 電話番号一覧照会（電話番号）
		//					statusCode = callEZM0121A010SC(param, handle, telno, resultHash);
		//					if(statusCode != 0)
		//					{
		//						return statusCode;
		//					}
		//					HashMap<String, Object> eZM0121A010HashList = null;
		//					
		//					eZM0121A010HashList= (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EZM0121A010);
		// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 DEL END
							
							// 電話番号変更実行処理
							statusCode = callEZM0121C010SC(param, handle, resultHash, KOJIN_HOJIN_TLN_TAI_CD, eZM0121A010HashList);
							if(statusCode != 0)
							{
								return statusCode;
							}
							
						}			
					}
			
// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 ADD START
				}
			}
// ANK-4494-00-00 Step2品質強化対応No.29 20241204 星野 ADD END
					
		}
// ANK-4494-00-00 ADD END
		
		//ANK-0406-00-0007_20120718_START
		/*************************************************************************************/
		/** スマートバリュー異動情報登録ＣＣ実行                                            **/
		/*************************************************************************************/
		statusCode = executeSmtvlIdoInfAddCC(handle, param, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}
		//ANK-0406-00-0007_20120718_END

		//ANK-0035-00-0007_20120718_START
		/*************************************************************************************/
		/** フェムトセル異動情報登録実行処理                                                **/
		/*************************************************************************************/
		statusCode = executeFmtcelIdoInfAddCC(handle, param, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}
		//ANK-0035-00-0007_20120718_END
		
		//ANK-2801-01-00 DEL START
		//ANK-1988-00-00 マンション全戸一括オプション停止（ファミパ割対応） 2014/04/07 藤田 ADD START
		/*************************************************************************************/
		/** ファミリーパック割引操作部品実行処理                                            **/
		/*************************************************************************************/
		//if (chkMansPayHoshiki(param, handle, resultHash)) {
		//	statusCode = executeFamipaWribOperateCC(handle, param, requestParam, resultHash);
		//	if(statusCode != 0)
		//	{
		//		return statusCode;
		//	}
		//}
		//ANK-1988-00-00 マンション全戸一括オプション停止（ファミパ割対応） 2014/04/07 藤田 ADD END
		// ANK-2801-01-00 DEL END
		
		//正常
		return 0;
	}
	
	
	
	/**
	 * 強制解約可能判定処理
	 * @param fukaKaiTaiLst 解約不可対象リスト
	 * @param requestParam パラメータ
	 * @param resultHash 結果のハッシュ
	 * @return 強制解約可否(可:false, 不可:true)
	 */
	private boolean kyoseiDslFukaCheck(
			ArrayList<HashMap<String, Object>> fukaKaiTaiLst,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash)
	{
		HashMap<String, Object> eKK0081A010Hash = null;
		HashMap<String, Object> fukaTaiHash =  new HashMap<String, Object>();
		boolean fuka_flg = false;
		
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		
		String prc_grp_cd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		String svc_kei_stat = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
		
		//eo光テレビ(KCN)の場合
		if(PRC_GRP_CD_TV_KCN.equals(prc_grp_cd))
		{
			fukaTaiHash.put(FUKA_RESON, FUKA_RESON_RTN_TV_KCN);
			fuka_flg = true;
		}
		//受付済 or 照査済 or 締結済
		else if(SVC_KEI_STAT_UKE.equals(svc_kei_stat) ||
				SVC_KEI_STAT_SHOSA.equals(svc_kei_stat) ||
				SVC_KEI_STAT_TEIK.equals(svc_kei_stat))
		{
			//解約不可理由：契約手続中
			fukaTaiHash.put(FUKA_RESON, FUKA_RESON_RTN_KEITK_CHU);
			fuka_flg = true;
		}
		//解約済 or キャンセル済
		else if(SVC_KEI_STAT_DSL.equals(svc_kei_stat) ||
				SVC_KEI_STAT_CNCL.equals(svc_kei_stat))
		{
			//解約不可理由：依頼取消
			fukaTaiHash.put(FUKA_RESON, FUKA_RESON_RTN_IRAI_TORI);
			fuka_flg = true;
		}
		
		//強制解約不可の場合
		if(fuka_flg)
		{
			fukaTaiHash.put(FUKA_SEIKY_KEI_NO, requestParam.get(SEIKY_KEI_NO));
			fukaTaiHash.put(FUKA_SVC_KEI_NO, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
			fukaTaiHash.put(FUKA_SVC_KEI_NAME, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD_NM));
			fukaTaiHash.put(FUKA_PRC_GRP_NM, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD_NM));
// 2012-08-03 [ANK-0342-00-00] add start
			fukaTaiHash.put(FUKA_SVC_KEI_CD, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_CD));
			fukaTaiHash.put(FUKA_SYSID, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID));
// 2012-08-03 [ANK-0342-00-00] add end
			//強制解約不可対象者リスト追加
			fukaKaiTaiLst.add(fukaTaiHash);
		}
		return(fuka_flg);
	}
	
	
	
	/**
	 * 課金先一覧照会（請求契約番号／サービス契約番号）サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0321B002SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0321B002への呼び出しパラメータ設定
		template = new CAANMsg(EKK0321B002CBSMsg.class.getName());
		mapper.mappingEKK0321B002InMsg(template, inHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0321B002, mapper.mappingEKK0321B002SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 課金先一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0321A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0321A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0321A010CBSMsg.class.getName());
		mapper.mappingEKK0321A010InMsg(template, inHash, resultHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0321A010, mapper.mappingEKK0321A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * マンション情報一覧照会（サービス契約番号）の結果を取得
	 * @param param
	 * @param userDataIndex
	 * @return
	 * @throws RequestParameterException
	 */
	private int callEKK0861B002SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// 上りマッピング
		template = new CAANMsg(EKK0861B002CBSMsg.class.getName());
		mapper.mappingEKK0861B002InMsg(template, inHash, resultHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0861B002, mapper.mappingEKK0861B002SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 * @throws RequestParameterException, SCException 例外時にスローされます  
	 */
	private int callEKK0081A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081A010CBSMsg.class.getName());
		mapper.mappingEKK0081A010InMsg(template, inHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0081A010, mapper.mappingEKK0081A010SCOutMsg(resultMsgs));
		}

		// ▼▼▼▼▼ 2013/09/11 OM-2013-0001096 UPD START ▼▼▼▼▼
		// 非課金実行部品実行
		runHiChrgJdgUtil(
				handle,
				param,
				inHash,
				resultHash,
				(HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010),
				null,
				null,
				null,
				DSL_SBT_FLG_SVC_KEI_DSL
		);
		// ▲▲▲▲▲ 2013/09/11 OM-2013-0001096 UPD E N D ▲▲▲▲▲

		return status;
	}
	
	/**
	 * サービス契約内訳一覧照会サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0161B004SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0161B004への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161B004CBSMsg.class.getName());
		mapper.mappingEKK0161B004InMsg(template, inHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0161B004, mapper.mappingEKK0161B004SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サービス契約内訳一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0161A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0161A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161A010CBSMsg.class.getName());
		mapper.mappingEKK0161A010InMsg(template, inHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0161A010, mapper.mappingEKK0161A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * オプションサービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0351A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0351A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351A010CBSMsg.class.getName());
		mapper.mappingEKK0351A010InMsg(template, inHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0351A010, mapper.mappingEKK0351A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サブオプションサービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0401A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0401A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401A010CBSMsg.class.getName());
		mapper.mappingEKK0401A010InMsg(template, inHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0401A010, mapper.mappingEKK0401A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 機器提供サービス契約一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0341A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341A010CBSMsg.class.getName());
		mapper.mappingEKK0341A010InMsg(template, inHash, resultHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0341A010, mapper.mappingEKK0341A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サービス契約解約SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK0081C180SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081C180への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081C180CBSMsg.class.getName());
		mapper.mappingEKK0081C180InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0081C180, mapper.mappingEKK0081C180SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サービス契約内訳解約SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK0161C180SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0161C180への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161C180CBSMsg.class.getName());
		mapper.mappingEKK0161C180InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0161C180, mapper.mappingEKK0161C180SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * オプションサービス契約キャンセルSIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK0351C220SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0351C220への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351C220CBSMsg.class.getName());
		mapper.mappingEKK0351C220InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0351C220, mapper.mappingEKK0351C220SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * オプションサービス契約解約SIFを呼び出し<br>
	 * <br>
	 * @param	param					リクエストパラメータ
	 * @param	handle					セッションハンドル
	 * @param	inHash					条件用Hash
	 * @param	resultHash				結果のハッシュ
	 * @param	jdgHiChrgMapSvcKei		非課金判定部品結果＜サービス＞
	 * @return							サービスインターフェースのリターンコード
	 * @throws	Throwable				例外時にスローされます
	 */
	private int callEKK0351C240SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> jdgHiChrgMapSvcKei
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0351C240への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351C240CBSMsg.class.getName());
		mapper.mappingEKK0351C240InMsg(template, inHash, resultHash, jdgHiChrgMapSvcKei, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0351C240, mapper.mappingEKK0351C240SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サブオプションサービス契約キャンセルSIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK0401C150SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0401C150への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401C150CBSMsg.class.getName());
		mapper.mappingEKK0401C150InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0401C150, mapper.mappingEKK0401C150SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サブオプションサービス契約解約SIFを呼び出し<br>
	 * <br>
	 * @param	param					リクエストパラメータ
	 * @param	handle					セッションハンドル
	 * @param	inHash					条件用Hash
	 * @param	resultHash				結果のハッシュ
	 * @param	jdgHiChrgMapSvcKei		非課金判定部品結果＜サービス＞
	 * @return							サービスインターフェースのリターンコード
	 * @throws	Throwable				例外時にスローされます
	 */
	private int callEKK0401C170SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> jdgHiChrgMapSvcKei
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0401C170への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401C170CBSMsg.class.getName());
		mapper.mappingEKK0401C170InMsg(template, inHash, resultHash, jdgHiChrgMapSvcKei, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0401C170, mapper.mappingEKK0401C170SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 機器提供サービス契約キャンセルSIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK0341C330SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341C330への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C330CBSMsg.class.getName());
		mapper.mappingEKK0341C330InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0341C330, mapper.mappingEKK0341C330SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 機器提供サービス契約解約SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK0341C340SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341C340への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C340CBSMsg.class.getName());
		mapper.mappingEKK0341C340InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0341C340, mapper.mappingEKK0341C340SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サービス契約解約確定SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK0081C260SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081C260への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081C260CBSMsg.class.getName());
		mapper.mappingEKK0081C260InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0081C260, mapper.mappingEKK0081C260SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サービス契約内訳解約確定SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK0161C190SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0161C190への呼び出しパラメータ設定
		template = new CAANMsg(EKK0161C190CBSMsg.class.getName());
		mapper.mappingEKK0161C190InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0161C190, mapper.mappingEKK0161C190SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * オプションサービス契約解約確定SIFを呼び出し<br>
	 * <br>
	 * @param	param					リクエストパラメータ
	 * @param	handle					セッションハンドル
	 * @param	inHash					条件用Hash
	 * @param	resultHash				結果のハッシュ
	 * @param	jdgHiChrgMapSvcKei		非課金判定部品結果＜サービス＞
	 * @param	jdgHiChrgMapOpSvcKei	非課金判定部品結果＜オプションサービス＞
	 * @return							サービスインターフェースのリターンコード
	 * @throws	Throwable				例外時にスローされます
	 */
	private int callEKK0351C250SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> jdgHiChrgMapSvcKei,
			HashMap<String, Object> jdgHiChrgMapOpSvcKei
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0351C250への呼び出しパラメータ設定
		template = new CAANMsg(EKK0351C250CBSMsg.class.getName());
		mapper.mappingEKK0351C250InMsg(template, inHash, resultHash, jdgHiChrgMapSvcKei, jdgHiChrgMapOpSvcKei, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0351C250, mapper.mappingEKK0351C250SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サブオプションサービス契約解約確定SIFを呼び出し<br>
	 * <br>
	 * @param	param						リクエストパラメータ
	 * @param	handle						セッションハンドル
	 * @param	inHash						条件用Hash
	 * @param	resultHash					結果のハッシュ
	 * @param	jdgHiChrgMapSvcKei			非課金判定部品結果＜サービス＞
	 * @param	jdgHiChrgMapSbopSvcKei		非課金判定部品結果＜サブオプション＞
	 * @return								サービスインターフェースのリターンコード
	 * @throws	Throwable					例外時にスローされます
	 */
	private int callEKK0401C180SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			HashMap<String, Object> jdgHiChrgMapSvcKei,
			HashMap<String, Object> jdgHiChrgMapSbopSvcKei
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0401C180への呼び出しパラメータ設定
		template = new CAANMsg(EKK0401C180CBSMsg.class.getName());
		mapper.mappingEKK0401C180InMsg(template, inHash, resultHash, jdgHiChrgMapSvcKei, jdgHiChrgMapSbopSvcKei, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0401C180, mapper.mappingEKK0401C180SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 機器提供サービス契約解約確定SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK0341C350SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0341C350への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341C350CBSMsg.class.getName());
		mapper.mappingEKK0341C350InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0341C350, mapper.mappingEKK0341C350SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * お客様一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callECK0011A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// ECK0011A010への呼び出しパラメータ設定
		template = new CAANMsg(ECK0011A010CBSMsg.class.getName());
		mapper.mappingECK0011A010InMsg(template, inHash, resultHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_ECK0011A010, mapper.mappingECK0011A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0191A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0191A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0191A010CBSMsg.class.getName());
		mapper.mappingEKK0191A010InMsg(template, inHash, resultHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0191A010, mapper.mappingEKK0191A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サービス契約内訳<eo光ネット>一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0171A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0171A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0171A010CBSMsg.class.getName());
		mapper.mappingEKK0171A010InMsg(template, inHash, resultHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0171A010, mapper.mappingEKK0171A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * オプションサービス契約＜ISP＞一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0361A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0361A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0361A010CBSMsg.class.getName());
		mapper.mappingEKK0361A010SCInMsg(template, inHash, resultHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0361A010, mapper.mappingEKK0361A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * サブオプションサービス契約<ISP>一意照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0411A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0411A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0411A010CBSMsg.class.getName());
		mapper.mappingEKK0411A010InMsg(template, inHash, resultHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0411A010, mapper.mappingEKK0411A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * オプトインメール受信設定一覧照会（SYSID）２サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callECK0141B005SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// ECK0141B005への呼び出しパラメータ設定
		template = new CAANMsg(ECK0141B005CBSMsg.class.getName());
		mapper.mappingECK0141B005InMsg(template, inHash, resultHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_ECK0141B005, mapper.mappingECK0141B005SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * オプトインメール受信設定無効SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @param upd_dtm 更新年月日時分秒
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callECK0141C030SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String upd_dtm
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// ECK0141C030への呼び出しパラメータ設定
		template = new CAANMsg(ECK0141C030CBSMsg.class.getName());
		mapper.mappingECK0141C030InMsg(template, inHash, upd_dtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_ECK0141C030, mapper.mappingECK0141C030SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * エイジング対象使用終了実行処理
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int updateAgingUseEnd(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash)
			throws Throwable
	{
		int status = 0;
		ArrayList<HashMap<String, Object>> eZM0111B030HashList = null;

		//エイジング一覧照会(エイジング対象値)
		status = callEZM0111B030SC(param, handle, inHash, resultHash);
		if(status != 0)
		{
			return status;
		}
		
		eZM0111B030HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EZM0111B030);
		
		// IT1-2013-0001539 強制解約処理でエイジングに該当データが存在しなくてもエラーとならない 2013/08/05 START
//		if(eZM0111B030HashList.size() > 0)
//		{
//			HashMap<String, Object> eZM0111B030Hash = eZM0111B030HashList.get(0);
//			String aging_stat = (String)eZM0111B030Hash.get(EZM0111B030CBSMsg1List.AGING_STAT);
//			String upd_dtm = (String)eZM0111B030Hash.get(EZM0111B030CBSMsg1List.UPD_DTM);
//			
//			if(SVC_KEI_STAT_TKC.equals(aging_stat))
//			{
//				inHash.put(AGING_TG_UPD_DTM, upd_dtm);
//				//エイジング対象使用終了
//				status = callEZM0111C010SC(param, handle, inHash, resultHash);
//				if(status != 0)
//				{
//					return status;
//				}
//			}
//		}
		// エイジング更新処理をスキップするかどうか
		boolean isSkip = false;
		if(eZM0111B030HashList.size() > 0)
		{
			HashMap<String, Object> eZM0111B030Hash = eZM0111B030HashList.get(0);
			String aging_stat = (String)eZM0111B030Hash.get(EZM0111B030CBSMsg1List.AGING_STAT);
			String upd_dtm = (String)eZM0111B030Hash.get(EZM0111B030CBSMsg1List.UPD_DTM);
			
			// エイジングステータスが「使用中」の場合
			if(SVC_KEI_STAT_TKC.equals(aging_stat))
			{
				inHash.put(AGING_TG_UPD_DTM, upd_dtm);
				isSkip = false;
			}
			// 上記以外の場合
			else
			{
				// エラーにせず、更新処理をスキップ
				isSkip = true;
			}
		}
		// エイジングに存在しない場合
		else
		{
			// エイジング対象使用終了S-IFの関連制約エラーとして処理を終了させる
			// 必須チェックエラーとならないよう更新年月日時分秒にはダミーの値を設定する
			inHash.put(AGING_TG_UPD_DTM, "20991231235959999");
			// エラーログ出力
			JSYejbLog.println(JSYejbLog.ERROR, getClass(), inHash, MessageID.ERR_ERROR_MSG, new String[]{"使用終了エイジング"}, null);
			isSkip = false;
			}

		if (!isSkip)
		{
			//エイジング対象使用終了
			status = callEZM0111C010SC(param, handle, inHash, resultHash);
		}
		// IT1-2013-0001539 強制解約処理でエイジングに該当データが存在しなくてもエラーとならない 2013/08/05 START
		
		return status;
	}
	
	/**
	 * エイジング一覧照会(エイジング対象値)サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEZM0111B030SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EZM0111B030への呼び出しパラメータ設定
		template = new CAANMsg(EZM0111B030CBSMsg.class.getName());
		mapper.mappingEZM0111B030InMsg(template, inHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EZM0111B030, mapper.mappingEZM0111B030SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * エイジング対象使用終了SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEZM0111C010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EZM0111C010への呼び出しパラメータ設定
		template = new CAANMsg(EZM0111C010CBSMsg.class.getName());
		mapper.mappingEZM0111C010SCInMsg(template, inHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EZM0111C010, mapper.mappingEZM0111C010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 電話用VLANオーダ受付SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @param kojiankNo 工事案件番号
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callESC0021D010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String kojiankNo
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// ESC0021D010への呼び出しパラメータ設定
		template = new CAANMsg(ESC0021D010CBSMsg.class.getName());
		mapper.mappingESC0021D010SCInMsg(template, inHash, kojiankNo);
		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)
		{
			resultHash.put(TEMPLATE_ID_ESC0021D010, mapper.mappingESC0021D010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 進捗登録SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK1091D010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK1091D010への呼び出しパラメータ設定
		template = new CAANMsg(EKK1091D010CBSMsg.class.getName());
		mapper.mappingEKK1091D010SCInMsg(template, inHash);
		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);

		//ANK-0406-00-0007_20120718_START
		// 結果を結果ハッシュに格納
		resultHash.put(TEMPLATE_ID_EKK1091D010_1, resultMsgs);
		//ANK-0406-00-0007_20120718_END

		//ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			resultHash.put(TEMPLATE_ID_EKK1091D010, mapper.mappingEKK1091D010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 物流制御CC実行処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @return リターンコード
	 * @throws Throwable
	 */
	private int executeButuryuCtrlCC(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		HashMap<String, Object> inputMap    = new HashMap<String, Object>();		// インプットデータマップ
		HashMap<String, Object> trgt_data   = new HashMap<String, Object>();		// 対象データマップ
		HashMap<String, Object> buturyu_map = new HashMap<String, Object>();		// 物流マップ
		ArrayList trgt_data_list = new ArrayList();									// 対象データリスト

		// 異動区分：強制解約
		buturyu_map.put("ido_div", IDO_DIV_KYOSEI);
		// SYSID
		buturyu_map.put("sysid", (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID));
		// サービス契約番号
		buturyu_map.put("svc_kei_no", (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		// 料金グループコード
		buturyu_map.put("prc_grp_cd", (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD));

		// ST1-2013-0000111 ADD_START物流部品に申込明細番号を設定

		// 申込明細番号
		buturyu_map.put("mskm_dtl_no", (String)requestParam.get(MSKM_DTL_NO));

		// ST1-2013-0000111 ADD_END

		// 工事案件番号
		buturyu_map.put("kojiak_no", "");

		// 物流マップ設定
		trgt_data_list.add(buturyu_map);
		trgt_data.put("trgt_data_list", trgt_data_list);
		inputMap.put("trgt_data", trgt_data);

		String workButuryuCtrlDataKey = "ButuryuCtrlCC";
		param.setData(workButuryuCtrlDataKey, trgt_data);

		JKKButuryuCtrlCC buturyuCtrlCC = new JKKButuryuCtrlCC();

		// 物流制御CC実行
		buturyuCtrlCC.buturyuCtrlTran(handle, param, workButuryuCtrlDataKey);

		param.removeData(workButuryuCtrlDataKey);

		return 0;
	}
	
	
	/**
	 * SOD CC実行処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @return リターンコード
	 * @throws Throwable
	 */
	private int executeHakkoSodCC(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		HashMap<String, Object> trgt_data = new HashMap<String, Object>();		// 対象データマップ
		HashMap<String, Object> sod_Map   = new HashMap<String, Object>();		// SODマップ
		ArrayList trgt_data_list = new ArrayList();								// 対象データリスト

		HashMap<String, Object> sod_kihon_info_Map    = null;	// SOD基本情報マップ
		HashMap<String, Object> svc_kei_info_Map      = null;	// サービス契約情報マップ
		HashMap<String, Object> svc_kei_ucwk_info_Map = null;	// サービス契約内訳情報

		if(this.sodSvcKeiUcwkList == null || this.sodSvcKeiUcwkList.size() == 0)
		{
			return 0;
		}

		for(int i=0; i < this.sodSvcKeiUcwkList.size(); i++)
		{
			HashMap<String, Object> sodUcwkMap = null;
			sodUcwkMap = this.sodSvcKeiUcwkList.get(i);
			sod_Map               = new HashMap<String, Object>();		// SODマップ
			sod_kihon_info_Map    = new HashMap<String, Object>();		// SOD基本情報マップ
			svc_kei_info_Map      = new HashMap<String, Object>();		// サービス契約情報マップ
			svc_kei_ucwk_info_Map = new HashMap<String, Object>();		// サービス契約内訳情報

			// SOD基本情報マップ設定
			sod_kihon_info_Map.put("sysid", (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID));	//SYSID
			sod_kihon_info_Map.put("ido_div", IDO_DIV_KYOSEI);	//異動区分：強制解約
			// サービス契約情報マップ設定
			svc_kei_info_Map.put("svc_kei_no", (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));	//サービス契約番号
			// サービス契約内訳情報マップ設定
			svc_kei_ucwk_info_Map.put("svc_kei_ucwk_no", sodUcwkMap.get("svc_kei_ucwk_no"));		// サービス契約内訳番号
			svc_kei_ucwk_info_Map.put("chaf_svc_kei_ucwk_gene_add_dtm", sodUcwkMap.get("upd_dtm"));	// 変更後サービス契約内訳世代登録年月日時分秒
//↓↓↓2013-08-05追加　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↓↓↓
			//コース変更中の新認証ID用内訳を識別するフラグ
			svc_kei_ucwk_info_Map.put(JKKHakkoSODConstCC.INFO_NEW_CRS_FLAG, 
					sodUcwkMap.get(JKKHakkoSODConstCC.INFO_NEW_CRS_FLAG));
//↑↑↑2013-08-05追加　ＳＯＤ品向障害No.36（コース変更中の強制解約でメール解約などがダブって出る）↑↑↑
// OM-2015-0000711 ADD START
			// オーダ発行対象となる内訳のカウントを設定
			if (sodUcwkMap.containsKey(JKKHakkoSODConstCC.TARGET_SVC_KEI_UCWK_CNT)) 
			{
				svc_kei_ucwk_info_Map.put(JKKHakkoSODConstCC.TARGET_SVC_KEI_UCWK_CNT, 
						sodUcwkMap.get(JKKHakkoSODConstCC.TARGET_SVC_KEI_UCWK_CNT));
			}
			// 住所変更に伴い払い出された内訳かどうかフラグを設定
			svc_kei_ucwk_info_Map.put(JKKHakkoSODConstCC.INFO_AD_CHG_ADD_FLAG, 
					sodUcwkMap.get(JKKHakkoSODConstCC.INFO_AD_CHG_ADD_FLAG));
// OM-2015-0000711 ADD END
			
			sod_Map.put("sod_kihon_info", sod_kihon_info_Map);
			sod_Map.put("svc_kei_info", svc_kei_info_Map);
			sod_Map.put("svc_kei_ucwk_info", svc_kei_ucwk_info_Map);

			// SODマップ設定
			trgt_data_list.add(sod_Map);
		}

		trgt_data.put("trgt_data_list", trgt_data_list);
		trgt_data.put("func_code", "1");

		String workHakkoSODDataKey = "HakkoSODCC";
		param.setData(workHakkoSODDataKey, trgt_data);

		JKKHakkoSODCC hakkoSODCC = new JKKHakkoSODCC();

		// SODCC実行
		hakkoSODCC.hakkoSOD(handle, param, workHakkoSODDataKey);

		param.removeData(workHakkoSODDataKey);

		return 0;
	}
	
	
	
	/**
	 * 条件部の共通する項目の設定
	 * @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);
		
	}
	
	/**
	 * サービス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;
	}
	
	/**
	 * 強制解約実行チェック処理用サービスインターフェースを返却する<br>
	 *   Input項目値にサービスIFの単項目/単項目関連チェック対象がないため処理なし。<br>
	 *   
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	public HashMap getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		HashMap<String, Object> result = new HashMap();
		HashMap<String, Object> kksv017201 = new HashMap();
		
		// ----- 抽出対象請求契約番号のチェック -----
		//EKK0321B002への呼び出しパラメータ設定
		CAANMsg template = new CAANMsg(EKK0321B002CBSMsg.class.getName());
		
		//強制解約対象抽出マップ取得
		kksv017201 = (HashMap<String, Object>)param.getData(KKSV017201CC);
		
		//強制解約対象抽出と強制解約は同じ請求契約番号を処理するため強制解約対象抽出のときのみチェック
		if(kksv017201 != null)
		{
			//サービスIF共通の情報を設定
			result = editInMsgCmn(param);
			
			//抽出対象請求契約番号設定
			result.put(SEIKY_KEI_NO, kksv017201.get(CHSHT_TRGT_SEIKY_KEI_NO));
			
			//課金先一覧照会（請求契約番号／サービス契約番号）サービスIFマッピング
			mapper.mappingEKK0321B002InMsg(template, result);
			editBasicCmn(param, template);
			
			//リクエスト用クラスの設定
			result.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});
		}
		
		return result;
	}
	
	/**
	 * サービスインターフェイス処理結果(エラー情報)の取得<br>
	 * 業務データ取得・書込用I/Fをそのまま返却します。<br>
	 * <br>
	 * @param param デルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param subCAANMsgs CAANMsgクラス配列
	 * @param returnCode リターンコード
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 */
	public IRequestParameterReadWrite editErrorInfo(
			IRequestParameterReadWrite param,
			CAANMsg[] subCAANMsgs,
			Integer returnCode
	) throws Throwable
	{
		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg template = subCAANMsgs[0];
		HashMap kksv017201 = null;

		/* ユーザデータ情報 */
		kksv017201 = (HashMap) param.getData(KKSV017201CC);

		// ----- 抽出対象請求契約番号のエラー情報設定 -----
		if(kksv017201 != null)
		{
			// リクエストパラメータ.請求契約番号 → ＫＥＹ＿請求契約番号 のエラー情報返却
			if (!template.isNull(EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO_ERR))
			{
				if (!kksv017201.containsKey("seiky_kei_no_err"))
				{
					kksv017201.put("seiky_kei_no_err", template.getString(EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO_ERR));
				}
			}
		}
		
		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(kksv017201, errList));
		
		//処理なし
		return param;
	}


	//▼▼▼▼▼【ANK-2056-00-00】光電話セレクトオプションパックADD START▼▼▼▼▼
	/**
	 * 電話セレクトオプションパック操作部品実行の実行
	 * 
	 * @param param
	 * @param handle
	 * @param requestParam
	 * @param resultHash
	 * @param svc_kei_ucwk_no 
	 * @throws Throwable 
	 * @since 2011-12-12
	 */
	 private int executeTelSelectOpPackOperateCC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String svc_kei_ucwk_no,
			HashMap<String, Object> eKK0081A010Hash
	) throws Throwable
	{
		 int ret = 0;
		//処理区分
		String trnDiv = "";
		//パック区分
		String packDiv ="";
		//電話セレクトオプションパック操作部品に渡すサービス契約内訳番号
		String SvcKeiUcwkNo = svc_kei_ucwk_no;
		//電話セレクトオプションパック操作部品実行処理
		String fixedText = "TelSelectOpPackCC";
		JKKTelSelectOpPackOperateCC telSelectOpPackCC = new JKKTelSelectOpPackOperateCC();
		//処理区分を(照会)にする
		trnDiv = "00" ;
		mapper.editJKKTelSelectOpPackOperate(
				param,
				eKK0081A010Hash,
				trnDiv,
				packDiv,
				SvcKeiUcwkNo,
				this.svcKeiUpdDtm,
				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" ;
				HashMap<String, Object> subMap = new HashMap<String, Object>();
				subMap.put("sysid", eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SYSID));
				subMap.put("svc_kei_no", eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
				subMap.put("mskm_dtl_no", requestParam.get(JKKKyoseiDslRunCC.MSKM_DTL_NO));
				// IT1-2014-0000131 電話セレクトオプションパックが存在する状態でサービス解約時、正常に解約できない 2014/05/14 藤田 MOD START
//				// サービス終了年月日
//				String svcEndymd     = (String)requestParam.get(JKKKyoseiDslRunCC.REQYMD);
//				subMap.put("kisan_ymd", svcEndymd);
				// 解約起算日
				String dslKisanymd     = (String)requestParam.get(JKKKyoseiDslRunCC.SVC_DSL_KISAN_YMD);
				subMap.put("kisan_ymd", dslKisanymd);
				// IT1-2014-0000131 電話セレクトオプションパックが存在する状態でサービス解約時、正常に解約できない 2014/05/14 藤田 MOD END
				mapper.editJKKTelSelectOpPackOperate(
						param,
						subMap,
						trnDiv,
						packDiv,
						SvcKeiUcwkNo,
						this.svcKeiUpdDtm,
						fixedText
				);
				//電話セレクトオプションパック操作部品CC(解約)実行
				telSelectOpPackCC.execute(handle, param, fixedText);
				//返却値の更新年月日時分秒を入れる
				svcKeiUpdDtm = (String) outMap.get("upd_dtm");
			}
		}
				
		return ret; 
	}
	//▲▲▲▲▲【ANK-2056-00-00】光電話セレクトオプションパック ADD E N D▲▲▲▲▲
	/**
	 * 割引サービス契約自動適用CCの実行
	 * 
	 * @param param
	 * @param handle
	 * @param requestParam
	 * @param resultHash
	 * @param workField 
	 * @throws Throwable 
	 * @since 2011-12-12
	 */
	private int executeWribAutoAplyCC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// 申込明細一意照会を実行（申込番号を、サービス契約レコードの申込明細番号より検索）
		int ret = callEKK0021A010SC(param, handle, requestParam, resultHash);
		if (0 == ret)
		{
			// ANK-2801-01-00 DEL START
			// IT1-2013-0001459 全戸一括／居住者一括マンションの子契約の強制解約時に電話・テレビが解約されない 2013/07/24 START
			// 処理対象がネットで、全戸一括／居住者一括の場合は割引サービス自動適用CCを呼ばない
			// ※申込明細一意照会結果は後続処理で使用しているため、必ず実行すること
			//if (chkMansPayHoshiki(param, handle, resultHash))
			//{
			//	return ret;
			//}
			// IT1-2013-0001459 全戸一括／居住者一括マンションの子契約の強制解約時に電話・テレビが解約されない 2013/07/24 END
			// ANK-2801-01-00 DEL END
			
			// 割引サービス自動適用CC実行処理
			String workWrisvcAutoAplyDataKey = "WrisvcAutoAplyCC";
			HashMap<String, Object> wrisvcAutoAplyMap = new HashMap<String, Object>();
			param.setData(workWrisvcAutoAplyDataKey, wrisvcAutoAplyMap);

			JKKWrisvcAutoAplyCC wrisvcAutoAplyCC = new JKKWrisvcAutoAplyCC();
			mapper.editMapWrisvcAutoAply(
					wrisvcAutoAplyMap,
					IDO_DIV_KYOSEI,
					resultHash,
					requestParam,
					this.kidoCd
			);
			wrisvcAutoAplyCC.execute(handle, param, workWrisvcAutoAplyDataKey);
	
			param.removeData(workWrisvcAutoAplyDataKey);
		}

		return ret;
	}



	/**
	 * EKK0021A010 申込明細一意照会
	 * 
	 * @param param
	 * @param handle
	 * @param inHash
	 * @param resultHash
	 * @return
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	private int callEKK0021A010SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0021A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0021A010CBSMsg.class.getName());
		mapper.mappingEKK0021A010InMsg(template, inHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0021A010, mapper.mappingEKK0021A010SCOutMsg(resultMsgs));
		}

		return status;
	}


	/**
	 * サービス契約＜eo光電話＞一意照会
	 * 
	 * @param param
	 * @param handle
	 * @param inHash
	 * @param resultHash
	 * @return
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	private int callEKK0111A010SC(
			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;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0111A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0111A010CBSMsg.class.getName());
		mapper.mappingEKK0111A010InMsg(template, inHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SIFの呼び出し
		sIFResult = (new ServiceComponentRequestInvoker()).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)
		{
			resultHash.put(TEMPLATE_ID_EKK0111A010, mapper.mappingEKK0111A010SCOutMsg(resultMsgs));
		}

		return status;
	}


	/**
	 * サービス契約内訳＜eoADSL＞一意照会
	 * 
	 * @param param
	 * @param handle
	 * @param inHash
	 * @param resultHash
	 * @return
	 * @throws RequestParameterException
	 * @throws SCException
	 */
	private int callEKK0221A010SC(
			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;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0221A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0221A010CBSMsg.class.getName());
		mapper.mappingEKK0221A010InMsg(template, inHash, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SIFの呼び出し
		sIFResult = (new ServiceComponentRequestInvoker()).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)
		{
			resultHash.put(TEMPLATE_ID_EKK0221A010, mapper.mappingEKK0221A010SCOutMsg(resultMsgs));
		}

		return status;
	}


	/**
	 * オプションサービス契約＜電話＞一意照会SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 * @since 2012-02-24 IT障害1023対応
	 */
	private int callEKK0371A010SC(
			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;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0371A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0371A010CBSMsg.class.getName());
		mapper.mappingEKK0371A010SCInMsg(template, inHash, resultHash);
		editBasicCmn(param, template);

		// リクエスト用クラスの設定
		sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template});

		// SIFの呼び出し
		sIFResult = (new ServiceComponentRequestInvoker()).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)
		{
			resultHash.put(TEMPLATE_ID_EKK0371A010, mapper.mappingEKK0371A010SCOutMsg(resultMsgs));
		}

		return status;
	}


	//↓↓↓2012-03-09 IT2-2012-0000328↓↓↓
	/**
	 * EZM0321A010_業務パラメータ管理一意照会サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param workParamId 業務パラメータID
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEZM0321A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String workParamId,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EZM0321A010への呼び出しパラメータ設定
		template = new CAANMsg(EZM0321A010CBSMsg.class.getName());
		mapper.mappingEZM0321A010InMsg(template, workParamId);
		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)
		{
			resultHash.put(TEMPLATE_ID_EZM0321A010, mapper.mappingEZM0321A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	//↑↑↑2012-03-09 IT2-2012-0000328↑↑↑
	
	/**
	 * 前日取得処理
	 * @param ymd 日付(yyyyMMdd形式)
	 * @return インプットの前日(yyyyMMdd形式)
	 */
	private String getDayOfBefore(String ymd)
	{
		// 年月日の抽出
		int year  = Integer.parseInt(ymd.substring(0, 4));
		int month = Integer.parseInt(ymd.substring(4, 6));
		int day   = Integer.parseInt(ymd.substring(6, 8));

		Calendar cal = Calendar.getInstance();
		cal.set(year, month - 1, day);

		// 前日を算出
		cal.add(Calendar.DATE, -1);

		return String.format("%tY%tm%td", cal, cal, cal);
	}
// 2012-08-03 [ANK-0342-00-00] add start
	/**
	 * EKK0081B009_同一場所サービス契約一覧照会サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0081B009SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK0081B009への呼び出しパラメータ設定
		template = new CAANMsg(EKK0081B009CBSMsg.class.getName());
		mapper.mappingEKK0081B009InMsg(template, inHash);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK0081B009, mapper.mappingEKK0081B009SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 機器提供サービス契約 機器情報取得処理
	 * @param handle
	 * @param param
	 * @param requestParam
	 * @param resultHash
	 * @return
	 * @throws Throwable
	 */
	private int kktkSvcKei_getKIKIInfo(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		int statusCode = 0;

		// 機器提供サービス契約一覧照会
		statusCode = callEKK0341B012(param, handle, requestParam, resultHash);
		if(statusCode != 0)
		{
			return statusCode;
		}
		
		return 0;
	}

	/**
	 * EKK0341B012_機器提供サービス契約一覧照会(接続機器情報)SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0341B012(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		int status = 0;

		// EKK0341B012への呼び出しパラメータ設定
		template = new CAANMsg(EKK0341B012CBSMsg.class.getName());
		mapper.mappingEKK0341B012InMsg(template, inHash, resultHash);

		resultMsgs = callSCCmn(param, handle, template);

		// 結果ありの場合
		if(resultMsgs != null)
		{
			resultHash.put(TEMPLATE_ID_EKK0341B012, mapper.mappingEKK0341B012SCOutMsg(resultMsgs));
		}

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * EKK0241B001_サービス契約回線内訳一覧照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0241B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		int status = 0;

		// EKK0241B001への呼び出しパラメータ設定
		template = new CAANMsg(EKK0241B001CBSMsg.class.getName());
		mapper.mappingEKK0241B001InMsg(template, inHash, resultHash);

		resultMsgs = callSCCmn(param, handle, template);

		// 結果ありの場合
		if(resultMsgs != null)
		{
			resultHash.put(TEMPLATE_ID_EKK0241B001, mapper.mappingEKK0241B001SCOutMsg(resultMsgs));
		}

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * EKK0241B001_サービス契約回線内訳一覧照会SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @param サービス契約回線内訳番号
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKU0081B020SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String svcKeiKaisenUcwkNo
	) throws Throwable
	{
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		int status = 0;

		// EKU0081B020への呼び出しパラメータ設定
		template = new CAANMsg(EKU0081B020CBSMsg.class.getName());
		mapper.mappingEKU0081B020InMsg(template, inHash, resultHash, svcKeiKaisenUcwkNo);

		resultMsgs = callSCCmn(param, handle, template);

		// 結果ありの場合
		if(resultMsgs != null)
		{
			resultHash.put(TEMPLATE_ID_EKU0081B020, mapper.mappingEKU0081B020SCOutMsg(resultMsgs));
		}

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
// 2012-08-03 [ANK-0342-00-00] add end

// ST2-2012-0001598 2012/08/29 start
	/**
	 * サービス契約回線内訳一覧照会（サービス契約番号）サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK0251B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		int status = 0;

		// EKK0251B001への呼び出しパラメータ設定
		template = new CAANMsg(EKK0251B001CBSMsg.class.getName());
		mapper.mappingEKK0251B001InMsg(template, inHash);

		resultMsgs = callSCCmn(param, handle, template);

		// 結果ありの場合
		if(resultMsgs != null)
		{
			resultHash.put(TEMPLATE_ID_EKK0251B001, mapper.mappingEKK0251B001SCOutMsg(resultMsgs));
		}

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
// ST2-2012-0001598 2012/08/29 end

	/**
	 * <pre>
	 * サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 * 
	 * </pre>
	 * @param msgList CAANMsgクラス
	 * @param param 業務データ取得・書込用I/F
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable
	 * @since 2012-08-15追加　IT2-2012-0000605対応デグレ確認のついで
	 */
	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));
	}
	
	//ANK-0406-00-0007_ADD_20120718_START
	/**
	 * スマートバリュー異動情報登録実行処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @return リターンコード
	 * @throws Throwable
	 */
	private int executeSmtvlIdoInfAddCC(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		CAANMsg[] msglist = (CAANMsg[]) resultHash.get(TEMPLATE_ID_EKK1091D010_1);
		CAANMsg msg = msglist[0];
		String workprgdtm = (String)msg.getMsgData().get(EKK1091D010CBSMsg.PRG_DTM);

		// スマートバリュー異動情報登録マップ
		HashMap<String, Object> smtvlIdoInfAdd_map = new HashMap<String, Object>();

		// スマートバリュー異動情報登録処理で必要となるデータセットを作成
		// サービス契約番号
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.SVC_KEI_NO, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		// 異動区分
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.IDO_DIV, IDO_DIV_KYOSEI);
		// 進捗ステータス
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.PRG_STAT, PRG_STAT_KYOKAI_FIN);
		// 進捗年月日時分秒
		smtvlIdoInfAdd_map.put(JKKSmtvlIdoInfAddConstCC.PRG_DTM, workprgdtm);

		String workSmtvlIdoInfAddDataKey = "SmtvlIdoInfAddCC";

		// スマートバリュー異動情報登録処理を呼出
		JKKBpCommon.addSmtvlIdoInf(handle, param, smtvlIdoInfAdd_map, workSmtvlIdoInfAddDataKey);

		return 0;
	}
	//ANK-0406-00-0007_ADD_20120718_END
	//ANK-0035-00-0007_ADD_20120718_SATRT
	/**
	 * フェムトセル異動情報登録実行処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @return リターンコード
	 * @throws Throwable
	 */
	private int executeFmtcelIdoInfAddCC(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		CAANMsg[] msglist = (CAANMsg[]) resultHash.get(TEMPLATE_ID_EKK1091D010_1);
		CAANMsg msg = msglist[0];
		String workprgdtm = (String)msg.getMsgData().get(EKK1091D010CBSMsg.PRG_DTM);

		// フェムトセル異動情報登録マップ
		HashMap<String, Object> fmtcelIdoInfAdd_map = new HashMap<String, Object>();

		// フェムトセル異動情報登録処理で必要となるデータセットを作成
		// サービス契約番号
		fmtcelIdoInfAdd_map.put(JKKFmtcelIdoInfAddConstCC.SVC_KEI_NO, eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		// 異動区分
		fmtcelIdoInfAdd_map.put(JKKFmtcelIdoInfAddConstCC.IDO_DIV, IDO_DIV_KYOSEI);
		// フェムトセル異動詳細コード
		fmtcelIdoInfAdd_map.put(JKKFmtcelIdoInfAddConstCC.FMTCEL_IDO_DTL_CD, FMTCEL_IDO_DTL_CD_00);
		// 進捗年月日時分秒
		fmtcelIdoInfAdd_map.put(JKKFmtcelIdoInfAddConstCC.PRG_DTM, workprgdtm);

		String workFmtcelIdoInfAddDataKey = "FmtcelIdoInfAddCC";

		// フェムトセル異動情報登録処理を呼出
		JKKBpCommon.addFmtcelIdoInf(handle, param, fmtcelIdoInfAdd_map, workFmtcelIdoInfAddDataKey);

		return 0;
	}
	//ANK-0035-00-0007_ADD_20120718_END

	//ANK-1988-00-00 マンション全戸一括オプション停止（ファミパ割対応） 2014/04/07 藤田 ADD START
	/**
	 * ファミリーパック割引のみを解約する処理呼び出し
	 * ※マンション全戸一括／居住者一括のネット契約のみが対象となることを想定
	 * <br>
	 * @param handle
	 * @param param
	 * @param requestParam
	 * @param resultHash
	 * @return 各サービスのリターンコード
	 * @throws Throwable
	 */
	private int executeFamipaWribOperateCC(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		JKKFamipaWribOperateCC cc = new JKKFamipaWribOperateCC();
		String fixedText = "FamipaWribOperateCC";
		mapper.editMapFamipaWribOperate(
				  param
				, fixedText
				, (String)requestParam.get(SVC_KEI_NO)
				, (String)requestParam.get(SVC_DSL_KISAN_YMD)
				, (String)requestParam.get(JKKKyoseiDslRunCC.MSKM_DTL_NO)
			);
		cc.execute(handle, param, fixedText);

		param.removeData(fixedText);
		return 0;
	}
	//ANK-1988-00-00 マンション全戸一括オプション停止（ファミパ割対応） 2014/04/07 藤田 ADD END
	
	/**
	 * 請求オプションサービス契約キャンセル・解約処理呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @return 各サービスのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */	
	 private int seiOpSvcKei_KyoseiDsl(
				SessionHandle handle, 
				IRequestParameterReadWrite param, 
				HashMap<String, Object> requestParam,
				HashMap<String, Object> resultHash
	) throws Throwable
	{
		int statusCode = 0;

		// 請求オプションサービス契約一意照会
		statusCode = callSEIKYUSC(param, handle, requestParam, resultHash, TEMPLATE_ID_EKK0441A010);
		if(statusCode != 0)
		{
			return statusCode;
		}
		HashMap<String, Object> eKK0441A010Hash = null;
		eKK0441A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0441A010);
		//ANK-2248-00-00 ADD START
		//請求書発行手数料以外のオプションは無視
		if (!SEIOPSVC_CD_SEIKYSH_HAKKO.equals((String)eKK0441A010Hash.get(EKK0441A010CBSMsg1List.SEIOPSVC_CD)))
		{
			return statusCode;
		}
		//ANK-2248-00-00 ADD END
		// 請求オプションサービス契約ステータス判定
		String tmpSvcKeiStat = (String)eKK0441A010Hash.get(EKK0441A010CBSMsg1List.SEIOPSVC_KEI_STAT);

		if(
				(tmpSvcKeiStat.equals(SVC_KEI_STAT_UKE))
				|| (tmpSvcKeiStat.equals(SVC_KEI_STAT_SHOSA))
		)
		{
			// 請求オプションサービス契約キャンセル呼び出し
			callSEIKYUSC(param, handle, requestParam, resultHash, TEMPLATE_ID_EKK0441C210);
			if(statusCode != 0)
			{
				return statusCode;
			}
		}
		else if(
				(tmpSvcKeiStat.equals(SVC_KEI_STAT_TEIK))
				|| (tmpSvcKeiStat.equals(SVC_KEI_STAT_TKC))
				|| (tmpSvcKeiStat.equals(SVC_KEI_STAT_KYUS))
				|| (tmpSvcKeiStat.equals(SVC_KEI_STAT_STP))
		)
		{
			// 請求オプションサービス契約解約呼び出し
			callSEIKYUSC(param, handle, requestParam, resultHash, TEMPLATE_ID_EKK0441C230);
			if(statusCode != 0)
			{
				return statusCode;
			}

			// 請求オプションサービス契約解約確定呼び出し
			callSEIKYUSC(param, handle, requestParam, resultHash, TEMPLATE_ID_EKK0441C240);
			if(statusCode != 0)
			{
				return statusCode;
			}
		}
		// ステータスがキャンセル済、解約済は何もしない。

		return statusCode;
	}

	 /**
	 * 請求契約オプションサービス処理用SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @param sifID サービスインターフェース
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	private int callSEIKYUSC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash, 
			String sifID
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		if(sifID.equals(TEMPLATE_ID_EKK0441A010))
		{
			// 請求オプションサービス契約一意照会SIFを呼び出し
			template = new CAANMsg(EKK0441A010CBSMsg.class.getName());
			mapper.mappingEKK0441A010InMsg(template, inHash);
		}
		else if(sifID.equals(TEMPLATE_ID_EKK0441C210))
		{
			// 請求オプションサービス契約キャンセルSIFを呼び出し
			template = new CAANMsg(EKK0441C210CBSMsg.class.getName());
			mapper.mappingEKK0441C210InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		}
		else if(sifID.equals(TEMPLATE_ID_EKK0441C230))
		{
			// 請求オプションサービス契約解約SIFを呼び出し
			template = new CAANMsg(EKK0441C230CBSMsg.class.getName());
			mapper.mappingEKK0441C230InMsg(template, inHash, resultHash);
		}
		else if(sifID.equals(TEMPLATE_ID_EKK0441C240))
		{
			// 請求オプションサービス契約解約確定SIFを呼び出し
			template = new CAANMsg(EKK0441C240CBSMsg.class.getName());
			mapper.mappingEKK0441C240InMsg(template, inHash, resultHash);
		}
		else if(sifID.equals(TEMPLATE_ID_EKK0081B526))
		{
			// インターネットサービス一覧照会（請求契約番号）SIFを呼び出し
			template = new CAANMsg(EKK0081B526CBSMsg.class.getName());
			mapper.mappingEKK0081B526InMsg(template, inHash, resultHash);
		}
		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)
		{
			if(sifID.equals(TEMPLATE_ID_EKK0441A010))
			{
				resultHash.put(TEMPLATE_ID_EKK0441A010, mapper.mappingEKK0441A010SCOutMsg(resultMsgs));
			}
			else if(sifID.equals(TEMPLATE_ID_EKK0441C210))
			{
				resultHash.put(TEMPLATE_ID_EKK0441C210, mapper.mappingEKK0441CSCOutMsg(resultMsgs));
			}
			else if(sifID.equals(TEMPLATE_ID_EKK0441C230))
			{
				resultHash.put(TEMPLATE_ID_EKK0441C230, mapper.mappingEKK0441CSCOutMsg(resultMsgs));
			}
			else if(sifID.equals(TEMPLATE_ID_EKK0441C240))
			{
				resultHash.put(TEMPLATE_ID_EKK0441C240, mapper.mappingEKK0441CSCOutMsg(resultMsgs));
			}
			else if(sifID.equals(TEMPLATE_ID_EKK0081B526))
			{
				resultHash.put(TEMPLATE_ID_EKK0081B526, mapper.mappingEKK0081B526SCOutMsg(resultMsgs));
			}
		}

		return status;
	}
	// 2012/09/03 TAI-2012-0000067 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 svcKeiNo
	) throws Throwable
	{
		// マップ生成
		HashMap<String, Object> taikaiCCMap = new HashMap<String, Object>();

		// マップ編集
		taikaiCCMap.put("sysid", sysid);
		// IT1-2013-0000704 未移行会員の強制解約後にマスター会員がオープン会員になっていない 2013/04/01 START
		taikaiCCMap.put("svc_kei_no", svcKeiNo);
		// IT1-2013-0000704 未移行会員の強制解約後にマスター会員がオープン会員になっていない 2013/04/01 END

		// ▼▼▼▼▼ 2012/10/20 ADD IT1-2012-0001523 START ▼▼▼▼▼
		// 機能コード
		taikaiCCMap.put(JCMConstants.FUNC_CODE_KEY, JPCModelConstant.FUNC_CD_1);
		// ▲▲▲▲▲ 2012/10/20 ADD IT1-2012-0001523 E N D ▲▲▲▲▲

		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/11 ANK-0546-00-00 ADD START 割賦契約キャンセル処理を追加
	/**
	 * 請求オプションサービス契約キャンセル・解約処理呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param trgt_data アプリ固有の入力パラメータ
	 * @param workField 結果取得領域
	 * @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;
		}

		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		String svcKeiNo = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		
		HashMap<String, Object> eKK0321A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0321A010);
		String kktkSvcKeiNo = (String)eKK0321A010Hash.get(EKK0321A010CBSMsg1List.KKTK_SVC_KEI_NO);

		// 配送情報一覧照会処理を実施
		ArrayList<String> haisoStatList = new ArrayList<String>();
		haisoStatList.add(HAISO_STAT_UK_ZM);	// 受付済の情報を検索
		//↓↓↓2012-11-12追加　ロット２IT1-2012-0001946対応（割賦契約がキャンセルされない）↓↓↓
		haisoStatList.add(JKKDslRun.HAISO_STAT_SJ_ZM);
		haisoStatList.add(JKKDslRun.HAISO_STAT_SK_ZM);
		haisoStatList.add(JKKDslRun.HAISO_STAT_KNRYO);
		haisoStatList.add(JKKDslRun.HAISO_STAT_STP);		// 中止の情報を検索
		//↑↑↑2012-11-12追加　ロット２IT1-2012-0001946対応（割賦契約がキャンセルされない）↑↑↑
		HashMap<String, Object> eDK0011B080Hash = new HashMap<String, Object>();
		JKKBpCommon.searchHaisoInfo(param, handle, svcKeiNo, null, null, null, haisoStatList, eDK0011B080Hash, KKSV016701CC);
		
		// 配送情報を取り出す
		CAANMsg[] eDK0011B080CBSMSG1list = (CAANMsg[])eDK0011B080Hash.get(EDK0011B080CBSMsg.EDK0011B080CBSMSG1LIST);
		//↓↓↓2012-11-12追加　ロット２IT1-2012-0001946対応（割賦契約がキャンセルされない）↓↓↓
		boolean isUkzumiOrStp = false;
		boolean isNoRecord = true;
		
		for (int i = 0; null != eDK0011B080CBSMSG1list && i < eDK0011B080CBSMSG1list.length; i ++)
		{
			// 機器提供サービス番号が一致する配送レコードがあるかどうかチェック
			String tmpKktkSvcKeiNo = eDK0011B080CBSMSG1list[i].getString(EDK0011B080CBSMsg1List.KKTK_SVC_KEI_NO);
			if (kktkSvcKeiNo.equals(tmpKktkSvcKeiNo))
			{
				isNoRecord = false;
				String haisoStat = eDK0011B080CBSMSG1list[i].getString(EDK0011B080CBSMsg1List.HAISO_STAT);
				if (HAISO_STAT_UK_ZM.equals(haisoStat) || JKKDslRun.HAISO_STAT_STP.equals(haisoStat))
				{
					isUkzumiOrStp = true;
					break;
				}
			}
		}
		//↑↑↑2012-11-12追加　ロット２IT1-2012-0001946対応（割賦契約がキャンセルされない）↑↑↑
		//↓↓↓2012-11-12変更　ロット２IT1-2012-0001946対応（割賦契約がキャンセルされない）↓↓↓
//		if (eDK0011B080CBSMSG1list == null || eDK0011B080CBSMSG1list.length == 0)
		// 配送レコードが無いか、出荷指図前のデータが存在する場合はOKで、それ以外は終了
		if (!isNoRecord && !isUkzumiOrStp)
		//↑↑↑2012-11-12変更　ロット２IT1-2012-0001946対応（割賦契約がキャンセルされない）↑↑↑
		{
			// 取得できない場合、処理終了
			return 0;
		}
//↓↓↓2012-11-12廃止　ロット２IT1-2012-0001946対応（割賦契約がキャンセルされない）↓↓↓
//		// 機器提供サービス番号が一致するものが存在するかどうかチェック
//		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);
//			if(kktkSvcKeiNo.equals(kktkSvcKeiNoTmp))
//			{
//				bHaiso = true;
//				break;
//			}
//		}
//		// 受付済の配送情報が存在しない場合は抜ける
//		if(!bHaiso)
//		{
//			return 0;
//		}
//↑↑↑2012-11-12廃止　ロット２IT1-2012-0001946対応（割賦契約がキャンセルされない）↑↑↑
		
		// 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++)
		{
// 全網羅内部障害 No.340 EDIT_START 割賦契約のステータスが受付済、キャンセル済の場合には処理を実施しない
			HashMap<String, Object> eKK2541B001Hash = eKK2541B001HashList.get(i);
			// 割賦契約ステータス
			String kapStat = (String)eKK2541B001Hash.get(EKK2541B001CBSMsg1List.KAP_KEI_STAT);
			
			// 受付済、または、照査済でない場合は処理しない
			if (!(JKKSvcConst.KAP_KEI_STAT_010.equals(kapStat) || JKKSvcConst.KAP_KEI_STAT_020.equals(kapStat)))
			{
				return 0;
			}
			resultHash.put(TEMPLATE_ID_EKK2541B001 + "tmp", eKK2541B001Hash);
			
// 全網羅内部障害 No.340 EDIT_END 割賦契約のステータスが受付済、キャンセル済の場合には処理を実施しない
			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
		}
		// 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;
					}
				}
				else
				// 一時金設定の完了状態コードが完了（1）の場合
				if (JKKStrConst.CD01147_KANRYO.equals(kapKeiStat))
				{
					// 未取消契約一時金一覧照会
					statusCode = callEKK1051B001SC(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
					ArrayList<HashMap<String, Object>> eKK1051B001HashList = 
						(ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK1051B001);

					// 一時金設定に紐付く一時金設定が1件も存在しない場合は抜ける
					if(eKK1051B001HashList.size() == 0)
					{
						return 0;
					}

					HashMap<String, Object> eKK1051B001Hash = eKK1051B001HashList.get(0);
					resultHash.put(TEMPLATE_ID_EKK1051B001 + "tmp", eKK1051B001Hash);
					
					// 契約一時金変更実行処理
					statusCode = callEKK1051C020SC(param, handle, requestParam, resultHash);
					if(statusCode != 0)
					{
						return statusCode;
					}
				}
			}
		}
		// ANK-1306-00-00 2013/01/23 ADD END
		
		return statusCode;
	}


	/**
	 * 割賦契約処理用SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @param sifID サービスインターフェース
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 
	 */
	private int callKAPPUSC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash, 
			String sifID
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		if(sifID.equals(TEMPLATE_ID_EKK2541B001))
		{
			// 割賦契約一覧照会（機器提供サービス契約番号）SIFを呼び出し
			template = new CAANMsg(EKK2541B001CBSMsg.class.getName());
			mapper.mappingEKK2541B001InMsg(template, resultHash);
		}
		else if(sifID.equals(TEMPLATE_ID_EKK2541C170))
		{
			// 割賦契約キャンセルSIFを呼び出し
			template = new CAANMsg(EKK2541C170CBSMsg.class.getName());
			mapper.mappingEKK2541C170InMsg(template, inHash, resultHash);
		}
		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)
		{
			if(sifID.equals(TEMPLATE_ID_EKK2541B001))
			{
				resultHash.put(TEMPLATE_ID_EKK2541B001, mapper.mappingEKK2541B001SCOutMsg(resultMsgs));
			}
			else if(sifID.equals(TEMPLATE_ID_EKK2541C170))
			{
				resultHash.put(TEMPLATE_ID_EKK2541C170, mapper.mappingEKK2541C170CSCOutMsg(resultMsgs));
			}
		}

		return status;
	}
	// 2012/09/11 ANK-0546-00-00 ADD END
	
	// ANK-1306-00-00 2013/01/24 ADD START
	/**
	 * EKK1021B003 一時金設定一覧照会を実行します
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 設定条件
	 * @param resultHash 一時金設定一覧照会結果
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 任意の例外
	 * @since 2013-01-24 ANK-1306-00-00対応
	 */
	private int callEKK1021B003SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		int status = 0;

		// EKK1021B003への呼び出しパラメータ設定
		template = new CAANMsg(EKK1021B003CBSMsg.class.getName());
		mapper.mappingEKK1021B003InMsg(template, resultHash);

		resultMsgs = callSCCmn(param, handle, template);

		// 結果ありの場合
		if(resultMsgs != null)
		{
			resultHash.put(TEMPLATE_ID_EKK1021B003, mapper.mappingCAANOutMsg(EKK1021B003CBSMsg.EKK1021B003CBSMSG1LIST, resultMsgs));
		}

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		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
	{
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		int status = 0;

		// EKK1021C010への呼び出しパラメータ設定
		template = new CAANMsg(EKK1021C010CBSMsg.class.getName());
		mapper.mappingEKK1021C010InMsg(template, resultHash);

		resultMsgs = callSCCmn(param, handle, template);

		// 結果ありの場合
		if(resultMsgs != null)
		{
			resultHash.put(TEMPLATE_ID_EKK1021C010, mapper.mappingCAANOutMsgAdd(resultMsgs));
		}

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * EKK1051B001 契約一時金一覧照会を実行します
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 設定条件
	 * @param resultHash 契約一時金一覧照会結果
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 任意の例外
	 */
	private int callEKK1051B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		int status = 0;

		// EKK1051B001への呼び出しパラメータ設定
		template = new CAANMsg(EKK1051B001CBSMsg.class.getName());
		{
			// 一時金設定一覧照会の結果取得
			HashMap<String, Object> eKK1021B003Hash = null;
			eKK1021B003Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK1021B003 + "tmp");

			// テンプレートID
			template.set(EKK1051B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1051B001);

			// 機能コード
			template.set(EKK1051B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

			// ＫＥＹ＿一時金設定番号
			template.set(EKK1051B001CBSMsg.KEY_ICJKN_SETTE_NO, eKK1021B003Hash.get(EKK1021B003CBSMsg1List.ICJKN_SETTE_NO));
		}

		resultMsgs = callSCCmn(param, handle, template);

		// 結果ありの場合
		if(resultMsgs != null)
		{
			resultHash.put(TEMPLATE_ID_EKK1051B001, mapper.mappingCAANOutMsg(EKK1051B001CBSMsg.EKK1051B001CBSMSG1LIST, resultMsgs));
		}

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	
	/**
	 * 契約一時金変更サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiNo サービス契約番号
	 * @param inHash 設定条件
	 * @param resultHash 契約一時金変更結果
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private int callEKK1051C020SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		int status = 0;

		// EKK1051C020への呼び出しパラメータ設定
		template = new CAANMsg(EKK1051C020CBSMsg.class.getName());
		{
			// 契約一時金一覧照会の結果取得
			HashMap<String, Object> eKK1051B001Hash = null;
			eKK1051B001Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK1051B001 + "tmp");

			// テンプレートID
			template.set(EKK1051C020CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1051C020);

			// 機能コード
			template.set(EKK1051C020CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

			// 契約一時金番号
			template.set(EKK1051C020CBSMsg.KICJKN_NO, eKK1051B001Hash.get(EKK1051B001CBSMsg1List.KICJKN_NO));

			// 取消連携状態コード（取消済："1"）
			template.set(EKK1051C020CBSMsg.CL_RENKEI_STAT_CD, JKKStrConst.CD00672_CNCL_SUMI);

			// 更新年月日時分秒(更新前)
			template.set(EKK1051C020CBSMsg.UPD_DTM_BF, eKK1051B001Hash.get(EKK1051B001CBSMsg1List.UPD_DTM));
		}

		resultMsgs = callSCCmn(param, handle, template);

		// 結果ありの場合
		if(resultMsgs != null)
		{
			resultHash.put(TEMPLATE_ID_EKK1051C020, mapper.mappingCAANOutMsgAdd(resultMsgs));
		}

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	// ANK-1306-00-00 2013/01/24 ADD END
	
	// ST1-2012-0000670 2012/10/07 start
	/**
	 * 工事案件CC実行処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @return リターンコード
	 * @throws Throwable
	 */
	private int executeKojiAnkenCC(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			HashMap<String, Object> requestParam,
			HashMap<String, Object> resultHash,
			String fixedText
	) throws Throwable
	{
		// サービス契約一意照会の結果取得
		HashMap<String, Object> eKK0081A010Hash = null;
		eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);

		String workKojiAnkenDataKey = "KojiAnkenCC";

		// 申込番号
		HashMap<String, Object> ekk0021a010Map = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0021A010);
		String mskmNo = (String) ekk0021a010Map.get(EKK0021A010CBSMsg1List.MSKM_NO);
		String mskmDtlNo = (String) ekk0021a010Map.get(EKK0021A010CBSMsg1List.MSKM_DTL_NO);

		// 工事案件CC実行
		JKKKojiAnkenCC kojiCC = new JKKKojiAnkenCC();
		mapper.editMapKojiAnken(
				param, 
				fixedText, 
				workKojiAnkenDataKey, 
				mskmNo, 
				mskmDtlNo, 
				eKK0081A010Hash
		);
		kojiCC.executeKojiAnken(handle, param, workKojiAnkenDataKey);

		param.removeData(workKojiAnkenDataKey);

		return 0;
	}
	
	/**
	 * 作業項目に宅内機器情報リストに追加する
	 * 
	 * @return
	 */
	private void addTaknkikiInfoList(IRequestParameterReadWrite param, HashMap<String, Object>  outMap) throws RequestParameterException
	{
		Map<String, Object> workHash = (HashMap<String, Object>)param.getData(WORK_KEY);
		if(workHash == null)
		{
			workHash = new HashMap<String, Object>();
			param.setData(WORK_KEY, workHash);
		}
		Map<String, Object> taknkikiInfo = new HashMap<String, Object>();
		taknkikiInfo.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO, outMap.get(EKK0341C350CBSMsg.KKTK_SVC_KEI_NO));
		taknkikiInfo.put(JKKKojiAnkenConstCC.KKTK_SVC_KEI_NO_GENE_ADD_DTM, outMap.get(EKK0341C350CBSMsg.GENE_ADD_DTM));

		// 作業項目を取得
		List<Map<String, Object>> taknkikiInfoList = (ArrayList<Map<String, Object>>)workHash.get(JKKKojiAnkenConstCC.TAKNKIKI_INFO_LIST);

		if (taknkikiInfoList == null)
		{
			taknkikiInfoList = new ArrayList<Map<String, Object>>();
			workHash.put(JKKKojiAnkenConstCC.TAKNKIKI_INFO_LIST, taknkikiInfoList);
		}

		taknkikiInfoList.add(taknkikiInfo);
	}
	// ST1-2012-0000670 2012/10/07 end
	
	// SEP-0020-00-00 現行ICS指摘対応：337 ADD START
	/**
	 * 非課金判定部品実行処理
	 * 
	 * @param inMap 業務情報を保持するマップ
	 * @param workField ワーク領域
	 * @param msgEKK0081A010 サービス契約一意照会結果
	 * @param msgEKK0161A010 サービス契約内訳一意照会結果
	 * @param msgEKK0351A010 オプションサービス契約一意照会結果
	 * @param msgEKK0401A010 サブオプションサービス契約一意照会結果
	 * @param dslSbtFlg 解約対象フラグ
	 * @throws RequestParameterException
	 * @throws Throwable 
	 */
	private HashMap<String, Object> runHiChrgJdgUtil(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> inMap,
			HashMap<String, Object> workField,
			HashMap<String, Object> msgEKK0081A010,
			HashMap<String, Object> msgEKK0161A010,
			HashMap<String, Object> msgEKK0351A010,
			HashMap<String, Object> msgEKK0401A010,
			String dslSbtFlg
	) throws Throwable
	{
		// 引数チェック
		if(dslSbtFlg == null)
		{
			throw new IllegalArgumentException("解約種別フラグが設定されていません");
		}
		else if(msgEKK0081A010 == null)
		{
			throw new IllegalArgumentException("サービス契約一意照会結果が設定されていません");
		}
		// サポート外の解約種別フラグを選択された場合、エラー
		else if(!DSL_SBT_FLG_SVC_KEI_DSL.equals(dslSbtFlg) && !DSL_SBT_FLG_OP_SVC_KEI_DSL.equals(dslSbtFlg) && !DSL_SBT_FLG_SBOP_SVC_KEI_DSL.equals(dslSbtFlg))
		{
			throw new IllegalArgumentException("不正な解約種別フラグが選択されました。");
		}
		// 指定した解約種別フラグに対応した結果オブジェクトが設定されていない場合、エラー
		else if((DSL_SBT_FLG_OP_SVC_KEI_DSL.equals(dslSbtFlg) && (msgEKK0351A010 == null)) ||
				 (DSL_SBT_FLG_SBOP_SVC_KEI_DSL.equals(dslSbtFlg) && (msgEKK0401A010 == null)))
		{
			throw new IllegalArgumentException("指定した解約種別フラグに応じた結果オブジェクトが設定されていません");
		}

		// ▼▼▼▼▼ 2012/11/16 IT1-2012-0002095 DEL START ▼▼▼▼▼
		// ワーク領域に存在する場合、ワーク領域から削除する
		if(getWorkjdgHiChrgJdgUtil(workField) != null)
		{
			delWorkJdgHiChrgJdgUtil(workField);
		}
		// ▲▲▲▲▲ 2012/11/16 IT1-2012-0002095 DEL E N D ▲▲▲▲▲

		HashMap<String, Object> trgtData = null;
		HashMap<String, Object> resultMap = null;

		// 必要な情報をマッピングする
		trgtData = mapper.editMapHiChrgJdgUtil(inMap, msgEKK0081A010, msgEKK0161A010, msgEKK0351A010, msgEKK0401A010, dslSbtFlg);

		// マッピングがNULLの場合は実行しない
		if(trgtData != null)
		{
			// ▼▼▼▼▼ 2013/09/11 OM-2013-0001096 UPD START ▼▼▼▼▼
			resultMap = JKKBpCommon.jdgHiChrgKK(handle, param, trgtData, dslSbtFlg);
			// ▲▲▲▲▲ 2013/09/11 OM-2013-0001096 UPD E N D ▲▲▲▲▲

			// ▼▼▼▼▼ 2012/11/16 IT1-2012-0002095 DEL START ▼▼▼▼▼
			// 結果をワーク領域に保持する
			if(resultMap != null)
			{
				setWorkJdgHiChrgJdgUtil(workField, resultMap);
			}
			// ▲▲▲▲▲ 2012/11/16 IT1-2012-0002095 DEL E N D ▲▲▲▲▲
		}

		return resultMap;
	}
	
	/**
	 * 非課金判定部品実行結果登録処理
	 * 
	 * @param workField ワーク領域
	 * @param inMap 入力パラメータ
	 * @param HiChrgJdgResultMap 非課金判定部品実行結果
	 */
	private void setWorkJdgHiChrgJdgUtil(HashMap<String, Object> workField, HashMap<String, Object> jdgHiChrgJdgResultMap)
	{
		workField.put("jdgHiChrgJdgMap", jdgHiChrgJdgResultMap);
	}
	
	/**
	 * 非課金判定部品実行結果取得処理
	 * 
	 * @param workField ワーク領域
	 * @return 非課金判定部品実行結果
	 * @throws RequestParameterException 
	 * @throws Throwable 
	 */
	private Object getWorkjdgHiChrgJdgUtil(HashMap<String, Object> workField) throws RequestParameterException
	{
		return workField.get("jdgHiChrgJdgMap");
	}
	
	/**
	 * 非課金判定部品実行結果削除処理
	 * 
	 * @param workField ワーク領域
	 * @param inMap 入力パラメータ
	 * @param HiChrgJdgResultMap 非課金判定部品実行結果
	 * @throws RequestParameterException 
	 * @throws Throwable 
	 */
	private void delWorkJdgHiChrgJdgUtil(HashMap<String, Object> workField) throws RequestParameterException
	{
		workField.remove("jdgHiChrgJdgMap");
	}

	// SEP-0020-00-00 ADD END
	/**
	 * 住所変更中か否かを判定します。<br>
	 * 取得した住所変更情報を作業領域に設定します。
	 * <br>
	 */
	private boolean isNowAdChg(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> inMap,
			String fixedText,
			HashMap<String, Object> msgEKK0081A010
	) throws Throwable
	{
		HashMap<String, Object> resultHash = new HashMap<String, Object>();

		// 申込明細一意照会を実行（申込番号を、サービス契約レコードの申込明細番号より検索）
		callEKK0021A010SC(param, handle, inMap, resultHash);

		String mskmNo = (String)resultHash.get(EKK0021A010CBSMsg1List.MSKM_NO);

		// サービス契約回線内訳一覧照会（現在利用中）取得
		CAANMsg[] msgEKK0251B003List = callEKK0251B003(handle, param, inMap, fixedText,msgEKK0081A010);

		// 現在住所変更中か？
		boolean isNowAdChgFlg = false;

		String nowSvcKeiKaisenUcwkNo = "";

		if (msgEKK0251B003List.length == 1)
		{
			// ****************************
			// 使用中回線＝１回線のみ
			// ****************************
			CAANMsg msgEKK0251B003 = msgEKK0251B003List[0];

			// サービス契約回線内訳番号
			nowSvcKeiKaisenUcwkNo = msgEKK0251B003.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
		}
		else if (msgEKK0251B003List.length > 1)
		{
			// ****************************
			// 使用中回線＝複数
			// ****************************
			for (int i = 0; i < msgEKK0251B003List.length; i++)
			{
				CAANMsg msgEKK0251B003 = msgEKK0251B003List[i];

				// サービス契約回線内訳番号
				nowSvcKeiKaisenUcwkNo       = msgEKK0251B003.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
				// サービス契約回線内訳ステータス
				String svcKeiKaisenUcwkStat = msgEKK0251B003.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_STAT);

				// サービス契約回線内訳ステータス＝使用中の場合
				if (SVC_KEI_KAISEN_UCWK_STAT_USE.equals(svcKeiKaisenUcwkStat))
				{
					break;
				}
			}

		}

		if (nowSvcKeiKaisenUcwkNo == null || "".equals(nowSvcKeiKaisenUcwkNo))
		{
			// サービス契約回線内訳番号が取得できない場合
			return false;
		}

		// 住所変更一覧照会
		CAANMsg[] msgEKK2091B001List = callEKK2091B001(handle, param, inMap, fixedText, mskmNo, nowSvcKeiKaisenUcwkNo);

		if (msgEKK2091B001List.length == 0)
		{
			// ****************************
			// 住所変更一覧　結果なし
			// ****************************
			isNowAdChgFlg = false;
		}
		else if (msgEKK2091B001List.length == 1)
		{
			// ****************************
			// 住所変更一覧　結果あり
			// ****************************
			CAANMsg msgEKK2091B001 = msgEKK2091B001List[0];

			String adChgStat = msgEKK2091B001.getString(EKK2091B001CBSMsg1List.ADCHG_STAT);

			if (ADCHG_STAT_003.equals(adChgStat))
			{
				// ****************************
				// 住所変更ステータス　完了済
				// ****************************
				isNowAdChgFlg = false;
			}
			else
			{
				// ****************************
				// 上記以外
				// ****************************
				isNowAdChgFlg = true;
			}
		}

		return isNowAdChgFlg;
	}

	// IT1-2013-0001459 全戸一括／居住者一括マンションの子契約の強制解約時に電話・テレビが解約されない 2013/07/24 START
	/**
	 * ネット契約について、マンションの支払方式が全戸一括、または居住者一括かどうかをチェックします。
	 * 
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	resultHash	結果のハッシュ
	 * @return	処理対象がネット契約でマンションの支払方式が全戸一括または居住者一括の場合はtrue、そうでない場合はfalse
	 */
	private boolean chkMansPayHoshiki(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> resultHash
	)
	{
		// サービス契約一意照会結果取得
		HashMap<String, Object> eKK0081A010Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0081A010);
		// マンション情報一覧照会（サービス契約番号）結果取得
		HashMap<String, Object> eKK0861B002Hash = (HashMap<String, Object>)resultHash.get(TEMPLATE_ID_EKK0861B002);

		// 料金グループコード
		String prcGrpCd = (String)eKK0081A010Hash.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);

		// チェック対象はネットのみ
		if (
				JKKSvcConst.PRC_GRP_CD_NET_HM.equals(prcGrpCd)
				|| JKKSvcConst.PRC_GRP_CD_NET_MT.equals(prcGrpCd)
				|| JKKSvcConst.PRC_GRP_CD_NET_MZ.equals(prcGrpCd)
		)
		{
			// 全戸一括、または居住者一括の場合
			if(eKK0861B002Hash != null)
			{
				String payHoshikiCd = (String)eKK0861B002Hash.get(EKK0861B002CBSMsg1List.KANYU_KEI_PAY_HOSHIKI_CD);
				if(PAY_HOSHIKI_CD_ZKI.equals(payHoshikiCd) || PAY_HOSHIKI_CD_KYI.equals(payHoshikiCd))
				{
					return true;
				}
			}
		}

		return false;
	}
	// IT1-2013-0001459 全戸一括／居住者一括マンションの子契約の強制解約時に電話・テレビが解約されない 2013/07/24 END
	
	/**
	 * サービス契約回線内訳一覧照会（現在利用中）呼出
	 * 
	 * @param	handle
	 * @param	param
	 * @param	inMap
	 * @param	fixedText
	 * @param	msgEKK0081A010
	 * @return
	 * @throws	Throwable
	 */
	private CAANMsg[] callEKK0251B003(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> inMap,
			String fixedText,
			HashMap<String, Object> msgEKK0081A010
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK1021C010への呼び出しパラメータ設定
		template = new CAANMsg(EKK0251B003CBSMsg.class.getName());

		// テンプレートID
		template.set(EKK0251B003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251B003);

		// 機能コード
		template.set(EKK0251B003CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// サービス契約一意照会.サービス契約番号 → ＫＥＹ＿サービス契約番号
		template.set(EKK0251B003CBSMsg.KEY_SVC_KEI_NO, msgEKK0081A010.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));

		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);

		// 業務データの取得処理
		CAANMsg workEKK0251B003 = getWorkCAANMsg(sIFResult);
		CAANMsg[] msgEKK0251B003List = workEKK0251B003.getCAANMsgList(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST);

		return msgEKK0251B003List;
	}

	/**
	 * 住所変更一覧照会呼出
	 * 
	 * @param handle
	 * @param param
	 * @param inMap
	 * @param fixedText
	 * @param mskmNo
	 * @param svcKeiKaisenUcwkNo
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg[] callEKK2091B001(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			HashMap<String, Object> inMap,
			String fixedText,
			String mskmNo,
			String svcKeiKaisenUcwkNo
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK1021C010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2091B001CBSMsg.class.getName());
		mapper.mappingEKK2091B001InMsg(template, mskmNo, svcKeiKaisenUcwkNo);

		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);

		// 業務データの取得処理
		CAANMsg workEKK2091B001 = getWorkCAANMsg(sIFResult);
		return workEKK2091B001.getCAANMsgList(EKK2091B001CBSMsg.EKK2091B001CBSMSG1LIST);
	}

// IT1-2013-0000847 2013-04-16 ADD_START
	/**
	 * 番ポ工事一覧照会（番ポ申込書タイプ）サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private void callETU0011B018SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String svcKeiNo,
			String bmpMskmshoTypeCd,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;

		// ETU0011B018への呼び出しパラメータ設定
		template = new CAANMsg(ETU0011B018CBSMsg.class.getName());
		mapper.mappingETU0011B018InMsg(template, svcKeiNo, bmpMskmshoTypeCd);

		resultMsgs = callSCCmn(param, handle, template);

		// 結果ありの場合
		if(resultMsgs != null)
		{
			resultHash.put(TEMPLATE_ID_ETU0011B018, mapper.mappingETU0011B018SCOutMsg(resultMsgs));
		}
	}
	
// IT1-2013-0000847 2013-04-16 ADD_END
	
	/**
	 * 業務データの取得処理です。
	 * <br>
	 * @param workMapKey 業務データのマップキー
	 * @param rslt SVIFの実行結果データ
	 * @return 業務データ
	 */
	private static CAANMsg getWorkCAANMsg(Map<?, ?> rslt)
	{
		CAANMsg[] templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		return parentTemplate;
	}

	/**
	 * エラーチェック処理です。
	 * <br>
	 * @param msgList サービスインタフェース実行結果
	 * return void
	 * @throws SCCallException 
	 */
	private static void errChk(Map<?, ?> msgList) 
	throws SCCallException
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		// ステータス
		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);

		if ((0 != returnCode.intValue()) || (0 != templateStatus))
		{
			String errMsg = "INVALID_RETURN_MESSAGE";
			throw new SCCallException(errMsg, String.valueOf(returnCode), templateStatus);
		}
	}

	// ▼▼▼▼▼ 2013/07/09 TG1-2013-0000667 ADD START ▼▼▼▼▼
	/**
	 * 予約適用年月日を過ぎた<br>
	 * 撤去解約の予約が未反映の状態で存在するか確認<br>
	 * 存在する場合は、TRUEを返却<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	結果のハッシュ
	 * @param	svcKeiNo	サービス契約番号
	 * @return				サービスインターフェースのリターンコード
	 * @throws	RequestParameterException, SCException
	 */
	private boolean isPastedTekkyoDslRsv(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String svcKeiNo
	) throws Throwable
	{
		boolean ret = false;

		// 異動予約一覧照会サービスIF呼出
		callEKK1681B001SC(param, handle, inHash, resultHash, svcKeiNo);

		ArrayList<HashMap<String, Object>> eKK1681B001HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK1681B001);

		// 配列数分、繰り返し
		for (int i = 0; i < eKK1681B001HashList.size(); i++)
		{
			HashMap<String, Object> eKK1681B001Hash = eKK1681B001HashList.get(i);

			// 異動予約適用年月日を取得
			String rsvAplyYmd = (String)eKK1681B001Hash.get(EKK1681B001CBSMsg1List.RSV_APLY_YMD);

			// 異動予約適用年月日が空の場合
			if (rsvAplyYmd == null || "".equals(rsvAplyYmd))
			{
				continue;
			}

			// 異動予約適用年月日が、運用日含めて過去の場合
			if (rsvAplyYmd.compareTo(oPE_DATE) <= 0)
			{
				ret = true;
				break;
			}
		}

		return ret;
	}

	/**
	 * 異動予約一覧照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	結果のハッシュ
	 * @param	svcKeiNo	サービス契約番号
	 * @return				サービスインターフェースのリターンコード
	 * @throws	RequestParameterException, SCException
	 */
	private void callEKK1681B001SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> inHash,
			HashMap<String, Object> resultHash,
			String svcKeiNo
	) throws Throwable
	{
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;

		// EKK1681B001への呼び出しパラメータ設定
		template = new CAANMsg(EKK1681B001CBSMsg.class.getName());
		mapper.mappingEKK1681B001InMsg(template, svcKeiNo);

		resultMsgs = callSCCmn(param, handle, template);

		// 結果ありの場合
		if(resultMsgs != null)
		{
			resultHash.put(TEMPLATE_ID_EKK1681B001, mapper.mappingEKK1681B001SCOutMsg(resultMsgs));
		}
	}

	/**
	 * サービスIF呼出共通処理<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	inHash		条件用Hash
	 * @param	resultHash	結果のハッシュ
	 * @param	template
	 * @return				サービスインターフェースのリターンコード
	 * @throws	RequestParameterException, SCException
	 */
	private CAANMsg[] callSCCmn(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			CAANMsg template
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest    = null;
		CAANMsg[] resultMsgs                  = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult                   = null;

		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		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);

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		// ステータスが0以外はエラーとなっている
		if(status == 0)
		{
			// 結果の取得
			resultMsgs = (CAANMsg[])sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY);
		}

		return resultMsgs;
	}
	// ▲▲▲▲▲ 2013/07/09 TG1-2013-0000667 ADD E N D ▲▲▲▲▲

	//2013/12/14 ANK-1578-00-00 nakashima Add start
	/**
	 * 機器オプション利用機器契約更新CC
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @return リターンコード
	 * @throws Throwable
	 */
	private int executekkopUsekkUpdCC(
				SessionHandle handle, 
				IRequestParameterReadWrite param, 
				HashMap<String, Object> requestParam,
				HashMap<String, Object> resultHash,
				String fixedText,
				String workkkopUsekkDataKey
	) throws Throwable
	{

		// 多機能ルータCC実行
		JKKKkopSvcUseKeiUpdCC kkopUsekkUpdCC = new JKKKkopSvcUseKeiUpdCC();
		mapper.editkkopUsekkUpdCC(
				param, 
				fixedText, 
				workkkopUsekkDataKey, 
				this.svcKeiUpdDtm,
				requestParam,
				resultHash
		);

		kkopUsekkUpdCC.updateKkopSvcKeiTran(handle, param, workkkopUsekkDataKey);

		HashMap workOutMap = (HashMap)param.getData(workkkopUsekkDataKey);
		ArrayList<HashMap> workArray = (ArrayList<HashMap>)workOutMap.get("trgt_data_list");
		HashMap workKktkCoshjMap = workArray.get(0);
		String kktk_up_dtm = (String)workKktkCoshjMap.get(kkopUsekkUpdCC.KEY_UPD_DTM);

		// 返却された更新年月日時分秒がnullまたは空白でない場合、クラス変数を上書き
		if(kktk_up_dtm == null || "".equals(kktk_up_dtm)){
			//何もしない
		} else {
			this.svcKeiUpdDtm = kktk_up_dtm;
		}
		param.removeData(workkkopUsekkDataKey);

		return 0;
	}
	//2013/12/14 ANK-1578-00-00 nakashima Add end
	// 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 requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @param	kktkSvcKeiNo		機器提供サービス契約番号
	 * @throws	Throwable
	 */
	private void kkopSvcKei_KyoseiDsl(
			SessionHandle handle
			,IRequestParameterReadWrite param
			,HashMap<String, Object> requestParam
			,HashMap<String, Object> resultHash
			,String fixedText
			,String kktkSvcKeiNo
	) throws Throwable
	{
		
		// ******************************************************* //
		// 機器オプションサービス契約一覧照会（機器提供ＳＶ）
		// ******************************************************* //
		callEKK2811B010SC(param, handle, kktkSvcKeiNo, resultHash);
		ArrayList<HashMap<String, Object>> eKK2811B010HashList = (ArrayList<HashMap<String, Object>>)resultHash.get(TEMPLATE_ID_EKK2811B010);

		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, IDO_DIV_KYOSEI);
				
				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))
					{
						// 機器オプションサービス契約一意照会
						callEKK2811A010SC(param, handle, (String)eKK2811B010HashListElement.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO), resultHash);
						
						// 機器オプションサービス契約キャンセル実行処理
						callEKK2811C110SC(param, handle, requestParam, resultHash);
						
					}
					else if (isDslTrgt(kkopSvcKeiStat))
					{
						// 機器オプションサービス契約一意照会
						callEKK2811A010SC(param, handle, (String)eKK2811B010HashListElement.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO), resultHash);
						
						// 機器オプションサービス契約一意照会
						callEKK2801A010SC(param, handle, (String)eKK2811B010HashListElement.get(EKK2811B010CBSMsg1List.KKOP_SVC_CD), resultHash);
						
						// 機器オプションサービス契約非課金判定処理
						callKkopHiChrgJdg(param, handle, requestParam, resultHash);
						
						// 機器オプションサービス契約解約実行処理
						callEKK2811C140SC(param, handle, requestParam, resultHash);
						
						// 機器オプションサービス契約解約確定実行処理
						callEKK2811C150SC(param, handle, requestParam, resultHash);
						
					}
					else
					{
						// 処理対象外
					}
					
				}
				else
				{
					// 処理対象外
				}
			}
		}
	}
	/**
	 * 機器オプションサービス契約非課金判定処理
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param inHash 入力
	 * @param resultHash 結果のハッシュ
	 * @return 
	 * @throws Throwable
	 */
	private int callKkopHiChrgJdg(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,HashMap<String, Object> inHash
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		// 機器オプションサービス契約非課金判定
		HashMap<String, Object> mapJdgKkopHiChrg = new HashMap<String, Object>();
		
		// 機器オプションサービス契約一意照会の結果取得
		HashMap<String, Object> eKK2811A010Hash = (HashMap<String, Object>)resultHash.get(JKKKyoseiDslRunCC.TEMPLATE_ID_EKK2811A010);
		
		// 機器オプションサービス契約番号
		mapJdgKkopHiChrg.put(JKKKkopHiChrgJdgConstCC.KKOP_SVC_KEI_NO, (String)eKK2811A010Hash.get(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO));
		
		// 機器オプションサービス契約サービス終了年月日
		mapJdgKkopHiChrg.put(JKKKkopHiChrgJdgConstCC.KKOP_SVC_ENDYMD, inHash.get(JKKKyoseiDslRunCC.REQYMD));
		
		// サービス契約サービス課金終了年月日
		mapJdgKkopHiChrg.put(JKKKkopHiChrgJdgConstCC.SVKEI_SVC_CHRG_ENDYMD, inHash.get(JKKKyoseiDslRunCC.SVC_CHRG_ENDYMD));
		
		String jdgKkopHiChrgFixedText ="jdgKkopHiChrg";  
		
		param.setData(jdgKkopHiChrgFixedText, mapJdgKkopHiChrg);
		
		JKKBpCommon.jdgKkopHiChrg(handle, param, mapJdgKkopHiChrg, jdgKkopHiChrgFixedText);
		
		resultHash.put(MAP_KEY_JKKKKOPHICHRGJDG, mapJdgKkopHiChrg);
		
		return 0;
	}
	
	/**
	 * 機器オプションサービス契約一覧照会（機器提供ＳＶ）SIFを呼び出し
	 * @param param リクエストパラメータ	
	 * @param handle セッションハンドル
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEKK2811B010SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String kktkSvcKeiNo
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK2811B010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811B010CBSMsg.class.getName());
		mapper.mappingEKK2811B010InMsg(template, kktkSvcKeiNo, null);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK2811B010, mapper.mappingEKK2811B010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 機器オプションサービス契約一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param			リクエストパラメータ
	 * @param	handle			セッションハンドル
	 * @param	callMethodFlg	呼び元を識別するフラグ
	 * @param	inHash			条件用hash
	 * @param	resultHash		サービスOUT結果のハッシュ
	 * @return
	 * @throws	Throwable
	 */
	private int callEKK2811A010SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String kkopSvcKeiNo
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK2811A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811A010CBSMsg.class.getName());
		mapper.mappingEKK2811A010InMsg(template, kkopSvcKeiNo);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK2811A010, mapper.mappingEKK2811A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 機器オプションサービス一意照会サービスIFを呼び出し<br>
	 * <br>
	 * @param	param		リクエストパラメータ
	 * @param	handle		セッションハンドル
	 * @param	kkopSvcCd	機器オプションサービスコード
	 * @param	resultHash	SIF実行結果格納用マップ
	 * @return
	 * @throws	Throwable
	 */
	private int callEKK2801A010SC(
			IRequestParameterReadWrite param
			,SessionHandle handle
			,String kkopSvcKeiNo
			,HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK2801A010への呼び出しパラメータ設定
		template = new CAANMsg(EKK2801A010CBSMsg.class.getName());
		mapper.mappingEKK2801A010InMsg(template, kkopSvcKeiNo);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK2801A010, mapper.mappingEKK2801A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 機器オプションサービス契約キャンセルSIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 入力データ1件分
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK2811C110SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK2811C110への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811C110CBSMsg.class.getName());
		mapper.mappingEKK2811C110InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK2811C110, mapper.mappingEKK2811C110SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 機器オプションサービス契約解約SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 入力データ1件分
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK2811C140SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK2811C140への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811C140CBSMsg.class.getName());
		mapper.mappingEKK2811C140InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK2811C140, mapper.mappingEKK2811C140SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 機器オプションサービス契約解約確定SIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 入力データ1件分
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます
	 */
	private int callEKK2811C150SC(
			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;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EKK2811C150への呼び出しパラメータ設定
		template = new CAANMsg(EKK2811C150CBSMsg.class.getName());
		mapper.mappingEKK2811C150InMsg(template, inHash, resultHash, this.svcKeiUpdDtm);
		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)
		{
			resultHash.put(TEMPLATE_ID_EKK2811C150, mapper.mappingEKK2811C150SCOutMsg(resultMsgs));
		}

		return status;
	}

	// 20140507 ANK-2054-00-00 ADD END
	// OM-2016-0001720 2017/01/31 ADD START
	/**
	 * 宅内機器サービス契約番号更新CCを呼び出し、宅内サービス契約番号更新情報リストを出力します。
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param netKaiTaiLst ネット解約対象者リスト
	 * @return 宅内サービス契約番号更新情報(月次)リスト。対象データが存在しない場合、空のリストを返します。
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> callJKKTkkkSvKeiNoUpdCC(
			SessionHandle handle
			,IRequestParameterReadWrite param
			,String fixedText
			,ArrayList<HashMap<String, String>> netKaiTaiLst
	) throws Throwable
	{
		// 宅内サービス契約番号更新情報リスト(戻り値)
		ArrayList<HashMap<String, Object>> takniSvckeiNoUpdInfoList = new ArrayList<HashMap<String, Object>>();

		// ネット解約対象者リスト
		for (HashMap<String, String> netKaiTai : netKaiTaiLst)	// netKaiTaiLstがnullはありえない
		{
			// 宅内機器サービス契約番号更新CC呼出
			String ccFixedText = "JKKTkkkSvKeiNoUpdCC";
			HashMap<String, Object> ccInMap = new HashMap<String, Object>();
			ccInMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SVC_KEI_NO, netKaiTai.get(EKK0081A010CBSMsg1List.SVC_KEI_NO));
			ccInMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_SYORI_KBN,  JKKTkkkSvKeiNoUpdCC.SYORI_KBN_2);
			ccInMap.put(JKKTkkkSvKeiNoUpdCC.IN_PARAM_IDO_DIV,  IDO_DIV_KYOSEI);
			param.setData(ccFixedText, ccInMap);
			JKKTkkkSvKeiNoUpdCC jKKTkkkSvKeiNoUpdCC = new JKKTkkkSvKeiNoUpdCC();
			jKKTkkkSvKeiNoUpdCC.updTkkkSvKeiNo(handle, param, ccFixedText, JKKTkkkSvKeiNoUpdCC.KIDO_CD_BAT);
			
			// 宅内機器サービス契約番号更新CCのOUT項目を取得し、戻り値に設定
			HashMap<String, Object> ccOutMap = (HashMap)param.getData(ccFixedText);
			ArrayList<HashMap<String, Object>> ccOutList = (ArrayList)ccOutMap.get(JKKTkkkSvKeiNoUpdCC.OUT_PARAM_TAKNI_SVC_KEI_NO_UPD_INFO_LIST);
			
			if (null != ccOutList)
			{
				for (HashMap<String, Object> ccOut : ccOutList)
				{
					HashMap<String, Object> takniSvcKeiNoUpdInfo = new HashMap<String, Object>();
					takniSvcKeiNoUpdInfo.put("GETSUJI_TAKNKIKI_MODEL_CD", ccOut.get(JKKTkkkSvKeiNoUpdCC.TAKNI_SVC_KEI_NO_UPD_INFO_TAKNKIKI_MODEL_CD));
					takniSvcKeiNoUpdInfo.put("GETSUJI_KIKI_SEIZO_NO",  ccOut.get(JKKTkkkSvKeiNoUpdCC.TAKNI_SVC_KEI_NO_UPD_INFO_KIKI_SEIZO_NO));
					takniSvcKeiNoUpdInfo.put("GETSUJI_SVC_KEI_NO",  ccOut.get(JKKTkkkSvKeiNoUpdCC.TAKNI_SVC_KEI_NO_UPD_INFO_SVC_KEI_NO));
					
					takniSvckeiNoUpdInfoList.add(takniSvcKeiNoUpdInfo);
				}
			}
		}
		
		return takniSvckeiNoUpdInfoList;
	}

	// OM-2016-0001720 2017/01/31 ADD END
	
	// ANK-4494-00-00 ADD START
	/**
	 * 電話番号の網内番ポ有無を返します。
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param telno 電話番号
	 * @retun telnoJudgeDiv 電話番ポ有無
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	protected String getTelnMonaiBmpUm(
			SessionHandle handle
			,IRequestParameterReadWrite param
			,String telno
	) throws Throwable
	{
		HashMap<String, Object> telNoStatJudgeCc = new HashMap<String, Object>();
		
		telNoStatJudgeCc.put(JKKTelnoStatJudgeConstCC.TELNO, telno);
		
		//電話番号状態判定部品を呼び出し
		JKKTelnoStatJudgeCC TelnoStatJudgeCC = new JKKTelnoStatJudgeCC();
		param.setData("telnoStatJudgeCc", telNoStatJudgeCc);
		TelnoStatJudgeCC.telnoStatJudge(handle, param, "telnoStatJudgeCc");
		
		HashMap<String, Object> telnoStatJudgeCcHashMap = (HashMap<String, Object>)param.getData("telnoStatJudgeCc");
		
		ArrayList telNoStatJudgeCcList = (ArrayList)telnoStatJudgeCcHashMap.get(JKKTelnoStatJudgeConstCC.TELNOSTATJUDGECC_LIST);
		HashMap telNoStatJudgeCcListHashMap = (HashMap)telNoStatJudgeCcList.get(0);
		String telnoMonaiBmpUm = (String)telNoStatJudgeCcListHashMap.get(JKKTelnoStatJudgeConstCC.MONAIBMPUM);
		
		// 電話番号状態区分を返す
		return telnoMonaiBmpUm;
	}
	
	
	/**
	 * 電話番号一覧照会サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callEZM0121A010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			String telNo,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// EZM0121A010への呼び出しパラメータ設定
		template = new CAANMsg(EZM0121A010CBSMsg.class.getName());
		mapper.mappingEZM0121A010InMsg(template, telNo);
		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)
		{
			resultHash.put(TEMPLATE_ID_EZM0121A010, mapper.mappingEZM0121A010SCOutMsg(resultMsgs));
		}

		return status;
	}
	
	/**
	 * 電話番号変更サービスＩＦ呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param svcKeiNo サービス契約番号
	 * @param inHash 設定条件
	 * @param resultHash 一時金設定一覧照会結果
	 * @return サービスインターフェースのリターンコード
	 * @throws Throwable 例外時にスローされます。
	 */
	private int callEZM0121C010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,			
			HashMap<String, Object> resultHash,
			String kojinHojinTlnTaiCd,
			HashMap<String, Object> eZM0121A010HashList
	) throws Throwable
	{
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		int status = 0;

		// EKK1021C010への呼び出しパラメータ設定
		template = new CAANMsg(EZM0121C010CBSMsg.class.getName());
		mapper.mappingEZM0121C010InMsg(template, resultHash, kojinHojinTlnTaiCd, eZM0121A010HashList);

		resultMsgs = callSCCmn(param, handle, template);

		// 結果ありの場合
		if(resultMsgs != null)
		{
			resultHash.put(TEMPLATE_ID_EZM0121C010, mapper.mappingCAANOutMsgAdd(resultMsgs));
		}

		// ステータスコードの取得
		status = template.getInt(JCMConstants.STATUS_INT_KEY);

		return status;
	}
	// ANK-4494-00-00 ADD END
	// ANK-4494-00-00 ADD START
	/**
	 * 電話番号のポートアウト有無を返します。
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param telno 電話番号
	 * @retun telnoJudgeDiv 電話番ポ有無
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	protected String getTelnPortoutUm(
			SessionHandle handle
			,IRequestParameterReadWrite param
			,String telno
	) throws Throwable
	{
		HashMap<String, Object> telNoStatJudgeCc = new HashMap<String, Object>();
		
		telNoStatJudgeCc.put(JKKTelnoStatJudgeConstCC.TELNO, telno);
		
		//電話番号状態判定部品を呼び出し
		JKKTelnoStatJudgeCC TelnoStatJudgeCC = new JKKTelnoStatJudgeCC();
		param.setData("telnoStatJudgeCc", telNoStatJudgeCc);
		TelnoStatJudgeCC.telnoStatJudge(handle, param, "telnoStatJudgeCc");
		
		HashMap<String, Object> telnoStatJudgeCcHashMap = (HashMap<String, Object>)param.getData("telnoStatJudgeCc");
		
		ArrayList telNoStatJudgeCcList = (ArrayList)telnoStatJudgeCcHashMap.get(JKKTelnoStatJudgeConstCC.TELNOSTATJUDGECC_LIST);
		HashMap telNoStatJudgeCcListHashMap = (HashMap)telNoStatJudgeCcList.get(0);
		String telnoPortoutUm = (String)telNoStatJudgeCcListHashMap.get(JKKTelnoStatJudgeConstCC.PORTOUTSTATUM);
		
		// 電話番号状態区分を返す
		return telnoPortoutUm;
	}
	// ANK-4494-00-00 ADD END
	// ANK-4685-00-00 ADD START
	/**
	 * 通信事業者一覧照会サービスIFを呼び出し
	 * @param param リクエストパラメータ
	 * @param handle セッションハンドル
	 * @param inHash 条件用Hash
	 * @param resultHash 結果のハッシュ
	 * @return サービスインターフェースのリターンコード
	 * @throws RequestParameterException, SCException 例外時にスローされます
	 */
	private int callETU0051B010SC(
			IRequestParameterReadWrite param,
			SessionHandle handle,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		HashMap<String, Object> sIFRequest = null;
		CAANMsg[] resultMsgs = null;
		CAANMsg template = null;
		ServiceComponentRequestInvoker scCall = null;
		Map<?, ?> sIFResult = null;
		int status = 0;

		// サービスIF共通の情報を設定
		sIFRequest = editInMsgCmn(param);

		// ETU0051B010への呼び出しパラメータ設定
		template = new CAANMsg(ETU0051B010CBSMsg.class.getName());
		mapper.mappingETU0051B010InMsg(template);
		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)
		{
			resultHash.put(TEMPLATE_ID_ETU0051B010, mapper.mappingETU0051B010SCOutMsg(resultMsgs));
		}

		return status;
	}
	// ANK-4685-00-00 ADD END
}
