/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0033_FUSV0033OPDBMapper
*	ソースファイル名：FUSV0033_FUSV0033OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年12月06日
*＜機能概要＞
*	BP（eo光電話オプションサービス申込解約(解約)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/12/06	FJ			新規作成
*	v4.00		2012/06/28	FJ)美濃原	【ANK-1163-00-00】変更系申込が可能となるタイミングについて
*	v4.00		2012/10/09	FJ)西村		【ANK-1223-00-00】 進捗補足事項編集対応*
*	v9.00       2014/05/20  FJ)西山     【ANK-2057-00-00】eo多機能ルーターによる複数通話対応
**********************************************************************/
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 com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JFUStrConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW05401SF.FUW05401SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0033_FUSV0033OPDBMapper
{

	/** BEANの必須レコード数 [0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約 */
	private static final int BEAN_LENGTH = 2;

	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	/** eo光電話オプションサービス申込解約（解約）作業項目マップ01 */
	private static final String FUSV0033_W_O_R_K01 = "FUSV0033WORK01";
	/** ０５０オプション電話処理フラグ */
	private static final String N_050_OP_TELNO_TRAN_FLG = "n_050_op_telno_tran_flg";
	/** オプション処理フラグ */
	private static final String OP_TRAN_FLG = "op_tran_flg";
	/** サブオプション処理フラグ */
	private static final String SBOP_TRAN_FLG = "sbop_tran_flg";
	/** サービスオーダ処理フラグ */
	private static final String SOD_TRAN_FLG = "sod_tran_flg";

	/** 申込内容承認登録マップ */
	private static final String FUSV003301_S_C = "FUSV003301SC";
	/** SYSID */
	private static final String SYSID = "sysid";
	/** 申込形態コード */
	private static final String MSKM_FORM_CD = "mskm_form_cd";
	/** 申込内容承認登録明細 */
	private static final String EKK0011_D020_C_B_S_MSG1_LIST = "EKK0011D020CBSMsg1List";

	/** サブオプションサービス契約解約マップ */
	private static final String FUSV003302_S_C = "FUSV003302SC";
	/** 最終更新年月日時分秒（サービス契約） */
	private static final String KK0401_UPD_DTM = "kk0401_upd_dtm";

	/** サブオプションサービス契約解約確定マップ */
	private static final String FUSV003303_S_C = "FUSV003303SC";

	/** オプションサービス契約解約マップ */
	private static final String FUSV003304_S_C = "FUSV003304SC";
	/** 最終更新年月日時分秒（サービス契約） */
	private static final String KK0351_UPD_DTM = "kk0351_upd_dtm";
	/** オプションサービス契約解約確定マップ */
	private static final String FUSV003305_S_C = "FUSV003305SC";

	/** 進捗登録マップ */
	private static final String FUSV003306_S_C = "FUSV003306SC";
	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "svc_kei_no";
	/** サービス契約内訳番号 */
	private static final String SVC_KEI_UCWK_NO = "svc_kei_ucwk_no";
	/** サービス契約回線内訳番号 */
	private static final String SVC_KEI_KAISEN_UCWK_NO = "svc_kei_kaisen_ucwk_no";
	/** 異動理由コード */
	private static final String IDO_RSN_CD = "ido_rsn_cd";
	/** 異動理由明細 */
	private static final String EKK1091_D010_C_B_S_MSG1_LIST = "EKK1091D010CBSMsg1List";

	/** エイジング対象使用終了マップ */
	private static final String FUSV003307_S_C = "FUSV003307SC";
	/** エイジング番号 */
	private static final String AGING_NO = "aging_no";
	/** ０５０オプション電話番号 */
	private static final String N_050_OP_TELNO = "n_050_op_telno";
	/** 最終更新年月日時分秒（エイジング） */
	private static final String ZM0111_UPD_DTM = "zm0111_upd_dtm";

	/** 申込明細照査・後続業務依頼マップ */
	private static final String FUSV003308_S_C = "FUSV003308SC";

	/** サブオプションサービス契約キャンセルマップ */
	private static final String FUSV003309_S_C = "FUSV003309SC";
	/** サブオプションサービス契約番号 */
	private static final String SBOP_SVC_KEI_NO = "sbop_svc_kei_no";

	/** オプションサービス契約キャンセルマップ */
	private static final String FUSV003310_S_C = "FUSV003310SC";
	/** 最終更新年月日時分秒 */
	private static final String UPD_DTM_BF = "upd_dtm_bf";
	/** オプションサービス契約番号 */
	private static final String OP_SVC_KEI_NO = "op_svc_kei_no";

	/** 非課金判定CCマップ */
	private static final String FUSV003303_C_C = "FUSV003303CC";
	/** IN項目:オプションサービスコード */
	private static final String IN_PARAM_OP_SVC_CD = "hikakin_opSvcCd";
	/** IN項目:サービス契約内訳番号 */
	private static final String IN_PARAM_SVC_KEI_UCWK_NO = "hikakin_svc_kei_ucwk_no";

	/** 進捗特記事項1 */
	private static final String PRG_TKJK_1 = "prg_tkjk_1";
	/** 特記事項１要素を取得する際のid */
	private static final String PRGADD_ID = "1";
	/** 特記事項１要素を取得する際のid */
	private static final String PRGADD_ID_3 = "3";
	/** 進捗特記事項(置き換え文字列1) */
	private static final String TKJK_1 = "%1%";
	/** フォーマット変換（3桁、先頭0埋め） */
	private static final String FORMAT_1 = "%1$03d";

	/**
	 * コンストラクタです。
	 */
	public FUSV0033_FUSV0033OPDBMapper()
	{
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV0033WORK01(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// ０５０オプション電話処理フラグ → eo光電話オプションサービス申込解約（解約）作業項目マップ01.050オプション電話処理フラグ
		parentMap.put(N_050_OP_TELNO_TRAN_FLG, bean[1].sendMessageString(FUW05401SFConst.N_050_OP_TELNO_TRAN_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		// オプション処理フラグ → eo光電話オプションサービス申込解約（解約）作業項目マップ01.オプション処理フラグ
		parentMap.put(OP_TRAN_FLG, bean[1].sendMessageString(FUW05401SFConst.OP_TRAN_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		// サブオプション処理フラグ → eo光電話オプションサービス申込解約（解約）作業項目マップ01.サブオプション処理フラグ
		parentMap.put(SBOP_TRAN_FLG, bean[1].sendMessageString(FUW05401SFConst.SBOP_TRAN_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		// サービスオーダ処理フラグ → eo光電話オプションサービス申込解約（解約）作業項目マップ01.サービスオーダ処理フラグ
		parentMap.put(SOD_TRAN_FLG, bean[1].sendMessageString(FUW05401SFConst.SOD_TRAN_FLG, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV0033_W_O_R_K01, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV003301SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// ＳＹＳＩＤ → 申込内容承認登録マップ.SYSID
		parentMap.put(SYSID, bean[1].sendMessageString(FUW05401SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));

		beanTemp = bean[1];
		// 申込登録明細
		arraybean = beanTemp.getDataBeanArray(FUW05401SFConst.MSKM_DTL_LIST);
		if (parentMap.containsKey(EKK0011_D020_C_B_S_MSG1_LIST))
		{
			list = (ArrayList)parentMap.get(EKK0011_D020_C_B_S_MSG1_LIST);
		}
		else
		{
			list = new ArrayList();
		}
		if (arraybean != null && arraybean.getCount() > 0)
		{
			for (int i = 0; i < arraybean.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				HashMap childMap = null;
				if (list.size() - 1 >= i)
				{
					childMap = (HashMap)list.get(i);
				}
				else
				{
					childMap = new HashMap();
				}

				// 申込登録明細.申込形態コード → 申込内容承認登録マップ.申込登録明細.申込形態コード
				if (subbean != null)
				{
					childMap.put(MSKM_FORM_CD, subbean.sendMessageString(FUW05401SFConst.MSKM_FORM_CD_06, X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}
		parentMap.put(EKK0011_D020_C_B_S_MSG1_LIST, list);

		outputMap.put(FUSV003301_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV003302SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプションサービス契約番号 → サブオプションサービス契約解約マップ.オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// サブオプションサービス契約番号 → サブオプションサービス契約解約マップ.サブオプションサービス契約番号
		parentMap.put(SBOP_SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 最終更新年月日時分秒（サービス契約） → サブオプションサービス契約解約マップ.更新年月日時分秒（サブオプションサービス契約）
		parentMap.put(KK0401_UPD_DTM, bean[1].sendMessageString(FUW05401SFConst.KK0081_UPD_DTM_BF, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV003302_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV003303SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプションサービス契約番号 → サブオプションサービス契約解約確定マップ.オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// サブオプションサービス契約番号 → サブオプションサービス契約解約確定マップ.サブオプションサービス契約番号
		parentMap.put(SBOP_SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV003303_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV003304SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプションサービス契約番号 → オプションサービス契約解約マップ.オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 最終更新年月日時分秒（サービス契約） → オプションサービス契約解約マップ.更新年月日時分秒（オプションサービス契約）
		parentMap.put(KK0351_UPD_DTM, bean[1].sendMessageString(FUW05401SFConst.KK0081_UPD_DTM_BF, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV003304_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV003305SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプションサービス契約番号 → オプションサービス契約解約確定マップ.オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV003305_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV003306SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// サービス契約番号 → 進捗登録マップ.サービス契約番号
		parentMap.put(SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約内訳番号 → 進捗登録マップ.サービス契約内訳番号
		parentMap.put(SVC_KEI_UCWK_NO, bean[1].sendMessageString(FUW05401SFConst.SVC_KEI_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約回線内訳番号 → 進捗登録マップ.サービス契約回線内訳番号
		parentMap.put(SVC_KEI_KAISEN_UCWK_NO, bean[1].sendMessageString(FUW05401SFConst.SVC_KEI_KAISEN_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 進捗特記事項1
		try
		{
			// ○WEB変更情報
			X31SDataBeanAccess webChgInfoBean = bean[0].getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);

			// ○現顧客情報
			X31SDataBeanAccess genCustKeiInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO).getDataBean(0);
			// ○サービス契約情報
			X31SDataBeanAccess svcKeiInfoBean = genCustKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0);
			// ○サービス契約内訳情報
			X31SDataBeanAccess svcKeiUcwkInfoBean = svcKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_UCWK_INFO).getDataBean(0);

			String op_svc_cd = JFUWebCommon.getDataBeanItemByPath(bean[1], FUW05401SFConst.OP_SVC_CD);//オプションサービスコード
			String sbop_svc_cd = JFUWebCommon.getDataBeanItemByPath(bean[1], FUW05401SFConst.SBOP_SVC_CD);//サブオプションサービスコード

			String telNoJun = svcKeiUcwkInfoBean.sendMessageString(CommonInfoCFConst.TELNO_JUN_24, X31CWebConst.DATABEAN_GET_VALUE);
			telNoJun = String.format(FORMAT_1, Integer.parseInt(telNoJun));

			String prgTkjk1 = JFUStrConst.EMPTY;
			if (JFUStrConst.CD00136_B023.equals(op_svc_cd))//割込電話
			{
				String multiPhoneCallFlg = bean[1].sendMessageString(FUW05401SFConst.MULTI_PHONE_CALL_FLG, X31CWebConst.DATABEAN_GET_VALUE);
				if (JFUStrConst.CD00002_1.equals(multiPhoneCallFlg))
				{
					prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW05402, PRGADD_ID_3);
				}
				else
				{
					prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW05402, PRGADD_ID);
				}
			}
			else if (JFUStrConst.CD00136_B024.equals(op_svc_cd))//転送電話
			{
				if (JFUStrConst.CD00137_D07.equals(sbop_svc_cd))
				{
					prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW05602, PRGADD_ID);// 転送電話選択(転送電話のサブ)
				}
				else
				{
					prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW05502, PRGADD_ID);//転送電話
				}
			}
			else if (JFUStrConst.CD00136_B025.equals(op_svc_cd))//発信者番号表示
			{
				if (JFUStrConst.CD00137_D08.equals(sbop_svc_cd))
				{
					prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW05802, PRGADD_ID);// 非通知着信拒否(発信者番号表示のサブ)
				}
				else
				{
					prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW05702, PRGADD_ID);//発信者番号表示
				}
			}
			else if (JFUStrConst.CD00136_B026.equals(op_svc_cd))//迷惑電話拒否
			{
				prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW05902, PRGADD_ID);
			}
			else if (JFUStrConst.CD00136_B027.equals(op_svc_cd))//指定番号着信選択
			{
				prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW06002, PRGADD_ID);
			}
			else if (JFUStrConst.CD00136_B028.equals(op_svc_cd))//通話明細送付
			{
				prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW06102, PRGADD_ID);
			}
			else if (JFUStrConst.CD00136_B029.equals(op_svc_cd))//050ナンバープラス
			{
				prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW06202, PRGADD_ID);
			}
			else if (JFUStrConst.CD00136_B071.equals(op_svc_cd))//国際電話利用停止
			{
				prgTkjk1 = JFUWebCommon.getPrgAddTkjkFst(JFUScreenConst.SCREEN_ID_FUW10302, PRGADD_ID);
			}

			prgTkjk1 = prgTkjk1.replace(TKJK_1, telNoJun);

			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から正常に取得できませんでした。処理は続行します。");
		}

		beanTemp = bean[1];
		// 異動理由明細
		arraybean = beanTemp.getDataBeanArray(FUW05401SFConst.IDO_DTL_LIST);
		if (parentMap.containsKey(EKK1091_D010_C_B_S_MSG1_LIST))
		{
			list = (ArrayList)parentMap.get(EKK1091_D010_C_B_S_MSG1_LIST);
		}
		else
		{
			list = new ArrayList();
		}
		if (arraybean != null && arraybean.getCount() > 0)
		{
			for (int i = 0; i < arraybean.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				HashMap childMap = null;
				if (list.size() - 1 >= i)
				{
					childMap = (HashMap)list.get(i);
				}
				else
				{
					childMap = new HashMap();
				}

				// 異動理由明細.異動理由コード → 進捗登録マップ.異動理由明細.異動理由コード
				if (subbean != null)
				{
					childMap.put(IDO_RSN_CD, subbean.sendMessageString(FUW05401SFConst.IDO_RSN_CD_07, X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}
		parentMap.put(EKK1091_D010_C_B_S_MSG1_LIST, list);

		outputMap.put(FUSV003306_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV003307SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// エイジング番号 → エイジング対象使用終了マップ.エイジング番号
		parentMap.put(AGING_NO, bean[1].sendMessageString(FUW05401SFConst.AGING_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// ０５０オプション電話番号 → エイジング対象使用終了マップ.050オプション電話番号
		parentMap.put(N_050_OP_TELNO, bean[1].sendMessageString(FUW05401SFConst.N_050_OP_TELNO, X31CWebConst.DATABEAN_GET_VALUE));
		// 最終更新年月日時分秒（エイジング） → エイジング対象使用終了マップ.更新年月日時分秒（エイジング）
		parentMap.put(ZM0111_UPD_DTM, bean[1].sendMessageString(FUW05401SFConst.ZM0111_UPD_DTM_BF, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV003307_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV003308SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		//------ 手修正 start ------------------------------------------------------------------------------------------------------------
		// メソッド出力用のダミーMappingを削除I(遷移元画面ＩＤ)
		//------ 手修正 end   ------------------------------------------------------------------------------------------------------------

		outputMap.put(FUSV003308_S_C, parentMap);

		return outputMap;
	}

	/* ++++++++++ v4.00 修正開始 ++++++++++ */

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV003309SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// オプションサービス契約番号 → サブオプションサービス契約＜電話＞使用開始マップ.オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// サブオプションサービス契約番号 → サブオプションサービス契約解約確定マップ.サブオプションサービス契約番号
		parentMap.put(SBOP_SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 最終更新年月日時分秒（サービス契約） → サブオプションサービス契約解約マップ.更新年月日時分秒（更新前）
		parentMap.put(UPD_DTM_BF, bean[1].sendMessageString(FUW05401SFConst.KK0081_UPD_DTM_BF, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV003309_S_C, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV003310SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		// オプションサービス契約番号 → サブオプションサービス契約＜電話＞使用開始マップ.オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 最終更新年月日時分秒（サービス契約） → サブオプションサービス契約解約マップ.更新年月日時分秒（更新前）
		parentMap.put(UPD_DTM_BF, bean[1].sendMessageString(FUW05401SFConst.KK0081_UPD_DTM_BF, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV003310_S_C, parentMap);

		return outputMap;
	}

	/* ++++++++++ v4.00 修正終了 ++++++++++ */
	/**
	 * 上りマッピングを行います。
	 * @param bean　[0]：共有フォームビーン　[1]：ｅｏ光電話オプションサービス申込解約
	 * @param outputMap
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public void setFUSV003303CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		if (bean == null)
		{
			return;
		}

		if (bean.length != BEAN_LENGTH)
		{
			return;
		}

		// ○WEB変更情報
		X31SDataBeanAccess webChgInfoBean = bean[0].getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);

		// SSO情報
		X31SDataBeanAccess ssoInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.SSO_INFO).getDataBean(0);

		//電話番号を取得
		String ssoTelNo = ssoInfoBean.sendMessageString(CommonInfoCFConst.TELNO_21, X31CWebConst.DATABEAN_GET_VALUE);

		// ○現顧客情報
		X31SDataBeanAccess genCustKeiInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO).getDataBean(0);

		// ○サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = genCustKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0);

		// ○共有フォームBean.サービス契約内訳情報
		X31SDataBeanAccessArray svcKeiUcwkInfoArray = svcKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_UCWK_INFO);
		String svcKeiUcwkNo = null;
		for (int i = 0; i < svcKeiUcwkInfoArray.getCount(); i++)
		{
			X31SDataBeanAccess svcKeiUcwkInfoBean = svcKeiUcwkInfoArray.getDataBean(i);
			// サービス契約内訳ステータス
			String svcKeiUcwkStat = svcKeiUcwkInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_UCWK_STAT_24, X31CWebConst.DATABEAN_GET_VALUE);
			// 電話番号
			String svcKeiUcwkTelNo = svcKeiUcwkInfoBean.sendMessageString(CommonInfoCFConst.TELNO_24, X31CWebConst.DATABEAN_GET_VALUE);

			if ((JFUStrConst.CD00037_020.equals(svcKeiUcwkStat) || JFUStrConst.CD00037_030.equals(svcKeiUcwkStat) || JFUStrConst.CD00037_100
					.equals(svcKeiUcwkStat))
					&& ssoTelNo.equals(svcKeiUcwkTelNo))
			{
				// サービス契約内訳番号
				svcKeiUcwkNo = svcKeiUcwkInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_UCWK_NO_24, X31CWebConst.DATABEAN_GET_VALUE);
				break;
			}
		}

		// オプションサービスコード
		String op_svc_cd = JFUWebCommon.getDataBeanItemByPath(bean[1], FUW05401SFConst.OP_SVC_CD);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// IN項目:サービス契約内訳番号
		parentMap.put(IN_PARAM_SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		// IN項目:オプションサービスコード 
		parentMap.put(IN_PARAM_OP_SVC_CD, op_svc_cd);
		// IN項目:オプションサービス契約番号
		parentMap.put(OP_SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// IN項目:サブオプションサービス契約番号
		parentMap.put(SBOP_SVC_KEI_NO, bean[1].sendMessageString(FUW05401SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV003303_C_C, parentMap);
	}

}