/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0322_FUSV0322OPDBMapper
*	ソースファイル名：FUSV0322_FUSV0322OPDBMapper.java
*	作成者			：FJ
*	日付			：2018年09月11日
*＜機能概要＞
*	BP（機器補償オプション申込(申込)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者			修正内容
*   v39.00      2018/09/11  FJ）和田(さ)    【ANK-3484-00-00】端末補償サービス導入
*   v51.00      2020/10/19  FJ)美濃原   【ANK-3918-00-00】「インターネットサギウォール」「おうちの機器補償」に対してプレクラ対応を行う
*   v66.00      2023/01/31  FJ)美濃原   【ANK-4307-00-00】【eo定期】プレミアムクラブリニューアル対応
*
**********************************************************************/
package eo.web.webview.mapping;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;
import static eo.common.constant.JPCModelConstant.FUNC_CD_1;
import static eo.common.constant.JPCModelConstant.FUNC_CD_2;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW12301SF.FUW12301SFConst;
import eo.web.webview.common.JFUEoPremiumClubConst;
import eo.web.webview.common.JFUEoPremiumClubDsp;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0322_FUSV0322OPDBMapper
{
	
	// ■SC名
	/** 申込内容承認登録 */
	private static final String SC_TITLE_FUSV032201 = "FUSV032201SC";
	/** 申込明細照査・後続業務依頼 */
	private static final String SC_TITLE_FUSV032202 = "FUSV032202SC";
	// ■CC名
	/** サービスIF結果データ移送CC (機器補償操作部品) */
	private static final String CC_TITLE_FUSV032201 = "FUSV032201CC";
	/** 端末補償操作CC */
	private static final String CC_TITLE_FUSV032202 = "FUSV032202CC";
	/** 端末補償進捗登録CC */
	private static final String CC_TITLE_FUSV032203 = "FUSV032203CC";
	/** eoプレミアムクラブ施策申請条件一覧照会CC */
	private static final String CC_TITLE_FUSV032204 = "FUSV032204CC";
	/** eoプレミアムクラブ一覧照会CC 共通チェック*/
	private static final String CHK_TITLE_FUSV032204 = "JFUEoPremiumClubShokaiCC";
	/** チケット利用申請依頼CC */
	private static final String CC_TITLE_FUSV032205 = "FUSV032205CC";
	/** チケット利用申請依頼CC 共通チェック*/
	private static final String CHK_TITLE_FUSV032205 = "JFUTicketUseShinIraiCC";

	// ■SCリスト名
	/** 申込内容承認登録.申込内容承認登録明細 */
	private static final String EKK0011D020_LIST = "EKK0011D020CBSMsg1List";
	/** 進捗登録.異動理由明細 */
	private static final String EKK1091D010_LIST = "EKK1091D010CBSMsg1List";

	// ■項目キー
	/** 機能コード */
	private static final String FUNC_CODE = "func_code";
	/** SYSID */
	private static final String SYSID = "sysid";
	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "svc_kei_no";
	
	/** 処理区分 */
	private static final String SHORI_DIV = "shori_div";
	/** 申込年月日  */
	private static final String MSKM_YMD = "mskm_ymd";
	/** 登録処理区分 */
	private static final String TOROKU_DIV_REG = "2";
	/** 更新年月日時分秒(サービス契約) */
	private static final String UPD_DTM_BF = "upd_dtm_bf";
	/** 異動区分 */
	private static final String IDO_DIV = "ido_div";
	/** 異動理由コード */
	private static final String IDO_RSN_CD = "ido_rsn_cd";

	/** 登録情報リスト */
	private static final String ADD_INFO_LIST = "add_info_list";
	/** ＰＣプラン対象フラグ */
	private static final String PC_PLAN_TG_FLG = "pc_plan_tg_flg";
	/** ＰＣプラン申込日 */
	private static final String PC_PLAN_MKSM_YMD = "pc_plan_mksm_ymd";
	/** ＰＣワイドプラン対象フラグ */
	private static final String PC_WIDE_PLAN_TG_FLG = "pc_wide_plan_tg_flg";
	/** ＰＣワイドプラン申込日 */
	private static final String PC_WIDE_PLAN_MKSM_YMD = "pc_wide_plan_mksm_ymd";
	/** ＴＶプラン対象フラグ */
	private static final String TV_PLAN_TG_FLG = "tv_plan_tg_flg";
	/** ＴＶプラン申込日 */
	private static final String TV_PLAN_MKSM_YMD = "tv_plan_mksm_ymd";

	/** マップキー 移送先名取得 */
	private static final String KEY_TRAN_NAME = "tranNm";
	/** マップキー キーカウント */
	private static final String KEY_KEY_CNT = "key_cnt";
	/** マップキー キーカウント */
	private static final String KEY_CNT_1 = "1";

	/** 移送キー１ */
	private static final String TRANS_KEY_1 = "key_1";
	/** 移送キー 申込明細番号 */
	private static final String TRANS_KEY_1_VALUE_1 = "FUSV032201SC:EKK0011D020CBSMsg1List:mskm_dtl_no,add_info_list::mskm_dtl_no";

	/** 対象フラグ：対象 */
	private static final String TG_FLG_1 = "1";
	/** 契約状態：PCプランorTVプラン */
	private static final String STAT_PC_TV_PLAN = "1";

	/** 特記事項１要素を取得する際のidの値(PCプラン情報登録) */
	private static final String PRGADD_ID_ADD_PC_PLAN = "0";
	/** 特記事項１要素を取得する際のidの値(PCワイドプラン情報登録) */
	private static final String PRGADD_ID_ADD_PC_WID_PLAN = "1";
	/** 特記事項１要素を取得する際のidの値(TVプラン情報登録) */
	private static final String PRGADD_ID_ADD_TV_PLAN = "2";
	/** IN項目:進捗特記事項１（PCプラン情報登録用）  */
	private static final String IN_ADD_PRG_TKJK_1_PC_PLAN = "add_prg_tkjk_1_pc_plan";
	/** IN項目:進捗特記事項１（PCワイドプラン情報登録用）  */
	private static final String IN_ADD_PRG_TKJK_1_PC_WID_PLAN = "add_prg_tkjk_1_pc_wid_plan";
	/** IN項目:進捗特記事項１（TVプラン情報登録用）  */
	private static final String IN_ADD_PRG_TKJK_1_TV_PLAN = "add_prg_tkjk_1_tv_plan";
	/** IN項目:端末補償操作CC文字列  */
	private static final String IN_TEMP_OP_CC_TXT = "sp_temp_cc_txt";

	/** SYSID  */
	private static final String KEY_SYSID = "key_sysid";

	/** 実行フラグ 可 */
	private static final String FLG_ON = "1";

	
	/**
	 * コンストラクタ
	 */
	public FUSV0322_FUSV0322OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをします。（EKK0011D020 申込内容承認登録）
	 * <br>
	 * @param bean　[0]：機器補償オプション申込　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV032201SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = bean[1];

		X31SDataBeanAccess genCustKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(commoninfoBean, JFUWebCommon.GEN_CUST_KEI_INFO);

		// SYSID
		parentMap.put(SYSID, genCustKeiInfoBean.sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));

		// 明細
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();

		arrayList.add(detailMap);
		parentMap.put(EKK0011D020_LIST, arrayList);

		outputMap.put(SC_TITLE_FUSV032201, parentMap);

		return outputMap;
	}


	/**
	 * 上りマッピングをします。（JFUTransferCC サービスIF結果データ移送CC）
	 * <br>
	 * @param bean　[0]：機器補償オプション申込　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV032201CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// データ移送数
		parentMap.put(KEY_KEY_CNT, KEY_CNT_1);
		// データ移送先
		parentMap.put(KEY_TRAN_NAME, CC_TITLE_FUSV032202);

		// 申込明細番号
		parentMap.put(TRANS_KEY_1, TRANS_KEY_1_VALUE_1);

		outputMap.put(CC_TITLE_FUSV032201, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをします。(端末補償操作CC)
	 * <br>
	 * @param bean　[0]：機器補償オプション申込　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @param func_code 機能コード
	 * @param opeDate 運用日付
	 * @return 送信情報
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV032202CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate)
	{
		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.SVC_KEI_INFO);

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 登録用情報リスト
		ArrayList addList = new ArrayList<HashMap>();
		HashMap addMap = new HashMap();

		// サービス契約番号
		addMap.put(SVC_KEI_NO, svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_23, X31CWebConst.DATABEAN_GET_VALUE));
		// 申込年月日
		parentMap.put(MSKM_YMD, opeDate);
		// 処理区分
		parentMap.put(SHORI_DIV, TOROKU_DIV_REG);
		// 異動区分
		parentMap.put(IDO_DIV, JFUStrConst.CD00576_00031);
		
		// 更新年月日時分秒
		addMap.put(UPD_DTM_BF, svcKeiInfoBean.sendMessageString(CommonInfoCFConst.LAST_UPD_DTM_23, X31CWebConst.DATABEAN_GET_VALUE));
		
		
		// ＰＣプラン
		String pcPlanMksmYmd = JFUStrConst.EMPTY;
		// ＰＣプラン対象フラグ・ＰＣプラン申込日
		if (bean[0].sendMessageBoolean(FUW12301SFConst.PC_PLN, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addMap.put(PC_PLAN_TG_FLG, TG_FLG_1);
			pcPlanMksmYmd = opeDate;
		}
		addMap.put(PC_PLAN_MKSM_YMD, pcPlanMksmYmd);
		
		
		// ＰＣワイドプラン
		String pcWidePlanMksmYmd = JFUStrConst.EMPTY;
		// ＰＣワイドプラン対象フラグ・ＰＣワイドプラン申込日
		if (bean[0].sendMessageBoolean(FUW12301SFConst.PCW_PLN, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addMap.put(PC_WIDE_PLAN_TG_FLG, TG_FLG_1);
			pcWidePlanMksmYmd = opeDate;
			
			// ＰＣプランに申し込んでなかった場合は、同時にそちらも登録
			
			// 補償情報タイプリスト
			X31SDataBeanAccess useSvcDataBean = bean[0].getDataBeanArray(FUW12301SFConst.COMPS_LIST).getDataBean(0);
			String keiPlan
				= useSvcDataBean.sendMessageString(FUW12301SFConst.KEI_PLAN_01, X31CWebConst.DATABEAN_GET_VALUE);

			if (!STAT_PC_TV_PLAN.equals(keiPlan))
			{
				addMap.put(PC_PLAN_TG_FLG, TG_FLG_1);
				pcPlanMksmYmd = opeDate;
				addMap.put(PC_PLAN_MKSM_YMD, pcPlanMksmYmd);
			}
		}
		addMap.put(PC_WIDE_PLAN_MKSM_YMD, pcWidePlanMksmYmd);
		
		
		// ＴＶプラン
		String tvPlanMksmYmd = JFUStrConst.EMPTY;
		// ＴＶプラン対象フラグ・ＴＶプランプラン申込日
		if (bean[0].sendMessageBoolean(FUW12301SFConst.TV_PLN, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addMap.put(TV_PLAN_TG_FLG, TG_FLG_1);
			tvPlanMksmYmd = opeDate;
		}
		addMap.put(TV_PLAN_MKSM_YMD, tvPlanMksmYmd);
		

		addList.add(addMap);
		parentMap.put(ADD_INFO_LIST, addList);

		outputMap.put(CC_TITLE_FUSV032202, parentMap);

		return outputMap;
	}

	
	/**
	 * 上りマッピングをします。（EKK0021C060 申込明細照査・後続業務依頼）
	 * <br>
	 * @param bean　[0]：機器補償オプション申込　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV032202SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		outputMap.put(SC_TITLE_FUSV032202, parentMap);

		return outputMap;
	}

	
	/**
	 * 端末補償進捗登録CCの上りマッピング処理です。
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param funcCode 機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV032203CC(X31SDataBeanAccess[] bean, HashMap outputMap, String funcCode)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 各特記事項1を取得
		String addPcPlan = JFUStrConst.EMPTY;
		String addPcWidPlan = JFUStrConst.EMPTY;
		String addTvPlan = JFUStrConst.EMPTY;

		try
		{
			addPcPlan = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW12302, PRGADD_ID_ADD_PC_PLAN);
			addPcWidPlan = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW12302, PRGADD_ID_ADD_PC_WID_PLAN);
			addTvPlan = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW12302, PRGADD_ID_ADD_TV_PLAN);
		}
		catch (Exception e)
		{
			// 定義から取得できない場合は空で登録
			DEBUG_LOG.info("★★★ FUSV0322_FUSV0322OPDBMapper setFUSV032203CC 特記事項1取得不可 ★★★");
		}

		// IN項目:機能コード
		parentMap.put(FUNC_CODE, funcCode);
		// IN項目:端末補償操作CC文字列
		parentMap.put(IN_TEMP_OP_CC_TXT, CC_TITLE_FUSV032202);
		// IN項目:進捗特記事項１（PCプラン情報登録用）
		parentMap.put(IN_ADD_PRG_TKJK_1_PC_PLAN, addPcPlan);
		// IN項目:進捗特記事項１（PCワイドプラン情報登録用）
		parentMap.put(IN_ADD_PRG_TKJK_1_PC_WID_PLAN, addPcWidPlan);
		// IN項目:進捗特記事項１（TVプラン情報登録用）
		parentMap.put(IN_ADD_PRG_TKJK_1_TV_PLAN, addTvPlan);

		// 異動理由明細
		ArrayList eKK1091D010CBSMsg1List = new ArrayList();
		HashMap eKK1091D010CBSMsg1Map = new HashMap();

		// 異動理由コード
		eKK1091D010CBSMsg1Map.put(IDO_RSN_CD, JFUStrConst.CD00846_F3);

		eKK1091D010CBSMsg1List.add(eKK1091D010CBSMsg1Map);
		parentMap.put(EKK1091D010_LIST, eKK1091D010CBSMsg1List);

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV032203, parentMap);

		return outputMap;
	}

	/**
	 * eoプレミアム施策一覧照会CCのの上りマッピングをする
	 * @param bean　[0]：サービスフォームBEAN、[1]：共有フォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV032204CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) throws Exception
	{
		// 確認でない場合は実行しない
		if (!FUNC_CD_2.equals(func_code))
		{
			return null;
		}

		if (bean == null)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		ArrayList jknList = new ArrayList();

		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = bean[1];
		X31SDataBeanAccess genCustKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(commoninfoBean, JFUWebCommon.GEN_CUST_KEI_INFO);
		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.SVC_KEI_INFO);

		// SYSID → SSOログイン情報.SYSID
		parentMap.put(KEY_SYSID, genCustKeiInfoBean.sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));

		HashMap jknMap = new HashMap();
		// ｅｏプレミアムクラブ申請条件リスト.ｅｏプレミアムクラブ施策申請条件種別コード → 00:登録
		jknMap.put(JFUEoPremiumClubConst.KEY_EOPRMCL_SSKSSJK_SBT_CD, JFUStrConst.CD01691_00);
		// ｅｏプレミアムクラブ申請条件リスト追加
		jknList.add(jknMap);
		// ｅｏプレミアムクラブ申請条件リスト設定
		parentMap.put(JFUEoPremiumClubConst.KEY_EOPRMCL_SNS_JKN_LST, jknList);

		// ＫＥＹ＿サービス契約番号
		parentMap.put(JFUEoPremiumClubConst.KEY_SVC_KEI_NO, svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_23, X31CWebConst.DATABEAN_GET_VALUE));
		// ＫＥＹ＿割引サービス一覧取得実行フラグ 
		parentMap.put(JFUEoPremiumClubConst.KEY_WRIB_SHOKAI_FLG, JFUEoPremiumClubDsp.getWribShokaiFlg(JFUEoPremiumClubDsp.QUERY_PATH_WRIB_CHK_KIKI));
		// ＫＥＹ＿オプションサービス契約取得実行フラグ
		parentMap.put(JFUEoPremiumClubConst.KEY_OPSVC_SHOKAI_FLG, FLG_ON);

		// ＫＥＹ＿画面ID
		parentMap.put(JFUEoPremiumClubConst.KEY_SCREEN_ID, "FUW12302");

		// 連携パラメータ
		outputMap.put(CC_TITLE_FUSV032204, parentMap);
		// 共通CCチェック用にマップを設定
		outputMap.put(CHK_TITLE_FUSV032204, parentMap);

		return outputMap;
	}

	/**
	 * eoプレミアム施策一覧照会CCの下りマッピングをする
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap アウトマップ
	 * @param func_code　機能コード
	 * @param opeDate オンライン運用日付
	 * @return サービスBean配列
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public void getPremiumClubList(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate) throws Exception
	{

		// 確認でない場合は実行しない
		if (!FUNC_CD_2.equals(func_code))
		{
			return;
		}

		HashMap sif_result_map = null;
		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.SVC_KEI_INFO);

		if (outputMap.containsKey(CC_TITLE_FUSV032204))
		{
			sif_result_map = (HashMap)outputMap.get(CC_TITLE_FUSV032204);
		}

		// ●ＰＣプラン申し込み確認を取得
		Boolean MskmPcPlanValue = bean[0].sendMessageBoolean(FUW12301SFConst.PC_PLN, "GET_VALUE");
		// ●ＰＣワイドプラン申し込み確認を取得
		Boolean MskmpcWidPlanValue = bean[0].sendMessageBoolean(FUW12301SFConst.PCW_PLN, "GET_VALUE");
		// ●ＴＶプラン申し込み確認を取得
		Boolean MskmpcTvPlanValue = bean[0].sendMessageBoolean(FUW12301SFConst.TV_PLN, "GET_VALUE");

		// ■画面施策リスト表示パラメータ
		HashMap<String, Object> dsp_sisak_settei = new HashMap<String, Object>();

		// サービス契約番号
		dsp_sisak_settei.put(JFUEoPremiumClubDsp.PARAM_SVC_KEI_NO, svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_23, X31CWebConst.DATABEAN_GET_VALUE));
		//  プロパティキー（定義体のフォームID）
		dsp_sisak_settei.put(JFUEoPremiumClubDsp.PARAM_PROP_KEY, "FUW12302");

		//  対象施策リスト（※設定無しの場合はマスタ取得内容となる）
		List<String> taisyoSisakList = JFUEoPremiumClubDsp.getTaisyoSisakList(JFUEoPremiumClubDsp.QUERY_PATH_TAISYO_KIKI);
		dsp_sisak_settei.put(JFUEoPremiumClubDsp.PARAM_TAISYO_SISAK_LIST, taisyoSisakList);
		//  グループ施策リスト
		dsp_sisak_settei.put(JFUEoPremiumClubDsp.PARAM_GRP_SISAK_LIST, JFUEoPremiumClubDsp.getGroupSisakList(JFUEoPremiumClubDsp.QUERY_PATH_WRIB_CHK_KIKI));

		//  オプションサービス判定用（おうちの機器補償）
		Map<String, List<String>> opsvc_cd_map = new HashMap<String, List<String>>();
		List<String> opSvcTaisyoList = Arrays.asList(JFUStrConst.CD00136_B133, JFUStrConst.CD00136_B134);
		List<String> opSvcMskmList = new ArrayList<String>();
		if (MskmPcPlanValue || MskmpcWidPlanValue)
		{
			opSvcMskmList.add(JFUStrConst.CD00136_B133);
		}
		if (MskmpcTvPlanValue)
		{
			opSvcMskmList.add(JFUStrConst.CD00136_B134);
		}
		opsvc_cd_map.put(JFUEoPremiumClubDsp.PARAM_OPSVC_TAISYO_LIST, opSvcTaisyoList);
		opsvc_cd_map.put(JFUEoPremiumClubDsp.PARAM_OPSVC_MSKM_LIST, opSvcMskmList);
		dsp_sisak_settei.put(JFUEoPremiumClubDsp.PARAM_OPSVCCD_MAP, opsvc_cd_map);

		// 施策除外リスト
		dsp_sisak_settei.put(JFUEoPremiumClubDsp.PARAM_SISAK_JGI_LIST, null);

		JFUEoPremiumClubDsp.getPremiumClubList(bean, dsp_sisak_settei, sif_result_map, opeDate);

	}

	/**
	 * チケット利用申請依頼CCの上りマッピング処理です。
	 * <br>
	 * @param bean データBean配列 [0]：サービスフォームBean、[1]：共有フォームBean
	 * @param outputMap アウトマップ
	 * @param funcCode 機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV032205CC(X31SDataBeanAccess[] bean, HashMap outputMap, String funcCode)
	{
		// 登録でない場合は実行しない
		if (!FUNC_CD_1.equals(funcCode))
		{
			return null;
		}

		if (bean == null)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		ArrayList list = new ArrayList();
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = bean[1];
		X31SDataBeanAccess genCustKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(commoninfoBean, JFUWebCommon.GEN_CUST_KEI_INFO);
		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.SVC_KEI_INFO);

		// SYSID →チケット利用申請依頼マップ.SYSID
		parentMap.put(JFUEoPremiumClubConst.SYSID, genCustKeiInfoBean.sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号 →チケット利用申請依頼マップ.サービス契約番号
		parentMap.put(JFUEoPremiumClubConst.SVC_KEI_NO, svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_23, X31CWebConst.DATABEAN_GET_VALUE));

		X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray(FUW12301SFConst.TICKET_USE_SHIN_IRAI_LIST);

		int cnt = 0;
		if (arraybean != null && arraybean.getCount() > 0)
		{
			// チケット利用選択
			String ticUseSelect = bean[0].sendMessageString(FUW12301SFConst.TIC_USE_SELECT, X31CWebConst.DATABEAN_GET_VALUE);
			int sel = Integer.parseInt(ticUseSelect);

			// cnt=0はeoチケット申請無しなので削除
			arraybean.removeDataBean(cnt);
			sel--;
			while (cnt < arraybean.getCount())
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(cnt);

				// 選ばれていないチケットは削除
				if (subbean == null || cnt != sel)
				{
					// 選択してないデータをリストから削除する
					arraybean.removeDataBean(cnt);
					sel--;

					continue;
				}
				else
				{
					cnt++;
				}

				// チケット利用申請依頼マップ.チケット利用申請依頼リスト
				if (subbean != null)
				{
					// 施策コード
					String sisakCd = subbean.sendMessageString(FUW12301SFConst.SISAK_CD_08, X31CWebConst.DATABEAN_GET_VALUE);
					// キャンペーン登録契機コード
					String cmpAddOptntyCd = subbean.sendMessageString(FUW12301SFConst.CMP_ADD_OPTNTY_CD_08, X31CWebConst.DATABEAN_GET_VALUE);

					String[] sisakcdL = sisakCd.split(JFUStrConst.COMMA);
					String[] cmpAddOptntyCdL = cmpAddOptntyCd.split(JFUStrConst.COMMA);
					// ■複合チケットも含まれているので繰り返し実行
					for (int idx = 0; idx < sisakcdL.length; idx++)
					{
						HashMap childMap = new HashMap();
						// 各種通信機器申込み登録マップ.チケット利用申請依頼リスト.施策コード → チケット利用申請依頼リスト.施策コード
						childMap.put(JFUEoPremiumClubConst.SISAK_CD, sisakcdL[idx]);
						// 各種通信機器申込み登録マップ.チケット利用申請依頼リスト.キャンペーン登録契機コード → チケット利用申請依頼リスト.キャンペーン登録契機コード
						childMap.put(JFUEoPremiumClubConst.CMP_ADD_OPTNTY_CD, cmpAddOptntyCdL[idx]);
						list.add(childMap);
					}
				}
			}
		}
		parentMap.put(JFUEoPremiumClubConst.TICKET_USE_SHIN_IRAI_LIST, list);

		// 連携パラメータ
		outputMap.put(CC_TITLE_FUSV032205, parentMap);
		// 共通CCチェック用にマップを設定
		outputMap.put(CHK_TITLE_FUSV032205, parentMap);

		return outputMap;
	}


}