/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUDslNetOpSvcKeiCC
*   ソースファイル名：JFUDslNetOpSvcKeiCC.java
*   作成者          ：富士通
*   日付            ：2014年12月01日
*＜機能概要＞
*   eo光ネットオプションサービス契約解約コンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v14.00      2014/12/01   FJ）谷本    新規作成
*   v14.00      2015/11/22   FJ）中谷    変更【OM-2015-0002670】IPv6解約時のSOD不具合対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JFUCommonUtil;
import eo.ejb.cbs.cbsmsg.ECK0151D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021C060CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351C220CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351C240CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351C250CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0361A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0361C050CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0401B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0401C150CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401C170CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401C180CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0411A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0411A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0411C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0111B030CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0111B030CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0111C010CBSMsg;

/**
 * eo光ネットオプションサービス契約解約コンポーネント部品
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUDslNetOpSvcKeiCC extends JFUBaseNetChgCommonCC
{

	/** オプション解約区分 */
	private static final String IN_OP_DSL_DIV = "net_dsl_div";

	/** オプション解約区分：メールアドレスのWEB解約 */
	private static final String OP_DSL_DIV_MLAD = "1";
	/** オプション解約区分：メールウィルスチェックサービスのWEB解約 */
	private static final String OP_DSL_DIV_VC = "2";
	/** オプション解約区分：Myホームページ容量削減のWEB対応 */
	private static final String OP_DSL_DIV_HP = "3";
	/** オプション解約区分：リモートサポートプラスのWEB解約 */
	private static final String OP_DSL_DIV_RS = "4";
	/** オプション解約区分：IPv6サービスのWEB解約 */
	private static final String OP_DSL_DIV_IPV6 = "5";

	/** IN項目：最終更新年月日時分秒 */
	private static final String IN_LAST_UPD_DTM = "last_upd_dtm";

	/** IN項目：SYSID */
	private static final String IN_SYSID = "sysId";

	/** IN項目：オプションサービス契約解約リスト */
	private static final String IN_OP_SVC_KEI_DSL_LIST = "op_svc_kei_dsl_list";

	/** オプションサービス契約番号 */
	private static final String IN_OP_SVC_KEI_NO = "op_svc_kei_no";

	/** サブオプションサービス契約番号 */
	private static final String IN_SBOP_SVC_KEI_NO = "sbop_svc_kei_no";

	/** サービス契約番号 */
	private static final String IN_SVC_KEI_NO = "svc_kei_no";

	/** 進捗特記事項1 */
	private static final String IN_PRG_TKJK_1 = "prg_tkjk_1";

	/** 容量 */
	private static final String IN_CAPA = "capa";

	/** 追加容量 */
	private static final String IN_ADD_CAPA = "add_capa";

	/** OUT項目(非課金判定部品):サービス課金終了日 */
	private static final String OUT_PARAM_SVC_CHRG_ENDYMD = "svcChrgEndYmd";
	/** OUT項目(非課金判定部品):課金フラグ */
	private static final String OUT_PARAM_CHRGFLG = "chrgFlg";

	/* ■□ EKK0011D020_申込内容承認登録SC ■□ */
	/** テンプレートID(申込内容承認登録) */
	private static final String TEMP_ID_EKK0011D020 = "EKK0011D020";
	/** テンプレートID(明細)(申込内容承認登録) */
	private static final String TEMP_ID_DTL_EKK0011D020 = EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST;
	/** IN項目リスト(申込内容承認登録) */
	private static final List<String> IN_COL_LIST_EKK0011D020 =
			Arrays.asList(EKK0011D020CBSMsg.SYSID, EKK0011D020CBSMsg.MSKM_SBT_CD, EKK0011D020CBSMsg.MSKMSHO_ARIV_YMD, EKK0011D020CBSMsg.MSKM_UK_DTM,
					EKK0011D020CBSMsg.MSKM_UK_TNT_USER_ID, EKK0011D020CBSMsg.MSKM_YMD, EKK0011D020CBSMsg.TTL_BUSINESS_CENTER_UK_NO,
					EKK0011D020CBSMsg.TTL_BUSINESS_MSKM_OPT_CD, EKK0011D020CBSMsg.MSKM_RRKS_TELNO, EKK0011D020CBSMsg.MSKM_JSSIS_SBT_CD,
					EKK0011D020CBSMsg.CUST_YOBO_JIKO, EKK0011D020CBSMsg.TEL_RRK_KIBOD_SBT_CD, EKK0011D020CBSMsg.TEL_RRK_KIBO_TIME_CD,
					EKK0011D020CBSMsg.TAKCHO_KIBOD_SBT_CD, EKK0011D020CBSMsg.TAKCHO_KIBO_TIME_CD, EKK0011D020CBSMsg.KARI_MSKM_FLG,
					EKK0011D020CBSMsg.REFERER, EKK0011D020CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM, EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_YH,
					EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO, EKK0011D020CBSMsg.USE_SVC_KEIZK_SBT_CD, EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD,
					EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD, EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO, EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD,
					EKK0011D020CBSMsg.AGNT_MSKM_TRTG_UM);
	/** SC実行結果取得キー(申込内容承認登録) */
	private static final String TEMP_TEMP_KEY_EKK0011D020 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0011D020 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK1091D010_進捗登録SC ■□ */
	/** テンプレートID(進捗登録) */
	private static final String TEMP_ID_EKK1091D010 = "EKK1091D010";
	/** テンプレートID(明細)(進捗登録) */
	private static final String TEMP_ID_DTL_EKK1091D010 = EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST;
	/** IN項目リスト(進捗登録) */
	private static final List<String> IN_COL_LIST_EKK1091D010 =
			Arrays.asList(EKK1091D010CBSMsg.MSKM_DTL_NO, EKK1091D010CBSMsg.SEIKY_KEI_NO, EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA,
					EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD, EKK1091D010CBSMsg.SVC_KEI_NO, EKK1091D010CBSMsg.SVC_KEI_UCWK_NO,
					EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, EKK1091D010CBSMsg.KKTK_SVC_KEI_NO, EKK1091D010CBSMsg.OP_SVC_KEI_NO,
					EKK1091D010CBSMsg.SEIOPSVC_KEI_NO, EKK1091D010CBSMsg.SBOP_SVC_KEI_NO, EKK1091D010CBSMsg.WRIB_SVC_KEI_NO,
					EKK1091D010CBSMsg.IDO_DIV, EKK1091D010CBSMsg.IDO_DTM, EKK1091D010CBSMsg.PRG_STAT, EKK1091D010CBSMsg.PRG_MEMO,
					EKK1091D010CBSMsg.PRG_TKJK_1, EKK1091D010CBSMsg.PRG_TKJK_2);

	/* ■□ EKK0021C060_申込明細照査・後続業務依頼SC ■□ */
	/** テンプレートID(申込明細照査・後続業務依頼) */
	private static final String TEMP_ID_EKK0021C060 = "EKK0021C060";
	/** IN項目リスト(申込明細照査・後続業務依頼) */
	private static final List<String> IN_COL_LIST_EKK0021C060 =
			Arrays.asList(EKK0021C060CBSMsg.MSKM_DTL_NO, EKK0021C060CBSMsg.RRK_JIKO_ADD_DTM, EKK0021C060CBSMsg.MSKM_DTL_SHOSA_DTM,
					EKK0021C060CBSMsg.KZKWRK_REQYMD, EKK0021C060CBSMsg.RRK_JIKO, EKK0021C060CBSMsg.UPD_DTM_BF, EKK0021C060CBSMsg.IDO_DIV,
					EKK0021C060CBSMsg.TELNO, EKK0021C060CBSMsg.DAIHYO_TELNO, EKK0021C060CBSMsg.TELNO_USE_PLACE_NO,
					EKK0021C060CBSMsg.SIP_USER_ID_DEL_ZUMI_FLG, EKK0021C060CBSMsg.TEL_BAS_HOST_ID, EKK0021C060CBSMsg.N_050_OP_TELNO,
					EKK0021C060CBSMsg.KIKI_NINSHO_ID, EKK0021C060CBSMsg.KIKI_NINSHO_ID_PWD);

	/* ■□ EZM0111C010_エイジング対象使用終了SC ■□ */
	/** テンプレートID(エイジング対象使用終了) */
	private static final String TEMP_ID_EZM0111C010 = "EZM0111C010";
	/** IN項目リスト(エイジング対象使用終了) */
	private static final List<String> IN_COL_LIST_EZM0111C010 =
			Arrays.asList(EZM0111C010CBSMsg.AGING_NO, EZM0111C010CBSMsg.AGING_SBT_CD, EZM0111C010CBSMsg.AGING_TG_VALUE,
					EZM0111C010CBSMsg.USE_END_DTM, EZM0111C010CBSMsg.LAST_UPD_DTM_BF);

	/* ■□ EKK0351A010_オプションサービス契約一意照会SC ■□ */
	/** テンプレートID(オプションサービス契約一意照会) */
	private static final String TEMP_ID_EKK0351A010 = "EKK0351A010";
	/** テンプレートID(オプションサービス契約一意照会明細) */
	private static final String TEMP_ID_DTL_EKK0351A010 = EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST;
	/** IN項目リスト(オプションサービス契約一意照会) */
	private static final List<String> IN_COL_LIST_EKK0351A010 =
			Arrays.asList(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO, EKK0351A010CBSMsg.KEY_GENE_ADD_DTM, EKK0351A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェック,エラー項目(オプションサービス契約一意照会) */
	private static final String ERR_COL_EKK0351A010 = EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(オプションサービス契約一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0351A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0351A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0351C220_オプションサービス契約キャンセルSC ■□ */
	/** テンプレートID(オプションサービス契約キャンセル) */
	private static final String TEMP_ID_EKK0351C220 = "EKK0351C220";
	/** テンプレートID(オプションサービス契約キャンセル明細) */
	private static final String TEMP_ID_DTL_EKK0351C220 = null;
	/** IN項目リスト(オプションサービス契約キャンセル) */
	private static final List<String> IN_COL_LIST_EKK0351C220 =
			Arrays.asList(EKK0351C220CBSMsg.OP_SVC_KEI_NO, EKK0351C220CBSMsg.MSKM_DTL_NO, EKK0351C220CBSMsg.SVC_CANCEL_RSN_CD,
					EKK0351C220CBSMsg.IDO_DIV, EKK0351C220CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(オプションサービス契約キャンセル) */
	private static final String ERR_COL_EKK0351C220 = null;
	/** SC実行結果取得キー(オプションサービス契約キャンセル) */
	private static final String TEMP_TEMP_KEY_EKK0351C220 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0351C220 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0151D010_指示書登録SC ■□ */
	/** テンプレートID(指示書登録) */
	private static final String TEMP_ID_ECK0151D010 = "ECK0151D010";
	/** テンプレートID(指示書登録明細) */
	private static final String TEMP_ID_DTL_ECK0151D010 = null;
	/** IN項目リスト(指示書登録) */
	private static final List<String> IN_COL_LIST_ECK0151D010 =
			Arrays.asList(ECK0151D010CBSMsg.TRN_CD, ECK0151D010CBSMsg.TRGT_TABLE_ID, ECK0151D010CBSMsg.TRAN_TRGT_SYSID, ECK0151D010CBSMsg.RSLT_FLG,
					ECK0151D010CBSMsg.PARAMETER_YK_CNT, ECK0151D010CBSMsg.PARAMETER_1, ECK0151D010CBSMsg.PARAMETER_2, ECK0151D010CBSMsg.PARAMETER_3,
					ECK0151D010CBSMsg.PARAMETER_4, ECK0151D010CBSMsg.PARAMETER_5, ECK0151D010CBSMsg.PARAMETER_6, ECK0151D010CBSMsg.PARAMETER_7,
					ECK0151D010CBSMsg.PARAMETER_8, ECK0151D010CBSMsg.PARAMETER_9, ECK0151D010CBSMsg.PARAMETER_10, ECK0151D010CBSMsg.PARAMETER_11,
					ECK0151D010CBSMsg.PARAMETER_12, ECK0151D010CBSMsg.PARAMETER_13, ECK0151D010CBSMsg.PARAMETER_14, ECK0151D010CBSMsg.PARAMETER_15,
					ECK0151D010CBSMsg.PARAMETER_16, ECK0151D010CBSMsg.PARAMETER_17, ECK0151D010CBSMsg.PARAMETER_18, ECK0151D010CBSMsg.PARAMETER_19,
					ECK0151D010CBSMsg.PARAMETER_20, ECK0151D010CBSMsg.PARAMETER_21, ECK0151D010CBSMsg.PARAMETER_22, ECK0151D010CBSMsg.PARAMETER_23,
					ECK0151D010CBSMsg.PARAMETER_24, ECK0151D010CBSMsg.PARAMETER_25, ECK0151D010CBSMsg.PARAMETER_26, ECK0151D010CBSMsg.PARAMETER_27,
					ECK0151D010CBSMsg.PARAMETER_28, ECK0151D010CBSMsg.PARAMETER_29, ECK0151D010CBSMsg.PARAMETER_30, ECK0151D010CBSMsg.PARAMETER_31,
					ECK0151D010CBSMsg.PARAMETER_32, ECK0151D010CBSMsg.PARAMETER_33, ECK0151D010CBSMsg.PARAMETER_34, ECK0151D010CBSMsg.PARAMETER_35,
					ECK0151D010CBSMsg.PARAMETER_36, ECK0151D010CBSMsg.PARAMETER_37, ECK0151D010CBSMsg.PARAMETER_38, ECK0151D010CBSMsg.PARAMETER_39,
					ECK0151D010CBSMsg.PARAMETER_40, ECK0151D010CBSMsg.PARAMETER_41, ECK0151D010CBSMsg.PARAMETER_42, ECK0151D010CBSMsg.PARAMETER_43,
					ECK0151D010CBSMsg.PARAMETER_44, ECK0151D010CBSMsg.PARAMETER_45, ECK0151D010CBSMsg.PARAMETER_46, ECK0151D010CBSMsg.PARAMETER_47,
					ECK0151D010CBSMsg.PARAMETER_48, ECK0151D010CBSMsg.PARAMETER_49, ECK0151D010CBSMsg.PARAMETER_50);
	/** 関連チェックエラー項目(指示書登録) */
	private static final String ERR_COL_ECK0151D010 = null;

	/* ■□ EKK0401A010_サブオプションサービス契約一意照会SC ■□ */
	/** テンプレートID(サブオプションサービス契約一意照会) */
	private static final String TEMP_ID_EKK0401A010 = "EKK0401A010";
	/** テンプレートID(サブオプションサービス契約一意照会明細) */
	private static final String TEMP_ID_DTL_EKK0401A010 = EKK0401A010CBSMsg.EKK0401A010CBSMSG1LIST;
	/** IN項目リスト(サブオプションサービス契約一意照会) */
	private static final List<String> IN_COL_LIST_EKK0401A010 =
			Arrays.asList(EKK0401A010CBSMsg.KEY_OP_SVC_KEI_NO, EKK0401A010CBSMsg.KEY_SBOP_SVC_KEI_NO, EKK0401A010CBSMsg.KEY_GENE_ADD_DTM,
					EKK0401A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェック,エラー項目(サブオプションサービス契約一意照会) */
	private static final String ERR_COL_EKK0401A010 = EKK0401A010CBSMsg.KEY_SBOP_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サブオプションサービス契約一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0401A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0401A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0401B001_サブオプションサービス契約一覧照会SC ■□ */
	/** テンプレートID(サブオプションサービス契約一覧照会) */
	private static final String TEMP_ID_EKK0401B001 = "EKK0401B001";
	/** テンプレートID(サブオプションサービス契約一覧照会明細) */
	private static final String TEMP_ID_DTL_EKK0401B001 = EKK0401B001CBSMsg.EKK0401B001CBSMSG1LIST;
	/** IN項目リスト(サブオプションサービス契約一覧照会) */
	private static final List<String> IN_COL_LIST_EKK0401B001 = Arrays.asList(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO);
	/** 関連チェック,エラー項目(サブオプションサービス契約一覧照会) */
	private static final String ERR_COL_EKK0401B001 = EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サブオプションサービス契約一覧照会) */
	private static final String TEMP_TEMP_KEY_EKK0401B001 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0401B001 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0401C150_サブオプションサービス契約キャンセルSC ■□ */
	/** テンプレートID(サブオプションサービス契約キャンセル) */
	private static final String TEMP_ID_EKK0401C150 = "EKK0401C150";
	/** テンプレートID(サブオプションサービス契約キャンセル明細) */
	private static final String TEMP_ID_DTL_EKK0401C150 = null;
	/** IN項目リスト(サブオプションサービス契約キャンセル) */
	private static final List<String> IN_COL_LIST_EKK0401C150 =
			Arrays.asList(EKK0401C150CBSMsg.OP_SVC_KEI_NO, EKK0401C150CBSMsg.SBOP_SVC_KEI_NO, EKK0401C150CBSMsg.MSKM_DTL_NO,
					EKK0401C150CBSMsg.SVC_CANCEL_RSN_CD, EKK0401C150CBSMsg.IDO_DIV, EKK0401C150CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(サブオプションサービス契約キャンセル) */
	private static final String ERR_COL_EKK0401C150 = null;
	/** SC実行結果取得キー(サブオプションサービス契約キャンセル) */
	private static final String TEMP_TEMP_KEY_EKK0401C150 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0401C150 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0401C170_サブオプションサービス契約解約SC ■□ */
	/** テンプレートID(サブオプションサービス契約解約) */
	private static final String TEMP_ID_EKK0401C170 = "EKK0401C170";
	/** テンプレートID(サブオプションサービス契約解約明細) */
	private static final String TEMP_ID_DTL_EKK0401C170 = null;
	/** IN項目リスト(サブオプションサービス契約解約) */
	private static final List<String> IN_COL_LIST_EKK0401C170 =
			Arrays.asList(EKK0401C170CBSMsg.OP_SVC_KEI_NO, EKK0401C170CBSMsg.SBOP_SVC_KEI_NO, EKK0401C170CBSMsg.MSKM_DTL_NO,
					EKK0401C170CBSMsg.RSV_TSTA_KIBO_YMD, EKK0401C170CBSMsg.SVC_ENDYMD, EKK0401C170CBSMsg.SVC_CHRG_ENDYMD,
					EKK0401C170CBSMsg.SVC_DLRE_CD, EKK0401C170CBSMsg.SVC_DLRE_MEMO, EKK0401C170CBSMsg.PNLTY_HASSEI_CD, EKK0401C170CBSMsg.IDO_DIV,
					EKK0401C170CBSMsg.UPD_DTM_BF, EKK0401C170CBSMsg.OP_HKTGI_SK_SVC_KEI_NO);
	/** 関連チェックエラー項目(サブオプションサービス契約解約) */
	private static final String ERR_COL_EKK0401C170 = null;
	/** SC実行結果取得キー(サブオプションサービス契約解約) */
	private static final String TEMP_TEMP_KEY_EKK0401C170 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0401C170 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0401C180_サブオプションサービス契約解約確定SC ■□ */
	/** テンプレートID(サブオプションサービス契約解約確定) */
	private static final String TEMP_ID_EKK0401C180 = "EKK0401C180";
	/** テンプレートID(サブオプションサービス契約解約確定明細) */
	private static final String TEMP_ID_DTL_EKK0401C180 = null;
	/** IN項目リスト(サブオプションサービス契約解約確定) */
	private static final List<String> IN_COL_LIST_EKK0401C180 =
			Arrays.asList(EKK0401C180CBSMsg.OP_SVC_KEI_NO, EKK0401C180CBSMsg.SBOP_SVC_KEI_NO, EKK0401C180CBSMsg.SVC_ENDYMD,
					EKK0401C180CBSMsg.SVC_CHRG_ENDYMD, EKK0401C180CBSMsg.SVC_DLRE_CD, EKK0401C180CBSMsg.SVC_DLRE_MEMO, EKK0401C180CBSMsg.UPD_DTM_BF,
					EKK0401C180CBSMsg.DSLJI_CHRG_FLG);
	/** 関連チェックエラー項目(サブオプションサービス契約解約確定) */
	private static final String ERR_COL_EKK0401C180 = null;
	/** SC実行結果取得キー(サブオプションサービス契約解約確定) */
	private static final String TEMP_TEMP_KEY_EKK0401C180 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0401C180 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0081A010_サービス契約一意照会SC ■□ */
	/** テンプレートID(サービス契約一意照会) */
	private static final String TEMP_ID_EKK0081A010 = "EKK0081A010";
	/** テンプレートID(サービス契約一意照会明細) */
	private static final String TEMP_ID_DTLEKK0081A010 = EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST;
	/** IN項目リスト(サービス契約一意照会) */
	private static final List<String> IN_COL_LIST_EKK0081A010 =
			Arrays.asList(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, EKK0081A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(サービス契約一意照会) */
	private static final String ERR_COL_EKK0081A010 = EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サービス契約一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0081A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0081A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0361A010_オプションサービス契約＜ISP＞一意照会SC ■□ */
	/** テンプレートID(オプションサービス契約＜ISP＞一意照会) */
	private static final String TEMP_ID_EKK0361A010 = "EKK0361A010";
	/** テンプレートID(オプションサービス契約＜ISP＞一意照会) */
	private static final String TEMP_ID_DTL_EKK0361A010 = EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST;
	/** IN項目リスト(オプションサービス契約＜ISP＞一意照会) */
	private static final List<String> IN_COL_LIST_EKK0361A010 =
			Arrays.asList(EKK0361A010CBSMsg.KEY_OP_SVC_KEI_NO, EKK0361A010CBSMsg.KEY_GENE_ADD_DTM);
	/** 関連チェックエラー項目(オプションサービス契約＜ISP＞一意照会) */
	private static final String ERR_COL_EKK0361A010 = EKK0361A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(オプションサービス契約＜ISP＞一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0361A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0361A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0411A010_サブサブオプションサービス契約＜ISP＞一意照会SC ■□ */
	/** テンプレートID(サブオプションサービス契約＜ISP＞一意照会) */
	private static final String TEMP_ID_EKK0411A010 = "EKK0411A010";
	/** テンプレートID(サブオプションサービス契約＜ISP＞一意照会) */
	private static final String TEMP_ID_DTL_EKK0411A010 = EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST;
	/** IN項目リスト(サブオプションサービス契約＜ISP＞一意照会) */
	private static final List<String> IN_COL_LIST_EKK0411A010 =
			Arrays.asList(EKK0411A010CBSMsg.KEY_OP_SVC_KEI_NO, EKK0411A010CBSMsg.KEY_SBOP_SVC_KEI_NO, EKK0411A010CBSMsg.KEY_GENE_ADD_DTM);
	/** 関連チェックエラー項目(サブオプションサービス契約＜ISP＞一意照会) */
	private static final String ERR_COL_EKK0411A010 = EKK0411A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サブオプションサービス契約＜ISP＞一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0411A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0411A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EZM0111B030_エイジング一覧照会(エイジング対象値)SC ■□ */
	/** テンプレートID(エイジング一覧照会(エイジング対象値)) */
	private static final String TEMP_ID_EZM0111B030 = "EZM0111B030";
	/** テンプレートID(エイジング一覧照会(エイジング対象値)明細) */
	private static final String TEMP_ID_DTL_EZM0111B030 = EZM0111B030CBSMsg.EZM0111B030CBSMSG1LIST;
	/** IN項目リスト(エイジング一覧照会(エイジング対象値)) */
	private static final List<String> IN_COL_LIST_EZM0111B030 =
			Arrays.asList(EZM0111B030CBSMsg.KEY_AGING_SBT_CD, EZM0111B030CBSMsg.KEY_AGING_TG_VALUE);
	/** 関連チェックエラー項目(エイジング一覧照会(エイジング対象値)) */
	private static final String ERR_COL_EZM0111B030 = EZM0111B030CBSMsg.KEY_AGING_SBT_CD_ERR;
	/** SC実行結果取得キー(オプションサービス契約解約) */
	private static final String TEMP_TEMP_KEY_EZM0111B030 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EZM0111B030 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0351C240_オプションサービス契約解約SC ■□ */
	/** テンプレートID(オプションサービス契約解約) */
	private static final String TEMP_ID_EKK0351C240 = "EKK0351C240";
	/** テンプレートID(オプションサービス契約解約明細) */
	private static final String TEMP_ID_DTL_EKK0351C240 = null;
	/** IN項目リスト(オプションサービス契約解約) */
	private static final List<String> IN_COL_LIST_EKK0351C240 =
			Arrays.asList(EKK0351C240CBSMsg.OP_SVC_KEI_NO, EKK0351C240CBSMsg.MSKM_DTL_NO, EKK0351C240CBSMsg.RSV_TSTA_KIBO_YMD,
					EKK0351C240CBSMsg.SVC_ENDYMD, EKK0351C240CBSMsg.SVC_CHRG_ENDYMD, EKK0351C240CBSMsg.SVC_DLRE_CD, EKK0351C240CBSMsg.SVC_DLRE_MEMO,
					EKK0351C240CBSMsg.DSL_TNT_USER_ID, EKK0351C240CBSMsg.PNLTY_HASSEI_CD, EKK0351C240CBSMsg.IDO_DIV, EKK0351C240CBSMsg.UPD_DTM_BF,
					EKK0351C240CBSMsg.OP_HKTGI_SK_SVC_KEI_NO, EKK0351C240CBSMsg.WARN_FLG);
	/** 関連チェックエラー項目(オプションサービス契約解約) */
	private static final String ERR_COL_EKK0351C240 = null;
	/** SC実行結果取得キー(オプションサービス契約解約) */
	private static final String TEMP_TEMP_KEY_EKK0351C240 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0351C240 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0351C250_オプションサービス契約解約確定SC ■□ */
	/** テンプレートID(オプションサービス契約解約確定) */
	private static final String TEMP_ID_EKK0351C250 = "EKK0351C250";
	/** テンプレートID(オプションサービス契約解約確定明細) */
	private static final String TEMP_ID_DTL_EKK0351C250 = null;
	/** IN項目リスト(オプションサービス契約解約確定) */
	private static final List<String> IN_COL_LIST_EKK0351C250 =
			Arrays.asList(EKK0351C250CBSMsg.OP_SVC_KEI_NO, EKK0351C250CBSMsg.SVC_ENDYMD, EKK0351C250CBSMsg.SVC_CHRG_ENDYMD,
					EKK0351C250CBSMsg.SVC_DLRE_CD, EKK0351C250CBSMsg.SVC_DLRE_MEMO, EKK0351C250CBSMsg.DSL_TNT_USER_ID, EKK0351C250CBSMsg.IDO_DIV,
					EKK0351C250CBSMsg.UPD_DTM_BF, EKK0351C250CBSMsg.DSLJI_CHRG_FLG, EKK0351C250CBSMsg.PLAN_END_SBT_CD);
	/** 関連チェックエラー項目(オプションサービス契約解約確定) */
	private static final String ERR_COL_EKK0351C250 = null;
	/** SC実行結果取得キー(オプションサービス契約解約確定) */
	private static final String TEMP_TEMP_KEY_EKK0351C250 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0351C250 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0361C050_オプションサービス契約＜ISP＞情報変更SC ■□ */
	/** テンプレートID(オプションサービス契約＜ISP＞情報変更) */
	private static final String TEMP_ID_EKK0361C050 = "EKK0361C050";
	/** テンプレートID(オプションサービス契約＜ISP＞情報変更明細) */
	private static final String TEMP_ID_DTL_EKK0361C050 = null;
	/** IN項目リスト(オプションサービス契約＜ISP＞情報変更) */
	private static final List<String> IN_COL_LIST_EKK0361C050 =
			Arrays.asList(EKK0361C050CBSMsg.OP_SVC_KEI_NO, EKK0361C050CBSMsg.MSKM_DTL_NO, EKK0361C050CBSMsg.FTRIAL_KANYU_YMD,
					EKK0361C050CBSMsg.FTRIAL_PRD_ENDYMD, EKK0361C050CBSMsg.HONKANYU_YMD, EKK0361C050CBSMsg.HONKANYU_IKO_KIGEN_YMD,
					EKK0361C050CBSMsg.SVC_DLRE_CD, EKK0361C050CBSMsg.PNLTY_HASSEI_CD, EKK0361C050CBSMsg.IDO_DIV, EKK0361C050CBSMsg.KIBO_ML_ACCOUNT_1,
					EKK0361C050CBSMsg.KIBO_ML_ACCOUNT_2, EKK0361C050CBSMsg.KIBO_ML_ACCOUNT_3, EKK0361C050CBSMsg.MLTISE_SESSION_CNT,
					EKK0361C050CBSMsg.KOTEI_IP_AD, EKK0361C050CBSMsg.NETMASK, EKK0361C050CBSMsg.CAPA, EKK0361C050CBSMsg.URL_DOMAIN,
					EKK0361C050CBSMsg.URL_ACCOUNT, EKK0361C050CBSMsg.MLLIST_NM, EKK0361C050CBSMsg.MLLIST_KOSHO, EKK0361C050CBSMsg.MLLIST_KOKAI_YH,
					EKK0361C050CBSMsg.MLLIST_MAX_USER_CNT, EKK0361C050CBSMsg.MLLIST_KRISHA_MLAD, EKK0361C050CBSMsg.DOKUJI_DOMAIN_NM,
					EKK0361C050CBSMsg.HOSML_ACCOUNT_CNT, EKK0361C050CBSMsg.HOSML_BOX_CAPA, EKK0361C050CBSMsg.HOSML_KRISHA_ID,
					EKK0361C050CBSMsg.HOSTING_SHKM_KRISHA_ID_PWD, EKK0361C050CBSMsg.HOSML_KRISHA_POP_ID,
					EKK0361C050CBSMsg.HOS_SHKM_KRISHA_POP_ID_PWD, EKK0361C050CBSMsg.HOSML_KRISHA_MLAD, EKK0361C050CBSMsg.HOSML_KRISHA_MAIL_BOX_CAPA,
					EKK0361C050CBSMsg.DPAD_ID, EKK0361C050CBSMsg.DPAD_ISP_ID, EKK0361C050CBSMsg.DPAD_MAPID, EKK0361C050CBSMsg.DPAD_PIN,
					EKK0361C050CBSMsg.DPAD_MLAD, EKK0361C050CBSMsg.DPAD_ID_KOKAI_YH, EKK0361C050CBSMsg.VOIP_USER_ID, EKK0361C050CBSMsg.DNS_SETTE_CD,
					EKK0361C050CBSMsg.MAIL_GW_KRISHA_ID, EKK0361C050CBSMsg.MAIL_GW_KRISHA_ID_PWD, EKK0361C050CBSMsg.MAIL_GW_KRISHA_MLAD,
					EKK0361C050CBSMsg.MAIL_GW_RCV_MSERVER_IP_AD, EKK0361C050CBSMsg.MAIL_GW_SEND_MSERVER_IP_AD, EKK0361C050CBSMsg.ML_GW_ACCOUNT_CNT,
					EKK0361C050CBSMsg.SVC_KBT_SET_RRKS_MLAD, EKK0361C050CBSMsg.TUWA_DTL_KOKAI_YH, EKK0361C050CBSMsg.IPV6_AD_IFID,
					EKK0361C050CBSMsg.DSP_SVCTK_STAYMD, EKK0361C050CBSMsg.UPD_DTM_BF, EKK0361C050CBSMsg.SVCTK_BUT_DEL_TRN_JSSI_DTM,
					EKK0361C050CBSMsg.ML_VRSETTE_HKTGI_FLG, EKK0361C050CBSMsg.MLAD_CHGJ_ML_TNS_FLG, EKK0361C050CBSMsg.MLAD);
	/** 関連チェックエラー項目(オプションサービス契約＜ISP＞情報変更) */
	private static final String ERR_COL_EKK0361C050 = EKK0361C050CBSMsg.OP_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(オプションサービス契約＜ISP＞情報変更) */
	private static final String TEMP_TEMP_KEY_EKK0361C050 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0361C050 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0411C010_サブオプションサービス契約＜ISP＞変更SC ■□ */
	/** テンプレートID(サブオプションサービス契約＜ISP＞変更) */
	private static final String TEMP_ID_EKK0411C010 = "EKK0411C010";
	/** テンプレートID(サブオプションサービス契約＜ISP＞変更明細) */
	private static final String TEMP_ID_DTL_EKK0411C010 = null;
	/** IN項目リスト(サブオプションサービス契約＜ISP＞変更) */
	private static final List<String> IN_COL_LIST_EKK0411C010 =
			Arrays.asList(EKK0411C010CBSMsg.OP_SVC_KEI_NO, EKK0411C010CBSMsg.SBOP_SVC_KEI_NO, EKK0411C010CBSMsg.MSKM_DTL_NO,
					EKK0411C010CBSMsg.FTRIAL_KANYU_YMD, EKK0411C010CBSMsg.FTRIAL_PRD_ENDYMD, EKK0411C010CBSMsg.HONKANYU_YMD,
					EKK0411C010CBSMsg.HONKANYU_IKO_KIGEN_YMD, EKK0411C010CBSMsg.SVC_DLRE_CD, EKK0411C010CBSMsg.PNLTY_HASSEI_CD,
					EKK0411C010CBSMsg.IDO_DIV, EKK0411C010CBSMsg.ADD_CAPA, EKK0411C010CBSMsg.ALIAS, EKK0411C010CBSMsg.ALIAS_CHGE_YMD,
					EKK0411C010CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(サブオプションサービス契約＜ISP＞変更) */
	private static final String ERR_COL_EKK0411C010 = EKK0411C010CBSMsg.SBOP_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サブオプションサービス契約＜ISP＞変更) */
	private static final String TEMP_TEMP_KEY_EKK0411C010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0411C010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/** メールアドレス解約時対象サブオプション */
	private static final List<String> MLAD_DSL_SBOP = Arrays.asList(JFUStrConst.CD00137_D01, JFUStrConst.CD00137_D02, JFUStrConst.CD00137_D03);

	/** 無効なサービス契約ステータス */
	private static final List<String> SVC_KEI_STAT_MUKO = Arrays.asList(JFUStrConst.CD00037_910, JFUStrConst.CD00037_920);

	/**
	 * eo光ネットオプションサービス契約解約処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	public IRequestParameterReadWrite dslOpSvcKei(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// 開始ログ
		outDebugLog("----- dslOpSvcKei Start  -----");

		// リクエストパラメータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード取得
		String funcCode = getFuncCode(param, fixedText);

		// 実行判定
		// 機能コードが"1"(チェック＆登録)以外の場合
		if (!JPCModelConstant.FUNC_CD_1.equals(funcCode))
		{
			// 終了ログ
			outDebugLog("----- dslOpSvcKeiMlad End  -----");
			return param;
		}

		// ◆オプション解約区分の取得
		String opDslDiv = (String)inMap.get(IN_OP_DSL_DIV);

		// ○メールアドレスのWEB解約
		if (OP_DSL_DIV_MLAD.equals(opDslDiv))
		{
			dslOpSvcKeiMlad(handle, param, fixedText);
		}
		// ○メールウィルスチェックサービスのWEB解約
		if (OP_DSL_DIV_VC.equals(opDslDiv))
		{
			dslOpSvcKeiVc(handle, param, fixedText);
		}
		// ○Myホームページ容量削減のWEB対応
		if (OP_DSL_DIV_HP.equals(opDslDiv))
		{
			dslOpSvcKeiHp(handle, param, fixedText);
		}
		// ○リモートサポートプラスのWEB解約
		if (OP_DSL_DIV_RS.equals(opDslDiv))
		{
			dslOpSvcKeiRs(handle, param, fixedText);
		}
		// ○IPv6サービスのWEB解約
		if (OP_DSL_DIV_IPV6.equals(opDslDiv))
		{
			dslOpSvcKeiIPv6(handle, param, fixedText);
		}

		// 開始ログ
		outDebugLog("----- dslOpSvcKei Start  -----");
		return param;
	}

	/**
	 * eo光ネットオプションサービス契約解約実行処理（メールアドレス）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	private IRequestParameterReadWrite dslOpSvcKeiMlad(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{

		// 開始ログ
		outDebugLog("----- dslOpSvcKeiMlad Start  -----");

		// リクエストパラメータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ==============================================================================================================
		// ■ INPUTデータ
		// ==============================================================================================================
		// ○最新更新年月日時分秒
		String lastUpdDtm = JFUStrConst.EMPTY;
		// ○オプションサービス契約解約一覧取得
		ArrayList<HashMap<String, Object>> opSvcKeiDslList = (ArrayList)inMap.get(IN_OP_SVC_KEI_DSL_LIST);

		// INパラメータがなければエラーをスロー
		if (opSvcKeiDslList == null || opSvcKeiDslList.size() == 0)
		{
			// 終了ログ
			JFUBPCommon.printBpDebugLog(this.getClass(), "■■■ メールアドレスのWEB解約 入力値不正 オプションサービス契約リスト：NULL ■■■");
			// SCCallExceptionをスロー
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// ○SYSID
		String sysid = (String)(opSvcKeiDslList.get(0)).get(IN_SYSID);

		// ==============================================================================================================
		// ■ 申込明細申込処理（※SYSID単位)
		// ==============================================================================================================
		// ●EKK0011D020_申込内容承認登録
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0011D020);
		// 上りマッピング
		setInMapEKK0011D020(param, fixedText, sysid);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0011D020, TEMP_ID_DTL_EKK0011D020, IN_COL_LIST_EKK0011D020, BLANK);
		// 申込内容承認登録情報
		HashMap mskmNaiyoMap = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0011D020), TEMP_ID_DTL_EKK0011D020, 0);
		// 更新年月日時分秒
		String mskmUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0011D020), EKK0011D020CBSMsg.UPD_DTM);

		// ●EKK0021C060_申込明細照査・後続業務依頼
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0021C060);
		// 上りマッピング
		setInMapEKK0021C060(param, fixedText, mskmUpdDtm, mskmNaiyoMap);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0021C060, BLANK, IN_COL_LIST_EKK0021C060, BLANK);

		// ==============================================================================================================
		// ■ 解約処理
		// ==============================================================================================================
		// オプションサービス契約解約一覧の件数分、解約処理を行う。
		for (HashMap<String, Object> dslMap : opSvcKeiDslList)
		{

			// ○最新更新年月日時分秒（※サービス契約番号毎に値を設定されるので値が設定されている場合のみ使用する。）
			if (!JFUBPCommon.isNull((String)dslMap.get(IN_LAST_UPD_DTM)))
			{
				lastUpdDtm = (String)dslMap.get(IN_LAST_UPD_DTM);
			}
			// ○オプションサービス契約番号
			String opSvcKeiNo = (String)dslMap.get(IN_OP_SVC_KEI_NO);
			// INパラメータがなければエラーをスロー
			if (JFUBPCommon.isNull(opSvcKeiNo))
			{
				// 終了ログ
				JFUBPCommon.printBpDebugLog(this.getClass(), "■■■ メールアドレスのWEB解約 入力値不正 オプションサービス契約番号：NULL ■■■");
				// SCCallExceptionをスロー
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}

			// ==============================================================================================================
			// ■ オプションサービス契約情報取得（変更前）
			// ==============================================================================================================
			// ●EKK0351A010_オプションサービス契約一意照会（変更前）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0351A010);
			// 上りマッピング
			setInMapEKK0351A010(param, fixedText, opSvcKeiNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0351A010, TEMP_ID_DTL_EKK0351A010, IN_COL_LIST_EKK0351A010, ERR_COL_EKK0351A010);
			// オプションサービス契約情報（変更前）
			HashMap opInfoMapBf = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351A010), TEMP_ID_DTL_EKK0351A010, 0);

			// ●EKK0361A010_オプションサービス契約＜ISP＞一意照会（変更前）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0361A010);
			// 上りマッピング
			setInMapEKK0361A010(param, fixedText, opInfoMapBf);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0361A010, TEMP_ID_DTL_EKK0361A010, IN_COL_LIST_EKK0361A010, ERR_COL_EKK0361A010);
			// オプションサービス契約情報（変更前）
			HashMap opIspInfoMapBf = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0361A010), TEMP_ID_DTL_EKK0361A010, 0);

			// ==============================================================================================================
			// ■ サブオプション解約処理
			// ==============================================================================================================
			lastUpdDtm = dslSbOpSvcKeiMlad(handle, param, fixedText, opInfoMapBf, opIspInfoMapBf, mskmNaiyoMap, lastUpdDtm);

			// ==============================================================================================================
			// ■ SODマッピング処理(変更前)
			// ==============================================================================================================
			// ○SODマッピング処理（変更前）
			setSODMappingOpBf(handle, param, fixedText, opInfoMapBf, null, null);

			// ==============================================================================================================
			// ■ オプション解約処理
			// ==============================================================================================================
			// ◆キャンセル、解約の判定
			// 照査済の場合→キャンセル処理
			// 照査済み以外の場合（締結済み、サービス提供中）の場合→解約処理
			// オプションサービス契約ステータス
			if (JFUStrConst.CD00037_020.equals((String)opInfoMapBf.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				// ●EKK0351C220_オプションサービス契約キャンセル
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0351C220);
				// 上りマッピング
				setInMapEKK0351C220(param, fixedText, opInfoMapBf, mskmNaiyoMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0351C220, TEMP_ID_DTL_EKK0351C220, IN_COL_LIST_EKK0351C220, ERR_COL_EKK0351C220);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351C220), EKK0351C220CBSMsg.UPD_DTM);
			}
			else
			{
				// ●非課金判定処理(jdgHiChrg)
				HashMap hiChrgMap = jdgHiChrg(handle, param, fixedText, opInfoMapBf, null, "1");

				// ●EKK0351C240_オプションサービス契約解約
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0351C240);
				// 上りマッピング
				setInMapEKK0351C240(param, fixedText, opInfoMapBf, mskmNaiyoMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0351C240, TEMP_ID_DTL_EKK0351C240, IN_COL_LIST_EKK0351C240, ERR_COL_EKK0351C240);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351C240), EKK0351C240CBSMsg.UPD_DTM);

				// ●EKK0351C250_オプションサービス契約解約確定
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0351C250);
				// 上りマッピング
				setInMapEKK0351C250(param, fixedText, opInfoMapBf, hiChrgMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0351C250, TEMP_ID_DTL_EKK0351C250, IN_COL_LIST_EKK0351C250, ERR_COL_EKK0351C250);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351C250), EKK0351C250CBSMsg.UPD_DTM);
			}

			// ==============================================================================================================
			// ■ エイジング処理(POPID)
			// ==============================================================================================================
			dslAging(handle, param, fixedText, JFUStrConst.CD00412_007, (String)opIspInfoMapBf.get(EKK0361A010CBSMsg1List.POP_ID));

			// ==============================================================================================================
			// ■ エイジング処理(メールアドレス)
			// ==============================================================================================================
			dslAging(handle, param, fixedText, JFUStrConst.CD00412_009, (String)opIspInfoMapBf.get(EKK0361A010CBSMsg1List.MLAD));

			// ==============================================================================================================
			// ■ オプションサービス契約情報取得（変更後）
			// ==============================================================================================================
			// ●EKK0351A010_オプションサービス契約一意照会（変更後）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0351A010);
			// 上りマッピング
			setInMapEKK0351A010(param, fixedText, opSvcKeiNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0351A010, TEMP_ID_DTL_EKK0351A010, IN_COL_LIST_EKK0351A010, ERR_COL_EKK0351A010);
			// オプションサービス契約情報（変更前）
			HashMap opInfoMapAf = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351A010), TEMP_ID_DTL_EKK0351A010, 0);

			// ●EKK0361A010_オプションサービス契約一意照会（変更後）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0361A010);
			// 上りマッピング
			setInMapEKK0361A010(param, fixedText, opInfoMapAf);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0361A010, TEMP_ID_DTL_EKK0361A010, IN_COL_LIST_EKK0361A010, ERR_COL_EKK0361A010);
			// オプションサービス契約情報（変更前）
			HashMap opIspInfoMapAf = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0361A010), TEMP_ID_DTL_EKK0361A010, 0);

			// ==============================================================================================================
			// ■ SODマッピング処理(変更後)
			// ==============================================================================================================
			// ○SODマッピング処理（変更後）
			setSODMappingOpAf(handle, param, fixedText, opInfoMapAf, null);

			// ==============================================================================================================
			// ■ 進捗登録処理
			// ==============================================================================================================
			// ●EKK1091D010_進捗登録
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK1091D010);
			// 上りマッピング
			setInMapEKK1091D010(param, fixedText, dslMap, mskmNaiyoMap);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK1091D010, TEMP_ID_DTL_EKK1091D010, IN_COL_LIST_EKK1091D010, BLANK);

			// ==============================================================================================================
			// ■ 指示書登録処理
			// ==============================================================================================================
			// ●ECK0151D010_指示書登録
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_ECK0151D010);
			// 上りマッピング
			setInMapECK0151D010(param, fixedText, opInfoMapAf, opIspInfoMapAf);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_ECK0151D010, TEMP_ID_DTL_ECK0151D010, IN_COL_LIST_ECK0151D010, ERR_COL_ECK0151D010);

		}

		// 開始ログ
		outDebugLog("----- dslOpSvcKeiMlad Start  -----");
		return param;
	}

	/**
	 * eo光ネットオプションサービス契約解約実行処理（メールウィルスチェック）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	private IRequestParameterReadWrite dslOpSvcKeiVc(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{

		// 開始ログ
		outDebugLog("----- dslOpSvcKeiVc Start  -----");

		// リクエストパラメータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ==============================================================================================================
		// ■ INPUTデータ
		// ==============================================================================================================
		// ○最新更新年月日時分秒
		String lastUpdDtm = JFUStrConst.EMPTY;
		// ○オプションサービス契約解約一覧取得
		ArrayList<HashMap<String, Object>> opSvcKeiDslList = (ArrayList)inMap.get(IN_OP_SVC_KEI_DSL_LIST);

		// INパラメータがなければエラーをスロー
		if (opSvcKeiDslList == null || opSvcKeiDslList.size() == 0)
		{
			// 終了ログ
			outDebugLog("----- dslOpSvcKeiVc Error  -----");
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// ○SYSID
		String sysid = (String)(opSvcKeiDslList.get(0)).get(IN_SYSID);

		// ==============================================================================================================
		// ■ 申込明細申込処理（※SYSID単位)
		// ==============================================================================================================
		// ●EKK0011D020_申込内容承認登録
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0011D020);
		// 上りマッピング
		setInMapEKK0011D020(param, fixedText, sysid);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0011D020, TEMP_ID_DTL_EKK0011D020, IN_COL_LIST_EKK0011D020, BLANK);
		// 申込内容承認登録情報
		HashMap mskmNaiyoMap = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0011D020), TEMP_ID_DTL_EKK0011D020, 0);
		// 更新年月日時分秒
		String mskmUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0011D020), EKK0011D020CBSMsg.UPD_DTM);

		// ●EKK0021C060_申込明細照査・後続業務依頼
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0021C060);
		// 上りマッピング
		setInMapEKK0021C060(param, fixedText, mskmUpdDtm, mskmNaiyoMap);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0021C060, BLANK, IN_COL_LIST_EKK0021C060, BLANK);

		// ==============================================================================================================
		// ■ 解約処理
		// ==============================================================================================================
		// オプションサービス契約解約一覧の件数分、解約処理を行う。
		for (HashMap<String, Object> opSvcKeiDslMap : opSvcKeiDslList)
		{

			// ○最新更新年月日時分秒（※サービス契約番号毎に値を設定されるので値が設定されている場合のみ使用する。）
			if (!JFUBPCommon.isNull((String)opSvcKeiDslMap.get(IN_LAST_UPD_DTM)))
			{
				lastUpdDtm = (String)opSvcKeiDslMap.get(IN_LAST_UPD_DTM);
			}
			// ○オプションサービス契約番号
			String opSvcKeiNo = (String)opSvcKeiDslMap.get(IN_OP_SVC_KEI_NO);
			// INパラメータがなければエラーをスロー
			if (JFUBPCommon.isNull(lastUpdDtm) || JFUBPCommon.isNull(opSvcKeiNo))
			{
				// 終了ログ
				outDebugLog("----- dslOpSvcKeiMlad Error  -----");
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}

			// ●EKK0351A010_オプションサービス契約一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0351A010);
			// 上りマッピング
			setInMapEKK0351A010(param, fixedText, opSvcKeiNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0351A010, TEMP_ID_DTL_EKK0351A010, IN_COL_LIST_EKK0351A010, ERR_COL_EKK0351A010);
			// オプションサービス契約情報（変更前）
			HashMap opInfoMap = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351A010), TEMP_ID_DTL_EKK0351A010, 0);

			// ●EKK0401B001_サブオプションサービス契約一覧照会（変更前）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0401B001);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// 上りマッピング
			setInMapEKK0401B001(param, fixedText, opInfoMap);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0401B001, TEMP_ID_DTL_EKK0401B001, IN_COL_LIST_EKK0401B001, ERR_COL_EKK0401B001);
			// サブオプションサービス契約リスト
			List<HashMap> sbopSvcKeiList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401B001), TEMP_ID_DTL_EKK0401B001);

			// ==============================================================================================================
			// ■ 解約処理
			// ==============================================================================================================
			// サブオプションサービス契約解約一覧の件数分、解約処理を行う。
			for (HashMap sbopInfoMap : sbopSvcKeiList)
			{

				// ◆メールウィルスチェック以外はスキップ
				if (!JFUStrConst.CD00137_D03.equals(sbopInfoMap.get(EKK0401B001CBSMsg1List.SBOP_SVC_CD)))
				{
					continue;
				}

				// ●EKK0401A010_サブオプションサービス契約一意照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0401A010);
				// 上りマッピング
				setInMapEKK0401A010(param, fixedText, sbopInfoMap);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0401A010, TEMP_ID_DTL_EKK0401A010, IN_COL_LIST_EKK0401A010, ERR_COL_EKK0401A010);
				// サブオプションサービス契約情報
				HashMap sbopInfoMapBf =
						getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401A010), TEMP_ID_DTL_EKK0401A010, 0);

				// ○SODマッピング処理（変更前）
				setSODMappingOpVcBf(handle, param, fixedText, opInfoMap, sbopInfoMapBf);

				// ◆キャンセル、解約の判定
				// 照査済の場合→キャンセル処理
				// 照査済み以外の場合（締結済み、サービス提供中）の場合→解約処理
				// サブオプションサービス契約ステータス
				if (JFUStrConst.CD00037_020.equals((String)sbopInfoMapBf.get(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT)))
				{
					// ●EKK0401C150_サブオプションサービス契約キャンセル
					// ユーザデータ初期化
					initData(param, fixedText, IN_COL_LIST_EKK0401C150);
					// 上りマッピング
					setInMapEKK0401C150(param, fixedText, sbopInfoMapBf, mskmNaiyoMap, lastUpdDtm);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMP_ID_EKK0401C150, TEMP_ID_DTL_EKK0401C150, IN_COL_LIST_EKK0401C150, ERR_COL_EKK0401C150);
					// 更新年月日時分秒
					lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401C150), EKK0401C150CBSMsg.UPD_DTM);
				}
				else
				{
					// ●非課金判定処理(jdgHiChrg)
					HashMap hiChrgMap = jdgHiChrg(handle, param, fixedText, opInfoMap, sbopInfoMapBf, "2");

					// ●EKK0401C170_サブオプションサービス契約解約
					// ユーザデータ初期化
					initData(param, fixedText, IN_COL_LIST_EKK0401C170);
					// 上りマッピング
					setInMapEKK0401C170(param, fixedText, sbopInfoMapBf, mskmNaiyoMap, lastUpdDtm);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMP_ID_EKK0401C170, TEMP_ID_DTL_EKK0401C170, IN_COL_LIST_EKK0401C170, ERR_COL_EKK0401C170);
					// 更新年月日時分秒
					lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401C170), EKK0401C170CBSMsg.UPD_DTM);

					// ●EKK0401C180_サブオプションサービス契約解約確定
					// ユーザデータ初期化
					initData(param, fixedText, IN_COL_LIST_EKK0401C180);
					// 上りマッピング
					setInMapEKK0401C180(param, fixedText, sbopInfoMapBf, hiChrgMap, lastUpdDtm);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMP_ID_EKK0401C180, TEMP_ID_DTL_EKK0401C180, IN_COL_LIST_EKK0401C180, ERR_COL_EKK0401C180);
					// 更新年月日時分秒
					lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401C180), EKK0401C180CBSMsg.UPD_DTM);

				}

				// ●EKK0401A010_サブオプションサービス契約一意照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0401A010);
				// 上りマッピング
				setInMapEKK0401A010(param, fixedText, sbopInfoMapBf);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0401A010, TEMP_ID_DTL_EKK0401A010, IN_COL_LIST_EKK0401A010, ERR_COL_EKK0401A010);
				// サブオプションサービス契約情報
				HashMap sbopInfoMapAf =
						getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401A010), TEMP_ID_DTL_EKK0401A010, 0);

				// ○SODマッピング処理（変更後）
				setSODMappingOpVcAf(handle, param, fixedText, sbopInfoMapAf);

				// ●EKK1091D010_進捗登録
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK1091D010);
				// 上りマッピング
				setInMapEKK1091D010(param, fixedText, opSvcKeiDslMap, mskmNaiyoMap);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK1091D010, TEMP_ID_DTL_EKK1091D010, IN_COL_LIST_EKK1091D010, BLANK);

			}

		}

		// 開始ログ
		outDebugLog("----- dslOpSvcKeiVc Start  -----");
		return param;
	}

	/**
	 * eo光ネットオプションサービス契約解約実行処理（リモートサポートプラス）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	private IRequestParameterReadWrite dslOpSvcKeiRs(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{

		// 開始ログ
		outDebugLog("----- dslOpSvcKeiRs Start  -----");

		// リクエストパラメータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ==============================================================================================================
		// ■ INPUTデータ
		// ==============================================================================================================
		// ○SYSID
		String sysid = (String)inMap.get(IN_SYSID);
		// ○最新更新年月日時分秒
		String lastUpdDtm = (String)inMap.get(IN_LAST_UPD_DTM);
		// ○オプションサービス契約解約一覧取得
		ArrayList<HashMap<String, Object>> opSvcKeiDslList = (ArrayList)inMap.get(IN_OP_SVC_KEI_DSL_LIST);

		// INパラメータがなければエラーをスロー
		if (JFUBPCommon.isNull(sysid) || JFUBPCommon.isNull(lastUpdDtm) || opSvcKeiDslList == null || opSvcKeiDslList.size() == 0)
		{
			// 終了ログ
			outDebugLog("----- dslOpSvcKeiRs Error  -----");
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// ==============================================================================================================
		// ■ 申込明細申込処理（※SYSID単位)
		// ==============================================================================================================
		// ●EKK0011D020_申込内容承認登録
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0011D020);
		// 上りマッピング
		setInMapEKK0011D020(param, fixedText, sysid);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0011D020, TEMP_ID_DTL_EKK0011D020, IN_COL_LIST_EKK0011D020, BLANK);
		// 申込内容承認登録情報
		HashMap mskmNaiyoMap = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0011D020), TEMP_ID_DTL_EKK0011D020, 0);
		// 更新年月日時分秒
		String mskmUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0011D020), EKK0011D020CBSMsg.UPD_DTM);

		// ●EKK0021C060_申込明細照査・後続業務依頼
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0021C060);
		// 上りマッピング
		setInMapEKK0021C060(param, fixedText, mskmUpdDtm, mskmNaiyoMap);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0021C060, BLANK, IN_COL_LIST_EKK0021C060, BLANK);

		// ==============================================================================================================
		// ■ 解約処理
		// ==============================================================================================================
		// オプションサービス契約解約一覧の件数分、解約処理を行う。
		for (HashMap<String, Object> opSvcKeiDslMap : opSvcKeiDslList)
		{

			// ○オプションサービス契約番号
			String opSvcKeiNo = (String)opSvcKeiDslMap.get(IN_OP_SVC_KEI_NO);
			// INパラメータがなければエラーをスロー
			if (JFUBPCommon.isNull(opSvcKeiNo))
			{
				// 終了ログ
				outDebugLog("----- dslOpSvcKeiRs Error  -----");
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}

			// ●EKK0351A010_オプションサービス契約一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0351A010);
			// 上りマッピング
			setInMapEKK0351A010(param, fixedText, opSvcKeiNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0351A010, TEMP_ID_DTL_EKK0351A010, IN_COL_LIST_EKK0351A010, ERR_COL_EKK0351A010);
			// オプションサービス契約情報（変更前）
			HashMap opInfoMapBf = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351A010), TEMP_ID_DTL_EKK0351A010, 0);

			// ==============================================================================================================
			// ■ オプション解約処理
			// ==============================================================================================================
			// ◆キャンセル、解約の判定
			// 照査済の場合→キャンセル処理
			// 照査済み以外の場合（締結済み、サービス提供中）の場合→解約処理
			// オプションサービス契約ステータス
			if (JFUStrConst.CD00037_020.equals((String)opInfoMapBf.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				// ●EKK0351C220_オプションサービス契約キャンセル
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0351C220);
				// 上りマッピング
				setInMapEKK0351C220(param, fixedText, opInfoMapBf, mskmNaiyoMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0351C220, TEMP_ID_DTL_EKK0351C220, IN_COL_LIST_EKK0351C220, ERR_COL_EKK0351C220);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351C220), EKK0351C220CBSMsg.UPD_DTM);
			}
			else
			{
				// ●非課金判定処理(jdgHiChrg)
				HashMap hiChrgMap = jdgHiChrg(handle, param, fixedText, opInfoMapBf, null, "1");

				// ●EKK0351C240_オプションサービス契約解約
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0351C240);
				// 上りマッピング
				setInMapEKK0351C240(param, fixedText, opInfoMapBf, mskmNaiyoMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0351C240, TEMP_ID_DTL_EKK0351C240, IN_COL_LIST_EKK0351C240, ERR_COL_EKK0351C240);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351C240), EKK0351C240CBSMsg.UPD_DTM);

				// ●EKK0351C250_オプションサービス契約解約確定
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0351C250);
				// 上りマッピング
				setInMapEKK0351C250(param, fixedText, opInfoMapBf, hiChrgMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0351C250, TEMP_ID_DTL_EKK0351C250, IN_COL_LIST_EKK0351C250, ERR_COL_EKK0351C250);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351C250), EKK0351C250CBSMsg.UPD_DTM);
			}

			// ●EKK1091D010_進捗登録
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK1091D010);
			// 上りマッピング
			setInMapEKK1091D010(param, fixedText, opSvcKeiDslMap, mskmNaiyoMap);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK1091D010, TEMP_ID_DTL_EKK1091D010, IN_COL_LIST_EKK1091D010, BLANK);

		}

		// 開始ログ
		outDebugLog("----- dslOpSvcKeiRs Start  -----");
		return param;
	}

	/**
	 * eo光ネットオプションサービス契約解約実行処理（IPv6）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	private IRequestParameterReadWrite dslOpSvcKeiIPv6(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{

		// 開始ログ
		outDebugLog("----- dslOpSvcKeiIPv6 Start  -----");

		// リクエストパラメータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ==============================================================================================================
		// ■ INPUTデータ
		// ==============================================================================================================
		// ○SYSID
		String sysid = (String)inMap.get(IN_SYSID);
		// ○最新更新年月日時分秒
		String lastUpdDtm = (String)inMap.get(IN_LAST_UPD_DTM);
		// ○オプションサービス契約解約一覧取得
		ArrayList<HashMap<String, Object>> opSvcKeiDslList = (ArrayList)inMap.get(IN_OP_SVC_KEI_DSL_LIST);

		// INパラメータがなければエラーをスロー
		if (JFUBPCommon.isNull(sysid) || JFUBPCommon.isNull(lastUpdDtm) || opSvcKeiDslList == null || opSvcKeiDslList.size() == 0)
		{
			// 終了ログ
			outDebugLog("----- dslOpSvcKeiIPv6 Error  -----");
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// ==============================================================================================================
		// ■ 申込明細申込処理（※SYSID単位)
		// ==============================================================================================================
		// ●EKK0011D020_申込内容承認登録
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0011D020);
		// 上りマッピング
		setInMapEKK0011D020(param, fixedText, sysid);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0011D020, TEMP_ID_DTL_EKK0011D020, IN_COL_LIST_EKK0011D020, BLANK);
		// 申込内容承認登録情報
		HashMap mskmNaiyoMap = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0011D020), TEMP_ID_DTL_EKK0011D020, 0);
		// 更新年月日時分秒
		String mskmUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0011D020), EKK0011D020CBSMsg.UPD_DTM);

		// ●EKK0021C060_申込明細照査・後続業務依頼
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0021C060);
		// 上りマッピング
		setInMapEKK0021C060(param, fixedText, mskmUpdDtm, mskmNaiyoMap);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0021C060, BLANK, IN_COL_LIST_EKK0021C060, BLANK);

		// ==============================================================================================================
		// ■ 解約処理
		// ==============================================================================================================
		// オプションサービス契約解約一覧の件数分、解約処理を行う。
		for (HashMap<String, Object> opSvcKeiDslMap : opSvcKeiDslList)
		{

			// ○サービス契約番号
			String svcKeiNo = (String)opSvcKeiDslMap.get(IN_SVC_KEI_NO);
			// ○オプションサービス契約番号
			String opSvcKeiNo = (String)opSvcKeiDslMap.get(IN_OP_SVC_KEI_NO);
			// INパラメータがなければエラーをスロー
			if (JFUBPCommon.isNull(opSvcKeiNo))
			{
				// 終了ログ
				outDebugLog("----- dslOpSvcKeiRs Error  -----");
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}

			// ●EKK0351A010_オプションサービス契約一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0351A010);
			// 上りマッピング
			setInMapEKK0351A010(param, fixedText, opSvcKeiNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0351A010, TEMP_ID_DTL_EKK0351A010, IN_COL_LIST_EKK0351A010, ERR_COL_EKK0351A010);
			// オプションサービス契約情報（変更前）
			HashMap opInfoMapBf = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351A010), TEMP_ID_DTL_EKK0351A010, 0);

			// ○SODマッピング処理（変更前）
			setSODMappingOpBf(handle, param, fixedText, opInfoMapBf, null, getUcwkInfoMap(handle, param, fixedText, svcKeiNo));

			// ==============================================================================================================
			// ■ オプション解約処理
			// ==============================================================================================================
			// ◆キャンセル、解約の判定
			// 照査済の場合→キャンセル処理
			// 照査済み以外の場合（締結済み、サービス提供中）の場合→解約処理
			// オプションサービス契約ステータス
			if (JFUStrConst.CD00037_020.equals((String)opInfoMapBf.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				// ●EKK0351C220_オプションサービス契約キャンセル
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0351C220);
				// 上りマッピング
				setInMapEKK0351C220(param, fixedText, opInfoMapBf, mskmNaiyoMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0351C220, TEMP_ID_DTL_EKK0351C220, IN_COL_LIST_EKK0351C220, ERR_COL_EKK0351C220);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351C220), EKK0351C220CBSMsg.UPD_DTM);
			}
			else
			{
				// ●非課金判定処理(jdgHiChrg)
				HashMap hiChrgMap = jdgHiChrg(handle, param, fixedText, opInfoMapBf, null, "1");

				// ●EKK0351C240_オプションサービス契約解約
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0351C240);
				// 上りマッピング
				setInMapEKK0351C240(param, fixedText, opInfoMapBf, mskmNaiyoMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0351C240, TEMP_ID_DTL_EKK0351C240, IN_COL_LIST_EKK0351C240, ERR_COL_EKK0351C240);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351C240), EKK0351C240CBSMsg.UPD_DTM);

				// ●EKK0351C250_オプションサービス契約解約確定
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0351C250);
				// 上りマッピング
				setInMapEKK0351C250(param, fixedText, opInfoMapBf, hiChrgMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0351C250, TEMP_ID_DTL_EKK0351C250, IN_COL_LIST_EKK0351C250, ERR_COL_EKK0351C250);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351C250), EKK0351C250CBSMsg.UPD_DTM);
			}

			// ●EKK0351A010_オプションサービス契約一意照会（変更後）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0351A010);
			// 上りマッピング
			setInMapEKK0351A010(param, fixedText, opSvcKeiNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0351A010, TEMP_ID_DTL_EKK0351A010, IN_COL_LIST_EKK0351A010, ERR_COL_EKK0351A010);
			// オプションサービス契約情報（変更前）
			HashMap opInfoMapAf = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351A010), TEMP_ID_DTL_EKK0351A010, 0);

			// ○SODマッピング処理（変更後）
			setSODMappingOpAf(handle, param, fixedText, opInfoMapAf, null);

			// ●EKK1091D010_進捗登録
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK1091D010);
			// 上りマッピング
			setInMapEKK1091D010(param, fixedText, opSvcKeiDslMap, mskmNaiyoMap);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK1091D010, TEMP_ID_DTL_EKK1091D010, IN_COL_LIST_EKK1091D010, BLANK);

		}

		// 開始ログ
		outDebugLog("----- dslOpSvcKeiIPv6 Start  -----");
		return param;
	}

	/**
	 * eo光ネットオプションサービス契約解約実行処理（Myホームページ容量）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	private IRequestParameterReadWrite dslOpSvcKeiHp(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{

		// 開始ログ
		outDebugLog("----- dslOpSvcKeiHp Start  -----");

		// リクエストパラメータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ==============================================================================================================
		// ■ INPUTデータ
		// ==============================================================================================================
		// ○SYSID
		String sysid = (String)inMap.get(IN_SYSID);
		// ○最新更新年月日時分秒
		String lastUpdDtm = (String)inMap.get(IN_LAST_UPD_DTM);
		// ○オプションサービス契約解約一覧取得
		ArrayList<HashMap<String, Object>> opSvcKeiDslList = (ArrayList)inMap.get(IN_OP_SVC_KEI_DSL_LIST);

		// INパラメータがなければエラーをスロー
		if (JFUBPCommon.isNull(sysid) || JFUBPCommon.isNull(lastUpdDtm) || opSvcKeiDslList == null || opSvcKeiDslList.size() == 0)
		{
			// 終了ログ
			outDebugLog("----- dslOpSvcKeiHp Error  -----");
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// ==============================================================================================================
		// ■ 申込明細申込処理（※SYSID単位)
		// ==============================================================================================================
		// ●EKK0011D020_申込内容承認登録
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0011D020);
		// 上りマッピング
		setInMapEKK0011D020(param, fixedText, sysid);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0011D020, TEMP_ID_DTL_EKK0011D020, IN_COL_LIST_EKK0011D020, BLANK);
		// 申込内容承認登録情報
		HashMap mskmNaiyoMap = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0011D020), TEMP_ID_DTL_EKK0011D020, 0);
		// 更新年月日時分秒
		String mskmUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0011D020), EKK0011D020CBSMsg.UPD_DTM);

		// ●EKK0021C060_申込明細照査・後続業務依頼
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0021C060);
		// 上りマッピング
		setInMapEKK0021C060(param, fixedText, mskmUpdDtm, mskmNaiyoMap);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0021C060, BLANK, IN_COL_LIST_EKK0021C060, BLANK);

		// ==============================================================================================================
		// ■ 変更処理
		// ==============================================================================================================
		// オプションサービス契約解約一覧の件数分、変更処理を行う。
		for (HashMap<String, Object> dslMap : opSvcKeiDslList)
		{

			// ○オプションサービス契約番号
			String opSvcKeiNo = (String)dslMap.get(IN_OP_SVC_KEI_NO);
			// INパラメータがなければエラーをスロー
			if (JFUBPCommon.isNull(opSvcKeiNo))
			{
				// 終了ログ
				outDebugLog("----- dslOpSvcKeiHp Error  -----");
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}

			// ==============================================================================================================
			// ■ SOD処理(変更前)用データ取得処理
			// ==============================================================================================================
			// ●EKK0351A010_オプションサービス契約一意照会(変更前)
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0351A010);
			// 上りマッピング
			setInMapEKK0351A010(param, fixedText, opSvcKeiNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0351A010, TEMP_ID_DTL_EKK0351A010, IN_COL_LIST_EKK0351A010, ERR_COL_EKK0351A010);
			// オプションサービス契約情報（変更前）
			HashMap opInfoMapBf = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351A010), TEMP_ID_DTL_EKK0351A010, 0);

			// ●EKK0361A010_オプションサービス契約＜ISP＞一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0361A010);
			// 上りマッピング
			setInMapEKK0361A010(param, fixedText, opInfoMapBf);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0361A010, TEMP_ID_DTL_EKK0361A010, IN_COL_LIST_EKK0361A010, ERR_COL_EKK0361A010);
			// オプションサービス契約情報（変更前）
			HashMap opIspInfoMapBf = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0361A010), TEMP_ID_DTL_EKK0361A010, 0);

			// ●EKK0401B001_サブオプションサービス契約一覧照会（変更前）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0401B001);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// 上りマッピング
			setInMapEKK0401B001(param, fixedText, opInfoMapBf);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0401B001, TEMP_ID_DTL_EKK0401B001, IN_COL_LIST_EKK0401B001, ERR_COL_EKK0401B001);
			// サブオプションサービス契約リスト
			List<HashMap> sbopSvcKeiList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401B001), TEMP_ID_DTL_EKK0401B001);

			// ==============================================================================================================
			// ■ 解約処理
			// ==============================================================================================================
			// サブオプションサービス契約解約一覧の件数分、解約処理を行う。
			for (HashMap sbopInfoMapBf : sbopSvcKeiList)
			{

				// ◆「D04:ホームページ容量追加」以外はスキップ
				if (!JFUStrConst.CD00137_D04.equals(sbopInfoMapBf.get(EKK0401B001CBSMsg1List.SBOP_SVC_CD)))
				{
					continue;
				}

				// ==============================================================================================================
				// ■ SOD処理(変更前)
				// ==============================================================================================================
				// ○SODマッピング処理（変更前）
				setSODMappingOpBf(handle, param, fixedText, opInfoMapBf, sbopInfoMapBf, null);

				// ==============================================================================================================
				// ■ オプション変更処理
				// ==============================================================================================================

				// ●EKK0361C050_オプションサービス契約＜ISP＞情報変更
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0361C050);
				// 上りマッピング
				setInMapEKK0361C050(param, fixedText, dslMap, opInfoMapBf, opIspInfoMapBf, mskmNaiyoMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0361C050, TEMP_ID_DTL_EKK0361C050, IN_COL_LIST_EKK0361C050, ERR_COL_EKK0361C050);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0361C050), EKK0351C240CBSMsg.UPD_DTM);

				// ==============================================================================================================
				// ■ サブオプション変更処理
				// ==============================================================================================================

				// ●EKK0411A010_サブオプションサービス契約＜ISP＞一意照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0411A010);
				// 上りマッピング
				setInMapEKK0411A010(param, fixedText, sbopInfoMapBf);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0411A010, TEMP_ID_DTL_EKK0411A010, IN_COL_LIST_EKK0411A010, ERR_COL_EKK0411A010);
				// サブオプションサービス契約＜ISP＞情報
				HashMap sbopIspInfoMap =
						getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0411A010), TEMP_ID_DTL_EKK0411A010, 0);

				// ●EKK0411C010_サブオプションサービス契約＜ISP＞変更
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0411C010);
				// 上りマッピング
				setInMapEKK0411C010(param, fixedText, dslMap, sbopIspInfoMap, mskmNaiyoMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0411C010, TEMP_ID_DTL_EKK0411C010, IN_COL_LIST_EKK0411C010, ERR_COL_EKK0411C010);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0411C010), EKK0411C010CBSMsg.UPD_DTM);

				// ==============================================================================================================
				// ■ SOD処理(変更後)用データ取得処理
				// ==============================================================================================================
				// ●EKK0351A010_オプションサービス契約一意照会（変更後）
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0351A010);
				// 上りマッピング
				setInMapEKK0351A010(param, fixedText, opSvcKeiNo);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0351A010, TEMP_ID_DTL_EKK0351A010, IN_COL_LIST_EKK0351A010, ERR_COL_EKK0351A010);
				// オプションサービス契約情報（変更前）
				HashMap opInfoMapAf = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351A010), TEMP_ID_DTL_EKK0351A010, 0);

				// ●EKK0401A010_サブオプションサービス契約一意照会(変更後)
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0401A010);
				// 上りマッピング
				setInMapEKK0401A010(param, fixedText, opSvcKeiNo, (String)sbopInfoMapBf.get(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_NO));
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0401A010, TEMP_ID_DTL_EKK0401A010, IN_COL_LIST_EKK0401A010, ERR_COL_EKK0401A010);
				// サブオプションサービス契約情報
				HashMap sbopInfoMapAf =
						getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401A010), TEMP_ID_DTL_EKK0401A010, 0);

				// ==============================================================================================================
				// ■ SOD処理(変更後)
				// ==============================================================================================================
				// ○SODマッピング処理（変更後）
				setSODMappingOpAf(handle, param, fixedText, opInfoMapAf, sbopInfoMapAf);

				// ==============================================================================================================
				// ■ 進捗登録処理
				// ==============================================================================================================
				// ●EKK1091D010_進捗登録
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK1091D010);
				// 上りマッピング
				setInMapEKK1091D010(param, fixedText, dslMap, mskmNaiyoMap);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK1091D010, TEMP_ID_DTL_EKK1091D010, IN_COL_LIST_EKK1091D010, BLANK);

			}

		}

		// 開始ログ
		outDebugLog("----- dslOpSvcKeiHp Start  -----");
		return param;
	}

	/**
	 * eo光ネットサブオプションサービス契約解約実行処理（メールアドレス）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opInfoMap オプション情報マップ
	 * @param opIspInfoMap オプション＜ＩＳＰ＞情報マップ
	 * @param mskmNaiyoMap 申込内容情報マップ
	 * @param lastUpdDtm 最終更新年月日
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	private String dslSbOpSvcKeiMlad(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap opInfoMap,
			HashMap opIspInfoMap, HashMap mskmNaiyoMap, String lastUpdDtm) throws Throwable
	{

		// 開始ログ
		outDebugLog("----- dslSbOpSvcKeiMlad Start  -----");

		// 最終更新年月日時分秒
		String plastUpdDtm = lastUpdDtm;

		// リクエストパラメータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●EKK0401B001_サブオプションサービス契約一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0401B001);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapEKK0401B001(param, fixedText, opIspInfoMap);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0401B001, TEMP_ID_DTL_EKK0401B001, IN_COL_LIST_EKK0401B001, ERR_COL_EKK0401B001);
		// サブオプションサービス契約リスト
		List<HashMap> sbopSvcKeiList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401B001), TEMP_ID_DTL_EKK0401B001);

		// ==============================================================================================================
		// ■ 解約処理
		// ==============================================================================================================
		// サブオプションサービス契約解約一覧の件数分、解約処理を行う。
		for (int i = 0; i < sbopSvcKeiList.size(); i++)
		{

			// サブオプションサービス契約解約情報取得
			HashMap sbopInfoMap = (HashMap)sbopSvcKeiList.get(i);

			// ◆解約対象サブオプション以外は、スキップ
			if (!MLAD_DSL_SBOP.contains(sbopInfoMap.get(EKK0401B001CBSMsg1List.SBOP_SVC_CD)))
			{
				continue;
			}

			// ◆対象ステータス以外はスキップ
			if (SVC_KEI_STAT_MUKO.contains(sbopInfoMap.get(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT)))
			{
				continue;
			}

			// ==============================================================================================================
			// ■ 予約キャンセル処理
			// 　 サブオプションが予約中の場合は予約をキャンセルする。
			// 　 サブオプションのみの予約は出来ることがないためこの処理入らない。
			// ==============================================================================================================

			// ◆キャンセル、解約の判定
			// 照査済の場合→キャンセル処理
			// 照査済み以外の場合（締結済み、サービス提供中）の場合→解約処理
			// オプションサービス契約ステータス
			if (JFUStrConst.CD00037_020.equals((String)sbopInfoMap.get(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT)))
			{
				// ●EKK0401C150_サブオプションサービス契約キャンセル
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0401C150);
				// 上りマッピング
				setInMapEKK0401C150(param, fixedText, sbopInfoMap, mskmNaiyoMap, plastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0401C150, TEMP_ID_DTL_EKK0401C150, IN_COL_LIST_EKK0401C150, ERR_COL_EKK0401C150);
				// 更新年月日時分秒
				plastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401C150), EKK0401C150CBSMsg.UPD_DTM);
			}
			else
			{
				// ●非課金判定処理(jdgHiChrg)
				HashMap hiChrgMap = jdgHiChrg(handle, param, fixedText, opInfoMap, sbopInfoMap, "2");

				// ●EKK0401C170_サブオプションサービス契約解約
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0401C170);
				// 上りマッピング
				setInMapEKK0401C170(param, fixedText, sbopInfoMap, mskmNaiyoMap, plastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0401C170, TEMP_ID_DTL_EKK0401C170, IN_COL_LIST_EKK0401C170, ERR_COL_EKK0401C170);
				// 更新年月日時分秒
				plastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401C170), EKK0401C170CBSMsg.UPD_DTM);

				// ●EKK0401C180_サブオプションサービス契約解約確定
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0401C180);
				// 上りマッピング
				setInMapEKK0401C180(param, fixedText, sbopInfoMap, hiChrgMap, plastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0401C180, TEMP_ID_DTL_EKK0401C180, IN_COL_LIST_EKK0401C180, ERR_COL_EKK0401C180);
				// 更新年月日時分秒
				plastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0401C180), EKK0401C180CBSMsg.UPD_DTM);

			}

			// ◆サブオプションサービスコードがメールエイリアスの場合
			if (JFUStrConst.CD00137_D01.equals(sbopInfoMap.get(EKK0401B001CBSMsg1List.SBOP_SVC_CD)))
			{

				// ●EKK0411A010_サブオプションサービス契約＜ISP＞一意照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0411A010);
				// 上りマッピング
				setInMapEKK0411A010(param, fixedText, sbopInfoMap);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0411A010, TEMP_ID_DTL_EKK0411A010, IN_COL_LIST_EKK0411A010, ERR_COL_EKK0411A010);
				// サブオプションサービス契約＜ISP＞情報
				HashMap sbopIspInfoMap =
						getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0411A010), TEMP_ID_DTL_EKK0411A010, 0);

				// ==============================================================================================================
				// ■ エイジング処理(メールエイリアス)
				// ==============================================================================================================
				dslAging(handle, param, fixedText, JFUStrConst.CD00412_008, getAliasAddress(opIspInfoMap, sbopIspInfoMap));
			}
		}

		// 開始ログ
		outDebugLog("----- dslSbOpSvcKeiMlad Start  -----");
		return plastUpdDtm;
	}

	/**
	 * エイジング使用終了処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param agingSbtCd エイジング種別コード
	 * @param agingTgValue エイジング対象値
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	private void dslAging(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String agingSbtCd, String agingTgValue)
			throws Throwable
	{

		// 開始ログ
		outDebugLog("----- dslAging Start  -----");

		// リクエストパラメータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●EZM0111B030_エイジング一覧照会(エイジング対象値)
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EZM0111B030);
		// 上りマッピング
		setInMapEZM0111B030(param, fixedText, agingSbtCd, agingTgValue);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EZM0111B030, TEMP_ID_DTL_EZM0111B030, IN_COL_LIST_EZM0111B030, ERR_COL_EZM0111B030);
		// 更新日(POPID)
		String updDtmPopId =
				getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EZM0111B030), TEMP_ID_DTL_EZM0111B030,
						EZM0111B030CBSMsg1List.UPD_DTM, 0);

		// ●EZM0111C010_エイジング対象使用終了
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EZM0111C010);
		// 上りマッピング
		setInMapEZM0111C010(param, fixedText, agingSbtCd, agingTgValue, updDtmPopId);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EZM0111C010, JFUStrConst.EMPTY, IN_COL_LIST_EZM0111C010, BLANK);

		// 開始ログ
		outDebugLog("----- dslAging Start  -----");
	}

	/**
	 * 上りマッピング項目設定(EKK0011D020_申込内容承認登録)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysid SYSID
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0011D020(IRequestParameterReadWrite param, String fixedText, String sysid) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// SYSID
		inMap.put(EKK0011D020CBSMsg.SYSID, sysid);
		// 申込種別コード
		inMap.put(EKK0011D020CBSMsg.MSKM_SBT_CD, JFUStrConst.KK0971_MSKM_SBT_CD_00026);
		// 申込受付年月日時分秒
		inMap.put(EKK0011D020CBSMsg.MSKM_UK_DTM, JFUBPCommon.getOpeDateTimeStamp(null));
		// 申込年月日
		inMap.put(EKK0011D020CBSMsg.MSKM_YMD, JFUBPCommon.getOpeDate(null));
		// コンシューマ営業用申込状態識別コード
		inMap.put(EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD, JFUStrConst.CD00760_04);

		// 申込内容承認登録明細
		List<HashMap> inList = new ArrayList();
		HashMap<String, String> childMap = new HashMap();

		// 申込形態コード
		childMap.put(EKK0011D020CBSMsg1List.MSKM_FORM_CD, JFUStrConst.CD00591_01);

		childMap.put(EKK0011D020CBSMsg1List.MSKMSHO_NO, null);
		childMap.put(EKK0011D020CBSMsg1List.WEB_UK_NO, null);
		childMap.put(EKK0011D020CBSMsg1List.MSKM_DTL_SBT_CD, null);
		childMap.put(EKK0011D020CBSMsg1List.RRKS_KTAI_TELNO, null);
		childMap.put(EKK0011D020CBSMsg1List.RRKS_OFFC_NM, null);
		childMap.put(EKK0011D020CBSMsg1List.DT_RRKS_TELNO, null);
		childMap.put(EKK0011D020CBSMsg1List.NEW_MSKM_SBT_CD, null);
		childMap.put(EKK0011D020CBSMsg1List.MSKM_OPTNTY_CD, null);
		childMap.put(EKK0011D020CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD, null);
		childMap.put(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_SHITEI_CD, null);
		childMap.put(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_TELNO, null);
		childMap.put(EKK0011D020CBSMsg1List.RRK_JIKO_ADD_DTM, null);
		childMap.put(EKK0011D020CBSMsg1List.MSKM_RRKS_MLAD, null);
		childMap.put(EKK0011D020CBSMsg1List.KOJI_PRG_TCHI_MLAD, null);
		childMap.put(EKK0011D020CBSMsg1List.RRK_JIKO, null);
		childMap.put(EKK0011D020CBSMsg1List.KJSC_TCH_KTAI_MLAD, null);
		childMap.put(EKK0011D020CBSMsg1List.ML_SEND_JGI_FLG, null);
		childMap.put(EKK0011D020CBSMsg1List.ML_SEND_JGI_RSN_MEMO, null);
		childMap.put(EKK0011D020CBSMsg1List.BMP_MSKM_RRKS_TLN, null);
		childMap.put(EKK0011D020CBSMsg1List.OP_SVC_HKTGI_UM, null);
		childMap.put(EKK0011D020CBSMsg1List.DSL_ATICLE_SOHU_KIBO_UM, null);
		childMap.put(EKK0011D020CBSMsg1List.RRK_WAY_HOKI, null);
		childMap.put(EKK0011D020CBSMsg1List.NEWCONST_BUKKEN_CD, null);
		childMap.put(EKK0011D020CBSMsg1List.HUKKAT_ANKEN_FLG, null);
		childMap.put(EKK0011D020CBSMsg1List.SAME_EQUIP_RE_MSKM_CD, null);
		childMap.put(EKK0011D020CBSMsg1List.HNIN_CFM_ATICLE_SBT_CD, null);
		childMap.put(EKK0011D020CBSMsg1List.MSKMSHO_SBT_CD, null);
		childMap.put(EKK0011D020CBSMsg1List.KEI_HUKA_CD, null);
		childMap.put(EKK0011D020CBSMsg1List.MAP_TEMP_UM, null);
		childMap.put(EKK0011D020CBSMsg1List.KCN_STB_MSKM_CNT, null);
		childMap.put(EKK0011D020CBSMsg1List.KCN_STB_KIND_CD, null);
		childMap.put(EKK0011D020CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN, null);
		childMap.put(EKK0011D020CBSMsg1List.MANSION_ID, null);
		childMap.put(EKK0011D020CBSMsg1List.CATID, null);
		childMap.put(EKK0011D020CBSMsg1List.MKM_UK_SBT_CD, null);
		childMap.put(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM, null);
		childMap.put(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TELNO, null);
		childMap.put(EKK0011D020CBSMsg1List.MSKMSHO_DTL_NO, null); //申込書明細番号
		childMap.put(EKK0011D020CBSMsg1List.HNIN_CFM_ATICLE_NM, null); //本人確認書類名

		inList.add(childMap);
		inMap.put(TEMP_ID_DTL_EKK0011D020, inList);
	}

	/**
	 * 上りマッピング項目設定(EZM0111C010_エイジング対象使用終了)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param agingSbtCd エイジング種別コード
	 * @param agingTgValue エイジング対象値
	 * @param lastUpdDtm 最終更新年月日
	 * @throws RequestParameterException
	 */
	private void setInMapEZM0111C010(IRequestParameterReadWrite param, String fixedText, String agingSbtCd, String agingTgValue, String lastUpdDtm)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック＆更新)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// エイジング種別コード
		inMap.put(EZM0111C010CBSMsg.AGING_SBT_CD, agingSbtCd); // 007:POPID、008:メールエイリアス、009:メールアドレス
		// エイジング対象値
		inMap.put(EZM0111C010CBSMsg.AGING_TG_VALUE, agingTgValue);
		// 更新年月日時分秒(更新前)
		inMap.put(EZM0111C010CBSMsg.LAST_UPD_DTM_BF, lastUpdDtm);
	}

	/**
	 * 上りマッピング項目設定(EKK1091D010_進捗登録)
	 * 
	 * <br>
	 * @param param				リクエストパラメータ
	 * @param fixedText			サービスメッセージ
	 * @param opSvcKeiDslMap	オプションサービス契約解約情報
	 * @param mskmNaiyoMap		申込内容承認登録情報
	 * @throws RequestParameterException
	 */
	private void setInMapEKK1091D010(IRequestParameterReadWrite param, String fixedText, HashMap opSvcKeiDslMap, HashMap mskmNaiyoMap)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// 申込明細番号
		inMap.put(EKK1091D010CBSMsg.MSKM_DTL_NO, mskmNaiyoMap.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// サービス契約番号
		inMap.put(EKK1091D010CBSMsg.SVC_KEI_NO, opSvcKeiDslMap.get(IN_SVC_KEI_NO));
		// オプションサービス契約番号
		inMap.put(EKK1091D010CBSMsg.OP_SVC_KEI_NO, opSvcKeiDslMap.get(IN_OP_SVC_KEI_NO));
		// サブオプションサービス契約番号
		inMap.put(EKK1091D010CBSMsg.SBOP_SVC_KEI_NO, opSvcKeiDslMap.get(IN_SBOP_SVC_KEI_NO));
		// 異動区分
		inMap.put(EKK1091D010CBSMsg.IDO_DIV, JFUStrConst.CD00576_00031); // 00031:オプション設定
		// 異動年月日時分秒
		inMap.put(EKK1091D010CBSMsg.IDO_DTM, JFUBPCommon.getSysDateTimeStamp());
		// 進捗ステータス
		inMap.put(EKK1091D010CBSMsg.PRG_STAT, JFUStrConst.CD00647_5102);
		// 進捗特記事項1
		inMap.put(EKK1091D010CBSMsg.PRG_TKJK_1, opSvcKeiDslMap.get(IN_PRG_TKJK_1));
		// 異動理由明細
		List<HashMap> inList = new ArrayList();
		HashMap<String, String> childMap = new HashMap();
		// 異動理由コード
		childMap.put(EKK1091D010CBSMsg1List.IDO_RSN_CD, JFUStrConst.CD00846_56);
		// 異動理由メモ
		childMap.put(EKK1091D010CBSMsg1List.IDO_RSN_MEMO, "");

		inList.add(childMap);
		inMap.put(TEMP_ID_DTL_EKK1091D010, inList);
	}

	/**
	 * 上りマッピング項目設定(EKK0021C060_申込明細照査・後続業務依頼)
	 * 
	 * <br>
	 * @param param			リクエストパラメータ
	 * @param fixedText		サービスメッセージ
	 * @param mskmUpdDtm	申込更新年月日時分秒
	 * @param mskmNaiyoMap	申込内容情報マップ
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0021C060(IRequestParameterReadWrite param, String fixedText, String mskmUpdDtm, HashMap mskmNaiyoMap)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// 申込明細番号
		inMap.put(EKK0021C060CBSMsg.MSKM_DTL_NO, mskmNaiyoMap.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// 後続業務依頼年月日
		inMap.put(EKK0021C060CBSMsg.KZKWRK_REQYMD, JFUBPCommon.getOpeDate(null));
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0021C060CBSMsg.UPD_DTM_BF, mskmUpdDtm);
		// 異動区分
		inMap.put(EKK0021C060CBSMsg.IDO_DIV, JFUStrConst.CD00576_00031); // 00031:オプション設定
	}

	/**
	 * 上りマッピング項目設定(EKK0081A010_サービス契約一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0081A010(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

	}

	/**
	 * 上りマッピング項目設定(EKK0351A010_オプションサービス契約一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opSvcKeiNo オプションサービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0351A010(IRequestParameterReadWrite param, String fixedText, String opSvcKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ＫＥＹ＿オプションサービス契約番号
		inMap.put(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO, opSvcKeiNo);
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

	}

	/**
	 * 上りマッピング項目設定(EKK0351C220_オプションサービス契約キャンセル)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opInfoMap オプション情報マップ
	 * @param mskmNaiyoMap 申込内容情報マップ
	 * @param lastUpdDtm 最終更新年月日時分秒
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0351C220(IRequestParameterReadWrite param, String fixedText, HashMap opInfoMap, HashMap mskmNaiyoMap, String lastUpdDtm)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// オプションサービス契約番号
		inMap.put(EKK0351C220CBSMsg.OP_SVC_KEI_NO, (String)opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		// 申込明細番号
		inMap.put(EKK0351C220CBSMsg.MSKM_DTL_NO, mskmNaiyoMap.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// サービスキャンセル理由コード
		inMap.put(EKK0351C220CBSMsg.SVC_CANCEL_RSN_CD, JFUStrConst.CD01390_06); // "06":解約によるキャンセル
		// 異動区分
		inMap.put(EKK0351C220CBSMsg.IDO_DIV, JFUStrConst.CD00576_00031); // "00031"：オプション設定
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0351C220CBSMsg.UPD_DTM_BF, lastUpdDtm);

	}

	/**
	 * 上りマッピング項目設定(ECK0151D010_指示書登録)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opInfoMap オプション情報マップ
	 * @param opIspInfoMap オプション＜ＩＳＰ＞情報マップ
	 * @throws RequestParameterException
	 */
	private void setInMapECK0151D010(IRequestParameterReadWrite param, String fixedText, HashMap opInfoMap, HashMap opIspInfoMap)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// 処理コード
		inMap.put(ECK0151D010CBSMsg.TRN_CD, JFUStrConst.CD00604_N01);

		// 対象テーブルID
		inMap.put(ECK0151D010CBSMsg.TRGT_TABLE_ID, JFUStrConst.CK0151_TRGT_TABLE_ID_TNM00050);

		// 処理対象SYSID
		inMap.put(ECK0151D010CBSMsg.TRAN_TRGT_SYSID, (String)opInfoMap.get(EKK0351A010CBSMsg1List.SYSID));

		// 結果フラグ
		inMap.put(ECK0151D010CBSMsg.RSLT_FLG, JFUStrConst.CD00605_0);

		// パラメータ有効数
		inMap.put(ECK0151D010CBSMsg.PARAMETER_YK_CNT, JFUStrConst.CK0151_PARAM_YK_CNT_14);

		// パラメータ1
		inMap.put(ECK0151D010CBSMsg.PARAMETER_1, (String)opInfoMap.get(EKK0351A010CBSMsg1List.SVC_KEI_NO));

		// パラメータ2
		inMap.put(ECK0151D010CBSMsg.PARAMETER_2, JFUStrConst.CK0151_SVC_KEI_CD_02);

		// パラメータ3
		inMap.put(ECK0151D010CBSMsg.PARAMETER_3, (String)opIspInfoMap.get(EKK0361A010CBSMsg1List.TSYRN_SVKEI_CD_SEQ));

		// パラメータ4
		inMap.put(ECK0151D010CBSMsg.PARAMETER_4, (String)opIspInfoMap.get(EKK0361A010CBSMsg1List.POP_ID));

		// パラメータ5
		inMap.put(ECK0151D010CBSMsg.PARAMETER_5, (String)opInfoMap.get(EKK0351A010CBSMsg1List.SHOSA_YMD));

		// パラメータ6
		String tkyEndYmd = JFUStrConst.EMPTY;
		String opSvcKeiStat = (String)opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT); // オプションサービス契約ステータス
		if (JFUStrConst.CD00037_910.equals(opSvcKeiStat))
		{
			// 解約時
			tkyEndYmd = (String)opInfoMap.get(EKK0351A010CBSMsg1List.SVC_ENDYMD); // サービス終了年月日
		}
		else if (JFUStrConst.CD00037_920.equals(opSvcKeiStat))
		{
			// キャンセル時
			tkyEndYmd = (String)opInfoMap.get(EKK0351A010CBSMsg1List.SVC_CANCEL_YMD); // サービスキャンセル年月日
		}
		inMap.put(ECK0151D010CBSMsg.PARAMETER_6, tkyEndYmd);

		// パラメータ7
		inMap.put(ECK0151D010CBSMsg.PARAMETER_7, (String)opIspInfoMap.get(EKK0361A010CBSMsg1List.MLAD));

		// パラメータ8
		inMap.put(ECK0151D010CBSMsg.PARAMETER_8, (String)opInfoMap.get(EKK0351A010CBSMsg1List.MK_FLG));

		// パラメータ9
		inMap.put(ECK0151D010CBSMsg.PARAMETER_9, (String)opInfoMap.get(EKK0351A010CBSMsg1List.ADD_DTM));

		// パラメータ10
		inMap.put(ECK0151D010CBSMsg.PARAMETER_10, (String)opInfoMap.get(EKK0351A010CBSMsg1List.ADD_OPEACNT));

		// パラメータ12
		inMap.put(ECK0151D010CBSMsg.PARAMETER_12, (String)opInfoMap.get(EKK0351A010CBSMsg1List.UPD_DTM));

		// パラメータ13
		inMap.put(ECK0151D010CBSMsg.PARAMETER_13, (String)opInfoMap.get(EKK0351A010CBSMsg1List.UPD_OPEACNT));

	}

	/**
	 * 上りマッピング項目設定(EZM0111B030_エイジング一覧照会(エイジング対象値))
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param agingSbtCd エイジング種別コード
	 * @param agingTgValue エイジング対象値
	 * @throws RequestParameterException
	 */
	private void setInMapEZM0111B030(IRequestParameterReadWrite param, String fixedText, String agingSbtCd, String agingTgValue)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:一覧照会)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// エイジング種別コード
		inMap.put(EZM0111B030CBSMsg.KEY_AGING_SBT_CD, agingSbtCd);
		// エイジング対象値
		inMap.put(EZM0111B030CBSMsg.KEY_AGING_TG_VALUE, agingTgValue);

	}

	/**
	 * SOD用データマップ作成処理（メールアドレス オプション、IPv6 変更前）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opInfoMap オプション情報マップ
	 * @param sbopInfoMap サブオプション情報マップ
	 * @param svcKeiUcwkInfoMap サービス契約内訳情報マップ
	 * @throws Exception 例外
	 */
	public void setSODMappingOpBf(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> opInfoMap,
			HashMap<String, Object> sbopInfoMap, HashMap<String, Object> svcKeiUcwkInfoMap) throws Exception
	{
		// 開始ログ
		outDebugLog("----- setSODMappingOpBf Start  -----");

		// SODマッピングの取得
		// あればそれを使用
		HashMap parentMap = (HashMap)param.getData("JKKHakkoSODCC");
		if (parentMap == null)
		{
			parentMap = new HashMap();
		}

		// 機能コード
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);

		// SODマップ
		HashMap<String, Object> childMap = new HashMap<String, Object>();

		// SOD基本情報
		HashMap<String, Object> sodKihonInfo = new HashMap<String, Object>();
		// SYSID
		sodKihonInfo.put("sysid", opInfoMap.get(EKK0351A010CBSMsg1List.SYSID));
		// 異動区分
		sodKihonInfo.put("ido_div", JFUStrConst.CD00576_00031);
		// SODマップに追加
		childMap.put("sod_kihon_info", sodKihonInfo);

		// サービス契約情報
		HashMap<String, Object> svcKeiInfo = new HashMap<String, Object>();
		// サービス契約番号
		svcKeiInfo.put("svc_kei_no", opInfoMap.get(EKK0351A010CBSMsg1List.SVC_KEI_NO));
		// SODマップに追加
		childMap.put("svc_kei_info", svcKeiInfo);

		// サービス契約内訳情報
		HashMap<String, Object> svcKeiUcwkInfo = new HashMap<String, Object>();
		if (svcKeiUcwkInfoMap != null)
		{
			// サービス契約内訳番号
			svcKeiUcwkInfo.put("svc_kei_ucwk_no", svcKeiUcwkInfoMap.get(EKK0161B001CBSMsg1List.SVC_KEI_UCWK_NO));
			// 変更後サービス契約内訳世代登録年月日時分秒
			svcKeiUcwkInfo.put("chaf_svc_kei_ucwk_gene_add_dtm", svcKeiUcwkInfoMap.get(EKK0161B001CBSMsg1List.GENE_ADD_DTM));
		}

		// SODマップに追加
		childMap.put("svc_kei_ucwk_info", svcKeiUcwkInfo);

		// オプションサービス契約情報
		HashMap<String, Object> opsvkeiInfo = new HashMap<String, Object>();

		// 変更前オプションサービス契約番号
		opsvkeiInfo.put("chbf_opsvkei_no", opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		// 変更前オプションサービス契約世代登録年月日時分秒(オプションサービス契約)
		opsvkeiInfo.put("chbf_opsvkei_gene_add_dtm", opInfoMap.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM));

		if (sbopInfoMap != null)
		{
			// 変更前サブオプションサービス契約番号
			opsvkeiInfo.put("chbf_sbopsvkei_no", sbopInfoMap.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_NO));
			// 変更前サブオプションサービス契約世代登録年月日時分秒(オプションサービス契約)
			opsvkeiInfo.put("chbf_sbopsvkei_gene_add_dtm", sbopInfoMap.get(EKK0401A010CBSMsg1List.GENE_ADD_DTM));
		}

		// SODマップに追加
		childMap.put("opsvkei_info", opsvkeiInfo);

		// 機器提供サービス内訳情報
		HashMap<String, Object> kktsvkeiInfo = new HashMap<String, Object>();

		// SODマップに追加
		childMap.put("kktsvkei_info", kktsvkeiInfo);

		// SODマップを対象データリストに追加
		// あればそれを使用
		ArrayList<HashMap<String, Object>> arrayList = (ArrayList<HashMap<String, Object>>)parentMap.get("trgt_data_list");
		if (arrayList == null)
		{
			arrayList = new ArrayList<HashMap<String, Object>>();
		}
		arrayList.add(childMap);

		// 対象データリストをマップに追加
		parentMap.put("trgt_data_list", arrayList);

		// 対象データリストのマッピング
		param.setData("JKKHakkoSODCC", parentMap);

		// 開始ログ
		outDebugLog("----- setSODMappingOpBf End  -----");

	}

	/**
	 * SOD用データマップ作成処理（メールアドレス オプション、IPv6 変更後）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opInfoMap オプション情報マップ
	 * @param sbopInfoMap サブオプション情報マップ
	 * @throws Exception 例外
	 */
	public void setSODMappingOpAf(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> opInfoMap,
			HashMap<String, Object> sbopInfoMap) throws Exception
	{
		// 開始ログ
		outDebugLog("----- setSODMappingOpAf Start  -----");

		// オープンサービス契約番号
		String opSvcKeiNo = (String)opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO);

		//  SODマッピングの取得
		HashMap parentMap = (HashMap)param.getData("JKKHakkoSODCC");

		// 対象データリストの取得
		ArrayList<HashMap<String, Object>> arrayList = (ArrayList<HashMap<String, Object>>)parentMap.get("trgt_data_list");
		for (HashMap<String, Object> childMap : arrayList)
		{

			// オプションサービス契約情報
			HashMap<String, Object> opsvkeiInfo = (HashMap<String, Object>)childMap.get("opsvkei_info");

			// オプションサービス契約番号が同じ場合
			if (opsvkeiInfo.get("chbf_opsvkei_no").equals(opSvcKeiNo))
			{
				// 変更後オプションサービス契約番号
				opsvkeiInfo.put("chaf_opsvkei_no", opSvcKeiNo);
				// 変更後オプションサービス契約世代登録年月日時分秒
				opsvkeiInfo.put("chaf_opsvkei_gene_add_dtm", (String)opInfoMap.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM));
			}

			if (sbopInfoMap != null)
			{

				// オープンサービス契約番号
				String sbopSvcKeiNo = (String)opInfoMap.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_NO);

				// サブオプションサービス契約番号が同じ場合
				if (opsvkeiInfo.get("chbf_sbopsvkei_no").equals(sbopSvcKeiNo))
				{
					// 変更後オプションサービス契約番号
					opsvkeiInfo.put("chaf_sbopsvkei_no", sbopSvcKeiNo);
					// 変更後オプションサービス契約世代登録年月日時分秒
					opsvkeiInfo.put("chaf_sbopsvkei_gene_add_dtm", (String)opInfoMap.get(EKK0401A010CBSMsg1List.GENE_ADD_DTM));
				}
			}
		}

		// 開始ログ
		outDebugLog("----- setSODMappingOpAf End  -----");

	}

	/**
	 * SOD用データマップ作成処理（ウイルスチェック オプション変更前）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opInfoMap オプション情報マップ
	 * @param sbopInfoMap サブオプション情報マップ
	 * @throws Exception 例外
	 */
	public void setSODMappingOpVcBf(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> opInfoMap,
			HashMap<String, Object> sbopInfoMap) throws Exception
	{
		// 開始ログ
		outDebugLog("----- setSODMappingOpVCBf Start  -----");

		// SODマッピングの取得
		// あればそれを使用
		HashMap parentMap = (HashMap)param.getData("JKKHakkoSODCC");
		if (parentMap == null)
		{
			parentMap = new HashMap();
		}

		// 機能コード
		parentMap.put("func_code", JPCModelConstant.FUNC_CD_1);

		// SODマップ
		HashMap<String, Object> childMap = new HashMap<String, Object>();

		// SOD基本情報
		HashMap<String, Object> sodKihonInfo = new HashMap<String, Object>();
		// SYSID
		sodKihonInfo.put("sysid", opInfoMap.get(EKK0351A010CBSMsg1List.SYSID));
		// 異動区分
		sodKihonInfo.put("ido_div", JFUStrConst.CD00576_00031);
		// SODマップに追加
		childMap.put("sod_kihon_info", sodKihonInfo);

		// サービス契約情報
		HashMap<String, Object> svcKeiInfo = new HashMap<String, Object>();
		// サービス契約番号
		svcKeiInfo.put("svc_kei_no", opInfoMap.get(EKK0351A010CBSMsg1List.SVC_KEI_NO));
		// SODマップに追加
		childMap.put("svc_kei_info", svcKeiInfo);

		// サービス契約内訳情報
		HashMap<String, Object> svcKeiUcwkInfo = new HashMap<String, Object>();
		// SODマップに追加
		childMap.put("svc_kei_ucwk_info", svcKeiUcwkInfo);

		// オプションサービス契約情報
		HashMap<String, Object> opsvkeiInfo = new HashMap<String, Object>();

		// 変更前オプションサービス契約番号
		opsvkeiInfo.put("chbf_opsvkei_no", opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		// 変更前オプションサービス契約世代登録年月日時分秒(オプションサービス契約)
		opsvkeiInfo.put("chbf_opsvkei_gene_add_dtm", opInfoMap.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM));
		// 変更後オプションサービス契約番号
		opsvkeiInfo.put("chaf_opsvkei_no", opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		// 変更後オプションサービス契約世代登録年月日時分秒
		opsvkeiInfo.put("chaf_opsvkei_gene_add_dtm", opInfoMap.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM));
		// 変更前サブオプションサービス契約番号
		opsvkeiInfo.put("chbf_sbopsvkei_no", sbopInfoMap.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_NO));
		// 変更前サブオプションサービス契約世代登録年月日時分秒(サブオプションサービス契約)
		opsvkeiInfo.put("chbf_sbopsvkei_gene_add_dtm", sbopInfoMap.get(EKK0401A010CBSMsg1List.GENE_ADD_DTM));
		// SODマップに追加
		childMap.put("opsvkei_info", opsvkeiInfo);

		// 機器提供サービス内訳情報
		HashMap<String, Object> kktsvkeiInfo = new HashMap<String, Object>();

		// SODマップに追加
		childMap.put("kktsvkei_info", kktsvkeiInfo);

		// SODマップを対象データリストに追加
		// あればそれを使用
		ArrayList<HashMap<String, Object>> arrayList = (ArrayList<HashMap<String, Object>>)parentMap.get("trgt_data_list");
		if (arrayList == null)
		{
			arrayList = new ArrayList<HashMap<String, Object>>();
		}
		arrayList.add(childMap);

		// 対象データリストをマップに追加
		parentMap.put("trgt_data_list", arrayList);

		// 対象データリストのマッピング
		param.setData("JKKHakkoSODCC", parentMap);

		// 開始ログ
		outDebugLog("----- setSODMappingOpVCBf End  -----");

	}

	/**
	 * SOD用データマップ作成処理（ウイルスチェック オプション変更後）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sbopInfoMap サブオプション情報マップ
	 * @throws Exception 例外
	 */
	public void setSODMappingOpVcAf(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sbopInfoMap)
			throws Exception
	{
		// 開始ログ
		outDebugLog("----- setSODMappingOpVCAf Start  -----");

		// サブオープンサービス契約番号
		String sbopSvcKeiNo = (String)sbopInfoMap.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_NO);
		// 世代登録年月日時分秒
		String geneAddDtm = (String)sbopInfoMap.get(EKK0401A010CBSMsg1List.GENE_ADD_DTM);

		//  対象データリストの取得
		HashMap parentMap = (HashMap)param.getData("JKKHakkoSODCC");

		// 対象データリストの取得
		ArrayList<HashMap<String, Object>> arrayList = (ArrayList<HashMap<String, Object>>)parentMap.get("trgt_data_list");
		for (HashMap<String, Object> childMap : arrayList)
		{

			// オプションサービス契約情報
			HashMap<String, Object> opsvkeiInfo = (HashMap<String, Object>)childMap.get("opsvkei_info");

			// サブオプションサービス契約番号が同じ場合
			if (opsvkeiInfo.get("chbf_sbopsvkei_no").equals(sbopSvcKeiNo))
			{
				// 変更後サブオプションサービス契約番号
				opsvkeiInfo.put("chaf_sbopsvkei_no", sbopSvcKeiNo);
				// 変更後サブオプションサービス契約世代登録年月日時分秒
				opsvkeiInfo.put("chaf_sbopsvkei_gene_add_dtm", geneAddDtm);
			}
		}

		// 開始ログ
		outDebugLog("----- setSODMappingOpVCAf End  -----");

	}

	/**
	 * 上りマッピング項目設定(サブオプションサービス契約一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opSvcKeiNo オプションサービス契約番号
	 * @param sbopSvcKeiNo サブオプションサービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0401A010(IRequestParameterReadWrite param, String fixedText, String opSvcKeiNo, String sbopSvcKeiNo)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ＫＥＹ＿オプションサービス契約番号
		inMap.put(EKK0401A010CBSMsg.KEY_OP_SVC_KEI_NO, opSvcKeiNo);
		// ＫＥＹ＿サブオプションサービス契約番号
		inMap.put(EKK0401A010CBSMsg.KEY_SBOP_SVC_KEI_NO, sbopSvcKeiNo);
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0401A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

	}

	/**
	 * 上りマッピング項目設定(サブオプションサービス契約一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0401A010(IRequestParameterReadWrite param, String fixedText, HashMap dataMap) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ＫＥＹ＿オプションサービス契約番号
		inMap.put(EKK0401A010CBSMsg.KEY_OP_SVC_KEI_NO, (String)dataMap.get("op_svc_kei_no"));
		// ＫＥＹ＿サブオプションサービス契約番号
		inMap.put(EKK0401A010CBSMsg.KEY_SBOP_SVC_KEI_NO, (String)dataMap.get("sbop_svc_kei_no"));
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0401A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

	}

	/**
	 * 上りマッピング項目設定(サブオプションサービス契約一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0401B001(IRequestParameterReadWrite param, String fixedText, HashMap dataMap) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:一覧照会)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿オプションサービス契約番号
		inMap.put(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO, (String)dataMap.get(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO));

	}

	/**
	 * 上りマッピング項目設定(オプションサービス契約＜ISP＞一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0361A010(IRequestParameterReadWrite param, String fixedText, HashMap dataMap) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:PK)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿オプションサービス契約番号
		inMap.put(EKK0361A010CBSMsg.KEY_OP_SVC_KEI_NO, (String)dataMap.get("op_svc_kei_no"));
		// ＫＥＹ＿世代登録年月日時分秒
		inMap.put(EKK0361A010CBSMsg.KEY_GENE_ADD_DTM, (String)dataMap.get("gene_add_dtm"));

	}

	/**
	 * 上りマッピング項目設定(サブオプションサービス契約＜ISP＞一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0411A010(IRequestParameterReadWrite param, String fixedText, HashMap dataMap) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ＫＥＹ＿オプションサービス契約番号
		inMap.put(EKK0411A010CBSMsg.KEY_OP_SVC_KEI_NO, (String)dataMap.get("op_svc_kei_no"));
		// ＫＥＹ＿サブオプションサービス契約番号
		inMap.put(EKK0411A010CBSMsg.KEY_SBOP_SVC_KEI_NO, (String)dataMap.get("sbop_svc_kei_no"));

	}

	/**
	 * 上りマッピング項目設定(サブオプションサービス契約キャンセル)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap データマップ
	 * @param mskmNaiyoMap 申込内容情報マップ
	 * @param lastUpdDtm 最終更新年月日時分秒
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0401C150(IRequestParameterReadWrite param, String fixedText, HashMap dataMap, HashMap mskmNaiyoMap, String lastUpdDtm)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック＆登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// オプションサービス契約番号
		inMap.put(EKK0401C150CBSMsg.OP_SVC_KEI_NO, (String)dataMap.get("op_svc_kei_no"));
		// サブオプションサービス契約番号
		inMap.put(EKK0401C180CBSMsg.SBOP_SVC_KEI_NO, (String)dataMap.get("sbop_svc_kei_no"));
		// 申込明細番号
		inMap.put(EKK0401C150CBSMsg.MSKM_DTL_NO, mskmNaiyoMap.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// サービスキャンセル理由コード
		inMap.put(EKK0401C150CBSMsg.SVC_CANCEL_RSN_CD, JFUStrConst.CD01390_06); // "06":解約によるキャンセル
		// 異動区分
		inMap.put(EKK0351C240CBSMsg.IDO_DIV, JFUStrConst.CD00576_00031); // "00031"：オプション設定
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0351C240CBSMsg.UPD_DTM_BF, lastUpdDtm);

	}

	/**
	 * 上りマッピング項目設定(サブオプションサービス契約解約)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @param mskmNaiyoMap
	 * @param lastUpdDtm
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0401C170(IRequestParameterReadWrite param, String fixedText, HashMap dataMap, HashMap mskmNaiyoMap, String lastUpdDtm)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック＆登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// オプションサービス契約番号
		inMap.put(EKK0401C170CBSMsg.OP_SVC_KEI_NO, (String)dataMap.get("op_svc_kei_no"));
		// サブオプションサービス契約番号
		inMap.put(EKK0401C170CBSMsg.SBOP_SVC_KEI_NO, (String)dataMap.get("sbop_svc_kei_no"));
		// 申込明細番号
		inMap.put(EKK0401C170CBSMsg.MSKM_DTL_NO, mskmNaiyoMap.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// 予約適用開始希望年月日
		inMap.put(EKK0401C170CBSMsg.RSV_TSTA_KIBO_YMD, JFUBPCommon.getOpeDate(null));
		// サービス終了年月日
		inMap.put(EKK0401C170CBSMsg.SVC_ENDYMD, JFUBPCommon.getOpeDate(null));
		// サービス解約理由コード
		inMap.put(EKK0401C170CBSMsg.SVC_DLRE_CD, JFUStrConst.CD00879_01); // "01"：通常解約
		// 異動区分
		inMap.put(EKK0401C170CBSMsg.IDO_DIV, JFUStrConst.CD00576_00031); // "00031"：オプション設定
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0401C170CBSMsg.UPD_DTM_BF, lastUpdDtm);
	}

	/**
	 * 上りマッピング項目設定(EKK0401C180_サブオプションサービス契約解約確定)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @param hiChrgMap
	 * @param lastUpdDtm
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0401C180(IRequestParameterReadWrite param, String fixedText, HashMap dataMap, HashMap hiChrgMap, String lastUpdDtm)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック＆登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// オプションサービス契約番号
		inMap.put(EKK0401C180CBSMsg.OP_SVC_KEI_NO, (String)dataMap.get("op_svc_kei_no"));
		// サブオプションサービス契約番号
		inMap.put(EKK0401C180CBSMsg.SBOP_SVC_KEI_NO, (String)dataMap.get("sbop_svc_kei_no"));
		// サービス終了年月日
		inMap.put(EKK0401C180CBSMsg.SVC_ENDYMD, JFUBPCommon.getOpeDate(null));
		// サービス解約理由コード
		inMap.put(EKK0401C180CBSMsg.SVC_DLRE_CD, JFUStrConst.CD00879_01); // "01"：通常解約
		// 異動区分
		inMap.put(EKK0401C180CBSMsg.IDO_DIV, JFUStrConst.CD00576_00031); // "00031"：オプション設定
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0401C180CBSMsg.UPD_DTM_BF, lastUpdDtm);

		// ●非課金判定処理(jdgHiChrg)の値
		// サービス課金終了年月日
		inMap.put(EKK0401C180CBSMsg.SVC_CHRG_ENDYMD, hiChrgMap.get(EKK0401C180CBSMsg.SVC_CHRG_ENDYMD));
		// 解約時課金フラグ
		inMap.put(EKK0401C180CBSMsg.DSLJI_CHRG_FLG, hiChrgMap.get(EKK0401C180CBSMsg.DSLJI_CHRG_FLG));
	}

	/**
	 * 上りマッピング項目設定(EKK0351C240_オプションサービス契約解約)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opInfoMap
	 * @param mskmNaiyoMap
	 * @param lastUpdDtm
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0351C240(IRequestParameterReadWrite param, String fixedText, HashMap opInfoMap, HashMap mskmNaiyoMap, String lastUpdDtm)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// オプションサービス契約番号
		inMap.put(EKK0351C240CBSMsg.OP_SVC_KEI_NO, (String)opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		// 申込明細番号
		inMap.put(EKK0351C240CBSMsg.MSKM_DTL_NO, mskmNaiyoMap.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// 予約適用開始希望年月日
		inMap.put(EKK0351C240CBSMsg.RSV_TSTA_KIBO_YMD, JFUBPCommon.getOpeDate(null));
		// サービス終了年月日
		inMap.put(EKK0351C240CBSMsg.SVC_ENDYMD, JFUBPCommon.getOpeDate(null));
		// サービス解約理由コード
		inMap.put(EKK0351C240CBSMsg.SVC_DLRE_CD, JFUStrConst.CD00879_01); // "01"：通常解約
		// 異動区分
		inMap.put(EKK0351C240CBSMsg.IDO_DIV, JFUStrConst.CD00576_00031); // "00031"：オプション設定
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0351C240CBSMsg.UPD_DTM_BF, lastUpdDtm);
	}

	/**
	 * 上りマッピング項目設定(EKK0351C250_オプションサービス契約解約確定)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opInfoMap
	 * @param hiChrgMap
	 * @param lastUpdDtm
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0351C250(IRequestParameterReadWrite param, String fixedText, HashMap opInfoMap, HashMap hiChrgMap, String lastUpdDtm)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// オプションサービス契約番号
		inMap.put(EKK0351C250CBSMsg.OP_SVC_KEI_NO, (String)opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO));
		// サービス終了年月日
		inMap.put(EKK0351C250CBSMsg.SVC_ENDYMD, JFUBPCommon.getOpeDate(null));
		// サービス解約理由コード
		inMap.put(EKK0351C250CBSMsg.SVC_DLRE_CD, JFUStrConst.CD00879_01); // "01"：通常解約
		// 異動区分
		inMap.put(EKK0351C250CBSMsg.IDO_DIV, JFUStrConst.CD00576_00031); // "00031"：オプション設定
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0351C250CBSMsg.UPD_DTM_BF, lastUpdDtm);

		// ●非課金判定処理(jdgHiChrg)の値
		// サービス課金終了年月日
		inMap.put(EKK0351C250CBSMsg.SVC_CHRG_ENDYMD, hiChrgMap.get(EKK0351C250CBSMsg.SVC_CHRG_ENDYMD));
		// 解約時課金フラグ
		inMap.put(EKK0351C250CBSMsg.DSLJI_CHRG_FLG, hiChrgMap.get(EKK0351C250CBSMsg.DSLJI_CHRG_FLG));
	}

	/**
	 * 上りマッピング項目設定(EKK0361C050_オプションサービス契約＜ISP＞情報変更)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dslMap
	 * @param opInfoMap
	 * @param opIspInfoMap
	 * @param mskmNaiyoMap
	 * @param lastUpdDtm
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0361C050(IRequestParameterReadWrite param, String fixedText, HashMap dslMap, HashMap opInfoMap, HashMap opIspInfoMap,
			HashMap mskmNaiyoMap, String lastUpdDtm) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// 同一項目を移送
		super.copyProperties(inMap, opInfoMap);
		// 同一項目を移送
		super.copyProperties(inMap, opIspInfoMap);

		// 申込明細番号
		inMap.put(EKK0361C050CBSMsg.MSKM_DTL_NO, mskmNaiyoMap.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// オプションサービス契約番号
		inMap.put(EKK0361C050CBSMsg.OP_SVC_KEI_NO, dslMap.get(IN_OP_SVC_KEI_NO));
		// 追加後容量
		inMap.put(EKK0361C050CBSMsg.CAPA, dslMap.get(IN_CAPA));
		// 異動区分
		inMap.put(EKK0361C050CBSMsg.IDO_DIV, JFUStrConst.CD00576_00031); // "00031"：オプション設定
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0361C050CBSMsg.UPD_DTM_BF, lastUpdDtm);

	}

	/**
	 * 上りマッピング項目設定(EKK0411C010_サブオプションサービス契約＜ISP＞変更)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dslMap
	 * @param sbopIspInfoMap
	 * @param mskmNaiyoMap
	 * @param lastUpdDtm
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0411C010(IRequestParameterReadWrite param, String fixedText, HashMap dslMap, HashMap sbopIspInfoMap,
			HashMap mskmNaiyoMap, String lastUpdDtm) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// 同一項目を移送
		copyProperties(inMap, sbopIspInfoMap);

		// オプションサービス契約番号
		inMap.put(EKK0411C010CBSMsg.OP_SVC_KEI_NO, dslMap.get(IN_OP_SVC_KEI_NO));
		// サブオプションサービス契約番号
		inMap.put(EKK0411C010CBSMsg.SBOP_SVC_KEI_NO, sbopIspInfoMap.get(EKK0411A010CBSMsg1List.SBOP_SVC_KEI_NO));

		// 申込明細番号
		inMap.put(EKK0411C010CBSMsg.MSKM_DTL_NO, mskmNaiyoMap.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO));
		// 追加容量
		inMap.put(EKK0411C010CBSMsg.ADD_CAPA, dslMap.get(IN_ADD_CAPA));
		// 異動区分
		inMap.put(EKK0411C010CBSMsg.IDO_DIV, JFUStrConst.CD00576_00031); // "00031"：オプション設定
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0411C010CBSMsg.UPD_DTM_BF, lastUpdDtm);

	}

	/**
	 * 非課金判定処理
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opInfoMap
	 * @param sbopInfoMap
	 * @param svcDiv サービス区分（1:オプション、2:サブオプション）
	 * @return HashMap
	 * @throws Throwable
	 */
	public HashMap jdgHiChrg(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap opInfoMap, HashMap sbopInfoMap,
			String svcDiv) throws Throwable
	{
		// 返却用マップ
		HashMap returnMap = new HashMap();

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 運用日付
		String opeDate = JFUBPCommon.getOpeDate(null);
		// サービス課金開始年月日
		String svcChrgStaYmd = null;

		// ●EKK0081A010_サービス契約一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0081A010);
		// 上りマッピング
		setInMapEKK0081A010(param, fixedText, (String)opInfoMap.get(EKK0351A010CBSMsg1List.SVC_KEI_NO));
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0081A010, TEMP_ID_DTLEKK0081A010, IN_COL_LIST_EKK0081A010, ERR_COL_EKK0081A010);
		// サービス課金開始年月日
		svcChrgStaYmd =
				getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0081A010), TEMP_ID_DTLEKK0081A010,
						EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD, 0);

		// ■ オプションの場合 ■
		// ■ オプションの場合 ■
		// ■ オプションの場合 ■
		if ("1".equals(svcDiv))
		{

			HashMap trgtDataOp = new HashMap();

			// サービス提供中、休止中断中の場合
			if (JFUStrConst.CD00037_100.equals(opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT))
					|| JFUStrConst.CD00037_210.equals(opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				// サービス契約サービス課金開始日
				trgtDataOp.put("svcKeiChrgStaYmd", svcChrgStaYmd);
				// 解約種別フラグ("2")
				trgtDataOp.put("dslSbtFlg", "2");
				// オプションサービスコード
				trgtDataOp.put("opSvcCd", opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_CD));
				// オプションサービス契約サービス利用開始日
				trgtDataOp.put("opSvcUseStaYmd", opInfoMap.get(EKK0351A010CBSMsg1List.SVC_STAYMD));
				// オプションサービス契約サービス利用終了日
				trgtDataOp.put("opSvcUseEndYmd", opeDate);

				// 非課金判定処理
				HashMap<String, Object> resMap = JKKBpCommon.jdgHiChrg(trgtDataOp);

				// ●上りマッピング
				// サービス課金終了年月日
				returnMap.put(EKK0351C250CBSMsg.SVC_CHRG_ENDYMD, resMap.get(OUT_PARAM_SVC_CHRG_ENDYMD));
				// 解約時課金フラグ
				returnMap.put(EKK0351C250CBSMsg.DSLJI_CHRG_FLG, resMap.get(OUT_PARAM_CHRGFLG));
			}
			else
			{
				// ●上りマッピング
				// サービス課金終了年月日
				returnMap.put(EKK0351C250CBSMsg.SVC_CHRG_ENDYMD, JFUCommonUtil.addDay(opeDate, -1));
				// 解約時課金フラグ
				returnMap.put(EKK0351C250CBSMsg.DSLJI_CHRG_FLG, JFUStrConst.CD00002_0);
			}
		}

		// ■ サブオプションの場合 ■
		// ■ サブオプションの場合 ■
		// ■ サブオプションの場合 ■

		else
		{

			// サービス提供中、休止中断中の場合
			if (JFUStrConst.CD00037_100.equals(sbopInfoMap.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT))
					|| JFUStrConst.CD00037_210.equals(opInfoMap.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT)))
			{
				HashMap trgtDataSbop = new HashMap();

				// サービス契約サービス課金開始日
				trgtDataSbop.put("svcKeiChrgStaYmd", svcChrgStaYmd);
				// 解約種別フラグ("3")
				trgtDataSbop.put("dslSbtFlg", "3");
				// サブオプションサービス契約サービス利用開始日
				trgtDataSbop.put("subOpSvcUseStaYmd", sbopInfoMap.get(EKK0401A010CBSMsg1List.SVC_STAYMD));
				// サブオプションサービス契約サービス利用終了日
				trgtDataSbop.put("subOpSvcUseEndYmd", opeDate);

				// 非課金判定処理
				HashMap<String, Object> resMap = JKKBpCommon.jdgHiChrg(trgtDataSbop);

				// ●上りマッピング
				// サービス課金終了年月日
				returnMap.put(EKK0401C180CBSMsg.SVC_CHRG_ENDYMD, resMap.get(OUT_PARAM_SVC_CHRG_ENDYMD));
				// 解約時課金フラグ
				returnMap.put(EKK0401C180CBSMsg.DSLJI_CHRG_FLG, resMap.get(OUT_PARAM_CHRGFLG));
			}
			else
			{
				// ●上りマッピング
				// サービス課金終了年月日
				returnMap.put(EKK0401C180CBSMsg.SVC_CHRG_ENDYMD, JFUCommonUtil.addDay(opeDate, -1));
				// 解約時課金フラグ
				returnMap.put(EKK0401C180CBSMsg.DSLJI_CHRG_FLG, JFUStrConst.CD00002_0);

			}
		}

		return returnMap;
	}

	/**
	 * エイリアスアドレス作成
	 * 
	 * <br>
	 * @param opMap
	 * @param sbopMap
	 * @return String
	 */
	private String getAliasAddress(HashMap<String, String> opMap, HashMap<String, String> sbopMap)
	{

		// メールアドレス
		String mlad = opMap.get(EKK0361A010CBSMsg1List.MLAD);

		// エイリアス
		String alias = sbopMap.get(EKK0411A010CBSMsg1List.ALIAS);

		// メールアドレスの@よりまえをエイリアスに変更
		return alias + mlad.replaceAll("(.*)(?=@)", "");
	}

	/**
	 * デバッグ出力処理です。
	 * 
	 * <br>
	 * @param obj 出力内容
	 */
	private void outDebugLog(Object obj)
	{
		// デバッグ出力
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), obj, null, null, null);
	}

	/**
	 * チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}

}
