/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0237_FUSV0237OPDBMapper
*	ソースファイル名：FUSV0237_FUSV0237OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年06月07日
*＜機能概要＞
*	BP（eo光ネット長割申込(初期表示)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v4.00       2012/06/07  FJ)南岡     【ANK-0392-00-00】長期割引契約制度対応
*   v4.00       2012/12/01  FJ)岡井     【IT1-2012-0002214】長割解約精算金対応
*   v4.00       2013/01/07  FJ)岡井     【ST4-2012-0000250】性能障害対応
*  v27.00       2016/11/09  FJ)森脇     【OM-2016-0001633】自動継続：無で長割適用終了日を迎えた契約に対しての申込を抑止  
*
**********************************************************************/
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 eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW10501SF.FUW10501SFConst;

/**
 * DataBean-BPマッピングをする。
 *
 * @author 富士通
 */
public class FUSV0237_FUSV0237OPDBMapper
{

	// ■DataBean操作種別
	/** DataBean操作種別：項目値設定 */
	private static final String SET = X31CWebConst.DATABEAN_SET_VALUE;
	/** DataBean操作種別：項目値取得 */
	private static final String GET = X31CWebConst.DATABEAN_GET_VALUE;

	// ■SC名
	/** 業務パラメータ管理一意照会SC */
	private static final String FUSV023701SC = "FUSV023701SC";
	/** 業務パラメータ管理一意照会SC */
	private static final String FUSV023702SC = "FUSV023702SC";
	/** 割引サービス契約一意照会SC */
	private static final String FUSV023703SC = "FUSV023703SC";
	/** 割引サービス契約一意照会SC */
	private static final String FUSV023704SC = "FUSV023704SC";

	// ■CC名
	/** eo光ネットホームタイププラン変更基本料金一覧照会CC */
	private static final String FUSV023701CC = "FUSV023701CC";
	/** 初期費用一覧照会CC */
	private static final String FUSV023702CC = "FUSV023702CC";

	// ■SC明細名
	/** 業務パラメータ管理一意照会明細 */
	private static final String EZM0321A010CBSMSG1LIST = "EZM0321A010CBSMsg1List";
	/** 割引サービス契約一意照会明細 */
	private static final String EKK0451A010CBSMSG1LIST = "EKK0451A010CBSMsg1List";

	// ■CC明細名
	/** 一時金一意照会明細 */
	private static final String EKK0721A010CBSMSG1LIST = "EKK0721A010CBSMsg1List";

	// ■項目名
	/** ＫＥＹ＿料金グループコード */
	private static final String KEY_PRC_GRP_CD = "key_prc_grp_cd";
	/** ＫＥＹ＿料金コースコード */
	private static final String KEY_PCRS_CD = "key_pcrs_cd";
	/** ＫＥＹ＿料金プランコード */
	private static final String KEY_PRC_PLAN_CD = "key_prc_plan_cd";
	/** ＫＥＹ＿料金プランコード */
	private static final String KEY_PPLAN_CD = "key_pplan_cd";
	/** eo光ネット料金プラン全検索フラグ */
	private static final String ALL_SEARCH_FLG = "all_search_flg";
	/** 解約精算金取得フラグ */
	private static final String DLS_PRC_GET_FLG = "dls_prc_get_flg";
	/** 機能サービスコード */
	private static final String FUNC_SVC_ID = "func_svc_id";
	/** 業務パラメータ設定値 */
	private static final String WORK_PARAM_SETTE_VALUE = "work_param_sette_value";
	/** 機能コード */
	private static final String FUNC_CODE = "func_code";
	/** ＫＥＹ＿割引サービス契約番号 */
	private static final String KEY_WRIB_SVC_KEI_NO = "key_wrib_svc_kei_no";
	/** 申込区分 */
	private static final String MSKM_DIV = "mskm_div";
	/** ＫＥＹ＿予約適用年月日 */
	private static final String KEY_RSV_APLY_YMD = "key_rsv_aply_ymd";

	// ■汎用コード
	/** 汎用コード：0 */
	private static final String CODE_0 = "0";
	/** 汎用コード：1 */
	private static final String CODE_1 = "1";
	/** FUSV0237 */
	private static final String FUSV0237 = "FUSV0237";

	/**
	 * コンストラクタ
	 */
	public FUSV0237_FUSV0237OPDBMapper()
	{
	}

	/**
	 * 業務パラメータ管理一意照会SCの上りマッピング処理です。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap マップ
	 * @param func_code 機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV023701SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 業務パラメータ管理一意照会明細
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EZM0321A010CBSMSG1LIST, arrayList);

		outputMap.put(FUSV023701SC, parentMap);

		return outputMap;
	}

	/**
	 * 業務パラメータ管理一意照会SCの上りマッピング処理です。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap マップ
	 * @param func_code 機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV023702SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 業務パラメータ管理一意照会明細
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EZM0321A010CBSMSG1LIST, arrayList);

		outputMap.put(FUSV023702SC, parentMap);

		return outputMap;
	}

	/**
	 * 割引サービス契約一意照会SCの上りマッピング処理です。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV023703SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// ＫＥＹ＿割引サービス契約番号
		parentMap.put(KEY_WRIB_SVC_KEI_NO, bean[4].sendMessageString(CommonInfoCFConst.WRIB_SVC_KEI_NO_30, GET));
		//
		parentMap.put(MSKM_DIV, bean[0].sendMessageString(FUW10501SFConst.MSKM_DIV, GET));

		// 割引サービス契約一意照会明細
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EKK0451A010CBSMSG1LIST, arrayList);

		outputMap.put(FUSV023703SC, parentMap);

		return outputMap;
	}

	/**
	 * 割引サービス契約一意照会SC（運用日指定）の上りマッピング処理です。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV023704SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// ＫＥＹ＿割引サービス契約番号
		parentMap.put(KEY_WRIB_SVC_KEI_NO, bean[4].sendMessageString(CommonInfoCFConst.WRIB_SVC_KEI_NO_30, GET));
		// ＫＥＹ＿予約適用年月日
		parentMap.put(KEY_RSV_APLY_YMD, opeDate);

		// 割引サービス契約一意照会明細
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EKK0451A010CBSMSG1LIST, arrayList);

		outputMap.put(FUSV023704SC, parentMap);

		return outputMap;
	}

	/**
	 * eo光ネットホームタイププラン変更基本料金一覧照会CCの上りマッピング処理です。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap マップ
	 * @param func_code 機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV023701CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// ＫＥＹ＿料金グループコード
		parentMap.put(KEY_PRC_GRP_CD, bean[2].sendMessageString(CommonInfoCFConst.PRC_GRP_CD_23, GET));
		// ＫＥＹ＿料金コースコード
		parentMap.put(KEY_PCRS_CD, bean[2].sendMessageString(CommonInfoCFConst.PCRS_CD_23, GET));
		// ＫＥＹ＿料金プランコード
		parentMap.put(KEY_PPLAN_CD, bean[2].sendMessageString(CommonInfoCFConst.PPLAN_CD_23, GET));
		// ＫＥＹ＿料金プランコード
		parentMap.put(KEY_PRC_PLAN_CD, bean[2].sendMessageString(CommonInfoCFConst.PPLAN_CD_23, GET));
		// eo光ネット料金プラン全検索フラグ
		parentMap.put(ALL_SEARCH_FLG, CODE_0);
		// 解約精算金取得フラグ
		parentMap.put(DLS_PRC_GET_FLG, CODE_1);
		// 機能サービスコード
		parentMap.put(FUNC_SVC_ID, FUSV0237);

		outputMap.put(FUSV023701CC, parentMap);

		return outputMap;
	}

	/**
	 * 初期費用一覧照会CCの上りマッピングをします。
	 *
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap マップ
	 * @param func_code 機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV023702CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 一時金一意照会明細
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EKK0721A010CBSMSG1LIST, arrayList);

		outputMap.put(FUSV023702CC, parentMap);

		return outputMap;
	}

	/**
	 * 業務パラメータ管理一意照会SCの下りマッピング処理です。
	 *
	 * <br>
	 * @param bean サービスフォームBean
	 * @param outputMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public void getFUSV023701SC(X31SDataBeanAccess bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		ArrayList childList = null;
		if (outputMap.containsKey(FUSV023701SC))
		{
			parentMap = (HashMap)outputMap.get(FUSV023701SC);
		}
		if(parentMap != null && parentMap.containsKey(EZM0321A010CBSMSG1LIST))
		{
			childList = (ArrayList)parentMap.get(EZM0321A010CBSMSG1LIST);
		}

		if(childList != null && childList.size() > 0)
		{
			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				// 業務パラメータ設定値
				bean.sendMessageString(FUW10501SFConst.AUTO_KEI_MONTH_1, SET, (String)childMap.get(WORK_PARAM_SETTE_VALUE));
			}
		}
	}

	/**
	 * 業務パラメータ管理一意照会SCの下りマッピング処理です。
	 *
	 * <br>
	 * @param bean サービスフォームBean
	 * @param outputMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public void getFUSV023702SC(X31SDataBeanAccess bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		ArrayList childList = null;
		if (outputMap.containsKey(FUSV023702SC))
		{
			parentMap = (HashMap)outputMap.get(FUSV023702SC);
		}
		if(parentMap != null && parentMap.containsKey(EZM0321A010CBSMSG1LIST))
		{
			childList = (ArrayList)parentMap.get(EZM0321A010CBSMSG1LIST);
		}

		if(childList != null && childList.size() > 0)
		{
			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				// 業務パラメータ設定値
				bean.sendMessageString(FUW10501SFConst.AUTO_KEI_MONTH_2, SET, (String)childMap.get(WORK_PARAM_SETTE_VALUE));
			}
		}
	}
}