/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV1009_KKSV1009OPDBMapper
*	ソースファイル名：KKSV1009_KKSV1009OPDBMapper.java
*	作成者			：FJ
*	日付			：2022年08月10日
*＜機能概要＞
*	BP（仮申込一覧照会）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v60.00.00	2022/08/10	FJ)吉田		【ANK-4231-00-00】OMO構想対応
*	v60.00.01	2022/09/02	FJ)吉田		【ANK-4231-12-00】プレ登録会員以外の申込検索対応
*   v60.00.01	2022/09/13	FJ)舘山		【IT1-2022-0000072】
*   v72.00.00	2024/11/05	FJ)舘山		【ANK-4494-19-00】双方向番ポ対応
*   v72.00.00	2024/12/04	FJ)佃		【ANK-4645-00-00】FRONTIER経由仮申込情報への取扱コード、特殊配線追加
*   
**********************************************************************/
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.util.JKKStringUtil;
import eo.web.webview.KKW22601SF.KKW22601SFConst;
import eo.web.webview.common.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * @author 富士通
 */
public class KKSV1009_KKSV1009OPDBMapper
{

	/**
	 * プレ登録ステータス（仮申込）
	 */
	private static final String PR_ADD_STAT_KARI = "1";

	/**
	 * プレ登録ステータス（プレ登録）
	 */
	private static final String PR_ADD_STAT_PRE = "2";

	/**
	 * プレ登録ステータス（仮申込orプレ登録）
	 */
	private static final String PR_ADD_STAT_KARI_OR_PRE = "3";

	/**
	 * コンストラクタ
	 */
	public KKSV1009_KKSV1009OPDBMapper()
	{
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：仮申込検索
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap　上りマップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV100901SC(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("sort_column_code", Integer.parseInt(bean[0].sendMessageString(KKW22601SFConst.SRC_SORT_ITEM_NO, X31CWebConst.DATABEAN_GET_VALUE)));
		// 部品呼び出し → 仮申込一覧照会マップ.整列カラムコード
		parentMap.put("sort_flg", Integer.parseInt(bean[0].sendMessageString(KKW22601SFConst.SRC_SORT_DIV, X31CWebConst.DATABEAN_GET_VALUE)));
		// 部品呼び出し → 仮申込一覧照会マップ.検索処理パターン
		parentMap.put("search_type", String.valueOf("1"));
		// 部品呼び出し → 仮申込一覧照会マップ.最大検索件数
		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW22601_MAX_SHOW_CNT"));
		// 部品呼び出し → 仮申込一覧照会マップ.表示件数
		parentMap.put("display_num", JCCWebCommon.getSearchConst("KKW22601_ROW_PER_PAGE"));
		
		if(PR_ADD_STAT_KARI.equals(bean[0].sendMessageString(KKW22601SFConst.SRC_PR_ADD_STAT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 仮登録情報照会.検索用仮申込保存フラグ → 仮申込一覧照会マップ.ＫＥＹ＿仮申込保存フラグ
			parentMap.put("key_kr_mskm_save_flg", "1");
		}
		else if(PR_ADD_STAT_PRE.equals(bean[0].sendMessageString(KKW22601SFConst.SRC_PR_ADD_STAT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 仮登録情報照会.検索用仮登録保存フラグ → 仮申込一覧照会マップ.ＫＥＹ＿仮申込保存フラグ
			parentMap.put("key_kr_add_save_flg", "1");
		}
		else if(PR_ADD_STAT_KARI_OR_PRE.equals(bean[0].sendMessageString(KKW22601SFConst.SRC_PR_ADD_STAT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 仮登録情報照会.検索用仮申込保存フラグ → 仮申込一覧照会マップ.ＫＥＹ＿仮申込保存フラグ
			parentMap.put("key_kr_mskm_save_flg", "1");
			// 仮登録情報照会.検索用仮登録保存フラグ → 仮申込一覧照会マップ.ＫＥＹ＿仮申込保存フラグ
			parentMap.put("key_kr_add_save_flg", "1");
		}
		// 仮登録情報照会.検索用受付番号 → 仮申込一覧照会マップ.ＫＥＹ＿申込書番号
		parentMap.put("key_mskmsho_no", bean[0].sendMessageString(KKW22601SFConst.SRC_UKE_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 仮登録情報照会.検索用ｅｏＩＤ → 仮申込一覧照会マップ.ＫＥＹ＿ｅｏＩＤ
		parentMap.put("key_eoid", bean[0].sendMessageString(KKW22601SFConst.SRC_EO_ID, X31CWebConst.DATABEAN_GET_VALUE));
		// 仮登録情報照会.検索用契約者氏名／法人名（カナ） → 仮申込一覧照会マップ.ＫＥＹ＿お客様カナ名
		parentMap.put("key_cust_kana", bean[0].sendMessageString(KKW22601SFConst.SRC_KEISHA_NM_HOJIN_KANA, X31CWebConst.DATABEAN_GET_VALUE));
		// 仮登録情報照会.検索用電話番号 → 仮申込一覧照会マップ.ＫＥＹ＿契約者電話番号
		parentMap.put("key_keisha_telno", bean[0].sendMessageString(KKW22601SFConst.SRC_TELNO, X31CWebConst.DATABEAN_GET_VALUE));
		String addDtmFrom = bean[0].sendMessageString(KKW22601SFConst.SRC_ADD_YMD_STA, X31CWebConst.DATABEAN_GET_VALUE);
		if(!JKKStringUtil.isNullBlank(addDtmFrom))
		{
			// 仮登録情報照会.検索用登録年月日＿前 → 仮申込一覧照会マップ.ＫＥＹ＿登録年月日ＦＲＯＭ
// IT1-2022-0000072 Modify START
//			parentMap.put("key_add_ymd_from", addDtmFrom + "000000000");
			parentMap.put("key_add_dtm_from", addDtmFrom + "000000000");
// IT1-2022-0000072 Modify END
		}
		String addDtmTo = bean[0].sendMessageString(KKW22601SFConst.SRC_ADD_YMD_END, X31CWebConst.DATABEAN_GET_VALUE);
		if(!JKKStringUtil.isNullBlank(addDtmTo))
		{
			// 仮登録情報照会.検索用登録年月日＿後 → 仮申込一覧照会マップ.ＫＥＹ＿登録年月日ＴＯ
// IT1-2022-0000072 Modify START
//			parentMap.put("key_add_ymd_to", addDtmTo + "235959999");
			parentMap.put("key_add_dtm_to", addDtmTo + "235959999");
// IT1-2022-0000072 Modify END
		}
		String lastUpdDtmFrom = bean[0].sendMessageString(KKW22601SFConst.SRC_LAST_UPD_YMD_STA, X31CWebConst.DATABEAN_GET_VALUE);
		if(!JKKStringUtil.isNullBlank(lastUpdDtmFrom))
		{
			// 仮登録情報照会.検索用最終更新年月日＿前 → 仮申込一覧照会マップ.ＫＥＹ＿更新年月日ＦＲＯＭ
// IT1-2022-0000072 Modify START
//			parentMap.put("key_upd_ymd_from", lastUpdDtmFrom + "000000000");
			parentMap.put("key_upd_dtm_from", lastUpdDtmFrom + "000000000");
// IT1-2022-0000072 Modify END
		}
		String lastUpdDtmTo = bean[0].sendMessageString(KKW22601SFConst.SRC_LAST_UPD_YMD_END, X31CWebConst.DATABEAN_GET_VALUE);
		if(!JKKStringUtil.isNullBlank(lastUpdDtmTo))
		{
			// 仮登録情報照会.検索用最終更新年月日＿後 → 仮申込一覧照会マップ.ＫＥＹ＿更新年月日ＴＯ
// IT1-2022-0000072 Modify START
//			parentMap.put("key_upd_ymd_to", lastUpdDtmTo + "235959999");
			parentMap.put("key_upd_dtm_to", lastUpdDtmTo + "235959999");
// IT1-2022-0000072 Modify END
		}
		
// ANK-4645-00-00 ADD START
		// 仮登録情報照会.検索用特殊配線フラグ → 仮申込一覧照会マップ.ＫＥＹ＿特殊配線フラグ
		parentMap.put("key_tokushu_haisen_flg", bean[0].sendMessageString(KKW22601SFConst.SRC_TOKUSHU_HAISEN_FLG, X31CWebConst.DATABEAN_GET_VALUE));
// ANK-4645-00-00 ADD END
		outputMap.put("KKSV100901SC", parentMap);
		
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：仮申込検索
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV100901SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV100901SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV100901SC");
		}
		
		ArrayList childList = null;
		
		X31SDataBeanAccessArray kariAddInfoList = bean[0].getDataBeanArray(KKW22601SFConst.KARI_ADD_INFO_LIST);
		childList = null;
		if(kariAddInfoList != null && parentMap != null && parentMap.containsKey("EFU0391B020CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EFU0391B020CBSMsg1List");
			
			for(int i = 0; i < childList.size(); i++)
			{
				X31SDataBeanAccess subbean = null;
				if(kariAddInfoList.getCount() - 1 >= i)
				{
					subbean = kariAddInfoList.getDataBean(i);
				}
				else
				{
					subbean = kariAddInfoList.addDataBean();
				}
				
				if (subbean == null)
				{
					continue;
				}
				
				HashMap childMap = (HashMap)childList.get(i);
				
				if (childMap != null)
				{
					// ステータス情報を作成する
					String kr_mskm_save_flg = (String)childMap.get("kr_mskm_save_flg");				// 仮申込保存フラグ
					String kr_add_save_flg = (String)childMap.get("kr_add_save_flg");				// 仮登録保存フラグ
					
					String stat = "";
					
					// 仮申込保存フラグ:"1"、仮登録保存フラグ:"1"の場合
					if ("1".equals(kr_mskm_save_flg) && "1".equals(kr_add_save_flg))
					{
						stat = "仮申込+プレ登録";
					}
					// 仮申込保存フラグ:"1"、仮登録保存フラグ:"1以外"の場合
					else if ("1".equals(kr_mskm_save_flg) && !"1".equals(kr_add_save_flg))
					{
						stat = "仮申込";
					}
					// 仮申込保存フラグ:"1以外"、仮登録保存フラグ:"1"の場合
					else if (!"1".equals(kr_mskm_save_flg) && "1".equals(kr_add_save_flg))
					{
						stat = "プレ登録";
					}
					
					// 仮登録一覧情報.登録年月日 ← 仮申込一覧照会マップ.仮申込情報一覧照会明細.登録年月日
					subbean.sendMessageString(KKW22601SFConst.L_STAT_02, X31CWebConst.DATABEAN_SET_VALUE, stat);
					// 仮登録一覧情報.登録年月日 ← 仮申込一覧照会マップ.仮申込情報一覧照会明細.登録年月日
					subbean.sendMessageString(KKW22601SFConst.L_ADD_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("add_ymd"));
					// 仮登録一覧情報.最終更新年月日 ← 仮申込一覧照会マップ.仮申込情報一覧照会明細.更新年月日
					subbean.sendMessageString(KKW22601SFConst.L_LAST_UPD_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("upd_ymd"));
					// 仮登録一覧情報.ｅｏＩＤ ← 仮申込一覧照会マップ.仮申込情報一覧照会明細.ｅｏＩＤ
					subbean.sendMessageString(KKW22601SFConst.L_EO_ID_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("eoid"));
					// 仮登録一覧情報.契約者氏名／法人名 ← 仮申込一覧照会マップ.仮申込情報一覧照会明細.お客様名
					subbean.sendMessageString(KKW22601SFConst.L_KEISHA_NM_HOJIN_NM_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_nm"));
					// 仮登録一覧情報.契約者氏名／法人名（カナ） ← 仮申込一覧照会マップ.仮申込情報一覧照会明細.お客様カナ名
					subbean.sendMessageString(KKW22601SFConst.L_KEISHA_NM_HOJIN_KANA_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_kana"));
					// 仮登録一覧情報.契約者電話番号 ← 仮申込一覧照会マップ.仮申込情報一覧照会明細.契約者電話番号
					subbean.sendMessageString(KKW22601SFConst.L_KEISHA_TELNO_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_telno"));
					
					// 住所情報を作成する
					String kaisen_place_state_city = (String)childMap.get("kaisen_place_state_city");		// 回線場所府県市区町村
					String kaisen_place_azcho = (String)childMap.get("kaisen_place_azcho");					// 回線場所字丁目
					String kaisen_place_bnchigo = (String)childMap.get("kaisen_place_bnchigo");				// 回線場所番地号
					String kaisen_place_adrttm = (String)childMap.get("kaisen_place_adrttm");				// 回線場所住所補記・建物名
					String kaisen_place_adrrm = (String)childMap.get("kaisen_place_adrrm");					// 回線場所住所補記・部屋番号
					
					StringBuffer address = new StringBuffer();
					address.append(kaisen_place_state_city)
							.append(kaisen_place_azcho)
// ANK-4494-19-00 ADD START
							.append("　")
// ANK-4494-19-00 ADD END
							.append(kaisen_place_bnchigo)
							.append("　")
							.append(kaisen_place_adrttm)
							.append("　")
							.append(kaisen_place_adrrm)
							;
					
					// 仮登録一覧情報.住所 ← 結合した住所情報
					subbean.sendMessageString(KKW22601SFConst.L_ADDRESS_02, X31CWebConst.DATABEAN_SET_VALUE, address.toString());
					// 仮登録一覧情報.SYSID ← 仮申込一覧照会マップ.仮申込情報一覧照会明細.SYSID
					subbean.sendMessageString(KKW22601SFConst.L_SYSID_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sysid"));
					// ANK-4231-12-00 ADD START
					// 仮登録一覧情報.申込書番号 ← 仮申込一覧照会マップ.仮申込情報一覧照会明細.申込書番号
					subbean.sendMessageString(KKW22601SFConst.L_UKE_NO_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mskmsho_no"));
					// ANK-4231-12-00 ADD END
					// ANK-4645-00-00 ADD START
					// 仮登録一覧情報.特殊配線フラグ ← 仮申込一覧照会マップ.仮申込情報一覧照会明細.特殊配線フラグ
					subbean.sendMessageString(KKW22601SFConst.L_TOKUSHU_HAISEN_FLG_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tokushu_haisen_flg"));
					// ANK-4645-00-00 ADD END
				}
			}
		}
		return bean;
	}


}