/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：TUSV0061_TUSV0061OPDBMapper
*	ソースファイル名：TUSV0061_TUSV0061OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年06月09日
*＜機能概要＞
*	BP（番ポ工事予約状況一覧照会）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2011/06/09	FJ)楠神		新規作成
*
**********************************************************************/
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.common.constant.JTUStrConst;
import eo.web.webview.common.JTUWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class TUSV0061_TUSV0061OPDBMapper {

	/**
	 * 月日、曜日画面表示用文字
	 */
	private static final String SURA = "/";

	/**
	 * コンストラクタ
	 */
	public TUSV0061_TUSV0061OPDBMapper(){
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opeDate　運用日時
	 * @param opeDate
	 */
	@SuppressWarnings("unchecked")
	public HashMap setTUSV006101SC(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("func_code", func_code);

		// 運用日時
		parentMap.put("key_koji_ymd", opeDate);

		outputMap.put("TUSV006101SC", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：番ポ工事予約状況一覧照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getTUSV006101SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("TUSV006101SC"))
		{
			parentMap = (HashMap)outputMap.get("TUSV006101SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listTUSV006101SC_etu0141b010cbsmsg1list_ETU0141B010CBSMsg1List = bean[0].getDataBeanArray("番ポ工事予約状況一覧照会明細");
		childList = null;
		if(parentMap.containsKey("ETU0141B010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ETU0141B010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if(listTUSV006101SC_etu0141b010cbsmsg1list_ETU0141B010CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listTUSV006101SC_etu0141b010cbsmsg1list_ETU0141B010CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listTUSV006101SC_etu0141b010cbsmsg1list_ETU0141B010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);

				// 番ポ工事予約状況一覧照会明細.営業 ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.営業日フラグ名称
				// 名称設定処理
				String busidayFlgNm = "";
				if(JTUStrConst.BUSIDAY_KYU.equals((String)childMap.get("busiday_flg")))
				{
					busidayFlgNm = JTUStrConst.BUSIDAY_SYMBOL_KYU;
				}
				else if(JTUStrConst.BUSIDAY_BUSI.equals((String)childMap.get("busiday_flg")))
				{
					busidayFlgNm = JTUStrConst.BUSIDAY_SYMBOL_BUSI;
				}
				subbean.sendMessageString("営業", X31CWebConst.DATABEAN_SET_VALUE, busidayFlgNm);
				// 番ポ工事予約状況一覧照会明細.最大数（９時） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.9時台予約可能数
				subbean.sendMessageString("最大数（９時）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("n_9_jidai_rsv_psb_cnt"));
				// 番ポ工事予約状況一覧照会明細.最大数（１０時） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.10時台予約可能数
				subbean.sendMessageString("最大数（１０時）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("n_10_jidai_rsv_psb_cnt"));
				// 番ポ工事予約状況一覧照会明細.最大数（１１時） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.11時台予約可能数
				subbean.sendMessageString("最大数（１１時）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("n_11_jidai_rsv_psb_cnt"));
				// 番ポ工事予約状況一覧照会明細.最大数（１２時） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.12時台予約可能数
				subbean.sendMessageString("最大数（１２時）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("n_12_jidai_rsv_psb_cnt"));
				// 番ポ工事予約状況一覧照会明細.最大数（１３時） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.13時台予約可能数
				subbean.sendMessageString("最大数（１３時）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("n_13_jidai_rsv_psb_cnt"));
				// 番ポ工事予約状況一覧照会明細.最大数（１４時） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.14時台予約可能数
				subbean.sendMessageString("最大数（１４時）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("n_14_jidai_rsv_psb_cnt"));
				// 番ポ工事予約状況一覧照会明細.最大数（１５時） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.15時台予約可能数
				subbean.sendMessageString("最大数（１５時）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("n_15_jidai_rsv_psb_cnt"));
				// 番ポ工事予約状況一覧照会明細.最大数（１６時） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.16時台予約可能数
				subbean.sendMessageString("最大数（１６時）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("n_16_jidai_rsv_psb_cnt"));
				// 番ポ工事予約状況一覧照会明細.最大数（１７時） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.17時台予約可能数
				subbean.sendMessageString("最大数（１７時）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("n_17_jidai_rsv_psb_cnt"));

				// 工事日
				subbean.sendMessageString("工事日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("bmp_koji_ymd"));
				// 曜日取得処理
				String bmpKojiYmdDow = JTUWebCommon.getDowNm((String)childMap.get("bmp_koji_ymd"));
				subbean.sendMessageString("工事日曜日", X31CWebConst.DATABEAN_SET_VALUE, bmpKojiYmdDow);

				// 0時〜
				// 番ポ工事予約状況一覧照会明細.最大数（0時〜） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.0時台予約可能数〜8時台予約可能数の合計
				ArrayList arr = new ArrayList();
				arr.add("n_0_jidai_rsv_psb_cnt");
				arr.add("n_1_jidai_rsv_psb_cnt");
				arr.add("n_2_jidai_rsv_psb_cnt");
				arr.add("n_3_jidai_rsv_psb_cnt");
				arr.add("n_4_jidai_rsv_psb_cnt");
				arr.add("n_5_jidai_rsv_psb_cnt");
				arr.add("n_6_jidai_rsv_psb_cnt");
				arr.add("n_7_jidai_rsv_psb_cnt");
				arr.add("n_8_jidai_rsv_psb_cnt");
				subbean.sendMessageString("最大数（０時〜）", X31CWebConst.DATABEAN_SET_VALUE, setCntDat(arr , childMap));

				//18時〜
				//番ポ工事予約状況一覧照会明細.最大数（18時〜） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.18時台予約可能数〜20時台予約可能数の合計
				arr.clear();
				arr.add("n_18_jidai_rsv_psb_cnt");
				arr.add("n_19_jidai_rsv_psb_cnt");
				arr.add("n_20_jidai_rsv_psb_cnt");
				subbean.sendMessageString("最大数（１８時〜）", X31CWebConst.DATABEAN_SET_VALUE, setCntDat(arr , childMap));

				//21時〜
				//番ポ工事予約状況一覧照会明細.最大数（21時〜） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.21時台予約可能数〜23時台予約可能数の合計
				arr.clear();
				arr.add("n_21_jidai_rsv_psb_cnt");
				arr.add("n_22_jidai_rsv_psb_cnt");
				arr.add("n_23_jidai_rsv_psb_cnt");
				subbean.sendMessageString("最大数（２１時〜）", X31CWebConst.DATABEAN_SET_VALUE, setCntDat(arr , childMap));

				// 0時〜
				// 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細(0〜8）の確定)
				arr.clear();
				arr.add("n_0_jidai_koji_fix_cnt");
				arr.add("n_1_jidai_koji_fix_cnt");
				arr.add("n_2_jidai_koji_fix_cnt");
				arr.add("n_3_jidai_koji_fix_cnt");
				arr.add("n_4_jidai_koji_fix_cnt");
				arr.add("n_5_jidai_koji_fix_cnt");
				arr.add("n_6_jidai_koji_fix_cnt");
				arr.add("n_7_jidai_koji_fix_cnt");
				arr.add("n_8_jidai_koji_fix_cnt");
				String n_0_8_fix = setCntDat(arr , childMap);

				//番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細(0〜8）の合計)
				arr.clear();
				arr.add("n_0_jidai_koji_gokei_cnt");
				arr.add("n_1_jidai_koji_gokei_cnt");
				arr.add("n_2_jidai_koji_gokei_cnt");
				arr.add("n_3_jidai_koji_gokei_cnt");
				arr.add("n_4_jidai_koji_gokei_cnt");
				arr.add("n_5_jidai_koji_gokei_cnt");
				arr.add("n_6_jidai_koji_gokei_cnt");
				arr.add("n_7_jidai_koji_gokei_cnt");
				arr.add("n_8_jidai_koji_gokei_cnt");
				String n_0_8_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（０時〜）", X31CWebConst.DATABEAN_SET_VALUE, n_0_8_fix + SURA + n_0_8_gokei);

				arr.clear();
				arr.add("n_9_jidai_koji_fix_cnt");
				String n_9_fix = setCntDat(arr , childMap);
				arr.clear();
				arr.add("n_9_jidai_koji_gokei_cnt");
				String n_9_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（９時）", X31CWebConst.DATABEAN_SET_VALUE, n_9_fix + SURA + n_9_gokei);

				arr.clear();
				arr.add("n_10_jidai_koji_fix_cnt");
				String n_10_fix = setCntDat(arr , childMap);
				arr.clear();
				arr.add("n_10_jidai_koji_gokei_cnt");
				String n_10_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（１０時）", X31CWebConst.DATABEAN_SET_VALUE, n_10_fix + SURA + n_10_gokei);

				arr.clear();
				arr.add("n_11_jidai_koji_fix_cnt");
				String n_11_fix = setCntDat(arr , childMap);
				arr.clear();
				arr.add("n_11_jidai_koji_gokei_cnt");
				String n_11_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（１１時）", X31CWebConst.DATABEAN_SET_VALUE, n_11_fix + SURA + n_11_gokei);

				arr.clear();
				arr.add("n_12_jidai_koji_fix_cnt");
				String n_12_fix = setCntDat(arr , childMap);
				arr.clear();
				arr.add("n_12_jidai_koji_gokei_cnt");
				String n_12_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（１２時）", X31CWebConst.DATABEAN_SET_VALUE, n_12_fix + SURA + n_12_gokei);

				arr.clear();
				arr.add("n_13_jidai_koji_fix_cnt");
				String n_13_fix = setCntDat(arr , childMap);
				arr.clear();
				arr.add("n_13_jidai_koji_gokei_cnt");
				String n_13_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（１３時）", X31CWebConst.DATABEAN_SET_VALUE, n_13_fix + SURA + n_13_gokei);

				arr.clear();
				arr.add("n_14_jidai_koji_fix_cnt");
				String n_14_fix = setCntDat(arr , childMap);
				arr.clear();
				arr.add("n_14_jidai_koji_gokei_cnt");
				String n_14_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（１４時）", X31CWebConst.DATABEAN_SET_VALUE, n_14_fix + SURA + n_14_gokei);

				arr.clear();
				arr.add("n_15_jidai_koji_fix_cnt");
				String n_15_fix = setCntDat(arr , childMap);
				arr.clear();
				arr.add("n_15_jidai_koji_gokei_cnt");
				String n_15_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（１５時）", X31CWebConst.DATABEAN_SET_VALUE, n_15_fix + SURA + n_15_gokei);

				arr.clear();
				arr.add("n_16_jidai_koji_fix_cnt");
				String n_16_fix = setCntDat(arr , childMap);
				arr.clear();
				arr.add("n_16_jidai_koji_gokei_cnt");
				String n_16_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（１６時）", X31CWebConst.DATABEAN_SET_VALUE, n_16_fix + SURA + n_16_gokei);

				arr.clear();
				arr.add("n_17_jidai_koji_fix_cnt");
				String n_17_fix = setCntDat(arr , childMap);
				arr.clear();
				arr.add("n_17_jidai_koji_gokei_cnt");
				String n_17_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（１７時）", X31CWebConst.DATABEAN_SET_VALUE, n_17_fix + SURA + n_17_gokei);
				
				arr.clear();
				String n_18_20_fix = "";
				arr.add("n_18_jidai_koji_fix_cnt");
				arr.add("n_19_jidai_koji_fix_cnt");
				arr.add("n_20_jidai_koji_fix_cnt");
				n_18_20_fix = setCntDat(arr , childMap);

				arr.clear();
				String n_18_20_gokei = "";
				arr.add("n_18_jidai_koji_gokei_cnt");
				arr.add("n_19_jidai_koji_gokei_cnt");
				arr.add("n_20_jidai_koji_gokei_cnt");
				n_18_20_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（１８時〜）", X31CWebConst.DATABEAN_SET_VALUE, n_18_20_fix + SURA + n_18_20_gokei);

				arr.clear();
				String n_21_23_fix = "";
				arr.add("n_21_jidai_koji_fix_cnt");
				arr.add("n_22_jidai_koji_fix_cnt");
				arr.add("n_23_jidai_koji_fix_cnt");
				n_21_23_fix = setCntDat(arr , childMap);

				arr.clear();
				String n_21_23_gokei = "";
				arr.add("n_21_jidai_koji_gokei_cnt");
				arr.add("n_22_jidai_koji_gokei_cnt");
				arr.add("n_23_jidai_koji_gokei_cnt");
				n_21_23_gokei = setCntDat(arr , childMap);
				subbean.sendMessageString("確定／合計（２１時〜）", X31CWebConst.DATABEAN_SET_VALUE, n_21_23_fix + SURA + n_21_23_gokei);

			}
		}
		return bean;
	}

	/**
	 * 指定した時間帯の予約情報または、集約情報の合計値を取得します。
	 * <br>
     * @param timeShiteiNm 対象日付
     * @param childMap 明細情報マップ
     * @return 合計値
     */
	private String setCntDat(ArrayList<String> timeShiteiNm , HashMap<String, Object> childMap)
	{
		//21時〜
		//番ポ工事予約状況一覧照会明細.最大数（21時〜） ← 番ポ工事予約状況一覧照会マップ.番ポ工事予約状況明細.21時台予約可能数〜23時台予約可能数の合計
		long gokei = 0;
		for (int i = 0 ; i < timeShiteiNm.size() ; i++)
		{
			if (childMap.get(timeShiteiNm.get(i)) != null && !"".equals(childMap.get(timeShiteiNm.get(i))))
			{
				gokei = gokei + Long.parseLong((String)childMap.get(timeShiteiNm.get(i)));
			}
		
		}
		return String.valueOf(gokei);
	}

}
