/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0054_FUSV0054OPDBMapper
*	ソースファイル名：FUSV0054_FUSV0054OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年08月02日
*＜機能概要＞
*	BP（メールアドレス追加申込(申込)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/02	FJ)岡井		新規作成
*	v3.00   	2012/04/12	FJ)山名		【ST2-2012-000064】SOD発行障害
*	v4.00		2012/08/24	FJ)井口		【ANK-0545-00-00】 PMP：サービスコード対応（指示書登録）
*	v4.00		2012/09/25	FJ)井口		【ANK-1163-00-00】 変更系申込が可能となるタイミングについて
*	v4.00		2012/10/04	FJ)岡井		【ANK-1223-00-00】 進捗補足事項編集対応
*	v5.00		2013/03/06	FJ)井口		【ST1-2013-0000437】 フロント「オプトインメール受信設定」設定漏れ対応
*	v23.00		2016/03/15	FJ)中西		【ANK-2350-00-00】 【ＮＯ．１８２３】POPIDパスワード、WebIDパスワードの再振不正
*	v32.00		2017/04/13	FJ)横山		【ANK-3149-00-00】新セキュリティパック導入
*
**********************************************************************/
package eo.web.webview.mapping;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

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 eo.common.constant.JFUStrConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW01901SF.FUW01901SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 * <p>
 * <BR>
 * @author 富士通
 */
public class FUSV0054_FUSV0054OPDBMapper
{

	/** アウトマップキー FUSV005401SC */
	private static final String FUSV005401SC = "FUSV005401SC";
	/** アウトマップキー FUSV005402SC */
	private static final String FUSV005402SC = "FUSV005402SC";
	/** アウトマップキー FUSV005403SC */
	private static final String FUSV005403SC = "FUSV005403SC";
	/** アウトマップキー FUSV005404SC */
	private static final String FUSV005404SC = "FUSV005404SC";
	/** アウトマップキー FUSV005405SC */
	private static final String FUSV005405SC = "FUSV005405SC";
	/** アウトマップキー FUSV005406SC */
	private static final String FUSV005406SC = "FUSV005406SC";
	/** アウトマップキー FUSV005407SC */
	private static final String FUSV005407SC = "FUSV005407SC";
	/** アウトマップキー FUSV005408SC */
	private static final String FUSV005408SC = "FUSV005408SC";
	/** アウトマップキー FUSV005409SC */
	private static final String FUSV005409SC = "FUSV005409SC";
	/** アウトマップキー FUSV005410SC */
	private static final String FUSV005410SC = "FUSV005410SC";
	/** アウトマップキー FUSV005411SC */
	private static final String FUSV005411SC = "FUSV005411SC";
	/** アウトマップキー FUSV005412SC */
	private static final String FUSV005412SC = "FUSV005412SC";
	
	/** アウトマップキー オーダ発行 対象データ */
	private static final String FUSV005402CC = "FUSV005402CC";
	/** アウトマップキー オーダ発行 対象データ */
	private static final String FUSV005401CC = "FUSV005401CC";
	/** アウトマップキー オプトインメール受信設定 対象データ */
	private static final String FUSV005403CC = "FUSV005403CC";
	/** アウトマップキー  オプトインメール受信設定登録CC */
	private static final String FUSV005404CC = "FUSV005404CC";
	/** アウトマップキー  メールアドレス追加申込部品CC */
	private static final String FUSV005405CC = "FUSV005405CC";
	/** ファミリーパック誘導要否判定CC */
	private static final String FUSV005413CC = "FUSV005413CC";
	
	//【ANK-2350-00-00】 【ＮＯ．１８２３】POPIDパスワード、WebIDパスワードの再振不正 2016.03.15 FJ)中西 add start
	/** アウトマップキー FUSV005406CC */
	private static final String FUSV005406CC = "FUSV005406CC";
	//【ANK-2350-00-00】 【ＮＯ．１８２３】POPIDパスワード、WebIDパスワードの再振不正 2016.03.15 FJ)中西 add end
	
	/** アウトマップキー 会員情報更新依頼CC */
	private static final String CKSV900101CC = "CKSV900101CC";

	/** マップキー 申込内容承認登録明細 */
	private static final String EKK0011D020CBSMSG1LIST = "EKK0011D020CBSMsg1List";
	/** マップキー 異動理由明細 */
	private static final String EKK1091D010CBSMSG1LIST = "EKK1091D010CBSMsg1List";
	/** マップキー オプションサービス契約一意照会 */
	private static final String EKK0351A010_LIST = "EKK0351A010CBSMsg1List";
	/** マップキー オプションサービス契約＜ISP＞一意照会.オプションサービス契約<ISP>一意照会明細 */
	private static final String EKK0361A010_LIST = "EKK0361A010CBSMsg1List";
	/** マップキー オーダ発行リスト */
	private static final String TRGT_DATA_LIST = "trgt_data_list";

	/** マップキー 機能コード */
	private static final String FUNC_CODE = "func_code";
	/** マップキー SYSID */
	private static final String SYSID = "sysid";
	/** マップキー サービス契約番号 */
	private static final String SVC_KEI_NO = "svc_kei_no";
	/** マップキー 希望メールアカウント1 */
	private static final String KIBO_ML_ACCOUNT_1 = "kibo_ml_account_1";
	/** マップキー 請求契約番号 */
	private static final String SEIKY_KEI_NO = "seiky_kei_no";
	/** マップキー メールアドレス */
	private static final String MLAD = "mlad";
	/** マップキー POPパスワード */
	private static final String POP_PWD = "shk_pop_id_pwd";
	/** マップキー 容量 */
	private static final String CAPA = "capa";
	/** マップキー 異動区分 */
	private static final String IDO_DIV = "ido_div";
	/** マップキー 最終更新年月日時分秒 */
	private static final String UPD_DTM_BF = "upd_dtm_bf";
	/** 進捗特記事項1 */
	private static final String PRG_TKJK_1 = "prg_tkjk_1";

	/** マップキー 処理対象SYSID */
	private static final String TRAN_TRGT_SYSID = "tran_trgt_sysid";

	/** マップキー データ移送 データ移送キー */
	private static final String KEY_CNT = "key_cnt";
	/** マップキー データ移送 データ移送数 */
	private static final String TRANCE_CNT = "4";
	/** マップキー データ移送 データ移送先名 */
	private static final String TRANCE_NM = "tranNm";
	/** マップキー データ移送 移送データキー１ */
	private static final String TRANCE_DT_1 = "key_1";
	/** マップキー データ移送 移送データキー２ */
	private static final String TRANCE_DT_2 = "key_2";
	/** マップキー データ移送 移送データキー１ */
	private static final String TRANCE_DT_3 = "key_3";
	/** マップキー データ移送 移送データキー２ */
	private static final String TRANCE_DT_4 = "key_4";
	/** マップキー データ移送 移送データ１ */
	private static final String TRANCE_DT_VAL_1 = "FUSV005402SC::op_svc_kei_no,trgt_data_list:opsvkei_info:chaf_opsvkei_no";
	/** マップキー データ移送 移送データ２ */
	/* ++++++++++ v3.00 修正開始 ++++++++++ */
	private static final String TRANCE_DT_VAL_2 = "::kk0351_gene_add_dtm,trgt_data_list:opsvkei_info:chaf_opsvkei_gene_add_dtm";
	/* ++++++++++ v3.00 修正終了 ++++++++++ */
	/** マップキー データ移送 移送データ１ */
	private static final String TRANCE_DT_VAL_3 = "FUSV005402SC::sbop_svc_kei_no,trgt_data_list:opsvkei_info:chaf_sbopsvkei_no";
	/** マップキー データ移送 移送データ２ */
	private static final String TRANCE_DT_VAL_4 = "FUSV005402SC::kk0401_gene_add_dtm,trgt_data_list:opsvkei_info:chaf_sbopsvkei_gene_add_dtm";

	/** マップキー キーカウント */
	private static final String MAIL_KEY_CNT = "2";
	/** 変更後メールアドレス(照査SC) */
	private static final String MAIL_TRANS_KEY_1_VALUE = "FUSV005409SC::mlad,::mlad_af";
	/** 変更後メールアドレス(締結SC) */
	private static final String MAIL_TRANS_KEY_2_VALUE = "FUSV005403SC::mlad,::mlad_af";
	/** SYSID */
	private static final String IN_PARAM_SYSID = "sysId";
	/** マップキー 更新対象ＳＹＳＩＤ (CKSV900101CC) */
	private static final String UPD_TRGT_SYSID = "upd_trgt_sysid";

	private static final HashMap<String,String> SC_MAPPING = new HashMap<String,String>();

	static{
		SC_MAPPING.put(JFUStrConst.CD00037_020, FUSV005409SC);
		SC_MAPPING.put(JFUStrConst.CD00037_030, FUSV005403SC);
		SC_MAPPING.put(JFUStrConst.CD00037_100, FUSV005404SC);
	}

	/** マップキー オーダ発行 SOD基本情報 */
	private static final String SOD_KIHON_INFO = "sod_kihon_info";
	/** マップキー オーダ発行 サービス契約情報 */
	private static final String SVC_KEI_INFO = "svc_kei_info";
	/** マップキー オーダ発行 サービス契約内訳情報 */
	private static final String SVC_KEI_UCWK_INFO = "svc_kei_ucwk_info";
	/** マップキー オーダ発行 オプションサービス契約情報 */
	private static final String OPSVKEI_INFO = "opsvkei_info";
	/** マップキー オーダ発行 変更前オプションサービス契約番号 */
	private static final String CHBF_OPSVKEI_NO = "chbf_opsvkei_no";
	/** マップキー オーダ発行 変更前オプションサービス契約 世代登録年月日時分秒 */
	private static final String CHBF_OPSVKEI_GENE_ADD_DTM = "chbf_opsvkei_gene_add_dtm";
	/** OUT項目:認証ID */
	private static final String OUT_PARAM_RESULT = "out_result";

	/** マップキー SYSID */
	private static final String IN_PARAM_KEY_SYSID = "key_sysid";
	/** マップキー サービス契約番号 */
	private static final String IN_PARAM_KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** 結果コード（0：否、1：要） */
	private static final String OUT_RESULT_CD = "result_cd";

	/** 空文字 */
	private static final String STRING_EMPTY = JFUStrConst.EMPTY;

	/** 特記事項１要素を取得する際のid */
	private static final String PRGADD_ID = "0";

	/**
	 * コンストラクタ
	 */
	public FUSV0054_FUSV0054OPDBMapper()
	{
	}

	/**
	 * FUSV005401SC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param sysid SYSID
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV005401SC(X31SDataBeanAccess bean, HashMap outputMap, String func_code, String sysid)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 共有フォームBean.SSO情報.SYSID → SYSID
		parentMap.put(SYSID, sysid);

		// 申込内容承認登録明細
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EKK0011D020CBSMSG1LIST, arrayList);

		outputMap.put(FUSV005401SC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005402SC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param sysid SYSID
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV005402SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String sysid)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 共有フォームBean.SS0情報.サービス契約番号 → サービス契約番号
		parentMap.put(SVC_KEI_NO, bean[3].sendMessageString(CommonInfoCFConst.SVC_KEI_NO_21, X31CWebConst.DATABEAN_GET_VALUE));

		// 共有フォームBean.SSO情報.SYSID → SYSID
		parentMap.put(SYSID, sysid);

		// 希望メールアドレス → オプションサービス契約＜ISP＞登録.希望メールアカウント1
		parentMap.put(KIBO_ML_ACCOUNT_1, bean[0].sendMessageString(FUW01901SFConst.KIBO_MLAD, X31CWebConst.DATABEAN_GET_VALUE));

		// 共有フォームBean.請求契約情報.請求契約番号 → 請求契約番号
		parentMap.put(SEIKY_KEI_NO, bean[2].sendMessageString(CommonInfoCFConst.SEIKY_KEI_NO_32, X31CWebConst.DATABEAN_GET_VALUE));

		// 共有フォームBean.サービス契約情報.最終更新年月日時分秒 → 更新年月日時分秒
		parentMap.put(UPD_DTM_BF, bean[4].sendMessageString(CommonInfoCFConst.LAST_UPD_DTM_23, X31CWebConst.DATABEAN_GET_VALUE));

		// サービスフォームBean.メールボックス容量 → 容量
		parentMap.put(CAPA, bean[0].sendMessageString(FUW01901SFConst.MLBOX_CAPA, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV005402SC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005403SC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV005403SC(X31SDataBeanAccess bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		outputMap.put(FUSV005403SC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005404SC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV005404SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// サービスフォームBean.メールボックス容量 → 容量
		parentMap.put(CAPA, bean[0].sendMessageString(FUW01901SFConst.MLBOX_CAPA, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV005404SC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005405SC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV005405SC(X31SDataBeanAccess bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		outputMap.put(FUSV005405SC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005406SC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV005406SC(X31SDataBeanAccess bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		outputMap.put(FUSV005406SC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005407SC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opSvcKeiInfoBean　オプションサービス契約情報
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV005407SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 共有フォームBean.SSO情報.サービス契約番号 → サービス契約番号
		parentMap.put(SVC_KEI_NO, bean[3].sendMessageString(CommonInfoCFConst.SVC_KEI_NO_21, X31CWebConst.DATABEAN_GET_VALUE));

		// 進捗特記事項1
		try
		{
			String prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW01902, PRGADD_ID);

			if(prgTkjk1 != null && prgTkjk1.length() > 0)
			{
				parentMap.put(PRG_TKJK_1, prgTkjk1);
			}
			else
			{
				DEBUG_LOG.debug("※進捗特記事項1がXMLから正常に取得できませんでした。処理は続行します。");
			}
		}
		catch (Exception e)
		{
			DEBUG_LOG.debug("※進捗特記事項1がXMLから正常に取得できませんでした。処理は続行します。");
		}

		// 異動理由明細
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		arrayList.add(detailMap);
		parentMap.put(EKK1091D010CBSMSG1LIST, arrayList);

		outputMap.put(FUSV005407SC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005408SC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV005408SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		outputMap.put(FUSV005408SC, parentMap);

		return outputMap;
	}

	/**
	 * SCの上りマッピングの処理です。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV005409SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		outputMap.put(FUSV005409SC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005410SC 上りマッピングをします。
	 * @param bean　：メールアドレス変更申込
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opSvcKeiInfoBean
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV005410SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		ArrayList<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> detailMap = new HashMap<String, Object>();
		arrayList.add(detailMap);
		parentMap.put(EKK0351A010_LIST, arrayList);

		outputMap.put(FUSV005410SC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005411SC 上りマッピングをします。
	 * @param bean　：メールアドレス変更申込
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opSvcKeiInfoBean
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV005411SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		ArrayList<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> detailMap = new HashMap<String, Object>();
		arrayList.add(detailMap);
		parentMap.put(EKK0361A010_LIST, arrayList);

		outputMap.put(FUSV005411SC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005412SC 上りマッピングをします。
	 * @param bean　：メールアドレス変更申込
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opSvcKeiInfoBean
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV005412SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// 共有フォームBean.SSO情報.SYSID → 指示書登録.処理対象SYSID
		parentMap.put(TRAN_TRGT_SYSID, bean[3].sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV005412SC, parentMap);

		return outputMap;
	}
	
	/**
	 * FUSV005401CC データ移送の設定をします。
	 * @param outputMap
	 * @param bl
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV005401CC(HashMap outputMap,X31BWebBusinessLogic bl)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// データ移送数
		parentMap.put(KEY_CNT, TRANCE_CNT);

		// データ移送先
		parentMap.put(TRANCE_NM, FUSV005402CC);

		// クエリ文字列の例
		// クエリキー：クエリ文字列
		// ※クエリキー → "key_"(固定) + 連番
		// ※クエリ文字列 → 取得元名:取得元リスト名:取得元項目名,移送先リスト名:移送先マップ名:移送先項目名
		parentMap.put(TRANCE_DT_1, TRANCE_DT_VAL_1);
		parentMap.put(TRANCE_DT_2, SC_MAPPING.get(JFUWebCommon.getSvcKeiStat(bl)) + TRANCE_DT_VAL_2);
		parentMap.put(TRANCE_DT_3, TRANCE_DT_VAL_3);
		parentMap.put(TRANCE_DT_4, TRANCE_DT_VAL_4);

		// 共通情報のマッピング
		outputMap.put(FUSV005401CC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005402CC サービスオーダ発行CC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param sysid
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV005402CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String sysid)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		ArrayList<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>();

		HashMap<String, Object> childMap = new HashMap<String, Object>();

		// SOD基本情報
		HashMap<String, Object> sodKihonInfo = new HashMap<String, Object>();
		// SYSID
		sodKihonInfo.put(SYSID, sysid);
		// 異動区分
		sodKihonInfo.put(IDO_DIV, JFUStrConst.CD00576_00031);
		childMap.put(SOD_KIHON_INFO, sodKihonInfo);

		// サービス契約情報
		HashMap<String, Object> svcKeiInfo = new HashMap<String, Object>();
		// サービス契約番号
		svcKeiInfo.put(SVC_KEI_NO, bean[3].sendMessageString(CommonInfoCFConst.SVC_KEI_NO_21, X31CWebConst.DATABEAN_GET_VALUE));
		childMap.put(SVC_KEI_INFO, svcKeiInfo);

		// サービス契約内訳情報
		HashMap<String, Object> svcKeiucwkInfo = new HashMap<String, Object>();
		childMap.put(SVC_KEI_UCWK_INFO, svcKeiucwkInfo);

		// オプションサービス契約情報
		HashMap<String, Object> opsvkeiInfo = new HashMap<String, Object>();

		// 空設定(変更前オプションサービス契約番号)
		opsvkeiInfo.put(CHBF_OPSVKEI_NO, STRING_EMPTY);
		// 空設定(変更前オプションサービス契約 世代登録年月日時分秒)
		opsvkeiInfo.put(CHBF_OPSVKEI_GENE_ADD_DTM, STRING_EMPTY);

		childMap.put(OPSVKEI_INFO, opsvkeiInfo);

		arrayList.add(childMap);

		parentMap.put(TRGT_DATA_LIST, arrayList);

		// ユーザデータに設定
		outputMap.put(FUSV005402CC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピング<BR>
	 * @param bean
	 * @param outputMap
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV005403CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// データ移送数
		parentMap.put(KEY_CNT, MAIL_KEY_CNT);

		// データ移送先
		parentMap.put(TRANCE_NM, FUSV005404CC);

		// 変更後メールアドレス
		parentMap.put(TRANCE_DT_1, MAIL_TRANS_KEY_1_VALUE);
		parentMap.put(TRANCE_DT_2, MAIL_TRANS_KEY_2_VALUE);

		// 共通情報のマッピング
		outputMap.put(FUSV005403CC, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピング<BR>
	 * @param bean
	 * @param outputMap
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV005404CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code, String sysid)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// SYSID
		parentMap.put(IN_PARAM_SYSID, sysid);

		// 共通情報のマッピング
		outputMap.put(FUSV005404CC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005405CC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param sysid SYSID
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV005405CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 希望メールアドレス → オプションサービス契約＜ISP＞登録.希望メールアカウント1
		parentMap.put(KIBO_ML_ACCOUNT_1, bean[0].sendMessageString(FUW01901SFConst.KIBO_MLAD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV005405CC, parentMap);

		return outputMap;
	}
	
	//【ANK-2350-00-00】 【ＮＯ．１８２３】POPIDパスワード、WebIDパスワードの再振不正 2016.03.15 FJ)中西 add start
	/**
	 * FUSV005406CC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV005406CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共有フォームBean.SS0情報.サービス契約番号 → サービス契約番号
		parentMap.put(SVC_KEI_NO, bean[3].sendMessageString(CommonInfoCFConst.SVC_KEI_NO_21, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV005406CC, parentMap);

		return outputMap;
	}
	
	//【ANK-2350-00-00】 【ＮＯ．１８２３】POPIDパスワード、WebIDパスワードの再振不正 2016.03.15 FJ)中西 add end
	
	/**
	 * FUSV005402CC 会員情報更新依頼CC 上りマッピングをします。
	 * @param bean データBean配列
	 * @param outputMap アウトマップ
	 * @return 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV900101CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// UPD_TRGT_SYSID
		parentMap.put(UPD_TRGT_SYSID, bean[3].sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));

		// CCに設定
		outputMap.put(CKSV900101CC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005413CC 上りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV005413CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		// ファミリーパック誘導要否判定CC
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// 共有フォームBean.SSO情報.SYSID → SYSID
		parentMap.put(IN_PARAM_KEY_SYSID, bean[3].sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));

		// 共有フォームBean.SS0情報.サービス契約番号 → サービス契約番号
		parentMap.put(IN_PARAM_KEY_SVC_KEI_NO, bean[3].sendMessageString(CommonInfoCFConst.SVC_KEI_NO_21, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV005413CC, parentMap);

		return outputMap;
	}

	/**
	 * FUSV005403SC 下りマッピングをします。
	 * @param bean
	 * @param outputMap
	 * @return サービスフォームBean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV005403SC(X31SDataBeanAccess bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV005403SC))
		{
			parentMap = (HashMap)outputMap.get(FUSV005403SC);
		}

		// 確定メールアドレス、POPパスワード ← オプションサービス契約＜ISP＞照査締結.メールアドレス
		if (parentMap != null)
		{
			bean.sendMessageString(FUW01901SFConst.FIX_MLAD, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(MLAD));
			bean.sendMessageString(FUW01901SFConst.POP_PWD, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(POP_PWD));
		}


		return bean;
	}

	/**
	 * FUSV005409SC 照査SCの下りマッピングです。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return サービスフォームBean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV005409SC(X31SDataBeanAccess bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV005409SC))
		{
			parentMap = (HashMap)outputMap.get(FUSV005409SC);
		}

		// 確定メールアドレス、POPパスワード ← オプションサービス契約＜ISP＞照査.メールアドレス
		if (parentMap != null)
		{
			bean.sendMessageString(FUW01901SFConst.FIX_MLAD, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(MLAD));
			bean.sendMessageString(FUW01901SFConst.POP_PWD, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(POP_PWD));
		}
		return bean;
	}
	
	/**
	 * FUSV005409SC 照査SCの下りマッピングです。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return サービスフォームBean
	 */
	@SuppressWarnings("unchecked")
	public String getFUSV005405CC(X31SDataBeanAccess bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV005405CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV005405CC);
		}

		// 確定メールアドレス、POPパスワード ← オプションサービス契約＜ISP＞照査.メールアドレス
		if (parentMap != null)
		{
			return (String)parentMap.get(OUT_PARAM_RESULT);
		}
		
		return JFUStrConst.EMPTY;
	}

	/**
	 * ファミリーパック誘導要否判定CCの下りマッピングです。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return サービスフォームBean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV005413CC(X31SDataBeanAccess bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV005413CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV005413CC);
		}

		// 結果コード（0：否、1：要） 
		boolean result = false;
		if (parentMap != null)
		{
			String resultCd = (String)parentMap.get(OUT_RESULT_CD);
			if ((JFUStrConst.S_ONE.equals(resultCd)))
			{
				result = true;
			}
		}

		/** 2017/04/13 ANK-3149-00-00 del start */
		// ファミリーパック誘導削除
		//bean.sendMessageBoolean(FUW01901SFConst.FAMIPA_YUDO_MSG_FLG, X31CWebConst.DATABEAN_SET_VALUE, result);
		/** 2017/04/13 ANK-3149-00-00 del end */
		return bean;
	}

}