/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0182_KKSV0182OPDBMapper
*	ソースファイル名：KKSV0182_KKSV0182OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年04月11日
*＜機能概要＞
*	BP（利用場所情報登録）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/04/11	FJ		新規作成
*   v4.00.00    2012/09/10  FJ）岡野    【ANK-0384-00-00】契約者住所を利用場所住所で上書きを行う機能の作成対応
*   v4.00.00    2012/09/15  FJ）岡野    【ANK-0519-00-00】マンション親機器対応
*   v4.01.00    2012/10/31  FJ) 薄出    【IT1-2012-0001640】住所手動入力対応
*   v16.00.00   2015/07/18  FJ）藤田    【ANK-2480-00-00】新電力対応
*	v34.00.00	2017/10/12	FJ) 岡村	【ANK-3210-00-00】新電力 STEP3
*   v73.00.00	2024/10/18	FJ) 吉田あ	【ANK-4427-00-00】NTT卸対応
**********************************************************************/
package eo.web.webview.mapping;

import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.ADSL_EACCESS;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.KAISEN_AD_CHG_FLG_ARI;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.KAISEN_AD_CHG_FLG_NASI;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.KISN_KEISHA_AD_SAI_ARI;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.KISN_KEISHA_AD_SAI_NON;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.KISN_KKK_SEIRI_CHU;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.KISN_KKK_SEIRI_ZUMI;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.MSKM_FLG_SHINKI;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.MSKM_KIND_ADSL;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.MSKM_KIND_HOME;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.MSKM_KIND_MOBILE;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.getIdoDiv;

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.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKCommonUtil;
import eo.web.webview.KKW00121SF.KKW00121SFConst;
import eo.web.webview.common.JKKKeiNewCmnLogicUtil;

/**
 * DataBean-BPマッピングをする。
 * @author 富士通
 */
public class KKSV0182_KKSV0182OPDBMapper
{
	
	/**
	 * コンストラクタ
	 */
	public KKSV0182_KKSV0182OPDBMapper()
	{
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap データ出力先マップ
	 * @param func_code　機能コード
	 * @return データ格納マップ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV018201CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) throws Exception
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}

		ArrayList list = null;
		int svcCnt = 0;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 機器送付先チェック実行フラグ
		parentMap.put("kkshs_chk_run_flg", false);
		
		// 契約者情報の住所との差異 → サービス契約回線内訳登録マップ.回線場所_契約者住所差異フラグ
		//   差異なし:0、差異あり:1
		if(isDifferentAd(bean[0]))
		{
			parentMap.put("kaisen_plc_ksh_ad_sai_flg", KISN_KEISHA_AD_SAI_NON);
		}
		else
		{
			parentMap.put("kaisen_plc_ksh_ad_sai_flg", KISN_KEISHA_AD_SAI_ARI);
		}
		
		// 利用場所−電話番号 → サービス契約回線内訳登録マップ.回線場所電話番号
		parentMap.put("kaisen_place_telno", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_TELNO, X31CWebConst.DATABEAN_GET_VALUE));

		//↓↓↓ 【IT1-2012-0001640】住所手動入力対応 FJ)薄出
		// 利用場所−住所コード → サービス契約回線内訳登録マップ.回線場所住所コード
		parentMap.put("kaisen_place_ad_cd", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_AD_CD, X31CWebConst.DATABEAN_GET_VALUE));
		//↑↑↑ 【IT1-2012-0001640】住所手動入力対応 FJ)薄出

		// 利用場所−郵便番号（前） ＋ 利用場所−郵便番号（後） → サービス契約回線内訳登録マップ.回線場所郵便番号
		parentMap.put("kaisen_place_pcd", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_PCD_BF, X31CWebConst.DATABEAN_GET_VALUE)
										+ bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_PCD_AF, X31CWebConst.DATABEAN_GET_VALUE));
		// 利用場所−都道府県 → サービス契約回線内訳登録マップ.回線場所都道府県名
		parentMap.put("kaisen_place_state_nm", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_STATE_NM, X31CWebConst.DATABEAN_GET_VALUE));
		// 利用場所−市区町村 → サービス契約回線内訳登録マップ.回線場所市区町村名
		parentMap.put("kaisen_place_city_nm", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_CITY_NM, X31CWebConst.DATABEAN_GET_VALUE));
		// 利用場所−大字通称名 → サービス契約回線内訳登録マップ.回線場所大字通称名
		parentMap.put("kaisen_place_oaztsu_nm", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_OAZTSU_NM, X31CWebConst.DATABEAN_GET_VALUE));
		// 利用場所−字町名 → サービス契約回線内訳登録マップ.回線場所字丁目名
		parentMap.put("kaisen_place_azcho_nm", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_AZCHO_NM, X31CWebConst.DATABEAN_GET_VALUE));
		// 利用場所−番地・号 → サービス契約回線内訳登録マップ.回線場所番地号
		parentMap.put("kaisen_place_bnchigo", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_BNCHIGO, X31CWebConst.DATABEAN_GET_VALUE));
		// 利用場所−建物名等 → サービス契約回線内訳登録マップ.回線場所住所補記・建物名
		parentMap.put("kaisen_place_adrttm", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_ADRTTM, X31CWebConst.DATABEAN_GET_VALUE));
		// 利用場所−部屋番号等 → サービス契約回線内訳登録マップ.回線場所住所補記・部屋番号
		parentMap.put("kaisen_place_adrrm", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_ADRRM, X31CWebConst.DATABEAN_GET_VALUE));

		//↓↓↓ 【IT1-2012-0001640】住所手動入力対応 FJ)薄出
		// 住所チェックレベル２ → サービス契約回線内訳登録マップ.回線場所住所チェックレベル
		parentMap.put("kisn_ad_chk_lv", JKKStrConst.AD_CHK_LV2);
		//↑↑↑ 【IT1-2012-0001640】住所手動入力対応 FJ)薄出

		// 設置位置−区画整理中 → サービス契約回線内訳登録マップ.回線場所区画整理中フラグ
		if(bean[0].sendMessageBoolean(KKW00121SFConst.KISN_PLC_KKK_SEIRI_CHU_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{	// チェックあり（"1":固定値）
			parentMap.put("kisn_plc_kkk_seiri_chu_flg", KISN_KKK_SEIRI_CHU);
		}
		else
		{	// チェックなし（"0":固定値）
			parentMap.put("kisn_plc_kkk_seiri_chu_flg", KISN_KKK_SEIRI_ZUMI);
		}
		
		String mskmKind = bean[0].sendMessageString(KKW00121SFConst.MSKM_KIND, X31CWebConst.DATABEAN_GET_VALUE);
		String adFix = JKKStrConst.CD00467_AD_FIX;	// 確定
		String kaisenAdFix = JKKStrConst.CD00467_AD_FIX;	// 確定
		
		// 申込種類がホームタイプの場合のみ、設置位置情報を取得する。
		if (MSKM_KIND_HOME.equals(mskmKind))
		{
			// 設置位置−利用場所住所確定 → サービス契約回線内訳登録マップ.お客様申告住所未確定フラグ
			if (JKKStrConst.CD00734_MI_FIX.equals(bean[0].sendMessageString(KKW00121SFConst.KISN_PLACE_AD_FIX_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// 決まっていない
				adFix = JKKStrConst.CD00467_AD_MI_FIX;
			}
			
			// 設置位置−形態 → サービス契約回線内訳登録マップ.住所形態コード
			parentMap.put("ad_form_cd", bean[0].sendMessageString(KKW00121SFConst.AD_FORM_CD, X31CWebConst.DATABEAN_GET_VALUE));
			
			// 設置位置‐集合住宅入居階数コード → サービス契約回線内訳登録マップ.集合住宅入居階数コード
			parentMap.put("shugj_nyukyo_flr_cnt_cd", bean[0].sendMessageString(KKW00121SFConst.SHUGJ_NYUKYO_FLR_CNT_CD, X31CWebConst.DATABEAN_GET_VALUE));
			
			//**********↓UI残4,10,605**********
			// 竣工予定年月の設定
			String shunko_rsv_y = bean[0].sendMessageString(KKW00121SFConst.SHUNKO_RSV_YMD_Y, X31CWebConst.DATABEAN_GET_VALUE);
			String shunko_rsv_m = bean[0].sendMessageString(KKW00121SFConst.SHUNKO_RSV_YMD_M, X31CWebConst.DATABEAN_GET_VALUE);
			String shunko_rsv_ymd = shunko_rsv_y + shunko_rsv_m;
			// 設置位置−竣工予定が未入力の場合、日は設定しない
			if (!JKKCommonUtil.isNull(shunko_rsv_ymd))
			{
				// 設置位置−竣工予定（年月日） → サービス契約回線内訳登録マップ.竣工予定年月日
				parentMap.put("shunko_rsv_ymd", shunko_rsv_ymd + "01");
			}
			//**********↑UI残4,10,605**********
			
			if(bean[0].sendMessageBoolean(KKW00121SFConst.AD_MI_FIX_SETTE, X31CWebConst.DATABEAN_GET_VALUE))
			{	// 住所未確定設定が未設定の場合
				kaisenAdFix = JKKStrConst.CD00467_AD_MI_FIX;	// 未確定
			}
			
			// 回線提供会社コード → サービス契約回線内訳登録マップ.回線提供会社コード
			parentMap.put("kaisen_tk_comp_cd", JKKStrConst.CD00092_KOPT);
		}
		else if(MSKM_KIND_ADSL.equals(mskmKind))
		{
			// 05（その他） → サービス契約回線内訳登録マップ.住所形態コード
			parentMap.put("ad_form_cd", JKKStrConst.CD00627_05);
			// サービス契約回線内訳登録マップ.回線提供会社コード
			
			String corpCd = null;
			String adslFlg = bean[0].sendMessageString(KKW00121SFConst.EOADSL_EACCESS_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			if(ADSL_EACCESS.equals(adslFlg))
			{	// eAccess
				corpCd = JKKStrConst.CD00092_EACCESS;
			}
			else
			{	// フレッツ
				corpCd = JKKStrConst.CD00092_NTT_NISI_NHN;
			}
			
			parentMap.put("kaisen_tk_comp_cd", corpCd);
			
			if(bean[0].sendMessageBoolean(KKW00121SFConst.AD_MI_FIX_SETTE, X31CWebConst.DATABEAN_GET_VALUE))
			{	// 住所未確定設定が未設定の場合
				kaisenAdFix = JKKStrConst.CD00467_AD_MI_FIX;	// 未確定
			}
		}
		else
		{	// マンション・メゾンの場合
			// 設置位置−形態("02"固定) → サービス契約回線内訳登録マップ.住所形態コード
			parentMap.put("ad_form_cd", JKKStrConst.CD00627_02);
			
			// 回線提供会社コード → サービス契約回線内訳登録マップ.回線提供会社コード
			parentMap.put("kaisen_tk_comp_cd", JKKStrConst.CD00092_KOPT);
			
			if(bean[0].sendMessageBoolean(KKW00121SFConst.AD_MI_FIX_SETTE, X31CWebConst.DATABEAN_GET_VALUE))
			{	// 住所未確定設定が未設定の場合
				kaisenAdFix = JKKStrConst.CD00467_AD_MI_FIX;	// 未確定
			}
		}
		
		// 回線場所住所未確定フラグ
		parentMap.put("kisn_plc_ad_mi_fix_flg", kaisenAdFix);
		
		// お客様申告住所未確定フラグ
		parentMap.put("cust_skk_ad_mi_fix_flg", adFix);

		//**********↓UI残-760**********
		// 入居予定日
		String nyukyoRsvYmdY = bean[0].sendMessageString(KKW00121SFConst.NYUKYO_RSV_YMD_Y , X31CWebConst.DATABEAN_GET_VALUE);
		//**********↓UI残4,10,605**********
		String nyukyoRsvYmdM = bean[0].sendMessageString(KKW00121SFConst.NYUKYO_RSV_YMD_M , X31CWebConst.DATABEAN_GET_VALUE);
		String nyukyoRsvYmdD = bean[0].sendMessageString(KKW00121SFConst.NYUKYO_RSV_YMD_D , X31CWebConst.DATABEAN_GET_VALUE);
		//**********↑UI残4,10,605**********
		String nyukyoRsvYmd = nyukyoRsvYmdY + nyukyoRsvYmdM + nyukyoRsvYmdD;
		parentMap.put("nyukyo_rsv_ymd", nyukyoRsvYmd);
		
		// 入居予定−メモ
		parentMap.put("kisn_plc_hsk_memo", bean[0].sendMessageString(KKW00121SFConst.NYUKYO_RSV_MEMO, X31CWebConst.DATABEAN_GET_VALUE));		
		//**********↑UI残-760**********

		// 緯度 → サービス契約回線内訳登録マップ.緯度
		parentMap.put("lttd",  bean[0].sendMessageString(KKW00121SFConst.MAP_SYS_LTTD, X31CWebConst.DATABEAN_GET_VALUE));
		if ("".equals(parentMap.get("lttd")))
		{
			parentMap.put("lttd", "0.000000");
		}
		// 経度 → サービス契約回線内訳登録マップ.経度
		parentMap.put("lgtd",  bean[0].sendMessageString(KKW00121SFConst.MAP_SYS_LGTD, X31CWebConst.DATABEAN_GET_VALUE));
		if ("".equals(parentMap.get("lgtd")))
		{
			parentMap.put("lgtd", "0.000000");
		}
		
		// Ｘ座標 → サービス契約回線内訳登録マップ.Ｘ座標
		parentMap.put("xzahyo", bean[0].sendMessageString(KKW00121SFConst.MAP_SYS_XZAHYO, X31CWebConst.DATABEAN_GET_VALUE));
		// Ｙ座標 → サービス契約回線内訳登録マップ.Ｙ座標
		parentMap.put("yzahyo", bean[0].sendMessageString(KKW00121SFConst.MAP_SYS_YZAHYO, X31CWebConst.DATABEAN_GET_VALUE));

		if(!"2".equals(func_code))
		{	// チェックのみの場合は設定しない
			// 回線場所住所コード → サービス契約回線内訳登録マップ.回線場所住所コード
			parentMap.put("kaisen_place_ad_cd", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_AD_CD, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// 申込サービスの種類（ネット）
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOH_NET_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			// 光ネット申込
			parentMap.put("mskm_svc_net", "1");
			svcCnt++;
		}
		else
		{
			// 光ネット申込
			parentMap.put("mskm_svc_net", "0");
		}
		
		// 申込サービスの種類（電話）
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOH_TEL_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			// 光電話申込
			parentMap.put("mskm_svc_tel", "1");
			svcCnt++;
		}
		else
		{
			// 光電話申込
			parentMap.put("mskm_svc_tel", "0");
		}

		// 申込サービスの種類（テレビ）
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOH_TV_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			// 光テレビ申込
			parentMap.put("mskm_svc_tv", "1");
			svcCnt++;
		}
		else
		{
			// 光テレビ申込
			parentMap.put("mskm_svc_tv", "0");
		}
		

		// 申込サービスの種類（ＡＤＳＬ）
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOADSL_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			// ＡＤＳＬ申込
			parentMap.put("mskm_svc_adsl", "1");
			svcCnt++;
		}
		else
		{
			// ＡＤＳＬ申込
			parentMap.put("mskm_svc_adsl", "0");
		}
		
		// 請求書用部屋番号 → サービス契約回線内訳登録マップ.請求書用回線場所住所部屋番号
		boolean seikyusYoRmNoDspCtlFlg = bean[0].sendMessageBoolean(KKW00121SFConst.SEIKYUS_YO_RM_NO_DSP_CTL_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		if (seikyusYoRmNoDspCtlFlg)
		{
			parentMap.put("sks_yo_kisn_place_ad_rm_no", bean[0].sendMessageString(KKW00121SFConst.SEIKYUS_YO_RM_NO, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// 新規申込
		if(MSKM_FLG_SHINKI.equals(bean[0].sendMessageString(KKW00121SFConst.MSKM_SBT_CD, X31CWebConst.DATABEAN_GET_VALUE))
				&& !JPCModelConstant.FUNC_CD_2.equals(func_code))
		{
			// ADSL以外かつモバイル以外
			if(!MSKM_KIND_ADSL.equals(mskmKind) && !MSKM_KIND_MOBILE.equals(mskmKind))
			{
				// 上書予定設定 → サービス契約回線内訳登録マップ.請求書送付先住所変更有無
				boolean kaisenAdChgFlg = bean[0].sendMessageBoolean(KKW00121SFConst.KAISEN_AD_CHG_FLG, X31CWebConst.DATABEAN_GET_VALUE);
				String sksShsAdChgUm = "";
				if(kaisenAdChgFlg)
				{	// チェックあり（"1":固定値）
					sksShsAdChgUm = KAISEN_AD_CHG_FLG_ARI;
				}
				else
				{	// チェックなし（"0":固定値）
					sksShsAdChgUm = KAISEN_AD_CHG_FLG_NASI;
				}
				
				parentMap.put("sks_shs_ad_chg_um", sksShsAdChgUm);
				
				// 上書予定日 → サービス契約回線内訳登録マップ.請求書送付先住所変更希望年月日
				String kaisenAdChgRsvYmdY = bean[0].sendMessageString(KKW00121SFConst.KAISEN_AD_CHG_RSV_YMD_Y, X31CWebConst.DATABEAN_GET_VALUE);
				String kaisenAdChgRsvYmdM = bean[0].sendMessageString(KKW00121SFConst.KAISEN_AD_CHG_RSV_YMD_M, X31CWebConst.DATABEAN_GET_VALUE);
				String kaisenAdChgRsvYmdD = bean[0].sendMessageString(KKW00121SFConst.KAISEN_AD_CHG_RSV_YMD_D, X31CWebConst.DATABEAN_GET_VALUE);
				
				String kaisenAdChgRsvYmd = kaisenAdChgRsvYmdY + kaisenAdChgRsvYmdM + kaisenAdChgRsvYmdD;
				
				parentMap.put("sks_shs_ad_chg_kibo_ymd", kaisenAdChgRsvYmd);
				
				// 上書予定設定 → サービス契約回線内訳登録マップ.契約者住所変更有無
				parentMap.put("kshad_chg_um", sksShsAdChgUm);
				
				// 上書予定日 → サービス契約回線内訳登録マップ.契約者住所変更希望年月日
				parentMap.put("kshad_chg_kibo_ymd", kaisenAdChgRsvYmd);
			}
		}
		
		// マンション親機器有無
		parentMap.put("mansion_oya_kiki_um", bean[0].sendMessageString(KKW00121SFConst.MANSION_OYA_KIKI_UM, X31CWebConst.DATABEAN_GET_VALUE));

		if(parentMap.containsKey("EKK0251D010CBSMsg1List"))
		{
			list = (ArrayList)parentMap.get("EKK0251D010CBSMsg1List");
		}
		else
		{
			list = new ArrayList();
		}

		HashMap childMap = null;

		// childMapの初期化
		childMap = new HashMap();

		for(int i = 0; i < svcCnt; i++)
		{

			childMap = null;
			if(list.size() - 1 >= i)
			{
				childMap = (HashMap)list.get(i);
			}
			else
			{
				childMap = new HashMap();
			}

			list.add(childMap);
		}
		
		parentMap.put("EKK0251D010CBSMsg1List", list);

		outputMap.put("KKSV018201CC", parentMap);

		return outputMap;
	}

	/**
	 * 利用場所情報の住所と契約者情報の住所を比較します。
	 * @param bean X31SDataBeanAccess
	 * @return 差異あり：false、差異なし：true
	 */
	private boolean isDifferentAd(X31SDataBeanAccess bean)
	{
		String[][] keys = {
				{KKW00121SFConst.KAISEN_PLACE_PCD_BF, KKW00121SFConst.KEISHA_PCD_BF}
				, {KKW00121SFConst.KAISEN_PLACE_PCD_AF, KKW00121SFConst.KEISHA_PCD_AF}
				, {KKW00121SFConst.KAISEN_PLACE_STATE_NM, KKW00121SFConst.KEISHA_STATE_NM}
				, {KKW00121SFConst.KAISEN_PLACE_CITY_NM, KKW00121SFConst.KEISHA_CITY_NM}
				, {KKW00121SFConst.KAISEN_PLACE_OAZTSU_NM, KKW00121SFConst.KEISHA_OAZTSU_NM}
				, {KKW00121SFConst.KAISEN_PLACE_AZCHO_NM, KKW00121SFConst.KEISHA_AZCHO_NM}
				, {KKW00121SFConst.KAISEN_PLACE_BNCHIGO, KKW00121SFConst.KEISHA_BNCHIGO}
				, {KKW00121SFConst.KAISEN_PLACE_ADRTTM, KKW00121SFConst.KEISHA_ADRTTM}
				, {KKW00121SFConst.KAISEN_PLACE_ADRRM, KKW00121SFConst.KEISHA_ADRRM}
		};
		
		for(String[] key : keys)
		{
			if(!bean.sendMessageString(key[0], X31CWebConst.DATABEAN_GET_VALUE)
					.equals(bean.sendMessageString(key[1], X31CWebConst.DATABEAN_GET_VALUE)))
			{
				return false;
			}
		}
		
		return true;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：照査前登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param mskmMap　KKSV0081_照査前登録初期表示の検索結果
	 * @return 返却用マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV018204SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, HashMap mskmMap)
	{
		
		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);
		
		String keySvcKeiUcwkNo = "";
		
		HashMap preMap = (HashMap)mskmMap.get("KKSV008110CC");
		if (preMap != null)
		{
			ArrayList childList = null;
			childList = (ArrayList)preMap.get("mskm_svc_kei_ucwk_list");
			if(childList != null)
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				if (childMap.get("kk0251_svc_kei_kaisen_ucwk_no") != null)
				{
					keySvcKeiUcwkNo = (String)childMap.get("kk0251_svc_kei_kaisen_ucwk_no");
				}
			}
		}
		
		if (!"".equals(keySvcKeiUcwkNo))
		{
			// サービス契約回線内訳番号 → サービス契約回線内訳同一Ｍ−ＩＤ部屋番号一覧照会マップ.ＫＥＹ＿サービス契約回線内訳番号
			parentMap.put("key_svc_kei_ucwk_no", keySvcKeiUcwkNo);
		}
		// 請求書用部屋番号 → サービス契約回線内訳同一Ｍ−ＩＤ部屋番号一覧照会マップ.ＫＥＹ＿請求書用回線場所住所部屋番号
		parentMap.put("key_sks_yo_kisn_place_ad_rm_no", bean[0].sendMessageString(KKW00121SFConst.SEIKYUS_YO_RM_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// Ｍ−ＩＤ → サービス契約回線内訳同一Ｍ−ＩＤ部屋番号一覧照会マップ.ＫＥＹ＿マンションID
		parentMap.put("key_mansion_id", bean[0].sendMessageString(KKW00121SFConst.MID, X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約回線内訳同一Ｍ−ＩＤ部屋番号一覧照会一覧照会明細
		parentMap.put("EKK0251B505CBSMsg1List", new ArrayList<HashMap>());

		outputMap.put("KKSV018204SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：照査前登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opeDate 運用日付
	 * @return 返却用マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV018205SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate)
	{
		
		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);
		
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOADSL_FLG, X31CWebConst.DATABEAN_GET_VALUE)
				&& JKKKeiNewCmnLogicUtil.EOADSL_EACCESS.equals(bean[0].sendMessageString(KKW00121SFConst.EOADSL_EACCESS_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// ＫＥＹ＿郵便番号
			parentMap.put("key_pcd", bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_PCD_BF, X31CWebConst.DATABEAN_GET_VALUE)
					+ bean[0].sendMessageString(KKW00121SFConst.KAISEN_PLACE_PCD_AF, X31CWebConst.DATABEAN_GET_VALUE));
			// ＫＥＹ＿基準日
			parentMap.put("key_ymd", opeDate);
		}

		outputMap.put("KKSV018205SC", parentMap);
						
		return outputMap;
	}

// ANK-2480-00-00 2015/07/16 ADD START	
	/**
	 * サービス契約グループ設定登録の上りマッピング。
	 * @param bean 申込新規登録画面
	 * @param outputMap 出力先マップ
	 * @param mskmInfoMap 初回照会マップ
	 * @param svcKeiUpdFlgs 制御マップ
	 * @return 出力先マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV018202CC(
			X31SDataBeanAccess[] bean,
			HashMap outputMap,
			HashMap mskmMap,
			String funcCode)
	{
		if (null == bean)
		{
			return null;
		}
		
		if (1 != bean.length)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		outputMap.put("KKSV018202CC", parentMap);

		// 同一利用場所・eo電気のプルダウンがあるかの判定（ネットサービスの申し込みかをチェック）
		// プルダウンが出ていなければ、サービス契約グループ設定登録処理を呼び出さない
		Boolean netFlg = (Boolean)bean[0].sendMessageBoolean(KKW00121SFConst.EOH_NET_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3210-00-00 ADD START
		Boolean telFlg = (Boolean)bean[0].sendMessageBoolean(KKW00121SFConst.EOH_TEL_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		Boolean tvFlg = (Boolean)bean[0].sendMessageBoolean(KKW00121SFConst.EOH_TV_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3210-00-00 ADD END
		// ANK-3210-00-00 MOD START
//		if (netFlg == null || !netFlg)
		if ((netFlg == null || !netFlg) && (telFlg == null || !telFlg) && (tvFlg == null || !tvFlg))
		// ANK-3210-00-00 MOD END
		{
			return outputMap;
		}
		
		// 異動区分
		String ido_div      = getIdoDiv(bean[0].sendMessageString(KKW00121SFConst.MSKM_SBT_CD, X31CWebConst.DATABEAN_GET_VALUE));

		parentMap.put("ido_div", ido_div);

		// 共通情報のマッピング
		parentMap.put("func_code", funcCode);

		X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray(KKW00121SFConst.KAISEN_SAME_PLC_EOELEC_LIST);
		X31SDataBeanAccess elcPldwnBean = arraybean.getDataBean(0);
		
		String selectedCd = elcPldwnBean.sendMessageString(KKW00121SFConst.KAISEN_SAME_PLC_EOELEC_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String pldwnValue = "";
		// コードタイプコード値リストの件数
		Integer count = (Integer)elcPldwnBean.sendMessage(KKW00121SFConst.KAISEN_SAME_PLC_EOELEC_CD_LIST, X31CWebConst.DATABEAN_GET_COUNT);
		
		for (int j = 0; j < count.intValue(); j++)
		{
			if (selectedCd.equals(String.valueOf(j)))
			{
				pldwnValue = elcPldwnBean.sendMessageString(KKW00121SFConst.KAISEN_SAME_PLC_EOELEC_NM_LIST, X31CWebConst.DATABEAN_GET_VALUE, j);
				break;
			}
		}
		
		parentMap.put("ITENS_EOELEC_SVKEI_NO", pldwnValue);

		String kaisenUcwkNo = "";
		
		HashMap preMap = (HashMap)mskmMap.get("KKSV008110CC");
		if (preMap != null)
		{
			ArrayList childList = null;
			childList = (ArrayList)preMap.get("mskm_svc_kei_ucwk_list");
			if (childList != null)
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				if (childMap.get("kk0251_svc_kei_kaisen_ucwk_no") != null)
				{
					kaisenUcwkNo = (String)childMap.get("kk0251_svc_kei_kaisen_ucwk_no");
				}
			}
		}
		
		if (!"".equals(kaisenUcwkNo))
		{
			// サービス契約回線内訳番号
			parentMap.put("itens_svkei_kaisen_ucwk_no", kaisenUcwkNo);
		}
		
		return outputMap;
	}
// ANK-2480-00-00 2015/07/16 ADD END
	// ANK-4427-00-00 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：照査前登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV018203SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(bean == null || bean.length != 1)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// WAO住所番地メモ → サービス契約＜eo光ネット＞登録マップ.WAO住所番地メモ
		parentMap.put("wao_ad_bnchi_memo", bean[0].sendMessageString(KKW00121SFConst.WAO_AD_BNCHI_MEMO, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV018203SC", parentMap);

		return outputMap;
	}
	// ANK-4427-00-00 ADD END
}