/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CHSV0031_CHSV0031OPDBMapper
 *	ソースファイル名：CHSV0031_CHSV0031OPDBMapper.java
 *	作成者			：富士通
 *	日付			：2011年12月16日
 *＜機能概要＞
 *	BP（金庫取消画面情報取得）へのＤ−Ｂマッピングクラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/12/16	富士通		新規作成
 *	v5.00.00	2013/08/08	FJ)河井	   【IT1-2013-0001576】入金系画面強化対応
 *	v6.00.00	2014/01/08	FJ)小野    【OM-2014-0000039】金庫取消時の入金変更処理を修正(入金が更新されない不具合を修正)。
 *	v32.00.00	2017/04/05	FJ)佐々木  【ANK-2996-00-00】ＳＭＳを利用した即時決済サービスの導入
 *	v32.00.00	2018/04/26	FJ)孫      【ANK-3366-00-00】eo光設備卸対応
 **********************************************************************/
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.web.webview.common.JCHDspEditUtil;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CHSV0031_CHSV0031OPDBMapper
{

	/**
	 * コンストラクタ
	 */
	public CHSV0031_CHSV0031OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003101SC(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("CHSV003101SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003102SC(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_knk_no", bean[0].sendMessageString("金庫番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CHSV003102SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003103SC(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);

		outputMap.put("CHSV003103SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003104SC(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);

		outputMap.put("CHSV003104SC", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCHSV003101SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("CHSV003101SC"))
		{
			parentMap = (HashMap)outputMap.get("CHSV003101SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listCHSV003101SC_seiky_kei_info_EKK0491A010CBSMsg1List = bean[0].getDataBeanArray("請求契約情報");
		childList = null;
		if (listCHSV003101SC_seiky_kei_info_EKK0491A010CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0491A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0491A010CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listCHSV003101SC_seiky_kei_info_EKK0491A010CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listCHSV003101SC_seiky_kei_info_EKK0491A010CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listCHSV003101SC_seiky_kei_info_EKK0491A010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// 請求契約情報.送付先カナ名 ← 請求契約一意照会マップ.請求契約一意照会明細.送付先カナ名
				if (childMap != null)
				{
					subbean.sendMessageString("送付先カナ名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("shs_kana"));
				}
				else
				{
					subbean.sendMessageString("送付先カナ名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCHSV003102SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("CHSV003102SC"))
		{
			parentMap = (HashMap)outputMap.get("CHSV003102SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listCHSV003102SC_knk_info_ECH0191A010CBSMsg1List = bean[0].getDataBeanArray("金庫情報");
		childList = null;
		if (listCHSV003102SC_knk_info_ECH0191A010CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECH0191A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECH0191A010CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listCHSV003102SC_knk_info_ECH0191A010CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listCHSV003102SC_knk_info_ECH0191A010CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listCHSV003102SC_knk_info_ECH0191A010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				// 金庫情報.移動元金庫番号 ← 金庫一意照会マップ.金庫一意明細.移動元金庫番号
				if (childMap != null)
				{
					subbean.sendMessageString("移動元金庫番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("idomoto_knk_no"));
				}
				else
				{
					subbean.sendMessageString("移動元金庫番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}

				// 金庫情報.統合先金庫番号 ← 金庫一意照会マップ.金庫一意明細.統合先金庫番号
				if (childMap != null)
				{
					subbean.sendMessageString("統合先金庫番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("bnkt_knk_no"));
				}
				else
				{
					subbean.sendMessageString("統合先金庫番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}

				// 金庫情報.更新年月日時分秒 ← 金庫一意照会マップ.金庫一意明細.更新年月日時分秒
				if (childMap != null)
				{
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("upd_dtm"));
				}
				else
				{
					subbean.sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCHSV003103SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("CHSV003103SC"))
		{
			parentMap = (HashMap)outputMap.get("CHSV003103SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listCHSV003103SC_nyukin_info_ECH0111A010CBSMsg1List = bean[0].getDataBeanArray("入金情報");
		childList = null;
		if (listCHSV003103SC_nyukin_info_ECH0111A010CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECH0111A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECH0111A010CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listCHSV003103SC_nyukin_info_ECH0111A010CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listCHSV003103SC_nyukin_info_ECH0111A010CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listCHSV003103SC_nyukin_info_ECH0111A010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				if (childMap != null)
				{
					// 入金情報.入金番号ス ← 入金一意照会マップ.入金一意明細.入金番号
					subbean.sendMessageString("入金番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("nyukin_no"));

					// 入金情報.入金ステータス ← 入金一意照会マップ.入金一意明細.入金ステータス
					subbean.sendMessageString("入金ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("nyukin_stat"));

					// 入金情報.入金経路コード ← 入金一意照会マップ.入金一意明細.入金経路コード
					subbean.sendMessageString("入金経路コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("nyukin_route_cd"));

					// 入金情報.入金経路コード名称 ← 入金一意照会マップ.入金一意明細.入金経路コード名称
					String routeCd = JCHDspEditUtil.codeNameEdit((String)childMap.get("nyukin_route_cd"), (String)childMap.get("nyukin_route_cd_nm"));
					subbean.sendMessageString("入金経路コード名称", X31CWebConst.DATABEAN_SET_VALUE, routeCd);
// ANK-2996-00-00 ADD START
					// 入金情報.収納機関コード名称 ← 入金一意照会マップ.入金一意明細.収納機関コード名称
					subbean.sendMessageString("収納機関コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("shunokikan_cd_nm"));
// ANK-2996-00-00 ADD END
					// ANK-3366-00-00 ADD START
					// 入金経路コードが「97(卸先事業者)」の場合
					if(JACStrConst.NYKNKEIRCD_KESSAI_ORSJGS.equals((String)childMap.get("nyukin_route_cd")))
					{
						// 入金情報.卸先事業者名称 ← 入金一意照会マップ.入金一意明細.卸先事業者名称
						subbean.sendMessageString("卸先事業者名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("shunokikan_cd_nm"));
					}
					// ANK-3366-00-00 ADD END
					// 入金情報.外部組織収納年月日 ← 入金一意照会マップ.入金一意明細.外部組織収納年月日
					subbean.sendMessageString("外部組織収納年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("out_org_shuno_ymd"));

					// 入金情報.領収年月日 ← 入金一意照会マップ.入金一意明細.領収年月日
					subbean.sendMessageString("領収年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("receipt_ymd"));

					// 入金情報.入金額 ← 入金一意照会マップ.入金一意明細.入金額
					subbean.sendMessageString("入金額", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("nyukin_amnt"));

					// 入金情報.口座振替＿金融機関名 ← 入金一意照会マップ.入金一意明細.口座振替＿金融機関名
					subbean.sendMessageString("口座振替＿金融機関名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("khri_bank_nm"));

					// 入金情報.口座振替＿金融機関支店名 ← 入金一意照会マップ.入金一意明細.口座振替＿金融機関支店名
					subbean.sendMessageString("口座振替＿金融機関支店名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("khri_bank_shiten_nm"));

					// 入金情報.クレジット＿クレジットカード会社名 ← 入金一意照会マップ.入金一意明細.クレジット＿クレジットカード会社名
					subbean.sendMessageString("クレジット＿クレジットカード会社名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("crecard_comp_nm"));

					// 入金情報.窓口＿金融機関名 ← 入金一意照会マップ.入金一意明細.窓口＿金融機関名
					subbean.sendMessageString("窓口＿金融機関名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("madoguchi_bank_nm"));

					// 入金情報.窓口＿金融機関支店名 ← 入金一意照会マップ.入金一意明細.窓口＿金融機関支店名
					subbean.sendMessageString("窓口＿金融機関支店名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("madoguchi_bank_shiten_nm"));

					// 入金情報.コンビニ＿コンビニエンスストア会社名 ← 入金一意照会マップ.入金一意明細.コンビニ＿コンビニエンスストア会社名
					subbean.sendMessageString("コンビニ＿コンビニエンスストア会社名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cvstore_comp_nm"));

					// 入金情報.債権回収委託会社＿債権回収委託会社名 ← 入金一意照会マップ.入金一意明細.債権回収委託会社＿債権回収委託会社名
					subbean.sendMessageString("債権回収委託会社＿債権回収委託会社名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sknksitkcm_nm"));

					// 入金情報.総合口座＿指定口座コード名称 ← 入金一意照会マップ.入金一意明細.総合口座＿指定口座コード名称
					subbean.sendMessageString("総合口座＿指定口座コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("shiteikoza_cd_nm"));

					// 入金情報.総合口座＿受取組織コード名称 ← 入金一意照会マップ.入金一意明細.総合口座＿受取組織コード名称
					subbean.sendMessageString("総合口座＿受取組織コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("uketori_org_cd_nm"));

					// 入金情報.郵券＿受取組織コード名称 ← 入金一意照会マップ.入金一意明細.郵券＿受取組織コード名称
					subbean.sendMessageString("郵券＿受取組織コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("yuken_uketori_org_cd_nm"));

					// 入金情報.社内使用分＿組織コード名称 ← 入金一意照会マップ.入金一意明細.総合口座＿受取組織コード名称
					subbean.sendMessageString("社内使用分＿組織コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("uketori_org_cd_nm"));

					// 入金情報.更新前更新年月日時分秒 ← 入金一意照会マップ.入金一意明細.更新年月日時分秒
					subbean.sendMessageString("更新前更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("upd_dtm"));
				}
				else
				{
					subbean.sendMessageString("入金番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("入金ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("入金経路コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("入金経路コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
// ANK-2996-00-00 ADD START
					subbean.sendMessageString("収納機関コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
// ANK-2996-00-00 ADD END
					// ANK-3366-00-00 ADD START
					subbean.sendMessageString("卸先事業者名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					// ANK-3366-00-00 ADD END
					subbean.sendMessageString("外部組織収納年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("領収年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("入金額", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("口座振替＿金融機関名", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("口座振替＿金融機関支店名", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("クレジット＿クレジットカード会社名", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("窓口＿金融機関名", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("窓口＿金融機関支店名", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("コンビニ＿コンビニエンスストア会社名", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("債権回収委託会社＿債権回収委託会社名", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("総合口座＿指定口座コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("総合口座＿受取組織コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("郵券＿受取組織コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("社内使用分＿組織コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					subbean.sendMessageString("更新前更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}

			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCHSV003104SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("CHSV003104SC"))
		{
			parentMap = (HashMap)outputMap.get("CHSV003104SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listCHSV003104SC_nyukin_info_ECH0051A010CBSMsg1List = bean[0].getDataBeanArray("入金情報");
		childList = null;
		if (listCHSV003104SC_nyukin_info_ECH0051A010CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECH0051A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECH0051A010CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if (listCHSV003104SC_nyukin_info_ECH0051A010CBSMsg1List.getCount() - 1 >= i)
				{
					subbean = listCHSV003104SC_nyukin_info_ECH0051A010CBSMsg1List.getDataBean(i);
				}
				else
				{
					subbean = listCHSV003104SC_nyukin_info_ECH0051A010CBSMsg1List.addDataBean();
				}

				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null)
				{
					continue;
				}

				if (childMap != null)
				{
					// 入金一意照会で取得できなかった場合セットする。
					if (subbean.sendMessageString("口座振替＿金融機関名", X31CWebConst.DATABEAN_GET_VALUE).isEmpty())
					{
						// 入金情報.口座振替＿金融機関名 ← 請求一意照会マップ.請求一意明細.口座振替＿金融機関名
						subbean.sendMessageString("口座振替＿金融機関名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kofuri_bank_nm"));
					}

					// 入金一意照会で取得できなかった場合セットする。
					if (subbean.sendMessageString("口座振替＿金融機関支店名", X31CWebConst.DATABEAN_GET_VALUE).isEmpty())
					{
						// 入金情報.口座振替＿金融機関支店名 ← 請求一意照会マップ.請求一意明細.口座振替＿金融機関支店名
						subbean.sendMessageString("口座振替＿金融機関支店名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kofuri_bank_shiten_nm"));
					}

					// 入金一意照会で取得できなかった場合セットする。
					if (subbean.sendMessageString("クレジット＿クレジットカード会社名", X31CWebConst.DATABEAN_GET_VALUE).isEmpty())
					{
						// 入金情報.クレジット＿クレジットカード会社名 ← 請求一意照会マップ.請求一意明細.クレジット＿クレジット会社名
						subbean.sendMessageString("クレジット＿クレジットカード会社名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("crecard_crecard_comp_nm"));
					}
				}
			}
		}

		return bean;
	}
}