/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：KKSV1032_KKSV1032OPDBMapper
 *	ソースファイル名：KKSV1032_KKSV1032OPDBMapper.java
 *	作成者			：FJ
 *	日付			：2024年04月11日
 *＜機能概要＞
 *	BP（乗り換え元情報照会）へのＤ−Ｂマッピングクラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v71.00.00	2024/04/11	FJ			新規作成
 *	v71.00.01	2024/08/06	FJ)舘山		IT1-2024-0000025_PLCモデムの判定条件変更他
 *	v71.00.02	2024/08/19	FJ)舘山		IT1-2024-0000028_乗り換え元の利用場所住所が変更されない
 *	v71.00.03	2024/08/22	FJ)舘山		IT1-2024-0000031_乗り換え元を変更しても機器送付先住所が更新されない
 *	v72.00.00	2024/08/29	FJ)森下		【ANK-4577-00-00】eo光ネット「シンプルプラン」追加対応(Step2)
 **********************************************************************/
package eo.web.webview.mapping;


import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.cnvAdFormAdFormSbtCd;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
import eo.web.webview.KKW00101SF.KKW00101SFConst;
import eo.web.webview.KKW00121SF.KKW00121SFConst;
import eo.web.webview.common.JKKWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV1032_KKSV1032OPDBMapper {

	/**
	 * コンストラクタ
	 */
	public KKSV1032_KKSV1032OPDBMapper(){
	}


	/**
	 * 上りマッピング
	 * @param bean　[0]：
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV103201CC(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_svc_kei_no", bean[0].sendMessageString(KKW00101SFConst.NRKEMT_SVKEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV103201CC", parentMap);

		return outputMap;
	}
	
	/**
	 * 上りマッピング
	 * @param bean
	 * @param outputMap
	 * @param func_code
	 * @return
	 */
	public HashMap setKKSV103201CC_KKW00121(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_svc_kei_no", bean[0].sendMessageString(KKW00121SFConst.NRKEMT_SVKEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV103201CC", parentMap);

		return outputMap;		
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV103201CC(X31SDataBeanAccess[] bean, HashMap outputMap){
		
		HashMap parentMap = null;
		
		if(outputMap.containsKey("KKSV103201CC")){
			parentMap = (HashMap)outputMap.get("KKSV103201CC");
		}
		
		List<?> list = (List<?>)parentMap.get("KK0081_NRKEMT_INFO_List");
		
		if (list.size() > 0)
		{
			Map<?,?> childMap = (Map<?,?>)list.get(0);
			
			// 利用場所住所
			// PON種別コード
			bean[0].sendMessageString(KKW00101SFConst.PON_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("pon_sbt_cd")));
			
// ▽▽▽ IT1-2024-0000028 Modify START
//			// 利用場所−郵便番号（前）
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_PCD_BF, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_pcd")).substring(0, 3));
//			// 利用場所−郵便番号（後）
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_PCD_AF, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_pcd")).substring(3));
//			// 利用場所−住所コード
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_AD_CD, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_ad_cd")));
//			// 利用場所−都道府県
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_state_nm")));
//			// 利用場所−市区町村
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_city_nm")));
//			// 利用場所−大字通称名
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_OAZTSU_NM, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_oaztsu_nm")));
//			// 利用場所−字町名
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_azcho_nm")));
//			// 利用場所−番地・号
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_bnchigo")));
//			// 利用場所−建物名等
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_ADRTTM, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_adrttm")));
//			// 利用場所−部屋番号等
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_ADRRM, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_adrrm")));
//			// 利用場所−連番
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_RENBAN, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_renban")));
//			// 利用場所−電話番号
//			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_TELNO, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("kaisen_place_telno")));

			// 利用場所−郵便番号（前）
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_PCD_BF, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_pcd")).substring(0, 3)));
			// 利用場所−郵便番号（後）
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_PCD_AF, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_pcd")).substring(3)));
			// 利用場所−住所コード
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_AD_CD, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_ad_cd"))));
			// 利用場所−都道府県
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_state_nm"))));
			// 利用場所−市区町村
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_city_nm"))));
			// 利用場所−大字通称名
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_OAZTSU_NM, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_oaztsu_nm"))));
			// 利用場所−字町名
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_azcho_nm"))));
			// 利用場所−番地・号
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_bnchigo"))));
			// 利用場所−建物名等
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_ADRTTM, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_adrttm"))));
			// 利用場所−部屋番号等
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_ADRRM, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_adrrm"))));
			// 利用場所−連番
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_RENBAN, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_renban"))));
			// 利用場所−電話番号
			bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_TELNO, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(((String)childMap.get("kaisen_place_telno"))));
			// 住所形態コード
			bean[0].sendMessageString(KKW00101SFConst.AD_FORM_CD, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("ad_form_cd")));
// △△△ IT1-2024-0000028 Modify END
// ▽▽▽ IT1-2024-0000031 ADD START
			// 住所形態コードをリストに設定
			String adFormIndex = JKKWebCommon.convertIndex(bean[0], cnvAdFormAdFormSbtCd((String)childMap.get("ad_form_cd")), 
					KKW00101SFConst.AD_FORM_SBT_LIST, KKW00101SFConst.SELECT_CD_59, KKW00101SFConst.CD_LIST_59);
			X31SDataBeanAccess adFormBean = bean[0].getDataBeanArray(KKW00101SFConst.AD_FORM_SBT_LIST).getDataBean(0);
			adFormBean.sendMessageString(KKW00101SFConst.SELECT_CD_59, X31CWebConst.DATABEAN_SET_VALUE, adFormIndex);

			// 住所形態コードの値に応じて、階数を設定する
			if (JKKStrConst.CD00627_03.equals(childMap.get("ad_form_cd")) || JKKStrConst.CD00627_04.equals(childMap.get("ad_form_cd")))
			{
				String flrCntCd = (String)childMap.get("shugj_nyukyo_flr_cnt_cd");	// 集合住宅入居階数コード
				if (JKKStringUtil.isNullBlank(flrCntCd))
				{
					flrCntCd = (String)childMap.get("kodate_kcku_flr_cnt_cd");		// 戸建建築階数コード
				}
				// 集合住居入居階数コード
				bean[0].sendMessageString(KKW00101SFConst.SHUGJ_NYUKYO_FLR_CNT_CD, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(flrCntCd));
			}
			else
			{
				// 集合住居入居階数コード
				bean[0].sendMessageString(KKW00101SFConst.SHUGJ_NYUKYO_FLR_CNT_CD, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
// △△△ IT1-2024-0000031 ADD END
			
			// ルータレンタル設定
			if (childMap.containsKey("yusen_musen"))
			{
				String value = (String)childMap.get("yusen_musen");
					
				String routerRentalIndex = JKKWebCommon.convertIndex(bean[0], value, KKW00101SFConst.OP_ROUTER_RENTAL_LIST, 
						KKW00101SFConst.SELECT_CD_59, KKW00101SFConst.CD_LIST_59);
				
				X31SDataBeanAccess optionRuterRentalBean = bean[0].getDataBeanArray(KKW00101SFConst.OP_ROUTER_RENTAL_LIST).getDataBean(0);
				optionRuterRentalBean.sendMessageString(KKW00101SFConst.SELECT_CD_59, X31CWebConst.DATABEAN_SET_VALUE, routerRentalIndex);
			}
			// メッシュ・中継器設定
			if (childMap.containsKey("plc"))
			{
				String value = (String)childMap.get("plc");

				String plcRentalIndex = JKKWebCommon.convertIndex(bean[0],value,KKW00101SFConst.OP_PLC_RENTAL_LIST,
						KKW00101SFConst.SELECT_CD_59, KKW00101SFConst.CD_LIST_59);

				X31SDataBeanAccess optionPlcRentalBean = bean[0].getDataBeanArray(KKW00101SFConst.OP_PLC_RENTAL_LIST).getDataBean(0);
				optionPlcRentalBean.sendMessageString(KKW00101SFConst.SELECT_CD_59,X31CWebConst.DATABEAN_SET_VALUE, plcRentalIndex);
			}
			
			// 工事案件番号
			bean[0].sendMessageString(KKW00101SFConst.NET_EQUIP_RYUYO_MT_KJAK_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kojiak_no"));
	
			// 設備流用有無区分
// ▽▽▽ IT1-2024-0000025 Modify START
//			bean[0].sendMessageString(KKW00101SFConst.EQUIP_RYUYO_UM_KBN , X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("setubi_ruyo_kbn"));
			bean[0].sendMessageString(KKW00101SFConst.EQUIP_RYUYO_UM_KBN , X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("equip_ryuyo_kbn"));
// △△△ IT1-2024-0000025 Modify END
			// ANK-4577-00-00 ADD START
			// 乗換元ローゼット設置状態コード
			bean[0].sendMessageString(KKW00101SFConst.NRKEMT_ROZETT_CD , X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("rozett_stc_stat_cd"));
			// ANK-4577-00-00 ADD END
		}
		// ANK-4577-00-00 ADD START
		else
		{
			bean[0].sendMessageString(KKW00101SFConst.NRKEMT_ROZETT_CD , X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		// ANK-4577-00-00 ADD END
		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV103201CC_KKW00121(X31SDataBeanAccess[] bean, HashMap outputMap){
		
		HashMap parentMap = null;
		
		if(outputMap.containsKey("KKSV103201CC")){
			parentMap = (HashMap)outputMap.get("KKSV103201CC");
		}
		
		List<?> list = (List<?>)parentMap.get("KK0081_NRKEMT_INFO_List");
		
		if (list.size() > 0)
		{
			Map<?,?> childMap = (Map<?,?>)list.get(0);
			
			// 設備流用有無区分
// ▽▽▽ IT1-2024-0000025 Modify START
//			bean[0].sendMessageString(KKW00121SFConst.EQUIP_RYUYO_UM_KBN , X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("setubi_ruyo_kbn"));
			// ANK-4577-00-00 ADD START
			String equipRyuyoUmKbn = bean[0].sendMessageString(KKW00121SFConst.EQUIP_RYUYO_UM_KBN , X31CWebConst.DATABEAN_GET_VALUE);
			if (JKKStringUtil.isNullEmpty(equipRyuyoUmKbn))
			{
			// ANK-4577-00-00 ADD END
				bean[0].sendMessageString(KKW00121SFConst.EQUIP_RYUYO_UM_KBN , X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("equip_ryuyo_kbn"));
			// ANK-4577-00-00 ADD START
				bean[0].sendMessageString(KKW00121SFConst.NET_EQUIP_RYUYO_MT_KJAK_NO , X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kojiak_no"));
			}
			// ANK-4577-00-00 ADD END
// △△△ IT1-2024-0000025 Modify END
			// ANK-4577-00-00 ADD START
			// 乗換元ローゼット設置状態コード
			bean[0].sendMessageString(KKW00121SFConst.NRKEMT_ROZETT_CD , X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("rozett_stc_stat_cd"));
			// ANK-4577-00-00 ADD END
			
		}
		// ANK-4577-00-00 ADD START
		else
		{
			bean[0].sendMessageString(KKW00121SFConst.NRKEMT_ROZETT_CD , X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		// ANK-4577-00-00 ADD END
		return bean;
	}
}