/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0083_FUSV0083OPDBMapper
*	ソースファイル名：FUSV0083_FUSV0083OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年02月14日
*＜機能概要＞
*	BP（eo光テレビオプションチャンネル追加()）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/02/14	FJ			新規作成
*   v3.0.0      2012/04/27  FJ）南岡   【ANK-0281-00-00】 基本コース・オプションCH組合せチェック
*	v4.00		2012/09/19	FJ) 美濃原	定数化
*	v4.00		2012/10/05	FJ) 大島   【ANK-1223-00-00】進捗補足事項編集対応
*	v5.00		2013/02/08	FJ) 美濃原 【ST2-2013-0000434】EKK0381C030の予約適用開始希望年月日等の項目追加
*	v14.00		2015/03/17	FJ) 谷本   【ANK-2394-00-00】進捗タブ処理内容改善
**********************************************************************/
package eo.web.webview.mapping;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.ArrayList;
import java.util.HashMap;

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.FUW06302SF.FUW06302SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングです。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0083_FUSV0083OPDBMapper
{

	/** オプションチャンネル契約状態一覧照会マップ */
	private static final String FUSV008301_S_C = "FUSV008301SC";
	/** 申込内容承認登録マップ */
	private static final String FUSV008302_S_C = "FUSV008302SC";
	/** オプションサービス一意照会マップ */
	private static final String FUSV008303_S_C = "FUSV008303SC";
	/** オプションサービス契約＜TV＞登録マップ */
	private static final String FUSV008304_S_C = "FUSV008304SC";
	/** オプションサービス契約＜TV＞照査締結マップ */
	private static final String FUSV008305_S_C = "FUSV008305SC";
	/** オプションサービス契約＜TV＞開始マップ */
	private static final String FUSV008306_S_C = "FUSV008306SC";
	/** 進捗登録マップ */
	private static final String FUSV008307_S_C = "FUSV008307SC";
	/** 申込明細照査・後続業務依頼マップ */
	private static final String FUSV008308_S_C = "FUSV008308SC";
	/** デジタルティアグループコード一覧照会マップ */
	private static final String FUSV008309_S_C = "FUSV008309SC";
	/** 宅内機器一意照会マップ */
	private static final String FUSV008310SC = "FUSV008310SC";
	/** オプションチャンネル重複チェックマップ */
	private static final String FUSV008311CC = "FUSV008311CC";

	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	/** ＫＥＹ＿機器製造番号 */
	private static final String KEY_KIKI_SEIZO_NO = "key_kiki_seizo_no";
	/** ＫＥＹ＿オプションチャンネル種別コード */
	private static final String KEY_OP_CHANNEL_SBT_CD = "key_op_channel_sbt_cd";

	/** デジタルティアグループコード一覧照会明細 */
	private static final String EKK0161_B506_C_B_S_MSG1_LIST = "EKK0161B506CBSMsg1List";
	/** オプションサービス契約ステータス */
	private static final String OP_SVC_KEI_STAT = "op_svc_kei_stat";
	/** オプションチャンネル契約状態一覧 */
	private static final String EKK0351_B506_C_B_S_MSG1_LIST = "EKK0351B506CBSMsg1List";

	/** ＳＹＳＩＤ */
	private static final String SYSID = "sysid";
	/** オプションサービスコード */
	private static final String OP_SVC_CD = "op_svc_cd";
	/** 料金コースコード */
	private static final String PCRS_CD = "pcrs_cd";
	/** 料金プランコード */
	private static final String PPLAN_CD = "pplan_cd";

	/** 申込形態コード */
	private static final String MSKM_FORM_CD = "mskm_form_cd";
	/** 申込内容承認登録明細 */
	private static final String EKK0011_D020_C_B_S_MSG1_LIST = "EKK0011D020CBSMsg1List";

	/** ＫＥＹ＿オプションサービスコード */
	private static final String KEY_OP_SVC_CD = "key_op_svc_cd";
	/** 請求契約番号 */
	private static final String SEIKY_KEI_NO = "seiky_kei_no";
	/** サービス利用開始年月日 */
	private static final String SVC_USE_STA_KIBO_YMD = "svc_use_sta_kibo_ymd";
	/** 最終更新年月日時分秒 */
	private static final String UPD_DTM_BF = "upd_dtm_bf";
	/** 異動区分 */
	private static final String IDO_DIV = "ido_div";
	/** 即時／翌月 */
	private static final String SKJ_YKGT = "skj_ykgt";
	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "svc_kei_no";
	/** サービス契約内訳番号 */
	private static final String SVC_KEI_UCWK_NO = "svc_kei_ucwk_no";
	/** 異動理由明細 */
	private static final String EKK1091_D010_C_B_S_MSG1_LIST = "EKK1091D010CBSMsg1List";
	/** 異動理由コード */
	private static final String IDO_RSN_CD = "ido_rsn_cd";
	/** ＫＥＹ＿サービス契約内訳番号 */
	private static final String KEY_SVC_KEI_UCWK_NO = "key_svc_kei_ucwk_no";
	/** 実行フラグ */
	private static final String RUN_FLG = "run_flg";
	/** 申込区分 */
	private static final String MSKM_KBN = "mskm_kbn";
	/** デジタルティアグループコード */
	private static final String DGTIA_GRP_CD = "dgtia_grp_cd";
	/** 特記事項１要素を取得する際のid */
	private static final String PRGADD_ID_0 = "0";
	/** 進捗特記事項1 */
	private static final String PRG_TKJK_1 = "prg_tkjk_1";
	/** 置換文字 %0% */
	private static final String TKN_CHR0 = "%0%";
	/** 置換文字 %1% */
	private static final String TKN_CHR1 = "%1%";
	/** 置換文字 %2% */
	private static final String TKN_CHR2 = "%2%";

	// 視聴制御オーダ送信コモンコンポーネント部品 JKKWctrlOrderSendCC
	/** 視聴制御オーダ送信マップ */
	private static final String WCTRL_ORDER_SEND_MAP = "WctrlOrderSendMap";
	/** ＫＥＹ＿機器製造番号 */
	private static final String WCA001_KEY_KK_SEIZO_NO = "wca001_key_kk_seizo_no";
	/** ＫＥＹ＿機器製造番号 */
	private static final String WCA001_KEY_KEY_TK_MDL_CD = "wca001_key_tk_mdl_cd";
	/** 視聴制御依頼処理コード */
	private static final String WC0011D_WCTRL_REQ_TRN_CD = "wc0011d_wctrl_req_trn_cd";
	/** SYSID */
	private static final String WC0011D_SYSID = "wc0011d_sysid";
	/** サービス契約番号 */
	private static final String WC0011D_SVC_KEI_NO = "wc0011d_svc_kei_no";
	/** サービス契約内訳番号 */
	private static final String WC0011D_SVC_KEI_UCWK_NO = "wc0011d_svc_kei_ucwk_no";
	/** 機器製造番号（ＢＣＡＳ） */
	private static final String WC0011D_BCAS_CARD_NO = "wc0011d_bcas_card_no";
	/** Ｃ−ＣＡＳカードＮｏ． */
	private static final String WC0011D_CCAS_CARD_NO = "wc0011d_ccas_card_no";
	/** デジタルティアグループコード */
	private static final String WC01611_DGTIA_GRP_CD = "wc01611_dgtia_grp_cd";
	/** Ｃ−ＣＡＳカードＮｏ． */
	private static final String WC0011C1_CCAS_CARD_NO = "wc0011c1_ccas_card_no";
	/** 機器製造番号（ＢＣＡＳ） */
	private static final String WC0011C1_BCAS_CARD_NO = "wc0011c1_bcas_card_no";
	/** 視聴制御オーダ一意照会明細 */
	private static final String WC01611_EWC0161_D010_C_B_S_MSG1_LIST = "wc01611_EWC0161D010CBSMsg1List";

	/** ＫＥＹ＿宅内機器型式コード */
	private static final String KEY_TK_MDL_CD = "key_tk_mdl_cd";
	/** 宅内機器一意照会明細 */
	private static final String EWCA0010002CBS_MSG1_LIST = "EWCA0010002CBSMsg1List";
	/** STB_ID */
	private static final String STB_ID = "stb_id";

	/**
	 * コンストラクタです。
	 */
	public FUSV0083_FUSV0083OPDBMapper()
	{
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param svcKeiUcwkNo　サービス契約内訳
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008301SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String svcKeiUcwkNo)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプションサービスコード → オプションチャンネル契約状態一覧照会マップ.オプションサービスコード
		parentMap.put(OP_SVC_CD, bean[0].sendMessageString(FUW06302SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// Ｃ−ＣＡＳカードＮｏ． → オプションチャンネル契約状態一覧照会マップ.ＫＥＹ＿機器製造番号
		parentMap.put(KEY_KIKI_SEIZO_NO, bean[0].sendMessageString(FUW06302SFConst.KIKI_SEIZO_NO_CCAS, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約内訳番号 → オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.ＫＥＹ＿サービス契約内訳番号
		parentMap.put(KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		// オプションチャンネル種別コード → オプションチャンネル契約状態一覧照会マップ.ＫＥＹ＿オプションチャンネル種別コード
		parentMap.put(KEY_OP_CHANNEL_SBT_CD, bean[0].sendMessageString(FUW06302SFConst.OP_CHANNEL_SBT_CD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV008301_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008302SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// ＳＹＳＩＤ → 申込内容承認登録マップ.SYSID
		parentMap.put(SYSID, bean[0].sendMessageString(FUW06302SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));

		beanTemp = bean[0];
		//	申込登録明細
		arraybean = beanTemp.getDataBeanArray(FUW06302SFConst.MSKM_ADD_LIST);
		if (parentMap.containsKey(EKK0011_D020_C_B_S_MSG1_LIST))
		{
			list = (ArrayList)parentMap.get(EKK0011_D020_C_B_S_MSG1_LIST);
		}
		else
		{
			list = new ArrayList();
		}
		if (arraybean != null && arraybean.getCount() > 0)
		{
			for (int i = 0; i < arraybean.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				HashMap childMap = null;
				if (list.size() - 1 >= i)
				{
					childMap = (HashMap)list.get(i);
				}
				else
				{
					childMap = new HashMap();
				}

				// 申込登録明細.申込形態コード → 申込内容承認登録マップ.申込内容承認登録明細.申込形態コード
				if (subbean != null)
				{
					childMap.put(MSKM_FORM_CD, subbean.sendMessageString(FUW06302SFConst.MSKM_FORM_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}
		parentMap.put(EKK0011_D020_C_B_S_MSG1_LIST, list);

		outputMap.put(FUSV008302_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008303SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプションサービスコード → オプションサービス一意照会マップ.ＫＥＹ＿オプションサービスコード
		parentMap.put(KEY_OP_SVC_CD, bean[0].sendMessageString(FUW06302SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV008303_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008304SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプションサービスコード → オプションサービス契約＜TV＞登録マップ.オプションサービスコード
		parentMap.put(OP_SVC_CD, bean[0].sendMessageString(FUW06302SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// 料金コースコード → オプションサービス契約＜TV＞登録マップ.料金コースコード
		parentMap.put(PCRS_CD, bean[0].sendMessageString(FUW06302SFConst.PCRS_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// 料金プランコード → オプションサービス契約＜TV＞登録マップ.料金プランコード
		parentMap.put(PPLAN_CD, bean[0].sendMessageString(FUW06302SFConst.PPLAN_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約内訳番号 → オプションサービス契約＜TV＞登録マップ.サービス契約内訳番号
		parentMap.put(SVC_KEI_UCWK_NO, bean[0].sendMessageString(FUW06302SFConst.SVC_KEI_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// ＳＹＳＩＤ → オプションサービス契約＜TV＞登録マップ.SYSID
		parentMap.put(SYSID, bean[0].sendMessageString(FUW06302SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス利用開始年月日 → オプションサービス契約＜TV＞登録マップ.サービス利用開始希望年月日
		parentMap.put(SVC_USE_STA_KIBO_YMD, bean[0].sendMessageString(FUW06302SFConst.SVC_USE_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		// 請求契約番号 → オプションサービス契約＜TV＞登録マップ.請求契約番号
		parentMap.put(SEIKY_KEI_NO, bean[0].sendMessageString(FUW06302SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 最終更新年月日時分秒 → オプションサービス契約＜TV＞登録マップ.更新年月日時分秒（更新前）
		parentMap.put(UPD_DTM_BF, bean[0].sendMessageString(FUW06302SFConst.LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV008304_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008305SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 異動区分 → オプションサービス契約＜TV＞照査締結マップ.異動区分
		parentMap.put(IDO_DIV, bean[0].sendMessageString(FUW06302SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス利用開始年月日 → オプションサービス契約＜TV＞登録マップ.サービス利用開始希望年月日
		parentMap.put("svc_use_sta_kibo_ymd", bean[0].sendMessageString(FUW06302SFConst.SVC_USE_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス利用開始年月日 → オプションサービス契約＜TV＞登録マップ.予約適用開始希望年月日
		parentMap.put("rsv_tsta_kibo_ymd", bean[0].sendMessageString(FUW06302SFConst.SVC_USE_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス利用開始年月日 → オプションサービス契約＜TV＞登録マップ.表示用サービス提供開始年月日
		parentMap.put("dsp_svctk_staymd", bean[0].sendMessageString(FUW06302SFConst.SVC_USE_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV008305_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008306SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 即時／翌月 → オプションサービス契約＜TV＞開始マップ.即時／翌月
		parentMap.put(SKJ_YKGT, bean[0].sendMessageString(FUW06302SFConst.SKJ_YKGT, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV008306_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008307SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// サービス契約番号 → 進捗登録マップ.サービス契約番号
		parentMap.put(SVC_KEI_NO, bean[0].sendMessageString(FUW06302SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約内訳番号 → 進捗登録マップ.サービス契約内訳番号
		parentMap.put(SVC_KEI_UCWK_NO, bean[0].sendMessageString(FUW06302SFConst.SVC_KEI_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));

		beanTemp = bean[0];
		//	異動理由明細
		arraybean = beanTemp.getDataBeanArray(FUW06302SFConst.IDO_RIYU_LIST);
		if (parentMap.containsKey(EKK1091_D010_C_B_S_MSG1_LIST))
		{
			list = (ArrayList)parentMap.get(EKK1091_D010_C_B_S_MSG1_LIST);
		}
		else
		{
			list = new ArrayList();
		}
		if (arraybean != null && arraybean.getCount() > 0)
		{
			for (int i = 0; i < arraybean.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				HashMap childMap = null;
				if (list.size() - 1 >= i)
				{
					childMap = (HashMap)list.get(i);
				}
				else
				{
					childMap = new HashMap();
				}

				// 異動理由明細.異動理由コード → 進捗登録マップ.異動理由明細.異動理由コード
				if (subbean != null)
				{
					childMap.put(IDO_RSN_CD, subbean.sendMessageString(FUW06302SFConst.IDO_RSN_CD_03, X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}
		// 進捗特記事項1
		try
		{
			String prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW06302, PRGADD_ID_0);

			if (prgTkjk1 != null && prgTkjk1.length() > 0)
			{
				// STBID
				prgTkjk1 = prgTkjk1.replace(TKN_CHR0, bean[0].sendMessageString(FUW06302SFConst.STB_ID, X31CWebConst.DATABEAN_GET_VALUE));
				// チャンネル名
				prgTkjk1 = prgTkjk1.replace(TKN_CHR1, bean[0].sendMessageString(FUW06302SFConst.OP_SVC_NM, X31CWebConst.DATABEAN_GET_VALUE));
				// 利用開始日(YYYY/MM/DD 編集)
				prgTkjk1 =
						prgTkjk1.replace(TKN_CHR2, JFUWebCommon.formatDate(bean[0].sendMessageString(FUW06302SFConst.SVC_USE_STA_YMD,
								X31CWebConst.DATABEAN_GET_VALUE)));
				parentMap.put(PRG_TKJK_1, prgTkjk1);
			}
			else
			{
				DEBUG_LOG.debug("※進捗特記事項1がXMLから正常に取得できませんでした。処理は続行します。");
			}
		}
		catch (Exception e)
		{
			DEBUG_LOG.debug("※進捗特記事項1がXMLから正常に取得できませんでした。処理は続行します。");
		}

		parentMap.put(EKK1091_D010_C_B_S_MSG1_LIST, list);

		outputMap.put(FUSV008307_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008308SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 異動区分 → 申込明細照査・後続業務依頼マップ.異動区分
		parentMap.put(IDO_DIV, bean[0].sendMessageString(FUW06302SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV008308_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008309SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 実行フラグ → デジタルティアグループコード一覧照会マップ.実行フラグ
		parentMap.put(RUN_FLG, bean[0].sendMessageString(FUW06302SFConst.RUN_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約内訳番号 → デジタルティアグループコード一覧照会マップ.ＫＥＹ＿サービス契約内訳番号
		parentMap.put(KEY_SVC_KEI_UCWK_NO, bean[0].sendMessageString(FUW06302SFConst.SVC_KEI_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV008309_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setWctrlOrderSendMap(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 申込区分 → 視聴制御オーダ送信マップ.申込区分
		parentMap.put(MSKM_KBN, bean[0].sendMessageString(FUW06302SFConst.MSKM_DIV, X31CWebConst.DATABEAN_GET_VALUE));

		/* ++++++++++ v3.00 修正開始 ++++++++++ */
		// +++ JKKWctrlOrderSendCC_視聴制御オーダ送信コモンコンポーネント部品のIN項目名が変更となったため修正
		// 機器製造番号（ＳＴＢ） → 視聴制御オーダ送信マップ.ＫＥＹ＿機器製造番号
		//parentMap.put("tn0810_key_kiki_seizo_no", bean[0].sendMessageString("機器製造番号（ＳＴＢ）", X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put(WCA001_KEY_KK_SEIZO_NO, bean[0].sendMessageString(FUW06302SFConst.KIKI_SEIZO_NO_STB, X31CWebConst.DATABEAN_GET_VALUE));
		/* ++++++++++ v3.00 修正終了 ++++++++++ */
		// 宅内機器型式コード（ＳＴＢ） → 視聴制御オーダ送信マップ.ＫＥＹ＿宅内機器型式コード
		parentMap.put(WCA001_KEY_KEY_TK_MDL_CD, bean[0].sendMessageString(FUW06302SFConst.TAKNKIKI_MODEL_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// 視聴制御依頼処理コード → 視聴制御オーダ送信マップ.視聴制御依頼処理コード
		parentMap.put(WC0011D_WCTRL_REQ_TRN_CD, bean[0].sendMessageString(FUW06302SFConst.WCTRL_REQ_TRN_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// ＳＹＳＩＤ → 視聴制御オーダ送信マップ.SYSID
		parentMap.put(WC0011D_SYSID, bean[0].sendMessageString(FUW06302SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号 → 視聴制御オーダ送信マップ.サービス契約番号
		parentMap.put(WC0011D_SVC_KEI_NO, bean[0].sendMessageString(FUW06302SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約内訳番号 → 視聴制御オーダ送信マップ.サービス契約内訳番号
		parentMap.put(WC0011D_SVC_KEI_UCWK_NO, bean[0].sendMessageString(FUW06302SFConst.SVC_KEI_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// Ｃ−ＣＡＳカードＮｏ． → 視聴制御オーダ送信マップ.C−CASカード番号
		parentMap.put(WC0011D_CCAS_CARD_NO, bean[0].sendMessageString(FUW06302SFConst.KIKI_SEIZO_NO_CCAS, X31CWebConst.DATABEAN_GET_VALUE));
		// 機器製造番号（ＢＣＡＳ） → 視聴制御オーダ送信マップ.B−CASカード番号
		parentMap.put(WC0011D_BCAS_CARD_NO, bean[0].sendMessageString(FUW06302SFConst.KIKI_SEIZO_NO_BCAS, X31CWebConst.DATABEAN_GET_VALUE));

		beanTemp = bean[0];
		//	デジタルティアグループコード一覧
		arraybean = beanTemp.getDataBeanArray(FUW06302SFConst.DGTIA_GRP_CD_LIST);
		if (parentMap.containsKey(WC01611_EWC0161_D010_C_B_S_MSG1_LIST))
		{
			list = (ArrayList)parentMap.get(WC01611_EWC0161_D010_C_B_S_MSG1_LIST);
		}
		else
		{
			list = new ArrayList();
		}
		if (arraybean != null && arraybean.getCount() > 0)
		{
			for (int i = 0; i < arraybean.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				HashMap childMap = null;
				if (list.size() - 1 >= i)
				{
					childMap = (HashMap)list.get(i);
				}
				else
				{
					childMap = new HashMap();
				}

				// デジタルティアグループコード一覧.デジタルティアグループコード 
				//	→ 視聴制御オーダ送信マップ.視聴制御オーダ一意照会明細.デジタルティアグループコード
				if (subbean != null)
				{
					childMap.put(WC01611_DGTIA_GRP_CD, subbean.sendMessageString(FUW06302SFConst.DGTIA_GRP_CD_04, X31CWebConst.DATABEAN_GET_VALUE));
				}
				// Ｃ−ＣＡＳカードＮｏ． → 視聴制御オーダ送信マップ.視聴制御オーダ一意照会明細.C−CASID
				if (beanTemp != null)
				{
					childMap.put(WC0011C1_CCAS_CARD_NO, beanTemp.sendMessageString(FUW06302SFConst.KIKI_SEIZO_NO_CCAS,
							X31CWebConst.DATABEAN_GET_VALUE));
				}
				// 機器製造番号（ＢＣＡＳ） → 視聴制御オーダ送信マップ.視聴制御オーダ一意照会明細.B−CASID
				if (beanTemp != null)
				{
					childMap.put(WC0011C1_BCAS_CARD_NO, beanTemp.sendMessageString(FUW06302SFConst.KIKI_SEIZO_NO_BCAS,
							X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}
		parentMap.put(WC01611_EWC0161_D010_C_B_S_MSG1_LIST, list);

		outputMap.put(WCTRL_ORDER_SEND_MAP, parentMap);

		return outputMap;
	}

	/* ++++++++++ v3.00 修正開始 ++++++++++ */

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008310SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 機器製造番号 → 宅内機器一意照会マップ.ＫＥＹ＿機器製造番号
		parentMap.put(KEY_KIKI_SEIZO_NO, bean[0].sendMessageString(FUW06302SFConst.KIKI_SEIZO_NO_STB, X31CWebConst.DATABEAN_GET_VALUE));
		// 機器製造番号 → 宅内機器一意照会マップ.ＫＥＹ＿宅内機器型式コード
		parentMap.put(KEY_TK_MDL_CD, bean[0].sendMessageString(FUW06302SFConst.TAKNKIKI_MODEL_CD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV008310SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008311SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// オプションサービスコード → オプションチャンネル重複チェックマップ.オプションサービスコード
		parentMap.put(OP_SVC_CD, bean[0].sendMessageString(FUW06302SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// 内訳料金コースコード → オプションチャンネル重複チェックマップ.料金コースコード
		parentMap.put(PCRS_CD, bean[0].sendMessageString(FUW06302SFConst.UCWK_PCRS_CD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV008311CC, parentMap);

		return outputMap;
	}

	/* ++++++++++ v3.00 修正終了 ++++++++++ */

	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV008301SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV008301_S_C))
		{
			parentMap = (HashMap)outputMap.get(FUSV008301_S_C);
		}

		ArrayList childList = null;

		// オプションチャンネル契約状態一覧
		X31SDataBeanAccessArray listFUSV008301SC_op_chanell_kei_stat_list_EKK0351B506CBSMsg1List =
				bean[0].getDataBeanArray(FUW06302SFConst.OP_CHANELL_KEI_STAT_LIST);
		childList = null;
		if (listFUSV008301SC_op_chanell_kei_stat_list_EKK0351B506CBSMsg1List != null && parentMap != null
				&& parentMap.containsKey(EKK0351_B506_C_B_S_MSG1_LIST))
		{
			childList = (ArrayList)parentMap.get(EKK0351_B506_C_B_S_MSG1_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listFUSV008301SC_op_chanell_kei_stat_list_EKK0351B506CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listFUSV008301SC_op_chanell_kei_stat_list_EKK0351B506CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listFUSV008301SC_op_chanell_kei_stat_list_EKK0351B506CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// オプションチャンネル契約状態一覧.オプションサービスコード 
				//	← オプションチャンネル契約状態一覧照会マップ.オプションチャンネル契約状態一覧照会明細.オプションサービスコード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06302SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(OP_SVC_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06302SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネル契約状態一覧.オプションサービス契約ステータス 
				//	← オプションチャンネル契約状態一覧照会マップ.オプションチャンネル契約状態一覧照会明細.オプションサービス契約ステータス
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06302SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(OP_SVC_KEI_STAT));
				}
				else
				{
					subbean.sendMessageString(FUW06302SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV008309SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV008309_S_C))
		{
			parentMap = (HashMap)outputMap.get(FUSV008309_S_C);
		}

		ArrayList childList = null;

		// デジタルティアグループコード一覧
		X31SDataBeanAccessArray listFUSV008309SC_dgtia_grp_cd_list_EKK0161B506CBSMsg1List =
				bean[0].getDataBeanArray(FUW06302SFConst.DGTIA_GRP_CD_LIST);
		childList = null;
		if (listFUSV008309SC_dgtia_grp_cd_list_EKK0161B506CBSMsg1List != null && parentMap != null
				&& parentMap.containsKey(EKK0161_B506_C_B_S_MSG1_LIST))
		{
			childList = (ArrayList)parentMap.get(EKK0161_B506_C_B_S_MSG1_LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listFUSV008309SC_dgtia_grp_cd_list_EKK0161B506CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listFUSV008309SC_dgtia_grp_cd_list_EKK0161B506CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listFUSV008309SC_dgtia_grp_cd_list_EKK0161B506CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// デジタルティアグループコード一覧.デジタルティアグループコード 
				//	← デジタルティアグループコード一覧照会マップ.デジタルティアグループコード一覧照会明細.デジタルティアグループコード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06302SFConst.DGTIA_GRP_CD_04, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(DGTIA_GRP_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06302SFConst.DGTIA_GRP_CD_04, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV008310SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV008310SC))
		{
			parentMap = (HashMap)outputMap.get(FUSV008310SC);
		}

		if (null != parentMap && parentMap.containsKey(EWCA0010002CBS_MSG1_LIST))
		{
			ArrayList childList = (ArrayList)parentMap.get(EWCA0010002CBS_MSG1_LIST);

			if (childList.size() > 0)
			{
				HashMap childMap = (HashMap)childList.get(0);

				bean[0].sendMessageString(FUW06302SFConst.STB_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(STB_ID));
			}
		}

		return bean;
	}

}