/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUEoPremiumClubDsp
*   ソースファイル名：JFUEoPremiumClubDsp.java
*   作成者          ：富士通
*   日付            ：2014年10月09日
*＜機能概要＞
*   eoプレミアムクラブ施策の選択リストを取得する部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*  v51.00.00    2020/10/12   FJ)美濃原  【ANK-3918-00-00】プレクラ施策追加「インターネットサギウォール」「おうちの機器補償」
*  v54.00.00    2021/08/13   FJ)美濃原  【ANK-4115-00-00】SMPのプレクラマイページからの遷移仕様変更
*  v66.00.00    2023/01/31   FJ)美濃原  【ANK-4307-00-00】【eo定期】プレミアムクラブリニューアル対応
*  v73.00       2024/11/29   FJ) 張本   【ANK-4493-00-00】【eo定期】光配線マンションのコースアップ対応
*
**********************************************************************/
package eo.web.webview.common;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

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.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JFUStrConst;
import eo.common.util.JFUCommonUtil;

/**
 * eoプレミアムクラブ施策の選択リストを取得する部品です。
 * <br>
 * @author 富士通
 */
public class JFUEoPremiumClubDsp
{

	// ■画面施策リスト表示パラメータ  ----------------------------------------------------------------------------------------------------*
	/** サービス契約番号 */
	public static final String PARAM_SVC_KEI_NO = "svc_kei_no";
	/** プロパティキー（定義体のフォームID） */
	public static final String PARAM_PROP_KEY = "prop_key";

	// ↓※割引サービス契約の申請中チェックを行う施策を定義。複数の施策で同じ施策として扱うものを定義。
	/** 割引サービスチェック対象の施策リスト*/
	public static final String PARAM_GRP_SISAK_LIST = "grp_sisak_list";

	/** オプションサービス判定用 */
	public static final String PARAM_OPSVCCD_MAP = "opsvc_cd_map";
	/** オプションサービスコード 対象リスト */
	public static final String PARAM_OPSVC_TAISYO_LIST = "opsvc_taisyo_list";
	/** オプションサービスコード 申込リスト */
	public static final String PARAM_OPSVC_MSKM_LIST = "opsvc_mskm_list";

	// ↓※基本はマスタに登録されている施策が対象となるため、申込内容によって変更がある場合は、全ての施策を設定する。 マスタと突き合わせて、表示対象か判定する。
	/** 対象施策リスト */
	public static final String PARAM_TAISYO_SISAK_LIST = "taisyo_sisak_list";
	// ↓※ここに設定されている施策は除外する。
	/** 施策除外リスト */
	public static final String PARAM_SISAK_JGI_LIST = "sisak_jgi_list";

	/** 施策コード */
	public static final String PARAM_SISAK_CD = "eoprmcl_sisak_cd";

	// ■eoプレミアムクラブ施策申請条件一覧照会 マップキー  ----------------------------------------------------------------------------------------------------*
	/** ｅｏプレミアムクラブ申請条件リスト */
	private static final String EO_PREMIUM_CLUB_SNS_JKN_LIST = "eo_premium_club_sns_jkn_list";
	/** チケット申請履歴一覧 */
	private static final String SINS_LIST = "sins_list";
	/** ｅｏプレミアムクラブ施策コード  */
	private static final String EOPRMCL_SISAK_CD = "eoprmcl_sisak_cd";
	/** ｅｏプレミアムクラブ施策名  */
	private static final String EOPRMCL_SISAK_NM = "eoprmcl_sisak_nm";
	/** キャンペーン登録契機コード  */
	private static final String CMP_ADD_OPTNTY_CD = "cmp_add_optnty_cd";
	/** 最低申込可能ランクコード  */
	private static final String MIN_MKM_PSB_RANK_CD = "min_mkm_psb_rank_cd";
	/** 工事案件連絡事項付加文言  */
	private static final String KOJIAK_RRK_JIKO_HUKA_MNGN = "kojiak_rrk_jiko_huka_mngn";
	/** 必要ポイント数 */
	private static final String NECESSARY_POINT_CNT = "necessary_point_cnt";
	/** 保有ｅｏポイント数 */
	private static final String HOYU_PT_SU = "hoyu_pt_su";
	/** APIエラーフラグ  */
	private static final String API_ERR_FLG = "api_err_flg";
	/** ランクコード  */
	private static final String RNK_CD = "rnk_cd";
	/** 割引サービスコード  */
	private static final String WRIB_SVC_CD = "wrib_svc_cd";

	/** 割引サービス契約一覧 */
	private static final String WRIB_SVC_LIST = "EKK0451B002CBSMsg1List";
	/** オプションサービス契約一覧 */
	private static final String OP_SVC_LIST = "EKK0351B503CBSMsg1List";
	/** eoプレミアムクラブ施策複合リスト（画面表示）EFU0401B010 */
	private static final String SISAK_HUKUGO_LIST = "sisak_hukugo_list";
	/** eoプレミアムクラブ施策一覧照会明細（割引マッピング）EKK3051B010 */
	private static final String SISAK_WRIB_MAPPING_LIST = "sisak_wrib_mapping_list";
	/** アップグレード施策適用済判定 true：チェックOK、false：チェックNG */
	private static final String UPGRADE_SISAK_CHECK = "upgrade_sisak_check";

	// ■チケット申請履歴一覧 マップキー  ----------------------------------------------------------------------------------------------------*
	// API チケット申請履歴一覧 sins_ist
	/** API チケット申請履歴一覧　サービス契約番号 */
	public static final String API_SINSLIST_SVC_KEI_NO = "svc_kei_no";
	/** API チケット申請履歴一覧　施策コード */
	public static final String API_SINSLIST_SISK_CD = "sisk_cd";
	/** API チケット申請履歴一覧　施策ステータスコード */
	public static final String API_SINSLIST_SISK_STS_CD = "sisk_sts_cd";
	/** API チケット申請履歴一覧　処理日 */
	public static final String API_SINSLIST_SHORI_YMD = "shori_ymd";

	// ■プロパティ  ----------------------------------------------------------------------------------------------------*
	/** 定義取得パス eoプレミアムクラブ施策用割引サービスコード 注）現状は使わない方針 SMPの施策は廃止されたがロジックが残存しているため */
	private static final String QUERY_PATH_WRIB_SVC_CD = "DISPSETTING/SETTING[@screenId='FUWXXXXX']/DISPTEXT[@groupid='EOPRMCL_SISAK_CD_WS']";
	//   対象施策
	/** 属性名 */
	private static final String QUERY_TAISYO = "TAISYO_1";
	/** 定義取得パス ガイド誌 画面表示対象施策 (廃止)  */
	public static final String QUERY_PATH_TAISYO_GUIDE = "DISPSETTING/SETTING[@screenId='FUW06601']/DISPTEXT[@groupid='EOPRMCL_CP_CD_TAISYO']";
	/** 定義取得パス スマートリンク 画面表示対象施策 */
	public static final String QUERY_PATH_TAISYO_PP = "DISPSETTING/SETTING[@screenId='FUW10701']/DISPTEXT[@groupid='EOPRMCL_CP_CD_TAISYO']";
	/** 定義取得パス 機器補償 表示対象のチケット */
	public static final String QUERY_PATH_TAISYO_KIKI = "DISPSETTING/SETTING[@screenId='FUW12302']/DISPTEXT[@groupid='EOPRMCL_CP_CD_TAISYO']";
	/** 定義取得パス セキュリティパック、インターネットサギウォール */
	public static final String QUERY_PATH_TAISYO_SP_ISW = "DISPSETTING/SETTING[@screenId='FUW12101']/DISPTEXT[@groupid='EOPRMCL_CP_CD_TAISYO']";
	/** 定義取得パス 表示対象のチケット セキュリティパック */
	public static final String QUERY_SP = "SP";
	/** 定義取得パス 表示対象のチケット インターネットサギウォール */
	public static final String QUERY_ISW = "ISW";


	//   割引サービスチェック対象
	/** 属性名 連番で作成 */
	public static final String QUERY_CHECK_1 = "CHECK_1";
	/** 定義取得パス eo光ネットプラン変更 割引サービスチェック対象 */
	public static final String QUERY_PATH_WRIB_CHK_PLANCHG = "DISPSETTING/SETTING[@screenId='FUW01301']/DISPTEXT[@groupid='EOPRMCL_WRIB_PLANCHG']";
	/** 定義取得パス eo光テレビコース変更 割引サービスチェック対象 （現在未設定） */
	public static final String QUERY_PATH_WRIB_CHK_TVCHG = "DISPSETTING/SETTING[@screenId='FUW01503']/DISPTEXT[@groupid='EOPRMCL_WRIB_TVCHG']";
	/** 定義取得パス ガイド誌 割引サービスチェック対象 (廃止) */
	public static final String QUERY_PATH_WRIB_CHK_GUIDE = "DISPSETTING/SETTING[@screenId='FUW06601']/DISPTEXT[@groupid='EOPRMCL_WRIB_GUIDE']";
	/** 定義取得パス eo光テレビコース変更 割引サービスチェック対象 （現在未設定） */
	public static final String QUERY_PATH_WRIB_CHK_STVCHG = "DISPSETTING/SETTING[@screenId='FUW06803']/DISPTEXT[@groupid='EOPRMCL_WRIB_STVCHG']";
	/** 定義取得パス 多機能ルーター 割引サービスチェック対象 */
	public static final String QUERY_PATH_WRIB_CHK_RT = "DISPSETTING/SETTING[@screenId='FUW07101']/DISPTEXT[@groupid='EOPRMCL_WRIB_RT']";
	/** 定義取得パス 無線LAN中継機 割引サービスチェック対象 */
	public static final String QUERY_PATH_WRIB_CHK_WLAN = "DISPSETTING/SETTING[@screenId='FUW07101']/DISPTEXT[@groupid='EOPRMCL_WRIB_WLAN']";
	/** 定義取得パス メッシュWi-Fi 割引サービスチェック対象 */
	public static final String QUERY_PATH_WRIB_CHK_MESH = "DISPSETTING/SETTING[@screenId='FUW07101']/DISPTEXT[@groupid='EOPRMCL_WRIB_MESH']";
	/** 定義取得パス ストリーミングメディアプレーヤー 割引サービスチェック対象 */
	public static final String QUERY_PATH_WRIB_CHK_SMP = "DISPSETTING/SETTING[@screenId='FUW07101']/DISPTEXT[@groupid='EOPRMCL_WRIB_SMP']";
	/** 定義取得パス セキュリティパック・サギウォール 割引サービスチェック対象 */
	public static final String QUERY_PATH_WRIB_CHK_SP_ISW = "DISPSETTING/SETTING[@screenId='FUW12101']/DISPTEXT[@groupid='EOPRMCL_WRIB_SP_ISW']";
	/** 定義取得パス 機器補償 割引サービスチェック対象 */
	public static final String QUERY_PATH_WRIB_CHK_KIKI = "DISPSETTING/SETTING[@screenId='FUW12302']/DISPTEXT[@groupid='EOPRMCL_WRIB_KIKI']";

	/** 定義取得パス eo光ネットプラン変更 SYSID単位の割引サービスチェック対象 */
	public static final String QUERY_PATH_EOPRMCL_SYSID_CHECK = "DISPSETTING/COMMONSETTING/DISPTEXT[@id='EOPRMCL_SYSID_CHECK']";

	//   オプションサービスコード
	/** 定義取得パス eoプレミアムクラブ施策、オプションサービスコード */
	public static final String EOPRMCL_SISAK_OPSVCCD = "DISPSETTING/SETTING[@screenId='FUWXXXXX']/DISPTEXT[@groupid='EOPRMCL_SISAK_OPSVCCD']";

	// 共通定義
	/** 定義取得パス eoプレミアムクラブ施策 複数施策の連結文字列 */
	public static final String EOPRMCL_SISAK_HUKUGO = "DISPSETTING/COMMONSETTING/DISPTEXT[@id='EOPRMCL_SISAK_HUKUGO']";
	/** 定義取得パス eoプレミアムクラブ施策 多機能ルーター 無線ルーター機能申込で使用可能な単独施策 */
	private static final String EOPRMCL_CP_CD_TAKINO_MUSEN = "DISPSETTING/COMMONSETTING/DISPTEXT[@id='EOPRMCL_CP_CD_TAKINO_MUSEN']";
	/** 定義取得パス eoプレミアムクラブ施策 NetFlix申込で使用可能な単独施策 */
	private static final String EOPRMCL_CP_CD_NETFLIX = "DISPSETTING/COMMONSETTING/DISPTEXT[@id='EOPRMCL_CP_CD_NETFLIX']";
	/** 定義取得パス eoプレミアムクラブ施策 無線LAN中継機申込で使用可能な単独施策 */
	private static final String EOPRMCL_CP_CD_MUSEN_LAN = "DISPSETTING/COMMONSETTING/DISPTEXT[@id='EOPRMCL_CP_CD_MUSEN_LAN']";

	// eoプレミアムクラブ
	/** 定義取得パス プレクラ ポイント制表示制御<br/>ANK-4307-00-00_【eo定期】プレミアムクラブリニューアル対応 */
	public static final String PROP_ANK4307_EOPRMCL_POINT_START = "DISPSETTING/COMMONSETTING/DISPTEXT[@id='ANK4307_EOPRMCL_POINT_START']";
//	/** 定義取得パス eoプレミアムクラブ除外施策コード(無線ルータ無料／無線LAN中継器無料マンション) */
//	private static final String QUERY_PATH_MRT_MLAN_EOPRMCL_EXCLUDE = "DISPSETTING/SETTING[@screenId='FUW07101']/DISPCTL[@groupid='EOPRMCL_EXCLUDE']";

//	/** 定義取得パス eoプレミアムクラブ使用可能な施策コード */
//	private static final String QUERY_PATH_SISAK_CD = "DISPSETTING/SETTING[@screenId='FUW01301']/DISPTEXT[@groupid='EOPRMCL_CP_GRP']";
//	/** 定義取得パス eoプレミアムクラブ施策コード 複合チケット */
//	private static final String QUERY_PATH_SISAK_CP_RT_PAIR = "DISPSETTING/SETTING[@screenId='FUW01301']/DISPTEXT[@groupid='EOPRMCL_CP_RT_PAIR']";
//	/** 定義取得パス eoプレミアムクラブ施策用割引サービスコード */
//	private static final String QUERY_PATH_WRIB_SVC_CD = "DISPSETTING/SETTING[@screenId='FUW01301']/DISPTEXT[@groupid='EOPRMCL_SISAK_CD_WS']";

//	/** 定義取得パス 複合チケット */
//	private static final String QUERY_PATH_CP_PAIR = "DISPSETTING/SETTING[@screenId='FUW12101']/DISPTEXT[@groupid='EOPRMCL_CP_CD_PAIR']";


	/** 置換用スクリーンID */
	private static final String QUERY_REPLACE_SCREENID = "FUWXXXXX";
	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";

	// ■サービスフォームBeanの項目名  ----------------------------------------------------------------------------------------------------*
	/** サービスフォームBean.保有ｅｏポイント数 */
	private static final String FM_CONST_HOYU_PT_SU = "保有ｅｏポイント数";
	/** サービスフォームBean.APIエラーフラグ */
	private static final String FM_CONST_API_ERR_FLG = "ＡＰＩエラーフラグ";
	/** サービスフォームBean.チケット利用申請依頼リスト */
	private static final String FM_CONST_TICKET_USE_SHIN_IRAI_LIST = "チケット利用申請依頼リスト";
	/** チケット利用選択 */
	private static final String FM_CONST_TIC_USE_SELECT = "チケット利用選択";

	/** チケット利用申請依頼タイプ 施策コード     */
	private static final String FM_CONST_SISAK_CD = "施策コード";
	/** チケット利用申請依頼タイプ 施策名     */
	private static final String FM_CONST_SISAK_NM = "施策名";
	/** チケット利用申請依頼タイプ 必要ポイント数     */
	private static final String FM_CONST_NECESSARY_POINT_CNT = "必要ポイント数";
	/** チケット利用申請依頼タイプ キャンペーン登録契機コード     */
	private static final String FM_CONST_CMP_ADD_OPTNTY_CD = "キャンペーン登録契機コード";
	/** チケット利用申請依頼タイプ 工事案件連絡事項付加文言 */
	private static final String FM_CONST_KOJIAK_RRK_JIKO_HUKA_MNGN = "工事案件連絡事項付加文言";

	// その他
	/** 施策チケット利用中判定「割引サービス契約ステータス」(010:受付済、100：サービス提供中) */
	private static final List<String> WRIB_SVC_KEI_STAT_RIYYO = Arrays.asList(JFUStrConst.CD00055_010, JFUStrConst.CD00055_100);

	/** オプションサービス契約ステータス (910:解約済、920：キャンセル済) */
	private static final List<String> OP_SVC_KEI_STAT_MUKO = Arrays.asList(JFUStrConst.CD00037_910, JFUStrConst.CD00037_920);

	/** 施策名 - 保有eoポイント申請無し */
	private static final String SISAK_NM_NONE = "保有eoポイント申請無し";

	/** 申請中として判定する猶予期間（日数） （例：運用日12/21、申請日 12/19〜12/21） */
	private static final int INT_ADD_DAY = -2;

	/** 複数施策の連結文字 */
	private static String CON_EDIT_MARK = JFUStrConst.EMPTY;

	/** 実行フラグ 可 */
	private static final String FLG_ON = "1";

	/**
	 * 
	 * eoプレミアムクラブ施策表示リストを取得する。
	 * 
	 * <br>
	 * @param bean [0]：サービスフォームBean
	 * @param dsp_sisak_settei 画面施策リスト表示パラメータ
	 * @param sif_result_map eoプレミアムクラブSIF呼出結果
	 * @param opeDate 運用日付
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public static void getPremiumClubList(X31SDataBeanAccess[] bean, HashMap dsp_sisak_settei, HashMap sif_result_map, String opeDate)
			throws Exception
	{

		DEBUG_LOG.info("JFUEoPremiumClubDsp ================================================= START");
		long zanTicketPointCnt = 0;
		// パラメータ未設定部分の初期化
		HashMap dspSisakSettei = initDspSettei(dsp_sisak_settei);
		String svcKeiNo = (String)dspSisakSettei.get(PARAM_SVC_KEI_NO);
		String propKey = (String)dspSisakSettei.get(PARAM_PROP_KEY);

		Map<String, List<String>> grpSisakList = (Map<String, List<String>>)dspSisakSettei.get(PARAM_GRP_SISAK_LIST);

		Map<String, List<String>> opsvc_cd_map = (Map<String, List<String>>)dspSisakSettei.get(PARAM_OPSVCCD_MAP);
		List<String> opSvcTaisyoList = (List<String>)opsvc_cd_map.get(PARAM_OPSVC_TAISYO_LIST);
		List<String> opSvcMskmList = (List<String>)opsvc_cd_map.get(PARAM_OPSVC_MSKM_LIST);
		List<String> sisak_jgi_list = (List<String>)dspSisakSettei.get(PARAM_SISAK_JGI_LIST);
		List<String> taisyo_sisak_list = (List<String>)dspSisakSettei.get(PARAM_TAISYO_SISAK_LIST);

//		List<Map<String, String>> pairSisakList = convPairList((Map<String, String>)dspSisakSettei.get(PARAM_PAIR_SISAK_MAP));
		CON_EDIT_MARK = getDispItemStr(EOPRMCL_SISAK_HUKUGO);
		List<Map<String, String>> pairSisakList = new ArrayList<Map<String, String>>();
		// ■eoプレミアムクラブ施策複合リスト（EFU0401B010）
		// ■保有ｅｏポイント数 ← ｅｏプレミアムクラブ申請条件リスト.保有ｅｏポイント数
		if (sif_result_map != null)
		{
			pairSisakList = convPairList((ArrayList<HashMap<String, Object>>)sif_result_map.get(SISAK_HUKUGO_LIST));
			bean[0].sendMessageString(FM_CONST_HOYU_PT_SU, X31CWebConst.DATABEAN_SET_VALUE, (String)sif_result_map.get(HOYU_PT_SU));
			zanTicketPointCnt = getZansu((String)sif_result_map.get(HOYU_PT_SU));
		}
		else
		{
			bean[0].sendMessageString(FM_CONST_HOYU_PT_SU, X31CWebConst.DATABEAN_SET_VALUE, new String());
		}

		// ■APIエラーフラグ ← ｅｏプレミアムクラブ申請条件リスト.APIエラーフラグ
		String apiErrFlg = JFUStrConst.EMPTY;
		if (sif_result_map != null)
		{
			bean[0].sendMessageString(FM_CONST_API_ERR_FLG, X31CWebConst.DATABEAN_SET_VALUE, (String)sif_result_map.get(API_ERR_FLG));
			apiErrFlg = (String)sif_result_map.get(API_ERR_FLG);
		}
		else
		{
			bean[0].sendMessageString(FM_CONST_API_ERR_FLG, X31CWebConst.DATABEAN_SET_VALUE, new String());
		}

		// ■画面チケット選択表示（チケット利用申請依頼リスト）
		X31SDataBeanAccessArray iraiList = bean[0].getDataBeanArray(FM_CONST_TICKET_USE_SHIN_IRAI_LIST);
		// ｅｏプレミアムクラブ申請条件リスト
		ArrayList childList = null;
		// チケット申請履歴一覧（API情報：FUIFE161_チケット申請履歴一覧照会受付）
		ArrayList sinsList = null;
		HashMap<String, String> dspSisakCd = new HashMap<String, String>(); // 画面表示対象の施策（申請中、使用中を考慮）

		if (iraiList != null)
		{
			iraiList.clearArray();
		}

		// ■API正常 かつ ｅｏプレミアムクラブ申請条件リストが取得できた場合
		if (isExecuteDspSet(apiErrFlg, iraiList, sif_result_map, zanTicketPointCnt))
		{
			childList = (ArrayList)sif_result_map.get(EO_PREMIUM_CLUB_SNS_JKN_LIST);
			if (childList == null)
			{
				childList = new ArrayList();
			}
			sinsList = (ArrayList)sif_result_map.get(SINS_LIST);
			if (sinsList == null)
			{
				sinsList = new ArrayList();
			}

			String queryPath = getQueryPath(EOPRMCL_SISAK_OPSVCCD, propKey);
			Map<String, String> opsvcCdToSisakMap = getOpsvcCdToSisakMap(queryPath);
			List<String> sysidCheckNetChgList = getDispItemToList(QUERY_PATH_EOPRMCL_SYSID_CHECK);
			boolean upgradeSisakResult = upgradeSisakResult((Boolean)sif_result_map.get(UPGRADE_SISAK_CHECK), grpSisakList, sysidCheckNetChgList);

			// 割引サービス契約に登録されている[チェック用仮値]施策コード（受付済、サービス提供中）
			List<String> existsWribSisakList = getWribList(sif_result_map);
			List<String> enabledOpSisakList = new ArrayList<String>();
			List<String> opSvcSisakList = new ArrayList<String>();
			getOpsvcMskm(sif_result_map, opsvcCdToSisakMap, opSvcTaisyoList, opSvcMskmList, opSvcSisakList, enabledOpSisakList);

			DEBUG_LOG.info("JFUEoPremiumClubDsp ■保有ｅｏポイント数：" + zanTicketPointCnt);
			DEBUG_LOG.info("JFUEoPremiumClubDsp ■チケット申請履歴一覧（API情報：FUIFE161_チケット申請履歴一覧照会受付）のデータ件数：" + sinsList.size());
			//			debugMap("オプションサービスコード→施策コード変換マップ  opsvcCdToSisakMap", opsvcCdToSisakMap);
			//			debugMap("割引サービスコード→施策コード変換マップ  wribsvcCdToSisakMap", wribsvcCdToSisakMap);
			//			debugList("■割引サービス契約に登録されている施策コード[チェック用仮値]  existsWribSisakList", existsWribSisakList);
			//			debugList("■オプションサービスで使用可能な施策コード  enabledOpSisakList", enabledOpSisakList);

			String startDate = JFUCommonUtil.addSubtractDay(opeDate, INT_ADD_DAY);
			ArrayList<HashMap<String, String>> wkList = new ArrayList<HashMap<String, String>>();

			// 注）各機能毎に使用可能な施策か絞り込み済み（割引の使用済みチェックはここで行う）
			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				if (childMap == null)
				{
					continue;
				}

				// □申込内容で使用可能なｅｏプレミアムクラブ施策コードを取得する
				String mstlistSisakCd = (String)childMap.get(EOPRMCL_SISAK_CD);

				if (sisak_jgi_list.contains(mstlistSisakCd)) {
					// 施策除外リスト ※ここに設定されている施策は除外する 
					DEBUG_LOG.info("JFUEoPremiumClubDsp ■施策除外リストの施策コード[" + mstlistSisakCd + "]");
					continue;
				}
				if (taisyo_sisak_list.size() > 0 && (!taisyo_sisak_list.contains(mstlistSisakCd)))
				{
					// 対象施策リスト ※ここに設定されている施策のみ表示、空リストはチェックなし 
					DEBUG_LOG.info("JFUEoPremiumClubDsp ■対象施策リストに定義されていない施策コード[" + mstlistSisakCd + "]");
					continue;
				}
				// 「オプションサービス契約済 又は 申込対象」で施策利用可能か判定
				if (!isEnabledOpTicket(mstlistSisakCd, opSvcSisakList, enabledOpSisakList))
				{
					// 使用不可
					DEBUG_LOG.info("JFUEoPremiumClubDsp ■「オプションサービス契約済 又は 申込対象」で施策利用不可の施策コード[" + mstlistSisakCd + "]");
					continue;
				}
				// 既に適用済の施策コードの場合、リストから除外する【アップグレード施策適用済判定処理結果】
				if (sysidCheckNetChgList.contains(mstlistSisakCd))
				{
					// 既に申請中・適用中の施策コードの場合、リストから除外する
					if (isUsedGrpTicket(mstlistSisakCd, sinsList, grpSisakList, existsWribSisakList, opeDate, startDate, svcKeiNo, true))
					{
						// eo顧客DB未反映分に申請中あり（割引サービス契約 未連携）
						DEBUG_LOG.info("JFUEoPremiumClubDsp ■eo顧客DB未反映分に申請中あり（SYSID単位で割引サービス契約 未連携）の施策コード[" + mstlistSisakCd + "]");
						continue;
					}
					if (isUsedUpgradeSisak(mstlistSisakCd, sysidCheckNetChgList, upgradeSisakResult))
					{
						// ＳＹＳＩＤ単位の割引サービスチェックエラー
						DEBUG_LOG.info("JFUEoPremiumClubDsp ■eo顧客DB（SYSID単位で割引サービス契約適用済）の施策コード[" + mstlistSisakCd + "]");
						continue;
					}
				}
				else
				{
					// 既に申請中・適用中の施策コードの場合、リストから除外する
					if (isUsedGrpTicket(mstlistSisakCd, sinsList, grpSisakList, existsWribSisakList, opeDate, startDate, svcKeiNo, false))
					{
						// eo顧客DB未反映分に申請中あり（割引サービス契約 未連携）
						DEBUG_LOG.info("JFUEoPremiumClubDsp ■eo顧客DB未反映分に申請中あり（割引サービス契約 未連携）の施策コード[" + mstlistSisakCd + "]");
						continue;
					}
					if (isUsedTicket(mstlistSisakCd, existsWribSisakList, grpSisakList))
					{
						// eo顧客DB反映済（割引サービス契約あり）
						DEBUG_LOG.info("JFUEoPremiumClubDsp ■eo顧客DB反映済（割引サービス契約あり）の施策コード[" + mstlistSisakCd + "]");
						continue;
					}
				}

				HashMap<String, String> wkMap = new HashMap<String, String>();
				dspSisakCd.put(mstlistSisakCd, mstlistSisakCd);

				// チケット利用申請依頼リスト.施策コード ← ｅｏプレミアムクラブ申請条件リスト.ｅｏプレミアムクラブ施策コード
				wkMap.put(EOPRMCL_SISAK_CD, mstlistSisakCd);
				// チケット利用申請依頼リスト.施策名 ← ｅｏプレミアムクラブ申請条件リスト.ｅｏプレミアムクラブ施策名
				wkMap.put(EOPRMCL_SISAK_NM, (String)childMap.get(EOPRMCL_SISAK_NM));
				// チケット利用申請依頼リスト.必要ポイント数 ← ｅｏプレミアムクラブ申請条件リスト.必要ポイント数
				wkMap.put(NECESSARY_POINT_CNT, (String)childMap.get(NECESSARY_POINT_CNT));
				// チケット利用申請依頼リスト.キャンペーン登録契機コード ← ｅｏプレミアムクラブ申請条件リスト.キャンペーン登録契機コード
				wkMap.put(CMP_ADD_OPTNTY_CD, (String)childMap.get(CMP_ADD_OPTNTY_CD));
				// チケット利用申請依頼リスト.工事案件連絡事項付加文言 ← ｅｏプレミアムクラブ申請条件リスト.工事案件連絡事項付加文言
				wkMap.put(KOJIAK_RRK_JIKO_HUKA_MNGN, (String)childMap.get(KOJIAK_RRK_JIKO_HUKA_MNGN));
				wkList.add(wkMap);
			}

			// □作業用リストが存在する場合、画面用beanに展開する
			if (wkList.size() > 0)
			{

				ArrayList<HashMap<String, String>> wkPairList = new ArrayList<HashMap<String, String>>();
				// □複合チケットに含まれる全ての施策が使用可能な場合は、選択欄を追加する
				for (Map<String, String> pairMap : pairSisakList)
				{
					HashMap<String, String> rtnMap = getPairTicketInfo(zanTicketPointCnt, wkList, pairMap);
					if (rtnMap.size() > 0)
					{
						wkPairList.add(rtnMap);
					}
				}

				if (wkPairList.size() > 0)
				{
					wkList.addAll(wkPairList);
				}

				// 重複削除：マスタ日付の設定関係で複数施策で取得できなかった場合に見た目が重複してしまうため
				ArrayList<HashMap<String, String>> allTicketList = new ArrayList<HashMap<String, String>>();
				Map<String, String> dupCheck = new HashMap<String, String>();
				for (HashMap<String, String> sisakMap : wkList)
				{
					if (!dupCheck.containsKey(sisakMap.get(EOPRMCL_SISAK_CD)))
					{
						allTicketList.add(sisakMap);
						dupCheck.put(sisakMap.get(EOPRMCL_SISAK_CD), sisakMap.get(EOPRMCL_SISAK_CD));
					}
				}

				// □作業用リストを"必要ポイント数"、"eoプレミアムクラブ施策名"を昇順でソート
				Collections.sort(allTicketList, 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(NECESSARY_POINT_CNT));
						BigDecimal map2Num = new BigDecimal(map2.get(NECESSARY_POINT_CNT));

						// (1)「必要ポイント数」で並び替える(昇順)
						int rtn = map1Num.compareTo(map2Num);
						if (rtn == 0)
						{
							// (2)eoプレミアムクラブ施策名で並び替える(昇順)
							return map1.get(EOPRMCL_SISAK_NM).compareTo(map2.get(EOPRMCL_SISAK_NM));
						}
						else
						{
							return rtn;
						}
					}

				});

				// □作業用リストをBeanに展開
				//   リストの表示順：(1)「eoポイント申請無し」、(2)単体の施策（"必要ポイント数"、"eoプレミアムクラブ施策名"昇順）
				X31SDataBeanAccess subbean = null;
				boolean isFirst = true;
				for (int i = 0; i < allTicketList.size(); i++)
				{
					HashMap<String, String> childMap = allTicketList.get(i);
					subbean = iraiList.addDataBean();
					if (subbean == null)
					{
						continue;
					}

					if (isFirst)
					{
						// □「保有eoポイント申請無し」の行を先頭に追加
						isFirst = false;
						// 施策コード
						subbean.sendMessageString(FM_CONST_SISAK_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
						// 施策名
						subbean.sendMessageString(FM_CONST_SISAK_NM, X31CWebConst.DATABEAN_SET_VALUE, SISAK_NM_NONE);
						// 必要ポイント数
						subbean.sendMessageString(FM_CONST_NECESSARY_POINT_CNT, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.HALF_HAIHUN);
						// キャンペーン登録契機コード
						subbean.sendMessageString(FM_CONST_CMP_ADD_OPTNTY_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
						// チケット利用申請依頼リスト.工事案件連絡事項付加文言 ← ｅｏプレミアムクラブ申請条件リスト.工事案件連絡事項付加文言
						subbean.sendMessageString(FM_CONST_KOJIAK_RRK_JIKO_HUKA_MNGN, JFUStrConst.EMPTY);

						subbean = iraiList.addDataBean();

						// チケット利用選択を初期化
						bean[0].sendMessageString(FM_CONST_TIC_USE_SELECT, X31CWebConst.DATABEAN_SET_VALUE, "0");
					}

					// チケット利用申請依頼リスト.施策コード ← ｅｏプレミアムクラブ申請条件リスト.ｅｏプレミアムクラブ施策コード
					subbean.sendMessageString(FM_CONST_SISAK_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(EOPRMCL_SISAK_CD));
					// チケット利用申請依頼リスト.施策名 ← ｅｏプレミアムクラブ申請条件リスト.ｅｏプレミアムクラブ施策名
					subbean.sendMessageString(FM_CONST_SISAK_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(EOPRMCL_SISAK_NM));
					// チケット利用申請依頼リスト.必要ポイント数 ← ｅｏプレミアムクラブ申請条件リスト.必要ポイント数
					subbean.sendMessageString(FM_CONST_NECESSARY_POINT_CNT, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(NECESSARY_POINT_CNT));
					// チケット利用申請依頼リスト.キャンペーン登録契機コード ← ｅｏプレミアムクラブ申請条件リスト.キャンペーン登録契機コード
					subbean.sendMessageString(FM_CONST_CMP_ADD_OPTNTY_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CMP_ADD_OPTNTY_CD));
					// チケット利用申請依頼リスト.工事案件連絡事項付加文言 ← ｅｏプレミアムクラブ申請条件リスト.工事案件連絡事項付加文言
					subbean.sendMessageString(FM_CONST_KOJIAK_RRK_JIKO_HUKA_MNGN, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(KOJIAK_RRK_JIKO_HUKA_MNGN));
					
				}

			}
		}
		DEBUG_LOG.info("JFUEoPremiumClubDsp ================================================= END");

	}

	/**
	 * 
	 * パラメータ未設定部分の初期化
	 * 
	 * <br>
	 * @param dsp_sisak_settei 画面施策リスト表示パラメータ
	 * @return 画面施策リスト表示パラメータ
	 */
	@SuppressWarnings("unchecked")
	private static HashMap initDspSettei(HashMap dsp_sisak_settei)
	{

		String propKey = (String)dsp_sisak_settei.get(PARAM_PROP_KEY);
		if (propKey == null)
		{
			dsp_sisak_settei.put(PARAM_PROP_KEY, new String());
		}

		Map<String, List<String>> grpSisakList = (Map<String, List<String>>)dsp_sisak_settei.get(PARAM_GRP_SISAK_LIST);
		if (grpSisakList == null)
		{
			dsp_sisak_settei.put(PARAM_GRP_SISAK_LIST, new HashMap<String, List<String>>());
		}

		Map<String, List<String>> opsvc_cd_map = (Map<String, List<String>>)dsp_sisak_settei.get(PARAM_OPSVCCD_MAP);
		if (opsvc_cd_map == null || opsvc_cd_map.size() == 0)
		{
			opsvc_cd_map = new HashMap<String, List<String>>();
		}
		if (opsvc_cd_map.size() == 0)
		{
			opsvc_cd_map.put(PARAM_OPSVC_TAISYO_LIST, new ArrayList<String>());
			opsvc_cd_map.put(PARAM_OPSVC_MSKM_LIST, new ArrayList<String>());
			dsp_sisak_settei.put(PARAM_OPSVCCD_MAP, opsvc_cd_map);
		}

		if (dsp_sisak_settei.get(PARAM_SISAK_JGI_LIST) == null) {
			dsp_sisak_settei.put(PARAM_SISAK_JGI_LIST, new ArrayList<String>());
		}
		if (dsp_sisak_settei.get(PARAM_TAISYO_SISAK_LIST) == null) {
			dsp_sisak_settei.put(PARAM_TAISYO_SISAK_LIST, new ArrayList<String>());
		}

		return dsp_sisak_settei;
	}

	/**
	 * チケット利用申請依頼リストの編集処理を実行するか判定する。
	 * 
	 * <br>
	 * @param apiErrFlg APIエラーフラグ
	 * @param iraiList チケット利用申請依頼リスト[画面編集先]
	 * @param sif_result_map eoプレミアムクラブSIF呼出結果
	 * @param zanTicketPointCnt 保有ｅｏポイント数
	 * @return
	 */
	private static boolean isExecuteDspSet(String apiErrFlg, X31SDataBeanAccessArray iraiList, HashMap<String, Object> sif_result_map,
			long zanTicketPointCnt)
	{
		if (!JFUStrConst.API_ERR_FLG_OK.equals(apiErrFlg))
		{
			return false;
		}
		if (iraiList == null)
		{
			return false;
		}
		if (sif_result_map == null)
		{
			return false;
		}
		if (!sif_result_map.containsKey(EO_PREMIUM_CLUB_SNS_JKN_LIST))
		{
			return false;
		}
		if (zanTicketPointCnt == 0)
		{
			return false;
		}
		return true;
	}

	/**
	 * 「割引サービス契約一覧照会（サービス契約番号）SC」の情報から申請中・使用中の施策を取得する。 <br> 
	 * （※ＧＨ機器購入などで同一キャンペーンに複数施策がある場合、施策コードは仮値となる）
	 * 
	 * <br> 
	 * @param sif_result_map eoプレミアムクラブSIF呼出結果
	 * @param wribsvcCdToSisakMap 割引サービスコード→施策コード変換マップ
	 * @return 割引サービス契約に申請中・使用中（受付済、サービス提供中）の施策コードリスト[チェック用仮値]
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private static List<String> getWribList(HashMap<String, Object> sif_result_map, Map<String, String> wribsvcCdToSisakMap) throws Exception
	{

		List<String> resultList = new ArrayList();

		ArrayList childList = null;

		if (sif_result_map != null && sif_result_map.containsKey(WRIB_SVC_LIST))
		{
			childList = (ArrayList)sif_result_map.get(WRIB_SVC_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				// 割引サービスコードを取得
				String wribSvcCd = (String)childMap.get("wrib_svc_cd");
				// 割引サービス契約ステータスを取得
				String wribSvcKeiStat = (String)childMap.get("wrib_svc_kei_stat");

				// 受付済、サービス提供中の状態のものを取得する。
				if (!WRIB_SVC_KEI_STAT_RIYYO.contains(wribSvcKeiStat))
				{
					continue;
				}

				// 割引サービスコードに対応する施策コードを取得
				String sisakCd = wribsvcCdToSisakMap.get(wribSvcCd);

				if (!JFUCommonUtil.isNull(sisakCd))
				{
					String[] sisakCds = sisakCd.split(JFUStrConst.COMMA);
					for (int j = 0; j < sisakCds.length; j++)
					{
						if (!JFUCommonUtil.isNull(sisakCds[j]))
						{
							resultList.add(sisakCds[j]);
						}
					}
				}
			}
		}
		return resultList;

	}

	/**
	 * 「割引サービス契約一覧照会（サービス契約番号）SC」の情報から申請中・使用中の施策を取得する。 <br> 
	 * （※ＧＨ機器購入などで同一キャンペーンに複数施策がある場合、施策コードは仮値となる）
	 * 
	 * <br> 
	 * @param sif_result_map eoプレミアムクラブSIF呼出結果
	 * @return 割引サービス契約に申請中・使用中（受付済、サービス提供中）の施策コードリスト[チェック用仮値]
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private static List<String> getWribList(HashMap<String, Object> sif_result_map) throws Exception
	{

		List<String> resultList = new ArrayList();
		ArrayList childList = null;

		if (sif_result_map != null && sif_result_map.containsKey(WRIB_SVC_LIST) && sif_result_map.containsKey(SISAK_WRIB_MAPPING_LIST))
		{
			childList = (ArrayList)sif_result_map.get(WRIB_SVC_LIST);
			ArrayList<HashMap<String, String>> sisakWribMapingList = (ArrayList)sif_result_map.get(SISAK_WRIB_MAPPING_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				// 割引サービスコードを取得
				String wribSvcCd = (String)childMap.get("wrib_svc_cd");
				// 割引サービス契約ステータスを取得
				String wribSvcKeiStat = (String)childMap.get("wrib_svc_kei_stat");

				// 受付済、サービス提供中の状態のものを取得する。
				if (!WRIB_SVC_KEI_STAT_RIYYO.contains(wribSvcKeiStat))
				{
					continue;
				}

				// 割引サービスコードに対応する施策コードを取得
				for (HashMap<String, String> wMap : sisakWribMapingList)
				{
					if (wribSvcCd.equals(wMap.get(WRIB_SVC_CD))) {
						resultList.add(wMap.get(EOPRMCL_SISAK_CD));
					}
				}
			}
		}
		return resultList;

	}

	/**
	 * 「オプションサービス契約済 又は 申込対象」で施策利用可能か判定を行います。 <br>
	 * 
	 * <br>
	 * @param mstlistSisakCd ｅｏプレミアムクラブ申請条件リストの施策コード
	 * @param opSvcSisakList オプションサービス施策（契約状態未考慮）
	 * @param enabledOpSisakList オプションサービス契約対象の施策（契約状態考慮）
	 * @return true時：利用可能、false時：利用不可
	 */
	private static boolean isEnabledOpTicket(String mstlistSisakCd, List<String> opSvcSisakList, List<String> enabledOpSisakList)
	{

		// ■オプションサービスの施策が利用可能か判定
		if (opSvcSisakList.contains(mstlistSisakCd))
		{
			if (enabledOpSisakList.contains(mstlistSisakCd))
			{
				// オプションサービス契約済 又は 申込対象
				return true;
			}
			return false;
		}

		// オプションサービス以外の施策
		return true;
	}

	/**
	 * チケットが申請中か判定を行います。 <br>
	 * ※eo顧客DB未反映分<br>
	 * ※登録契機"配送"（「出荷完了日＋10日」に確定）などの情報をチェック<br>
	 * 
	 * <br>
	 * @param mstlistSisakCd ｅｏプレミアムクラブ申請条件リストの施策コード
	 * @param sinsList チケット申請履歴一覧
	 * @param grpSisakList 割引サービス契約、施策適用中チェックを行う対象の施策情報
	 * @param existsWribSisakList 割引サービス契約テーブルに適用中の情報（割引サービスコード、施策）
	 * @param opeDate 運用日付
	 * @param startDate 猶予期間を考慮した日付
	 * @param svcKeiNo サービス契約番号
	 * @param isSysidCheck sysidチェックの場合true
	 * @return true時：申請中、false時：申請中でない（未申請、適用済）
	 */
	@SuppressWarnings("unchecked")
	private static boolean isUsedGrpTicket(String mstlistSisakCd, List sinsList, Map<String, List<String>> grpSisakList,
			List<String> existsWribSisakList, String opeDate, String startDate, String svcKeiNo, boolean isSysidCheck)
	{

		List<String> currentGrpList = null;
		if (grpSisakList != null && grpSisakList.size() > 0)
		{
			// 同一キャンペーンに属する施策コードを取得する。（親キー：フロントで登録する際に使用する施策コード）
			currentGrpList = grpSisakList.get(mstlistSisakCd);
		}
		if (currentGrpList == null || currentGrpList.size() == 0)
		{
			return false;
		}

		// ■API チケット申請履歴一覧
		if (sinsList != null && sinsList.size() > 0)
		{
			// チケット申請履歴一覧 ループ
			for (int i = 0; i < sinsList.size(); i++)
			{
				HashMap sinsMap = (HashMap)sinsList.get(i);
				if (sinsMap == null)
				{
					continue;
				}
				String currentSiskCd = (String)sinsMap.get(API_SINSLIST_SISK_CD);
				if (JFUCommonUtil.isNull(currentSiskCd))
				{
					continue;
				}
				// サービス契約番号単位チェックの場合は、同一サービス契約番号の場合にチェック
				if ((!isSysidCheck) && (svcKeiNo != null) && (!svcKeiNo.equals((String)sinsMap.get(API_SINSLIST_SVC_KEI_NO))))
				{
					continue;
				}
				// 対象となる施策コードのみチェックを行う
				if (!currentGrpList.contains(currentSiskCd))
				{
					continue;
				}
				if (JFUStrConst.TRANK_SISK_STS_CD_SINS.equals((String)sinsMap.get(API_SINSLIST_SISK_STS_CD)))
				{
					// 施策ステータスコード＝申請中の場合
					return true;
				}
				else if (JFUStrConst.TRANK_SISK_STS_CD_SUMI.equals((String)sinsMap.get(API_SINSLIST_SISK_STS_CD)))
				{
					// 「施策ステータスコード＝利用済」 かつ
					// 「割引サービス契約が存在しない」 かつ 「APIの処理日（申請日）＋猶予日数」
					// [補足]割引サービスが存在する場合は後続処理のチェックで対象外となる
					if (!existsWribSisakList.contains(mstlistSisakCd))
					{
						if (!JFUCommonUtil.isNull((String)sinsMap.get(API_SINSLIST_SHORI_YMD)))
						{
							String wDate = (String)sinsMap.get(API_SINSLIST_SHORI_YMD);
							if ((Integer.parseInt(startDate) <= Integer.parseInt(wDate)) && (Integer.parseInt(wDate) <= Integer.parseInt(opeDate)))
							{
								return true;
							}
						}
					}
				}
			}
		}

		return false;
	}

	/**
	 * チケットが申請中か判定を行います。 <br>
	 * ※eo顧客DB反映済
	 * 
	 * <br>
	 * @param mstlistSisakCd ｅｏプレミアムクラブ申請条件リストの施策コード
	 * @param existsWribSisakList 割引サービス契約に申請中・使用中（受付済、サービス提供中）の施策コードリスト[チェック用仮値]
	 * @param grpSisakList
	 * @return true時：申請中、false時：申請中でない（未申請、適用済）
	 */
	private static boolean isUsedTicket(String mstlistSisakCd, List<String> existsWribSisakList, Map<String, List<String>> grpSisakList)
	{

		// 割引サービスで紐づく施策を追加
		List<String> currentGrpList = new ArrayList<String>();
		if (grpSisakList != null && grpSisakList.size() > 0)
		{
			// 同一キャンペーンに属する施策コードを取得する。（親キー：フロントで登録する際に使用する施策コード）
			currentGrpList = grpSisakList.get(mstlistSisakCd);
		}
		if (currentGrpList == null || currentGrpList.size() == 0)
		{
			return false;
		}

		for (int idx = 0; idx < currentGrpList.size(); idx++)
		{
			// ■割引サービス契約に存在する場合
			if (existsWribSisakList.contains(currentGrpList.get(idx)))
			{
				return true;
			}
		}

		return false;
	}

	/**
	 * 既に適用済の施策コードか判定を行います。（アップグレード施策適用済判定処理結果） <br>
	 * 
	 * <br>
	 * @param mstlistSisakCd ｅｏプレミアムクラブ申請条件リストの施策コード
	 * @param sysidCheckNetChgList チェックが必要な施策コード一覧
	 * @param upgradeSisakResult true：アップグレード施策除外する、false：除外しない
	 * @return true時：申請中、false時：申請中でない（未申請、適用済）
	 */
	private static boolean isUsedUpgradeSisak(String mstlistSisakCd, List<String> sysidCheckNetChgList, boolean upgradeSisakResult)
	{

		// ■割引サービス契約に存在する場合
		if (sysidCheckNetChgList.contains(mstlistSisakCd) && upgradeSisakResult)
		{
			return true;
		}
		return false;
	}

	/**
	 * 複数チケットの選択肢作成情報取得。
	 * 
	 * <br>
	 * @param zanTicketPointCnt 保有ｅｏポイント数
	 * @param dspList 作業用リスト（施策選択肢作成情報）
	 * @param pairMap 複合チケットの施策情報
	 * @return 選択肢作成情報
	 */
	private static HashMap<String, String> getPairTicketInfo(long zanTicketPointCnt, ArrayList<HashMap<String, String>> dspList, Map<String, String> pairMap)
	{

		int enableTicket = 0;
		long pairNecessaryCnt = 0;
		String eoprmclSisakNmdwk = JFUStrConst.EMPTY;
		String pairCmpAddOptntyCdWk = JFUStrConst.EMPTY;
		String kojiakRrkJikoHukaMngnWk = JFUStrConst.EMPTY;
		// 例）B002,E007,E008
		String pairSisakCd = pairMap.get(EOPRMCL_SISAK_CD);
		HashMap<String, String> rtnMap = new HashMap<String, String>();
		if (JFUCommonUtil.isNull(pairSisakCd))
		{
			return rtnMap;
		}
		String[] pairSisak = pairSisakCd.split(JFUStrConst.COMMA, 0);
		String pairSisakNm = pairMap.get(EOPRMCL_SISAK_NM);

		for (String wChildSisak : pairSisak)
		{
			for (Map<String, String> wMap : dspList)
			{
				if (wMap.get(EOPRMCL_SISAK_CD).equals(wChildSisak))
				{
					enableTicket++;
					// ｅｏプレミアムクラブ申請条件リスト.必要ポイント数

					String ticketCnt = getNullToEmpty(wMap, NECESSARY_POINT_CNT);
					if (!JFUStrConst.EMPTY.equals(ticketCnt))
					{
						pairNecessaryCnt += Long.parseLong(ticketCnt);
					}

					// eoプレミアムクラブ施策.ｅｏプレミアムクラブ施策名
					eoprmclSisakNmdwk = setStrNmAdd(eoprmclSisakNmdwk, wMap, EOPRMCL_SISAK_NM);
					// eoプレミアムクラブ施策.キャンペーン登録契機コード
					pairCmpAddOptntyCdWk = setStrCommaAdd(pairCmpAddOptntyCdWk, wMap, CMP_ADD_OPTNTY_CD);
					// eoプレミアムクラブ施策.工事案件連絡事項付加文言
					kojiakRrkJikoHukaMngnWk = setStrCommaAdd(kojiakRrkJikoHukaMngnWk, wMap, KOJIAK_RRK_JIKO_HUKA_MNGN);
					break;
				}
			}
		}
		// 複合チケットが使用可能な場合、編集結果を返却する。
		if (pairSisak.length == enableTicket && zanTicketPointCnt >= pairNecessaryCnt)
		{
			rtnMap.put(EOPRMCL_SISAK_CD, pairSisakCd);
			rtnMap.put(EOPRMCL_SISAK_NM, pairSisakNm);
			rtnMap.put(CMP_ADD_OPTNTY_CD, pairCmpAddOptntyCdWk);
			rtnMap.put(NECESSARY_POINT_CNT, String.valueOf(pairNecessaryCnt));
			rtnMap.put(KOJIAK_RRK_JIKO_HUKA_MNGN, String.valueOf(kojiakRrkJikoHukaMngnWk));
			return rtnMap;
		}
		return rtnMap;
	}

	/**
	 * 
	 * オプションサービスの申込状態を取得します。
	 * 
	 * <br>
	 * @param sif_result_map eoプレミアムクラブSIF呼出結果
	 * @param opsvcCdToSisakMap オプションサービスコード→施策コード変換マップ
	 * @param opSvcTaisyoList オプションサービスコード対象リスト
	 * @param opSvcMskmList オプションサービスコード申込リスト
	 * @param opSvcSisakList [返却]オプションサービス契約対象の施策（契約状態未考慮）
	 * @param enabledOpSisakList [返却]オプションサービス契約対象の施策（契約状態考慮）
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private static void getOpsvcMskm(HashMap<String, Object> sif_result_map, Map<String, String> opsvcCdToSisakMap, List<String> opSvcTaisyoList,
			List<String> opSvcMskmList, List<String> opSvcSisakList, List<String> enabledOpSisakList) throws Exception
	{

		// オプションサービス対象分
		for (String opSvcCd : opSvcTaisyoList)
		{
			String sisakCd = opsvcCdToSisakMap.get(opSvcCd);
			if (!JFUCommonUtil.isNull(sisakCd))
			{
				opSvcSisakList.add(sisakCd);
			}
		}
		// オプションサービス申込対象分
		for (String opSvcCd : opSvcMskmList)
		{
			String sisakCd = opsvcCdToSisakMap.get(opSvcCd);
			if (!JFUCommonUtil.isNull(sisakCd))
			{
				enabledOpSisakList.add(sisakCd);
			}
		}

		// オプションサービス契約済か判定
		if (sif_result_map != null && sif_result_map.containsKey(OP_SVC_LIST))
		{
			ArrayList childList = (ArrayList)sif_result_map.get(OP_SVC_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				// オプションサービスコードを取得
				String opSvcCd = (String)childMap.get("op_svc_cd");
				// オプションサービス契約ステータスを取得
				String opSvcKeiStat = (String)childMap.get("op_svc_kei_stat");

				// 対象のオプションサービスコードか判定する。
				if (!opSvcTaisyoList.contains(opSvcCd))
				{
					continue;
				}
				// 有効な契約状態を取得する。
				if (OP_SVC_KEI_STAT_MUKO.contains(opSvcKeiStat))
				{
					continue;
				}
				// オプションサービスコードに対応する施策コードを取得
				String sisakCd = opsvcCdToSisakMap.get(opSvcCd);
				if (!JFUCommonUtil.isNull(sisakCd))
				{
					enabledOpSisakList.add(sisakCd);
				}
			}
		}

	}

	/**
	 * オプションサービスコード→施策コード変換マップ取得
	 * 
	 * <br>
	 * @param queryPath プロパティパス
	 * @return オプションサービスコード→施策コード変換マップ
	 * @throws Exception
	 */
	private static Map<String, String> getOpsvcCdToSisakMap(String queryPath) throws Exception
	{
		Map<String, String> wMap = getDispItem(queryPath);
		return wMap;
	}

	/**
	 * 割引サービスコード→施策コード変換マップ取得
	 * 
	 * <br>
	 * @param propKey 定義体のフォームID
	 * @return オプションサービスコード→施策コード変換マップ
	 * @throws Exception
	 */
	private static Map<String, String> getWribsvcCdToSisakMap(String propKey) throws Exception
	{
		Map<String, String> wMap = getDispItem(QUERY_PATH_WRIB_SVC_CD, propKey);
		return wMap;
	}

	/**
	 * プロパティファイルから情報を取得（FUDispDefinition.xml）。
	 * 
	 * <br>
	 * @param QueryPath プロパティパス
	 * @param propKey 定義体のフォームID
	 * @return 取得情報
	 * @throws Exception
	 */
	private static Map<String, String> getDispItem(String QueryPath, String propKey) throws Exception
	{
		String propPath = QueryPath.replace(QUERY_REPLACE_SCREENID, propKey);
		Map<String, String> wMap = JFUWebCommon.getDispItemsAsMap(propPath, QUERY_ATTR_NAME);
		if (wMap == null || wMap.size() == 0)
		{
			return new HashMap<String, String>();
		}
		return wMap;
	}

	/**
	 * プロパティファイルから情報を取得（FUDispDefinition.xml）。
	 * 
	 * <br>
	 * @param queryPath プロパティパス
	 * @return 取得情報
	 * @throws Exception
	 */
	private static Map<String, String> getDispItem(String queryPath) throws Exception
	{
		Map<String, String> wMap = JFUWebCommon.getDispItemsAsMap(queryPath, QUERY_ATTR_NAME);
		if (wMap == null || wMap.size() == 0)
		{
			return new HashMap<String, String>();
		}
		return wMap;
	}

	/**
	 * プロパティ取得
	 * 
	 * <br>
	 * @param queryPath 定義体のフォームID
	 * @return 定義値
	 * @throws Exception
	 */
	private static String getDispItemStr(String queryPath) throws Exception
	{
		return JFUWebCommon.getDispItem(queryPath);
	}

	/**
	 * プロパティ取得
	 * 
	 * <br>
	 * @param queryPath 定義体のフォームID
	 * @return 定義値をリスト変換
	 * @throws Exception
	 */
	private static List<String> getDispItemToList(String queryPath) throws Exception
	{
		String wStr = JFUWebCommon.getDispItem(queryPath);
		String[] strL = wStr.split(JFUStrConst.COMMA);
		List<String> resultList = Arrays.asList(strL);
		return resultList;
	}

	/**
	 * マップ情報から指定された項目の値を取得します。
	 * （null値を空文字に変換）
	 * 
	 * <br>
	 * @param childMap map
	 * @param itemName mapから取得する項目名
	 * @return 編集結果
	 */
	@SuppressWarnings("unchecked")
	private static String getNullToEmpty(Map childMap, String itemName)
	{
		String retVal = JFUStrConst.EMPTY;
		if (childMap != null)
		{
			retVal = (String)childMap.get(itemName);
		}
		if (retVal == null)
		{
			return JFUStrConst.EMPTY;
		}
		return retVal;
	}

	/**
	 * 文字列をカンマ区切りで連結します。
	 * 
	 * <br>
	 * @param strWk 結合先の文字列
	 * @param childMap 結合する文字が格納されているmap
	 * @param itemName mapから取得する項目名
	 * @return 編集結果
	 */
	private static String setStrCommaAdd(String strWk, Map<String, String> childMap, String itemName)
	{

		if (JFUStrConst.EMPTY.equals(strWk))
		{
			return getNullToEmpty(childMap, itemName);
		}

		return strWk + JFUStrConst.COMMA + getNullToEmpty(childMap, itemName);
	}

	/**
	 * ｅｏプレミアムクラブ施策名を連結します。
	 * 
	 * <br>
	 * @param strWk 結合先の文字列
	 * @param childMap 結合する文字が格納されているmap
	 * @param itemName mapから取得する項目名
	 * @return 編集結果
	 */
	private static String setStrNmAdd(String strWk, Map<String, String> childMap, String itemName)
	{

		if (JFUStrConst.EMPTY.equals(strWk))
		{
			return getNullToEmpty(childMap, itemName);
		}

		return strWk + JFUStrConst.COMMA + getNullToEmpty(childMap, itemName);
	}

	/**
	 * パラメータの複合施策マップをリストに変換。
	 * 
	 * <br>
	 * <br>
	 * プロパティから取得した内容を、施策コードと施策名称に組み合わせたリストを作成する。
	 * 
	 * @param sisak_hukugo_list
	 * @return 複合施策リスト
	 */
	private static List<Map<String, String>> convPairList(ArrayList<HashMap<String, Object>> sisak_hukugo_list)
	{

//		eoprmcl_sisak_cd:String,E002
//		eoprmcl_sisak_nm:String,eoセキュリティーパック費用 割引（12回分）
//		sisak_henshu_jun:String,1
//		sisak_ptn_cd:String,000003
//		sisak_ptn_sbt_cd:String,1

		List<Map<String, String>> pairSisakList = new ArrayList<Map<String, String>>();

		if (sisak_hukugo_list == null || sisak_hukugo_list.size() == 0)
		{
			return pairSisakList;
		}
		String oldKey = JFUStrConst.EMPTY;
		String newKey = JFUStrConst.EMPTY;
		String sisakCd = JFUStrConst.EMPTY;
		String sisakNm = JFUStrConst.EMPTY;
		Map<String, String> wkMap = new HashMap<String, String>();
		for (HashMap<String, Object> childMap : sisak_hukugo_list)
		{
			String mapSisakCd = (String)childMap.get("eoprmcl_sisak_cd");
			String mapSisakNm = (String)childMap.get("eoprmcl_sisak_nm");
			if (JFUCommonUtil.isNull(mapSisakCd) || JFUCommonUtil.isNull(mapSisakNm))
			{
				continue;
			}

			newKey = (String)childMap.get("sskptn_cd");
			if ((!JFUWebCommon.isNull(oldKey)) && (!newKey.equals(oldKey)))
			{
				wkMap.put(EOPRMCL_SISAK_CD, sisakCd);
				wkMap.put(EOPRMCL_SISAK_NM, sisakNm);
				pairSisakList.add(wkMap);
				wkMap = new HashMap<String, String>();
				sisakCd = JFUStrConst.EMPTY;
				sisakNm = JFUStrConst.EMPTY;
			}
			oldKey = newKey;
			sisakCd = editComma(sisakCd, mapSisakCd);
			sisakNm = editSisakName(sisakNm, mapSisakNm, CON_EDIT_MARK);
		}

		if (!JFUWebCommon.isNull(oldKey))
		{
			wkMap.put(EOPRMCL_SISAK_CD, sisakCd);
			wkMap.put(EOPRMCL_SISAK_NM, sisakNm);
			pairSisakList.add(wkMap);
		}
		return pairSisakList;
	}

	/**
	 * デバッグ用
	 * 
	 * <br>
	 * @param wName 文字列
	 * @param wList List
	 * @return 施策コード→割引サービスコード変換マップ
	 * @throws Exception
	 */
	private static void debugList(String wName, List<String> wList) throws Exception
	{

		if (wList == null || wList.size() == 0)
		{
			return;
		}

		for (String wStr : wList)
		{
			DEBUG_LOG.info("JFUEoPremiumClubDsp " + wName + "     " + " = [" + wStr + "]");
		}
		return;
	}

	/**
	 * デバッグ用
	 * 
	 * <br>
	 * @param wName 文字列
	 * @param wMap マップ
	 * @return 施策コード→割引サービスコード変換マップ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private static void debugMap(String wName, Map<String, String> wMap) throws Exception
	{

		if (wMap == null || wMap.size() == 0)
		{
			return;
		}
		Set<String> keySet = wMap.keySet();
		Iterator ite = keySet.iterator();

		while (ite.hasNext())
		{
			String key = (String)ite.next();
			DEBUG_LOG.info("JFUEoPremiumClubDsp " + wName + "     " + key + " = [" + wMap.get(key) + "]");
		}
		return;
	}

	/**
	 * 保有ポイント数を取得する。
	 * 
	 * @param hoyuPointSu 保有ｅｏポイント数
	 * @return 保有ポイント数
	 */
	private static long getZansu(String hoyuPointSu)
	{
		long zanTicketPointCnt = 0;
		if (!JFUWebCommon.isNull((hoyuPointSu)))
		{
			zanTicketPointCnt = Long.parseLong(hoyuPointSu);
		}
		return zanTicketPointCnt;
	}

	/**
	 * 対象施策リストを取得する。</br>
	 * 基本はマスタから取得するため、申し込み内容によって絞り込みがさらに必要な場合にのみ設定する。
	 * 
	 * @param queryPath 定義体のフォームID
	 * @return 対象施策リスト
	 * @throws Exception
	 */
	public static List<String> getTaisyoSisakList(String queryPath) throws Exception
	{
		String wSisak = getDispItem(queryPath).get(QUERY_TAISYO);
		List<String> taisyoSisakList = new ArrayList<String>();
		if (wSisak != null && !JFUStrConst.EMPTY.equals(wSisak))
		{
			String[] sisakL = wSisak.split(JFUStrConst.COMMA);
			taisyoSisakList = Arrays.asList(sisakL);
		}
		return taisyoSisakList;
	}

	/**
	 * 対象施策リストを取得する。</br>
	 * 基本はマスタから取得するため、申し込み内容によって絞り込みがさらに必要な場合にのみ設定する。
	 * 
	 * @param queryPath 定義体のフォームID
	 * @return 対象施策リスト
	 * @throws Exception
	 */
	public static List<String> getCommonList(String queryPath) throws Exception
	{
		String wSisak = getDispItem(queryPath).get(QUERY_TAISYO);
		List<String> taisyoSisakList = new ArrayList<String>();
		if (wSisak != null && !JFUStrConst.EMPTY.equals(wSisak))
		{
			String[] sisakL = wSisak.split(JFUStrConst.COMMA);
			taisyoSisakList = Arrays.asList(sisakL);
		}
		return taisyoSisakList;
	}

	/** 
	 * 割引サービス一覧取得実行フラグ
	 * 
	 * @param queryPath 定義体のフォームID
	 * @param propId プロパティID
	 * @return 割引サービス一覧取得実行フラグ
	 * @throws Exception
	 */
	public static String getWribShokaiFlg(String queryPath) throws Exception
	{
		if (getGroupSisakList(queryPath).size() == 0)
		{
			return JFUStrConst.EMPTY;
		}
		return FLG_ON;
	}

	/**
	 * 割引サービス契約、施策適用中チェックを行う対象の施策情報を取得する。</br>
	 * 
	 * @param queryPath 定義体のフォームID
	 * @return 対象施策リスト
	 * @throws Exception
	 */
	public static Map<String, List<String>> getGroupSisakList(String queryPath) throws Exception
	{

//		<DISPTEXT groupid="EOPRMCL_WRIB_PLANCHG" id="CHECK_1">A006,A007,A008</DISPTEXT>
//		<DISPTEXT groupid="EOPRMCL_WRIB_PLANCHG" id="CHECK_2">E003,E010</DISPTEXT>
//		<DISPTEXT groupid="EOPRMCL_WRIB_PLANCHG" id="CHECK_3">F001</DISPTEXT>
//		↓ のように編集
//		A006	{A006,A007,A008}
//		A007	{A006,A007,A008}
//		A008	{A006,A007,A008}
//		E003	{E003,E010}
//		E010	{E003,E010}
//		F001	{F001}
		
		Map<String, List<String>> resultList = new HashMap<String, List<String>>();
		Map<String, String> wSisakMap = getDispItem(queryPath);
		if (wSisakMap == null || wSisakMap.size() == 0)
		{
			return resultList;
		}

		Set<String> keySet = wSisakMap.keySet();
		Iterator ite = keySet.iterator();
		while (ite.hasNext())
		{
			String wKey = (String)ite.next();
			String wSisak = wSisakMap.get(wKey);
			String[] sisakL = wSisak.split(JFUStrConst.COMMA);
			List<String> grpSisakList = Arrays.asList(sisakL);
			for (int idx = 0; idx < grpSisakList.size(); idx++)
			{
				resultList.put(grpSisakList.get(idx), grpSisakList);
			}
		}
		return resultList;
	}

	/**
	 * 施策除外リストを設定する。
	 * @param screenId 画面ID
	 * @param koji_sbt 工事種別(FUW071)
	 * @param tkn_router_musen_mskm eo光多機能ルーター申込(FUW013)
	 * @param net_flix_mskm ファミリーパック有無(FUW013)
	 * @param sisakJgiList 施策除外リスト
	 * @return 施策除外リスト
	 * @throws Exception 
	 */
	public static List<String> getJgiList(String screenId, String koji_sbt, boolean tkn_router_musen_yuryo, boolean net_flix_mskm,
			List<String> sisakJgiList) throws Exception
	{

		if (screenId == null)
		{
			return sisakJgiList;
		}
		// 「eo光多機能ルーター（無線ルーター機能）費用　無料」
		String eoprmcl_cp_cd_takino_musen = getDispItemStr(EOPRMCL_CP_CD_TAKINO_MUSEN);
		// 「ｅｏ光Ｎｅｔｆｌｉｘパック割引」
		String eoprmcl_cp_cd_netflix = getDispItemStr(EOPRMCL_CP_CD_NETFLIX);
		// 「eo無線LAN中継機レンタルサービス費用　無料」
		String eoprmcl_cp_cd_musen_lan = getDispItemStr(EOPRMCL_CP_CD_MUSEN_LAN);

		if (screenId.startsWith("FUW013"))
		{
			if (!tkn_router_musen_yuryo)
			{
				sisakJgiList = addList(sisakJgiList, eoprmcl_cp_cd_takino_musen);
			}
			else if (JFUStrConst.KOJI_SBT_019.equals(koji_sbt) || JFUStrConst.KOJI_SBT_020.equals(koji_sbt))
			{
				// 工事種別 「無線ルーター機能無料」または 「無線ルーター機能と無線LAN中継機両方無料」マンションの場合
				sisakJgiList = addList(sisakJgiList, eoprmcl_cp_cd_takino_musen);
			}
			if (!net_flix_mskm)
			{
				sisakJgiList = addList(sisakJgiList, eoprmcl_cp_cd_netflix);
			}
		}
		else if (screenId.startsWith("FUW071"))
		{
			// <マンション> ファミリーパック無し かつ 無線ルーター機能申し込まれている場合
			if (JFUStrConst.KOJI_SBT_019.equals(koji_sbt) || JFUStrConst.KOJI_SBT_020.equals(koji_sbt))
			{
				// 工事種別 「多機能ルーター（無線ルーター機能）のみ無料」または「多機能ルーター（無線ルーター機能）と無線LAN中継機両方無料」マンションの場合
				sisakJgiList = addList(sisakJgiList, eoprmcl_cp_cd_takino_musen);
				if (JFUStrConst.KOJI_SBT_020.equals(koji_sbt))
				{
					// 工事種別 「多機能ルーター（無線ルーター機能）と無線LAN中継機両方無料」マンションの場合
					sisakJgiList = addList(sisakJgiList, eoprmcl_cp_cd_musen_lan);
				}
			}
		}
		return sisakJgiList;
	}

	/**
	 * アップグレード施策適用済判定処理結果
	 * 
	 * @param upgrade_sisak_check true：チェックOK、false：チェックNG
	 * @param grpSisakList 割引サービスチェック対象の施策リスト
	 * @param sysidCheckNetChgList eo光ネットプラン変更 SYSID単位の割引サービスチェック対象
	 * @return true：アップグレード施策使用済のため除外する、false：それ以外
	 */
	private static boolean upgradeSisakResult(Boolean upgrade_sisak_check, Map<String, List<String>> grpSisakList, List<String> sysidCheckNetChgList)
	{
		if (upgrade_sisak_check == null || (upgrade_sisak_check))
		{
			// アップグレード施策適用済判定処理がOK（未使用）の場合
			return false;
		}
		for (int idx = 0; idx < sysidCheckNetChgList.size(); idx++)
		{
			if (grpSisakList.containsKey(sysidCheckNetChgList.get(idx)))
			{
				return true;
			}
		}
		return false;
	}

	/**
	 * リスト追加
	 * 
	 * @param sisakJgiList 編集先
	 * @param val 値
	 * @return 編集結果
	 */
	private static List<String> addList(List<String> sisakJgiList, String val)
	{
		if (JFUWebCommon.isNull(val))
		{
			return sisakJgiList;
		}

		String[] sisakL = val.split(JFUStrConst.COMMA);

		for (int idx = 0; idx < sisakL.length; idx++)
		{
			sisakJgiList.add(sisakL[idx]);
		}
		return sisakJgiList;
	}

	/**
	 * カンマ区切り編集
	 * 
	 * @param rtnVal 編集先
	 * @param val 追加文字
	 * @return 編集結果
	 */
	private static String editComma(String rtnVal, String val)
	{
		return editSisakName(rtnVal, val, JFUStrConst.COMMA);
	}

	/**
	 * 連結
	 * 
	 * @param rtnVal 編集先
	 * @param val 追加文字
	 * @return 編集結果
	 */
	private static String editSisakName(String rtnVal, String val, String editMark)
	{
		if (JFUWebCommon.isNull(rtnVal))
		{
			return val;
		}
		return rtnVal + editMark + val;
	}

	/**
	 * プロパティパスを取得。
	 * 
	 * <br>
	 * @param queryPath 元：プロパティパスの設定
	 * @param propKey 置換文字列：定義体のフォームID
	 * @return プロパティの検索パス
	 * @throws Exception
	 */
	private static String getQueryPath(String queryPath, String propKey) throws Exception
	{
		String propPath = queryPath.replace(QUERY_REPLACE_SCREENID, propKey);
		return propPath;
	}

// 以下はSMP施策で廃止となったが、ロジックが残存 START */
    /**
	*「申込内容に対応した割引サービス（施策）」が適用中か判定を行う。
	* 
	* <br>
	* @param sif_result_map SIF呼出結果
	* @param propKey 定義体のフォームID
	* @param taishoSisakList 申込内容に対応した施策コード
	* @return true：割引適用中、false：適用なし
	* @throws Exception 
	*/
	public static boolean isUsedWaribiki(HashMap sif_result_map, String propKey, List<String> taishoSisakList) throws Exception
	{
		// 割引されている施策コードの一覧を取得
		List<String> existsWribSisakList = getWribSisak(sif_result_map, propKey);

		// パラメータで指定された施策コードの一覧が１件でも割引適用中か判定
		return checkWribList(existsWribSisakList, taishoSisakList);
	}

    /**
	* 割引適用中の施策コード取得。
	* 
	* <br>
	* @param sif_result_map SIF呼出結果
	* @param propKey 定義体のフォームID
	* @return
	* @throws Exception 
	*/
	private static List<String> getWribSisak(HashMap sif_result_map, String propKey) throws Exception
	{
		Map<String, String> wribsvcCdToSisakMap = getWribsvcCdToSisakMap(propKey);
		// 割引サービス契約に登録されている[チェック用仮値]施策コード（受付済、サービス提供中）
		List<String> existsWribSisakList = getWribList(sif_result_map, wribsvcCdToSisakMap);

		return existsWribSisakList;
	}

	/**
	 * 「割引サービス契約一覧照会（サービス契約番号）SC」の情報から割引適用中か判定を行う。 <br> 
	 * 
	 * <br> 
	 * @param existsWribSisakList 割引適用中施策
	 * @param taishoSisakList 申込対象施策コード
	 * @return true：割引適用中、false：適用なし
	 * @throws Exception
	 */
	private static boolean checkWribList(List<String> existsWribSisakList, List<String> taishoSisakList) throws Exception
	{

		for (String wSisak : existsWribSisakList)
		{
			if (taishoSisakList.contains(wSisak))
			{
				return true;
			}
		}

		return false;

	}
// 以下はSMP施策で廃止となったが、ロジックが残存 END */
}
