/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0133_FUSV0133OPDBMapper
*	ソースファイル名：FUSV0133_FUSV0133OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年02月14日
*＜機能概要＞
*	BP（各種通信機器申込（初期表示））へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/02/14	FJ		    新規作成
*   v7.00.00    2013/11/25  FJ）谷本    【ANK-1578-00-00】多機能ルーター（機器追加）
*	v9.00.00    2014/05/20  FJ) 西山   【ANK-2057-00-00】eo多機能ルーターによる複数通話対応
*   v9.00.00    2014/06/18  FJ) 清水   【ANK-2038-00-00】多機能ＲＴ対応・コース変更時、引越し時の事務手数料無料化
*  v50.00.00    2020/06/26  FJ) 大島   【ANK-3825-00-00】メッシュWiFi導入対応
*  v52.00       2021/01/22  FJ) 張本   【ANK-3987-00-00】Netflix導入対応（STEP2）
*  v54.00       2021/08/13  FJ）美濃原 【ANK-4115-00-00】SMPのプレクラマイページからの遷移仕様変更
*  v60.00       2022/06/20  FJ）美濃原 【ANK-4244-00-00】【eo定期】MT既設賃貸対応
*  v61.00       2023/04/10  FJ) 張本   【ANK-4315-00-00】【eo定期】eoホームゲートウェイ導入対応
*   
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

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.constant.JPCModelConstant;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW07101SF.FUW07101SFConst;
import eo.web.webview.common.JFUEoPremiumClubDsp;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class FUSV0133_FUSV0133OPDBMapper {
	
	/** 料金グループコード */
	private static final String KEY_PRC_GRP_CD = "key_prc_grp_cd";

	/** 一時支払料金番号(事務手数料：多機能ルーター) */
	private static final String TMP_PAY_PRC_NO_TAKINO = "DISPSETTING/SETTING[@screenId='FUW07101']/DISPCTL[@id='TAKINO']";
	/** 一時支払料金番号(事務手数料：ホームゲートウェイ) */
	private static final String TMP_PAY_PRC_NO_HGW = "DISPSETTING/SETTING[@screenId='FUW07101']/DISPCTL[@id='HGW']";
// ANK-3529-00-00 ADD START
	/** 一時支払料金番号(事務手数料：無線LAN中継機) */
	private static final String TMP_PAY_PRC_NO_WIRELESSLAN = "DISPSETTING/SETTING[@screenId='FUW07101']/DISPCTL[@id='WIRELESSLAN']";
// ANK-3529-00-00 ADD END
// ANK-3825-00-00 ADD START
	/** 一時支払料金番号(事務手数料：メッシュwifi) */
	private static final String TMP_PAY_PRC_NO_MESH_WIFI = "DISPSETTING/SETTING[@screenId='FUW07101']/DISPCTL[@id='MESHWIFI']";
// ANK-3825-00-00 ADD END
	/** 一時支払料金番号(事務手数料：ストリーミングメディアプレーヤー) */
	private static final String TMP_PAY_PRC_NO_IPSTB = "DISPSETTING/SETTING[@screenId='FUW07101']/DISPCTL[@id='IPSTB']";
	
	/** 各種通信機器申込み照会コンポーネント部品CC */
	private static final String CC_TITLE_FUSV013301CC = "FUSV013301CC";
	/** 複数電話サービス変更判定コモンコンポーネント部品CC */
	private static final String CC_TITLE_FUSV013302CC = "FUSV013302CC";
	/** 事務手数料判定部品 */
	private static final String CC_TITLE_FUSV013303CC = "FUSV013303CC";
	/** ＯＮＵ交換工事判定コモンコンポーネント部品CC */
	private static final String CC_TITLE_FUSV013304CC = "FUSV013304CC";
	/** ローゼット化設置済案件判定コモンコンポーネント部品CC */
	private static final String CC_TITLE_FUSV013305CC = "FUSV013305CC";
	/** サービスIF結果データ移送コモンコンポーネント部品CC */
	private static final String CC_TITLE_FUSV013306CC = "FUSV013306CC";
	/** 初期費用一覧照会コモンコンポーネント部品CC */
	private static final String CC_TITLE_FUSV013307CC = "FUSV013307CC";
	/** 割引サービス契約一覧照会（サービス契約番号）SC */
	private static final String SC_TITLE_FUSV013301 = "FUSV013301SC";

	// マップキー
	/** SYSID */
	private static final String SYSID = "sysid";
	/** サービス契約回線内訳番号 */
	private static final String SVC_KEI_KAISEN_UCWK_NO = "svc_kei_kaisen_ucwk_no";
	/** 項目：判定結果 */
	private static final String JUDGE_RESULT = "judge_result";
	
	/** 提供方式契約番号 */
	private static final String TK_HOSHIKI_KEI_NO = "tk_hoshiki_kei_no";
	
	/** 申込明細番号 */
	private static final String MSKM_DTL_NO = "mskm_dtl_no";
	
	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "svc_kei_no";
	
	/** フラグ：1 */
	private static final String FLG_ON = "1";

	/** マップキー 機能コード */
	private static final String FUNC_CODE = "func_code";
	/** サービス契約番号  */
	private static final String KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** 異動区分 */
	private static final String IDO_DIV = "ido_div";

	/** マップキー 移送先名取得 */
	private static final String KEY_TRAN_NAME = "tranNm";
	/** マップキー キーカウント */
	private static final String KEY_KEY_CNT = "key_cnt";
	/** マップキー キーカウント */
	private static final String RPG_KEY_CNT_2 = "2";

	/** 移送用キー1 */
	private static final String TRANS_KEY_1 = "key_1";
	/** 移送用キー1 */
	private static final String TRANS_KEY_2 = "key_2";

	/** チェック結果 */
	private static final String RPG_TRANS_KEY_1_VALUE = CC_TITLE_FUSV013304CC + "::chk_result,::onu_chk_result";
	/** チェック結果 */
	private static final String RPG_TRANS_KEY_2_VALUE = CC_TITLE_FUSV013305CC + "::chk_result,::rzt_chk_result";

	/**
	 * コンストラクタ
	 */
	public FUSV0133_FUSV0133OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：各種通信機器申込
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013301CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) throws Exception
	{
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス契約番号 → 各種通信機器申込（初期表示）マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 宅内機器型式コード → 各種通信機器申込（初期表示）マップ.ＫＥＹ＿宅内機器型式コード（例：*EORT*）
		parentMap.put("key_taknkiki_model_cd", bean[0].sendMessageString("宅内機器型式コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 機器提供種別コード → 各種通信機器申込（初期表示）マップ.ＫＥＹ＿機器提供種別コード（例："02"レンタル）
		parentMap.put("key_kktk_sbt_cd", bean[0].sendMessageString("機器提供種別コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 申込機器区分 → 各種通信機器申込（初期表示）マップ.申込機器区分
		parentMap.put("mskm_kiki_div", bean[0].sendMessageString("申込機器区分", X31CWebConst.DATABEAN_GET_VALUE));
		// SYSID → 各種通信機器申込（初期表示）マップ.SYSID
		parentMap.put("sys_id", bean[0].sendMessageString(FUW07101SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約回線内訳番号 → 各種通信機器申込（初期表示）マップ.サービス契約回線内訳番号
		parentMap.put("svc_kei_kaisen_ucwk_no", bean[0].sendMessageString(FUW07101SFConst.SVC_KEI_KAISEN_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 申込機器区分 → 各種通信機器申込（初期表示）マップ.申込機器区分
		parentMap.put("mskm_kiki_div", bean[0].sendMessageString(FUW07101SFConst.MSKM_KIKI_DIV, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = bean[1];

		// 契約サービス情報
		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(commoninfoBean, JFUWebCommon.SVC_KEI_INFO);

		// 料金グループコード（例：02）
		parentMap.put(KEY_PRC_GRP_CD, svcKeiInfoBean.sendMessageString(CommonInfoCFConst.PRC_GRP_CD_23, X31CWebConst.DATABEAN_GET_VALUE));
		// 整理番号
		parentMap.put("seiri_no", svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SEIRI_NO_23, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 提供方式契約番号
		String tkHoshikiKeiNo = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.TK_HOSHIKI_KEI_NO_23, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put(TK_HOSHIKI_KEI_NO, tkHoshikiKeiNo);
		
		// 申込明細番号
		String mskmDtlNo = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.MSKM_DTL_NO_23, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put(MSKM_DTL_NO, mskmDtlNo);
		
		// 一時支払料金番号
// ANK-3529-00-00 MOD START
		if ("1".equals(bean[0].sendMessageString(FUW07101SFConst.MSKM_KIKI_DIV, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			parentMap.put("key_tmp_pay_prc_no", JFUWebCommon.getDispItem(TMP_PAY_PRC_NO_TAKINO));
			parentMap.put("key_tmp_pay_prc_no_hgw", JFUWebCommon.getDispItem(TMP_PAY_PRC_NO_HGW));
		}
		else if ("2".equals(bean[0].sendMessageString(FUW07101SFConst.MSKM_KIKI_DIV, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			parentMap.put("key_tmp_pay_prc_no", JFUWebCommon.getDispItem(TMP_PAY_PRC_NO_WIRELESSLAN));
		}
		else if ("3".equals(bean[0].sendMessageString(FUW07101SFConst.MSKM_KIKI_DIV, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			parentMap.put("key_tmp_pay_prc_no", JFUWebCommon.getDispItem(TMP_PAY_PRC_NO_MESH_WIFI));
		}
		else if ("4".equals(bean[0].sendMessageString(FUW07101SFConst.MSKM_KIKI_DIV, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			parentMap.put("key_tmp_pay_prc_no", JFUWebCommon.getDispItem(TMP_PAY_PRC_NO_IPSTB));
		}

		// CX案件切替フラグ（蓋開け）※蓋開後は常に"1"
		parentMap.put("cx_hantei_flg", FLG_ON);

// ANK-3529-00-00 MOD END
		outputMap.put("FUSV013301CC", parentMap);
						
		return outputMap;
	}

	
	/**
	 * 複数電話サービス変更判定CCの上りマッピング処理です。
	 * <br>
	 * @param bean 共有フォームBean
	 * @param outputMap アウトマップ
	 * @return outputMap アウトマップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013302CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// SYSID
		parentMap.put(SYSID,  bean[0].sendMessageString(FUW07101SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約回線内訳番号
		parentMap.put(SVC_KEI_KAISEN_UCWK_NO, bean[0].sendMessageString(FUW07101SFConst.SVC_KEI_KAISEN_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(CC_TITLE_FUSV013302CC, parentMap);

		return outputMap;
	}

	/**
	 *事務手数料判定部品の上りマッピング処理です。
	 * <br>
	 * @param bean 共有フォームBean
	 * @param outputMap アウトマップ
	 * @return outputMap アウトマップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013303CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// サービス契約番号
		parentMap.put(SVC_KEI_NO, bean[0].sendMessageString(FUW07101SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 工事会社配送判定フラグ → 各種通信機器申込（初期表示）マップ.工事会社配送判定フラグ
		// CX案件切替フラグ（蓋開け）※蓋開後は常に"1"
		parentMap.put("cx_hantei_flg", FLG_ON);
		// 申込機器区分 → 各種通信機器申込（初期表示）マップ.申込機器区分
		parentMap.put("mskm_kiki_div", bean[0].sendMessageString(FUW07101SFConst.MSKM_KIKI_DIV, X31CWebConst.DATABEAN_GET_VALUE));
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = bean[1];
		// 契約サービス情報
		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(commoninfoBean, JFUWebCommon.SVC_KEI_INFO);
		// 光配線1Gのみフラグ
		parentMap.put("hhs_1gonly_flg", svcKeiInfoBean.sendMessageString(CommonInfoCFConst.HHS_1GONLY_FLG_23, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(CC_TITLE_FUSV013303CC, parentMap);

		return outputMap;
	}
	
	/**
	 * 割引サービス契約一覧照会（サービス契約番号）SCの上りマッピングをします。
	 * <br>
	 * @param bean　[0]：eoスマートリンク申込
	 * @param outputMap マップ
	 * @return 送信情報
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV013301SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿サービス契約番号
		parentMap.put(KEY_SVC_KEI_NO, bean[0].sendMessageString(FUW07101SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV013301, parentMap);

		return outputMap;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：各種通信機器申込
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV013301CC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("FUSV013301CC")){
			parentMap = (HashMap)outputMap.get("FUSV013301CC");
		}

		ArrayList childList = null;
		
		// セット品区分 ← 各種通信機器申込（初期表示）マップ.セット品区分
		if (parentMap != null) {
			bean[0].sendMessageString("セット品区分", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sethn_div"));
		} else {
			bean[0].sendMessageString("セット品区分", X31CWebConst.DATABEAN_SET_VALUE, new String());
		}

		X31SDataBeanAccessArray listFUSV013301CC_kktk_pplan_betu_kiki_mdl_list_kktk_pplan_betu_kiki_mdl_list = bean[0].getDataBeanArray("機器提供料金プラン別機器型式候補リスト");
		childList = null;
		if(listFUSV013301CC_kktk_pplan_betu_kiki_mdl_list_kktk_pplan_betu_kiki_mdl_list != null && parentMap != null && parentMap.containsKey("kktk_pplan_betu_kiki_mdl_list")){
			childList = (ArrayList)parentMap.get("kktk_pplan_betu_kiki_mdl_list");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listFUSV013301CC_kktk_pplan_betu_kiki_mdl_list_kktk_pplan_betu_kiki_mdl_list.getCount() -1 >= i){
					subbean = listFUSV013301CC_kktk_pplan_betu_kiki_mdl_list_kktk_pplan_betu_kiki_mdl_list.getDataBean(i);
				}else{
					subbean = listFUSV013301CC_kktk_pplan_betu_kiki_mdl_list_kktk_pplan_betu_kiki_mdl_list.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// 機器提供料金プラン別機器型式候補リスト.宅内機器型式コード ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.宅内機器型式コード
				if (childMap != null) {
					subbean.sendMessageString("宅内機器型式コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("taknkiki_model_cd"));
				} else {
					subbean.sendMessageString("宅内機器型式コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.機器提供種別コード ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.機器提供種別コード
				if (childMap != null) {
					subbean.sendMessageString("機器提供種別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kktk_sbt_cd"));
				} else {
					subbean.sendMessageString("機器提供種別コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.機器提供種別コード名称 ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.機器提供種別コード名称
				if (childMap != null) {
					subbean.sendMessageString("機器提供種別コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kktk_sbt_cd_nm"));
				} else {
					subbean.sendMessageString("機器提供種別コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.販売種別コード ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.販売種別コード
				if (childMap != null) {
					subbean.sendMessageString("販売種別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hambai_sbt_cd"));
				} else {
					subbean.sendMessageString("販売種別コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.販売種別コード名称 ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.販売種別コード名称
				if (childMap != null) {
					subbean.sendMessageString("販売種別コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hambai_sbt_cd_nm"));
				} else {
					subbean.sendMessageString("販売種別コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.料金コースコード ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.料金コースコード
				if (childMap != null) {
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcrs_cd"));
				} else {
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.料金コースコード名称 ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.料金コースコード名称
				if (childMap != null) {
					subbean.sendMessageString("料金コースコード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcrs_cd_nm"));
				} else {
					subbean.sendMessageString("料金コースコード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.機器型式対象料金コース適用開始年月日 ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.機器型式対象料金コース適用開始年月日
				if (childMap != null) {
					subbean.sendMessageString("機器型式対象料金コース適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kkmdl_tg_pcrs_tstaymd"));
				} else {
					subbean.sendMessageString("機器型式対象料金コース適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.機器型式対象料金コース適用終了年月日 ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.機器型式対象料金コース適用終了年月日
				if (childMap != null) {
					subbean.sendMessageString("機器型式対象料金コース適用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kkmdl_tg_pcrs_tendymd"));
				} else {
					subbean.sendMessageString("機器型式対象料金コース適用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.登録年月日時分秒 ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.登録年月日時分秒
				if (childMap != null) {
					subbean.sendMessageString("登録年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("add_dtm"));
				} else {
					subbean.sendMessageString("登録年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.登録オペレータアカウント ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.登録オペレータアカウント
				if (childMap != null) {
					subbean.sendMessageString("登録オペレータアカウント", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("add_opeacnt"));
				} else {
					subbean.sendMessageString("登録オペレータアカウント", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.更新年月日時分秒 ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.更新年月日時分秒
				if (childMap != null) {
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("upd_dtm"));
				} else {
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.更新オペレータアカウント ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.更新オペレータアカウント
				if (childMap != null) {
					subbean.sendMessageString("更新オペレータアカウント", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("upd_opeacnt"));
				} else {
					subbean.sendMessageString("更新オペレータアカウント", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.削除年月日時分秒 ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.削除年月日時分秒
				if (childMap != null) {
					subbean.sendMessageString("削除年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("del_dtm"));
				} else {
					subbean.sendMessageString("削除年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.削除オペレータアカウント ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.削除オペレータアカウント
				if (childMap != null) {
					subbean.sendMessageString("削除オペレータアカウント", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("del_opeacnt"));
				} else {
					subbean.sendMessageString("削除オペレータアカウント", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.無効フラグ ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.無効フラグ
				if (childMap != null) {
					subbean.sendMessageString("無効フラグ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mk_flg"));
				} else {
					subbean.sendMessageString("無効フラグ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器提供料金プラン別機器型式候補リスト.無効フラグ名称 ← 各種通信機器申込（初期表示）マップ.機器型式対象料金コース一意照会明細.無効フラグ名称
				if (childMap != null) {
					subbean.sendMessageString("無効フラグ名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mk_flg_nm"));
				} else {
					subbean.sendMessageString("無効フラグ名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		// ONU交換工事有無
		bean[0].sendMessageString(FUW07101SFConst.ONU_KOKAN_KOJI_UM, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("onu_chk_result"));
		// ONU交換工事配送方法コード
		bean[0].sendMessageString(FUW07101SFConst.ONU_HAISO_WAY, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("onu_haiso_way"));

		return bean;
	}
	
	/**
	 * 複数電話サービス変更判定CCの下りマッピング処理です。
	 * 
	 * <br>
	 * @param bean データBean
	 * @param outputMap サービス結果マップ
	 * @return データBean
	 * @throws Exception
	 */
	public X31SDataBeanAccess[] getFUSV013302CC(X31SDataBeanAccess[] bean, HashMap outputMap, boolean routerFlg) throws Exception
	{
		HashMap parentMap = null;
		if (outputMap.containsKey(CC_TITLE_FUSV013302CC))
		{
			parentMap = (HashMap)outputMap.get(CC_TITLE_FUSV013302CC);
		}

		if (parentMap != null && parentMap.containsKey(JUDGE_RESULT))
		{
			String jdgeResult = (String)parentMap.get(JUDGE_RESULT);

			// ルーター以外の場合非表示に
			if (!routerFlg) {
				jdgeResult = JFUStrConst.CD00002_0;
			}
			
			// 判定結果が「1」の場合、変更有り。それ以外は変更無し。
			bean[0].sendMessageString(FUW07101SFConst.CHG_MULTI_PHONE_CALL_MSG_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, jdgeResult);
		}

		return bean;
	}

	/**
	 * 適用中の施策か判定を行います。(割引サービス契約一覧照会（サービス契約番号）SC)
	 * 
	 * <br> 
	 * @param outputMap サービス結果マップ
	 * @param groupSisakCd 判定対象となる施策
	 * @return true：適用中の施策、false：それ以外
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public boolean isUsedWaribiki(HashMap<String, Object> outputMap, List<String> groupSisakCd) throws Exception
	{
		// ＳＭＰの施策が適用中か判定（SMP施策は廃止済）
		if (outputMap.containsKey(SC_TITLE_FUSV013301))
		{
			HashMap resultMap = (HashMap)outputMap.get(SC_TITLE_FUSV013301);
			return JFUEoPremiumClubDsp.isUsedWaribiki(resultMap, "FUW07101", groupSisakCd);
		}

		return false;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：各種通信機器申込
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013304CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// SYSID → 各種通信機器申込（初期表示）マップ.SYSID
		parentMap.put(SYSID, bean[0].sendMessageString(FUW07101SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約回線内訳番号 → 各種通信機器申込（初期表示）マップ.サービス契約回線内訳番号
		parentMap.put(SVC_KEI_KAISEN_UCWK_NO, bean[0].sendMessageString(FUW07101SFConst.SVC_KEI_KAISEN_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(CC_TITLE_FUSV013304CC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：各種通信機器申込
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013305CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// サービス契約番号 → 各種通信機器申込（初期表示）マップ.サービス契約番号
		parentMap.put(SVC_KEI_NO, bean[0].sendMessageString(FUW07101SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約回線内訳番号 → 各種通信機器申込（初期表示）マップ.サービス契約回線内訳番号
		parentMap.put(SVC_KEI_KAISEN_UCWK_NO, bean[0].sendMessageString(FUW07101SFConst.SVC_KEI_KAISEN_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 異動区分 → 各種通信機器申込（初期表示）マップ.異動区分
		parentMap.put(IDO_DIV, JFUStrConst.CD00576_00026);

		outputMap.put(CC_TITLE_FUSV013305CC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピング処理です。<BR>
	 * @param bean
	 * @param outputMap
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV013306CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// データ移送数
		parentMap.put(KEY_KEY_CNT, RPG_KEY_CNT_2);

		// データ移送先
		parentMap.put(KEY_TRAN_NAME, CC_TITLE_FUSV013301CC);

		// チェック結果を移送用に設定
		parentMap.put(TRANS_KEY_1, RPG_TRANS_KEY_1_VALUE);
		// チェック結果を移送用に設定
		parentMap.put(TRANS_KEY_2, RPG_TRANS_KEY_2_VALUE);

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV013306CC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013307CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = bean[1];
		// 契約サービス情報
		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(commoninfoBean, JFUWebCommon.SVC_KEI_INFO);
		// 料金グループコード
		String prcGrpCd = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.PRC_GRP_CD_23, X31CWebConst.DATABEAN_GET_VALUE);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 初期費用照会 拡張ID取得キー
		if (JFUStrConst.CD00133_02.equals(prcGrpCd))
		{
			// ホームの場合
			parentMap.put(JFUStrConst.INITIAL_COST_KEY, "FUSV0133_KJ_HT");
		}
		else if (JFUStrConst.CD00133_03.equals(prcGrpCd))
		{
			// メゾンの場合
			parentMap.put(JFUStrConst.INITIAL_COST_KEY, "FUSV0133_KJ_MZ");
		}
		else if (JFUStrConst.CD00133_04.equals(prcGrpCd))
		{
			// マンションの場合
			parentMap.put(JFUStrConst.INITIAL_COST_KEY, "FUSV0133_KJ_MT");
		}

		outputMap.put(CC_TITLE_FUSV013307CC, parentMap);

		return outputMap;
	}
}