/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0420_KKSV0420OPDBMapper
*	ソースファイル名：KKSV0420_KKSV0420OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年11月17日
*＜機能概要＞
*	BP（割引情報一意照会）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/17	FJ		新規作成
*   v4.01.00    2013/01/08  FJ）中山    【ST2-2013-0000027】マンション自動キャンペーン登録時の整合性チェックを修正
*   v5.00.00    2013/02/07  FJ）多田    【IT1-2013-0000337】割引集約対応
*   v5.01.00    2013/03/12  FJ) 多田    【IT1-2013-0000428】割引照査済対応
*   v7.00.00    2013/11/05  FJ) 松田    【ANK-1578-00-00】多機能ルーター(機器追加)
**********************************************************************/
package eo.web.webview.mapping;

import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.*;

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.web.webview.common.JKKWebCommon;

/**
 * DataBean-BPマッピングをする。
 * @author 富士通
 */
public class KKSV0420_KKSV0420OPDBMapper
{

	/**
	 * コンストラクタ
	 */
	public KKSV0420_KKSV0420OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean [0]：申込新規登録画面
	 * @param outputMap 
	 * @param func_code 機能コード
	 * @param opeDate 運用日付
	 * @param dsp_Cp_cd 表示用キャンペーンコード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV042001SC(HashMap outputMap, String func_code, String opeDate,
			String dsp_Cp_cd)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 割引／キャンペーンコード → 割引サービス一意照会SC.ＫＥＹ＿表示用キャンペーンコード
		parentMap.put("key_dsp_campaign_cd", dsp_Cp_cd);

		// 運用日付 → 割引サービス一意照会SC.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", opeDate);

		outputMap.put("KKSV042001SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean [0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param opeDate 運用日付
	 * @param dsp_Dc_cd 表示用データ抽出項目コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV042002SC(HashMap outputMap, String func_code, String opeDate,
			String dsp_Dc_cd)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 割引／キャンペーンコード → データ抽出項目一意照会SC.ＫＥＹ＿表示用データ抽出項目コード
		parentMap.put("key_dsp_dchskm_cd", dsp_Dc_cd);

		// 運用日付 → データ抽出項目一意照会SC.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", opeDate);

		outputMap.put("KKSV042002SC", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean [0]：申込新規登録画面
	 * @param outputMap データ格納マップ
	 * @param nextListNo List No.
	 * @return bean [0]：申込新規登録画面
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV042001SC(X31SDataBeanAccess[] bean, HashMap outputMap,
			String nextListNo)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("KKSV042001SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV042001SC");
		}

		ArrayList childList = null;
		HashMap childMap = null;
		
		X31SDataBeanAccessArray wribSvcCdList = 
			bean[0].getDataBeanArray("割引／キャンペーンコードリスト");
		X31SDataBeanAccessArray wribCtrlList = 
			bean[0].getDataBeanArray("割引制御用リスト");

		if (wribSvcCdList == null || wribCtrlList == null)
		{
			return bean;
		}
		if (parentMap != null && parentMap.containsKey("EKK0841B510CBSMsg1List"))
		{
			
			childList = (ArrayList)parentMap.get("EKK0841B510CBSMsg1List");

			// DataBeanへの格納
			for (int i = 0; i < childList.size(); i++)
			{
				childMap = (HashMap)childList.get(i);

				// 表示用は一番最初に取得した情報
				if (i == 0)
				{
					X31SDataBeanAccess subBean = wribSvcCdList.addDataBean();
					// 割引／キャンペーンコードリスト 削除チェック
					subBean.sendMessageBoolean("削除チェック", X31CWebConst.DATABEAN_SET_VALUE, false);
					// 割引／キャンペーンコードリスト コード
					subBean.sendMessageString("コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dsp_campaign_cd"));
					// 割引／キャンペーンコードリスト 割引サービスコード
					subBean.sendMessageString("割引サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_cd"));
					// 割引／キャンペーンコードリスト 名称
					subBean.sendMessageString("名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_nm"));
					// 割引／キャンペーンコードリスト 受付開始日
					subBean.sendMessageString("受付開始日", X31CWebConst.DATABEAN_SET_VALUE, JKKWebCommon.substr((String)childMap.get("uk_sta_ymdhm"), 0, 8));
					// 割引／キャンペーンコードリスト 受付終了日
					subBean.sendMessageString("受付終了日", X31CWebConst.DATABEAN_SET_VALUE, JKKWebCommon.substr((String)childMap.get("uk_end_ymdhm"), 0, 8));
					// 適用方法（手動設定）
					subBean.sendMessageString("適用方法", X31CWebConst.DATABEAN_SET_VALUE, ADD_OPTY_NM_MANUAL);
				}

				X31SDataBeanAccess subBean = wribCtrlList.addDataBean();

				// コード
				subBean.sendMessageString("コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dsp_campaign_cd"));
				// 名称
				subBean.sendMessageString("名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_nm"));
				// 主マスタＫＥＹ(割引サービスコード)
				subBean.sendMessageString("主マスタＫＥＹ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_cd"));
				// 受付開始日
				subBean.sendMessageString("受付開始日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("uk_sta_ymdhm"));
				// 受付終了日
				subBean.sendMessageString("受付終了日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("uk_end_ymdhm"));
				// 条件適用開始年月日
				subBean.sendMessageString("条件適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("joken_tstaymd"));
				// 条件適用終了年月日
				subBean.sendMessageString("条件適用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("joken_tendymd"));
				// サービス適用開始年月日
				subBean.sendMessageString("サービス適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_tstaymd"));
				// サービス適用終了年月日
				subBean.sendMessageString("サービス適用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_tendymd"));
				// 対象サービス適用開始年月日
				subBean.sendMessageString("対象サービス適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_trgt_svc_tstaymd"));
				// 対象サービス適用終了年月日
				subBean.sendMessageString("対象サービス適用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_trgt_svc_tendymd"));
				// 区分
				subBean.sendMessageString("区分", X31CWebConst.DATABEAN_SET_VALUE, KBN_SHK_ADD);
				// マスタ対象サービスコード（割引サービス対象サービスコード）
				subBean.sendMessageString("マスタ対象サービスコード",
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_trgt_svc_cd"));
				// 適用条件グループ
				subBean.sendMessageString("適用条件グループ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("aply_joken_grp"));
				// サービスコード
				subBean.sendMessageString("サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_cd"));
				// 料金グループコード
				subBean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_grp_cd"));
				// 料金コースコード
				subBean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcrs_cd"));
				// 料金プランコード
				subBean.sendMessageString("料金プランコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd"));
				// オプションサービスコード
				subBean.sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_cd"));
				// サブオプションサービスコード
				subBean.sendMessageString("サブオプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sbop_svc_cd"));
				// 機器提供サービスコード
				subBean.sendMessageString("機器提供サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kktk_svc_cd"));
				// 機器提供種別コード
				subBean.sendMessageString("機器提供種別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kktk_sbt_cd"));
				// 機器オプションサービスコード
				subBean.sendMessageString("機器オプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kkop_svc_cd"));
				// 請求オプションサービスコード
				subBean.sendMessageString("請求オプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiopsvc_cd"));
				// タイプコード(割引タイプコード)
				subBean.sendMessageString("タイプコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_type_cd"));
				// 登録条件コード(割引登録条件)
				subBean.sendMessageString("登録条件コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_add_joken_cd"));
				// サービス種別コード(割引サービス種別コード)
				subBean.sendMessageString("サービス種別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_sbt_cd"));
				// 登録対象フラグ
				boolean isWribAddFlg = JKKWebCommon.isWribAddTrg("割引制御用リスト", childMap);
				subBean.sendMessageBoolean("登録対象フラグ", X31CWebConst.DATABEAN_SET_VALUE, isWribAddFlg);
			}
		}
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean [0]：申込新規登録画面
	 * @param outputMap データ格納マップ
	 * @param nextListNo List No.
	 * @return bean [0]：申込新規登録画面
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV042002SC(X31SDataBeanAccess[] bean, HashMap outputMap,
			String nextListNo)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV042002SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV042002SC");
		}

		ArrayList childList = null;
		HashMap childMap = null;
		
		X31SDataBeanAccessArray hanyoCdList = 
			bean[0].getDataBeanArray("汎用コードリスト");
		X31SDataBeanAccessArray hanyoCdCtrlList = 
			bean[0].getDataBeanArray("汎用コード制御用リスト");

		if (hanyoCdList == null || hanyoCdCtrlList == null)
		{
			return bean;
		}

		if (parentMap != null && parentMap.containsKey("EKK1351B501CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK1351B501CBSMsg1List");

			// DataBeanへの格納
			for (int i = 0; i < childList.size(); i++)
			{
				childMap = (HashMap)childList.get(i);

				// 表示用は一番最初に取得した情報
				if (i == 0)
				{
					X31SDataBeanAccess subBean = hanyoCdList.addDataBean();
					// 汎用コードリスト 削除チェック
					subBean.sendMessageBoolean("削除チェック", X31CWebConst.DATABEAN_SET_VALUE, false);
					// 汎用コードリスト コード
					subBean.sendMessageString("コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dsp_dchskm_cd"));
					// 汎用コードリスト データ抽出項目コード
					subBean.sendMessageString("データ抽出項目コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchskm_cd"));
					// 汎用コードリスト 名称
					subBean.sendMessageString("名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchskm_nm"));
					// 汎用コードリスト 受付開始日
					subBean.sendMessageString("受付開始日", X31CWebConst.DATABEAN_SET_VALUE, JKKWebCommon.substr((String)childMap.get("set_psb_sta_ymdhm"), 0, 8));
					// 汎用コードリスト 受付終了日
					subBean.sendMessageString("受付終了日", X31CWebConst.DATABEAN_SET_VALUE, JKKWebCommon.substr((String)childMap.get("set_psb_end_ymdhm"), 0, 8));
					// 汎用コードリスト 適用方法
					subBean.sendMessageString("適用方法", X31CWebConst.DATABEAN_SET_VALUE, ADD_OPTY_NM_MANUAL);
				}

				X31SDataBeanAccess subBean = hanyoCdCtrlList.addDataBean();

				// コード
				subBean.sendMessageString("コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dsp_dchskm_cd"));
				// 名称
				subBean.sendMessageString("名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchskm_nm"));
				// 主マスタＫＥＹ(データ抽出項目コード)
				subBean.sendMessageString("主マスタＫＥＹ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchskm_cd"));
				// 受付開始日
				subBean.sendMessageString("受付開始日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("set_psb_sta_ymdhm"));
				// 受付終了日
				subBean.sendMessageString("受付終了日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("set_psb_end_ymdhm"));
				// 条件適用開始年月日
				subBean.sendMessageString("条件適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("joken_tstaymd"));
				// 条件適用終了年月日
				subBean.sendMessageString("条件適用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("joken_tendymd"));
				// サービス適用開始年月日
				subBean.sendMessageString("サービス適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchskm_tstaymd"));
				// サービス適用終了年月日
				subBean.sendMessageString("サービス適用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchskm_tendymd"));
				// 対象サービス適用開始年月日
				subBean.sendMessageString("対象サービス適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchskm_tg_svc_tstaymd"));
				// 対象サービス適用終了年月日
				subBean.sendMessageString("対象サービス適用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchskm_tg_svc_tendymd"));
				// 区分
				subBean.sendMessageString("区分", X31CWebConst.DATABEAN_SET_VALUE, KBN_SHK_ADD);
				// 適用条件グループ
				subBean.sendMessageString("適用条件グループ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("aply_joken_grp"));
				// サービスコード
				subBean.sendMessageString("サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_cd"));
				// 料金グループコード
				subBean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_grp_cd"));
				// 料金コースコード
				subBean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcrs_cd"));
				// 料金プランコード
				subBean.sendMessageString("料金プランコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd"));
				// オプションサービスコード
				subBean.sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_cd"));
				// サブオプションサービスコード
				subBean.sendMessageString("サブオプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sbop_svc_cd"));
				// 機器提供サービスコード
				subBean.sendMessageString("機器提供サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kktk_svc_cd"));
				// 機器提供種別コード
				subBean.sendMessageString("機器提供種別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kktk_sbt_cd"));
				// 請求オプションサービスコード
				subBean.sendMessageString("請求オプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiopsvc_cd"));
				// タイプコード(データ抽出タイプコード)
				subBean.sendMessageString("タイプコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchs_type_cd"));
				// 登録条件コード(データ抽出登録条件コード)
				subBean.sendMessageString("登録条件コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchs_add_joken_cd"));
				// サービス種別コード(データ抽出種別コード)
				subBean.sendMessageString("サービス種別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dchs_sbt_cd"));
				// 登録対象フラグ
				subBean.sendMessageBoolean("登録対象フラグ", X31CWebConst.DATABEAN_SET_VALUE,
						JKKWebCommon.isWribAddTrg("汎用コード制御用リスト", childMap));
			}
		}
		return bean;
	}
}