/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹構築
*	モジュール名	：FUSV0012_FUSV0012OPDBMapper
*	ソースファイル名：FUSV0012_FUSV0012OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年07月01日
*＜機能概要＞
*	BP（ご契約者情報入力(新規個人)チェック）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/01	FJ		新規作成
*   v45.00      2019/07/01	FJ) 張本    【ANK-3665-00-00】携帯電話番号の取得率向上対応
*   v50.00      2020/09/01	FJ) 美濃原  【ANK-3917-00-00】提携先企業向けエントリーコードの導入
*   v60.00      2022/09/01	FJ) 張本    【OM-2022-0000457】一般WEB_新規申込時の指示書連携エラー
*   v62.00      2022/11/17	FJ) 大槻    【ANK-4294-00-00】紹介CPの仕組み変更対応
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31BWebBusinessLogic;
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.JPCOnlineMessageConstant;
import eo.common.util.JFUCommonUtil;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW00110SF.FUW00110SFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 * <p>
 * <BR>
 * @author 富士通
 */
public class FUSV0012_FUSV0012OPDBMapper
{
	/** TODO:姓と名の区切り文字をどうするか           全角スペースでよいか */
	private static final String NAMAE_KUGIRI = "　";
	/** 氏名(姓) p_name_last */
	private static final String P_NAME_LAST = "氏名（姓）";
	/** 氏名(名) p_name_first */
	private static final String P_NAME_FIRST = "氏名（名）";
	/** 氏名かな(姓) p_kname_last */
	private static final String P_KNAME_LAST = "氏名かな（姓）";
	/** 氏名かな(名) p_kname_first */
	private static final String P_KNAME_FIRST = "氏名かな（名）";
	/** 生年月日(年) p_birth_year */
	private static final String P_BIRTH_YEAR = "生年月日（年）";
	/** 生年月日(月) p_birth_month */
	private static final String P_BIRTH_MONTH = "生年月日（月）";
	/** 生年月日(日) p_birth_day */
	private static final String P_BIRTH_DAY = "生年月日（日）";
	/** 性別 p_sex */
	private static final String P_SEX = "性別";
	/** 個人メールアドレス keisha_ad_man_input_flg */
	private static final String P_EMAIL = "個人メールアドレス";
	/** 契約者住所手動入力フラグ p_email */
	private static final String KEISHA_AD_MAN_INPUT_FLG = "契約者住所手動入力フラグ";
	/** お客様ステータス：通常 */
	private static final String CUST_STAT_TSUJO = "2";
	/** 契約者タイプコード：マスター会員（個人）  */
	private static final String KEISHA_TYPE_CD_MASTER_KOJIN = "10";

	/* ■ SC */
	/** マップキー メールアドレス */
	private static final String MAPKEY_MLAD = "mlad";
	/** マップキー お客様ステータス */
	private static final String MAPKEY_KEY_CUST_STAT = "cust_stat";
	/** マップキー 契約者タイプコード */
	private static final String MAPKEY_KEY_KEISHA_TYPE_CD = "keisha_type_cd";
	/** マップキー お客様名 */
	private static final String MAPKEY_KEY_CUST_NM = "cust_nm";
	/** マップキー お客様カナ名 */
	private static final String MAPKEY_KEY_CUST_KANA = "cust_kana";
	/** マップキー お客様性別コード */
	private static final String MAPKEY_KEY_CUST_SEX_CD = "cust_sex_cd";
	/** マップキー お客様生年月日 */
	private static final String MAPKEY_KEY_CUST_BIRTHD = "cust_birthd";
	/** マップキー 契約者住所手動入力フラグ */
	private static final String MAPKEY_KEY_KEISHA_AD_MAN_INPUT_FLG = "keisha_ad_man_input_flg";
	/** マップキー 関電G個人情報取扱同意有無 */
	private static final String MAPKEY_KEY_KEPG_KJNIF_TRAT_DOI_UM = "kepg_kjnif_trat_doi_um";
	/** マップキー 関電G個人情報提供不可フラグ */
	private static final String MAPKEY_KEY_KEPG_KJNIFT_FFG = "kepg_kjnift_ffg";
	/** マップキー 親権者名 */
	private static final String MAPKEY_KEY_SKSHA_NM = "sksha_nm";
	/** マップキー 親権者カナ名 */
	private static final String MAPKEY_KEY_SKSHA_KANA = "sksha_kana";
	/** マップキー 親権者生年月日 */
	private static final String MAPKEY_KEY_SKSHA_BIRTHD = "sksha_birthd";
	/** マップキー 親権者続柄コード */
	private static final String MAPKEY_KEY_SKSHA_ZOKUGARA_CD = "sksha_zokugara_cd";
	/** マップキー 続柄その他 */
	private static final String MAPKEY_KEY_ZOKUGARA_OTHER = "zokugara_other";
	/** マップキー 親権者電話番号 */
	private static final String MAPKEY_KEY_SKSHA_TELNO = "sksha_telno";

	/** マップキー 紹介コード */
	private static final String MAPKEY_KEY_INTR_CD = "intr_cd";
	/** マップキー クーポンコード */
	private static final String MAPKEY_KEY_COUPON_CD = "coupon_cd";
	/** マップキー 氏名（姓） */
	private static final String MAPKEY_KEY_LAST = "name_last";
	/** マップキー 分類コード */
	private static final String MAPKEY_KEY_BUNRUI_CD = "bunrui_cd";
	/** マップキー 結果コード(紹介コード欄) */
	private static final String RETURN_CD = "return_cd";
	/** マップキー 結果コード(クーポンコード欄) */
	private static final String RETURN_CD2 = "return_cd2";
	/** マップキー 通常の紹介コード（紹介コード独自チェック対象） */
	private static final String RETURN_TUJYO_CD = "return_tujyo_cd";
	/** マップキー 申込区分 */
	private static final String MAPKEY_MSKM_KBN = "mskm_kbn";
	/** マップキー お客様<個人>登録SC */
	private static final String MAPKEY_KEY_FUSV001201SC = "FUSV001201SC";
	/** マップキー 連絡先登録SC */
	private static final String MAPKEY_KEY_FUSV001202SC = "FUSV001202SC";
	/** マップキー 紹介者チェックCC */
	private static final String MAPKEY_KEY_FUSV001201CC = "FUSV001201CC";
	/** マップキー 住所情報分割CC */
	private static final String MAPKEY_KEY_FUSV001202CC = "FUSV001202CC";
	/** エイジング一覧照会（ユニーク）SC */
	private static final String MAPKEY_KEY_FUSV001203SC = "FUSV001203SC";

	/* ■ その他 */
	/** マップキー 機能コード */
	private static final String MAPKEY_FUNC_CODE = "func_code";
	/** 文字列「"0"」  */
	private static final String STR_ZERO = "0";

	// ■SC明細
	/** エイジング一覧照会明細 */
	private static final String EZM0111B040CBSMSG1LIST = "EZM0111B040CBSMsg1List";

	/**
	 * コンストラクタ
	 */
	public FUSV0012_FUSV0012OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力１　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param kepgKjnifTratDoiUm　関電G個人情報取扱同意有無
	 * @param kepgKjnifFfg　関電G個人情報提供不可フラグ
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV001201SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String kepgKjnifTratDoiUm,
			String kepgKjnifFfg, String under20flg)
	{

		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);

		// ---------------------------------------------------------------------
		// 定数：通常 → お客様＜個人＞登録マップ.お客様ステータス
		parentMap.put(MAPKEY_KEY_CUST_STAT, CUST_STAT_TSUJO);

		// ---------------------------------------------------------------------
		// 定数：マスター会員（個人） → お客様＜個人＞登録マップ.契約者タイプコード
		parentMap.put(MAPKEY_KEY_KEISHA_TYPE_CD, KEISHA_TYPE_CD_MASTER_KOJIN);

		// ---------------------------------------------------------------------
		// 氏名（姓）＋（名） → お客様＜個人＞登録マップ.お客様名
		String namaeSei = bean[0].sendMessageString(P_NAME_LAST, X31CWebConst.DATABEAN_GET_VALUE);
		String namaeMei = bean[0].sendMessageString(P_NAME_FIRST, X31CWebConst.DATABEAN_GET_VALUE);
		String namaeName = namaeSei + NAMAE_KUGIRI + namaeMei;

		parentMap.put(MAPKEY_KEY_CUST_NM, namaeName);

		// ---------------------------------------------------------------------
		// 氏名かな（姓）＋（名） → お客様＜個人＞登録マップ.お客様カナ名
		String namaeKsei = bean[0].sendMessageString(P_KNAME_LAST, X31CWebConst.DATABEAN_GET_VALUE);
		String namaeKmei = bean[0].sendMessageString(P_KNAME_FIRST, X31CWebConst.DATABEAN_GET_VALUE);
		String namaeKname = namaeKsei + NAMAE_KUGIRI + namaeKmei;
		// DB側ではひらがなでなくカタカナ（変換開始）
		String namae_kata = JFUWebCommon.convFullHiraToFullKataV(namaeKname);

		parentMap.put(MAPKEY_KEY_CUST_KANA, namae_kata);

		// ---------------------------------------------------------------------
		// 性別 → お客様＜個人＞登録マップ.お客様性別コード

		// ---------------------------------------------------------------------
		String seibetsu = bean[0].sendMessageString(P_SEX, X31CWebConst.DATABEAN_GET_VALUE);

		parentMap.put(MAPKEY_KEY_CUST_SEX_CD, seibetsu);

		// ---------------------------------------------------------------------
		// 生年月日（年）＋（月）＋（日） → お客様＜個人＞登録マップ.お客様生年月日
		String birthY = bean[0].sendMessageString(P_BIRTH_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String birthM = bean[0].sendMessageString(P_BIRTH_MONTH, X31CWebConst.DATABEAN_GET_VALUE);
		String birthD = bean[0].sendMessageString(P_BIRTH_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		birthM = (birthM.length() == 1) ? (STR_ZERO + birthM) : (birthM);
		birthD = (birthD.length() == 1) ? (STR_ZERO + birthD) : (birthD);
		String birthYmd = birthY + birthM + birthD;

		parentMap.put(MAPKEY_KEY_CUST_BIRTHD, birthYmd);

		// ---------------------------------------------------------------------
		// ---------------------------------------------------------------------
		// 契約者住所手動入力フラグ → お客様＜個人＞登録マップ.契約者住所手動入力フラグ 20120807対応 Otsuka

		// ---------------------------------------------------------------------
		String keisha_ad_man_input_flg = bean[0].sendMessageString(KEISHA_AD_MAN_INPUT_FLG, X31CWebConst.DATABEAN_GET_VALUE);

		parentMap.put(MAPKEY_KEY_KEISHA_AD_MAN_INPUT_FLG, keisha_ad_man_input_flg);

		// ---------------------------------------------------------------------

		parentMap.put(MAPKEY_KEY_KEPG_KJNIF_TRAT_DOI_UM, kepgKjnifTratDoiUm);
		
		parentMap.put(MAPKEY_KEY_KEPG_KJNIFT_FFG, kepgKjnifFfg);

		// 20歳未満の場合に設定する
		if (JFUStrConst.CD00002_1.equals(under20flg))
		{
			// 親権者名
			String shinkenshaSei = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_SEI, X31CWebConst.DATABEAN_GET_VALUE);
			String shinkenshaMei = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_MEI, X31CWebConst.DATABEAN_GET_VALUE);
			String shinekenshaNm = JFUStrConst.EMPTY;
			if(!JFUWebCommon.isNull(shinkenshaSei) && !JFUWebCommon.isNull(shinkenshaMei))
			{
				shinekenshaNm = shinkenshaSei + NAMAE_KUGIRI + shinkenshaMei;
			}
			parentMap.put(MAPKEY_KEY_SKSHA_NM, shinekenshaNm);

			// 親権者カナ名
			String shinkenshaSeiKana = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_SEI_KANA, X31CWebConst.DATABEAN_GET_VALUE);
			String shinkenshaMeiKana = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_MEI_KANA, X31CWebConst.DATABEAN_GET_VALUE);
			String shinekenshaNmKana = JFUStrConst.EMPTY;
			if(!JFUWebCommon.isNull(shinkenshaSeiKana) && !JFUWebCommon.isNull(shinkenshaMeiKana))
			{
				shinekenshaNmKana = shinkenshaSeiKana + NAMAE_KUGIRI + shinkenshaMeiKana;
			}
			parentMap.put(MAPKEY_KEY_SKSHA_KANA, JFUWebCommon.convFullHiraToFullKataV(shinekenshaNmKana));

			// 親権者生年月日
			String shinkenshaBirthY = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_BIRTH_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
			String shinkenshaBirthM = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_BIRTH_MONTH, X31CWebConst.DATABEAN_GET_VALUE);
			String shinkenshaBirthD = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_BIRTH_DAY, X31CWebConst.DATABEAN_GET_VALUE);
			shinkenshaBirthM = (shinkenshaBirthM.length() == 1) ? (STR_ZERO + shinkenshaBirthM) : (shinkenshaBirthM);
			shinkenshaBirthD = (shinkenshaBirthD.length() == 1) ? (STR_ZERO + shinkenshaBirthD) : (shinkenshaBirthD);
			String shinkenshaBirthYmd = shinkenshaBirthY + shinkenshaBirthM + shinkenshaBirthD;
			parentMap.put(MAPKEY_KEY_SKSHA_BIRTHD, shinkenshaBirthYmd);

			// 親権者続柄コード
			String shinkenshaZokugaraCd = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_ZOKUGARA_CD, X31CWebConst.DATABEAN_GET_VALUE);
			parentMap.put(MAPKEY_KEY_SKSHA_ZOKUGARA_CD, shinkenshaZokugaraCd);

			// 続柄その他
			String shinkenshaZokugaraSonota = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_ZOKUGARA_SONOTA, X31CWebConst.DATABEAN_GET_VALUE);
			parentMap.put(MAPKEY_KEY_ZOKUGARA_OTHER, shinkenshaZokugaraSonota);

			// 親権者電話番号
			String shinkenshaTelNo1 = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_TELNO_1, X31CWebConst.DATABEAN_GET_VALUE);
			String shinkenshaTelNo2 = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_TELNO_2, X31CWebConst.DATABEAN_GET_VALUE);
			String shinkenshaTelNo3 = bean[0].sendMessageString(FUW00110SFConst.SHINKENSHA_TELNO_3, X31CWebConst.DATABEAN_GET_VALUE);
			String shineknshaTelNo = shinkenshaTelNo1 + shinkenshaTelNo2 + shinkenshaTelNo3;
			parentMap.put(MAPKEY_KEY_SKSHA_TELNO, shineknshaTelNo);
		}

		outputMap.put(MAPKEY_KEY_FUSV001201SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力１　[1]：共有フォームビーン
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV001202SC(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);

		// ---------------------------------------------------------------------
		// 個人メールアドレス → 連絡先登録マップ.メールアドレス
		String eMail = bean[0].sendMessageString(P_EMAIL, X31CWebConst.DATABEAN_GET_VALUE);

		parentMap.put(MAPKEY_MLAD, eMail);

		// ---------------------------------------------------------------------
		outputMap.put(MAPKEY_KEY_FUSV001202SC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力１　[1]：共有フォームビーン
	 * @param outputMap
	 * @param bunrui_cd 分類コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV001201CC(X31SDataBeanAccess[] bean, HashMap outputMap, String bunrui_cd)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 紹介コード
		parentMap.put(MAPKEY_KEY_INTR_CD, bean[0].sendMessageString(FUW00110SFConst.INTR_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// クーポンコード
		parentMap.put(MAPKEY_KEY_COUPON_CD, bean[0].sendMessageString(FUW00110SFConst.COUPON_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// 氏名（姓）
		parentMap.put(MAPKEY_KEY_LAST, bean[0].sendMessageString(FUW00110SFConst.P_NAME_LAST, X31CWebConst.DATABEAN_GET_VALUE));
		// 分類コード 
		parentMap.put(MAPKEY_KEY_BUNRUI_CD, bunrui_cd);

		outputMap.put(MAPKEY_KEY_FUSV001201CC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力１　[1]：共有フォームビーン
	 * @param outputMap
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV001202CC(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>();

		String mkmKbn =
				bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0)
					.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_GET_VALUE);

		// 申込区分
		parentMap.put(MAPKEY_MSKM_KBN, mkmKbn);

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ご契約者住所・都道府県・市区町村 → 住所分割処理マップ2.都道府県・市区町村
		parentMap.put("state_city", bean[0].sendMessageString("ご契約者住所・都道府県・市区町村", X31CWebConst.DATABEAN_GET_VALUE));
		// ご契約者住所・字 → 住所分割処理マップ2.字
		parentMap.put("aza", bean[0].sendMessageString("ご契約者住所・字", X31CWebConst.DATABEAN_GET_VALUE));
		// ご契約者住所・丁目・番地等 → 住所分割処理マップ2.丁目・番地等
		parentMap.put("chome_bnchi", bean[0].sendMessageString("ご契約者住所・丁目・番地等", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(MAPKEY_KEY_FUSV001202CC, parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング（紹介コードチェック　結果コード）
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public String getFUSV001201CC_RETURN_CD(HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(MAPKEY_KEY_FUSV001201CC))
		{
			parentMap = (HashMap)outputMap.get(MAPKEY_KEY_FUSV001201CC);
		}

		if (null != parentMap)
		{
			if (parentMap.containsKey(RETURN_CD))
			{
				return (String)parentMap.get(RETURN_CD);
			}
		}
		return null;

	}

	/**
	 * 下りマッピング（紹介コードチェック　結果コード）
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	@SuppressWarnings("unchecked")
	public String getFUSV001201CC_RETURN_CD2(HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(MAPKEY_KEY_FUSV001201CC))
		{
			parentMap = (HashMap)outputMap.get(MAPKEY_KEY_FUSV001201CC);
		}

		if (null != parentMap)
		{
			if (parentMap.containsKey(RETURN_CD2))
			{
				return (String)parentMap.get(RETURN_CD2);
			}
		}
		return null;

	}
	
	/**
	 * エイジング一覧照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @param funcCd 機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV001203SC(X31SDataBeanAccess[] bean, HashMap outputMap, String funcCd)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", funcCd);

		// eoID
		String eoid = bean[0].sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_GET_VALUE);

		// KEY_エイジング種別コード(eoID)
		parentMap.put("key_aging_sbt_cd", JFUStrConst.CD00412_004);
		// KEY_エイジング対象値
		parentMap.put("key_aging_tg_value", eoid);

		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EZM0111B040CBSMSG1LIST, arrayList);

		outputMap.put(MAPKEY_KEY_FUSV001203SC, parentMap);

		return outputMap;
	}

	/**
	 * エイジング一覧照会の下りマッピング処理です。
	 * 
	 * <br>
	 * @param bean データBean
	 * @param outputMap 結果マップ
	 * @return データBean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV001203SC(X31SDataBeanAccess bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey(MAPKEY_KEY_FUSV001203SC))
		{
			parentMap = (HashMap)outputMap.get(MAPKEY_KEY_FUSV001203SC);
		}

		if (parentMap != null && parentMap.size() > 0 && parentMap.containsKey(EZM0111B040CBSMSG1LIST))
		{
			// 検索結果全件取得
			ArrayList childList = (ArrayList)parentMap.get(EZM0111B040CBSMSG1LIST);
			if(childList == null || childList.size() == 0)
			{
				// 結果が存在しない場合、空を設定し処理を終了する
				bean.sendMessageString("エイジングステータス", X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				return bean;
			}

			// 検索結果の0番目を取得
			HashMap childMap = (HashMap)childList.get(0);
			if(childMap == null || childMap.size() == 0)
			{
				// 結果が存在しない場合、空を設定し処理を終了する
				bean.sendMessageString("エイジングステータス", X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
				return bean;
			}

			// エイジングステータス
			bean.sendMessageString("エイジングステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("aging_stat"));
		}

		return bean;
	}

	/**
	 * 契約者情報のチェック
	 * 
	 * @param webNewBean
	 * @return
	 */
	public boolean checkKeishaInfo(X31SDataBeanAccess webNewBean, X31BWebBusinessLogic bl)
	{
		boolean chkResult = true;
		// 契約者情報
		X31SDataBeanAccessArray keiyakushaInfoBeanArray = webNewBean.getDataBeanArray(CommonInfoCFConst.KEIYAKUSHA_INFO);
		if (keiyakushaInfoBeanArray.getCount() <= 0)
		{
			keiyakushaInfoBeanArray.addDataBean();
		}
		X31SDataBeanAccess keiyakushaInfoBean = keiyakushaInfoBeanArray.getDataBean(0);

		// eoID
		String eoID = keiyakushaInfoBean.sendMessageString(CommonInfoCFConst.EOID_09, X31CWebConst.DATABEAN_GET_VALUE);
		// eoIDパスワード
		String eoidPw = keiyakushaInfoBean.sendMessageString(CommonInfoCFConst.EOID_PWD_09, X31CWebConst.DATABEAN_GET_VALUE);
		// メールアドレス
		String email = keiyakushaInfoBean.sendMessageString(CommonInfoCFConst.KOJIN_MLAD_09, X31CWebConst.DATABEAN_GET_VALUE);
		// 携帯電話番号
		String tel1 = keiyakushaInfoBean.sendMessageString(CommonInfoCFConst.KSH_TELNO1_09, X31CWebConst.DATABEAN_GET_VALUE);
		String tel2 = keiyakushaInfoBean.sendMessageString(CommonInfoCFConst.KSH_TELNO2_09, X31CWebConst.DATABEAN_GET_VALUE);
		String tel3 = keiyakushaInfoBean.sendMessageString(CommonInfoCFConst.KSH_TELNO3_09, X31CWebConst.DATABEAN_GET_VALUE);
		// 性別
		String sex = keiyakushaInfoBean.sendMessageString(CommonInfoCFConst.SEX_09, X31CWebConst.DATABEAN_GET_VALUE);
		// 契約種別
		String keiSbt = webNewBean.sendMessageString(CommonInfoCFConst.KEI_SBT_06, X31CWebConst.DATABEAN_GET_VALUE);

		// eoID
		if (!eoIDCheck(eoID, "eoid", bl))
		{
			chkResult = false;
		}
		// eoIDパスワード
		if (!eoIDPasswordCheck(eoID, eoidPw, "eoidpw", bl))
		{
			chkResult = false;
		}
		// メールアドレス
		if (!emailCheck(email, "contractPcMailAdderss1", bl))
		{
			chkResult = false;
		}

		// 個人
		if (JFUStrConst.KEI_SBT_KOJINCD.equals(keiSbt))
		{
			// 携帯電話番号
			if (!checkTel(tel1, tel2, tel3, "pTel", bl))
			{
				chkResult = false;
			}
			// 性別
			if (!genderCheck(sex, "contractGender1and2", bl))
			{
				chkResult = false;
			}
		}
		// 法人
		else if (JFUStrConst.KEI_SBT_HOJINCD.equals(keiSbt))
		{
			// 携帯電話番号
			if (!checkTel(tel1, tel2, tel3, "eTel", bl))
			{
				chkResult = false;
			}
		}
		return chkResult;
	}

	/**
	 * 入力チェック（メールアドレス）
	 * @param email
	 * @param skbt
	 * @return
	 */
	public boolean emailCheck(String email, String skbt, X31BWebBusinessLogic bl) {

		String[] mail_MSG = new String[] { "メールアドレス", "E-mail", "80" };
		String[] mail_LENGTH_MSG = new String[] { "メールアドレス", "E-mail", "80" };
		String[] mail_DOMAIN_MSG = new String[] { "メールアドレス" };

		//必須チェック
		if (JFUWebCommon.isNull(email))
		{
			setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0010_TW, mail_MSG, null, bl);
			return false;
		}
		//ドメインチェック
		else if (!JFUWebCommon.isEmail1Check(email))
		{
			setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0220_TW, mail_DOMAIN_MSG, null, bl);
			return false;
		}
		else if (email.length() > 80)
		//桁数チェック
		{
			setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0030_TW, mail_LENGTH_MSG, null, bl);
			return false;
		}
		return true;
	}

	/**
	 * 入力チェック（eoid）
	 * @param eoid
	 * @param skbt
	 * @return
	 */
	public boolean eoIDCheck(String eoid, String skbt, X31BWebBusinessLogic bl) {

		String[] eoID_MSG = new String[] { "eoID", "4", "80" };
		String[] eoID_REQ_MSG = new String[] { "eoID", "入力" };
		String[] eoID_INP_MSG = new String[] { "入力されたeoID" };

		if (JFUWebCommon.isNull(eoid))
		{
			setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0010_TW, eoID_REQ_MSG, null, bl);
			return false;
		}
		else if (!JFUWebCommon.isEnNumber11Check(eoid))
		{
			setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKBE186_TW, eoID_MSG, null, bl);
			return false;
		}
		else if (eoid.length() < 4 || eoid.length() > 80)
		{
			setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKB0040_TW, eoID_MSG, null, bl);
			return false;
		}

		// eoIDが数字12桁で51から始まる場合はエラー
		if (JFUWebCommon.isNumber1Check(eoid)){
			if(eoid.length() == 12) {
				if (eoid.startsWith("51"))
				{
					setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF2210_NE, eoID_INP_MSG, null, bl);
					return false;
				}
			}
		}
		return true;
	}

	/**
	 * 入力チェック（eoid、パスワード）
	 * @param eoid
	 * @param eoidpw
	 * @param skbt
	 * @return
	 */
	public boolean eoIDPasswordCheck(String eoid, String eoidpw, String skbt, X31BWebBusinessLogic bl) {

		String[] eoidpw_MSG = new String[] { "eoIDパスワード", "6", "16" };
		String[] eoidpw_REQ_MSG = new String[] { "eoIDパスワード", "入力" };
		String[] eoidpw_OTH_MSG = new String[] { "eoIDパスワードにはeoIDを含まない値を" };

		if (JFUWebCommon.isNull(eoidpw))
		{
			setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0010_TW, eoidpw_REQ_MSG, null, bl);
			return false;
		}
		else if (!JFUCommonUtil.chkHankakuEisuji2(eoidpw))
		{
			setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0160_TW, eoidpw_MSG, null, bl);
			return false;
		}
		else if (eoidpw.length() < 6 || eoidpw.length() > 16)
		{
			setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKB0040_TW, eoidpw_MSG, null, bl);
			return false;
		}
		for (int i = 0; i < eoidpw.length(); i++)
		{
			String cStr = eoidpw.substring(i, i + 1);
			if (cStr.matches("[0-9a-zA-Z!#\\(\\)*,\\.\\/;<=>@\\[\\]\\^_\\{|\\}]"))
			{
			}
			else
			{
				setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF1050_TW, eoidpw_MSG, null, bl);
				return false;
			}
		}
		// eoIDを含む場合はエラー
		if (eoidpw.indexOf(eoid) != -1)
		{
			setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF2170_NE, eoidpw_OTH_MSG, null, bl);
			return false;
		}

		return true;
	}

	/**
	 * 入力チェック（性別）
	 * @param gender
	 * @param skbt
	 * @return
	 */
	public boolean genderCheck(String gender, String skbt, X31BWebBusinessLogic bl) {

		String[] sex_MSG = new String[] {"性別", "選択"};
		// ----- 必須チェック：性別（男女） -----
		if (!"1".equals(gender) && !"2".equals(gender))
		{
			setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0420_TW, sex_MSG, null, bl);
			return false;
		}
		return true;
	}

	/**
	 * 入力チェック（携帯電話番号）
	 * @param telArea
	 * @param telLocal
	 * @param telSubscriber
	 * @param skbt
	 * @return
	 */
	public boolean checkTel(String telArea, String telLocal, String telSubscriber, String skbt, X31BWebBusinessLogic bl) {

		String[] cTel_FORMAT_MSG = new String[] { "携帯電話番号" };
		// 携帯電話番号
		String[] cTel_MSG1 = new String[] { "携帯電話番号", "入力" };
		// 携帯電話番号（１）桁数
		String[] cTelArea_MSG = new String[] { "携帯電話番号（１）", "半角数字", "6" };
		// 携帯電話番号（２）桁数
		String[] cTelLocal_MSG = new String[] { "携帯電話番号（２）", "半角数字", "5" };
		// 携帯電話番号（３）桁数
		String[] cTelSubscriber_MSG = new String[] { "携帯電話番号（３）", "半角数字", "6" };

		//ご契約者住所：電話番号
		String contractantTel_msg = "";
		boolean telFormatCheckFlg = true;

		if (JFUWebCommon.isNull(telArea) || JFUWebCommon.isNull(telLocal) || JFUWebCommon.isNull(telSubscriber))
		{
			contractantTel_msg = setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0420_TW, cTel_MSG1, contractantTel_msg, bl);
			telFormatCheckFlg = false;
		}
		else
		{

			//ご契約者住所：電話番号（市外局番）
			if (!JFUWebCommon.isNumber1Check(telArea))
			{
				contractantTel_msg = setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0140_TW, cTelArea_MSG, contractantTel_msg, bl);
				telFormatCheckFlg = false;
			}
			// 桁数チェック
			else if (telArea.length() > 6)
			{
				contractantTel_msg = setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0030_TW, cTelArea_MSG, contractantTel_msg, bl);
				telFormatCheckFlg = false;
			}

			//ご契約者住所：電話番号（市内局番）
			if (!JFUWebCommon.isNumber1Check(telLocal))
			{
				contractantTel_msg = setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0140_TW, cTelLocal_MSG, contractantTel_msg, bl);
				telFormatCheckFlg = false;
			}
			// 桁数チェック
			else if (telLocal.length() > 5)
			{
				contractantTel_msg = setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0030_TW, cTelLocal_MSG, contractantTel_msg, bl);
				telFormatCheckFlg = false;
			}

			//ご契約者住所：電話番号（加入者番号）
			if (!JFUWebCommon.isNumber1Check(telSubscriber))
			{
				contractantTel_msg =
						setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0140_TW, cTelSubscriber_MSG, contractantTel_msg, bl);
				telFormatCheckFlg = false;
			}
			// 桁数チェック
			else if (telSubscriber.length() > 6)
			{
				contractantTel_msg =
						setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0030_TW, cTelSubscriber_MSG, contractantTel_msg, bl);
				telFormatCheckFlg = false;
			}
		}

		//電話番号の妥当性チェック
		if (telFormatCheckFlg)
		{
			String telNo = telArea + telLocal + telSubscriber;

			if (!JFUWebCommon.isTelno2Check(telNo))
			{
				setDirectMessageItem(skbt, JPCOnlineMessageConstant.EKF0400_TW, cTel_FORMAT_MSG, null, bl);
				telFormatCheckFlg = false;
			}
		}
		return telFormatCheckFlg;
	}

	/**
	 * @param skbt
	 * @param msgId
	 * @param msgRep
	 * @param contractantTel_msg
	 * @return
	 */
	private String setDirectMessageItem(String skbt, String msgId, String[] msgRep, String errMsg, X31BWebBusinessLogic bl)
	{
		String[] rep = msgRep.clone();
		if (!JFUWebCommon.isNull(errMsg))
		{
			errMsg += JFUStrConst.RETURN_CODE_BR;
			if (msgRep.length >= 1)
			{
				rep[0] = errMsg + rep[0];
			}
		}
		JFUWebCommon.setMessageInfo(bl, msgId, rep, skbt);
		errMsg = JFUWebCommon.getMessage(msgId, rep);

		return errMsg;
	}
	
	/**
	 * 通常の紹介コード（紹介コード独自チェック対象）の値取得
	 * @param outputMap
	 * @return
	 */
	public String getFUSV001201CC_RETURN_TUJYO_CD(HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(MAPKEY_KEY_FUSV001201CC))
		{
			parentMap = (HashMap)outputMap.get(MAPKEY_KEY_FUSV001201CC);
		}

		if (null != parentMap)
		{
			
			if (parentMap.containsKey(RETURN_TUJYO_CD))
			{
				return (String)parentMap.get(RETURN_TUJYO_CD);
			}
		}
		return JFUStrConst.EMPTY;

	}

}