/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0381_FUSV0381OPDBMapper
*	ソースファイル名：FUSV0381_FUSV0381OPDBMapper.java
*	作成者			：FJ
*	日付			：2024年12月23日
*＜機能概要＞
*	BP（eo光テレビオプションチャンネル追加()）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v74.00.00	2024/12/23	FJ) 美濃原 【ANK-4592-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.FUW12402SF.FUW12402SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングです。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0381_FUSV0381OPDBMapper
{

	/** オプションチャンネル契約状態一覧照会マップ */
	private static final String FUSV038101_S_C = "FUSV038101SC";
	/** 申込内容承認登録マップ */
	private static final String FUSV038102_S_C = "FUSV038102SC";
	/** オプションサービス一意照会マップ */
	private static final String FUSV038103_S_C = "FUSV038103SC";
	/** オプションサービス契約＜TV＞登録マップ */
	private static final String FUSV038104_S_C = "FUSV038104SC";
	/** オプションサービス契約＜TV＞照査締結マップ */
	private static final String FUSV038105_S_C = "FUSV038105SC";
	/** オプションサービス契約＜TV＞開始マップ */
	private static final String FUSV038106_S_C = "FUSV038106SC";
	/** 進捗登録マップ */
	private static final String FUSV038107_S_C = "FUSV038107SC";
	/** 申込明細照査・後続業務依頼マップ */
	private static final String FUSV038108_S_C = "FUSV038108SC";
	/** オプションチャンネル重複チェックマップ */
	private static final String FUSV038111CC = "FUSV038111CC";
	/** CSコース用オプションチャンネル更新CCマップ */
	private static final String FUSV038112CC = "JFUCsCrsOpchUpdateCCMap";

	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	/** ＫＥＹ＿オプションチャンネル種別コード */
	private static final String KEY_OP_CHANNEL_SBT_CD = "key_op_channel_sbt_cd";

	/** オプションサービス契約ステータス */
	private static final String OP_SVC_KEI_STAT = "op_svc_kei_stat";
	/** オプションチャンネル契約状態一覧 */
	private static final String EKK0351_B506_C_B_S_MSG1_LIST = "EKK0351B522CBSMsg1List";

	/** ＳＹＳＩＤ */
	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 KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** ＫＥＹ＿CASカード番号 */
	private static final String KEY_CASCD_NO = "key_cascd_no";
	/** 請求契約番号 */
	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 EKK1091_D010_C_B_S_MSG1_LIST = "EKK1091D010CBSMsg1List";
	/** 異動理由コード */
	private static final String IDO_RSN_CD = "ido_rsn_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%";

	/** 実行区分：登録*/
	private static final String EXEC_CD_1 = "1";
	/** 変更区分：登録 */
	private static final String CHG_DIV_ADD = "1";

	/** 即日／翌月("01":即日) */
	private static final String SKJ_YKGT_SKJ = "01";

//	/** 即日／翌月("02":翌月) */
//	private static final String SKJ_YKGT_YKGT = "02";

	/**
	 * コンストラクタです。
	 */
	public FUSV0381_FUSV0381OPDBMapper()
	{
	}

	/**
	 * [オプションチャンネル契約状態一覧照会] 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param svcKeiUcwkNo　サービス契約内訳
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV038101SC(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(OP_SVC_CD, bean[0].sendMessageString(FUW12402SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号 → 機器提供サービス契約一覧照会（eo光テレビ情報取得）マップ .ＫＥＹ＿サービス契約番号
		parentMap.put(KEY_SVC_KEI_NO, bean[0].sendMessageString(FUW12402SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// Ｃ−ＣＡＳカードＮｏ． → オプションチャンネル契約状態一覧照会マップ.ＫＥＹ＿機器製造番号
		parentMap.put(KEY_CASCD_NO, bean[0].sendMessageString(FUW12402SFConst.KIKI_SEIZO_NO_CCAS, X31CWebConst.DATABEAN_GET_VALUE));
		// オプションチャンネル種別コード → オプションチャンネル契約状態一覧照会マップ.ＫＥＹ＿オプションチャンネル種別コード
		parentMap.put(KEY_OP_CHANNEL_SBT_CD, bean[0].sendMessageString(FUW12402SFConst.OP_CHANNEL_SBT_CD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV038101_S_C, parentMap);

		return outputMap;
	}

	/**
	 * [申込内容承認登録] 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV038102SC(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(FUW12402SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));

		beanTemp = bean[0];
		//	申込登録明細
		arraybean = beanTemp.getDataBeanArray(FUW12402SFConst.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(FUW12402SFConst.MSKM_FORM_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}
		parentMap.put(EKK0011_D020_C_B_S_MSG1_LIST, list);

		outputMap.put(FUSV038102_S_C, parentMap);

		return outputMap;
	}

	/**
	 * [オプションサービス一意照会] 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV038103SC(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(FUW12402SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV038103_S_C, parentMap);

		return outputMap;
	}

	/**
	 * [オプションサービス契約＜TV＞登録] 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV038104SC(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(FUW12402SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// 料金コースコード → オプションサービス契約＜TV＞登録マップ.料金コースコード
		parentMap.put(PCRS_CD, bean[0].sendMessageString(FUW12402SFConst.PCRS_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// 料金プランコード → オプションサービス契約＜TV＞登録マップ.料金プランコード
		parentMap.put(PPLAN_CD, bean[0].sendMessageString(FUW12402SFConst.PPLAN_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号 → オプションサービス契約＜TV＞登録マップ.サービス契約番号
		parentMap.put(SVC_KEI_NO, bean[0].sendMessageString(FUW12402SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// ＳＹＳＩＤ → オプションサービス契約＜TV＞登録マップ.SYSID
		parentMap.put(SYSID, bean[0].sendMessageString(FUW12402SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス利用開始年月日 → オプションサービス契約＜TV＞登録マップ.サービス利用開始希望年月日
		parentMap.put(SVC_USE_STA_KIBO_YMD, bean[0].sendMessageString(FUW12402SFConst.SVC_USE_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		// 請求契約番号 → オプションサービス契約＜TV＞登録マップ.請求契約番号
		parentMap.put(SEIKY_KEI_NO, bean[0].sendMessageString(FUW12402SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 最終更新年月日時分秒 → オプションサービス契約＜TV＞登録マップ.更新年月日時分秒（更新前）
		parentMap.put(UPD_DTM_BF, bean[0].sendMessageString(FUW12402SFConst.LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV038104_S_C, parentMap);

		return outputMap;
	}

	/**
	 * [オプションサービス契約＜TV＞照査締結] 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV038105SC(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(FUW12402SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス利用開始年月日 → オプションサービス契約＜TV＞登録マップ.サービス利用開始希望年月日
		parentMap.put("svc_use_sta_kibo_ymd", bean[0].sendMessageString(FUW12402SFConst.SVC_USE_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス利用開始年月日 → オプションサービス契約＜TV＞登録マップ.予約適用開始希望年月日
		parentMap.put("rsv_tsta_kibo_ymd", bean[0].sendMessageString(FUW12402SFConst.SVC_USE_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス利用開始年月日 → オプションサービス契約＜TV＞登録マップ.表示用サービス提供開始年月日
		parentMap.put("dsp_svctk_staymd", bean[0].sendMessageString(FUW12402SFConst.SVC_USE_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV038105_S_C, parentMap);

		return outputMap;
	}

	/**
	 * [オプションサービス契約＜TV＞開始] 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV038106SC(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(FUW12402SFConst.SKJ_YKGT, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV038106_S_C, parentMap);

		return outputMap;
	}

	/**
	 * [進捗登録] 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV038107SC(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(FUW12402SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		beanTemp = bean[0];
		//	異動理由明細
		arraybean = beanTemp.getDataBeanArray(FUW12402SFConst.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(FUW12402SFConst.IDO_RSN_CD_03, X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}
		// 進捗特記事項1
		try
		{
			String prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW12402, PRGADD_ID_0);

			if (prgTkjk1 != null && prgTkjk1.length() > 0)
			{
				// CAS番号
				prgTkjk1 = prgTkjk1.replace(TKN_CHR0, bean[0].sendMessageString(FUW12402SFConst.KIKI_SEIZO_NO_CCAS, X31CWebConst.DATABEAN_GET_VALUE));
				// チャンネル名
				prgTkjk1 = prgTkjk1.replace(TKN_CHR1, bean[0].sendMessageString(FUW12402SFConst.OP_SVC_NM, X31CWebConst.DATABEAN_GET_VALUE));
				// 利用開始日(YYYY/MM/DD 編集)
				prgTkjk1 =
						prgTkjk1.replace(TKN_CHR2, JFUWebCommon.formatDate(bean[0].sendMessageString(FUW12402SFConst.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(FUSV038107_S_C, parentMap);

		return outputMap;
	}

	/**
	 * [申込明細照査・後続業務依頼] 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV038108SC(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(FUW12402SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV038108_S_C, parentMap);

		return outputMap;
	}

	/**
	 * [オプションチャンネル重複チェック] 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV038111SC(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(FUW12402SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約料金コースコード → オプションチャンネル重複チェックマップ.料金コースコード
		parentMap.put(PCRS_CD, bean[0].sendMessageString(FUW12402SFConst.SVCKEI_PCRS_CD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV038111CC, parentMap);

		return outputMap;
	}

	/* ++++++++++ v3.00 修正終了 ++++++++++ */

	/**
	 * [オプションチャンネル契約状態一覧照会] 下りマッピング
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV038101SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV038101_S_C))
		{
			parentMap = (HashMap)outputMap.get(FUSV038101_S_C);
		}

		ArrayList childList = null;

		// オプションチャンネル契約状態一覧
		X31SDataBeanAccessArray listFUSV038101SC_op_chanell_kei_stat_list_EKK0351B522CBSMsg1List =
				bean[0].getDataBeanArray(FUW12402SFConst.OP_CHANELL_KEI_STAT_LIST);
		childList = null;
		if (listFUSV038101SC_op_chanell_kei_stat_list_EKK0351B522CBSMsg1List != 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 (listFUSV038101SC_op_chanell_kei_stat_list_EKK0351B522CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listFUSV038101SC_op_chanell_kei_stat_list_EKK0351B522CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listFUSV038101SC_op_chanell_kei_stat_list_EKK0351B522CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// オプションチャンネル契約状態一覧.オプションサービスコード 
				//	← オプションチャンネル契約状態一覧照会マップ.オプションチャンネル契約状態一覧照会明細.オプションサービスコード
				if (childMap != null)
				{
					subbean.sendMessageString(FUW12402SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(OP_SVC_CD));
				}
				else
				{
					subbean.sendMessageString(FUW12402SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
				// オプションチャンネル契約状態一覧.オプションサービス契約ステータス 
				//	← オプションチャンネル契約状態一覧照会マップ.オプションチャンネル契約状態一覧照会明細.オプションサービス契約ステータス
				if (childMap != null)
				{
					subbean.sendMessageString(FUW12402SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap
							.get(OP_SVC_KEI_STAT));
				}
				else
				{
					subbean.sendMessageString(FUW12402SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				}
			}
		}

		return bean;
	}

	/**
	 * [CSコース用オプションチャンネル更新CC] 上りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param svcKeiUcwkNo　サービス契約内訳
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV038112CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("exec_cd", EXEC_CD_1);
		parentMap.put("func_cd", func_code);
		parentMap.put("op_svc_kei_no_map_name", FUSV038104_S_C);

		// サービス契約番号 → 機器提供サービス契約一覧照会（eo光テレビ情報取得）マップ .ＫＥＹ＿サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString(FUW12402SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// Ｃ−ＣＡＳカードＮｏ． → オプションチャンネル契約状態一覧照会マップ.ＫＥＹ＿機器製造番号
		parentMap.put("cascd_no", bean[0].sendMessageString(FUW12402SFConst.KIKI_SEIZO_NO_CCAS, X31CWebConst.DATABEAN_GET_VALUE));
		// 即時／翌月
		String skj_ykgt = bean[0].sendMessageString(FUW12402SFConst.SKJ_YKGT, X31CWebConst.DATABEAN_GET_VALUE);

		ArrayList<HashMap<String, String>> op_upd_list = new ArrayList<HashMap<String, String>>(); // オプション更新リスト
		HashMap<String, String> childMap = new HashMap<String, String>();

		childMap.put("op_svc_cd", bean[0].sendMessageString(FUW12402SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE));
		childMap.put("chg_div", CHG_DIV_ADD);
		childMap.put("sptv_aply_stdardymd_div", getSptvAplyStdardymdDiv(skj_ykgt));
		childMap.put("use_endymd", JFUStrConst.EMPTY);
		op_upd_list.add(childMap);

		parentMap.put("op_upd_list", op_upd_list);

		outputMap.put(FUSV038112CC, parentMap);

		return outputMap;
	}

	/**
	 * スカパー適用基準年月日区分の取得。
	 * 
	 * @param skj_ykgt 即時／翌月
	 * @return スカパー適用基準年月日区分
	 */
	private String getSptvAplyStdardymdDiv(String skj_ykgt)
	{

		if (SKJ_YKGT_SKJ.equals(skj_ykgt))
		{
			// 即時
			return "1";
		}
		else
		{
			// 翌月
			return "2";
		}

	}

	/**
	 * [CSコース用オプションチャンネル更新CC] 下りマッピングを行います。
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル追加確認
	 * @param outputMap
	 * @return エラーコード
	 */
	public String getFUSV038112CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV038112CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV038112CC);
		}

		ArrayList childList = null;

		String err_cd = (String)parentMap.get("err_cd");

		return err_cd;
	}

}