/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV1014_KKSV1014OPDBMapper
*	ソースファイル名：KKSV1014_KKSV1014OPDBMapper.java
*	作成者			：FJ
*	日付			：2022年12月15日
*＜機能概要＞
*	BP（支払方法変更一覧照会初期表示）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	新規作成	2022/12/15  FJ)西窪     【ANK-4329-00-00】新規作成
*	v64.00.00	2023/02/06  FJ)西窪		ANK-4348-00-00_mineo譲渡後支払方法変更対応
*
**********************************************************************/
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.JPCModelConstant;
import eo.common.constant.JZM0171Constant;
import eo.common.util.JKKStringUtil;
import eo.web.webview.KKW22601SF.KKW22601SFConst;
import eo.web.webview.KKW22701SF.KKW22701SFConst;
import eo.web.webview.common.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV1014_KKSV1014OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV1014_KKSV1014OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：支払方法変更一覧照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV101401SC(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_cd_sbt_cd", String.valueOf(JZM0171Constant.CD01799));

		outputMap.put("KKSV101401SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：支払方法変更一覧照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV101402SC(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_cd_sbt_cd", String.valueOf(JZM0171Constant.CD01800));

		outputMap.put("KKSV101402SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：仮申込検索
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap　上りマップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV101403SC(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("search_type", String.valueOf("1"));
		// 部品呼び出し → 支払方法変更一覧照会マップ.最大検索件数
		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW22701_MAX_SHOW_CNT"));
		// 部品呼び出し → 支払方法変更一覧照会マップ.表示件数
		parentMap.put("display_num", JCCWebCommon.getSearchConst("KKW22701_ROW_PER_PAGE"));
		
		// 支払方法変更一覧照会.検索用申込年月日（自） → 支払方法変更一覧照会マップ.ＫＥＹ＿検索用申込年月日（自）
		parentMap.put("key_crecard_shosa_mskm_day_from", bean[0].sendMessageString(KKW22701SFConst.SRC_MSKM_YMD_STA, X31CWebConst.DATABEAN_GET_VALUE));
		// 支払方法変更一覧照会.検索用申込年月日（至） → 支払方法変更一覧照会マップ.ＫＥＹ＿検索用申込年月日（至）
		parentMap.put("key_crecard_shosa_mskm_day_to", bean[0].sendMessageString(KKW22701SFConst.SRC_MSKM_YMD_END, X31CWebConst.DATABEAN_GET_VALUE));
		// 支払方法変更一覧照会.検索用申込ステータス → 支払方法変更一覧照会マップ.ＫＥＹ＿検索用申込ステータス
		parentMap.put("key_crecard_shosa_stat", bean[0].sendMessageString(KKW22701SFConst.SRC_MSKM_STAT, X31CWebConst.DATABEAN_GET_VALUE));
		// 支払方法変更一覧照会.検索用ｅｏＩＤ → 支払方法変更一覧照会マップ.ＫＥＹ＿検索用ｅｏＩＤ
		parentMap.put("key_eoid", bean[0].sendMessageString(KKW22701SFConst.SRC_EOID, X31CWebConst.DATABEAN_GET_VALUE));
		// 支払方法変更一覧照会.検索用お客さまＩＤ → 支払方法変更一覧照会マップ.ＫＥＹ＿検索用お客さまＩＤ
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString(KKW22701SFConst.SRC_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 支払方法変更一覧照会.検索用申込種別 → 支払方法変更一覧照会マップ.ＫＥＹ＿検索用申込種別
		parentMap.put("key_crecard_mskm_sbt_cd", bean[0].sendMessageString(KKW22701SFConst.SRC_MSKM_SBT_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// 支払方法変更一覧照会.検索用請求契約番号 → 支払方法変更一覧照会マップ.ＫＥＹ＿検索用請求契約番号
		parentMap.put("key_seiky_kei_no", bean[0].sendMessageString(KKW22701SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV101403SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：仮申込検索
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV101403SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV101403SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV101403SC");
		}
		
		ArrayList childList = null;
		
		X31SDataBeanAccessArray payWayInfoList = bean[0].getDataBeanArray(KKW22701SFConst.PAYWAY_UKINFO_LIST);
		childList = null;
		if(payWayInfoList != null && parentMap != null && parentMap.containsKey("EKK3401B010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK3401B010CBSMsg1List");
			
			for(int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if(payWayInfoList.getCount() - 1 >= i)
				{
					subbean = payWayInfoList.getDataBean(i);
				}
				else
				{
					subbean = payWayInfoList.addDataBean();
				}
				
				if (subbean == null)
				{
					continue;
				}
				
				HashMap childMap = (HashMap)childList.get(i);
				
				if (childMap != null)
				{
					
					// 支払方法変更一覧情報.クレジットカード照査申込日 ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.クレジットカード照査申込日
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_MSKM_DAY, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("crecard_shosa_mskm_day"));
					// 支払方法変更一覧情報.支払方法変更受付番号 ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.支払方法変更受付番号
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_UK_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("paywaychuk_no"));
					// 支払方法変更一覧情報.クレジットカード申込種別コード ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.クレジットカード申込種別コード
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_MSKM_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("crecard_mskm_sbt_cd"));
					// 支払方法変更一覧情報.クレジットカード申込種別名称 ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.クレジットカード申込種別名称
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_MSKM_SBT_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("crecard_mskm_sbt_nm"));
					// 支払方法変更一覧情報.クレジットカード照査ステータス ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.クレジットカード照査ステータス
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_MSKM_STAT, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("crecard_shosa_stat"));
					// 支払方法変更一覧情報.クレジットカード照査ステータス名称 ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.クレジットカード照査ステータス名称
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_MSKM_STAT_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("crecard_shosa_stat_nm"));
					// 支払方法変更一覧情報.ｅｏＩＤ ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.ｅｏＩＤ
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_EOID, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("eoid"));
					// 支払方法変更一覧情報.請求契約番号 ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.請求契約番号
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_kei_no"));
					// 支払方法変更一覧情報.登録年月日 ← 支払方法変更一覧照会マップ.サービス契約番号一覧照会明細.サービス契約番号
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_no"));
					
					if(!JKKStringUtil.isNullBlank((String)childMap.get("chk_jtn_cust_nm")))
					{
						// 支払方法変更一覧情報.契約者名 ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.チェック時点お客様名
						subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("chk_jtn_cust_nm"));
						// 支払方法変更一覧情報.契約者カナ名 ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.チェック時点お客様カナ名
						subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_KANA_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("chk_jtn_cust_kana"));

					}
					else
					{
						// 支払方法変更一覧情報.契約者名 ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.お客様名
						subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_nm"));
						// 支払方法変更一覧情報.契約者カナ名 ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.お客様名
						subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_KANA_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_kana"));
					}

					// 支払方法変更一覧情報.クレジットカード名義(ローマ字) ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.クレジットカード名義(ローマ字)
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_CRECARD_NM_ROMAJI, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("crecard_nm_romaji"));
					// 支払方法変更一覧情報.クレジットイシュア区分 ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.クレジットイシュア区分
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_CRDT_ISSUER_DIV, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("crdt_issuer_div"));
					// 支払方法変更一覧情報.カード名義人チェック結果コード ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.カード名義人チェック結果コード
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_CARD_MEIGIN_CKRLT_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("card_meigin_ckrlt_cd"));
					// 支払方法変更一覧情報.サービス契約ステータス ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.サービス契約ステータス
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_SVC_KEI_STAT, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_stat"));
					// 支払方法変更一覧情報.カード名義人チェック結果コード ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.カード名義人チェック結果コード
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_CARD_MEIGIN_CKRLT_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("card_meigin_ckrlt_cd"));
					// 支払方法変更一覧情報.SYSID ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.SYSID
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_SYSID, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sysid"));
					// 支払方法変更一覧情報.請求契約更新年月日時分秒(更新前) ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.請求契約更新年月日時分秒(更新前)
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_UPD_DTM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("upd_dtm"));
					//ANK-4348-00-00 ADD START
					// 支払方法変更一覧情報.請求契約更新年月日時分秒(更新前) ← 支払方法変更一覧照会マップ.支払方法変更一覧照会明細.支払方法変更情報更新年月日時分秒(更新前)
					subbean.sendMessageString(KKW22701SFConst.PAYWAY_CHG_UPD_DTM_PAYWAY, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("upd_dtm_payway"));
					//ANK-4348-00-00 ADD END
				}
			}
		}
		return bean;
	}


}