/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUEoPremiumClubShokaiCC
*   ソースファイル名：JFUEoPremiumClubShokaiCC.java
*   作成者          ：富士通
*   日付            ：2016年06月03日
*＜機能概要＞
*   eoプレミアムクラブ施策申請条件一覧照会コモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*  v26.0.0     2016/06/03   FJ)横山    【ANK-2687-00-00】プレミアムサポート施策により新規作成
*  v35.0.0     2017/11/13   FJ)美濃原  【ANK-3336-01-00】GH端末申込画面のチケット利用メニュー表示制御対応
*  v51.0.0     2020/10/12   FJ)美濃原  【ANK-3918-00-00】プレクラ施策追加「インターネットサギウォール」「おうちの機器補償」
*  v66.0.0     2023/01/31   FJ)美濃原  【ANK-4307-00-00】【eo定期】プレミアムクラブリニューアル対応
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.math.BigDecimal;
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.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.base.CAANMsg;

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.EFU0401B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EFU0401B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351B503CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351B503CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK3051B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3051B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK3061B501CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK3061B501CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0050001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0050001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKKA0050003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKKA0050003CBSMsg1List;

/**
 * eoプレミアムクラブ施策申請条件一覧照会明細を取得する。
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUEoPremiumClubShokaiCC extends JFUBaseCC
{
	/* ===== パラメータ ===== */
	// 共通情報
	/** IN項目：ＫＥＹ＿ＳＹＳＩＤ */
	private static final String IN_PARAM_KEY_SYSID = "key_sysid";
	
	// eoプレミアムクラブ施策申請条件一覧照会明細取得処理 start--->
	/** IN項目：ＫＥＹ＿ｅｏプレミアムクラブ申請条件リスト */
	private static final String IN_PARAM_KEY_EO_PRCL_JK_LIST = "key_eo_premium_club_sns_jkn_list";
	
	/** IN項目：ＫＥＹ＿ｅｏプレミアムクラブ施策申請条件種別コード */
	private static final String IN_PARAM_KEY_EOPR_JK_SBT_CD = "key_eoprmcl_sskssjk_sbt_cd";

	/** IN項目：ＫＥＹ＿工事案件種別コード */
	private static final String IN_PARAM_KEY_KOJIAK_SBT_CD = "key_kojiak_sbt_cd";

	/** IN項目：ＫＥＹ＿宅内機器リスト */
	private static final String IN_PARAM_KEY_TAKNKIKI_LIST = "key_taknkiki_list";

	/** IN項目：ＫＥＹ＿宅内機器種別コード */
	private static final String IN_PARAM_KEY_TAKNKIKI_SBT_CD = "key_taknkiki_sbt_cd";

	/** IN項目：ＫＥＹ＿設置撤去フラグ */
	private static final String IN_PARAM_KEY_STC_TEKKYO_FLG = "key_stc_tekkyo_flg";

	/** IN項目：ＫＥＹ＿宅内機器異動コード */
	private static final String IN_PARAM_KEY_TAKNKIKI_IDO_CD = "key_taknkiki_ido_cd";

	/** IN項目：ＫＥＹ＿異動区分 */
	private static final String IN_PARAM_KEY_IDO_DIV = "key_ido_div";

	/** IN項目：ＫＥＹ＿異動予約詳細コード */
	private static final String IN_PARAM_KEY_IDO_RSV_DTL_CD = "key_ido_rsv_dtl_cd";

	/** IN項目：ＫＥＹ＿新料金グループコード */
	private static final String IN_PARAM_KEY_NEW_PRC_GRP_CD = "key_new_prc_grp_cd";

	/** IN項目：ＫＥＹ＿新料金コースコード */
	private static final String IN_PARAM_KEY_NEW_PCRS_CD = "key_new_pcrs_cd";

	/** IN項目：ＫＥＹ＿新料金プランコード */
	private static final String IN_PARAM_KEY_NEW_PPLAN_CD = "key_new_pplan_cd";

	/** IN項目：ＫＥＹ＿旧料金グループコード */
	private static final String IN_PARAM_KEY_OLD_PRC_GRP_CD = "key_old_prc_grp_cd";

	/** IN項目：ＫＥＹ＿旧料金コースコード */
	private static final String IN_PARAM_KEY_OLD_PCRS_CD = "key_old_pcrs_cd";

	/** IN項目：ＫＥＹ＿旧料金プランコード */
	private static final String IN_PARAM_KEY_OLD_PPLAN_CD = "key_old_pplan_cd";

	/** IN項目：ＫＥＹ＿一時支払料金番号 */
	private static final String IN_PARAM_KEY_TMP_PAY_PRC_NO = "key_tmp_pay_prc_no";

//	/** チケット申請履歴一覧照会実行フラグ */
//	private static final String IN_PARAM_SINSEI_SHOKAI_FLG = "key_sinsei_shokai_flg";
	/** 割引サービス一覧取得実行フラグ */
	private static final String IN_PARAM_WRIB_SHOKAI_FLG = "key_wrib_shokai_flg";
	/** オプションサービス契約取得実行フラグ */
	private static final String IN_PARAM_OPSVC_SHOKAI_FLG = "key_opsvc_shokai_flg";
	/** グレードアップ施策適用済判定処理実行フラグ */
	private static final String IN_PARAM_GRADE_UP_CHECK_FLG = "key_grade_up_check_flg";
	/** サービス契約番号 */
	private static final String IN_PARAM_SVC_KEI_NO = "key_svc_kei_no";
	/** ＫＥＹ＿画面ID */
	private static final String IN_PARAM_SCREEN_ID = "key_screen_id";

	/** OUT項目：ｅｏプレミアムクラブ申請条件リスト */
	private static final String OUT_EO_PRE_CLUB_SNS_JK_LIST = "eo_premium_club_sns_jkn_list";

	/** OUT項目：eoプレミアムクラブ施策コード */
	private static final String OUT_EOPRMCL_SISAK_CD = "eoprmcl_sisak_cd";

	/** OUT項目：eoプレミアムクラブ施策名 */
	private static final String OUT_EOPRMCL_SISAK_NM = "eoprmcl_sisak_nm";

	/** OUT項目：キャンペーン登録契機コード */
	private static final String OUT_CMP_ADD_OPTNTY_CD = "cmp_add_optnty_cd";

	/** OUT項目：工事案件連絡事項付加文言 */
	private static final String OUT_KOJIAK_RRK_JIKO_HUKA_MNGN = "kojiak_rrk_jiko_huka_mngn";

	/** OUT項目：必要ポイント数 */
	private static final String OUT_NECESSARY_POINT_CNT = "necessary_point_cnt";
	/** OUT項目：最低申込可能ランクコード */
	private static final String OUT_MIN_MKM_PSB_RANK_CD = "min_mkm_psb_rank_cd";
	/** OUT項目：割引サービスコード */
	private static final String OUT_WRIB_SVC_CD = "wrib_svc_cd";

	/** OUT項目：保有ｅｏポイント数 */
	private static final String OUT_HOYU_PT_SU = "hoyu_pt_su";
	/** OUT項目：ランクコード */
	private static final String OUT_RNK_CD = "rnk_cd";
	// eoプレミアムクラブ施策申請条件一覧照会明細取得処理 end <---

	// IN項目：チケット申請履歴一覧照会受付 start--->
	/** ＫＥＹ＿利用年 */
	private static final String IN_PARAM_KEY_USE_YEAR = "key_use_year";
	/** OUT項目：チケット申請履歴一覧 */
	private static final String OUT_SINS_LIST = "sins_list";
//	/** OUT項目：施策申請枝番 */
//	private static final String OUT_SISK_SINS_EDA_NO = "sisk_sins_eda_no";
	/** OUT項目：サービス契約番号 */
	private static final String OUT_SVC_KEI_NO = "svc_kei_no";
	/** OUT項目：施策コード */
	private static final String OUT_SISK_CD = "sisk_cd";
//	/** OUT項目：施策名称 */
//	private static final String OUT_SISK_NM = "sisk_nm";
//	/** OUT項目：備考1 */
//	private static final String OUT_NOTE_1 = "note_1";
//	/** OUT項目：備考2 */
//	private static final String OUT_NOTE_2 = "note_2";
//	/** OUT項目：備考3 */
//	private static final String OUT_NOTE_3 = "note_3";
//	/** OUT項目：利用チケット枚数 */
//	private static final String OUT_USE_TIC_NUM = "use_tic_num";
	/** OUT項目：施策ステータスコード */
	private static final String OUT_SISK_STS_CD = "sisk_sts_cd";
//	/** OUT項目：施策ステータス名称 */
//	private static final String OUT_SISK_STS_NM = "sisk_sts_nm";
	/** OUT項目：処理日 */
	private static final String OUT_SHORI_YMD = "shori_ymd";
//	/** OUT項目：処理日時 */
//	private static final String OUT_SHORI_YMD_HMS = "shori_ymd_hms";
//	/** OUT項目：更新者名称 */
//	private static final String OUT_UPD_USER_NM = "upd_user_nm";
	// チケット申請履歴一覧照会受付 end <---

	/** OUT項目：割引サービス契約一覧照会（サービス契約番号）明細 */
	private static final String OUT_WRIB_LIST = "EKK0451B002CBSMsg1List";
	/** OUT項目：オプションサービス契約一覧照会（サービス契約番号）明細 */
	private static final String OUT_OP_SVC_LIST = "EKK0351B503CBSMsg1List";
	/** OUT項目：eoプレミアムクラブ施策複合リスト（画面表示）EFU0401B010 */
	private static final String OUT_SISAK_HUKUGO_LIST = "sisak_hukugo_list";
	/** OUT項目：eoプレミアムクラブ施策一覧照会明細（割引マッピング）EKK3051B010 */
	private static final String OUT_SISAK_WRIB_MAPPING_LIST = "sisak_wrib_mapping_list";
	/** OUT項目：アップグレード施策適用済判定 true：チェックOK、false：チェックNG */
	private static final String OUT_UPGRADE_SISAK_CHECK = "upgrade_sisak_check";

	// 共通情報
	/** OUT項目：APIエラーフラグ */
	private static final String OUT_API_ERR_FLG = "api_err_flg";

	/** リターンコード：正常値 */
	private static final String RETURN_CD_OK = "0";

	/** APIエラーフラグ：正常値 */
	private static final String API_ERR_FLG_OK = "0";
	
	/** APIエラーフラグ：エラー値 */
	private static final String API_ERR_FLG_NG = "1";
	
	/** CBSMsgフォーマット */
	private static final String FMT_CBSMSG = "eo.ejb.cbs.cbsmsg.%sCBSMsg";


	/* ■□ お客様一意照会SC ■□ */
	/** テンプレートID(お客様一意照会) */
	private static final String TEMPLATE_ID_CUST_UNIQUE = "ECK0011A010";
	
	/** テンプレートID(お客様一意照会明細) */
	private static final String TEMPLATE_ID_CUST_UNIQUE_DETAIL = ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST;
	
	/** IN項目リスト(お客様一意照会) */
	private static final List<String> IN_COLUMN_LIST_CUST_UNIQUE =
			Arrays.asList(ECK0011A010CBSMsg.KEY_SYSID, ECK0011A010CBSMsg.KEY_GENE_ADD_DTM, ECK0011A010CBSMsg.KEY_RSV_APLY_YMD);
	
	/** 関連チェックエラー項目(お客様一意照会) */
	private static final String ERROR_COLUMN_CUST_UNIQUE = ECK0011A010CBSMsg.KEY_SYSID_ERR;
	
	/** SC実行結果取得キー(お客様一意照会) */
	private static final String TEMP_TEMPLATE_KEY_CUST_UNIQUE = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_CUST_UNIQUE + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ お客様ランク情報一意照会SC ■□ */
	/** テンプレートID(お客様ランク情報一意照会) */
	private static final String TEMPLATE_ID_CST_RNK_INF_UNIQUE = "EKKA0050001";

	/* ■□ eoプレミアムクラブ施策申請条件一覧照会SC ■□ */
	/** テンプレートID(eoプレミアムクラブ施策申請条件一覧照会) */
	private static final String TEMPLATE_ID_EPPRMCL_SSKSSJK = "EKK3061B501";

	/** テンプレートID(eoプレミアムクラブ施策申請条件一覧照会.明細) */
	private static final String TEMPLATE_ID_EPPRMCL_JK_DTL = EKK3061B501CBSMsg.EKK3061B501CBSMSG1LIST;

	/** IN項目リスト(eoプレミアムクラブ施策申請条件一覧照会) */
	private static final List<String> IN_COLUMN_LIST_EPPRMCL_SSKSSJK = Arrays.asList(EKK3061B501CBSMsg.KEY_EOPRMCL_SSKSSJK_SBT_CD,
			EKK3061B501CBSMsg.KEY_EOPRMCL_SSKSSJK_SBT_CD, EKK3061B501CBSMsg.KEY_KOJIAK_SBT_CD,  EKK3061B501CBSMsg.KEY_TAKNKIKI_SBT_CD,
			EKK3061B501CBSMsg.KEY_STC_TEKKYO_FLG, EKK3061B501CBSMsg.KEY_TAKNKIKI_IDO_CD, EKK3061B501CBSMsg.KEY_IDO_DIV,
			EKK3061B501CBSMsg.KEY_IDO_RSV_DTL_CD, EKK3061B501CBSMsg.KEY_NEW_PRC_GRP_CD, EKK3061B501CBSMsg.KEY_NEW_PCRS_CD,
			EKK3061B501CBSMsg.KEY_NEW_PPLAN_CD, EKK3061B501CBSMsg.KEY_OLD_PRC_GRP_CD, EKK3061B501CBSMsg.KEY_OLD_PCRS_CD,
			EKK3061B501CBSMsg.KEY_OLD_PPLAN_CD, EKK3061B501CBSMsg.KEY_TMP_PAY_PRC_NO, EKK3061B501CBSMsg.KEY_ZAN_TICKET_CNT,
			EKK3061B501CBSMsg.KEY_SCREEN_ID, EKK3061B501CBSMsg.KEY_RNK_CD, EKK3061B501CBSMsg.KEY_HOYU_PT_SU);

	/** 関連チェックエラー項目(eoプレミアムクラブ施策申請条件一覧照会) */
	private static final String ERROR_COLUMN_EPPRMCL_SSKSSJK  = "key_eoprmcl_sskssjk_sbt_cd_err";

	/** SC実行結果取得キー(eoプレミアムクラブ施策申請条件一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_EOPRCL_JK_ST = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EPPRMCL_SSKSSJK
																			+ TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 割引サービス契約一覧照会（サービス契約番号））SC ■□ */
	/** 割引サービス契約一覧照会（サービス契約番号）） テンプレートID*/
	private static final String TEMPLATE_ID_EKK0451B002 = "EKK0451B002";
	/** テンプレートID(割引サービス契約一覧照会（サービス契約番号））明細) */
	private static final String TEMPLATE_ID_EKK0451B002_DETAIL = EKK0451B002CBSMsg.EKK0451B002CBSMSG1LIST;
	/** IN項目リスト(割引サービス契約一覧照会（サービス契約番号））) */
	private static final List<String> IN_COLUMN_LIST_EKK0451B002 = Arrays.asList(EKK0451B002CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(割引サービス契約一覧照会（サービス契約番号））) */
	private static final String ERROR_COLUMN_EKK0451B002 = EKK0451B002CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(割引サービス契約一覧照会（サービス契約番号））) */
	private static final String TEMP_TEMPLATE_KEY_EKK0451B002 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0451B002 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ チケット申請履歴一覧照会SC ■□ */
	/** テンプレートID(チケット申請履歴一覧照会) */
	private static final String TEMPLATE_ID_TICKET_SINSEI_INQ = "EKKA0050003";

	// ■現オプションサービス契約情報一覧照会(ネット)
	/** テンプレートID */
	private static final String TEMP_ID_EKK0351B503 = "EKK0351B503";
	/** テンプレートID(明細) */
	private static final String TEMP_DTL_EKK0351B503 = EKK0351B503CBSMsg.EKK0351B503CBSMSG1LIST;
	/** IN項目リスト */
	private static final List<String> IN_COL_LIST_EKK0351B503 = Arrays.asList(EKK0351B503CBSMsg.KEY_SVC_KEI_NO, EKK0351B503CBSMsg.KEY_SYSID);
	/** SC実行結果取得キー(サービス契約一覧照会（SYSID）3) */
	private static final String TEMP_TEMP_KEY_EKK0351B503 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0351B503 + TEMP_TEMPLATE_PRIFIX_SEP;
	/** 関連チェックエラー項目 */
	private static final String ERR_COL_EKK0351B503 = EKK0351B503CBSMsg.KEY_SVC_KEI_NO_ERR;

	/* ■□ eoプレミアムクラブ施策パターン一覧照会SC ■□ */
	/** テンプレートID(eoプレミアムクラブ施策パターン一覧照会) */
	private static final String TEMP_ID_EFU0401B010 = "EFU0401B010";
	/** テンプレートID(eoプレミアムクラブ施策パターン一覧照会)明細 */
	private static final String TEMP_DTL_EFU0401B010 = EFU0401B010CBSMsg.EFU0401B010CBSMSG1LIST;
	/** IN項目リスト(eoプレミアムクラブ施策パターン一覧照会) */
	private static final List<String> IN_COL_LIST_EFU0401B010 = Arrays.asList(EFU0401B010CBSMsg.KEY_SCREEN_ID, EFU0401B010CBSMsg.KEY_SSKPTN_SBT_CD);
	/** 関連チェックエラー項目(eoプレミアムクラブ施策パターン一覧照会（各種通信機器予約データ存在チェック） */
	private static final String ERR_COL_EFU0401B010 = EFU0401B010CBSMsg.KEY_SCREEN_ID_ERR;
	/** SC実行結果取得キー(eoプレミアムクラブ施策パターン一覧照会（各種通信機器予約データ存在チェック) */
	private static final String TEMP_TEMP_KEY_EFU0401B010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EFU0401B010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ eoプレミアムクラブ施策一覧照会（割引マッピング）SC ■□ */
	/** テンプレートID(eoプレミアムクラブ施策一覧照会（割引マッピング）) */
	private static final String TEMP_ID_EKK3051B010 = "EKK3051B010";
	/** テンプレートID(eoプレミアムクラブ施策一覧照会（割引マッピング）)明細 */
	private static final String TEMP_DTL_EKK3051B010 = EKK3051B010CBSMsg.EKK3051B010CBSMSG1LIST;
	/** IN項目リスト(eoプレミアムクラブ施策一覧照会（割引マッピング）) */
	private static final List<String> IN_COL_LIST_EKK3051B010 = new ArrayList<String>();
	/** 関連チェックエラー項目(eoプレミアムクラブ施策一覧照会（割引マッピング）（各種通信機器予約データ存在チェック） */
	private static final String ERR_COL_EKK3051B010 = EKK3051B010CBSMsg.SEARCH_ERR_FLG_ERR;
	/** SC実行結果取得キー(eoプレミアムクラブ施策一覧照会（割引マッピング）) */
	private static final String TEMP_TEMP_KEY_EKK3051B010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK3051B010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/** 実行フラグ */
	private static final String FLG_ON = "1";

	/** 割引無効「割引サービス契約ステータス」(910:解約済、920：キャンセル済) */
	private static final List<String> WRIB_SVC_KEI_STAT_MUKO = Arrays.asList(JFUStrConst.CD00055_910, JFUStrConst.CD00055_920);

	/** 「オプションサービス契約ステータス」(910:解約済、920：キャンセル済) */
	private static final List<String> OP_SVC_KEI_STAT_MUKO = Arrays.asList(JFUStrConst.CD00037_910, JFUStrConst.CD00037_920);

	// アップグレード施策適用済判定
	/** アップグレード施策適用済判定マップキー(JKKUpgradeSisakAppliedJudgementCC) */
	private static final String CHECK_MAP_KEY2 = "CHECKCC2";

	/**
	 *  eoプレミアムクラブ施策申請条件一覧照会実行処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	private IRequestParameterReadWrite eoPremiumClubShokai(SessionHandle handle, 
			IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// 結果リスト（SIFの戻り設定用）
		ArrayList sifResultList = new ArrayList();
		// 結果リスト（結果マップ格納用）
		ArrayList mapResultList = new ArrayList();

		// 結果マップ
		HashMap<String, Object> resultMap = new HashMap<String, Object>();

		// -----------------------------------------------------
		// ■リクエストパラメータ取得
		// -----------------------------------------------------
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ランクコード
		String rnk_cd = JFUStrConst.EMPTY;
		// 保有ｅｏポイント数
		String hoyu_pt_su = JFUStrConst.EMPTY;

		String keySysid = JFUStrConst.EMPTY;
		// ＫＥＹ＿ＳＹＳＩＤ
		keySysid = (String)inMap.get(IN_PARAM_KEY_SYSID);
		// ＫＥＹ＿画面ID
		String key_screen_id = (String)inMap.get(IN_PARAM_SCREEN_ID);
		// -----------------------------------------------------
		// ■お客様一意照会 start
		// -----------------------------------------------------

		// ●お客様一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_CUST_UNIQUE);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapCustUniSearch(param, fixedText, keySysid);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_CUST_UNIQUE, TEMPLATE_ID_CUST_UNIQUE_DETAIL, IN_COLUMN_LIST_CUST_UNIQUE, ERROR_COLUMN_CUST_UNIQUE);
		// 会員種別コード
		String kaiinSbtCd = JFUStrConst.EMPTY;
		if(getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_CUST_UNIQUE, TEMPLATE_ID_CUST_UNIQUE_DETAIL, ECK0011A010CBSMsg1List.MEMBER_SBT_CD, 0) != null)
		{
			kaiinSbtCd = getTemplateListValue(inMap,
					getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_CUST_UNIQUE), TEMPLATE_ID_CUST_UNIQUE_DETAIL, ECK0011A010CBSMsg1List.MEMBER_SBT_CD, 0);
		}
		// eonetID未移行フラグ
		String eonetidMiikoFlg = JFUStrConst.CD00602_0;
		if(!JFUBPCommon.isNull(getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_CUST_UNIQUE), TEMPLATE_ID_CUST_UNIQUE_DETAIL, 
					ECK0011A010CBSMsg1List.EONETID_MI_IKO_FLG, 0)))
		{
			eonetidMiikoFlg =
				getTemplateListValue(inMap,
						getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_CUST_UNIQUE), TEMPLATE_ID_CUST_UNIQUE_DETAIL, ECK0011A010CBSMsg1List.EONETID_MI_IKO_FLG, 0);
		}
		// -----------------------------------------------------
		// ■お客様一意照会 end
		// -----------------------------------------------------

		// -----------------------------------------------------
		// ■お客様ランク情報一意照会 start
		// -----------------------------------------------------
		// お客様ランク情報一意照会の上りマッピング

		// SC呼び出し部品のインスタンス生成
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		HashMap<String, Object> retMap = new HashMap<String, Object>();
		Object[][] ekka0050001In =
				{ { EKKA0050001CBSMsg.TEMPLATEID, TEMPLATE_ID_CST_RNK_INF_UNIQUE }, { EKKA0050001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1 },
						{ EKKA0050001CBSMsg.KEY_SYSID, keySysid }, { EKKA0050001CBSMsg.KEY_KAIIN_SBT_CD, kaiinSbtCd },
						{ EKKA0050001CBSMsg.KEY_EONETID_MIIKO_FLG, eonetidMiikoFlg } };
		// サービスIF実行
		CAANMsg ekka0050001Out = callSC(handle, scCall, param, fixedText, ekka0050001In, retMap);
		// お客様ランク情報一意照会明細
		CAANMsg[] ekka0050001OutList = ekka0050001Out.getCAANMsgList(EKKA0050001CBSMsg.EKKA0050001CBSMSG1LIST);

		String checkHoyuCnt = null;
		if (ekka0050001OutList != null && ekka0050001OutList.length > 0)
		{
			rnk_cd = JFUBPCommon.nvl(ekka0050001OutList[0].getString(EKKA0050001CBSMsg1List.RNK_CD), JFUStrConst.EMPTY);
			hoyu_pt_su = JFUBPCommon.nvl(ekka0050001OutList[0].getString(EKKA0050001CBSMsg1List.TOTAL_HOYU_PT_SU), "0");
			checkHoyuCnt = hoyu_pt_su;
		}
		// リターンコード取得
		Object returnCode = retMap.get(JCMConstants.RET_CD_INT_KEY);

		// -----------------------------------------------------
		// ■お客様ランク情報一意照会 end
		// -----------------------------------------------------

		if(RETURN_CD_OK.equals(returnCode))
		{
			// APIエラーフラグを設定
			resultMap.put(OUT_API_ERR_FLG, API_ERR_FLG_OK);

			// ＫＥＹ＿ｅｏプレミアムクラブ申請条件リストが存在かつ保有eoポイント数が取得できている場合
			if(inMap.get(IN_PARAM_KEY_EO_PRCL_JK_LIST) != null && !JFUBPCommon.isNull(checkHoyuCnt))
			{
				// 保有ｅｏポイント数を設定
				resultMap.put(OUT_HOYU_PT_SU, hoyu_pt_su);
				// ランクコードを設定
				resultMap.put(OUT_RNK_CD, rnk_cd);
				// 「保有ｅｏポイント数」が0より大きい場合、処理を続行
				if(Long.parseLong(checkHoyuCnt) > 0)
				{
					ArrayList<HashMap<String, Object>> eoPremiumClubList = (ArrayList<HashMap<String, Object>>)inMap.get(IN_PARAM_KEY_EO_PRCL_JK_LIST);

					// ＫＥＹ＿ｅｏプレミアムクラブ申請条件リストの件数処理を実行する
					for(int eoPCListCount = 0; eoPCListCount < eoPremiumClubList.size(); eoPCListCount++)
					{
						HashMap childMap = eoPremiumClubList.get(eoPCListCount);
						// eoプレミアムクラブ施策申請条件一覧照会のIN項目チェック
						if(!JFUBPCommon.isNull(childMap.get(IN_PARAM_KEY_EOPR_JK_SBT_CD)))
						{
							// -----------------------------------------------------
							// ■eoプレミアムクラブ施策申請条件一覧照会 start
							// -----------------------------------------------------
							// ●eoプレミアムクラブ施策申請条件一覧照会
							// ユーザデータ初期化
							initData(param, fixedText, IN_COLUMN_LIST_EPPRMCL_SSKSSJK);
							// 検索エラーなし設定
							ignoreSearchError(param, fixedText);
							// 上りマッピング
							setInMapEoPrCSSSSearch(param, fixedText, childMap, key_screen_id, rnk_cd, hoyu_pt_su);
							// サービスIF実行
							executeSC(handle, param, fixedText, TEMPLATE_ID_EPPRMCL_SSKSSJK, TEMPLATE_ID_EPPRMCL_JK_DTL, 
									IN_COLUMN_LIST_EPPRMCL_SSKSSJK, ERROR_COLUMN_EPPRMCL_SSKSSJK);
							// 下りマッピング
							getInMapEoPrCSSSSearch(param, fixedText, sifResultList);
							// -----------------------------------------------------
							// ■eoプレミアムクラブ施策申請条件一覧照会 end
							// -----------------------------------------------------
						}
					}
				}
			}
		}
		else
		{
			// リターンコードが"0000"以外の場合
			// APIエラーフラグに「エラー」を設定
			resultMap.put(OUT_API_ERR_FLG, API_ERR_FLG_NG);
		}

		if(sifResultList.size() > 0)
		{
			// 並べ替え処理
			// 必要ポイント数、eoプレミアムクラブ施策名を昇順でソート
			Collections.sort(sifResultList, new Comparator<Map<String, String>>()
			{

				/**
				 * ｅｏプレミアムクラブ申請条件リストの並び替え
				 * 
				 * <br>
				 * ｅｏプレミアムクラブ申請条件リストを「必要ポイント数」、
				 * eoプレミアムクラブ施策名順（昇順）で並び替えます。
				 * @param map1 ｅｏプレミアムクラブ申請条件の明細が格納されているMap
				 * @param map2 ｅｏプレミアムクラブ申請条件の明細が格納されているMap
				 * @return 比較結果
				 */
				@Override
				public int compare(Map<String, String> map1, Map<String, String> map2)
				{
					// 「必要ポイント数」で並び替える(昇順)
					BigDecimal map1Num = new BigDecimal(map1.get(OUT_NECESSARY_POINT_CNT));
					BigDecimal map2Num = new BigDecimal(map2.get(OUT_NECESSARY_POINT_CNT));
					if(map1Num.compareTo(map2Num) == 0)
					{
						// 「必要ポイント数」が同値の場合、eoプレミアムクラブ施策名で並び替える
						return map1.get(OUT_EOPRMCL_SISAK_NM).compareTo(map2.get(OUT_EOPRMCL_SISAK_NM));
					}
					else
					{
						return map1Num.compareTo(map2Num);
					}
				}
			});

			// 重複削除処理
			for(int i = 0; i < sifResultList.size(); i++)
			{
				boolean doubleFlg = true;
				int resultCount = mapResultList.size();
				HashMap resultChildMap = (HashMap)sifResultList.get(i);
				
				if(i > 0)
				{
					for(int j = 0; j < resultCount; j++)
					{
						HashMap checkChildMap = (HashMap)mapResultList.get(j);
						boolean sisakCdFlg = false;
						boolean cmpAddOptntyCdFlg = false;
						boolean sisakNmFlg = false;
						boolean kojiakRrkJikoFlg = false;
						boolean necessaryTicketCntFlg = false;
						boolean necessaryPointCntFlg = false;
						// eoプレミアムクラブ施策コードチェック
						if(checkChildMap.get(OUT_EOPRMCL_SISAK_CD) != null)
						{
							if(checkChildMap.get(OUT_EOPRMCL_SISAK_CD).equals(resultChildMap.get(OUT_EOPRMCL_SISAK_CD)))
							{
								sisakCdFlg = true;
							}
						}
						else
						{
							if(resultChildMap.get(OUT_EOPRMCL_SISAK_CD) == null)
							{
								sisakCdFlg = true;
							}
						}
						// eoプレミアムクラブ施策名チェック
						if(checkChildMap.get(OUT_EOPRMCL_SISAK_NM) != null)
						{
							if(checkChildMap.get(OUT_EOPRMCL_SISAK_NM).equals(
									resultChildMap.get(OUT_EOPRMCL_SISAK_NM)))
							{
								sisakNmFlg = true;
							}
						}
						else
						{
							if(resultChildMap.get(OUT_EOPRMCL_SISAK_NM) == null)
							{
								sisakNmFlg = true;
							}
						}
						// キャンペーン登録契機コードチェック
						if(checkChildMap.get(OUT_CMP_ADD_OPTNTY_CD) != null)
						{
							if(checkChildMap.get(OUT_CMP_ADD_OPTNTY_CD).equals(
									resultChildMap.get(OUT_CMP_ADD_OPTNTY_CD)))
							{
								cmpAddOptntyCdFlg = true;
							}
						}
						else
						{
							if(resultChildMap.get(OUT_CMP_ADD_OPTNTY_CD) == null)
							{
								cmpAddOptntyCdFlg = true;
							}
						}
						// 工事案件連絡事項付加文言チェック
						if(checkChildMap.get(OUT_KOJIAK_RRK_JIKO_HUKA_MNGN) != null)
						{
							if(checkChildMap.get(OUT_KOJIAK_RRK_JIKO_HUKA_MNGN).equals(
									resultChildMap.get(OUT_KOJIAK_RRK_JIKO_HUKA_MNGN)))
							{
								kojiakRrkJikoFlg = true;
							}
						}
						else
						{
							if(resultChildMap.get(OUT_KOJIAK_RRK_JIKO_HUKA_MNGN) == null)
							{
								kojiakRrkJikoFlg = true;
							}
						}
						// 必要ポイント数チェック
						if(checkChildMap.get(OUT_NECESSARY_POINT_CNT) != null)
						{
							if(checkChildMap.get(OUT_NECESSARY_POINT_CNT).equals(
									resultChildMap.get(OUT_NECESSARY_POINT_CNT)))
							{
								necessaryPointCntFlg = true;
							}
						}
						else
						{
							if(resultChildMap.get(OUT_NECESSARY_POINT_CNT) == null)
							{
								necessaryPointCntFlg = true;
							}
						}

						if(sisakCdFlg && cmpAddOptntyCdFlg)
						{
							if(sisakNmFlg && kojiakRrkJikoFlg && necessaryTicketCntFlg && necessaryPointCntFlg)
							{
								// 既に同一の情報が存在する場合、false
								doubleFlg = false;
							}
						}
					}

				}
				if(doubleFlg)
				{
					mapResultList.add(new HashMap());
					HashMap mapChildMap = (HashMap)mapResultList.get(i);
					// eoプレミアムクラブ施策コード
					mapChildMap.put(OUT_EOPRMCL_SISAK_CD, resultChildMap.get(OUT_EOPRMCL_SISAK_CD));

					// eoプレミアムクラブ施策名
					mapChildMap.put(OUT_EOPRMCL_SISAK_NM, resultChildMap.get(OUT_EOPRMCL_SISAK_NM));

					// キャンペーン登録契機コード
					mapChildMap.put(OUT_CMP_ADD_OPTNTY_CD, resultChildMap.get(OUT_CMP_ADD_OPTNTY_CD));

					// 工事案件連絡事項付加文言
					mapChildMap.put(OUT_KOJIAK_RRK_JIKO_HUKA_MNGN, resultChildMap.get(OUT_KOJIAK_RRK_JIKO_HUKA_MNGN));

					// 必要ポイント数
					mapChildMap.put(OUT_NECESSARY_POINT_CNT, resultChildMap.get(OUT_NECESSARY_POINT_CNT));
				}
			}

			if(mapResultList.size() > 0)
			{
				// ｅｏプレミアムクラブ申請条件リスト を設定
				resultMap.put(OUT_EO_PRE_CLUB_SNS_JK_LIST, mapResultList);
			}
			ArrayList<HashMap<String, Object>> resultKinoList = getEoprmclSskPtnList(handle, param, fixedText, key_screen_id);
			if (resultKinoList.size() > 0)
			{
				// eoプレミアムクラブ施策複合リスト（画面表示） を設定
				resultMap.put(OUT_SISAK_HUKUGO_LIST, resultKinoList);
			}
			ArrayList<HashMap<String, String>> resultWribList = getEKK3051B010(handle, param, fixedText, key_screen_id);
			if (resultWribList.size() > 0)
			{
				// eoプレミアムクラブ施策一覧照会明細（割引マッピング） を設定
				resultMap.put(OUT_SISAK_WRIB_MAPPING_LIST, resultWribList);
			}
			
		}

		//取得結果をユーザデータに設定する
		param.setData(fixedText, resultMap);

		return param;
	}

	/**
	 *  eoプレミアムクラブ施策申請条件一覧及び申請状況取得処理。
	 * 
	 * <br><br>
	 * パラメータの実行フラグにより、
	 * チケット申請履歴一覧照会、割引サービス契約、オプションサービス契約の情報も取得する。
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	public IRequestParameterReadWrite eoPremiumClubWrib(SessionHandle handle, 
			IRequestParameterReadWrite param, String fixedText) throws Throwable
	{

		// -----------------------------------------------------
		// ■リクエストパラメータ取得
		// -----------------------------------------------------
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		if (inMap == null || inMap.size() ==0) {
			// 処理を抜ける
			return param;
		}

		// ＫＥＹ＿ＳＹＳＩＤ
		String keySysid = (String)inMap.get(IN_PARAM_KEY_SYSID);
		// ＫＥＹ＿サービス契約番号
		String keySvcKeiNo = (String)inMap.get(IN_PARAM_SVC_KEI_NO);

		// ■■■■■ eoプレミアムクラブ施策申請条件一覧照会 ■■■■■
		eoPremiumClubShokai(handle, param, fixedText);
		HashMap<String, Object> resultMap = (HashMap<String, Object>)param.getData(fixedText);

		// ■■■■■ チケット申請履歴一覧照会受付取得処理 ■■■■■
		if (isExecWrib(inMap) && API_ERR_FLG_OK.equals(resultMap.get(OUT_API_ERR_FLG)))
		{
			eoTicketSinseiRireki(handle, param, inMap, fixedText);
			HashMap<String, Object> resultMap2 = (HashMap<String, Object>)param.getData(fixedText);
			if (resultMap2 != null)
			{
				resultMap.put(OUT_SINS_LIST, resultMap2.get(OUT_SINS_LIST));
				resultMap.put(OUT_API_ERR_FLG, resultMap2.get(OUT_API_ERR_FLG));
			}
		}

		if (API_ERR_FLG_OK.equals(resultMap.get(OUT_API_ERR_FLG)))
		{
			if (isExecWrib(inMap))
			{
				// ■■■■■ 割引サービス契約一覧照会（サービス契約番号）取得処理 ■■■■■
				ArrayList<HashMap<String, Object>> resultList = getWribSveKeiList(handle, param, fixedText, keySvcKeiNo);
				if (resultList != null)
				{
					resultMap.put(OUT_WRIB_LIST, resultList);
				}
			}
			if (isExecOpSvcKei(inMap))
			{
				// ■■■■■ オプションサービス契約一覧照会（サービス契約番号）取得処理 ■■■■■
				ArrayList<HashMap<String, Object>> resultList = getOpSvcKeiList(handle, param, fixedText, keySysid, keySvcKeiNo);
				if (resultList != null)
				{
					resultMap.put(OUT_OP_SVC_LIST, resultList);
				}
			}
			if (isGradeUpCheck(inMap))
			{
				// ■■■■■ アップグレード施策適用済判定処理 ■■■■■
				// JKKUpgradeSisakAppliedJudgementCCのマップを設定
				HashMap<String, Object> checkCCMap2 = new HashMap<String, Object>();
				param.setData(CHECK_MAP_KEY2, checkCCMap2);
				checkCCMap2.put("key_sysid", keySysid);

				// アップグレード施策適用済判定処理を行う。
				JKKUpgradeSisakAppliedJudgementCC cc = new JKKUpgradeSisakAppliedJudgementCC();
				param = cc.upgradeSisakAppliedJudge(handle, param, CHECK_MAP_KEY2);

				// 実行結果を取得する。
				Map gradeResultMap = (Map)param.getData(CHECK_MAP_KEY2);
				boolean returnFlg = (Boolean)gradeResultMap.get("result");
				resultMap.put(OUT_UPGRADE_SISAK_CHECK, returnFlg);
			}
		}

		//取得結果をユーザデータに設定する
		param.setData(fixedText, resultMap);

		return param;

	}
	/**
	 *  チケット申請履歴一覧照会受付取得処理です。
	 * 
	 * <br>
	 * FUIFE161_チケット申請履歴一覧照会受付
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param inMap パラメータ：キー情報
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	private IRequestParameterReadWrite eoTicketSinseiRireki(SessionHandle handle, 
			IRequestParameterReadWrite param, HashMap<String, Object> inMap, String fixedText) throws Throwable
	{
		// 結果リスト（結果マップ格納用）
		ArrayList<HashMap<String, Object>> sinsList = new ArrayList<HashMap<String, Object>>();

		// 結果マップ
		HashMap<String, Object> resultMap = new HashMap<String, Object>();

		// ＫＥＹ＿ＳＹＳＩＤ
		String keySysid = (String)inMap.get(IN_PARAM_KEY_SYSID);
		// ＫＥＹ＿利用年
		String keyUseYear = (String)inMap.get(IN_PARAM_KEY_USE_YEAR);

		// -----------------------------------------------------
		// ■チケット申請履歴一覧照会 (API) start
		// -----------------------------------------------------
		// チケット申請履歴一覧照会の上りマッピング  EKKA0050003

		// SC呼び出し部品のインスタンス生成
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		HashMap<String, Object> retMap = new HashMap<String, Object>();
		Object[][] ekka0050003In =
				{ { EKKA0050003CBSMsg.TEMPLATEID, TEMPLATE_ID_TICKET_SINSEI_INQ }, { EKKA0050003CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1 },
						{ EKKA0050003CBSMsg.KEY_SYSID, keySysid }, { EKKA0050003CBSMsg.KEY_USE_YEAR, keyUseYear } };
		// サービスIF実行
		CAANMsg ekka0050003Out = callSC(handle, scCall, param, fixedText, ekka0050003In, retMap);
		CAANMsg[] ekka0050003OutList = ekka0050003Out.getCAANMsgList(EKKA0050003CBSMsg.EKKA0050003CBSMSG1LIST);
		// リターンコード取得
		Object returnCode = retMap.get(JCMConstants.RET_CD_INT_KEY);

		// -----------------------------------------------------
		// ■チケット申請履歴一覧照会 (API) end
		// -----------------------------------------------------

		if (RETURN_CD_OK.equals(returnCode))
		{
			// APIエラーフラグを設定
			resultMap.put(OUT_API_ERR_FLG, API_ERR_FLG_OK);

			// チケット申請履歴一覧照会明細が取得できている場合
			if (ekka0050003OutList != null && ekka0050003OutList.length > 0)
			{
				for (int idx = 0; idx < ekka0050003OutList.length; idx++)
				{
					HashMap childMap = ekka0050003OutList[idx].getMsgData();
					HashMap<String, Object> resultChildMap = new HashMap();

					// ※項目設定 null時空文字設定
					// サービス契約番号
					resultChildMap.put(OUT_SVC_KEI_NO, nullToEmpty(childMap.get(EKKA0050003CBSMsg1List.SVC_KEI_NO)));
					// 施策コード
					resultChildMap.put(OUT_SISK_CD, nullToEmpty(childMap.get(EKKA0050003CBSMsg1List.SISK_CD)));
					// 施策ステータスコード
					resultChildMap.put(OUT_SISK_STS_CD, nullToEmpty(childMap.get(EKKA0050003CBSMsg1List.SISK_STS_CD)));
					// 処理日
					resultChildMap.put(OUT_SHORI_YMD, nullToEmpty(childMap.get(EKKA0050003CBSMsg1List.SHORI_YMD)));
					sinsList.add(resultChildMap);
				}

			}
		}
		else
		{
			// リターンコードが"0000"以外の場合
			// APIエラーフラグに「エラー」を設定
			resultMap.put(OUT_API_ERR_FLG, API_ERR_FLG_NG);
		}

		// チケット申請履歴一覧 を設定
		resultMap.put(OUT_SINS_LIST, sinsList);

		//取得結果をユーザデータに設定する
		param.setData(fixedText, resultMap);

		return param;
	}

	/**
	 * 上りマッピング項目設定(お客様一意照会）です
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysId SYSID
	 * @throws RequestParameterException
	 */
	private void setInMapCustUniSearch(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));
	}

	 /** 上りマッピング項目設定(eoプレミアムクラブ施策申請条件一覧照会）です
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param eoPremiumClubSndJknMap ＫＥＹ＿ｅｏプレミアムクラブ申請条件リストのマップ
	 * @param screen_id 画面ID
	 * @param rnk_cd ランクコード
	 * @param hoyu_pt_su 保有ｅｏポイント数
	 * @throws RequestParameterException
	 */
	private void setInMapEoPrCSSSSearch(IRequestParameterReadWrite param, String fixedText, HashMap eoPremiumClubSndJknMap, 
				String screen_id, String rnk_cd, String hoyu_pt_su) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		
		// ＫＥＹ＿ｅｏプレミアムクラブ施策申請条件種別コード
		if(!JFUBPCommon.isNull(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_EOPR_JK_SBT_CD)))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_EOPRMCL_SSKSSJK_SBT_CD, eoPremiumClubSndJknMap.get(IN_PARAM_KEY_EOPR_JK_SBT_CD));
		}
		// ＫＥＹ＿工事案件種別コード
		if(!JFUBPCommon.isNull(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_KOJIAK_SBT_CD)))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_KOJIAK_SBT_CD, eoPremiumClubSndJknMap.get(IN_PARAM_KEY_KOJIAK_SBT_CD));
		}
		// ＫＥＹ_宅内機器リスト
		if(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_TAKNKIKI_LIST) != null)
		{
			ArrayList kikiList = (ArrayList)eoPremiumClubSndJknMap.get(IN_PARAM_KEY_TAKNKIKI_LIST);
			StringBuffer kikiSbt = new StringBuffer();
			StringBuffer stcTekkyo = new StringBuffer();
			StringBuffer kikiIdo = new StringBuffer();
			for(int i = 0; i < kikiList.size(); i++)
			{
				HashMap kikiMap = (HashMap)kikiList.get(i);
				if(i > 0)
				{
					kikiSbt.append(",");
					stcTekkyo.append(",");
					kikiIdo.append(",");
				}

				if(kikiMap.get(IN_PARAM_KEY_TAKNKIKI_SBT_CD) != null)
				{
					kikiSbt.append(kikiMap.get(IN_PARAM_KEY_TAKNKIKI_SBT_CD));
				}
				if(kikiMap.get(IN_PARAM_KEY_STC_TEKKYO_FLG) != null)
				{
					stcTekkyo.append(kikiMap.get(IN_PARAM_KEY_STC_TEKKYO_FLG));
				}
				if(kikiMap.get(IN_PARAM_KEY_TAKNKIKI_IDO_CD) != null)
				{
					kikiIdo.append(kikiMap.get(IN_PARAM_KEY_TAKNKIKI_IDO_CD));
				}
			}
			inMap.put(EKK3061B501CBSMsg.KEY_TAKNKIKI_SBT_CD, kikiSbt.toString());
			inMap.put(EKK3061B501CBSMsg.KEY_STC_TEKKYO_FLG, stcTekkyo.toString());
			inMap.put(EKK3061B501CBSMsg.KEY_TAKNKIKI_IDO_CD, kikiIdo.toString());
		}
		// ＫＥＹ＿異動区分
		if(!JFUBPCommon.isNull(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_IDO_DIV)))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_IDO_DIV, eoPremiumClubSndJknMap.get(IN_PARAM_KEY_IDO_DIV));
		}
		// ＫＥＹ＿異動予約詳細コード
		if(!JFUBPCommon.isNull(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_IDO_RSV_DTL_CD)))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_IDO_RSV_DTL_CD, eoPremiumClubSndJknMap.get(IN_PARAM_KEY_IDO_RSV_DTL_CD));
		}
		// ＫＥＹ＿新料金グループコード
		if(!JFUBPCommon.isNull(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_NEW_PRC_GRP_CD)))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_NEW_PRC_GRP_CD, eoPremiumClubSndJknMap.get(IN_PARAM_KEY_NEW_PRC_GRP_CD));
		}
		// ＫＥＹ＿新料金コースコード
		if(!JFUBPCommon.isNull(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_NEW_PCRS_CD)))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_NEW_PCRS_CD, eoPremiumClubSndJknMap.get(IN_PARAM_KEY_NEW_PCRS_CD));
		}
		// ＫＥＹ＿新料金プランコード
		if(!JFUBPCommon.isNull(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_NEW_PPLAN_CD)))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_NEW_PPLAN_CD, eoPremiumClubSndJknMap.get(IN_PARAM_KEY_NEW_PPLAN_CD));
		}
		// ＫＥＹ＿旧料金グループコード
		if(!JFUBPCommon.isNull(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_OLD_PRC_GRP_CD)))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_OLD_PRC_GRP_CD, eoPremiumClubSndJknMap.get(IN_PARAM_KEY_OLD_PRC_GRP_CD));
		}
		// ＫＥＹ＿旧料金コースコード
		if(!JFUBPCommon.isNull(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_OLD_PCRS_CD)))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_OLD_PCRS_CD, eoPremiumClubSndJknMap.get(IN_PARAM_KEY_OLD_PCRS_CD));
		}
		// ＫＥＹ＿旧料金プランコード
		if(!JFUBPCommon.isNull(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_OLD_PPLAN_CD)))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_OLD_PPLAN_CD, eoPremiumClubSndJknMap.get(IN_PARAM_KEY_OLD_PPLAN_CD));
		}
		// ＫＥＹ＿一時支払料金番号
		if(!JFUBPCommon.isNull(eoPremiumClubSndJknMap.get(IN_PARAM_KEY_TMP_PAY_PRC_NO)))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_TMP_PAY_PRC_NO, eoPremiumClubSndJknMap.get(IN_PARAM_KEY_TMP_PAY_PRC_NO));
		}
		// ＫＥＹ＿画面ID
		if(!JFUBPCommon.isNull(screen_id))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_SCREEN_ID, screen_id);
		}
		// ＫＥＹ＿ランクコード
		if(!JFUBPCommon.isNull(rnk_cd))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_RNK_CD, rnk_cd);
		} else {
			inMap.put(EKK3061B501CBSMsg.KEY_RNK_CD, JFUStrConst.CD01807_DMY);
		}
		// ＫＥＹ＿保有ポイント数
		if(!JFUBPCommon.isNull(hoyu_pt_su))
		{
			inMap.put(EKK3061B501CBSMsg.KEY_HOYU_PT_SU, hoyu_pt_su);
		} else {
			inMap.put(EKK3061B501CBSMsg.KEY_HOYU_PT_SU, 0);
		}
	}

	 /** 下りマッピング項目設定(eoプレミアムクラブ施策申請条件一覧照会）です
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sifResultList サービスインタフェースの結果格納用リスト
	 * @throws RequestParameterException
	 */
	private void getInMapEoPrCSSSSearch(IRequestParameterReadWrite param, String fixedText, ArrayList sifResultList) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		if(getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EOPRCL_JK_ST),
				TEMPLATE_ID_EPPRMCL_JK_DTL) != null)
		{
			// ●結果分ループ（「EKK3061B501 eoプレミアムクラブ施策申請条件一覧照会」の件数分）
			for (HashMap eKK3061B501Map : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EOPRCL_JK_ST),
					TEMPLATE_ID_EPPRMCL_JK_DTL))
			{
				// ｅｏプレミアムクラブ申請条件リストに追加
				int resultCount = sifResultList.size();
				sifResultList.add(new HashMap());
				HashMap childMap = (HashMap)sifResultList.get(resultCount);
				// eoプレミアムクラブ施策コード
				if(!JFUBPCommon.isNull(eKK3061B501Map.get(EKK3061B501CBSMsg1List.EOPRMCL_SISAK_CD)))
				{
					childMap.put(OUT_EOPRMCL_SISAK_CD, (String)eKK3061B501Map.get(EKK3061B501CBSMsg1List.EOPRMCL_SISAK_CD));
				}
				else
				{
					childMap.put(OUT_EOPRMCL_SISAK_CD, JFUStrConst.EMPTY);
				}
	
				// eoプレミアムクラブ施策名
				if(!JFUBPCommon.isNull(eKK3061B501Map.get(EKK3061B501CBSMsg1List.EOPRMCL_SISAK_NM)))
				{
					childMap.put(OUT_EOPRMCL_SISAK_NM, (String)eKK3061B501Map.get(EKK3061B501CBSMsg1List.EOPRMCL_SISAK_NM));
				}
				else
				{
					childMap.put(OUT_EOPRMCL_SISAK_NM, JFUStrConst.EMPTY);
				}
	
				// キャンペーン登録契機コード
				if(!JFUBPCommon.isNull(eKK3061B501Map.get(EKK3061B501CBSMsg1List.CMP_ADD_OPTNTY_CD)))
				{
					childMap.put(OUT_CMP_ADD_OPTNTY_CD, (String)eKK3061B501Map.get(EKK3061B501CBSMsg1List.CMP_ADD_OPTNTY_CD));
				}
				else
				{
					childMap.put(OUT_CMP_ADD_OPTNTY_CD, JFUStrConst.EMPTY);
				}
				// 工事案件連絡事項付加文言
				if(!JFUBPCommon.isNull(eKK3061B501Map.get(EKK3061B501CBSMsg1List.KOJIAK_RRK_JIKO_HUKA_MNGN)))
				{
					childMap.put(OUT_KOJIAK_RRK_JIKO_HUKA_MNGN, (String)eKK3061B501Map.get(EKK3061B501CBSMsg1List.KOJIAK_RRK_JIKO_HUKA_MNGN));
				}
				else
				{
					childMap.put(OUT_KOJIAK_RRK_JIKO_HUKA_MNGN, JFUStrConst.EMPTY);
				}
				// 必要ポイント数
				childMap.put(OUT_NECESSARY_POINT_CNT, 
						JFUBPCommon.nvl((String)eKK3061B501Map.get(EKK3061B501CBSMsg1List.NECESSARY_POINT_CNT), "0"));
				// 最低申込可能ランクコード
				if(!JFUBPCommon.isNull(eKK3061B501Map.get(EKK3061B501CBSMsg1List.MIN_MKM_PSB_RANK_CD)))
				{
					childMap.put(OUT_MIN_MKM_PSB_RANK_CD, (String)eKK3061B501Map.get(EKK3061B501CBSMsg1List.MIN_MKM_PSB_RANK_CD));
				}
				else
				{
					childMap.put(OUT_MIN_MKM_PSB_RANK_CD, JFUStrConst.EMPTY);
				}
				// 割引サービスコード
				if(!JFUBPCommon.isNull(eKK3061B501Map.get(EKK3061B501CBSMsg1List.WRIB_SVC_CD)))
				{
					childMap.put(OUT_WRIB_SVC_CD, (String)eKK3061B501Map.get(EKK3061B501CBSMsg1List.WRIB_SVC_CD));
				}
				else
				{
					childMap.put(OUT_WRIB_SVC_CD, JFUStrConst.EMPTY);
				}
			}
		}
	}

	/**
	 * チェック処理です。
	 * 
	 * <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;
	}

	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * @param handle セッションハンドル
	 * @param scCall SC呼び出し部品
	 * @param param リクエストパラメータ
	 * @param dataMapKey パラメータキー
	 * @param mappingData マッピングデータ
	 * @param returnCdMap リターンコードのマップ
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg callSC(SessionHandle handle, 
							ServiceComponentRequestInvoker scCall, 
							IRequestParameterReadWrite param, 
							String dataMapKey,
							Object[][] mappingData,
							HashMap<String, Object> returnCdMap) throws Throwable
	{
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);

		Map<?, ?> result = scCall.run(paramMap, handle);

		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);

		CAANMsg msg = templates[0];

		// リターンコード取得
		Object return_code = result.get(JCMConstants.RET_CD_INT_KEY);

		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);

		if(!(RETURN_CD_OK.equals(return_code.toString()) && 0 == status))
		{
			returnCdMap.put(JCMConstants.RET_CD_INT_KEY, result.get(JCMConstants.RET_CD_INT_KEY));
			returnCdMap.put(JCMConstants.STATUS_INT_KEY, msg.getInt(JCMConstants.STATUS_INT_KEY));
		}
		else
		{
			returnCdMap.put(JCMConstants.RET_CD_INT_KEY, RETURN_CD_OK);
		}

		return msg;
	}
	
	
	/**
	 * 共通項目のメッセージを作成します。
	 * @param param リクエストパラメータ
	 * @param mappingData マッピングデータ
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param,
												Object[][] mappingData) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());

		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());

		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());

		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));

		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));

		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));

		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		String svcIf = (String)mappingData[0][1];

		CAANMsg template = new CAANMsg(String.format(FMT_CBSMSG, svcIf));

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));

		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));
		
		for (int i = 0; i < mappingData.length; i++)
		{
			if (JFUStrConst.EMPTY.equals(mappingData[i][1]))
			{
				template.setNull((String)mappingData[i][0]);
			}
			else
			{
				template.set((String)mappingData[i][0], mappingData[i][1]);
			}
		}

		CAANMsg[] templates = new CAANMsg[1];

		templates[0] = template;

		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

//	/**
//	 * チケット申請履歴一覧照会受付取得処理を実行するか判定を行います。
//	 * 
//	 * <br>
//	 * @param inMap
//	 * @return true:チケット申請履歴一覧照会処理を実行(API)
//	 */
//	private boolean isExecRireki(HashMap<String, Object> inMap)
//	{
//		if (FLG_ON.equals((String)inMap.get(IN_PARAM_SINSEI_SHOKAI_FLG)))
//		{
//			return true;
//		}
//		return false;
//	}
//
	/**
	 * nullの場合、空文字に変換します。
	 * 
	 * <br>
	 * @param value 入力値
	 * @return String nullの場合は空文字返却
	 */
	private String nullToEmpty(Object value)
	{
		if (JFUBPCommon.isNull(value))
		{
			return JFUStrConst.EMPTY;
		}
		return (String)value;
	}

	/**
	 * 割引サービス契約一覧照会（サービス契約番号）を実行するか判定を行います。
	 * 
	 * <br>
	 * @param inMap
	 * @return true:割引サービス契約一覧照会（サービス契約番号）を実行
	 */
	private boolean isExecWrib(HashMap<String, Object> inMap)
	{
		if (FLG_ON.equals((String)inMap.get(IN_PARAM_WRIB_SHOKAI_FLG)))
		{
			return true;
		}
		return false;
	}

	/**
	 * オプションサービス契約一覧照会（サービス契約番号）を実行するか判定を行います。
	 * 
	 * <br>
	 * @param inMap
	 * @return true:オプションサービス契約一覧照会（サービス契約番号）を実行
	 */
	private boolean isExecOpSvcKei(HashMap<String, Object> inMap)
	{
		if (FLG_ON.equals((String)inMap.get(IN_PARAM_OPSVC_SHOKAI_FLG)))
		{
			return true;
		}
		return false;
	}

	/**
	 * アップグレード施策適用済判定処理を実行するか判定を行います。
	 * 
	 * <br>
	 * @param inMap
	 * @return true:アップグレード施策適用済判定処理を実行
	 */
	private boolean isGradeUpCheck(HashMap<String, Object> inMap)
	{
		if (FLG_ON.equals((String)inMap.get(IN_PARAM_GRADE_UP_CHECK_FLG)))
		{
			return true;
		}
		return false;
	}

	/**
	 *  割引サービス契約一覧照会（サービス契約番号）取得処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param keySvcKeiNo サービス契約番号
	 * @return 結果リスト
	 * @throws Throwable 例外
	 */
	private ArrayList<HashMap<String, Object>> getWribSveKeiList(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String keySvcKeiNo)
			throws Throwable
	{
		// 結果リスト（結果マップ格納用）
		ArrayList<HashMap<String, Object>> resultList = new ArrayList<HashMap<String, Object>>();

		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// ●割引サービス契約一覧照会（サービス契約番号））
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0451B002);
		// 検索失敗エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setEKK0451B002(param, fixedText, keySvcKeiNo);
		// サービスI/F実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0451B002, TEMPLATE_ID_EKK0451B002_DETAIL, IN_COLUMN_LIST_EKK0451B002,
				ERROR_COLUMN_EKK0451B002);

		for (HashMap wMap : getTemplateList(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMPLATE_KEY_EKK0451B002),
				TEMPLATE_ID_EKK0451B002_DETAIL))
		{

			// 割引サービス契約ステータス
			String wribSvcKeiStat = (String)wMap.get(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_STAT);

			// 解約、キャンセルは除外する
			if (WRIB_SVC_KEI_STAT_MUKO.contains(wribSvcKeiStat))
			{
				continue;
			}
			HashMap resultMap = new HashMap();
			resultMap.put(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_NO, (String)wMap.get(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_NO));
			resultMap.put(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_STAT, (String)wMap.get(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_STAT));
			resultMap.put(EKK0451B002CBSMsg1List.WRIB_SVC_CD, (String)wMap.get(EKK0451B002CBSMsg1List.WRIB_SVC_CD));
			resultMap.put(EKK0451B002CBSMsg.KEY_SVC_KEI_NO, keySvcKeiNo);
			resultList.add(resultMap);
			}
		return resultList;
	}

	/**
	 * オプションサービス契約一覧照会（サービス契約番号）取得処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param keySysId SYSID
	 * @param keySvcKeiNo サービス契約番号
	 * @return オプションサービス契約情報一覧照会（ネット）明細
	 * @throws Exception
	 */
	private ArrayList<HashMap<String, Object>> getOpSvcKeiList(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String keySysId, String keySvcKeiNo)
			throws Exception
	{

		// 結果リスト（結果マップ格納用）
		ArrayList<HashMap<String, Object>> resultList = new ArrayList<HashMap<String, Object>>();

		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// オプションサービス契約一覧照会（サービス契約番号）
		initData(param, fixedText, IN_COL_LIST_EKK0351B503);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setEKK0351B503(param, fixedText, keySysId, keySvcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0351B503, TEMP_DTL_EKK0351B503, IN_COL_LIST_EKK0351B503, ERR_COL_EKK0351B503);

		for (HashMap wMap : getTemplateList(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMP_KEY_EKK0351B503), TEMP_DTL_EKK0351B503))
		{
			// オプションサービス契約ステータス
			String opSvcKeiStat = (String)wMap.get(EKK0351B503CBSMsg1List.OP_SVC_KEI_STAT);
			// 解約、キャンセルは除外する
			if (OP_SVC_KEI_STAT_MUKO.contains(opSvcKeiStat))
			{
				continue;
			}
			HashMap resultMap = new HashMap();
			resultMap.put(EKK0351B503CBSMsg1List.OP_SVC_KEI_NO, (String)wMap.get(EKK0351B503CBSMsg1List.OP_SVC_KEI_NO));
			resultMap.put(EKK0351B503CBSMsg1List.OP_SVC_KEI_STAT, (String)wMap.get(EKK0351B503CBSMsg1List.OP_SVC_KEI_STAT));
			resultMap.put(EKK0351B503CBSMsg1List.OP_SVC_CD, (String)wMap.get(EKK0351B503CBSMsg1List.OP_SVC_CD));
			resultList.add(resultMap);
		}
		return resultList;
	}

	/**
	 * 上りマッピング項目設定(割引サービス契約一覧照会（サービス契約番号））です。
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setEKK0451B002(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0451B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * 上りマッピング項目設定(オプションサービス契約一覧照会（サービス契約内訳番号））です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysId SYSID
	 * @param svcKeiNo サービス契約番号
	 * @throws Exception 例外
	 */
	private void setEKK0351B503(IRequestParameterReadWrite param, String fixedText, String sysId, String svcKeiNo) throws Exception
	{
		// リクエストパラメータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 機能コード
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿ＳＹＳＩＤ
		dataMap.put(EKK0351B503CBSMsg.KEY_SYSID, sysId);
		// ＫＥＹ＿サービス契約番号
		dataMap.put(EKK0351B503CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * eoプレミアムクラブ施策パターン一覧照会取得処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param screnId 画面ID
	 * @return eoプレミアムクラブ施策パターン一覧照会明細
	 * @throws Exception
	 */
	private ArrayList<HashMap<String, Object>> getEoprmclSskPtnList(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			String screnId) throws Exception
	{

		// 結果リスト（結果マップ格納用）
		ArrayList<HashMap<String, Object>> resultList = new ArrayList<HashMap<String, Object>>();

		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// eoプレミアムクラブ施策パターン一覧照会
		initData(param, fixedText, IN_COL_LIST_EFU0401B010);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setEFU0401B010(param, fixedText, screnId);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EFU0401B010, TEMP_DTL_EFU0401B010, IN_COL_LIST_EFU0401B010, ERR_COL_EFU0401B010);

		HashMap resultMap = new HashMap();
		for (HashMap wMap : getTemplateList(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMP_KEY_EFU0401B010), TEMP_DTL_EFU0401B010))
		{
			resultMap = new HashMap();
			resultMap.put(EFU0401B010CBSMsg1List.SCREEN_ID, convEmpty(wMap.get(EFU0401B010CBSMsg1List.SCREEN_ID)));
			resultMap.put(EFU0401B010CBSMsg1List.SSKPTN_CD, convEmpty(wMap.get(EFU0401B010CBSMsg1List.SSKPTN_CD)));
			resultMap.put(EFU0401B010CBSMsg1List.SSKPTN_SBT_CD, convEmpty(wMap.get(EFU0401B010CBSMsg1List.SSKPTN_SBT_CD)));

			resultMap.put(EFU0401B010CBSMsg1List.SISAK_HENSHU_JUN, convEmpty(wMap.get(EFU0401B010CBSMsg1List.SISAK_HENSHU_JUN)));
			resultMap.put(EFU0401B010CBSMsg1List.EOPRMCL_SISAK_CD, convEmpty(wMap.get(EFU0401B010CBSMsg1List.EOPRMCL_SISAK_CD)));
			resultMap.put(EFU0401B010CBSMsg1List.EOPRMCL_SISAK_NM, convEmpty(wMap.get(EFU0401B010CBSMsg1List.EOPRMCL_SISAK_NM)));

			resultMap.put(EFU0401B010CBSMsg1List.NECESSARY_TICKET_CNT, convEmpty(wMap.get(EFU0401B010CBSMsg1List.NECESSARY_TICKET_CNT)));
			resultMap.put(EFU0401B010CBSMsg1List.NECESSARY_POINT_CNT, convEmpty(wMap.get(EFU0401B010CBSMsg1List.NECESSARY_POINT_CNT)));
			resultMap.put(EFU0401B010CBSMsg1List.MIN_MKM_PSB_RANK_CD, convEmpty(wMap.get(EFU0401B010CBSMsg1List.MIN_MKM_PSB_RANK_CD)));
			resultMap.put(EFU0401B010CBSMsg1List.WRIB_SVC_CD, convEmpty(wMap.get(EFU0401B010CBSMsg1List.WRIB_SVC_CD)));
			resultMap.put(EFU0401B010CBSMsg1List.KOJIAK_RRK_JIKO_HUKA_MNGN, convEmpty(wMap.get(EFU0401B010CBSMsg1List.KOJIAK_RRK_JIKO_HUKA_MNGN)));
			resultList.add(resultMap);
		}

		return resultList;
	}

	/**
	 * 上りマッピング項目設定(eoプレミアムクラブ施策パターン一覧照会）です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param screen_id 画面ID
	 * @throws Exception 例外
	 */
	private void setEFU0401B010(IRequestParameterReadWrite param, String fixedText, String screen_id) throws Exception
	{
		// リクエストパラメータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 機能コード
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿画面ID
		dataMap.put(EFU0401B010CBSMsg.KEY_SCREEN_ID, screen_id);
		// ＫＥＹ＿施策パターン種別コード
		dataMap.put(EFU0401B010CBSMsg.KEY_SSKPTN_SBT_CD, JFUStrConst.SISAK_PTN_SBT_CD_1);
	}

	/**
	 * eoプレミアムクラブ施策パターン一覧照会（割引マッピング）取得処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param screnId 画面ID
	 * @return eoプレミアムクラブ施策パターン一覧照会明細
	 * @throws Exception
	 */
	private ArrayList<HashMap<String, String>> getEKK3051B010(SessionHandle handle, IRequestParameterReadWrite param, String fixedText,
			String screnId) throws Exception
	{

		// 結果リスト（結果マップ格納用）
		ArrayList<HashMap<String, String>> resultList = new ArrayList<HashMap<String, String>>();

		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// eoプレミアムクラブ施策パターン一覧照会（割引マッピング）
		initData(param, fixedText, IN_COL_LIST_EKK3051B010);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setEKK3051B010(param, fixedText, screnId);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK3051B010, TEMP_DTL_EKK3051B010, IN_COL_LIST_EKK3051B010, ERR_COL_EKK3051B010);

		for (HashMap wMap : getTemplateList(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMP_KEY_EKK3051B010), TEMP_DTL_EKK3051B010))
		{
			HashMap resultMap = new HashMap();
			resultMap.put(EKK3051B010CBSMsg1List.EOPRMCL_SISAK_CD, (String)wMap.get(EKK3051B010CBSMsg1List.EOPRMCL_SISAK_CD));
			resultMap.put(EKK3051B010CBSMsg1List.WRIB_SVC_CD, (String)wMap.get(EKK3051B010CBSMsg1List.WRIB_SVC_CD));
			resultList.add(resultMap);
		}
		return resultList;
	}

	/**
	 * 上りマッピング項目設定(eoプレミアムクラブ施策パターン一覧照会（割引マッピング））です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param screen_id 画面ID
	 * @throws Exception 例外
	 */
	private void setEKK3051B010(IRequestParameterReadWrite param, String fixedText, String screen_id) throws Exception
	{
		// 機能コード
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

	}

	/**
	 * 空文字設定
	 * @param val 値
	 * @return 編集結果
	 */
	private static String convEmpty(Object val)
	{
		if (JFUBPCommon.isNull(val))
		{
			return JFUStrConst.EMPTY;
		}
		return (String)val;
	}
}
