/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：ACSV0008_ACSV0008OPDBMapper
*	ソースファイル名：ACSV0008_ACSV0008OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年08月24日
*＜機能概要＞
*	BP（NHK視聴課金情報取込検索初期表示）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/24	FJ			新規作成
* ｖ12.00.00	2014.10.06  鈴木        【ANK-2248-00-00】課金対象件数、課金金額合計を追加
* ｖ12.00.01	2014.11.13  鈴木        【IT2-2014-0000327】確認、再取込ボタンの活性条件を修正
*
**********************************************************************/
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.JZM0171Constant;
import eo.web.webview.ACW00201SF.ACW00201SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class ACSV0008_ACSV0008OPDBMapper {
	
	/** SCタイトル */
	private static final String TITLE_ACSV000801SC = "ACSV000801SC";
	
	/** ＮＨＫ視聴課金処理コード・サイクルエラー */
	private static final String NHK_WATCH_CHRG_TRN_STAT_003 = "003";
	
	/** ＮＨＫ視聴課金処理コード・正常終了 */
	private static final String NHK_WATCH_CHRG_TRN_STAT_004 = "004";
	
	/**
	 * コンストラクタ
	 */
	public ACSV0008_ACSV0008OPDBMapper(){
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ＮＨＫ視聴課金取込　
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV000801SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String unyoYmd) {
		
		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);
		
		// NHK視聴課金取込検索初期表示マップ.ＫＥＹ＿運用日付
		parentMap.put("key_unyo_ymd", unyoYmd);
		
		// NHK視聴課金取込検索初期表示マップ.ＫＥＹ＿コード種別コード
		parentMap.put("key_cd_sbt_cd", JZM0171Constant.CD00895);

		// サービスIDの設定
		outputMap.put(TITLE_ACSV000801SC, parentMap);
						
		return outputMap;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：ＮＨＫ視聴課金取込
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV000801SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey(TITLE_ACSV000801SC)){
			parentMap = (HashMap)outputMap.get(TITLE_ACSV000801SC);
		}

		ArrayList childList = null;
		
		X31SDataBeanAccessArray listACSV000801SC_nhk_wtchcrg_tjk_list_EAC0481B010CBSMsg1List = bean[0].getDataBeanArray(ACW00201SFConst.NHK_WTCHCRG_TJK_LIST);
		
		// 表示情報の初期化
		listACSV000801SC_nhk_wtchcrg_tjk_list_EAC0481B010CBSMsg1List.clearArray();
		
		childList = null;
		if(parentMap.containsKey("EAC0481B010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EAC0481B010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listACSV000801SC_nhk_wtchcrg_tjk_list_EAC0481B010CBSMsg1List.getCount() -1 >= i){
					subbean = listACSV000801SC_nhk_wtchcrg_tjk_list_EAC0481B010CBSMsg1List.getDataBean(i);
				}else{
					subbean = listACSV000801SC_nhk_wtchcrg_tjk_list_EAC0481B010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
			
				// ＮＨＫ視聴課金処理状況リスト.請求年月 ← NHK視聴課金取込検索初期表示マップ.NHK視聴課金処理状況リスト.請求年月
				subbean.sendMessageString(ACW00201SFConst.SEIKY_YM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_ym"));
				
				// ＮＨＫ視聴課金処理状況リスト.ファイル取込年月日時分秒 ← NHK視聴課金取込検索初期表示マップ.NHK視聴課金処理状況リスト.ファイル取込年月日時分秒
				subbean.sendMessageString(ACW00201SFConst.FILE_TRKM_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("file_trkm_dtm"));
				
				// ＮＨＫ視聴課金処理状況リスト.データ取込件数 ← NHK視聴課金取込検索初期表示マップ.NHK視聴課金処理状況リスト.データ取込件数
				subbean.sendMessageString(ACW00201SFConst.DATA_TRKM_CNT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("data_trkm_cnt"));
				
				// ＮＨＫ視聴課金処理状況リスト.ＮＨＫ視聴課金取込ユーザーＩＤ ← NHK視聴課金取込検索初期表示マップ.NHK視聴課金処理状況リスト.NHK視聴課金取込ユーザーID
				subbean.sendMessageString(ACW00201SFConst.NHK_WTCHCRG_TRKM_USER_ID_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("nhk_wtchcrg_trkm_user_id"));
				
				// ＮＨＫ視聴課金処理状況リスト.操作担当者名 ← NHK視聴課金取込検索初期表示マップ.NHK視聴課金処理状況リスト.操作担当者名
				subbean.sendMessageString(ACW00201SFConst.SOSA_TNTSHA_NM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sosa_tntsha_nm"));
				
				// ＮＨＫ視聴課金処理状況リスト.ＮＨＫ視聴課金処理コード ← NHK視聴課金取込検索初期表示マップ.NHK視聴課金処理状況リスト.NHK視聴課金処理コード
				subbean.sendMessageString(ACW00201SFConst.NHK_WATCH_CHRG_TRN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("nhk_watch_chrg_trn_cd"));
				
				// ＮＨＫ視聴課金処理状況リスト.ＮＨＫ視聴課金処理名称 ← NHK視聴課金取込検索初期表示マップ.NHK視聴課金処理状況リスト.NHK視聴課金処理名称
				subbean.sendMessageString(ACW00201SFConst.NHK_WATCH_CHRG_TRN_NM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("nhk_watch_chrg_trn_nm"));
				
				// ＮＨＫ視聴課金処理状況リスト.外部料金ファイル作成年月日時分秒 ← NHK視聴課金取込検索初期表示マップ.NHK視聴課金処理状況リスト.外部料金ファイル作成年月日時分秒
				subbean.sendMessageString(ACW00201SFConst.OUT_PRC_FILE_SAKSEI_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("out_prc_file_saksei_dtm"));
// ANK-2248-00-00 2014.10.06 add start
				// ＮＨＫ視聴課金処理状況リスト.課金対象件数 ← NHK視聴課金取込検索初期表示マップ.NHK視聴課金処理状況リスト.課金対象件数
				subbean.sendMessageString(ACW00201SFConst.CHRG_TG_CNT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("chrg_tg_cnt"));
				// ＮＨＫ視聴課金処理状況リスト.課金金額合計 ← NHK視聴課金取込検索初期表示マップ.NHK視聴課金処理状況リスト.課金金額合計
				subbean.sendMessageString(ACW00201SFConst.CHRG_AMNT_GK_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("chrg_amnt_gk"));
// ANK-2248-00-00 2014.10.06 add end
			}
			
			// 検索結果が存在する場合
			boolean reuptakeJudgeFlg = false;
			boolean confirmjudgeFlg = false;
			boolean nhkWtchcrgTjkFlg = false;

			if (childList.size() >= 1)
			{
				// ＮＨＫ視聴課金処理状況存在フラグ
				nhkWtchcrgTjkFlg = true;
				
				// 配列の１件を取得
				HashMap childMap = (HashMap)childList.get(0);
				
				// ＮＨＫ視聴課金処理コードの取得
				String nhkStatus = (String)childMap.get("nhk_watch_chrg_trn_cd");
				
// 2014.11.13 IT2-2014-0000327 del start
//				// NHK視聴課金状況ステータスが「003:サイクルエラー」の場合
//				if (NHK_WATCH_CHRG_TRN_STAT_003.equals(nhkStatus))
//				{
//					// 再取込ボタン判定フラグ
//					reuptakeJudgeFlg = true;
//					// 確認ボタン判定フラグ
//					confirmjudgeFlg = true;
//					
//				}
// 2014.11.13 IT2-2014-0000327 del end
				// NHK視聴課金状況ステータスが「004:正常終了」の場合
// 2014.11.13 IT2-2014-0000327 mod start
//				else if (NHK_WATCH_CHRG_TRN_STAT_004.equals(nhkStatus))
				if (NHK_WATCH_CHRG_TRN_STAT_004.equals(nhkStatus))
// 2014.11.13 IT2-2014-0000327 mod end
				{
// 2014.11.13 IT2-2014-0000327 add start
					// 再取込ボタン判定フラグ
					reuptakeJudgeFlg = true;
// 2014.11.13 IT2-2014-0000327 add end
					// 確認ボタン判定フラグ
					confirmjudgeFlg = true;
				}
			}
			
			// 再取込ボタン判定フラグ
			bean[0].sendMessageBoolean(ACW00201SFConst.REUPTAKE_JUDGE_FLG, X31CWebConst.DATABEAN_SET_VALUE, reuptakeJudgeFlg);
			// 確認ボタン判定フラグ
			bean[0].sendMessageBoolean(ACW00201SFConst.CONFIRM_JUDGE_FLG, X31CWebConst.DATABEAN_SET_VALUE, confirmjudgeFlg);
			// ＮＨＫ視聴課金処理状況存在フラグ
			bean[0].sendMessageBoolean(ACW00201SFConst.NHK_WTCHCRG_TJK_FLG, X31CWebConst.DATABEAN_SET_VALUE, nhkWtchcrgTjkFlg);
			
		}

		return bean;
	}
}