/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0357_CKSV0357OPDBMapper
*	ソースファイル名：KKSV0357_CKSV0357OPDBMapper.java
*	作成者			：FJ)川田
*	日付			：2011年11月12日
*＜機能概要＞
*	BP（契約紐付変更登録_初期表示サービス）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/12	FJ)川田		新規作成
*	v4.00.00	2012/10/27	FJ）稲岡	【IT1-2012-0001472】対応
*	v4.00.01	2013/03/20	FJ）稲岡	【IT1-2013-0000496】対応 
*										 照査前登録画面から遷移時のサービス契約絞込処理削除
*	v8.00.00	2013/12/14	FJ）稲岡	【ANK-1584-00-00】対応 L2-MVNO(本体)
*	v8.00.01	2014/02/13	FJ）稲岡	【ST-2014-0000048】対応
*	v20.00.00	2015/11/04	FJ）宇野	【OM-2015-0001608】対応
**	v16.00.00	2015/06/22	FJ）頼経	【ANK-2480-00-00】新電力対応
*	v39.00.00	2018/10/30	FJ）大崎	【ANK-3478-00-00】eo光設備卸対応(サービス開始対応)
*	v45.00.00	2019/08/01	FJ)Dave		【ANK-3699-00-00】
*	v73.00.00	2024/10/09	FJ)辻中		【ANK-4427-00-00】NTT卸対応
**********************************************************************/
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.JZM0171Constant;
import eo.common.util.JKKStringUtil;
import eo.web.webview.KKW03601SF.KKW03601SFConst;
import eo.web.webview.common.JCKCommonConst;
import eo.web.webview.common.JKKCommonConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0357_KKSV0357OPDBMapper
{
	/** 業務パラメータID */
	private static final String KEY_GYOMU_PARAM_ID_WRIB_SVC_CD = "KK_FP_KEI_UM_JDG";
	
	/** 併合元サービス契約一覧結果無 */
	private static final String HEIGO_MT_SVC_KEI_IRN_RESULT_ZERO = "00";
	
	/**
	 * コンストラクタ
	 */
	public KKSV0357_KKSV0357OPDBMapper()
	{
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV035701SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(isNull(bean))
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// "KK_APLY_PSB_DAYS"(契約の適用開始可能日数) → 業務パラメータ取得マップ.ＫＥＹ＿業務パラメータID
		parentMap.put("key_work_param_id", "KK_APLY_PSB_DAYS");
		
		outputMap.put("KKSV035701SC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV035702SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(isNull(bean))
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess subbean = null;
		
		arraybean = bean[0].getDataBeanArray(KKW03601SFConst.CUST_KEI_HKTGI_LIST);
		subbean = arraybean.getDataBean(0);
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 併合元＿SYSID → お客様取得取得マップ.ＫＥＹ＿SYSID
		parentMap.put("key_sysid", getValue(subbean, KKW03601SFConst.SYSID_03));
		
		// 適用開始日 → お客様取得取得マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", getValue(bean[0], KKW03601SFConst.OPE_DATE));
		
		outputMap.put("KKSV035702SC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setWribSvcCdCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(isNull(bean))
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess subbean = null;
		
		arraybean = bean[0].getDataBeanArray(KKW03601SFConst.CUST_KEI_HKTGI_LIST);
		subbean = arraybean.getDataBean(0);
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// ＫＥＹ＿業務パラメータID
		parentMap.put("key_work_param_id", KEY_GYOMU_PARAM_ID_WRIB_SVC_CD);
		
		// 併合元＿SYSID → 割引サービス適用中件数取得一覧照会マップ.ＫＥＹ＿SYSID
		parentMap.put("key_sysid", getValue(subbean, KKW03601SFConst.SYSID_03));
		
		// 運用日 → 割引サービス適用中件数取得一覧照会マップ.ＫＥＹ＿サービス終了年月日
		parentMap.put("key_svc_endymd", getValue(bean[0], KKW03601SFConst.OPE_DATE));
		
		outputMap.put("WribSvcCdCC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV035704SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(isNull(bean))
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess subbean = null;
		
		arraybean = bean[0].getDataBeanArray(KKW03601SFConst.CUST_KEI_HKTGI_LIST);
		subbean = arraybean.getDataBean(0);
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 併合元＿SYSID → 併合元サービス契約一覧マップ.ＫＥＹ＿SYSID
		parentMap.put("key_sysid", getValue(subbean, KKW03601SFConst.SYSID_03));
		
		outputMap.put("KKSV035704SC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV035705SC(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", JZM0171Constant.CD00748);
		// 基準日 → 連絡条件取得マップ.ＫＥＹ＿基準日
		parentMap.put("key_stdardymd", bean[0].sendMessageString(KKW03601SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));

		
		outputMap.put("KKSV035705SC", parentMap);
		
		return outputMap;
	}
	
// ANK-3699-00-00対応 20190801 Dave ADD START
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV035706SC(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", JZM0171Constant.CD01745);
		// 基準日 → 連絡条件取得マップ.ＫＥＹ＿基準日
		parentMap.put("key_stdardymd", bean[0].sendMessageString(KKW03601SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE));

		
		outputMap.put("KKSV035706SC", parentMap);
		
		return outputMap;
	}
// ANK-3699-00-00対応 20190801 Dave ADD END
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * 
	 * @return outputMap 業務パラメータ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setTmpPayPrcAmntCC(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);
		
		// ＫＥＹ＿業務パラメータID
		parentMap.put("key_work_param_id", "KK_KEI_JOTO_PAY_PRC");
		
		outputMap.put("TmpPayPrcAmntCC", parentMap);
		
		return outputMap;
	}
	
/* ++++++++++ v8.00.01 追加開始 ++++++++++ */
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * 
	 * @return outputMap 業務パラメータ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setNonKisnCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}
		
		X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray(KKW03601SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess subbean = arraybean.getDataBean(0);
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 併合元＿SYSID → 併合元サービス契約一覧マップ.ＫＥＹ＿SYSID
		parentMap.put("key_sysid", getValue(subbean, KKW03601SFConst.SYSID_03));
		
		outputMap.put("NonKisnCC", parentMap);
		
		return outputMap;
	}
/* ++++++++++ v8.00.01 追加終了 ++++++++++ */
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV035701SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV035701SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV035701SC");
		}
		
		ArrayList childList = null;
		
		if(!isNull(parentMap) && parentMap.containsKey("EZM0321A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EZM0321A010CBSMsg1List");
			
			HashMap childMap = (HashMap)childList.get(0);
			
			// 適用開始日登録可能期間 ← 業務パラメータ取得マップ.業務パラメータ管理一意照会明細.業務パラメータ設定値
			if (!isNull(childMap))
			{
				setValue(bean[0], KKW03601SFConst.TSTA_ADD, (String)childMap.get("work_param_sette_value"));
			}
		}
		
		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV035702SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV035702SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV035702SC");
		}
		
		if(!isNull(parentMap) && parentMap.containsKey("ECK0011A010CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("ECK0011A010CBSMsg1List");
			
			if(!isNull(childList) && childList.size() > 0)
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				if(!isNull(childMap))
				{
					// 併合元＿SYSID ← お客様情報取得マップ.お客様一意照会明細.SYSID
					setValue(bean[0], KKW03601SFConst.MT_SYSID, (String)childMap.get("sysid"));
					// 併合元＿お客様名 ← お客様情報取得マップ.お客様一意照会明細.お客様名
					setValue(bean[0], KKW03601SFConst.MT_CUST_NM, (String)childMap.get("cust_nm"));
					// 併合元＿お客様カナ名 ← お客様情報取得マップ.お客様一意照会明細.お客様カナ名
					setValue(bean[0], KKW03601SFConst.MT_CUST_KANA, (String)childMap.get("cust_kana"));
					// 併合元＿eoID ← お客様情報取得マップ.お客様一意照会明細.eoID
					setValue(bean[0], KKW03601SFConst.MT_EOID, (String)childMap.get("eoid"));
					// 併合元＿契約者タイプ ← お客様情報取得マップ.お客様一意照会明細.契約者タイプコード
					setValue(bean[0], KKW03601SFConst.MT_KEISHA_TYPE_CD, (String)childMap.get("keisha_type_cd"));
// ANK-3478-00-00 ADD START 
					// 併合元＿パートナー会員フラグ ← パートナー会員判定結果
					setValue(bean[0], KKW03601SFConst.MT_PTNR_MEMBER_FLG,
							setPtnrMemberFlg((String)childMap.get("member_sbt_cd"), (String)childMap.get("orsjgs_cd")));
// ANK-3478-00-00 ADD END 
				}
			}
		}
		
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getWribSvcCdCC(X31SDataBeanAccess[] bean, HashMap outputMap){
		
		HashMap parentMap = null;
		if(outputMap.containsKey("WribSvcCdCC"))
		{
			parentMap = (HashMap)outputMap.get("WribSvcCdCC");
		}
		
		if(parentMap.containsKey("zm0321SetteValue"))
		{
			// 割引サービスコード ← JKKKeiHimoWribSvcCdCC.業務パラメータ設定値
			setValue(bean[0], KKW03601SFConst.WRIB_SVC_CD, (String)parentMap.get("zm0321SetteValue"));
		}
		
		return bean;
	}
	
/* ++++++++++ v8.00.01 変更開始 ++++++++++ */
	/**
	 * 下りマッピング
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV035704SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		boolean b005ZeroFlg = false;
		boolean b533ZeroFlg = false;
		
		//**************************************************************
		// ■併合処理対象
		// １．回線データ有
		//   @ネット
		//     "02":ｅｏ光ネットホームタイプ
		//     "03":ｅｏ光ネットメゾンタイプ
		//     "04":ｅｏ光ネットマンションタイプ
		//     "05":ｅｏＡＤＳＬ（ｅＡｃｃｅｓｓ）
		//     "06":ｅｏＡＤＳＬ（フレッツ）
		//   Aテレビ
		//   B電話
		// ２．回線無データ
		//   @ｍｉｎｅｏ
		//   Aeoメールアドレス
		//**************************************************************
		
		//**************************************************************
		// １．回線データ有
		//**************************************************************
		HashMap parentMap = null;
		X31SDataBeanAccess subbean = null;
		HashMap childMap = null;
		int recStyCnt = 0;
		
		if(outputMap.containsKey("KKSV035704SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV035704SC");
		}
		
		X31SDataBeanAccessArray listKKSV035704SC_svc_kei_info_list_EKK0081B005CBSMsg1List
			= bean[0].getDataBeanArray("サービス契約情報一覧リスト");
		
		if(!isNull(listKKSV035704SC_svc_kei_info_list_EKK0081B005CBSMsg1List)
			&& !isNull(parentMap) && parentMap.containsKey("EKK0081B005CBSMsg1List"))
		{
			ArrayList b005CBSMsgList = (ArrayList)parentMap.get("EKK0081B005CBSMsg1List");
			
			// 検索結果なし
			if(b005CBSMsgList.size() == 0)
			{
				b005ZeroFlg = true;
			}
			else
			{
				for(int i = 0; i < b005CBSMsgList.size(); i++)
				{
					childMap = (HashMap)b005CBSMsgList.get(i);
					
					// 併合処理対象データチェック（サービス契約ステータス）
					// "020":照査済
					// "030":締結済
					// "100":サービス提供中
					// "210":休止・中断中
					// "220":停止中
					if(!isChkStat((String)childMap.get("svc_kei_stat")))
					{
						continue;
					}
					
					// 併合処理対象データチェック（料金グループ）
					if(!isChkPrcGrp((String)childMap.get("prc_grp_cd_KK0081")))
					{
						// 以下は対象外(照査前から遷移時のみ併合処理対象)
						// "08":ｅｏモバイル（ＥＭ）
						// "09":ｅｏモバイル（ＵＱ−ＷｉＭＡＸ）
						continue;
					}
					
					subbean = listKKSV035704SC_svc_kei_info_list_EKK0081B005CBSMsg1List.addDataBean();
					
					// サービス契約情報一覧リスト ← 併合元サービス契約一覧マップ.併合元サービス契約一覧照会明細
					setRsltToBean(subbean, childMap, recStyCnt, false);
					
					recStyCnt++;
				}
			}
		}
		else
		{
			b005ZeroFlg = true;
		}
		
		//**************************************************************
		// ２．回線データ無
		//**************************************************************
		if(outputMap.containsKey("NonKisnCC"))
		{
			parentMap = (HashMap)outputMap.get("NonKisnCC");
		}
		
		if(!isNull(listKKSV035704SC_svc_kei_info_list_EKK0081B005CBSMsg1List)
				&& !isNull(parentMap) && parentMap.containsKey("EKK0081B533CBSMsg1List"))
		{
			ArrayList b533CBSMsgList = (ArrayList)parentMap.get("EKK0081B533CBSMsg1List");
			
			// 検索結果なし
			if(b533CBSMsgList.size() == 0)
			{
				b533ZeroFlg = true;
			}
			else
			{
				subbean = null;
				childMap = null;
				
				for(int i = 0; i < b533CBSMsgList.size(); i++)
				{
					childMap = (HashMap)b533CBSMsgList.get(i);
					
					// 併合処理対象外データ
					
					// v20.00.00 MOD START
					// 料金グループコード(サービス契約) "51":ｍｉｎｅｏ 
					// 料金グループコード(サービス契約) "16":eoメールアドレス以外
//					if(!JKKCommonConst.PRC_GRP_CD_51.equals((String)childMap.get("prc_grp_cd_KK0081")))
					// ANK-2480-00-00 MOD START
//					if(!JKKCommonConst.PRC_GRP_CD_51.equals((String)childMap.get("prc_grp_cd_KK0081")) 
//							&& !JKKCommonConst.PRC_GRP_CD_16.equals((String)childMap.get("prc_grp_cd_KK0081")))
					if(!JKKCommonConst.PRC_GRP_CD_51.equals((String)childMap.get("prc_grp_cd_KK0081")) 
							&& !JKKCommonConst.PRC_GRP_CD_16.equals((String)childMap.get("prc_grp_cd_KK0081"))
							&& !JKKCommonConst.PRC_GRP_CD_17.equals((String)childMap.get("prc_grp_cd_KK0081")))
					// ANK-2480-00-00 MOD END
					{
						continue;
					}
					// v20.00.00 MOD END
					
					subbean = listKKSV035704SC_svc_kei_info_list_EKK0081B005CBSMsg1List.addDataBean();
					
					// サービス契約情報一覧リスト ← 併合元サービス契約一覧マップ.併合元サービス契約一覧照会明細
					setRsltToBean(subbean, childMap, recStyCnt, true);
					
					recStyCnt++;
				}
			}
		}
		else
		{
			b533ZeroFlg = true;
		}
		
		// 検索結果有無判定
		if(b005ZeroFlg && b533ZeroFlg)
		{
			// 検索結果有無フラグに併合元サービス契約一覧結果なしを格納
			setResultUmFlgZero(bean[0]);
		}
		
		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV035704SCFrShosaMae(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		boolean b005ZeroFlg = false;
		boolean b533ZeroFlg = false;
		
		//**************************************************************
		// ■併合処理対象
		// １．回線データ有
		//   @ネット
		//     "02":ｅｏ光ネットホームタイプ
		//     "03":ｅｏ光ネットメゾンタイプ
		//     "04":ｅｏ光ネットマンションタイプ
		//     "05":ｅｏＡＤＳＬ（ｅＡｃｃｅｓｓ）
		//     "06":ｅｏＡＤＳＬ（フレッツ）
		//     "08":ｅｏモバイル（ＥＭ）
		//     "09":ｅｏモバイル（ＵＱ−ＷｉＭＡＸ）
		//   Aテレビ
		//   B電話
		// ２．回線データ無
		//   @ネット
		//     "07":ｅｏモバイル（Ｗｉ−Ｆｉ）
		//     "16":ｅｏメールアドレス
		// 
		// "51":ｍｉｎｅｏは併合処理対象外
		//**************************************************************
		
		//**************************************************************
		// １．回線データ有
		//**************************************************************
		HashMap parentMap = null;
		X31SDataBeanAccess subbean = null;
		HashMap childMap = null;
		int recStyCnt = 0;
		
		if(outputMap.containsKey("KKSV035704SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV035704SC");
		}
		
		X31SDataBeanAccessArray listKKSV035704SC_svc_kei_info_list_EKK0081B005CBSMsg1List
			= bean[0].getDataBeanArray("サービス契約情報一覧リスト");
		
		if(!isNull(listKKSV035704SC_svc_kei_info_list_EKK0081B005CBSMsg1List)
			&& !isNull(parentMap) && parentMap.containsKey("EKK0081B005CBSMsg1List"))
		{
			ArrayList b005CBSMsgList = (ArrayList)parentMap.get("EKK0081B005CBSMsg1List");
			
			// 検索結果なし
			if(b005CBSMsgList.size() == 0)
			{
				b005ZeroFlg = true;
			}
			else
			{
				for(int i = 0; i < b005CBSMsgList.size(); i++)
				{
					childMap = (HashMap)b005CBSMsgList.get(i);
					
					subbean = listKKSV035704SC_svc_kei_info_list_EKK0081B005CBSMsg1List.addDataBean();
					
					// デフォルトで併合対象
					subbean.sendMessageBoolean(KKW03601SFConst.CHOICE_01, X31CWebConst.DATABEAN_SET_VALUE, true);
					
					// サービス契約情報一覧リスト ← 併合元サービス契約一覧マップ.併合元サービス契約一覧照会明細
					setRsltToBean(subbean, childMap, recStyCnt, false);
					
					recStyCnt++;
				}
			}
		}
		else
		{
			b005ZeroFlg = true;
		}
		
		//**************************************************************
		// ２．回線データ無
		//**************************************************************
		if(outputMap.containsKey("NonKisnCC"))
		{
			parentMap = (HashMap)outputMap.get("NonKisnCC");
		}
		
		if(!isNull(listKKSV035704SC_svc_kei_info_list_EKK0081B005CBSMsg1List)
				&& !isNull(parentMap) && parentMap.containsKey("EKK0081B533CBSMsg1List"))
		{
			ArrayList b533CBSMsgList = (ArrayList)parentMap.get("EKK0081B533CBSMsg1List");
			
			// 検索結果なし
			if(b533CBSMsgList.size() == 0)
			{
				b533ZeroFlg = true;
			}
			else
			{
				subbean = null;
				childMap = null;
				
				for(int i = 0; i < b533CBSMsgList.size(); i++)
				{
					childMap = (HashMap)b533CBSMsgList.get(i);
					
					// 併合処理対象外データ
					// 料金グループコード(サービス契約) "51":ｍｉｎｅｏ
					if(JKKCommonConst.PRC_GRP_CD_51.equals((String)childMap.get("prc_grp_cd_KK0081")))
					{
						continue;
					}
					
					subbean = listKKSV035704SC_svc_kei_info_list_EKK0081B005CBSMsg1List.addDataBean();
					
					// デフォルトで併合対象
					subbean.sendMessageBoolean(KKW03601SFConst.CHOICE_01, X31CWebConst.DATABEAN_SET_VALUE, true);
					
					// サービス契約情報一覧リスト ← 併合元サービス契約一覧マップ.併合元サービス契約一覧照会明細
					setRsltToBean(subbean, childMap, recStyCnt, true);
					
					recStyCnt++;
				}
			}
		}
		else
		{
			b533ZeroFlg = true;
		}
		
		// 検索結果有無判定
		if(b005ZeroFlg && b533ZeroFlg)
		{
			// 検索結果有無フラグに併合元サービス契約一覧結果なしを格納
			setResultUmFlgZero(bean[0]);
		}
		
		return bean;
	}
/* ++++++++++ v8.00.01 変更終了 ++++++++++ */
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV035705SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		
		if (outputMap.containsKey("KKSV035705SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV035705SC");
		}
		
		X31SDataBeanAccessArray beanList = bean[0].getDataBeanArray(KKW03601SFConst.KEI_JOTO_TESURYO);
		
		// DataBeanの構造と合わないため、追記
		beanList.clearArray();
		
		ArrayList childList = null;
		if (parentMap.containsKey("EZM0171B012CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EZM0171B012CBSMsg1List");
			
			// DataBeanの構造と合わないため、追記
			X31SDataBeanAccess subbean = beanList.addDataBean();
			
			// 空白選択支の設定
			subbean.sendMessageString(KKW03601SFConst.CD_DIV_CD_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, "");
			subbean.sendMessageString(KKW03601SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, "");
			subbean.sendMessageString(KKW03601SFConst.DEFAULT_CD_04, X31CWebConst.DATABEAN_ADD_VALUE, "");
			
			for(int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				
				// 契約譲渡手数料.コードタイプコードリスト値リスト ← 契約譲渡手数料取得マップ.コード名称管理コード区分一覧照会明細.コード区分
				subbean.sendMessageString(KKW03601SFConst.CD_DIV_CD_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("cd_div"));
				// 契約譲渡手数料.コードタイプ名称リスト ← 契約譲渡手数料取得マップ.コード名称管理コード区分一覧照会明細.コード区分名
				subbean.sendMessageString(KKW03601SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, i + 1 + "." + (String)childMap.get("cd_div_nm"));
				// 契約譲渡手数料.初期設定コードリスト ← 契約譲渡手数料取得マップ.コード名称管理コード区分一覧照会明細.初期表示コード
				subbean.sendMessageString(KKW03601SFConst.DEFAULT_CD_04, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("shk_dsp_cd"));
				
				// 初期選択値 "0":無(SHK_DSP_CD項目が設定されていない)
				if("0".equals((String)childMap.get("cd_div"))){
					subbean.sendMessageString(KKW03601SFConst.SELECT_INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i + 1));
				}
			}
		}
		
		return bean;
	}
	
// ANK-3699-00-00対応 20190801 Dave ADD START
	/**
	 * 下りマッピング
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV035706SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		
		if (outputMap.containsKey("KKSV035706SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV035706SC");
		}
		
		X31SDataBeanAccessArray beanList = bean[0].getDataBeanArray(KKW03601SFConst.JOTO_KBN);
		
		// DataBeanの構造と合わないため、追記
		beanList.clearArray();
		
		ArrayList childList = null;
		if (parentMap.containsKey("EZM0171B012CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EZM0171B012CBSMsg1List");
			
			// DataBeanの構造と合わないため、追記
			X31SDataBeanAccess subbean = beanList.addDataBean();
			
			// 空白選択支の設定
			subbean.sendMessageString(KKW03601SFConst.CD_DIV_CD_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, "");
			subbean.sendMessageString(KKW03601SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, "");
			subbean.sendMessageString(KKW03601SFConst.DEFAULT_CD_04, X31CWebConst.DATABEAN_ADD_VALUE, "");
			
			for(int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				
				// 契約譲渡手数料.コードタイプコードリスト値リスト ← 契約譲渡手数料取得マップ.コード名称管理コード区分一覧照会明細.コード区分
				subbean.sendMessageString(KKW03601SFConst.CD_DIV_CD_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("cd_div"));
				// 契約譲渡手数料.コードタイプ名称リスト ← 契約譲渡手数料取得マップ.コード名称管理コード区分一覧照会明細.コード区分名
				subbean.sendMessageString(KKW03601SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, i + 1 + "." + (String)childMap.get("cd_div_nm"));
				// 契約譲渡手数料.初期設定コードリスト ← 契約譲渡手数料取得マップ.コード名称管理コード区分一覧照会明細.初期表示コード
				subbean.sendMessageString(KKW03601SFConst.DEFAULT_CD_04, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("shk_dsp_cd"));
				
				// 初期選択値 "0":無(SHK_DSP_CD項目が設定されていない)
				if("0".equals((String)childMap.get("cd_div"))){
					subbean.sendMessageString(KKW03601SFConst.SELECT_INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i + 1));
				}
			}
		}
		
		return bean;
	}
// ANK-3699-00-00対応 20190801 Dave ADD END

	/**
	 * 下りマッピング
	 * @param bean　[0]：契約紐付変更登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getTmpPayPrcAmntCC(X31SDataBeanAccess[] bean, HashMap outputMap){
		
		HashMap parentMap = null;
		if(outputMap.containsKey("TmpPayPrcAmntCC"))
		{
			parentMap = (HashMap)outputMap.get("TmpPayPrcAmntCC");
		}
		
		if(parentMap.containsKey("EKK0721A010CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK0721A010CBSMsg1List");
			
			if(0 < childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				// 一時支払料金番号（一時支払料金） ← JCKCustAddGetTmpPayPrcAmntCC.一時支払料金一意照会明細リスト.一時支払料金番号
				setValue(bean[0], KKW03601SFConst.KK0721_TMP_PAY_PRC_NO, (String)childMap.get("tmp_pay_prc_no"));
				// 一時支払料金額（一時支払料金） ← JCKCustAddGetTmpPayPrcAmntCC.一時支払料金一意照会明細リスト.一時支払料金額
				setValue(bean[0], KKW03601SFConst.KK0721_TMP_PAY_PRC_AMNT, (String)childMap.get("tmp_pay_prc_amnt"));
				// 発生コード（一時支払料金） ← JCKCustAddGetTmpPayPrcAmntCC.一時支払料金一意照会明細リスト.発生コード
				setValue(bean[0], KKW03601SFConst.KK0721_HASSEI_CD, (String)childMap.get("hassei_cd"));
			}
		}
		
		return bean;
	}
	
	/**
	 * 検索結果をBeanに格納。
	 * @param bean
	 * @param childMap
	 * @param recStyCnt
	 * @param b533MsgFlg
	 * @return 判定結果
	 */
	@SuppressWarnings("unchecked")
	private void setRsltToBean(X31SDataBeanAccess subbean, HashMap childMap, int recStyCnt, boolean b533MsgFlg)
	{
		StringBuilder sb = null;
		
		// サービス契約情報一覧リスト ← 併合元サービス契約一覧マップ.併合元サービス契約一覧照会明細
		// サービス契約番号
		setValue(subbean, KKW03601SFConst.L_SVC_KEI_NO_01, (String)childMap.get("svc_kei_no"));
		// サービス名
		setValue(subbean, KKW03601SFConst.L_SVC_NM_01, (String)childMap.get("prc_grp_nm"));
		
		// 利用場所の編集
		sb = new StringBuilder();
		if(b533MsgFlg)
		{
			sb.append((String)childMap.get("keisha_state_nm"));			// 契約者都道府県名
			sb.append((String)childMap.get("keisha_city_nm"));			// 契約者市区町村名
			sb.append((String)childMap.get("keisha_oaztsu_nm"));		// 契約者大字通称名
			sb.append((String)childMap.get("keisha_azcho_nm"));			// 契約者字丁目名
			sb.append((String)childMap.get("keisha_bnchigo"));			// 契約者番地号
			sb.append((String)childMap.get("keisha_adrttm"));			// 契約者住所補記・建物名
			sb.append((String)childMap.get("keisha_adrrm"));			// 契約者住所補記・部屋番号
		}
		else
		{
			sb.append((String)childMap.get("kaisen_place_state_nm"));	// 回線場所都道府県名
			sb.append((String)childMap.get("kaisen_place_city_nm"));	// 回線場所市区町村名
			sb.append((String)childMap.get("kaisen_place_oaztsu_nm"));	// 回線場所大字通称名
			sb.append((String)childMap.get("kaisen_place_azcho_nm"));	// 回線場所字丁目名
			sb.append((String)childMap.get("kaisen_place_bnchigo"));	// 回線場所番地号
			sb.append((String)childMap.get("kaisen_place_adrttm"));		// 回線場所住所補記・建物名
			sb.append((String)childMap.get("kaisen_place_adrrm"));		// 回線場所住所補記・部屋番号
		}
		
		// 利用場所
		setValue(subbean, KKW03601SFConst.L_USE_PLACE_01, sb.toString());
		// 請求契約番号
		setValue(subbean, KKW03601SFConst.L_MT_SEIKY_KEI_NO_01, (String)childMap.get("seiky_kei_no"));
		// 請求契約者名
		setValue(subbean, KKW03601SFConst.L_MT_SEIKY_KSH_NM_01, (String)childMap.get("cust_nm"));
		// 作業用退避領域
		// サービスコード（サービス契約）
		setValue(subbean, KKW03601SFConst.L_SVC_CD_KK0081_01, (String)childMap.get("svc_cd_KK0081"));
		// 料金グループコード(サービス契約)
		setValue(subbean, KKW03601SFConst.L_PRC_GRP_CD_KK0081_01, (String)childMap.get("prc_grp_cd_KK0081"));
		// 料金コースコード(サービス契約)
		setValue(subbean, KKW03601SFConst.L_PCRS_CD_KK0081_01, (String)childMap.get("pcrs_cd_KK0081"));
		// サービス開始年月日(サービス契約)
		setValue(subbean, KKW03601SFConst.L_SVC_STA_YMD_KK0081_01, (String)childMap.get("svc_sta_ymd_KK0081"));
		// サービス終了年月日(サービス契約)
		setValue(subbean, KKW03601SFConst.L_SVC_ENDYMD_KK0081_01, (String)childMap.get("svc_endymd_KK0081"));
		// 無効フラグ(サービス契約)
		setValue(subbean, KKW03601SFConst.L_MK_FLG_KK0081_01, (String)childMap.get("mk_flg_KK0081"));
		// 登録年月日時分秒(サービス契約)
		setValue(subbean, KKW03601SFConst.L_ADD_DTM_KK0081_01, (String)childMap.get("add_dtm_KK0081"));
		// 登録オペレータアカウント(サービス契約)
		setValue(subbean, KKW03601SFConst.L_ADD_OPEACNT_KK0081_01, (String)childMap.get("add_opeacnt_KK0081"));
		// 更新年月日時分秒(サービス契約)
		setValue(subbean, KKW03601SFConst.L_UPD_DTM_KK0081_01, (String)childMap.get("upd_dtm_KK0081"));
		// 更新オペレータアカウント(サービス契約)
		setValue(subbean, KKW03601SFConst.L_UPD_OPEACNT_KK0081_01, (String)childMap.get("upd_opeacnt_KK0081"));
		// 契約締結年月日(請求契約)
		setValue(subbean, KKW03601SFConst.L_KEI_CNC_YMD_KK0491_01, (String)childMap.get("kei_cnc_ymd_KK0491"));
		// 請求契約解約年月日(請求契約)
		setValue(subbean, KKW03601SFConst.L_SEIKY_KEI_DSL_YMD_KK0491_01, (String)childMap.get("seiky_kei_dsl_ymd_KK0491"));
		// 無効フラグ(請求契約)
		setValue(subbean, KKW03601SFConst.L_MK_FLG_KK0491_01, (String)childMap.get("mk_flg_KK0491"));
		// 登録年月日時分秒(請求契約)
		setValue(subbean, KKW03601SFConst.L_ADD_DTM_KK0491_01, (String)childMap.get("add_dtm_KK0491"));
		// 登録オペレータアカウント(請求契約)
		setValue(subbean, KKW03601SFConst.L_ADD_OPEACNT_KK0491_01, (String)childMap.get("add_opeacnt_KK0491"));
		// 更新年月日時分秒(請求契約)
		setValue(subbean, KKW03601SFConst.L_UPD_DTM_KK0491_01, (String)childMap.get("upd_dtm_KK0491"));
		// 更新オペレータアカウント(請求契約)
		setValue(subbean, KKW03601SFConst.L_UPD_OPEACNT_KK0491_01, (String)childMap.get("upd_opeacnt_KK0491"));
		// 課金先番号(課金先)
		setValue(subbean, KKW03601SFConst.L_KAKINS_NO_KK0321_01, (String)childMap.get("kakins_no_KK0321"));
		// 更新年月日時分秒(課金先)
		setValue(subbean, KKW03601SFConst.L_UPD_DTM_KK0321_01, (String)childMap.get("upd_dtm_KK0321"));
		// サービス契約回線内訳番号(回線対象サービス契約)
		setValue(subbean, KKW03601SFConst.L_SVC_KEI_KAISEN_UCWK_NO_KK0241_01, (String)childMap.get("svc_kei_kaisen_ucwk_no_KK0241"));
		// ISP決済再設定優先順位(料金グループ)
		setValue(subbean, KKW03601SFConst.L_ISPKS_RESET_YUSEN_JUN_KK0781_01, (String)childMap.get("ispks_reset_yusen_jun_KK0781"));
		// マンション物件コード
		setValue(subbean, KKW03601SFConst.L_MANSION_BUKKEN_CD_01, (String)childMap.get("mansion_bukken_cd"));
		// マンション通信設備コード
		setValue(subbean, KKW03601SFConst.L_MANS_TUSHIN_EQUIP_CD_01, (String)childMap.get("mans_tushin_equip_cd"));
		// サービス契約ステータス
		setValue(subbean, KKW03601SFConst.L_SVC_KEI_STAT_01, (String)childMap.get("svc_kei_stat"));
		// 料金プランコード
		setValue(subbean, KKW03601SFConst.L_PPLAN_CD_01, (String)childMap.get("pplan_cd"));
		// 最終更新年月日時分秒
		setValue(subbean, KKW03601SFConst.L_LAST_UPD_DTM_01, (String)childMap.get("last_upd_dtm"));
/* ++++++++++ ANK-4427-00-00 追加開始 ++++++++++ */
		// NTT卸区分
		setValue(subbean, KKW03601SFConst.L_NTTORS_DIV_01, (String)childMap.get("nttors_div"));
/* ++++++++++ ANK-4427-00-00 追加終了 ++++++++++ */
		// お客様一覧照会.レコードスタイル ← 偶数はodd、奇数はeven
		if(recStyCnt%2 == 0)
		{
			setValue(subbean, KKW03601SFConst.RECORDSTYLE_01, "odd");
		}
		else
		{
			setValue(subbean, KKW03601SFConst.RECORDSTYLE_01, "even");
		}
	}
	
/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
	/**
	 * 併合処理対象データか判定します。
	 * <br>
	 * @param svcKeiStat サービス契約ステータス
	 * @return boolean
	 */
	private boolean isChkStat(String svcKeiStat)
	{
		// "020":照査済
		// "030":締結済
		// "100":サービス提供中
		// "210":休止・中断中
		// "220":停止中
		if(JKKCommonConst.SVC_KEI_STAT_020.equals(svcKeiStat)
				|| JKKCommonConst.SVC_KEI_STAT_030.equals(svcKeiStat)
				|| JKKCommonConst.SVC_KEI_STAT_100.equals(svcKeiStat)
				|| JKKCommonConst.SVC_KEI_STAT_210.equals(svcKeiStat)
				|| JKKCommonConst.SVC_KEI_STAT_220.equals(svcKeiStat))
		{
			// 併合処理対象
			return true;
		}
		
		return false;
	}
/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
	
	/**
	 * 併合処理対象データか判定します。
	 * 対象外料金グループ
	 *    "08":ｅｏモバイル（ＥＭ）
	 *    "09":ｅｏモバイル（ＵＱ−ＷｉＭＡＸ）
	 * <br>
	 * @param	prcGrpCd	料金グループコード
	 * @return	boolean		判定結果
	 */
	private boolean isChkPrcGrp(String prcGrpCd)
	{
		if(JKKCommonConst.PRC_GRP_CD_08.equals(prcGrpCd)
				|| JKKCommonConst.PRC_GRP_CD_09.equals(prcGrpCd))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 検索結果有無フラグに併合元サービス契約一覧結果なしを設定します。
	 * <br>
	 * @param bean 画面情報
	 * @param comboName コンボボックス名称
	 * @param value 設定値
	 */
	private void setResultUmFlgZero(X31SDataBeanAccess bean)
	{
		// 検索結果有無フラグ ← "00":併合元サービス契約一覧結果無
		setValue(bean, KKW03601SFConst.RESULT_UM_FLG, HEIGO_MT_SVC_KEI_IRN_RESULT_ZERO);
	}
	
	/**
	 * 引数のNULL判定を行います。
	 * @param param
	 * @return 判定結果
	 */
	private boolean isNull(Object param)
	{
		if(null == param)
		{
			return true;
		}
		return false;
	}
	
	/**
	 * 引数のNULL判定を行います。
	 * @param str
	 * @return 判定結果
	 */
	private boolean isStrNull(String str)
	{
		if(null == str)
		{
			return true;
		}
		return false;
	}
	
	/**
	 * データBeanから指定された項目の値を取得します。
	 * <br>
	 * @param bean 画面情報
	 * @param comboName コンボボックス名称
	 * <br>
	 * @return String 選択されているコード値
	 */
	private String getValue(X31SDataBeanAccess bean, String itemName)
	{
		return bean.sendMessageString(itemName, X31CWebConst.DATABEAN_GET_VALUE);
	}
	
	/**
	 * データBeanに指定された項目の値を設定します。
	 * <br>
	 * @param bean 画面情報
	 * @param comboName コンボボックス名称
	 * @param value 設定値
	 */
	private void setValue(X31SDataBeanAccess bean, String itemName, String value)
	{
		if(isStrNull(value))
		{
			bean.sendMessage(itemName, X31CWebConst.DATABEAN_CLEAR);
		}
		else
		{
			bean.sendMessageString(itemName, X31CWebConst.DATABEAN_SET_VALUE, value);
		}
	}
	
// ANK-3478-00-00 ADD START 
	/**
	 * パートナー会員か判定します。
	 * <br>
	 * @param	memberSbtCd	会員種別コード
	 * @param	orsjgsCd	卸先事業者コード
	 * @return	boolean		判定結果
	 */
	private String setPtnrMemberFlg(String memberSbtCd, String orsjgsCd)
	{
		if(JCKCommonConst.CD00039_MASTER_KOJIN.equals(memberSbtCd)
				&& !JKKStringUtil.isNullEmpty(orsjgsCd))
		{
			return "1";
		}
		
		return "0";
	}
	
// ANK-3478-00-00 ADD END 
}
