/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0271_FUSV0271OPDBMapper
*	ソースファイル名：FUSV0271_FUSV0271OPDBMapper.java
*	作成者			：富士通
*	日付			：2013年05月02日
*＜機能概要＞
*	BP（サービス契約申込情報取得）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00       2013/05/02  FJ)岡井     新規作成
*   v10.00      2014/09/25  FJ 文元    【OM-2014-0003119】電話単独時契約付加未設定対応
 *  v61.00      2023/04/20  FJ)張本    【ANK-4315-00-00】【eo定期】eo光ホームゲートウェイ導入対応
*
**********************************************************************/
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.JFUStrConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをする。
 *
 * @author user
 */
public class FUSV0271_FUSV0271OPDBMapper
{

	// ■SC・CC名
	/** FUSV027101CC */
	private static final String FUSV027101CC = "FUSV027101CC";
	/** FUSV027102CC */
	private static final String FUSV027102CC = "FUSV027102CC";
	/** FUSV027103CC */
	private static final String FUSV027103CC = "FUSV027103CC";

	// ■リスト名
	/** JFUGetNewKeiMskmInfoCCList */
	private static final String JFUGETSVCKEIMSKMINFOCCLIST = "JFUGetSvcKeiMskmInfoCCList";
	/** KaisenUcwkKikiInfoList */
	private static final String KAISENUCWKKIKIINFOLIST = "KaisenUcwkKikiInfoList";

	// ■項目名
	/** ＫＥＹ＿サービス契約番号リスト */
	private static final String KEY_SVC_KEI_NO_LIST = "key_svc_kei_no_list";
	/** ＫＥＹ＿サービス契約番号 */
	private static final String KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** 関西電力お客様情報授受同意有無 */
	private static final String KEPCO_CUSTINFO_JUJU_DOI_UM = "kepco_custinfo_juju_doi_um";
	/** ＫＥＹ＿サービス契約回線内訳番号 */
	private static final String KEY_SVC_KEI_KAISEN_UCWK_NO = "key_svc_kei_kaisen_ucwk_no";
	/** SYSID */
	private static final String SYSID = "sysid";
	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "svc_kei_no";
	/** サービス契約回線内訳番号 */
	private static final String SVC_KEI_KAISEN_UCWK_NO = "svc_kei_kaisen_ucwk_no";
	/** 異動区分 */
	private static final String IDO_DIV = "ido_div";
	
	/**
	 * コンストラクタです。
	 */
	public FUSV0271_FUSV0271OPDBMapper()
	{
	}

	/**
	 * サービス契約申込情報取得CCの上りマッピング処理です。
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 * @return HashMap マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV027101CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// サービス契約情報格納変数
		ArrayList svcKeiNoList = new ArrayList();
		HashMap svcKeiNoMap = new HashMap();

		// ネットのサービス契約番号
		X31SDataBeanAccessArray netBeanArray = bean[0].getDataBeanArray(CommonInfoCFConst.EONET);
		X31SDataBeanAccess netBean = netBeanArray.getDataBean(0);
		String netSvcKeiNo = netBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_11, X31CWebConst.DATABEAN_GET_VALUE);
		if(!JFUWebCommon.isNull(netSvcKeiNo))
		{
			svcKeiNoMap.put(KEY_SVC_KEI_NO, netSvcKeiNo);
			svcKeiNoList.add(svcKeiNoMap);
			svcKeiNoMap = new HashMap();
		}

		// 電話のサービス契約番号
		X31SDataBeanAccessArray telBeanArray = bean[0].getDataBeanArray(CommonInfoCFConst.EOTEL);
		X31SDataBeanAccess telBean = telBeanArray.getDataBean(0);
		String telSvcKeiNo = telBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_12, X31CWebConst.DATABEAN_GET_VALUE);
		if(!JFUWebCommon.isNull(telSvcKeiNo))
		{
			svcKeiNoMap.put(KEY_SVC_KEI_NO, telSvcKeiNo);
			svcKeiNoList.add(svcKeiNoMap);
			svcKeiNoMap = new HashMap();
		}

		// テレビのサービス契約番号
		X31SDataBeanAccessArray tvBeanArray = bean[0].getDataBeanArray(CommonInfoCFConst.EOTV);
		X31SDataBeanAccess tvBean = tvBeanArray.getDataBean(0);
		String tvSvcKeiNo = tvBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_13, X31CWebConst.DATABEAN_GET_VALUE);
		if(!JFUWebCommon.isNull(tvSvcKeiNo))
		{
			svcKeiNoMap.put(KEY_SVC_KEI_NO, tvSvcKeiNo);
			svcKeiNoList.add(svcKeiNoMap);
		}

		// サービス契約番号リストを設定
		parentMap.put(KEY_SVC_KEI_NO_LIST, svcKeiNoList);

		// サービス契約回線内訳番号を設定
		X31SDataBeanAccessArray webnewBeanArr = bean[0].getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		X31SDataBeanAccess keiyakuSvcInfoBean = webnewBeanArr.getDataBean(0);
		String svcKeiKaisenUcwkNo = keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_NO_10, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put(KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
		
		outputMap.put(FUSV027101CC, parentMap);

		return outputMap;
	}

	/**
	 * サービス契約申込情報取得CCの下りマッピング処理です。
	 * 
	 * <br>
	 * @param bean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public void getFUSV027101CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		ArrayList childList = null;

		// 明細リスト取得
		if (outputMap.containsKey(FUSV027101CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV027101CC);
		}
		if(parentMap != null && parentMap.size() > 0)
		{
			childList = (ArrayList)parentMap.get(JFUGETSVCKEIMSKMINFOCCLIST);
		}
		if(childList == null || childList.size() == 0)
		{
			return;
		}

		// 共有フォームBeanより契約者情報を取得
		X31SDataBeanAccessArray keiyakushaArray = bean[0].getDataBeanArray(CommonInfoCFConst.KEIYAKUSHA_INFO);
		X31SDataBeanAccess keiyakushaBean = keiyakushaArray.getDataBean(0);

		for (int i = 0; i < childList.size(); i++)
		{
			HashMap childMap = (HashMap)childList.get(i);
			// 関西電力お客様情報授受同意有無取得
			String kandenJujuUm = (String)childMap.get(KEPCO_CUSTINFO_JUJU_DOI_UM);

			// 値が設定されている場合、その値を設定する
			if(!JFUWebCommon.isNull(kandenJujuUm))
			{
				keiyakushaBean.sendMessageString(CommonInfoCFConst.KEPCO_CUSTINFO_JUJU_DOI_UM_09, X31CWebConst.DATABEAN_SET_VALUE, kandenJujuUm);
				break;
			}
		}
	}
	
	/**
	 * サービス契約申込情報取得CCの下りマッピング処理です。（回線機器情報）
	 * 
	 * <br>
	 * @param bean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public void getFUSV027101CCKaisenKiki(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		ArrayList childList = null;

		// 明細リスト取得
		if (outputMap.containsKey(FUSV027101CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV027101CC);
		}
		if(parentMap != null && parentMap.size() > 0)
		{
			childList = (ArrayList)parentMap.get(KAISENUCWKKIKIINFOLIST);
		}
		if(childList == null || childList.size() == 0)
		{
			return;
		}

		// WEB新規情報-回線機器情報
		X31SDataBeanAccessArray kaisenKikiInfoArray = bean[0].getDataBeanArray(CommonInfoCFConst.KAISEN_KIKI_INFO);
		// 初期化
		kaisenKikiInfoArray.clearArray();
		
		for (int i = 0; i < childList.size(); i++)
		{
			HashMap childMap = (HashMap)childList.get(i);
			
			X31SDataBeanAccess kaisenKikiInfoBean = kaisenKikiInfoArray.addDataBean();
			
			// 機器提供サービス契約番号
			kaisenKikiInfoBean.sendMessageString(CommonInfoCFConst.KKTK_SVC_KEI_NO_60, X31CWebConst.DATABEAN_SET_VALUE, 
					(String)childMap.get("kktk_svc_kei_no"));
			// 世代登録年月日時分秒
			kaisenKikiInfoBean.sendMessageString(CommonInfoCFConst.GENE_ADD_DTM_60, X31CWebConst.DATABEAN_SET_VALUE, 
					(String)childMap.get("gene_add_dtm"));
			// 機器提供サービス契約ステータス
			kaisenKikiInfoBean.sendMessageString(CommonInfoCFConst.KKTK_SVC_KEI_STAT_60, X31CWebConst.DATABEAN_SET_VALUE, 
					(String)childMap.get("kktk_svc_kei_stat"));
			// 機器提供サービスコード
			kaisenKikiInfoBean.sendMessageString(CommonInfoCFConst.KKTK_SVC_CD_60, X31CWebConst.DATABEAN_SET_VALUE, 
					(String)childMap.get("kktk_svc_cd"));
			// 料金コースコード
			kaisenKikiInfoBean.sendMessageString(CommonInfoCFConst.PCRS_CD_60, X31CWebConst.DATABEAN_SET_VALUE, 
					(String)childMap.get("pcrs_cd"));
			// 料金プランコード
			kaisenKikiInfoBean.sendMessageString(CommonInfoCFConst.PPLAN_CD_60, X31CWebConst.DATABEAN_SET_VALUE, 
					(String)childMap.get("pplan_cd"));
			// 提供方式契約番号
			kaisenKikiInfoBean.sendMessageString(CommonInfoCFConst.TK_HOSHIKI_KEI_NO_60, X31CWebConst.DATABEAN_SET_VALUE, 
					(String)childMap.get("tk_hoshiki_kei_no"));
			// 機器提供種別コード
			kaisenKikiInfoBean.sendMessageString(CommonInfoCFConst.KKTK_SBT_CD_60, X31CWebConst.DATABEAN_SET_VALUE, 
					(String)childMap.get("kktk_sbt_cd"));
			// サービス契約回線内訳番号
			kaisenKikiInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_NO_60, X31CWebConst.DATABEAN_SET_VALUE, 
					(String)childMap.get("svc_kei_kaisen_ucwk_no"));
			// SYSID
			kaisenKikiInfoBean.sendMessageString(CommonInfoCFConst.SYSID_60, X31CWebConst.DATABEAN_SET_VALUE, 
					(String)childMap.get("sysid"));
			// 申込明細番号
			kaisenKikiInfoBean.sendMessageString(CommonInfoCFConst.MSKM_DTL_NO_60, X31CWebConst.DATABEAN_SET_VALUE, 
					(String)childMap.get("mskm_dtl_no"));
		}
	}

	/**
	 * ＯＮＵ交換工事判定CCの上りマッピング処理です。
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @return HashMap マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV027102CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// SYSID
		String sysid = bean[0].sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE);

		// サービス契約回線内訳番号
		X31SDataBeanAccessArray webnewBeanArr = bean[0].getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		X31SDataBeanAccess keiyakuSvcInfoBean = webnewBeanArr.getDataBean(0);
		String svcKeiKaisenUcwkNo = keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_NO_10, X31CWebConst.DATABEAN_GET_VALUE);

		// SYSID
		parentMap.put(SYSID, sysid);
		// サービス契約回線内訳番号
		parentMap.put(SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);

		outputMap.put(FUSV027102CC, parentMap);

		return outputMap;
	}

	/**
	 * ローゼット化設置済案件判定CCの上りマッピング処理です。
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @return HashMap マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV027103CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// サービス契約回線内訳番号
		X31SDataBeanAccessArray webnewBeanArr = bean[0].getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		X31SDataBeanAccess keiyakuSvcInfoBean = webnewBeanArr.getDataBean(0);
		String svcKeiKaisenUcwkNo = keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_NO_10, X31CWebConst.DATABEAN_GET_VALUE);

		// "ｅｏ光ネット.サービス契約番号"
		X31SDataBeanAccess eoNet = (bean[0].getDataBeanArray(CommonInfoCFConst.EONET)).getDataBean(0);
		String eoNetSvckeiNo = eoNet.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_12, X31CWebConst.DATABEAN_GET_VALUE);

		// "ｅｏ光電話.サービス契約番号"
		X31SDataBeanAccess eotel = (bean[0].getDataBeanArray(CommonInfoCFConst.EOTEL)).getDataBean(0);
		String eotelSvckeiNo = eotel.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_12, X31CWebConst.DATABEAN_GET_VALUE);

		// サービス契約番号
		if (!JFUWebCommon.isNull(eoNetSvckeiNo))
		{
			parentMap.put(SVC_KEI_NO, eoNetSvckeiNo);
		}
		else if (!JFUWebCommon.isNull(eotelSvckeiNo))
		{
			parentMap.put(SVC_KEI_NO, eotelSvckeiNo);
		}
		// サービス契約回線内訳番号
		parentMap.put(SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
		// 異動区分
		parentMap.put(IDO_DIV, JFUStrConst.CD00576_00002);
		
		outputMap.put(FUSV027103CC, parentMap);

		return outputMap;
	}

	/**
	 * ＯＮＵ交換工事判定コモンコンポーネント部品(CCの下りマッピングをします。
	 * <br>
	 * @param bean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public void getFUSV027102CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;

		if (outputMap.containsKey(FUSV027102CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV027102CC);
		}
		if(parentMap == null)
		{
			return;
		}

		// 共有フォームBeanより契約サービス情報を取得
		X31SDataBeanAccessArray keiyakuArray = bean[0].getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		X31SDataBeanAccess keiyakuSvcBean = keiyakuArray.getDataBean(0);

		keiyakuSvcBean.sendMessageString(CommonInfoCFConst.ONU_KOKAN_KOJI_KH_10, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("chk_result"));
	}

	/**
	 * ローゼット化設置済案件判定コモンコンポーネント部品(CCの下りマッピングをします。
	 * <br>
	 * @param bean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public void getFUSV027103CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;

		if (outputMap.containsKey(FUSV027103CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV027103CC);
		}
		if(parentMap == null)
		{
			return;
		}

		// 共有フォームBeanより契約サービス情報を取得
		X31SDataBeanAccessArray keiyakuArray = bean[0].getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		X31SDataBeanAccess keiyakuSvcBean = keiyakuArray.getDataBean(0);

		keiyakuSvcBean.sendMessageString(CommonInfoCFConst.KOJI_SKIP_KH_10, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("chk_result"));
	}
}