/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUGetNetOptMskmInfoCC
*   ソースファイル名：JFUGetNetOptMskmInfoCC.java
*   作成者          ：富士通
*   日付            ：2015年01月01日
*＜機能概要＞
*   ネットオプション申込情報取得コモンコンポーネント部品
*＜修正履歴＞
*   バージョン   修正日       修正者      修正内容
*   v14.00.00    2015/01/01   FJ）谷本    新規作成
*   v32.00.00    2017/04/10   FJ) 横山   【ANK-3149-00-00】新セキュリティパック導入
*   v53.00.00    2021/03/30   FJ) 新谷   【ANK-4009-00-00】CX戦略WG方針対応
*   v71.00.00    2024/03/11   GDC)J.Zabala   【ANK-4543-00-00】NTT卸対応
*   v71.02       2024/04/02   FJ) 張本   【ANK-4468-00-00】eo光ネット「シンプルプラン」追加対応
*   v73.00.00    2024/07/26   FJ) 余野木 【ANK-4427-00-00】NTT卸対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

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.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B519CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B519CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351B503CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351B503CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0401B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0401B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0401B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0591A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0591A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0601B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0601B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0811A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0811A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1881A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1881A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1881B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1881B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK3511A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3511A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK3521A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3521A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg1List;

/**
 * ネットオプション申込情報取得コモンコンポーネント部品
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUGetNetOpSvKeiCC extends JFUBaseCC
{
	/** オプション解約区分 */
	private static final String IN_OP_DSL_DIV = "op_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";
	/** 解約可能サービス契約ステータス拡張開始年月日 */
	private static final String SVC_KEI_STAT_ADD_YMD = "20210701";

	/** 解約可能料金グループ：メールアドレス */
	private static final List<String> MLAD_PRC_GRP =
			Arrays.asList(JFUStrConst.CD00133_02, JFUStrConst.CD00133_03, JFUStrConst.CD00133_04, JFUStrConst.CD00133_05, JFUStrConst.CD00133_06,
					JFUStrConst.CD00133_08, JFUStrConst.CD00133_09, JFUStrConst.CD00133_16);

	/** 解約可能サービス契約ステータス：メールアドレス(2021年06月30日まで) */
	private static final HashMap<String, List<String>> MLAD_SVC_KEI_STAT_TO_20210630 = new HashMap<String, List<String>>()
	{
		{
			/** 解約可能サービス契約ステータス：eo光ネットホームタイプ */
			put(JFUStrConst.CD00133_02, Arrays.asList(JFUStrConst.CD00037_020, JFUStrConst.CD00037_030, JFUStrConst.CD00037_100,
					JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eo光ネットメゾンタイプ */
			put(JFUStrConst.CD00133_03, Arrays.asList(JFUStrConst.CD00037_020, JFUStrConst.CD00037_030, JFUStrConst.CD00037_100,
					JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eo光ネットマンションタイプ */
			put(JFUStrConst.CD00133_04, Arrays.asList(JFUStrConst.CD00037_030, JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eoADSL(eAccess) */
			put(JFUStrConst.CD00133_05, Arrays.asList(JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eoADSL(フレッツ) */
			put(JFUStrConst.CD00133_06, Arrays.asList(JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eoモバイル(3G) */
			put(JFUStrConst.CD00133_08, Arrays.asList(JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eoモバイル(UQ-WiMAX) */
			put(JFUStrConst.CD00133_09, Arrays.asList(JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eoモバイル(メールアドレス) */
			put(JFUStrConst.CD00133_16, Arrays.asList(JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
		}
	};

	/** 解約可能サービス契約ステータス：メールアドレス(2021年07月01日から) */
	private static final HashMap<String, List<String>> MLAD_SVC_KEI_STAT_FROM_20210701 = new HashMap<String, List<String>>()
	{
		{
			/** 解約可能サービス契約ステータス：eo光ネットホームタイプ */
			put(JFUStrConst.CD00133_02, Arrays.asList(JFUStrConst.CD00037_020, JFUStrConst.CD00037_030, JFUStrConst.CD00037_100,
					JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eo光ネットメゾンタイプ */
			put(JFUStrConst.CD00133_03, Arrays.asList(JFUStrConst.CD00037_020, JFUStrConst.CD00037_030, JFUStrConst.CD00037_100,
					JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eo光ネットマンションタイプ */
			put(JFUStrConst.CD00133_04, Arrays.asList(JFUStrConst.CD00037_020, JFUStrConst.CD00037_030, JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eoADSL(eAccess) */
			put(JFUStrConst.CD00133_05, Arrays.asList(JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eoADSL(フレッツ) */
			put(JFUStrConst.CD00133_06, Arrays.asList(JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eoモバイル(3G) */
			put(JFUStrConst.CD00133_08, Arrays.asList(JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eoモバイル(UQ-WiMAX) */
			put(JFUStrConst.CD00133_09, Arrays.asList(JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
			/** 解約可能サービス契約ステータス：eoモバイル(メールアドレス) */
			put(JFUStrConst.CD00133_16, Arrays.asList(JFUStrConst.CD00037_100, JFUStrConst.CD00037_210));
		}
	};

	/** 解約可能料金グループ：ウィルスチェックサービス */
	private static final List<String> VC_PRC_GRP =
			Arrays.asList(JFUStrConst.CD00133_02, JFUStrConst.CD00133_03, JFUStrConst.CD00133_04, JFUStrConst.CD00133_05, JFUStrConst.CD00133_06,
					JFUStrConst.CD00133_08, JFUStrConst.CD00133_09, JFUStrConst.CD00133_16);

	/** 解約可能サービス契約ステータス：ウィルスチェックサービス(2021年06月30日まで) */
	private static final HashMap<String, List<String>> VC_SVC_KEI_STAT_TO_20210630 = new HashMap<String, List<String>>()
	{
		{
			/** 解約可能サービス契約ステータス：eo光ネットホームタイプ */
			put(JFUStrConst.CD00133_02, Arrays.asList(JFUStrConst.CD00037_020, JFUStrConst.CD00037_030, JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eo光ネットメゾンタイプ */
			put(JFUStrConst.CD00133_03, Arrays.asList(JFUStrConst.CD00037_020, JFUStrConst.CD00037_030, JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eo光ネットマンションタイプ */
			put(JFUStrConst.CD00133_04, Arrays.asList(JFUStrConst.CD00037_030, JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eoADSL(eAccess) */
			put(JFUStrConst.CD00133_05, Arrays.asList(JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eoADSL(フレッツ) */
			put(JFUStrConst.CD00133_06, Arrays.asList(JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eoモバイル(3G) */
			put(JFUStrConst.CD00133_08, Arrays.asList(JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eoモバイル(UQ-WiMAX) */
			put(JFUStrConst.CD00133_09, Arrays.asList(JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eoモバイル(メールアドレス) */
			put(JFUStrConst.CD00133_16, Arrays.asList(JFUStrConst.CD00037_100));
		}
	};

	/** 解約可能サービス契約ステータス：ウィルスチェックサービス(2021年07月01日から) */
	private static final HashMap<String, List<String>> VC_SVC_KEI_STAT_FROM_20210701 = new HashMap<String, List<String>>()
	{
		{
			/** 解約可能サービス契約ステータス：eo光ネットホームタイプ */
			put(JFUStrConst.CD00133_02, Arrays.asList(JFUStrConst.CD00037_020, JFUStrConst.CD00037_030, JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eo光ネットメゾンタイプ */
			put(JFUStrConst.CD00133_03, Arrays.asList(JFUStrConst.CD00037_020, JFUStrConst.CD00037_030, JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eo光ネットマンションタイプ */
			put(JFUStrConst.CD00133_04, Arrays.asList(JFUStrConst.CD00037_020, JFUStrConst.CD00037_030, JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eoADSL(eAccess) */
			put(JFUStrConst.CD00133_05, Arrays.asList(JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eoADSL(フレッツ) */
			put(JFUStrConst.CD00133_06, Arrays.asList(JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eoモバイル(3G) */
			put(JFUStrConst.CD00133_08, Arrays.asList(JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eoモバイル(UQ-WiMAX) */
			put(JFUStrConst.CD00133_09, Arrays.asList(JFUStrConst.CD00037_100));
			/** 解約可能サービス契約ステータス：eoモバイル(メールアドレス) */
			put(JFUStrConst.CD00133_16, Arrays.asList(JFUStrConst.CD00037_100));
		}
	};

	/** 無効なサービス契約ステータス */
	private static final List<String> SVC_KEI_STAT_MUKO = Arrays.asList(JFUStrConst.CD00037_910, JFUStrConst.CD00037_920);

	/* ■□ EKK0081B519_サービス契約一覧照会（SYSID）3 ■□ */
	/** テンプレートID(サービス契約一覧照会（SYSID）3) */
	private static final String TEMP_ID_EKK0081B519 = "EKK0081B519";
	/** テンプレートID(サービス契約一覧照会（SYSID）3明細) */
	private static final String TEMP_ID_DTL_EKK0081B519 = EKK0081B519CBSMsg.EKK0081B519CBSMSG1LIST;
	/** IN項目リスト(サービス契約一覧照会（SYSID）3) */
	private static final List<String> IN_COL_LIST_EKK0081B519 = Arrays.asList(EKK0081B519CBSMsg.KEY_SYSID);
	/** 関連チェックエラー項目(サービス契約一覧照会（SYSID）3) */
	private static final String ERR_COL_EKK0081B519 = EKK0081B519CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(サービス契約一覧照会（SYSID）3) */
	private static final String TEMP_TEMP_KEY_EKK0081B519 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0081B519 + 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;

	/* ■□ EKK0351B503_現オプションサービス契約情報一覧照会(ネット) ■□ */
	/** テンプレートID(現オプションサービス契約情報一覧照会(ネット)) */
	private static final String TEMP_ID_EKK0351B503 = "EKK0351B503";
	/** テンプレートID(現オプションサービス契約情報一覧照会(ネット)明細) */
	private static final String TEMP_ID_DTL_EKK0351B503 = EKK0351B503CBSMsg.EKK0351B503CBSMSG1LIST;
	/** IN項目リスト(現オプションサービス契約情報一覧照会(ネット)) */
	private static final List<String> IN_COL_LIST_EKK0351B503 =
			Arrays.asList(EKK0351B503CBSMsg.KEY_SVC_KEI_NO, EKK0351B503CBSMsg.KEY_WEB_ID, EKK0351B503CBSMsg.KEY_POP_ID, EKK0351B503CBSMsg.KEY_SYSID);
	/** 関連チェックエラー項目(現オプションサービス契約情報一覧照会(ネット)) */
	private static final String ERR_COL_EKK0351B503 = EKK0351B503CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(現オプションサービス契約情報一覧照会(ネット)) */
	private static final String TEMP_TEMP_KEY_EKK0351B503 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0351B503 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0601B001_料金プラン固定単価（オプション申込料金）一覧照会SC ■□ */
	/** テンプレートID(料金プラン固定単価（オプション申込料金）一覧照会) */
	private static final String TEMP_ID_EKK0601B001 = "EKK0601B001";
	/** テンプレートID(明細)(料金プラン固定単価（オプション申込料金）一覧照会) */
	private static final String TEMP_ID_DTL_EKK0601B001 = EKK0601B001CBSMsg.EKK0601B001CBSMSG1LIST;
	/** IN項目リスト(料金プラン固定単価（オプション申込料金）一覧照会) */
	private static final List<String> IN_COL_LIST_EKK0601B001 =
			Arrays.asList(EKK0601B001CBSMsg.KEY_PCRS_CD, EKK0601B001CBSMsg.KEY_PPLAN_CD, EKK0601B001CBSMsg.MAX_SEARCH_NUM,
					EKK0601B001CBSMsg.DISPLAY_NUM, EKK0601B001CBSMsg.DISPLAY_PAGE_NUM, EKK0601B001CBSMsg.SEARCH_TYPE,
					EKK0601B001CBSMsg.TOTAL_PAGE_NUM);
	/** 関連チェックエラー項目(料金プラン固定単価（オプション申込料金）一覧照会) */
	private static final String ERR_COL_EKK0601B001 = EKK0601B001CBSMsg.KEY_PCRS_CD_ERR;
	/** SC実行結果取得キー(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMP_TEMP_KEY_EKK0601B001 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0601B001 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0811A010_料金コース_オプションサービス一意照会SC ■□ */
	/** テンプレートID(料金コース_オプションサービス一意照会) */
	private static final String TEMP_ID_EKK0811A010 = "EKK0811A010";
	/** テンプレートID(明細)(料金コース_オプションサービス一意照会) */
	private static final String TEMP_ID_DTL_EKK0811A010 = EKK0811A010CBSMsg.EKK0811A010CBSMSG1LIST;
	/** IN項目リスト(料金コース_オプションサービス一意照会) */
	private static final List<String> IN_COL_LIST_EKK0811A010 =
			Arrays.asList(EKK0811A010CBSMsg.KEY_PCRS_CD, EKK0811A010CBSMsg.KEY_OP_SVC_CD, EKK0811A010CBSMsg.KEY_GENE_ADD_DTM,
					EKK0811A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(料金コース_オプションサービス一意照会) */
	private static final String ERR_COL_EKK0811A010 = EKK0811A010CBSMsg.KEY_PCRS_CD_ERR;
	/** SC実行結果取得キー(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMP_TEMP_KEY_EKK0811A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0811A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK1881B001_料金コース_サブオプションサービス一覧照会SC ■□ */
	/** テンプレートID(料金コース_サブオプションサービス一覧照会) */
	private static final String TEMP_ID_EKK1881B001 = "EKK1881B001";
	/** テンプレートID(明細)(料金コース_サブオプションサービス一覧照会) */
	private static final String TEMP_ID_DTL_EKK1881B001 = EKK1881B001CBSMsg.EKK1881B001CBSMSG1LIST;
	/** IN項目リスト(料金コース_サブオプションサービス一覧照会) */
	private static final List<String> IN_COL_LIST_EKK1881B001 = Arrays.asList(EKK1881B001CBSMsg.KEY_PCRS_CD, EKK1881B001CBSMsg.KEY_SBOP_SVC_CD);
	/** 関連チェックエラー項目(料金コース_サブオプションサービス一覧照会) */
	private static final String ERR_COL_EKK1881B001 = EKK1881B001CBSMsg.KEY_PCRS_CD_ERR;
	/** SC実行結果取得キー(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMP_TEMP_KEY_EKK1881B001 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK1881B001 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0591A010_料金プラン一意照会SC ■□ */
	/** テンプレートID(料金プラン一意照会) */
	private static final String TEMP_ID_EKK0591A010 = "EKK0591A010";
	/** テンプレートID(明細)(料金プラン一意照会) */
	private static final String TEMP_ID_DTL_EKK0591A010 = EKK0591A010CBSMsg.EKK0591A010CBSMSG1LIST;
	/** IN項目リスト(料金プラン一意照会) */
	private static final List<String> IN_COL_LIST_EKK0591A010 = Arrays.asList(EKK0591A010CBSMsg.KEY_PCRS_CD, EKK0591A010CBSMsg.KEY_PPLAN_CD);
	/** 関連チェックエラー項目(料金プラン一意照会) */
	private static final String ERR_COL_EKK0591A010 = EKK0591A010CBSMsg.KEY_PCRS_CD_ERR;
	/** SC実行結果取得キー(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMP_TEMP_KEY_EKK0591A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0591A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0451B010_割引サービス契約一覧照会（割引サービス指定）SC ■□ */
	/** テンプレートID(割引サービス契約一覧照会（割引サービス指定）) */
	private static final String TEMP_ID_EKK0451B010 = "EKK0451B010";
	/** テンプレートID(明細)(割引サービス契約一覧照会（割引サービス指定）) */
	private static final String TEMP_ID_DTL_EKK0451B010 = EKK0451B010CBSMsg.EKK0451B010CBSMSG1LIST;
	/** IN項目リスト(割引サービス契約一覧照会（割引サービス指定）) */
	private static final List<String> IN_COL_LIST_EKK0451B010 = Arrays.asList(EKK0451B010CBSMsg.KEY_SVC_KEI_NO, EKK0451B010CBSMsg.KEY_WRIB_SVC_CD);
	/** 関連チェックエラー項目(割引サービス契約一覧照会（割引サービス指定）) */
	private static final String ERR_COL_EKK0451B010 = EKK0451B010CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMP_TEMP_KEY_EKK0451B010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0451B010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK1681B001_異動予約一覧照会SC ■□ */
	/** テンプレートID(異動予約一覧照会) */
	private static final String TEMP_ID_EKK1681B001 = "EKK1681B001";
	/** テンプレートID(異動予約一覧照会明細) */
	private static final String TEMP_ID_DTL_EKK1681B001 = EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST;
	/** IN項目リスト(異動予約一覧照会) */
	private static final List<String> IN_COL_LIST_EKK1681B001 =
			Arrays.asList(EKK1681B001CBSMsg.KEY_IDO_DIV, EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, EKK1681B001CBSMsg.KEY_RSV_APLY_YMD,
					EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, EKK1681B001CBSMsg.KEY_MSKM_DTL_NO, EKK1681B001CBSMsg.KEY_SYSID,
					EKK1681B001CBSMsg.KEY_SEIKY_KEI_NO, EKK1681B001CBSMsg.KEY_SVC_KEI_NO, EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO,
					EKK1681B001CBSMsg.KEY_OP_SVC_KEI_NO, EKK1681B001CBSMsg.KEY_SBOP_SVC_KEI_NO, EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO,
					EKK1681B001CBSMsg.KEY_WRIB_SVC_KEI_NO, EKK1681B001CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, EKK1681B001CBSMsg.KEY_HEIGO_SK_SYSID,
					EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SYSID, EKK1681B001CBSMsg.KEY_HEIGO_SK_SEIKY_KEI_NO,
					EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SEIKY_KEI_NO, EKK1681B001CBSMsg.KEY_KOJIAK_NO, EKK1681B001CBSMsg.KEY_OP_HKTGI_SK_SVC_KEI_NO,
					EKK1681B001CBSMsg.KEY_SORT_ITEM_NO, EKK1681B001CBSMsg.KEY_SORT_KBN);
	/** 関連チェックエラー項目(異動予約一覧照会) */
	private static final String ERR_COL_EKK1681B001 = EKK1681B001CBSMsg.KEY_IDO_DIV_ERR;;
	/** SC実行結果取得キー(異動予約一覧照会) */
	private static final String TEMP_TEMP_KEY_EKK1681B001 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK1681B001 + 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;

	/* ■□ EZM0321A010_業務パラメータ管理一意照会SC ■□ */
	/** テンプレートID(業務パラメータ管理一意照会) */
	private static final String TEMP_ID_EZM0321A010 = "EZM0321A010";
	/** テンプレートID(業務パラメータ管理一意照会明細) */
	private static final String TEMP_ID_DTL_EZM0321A010 = EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST;
	/** IN項目リスト(業務パラメータ管理一意照会) */
	private static final List<String> IN_COL_LIST_EZM0321A010 = Arrays.asList(EZM0321A010CBSMsg.KEY_WORK_PARAM_ID);
	/** 関連チェックエラー項目(業務パラメータ管理一意照会) */
	private static final String ERR_COL_EZM0321A010 = EZM0321A010CBSMsg.KEY_WORK_PARAM_ID_ERR;
	/** SC実行結果取得キー(業務パラメータ管理一意照会) */
	private static final String TEMP_TEMP_KEY_EZM0321A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EZM0321A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK1881A010_料金コース_サブオプションサービス一意照会SC ■□ */
	/** テンプレートID(料金コース_サブオプションサービス一意照会) */
	private static final String TEMP_ID_EKK1881A010 = "EKK1881A010";
	/** テンプレートID(料金コース_サブオプションサービス一意照会明細) */
	private static final String TEMP_ID_DTL_EKK1881A010 = EKK1881A010CBSMsg.EKK1881A010CBSMSG1LIST;
	/** IN項目リスト(料金コース_サブオプションサービス一意照会) */
	private static final List<String> IN_COL_LIST_EKK1881A010 = Arrays.asList(EKK1881A010CBSMsg.KEY_PCRS_CD, EKK1881A010CBSMsg.KEY_SBOP_SVC_CD);
	/** 関連チェックエラー項目(料金コース_サブオプションサービス一意照会) */
	private static final String ERR_COL_EKK1881A010 = EKK1881A010CBSMsg.KEY_PCRS_CD_ERR;
	/** SC実行結果取得キー(料金コース_サブオプションサービス一意照会) */
	private static final String TEMP_TEMP_KEY_EKK1881A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK1881A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0011A010_お客様一意照会SC ■□ */
	/** テンプレートID(お客様一意照会) */
	private static final String TEMP_ID_ECK0011A010 = "ECK0011A010";
	/** テンプレートID(お客様一意照会明細) */
	private static final String TEMP_ID_DTL_ECK0011A010 = ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST;
	/** IN項目リスト(お客様一意照会) */
	private static final List<String> IN_COL_LIST_ECK0011A010 =
			Arrays.asList(ECK0011A010CBSMsg.KEY_SYSID, ECK0011A010CBSMsg.KEY_GENE_ADD_DTM, ECK0011A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(お客様一意照会) */
	private static final String ERR_COL_ECK0011A010 = ECK0011A010CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(お客様一意照会) */
	private static final String TEMP_TEMP_KEY_ECK0011A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_ECK0011A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0351B003_オプションサービス契約履歴一覧照会SC ■□ */
	/** テンプレートID(オプションサービス契約履歴一覧照会) */
	private static final String TEMP_ID_EKK0351B003 = "EKK0351B003";
	/** テンプレートID(オプションサービス契約履歴一覧照会明細) */
	private static final String TEMP_ID_DTL_EKK0351B003 = EKK0351B003CBSMsg.EKK0351B003CBSMSG1LIST;
	/** IN項目リスト(オプションサービス契約履歴一覧照会) */
	private static final List<String> IN_COL_LIST_EKK0351B003 =
			Arrays.asList(EKK0351B003CBSMsg.KEY_SVC_KEI_NO, EKK0351B003CBSMsg.KEY_SVC_KEI_UCWK_NO1, EKK0351B003CBSMsg.KEY_SVC_KEI_UCWK_NO2,
					EKK0351B003CBSMsg.KEY_SVC_KEI_UCWK_NO3, EKK0351B003CBSMsg.KEY_SVC_KEI_UCWK_NO4, EKK0351B003CBSMsg.KEY_SVC_KEI_UCWK_NO5);
	/** 関連チェックエラー項目(オプションサービス契約履歴一覧照会) */
	private static final String ERR_COL_EKK0351B003 = "this_month_mskm_err";
	/** SC実行結果取得キー(オプションサービス契約履歴一覧照会) */
	private static final String TEMP_TEMP_KEY_EKK0351B003 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0351B003 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0021A010_申込明細一意照会SC ■□ */
	/** テンプレートID(申込明細一意照会) */
	private static final String TEMP_ID_EKK0021A010 = "EKK0021A010";
	/** テンプレートID(申込明細一意照会明細) */
	private static final String TEMP_ID_DTL_EKK0021A010 = EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST;
	/** IN項目リスト(申込明細一意照会) */
	private static final List<String> IN_COL_LIST_EKK0021A010 = Arrays.asList(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, EKK0021A010CBSMsg.KEY_GENE_ADD_DTM);
	/** 関連チェックエラー項目(申込明細一意照会) */
	private static final String ERR_COL_EKK0021A010 = "this_month_mskm_err";
	/** SC実行結果取得キー(申込明細一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0021A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0021A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	// ANK-4543-00-00 ADD START
	/* ■□ EKK3511A010_NTT卸契約一意照会SC ■□ */
	/** テンプレートID(サービス契約一意照会) */
	private static final String TEMP_ID_EKK3511A010 = "EKK3511A010";
	/** テンプレートID(サービス契約一意照会明細) */
	private static final String TEMP_ID_DTL_EKK3511A010 = EKK3511A010CBSMsg.EKK3511A010CBSMSG1LIST;
	/** IN項目リスト(サービス契約一意照会) */
	private static final List<String> IN_COL_LIST_EKK3511A010 = Arrays.asList(EKK3511A010CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(サービス契約一意照会) */
	private static final String ERR_COL_EKK3511A010 = EKK3511A010CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サービス契約一意照会) */
	private static final String TEMP_TEMP_KEY_EKK3511A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK3511A010 + TEMP_TEMPLATE_PRIFIX_SEP;
	
	/* ■□ EKK3521A010_NTT卸料金コース一意照会SC ■□ */
	/** テンプレートID(サービス契約一意照会) */
	private static final String TEMP_ID_EKK3521A010 = "EKK3521A010";
	/** テンプレートID(サービス契約一意照会明細) */
	private static final String TEMP_ID_DTL_EKK3521A010 = EKK3521A010CBSMsg.EKK3521A010CBSMSG1LIST;
	/** IN項目リスト(サービス契約一意照会) */
	private static final List<String> IN_COL_LIST_EKK3521A010 = Arrays.asList(EKK3521A010CBSMsg.KEY_NTTORS_SVC_SBT);
	/** 関連チェックエラー項目(サービス契約一意照会) */
	private static final String ERR_COL_EKK3521A010 = EKK3521A010CBSMsg.KEY_NTTORS_SVC_SBT_ERR;
	/** SC実行結果取得キー(サービス契約一意照会) */
	private static final String TEMP_TEMP_KEY_EKK3521A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK3521A010 + TEMP_TEMPLATE_PRIFIX_SEP;
	// ANK-4543-00-00 ADD END
	
	// ■ IN項目ID ■
	/** IN項目ID：SYSID */
	private static final String IN_SYSID = "sysid";
	/** IN項目ID：サービス契約番号 */
	private static final String IN_SVC_KEI_NO = "svc_kei_no";
	/** IN項目ID：オプションサービス契約番号 */
	private static final String IN_OP_SVC_KEI_NO = "op_svc_kei_no";
	/** IN項目ID：料金コースコード(サービス契約) */
	private static final String IN_PCRS_CD = "pcrs_cd";

	// ■ OUT項目ID ■
	/** OUT項目ID：オプション情報リスト */
	private static final String OUT_OP_INFO_LIST = "out_op_info_list";
	/** OUT項目ID：会員種別コード */
	private static final String OUT_MEMBER_SBT_CD = "member_sbt_cd";
	/** OUT項目ID：ID通知書印字用料金プラン名 */
	private static final String OUT_ID_TCHISHO_PRT_YO_PPLAN_NM = "id_tchisho_prt_yo_pplan_nm";
	/** OUT項目ID：業務パラメータ設定値 */
	private static final String OUT_WORK_PARAM_SETTE_VALUE = "work_param_sette_value";
	/** OUT項目ID：サービス提供物初期値 */
	private static final String OUT_SVCTK_BUT_SHK_VALUE = "svctk_but_shk_value";
	/** OUT項目ID：サービス提供物無料値 */
	private static final String OUT_SVCTK_BUT_MRYO_VALUE = "svctk_but_mryo_value";
	/** 2017/04/10 ANK-3149-00-00 add start */
	/** OUT項目ID：セキュリティパック申込有無 */
	private static final String SECPA_MSKM_UMU = "secpa_mskm_umu";
	/** OUT項目ID：プレミアムパック申込有無 */
	private static final String PREPA_MSKM_UMU = "prepa_mskm_umu";
	/** 2017/04/10 ANK-3149-00-00 add end */

	/** リスト先頭*/
	protected static final int LIST_TOP = 0;

	/**
	 * メールアドレスのネットオプション申込情報取得処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite getResultDate(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 開始ログ
		outDebugLog("----- getResultDate Start  -----");

		// リクエストパラメータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード取得
		String funcCode = getFuncCode(param, fixedText);

		// 実行判定
		// 機能コードが"1"(チェック＆登録)以外の場合
		if (!JPCModelConstant.FUNC_CD_1.equals(funcCode))
		{
			// 終了ログ
			outDebugLog("----- getResultDate End  -----");
			return param;
		}

		// ◆オプション解約区分の取得
		String opDslDiv = (String)inMap.get(IN_OP_DSL_DIV);

		// ○メールアドレスのWEB解約/メールウィルスチェックサービスのWEB解約
		if (OP_DSL_DIV_MLAD.equals(opDslDiv) || OP_DSL_DIV_VC.equals(opDslDiv))
		{
			getResultDataMlad(handle, param, fixedText);
		}
		// ○Myホームページ容量削減のWEB対応
		if (OP_DSL_DIV_HP.equals(opDslDiv))
		{
			getResultDataHp(handle, param, fixedText);
		}
		// ○リモートサポートプラスのWEB解約
		if (OP_DSL_DIV_RS.equals(opDslDiv))
		{
			getResultDataRs(handle, param, fixedText);
		}
		// ○IPv6サービスのWEB解約
		if (OP_DSL_DIV_IPV6.equals(opDslDiv))
		{
			getResultDataIPv6(handle, param, fixedText);
		}

		// 開始ログ
		outDebugLog("----- getResultDate Start  -----");
		return param;
	}

	/**
	 * メールアドレスのネットオプション申込情報取得処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite getResultDataMlad(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		// 開始ログ
		outDebugLog("----- getResultDataMlad Start  -----");
		// 
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●結果格納マップ
		HashMap resultMap = new HashMap();

		// 運用日付をもとに解約可能サービス契約ステータスを設定
		HashMap<String, List<String>> mladSvcKeiStat;
		HashMap<String, List<String>> vcSvcKeiStat;
		if (0 > JFUBPCommon.getOpeDate(null).compareTo(SVC_KEI_STAT_ADD_YMD))
		{
			mladSvcKeiStat = MLAD_SVC_KEI_STAT_TO_20210630;
			vcSvcKeiStat = VC_SVC_KEI_STAT_TO_20210630;
		}
		else
		{
			mladSvcKeiStat = MLAD_SVC_KEI_STAT_FROM_20210701;
			vcSvcKeiStat = VC_SVC_KEI_STAT_FROM_20210701;
		}

		// ●ＩＮ項目
		// IN項目ID：SYSID
		String inSysId = (String)inMap.get(IN_SYSID);
		// IN項目ID：オプション解約区分
		String inOpDslDiv = (String)inMap.get(IN_OP_DSL_DIV);

		// ◆INパラメータがなければエラーをスロー
		if (JFUBPCommon.isNull(inSysId))
		{
			// エラーログ
			outDebugLog("----- getResultDataMlad Error  -----");
			// INパラ不正エラー
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// ●ＯＵＴ項目
		// OUT項目ID：オプション情報リスト
		resultMap.put(OUT_OP_INFO_LIST, new ArrayList());

		// ○ECK0011A010_お客様一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_ECK0011A010);
		// 上りマッピング
		setInMapECK0011A010(param, fixedText, inSysId);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_ECK0011A010, TEMP_ID_DTL_ECK0011A010, IN_COL_LIST_ECK0011A010, ERR_COL_ECK0011A010);
		// マップを取得
		HashMap eck0011a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_ECK0011A010), TEMP_ID_DTL_ECK0011A010, 0);
		// 会員種別コード
		resultMap.put(OUT_MEMBER_SBT_CD, eck0011a010Map.get(ECK0011A010CBSMsg1List.MEMBER_SBT_CD));

		// ○EKK0081B519_サービス契約一覧照会（SYSID）3
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0081B519);
		// 上りマッピング
		setInMapEKK0081B519(param, fixedText, inSysId);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0081B519, TEMP_ID_DTL_EKK0081B519, IN_COL_LIST_EKK0081B519, ERR_COL_EKK0081B519);

		// 共通関連チェックCC
		JFURelationalCheckCC relChkCC = new JFURelationalCheckCC();

		// ●結果分ループ（「EKK0081B519_サービス契約一覧照会（SYSID）3」の件数分）
		for (HashMap ekk0081b519Map : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0081B519), TEMP_ID_DTL_EKK0081B519))
		{

			// 料金コースコード
			String pcrsCd = (String)ekk0081b519Map.get(EKK0081B519CBSMsg1List.PCRS_CD);
			// 料金グループコード
			String prcGrpCd = (String)ekk0081b519Map.get(EKK0081B519CBSMsg1List.PRC_GRP_CD);
			// サービス契約番号
			String svcKeiNo = (String)ekk0081b519Map.get(EKK0081B519CBSMsg1List.SVC_KEI_NO);
			// サービス契約ステータス
			String svcKeiStat = (String)ekk0081b519Map.get(EKK0081B519CBSMsg1List.SVC_KEI_STAT);
// ANK-4427-00-00 ADD START
			// ＮＴＴ卸区分
			String nttorsDiv = (String)ekk0081b519Map.get(EKK0081B519CBSMsg1List.NTTORS_DIV);
// ANK-4427-00-00 ADD END

			// メールアドレス解約の場合
			if (OP_DSL_DIV_MLAD.equals(inOpDslDiv))
			{
				// ◆対象料金グループコード以外の場合スキップ
				if (!MLAD_PRC_GRP.contains(prcGrpCd))
				{
					continue;
				}

				// ◆対象サービス契約ステータス以外の場合スキップ
				if (!mladSvcKeiStat.get(prcGrpCd).contains(svcKeiStat))
				{
					continue;
				}

				// ◆eo光ネット⇔シンプルプランの乗換中はスキップ
				if (relChkCC.isChgSimpleCheck(handle, param, fixedText, svcKeiNo, inSysId))
				{
					continue;
				}
			}
			// メールウィルスチェックサービス解約の場合
			else if (OP_DSL_DIV_VC.equals(inOpDslDiv))
			{
				// ◆対象料金グループコード以外の場合スキップ
				if (!VC_PRC_GRP.contains(prcGrpCd))
				{
					continue;
				}

				// ◆対象サービス契約ステータス以外の場合スキップ
				if (!vcSvcKeiStat.get(prcGrpCd).contains(svcKeiStat))
				{
					continue;
				}

				// ◆eo光ネット⇔シンプルプランの乗換中はスキップ
				if (relChkCC.isChgSimpleCheck(handle, param, fixedText, svcKeiNo, inSysId))
				{
					continue;
				}
			}

			// ==============================================================================================================
			// ■ 整理番号、サービス利用開始希望年月日の取得
			// ==============================================================================================================
			// ●EKK0081A010_サービス契約一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0081A010);
			// 上りマッピング
			setInMapEKK0081A010(param, fixedText, svcKeiNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0081A010, TEMP_ID_DTLEKK0081A010, IN_COL_LIST_EKK0081A010, ERR_COL_EKK0081A010);
			// マップを取得
			HashMap ekk0081a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0081A010), TEMP_ID_DTLEKK0081A010, 0);

			// ◆照査ＮＧの場合はスキップ
			//  サービス契約ステータス＝"020"(照査済み)且つ照査解約完了コード＝"2"(照査NG)の場合
			if (JFUStrConst.CD00037_020.equals(ekk0081a010Map.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT))
					&& JFUStrConst.CD00469_2.equals(ekk0081a010Map.get(EKK0081A010CBSMsg1List.SHOSA_DSL_FIN_CD)))
			{
				continue;
			}

			if (0 > JFUBPCommon.getOpeDate(null).compareTo(SVC_KEI_STAT_ADD_YMD))
			{
				// ◆マンションで締結済みの場合は、運用日 < サービス開始希望年月日のデータは除外する
				if (JFUStrConst.CD00133_04.equals(prcGrpCd) && JFUStrConst.CD00037_030.equals(ekk0081b519Map.get(EKK0081B519CBSMsg1List.SVC_KEI_STAT)))
				{
					// サービス開始希望年月日
					String svcUseStaKiboYmd = (String)ekk0081a010Map.get(EKK0081A010CBSMsg1List.SVC_USE_STA_KIBO_YMD);
					// サービス開始希望日がない場合
					if (JFUBPCommon.isNull(svcUseStaKiboYmd))
					{
						continue;
					}
					// サービス開始希望日がある場合
					else
					{
						// 運用日付取得
						String opeDate = JFUBPCommon.getOpeDate(null);
						// 運用日 < サービス開始希望日の場合
						if (Integer.parseInt(opeDate) < Integer.parseInt(svcUseStaKiboYmd))
						{
							continue;
						}
					}
				}
			}

			// ==============================================================================================================
			// ■ サービス名称の取得
			// ==============================================================================================================
			// ○EKK0591A010_料金プラン一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0591A010);
			// 上りマッピング
			setInMapEKK0591A010(param, fixedText, (String)ekk0081b519Map.get(EKK0081B519CBSMsg1List.PCRS_CD), (String)ekk0081b519Map
					.get(EKK0081B519CBSMsg1List.PPLAN_CD));
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0591A010, TEMP_ID_DTL_EKK0591A010, IN_COL_LIST_EKK0591A010, ERR_COL_EKK0591A010);
			// マップを取得
			HashMap ekk0591a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0591A010), TEMP_ID_DTL_EKK0591A010, 0);

			// ==============================================================================================================
			// ■ ファミリーパック契約確認
			// ==============================================================================================================
			// ○EKK0451B010_割引サービス契約一覧照会（割引サービス指定）
			// 上りマッピング
			setInMapEKK0451B010(param, fixedText, svcKeiNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0451B010, TEMP_ID_DTL_EKK0451B010, IN_COL_LIST_EKK0451B010, ERR_COL_EKK0451B010);
			// 〇ファミリーパック申込有無
			String famipaMskmUmu = JFUStrConst.CD00002_0; // "0"：無
			if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0451B010), TEMP_ID_DTL_EKK0451B010))
			{
				// 割引サービス契約ステータス
				famipaMskmUmu = JFUStrConst.CD00002_1; // "1"：有
			}

			/** 2017/04/10 ANK-3149-00-00 add start */
			// ==============================================================================================================
			// ■ セキュリティパック契約確認
			// ==============================================================================================================
			// ○EKK0451B010_割引サービス契約一覧照会（割引サービス指定）
			// 上りマッピング
			setInMapEKK0451B010Sec(param, fixedText, svcKeiNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0451B010, TEMP_ID_DTL_EKK0451B010, IN_COL_LIST_EKK0451B010, ERR_COL_EKK0451B010);
			// 〇セキュリティパック申込有無
			String secpaMskmUmu = JFUStrConst.CD00002_0; // "0"：無
			if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0451B010), TEMP_ID_DTL_EKK0451B010))
			{
				// 割引サービス契約ステータス
				secpaMskmUmu = JFUStrConst.CD00002_1; // "1"：有
			}

			// ==============================================================================================================
			// ■ プレミアムパック契約確認
			// ==============================================================================================================
			// ○EKK0451B010_割引サービス契約一覧照会（割引サービス指定）
			// 上りマッピング
			setInMapEKK0451B010Pre(param, fixedText, svcKeiNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0451B010, TEMP_ID_DTL_EKK0451B010, IN_COL_LIST_EKK0451B010, ERR_COL_EKK0451B010);
			// 〇プレミアムパック申込有無
			String prepaMskmUmu = JFUStrConst.CD00002_0; // "0"：無
			if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0451B010), TEMP_ID_DTL_EKK0451B010))
			{
				// 割引サービス契約ステータス
				prepaMskmUmu = JFUStrConst.CD00002_1; // "1"：有
			}
			/** 2017/04/10 ANK-3149-00-00 add end */

			// ○EKK0351B503_現オプションサービス契約情報一覧照会(ネット)
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0351B503);
			// 上りマッピング
			setInMapEKK0351B503(param, fixedText, inSysId, svcKeiNo);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0351B503, TEMP_ID_DTL_EKK0351B503, IN_COL_LIST_EKK0351B503, ERR_COL_EKK0351B503);
			// リストを取得
			List<HashMap> opList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351B503), TEMP_ID_DTL_EKK0351B503);
			Iterator<HashMap> it = opList.iterator();
			List<HashMap> retOpList = new ArrayList<HashMap>();
			// ●結果分ループ
			while (it.hasNext())
			{
				HashMap ekk0351b503Map = it.next();

				// ◆対象オプションサービスコードまたは、対象ステータス以外の場合リストから削除
				if (!JFUStrConst.CD00136_B001.equals(ekk0351b503Map.get(EKK0351B503CBSMsg1List.OP_SVC_CD))
						|| !mladSvcKeiStat.get(prcGrpCd).contains(ekk0351b503Map.get(EKK0351B503CBSMsg1List.OP_SVC_KEI_STAT)))
				{
					continue;
				}
				else
				{
					// ==============================================================================================================
					// ■ 異動予約中チェック
					// ==============================================================================================================
					// ○EKK1681B001_異動予約一覧照会
					// ユーザデータ初期化
					initData(param, fixedText, IN_COL_LIST_EKK1681B001);
					// 検索エラーなし
					ignoreSearchError(param, fixedText);
					// 上りマッピング
					setInMapEKK1681B001(param, fixedText, (String)ekk0351b503Map.get(EKK0351B503CBSMsg1List.OP_SVC_KEI_NO), null);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMP_ID_EKK1681B001, TEMP_ID_DTL_EKK1681B001, IN_COL_LIST_EKK1681B001, ERR_COL_EKK1681B001);
					// データ(予約手続き中、または、未反映はエラー)が存在すればエラー
					if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK1681B001), TEMP_ID_DTL_EKK1681B001))
					{
						// エラーログ
						outDebugLog("----- getResultDataMlad Error  -----");
						// 予約中エラー
						setRelationErrorInfo(param, TEMP_ID_EKK1681B001, ERR_COL_EKK1681B001, fixedText);
						throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
								.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
					}

					// ==============================================================================================================
					// ◆ オプション解約区分＝メールアドレスのWEB解約の場合
					// ==============================================================================================================
					if (OP_DSL_DIV_MLAD.equals(inOpDslDiv))
					{
						// ○EKK0601B001_料金プラン固定単価（オプション申込料金）一覧照会
						// ユーザデータ初期化
						initData(param, fixedText, IN_COL_LIST_EKK0601B001);
						// 上りマッピング
						setInMapEKK0601B001(param, fixedText, (String)ekk0351b503Map.get(EKK0351B503CBSMsg1List.PCRS_CD), (String)ekk0351b503Map
								.get(EKK0351B503CBSMsg1List.PPLAN_CD));
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMP_ID_EKK0601B001, TEMP_ID_DTL_EKK0601B001, IN_COL_LIST_EKK0601B001,
								ERR_COL_EKK0601B001);
						// マップを取得
						HashMap priceMap =
								getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0601B001), TEMP_ID_DTL_EKK0601B001, 0);

						// マップの追加
						ekk0351b503Map.put(EKK0601B001CBSMsg1List.PPLAN_KOTEI_AMNT, priceMap.get(EKK0601B001CBSMsg1List.PPLAN_KOTEI_AMNT));

						// ○EKK0811A010_料金コース_オプションサービス一意照会
						// ユーザデータ初期化
						initData(param, fixedText, IN_COL_LIST_EKK0811A010);
						// 上りマッピング
						setInMapEKK0811A010(param, fixedText, pcrsCd, (String)ekk0351b503Map.get(EKK0351B503CBSMsg1List.OP_SVC_CD));
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMP_ID_EKK0811A010, TEMP_ID_DTL_EKK0811A010, IN_COL_LIST_EKK0811A010,
								ERR_COL_EKK0811A010);
						// マップを取得
						HashMap cntMap =
								getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0811A010), TEMP_ID_DTL_EKK0811A010, 0);
						// マップの追加
						ekk0351b503Map.put(EKK0811A010CBSMsg1List.MRYO_OP_SVC_CNT, cntMap.get(EKK0811A010CBSMsg1List.MRYO_OP_SVC_CNT));

						// ==============================================================================================================
						// ◆ 申込年月日取得(オプションの受付済みの申込明細が対象）
						// ==============================================================================================================
						// 申込明細番号
						String mskmDtlNo = JFUStrConst.EMPTY;
						// オプションサービス契約番号
						String opSvcKeiNo = (String)ekk0351b503Map.get(EKK0351B503CBSMsg1List.OP_SVC_KEI_NO);

						// ○EKK0351B003_オプションサービス契約履歴一覧照会
						// ユーザデータ初期化
						initData(param, fixedText, IN_COL_LIST_EKK0351B003);
						// 上りマッピング
						setInMapEKK0351B003(param, fixedText, svcKeiNo);
						//検索エラーなし設定
						ignoreSearchError(param, fixedText);
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMP_ID_EKK0351B003, TEMP_ID_DTL_EKK0351B003, IN_COL_LIST_EKK0351B003,
								ERR_COL_EKK0351B003);

						// ●結果分ループ（「EKK0351B003_オプションサービス契約履歴一覧照会」の件数分）
						for (HashMap ekk0351b003Map : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351B003),
								TEMP_ID_DTL_EKK0351B003))
						{
							// ◆オプションサービス契約番号以外の場合スキップ
							if (!(opSvcKeiNo.equals(ekk0351b003Map.get(EKK0351B003CBSMsg1List.KK0351_OP_SVC_KEI_NO))))
							{
								continue;
							}

							// ◆オプションサービス契約ステータスが受付済み(010)以外の場合、スキップ
							if (!JFUStrConst.CD00037_010.equals(ekk0351b003Map.get(EKK0351B003CBSMsg1List.OP_SVC_KEI_STAT)))
							{
								continue;
							}

							// 対象の申込明細番号を取得
							mskmDtlNo = (String)ekk0351b003Map.get(EKK0351B003CBSMsg1List.MSKM_DTL_NO);

						}

						// 申込明細番号が取得できた場合、申込明細から申込年月日を取得
						if (!JFUBPCommon.isNull(mskmDtlNo))
						{
							// ○EKK0021A010_申込明細一意照会
							// ユーザデータ初期化
							initData(param, fixedText, IN_COL_LIST_EKK0021A010);
							//検索エラーなし設定
							ignoreSearchError(param, fixedText);
							// 上りマッピング
							setInMapEKK0021A010(param, fixedText, mskmDtlNo);
							// サービスIF実行
							executeSC(handle, param, fixedText, TEMP_ID_EKK0021A010, TEMP_ID_DTL_EKK0021A010, IN_COL_LIST_EKK0021A010,
									ERR_COL_EKK0021A010);
							// マップを取得
							HashMap ekk0021a010Map =
									getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0021A010), TEMP_ID_DTL_EKK0021A010, 0);
							// マップの追加
							ekk0351b503Map.put(EKK0021A010CBSMsg1List.MSKM_YMD, ekk0021a010Map.get(EKK0021A010CBSMsg1List.MSKM_YMD));
						}
					}

					// ==============================================================================================================
					// ◆ オプション解約区分＝メールウィルスチェックサービスのWEB解約の場合
					// ==============================================================================================================
					if (OP_DSL_DIV_VC.equals(inOpDslDiv))
					{

						// ●EKK0401B001_サブオプションサービス契約一覧照会
						// ユーザデータ初期化
						initData(param, fixedText, IN_COL_LIST_EKK0401B001);
						//検索エラーなし設定
						ignoreSearchError(param, fixedText);
						// 上りマッピング
						setInMapEKK0401B001(param, fixedText, (String)ekk0351b503Map.get(EKK0351B503CBSMsg1List.OP_SVC_KEI_NO));
						// サービス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);

						// ==============================================================================================================
						// ■ 除外判定
						// ==============================================================================================================
						boolean vcFlag = false;
						// サブオプションサービス契約解約一覧の件数分、解約処理を行う。
						for (HashMap sbopInfoMap : sbopSvcKeiList)
						{

							// ◆メールウィルスチェック以外はリストから削除
							if (!JFUStrConst.CD00137_D03.equals(sbopInfoMap.get(EKK0401B001CBSMsg1List.SBOP_SVC_CD)))
							{
								// スキップ
								continue;
							}

							// ◆該当ステータス以外はリストから削除
							if (!mladSvcKeiStat.get(prcGrpCd).contains(sbopInfoMap.get(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT)))
							{
								// スキップ
								continue;
							}

							vcFlag = true;

							// ==============================================================================================================
							// ■ オプション料金取得
							// ==============================================================================================================
							// ○EKK0601B001_料金プラン固定単価（オプション申込料金）一覧照会
							// ユーザデータ初期化
							initData(param, fixedText, IN_COL_LIST_EKK0601B001);
							// 上りマッピング
							setInMapEKK0601B001(param, fixedText, (String)sbopInfoMap.get(EKK0401B001CBSMsg1List.PCRS_CD), (String)sbopInfoMap
									.get(EKK0401B001CBSMsg1List.PPLAN_CD));
							// サービスIF実行
							executeSC(handle, param, fixedText, TEMP_ID_EKK0601B001, TEMP_ID_DTL_EKK0601B001, IN_COL_LIST_EKK0601B001,
									ERR_COL_EKK0601B001);
							// リストを取得
							HashMap priceMap =
									getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0601B001), TEMP_ID_DTL_EKK0601B001, 0);

							// マップの追加
							ekk0351b503Map.put(EKK0601B001CBSMsg1List.PPLAN_KOTEI_AMNT, priceMap.get(EKK0601B001CBSMsg1List.PPLAN_KOTEI_AMNT));

							// ==============================================================================================================
							// ■ 無料数取得
							// ==============================================================================================================
							// ○EKK1881B001_料金コース_サブオプションサービス一覧照会
							// ユーザデータ初期化
							initData(param, fixedText, IN_COL_LIST_EKK1881B001);
							// 上りマッピング
							setInMapEKK1881B001(param, fixedText, pcrsCd, (String)sbopInfoMap.get(EKK0401B001CBSMsg1List.SBOP_SVC_CD));
							// サービスIF実行
							executeSC(handle, param, fixedText, TEMP_ID_EKK1881B001, TEMP_ID_DTL_EKK1881B001, IN_COL_LIST_EKK1881B001,
									ERR_COL_EKK1881B001);
							// マップを取得
							HashMap cntMap =
									getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK1881B001), TEMP_ID_DTL_EKK1881B001, 0);

							// マップの追加
							ekk0351b503Map.put(EKK1881B001CBSMsg1List.SVCTK_BUT_MRYO_VALUE, cntMap.get(EKK1881B001CBSMsg1List.SVCTK_BUT_MRYO_VALUE));
						}

						// ==============================================================================================================
						// ◆ メールウィルスチェックがサブオプションに存在しない場合
						// ==============================================================================================================
						if (!vcFlag)
						{
							continue;
						}

					}

				}

				// 返却リストに追加
				retOpList.add(ekk0351b503Map);
			}
			// ==============================================================================================================
			// ■ 返却値設定（オプション情報）
			// ==============================================================================================================
			// 返値をマップに設定(解約対象データがあるときのみ)
			if (retOpList.size() != 0)
			{
				// ソート(オプションサービス契約番号の昇順)
				sortListOP1(retOpList);

				HashMap retOpMap = new HashMap();
				retOpMap.put("kk0591_dsp_jun_svc_kei", JFUBPCommon.fillZero((String)ekk0591a010Map.get(EKK0591A010CBSMsg1List.DSP_JUN), 4, false)); // ソート条件のため"0"埋めする
				retOpMap.put("prc_grp_cd", (String)ekk0081b519Map.get(EKK0081B519CBSMsg1List.PRC_GRP_CD));
				retOpMap.put("sysid", inSysId);
				retOpMap.put("svc_kei_no", svcKeiNo);
				
				// ANK-4543-00-00 MOD START
//				retOpMap.put("svc_kei_nm", ekk0591a010Map.get(EKK0591A010CBSMsg1List.ID_TCHISHO_PRT_YO_PPLAN_NM));
				String svcKeiNm = (String) ekk0591a010Map.get(EKK0591A010CBSMsg1List.ID_TCHISHO_PRT_YO_PPLAN_NM);
				// ==============================================================================================================
				// ■ オプション料金取得
				// ==============================================================================================================
				// ○EKK3511A010_NTT卸契約一意照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK3511A010);
				//検索エラーなし設定
				ignoreSearchError(param, fixedText);
				// 上りマッピング
				setInMapEKK3511A010(param, fixedText, svcKeiNo);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK3511A010, TEMP_ID_DTL_EKK3511A010, IN_COL_LIST_EKK3511A010,
						ERR_COL_EKK3511A010);
				// マップを取得
				List<HashMap> ekk3511a010ListMap = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK3511A010), TEMP_ID_DTL_EKK3511A010);
				if (ekk3511a010ListMap != null && !ekk3511a010ListMap.isEmpty()) {
					HashMap ekk3511a010Map = ekk3511a010ListMap.get(0);
					String nttorsSvcSbt = (String) ekk3511a010Map.get(EKK3511A010CBSMsg1List.NTTORS_SVC_SBT);
					
					// ==============================================================================================================
					// ■ オプション料金取得
					// ==============================================================================================================
					// ○EKK3521A010_NTT卸料金コース一意照会
					// ユーザデータ初期化
					initData(param, fixedText, IN_COL_LIST_EKK3521A010);
					// 上りマッピング
					setInMapEKK3521A010(param, fixedText, nttorsSvcSbt);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMP_ID_EKK3521A010, TEMP_ID_DTL_EKK3521A010, IN_COL_LIST_EKK3521A010,
							ERR_COL_EKK3521A010);
					// マップを取得
					HashMap ekk3521a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK3521A010), TEMP_ID_DTL_EKK3521A010, 0);
					svcKeiNm = (String) ekk3521a010Map.get(EKK3521A010CBSMsg1List.ID_TCHISHO_PRT_YO_PPLAN_NM);
				}
				retOpMap.put("svc_kei_nm", svcKeiNm);
				// ANK-4543-00-00 MOD END
				retOpMap.put("last_upd_dtm", ekk0081b519Map.get(EKK0081B519CBSMsg1List.LAST_UPD_DTM));
				retOpMap.put("famipa_mskm_umu", famipaMskmUmu);
				/** 2017/04/10 ANK-3149-00-00 add start */
				retOpMap.put(SECPA_MSKM_UMU, secpaMskmUmu);
				retOpMap.put(PREPA_MSKM_UMU, prepaMskmUmu);
				/** 2017/04/10 ANK-3149-00-00 add end */
				retOpMap.put("seiri_no", ekk0081a010Map.get(EKK0081A010CBSMsg1List.SEIRI_NO));
// ANK-4427-00-00 ADD START
				retOpMap.put("nttors_div", nttorsDiv);
// ANK-4427-00-00 ADD END
				retOpMap.put("EKK0351B503CBSMsg1List", retOpList);
				// リストに追加（表示順、サービス契約番号の昇順）
				setReturnDataMap(resultMap, OUT_OP_INFO_LIST, retOpMap);
			}
		}

		// ●リクエストパラメータに結果を格納
		param.removeData(fixedText);
		param.setData(fixedText, resultMap);

		// 終了ログ
		outDebugLog("----- getResultDataMlad End  -----");
		return param;

	}

	/**
	 * メールアドレスのネットオプション申込情報取得処理（Myホームページ容量）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite getResultDataHp(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		// 開始ログ
		outDebugLog("----- getResultDataHp Start  -----");
		// 
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●結果格納マップ
		HashMap resultMap = new HashMap();

		// ●ＩＮ項目
		// IN項目ID：SYSID
		String inSysId = (String)inMap.get(IN_SYSID);
		// IN項目ID：サービス契約番号
		String inSvcKeiNo = (String)inMap.get(IN_SVC_KEI_NO);
		// IN項目ID：オプションサービス契約番号
		String inOpSvcKeiNo = (String)inMap.get(IN_OP_SVC_KEI_NO);
		// IN項目ID：料金コースコード(サービス契約)
		String inEkk1881PcrsCd = (String)inMap.get(IN_PCRS_CD);

		// ◆INパラメータがなければエラーをスロー
		if (JFUBPCommon.isNull(inSysId) || JFUBPCommon.isNull(inSvcKeiNo))
		{
			// エラーログ
			outDebugLog("----- getResultDataHp Error  -----");
			// INパラ不正エラー
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// ==============================================================================================================
		// ■ 同月内解約チェック
		// ==============================================================================================================
		// ○EKK0351B003_オプションサービス契約履歴一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0351B003);
		// 上りマッピング
		setInMapEKK0351B003(param, fixedText, inSvcKeiNo);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0351B003, TEMP_ID_DTL_EKK0351B003, IN_COL_LIST_EKK0351B003, ERR_COL_EKK0351B003);

		// ●結果分ループ（「EKK0351B003_オプションサービス契約履歴一覧照会」の件数分）
		ArrayList capaList = new ArrayList();
		// 当月の1つ前フラグ
		boolean toMonthplusFlg = true;
		for (HashMap ekk0351b003Map : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351B003), TEMP_ID_DTL_EKK0351B003))
		{
			// ◆オプションサービスコード＝"B002"(Myホームページ)以外の場合スキップ
			if (!(JFUStrConst.CD00136_B002.equals(ekk0351b003Map.get(EKK0351B003CBSMsg1List.OP_SVC_CD))))
			{
				continue;
			}

			// ◆オプションサービス契約ステータスが無効なオプションの場合、スキップ
			if (SVC_KEI_STAT_MUKO.contains(ekk0351b003Map.get(EKK0351B003CBSMsg1List.OP_SVC_KEI_STAT)))
			{
				continue;
			}

			// 申込明細番号
			String mskmDtlNo = (String)ekk0351b003Map.get(EKK0351B003CBSMsg1List.MSKM_DTL_NO);

			// ○EKK0021A010_申込明細一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0021A010);
			// 上りマッピング
			setInMapEKK0021A010(param, fixedText, mskmDtlNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0021A010, TEMP_ID_DTL_EKK0021A010, IN_COL_LIST_EKK0021A010, ERR_COL_EKK0021A010);
			// マップを取得
			HashMap ekk0021a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0021A010), TEMP_ID_DTL_EKK0021A010, 0);

			// ◆当月＆当月の1つ前の容量をリストに設定
			// 当月
			if (getYM(JFUBPCommon.getOpeDate(null)).equals(getYM((String)ekk0021a010Map.get(EKK0021A010CBSMsg1List.MSKM_YMD))))
			{
				// 容量リストに設定
				capaList.add((String)ekk0351b003Map.get(EKK0351B003CBSMsg1List.CAPA));
			}
			else if (toMonthplusFlg)
			{
				// 当月の1つ前の場合
				// 容量リストに設定
				capaList.add((String)ekk0351b003Map.get(EKK0351B003CBSMsg1List.CAPA));
				// 当月の1つ前フラグをfalseに設定
				toMonthplusFlg = false;
			}

		}
		// ◆当月にWEB容量が解約されている場合にエラーとする。
		String preCapa = JFUStrConst.EMPTY;
		for (int i = 0; i < capaList.size(); i++)
		{
			// 今回値
			String curCapa = (String)capaList.get(i);
			// 前回値より今回値が増えている場合はエラー
			if (!JFUBPCommon.isNull(preCapa) && Integer.parseInt(curCapa) > Integer.parseInt(preCapa))
			{
				// エラーログ
				outDebugLog("----- getResultDataRs Error  -----");
				// 当月申込エラー
				setRelationErrorInfo(param, TEMP_ID_EKK0351B003, ERR_COL_EKK0351B003, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
			// 今回値を前回値に設定
			preCapa = curCapa;
		}

		// ==============================================================================================================
		// ■ 業務パラメータの取得
		// ==============================================================================================================
		// ○EZM0321A010_業務パラメータ管理一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EZM0321A010);
		// 上りマッピング
		setInMapEZM0321A010(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EZM0321A010, TEMP_ID_DTL_EZM0321A010, IN_COL_LIST_EZM0321A010, ERR_COL_EZM0321A010);
		// マップを取得
		HashMap ezm0321a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EZM0321A010), TEMP_ID_DTL_EZM0321A010, 0);
		// ●ＯＵＴ項目
		// OUT項目ID：業務パラメータ設定値
		resultMap.put(OUT_WORK_PARAM_SETTE_VALUE, ezm0321a010Map.get(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE));

		// ==============================================================================================================
		// ■ サービス提供物初期値の取得
		// ==============================================================================================================
		// ○EKK1881A010_料金コース_サブオプションサービス一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK1881A010);
		// 上りマッピング
		setInMapEKK1881A010(param, fixedText, inEkk1881PcrsCd);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK1881A010, TEMP_ID_DTL_EKK1881A010, IN_COL_LIST_EKK1881A010, ERR_COL_EKK1881A010);
		// マップを取得
		HashMap ekk1881a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK1881A010), TEMP_ID_DTL_EKK1881A010, 0);
		// ●ＯＵＴ項目
		// OUT項目ID：サービス提供物初期値
		resultMap.put(OUT_SVCTK_BUT_SHK_VALUE, ekk1881a010Map.get(EKK1881A010CBSMsg1List.SVCTK_BUT_SHK_VALUE));
		// OUT項目ID：サービス提供物無料値
		resultMap.put(OUT_SVCTK_BUT_MRYO_VALUE, ekk1881a010Map.get(EKK1881A010CBSMsg1List.SVCTK_BUT_MRYO_VALUE));

		// ●リクエストパラメータに結果を格納
		param.removeData(fixedText);
		param.setData(fixedText, resultMap);

		// 終了ログ
		outDebugLog("----- getResultDataHp End  -----");
		return param;
	}

	/**
	 * メールアドレスのネットオプション申込情報取得処理（リモートサポートプラス）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite getResultDataRs(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		// 開始ログ
		outDebugLog("----- getResultDataRs Start  -----");
		// 
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●結果格納マップ
		HashMap resultMap = new HashMap();

		// ●ＩＮ項目
		// IN項目ID：サービス契約番号
		String inSvcKeiNo = (String)inMap.get(IN_SVC_KEI_NO);
		// IN項目ID：オプションサービス契約番号
		String inOpSvcKeiNo = (String)inMap.get(IN_OP_SVC_KEI_NO);

		// ◆INパラメータがなければエラーをスロー
		if (JFUBPCommon.isNull(inSvcKeiNo) || JFUBPCommon.isNull(inOpSvcKeiNo))
		{
			// エラーログ
			outDebugLog("----- getResultDataRs Error  -----");
			// INパラ不正エラー
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// ==============================================================================================================
		// ■ 異動予約中チェック
		// ==============================================================================================================
		// ○EKK1681B001_異動予約一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK1681B001);
		// 検索エラーなし
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapEKK1681B001(param, fixedText, inOpSvcKeiNo, null);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK1681B001, TEMP_ID_DTL_EKK1681B001, IN_COL_LIST_EKK1681B001, ERR_COL_EKK1681B001);
		// データ(予約手続き中、または、未反映はエラー)が存在すればエラー
		if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK1681B001), TEMP_ID_DTL_EKK1681B001))
		{
			// エラーログ
			outDebugLog("----- getResultDataRs Error  -----");
			// 予約中エラー
			setRelationErrorInfo(param, TEMP_ID_EKK1681B001, ERR_COL_EKK1681B001, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// ==============================================================================================================
		// ■ サービス名称の取得
		// ==============================================================================================================
		// ●EKK0081A010_サービス契約一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0081A010);
		// 上りマッピング
		setInMapEKK0081A010(param, fixedText, inSvcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0081A010, TEMP_ID_DTLEKK0081A010, IN_COL_LIST_EKK0081A010, ERR_COL_EKK0081A010);
		// マップを取得
		HashMap ekk0081a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0081A010), TEMP_ID_DTLEKK0081A010, 0);

		// ○EKK0591A010_料金プラン一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0591A010);
		// 上りマッピング
		setInMapEKK0591A010(param, fixedText, (String)ekk0081a010Map.get(EKK0081B519CBSMsg1List.PCRS_CD), (String)ekk0081a010Map
				.get(EKK0081B519CBSMsg1List.PPLAN_CD));
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0591A010, TEMP_ID_DTL_EKK0591A010, IN_COL_LIST_EKK0591A010, ERR_COL_EKK0591A010);
		// マップを取得
		HashMap ekk0591a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0591A010), TEMP_ID_DTL_EKK0591A010, 0);

		/** 2017/04/10 ANK-3149-00-00 add start */
		// ==============================================================================================================
		// ■ セキュリティパック契約確認
		// ==============================================================================================================
		// ○EKK0451B010_割引サービス契約一覧照会（割引サービス指定）
		// 上りマッピング
		setInMapEKK0451B010Sec(param, fixedText, inSvcKeiNo);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0451B010, TEMP_ID_DTL_EKK0451B010, IN_COL_LIST_EKK0451B010, ERR_COL_EKK0451B010);
		// 〇セキュリティパック申込有無
		String secpaMskmUmu = JFUStrConst.CD00002_0; // "0"：無
		if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0451B010), TEMP_ID_DTL_EKK0451B010))
		{
			// 割引サービス契約ステータス
			secpaMskmUmu = JFUStrConst.CD00002_1; // "1"：有
		}

		// ==============================================================================================================
		// ■ プレミアムパック契約確認
		// ==============================================================================================================
		// ○EKK0451B010_割引サービス契約一覧照会（割引サービス指定）
		// 上りマッピング
		setInMapEKK0451B010Pre(param, fixedText, inSvcKeiNo);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0451B010, TEMP_ID_DTL_EKK0451B010, IN_COL_LIST_EKK0451B010, ERR_COL_EKK0451B010);
		// 〇プレミアムパック申込有無
		String prepaMskmUmu = JFUStrConst.CD00002_0; // "0"：無
		if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0451B010), TEMP_ID_DTL_EKK0451B010))
		{
			// 割引サービス契約ステータス
			prepaMskmUmu = JFUStrConst.CD00002_1; // "1"：有
		}
		/** 2017/04/10 ANK-3149-00-00 add end */

		// ●ＯＵＴ項目
		// OUT項目ID：ID通知書印字用料金プラン名
		resultMap.put(OUT_ID_TCHISHO_PRT_YO_PPLAN_NM, ekk0591a010Map.get(EKK0591A010CBSMsg1List.ID_TCHISHO_PRT_YO_PPLAN_NM));
		/** 2017/04/10 ANK-3149-00-00 add start */
		/** OUT項目ID：セキュリティパック申込有無 */
		resultMap.put(SECPA_MSKM_UMU, secpaMskmUmu);
		/** OUT項目ID：プレミアムパック申込有無 */
		resultMap.put(PREPA_MSKM_UMU, prepaMskmUmu);
		/** 2017/04/10 ANK-3149-00-00 add end */

		// ●リクエストパラメータに結果を格納
		param.removeData(fixedText);
		param.setData(fixedText, resultMap);

		// 終了ログ
		outDebugLog("----- getResultDataRs End  -----");
		return param;
	}

	/**
	 * メールアドレスのネットオプション申込情報取得処理（IPv6サービス）<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite getResultDataIPv6(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		// 開始ログ
		outDebugLog("----- getResultDataIPv6 Start  -----");
		// 
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●結果格納マップ
		HashMap resultMap = new HashMap();

		// ●ＩＮ項目
		// IN項目ID：サービス契約番号
		String inSvcKeiNo = (String)inMap.get(IN_SVC_KEI_NO);
		// IN項目ID：オプションサービス契約番号
		String inOpSvcKeiNo = (String)inMap.get(IN_OP_SVC_KEI_NO);

		// ◆INパラメータがなければエラーをスロー
		if (JFUBPCommon.isNull(inSvcKeiNo) || JFUBPCommon.isNull(inOpSvcKeiNo))
		{
			// エラーログ
			outDebugLog("----- getResultDataRs Error  -----");
			// INパラ不正エラー
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// ==============================================================================================================
		// ■ 同月内解約チェック
		// ==============================================================================================================
		// ○EKK0351B003_オプションサービス契約履歴一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0351B003);
		// 上りマッピング
		setInMapEKK0351B003(param, fixedText, inSvcKeiNo);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0351B003, TEMP_ID_DTL_EKK0351B003, IN_COL_LIST_EKK0351B003, ERR_COL_EKK0351B003);

		// ●結果分ループ（「EKK0351B003_オプションサービス契約履歴一覧照会」の件数分）
		for (HashMap ekk0351b003Map : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0351B003), TEMP_ID_DTL_EKK0351B003))
		{
			// ◆オプションサービスコード＝"B070"(IPv6アドレス)
			// 　且つオプションサービス契約伝ータス＝"910"(解約)の以外の場合、スキップ
			if (!(JFUStrConst.CD00136_B070.equals(ekk0351b003Map.get(EKK0351B003CBSMsg1List.OP_SVC_CD)) && JFUStrConst.CD01471_910
					.equals(ekk0351b003Map.get(EKK0351B003CBSMsg1List.OP_SVC_KEI_STAT))))
			{
				continue;
			}

			// 申込明細番号
			String mskmDtlNo = (String)ekk0351b003Map.get(EKK0351B003CBSMsg1List.MSKM_DTL_NO);

			// ○EKK0021A010_申込明細一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0021A010);
			// 上りマッピング
			setInMapEKK0021A010(param, fixedText, mskmDtlNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0021A010, TEMP_ID_DTL_EKK0021A010, IN_COL_LIST_EKK0021A010, ERR_COL_EKK0021A010);
			// マップを取得
			HashMap ekk0021a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0021A010), TEMP_ID_DTL_EKK0021A010, 0);

			// ◆申込年月＝運用年月の場合当月申込エラー
			if (getYM(JFUBPCommon.getOpeDate(null)).equals(getYM((String)ekk0021a010Map.get(EKK0021A010CBSMsg1List.MSKM_YMD))))
			{
				// エラーログ
				outDebugLog("----- getResultDataRs Error  -----");
				// 当月申込エラー
				setRelationErrorInfo(param, TEMP_ID_EKK0351B003, ERR_COL_EKK0351B003, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
		}

		// ==============================================================================================================
		// ■ 異動予約中チェック
		// ==============================================================================================================
		// ○EKK1681B001_異動予約一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK1681B001);
		// 検索エラーなし
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapEKK1681B001(param, fixedText, inOpSvcKeiNo, null);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK1681B001, TEMP_ID_DTL_EKK1681B001, IN_COL_LIST_EKK1681B001, ERR_COL_EKK1681B001);
		// データ(予約手続き中、または、未反映はエラー)が存在すればエラー
		if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK1681B001), TEMP_ID_DTL_EKK1681B001))
		{
			// エラーログ
			outDebugLog("----- getResultDataRs Error  -----");
			// 予約中エラー
			setRelationErrorInfo(param, TEMP_ID_EKK1681B001, ERR_COL_EKK1681B001, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// ==============================================================================================================
		// ■ サービス名称の取得
		// ==============================================================================================================

		// ●EKK0081A010_サービス契約一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0081A010);
		// 上りマッピング
		setInMapEKK0081A010(param, fixedText, inSvcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0081A010, TEMP_ID_DTLEKK0081A010, IN_COL_LIST_EKK0081A010, ERR_COL_EKK0081A010);
		// マップを取得
		HashMap ekk0081a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0081A010), TEMP_ID_DTLEKK0081A010, 0);

		// ○EKK0591A010_料金プラン一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0591A010);
		// 上りマッピング
		setInMapEKK0591A010(param, fixedText, (String)ekk0081a010Map.get(EKK0081B519CBSMsg1List.PCRS_CD), (String)ekk0081a010Map
				.get(EKK0081B519CBSMsg1List.PPLAN_CD));
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0591A010, TEMP_ID_DTL_EKK0591A010, IN_COL_LIST_EKK0591A010, ERR_COL_EKK0591A010);
		// マップを取得
		HashMap ekk0591a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0591A010), TEMP_ID_DTL_EKK0591A010, 0);

		// ●ＯＵＴ項目
		// OUT項目ID：ID通知書印字用料金プラン名
		resultMap.put(OUT_ID_TCHISHO_PRT_YO_PPLAN_NM, ekk0591a010Map.get(EKK0591A010CBSMsg1List.ID_TCHISHO_PRT_YO_PPLAN_NM));

		// ●リクエストパラメータに結果を格納
		param.removeData(fixedText);
		param.setData(fixedText, resultMap);

		// 終了ログ
		outDebugLog("----- getResultDataIPv6 End  -----");
		return param;
	}

	/**
	 * EKK0081B519_サービス契約一覧照会（SYSID）3の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysId
	 * @throws RequestParameterException 
	 */
	private void setInMapEKK0081B519(IRequestParameterReadWrite param, String fixedText, String sysId) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿ＳＹＳＩＤ
		inMap.put(EKK0081B519CBSMsg.KEY_SYSID, sysId);
	}

	/**
	 * 上りマッピング項目設定(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));

	}
	
	// ANK-4543-00-00 ADD START
	/**
	 * 上りマッピング項目設定(EKK3511A010_NTT卸契約一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK3511A010(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK3511A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}
	
	/**
	 * 上りマッピング項目設定(EKK3521A010_NTT卸料金コース一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param nttorsSvcSbt NTT卸サービス種別
	 * @throws RequestParameterException
	 */
	private void setInMapEKK3521A010(IRequestParameterReadWrite param, String fixedText, String nttorsSvcSbt) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK3521A010CBSMsg.KEY_NTTORS_SVC_SBT, nttorsSvcSbt);
	}
	// ANK-4543-00-00 ADD END

	/**
	 * EKK0351B503_現オプションサービス契約情報一覧照会(ネット)の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysid
	 * @param svcKeiNo
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0351B503(IRequestParameterReadWrite param, String fixedText, String sysid, String svcKeiNo)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0351B503CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿ＳＹＳＩＤ
		inMap.put(EKK0351B503CBSMsg.KEY_SYSID, sysid);
	}

	/**
	 * 上りマッピング項目設定(料金プラン固定単価（オプション申込料金）一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param pplanCD
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0601B001(IRequestParameterReadWrite param, String fixedText, String pcrsCd, String pplanCD)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0601B001CBSMsg.KEY_PCRS_CD, pcrsCd);
		// ＫＥＹ＿料金プランコード
		inMap.put(EKK0601B001CBSMsg.KEY_PPLAN_CD, pplanCD);

		// 最大検索件数
		inMap.put(EKK0601B001CBSMsg.MAX_SEARCH_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示件数
		inMap.put(EKK0601B001CBSMsg.DISPLAY_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示ページ番号
		inMap.put(EKK0601B001CBSMsg.DISPLAY_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 検索処理パターン
		inMap.put(EKK0601B001CBSMsg.SEARCH_TYPE, SEARCH_TYPE_IKT);
		// 総ページ数
		inMap.put(EKK0601B001CBSMsg.TOTAL_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);
	}

	/**
	 * 上りマッピング項目設定(料金コース_オプションサービス一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param opSvcCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0811A010(IRequestParameterReadWrite param, String fixedText, String pcrsCd, String opSvcCd)
			throws RequestParameterException
	{
		// 機能コード設定(2)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0811A010CBSMsg.KEY_PCRS_CD, pcrsCd);
		// ＫＥＹ＿オプションサービスコード
		inMap.put(EKK0811A010CBSMsg.KEY_OP_SVC_CD, opSvcCd);
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0811A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

	}

	/**
	 * 上りマッピング項目設定(料金コース_サブオプションサービス一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param sbopSvcCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK1881B001(IRequestParameterReadWrite param, String fixedText, String pcrsCd, String sbopSvcCd)
			throws RequestParameterException
	{
		// 機能コード設定(1:一覧照会)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿料金コースコード
		inMap.put(EKK1881B001CBSMsg.KEY_PCRS_CD, pcrsCd);
		// ＫＥＹ＿サブオプションサービスコード
		inMap.put(EKK1881B001CBSMsg.KEY_SBOP_SVC_CD, sbopSvcCd);

	}

	/**
	 * 上りマッピング項目設定(料金プラン一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0591A010(IRequestParameterReadWrite param, String fixedText, String pcrsCd, String pplanCd)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0591A010CBSMsg.KEY_PCRS_CD, pcrsCd);
		// ＫＥＹ＿料金プランコード
		inMap.put(EKK0591A010CBSMsg.KEY_PPLAN_CD, pplanCd);

	}

	/**
	 * 上りマッピング項目設定(割引サービス契約一覧照会（割引サービス指定）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0451B010(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:抽出条件に一致するレコードの一覧照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0451B010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿割引サービスコード
		inMap.put(EKK0451B010CBSMsg.KEY_WRIB_SVC_CD, JFUStrConst.KK0841_WRIB_SVC_CD_FAMIPA);

	}

	/** 2017/04/10 ANK-3149-00-00 add start */

	/**
	 * 上りマッピング項目設定(割引サービス契約一覧照会（割引サービス指定）（セキュリティパック）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0451B010Sec(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:抽出条件に一致するレコードの一覧照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0451B010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿割引サービスコード
		inMap.put(EKK0451B010CBSMsg.KEY_WRIB_SVC_CD, JFUStrConst.KK0841_WRIB_SVC_CD_SECUPA);

	}

	/**
	 * 上りマッピング項目設定(割引サービス契約一覧照会（割引サービス指定）（プレミアムパック）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0451B010Pre(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:抽出条件に一致するレコードの一覧照会を行う)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0451B010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿割引サービスコード KK0841_WRIB_SVC_CD_PREPA
		inMap.put(EKK0451B010CBSMsg.KEY_WRIB_SVC_CD, JFUStrConst.KK0841_WRIB_SVC_CD_PREPA);

	}

	/** 2017/04/10 ANK-3149-00-00 add end */

	/**
	 * 上りマッピング項目設定(異動予約一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opSvcKeiNo
	 * @param sbopSvcKeiNo
	 * @throws RequestParameterException
	 */
	private void setInMapEKK1681B001(IRequestParameterReadWrite param, String fixedText, String opSvcKeiNo, String sbopSvcKeiNo)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿オプションサービス契約番号
		inMap.put(EKK1681B001CBSMsg.KEY_OP_SVC_KEI_NO, opSvcKeiNo);
		// ＫＥＹ＿サブオプションサービス契約番号
		inMap.put(EKK1681B001CBSMsg.KEY_SBOP_SVC_KEI_NO, sbopSvcKeiNo);
		// ＫＥＹ＿異動予約状態コード
		inMap.put(EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, JFUStrConst.CD01168_00 + "," + JFUStrConst.CD01168_03); // "00":未反映、"03":予約手続き中
	}

	/**
	 * 上りマッピング項目設定(サブオプションサービス契約一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opSvcKeiNo
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0401B001(IRequestParameterReadWrite param, String fixedText, String opSvcKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:一覧照会)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿オプションサービス契約番号
		inMap.put(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO, opSvcKeiNo);

	}

	/**
	 * 上りマッピング項目設定(業務パラメータ管理一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEZM0321A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:PK指定)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿オプションサービス契約番号
		inMap.put(EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, JFUStrConst.KK_URL_PROTOCOL);

	}

	/**
	 * 上りマッピング項目設定(料金コース_サブオプションサービス一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK1881A010(IRequestParameterReadWrite param, String fixedText, String pcrsCd) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:PK指定)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿料金コースコード
		inMap.put(EKK1881A010CBSMsg.KEY_PCRS_CD, pcrsCd);
		// ＫＥＹ＿サブオプションサービスコード
		inMap.put(EKK1881A010CBSMsg.KEY_SBOP_SVC_CD, JFUStrConst.CD00134_D04); // "D04":ホームページ容量
	}

	/**
	 * 下りマッピング項目設定(マップ値)
	 * <br>
	 * @param resultMap
	 * @param retKey
	 * @param tempMap
	 * @throws RequestParameterException
	 */
	private void setReturnDataMap(HashMap resultMap, String retKey, HashMap tempMap) throws RequestParameterException
	{
		// リターンマップに返却値を設定
		ArrayList<Object> retlist = (ArrayList<Object>)resultMap.get(retKey);
		if (retlist == null)
		{
			retlist = new ArrayList<Object>();
		}
		retlist.add(tempMap);
		// ソート(表示順、サービス契約番号の昇順)
		sortListOP2(retlist);
		resultMap.put(retKey, retlist);

	}

	/**
	 * オプションリストのソート(オプションサービス契約番号(昇順))
	 * <br>
	 * @param sortList
	 */
	private void sortListOP1(List sortList)
	{

		// ○オプションサービス契約番号の昇順で並び替える。
		Collections.sort(sortList, new Comparator<Map<String, String>>()
		{

			/**
			 * 一時リストの並び替え
			 * 
			 * <br>
			 * 一時リストをオプションサービス契約番号（昇順）で並び替えます。
			 * @param map1 一時リストの明細が格納されているMap
			 * @param map2 一時リストの明細が格納されているMap
			 * @return 比較結果
			 */
			@Override
			public int compare(Map<String, String> map1, Map<String, String> map2)
			{
				// オプションサービス契約番号で並び替える(昇順)
				int result = map1.get("op_svc_kei_no").compareTo(map2.get("op_svc_kei_no"));
				if (result != 0)
				{
					// 同一でない場合は、並び替える
					return result;
				}

				return 0;
			}

		});

	}

	/**
	 * オプションリストのソート(表示順(料金プランサービス契約)(昇順)、サービス契約番号(昇順))
	 * <br>
	 * @param sortList
	 */
	private void sortListOP2(List sortList)
	{

		// ○表示順(料金プランサービス契約)、サービス契約番号の昇順で並び替える。
		Collections.sort(sortList, new Comparator<Map<String, String>>()
		{

			/**
			 * 一時リストの並び替え
			 * 
			 * <br>
			 * 一時リストを表示順(料金プランサービス契約)(昇順)、サービス契約番号(昇順)で並び替えます。
			 * @param map1 一時リストの明細が格納されているMap
			 * @param map2 一時リストの明細が格納されているMap
			 * @return 比較結果
			 */
			@Override
			public int compare(Map<String, String> map1, Map<String, String> map2)
			{
				// 表示順で並び替える(昇順)
				int result = map1.get("kk0591_dsp_jun_svc_kei").compareTo(map2.get("kk0591_dsp_jun_svc_kei"));
				if (result != 0)
				{
					// 同一でない場合は、並び替える
					return result;
				}
				// サービス契約番号で並び替える(昇順)
				result = map1.get("svc_kei_no").compareTo(map2.get("svc_kei_no"));
				if (result != 0)
				{
					// 同一でない場合は、並び替える
					return result;
				}

				return 0;
			}

		});

	}

	/**
	 * 上りマッピング項目設定(お客様一意照会）
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysId SYSID
	 * @throws RequestParameterException
	 */
	private void setInMapECK0011A010(IRequestParameterReadWrite param, String fixedText, String sysId) throws RequestParameterException
	{
		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// SYSID
		inMap.put(ECK0011A010CBSMsg.KEY_SYSID, sysId);
		// 予約適用年月日
		inMap.put(ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
	}

	/**
	 * 上りマッピング項目設定(サブオプションサービス契約履歴一覧照会）
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opSvcKeiNo オプションサービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0401B003(IRequestParameterReadWrite param, String fixedText, String opSvcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1:一覧)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿サブオプションサービス契約番号
		inMap.put(EKK0401B003CBSMsg.KEY_SBOP_SVC_KEI_NO, opSvcKeiNo);
	}

	/**
	 * 上りマッピング項目設定(オプションサービス契約履歴一覧照会）
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opSvcKeiNo オプションサービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0351B003(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1:一覧)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0351B003CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * 上りマッピング項目設定(申込明細一意照会）
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param opSvcKeiNo オプションサービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0021A010(IRequestParameterReadWrite param, String fixedText, String mskmDtlNo) throws RequestParameterException
	{
		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿申込明細番号
		inMap.put(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, mskmDtlNo);
	}

	/**
	 * 年月を取得
	 * 
	 * <br>
	 * @param strYMD 年月日
	 * @return String
	 */
	private String getYM(String strYMD)
	{

		return JFUBPCommon.toYearFromYmd(strYMD) + JFUBPCommon.toMonthFromYmd(strYMD);
	}

	/**
	 * デバッグ出力処理です。
	 * 
	 * <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;
	}
}
