/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0082_FUSV0082OPDBMapper
*	ソースファイル名：FUSV0082_FUSV0082OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年09月07日
*＜機能概要＞
*	BP（eo光テレビオプションチャンネル追加(初期表示)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/07	FJ			新規作成
*   v3.0.0      2012/04/26  FJ）南岡   【ANK-0281-00-00】 基本コース・オプションCH組合せチェック
*   v4.00       2012/08/10  FJ）美濃原 【ANK-0531-00-00】 VオプションＣｈ重複チェック
*	v4.00       2012/08/02  FJ) 美濃原 【ANK-0550-00-00】 バック系オプションチャンネル追加に伴う重複チェック追加(5月テレビ再編)
*	v4.00		2012/09/19	FJ) 美濃原	定数化
*   v5.00       2013/05/23  FJ）文元   【ANK-1523-00-00】〔現行システム対応〕フロントＳテレビキャンペーン対応(TV共通チェック追加)
*   v14.00      2015/04/22	 FJ）西川   【OM-2015-0000744】オプションチャンネル2重課金対応
*
**********************************************************************/
package eo.web.webview.mapping;

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.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW06301SF.FUW06301SFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングです。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0082_FUSV0082OPDBMapper
{

	/** オプションチャンネル契約状態一覧照会（通常チャンネル）マップ */
	private static final String FUSV008201_S_C = "FUSV008201SC";
	/** オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ*/
	private static final String FUSV008202_S_C = "FUSV008202SC";
	/** 機器提供サービス契約一覧照会（eo光テレビ情報取得）マップ ※STB*/
	private static final String FUSV008203_S_C = "FUSV008203SC";
	/** 異動予約取得マップ */
	private static final String FUSV008201_C_C = "FUSV008201CC";

	/** 機能コード*/
	private static final String FUNC_CODE = "func_code";

	/** ＫＥＹ＿サービス契約番号 */
	private static final String KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** ＫＥＹ＿機器製造番号 */
	private static final String KEY_KIKI_SEIZO_NO = "key_kiki_seizo_no";
	/** ＫＥＹ＿サービス契約内訳番号 */
	private static final String KEY_SVC_KEI_UCWK_NO = "key_svc_kei_ucwk_no";
	/** オプションチャンネル契約状態一覧照会明細 */
	private static final String EKK0351_B506_C_B_S_MSG1_LIST = "EKK0351B506CBSMsg1List";
	/** オプションサービスコード */
	private static final String OP_SVC_CD = "op_svc_cd";
	/** オプションサービスコード名称 */
	private static final String OP_SVC_CD_NM = "op_svc_cd_nm";
	/** デジタルティアグループコード */
	private static final String DGTIA_GRP_CD = "dgtia_grp_cd";
	/** オプションチャンネル種別コード */
	private static final String OP_CHANNEL_SBT_CD = "op_channel_sbt_cd";
	/** 受付開始年月日時分 */
	private static final String UK_STA_YMDHM = "uk_sta_ymdhm";
	/** 受付終了年月日時分 */
	private static final String UK_END_YMDHM = "uk_end_ymdhm";
	/** オプションサービス備考 */
	private static final String OP_SVC_BIKO = "op_svc_biko";
	/** 備考画面表示開始年月日 */
	private static final String BIKO_SCREEN_DSP_STAYMD = "biko_screen_dsp_staymd";
	/** 備考画面表示終了年月日 */
	private static final String BIKO_SCREEN_DSP_ENDYMD = "biko_screen_dsp_endymd";
	/** オプションサービス契約ステータス */
	private static final String OP_SVC_KEI_STAT = "op_svc_kei_stat";
	/** 予約適用年月日*/
	private static final String RSV_APLY_YMD = "rsv_aply_ymd";
	/** 料金コースコード*/
	private static final String PCRS_CD = "pcrs_cd";
	/** 料金プランコード*/
	private static final String PPLAN_CD = "pplan_cd";
	/** 料金プラン固定金額 */
	private static final String PPLAN_KOTEI_AMNT = "pplan_kotei_amnt";
	/** 料金プラン固定単位コード名称 */
	private static final String PPLAN_KOTEI_TANI_CD_NM = "pplan_kotei_tani_cd_nm";
	/** 料金プラン固定金額（来月単価）*/
	private static final String PPLAN_KOTEI_AMNT_NEXT_M = "pplan_kotei_amnt_next_m";
	/** 料金プラン固定単位コード名称（来月単価） */
	private static final String PPLAN_KOTEI_TANI_CD_NM_NEXT_M = "pplan_kotei_tani_cd_nm_next_m";
	/** オプションチャンネル解約対象抽出フラグ */
	private static final String OPCH_DSL_TG_CHSHT_FLG = "opch_dsl_tg_chsht_flg";
	/** オプションチャンネル登録画面表示対象フラグ */
	private static final String OPCH_ADD_SCREEN_DSP_TG_FLG = "opch_add_screen_dsp_tg_flg";

	/**
	 * コンストラクタです。
	 */
	public FUSV0082_FUSV0082OPDBMapper()
	{
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param svcKeiUcwkNo　サービス契約内訳
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008201SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String svcKeiUcwkNo)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length == 0)
		{
			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(FUW06301SFConst.KIKI_SEIZO_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約内訳番号 → オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.ＫＥＹ＿サービス契約内訳番号
		parentMap.put(KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);

		outputMap.put(FUSV008201_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param svcKeiUcwkNo　サービス契約内訳
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008202SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String svcKeiUcwkNo)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length == 0)
		{
			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(FUW06301SFConst.KIKI_SEIZO_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約内訳番号 → オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.ＫＥＹ＿サービス契約内訳番号
		parentMap.put(KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);

		outputMap.put(FUSV008202_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param kikiSeizoNoStb 機器製造番号(STB)
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008203SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length == 0)
		{
			return null;
		}

		// ＳＳＯ情報の取得
		X31SDataBeanAccess ssoInfo = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.SSO_INFO);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// サービス契約番号 → 機器提供サービス契約一覧照会（eo光テレビ情報取得）マップ .ＫＥＹ＿サービス契約番号
		parentMap.put(KEY_SVC_KEI_NO, JFUWebCommon.getDataBeanItemByPath(ssoInfo, CommonInfoCFConst.SVC_KEI_NO_21));

		outputMap.put(FUSV008203_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加
	 * @param outputMap
	 * @param svcKeiUcwkNo　サービス契約内訳
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV008201CC(X31SDataBeanAccess[] bean, HashMap outputMap, String svcKeiUcwkNo)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length == 0)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// ＳＳＯ情報の取得
		X31SDataBeanAccess ssoInfo = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.SSO_INFO);

		// サービス契約番号 → 機器提供サービス契約一覧照会（eo光テレビ情報取得）マップ .ＫＥＹ＿サービス契約番号
		parentMap.put(KEY_SVC_KEI_NO, JFUWebCommon.getDataBeanItemByPath(ssoInfo, CommonInfoCFConst.SVC_KEI_NO_21));

		// サービス契約内訳番号 → オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.ＫＥＹ＿サービス契約内訳番号
		parentMap.put(KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);

		outputMap.put(FUSV008201_C_C, parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV008201SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV008201_S_C))
		{
			parentMap = (HashMap)outputMap.get(FUSV008201_S_C);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray opChannelList = bean[0].getDataBeanArray(FUW06301SFConst.OP_CHANNEL_LIST);
		childList = null;
		if (opChannelList != 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 (opChannelList.getCount() - 1 >= i)
				{
					opChannelList.clearArray();
					subbean = opChannelList.addDataBean();
				}
				else
				{
					subbean = opChannelList.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// オプションチャンネルリスト.オプションサービスコード
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.オプションサービスコード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(OP_SVC_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.オプションサービス名
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.オプションサービスコード名称
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_NM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(OP_SVC_CD_NM));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_NM_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.デジタルティアグループコード
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.デジタルティアグループコード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.DGTIA_GRP_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(DGTIA_GRP_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.DGTIA_GRP_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.オプションチャンネル種別コード
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.オプションチャンネル種別コード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OP_CHANNEL_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(OP_CHANNEL_SBT_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OP_CHANNEL_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v4.00 修正開始 ++++++++++ */
				// オプションチャンネルリスト.受付開始年月日時分
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.受付開始年月日時分
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.UK_STA_YMDHM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(UK_STA_YMDHM));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.UK_STA_YMDHM_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.受付終了年月日時分
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.受付終了年月日時分
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.UK_END_YMDHM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(UK_END_YMDHM));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.UK_END_YMDHM_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v4.00 修正終了 ++++++++++ */
				// オプションチャンネルリスト.備考
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.オプションサービス備考
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(OP_SVC_BIKO));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.備考画面表示開始年月日
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.備考画面表示開始年月日
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_SCREEN_DSP_STAYMD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(BIKO_SCREEN_DSP_STAYMD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_SCREEN_DSP_STAYMD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.備考画面表示終了年月日
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.備考画面表示終了年月日
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_SCREEN_DSP_ENDYMD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(BIKO_SCREEN_DSP_ENDYMD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_SCREEN_DSP_ENDYMD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.オプションサービス契約ステータス
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.オプションサービス契約ステータス
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(OP_SVC_KEI_STAT));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.予約適用年月日
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.予約適用年月日
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.RSV_APLY_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(RSV_APLY_YMD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.RSV_APLY_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.料金コースコード
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.料金コースコード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PCRS_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(PCRS_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PCRS_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.料金プランコード
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.料金プランコード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(PPLAN_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.料金プラン固定金額
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.料金プラン固定金額
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_AMNT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(PPLAN_KOTEI_AMNT));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_AMNT_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.料金プラン固定単位コード名称
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.料金プラン固定単位コード名称
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_TANI_CD_NM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(PPLAN_KOTEI_TANI_CD_NM));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_TANI_CD_NM_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v4.00 修正開始 ++++++++++ */
				// オプションチャンネルリスト.料金プラン固定金額（来月単価）
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.料金プラン固定金額（来月単価）
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_AMNT_NEXT_M_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(PPLAN_KOTEI_AMNT_NEXT_M));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_AMNT_NEXT_M_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルリスト.料金プラン固定単位コード名称（来月単価）
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ
				//		.オプションチャンネル契約状態一覧照会明細.料金プラン固定単位コード名称（来月単価）
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_TANI_CD_NM_NEXT_M_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(PPLAN_KOTEI_TANI_CD_NM_NEXT_M));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_TANI_CD_NM_NEXT_M_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v4.00 修正終了 ++++++++++ */
				/* ++++++++++ v3.00 修正開始 ++++++++++ */
				// オプションチャンネルリスト.オプションチャンネル解約対象抽出フラグ
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ.オプションチャンネル契約状態一覧照会明細.オプションチャンネル解約対象抽出フラグ
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OPCH_DSL_TG_CHSHT_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(OPCH_DSL_TG_CHSHT_FLG));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OPCH_DSL_TG_CHSHT_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v3.00 修正終了 ++++++++++ */
				/* ++++++++++ v4.00 修正開始 ++++++++++ */
				// オプションチャンネルリスト.オプションチャンネル登録画面表示対象フラグ
				//	← オプションチャンネル契約状態一覧照会（通常チャンネル）マップ
				//		.オプションチャンネル契約状態一覧照会明細.オプションチャンネル登録画面表示対象フラグ
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OPCH_ADD_SCREEN_DSP_TG_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(OPCH_ADD_SCREEN_DSP_TG_FLG));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OPCH_ADD_SCREEN_DSP_TG_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v4.00 修正終了 ++++++++++ */
			}
		}

		return bean;
	}

	/**
	 * 下りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV008202SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV008202_S_C))
		{
			parentMap = (HashMap)outputMap.get(FUSV008202_S_C);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV008202SC_op_channel_adult_list_EKK0351B506CBSMsg1List =
				bean[0].getDataBeanArray(FUW06301SFConst.OP_CHANNEL_ADULT_LIST);
		childList = null;
		if (listFUSV008202SC_op_channel_adult_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 (listFUSV008202SC_op_channel_adult_list_EKK0351B506CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listFUSV008202SC_op_channel_adult_list_EKK0351B506CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listFUSV008202SC_op_channel_adult_list_EKK0351B506CBSMsg1List.addDataBean();
				}

				HashMap childMap = (HashMap)childList.get(i);

				if (subbean == null)
				{
					continue;
				}

				// オプションチャンネルアダルトリスト.オプションサービスコード
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.オプションサービスコード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(OP_SVC_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.オプションサービス名
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.オプションサービスコード名称
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_NM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(OP_SVC_CD_NM));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_NM_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.デジタルティアグループコード
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.デジタルティアグループコード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.DGTIA_GRP_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(DGTIA_GRP_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.DGTIA_GRP_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.オプションチャンネル種別コード
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.オプションチャンネル種別コード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OP_CHANNEL_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(OP_CHANNEL_SBT_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OP_CHANNEL_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v4.00 修正開始 ++++++++++ */
				// オプションチャンネルアダルトリスト.受付開始年月日時分
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.受付開始年月日時分
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.UK_STA_YMDHM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(UK_STA_YMDHM));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.UK_STA_YMDHM_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.受付終了年月日時分
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.受付終了年月日時分
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.UK_END_YMDHM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(UK_END_YMDHM));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.UK_END_YMDHM_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v4.00 修正終了 ++++++++++ */
				// オプションチャンネルアダルトリスト.備考
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.オプションサービス備考
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(OP_SVC_BIKO));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.備考画面表示開始年月日
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.備考画面表示開始年月日
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_SCREEN_DSP_STAYMD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(BIKO_SCREEN_DSP_STAYMD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_SCREEN_DSP_STAYMD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.備考画面表示終了年月日
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.備考画面表示終了年月日
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_SCREEN_DSP_ENDYMD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(BIKO_SCREEN_DSP_ENDYMD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.BIKO_SCREEN_DSP_ENDYMD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.オプションサービス契約ステータス
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.オプションサービス契約ステータス
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(OP_SVC_KEI_STAT));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.予約適用年月日
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.予約適用年月日
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.RSV_APLY_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(RSV_APLY_YMD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.RSV_APLY_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.料金コースコード
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.料金コースコード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PCRS_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(PCRS_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PCRS_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.料金プランコード
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.料金プランコード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(PPLAN_CD));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.料金プラン固定金額
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.料金プラン固定金額
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_AMNT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(PPLAN_KOTEI_AMNT));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_AMNT_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.料金プラン固定単位コード名称
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.料金プラン固定単位コード名称
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_TANI_CD_NM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(PPLAN_KOTEI_TANI_CD_NM));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_TANI_CD_NM_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v4.00 修正開始 ++++++++++ */
				// オプションチャンネルアダルトリスト.料金プラン固定金額（来月単価）
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ.オプションチャンネル契約状態一覧照会明細.料金プラン固定金額（来月単価）
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_AMNT_NEXT_M_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(PPLAN_KOTEI_AMNT_NEXT_M));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_AMNT_NEXT_M_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネルアダルトリスト.料金プラン固定単位コード名称（来月単価）
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ
				//		.オプションチャンネル契約状態一覧照会明細.料金プラン固定単位コード名称（来月単価）
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_TANI_CD_NM_NEXT_M_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(PPLAN_KOTEI_TANI_CD_NM_NEXT_M));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.PPLAN_KOTEI_TANI_CD_NM_NEXT_M_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v4.00 修正終了 ++++++++++ */

				/* ++++++++++ v3.00 修正開始 ++++++++++ */
				// オプションチャンネルリスト.オプションチャンネル解約対象抽出フラグ
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ
				//		.オプションチャンネル契約状態一覧照会明細.オプションチャンネル解約対象抽出フラグ
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OPCH_DSL_TG_CHSHT_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(OPCH_DSL_TG_CHSHT_FLG));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OPCH_DSL_TG_CHSHT_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v3.00 修正終了 ++++++++++ */
				/* ++++++++++ v4.00 修正開始 ++++++++++ */
				// オプションチャンネルアダルトリスト.オプションチャンネル登録画面表示対象フラグ
				//	← オプションチャンネル契約状態一覧照会（アダルトチャンネル）マップ
				//		.オプションチャンネル契約状態一覧照会明細.オプションチャンネル登録画面表示対象フラグ
				if (childMap != null)
				{
					subbean.sendMessageString(FUW06301SFConst.OPCH_ADD_SCREEN_DSP_TG_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(OPCH_ADD_SCREEN_DSP_TG_FLG));
				}
				else
				{
					subbean.sendMessageString(FUW06301SFConst.OPCH_ADD_SCREEN_DSP_TG_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				/* ++++++++++ v4.00 修正終了 ++++++++++ */
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV008203SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV008203_S_C))
		{
			parentMap = (HashMap)outputMap.get(FUSV008203_S_C);
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listFUSV008203SC_all_stb_list_EKK0341B509CBSMsg1List = bean[0].getDataBeanArray(FUW06301SFConst.ALL_STB_LIST);
		childList = null;
		if (listFUSV008203SC_all_stb_list_EKK0341B509CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0341B509CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0341B509CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listFUSV008203SC_all_stb_list_EKK0341B509CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listFUSV008203SC_all_stb_list_EKK0341B509CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listFUSV008203SC_all_stb_list_EKK0341B509CBSMsg1List.addDataBean();
				}

				HashMap childMap = (HashMap)childList.get(i);

				if (subbean == null)
				{
					continue;
				}

				if (childMap == null)
				{
					continue;
				}

				// 全機器リスト.ＳＴＢ変更予約有無 ← ＳＴＢ＿機器提供サービス契約一覧照会マップ.ＳＴＢ変更予約有無
				subbean.sendMessageString(FUW06301SFConst.RSV_STAT_STB_02, X31CWebConst.DATABEAN_SET_VALUE,
						(String)childMap.get("rsv_stat_stb"));
				// 全機器リスト.コース変更予約有無 ← ＳＴＢ＿機器提供サービス契約一覧照会マップ.コース変更予約有無
				subbean.sendMessageString(FUW06301SFConst.RSV_STAT_CORSE_02, X31CWebConst.DATABEAN_SET_VALUE,
						(String)childMap.get("rsv_stat_corse"));
				// 全機器リスト.ＢＳパススルー予約有無（回線） ← ＳＴＢ＿機器提供サービス契約一覧照会マップ.ＢＳパススルー予約有無（回線）
				subbean.sendMessageString(FUW06301SFConst.TOTAL_RSV_STAT_BS_02, X31CWebConst.DATABEAN_SET_VALUE,
						(String)childMap.get("total_rsv_stat_bs"));
			}
		}

		return bean;
	}

}