/*********************************************************************
*	All Right reserved,Copyright (c) Fujitsu, 2012
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム  
*	モジュール名	：KKSV0231_KKSV0231OPDBMapper
*	ソースファイル名：KKSV0231_KKSV0231OPDBMapper.java
*	作成者			：富士通  
*	日付			：2012年07月17日  
*＜機能概要＞
*	BP（割引サービス契約照会初期表示）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/07/17	富士通		新規作成  
*	v5.00.00	2013/03/20	富士通		【OT-2013-0000372】割引サービス契約照会画面の長期継続利用割引情報表示対応
*	v7.00.00    2014/02/01  FJ          【ANK-1756-00-00  】紹介対応
*	v10.00.00   2014/07/01  FJ)福岡     【ANK-2135-00-00  】
**********************************************************************/
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.web.webview.KKW01023SF.KKW01023SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0231_KKSV0231OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0231_KKSV0231OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：割引サービス契約詳細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV023101CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		
		if(null==bean || bean.length != 1){
			return null;
		}
		X31SDataBeanAccess sfBean=bean[0];
		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(sfBean, KKW01023SFConst.SFBEAN);
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		String[] beanKeiNoList=(String[])beanMap.take(KKW01023SFConst.KEI_NO_LIST);
		ArrayList<HashMap<String,Object>> keiNoList=new ArrayList<HashMap<String,Object>>(10);
		for(String keiNo:beanKeiNoList)
		{
			HashMap<String,Object> item=new HashMap<String, Object>(10);
			item.put("kei_no", keiNo);
			keiNoList.add(item);
		}
		parentMap.put("kei_no_list", keiNoList);
		
		
		String[] beanKeiKindList=(String[])beanMap.take(KKW01023SFConst.KEI_KIND_LIST);
		ArrayList<HashMap<String,Object>> keiKindList=new ArrayList<HashMap<String,Object>>(10);
		for(String keiKind:beanKeiKindList)
		{
			HashMap<String,Object> item=new HashMap<String, Object>(10);
			item.put("kei_kind", keiKind);
			keiKindList.add(item);
		}
		parentMap.put("kei_kind_list", keiKindList);
		

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 選択番号 → 照会対象情報.選択番号
		parentMap.put("selected", beanMap.take(KKW01023SFConst.SELECTED));

		outputMap.put("KKSV023101CC", parentMap);
		
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：割引サービス契約詳細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV023103CC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV023103CC")){
			parentMap = (HashMap)outputMap.get("KKSV023103CC");
		}

		// 契約種別 ← 契約照会情報.契約種別
		bean[0].sendMessageString("契約種別", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("kei_kind"));
		// 番号 ← 契約照会情報.番号
		bean[0].sendMessageString("番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("no"));
		// ステータス ← 契約照会情報.ステータス
		bean[0].sendMessageString("ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("stat"));
		// ステータス名称 ← 契約照会情報.ステータス名称
		bean[0].sendMessageString("ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("stat_nm"));
		// 完了種別コード名称 ← 契約照会情報.完了種別コード名称
		bean[0].sendMessageString("完了種別コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("fin_sbt_cd_nm"));
		// ＳＹＳＩＤ ← 照会一意情報.ＳＹＳＩＤ
		bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sysid"));
		// サービスコード ← 契約照会情報.サービスコード
		bean[0].sendMessageString("サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("svc_cd"));
		// 割引サービスコード名称 ← 照会一意情報.割引サービスコード名称
		bean[0].sendMessageString("割引サービスコード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("wrib_svc_cd_nm"));
		// キャンペーンコード ← 契約照会情報.キャンペーンコード
		bean[0].sendMessageString("キャンペーンコード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("campaign_cd"));
		// キャンペーンコード名称 ← 契約照会情報.キャンペーンコード名称
		bean[0].sendMessageString("キャンペーンコード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("campaign_cd_nm"));
		// タイプコード ← 契約照会情報.タイプコード
		bean[0].sendMessageString("タイプコード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("type_cd"));
		// タイプコード名称 ← 契約照会情報.タイプコード名称
		bean[0].sendMessageString("タイプコード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("type_cd_nm"));
		// 料金コースコード ← 照会一意情報.料金コースコード
		bean[0].sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("pcrs_cd"));
		// 料金コースコード名称 ← 照会一意情報.料金コースコード名称
		bean[0].sendMessageString("料金コースコード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("pcrs_cd_nm"));
		// 料金プランコード ← 照会一意情報.料金プランコード
		bean[0].sendMessageString("料金プランコード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("pplan_cd"));
		// 料金プランコード名称 ← 照会一意情報.料金プランコード名称
		bean[0].sendMessageString("料金プランコード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("pplan_cd_nm"));
		// 申込明細番号 ← 照会一意情報.申込明細番号
		bean[0].sendMessageString("申込明細番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("mskm_dtl_no"));
		// 即時適用フラグ ← 契約照会情報.即時適用フラグ
		bean[0].sendMessageString("即時適用フラグ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("aply_jun"));
		// 即時適用フラグ名称 ← 契約照会情報.即時適用フラグ名称
		bean[0].sendMessageString("即時適用フラグ名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("aply_jun_nm"));
		// サービス終了年月日 ← 契約照会情報.終了年月日
		bean[0].sendMessageString("サービス終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("endymd"));
		// 違約金発生コード ← 照会一意情報.違約金発生コード
		bean[0].sendMessageString("違約金発生コード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("pnlty_hassei_cd"));
		// 違約金発生コード名称 ← 照会一意情報.違約金発生コード名称
		bean[0].sendMessageString("違約金発生コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("pnlty_hassei_cd_nm"));
		// 異動区分 ← 照会一意情報.異動区分
		bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("ido_div"));
		// 異動区分名称 ← 照会一意情報.異動区分名称
		bean[0].sendMessageString("異動区分名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("ido_div_nm"));
		// 紹介コード ← 照会一意情報.紹介コード
		bean[0].sendMessageString("紹介コード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("intr_cd"));
		// 紹介コード名称 ← 照会一意情報.紹介コード名称
		bean[0].sendMessageString("紹介コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("intr_cd_nm"));
		// 割引登録契機コード ← 照会一意情報.割引登録契機コード
		bean[0].sendMessageString("割引登録契機コード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("wrib_add_opty_cd"));
		// 割引登録契機コード名称 ← 照会一意情報.割引登録契機コード名称
		bean[0].sendMessageString("割引登録契機コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("wrib_add_opty_cd_nm"));
		// 申込起算年月日 ← 契約照会情報.申込起算日
		bean[0].sendMessageString("申込起算年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("mskm_kisan_ymd"));
		// データ抽出項目設定開始日 ← データ抽出項目設定開始日.データ抽出項目設定
		bean[0].sendMessageString("開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("staymd"));
		// データ抽出項目設定終了日 ← データ抽出項目設定終了日.データ抽出項目設定
		bean[0].sendMessageString("終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("endymd"));
		// 抽出回数 ← 抽出回数.データ抽出項目設定
		bean[0].sendMessageString("抽出回数", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("aply_cnt"));
		// 長割自動継続 ← 契約照会情報.長割自動継続
		bean[0].sendMessageString("長割自動継続", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("len_wari_at_keizk"));
		// 長割自動継続名称 ← 契約照会情報.長割自動継続名称
		bean[0].sendMessageString("長割自動継続名称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("len_wari_at_keizk_nm"));
		
// v7.00.00 add start
		
		// 休止開始日
		bean[0].sendMessageString("休止開始日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("pause_stat"));
		// 休止解除日
		bean[0].sendMessageString("休止解除日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("pause_end"));
		// 被紹介者
		bean[0].sendMessageString("被紹介者", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("hi_svc_kei_no"));
		
// v7.00.00 add end
		
//▽2013.03.17 OT-2013-0000372 Start
		// 利用開始日 ← 契約照会情報.利用開始日
		bean[0].sendMessageString("利用開始日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("use_staymd"));
		// サービス開始日 ← 契約照会情報.サービス開始日
		bean[0].sendMessageString("サービス開始日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("svc_sta_ymd"));
		// 長期適用起算日 ← 契約照会情報.長期適用起算日
		bean[0].sendMessageString("長期適用起算日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("wrib_amnt_snst_stdardymd"));
		// 継続期間 ← 契約照会情報.継続期間
		bean[0].sendMessageString("継続期間", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("keizoku_kkn"));
		// 即割有無 ← 契約照会情報.即割有無
		bean[0].sendMessageString("即割有無", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("skwr_umu"));
		// 長割経過期間 ← 契約照会情報.長割経過期間
		bean[0].sendMessageString("長割経過期間", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("tyowari_keika_kkn"));
		// 基本料 ← 契約照会情報.基本料金
		bean[0].sendMessageString("基本料", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("basic_prc"));
		// 適用状態 ← 契約照会情報.適用状態
		bean[0].sendMessageString("適用状態", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("chouki_keizoku_wrib_stat"));

		X31SDataBeanAccessArray listKKSV023103CC_use_prc_list_use_prc_list = bean[0].getDataBeanArray("利用料金一覧");
		ArrayList childList = null;
		if(listKKSV023103CC_use_prc_list_use_prc_list != null && parentMap != null && parentMap.containsKey("use_prc_list")){
			childList = (ArrayList)parentMap.get("use_prc_list");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listKKSV023103CC_use_prc_list_use_prc_list.getCount() -1 >= i){
					subbean = listKKSV023103CC_use_prc_list_use_prc_list.getDataBean(i);
				}else{
					subbean = listKKSV023103CC_use_prc_list_use_prc_list.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// 利用料金一覧.利用料金 ← 契約照会情報.利用料金リスト.利用料金
				if (childMap != null) {
					subbean.sendMessageString("利用料金", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("use_prc"));
				} else {
					subbean.sendMessageString("利用料金", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}
		bean[0].sendMessageString("継続期間", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("keizoku_kkn"));
		bean[0].sendMessageString("長割経過期間", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("tyowari_keika_kkn"));
//△2013.03.17 OT-2013-0000372 End
		
// v10.00.00 ADD START
		bean[0].sendMessageString("利用開始希望日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("riyo_sta_ymd"));
		bean[0].sendMessageString("違約金有無", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("pnlty_nm"));
// v10.00.00 ADD END
		
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：割引サービス契約詳細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV023104CC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV023104CC")){
			parentMap = (HashMap)outputMap.get("KKSV023104CC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV023104CC_campaign_tg_aply_joken_view_child_list = bean[0].getDataBeanArray("キャンペーン対象適用条件");
		childList = null;
		if(parentMap.containsKey("view_child_list")){
			childList = (ArrayList)parentMap.get("view_child_list");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listKKSV023104CC_campaign_tg_aply_joken_view_child_list.getCount() -1 >= i){
					subbean = listKKSV023104CC_campaign_tg_aply_joken_view_child_list.getDataBean(i);
				}else{
					subbean = listKKSV023104CC_campaign_tg_aply_joken_view_child_list.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
			
				// キャンペーン対象適用条件.番号／件数 ← 照会対象契約情報.照会対象契約明細.番号／件数
				subbean.sendMessageString("番号／件数", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("no_cnt"));
				// キャンペーン対象適用条件.対象契約識別コード名称 ← 照会対象契約情報.照会対象契約明細.対象契約識別コード名称
				subbean.sendMessageString("対象契約識別コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tg_kei_skbt_cd_nm"));
				// キャンペーン対象適用条件.対象契約番号 ← 照会対象契約情報.照会対象契約明細.対象契約番号
				subbean.sendMessageString("対象契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tgt_kei_no"));
				// キャンペーン対象適用条件.対象サービス名称 ← 照会対象契約情報.照会対象契約明細.対象サービス名称
				subbean.sendMessageString("対象サービス名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tgt_svc_nm"));
			}
		}


		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：割引サービス契約詳細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV023105CC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV023105CC")){
			parentMap = (HashMap)outputMap.get("KKSV023105CC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV023105CC_wrib_svc_kei_ucwk_view_ucwk_list = bean[0].getDataBeanArray("割引サービス契約内訳");
		childList = null;
		if(parentMap.containsKey("view_ucwk_list")){
			childList = (ArrayList)parentMap.get("view_ucwk_list");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listKKSV023105CC_wrib_svc_kei_ucwk_view_ucwk_list.getCount() -1 >= i){
					subbean = listKKSV023105CC_wrib_svc_kei_ucwk_view_ucwk_list.getDataBean(i);
				}else{
					subbean = listKKSV023105CC_wrib_svc_kei_ucwk_view_ucwk_list.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
			
				// 割引サービス契約内訳.番号／件数 ← 内訳一覧情報.内訳一覧リスト.番号／件数
				subbean.sendMessageString("番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("no"));
				// 割引サービス契約内訳.内訳内容 ← 内訳一覧情報.内訳一覧リスト.割引サービス詳細名
				subbean.sendMessageString("内訳内容", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_dtl_nm"));
				// 割引サービス契約内訳.種別コード ← 内訳一覧情報.内訳一覧リスト.種別コード
				subbean.sendMessageString("種別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sbt_cd"));
				// 割引サービス契約内訳.種別コード名称 ← 内訳一覧情報.内訳一覧リスト.種別コード名称
				subbean.sendMessageString("種別コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sbt_cd_nm"));
				// 割引サービス契約内訳.割引適用回数 ← 内訳一覧情報.内訳一覧リスト.適用回数
				subbean.sendMessageString("割引適用回数", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("aply_cnt"));
				// 割引サービス契約内訳.サービス課金開始年月日 ← 内訳一覧情報.内訳一覧リスト.サービス課金開始年月日
				subbean.sendMessageString("サービス課金開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_chrg_staymd"));
				// 割引サービス契約内訳.サービス課金終了年月日 ← 内訳一覧情報.内訳一覧リスト.サービス課金終了年月日
				subbean.sendMessageString("サービス課金終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_chrg_endymd"));
				// 割引サービス契約内訳.初回割引適用年月日 ← 内訳一覧情報.内訳一覧リスト.初回適用年月日
				// 年月日⇒年月に編集
				//subbean.sendMessageString("初回割引適用年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("first_wrib_aply_ymd"));
				String first_wrib_aply_ymd_temp = (String)childMap.get("first_wrib_aply_ymd");
				if(null == first_wrib_aply_ymd_temp)
					{
						subbean.sendMessageString("初回割引適用年月日", X31CWebConst.DATABEAN_SET_VALUE,"");
					}else{
						subbean.sendMessageString("初回割引適用年月日", X31CWebConst.DATABEAN_SET_VALUE,first_wrib_aply_ymd_temp.substring(0, 4) +"/"+first_wrib_aply_ymd_temp.substring(4,6) );
					}
			}
		}


		return bean;
	}


}