/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUGetIdTrkshoCC
*   ソースファイル名：JFUGetIdTrkshoCC.java
*   作成者          ：富士通
*   日付            ：2015年02月18日
*＜機能概要＞
*   ID登録証情報取得コモンコンポーネント部品
*＜修正履歴＞
*   バージョン   修正日       修正者      修正内容
*   v14.00.00    2015/02/18   FJ）張本    新規作成
*   v19.00       2015/11/05   FJ）岡井    【OM-2015-0002846】ID通知証表示不具合対応
*   v19.00       2015/11/09   FJ）岡井    【OM-2015-0002846】ISP認証IDパスワードから初期認証IDパスワードに変更
**********************************************************************/
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.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.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B519CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B519CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0171A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0171A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0221A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0221A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0591A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0591A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0621A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0621A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0621B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0621B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0891A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0891A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0911A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0911A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0921A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0921A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0321A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0511B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0511B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0511C010CBSMsg;

/**
 * ID登録証情報取得コモンコンポーネント部品
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUGetIdTrkshoCC extends JFUBaseCC
{
	/** 表示区分：初期 */
	private static final String DSP_KBN_0 = "0";
	/** 表示区分：照会 */
	private static final String DSP_KBN_1 = "1";
	
	/** 認証結果フラグ：正常 */
	private static final String NINSHO_RESULT_FLG_0 = "0";
	/** 認証結果フラグ：エラーメッセージ */
	private static final String NINSHO_RESULT_FLG_1 = "1";
	/** 認証結果フラグ：パスワード失敗警告 */
	private static final String NINSHO_RESULT_FLG_2 = "2";
	/** 認証結果フラグ：パスワード失効警告 */
	private static final String NINSHO_RESULT_FLG_3 = "3";
	/** 認証結果フラグ：パスワード照会不可警告 */
	private static final String NINSHO_RESULT_FLG_4 = "4";

	/** Ｗｅｂアクセス認証キー種別コード */
	private static final String WEB_ACCSS_NSKEY_SBT_CD = "01";
	/** Ｗｅｂアクセス認証キー状態コード：無効 */
	private static final String WEB_ACCSS_NSKEY_STAT_CD_MUKO = JFUStrConst.CD00016_1;
	
	/** 対象料金グループ */
	private static final List<String> PRC_GRP =
			Arrays.asList(JFUStrConst.CD00133_02, JFUStrConst.CD00133_03, JFUStrConst.CD00133_04, 
					JFUStrConst.CD00133_05, JFUStrConst.CD00133_06);

	/** 無効なサービス契約ステータス */
	private static final List<String> SVC_KEI_STAT_MUKO = Arrays.asList(JFUStrConst.CD00037_910, JFUStrConst.CD00037_920);
	/** 無効なサービス契約内訳ステータス */
	private static final List<String> SVC_KEI_UW_STAT_MUKO = Arrays.asList(JFUStrConst.CD00037_910, JFUStrConst.CD00037_920);

	/** 対象の会員種別コード */
	private static final List<String> MEMBER_SBT_CD = Arrays.asList(JFUStrConst.CD00039_10, JFUStrConst.CD00039_20);
	/** 無効なお客様入退会コード */
	private static final List<String> CUST_NTAIKAI_CD_MUKO = Arrays.asList(JFUStrConst.CD00260_1);
	/** 無効なIP払出しコード */
	private static final List<String> IP_HRADSI_CD_MUKO = Arrays.asList(JFUStrConst.CD01264_01);

	/** 対象異動区分(サービス契約内訳) */
	private static final List<String> TG_IDO_DIV = Arrays.asList(JFUStrConst.CD00576_00009, JFUStrConst.CD00576_00019);

	/* ■□ 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_サービス契約一意照会 ■□ */
	/** テンプレートID(サービス契約一意照会) */
	private static final String TEMP_ID_EKK0081A010 = "EKK0081A010";
	/** テンプレートID(サービス契約一意照会明細) */
	private static final String TEMP_ID_DTL_EKK0081A010 = EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST;
	/** IN項目リスト(サービス契約一意照会) */
	private static final List<String> IN_COL_LIST_EKK0081A010 = Arrays.asList(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, EKK0081A010CBSMsg.KEY_GENE_ADD_DTM);
	/** 関連チェックエラー項目(サービス契約一意照会) */
	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;

	/* ■□ EKK0251B001_サービス契約回線内訳一覧照会 ■□ */
	/** テンプレートID(サービス契約回線内訳一覧照会) */
	private static final String TEMP_ID_EKK0251B001 = "EKK0251B001";
	/** テンプレートID(サービス契約回線内訳一覧照会明細) */
	private static final String TEMP_ID_DTL_EKK0251B001 = EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST;
	/** IN項目リスト(サービス契約回線内訳一覧照会) */
	private static final List<String> IN_COL_LIST_EKK0251B001 = Arrays.asList(EKK0251B001CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(サービス契約回線内訳一覧照会) */
	private static final String ERR_COL_EKK0251B001 = EKK0251B001CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サービス契約回線内訳一覧照会) */
	private static final String TEMP_TEMP_KEY_EKK0251B001 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0251B001 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0251A010_サービス契約回線内訳一意照会 ■□ */
	/** テンプレートID(サービス契約回線内訳一意照会) */
	private static final String TEMP_ID_EKK0251A010 = "EKK0251A010";
	/** テンプレートID(サービス契約回線内訳一意照会明細) */
	private static final String TEMP_ID_DTL_EKK0251A010 = EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST;
	/** IN項目リスト(サービス契約回線内訳一意照会) */
	private static final List<String> IN_COL_LIST_EKK0251A010 = Arrays.asList(EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO);
	/** 関連チェックエラー項目(サービス契約回線内訳一意照会) */
	private static final String ERR_COL_EKK0251A010 = EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR;
	/** SC実行結果取得キー(サービス契約回線内訳一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0251A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0251A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0161B004_サービス契約内訳一覧照会 ■□ */
	/** テンプレートID(サービス契約内訳一覧照会) */
	private static final String TEMP_ID_EKK0161B004 = "EKK0161B004";
	/** テンプレートID(サービス契約内訳一覧照会明細) */
	private static final String TEMP_ID_DTL_EKK0161B004 = EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST;
	/** IN項目リスト(サービス契約内訳一覧照会) */
	private static final List<String> IN_COL_LIST_EKK0161B004 = Arrays.asList(EKK0161B004CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(サービス契約内訳一覧照会) */
	private static final String ERR_COL_EKK0161B004 = EKK0161B004CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サービス契約内訳一覧照会) */
	private static final String TEMP_TEMP_KEY_EKK0161B004 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0161B004 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0891A010_提供方式契約一意照会SC ■□ */
	/** テンプレートID(提供方式契約一意照会) */
	private static final String TEMP_ID_EKK0891A010 = "EKK0891A010";
	/** テンプレートID(明細)(提供方式契約一意照会) */
	private static final String TEMP_ID_DTL_EKK0891A010 = EKK0891A010CBSMsg.EKK0891A010CBSMSG1LIST;
	/** IN項目リスト(提供方式契約一意照会) */
	private static final List<String> IN_COL_LIST_EKK0891A010 = Arrays.asList(EKK0891A010CBSMsg.KEY_TK_HOSHIKI_KEI_NO);
	/** 関連チェックエラー項目(提供方式契約一意照会) */
	private static final String ERR_COL_EKK0891A010 = "";
	/** SC実行結果取得キー(提供方式契約一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0891A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0891A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0921A010_マンションプラン一意照会SC ■□ */
	/** テンプレートID(マンションプラン一意照会) */
	private static final String TEMP_ID_EKK0921A010 = "EKK0921A010";
	/** テンプレートID(明細)(マンションプラン一意照会) */
	private static final String TEMP_ID_DTL_EKK0921A010 = EKK0921A010CBSMsg.EKK0921A010CBSMSG1LIST;
	/** IN項目リスト(マンションプラン一意照会) */
	private static final List<String> IN_COL_LIST_EKK0921A010 = Arrays.asList(EKK0921A010CBSMsg.KEY_MANSION_PLAN_CD, EKK0921A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(マンションプラン一意照会) */
	private static final String ERR_COL_EKK0921A010 = "";
	/** SC実行結果取得キー(マンションプラン一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0921A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0921A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0911A010_マンションコース一意照会SC ■□ */
	/** テンプレートID(マンションコース一意照会) */
	private static final String TEMP_ID_EKK0911A010 = "EKK0911A010";
	/** テンプレートID(明細)(マンションコース一意照会) */
	private static final String TEMP_ID_DTL_EKK0911A010 = EKK0911A010CBSMsg.EKK0911A010CBSMSG1LIST;
	/** IN項目リスト(マンションコース一意照会) */
	private static final List<String> IN_COL_LIST_EKK0911A010 = Arrays.asList(EKK0911A010CBSMsg.KEY_MANSION_COURSE_CD, EKK0911A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(マンションコース一意照会) */
	private static final String ERR_COL_EKK0911A010 = "";
	/** SC実行結果取得キー(マンションコース一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0911A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0911A010 + 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;

	/* ■□ EKK0171A010_サービス契約内訳<eo光ネット>一意照会SC ■□ */
	/** テンプレートID(サービス契約内訳<eo光ネット>一意照会) */
	private static final String TEMP_ID_EKK0171A010 = "EKK0171A010";
	/** テンプレートID(明細)(サービス契約内訳<eo光ネット>一意照会) */
	private static final String TEMP_ID_DTL_EKK0171A010 = EKK0171A010CBSMsg.EKK0171A010CBSMSG1LIST;
	/** IN項目リスト(サービス契約内訳<eo光ネット>一意照会) */
	private static final List<String> IN_COL_LIST_EKK0171A010 = Arrays.asList(EKK0171A010CBSMsg.KEY_SVC_KEI_UCWK_NO);
	/** 関連チェックエラー項目(サービス契約内訳<eo光ネット>一意照会) */
	private static final String ERR_COL_EKK0171A010 = "";
	/** SC実行結果取得キー(サービス契約内訳<eo光ネット>一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0171A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0171A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0221A010_サービス契約内訳<eoADSL>一意照会SC ■□ */
	/** テンプレートID(サービス契約内訳<eoADSL>一意照会) */
	private static final String TEMP_ID_EKK0221A010 = "EKK0221A010";
	/** テンプレートID(明細)(サービス契約内訳<eoADSL>一意照会) */
	private static final String TEMP_ID_DTL_EKK0221A010 = EKK0221A010CBSMsg.EKK0221A010CBSMSG1LIST;
	/** IN項目リスト(サービス契約内訳<eoADSL>一意照会) */
	private static final List<String> IN_COL_LIST_EKK0221A010 = Arrays.asList(EKK0221A010CBSMsg.KEY_SVC_KEI_UCWK_NO);
	/** 関連チェックエラー項目(サービス契約内訳<eoADSL>一意照会) */
	private static final String ERR_COL_EKK0221A010 = "";
	/** SC実行結果取得キー(サービス契約内訳<eoADSL>一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0221A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0221A010 + 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;

	/* ■□ 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;

	/* ■□ EKK0621A010_ADSL工事一意照会 ■□ */
	/** テンプレートID(EKK0621A010_ADSL工事一意照会) */
	private static final String TEMPLATE_ID_EKK0621A010 = "EKK0621A010";
	/** テンプレートID(EKK0621A010_ADSL工事一意照会) */
	private static final String TEM_ID_DTL_EKK0621A010 = EKK0621A010CBSMsg.EKK0621A010CBSMSG1LIST;
	/** IN項目リスト(EKK0621A010_ADSL工事一意照会) */
	private static final List<String> IN_COL_LIST_EKK0621A010 = Arrays.asList(EKK0621A010CBSMsg.KEY_ADSL_KOJI_NO);
	/** 関連チェックエラー項目(EKK0621A010_ADSL工事一意照会) */
	private static final String ERROR_COL_EKK0621A010 = EKK0621A010CBSMsg.KEY_ADSL_KOJI_NO_ERR;
	/** SC実行結果取得キー(EKK0621A010_ADSL工事一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0621A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0621A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0621B002_ADSL工事履歴一覧照会 ■□ */
	/** テンプレートID(EKK0621B002_ADSL工事履歴一覧照会) */
	private static final String TEMPLATE_ID_EKK0621B002 = "EKK0621B002";
	/** テンプレートID(EKK0621B002_ADSL工事履歴一覧照会) */
	private static final String TEM_ID_DTL_EKK0621B002 = EKK0621B002CBSMsg.EKK0621B002CBSMSG1LIST;
	/** IN項目リスト(EKK0621B002_ADSL工事履歴一覧照会) */
	private static final List<String> IN_COL_LIST_EKK0621B002 =
			Arrays.asList(EKK0621B002CBSMsg.KEY_SVC_KEI_NO, EKK0621B002CBSMsg.DISPLAY_NUM, EKK0621B002CBSMsg.DISPLAY_PAGE_NUM,
					EKK0621B002CBSMsg.MAX_SEARCH_NUM);
	/** 関連チェックエラー項目(EKK0621B002_ADSL工事履歴一覧照会) */
	private static final String ERROR_COL_EKK0621B002 = EKK0621B002CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(EKK0621B002_ADSL工事履歴一覧照会) */
	private static final String TEMP_TEMP_KEY_EKK0621B002 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0621B002 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EZM0511B001_Ｗｅｂアクセス認証キー一覧照会SC ■□ */
	/** テンプレートID(Ｗｅｂアクセス認証キー一覧照会) */
	private static final String TEMP_ID_EZM0511B001 = "EZM0511B001";
	/** テンプレートID(Ｗｅｂアクセス認証キー一覧照会明細) */
	private static final String TEMP_ID_DTL_EZM0511B001 = EZM0511B001CBSMsg.EZM0511B001CBSMSG1LIST;
	/** IN項目リスト(Ｗｅｂアクセス認証キー一覧照会) */
	private static final List<String> IN_COL_LIST_EZM0511B001 = Arrays.asList(EZM0511B001CBSMsg.KEY_WEB_ACCSS_NSKEY_SBT_CD, EZM0511B001CBSMsg.KEY_WEB_ACCSS_NSKEY);
	/** 関連チェックエラー項目(Ｗｅｂアクセス認証キー一覧照会) */
	private static final String ERR_COL_EZM0511B001 = EZM0511B001CBSMsg.KEY_WEB_ACCSS_NSKEY_ERR;
	/** SC実行結果取得キー(Ｗｅｂアクセス認証キー一覧照会) */
	private static final String TEMP_TEMP_KEY_EZM0511B001 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EZM0511B001 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EZM0511C010_Ｗｅｂアクセス認証キー変更SC ■□ */
	/** テンプレートID(Ｗｅｂアクセス認証キー変更) */
	private static final String TEMP_ID_EZM0511C010 = "EZM0511C010";
	/** IN項目リスト(Ｗｅｂアクセス認証キー変更) */
	private static final List<String> IN_COL_LIST_EZM0511C010 
		= Arrays.asList(
				EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_SBT_CD, 
				EZM0511C010CBSMsg.WEB_ACCSS_NSKEY, 
				EZM0511C010CBSMsg.SYSID, 
				EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_NO, 
				EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_PWD, 
				EZM0511C010CBSMsg.NINSHO_NG_CNT, 
				EZM0511C010CBSMsg.YK_KIGEN_DTM, 
				EZM0511C010CBSMsg.ML_SEND_YMDHM, 
				EZM0511C010CBSMsg.SENDS_MLAD, 
				EZM0511C010CBSMsg.MAIL_RCV_DTM, 
				EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_STAT_CD, 
				EZM0511C010CBSMsg.UPD_DTM_BF);
	/** テンプレートID(Ｗｅｂアクセス認証キー一覧照会明細) */
	private static final String TEMP_ID_DTL_EZM0511C010 = null;
	/** 関連チェックエラー項目(Ｗｅｂアクセス認証キー変更) */
	private static final String ERR_COL_EZM0511C010 = EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_ERR;

	/* ■□ 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_IDO_RSV_STAT_CD,
					EKK1681B001CBSMsg.KEY_SVC_KEI_NO, EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO);
	/** 関連チェックエラー項目(異動予約一覧照会) */
	private static final String ERR_COL_EKK1681B001 = EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR;
	/** SC実行結果取得キー(異動予約一覧照会) */
	private static final String TEMP_TEMP_KEY_EKK1681B001 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK1681B001 + TEMP_TEMPLATE_PRIFIX_SEP;

	// ■ IN項目ID ■
	/** IN項目ID：表示フラグ */
	private static final String IN_DSP_KBN = "dsp_kbn";
	/** IN項目ID：Ｗｅｂアクセス認証キー */
	private static final String IN_WEB_ACCSS_NSKEY = "web_accss_nskey";
	/** IN項目ID：Ｗｅｂアクセス認証キーパスワード */
	private static final String IN_WEB_ACCSS_NSKEY_PWD = "web_accss_nskey_pwd";
	/** IN項目ID：認証ＮＧ上限回数 */
	private static final String IN_NINSHO_NG_LIMIT_CNT = "ninsho_ng_limit_cnt";
	/** IN項目ID：認証ＮＧ回数 */
	private static final String IN_NINSHO_NG_CNT = "ninsho_ng_cnt";

	// ■ OUT項目ID ■
	/** OUT項目ID：SYSID */
	private static final String OUT_SYSID = "sysid";
	/** OUT項目ID：認証結果フラグ */
	private static final String OUT_NINSHO_RESULT_FLG = "ninsho_result_flg";
	/** OUT項目ID：eoID */
	private static final String OUT_SHK_EOID = "shk_eoid";
	/** OUT項目ID：eoIDパスワード */
	private static final String OUT_SHK_EOID_PWD = "shk_eoid_pwd";
	/** OUT項目ID：認証ＮＧ回数 */
	private static final String OUT_NINSHO_NG_CNT = "ninsho_ng_cnt";
	/** OUT項目ID：認証ＮＧ上限回数 */
	private static final String OUT_NINSHO_NG_LIMIT_CNT = "ninsho_ng_limit_cnt";
	/** OUT項目ID：オプション情報リスト */
	private static final String OUT_SVC_KEY_LIST = "svc_kei_list";
	/** OUT項目ID：Ｗｅｂアクセス認証キー情報 */
	private static final String OUT_WEB_ACCSS_NSKEY_MAP = "web_accss_nskey_map";

	/** リスト先頭*/
	protected static final int LIST_TOP = 0;

	/**
	 * ID登録証情報取得処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite getIdTrksho(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 
		HashMap inMap = (HashMap)param.getData(fixedText);
		
		String inDspKbn = (String)inMap.get(IN_DSP_KBN);
		
		// 開始ログ
		outDebugLog("----- getIdTrksho Start  -----");

		// ◆INパラメータがなければエラーをスロー
		if (JFUBPCommon.isNull(inDspKbn))
		{
			// 終了ログ
			outDebugLog("----- getIdTrksho Error  -----");
			// INパラ不正エラー
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}
		
		//ID登録証ログイン情報取得処理
		if (inDspKbn.equals(DSP_KBN_0)){
			getIdTrkshoLogin(handle, param, fixedText);
		}
		else if (inDspKbn.equals(DSP_KBN_1)){
			//ID登録証照会情報取得処理
			getIdTrkshoInfo(handle, param, fixedText);
		}
		
		// 終了ログ
		outDebugLog("----- getIdTrksho End  -----");
		return param;

	}

	/**
	 * ID登録証照会情報処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite getIdTrkshoInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 開始ログ
		outDebugLog("----- getIdTrksho Start  -----");
		// 
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●結果格納マップ
		HashMap resultMap = new HashMap();
		// Ｗｅｂアクセス認証キー情報更新処理
		resultMap = updateTrkshoLogin(handle, param, fixedText);
		
		// 認証結果フラグが０の場合
		if (resultMap.get(OUT_NINSHO_RESULT_FLG).equals(NINSHO_RESULT_FLG_0)){
		
			// ●ＯＵＴ項目
			// OUT項目ID：サービス契約リスト
			resultMap.put(OUT_SVC_KEY_LIST, new ArrayList());
			// OUT項目ID：SYSID
			String outSysId = (String)resultMap.get(OUT_SYSID);
	
			// ○EKK0081B519_サービス契約一覧照会（SYSID）3
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0081B519);
			// 上りマッピング
			setInMapEKK0081B519(param, fixedText, outSysId);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0081B519, TEMP_ID_DTL_EKK0081B519, IN_COL_LIST_EKK0081B519, ERR_COL_EKK0081B519);
	
			// ●結果分ループ（「EKK0081B519_サービス契約一覧照会（SYSID）3」の件数分）
			for (HashMap EKK0081B519Map : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0081B519), TEMP_ID_DTL_EKK0081B519))
			{
	
				// 料金グループコード
				String prcGrpCd = (String)EKK0081B519Map.get(EKK0081B519CBSMsg1List.PRC_GRP_CD);
				// 料金コースコード
				String pcrsCd = (String)EKK0081B519Map.get(EKK0081B519CBSMsg1List.PCRS_CD);
				// 料金プランコード
				String pplanCd = (String)EKK0081B519Map.get(EKK0081B519CBSMsg1List.PPLAN_CD);
				// サービス契約番号
				String svcKeiNo = (String)EKK0081B519Map.get(EKK0081B519CBSMsg1List.SVC_KEI_NO);

				// ◆対象料金グループコード以外の場合スキップ
				if (!PRC_GRP.contains(prcGrpCd))
				{
					continue;
				}

				// ◆無効なサービス契約ステータスの場合スキップ
				if (SVC_KEI_STAT_MUKO.contains(EKK0081B519Map.get(EKK0081B519CBSMsg1List.SVC_KEI_STAT)))
				{
					continue;
				}

				// ◆マンションの場合のみ次の処理へ
				if (prcGrpCd.equals(JFUStrConst.CD00133_04))
				{
					// ==============================================================================================================
					// ■ 提供方式契約コードの取得
					// ==============================================================================================================
					// ○EKK0081A010_サービス契約一意照会
					// ユーザデータ初期化
					initData(param, fixedText, IN_COL_LIST_EKK0081A010);
					// 上りマッピング
					setInMapEKK0081A010(param, fixedText, (String)EKK0081B519Map.get(EKK0081B519CBSMsg1List.SVC_KEI_NO), (String)EKK0081B519Map.get(EKK0081B519CBSMsg1List.GENE_ADD_DTM));
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMP_ID_EKK0081A010, TEMP_ID_DTL_EKK0081A010, IN_COL_LIST_EKK0081A010, ERR_COL_EKK0081A010);
					// マップを取得
					HashMap EKK0081A010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0081A010), TEMP_ID_DTL_EKK0081A010, 0);

					// ==============================================================================================================
					// ■ マンションプランコードの取得
					// ==============================================================================================================
					// ○EKK0891A010_提供方式契約一意照会
					// ユーザデータ初期化
					initData(param, fixedText, IN_COL_LIST_EKK0891A010);
					// 上りマッピング
					setInMapEKK0891A010(param, fixedText, (String)EKK0081A010Map.get(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO));
					//検索エラーなし設定
					ignoreSearchError(param, fixedText);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMP_ID_EKK0891A010, TEMP_ID_DTL_EKK0891A010, IN_COL_LIST_EKK0891A010, ERR_COL_EKK0891A010);
		
					if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0891A010), TEMP_ID_DTL_EKK0891A010))
					{
						// マップを取得
						HashMap ekk0891A010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0891A010), TEMP_ID_DTL_EKK0891A010, 0);
		
						// ==============================================================================================================
						// ■ マンションコースコードの取得
						// ==============================================================================================================
						// ○EKK0921A010_マンションプラン一意照会
						// ユーザデータ初期化
						initData(param, fixedText, IN_COL_LIST_EKK0921A010);
						// 上りマッピング
						setInMapEKK0921A010(param, fixedText, (String)ekk0891A010Map.get(EKK0891A010CBSMsg1List.MANSION_PLAN_CD));
						//検索エラーなし設定
						ignoreSearchError(param, fixedText);
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMP_ID_EKK0921A010, TEMP_ID_DTL_EKK0921A010, IN_COL_LIST_EKK0921A010, ERR_COL_EKK0921A010);
						// マップを取得
						HashMap ekk0921A010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0921A010), TEMP_ID_DTL_EKK0921A010, 0);
			
						// ==============================================================================================================
						// ■ IP払出コードの取得
						// ==============================================================================================================
						// ○EKK0911A010_マンションコース一意照会
						// ユーザデータ初期化
						initData(param, fixedText, IN_COL_LIST_EKK0911A010);
						// 上りマッピング
						setInMapEKK0911A010(param, fixedText, (String)ekk0921A010Map.get(EKK0921A010CBSMsg1List.MANSION_COURSE_CD));
						//検索エラーなし設定
						ignoreSearchError(param, fixedText);
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMP_ID_EKK0911A010, TEMP_ID_DTL_EKK0911A010, IN_COL_LIST_EKK0911A010, ERR_COL_EKK0911A010);
						// マップを取得
						HashMap EKK0911A010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0911A010), TEMP_ID_DTL_EKK0911A010, 0);
			
						// ◆マンションプライベートの場合スキップ
						if (IP_HRADSI_CD_MUKO.contains(EKK0911A010Map.get(EKK0911A010CBSMsg1List.IP_HRADSI_CD)))
						{
							continue;
						}
					}
				}
	
				// ==============================================================================================================
				// ■ サービス契約回線内訳コードの取得
				// ==============================================================================================================
				// ○EKK0251B001_サービス契約回線内訳一覧照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0251B001);
				// 上りマッピング
				setInMapEKK0251B001(param, fixedText, (String)EKK0081B519Map.get(EKK0081B519CBSMsg1List.SVC_KEI_NO));
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0251B001, TEMP_ID_DTL_EKK0251B001, IN_COL_LIST_EKK0251B001, ERR_COL_EKK0251B001);
				// マップを取得
				HashMap ekk0251B001Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0251B001), TEMP_ID_DTL_EKK0251B001, 0);
	
				// ==============================================================================================================
				// ■ 回線場所の取得
				// ==============================================================================================================
				// ○EKK0251A010_サービス契約回線内訳一意照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0251A010);
				// 上りマッピング
				setInMapEKK0251A010(param, fixedText, (String)ekk0251B001Map.get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0251A010, TEMP_ID_DTL_EKK0251A010, IN_COL_LIST_EKK0251A010, ERR_COL_EKK0251A010);
				// マップを取得
				HashMap EKK0251A010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0251A010), TEMP_ID_DTL_EKK0251A010, 0);

				// ==============================================================================================================
				// ■ サービス名称の取得
				// ==============================================================================================================
				// 新料金グループコード
				String newPrcGrpCd = JFUStrConst.EMPTY;
				// 新料金コースコード
				String newPcrsCd = JFUStrConst.EMPTY;
				// 新料金プランコード
				String newPplanCd = JFUStrConst.EMPTY; 

				// ○EKK1681B001_異動予約一覧照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK1681B001);
				// 上りマッピング
				setInMapEKK1681B001(param, fixedText, null, JFUStrConst.CD01167_003,
						JFUStrConst.CD01168_00 + JFUStrConst.COMMA + JFUStrConst.CD01168_03,
						(String)EKK0081B519Map.get(EKK0081B519CBSMsg1List.SVC_KEI_NO), null);
				// 検索結果無しエラー回避
				ignoreSearchError(param, fixedText);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK1681B001, TEMP_ID_DTL_EKK1681B001, IN_COL_LIST_EKK1681B001,
						ERR_COL_EKK1681B001);
				// 一覧照会結果取得
				List eKK1681B001SvcKeiInfoList =
						getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK1681B001), TEMP_ID_DTL_EKK1681B001);

				if(eKK1681B001SvcKeiInfoList != null && eKK1681B001SvcKeiInfoList.size() > 0)
				{
					// コース変更中の異動予約が存在する場合、最新レコードを取得
					HashMap newSvcMap = new HashMap();
					for (int i = 0; i < eKK1681B001SvcKeiInfoList.size(); i++)
					{
						HashMap childMap = (HashMap)eKK1681B001SvcKeiInfoList.get(i);
						if(childMap == null || childMap.size() == 0)
						{
							continue;
						}

						String idoDiv = (String)childMap.get(EKK1681B001CBSMsg1List.IDO_DIV);
						if(TG_IDO_DIV.contains(idoDiv))
						{
							// 異動区分：(00009:コース変更 or 00019:住所変更・登録)
							// 対象の最新レコードを設定する
							newSvcMap.putAll(childMap);
						}
					}

					if(newSvcMap != null && newSvcMap.size() > 0)
					{
						// コース変更中の場合、コース変更後の情報を設定する
						newPrcGrpCd = (String)newSvcMap.get(EKK1681B001CBSMsg1List.NEW_PRC_GRP_CD);
						newPcrsCd = (String)newSvcMap.get(EKK1681B001CBSMsg1List.NEW_PCRS_CD);
						newPplanCd = (String)newSvcMap.get(EKK1681B001CBSMsg1List.NEW_PPLAN_CD);
					}
				}

				// ○EKK0591A010_料金プラン一意照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0591A010);

				// 上りマッピング
				if(!JFUBPCommon.isNull(newPcrsCd) && !JFUBPCommon.isNull(newPplanCd))
				{
					// コース変更後の情報が存在する場合、そちらの名称を取得
					setInMapEKK0591A010(param, fixedText, newPcrsCd, newPplanCd);
				}
				else
				{
					// 上記以外は、現コースの名称を取得
					setInMapEKK0591A010(param, fixedText, pcrsCd, pplanCd);
				}

				// サービ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);

				// ◆ADSLフレッツ以外
				if (!prcGrpCd.equals(JFUStrConst.CD00133_05))
				{
					// ==============================================================================================================
					// ■ サービス契約内訳コードの取得
					// ==============================================================================================================
					// ○EKK0161B004_サービス契約内訳一覧照会
					// ユーザデータ初期化
					initData(param, fixedText, IN_COL_LIST_EKK0161B004);
					// 上りマッピング
					setInMapEKK0161B004(param, fixedText, (String)EKK0081B519Map.get(EKK0081B519CBSMsg1List.SVC_KEI_NO));
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMP_ID_EKK0161B004, TEMP_ID_DTL_EKK0161B004, IN_COL_LIST_EKK0161B004, ERR_COL_EKK0161B004);
					// 一覧照会結果取得
					List eKK0161B004List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0161B004), TEMP_ID_DTL_EKK0161B004);

					// 取得無しの場合、次へ
					if (eKK0161B004List == null || eKK0161B004List.size() == 0)
					{
						continue;
					}

					// サービス契約内訳ステータスチェック
					String svcKeiUcwkNo = JFUStrConst.EMPTY;
					if(eKK0161B004List.size() >= 2)
					{
						// サービス契約内訳明細が2件以上の場合、異動予約を照会する
						ArrayList svcKeiUwInfoList = new ArrayList();
						for (int i = 0; i < eKK0161B004List.size(); i++)
						{
							HashMap childMap = (HashMap)eKK0161B004List.get(i);
							if (childMap != null && childMap.containsKey(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT))
							{
								// サービス契約内訳ステータスで解約済、キャンセルを除外
								String svcKeiUwStat = (String)childMap.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
								if (SVC_KEI_UW_STAT_MUKO.contains(svcKeiUwStat))
								{
									continue;
								}
							}

							// ○EKK1681B001_異動予約一覧照会
							// ユーザデータ初期化
							initData(param, fixedText, IN_COL_LIST_EKK1681B001);
							// 上りマッピング
							setInMapEKK1681B001(param, fixedText, null, JFUStrConst.CD01167_007,
									JFUStrConst.CD01168_00 + JFUStrConst.COMMA + JFUStrConst.CD01168_03, null,
									(String)childMap.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO));
							// 検索結果無しエラー回避
							ignoreSearchError(param, fixedText);
							// サービスIF実行
							executeSC(handle, param, fixedText, TEMP_ID_EKK1681B001, TEMP_ID_DTL_EKK1681B001, IN_COL_LIST_EKK1681B001,
									ERR_COL_EKK1681B001);
							// 一覧照会結果取得
							List eKK1681B001SvcKeiUwInfoList =
									getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK1681B001), TEMP_ID_DTL_EKK1681B001);

							// 異動予約チェック(コース変更/住所変更・登録)
							if(chkSvcKeiUwIdoRsv(eKK1681B001SvcKeiUwInfoList))
							{
								// チェックOKの場合、サービス契約内訳情報リストに格納
								svcKeiUwInfoList.add(childMap);
							}
						}

						// サービス契約内訳番号取得
						if(svcKeiUwInfoList != null && svcKeiUwInfoList.size() >= 2)
						{
							// 異動予約チェック後でサービス契約内訳情報が2件以上存在する場合、サービス契約内訳番号の最大を取得する
							// ※サービス契約内訳一覧照会が昇順(サービス契約内訳番号)の為、サービス契約内訳情報リストの最大を設定する
							HashMap svcKeiUwInfoMax = (HashMap)svcKeiUwInfoList.get(svcKeiUwInfoList.size() - 1);
							svcKeiUcwkNo = (String)svcKeiUwInfoMax.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
						}
						else if(svcKeiUwInfoList != null && svcKeiUwInfoList.size() == 1)
						{
							// 1件に絞れた場合、サービス契約内訳情報リストの0番目のサービス契約内訳番号を取得する
							HashMap svcKeiUwInfoMax = (HashMap)svcKeiUwInfoList.get(0);
							svcKeiUcwkNo = (String)svcKeiUwInfoMax.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
						}
					}
					else
					{
						// サービス契約内訳一覧照会明細が1件の場合、取得結果のサービス契約内訳番号をそのまま設定する
						HashMap eKK0161B004Map =
								getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0161B004), TEMP_ID_DTL_EKK0161B004, 0);
						svcKeiUcwkNo = (String)eKK0161B004Map.get(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO);
					}

					// サービス契約内訳番号が取得できない場合、次へ
					if(JFUBPCommon.isNull(svcKeiUcwkNo))
					{
						continue;
					}

					// ==============================================================================================================
					// ■ 認証ID、認証IDパスワードの取得
					// ==============================================================================================================
					// ○EKK0171A010_サービス契約内訳<eo光ネット>一意照会
					// ユーザデータ初期化
					initData(param, fixedText, IN_COL_LIST_EKK0171A010);
					// 上りマッピング
					setInMapEKK0171A010(param, fixedText, svcKeiUcwkNo);
					//検索エラーなし設定
					ignoreSearchError(param, fixedText);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMP_ID_EKK0171A010, TEMP_ID_DTL_EKK0171A010, IN_COL_LIST_EKK0171A010, ERR_COL_EKK0171A010);
					// ○EKK0221A010_サービス契約内訳<eoADSL>一意照会
					// ユーザデータ初期化
					initData(param, fixedText, IN_COL_LIST_EKK0221A010);
					// 上りマッピング
					setInMapEKK0221A010(param, fixedText, svcKeiUcwkNo);
					//検索エラーなし設定
					ignoreSearchError(param, fixedText);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMP_ID_EKK0221A010, TEMP_ID_DTL_EKK0221A010, IN_COL_LIST_EKK0221A010, ERR_COL_EKK0221A010);
				}

				// ◆ADSLフレッツの場合
				else{
					// ●EKK0621B002_ADSL工事履歴一覧照会
					// ユーザデータ初期化
					initData(param, fixedText, IN_COL_LIST_EKK0621B002);
					// 上りマッピング
					setInMapEKK0621B002(param, fixedText, (String)EKK0081B519Map.get(EKK0081B519CBSMsg1List.SVC_KEI_NO));
					//検索エラーなし設定
					ignoreSearchError(param, fixedText);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0621B002, TEM_ID_DTL_EKK0621B002, IN_COL_LIST_EKK0621B002,
							ERROR_COL_EKK0621B002);
					
					if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0621B002), TEM_ID_DTL_EKK0621B002))
					{
						// マップを取得
						HashMap mapEKK0621B002 = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0621B002), TEM_ID_DTL_EKK0621B002, 0);
						// ●EKK0621A010_ADSL工事一意照会
						// ユーザデータ初期化
						initData(param, fixedText, IN_COL_LIST_EKK0621A010);
						// 上りマッピング
						setInMapEKK0621A010(param, fixedText, (String)mapEKK0621B002.get(EKK0621B002CBSMsg1List.ADSL_KOJI_NO));
						//検索エラーなし設定
						ignoreSearchError(param, fixedText);
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0621A010, TEM_ID_DTL_EKK0621A010, IN_COL_LIST_EKK0621A010,
								ERROR_COL_EKK0621A010);
					}
				}

				// ==============================================================================================================
				// ■ サービス契約リストに設定
				// ==============================================================================================================
				HashMap retSvcKeiMap = new HashMap();
				retSvcKeiMap.put("dsp_jun", 
					JFUBPCommon.fillZero((String)ekk0591a010Map.get(EKK0591A010CBSMsg1List.DSP_JUN), 4, false)); // ソート条件のため"0"埋めする
				retSvcKeiMap.put("svc_kei_no", svcKeiNo);

				// コース変更後の料金グループが存在する場合、そちらを設定する
				if(!JFUBPCommon.isNull(newPrcGrpCd))
				{
					retSvcKeiMap.put("prc_grp_cd", newPrcGrpCd);
				}
				else
				{
					retSvcKeiMap.put("prc_grp_cd", prcGrpCd);
				}

				retSvcKeiMap.put("svc_kei_nm", ekk0591a010Map.get(EKK0591A010CBSMsg1List.ID_TCHISHO_PRT_YO_PPLAN_NM));

				// ADSLイーアクセス
				if (prcGrpCd.equals(JFUStrConst.CD00133_05)){
					HashMap mapEKK0621A010 = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0621A010), TEM_ID_DTL_EKK0621A010, 0);
					retSvcKeiMap.put("ninsho_id", mapEKK0621A010.get(EKK0621A010CBSMsg1List.ADSL_NINSHO_ID));
					retSvcKeiMap.put("ninsho_id_pwd", "");
				}
				// ADSLフレッツ
				else if (prcGrpCd.equals(JFUStrConst.CD00133_06)){
					HashMap EKK0221A010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0221A010), TEMP_ID_DTL_EKK0221A010, 0);
					retSvcKeiMap.put("ninsho_id", EKK0221A010Map.get(EKK0221A010CBSMsg1List.ADSL_NINSHO_ID));
					retSvcKeiMap.put("ninsho_id_pwd", EKK0221A010Map.get(EKK0221A010CBSMsg1List.ADSL_NINSHO_ID_PWD));
				}
				// ネット
				else if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0171A010), TEMP_ID_DTL_EKK0171A010))
				{
					HashMap EKK0171A010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0171A010), TEMP_ID_DTL_EKK0171A010, 0);
					retSvcKeiMap.put("ninsho_id", EKK0171A010Map.get(EKK0171A010CBSMsg1List.ISP_NINSHO_ID));
					retSvcKeiMap.put("ninsho_id_pwd", EKK0171A010Map.get(EKK0171A010CBSMsg1List.SHK_ISP_NINSHO_ID_PWD));
				}

				retSvcKeiMap.put("kaisen_place", 
						getNullToBlank((String)EKK0251A010Map.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM)) +
						getNullToBlank((String)EKK0251A010Map.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM)) +
						getNullToBlank((String)EKK0251A010Map.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM)) +
						getNullToBlank((String)EKK0251A010Map.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM)) +
						getNullToBlank((String)EKK0251A010Map.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO)) +
						getNullToBlank((String)EKK0251A010Map.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM)) +
						getNullToBlank((String)EKK0251A010Map.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM)));

				// リストに追加（表示順、サービス契約番号の昇順）
				setReturnDataMap(resultMap, OUT_SVC_KEY_LIST, retSvcKeiMap);
			}

		}

		// ●リクエストパラメータに結果を格納
		param.removeData(fixedText);
		param.setData(fixedText, resultMap);

		// 終了ログ
		outDebugLog("----- getIdTrksho End  -----");
		return param;

	}

	/**
	 * ID登録証ログイン情報取得処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite getIdTrkshoLogin(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		// 開始ログ
		outDebugLog("----- getIdTrkshoLogin Start  -----");
		// 
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●結果格納マップ
		HashMap resultMap = new HashMap();

		// ==============================================================================================================
		// ■ 業務パラメータの取得
		// ==============================================================================================================
		// ○EZM0321A010_業務パラメータ管理一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EZM0321A010);
		// 上りマッピング
		setInMapEZM0321A010(param, fixedText);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EZM0321A010, TEMP_ID_DTL_EZM0321A010, IN_COL_LIST_EZM0321A010, ERR_COL_EZM0321A010);
		// データなしの場合エラー
		if (!isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EZM0321A010), TEMP_ID_DTL_EZM0321A010))
		{
			// エラーログ
			outDebugLog("----- getIdTrkshoLogin Error  -----");
			setRelationErrorInfo(param, TEMP_ID_EZM0321A010, ERR_COL_EZM0321A010, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
					.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
		}
		// マップを取得
		HashMap ezm0321a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EZM0321A010), TEMP_ID_DTL_EZM0321A010, 0);

		String outNinshoNgLimitCnt = (String)ezm0321a010Map.get(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);

		// Ｗｅｂアクセス認証キー情報取得処理
		resultMap = getWebAccssNskey(handle, param, fixedText);

		// ●ＯＵＴ項目
		// OUT項目ID：認証ＮＧ上限回数
		resultMap.put(OUT_NINSHO_NG_LIMIT_CNT, outNinshoNgLimitCnt);
		
		// ●リクエストパラメータに結果を格納
		param.removeData(fixedText);
		param.setData(fixedText, resultMap);

		// 終了ログ
		outDebugLog("----- getIdTrkshoLogin End  -----");
		return param;
	}

	/**
	 * ID登録証ログイン情報更新処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	private HashMap updateTrkshoLogin(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 開始ログ
		outDebugLog("----- updateTrkshoLogin Start  -----");

		// Ｗｅｂアクセス認証キー情報取得処理
		HashMap resultMap = getWebAccssNskey(handle, param, fixedText);
		
		HashMap inMap = (HashMap)param.getData(fixedText);

		// IN項目ID：認証ＮＧ回数
		int inNinshoNgCnt = Integer.parseInt((String)inMap.get(IN_NINSHO_NG_CNT));
		// IN項目ID：認証ＮＧ上限回数
		String inNinshoNgLimitCnt = (String)inMap.get(IN_NINSHO_NG_LIMIT_CNT);
		// OUT項目ID：認証結果フラグ
		String outNinshoResultFlg = (String)resultMap.get(OUT_NINSHO_RESULT_FLG);		
		// OUT項目ID：Ｗｅｂアクセス認証キー情報
		HashMap mapWebAccssKey = (HashMap)resultMap.get(OUT_WEB_ACCSS_NSKEY_MAP);
		
		// ==============================================================================================================
		// ■ Ｗｅｂアクセス認証キー変更　（認証失敗の場合）
		// ==============================================================================================================
		if (outNinshoResultFlg.equals(NINSHO_RESULT_FLG_1)){
			// 認証ＮＧ回数を加算
			inNinshoNgCnt++;
			mapWebAccssKey.put(EZM0511B001CBSMsg1List.NINSHO_NG_CNT, String.valueOf(inNinshoNgCnt));
			// Ｗｅｂアクセス認証キー状態コードを変更
			if (inNinshoNgCnt >= Integer.parseInt(inNinshoNgLimitCnt)) {
				mapWebAccssKey.put(EZM0511B001CBSMsg1List.WEB_ACCSS_NSKEY_STAT_CD, WEB_ACCSS_NSKEY_STAT_CD_MUKO);
			}
			// ○EZM0511C010_Ｗｅｂアクセス認証キー変更
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EZM0511C010);
			// 上りマッピング
			setInMapEZM0511C010(param, fixedText, mapWebAccssKey);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EZM0511C010, TEMP_ID_DTL_EZM0511C010, IN_COL_LIST_EZM0511C010, ERR_COL_EZM0511C010);

			// 認証キー判定処理
			outNinshoResultFlg = getNinshoNgCntValid(inNinshoNgCnt, inNinshoNgLimitCnt);
		}

		// OUT項目ID：認証結果フラグ
		resultMap.put(OUT_NINSHO_RESULT_FLG, outNinshoResultFlg);
		// OUT項目ID：認証ＮＧ回数
		resultMap.put(OUT_NINSHO_NG_CNT, String.valueOf(inNinshoNgCnt));
		
		// 終了ログ
		outDebugLog("----- getIdTrkshoLogin End  -----");

		return resultMap;
	}
	/**
	 * Ｗｅｂアクセス認証キー情報処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	private HashMap getWebAccssNskey(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 開始ログ
		outDebugLog("----- getWebAccssNskey Start  -----");
		
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●結果格納マップ
		HashMap resultMap = new HashMap();
		
		String inWebAccssNskey = (String)inMap.get(IN_WEB_ACCSS_NSKEY);
		
		String inWebAccssNskeyPwd = (String)inMap.get(IN_WEB_ACCSS_NSKEY_PWD);

		String inDspKbn = (String)inMap.get(IN_DSP_KBN);
		
		// ◆INパラメータがなければエラーをスロー
		if (JFUBPCommon.isNull(inWebAccssNskey))
		{
			// 終了ログ
			outDebugLog("----- getWebAccssNskey Error  -----");
			// OUT項目ID：認証結果フラグ
			resultMap.put(OUT_NINSHO_RESULT_FLG, NINSHO_RESULT_FLG_3);
			return resultMap;
		}

		// ==============================================================================================================
		// ■ Ｗｅｂアクセス認証キー情報の取得
		// ==============================================================================================================
		// ○EZM0511B001_Ｗｅｂアクセス認証キー一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EZM0511B001);
		// 上りマッピング
		setInMapEZM0511B001(param, fixedText, inWebAccssNskey);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EZM0511B001, TEMP_ID_DTL_EZM0511B001, IN_COL_LIST_EZM0511B001, ERR_COL_EZM0511B001);
		// マップを取得
		HashMap EZM0511B001Map = null;

		if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EZM0511B001), TEMP_ID_DTL_EZM0511B001))
		{
			// マップを取得
			EZM0511B001Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EZM0511B001), TEMP_ID_DTL_EZM0511B001, 0);

			// ●ＯＵＴ項目
			// OUT項目ID：SYSID
			resultMap.put(OUT_SYSID, EZM0511B001Map.get(EZM0511B001CBSMsg1List.SYSID));
			// OUT項目ID：eoID
			resultMap.put(OUT_NINSHO_NG_CNT, EZM0511B001Map.get(EZM0511B001CBSMsg1List.NINSHO_NG_CNT));
	
			String sysId = (String)EZM0511B001Map.get(EZM0511B001CBSMsg1List.SYSID);
	
			// ○ECK0011A010_お客様一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_ECK0011A010);
			// 上りマッピング
			setInMapECK0011A010(param, fixedText, sysId);
			//検索エラーなし設定
			ignoreSearchError(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_ECK0011A010, TEMP_ID_DTL_ECK0011A010, IN_COL_LIST_ECK0011A010, ERR_COL_ECK0011A010);
			// データなしの場合エラー
			if (!isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_ECK0011A010), TEMP_ID_DTL_ECK0011A010))
			{
				// エラーログ
				outDebugLog("----- getWebAccssNskey Error  -----");
				setRelationErrorInfo(param, TEMP_ID_ECK0011A010, ERR_COL_ECK0011A010, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
			// マップを取得
			HashMap ECK0011a010Map = getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_ECK0011A010), TEMP_ID_DTL_ECK0011A010, 0);
			// 会員種別コード
			String memberSbtCd = (String)ECK0011a010Map.get(ECK0011A010CBSMsg1List.MEMBER_SBT_CD);
			// お客様入退会コード
			String custNtaikaiCd = (String)ECK0011a010Map.get(ECK0011A010CBSMsg1List.CUST_NTAIKAI_CD);
	
			// お客様入退会コードが「退会」
			if (CUST_NTAIKAI_CD_MUKO.contains(custNtaikaiCd)){
				// OUT項目ID：認証結果フラグ
				resultMap.put(OUT_NINSHO_RESULT_FLG, NINSHO_RESULT_FLG_4);
				
			}
			// 会員種別コードが「マスター会員」「マスター会員(法人)」以外
			else if (!MEMBER_SBT_CD.contains(memberSbtCd)){
				// OUT項目ID：認証結果フラグ
				resultMap.put(OUT_NINSHO_RESULT_FLG, NINSHO_RESULT_FLG_4);
			}
			else{
				// 初期eoIDを変換
				String shkEoId = (String)ECK0011a010Map.get(ECK0011A010CBSMsg1List.SHK_EOID);
				if (!JFUStrConst.EMPTY.equals(shkEoId))
				{
					String eoidS1 = shkEoId.substring(0,4);
					String eoidS2 = shkEoId.substring(4,8);
					String eoidS3 = shkEoId.substring(8,12);				
					shkEoId = eoidS1 + JFUStrConst.HALF_SPACE + eoidS2 + JFUStrConst.HALF_SPACE + eoidS3;
				}
				// 認証キー判定処理
				String outNinshoResultFlg = getNinshoKeyValid(inDspKbn, inWebAccssNskeyPwd, EZM0511B001Map);
				// OUT項目ID：認証結果フラグ
				resultMap.put(OUT_NINSHO_RESULT_FLG, outNinshoResultFlg);
				// OUT項目ID：eoID
				resultMap.put(OUT_SHK_EOID, shkEoId);
				// OUT項目ID：eoIDパスワード
				resultMap.put(OUT_SHK_EOID_PWD, (String)ECK0011a010Map.get(ECK0011A010CBSMsg1List.SHK_EOID_PWD));
				// OUT項目ID：Ｗｅｂアクセス認証キー情報
				resultMap.put(OUT_WEB_ACCSS_NSKEY_MAP, EZM0511B001Map);
			}
		}
		else{
			// 認証キー判定処理
			String outNinshoResultFlg = getNinshoKeyValid(inDspKbn, inWebAccssNskeyPwd, EZM0511B001Map);
			// OUT項目ID：認証結果フラグ
			resultMap.put(OUT_NINSHO_RESULT_FLG, outNinshoResultFlg);
		}
		
		// 終了ログ
		outDebugLog("----- getWebAccssNskey End  -----");
		
		return resultMap;
	}

	/**
	 * 認証キー判定処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	private String getNinshoKeyValid(String dspKbn, String pwd, HashMap webAccssNskeyMap) throws Exception
	{

		// 開始ログ
		outDebugLog("----- getNinshoKeyValid Start  -----");

		if (webAccssNskeyMap == null){
			return NINSHO_RESULT_FLG_3;
		}

		String webAccssNskeyPwd = (String)webAccssNskeyMap.get(EZM0511B001CBSMsg1List.WEB_ACCSS_NSKEY_PWD);
		String ykKigenDtm = (String)webAccssNskeyMap.get(EZM0511B001CBSMsg1List.YK_KIGEN_DTM);
		// 有効期限年月日時分秒＜オンライン日時の場合、「3」を設定
		if(ykKigenDtm.compareTo(JFUBPCommon.getSysDateTimeStamp()) < 0){
			return NINSHO_RESULT_FLG_3;
		}
		// 表示区分が照会で、パスワードが異なる場合「1」を設定
		else if(dspKbn.equals(DSP_KBN_1)){
			if (!webAccssNskeyPwd.equals(pwd)){
				return NINSHO_RESULT_FLG_1;
			}
		}

		// 終了ログ
		outDebugLog("----- getNinshoKeyValid End  -----");

		return NINSHO_RESULT_FLG_0;
	}

	/**
	 * 認証キー判定処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	private String getNinshoNgCntValid(int ninshoNgCnt, String ninsho_ng_limit_cnt) throws Exception
	{

		// 認証ＮＧ上限回数＜引数の認証NG上限回数以上の場合、「1」を設定	
		if(ninshoNgCnt < Integer.parseInt(ninsho_ng_limit_cnt)){
			return NINSHO_RESULT_FLG_1;
		}
		// 認証ＮＧ上限回数≧引数の認証NG上限回数以上の場合、「2」を設定
		else{
			return NINSHO_RESULT_FLG_2;
		}

	}
	
	/**
	 * 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);
	}

	/**
	 * 上りマッピング項目設定(サービス契約回線内訳一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0251B001(IRequestParameterReadWrite param, String fixedText, String svcKeiNo)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0251B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

	}

	/**
	 * 上りマッピング項目設定(サービス契約回線内訳一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0251A010(IRequestParameterReadWrite param, String fixedText, String svcKeiKaisenUcwkNo)
			throws RequestParameterException
	{
		// 機能コード設定(2)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約回線内訳番号
		inMap.put(EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);

	}

	/**
	 * 上りマッピング項目設定(サービス契約回線内訳一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0161B004(IRequestParameterReadWrite param, String fixedText, String svcKeiNo)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0161B004CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

	}

	/**
	 * 上りマッピング項目設定(サービス契約一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0081A010(IRequestParameterReadWrite param, String fixedText, String svcKeiNo, String geneAddDtm)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿世代登録年月日
		inMap.put(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, geneAddDtm);

	}

	/**
	 * 上りマッピング項目設定(提供方式契約一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0891A010(IRequestParameterReadWrite param, String fixedText, String tkHoshikiKeiNo)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿提供方式契約番号
		inMap.put(EKK0891A010CBSMsg.KEY_TK_HOSHIKI_KEI_NO, tkHoshikiKeiNo);

	}

	/**
	 * 上りマッピング項目設定(マンションプラン一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0921A010(IRequestParameterReadWrite param, String fixedText, String mansionPlanCd)
			throws RequestParameterException
	{
		// 機能コード設定(2)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿マンションプランコード
		inMap.put(EKK0921A010CBSMsg.KEY_MANSION_PLAN_CD, mansionPlanCd);
		// 予約適用年月日
		inMap.put(EKK0921A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

	}

	/**
	 * 上りマッピング項目設定(マンションコース一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0911A010(IRequestParameterReadWrite param, String fixedText, String mansionCourseCd)
			throws RequestParameterException
	{
		// 機能コード設定(2)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿マンションコースコード
		inMap.put(EKK0911A010CBSMsg.KEY_MANSION_COURSE_CD, mansionCourseCd);
		// 予約適用年月日
		inMap.put(EKK0911A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));

	}

	/**
	 * 上りマッピング項目設定(料金プラン一意照会)
	 * 
	 * <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);

	}

	/**
	 * 上りマッピング項目設定(サービス契約内訳<eo光ネット>一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0171A010(IRequestParameterReadWrite param, String fixedText, String svcKeiUcwkNo)
			throws RequestParameterException
	{
		// 機能コード設定(2)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約内訳番号
		inMap.put(EKK0171A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);

	}

	/**
	 * 上りマッピング項目設定(サービス契約内訳<eoADSL>一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0221A010(IRequestParameterReadWrite param, String fixedText, String svcKeiUcwkNo)
			throws RequestParameterException
	{
		// 機能コード設定(2)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約内訳番号
		inMap.put(EKK0221A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);

	}

	/**
	 * 上りマッピング項目設定(EKK0621B002_ADSL工事履歴一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0621B002(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// ●機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1); // 1:

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		inMap.put(EKK0621B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		inMap.put(EKK0621B002CBSMsg.DISPLAY_NUM, JFUStrConst.DISPLAY_NUM);
		inMap.put(EKK0621B002CBSMsg.DISPLAY_PAGE_NUM, JFUStrConst.DISPLAY_PAGE_NUM);
		inMap.put(EKK0621B002CBSMsg.MAX_SEARCH_NUM, JFUStrConst.MAX_SEARCH_NUM);

	}

	/**
	 * 上りマッピング項目設定(EKK0621A010_ADSL工事一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0621A010(IRequestParameterReadWrite param, String fixedText, String adslKojiNo) throws RequestParameterException
	{
		// ●機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1); // 1:

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		inMap.put(EKK0621A010CBSMsg.KEY_ADSL_KOJI_NO, adslKojiNo);

	}
	
	/**
	 * 上りマッピング項目設定(業務パラメータ管理一意照会)
	 * 
	 * <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);

		// ＫＥＹ＿業務パラメータID
		inMap.put(EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, JFUStrConst.FU_NINSHO_NG_UPPLCNT);

	}

	/**
	 * 上りマッピング項目設定(Ｗｅｂアクセス認証キー一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEZM0511B001(IRequestParameterReadWrite param, String fixedText, String inWebAccssNskey) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:PK指定)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// Ｗｅｂアクセス認証キー種別コード
		inMap.put(EZM0511B001CBSMsg.KEY_WEB_ACCSS_NSKEY_SBT_CD, WEB_ACCSS_NSKEY_SBT_CD);
		// Ｗｅｂアクセス認証キー
		inMap.put(EZM0511B001CBSMsg.KEY_WEB_ACCSS_NSKEY, inWebAccssNskey);

	}

	/**
	 * 上りマッピング項目設定(Ｗｅｂアクセス認証キー一変更)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEZM0511C010(IRequestParameterReadWrite param, String fixedText, HashMap map) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定(1:PK指定)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// Ｗｅｂアクセス認証キー種別コード
		inMap.put(EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_SBT_CD, map.get(EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_SBT_CD));
		// Ｗｅｂアクセス認証キー
		inMap.put(EZM0511C010CBSMsg.WEB_ACCSS_NSKEY, map.get(EZM0511C010CBSMsg.WEB_ACCSS_NSKEY));
		// ＳＹＳＩＤ
		inMap.put(EZM0511C010CBSMsg.SYSID, map.get(EZM0511C010CBSMsg.SYSID));
		// Ｗｅｂアクセス認証キー番号
		inMap.put(EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_NO, map.get(EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_NO));
		// Ｗｅｂアクセス認証キーパスワード
		inMap.put(EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_PWD, map.get(EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_PWD));
		// 認証ＮＧ回数
		inMap.put(EZM0511C010CBSMsg.NINSHO_NG_CNT, map.get(EZM0511C010CBSMsg.NINSHO_NG_CNT));
		// 有効期限年月日時分秒
		inMap.put(EZM0511C010CBSMsg.YK_KIGEN_DTM, map.get(EZM0511C010CBSMsg.YK_KIGEN_DTM));
		// メール送信年月日時分
		inMap.put(EZM0511C010CBSMsg.ML_SEND_YMDHM, map.get(EZM0511C010CBSMsg.ML_SEND_YMDHM));
		// 送信先メールアドレス
		inMap.put(EZM0511C010CBSMsg.SENDS_MLAD, map.get(EZM0511C010CBSMsg.SENDS_MLAD));
		// メール受信年月日時分秒
		inMap.put(EZM0511C010CBSMsg.MAIL_RCV_DTM, map.get(EZM0511C010CBSMsg.MAIL_RCV_DTM));
		// Ｗｅｂアクセス認証キー状態コード
		inMap.put(EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_STAT_CD, map.get(EZM0511C010CBSMsg.WEB_ACCSS_NSKEY_STAT_CD));
		// 更新年月日時分秒(更新前)
		inMap.put(EZM0511C010CBSMsg.UPD_DTM_BF, map.get(EZM0511C010CBSMsg.UPD_DTM));

	}

	/**
	 * 下りマッピング項目設定(マップ値)
	 * <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);
		// ソート(表示順、サービス契約番号の昇順)
		sortList(retlist);
		resultMap.put(retKey, retlist);

	}

	/**
	 * オプションリストのソート(表示順(料金プランサービス契約)(昇順)、サービス契約番号(昇順))
	 * <br>
	 * @param sortList
	 */
	private void sortList(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("dsp_jun").compareTo(map2.get("dsp_jun"));
				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 idoDiv 異動区分
	 * @param idoRsvDtlCd 異動予約詳細コード
	 * @param idoRsvStatCd 異動予約状態コード(複数可(カンマ区切り))
	 * @param svcKeiNo サービス契約番号
	 * @param svcKeiUwNo サービス契約内訳番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK1681B001(IRequestParameterReadWrite param, String fixedText,
			String idoDiv, String idoRsvDtlCd, String idoRsvStatCd, String svcKeiNo, String svcKeiUwNo) throws RequestParameterException
	{
		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// 異動区分
		inMap.put(EKK1681B001CBSMsg.KEY_IDO_DIV, idoDiv);
		// 異動予約詳細コード
		inMap.put(EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, idoRsvDtlCd);
		// 異動予約状態コード
		inMap.put(EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, idoRsvStatCd);
		// サービス契約番号
		inMap.put(EKK1681B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// サービス契約内訳番号
		inMap.put(EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUwNo);
	}

	/**
	 * 異動予約チェック(コース変更/住所変更・登録)処理です。
	 * 
	 * <br>
	 * @param list サービスIF結果明細
	 * @return true:OK / false:NG
	 */
	private boolean chkSvcKeiUwIdoRsv(List list)
	{
		// 判定結果
		boolean result = true;

		if(list == null || list.size() == 0)
		{
			// 明細が存在しない場合、OKで返却
			return result;
		}

		for (int i = 0; i < list.size(); i++)
		{
			HashMap childMap = (HashMap)list.get(i);
			if(childMap == null || childMap.size() == 0)
			{
				continue;
			}

			// 異動区分
			String idoDiv = (String)childMap.get(EKK1681B001CBSMsg1List.IDO_DIV);

			// 異動区分：(00009:コース変更 or 00019:住所変更・登録)
			if(TG_IDO_DIV.contains(idoDiv))
			{
				outDebugLog("異動予約チェック(コース変更/住所変更・登録)結果：NG" +
								" サービス契約内訳番号：" + (String)childMap.get(EKK1681B001CBSMsg1List.SVC_KEI_UCWK_NO));
				result = false;
				break;
			}
		}

		return result;
	}

	/**
	 * デバッグ出力処理です。
	 * 
	 * <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;
	}
	
	private String getNullToBlank(String value){
		return JFUBPCommon.isNull(value) ? "" : value;
	}
}
