/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0130_FUSV0130OPDBMapper
*	ソースファイル名：FUSV0130_FUSV0130OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年05月16日
*＜機能概要＞
*	BP（eo光テレビSTB追加変更申込（初期表示））へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/05/16	FJ		新規作成
*   v4.00       2012/07/20   FJ) 瀧澤    【ANK-0368-00-00】 キャンペーン文言出力対応
*   v5.00       2013/03/27   FJ）文元    【IT1-2013-0000661】「EKK0341B509(機器提供サービス契約一覧照会)」の項目追加による修正
*   v5.00       2013/05/23   FJ）文元    【ANK-1523-00-00】〔現行システム対応〕フロントＳテレビキャンペーン対応(TV共通チェック追加)
*   v8.00       2014/01/27   FJ) 文元    【ANK-1589-00-00】消費増税に伴う料金施策
*   v11.00      2014/08/11   FJ) 谷本    【ANK-2141-00-00】STB交換方法の変更
*   v39.00      2018/11/29   FJ) 美濃原  【OM-2018-0001176】既契約のSTB選択リスト作成条件をHDD容量コードに変更
*   v47.0.0     2019/06/28   FJ) 大島    【ANK-3636-00-00】消費増税対応（8%⇒10%）
*
**********************************************************************/
package eo.web.webview.mapping;


import java.util.ArrayList;
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.common.constant.JPCModelConstant;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングを行います。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0130_FUSV0130OPDBMapper
{

	// SC・CC名
	/** CCタイトル：キャンペーン文言一覧照会処理 */
	private static final String CC_TITLE_FUSV013002CC = "FUSV013002CC";
	/** FUSV013003CC */
	private static final String FUSV013003CC = "FUSV013003CC";

	// 項目名
	/** Mapキー：ＫＥＹ＿サービス契約番号 */
	private static final String MAP_KEY_CMP_SVC_KEI_NO = "key_svc_kei_no_cmp";
	/** Mapキー：ＫＥＹ＿料金コースコード */
	private static final String MAP_KEY_CMP_PCRS_CD = "key_pcrs_cd_cmp";
	/** Mapキー：ＫＥＹ＿料金プランコード */
	private static final String MAP_KEY_CMP_PPLAN_CD = "key_pplan_cd_cmp";
	/** IN項目: ＫＥＹ＿割引サービスコード */
	protected static final String IN_PARAM_CMP_KEY_WRIB_SVC_CD = "key_wrib_svc_cd";
	/** Mapキー：ＫＥＹ＿割引サービス適用条件種別コードリスト */
	private static final String MAP_KEY_CMP_WRSV_APLY_SBT_LIST = "key_wrsv_aply_jkn_sbt_cd_list_cmp";
	/** 項目ID：料金コースコード */
	private static final String IN_PCRS_CD = "pcrs_cd";
	/** IN項目:宅内機器型式コード */
	private static final String IN_TAKNKIKI_MODEL_CD = "taknkiki_model_cd";
	/** IN項目:ＨＤＤ容量コード */
	private static final String IN_HDD_CAPA_CD = "hdd_capa_cd";
	/** IN項目:機器リスト */
	private static final String IN_KIKI_LIST = "kiki_list";
	/** 項目ID：機能コード */
	private static final String IN_FUNC_CODE = "func_code";

	// その他
	/** 上りマッピング時に引数となるBeanの配列要素数 */
	public static final int UP_MAPPING_BEANELEM_CNT = 2;

	/**
	 * コンストラクタ
	 */
	public FUSV0130_FUSV0130OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV0130WORK01(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ＳＴＢＩＤ検索有無フラグ → ｅｏ光テレビＳＴＢ追加変更申込（初期表示）作業項目マップ０１.ＳＴＢＩＤ検索有無フラグ
		parentMap.put("sc_stbid_flg", bean[0].sendMessageString("ＳＴＢＩＤ検索有無フラグ", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV0130WORK01", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013001SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		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));
		// 部品呼び出し → 機器提供サービス契約一覧照会マップ.ＫＥＹ＿機器提供サービスコード
		parentMap.put("key_kktk_svc_cd", JFUStrConst.KK0771_KKTK_SVC_CD_C009);

		outputMap.put("FUSV013001SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013002SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		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));
		// 部品呼び出し → 機器提供サービス契約一覧照会マップ＿０１.ＫＥＹ＿機器提供サービスコード
		parentMap.put("key_kktk_svc_cd", JFUStrConst.KK0771_KKTK_SVC_CD_C010);

		outputMap.put("FUSV013002SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013003SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		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));
		// 部品呼び出し → 機器提供サービス契約一覧照会マップ＿０２.ＫＥＹ＿機器提供サービスコード
		parentMap.put("key_kktk_svc_cd", JFUStrConst.KK0771_KKTK_SVC_CD_C011);

		outputMap.put("FUSV013003SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013004SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → 機器提供サービス契約一覧照会マップ＿０３.ＫＥＹ＿機器提供サービスコード
		parentMap.put("key_kktk_svc_cd", JFUStrConst.KK0771_KKTK_SVC_CD_C013);

		// 機器提供サービス契約番号（ＶＯＮＵ）の取得
		String kktkSvcKeiNo = bean[0].sendMessageString("機器提供サービス契約番号（ＶＯＮＵ）", X31CWebConst.DATABEAN_GET_VALUE);

		if (JFUWebCommon.isNull(kktkSvcKeiNo))
		{
			kktkSvcKeiNo = JFUStrConst.VONU_DAITAI_KKTK_SVKEI_NO;
		}
		// 機器提供サービス契約番号（ＶＯＮＵ） → 機器提供サービス契約一覧照会マップ＿０３.ＫＥＹ＿機器提供サービス契約番号
		parentMap.put("key_kktk_svc_kei_no", kktkSvcKeiNo);

		outputMap.put("FUSV013004SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013005SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		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));

		outputMap.put("FUSV013005SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013006SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		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));

		outputMap.put("FUSV013006SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013007SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ＳＹＳＩＤ → 連絡先一覧照会マップ.ＫＥＹ＿ＳＹＳＩＤ
		parentMap.put("key_sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV013007SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013008SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → 一時支払金一意照会マップ.ＫＥＹ＿一時支払料金番号
// ANK-3636-00-00 MOD START
		parentMap.put("key_tmp_pay_prc_no", JFUStrConst.KK0721_TMP_PAY_PRC_NO_210000000020);
// ANK-3636-00-00 MOD END

		outputMap.put("FUSV013008SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013009SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → 一時支払金一意照会マップ＿０１.ＫＥＹ＿一時支払料金番号
// ANK-3636-00-00 MOD START
		parentMap.put("key_tmp_pay_prc_no", JFUStrConst.KK0721_TMP_PAY_PRC_NO_210000000021);
// ANK-3636-00-00 MOD END

		outputMap.put("FUSV013009SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013010SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → 一時支払金一意照会マップ＿０２.ＫＥＹ＿一時支払料金番号
// ANK-3636-00-00 MOD START
		parentMap.put("key_tmp_pay_prc_no", JFUStrConst.KK0721_TMP_PAY_PRC_NO_210000000022);
// ANK-3636-00-00 MOD END

		outputMap.put("FUSV013010SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013011SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → 一時支払金一意照会マップ＿０３.ＫＥＹ＿一時支払料金番号
// ANK-3636-00-00 MOD START
		parentMap.put("key_tmp_pay_prc_no", JFUStrConst.KK0721_TMP_PAY_PRC_NO_210000000023);
// ANK-3636-00-00 MOD END

		outputMap.put("FUSV013011SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013012SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// マンション物件番号 → マンション物件一意照会マップ.ＫＥＹ＿マンション物件番号
		parentMap.put("key_mansion_bukken_no", bean[0].sendMessageString("マンション物件番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV013012SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013001CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			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);

		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("ＳＴＢＩＤ取得要リスト");
		if (parentMap.containsKey("TKKIKISHOKAI1List"))
		{
			list = (ArrayList)parentMap.get("TKKIKISHOKAI1List");
		}
		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)
				{
					String kikiSeizoNoStb21 = subbean.sendMessageString("機器製造番号", X31CWebConst.DATABEAN_GET_VALUE);
					childMap.put("key_kiki_seizo_no", kikiSeizoNoStb21);

					X31SDataBeanAccessArray genKktkSvcKeiList = bean[1].getDataBeanArray(JFUWebCommon.KKTK_SVC_KEI_INFO);
					String taknkikiModelCd = null;
					for (int listCnt = 0; listCnt < genKktkSvcKeiList.getCount(); listCnt++)
					{
						X31SDataBeanAccess kktkSvcKeiInfo = genKktkSvcKeiList.getDataBean(listCnt);
						String kikiSeizoNo27 = kktkSvcKeiInfo.sendMessageString(CommonInfoCFConst.KIKI_SEIZO_NO_27, X31CWebConst.DATABEAN_GET_VALUE);

						if (kikiSeizoNoStb21.equals(kikiSeizoNo27))
						{
							taknkikiModelCd =
									kktkSvcKeiInfo.sendMessageString(CommonInfoCFConst.TAKNKIKI_MODEL_CD_27, X31CWebConst.DATABEAN_GET_VALUE);
							childMap.put("key_tk_mdl_cd", taknkikiModelCd);
							break;
						}
					}
				}

				list.add(childMap);
			}
		}
		parentMap.put("TKKIKISHOKAI1List", list);

		outputMap.put("FUSV013001CC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013014SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 宅内機器型式コード → 宅内機器型式一意照会マップ.ＫＥＹ＿宅内機器型式コード
		parentMap.put("key_taknkiki_model_cd", bean[0].sendMessageString("宅内機器型式コード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV013014SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013015SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → 料金コース一覧照会マップ.ＫＥＹ＿料金グループコード
		parentMap.put("key_pcr_grp_cd", JFUStrConst.CD00133_11);

		outputMap.put("FUSV013015SC", parentMap);

		return outputMap;
	}

	/**
	 * キャンペーン文言一覧照会CCの上りマッピングを行う処理です。
	 *
	 * <br>
	 * @param bean [0]:サービスフォームBean [1]:共有フォームBeanを格納した配列
	 * @param outputMap マッピング結果
	 * @param func_code 機能コード
	 * @return outputMap
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013002CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) throws Exception
	{
		String bsptWribSvcCd = JFUWebCommon.getBsptWribSvcCd();
		return setFUSV013002CC_sub(bean, outputMap, func_code, bsptWribSvcCd);
	}
	/**
	 * キャンペーン文言一覧照会CCの上りマッピングを行う処理です。
	 *
	 * <br>
	 * @param bean [0]:サービスフォームBean [1]:共有フォームBeanを格納した配列
	 * @param outputMap マッピング結果
	 * @param func_code 機能コード
	 * @param bsptWribSvcCd BSパススルー 割引サービスコード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	private HashMap setFUSV013002CC_sub(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String bsptWribSvcCd)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// サービス契約番号 → 割引サービス提供条件一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put(MAP_KEY_CMP_SVC_KEI_NO, bean[1].getDataBeanArray(JFUWebCommon.SVC_KEI_INFO).getDataBean(0).sendMessageString(
				CommonInfoCFConst.SVC_KEI_NO_23, X31CWebConst.DATABEAN_GET_VALUE));
		// 料金コースコード → 割引サービス提供条件一覧照会マップ.ＫＥＹ＿料金コースコード
		parentMap.put(MAP_KEY_CMP_PCRS_CD, bean[1].getDataBeanArray(JFUWebCommon.SVC_KEI_INFO).getDataBean(0).sendMessageString(
				CommonInfoCFConst.PCRS_CD_23, X31CWebConst.DATABEAN_GET_VALUE));
		// 料金プランコード → 割引サービス提供条件一覧照会マップ.ＫＥＹ＿料金プランコード
		parentMap.put(MAP_KEY_CMP_PPLAN_CD, bean[1].getDataBeanArray(JFUWebCommon.SVC_KEI_INFO).getDataBean(0).sendMessageString(
				CommonInfoCFConst.PPLAN_CD_23, X31CWebConst.DATABEAN_GET_VALUE));
		// 固定値 "09" :  BSパススルー → 割引サービス提供条件一覧照会マップ.ＫＥＹ＿割引サービス適用条件種別コード
		Map<String, String> wrsvAplyJknSbtCdMap = new HashMap<String, String>();
		wrsvAplyJknSbtCdMap.put(IN_PARAM_CMP_KEY_WRIB_SVC_CD, bsptWribSvcCd);
		List<Map<String, String>> wrsvAplyJknSbtCdList = new ArrayList<Map<String, String>>();
		wrsvAplyJknSbtCdList.add(wrsvAplyJknSbtCdMap);
		// 対象となるキャンペーンがＢＳパススルーだけを想定している為、ＢＳパススルーの割引サービス適用条件種別コードのみをリストに設定
		parentMap.put(MAP_KEY_CMP_WRSV_APLY_SBT_LIST, wrsvAplyJknSbtCdList);

		// 返却用のマップにセット
		outputMap.put(CC_TITLE_FUSV013002CC, parentMap);

		return outputMap;
	}

	/**
	 * STB宅内機器取得CCの上りマッピングを行う処理です。
	 *
	 * <br>
	 * @param bean [0]:サービスフォームBean [1]:共有フォームBeanを格納した配列
	 * @param outputMap マッピング結果
	 * @param func_code 機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013003CC(X31SDataBeanAccess[] bean, HashMap outputMap, String screenId)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 機能コード（FUW6802以外は処理しない)
		if (JFUScreenConst.SCREEN_ID_FUW06802.equals(screenId))
		{
			parentMap.put(IN_FUNC_CODE, JPCModelConstant.FUNC_CD_2);
		}

		// 料金コースコード
		parentMap.put(IN_PCRS_CD, bean[1].getDataBeanArray(JFUWebCommon.SVC_KEI_INFO).getDataBean(0).sendMessageString(CommonInfoCFConst.PCRS_CD_23,
				X31CWebConst.DATABEAN_GET_VALUE));

		// 現在使用中STB機器リストを設定
		ArrayList kikiList = new ArrayList();
		X31SDataBeanAccessArray kikiArray = bean[1].getDataBeanArray(JFUWebCommon.KKTK_SVC_KEI_INFO);
		for (int i = 0; i < kikiArray.getCount(); i++)
		{
			HashMap kikiMap = new HashMap();

			X31SDataBeanAccess kikiBean = kikiArray.getDataBean(i);

			// 画面で参照可能な機器提供サービス契約ステータスで無ければ、読み飛ばし
			String kktkSvcKeiStat = kikiBean.sendMessageString(CommonInfoCFConst.KKTK_SVC_KEI_STAT_27, X31CWebConst.DATABEAN_GET_VALUE);
			if (!(JFUStrConst.CD00056_010.equals(kktkSvcKeiStat) || JFUStrConst.CD00056_020.equals(kktkSvcKeiStat)
					|| JFUStrConst.CD00056_030.equals(kktkSvcKeiStat) || JFUStrConst.CD00056_100.equals(kktkSvcKeiStat)))
			{
				continue;
			}

			String kktkSvcCd = kikiBean.sendMessageString(CommonInfoCFConst.KKTK_SVC_CD_27, X31CWebConst.DATABEAN_GET_VALUE);
			String kikiMdlCd = kikiBean.sendMessageString(CommonInfoCFConst.TAKNKIKI_MODEL_CD_27, X31CWebConst.DATABEAN_GET_VALUE);
			// ＨＤＤ容量コード
			String hddCapaCd = kikiBean.sendMessageString(CommonInfoCFConst.HDD_CAPA_CD_27, X31CWebConst.DATABEAN_GET_VALUE);

			if (JFUStrConst.CD00132_C009.equals(kktkSvcCd))
			{
				kikiMap.put(IN_TAKNKIKI_MODEL_CD, kikiMdlCd);
				kikiMap.put(IN_HDD_CAPA_CD, hddCapaCd);
				kikiList.add(kikiMap);
			}
		}
		parentMap.put(IN_KIKI_LIST, kikiList);

		// 返却用のマップにセット
		outputMap.put(FUSV013003CC, parentMap);

		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込 [1]:共有フォームBeanを格納した配列
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013016SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != UP_MAPPING_BEANELEM_CNT)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 部品呼び出し → 一時支払金一意照会マップ＿０３.ＫＥＹ＿一時支払料金番号
// ANK-3636-00-00 MOD START
		parentMap.put("key_tmp_pay_prc_no", JFUStrConst.KK0721_TMP_PAY_PRC_NO_210050796010);
// ANK-3636-00-00 MOD END

		outputMap.put("FUSV013016SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビＳＴＢ追加変更申込
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV013004CC(X31SDataBeanAccess[] bean, HashMap outputMap) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != UP_MAPPING_BEANELEM_CNT){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// サービス契約番号 → 機器提供サービス契約一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV013004CC", parentMap);
						
		return outputMap;
	}

}