/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹構築
*	モジュール名	：FUSV0328_FUSV0328OPDBMapper
*	ソースファイル名：FUSV0328_FUSV0328OPDBMapper.java
*	作成者			：FJ
*	日付			：2018年10月09日
*＜機能概要＞
*	BP（ご契約者情報照会）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v39.00.00	2011/07/15	FJ)中西		新規作成
*   v57.00      2022/02/09 FJ) 張本    【ANK-4173-00-00】【eo顧客】解約後の契約情報表示、再申込対応
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

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.common.constant.JPCModelConstant;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW00921SF.FUW00921SFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 * <p>
 * <BR>
 * @author 富士通
 */
public class FUSV0328_FUSV0328OPDBMapper
{

	/* ■ SC */
	/** マップキー ＫＥＹ＿SYSID */
	private static final String MAPKEY_KEY_SYSID = "key_sysid";
	/** マップキー ＫＥＹ＿予約適用年月日 */
	private static final String MAPKEY_KEY_RSV_APLY_YMD = "key_rsv_aply_ymd";
	/** マップキー ＫＥＹ＿サービス契約回線内訳番号 */
	private static final String MAPKEY_KEY_SVC_KEI_UCWK_NO = "key_svc_kei_ucwk_no";
	/** マップキー ＳＹＳＩＤ */
	private static final String MAPKEY_SYSID = "sysid";
	/** マップキー メールアドレス */
	private static final String MAPKEY_MLAD = "mlad";
	/** マップキー 連絡先番号 */
	private static final String RRKS_NO = "rrks_no";
	/** 機能コード */
	private static final String FUNC_CD = "func_cd";

	/** マップキー FUSV032801SC(ご契約者情報照会) */
	private static final String MAPKEY_FUSV032801SC = "FUSV032801SC";
	/** マップキー FUSV032802SC(ご契約者情報入力(新規個人)チェック) */
	private static final String MAPKEY_FUSV032802SC = "FUSV032802SC";
	/** マップキー FUSV032803SC(ご契約者情報入力(新規法人)チェック) */
	private static final String MAPKEY_FUSV032803SC = "FUSV032803SC";
	/** マップキー FUSV032804SC(ご契約者情報入力(追加)チェック) */
	private static final String MAPKEY_FUSV032804SC = "FUSV032804SC";
	/** マップキー FUSV032801CC(オプトインメール情報取得CC) */
	private static final String MAPKEY_FUSV032801CC = "FUSV032801CC";
	/** マップキー お客様一意照会明細 */
	private static final String MAPKEY_ECK0011A010CBSMSG1LIST = "ECK0011A010CBSMsg1List";
	/** マップキー お客様<法人>一意照会明細 */
	private static final String MAPKEY_ECK0031A010CBSMSG1LIST = "ECK0031A010CBSMsg1List";
	/** マップキー メールアドレス一覧 */
	private static final String MAPKEY_EKK0361B501CBSMSG1LIST = "EKK0361B501CBSMsg1List";
	/** マップキー メールアドレス一覧(連絡先) */
	private static final String MAPKEY_ECK0201B503CBSMSG1LIST = "ECK0201B503CBSMsg1List";

	/* ■ 実行判定で使用 */
	/** マップキー 契約種別 */
	private static final String MAPKEY_KEIYAKU_SBT = "keiyakuSbt";
	/** マップキー Web申込機能コード */
	private static final String MAPKEY_WEB_MSKM_FUNC_CD = "webMskmFuncCd";

	/* ■ その他 */
	/** マップキー 機能コード */
	private static final String MAPKEY_FUNC_CODE = "func_code";

	/**
	 * コンストラクタ
	 */
	public FUSV0328_FUSV0328OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV032801SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		X31SDataBeanAccess webNewBean = null; // 共有フォームBeanのＷＥＢ新規以下へのアクセサ
		X31SDataBeanAccessArray beanArray = null;

		beanArray = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		webNewBean = beanArray.getDataBean(0);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(MAPKEY_FUNC_CODE, func_code);

		// ---------------------------------------------------------------------
		// 共有フォームBean.ＷＥＢ新規[0].ｓｙｓＩＤ → お客様一意照会マップ.ＫＥＹ＿SYSID
		parentMap.put(MAPKEY_KEY_SYSID, webNewBean.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE));

		// ---------------------------------------------------------------------
		// サービスフォームBean.運用日付を設定 → お客様一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put(MAPKEY_KEY_RSV_APLY_YMD, bean[0].sendMessageString(FUW00921SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE));

		// ---------------------------------------------------------------------
		outputMap.put(MAPKEY_FUSV032801SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param keiyakuSbt　契約種別
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV032802SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String keiyakuSbt)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		X31SDataBeanAccess webNewBean = null; // 共有フォームBeanのＷＥＢ新規以下へのアクセサ
		X31SDataBeanAccessArray beanArray = null;

		beanArray = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		webNewBean = beanArray.getDataBean(0);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(MAPKEY_FUNC_CODE, func_code);

		// ---------------------------------------------------------------------
		// 共有フォームBean.ＷＥＢ新規[0].ｓｙｓＩＤ → お客様<法人>一意照会マップ.ＫＥＹ＿SYSID
		parentMap.put(MAPKEY_KEY_SYSID, webNewBean.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE));

		// 契約種別(1:個人、2:法人)
		parentMap.put(MAPKEY_KEIYAKU_SBT, keiyakuSbt);

		outputMap.put(MAPKEY_FUSV032802SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV032803SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		X31SDataBeanAccess webNewBean = null; // 共有フォームBeanのＷＥＢ新規以下へのアクセサ
		X31SDataBeanAccess keiyakuSvcBean = null; // ＷＥＢ新規の契約サービス情報以下へのアクセサ
		X31SDataBeanAccessArray beanArray = null;

		beanArray = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		webNewBean = beanArray.getDataBean(0);
		beanArray = webNewBean.getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		keiyakuSvcBean = beanArray.getDataBean(0);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// ---------------------------------------------------------------------
		// 共通情報のマッピング
		parentMap.put(MAPKEY_FUNC_CODE, func_code);

		// ---------------------------------------------------------------------
		// 共有フォームBean.ＷＥＢ新規[0].ｓｙｓＩＤ → メールアドレス一覧照会マップ.ＫＥＹ＿SYSID
		parentMap.put(MAPKEY_KEY_SYSID, webNewBean.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE));

		// ---------------------------------------------------------------------
		// 共有フォームBean.ＷＥＢ新規[0].契約サービス情報[0].サービス契約回線内訳番号
		// → メールアドレス一覧照会マップ.ＫＥＹ＿サービス契約回線内訳番号
		parentMap.put(MAPKEY_KEY_SVC_KEI_UCWK_NO, keiyakuSvcBean.sendMessageString(CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_NO_10,
				X31CWebConst.DATABEAN_GET_VALUE));

		// ---------------------------------------------------------------------
		outputMap.put(MAPKEY_FUSV032803SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV032804SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		X31SDataBeanAccess webNewBean = null; // 共有フォームBeanのＷＥＢ新規以下へのアクセサ
		X31SDataBeanAccessArray beanArray = null;

		beanArray = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		webNewBean = beanArray.getDataBean(0);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(MAPKEY_FUNC_CODE, func_code);

		// ---------------------------------------------------------------------
		// 共有フォームBean.ＷＥＢ新規[0].ｓｙｓＩＤ → 連絡先メールアドレス一覧照会.SYSID
		parentMap.put(MAPKEY_SYSID, webNewBean.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE));

		// ---------------------------------------------------------------------
		outputMap.put(MAPKEY_FUSV032804SC, parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ご契約者情報入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @return X31SDataBeanAccess[] ご契約者情報入力　[1]：共有フォームビーン
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV032801SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(MAPKEY_FUSV032801SC))
		{
			parentMap = (HashMap)outputMap.get(MAPKEY_FUSV032801SC);
		}

		ArrayList childList = null;

		childList = null;
		if (parentMap.containsKey(MAPKEY_ECK0011A010CBSMSG1LIST))
		{
			childList = (ArrayList)parentMap.get(MAPKEY_ECK0011A010CBSMSG1LIST);

			X31SDataBeanAccess subbean = bean[0];
			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				// サービスフォームBean.お客様名 ← お客様一意照会マップ.お客様一意照会明細.お客様名
				subbean.sendMessageString(FUW00921SFConst.OKK_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_nm"));
				// サービスフォームBean.お客様カナ名 ← お客様一意照会マップ.お客様一意照会明細.お客様カナ名
				subbean.sendMessageString(FUW00921SFConst.OKK_NM_KANA, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_kana"));
				// サービスフォームBean.お客様性別コード ← お客様一意照会マップ.お客様一意照会明細.お客様性別コード
				subbean.sendMessageString(FUW00921SFConst.OKK_SEX_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_sex_cd"));
				// サービスフォームBean.お客様性別コード名称 ← お客様一意照会マップ.お客様一意照会明細.お客様性別コード名称
				subbean.sendMessageString(FUW00921SFConst.OKK_SEX_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_sex_cd_nm"));
				// サービスフォームBean.お客様生年月日 ← お客様一意照会マップ.お客様一意照会明細.お客様生年月日
				subbean.sendMessageString(FUW00921SFConst.OKK_BIRTH, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_birthd"));

				if (JPCModelConstant.FUNC_CD_3.equals(getWebAccInfo(bean[1]).sendMessageString(CommonInfoCFConst.WEB_MSKM_FUNC_CD_69,
						X31CWebConst.DATABEAN_GET_VALUE)))
				{
					X31SDataBeanAccessArray beanArray = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
					X31SDataBeanAccess webNewBean = beanArray.getDataBean(0);

					// 契約種別の設定(1:個人、2:法人)
					String keishaType = (String)childMap.get("keisha_type_cd");
					if (JFUStrConst.CD00036_2.equals(keishaType))
					{
						webNewBean.sendMessageString(CommonInfoCFConst.KEI_SBT_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.KEI_SBT_HOJINCD);
					}
					else
					{
						webNewBean.sendMessageString(CommonInfoCFConst.KEI_SBT_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.KEI_SBT_KOJINCD);
					}

					// 携帯電話番号の設定
					String keishaTelNo = (String)childMap.get("keisha_telno");
					if (keishaTelNo != null && keishaTelNo.length() == 11)
					{
						String tel[] = JPCUtilCommon.formatTelNoAdd2(keishaTelNo).split(JFUStrConst.HALF_HAIHUN);
						// 携帯電話番号
						subbean.sendMessageString(FUW00921SFConst.P_TEL_AREA, X31CWebConst.DATABEAN_SET_VALUE, tel[0]);
						subbean.sendMessageString(FUW00921SFConst.P_TEL_LOCAL, X31CWebConst.DATABEAN_SET_VALUE, tel[1]);
						subbean.sendMessageString(FUW00921SFConst.P_TEL_SUBSCRIBER, X31CWebConst.DATABEAN_SET_VALUE, tel[2]);
					}
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ご契約者情報入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @return X31SDataBeanAccess[] ご契約者情報入力　[1]：共有フォームビーン
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV032802SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(MAPKEY_FUSV032802SC))
		{
			parentMap = (HashMap)outputMap.get(MAPKEY_FUSV032802SC);
		}

		ArrayList childList = null;

		childList = null;
		if (parentMap.containsKey(MAPKEY_ECK0031A010CBSMSG1LIST))
		{
			childList = (ArrayList)parentMap.get(MAPKEY_ECK0031A010CBSMSG1LIST);

			X31SDataBeanAccess subbean = bean[0];
			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				// サービスフォームBean.会社名 ← お客様＜法人＞一意照会マップ.お客様＜法人＞一意照会明細.会社名
				subbean.sendMessageString(FUW00921SFConst.KAISHA_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("comp_nm"));
				// サービスフォームBean.会社カナ名 ← お客様＜法人＞一意照会マップ.お客様＜法人＞一意照会明細.会社カナ名
				subbean.sendMessageString(FUW00921SFConst.KAISHA_NM_KANA, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("comp_kana"));
				// 2013/02/19 ANK-1402-00-00
				// サービスフォームBean.お客様名 ← お客様＜法人＞一意照会マップ.お客様＜法人＞一意照会明細.代表者名
				subbean.sendMessageString(FUW00921SFConst.OKK_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dihysha_nm"));
				// サービスフォームBean.お客様カナ名 ← お客様＜法人＞一意照会マップ.お客様＜法人＞一意照会明細.代表者カナ名
				subbean.sendMessageString(FUW00921SFConst.OKK_NM_KANA, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dihysha_kana"));

			
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：ご契約者情報入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @return X31SDataBeanAccess[] ご契約者情報入力　[1]：共有フォームビーン
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV032803SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		Set<String> mladSummary = new HashSet<String>();
		
		HashMap parentMap = null;
		if (outputMap.containsKey(MAPKEY_FUSV032803SC))
		{
			parentMap = (HashMap)outputMap.get(MAPKEY_FUSV032803SC);
		}

		ArrayList childList = null;

		// 契約種別の個人／法人の別によって格納先が変わる

		X31SDataBeanAccessArray beanArray = null;
		X31SDataBeanAccess webNewBean = null;
		X31SDataBeanAccess targetMailList = null;

		beanArray = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		webNewBean = beanArray.getDataBean(0);
		String keiyakuSbt = webNewBean.sendMessageString(CommonInfoCFConst.KEI_SBT_06, X31CWebConst.DATABEAN_GET_VALUE);

		if (JFUStrConst.KEI_SBT_KOJINCD.equals(keiyakuSbt))
		{
			beanArray = bean[0].getDataBeanArray(FUW00921SFConst.P_EMAIL_LIST);
		}
		else
		{
			beanArray = bean[0].getDataBeanArray(FUW00921SFConst.E_EMAIL_LIST);
		}
		targetMailList = beanArray.getDataBean(0);

		childList = null;
		if (parentMap.containsKey(MAPKEY_EKK0361B501CBSMSG1LIST))
		{
			childList = (ArrayList)parentMap.get(MAPKEY_EKK0361B501CBSMSG1LIST);

			for (int i = 0; i < childList.size(); i++)
			{

				HashMap childMap = (HashMap)childList.get(i);
				Object objMlad = childMap.get(MAPKEY_MLAD);
				String strMlad = (objMlad != null) ? (((String)objMlad)) : ("");

				strMlad = strMlad.replaceAll("^[ 　\\t]+", "");
				strMlad = strMlad.replaceAll("[ 　\\t]+$", "");

				if (strMlad.length() <= 0)
				{
					continue; // ブランク値はリストに登録しない
				}

				if (!JFUWebCommon.isEmail1Check(strMlad))
				{
					// メールアドレスの形式がEmail1形式でない場合はリストに登録しない
					continue;
				}

				mladSummary.add(strMlad);

				// (個人／法人)メールアドレスリスト.項目実値 ← メールアドレス一覧照会マップ.メールアドレス一覧.メールアドレス
				targetMailList.sendMessageString(FUW00921SFConst.TRUE_VALUE_06, X31CWebConst.DATABEAN_ADD_VALUE, strMlad);
				// (個人／法人)メールアドレスリスト.項目ラベル ← メールアドレス一覧照会マップ.メールアドレス一覧.メールアドレス
				targetMailList.sendMessageString(FUW00921SFConst.LABEL_VALUE_06, X31CWebConst.DATABEAN_ADD_VALUE, strMlad);
			}
		}
		
		parentMap = null;
		if (outputMap.containsKey(MAPKEY_FUSV032804SC))
		{
			parentMap = (HashMap)outputMap.get(MAPKEY_FUSV032804SC);
		}

		childList = null;

		// 契約種別の個人／法人の別によって格納先が変わる

		beanArray = null;
		targetMailList = null;
		webNewBean = null;

		beanArray = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		webNewBean = beanArray.getDataBean(0);

		if (JFUStrConst.KEI_SBT_KOJINCD.equals(keiyakuSbt))
		{
			beanArray = bean[0].getDataBeanArray(FUW00921SFConst.P_EMAIL_LIST);
		}
		else
		{
			beanArray = bean[0].getDataBeanArray(FUW00921SFConst.E_EMAIL_LIST);
		}
		targetMailList = beanArray.getDataBean(0);

		childList = null;
		
		// 共有フォームBeanの契約者情報を取得
		X31SDataBeanAccessArray keiyakuInfoBeanArray = webNewBean.getDataBeanArray(CommonInfoCFConst.KEIYAKUSHA_INFO);
		X31SDataBeanAccess keiyakuInfoBean = keiyakuInfoBeanArray.getDataBean(0);

		if (parentMap.containsKey(MAPKEY_ECK0201B503CBSMSG1LIST))
		{
			childList = (ArrayList)parentMap.get(MAPKEY_ECK0201B503CBSMSG1LIST);

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				if (JFUStrConst.CD00871_1.equals(childMap.get("rrks_bunrui_cd")))
				{
					Object objMlad = childMap.get(MAPKEY_MLAD);
					String strMlad = (objMlad != null) ? (((String)objMlad)) : ("");
					X31SDataBeanAccess subbean = bean[0];
	
					strMlad = strMlad.replaceAll("^[ 　\\t]+", "");
					strMlad = strMlad.replaceAll("[ 　\\t]+$", "");
	
					if (strMlad.length() <= 0)
					{
						continue; // ブランク値はリストに登録しない
					}
	
					if (!JFUWebCommon.isEmail1Check(strMlad))
					{
						// メールアドレスの形式がEmail1形式でない場合はリストに登録しない
						continue;
					}
	
					if (!mladSummary.contains(strMlad))
					{
						// (個人／法人)メールアドレスリスト.項目実値 ← メールアドレス一覧照会マップ.メールアドレス一覧.メールアドレス
						targetMailList.sendMessageString(FUW00921SFConst.TRUE_VALUE_06, X31CWebConst.DATABEAN_ADD_VALUE, strMlad);
						// (個人／法人)メールアドレスリスト.項目ラベル ← メールアドレス一覧照会マップ.メールアドレス一覧.メールアドレス
						targetMailList.sendMessageString(FUW00921SFConst.LABEL_VALUE_06, X31CWebConst.DATABEAN_ADD_VALUE, strMlad);
					}
					
					if (JFUStrConst.KEI_SBT_KOJINCD.equals(keiyakuSbt))
					{
						subbean.sendMessageString(FUW00921SFConst.P_EMAIL, X31CWebConst.DATABEAN_SET_VALUE, strMlad);
					}
					else
					{
						subbean.sendMessageString(FUW00921SFConst.E_EMAIL, X31CWebConst.DATABEAN_SET_VALUE, strMlad);
					}
					break;
				}
			}
			for (int j = 0; j < childList.size(); j++)
			{
				HashMap childMap = (HashMap)childList.get(j);
				if (JFUStrConst.CD00871_0.equals(childMap.get("rrks_bunrui_cd")))
				{
					Object objMlad = childMap.get(MAPKEY_MLAD);
					String strMlad = (objMlad != null) ? (((String)objMlad)) : ("");
	
					strMlad = strMlad.replaceAll("^[ 　\\t]+", "");
					strMlad = strMlad.replaceAll("[ 　\\t]+$", "");
					// 更新対象のレコードがあれば、連絡先メールアドレスの情報を共有フォームBeanに詰める
					keiyakuInfoBean.sendMessageString(CommonInfoCFConst.RRKS_NO_MLAD_09, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(RRKS_NO));
					break;
				}
			}
		}
		return bean;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV032801SC_N(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(MAPKEY_FUNC_CODE, func_code);

		// ---------------------------------------------------------------------
		// 共有フォームBean.ＷＥＢアクセス情報[0].ＳＹＳＩＤ → お客様一意照会マップ.ＫＥＹ＿SYSID
		parentMap.put(MAPKEY_KEY_SYSID, getWebAccInfo(bean[1]).sendMessageString(CommonInfoCFConst.SYSID_69, X31CWebConst.DATABEAN_GET_VALUE));

		// ---------------------------------------------------------------------
		// サービスフォームBean.運用日付を設定 → お客様一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put(MAPKEY_KEY_RSV_APLY_YMD, bean[0].sendMessageString(FUW00921SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE));

		// ---------------------------------------------------------------------
		outputMap.put(MAPKEY_FUSV032801SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param keiyakuSbt　契約種別
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV032802SC_N(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(MAPKEY_FUNC_CODE, func_code);

		// ---------------------------------------------------------------------
		// 共有フォームBean.ＷＥＢアクセス情報[0].ＳＹＳＩＤ → お客様<法人>一意照会マップ.ＫＥＹ＿SYSID
		parentMap.put(MAPKEY_KEY_SYSID, getWebAccInfo(bean[1]).sendMessageString(CommonInfoCFConst.SYSID_69, X31CWebConst.DATABEAN_GET_VALUE));

		// 契約種別
		parentMap.put(MAPKEY_KEIYAKU_SBT, JFUStrConst.EMPTY);
		// Web申込機能コード
		parentMap.put(MAPKEY_WEB_MSKM_FUNC_CD, JPCModelConstant.FUNC_CD_3);

		outputMap.put(MAPKEY_FUSV032802SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV032803SC_N(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// ---------------------------------------------------------------------
		// 共通情報のマッピング
		parentMap.put(MAPKEY_FUNC_CODE, func_code);

		// ---------------------------------------------------------------------
		// 共有フォームBean.ＷＥＢアクセス情報[0].ＳＹＳＩＤ → メールアドレス一覧照会マップ.ＫＥＹ＿SYSID
		parentMap.put(MAPKEY_KEY_SYSID, getWebAccInfo(bean[1]).sendMessageString(CommonInfoCFConst.SYSID_69, X31CWebConst.DATABEAN_GET_VALUE));

		// ---------------------------------------------------------------------
		// 
		// → メールアドレス一覧照会マップ.ＫＥＹ＿サービス契約回線内訳番号
		parentMap.put(MAPKEY_KEY_SVC_KEI_UCWK_NO, "");

		// ---------------------------------------------------------------------
		outputMap.put(MAPKEY_FUSV032803SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV032804SC_N(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(MAPKEY_FUNC_CODE, func_code);

		// ---------------------------------------------------------------------
		// 共有フォームBean.ＷＥＢアクセス情報[0].ＳＹＳＩＤ → 連絡先メールアドレス一覧照会.SYSID
		parentMap.put(MAPKEY_SYSID, getWebAccInfo(bean[1]).sendMessageString(CommonInfoCFConst.SYSID_69, X31CWebConst.DATABEAN_GET_VALUE));

		// ---------------------------------------------------------------------
		outputMap.put(MAPKEY_FUSV032804SC, parentMap);

		return outputMap;
	}

	/**
	 * ＷＥＢアクセス情報
	 * 
	 * @param webNewInfoBean
	 * @return elseInfoBean
	 */
	private X31SDataBeanAccess getWebAccInfo(X31SDataBeanAccess commonInfoBean)
	{

		// ＷＥＢ新規情報取得
		X31SDataBeanAccess webNewBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);

		// ＷＥＢアクセス情報
		X31SDataBeanAccessArray array = webNewBean.getDataBeanArray(CommonInfoCFConst.WEB_ACCESS_INFO);
		if (array.getCount() == 0)
		{
			array.addDataBean();
		}
		X31SDataBeanAccess bean = array.getDataBean(0);

		return bean;
	}
}