/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：ACSV0007_ACSV0007OPDBMapper
 *	ソースファイル名：ACSV0007_ACSV0007OPDBMapper.java
 *	作成者			：富士通
 *	日付			：2011年12月12日
 *＜機能概要＞
 *	BP（一時金一覧照会）へのＤ−Ｂマッピングクラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/12/12	富士通		新規作成
 *	v5.00.00	2013/11/07	FJ)江森		【OM-2013-0003820】料金項目抽出取得条件変更
 *  v6.00.00	2013/12/03  FJ)北端     【OM-2013-0004720】一時金一覧検索時の料金項目コード変換対応
 *  v6.00.01	2013/12/07  FJ)北端     【OM-2013-0005049】一時金一覧検索で料金項目が複数存在する場合の障害対応
 *  v8.00.00	2013/12/25  FJ)江森     【ANK-1584-00-00】一時金スキーマに項目「サービス詳細契約番号」追加対応
 *  v9.00.00	2014/04/16	FJ)小野     【ANK-2054-00-00】eoスマートリンク改修(端末補償)。
 *  v9.00.01	2014/06/19	FJ)江森     【IT1-2014-0000225】一時金一覧検索時の業務識別コード（一時金）追加
 *  v56.00.00	2021/11/29	FJ)藤本涼	【ANK-3998-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.common.constant.JACStrConst;
import eo.common.util.JCRUtilCommon;
import eo.web.webview.ACW00101SF.ACW00101SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHDspEditUtil;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class ACSV0007_ACSV0007OPDBMapper
{

	/** 一時金一覧照会ページング_検索処理パターン */
	private static final String PAGING_SEARCH_PATTERN = "1";

	/** 一時金一覧照会ページング_最大検索件数取得キー */
	private static final String KEY_PAGING_MAX_SHOW_CNT = "ACW00101_MAX_SHOW_CNT";

	/** 一時金一覧照会ページング_表示件数取得キー */
	private static final String KEY_PAGING_ROW_PER_PAGE = "ACW00101_ROW_PER_PAGE";

	/**
	 * コンストラクタ
	 */
	public ACSV0007_ACSV0007OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：一時金一覧照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV000701SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		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_seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("ACSV000701SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：一時金一覧照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV000702SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		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_seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約番号 → 一時金一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
//ANK-3998-00-00 ADD START
		// 請求年月（自） → 一時金一覧照会マップ.ＫＥＹ＿請求年月（自）
		parentMap.put("key_seiky_ym_from", bean[0].sendMessageString(ACW00101SFConst.SEIKY_YM_FROM, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 請求年月（至） → 一時金一覧照会マップ.ＫＥＹ＿請求年月（至）
		parentMap.put("key_seiky_ym_to", bean[0].sendMessageString(ACW00101SFConst.SEIKY_YM_TO, X31CWebConst.DATABEAN_GET_VALUE));
//ANK-3998-00-00 ADD END
		
		// システムコード → 一時金一覧照会マップ.ＫＥＹ＿システムコード
		parentMap.put("key_sys_cd", JACStrConst.SYS_CD_CH);

		// 業務機能識別コード → 一時金一覧照会マップ.ＫＥＹ＿業務機能識別コード
		parentMap.put("key_work_kino_skbt_cd", JACStrConst.WORK_KINO_SKBT_SEIKY_UCHWK);
		
		// 業務機能識別コード2 → 一時金一覧照会マップ.ＫＥＹ＿業務機能識別コード2
		parentMap.put("key_work_kino_skbt_cd_2", JACStrConst.WORK_KINO_SKBT_ICJKN);

		// 抽出変換コード → 一時金一覧照会マップ.ＫＥＹ＿抽出変換コード
		parentMap.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_CST);

		// ページング制御情報のマッピング
		parentMap.put("search_type", PAGING_SEARCH_PATTERN);
		parentMap.put("max_search_num", JCCWebCommon.getSearchConst(KEY_PAGING_MAX_SHOW_CNT));
		parentMap.put("display_num", JCCWebCommon.getSearchConst(KEY_PAGING_ROW_PER_PAGE));

		outputMap.put("ACSV000702SC", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：一時金一覧照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV000701SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV000701SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV000701SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listACSV000705SC_svc_kei_no_info_EKK0321B011CBSMsg1List = bean[0].getDataBeanArray(ACW00101SFConst.SVC_KEI_NO_INFO);
		X31SDataBeanAccess subbean = listACSV000705SC_svc_kei_no_info_EKK0321B011CBSMsg1List.getDataBean(0);

		subbean.sendMessage(ACW00101SFConst.SVC_KEI_NO_LIST_03, X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessageString(ACW00101SFConst.SVC_KEI_NO_LIST_03, X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);

		childList = null;
		if (parentMap.containsKey("EKK0321B011CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0321B011CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				// サービス契約番号情報.サービス契約番号リスト ← サービス契約番号一覧照会マップ.サービス契約番号一覧照会明細.サービス契約番号
				subbean.sendMessageString(ACW00101SFConst.SVC_KEI_NO_LIST_03, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("svc_kei_no"));
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：一時金一覧照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getACSV000702SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("ACSV000702SC"))
		{
			parentMap = (HashMap)outputMap.get("ACSV000702SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listACSV000706SC_icjkn_icrn_info_EAC0171B010CBSMsg1List = bean[0].getDataBeanArray("一時金一覧情報");
		listACSV000706SC_icjkn_icrn_info_EAC0171B010CBSMsg1List.clearArray();

		childList = null;
		if (parentMap.containsKey("EAC0171B010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EAC0171B010CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listACSV000706SC_icjkn_icrn_info_EAC0171B010CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listACSV000706SC_icjkn_icrn_info_EAC0171B010CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listACSV000706SC_icjkn_icrn_info_EAC0171B010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);

				// 一時金一覧情報.一時金登録番号 ← 一時金一覧照会マップ.一時金一覧照会明細.一時金登録番号
				subbean.sendMessageString("一時金登録番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("icjkn_add_seq"));

				// 一時金一覧情報.一時金更新枝番 ← 一時金一覧照会マップ.一時金一覧照会明細.一時金更新枝番
				subbean.sendMessageString("一時金更新枝番", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("icjkn_upd_seq"));

				// 一時金一覧情報.取込状況 ← 一時金一覧照会マップ.一時金一覧照会明細.取込状況
				subbean.sendMessageString("取込状況", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trkm_stat"));

				// 一時金一覧情報.取込状況名称 ← 一時金一覧照会マップ.一時金一覧照会明細.取込状況名称
				subbean.sendMessageString("取込状況名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trkm_stat_nm"));

				// 一時金一覧情報.サービス契約番号 ← 一時金一覧照会マップ.一時金一覧照会明細.サービス契約番号
				subbean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_no"));

				// 一時金一覧情報.登録日 ← 一時金一覧照会マップ.一時金一覧照会明細.登録日
				subbean.sendMessageString("登録日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("add_day"));

				// 一時金一覧情報.料金コース ← 一時金一覧照会マップ.一時金一覧照会明細.対象料金コースコード
				subbean.sendMessageString("料金コース", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trgt_pcrs_cd"));

				// 一時金一覧情報.料金コース名称 ← 一時金一覧照会マップ.一時金一覧照会明細.対象料金コースコード名称
				subbean.sendMessageString("料金コース名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trgt_pcrs_cd_nm"));

				// 一時金一覧情報.料金サービス ← 一時金一覧照会マップ.一時金一覧照会明細.対象料金サービスコード
				subbean.sendMessageString("料金サービス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trgt_prc_svc_cd"));

				// 一時金一覧情報.料金サービス名称 ← 一時金一覧照会マップ.一時金一覧照会明細.対象料金サービスコード名称
				subbean.sendMessageString("料金サービス名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trgt_prc_svc_cd_nm"));

				// 一時金一覧情報.料金項目コード ← 一時金一覧照会マップ.一時金一覧照会明細.対象料金項目コード
				subbean.sendMessageString("料金項目コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trgt_prc_kmk_cd"));

				// 一時金一覧情報.料金項目名称 ← 一時金一覧照会マップ.一時金一覧照会明細.対象料金項目コード名称
				String prcKmkCd = JCHDspEditUtil.prcKmkCdEdit((String)childMap.get("trgt_prc_kmk_cd"));
				String kmkNm = JCHDspEditUtil.codeNameEdit(prcKmkCd, (String)childMap.get("trgt_prc_kmk_cd_nm"));
				subbean.sendMessageString("料金項目名称", X31CWebConst.DATABEAN_SET_VALUE, kmkNm);

				// 一時金一覧情報.請求額 ← 一時金一覧照会マップ.一時金一覧照会明細.請求額
				subbean.sendMessageString("請求額", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_amnt"));

				// 一時金一覧情報.投入区分 ← 一時金一覧照会マップ.一時金一覧照会明細.投入区分名称
				subbean.sendMessageString("投入区分", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tonyu_div_nm"));

				// 一時金一覧情報.請求月 ← 一時金一覧照会マップ.一時金一覧照会明細.請求年月
				subbean.sendMessageString("請求月", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_ym"));

				// 一時金一覧情報.取込済額 ← 一時金一覧照会マップ.一時金一覧照会明細.取込済額
				subbean.sendMessageString("取込済額", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trkm_zumi_amnt"));

				// 一時金一覧情報.取込残額 ← 一時金一覧照会マップ.一時金一覧照会明細.取込残額
				subbean.sendMessageString("取込残額", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("trkm_zan_amnt"));

				// 一時金一覧情報.サービス詳細識別番号 ← 一時金一覧照会マップ.一時金一覧照会明細.サービス詳細識別番号
				// 製造機器番号がある場合、製造機器番号を設定
				String svcDtlSkbtNo = "";
				if (childMap.get("kiki_seizo_no") != null && !JCRUtilCommon.isNull(childMap.get("kiki_seizo_no")))
				{
					svcDtlSkbtNo = (String)childMap.get("kiki_seizo_no");
				}
				else
				{
					svcDtlSkbtNo = (String)childMap.get("svc_dtl_skbt_no");
				}
				subbean.sendMessageString("サービス詳細識別番号", X31CWebConst.DATABEAN_SET_VALUE, svcDtlSkbtNo);

				// 一時金一覧情報.更新年月日時分秒 ← 一時金一覧照会マップ.一時金一覧照会明細.更新年月日時分秒
				subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("upd_dtm"));
			}
		}

		return bean;
	}

}