/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0122_FUSV0122OPDBMapper
*	ソースファイル名：FUSV0122_FUSV0122OPDBMapper.java
*	作成者			：富士通
*	日付			：2011年07月08日
*＜機能概要＞
*	BP（メールアドレス自動設定ツール連携(初期取得)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/08  FJ）西川	新規作成
*   v4.00       2012/11/07  FJ）中谷    変更【ANK-1255-00-00】オプション解約に伴う課金制御
*   v5.00       2013/03/07  FJ）谷本    変更【ST1-2013-0000437】フロント「オプトインメール受信設定」設定漏れ対応
*   v6.00       2013/12/03  FJ）中谷    変更【OM-2013-0004592】メールアドレス変更時SOD発行の改修
*   v6.00       2013/12/24  FJ）文元    変更【OM-2013-0005334】コメント不備修正
*   v14.00      2015/05/05  FJ）西川    変更【OM-2015-0000637】メール自動設定ツールと画面投入での追越し対応
*
**********************************************************************/
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.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JFUStrConst;
import eo.web.webview.FUA028SF.FUA028SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをする。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0122_FUSV0122OPDBMapper
{

	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	/** サービスID メールアドレス自動設定ツール連携(指示実行) */
	private static final String USECASE_ID_FUSV0122 = "FUSV0122";
	/** 共通関連チェック共通コンポーネント部品 */
	private static final String CC_TITLE_FUSV012201 = "FUSV012201CC";
	/** オプションサービス契約＜ISP＞一意照会 */
	private static final String CC_TITLE_FUSV012202 = "FUSV012202CC";
	/** エイジング一覧照会(エイジング対象値)(メールアドレス) */
	private static final String CC_TITLE_FUSV012203 = "FUSV012203CC";
	/** エイジング一覧照会(エイジング対象値)(POPID) */
	private static final String CC_TITLE_FUSV012204 = "FUSV012204CC";
	/** エイジング一覧照会(エイジング対象値)(エイリアス) */
	private static final String CC_TITLE_FUSV012205 = "FUSV012205CC";
	/** サービスオーダ登録部品 */
	private static final String CC_TITLE_FUSV012206 = "FUSV012206CC";
	/** 非課金判定コモンコンポーネント部品 */
	private static final String CC_TITLE_FUSV012208 = "FUSV012208CC";
	/** オプトインメール受信設定登録コモンコンポーネント部品 */
	private static final String CC_TITLE_FUSV012209 = "FUSV012209CC";
	/** 会員情報更新依頼CC */
	private static final String CC_TITLE_CKSV900101CC = "CKSV900101CC";

	/** 申込内容承認登録 */
	private static final String SC_TITLE_FUSV012201 = "FUSV012201SC";

	/** サブオプションサービス契約一意照会 */
	private static final String SC_TITLE_FUSV012202 = "FUSV012202SC";
	/** サブオプションサービス契約解約 */
	private static final String SC_TITLE_FUSV012203 = "FUSV012203SC";
	/** サブオプションサービス契約解約確定 */
	private static final String SC_TITLE_FUSV012204 = "FUSV012204SC";
	/** オプションサービス契約<ISP>情報変更 */
	private static final String SC_TITLE_FUSV012205 = "FUSV012205SC";
	/** エイジング対象使用終了 */
	private static final String SC_TITLE_FUSV012206 = "FUSV012206SC";
	/** エイジング対象使用終了 */
	private static final String SC_TITLE_FUSV012207 = "FUSV012207SC";
	/** エイジング対象使用終了 */
	private static final String SC_TITLE_FUSV012208 = "FUSV012208SC";
	/** エイジング対象登録 */
	private static final String SC_TITLE_FUSV012209 = "FUSV012209SC";
	/** エイジング対象登録 */
	private static final String SC_TITLE_FUSV012210 = "FUSV012210SC";
	/** 進捗登録 */
	private static final String SC_TITLE_FUSV012211 = "FUSV012211SC";
	/** 申込明細照査・後続業務依頼 */
	private static final String SC_TITLE_FUSV012212 = "FUSV012212SC";
	/** サブオプションサービス契約キャンセル */
	private static final String SC_TITLE_FUSV012213 = "FUSV012213SC";
	/** オプションサービス契約一意照会 */
	private static final String SC_TITLE_FUSV012214 = "FUSV012214SC";
	/** オプションサービス契約＜ISP＞一意照会 */
	private static final String SC_TITLE_FUSV012215 = "FUSV012215SC";
	/** 指示書登録 */
	private static final String SC_TITLE_FUSV012216 = "FUSV012216SC";

	/** WORK用キー項目 */
	private static final String WK_FUSV0122WORK01 = "FUSV0122WORK01";

	/** 進捗登録.異動理由明細 */
	private static final String EKK1091D010_LIST = "EKK1091D010CBSMsg1List";
	/** 申込内容承認登録.申込内容承認登録明細 */
	private static final String EKK0011D020_LIST = "EKK0011D020CBSMsg1List";
	/** オプションサービス契約<ISP>一意照会明細 */
	private static final String EKK0361A010_LIST = "EKK0361A010CBSMsg1List";
	/** エイジング一覧照会(エイジング対象値)明細 */
	private static final String EZM0111B030_LIST = "EZM0111B030CBSMsg1List";

	/** ＫＥＹ＿サービス契約番号 */
	private static final String KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** SYSID */
	private static final String SYSID = "sysid";
	/** オプションサービス契約番号 */
	private static final String OP_SVC_KEI_NO = "op_svc_kei_no";

	/** ＫＥＹ＿オプションサービス契約番号 */
	private static final String KEY_OP_SVC_KEI_NO = "key_op_svc_kei_no";

	/** ＫＥＹ＿サブオプションサービス契約番号 */
	private static final String KEY_SBOP_SVC_KEI_NO = "key_sbop_svc_kei_no";

	/** ＫＥＹ＿エイジング種別コード */
	private static final String KEY_AGING_SBT_CD = "key_aging_sbt_cd";

	/** サブオプションサービス契約番号 */
	private static final String SBOP_SVC_KEI_NO = "sbop_svc_kei_no";
	/** 更新年月日時分秒(更新前) */
	private static final String UPD_DTM_BF = "upd_dtm_bf";
	/** 希望メールアドレス1 */
	private static final String KIBO_ML_ACCOUNT_1 = "kibo_ml_account_1";
	/** メールアドレス */
	private static final String MLAD = "mlad";
	/** ＫＥＹ＿エイジング対象値 */
	private static final String KEY_AGING_TG_VALUE = "key_aging_tg_value";
	/** エイジング対象値 */
	private static final String AGING_TG_VALUE = "aging_tg_value";
	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "svc_kei_no";

	/** 表示用サービス提供開始年月日 */
	private static final String DSP_SVCTK_STAYMD = "dsp_svctk_staymd";

	/** メール各種設定引継フラグ */
	private static final String ML_VRSETTE_HKTGI_FLG = "ml_vrsette_hktgi_flg";

	/** メールアドレス変更時メール転送フラグ */
	private static final String MLAD_CHGJ_ML_TNS_FLG = "mlad_chgj_ml_tns_flg";

	/** メールエイリアス契約保有有無 */
	private static final String ALIAS_UM = "alias_um";

	/** メールエイリアス契約保有有無が無し */
	private static final String ALIAS_UM_NASHI = "0";
	/** メールエイリアス契約保有有無が有り */
	private static final String ALIAS_UM_ARI = "1";

	/** IN項目:サービス契約番号 */
	private static final String IN_PARAM_SVC_KEI_NO = "hikakin_svc_kei_no";
	/** IN項目:オプションサービスコード */
	private static final String IN_PARAM_OP_SVC_CD = "hikakin_opSvcCd";
	/** IN項目:オプションサービス契約番号 */
	private static final String IN_PARAM_OP_SVC_KEI_NO = "op_svc_kei_no";
	/** IN項目:サブオプションサービス契約番号 */
	private static final String IN_PARAM_SBOP_SVC_KEI_NO = "sbop_svc_kei_no";

	/** オプションサービス契約一意照会 */
	private static final String EKK0351A010_LIST = "EKK0351A010CBSMsg1List";
	/** オプションサービス契約＜ISP＞一意照会.オプションサービス契約<ISP>一意照会明細 */
	private static final String EKK0361A010C_LIST = "EKK0361A010CBSMsg1List";

	/** 処理対象SYSID */
	private static final String TRAN_TRGT_SYSID = "tran_trgt_sysid";

	/** 特記事項１要素を取得する際のid */
	private static final String PRGADD_ID = "0";
	/** 進捗特記事項1 */
	private static final String PRG_TKJK_1 = "prg_tkjk_1";

	/** BP項目(ＰＯＰＩＤ) */
	private static final String BP_POPID = "key_popid";

	/** IN項目:SYSID */
	private static final String IN_PARAM_SYSID = "sysId";
	/** IN項目:メールアドレス（変更前） */
	private static final String IN_PARAM_CMP_MLAD_BF = "mlad_bf";
	/** IN項目:メールアドレス（変更後） */
	private static final String IN_PARAM_CMP_MLAD_AF = "mlad_af";

	/** マップキー 更新対象ＳＹＳＩＤ (CKSV900101CC) */
	private static final String UPD_TRGT_SYSID = "upd_trgt_sysid";

	/** IN項目:サービス契約番号 */
	private static final String IN_PARAM_KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** IN項目:オプションサービス契約番号 */
	private static final String IN_PARAM_KEY_OP_SVC_KEI_NO = "key_op_svc_kei_no";
	/** IN項目:メール各種設定引継フラグ */
	private static final String IN_PARAM_ML_VRSETTE_HKTGI_FLG = "ml_vrsette_hktgi_flg";
	/** IN項目:メールアドレス変更時メール転送フラグ */
	private static final String IN_PARAM_MLAD_CHGJ_ML_TNS_FLG = "mlad_chgj_ml_tns_flg";
	/** IN項目:変更前メールアドレス */
	private static final String IN_PARAM_CHG_BF_MLAD = "chg_bf_mlad";
	/** IN項目:変更後メールアドレス */
	private static final String IN_PARAM_CHG_AF_MLAD = "chg_af_mlad";
	/** IN項目:POPIDパスワード */
	private static final String IN_PARAM_POP_ID_PWD = "pop_id_pwd";
	/** IN項目:旧メールボックス容量 */
	private static final String IN_PARAM_OLD_MLBOX_CAPA = "old_mlbox_capa";
	/** IN項目:アクション名 */
	private static final String IN_PARAM_ACTION_NAME = "action_name";

	/** アクション名(UPDATE:メールアドレス変更) */
	private static final String ACTION_NAME_UPDATE = "UPDATE";

	/** IN項目:サービス契約番号 */
	private static final String IN_PARAM_KEY_SYSID = "key_sysid";
	/** IN項目:オプションサービス契約世代登録年月日時分秒 */
	private static final String IN_PARAM_KEY_OP_SVC_GENE_ADD_DTM = "key_op_svc_kei_gene_add_dtm";

	/**
	 * コンストラクタ
	 */
	public FUSV0122_FUSV0122OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV0122WORK01(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap)
	{
		// 実行判定情報のマッピング
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		// メールエイリアス契約保有有無
		parentMap.put(ALIAS_UM, checkAliasUm(bean[0]));

		outputMap.put(WK_FUSV0122WORK01, parentMap);
		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param popId POPID
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012201CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code, String popId)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// サービス契約番号
		parentMap.put(KEY_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// POPID
		parentMap.put(BP_POPID, popId);

		// サービスID
		parentMap.put(JFUStrConst.RELATION_CHECK_SERVICE_ID_KEY, USECASE_ID_FUSV0122);

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV012201, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012202CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプションサービス契約番号
		parentMap.put(KEY_OP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		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(CC_TITLE_FUSV012202, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012203CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// ＫＥＹ＿エイジング種別コード
		parentMap.put(KEY_AGING_SBT_CD, JFUStrConst.CD00412_009);
		// ＫＥＹ＿エイジング対象値
		parentMap.put(KEY_AGING_TG_VALUE, bean[0].sendMessageString(FUA028SFConst.POP_ID, X31CWebConst.DATABEAN_GET_VALUE).replace(
				JFUStrConst.PERCENT, JFUStrConst.ATMARK));

		ArrayList<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> detailMap = new HashMap<String, Object>();
		arrayList.add(detailMap);
		parentMap.put(EZM0111B030_LIST, arrayList);

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV012203, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012204CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// ＫＥＹ＿エイジング種別コード
		parentMap.put(KEY_AGING_SBT_CD, JFUStrConst.CD00412_007);
		// ＫＥＹ＿エイジング対象値
		parentMap.put(KEY_AGING_TG_VALUE, bean[0].sendMessageString(FUA028SFConst.POP_ID, X31CWebConst.DATABEAN_GET_VALUE));
		ArrayList<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> detailMap = new HashMap<String, Object>();
		arrayList.add(detailMap);
		parentMap.put(EZM0111B030_LIST, arrayList);

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV012204, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012205CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// ＫＥＹ＿エイジング種別コード
		parentMap.put(KEY_AGING_SBT_CD, JFUStrConst.CD00412_008);
		// ＫＥＹ＿エイジング対象値
		parentMap.put(KEY_AGING_TG_VALUE, bean[0].sendMessageString(FUA028SFConst.ALIAS, X31CWebConst.DATABEAN_GET_VALUE));

		ArrayList<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> detailMap = new HashMap<String, Object>();
		arrayList.add(detailMap);
		parentMap.put(EZM0111B030_LIST, arrayList);

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV012205, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param mailSuccessionSetValue メール各種設定引継フラグ
	 * @param mailForwardSetValue メールアドレス変更時メール転送フラグ
	 * @param oldMlboxCapa 旧メールボックス容量
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012206CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code,
			String mailSuccessionSetValue, String mailForwardSetValue, String oldMlboxCapa)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// サービス契約番号
		parentMap.put(IN_PARAM_KEY_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// オプションサービス契約番号
		parentMap.put(IN_PARAM_KEY_OP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// メール各種設定引継フラグ
		parentMap.put(IN_PARAM_ML_VRSETTE_HKTGI_FLG, mailSuccessionSetValue);
		// メールアドレス変更時メール転送フラグ
		parentMap.put(IN_PARAM_MLAD_CHGJ_ML_TNS_FLG, mailForwardSetValue);
		// 変更前メールアドレス
		parentMap.put(IN_PARAM_CHG_BF_MLAD, bean[0].sendMessageString(FUA028SFConst.POP_ID, X31CWebConst.DATABEAN_GET_VALUE).replace(
				JFUStrConst.PERCENT, JFUStrConst.ATMARK));
		// 変更後メールアドレス
		parentMap.put(IN_PARAM_CHG_AF_MLAD, bean[0].sendMessageString(FUA028SFConst.CHG_MLAD, X31CWebConst.DATABEAN_GET_VALUE));
		// POPIDパスワード
		parentMap.put(IN_PARAM_POP_ID_PWD, bean[0].sendMessageString(FUA028SFConst.POP_PW, X31CWebConst.DATABEAN_GET_VALUE));
		// 旧メールボックス容量
		parentMap.put(IN_PARAM_OLD_MLBOX_CAPA, oldMlboxCapa);
		// アクション名
		parentMap.put(IN_PARAM_ACTION_NAME, ACTION_NAME_UPDATE);

		// SYSID
		parentMap.put(IN_PARAM_KEY_SYSID, bean[0].sendMessageString(FUA028SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		// オプションサービス契約世代登録年月日時分秒
		parentMap.put(IN_PARAM_KEY_OP_SVC_GENE_ADD_DTM, bean[0].sendMessageString(FUA028SFConst.GENE_ADD_DTM, X31CWebConst.DATABEAN_GET_VALUE));

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV012206, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012201SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.SYSID → 申込内容承認登録SC.SYSID
		parentMap.put(SYSID, bean[0].sendMessageString(FUA028SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		ArrayList<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> detailMap = new HashMap<String, Object>();
		arrayList.add(detailMap);
		parentMap.put(EKK0011D020_LIST, arrayList);

		outputMap.put(SC_TITLE_FUSV012201, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012202SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.オプションサービス契約番号 → サブオプションサービス契約一意照会SC.オプションサービス契約番号
		parentMap.put(KEY_OP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// メールアドレス自動設定ツール連携.サブオプションサービス契約番号 →
		// サブオプションサービス契約一意照会SC.サブオプションサービス契約番号
		parentMap.put(KEY_SBOP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV012202, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012203SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.オプションサービス契約番号 → サブオプションサービス契約解約SC.オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// メールアドレス自動設定ツール連携.サブオプションサービス契約番号 → サブオプションサービス契約解約SC.サブオプションサービス契約番号
		parentMap.put(SBOP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// メールアドレス自動設定ツール連携.更新年月日時分秒 → サブオプションサービス契約解約SC.更新年月日時分秒(更新前)
		parentMap.put(UPD_DTM_BF, bean[0].sendMessageString(FUA028SFConst.UPDDTM, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV012203, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012204SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.オプションサービス契約番号 → サブオプションサービス契約解約確定SC.オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// メールアドレス自動設定ツール連携.サブオプションサービス契約番号 →
		// サブオプションサービス契約解約確定SC.サブオプションサービス契約番号
		parentMap.put(SBOP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV012204, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param mailSuccession メール各種設定引継フラグ
	 * @param mailForward メールアドレス変更時メール転送フラグ
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012205SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code,
			String mailSuccession, String mailForward)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.オプションサービス契約番号 →
		// オプションサービス契約<ISP>情報変更.オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// メールアドレス自動設定ツール連携.メールアドレス(アカウントのみ) → オプションサービス契約<ISP>情報変更.希望メールアドレス1
		String chgMlad = bean[0].sendMessageString(FUA028SFConst.CHG_MLAD, X31CWebConst.DATABEAN_GET_VALUE).split(JFUStrConst.ATMARK)[0];
		parentMap.put(KIBO_ML_ACCOUNT_1, chgMlad);

		// メールアドレス自動設定ツール連携.メールアドレス → オプションサービス契約<ISP>情報変更.メールアドレス
		parentMap.put(MLAD, bean[0].sendMessageString(FUA028SFConst.CHG_MLAD, X31CWebConst.DATABEAN_GET_VALUE));

		// メールアドレス自動設定ツール連携.更新年月日時分秒 → オプションサービス契約<ISP>情報変更.更新年月日時分秒
		parentMap.put(UPD_DTM_BF, bean[0].sendMessageString(FUA028SFConst.UPDDTM, X31CWebConst.DATABEAN_GET_VALUE));

		// 表示用サービス提供開始年月日 → オプションサービス契約<ISP>情報変更.表示用サービス提供開始年月日
		parentMap.put(DSP_SVCTK_STAYMD, bean[0].sendMessageString(FUA028SFConst.DSP_SVCTK_STAYMD, X31CWebConst.DATABEAN_GET_VALUE));

		// メールアドレス自動設定ツール連携.メール各種設定引継フラグ → オプションサービス契約<ISP>情報変更.メール各種設定引継フラグ
		parentMap.put(ML_VRSETTE_HKTGI_FLG, mailSuccession);

		// メールアドレス自動設定ツール連携.メールアドレス変更時メール転送フラグ → オプションサービス契約<ISP>情報変更.メールアドレス変更時メール転送フラグ
		parentMap.put(MLAD_CHGJ_ML_TNS_FLG, mailForward);

		outputMap.put(SC_TITLE_FUSV012205, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012206SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.旧メールアドレス → エイジング対象使用終了.エイジング対象値
		String agingTgValue = bean[0].sendMessageString(FUA028SFConst.POP_ID, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put(AGING_TG_VALUE, agingTgValue.replace(JFUStrConst.PERCENT, JFUStrConst.ATMARK));

		outputMap.put(SC_TITLE_FUSV012206, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012207SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.ＰＯＰＩＤ → エイジング対象使用終了.エイジング対象値
		parentMap.put(AGING_TG_VALUE, bean[0].sendMessageString(FUA028SFConst.POP_ID, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV012207, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012208SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.エイリアス → エイジング対象使用終了.エイジング対象値
		parentMap.put(AGING_TG_VALUE, bean[0].sendMessageString(FUA028SFConst.ALIAS, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV012208, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012209SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.変更後メールアドレス → エイジング対象登録.エイジング対象値
		parentMap.put(AGING_TG_VALUE, bean[0].sendMessageString(FUA028SFConst.CHG_MLAD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV012209, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012210SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.変更後POPID → エイジング対象登録.エイジング対象値
		parentMap.put(AGING_TG_VALUE, bean[0].sendMessageString(FUA028SFConst.CHG_POP_ID, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV012210, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012211SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.サービス契約番号 → サービス契約番号
		parentMap.put(SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// メールアドレス自動設定ツール連携.オプションサービス契約番号 → オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 進捗特記事項1
		try
		{
			String prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUA028, 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<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> detailMap = new HashMap<String, Object>();
		arrayList.add(detailMap);
		parentMap.put(EKK1091D010_LIST, arrayList);

		outputMap.put(SC_TITLE_FUSV012211, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012212SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		outputMap.put(SC_TITLE_FUSV012212, parentMap);

		return outputMap;
	}

	/**
	 * エイリアス保有有無チェックを行ないます。
	 *
	 * <br>
	 * @param bean
	 * @return true:在り、false:無し
	 */
	private String checkAliasUm(X31SDataBeanAccess bean)
	{
		String alias = bean.sendMessageString(FUA028SFConst.ALIAS, X31CWebConst.DATABEAN_GET_VALUE);
		return JFUWebCommon.isNull(alias) ? ALIAS_UM_NASHI : ALIAS_UM_ARI;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012208CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// IN項目:サービス契約番号
		parentMap.put(IN_PARAM_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// IN項目:オプションサービスコード
		parentMap.put(IN_PARAM_OP_SVC_CD, JFUStrConst.CD00136_B001);
		// IN項目:オプションサービス契約番号
		parentMap.put(IN_PARAM_OP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		if (null != bean[0].sendMessageString(FUA028SFConst.ALIAS, X31CWebConst.DATABEAN_GET_VALUE))
		{
			// IN項目:サブオプションサービス契約番号
			parentMap.put(IN_PARAM_SBOP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		}

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV012208, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	public HashMap<String, Object> setFUSV012209CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// IN項目:SYSID
		parentMap.put(IN_PARAM_SYSID, bean[0].sendMessageString(FUA028SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		// IN項目:メールアドレス（変更前）
		parentMap.put(IN_PARAM_CMP_MLAD_BF, bean[0].sendMessageString(FUA028SFConst.POP_ID, X31CWebConst.DATABEAN_GET_VALUE).replace(
				JFUStrConst.PERCENT, JFUStrConst.ATMARK));
		// IN項目:メールアドレス（変更後）
		parentMap.put(IN_PARAM_CMP_MLAD_AF, bean[0].sendMessageString(FUA028SFConst.CHG_MLAD, X31CWebConst.DATABEAN_GET_VALUE));

		// 共通情報のマッピング
		outputMap.put(CC_TITLE_FUSV012209, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする（サブオプションサービス契約キャンセル）
	 * @param bean：メールアドレス自動設定ツール
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opSvcKeiInfoBean
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV012213SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// メールアドレス自動設定ツール連携.オプションサービス契約番号 → サブオプションサービス契約解約SC.オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// メールアドレス自動設定ツール連携.サブオプションサービス契約番号 → サブオプションサービス契約解約SC.サブオプションサービス契約番号
		parentMap.put(SBOP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// メールアドレス自動設定ツール連携.更新年月日時分秒 → サブオプションサービス契約解約SC.更新年月日時分秒(更新前)
		parentMap.put(UPD_DTM_BF, bean[0].sendMessageString(FUA028SFConst.UPDDTM, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV012213, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする（オプションサービス契約一意照会）
	 * @param bean　：メールアドレス自動設定ツール
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opSvcKeiInfoBean
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV012214SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプションサービス契約番号
		parentMap.put(KEY_OP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		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(SC_TITLE_FUSV012214, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする（オプションサービス契約＜ISP＞一意照会）
	 * @param bean　：メールアドレス自動設定ツール
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opSvcKeiInfoBean
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV012215SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプションサービス契約番号
		parentMap.put(KEY_OP_SVC_KEI_NO, bean[0].sendMessageString(FUA028SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		ArrayList<HashMap<String, Object>> arrayList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> detailMap = new HashMap<String, Object>();
		arrayList.add(detailMap);
		parentMap.put(EKK0361A010C_LIST, arrayList);

		outputMap.put(SC_TITLE_FUSV012215, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする（指示書登録）
	 * @param bean　：メールアドレス自動設定ツール
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opSvcKeiInfoBean
	 * @return HashMap
	 */
	public HashMap<String, Object> setFUSV012216SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// 指示書登録.処理対象SYSID
		parentMap.put(TRAN_TRGT_SYSID, bean[0].sendMessageString(FUA028SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(SC_TITLE_FUSV012216, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする（会員情報更新依頼）
	 * @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[0].sendMessageString(FUA028SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));

		// CCに設定
		outputMap.put(CC_TITLE_CKSV900101CC, parentMap);

		return outputMap;
	}
}