/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：TELvisionユーザー情報変更･照会メニュー
*   ソースファイル名：FUW04201SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年12月27日
*＜機能概要＞
*  TELvisionユーザー情報変更･照会メニューのビューロジッククラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/12/27   FJ）新枦    新規作成
*
**********************************************************************/

package eo.web.webview.FUW04201SF;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.web.x00.JCCBusinessException;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
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.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW04202SF.FUW04202SFConst;
import eo.web.webview.FUW04401SF.FUW04401SFConst;
import eo.web.webview.FUW04801SF.FUW04801SFConst;
import eo.web.webview.FUW09801SF.FUW09801SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0071_FUSV0071OPDBMapper;

/**
 * TELvisionユーザー情報変更･照会メニューのビューロジッククラスです。<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW04201SFLogic extends JCCWebBusinessLogic
{
	/** 引き継ぎ情報：ＶｏＩＰユーザー情報 */
	private static final String MAP_KEY_VOIP_USER_INFO = "ＶｏＩＰユーザー情報";

	/** 外部コマンド正常終了 */
	private static final String SUCCESS = "0";
	/** サービスID */
	private static final String SERVICE_ID = "FUSV0071";
	/** 機能コード */
	private static final String KINOU_ID = "2";
	/** ステータス：情報取得成功 */
	private static final String STAT_000 = "000";
	/** ステータス：ユーザーが存在しない */
	private static final String STAT_101 = "101";
	/** 利用停止フラグ：利用停止中 */
	private static final String RIYO_STP_FLG_ON = "1";
	/** 登録完了フラグ：未完了 */
	private static final String ADD_FIN_FLG_OFF = "0";
	/** 加入属性：試用加入 */
	private static final String KANYU_ZOKUSEI_T = "T";
	/** 加入属性：本加入 */
	private static final String KANYU_ZOKUSEI_R = "R";
	/** フラグ：ＯＮ */
	private static final String FLG_ON = "1";
	/** フラグ：ＯＦＦ */
	private static final String FLG_OFF = "0";

	/** 受付終了メッセージ表示フラグ：表示 */
	private static final String UK_END_MSG_DSP_FLG_ON = "1";
	/** 受付終了メッセージ表示フラグ：非表示 */
	private static final String UK_END_MSG_DSP_FLG_OFF = "0";

	/** 追加ユーザー登録表示フラグ：表示 */
	private static final String TSUIKA_USER_ADD_DSP_FLG_ON = "1";
	/** 追加ユーザー登録表示フラグ：非表示 */
	private static final String TSUIKA_USER_ADD_DSP_FLG_OFF = "0";

	/** ユーザー情報照会表示フラグ：表示 */
	private static final String USER_IF_SHOKAI_DSP_FLG_ON = "1";
	/** ユーザー情報照会表示フラグ：非表示 */
	private static final String USER_IF_SHOKAI_DSP_FLG_OFF = "0";

	/** ユーザー解約表示フラグ：表示 */
	private static final String USER_DSL_DSP_FLG_ON = "1";
	/** ユーザー解約表示フラグ：非表示 */
	private static final String USER_DSL_DSP_FLG_OFF = "0";

	/** 公衆通話設定表示フラグ：表示 */
	private static final String KOSHU_TUWA_SET_DSP_FLG_ON = "1";
	/** 公衆通話設定表示フラグ：非表示 */
	private static final String KOSHU_TUWA_SET_DSP_FLG_OFF = "0";

	/** 公衆通話設定解約表示フラグ：表示 */
	private static final String KOSHU_TUWA_SET_DSL_DSP_FLG_ON = "1";
	/** 公衆通話設定解約表示フラグ：非表示 */
	private static final String KOSHU_TUWA_SET_DSL_DSP_FLG_OFF = "0";

	/** 未完了ユーザーお知らせ表示フラグ：表示 */
	private static final String MI_FIN_USER_INFO_DSP_FLG_ON = "1";
	/** 未完了ユーザーお知らせ表示フラグ：非表示 */
	private static final String MI_FIN_USER_INFO_DSP_FLG_OFF = "0";

	/** 登録ボタン切替フラグ：登録ボタン１ */
	private static final String ADD_BTN_SWITCH_FLG_1 = "1";
	/** 登録ボタン切替フラグ：登録ボタン２ */
	private static final String ADD_BTN_SWITCH_FLG_2 = "2";

	/**
	 * 初期表示処理
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean init() throws Exception
	{

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- init_FUW04201SFLogic Start -----");
		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// サービスフォームBean取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		// 共有フォームBean.サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO);
		// オンライン運用日付を取得
		String opeDate = JFUWebCommon.getOpeDate(this, null);

		// -------------------------------------------------
		// サービスフォームBeanのリストクリア
		// -------------------------------------------------
		// サービスフォームBean.ＶｏＩＰユーザー情報のデータを削除
		X31SDataBeanAccessArray voipUserInfo = serviceFormBean.getDataBeanArray(FUW04201SFConst.VOIP_USER_INFO);
		voipUserInfo.clearArray();

		// -------------------------------------------------
		// TELvisionコースVoIPユーザー情報取得
		// -------------------------------------------------
		// サービス契約情報.サービス契約番号
		String svcKeiNo = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_23, X31CWebConst.DATABEAN_GET_VALUE);
		// 外部API呼出処理
		execSync(serviceFormBean, svcKeiNo);

		// ステータスの取得
		String stat = serviceFormBean.sendMessageString(FUW04201SFConst.STAT, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccessArray voipUserInfoList = serviceFormBean.getDataBeanArray(FUW04201SFConst.VOIP_USER_INFO);
		if (!STAT_000.equals(stat) && !STAT_101.equals(stat))
		{
			// ステータスが"000"(情報取得成功)以外　または、"101"(eoユーザIDが存在しない) 以外の場合
			com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("★ ステータスエラー ★");
			// 業務用例外クラスをthrowする。
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}
		// 利用停止フラグ
		String riyoStpFlg = JFUStrConst.EMPTY;
		for (int i = 0; i < voipUserInfoList.getCount(); i++)
		{
			X31SDataBeanAccess voipUserInfoBean = voipUserInfoList.getDataBean(i);
			// ＶｏＩＰユーザー情報.利用停止フラグ
			riyoStpFlg = voipUserInfoBean.sendMessageString(FUW04201SFConst.RIYO_STP_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);
			if (RIYO_STP_FLG_ON.equals(riyoStpFlg))
			{
				break;
			}
		}
		if (STAT_000.equals(stat) && RIYO_STP_FLG_ON.equals(riyoStpFlg))
		{
			// ステータスが"000"(情報取得成功)　かつ　利用停止フラグが"1"(利用停止中)の場合
			com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("★ 利用停止エラー ★");
			// 業務用例外クラスをthrowする。
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0003);
		}

		// -------------------------------------------------
		// Databeanへのデータ設定
		// -------------------------------------------------
		// サービス契約情報.料金コースコード
		String pcrsCd = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.PCRS_CD_23, X31CWebConst.DATABEAN_GET_VALUE);
		// サービスフォームBeanに料金コースコードを設定
		serviceFormBean.sendMessageString(FUW04201SFConst.PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, pcrsCd);
		// サービスフォームBeanに予約適用年月日を設定
		serviceFormBean.sendMessageString(FUW04201SFConst.RSV_APLY_YMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);

		// -------------------------------------------------
		// サービス呼出処理
		// -------------------------------------------------
		// サービスIDをparamにセット
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SERVICE_ID);

		// DataBean-BPマッピング
		FUSV0071_FUSV0071OPDBMapper mapper = new FUSV0071_FUSV0071OPDBMapper();
		HashMap<String, HashMap<String, String>> inputMap = new HashMap<String, HashMap<String, String>>();
		// サービス処理結果格納用マップ
		HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>> outputMap = new HashMap<String, HashMap<String, ArrayList<HashMap<String, String>>>>();

		X31SDataBeanAccess[] paramBean = { serviceFormBean };
		// SC上りマッピング
		mapper.setFUSV007101SC(paramBean, inputMap, KINOU_ID);
		try
		{
			// サービス呼び出し
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			// 業務用例外クラスをthrowする。
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// -------------------------------------------------
		// サービス処理結果の取得
		// -------------------------------------------------
		X31SDataBeanAccess[] paramBeanOut = { serviceFormBean };
		// サービスからの戻りデータをBeanにセット
		mapper.getFUSV007101SC(paramBeanOut, outputMap);

		// -------------------------------------------------
		// 料金コース_オプションのチェック
		// -------------------------------------------------
		// サービスフォームBean.料金コースオプションサービス明細を取得
		X31SDataBeanAccessArray pcrsOpSvcList = serviceFormBean.getDataBeanArray(FUW04201SFConst.PCRS_OP_SVC_LIST);

		if (pcrsOpSvcList.getCount() == 0)
		{
			// 料金コースオプションサービス明細が0件の場合、業務用例外クラスをthrowする。
			com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("★ 料金コースオプションサービスなしエラー ★");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// -------------------------------------------------
		// 表示フラグの設定
		// -------------------------------------------------
		setDspFlg(serviceFormBean);

		// -------------------------------------------------
		// 遷移先画面ID、画面名の設定
		// -------------------------------------------------
		// TELvisionユーザー情報変更・照会メニュー画面に遷移
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW04201);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW04201);
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- init_FUW04201SFLogic End -----");
		return true;

	}

	/**
	 * 表示フラグの設定 <BR>
	 * 
	 * @param serviceFormBean サービスフォームBean
	 */
	private void setDspFlg(X31SDataBeanAccess serviceFormBean)
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setDspFlg_FUW04201SFLogic Start -----");
		// -------------------------------------------------
		// 最大オプションサービス数の設定
		// -------------------------------------------------
		// サービスフォームBean.料金コースオプションサービス明細を取得
		X31SDataBeanAccessArray pcrsOpSvcList = serviceFormBean.getDataBeanArray(FUW04201SFConst.PCRS_OP_SVC_LIST);
		X31SDataBeanAccess pcrsOpSvcBean = pcrsOpSvcList.getDataBean(0);
		// 最大オプションサービス数
		String maxOpSvcCnt = pcrsOpSvcBean.sendMessageString(FUW04201SFConst.MAS_OP_SVC_CNT_02, X31CWebConst.DATABEAN_GET_VALUE);
		// サービスフォームBean.最大オプションサービス数
		serviceFormBean.sendMessageString(FUW04201SFConst.MAX_OP_SVC_CNT, X31CWebConst.DATABEAN_SET_VALUE, maxOpSvcCnt);

		// サービスフォームBean.ステータスを取得
		String stat = serviceFormBean.sendMessageString(FUW04201SFConst.STAT, X31CWebConst.DATABEAN_GET_VALUE);
		if (STAT_101.equals(stat))
		{
			// -------------------------------------------------
			// 未加入の場合
			// -------------------------------------------------
			// 受付終了メッセージ表示フラグ:表示
			serviceFormBean.sendMessageString(FUW04201SFConst.UK_END_MSG_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, UK_END_MSG_DSP_FLG_ON);
			// 追加ユーザー登録表示フラグ：非表示
			serviceFormBean.sendMessageString(FUW04201SFConst.TSUIKA_USER_ADD_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, TSUIKA_USER_ADD_DSP_FLG_OFF);
			// ユーザー情報照会表示フラグ：非表示
			serviceFormBean.sendMessageString(FUW04201SFConst.USER_IF_SHOKAI_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, USER_IF_SHOKAI_DSP_FLG_OFF);
			// ユーザー解約表示フラグ：非表示
			serviceFormBean.sendMessageString(FUW04201SFConst.USER_DSL_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, USER_DSL_DSP_FLG_OFF);
			// 公衆通話設定表示フラグ：非表示
			serviceFormBean.sendMessageString(FUW04201SFConst.KOSHU_TUWA_SET_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, KOSHU_TUWA_SET_DSP_FLG_OFF);
			// 公衆通話設定解約表示フラグ：非表示
			serviceFormBean.sendMessageString(FUW04201SFConst.KOSHU_TUWA_SET_DSL_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
					KOSHU_TUWA_SET_DSL_DSP_FLG_OFF);
			// 未完了ユーザーお知らせ表示フラグ：非表示
			serviceFormBean
					.sendMessageString(FUW04201SFConst.MI_FIN_USER_INFO_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, MI_FIN_USER_INFO_DSP_FLG_OFF);
		}
		else
		{
			// 受付終了メッセージ表示フラグ:非表示
			serviceFormBean.sendMessageString(FUW04201SFConst.UK_END_MSG_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, UK_END_MSG_DSP_FLG_OFF);
			// サービスフォームBean.加入属性を取得
			String kanyuZokusei = serviceFormBean.sendMessageString(FUW04201SFConst.KANYU_ZOKUSEI, X31CWebConst.DATABEAN_GET_VALUE);
			if (KANYU_ZOKUSEI_T.equals(kanyuZokusei))
			{
				// -------------------------------------------------
				// 試用加入の場合
				// -------------------------------------------------
				// 追加ユーザー登録表示フラグ：非表示
				serviceFormBean.sendMessageString(FUW04201SFConst.TSUIKA_USER_ADD_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
						TSUIKA_USER_ADD_DSP_FLG_OFF);
				// ユーザー情報照会表示フラグ：表示
				serviceFormBean.sendMessageString(FUW04201SFConst.USER_IF_SHOKAI_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, USER_IF_SHOKAI_DSP_FLG_ON);
				// ユーザー解約表示フラグ：非表示
				serviceFormBean.sendMessageString(FUW04201SFConst.USER_DSL_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, USER_DSL_DSP_FLG_OFF);
				// 公衆通話設定表示フラグ：非表示
				serviceFormBean
						.sendMessageString(FUW04201SFConst.KOSHU_TUWA_SET_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, KOSHU_TUWA_SET_DSP_FLG_OFF);
				// 公衆通話設定解約表示フラグ：非表示
				serviceFormBean.sendMessageString(FUW04201SFConst.KOSHU_TUWA_SET_DSL_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
						KOSHU_TUWA_SET_DSL_DSP_FLG_OFF);
				// 未完了ユーザーお知らせ表示フラグ：非表示
				serviceFormBean.sendMessageString(FUW04201SFConst.MI_FIN_USER_INFO_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
						MI_FIN_USER_INFO_DSP_FLG_OFF);
			}
			else if (KANYU_ZOKUSEI_R.equals(kanyuZokusei))
			{
				// -------------------------------------------------
				// 本加入の場合
				// -------------------------------------------------
				// サービスフォームBean.ＶｏＩＰユーザーＩＤ数を取得
				int voipUserIdSu = Integer.parseInt(serviceFormBean.sendMessageString(FUW04201SFConst.VOIP_USER_ID_SU,
						X31CWebConst.DATABEAN_GET_VALUE));
				if (voipUserIdSu == Integer.parseInt(maxOpSvcCnt))
				{
					// -------------------------------------------------
					// 登録数上限
					// -------------------------------------------------
					// 追加ユーザー登録表示フラグ：非表示
					serviceFormBean.sendMessageString(FUW04201SFConst.TSUIKA_USER_ADD_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
							TSUIKA_USER_ADD_DSP_FLG_OFF);
				}
				else if (voipUserIdSu < Integer.parseInt(maxOpSvcCnt))
				{
					// -------------------------------------------------
					// 登録数上限未満
					// -------------------------------------------------
					// 追加ユーザー登録表示フラグ：表示
					serviceFormBean.sendMessageString(FUW04201SFConst.TSUIKA_USER_ADD_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
							TSUIKA_USER_ADD_DSP_FLG_ON);
				}
				// ユーザー情報照会表示フラグ：表示
				serviceFormBean.sendMessageString(FUW04201SFConst.USER_IF_SHOKAI_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, USER_IF_SHOKAI_DSP_FLG_ON);
				// ユーザー解約表示フラグ：表示
				serviceFormBean.sendMessageString(FUW04201SFConst.USER_DSL_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, USER_DSL_DSP_FLG_ON);

				// 公衆番号フラグ
				String koshNoFlg = FLG_OFF;
				// 登録未完了フラグ
				String addMiFinFlg = FLG_OFF;
				// サービスフォームBean.ＶｏＩＰユーザー情報を取得
				X31SDataBeanAccessArray voipUserInfo = serviceFormBean.getDataBeanArray(FUW04201SFConst.VOIP_USER_INFO);
				for (int i = 0; i < voipUserInfo.getCount(); i++)
				{
					X31SDataBeanAccess voipUserInfoBean = voipUserInfo.getDataBean(i);
					if (!JFUStrConst.EMPTY.equals(voipUserInfoBean.sendMessageString(FUW04201SFConst.KOSHU_NO_01, X31CWebConst.DATABEAN_GET_VALUE)))
					{
						// ＶｏＩＰユーザー情報.公衆番号が設定されている場合、公衆番号フラグに"1"を設定
						koshNoFlg = FLG_ON;
					}
					if (ADD_FIN_FLG_OFF.equals(voipUserInfoBean.sendMessageString(FUW04201SFConst.ADD_FIN_FLG_01, X31CWebConst.DATABEAN_GET_VALUE)))
					{
						// ＶｏＩＰユーザー情報.登録完了フラグが"0"未完了の場合、登録未完了フラグに"1"を設定
						addMiFinFlg = FLG_ON;
					}
				}
				if (voipUserIdSu == 1 && FLG_ON.equals(koshNoFlg))
				{
					// -------------------------------------------------
					// 全てのユーザーIDが公衆番号を設定
					// -------------------------------------------------
					// 公衆通話設定表示フラグ：非表示
					serviceFormBean.sendMessageString(FUW04201SFConst.KOSHU_TUWA_SET_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
							KOSHU_TUWA_SET_DSP_FLG_OFF);
				}
				else
				{
					// 公衆通話設定表示フラグ：表示
					serviceFormBean.sendMessageString(FUW04201SFConst.KOSHU_TUWA_SET_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
							KOSHU_TUWA_SET_DSP_FLG_ON);
				}

				if (FLG_ON.equals(koshNoFlg))
				{
					// -------------------------------------------------
					// 公衆番号設定有り
					// -------------------------------------------------
					// 公衆通話設定解約表示フラグ：表示
					serviceFormBean.sendMessageString(FUW04201SFConst.KOSHU_TUWA_SET_DSL_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
							KOSHU_TUWA_SET_DSL_DSP_FLG_ON);
				}
				else
				{
					// -------------------------------------------------
					// 公衆番号設定無し
					// -------------------------------------------------
					// 公衆通話設定解約表示フラグ：非表示
					serviceFormBean.sendMessageString(FUW04201SFConst.KOSHU_TUWA_SET_DSL_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
							KOSHU_TUWA_SET_DSL_DSP_FLG_OFF);

				}
				if (FLG_ON.equals(addMiFinFlg))
				{
					// -------------------------------------------------
					// 登録未完了ユーザー有り
					// -------------------------------------------------
					// 未完了ユーザーお知らせ表示フラグ：表示
					serviceFormBean.sendMessageString(FUW04201SFConst.MI_FIN_USER_INFO_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
							MI_FIN_USER_INFO_DSP_FLG_ON);
					// 追加ユーザー登録ボタン切替フラグ：追加ボタン１
					serviceFormBean.sendMessageString(FUW04201SFConst.TSUIKA_USER_ADD_BTN_SWITCH_FLG, X31CWebConst.DATABEAN_SET_VALUE,
							ADD_BTN_SWITCH_FLG_1);
				}
				else
				{
					// -------------------------------------------------
					// 登録未完了ユーザー無し
					// -------------------------------------------------
					// 未完了ユーザーお知らせ表示フラグ：非表示
					serviceFormBean.sendMessageString(FUW04201SFConst.MI_FIN_USER_INFO_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
							MI_FIN_USER_INFO_DSP_FLG_OFF);
					// 追加ユーザー登録ボタン切替フラグ：追加ボタン２
					serviceFormBean.sendMessageString(FUW04201SFConst.TSUIKA_USER_ADD_BTN_SWITCH_FLG, X31CWebConst.DATABEAN_SET_VALUE,
							ADD_BTN_SWITCH_FLG_2);
				}
			}
		}
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setDspFlg_FUW04201SFLogic End -----");
	}

	/**
	 * 登録するボタン押下処理 <BR>
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean addUserAdd1() throws Exception
	{

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- addUserAdd1_FUW04201SFLogic Start -----");
		// 引き継ぎ情報設定(FUW09801:TELvision･eo-netフォンMYページログイン)
		setParam(JFUScreenConst.SCREEN_ID_FUW09801, JFUScreenConst.SCREEN_NAME_FUW09801);
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- addUserAdd1_FUW04201SFLogic End -----");

		return true;
	}

	/**
	 * 登録するボタン押下処理 <BR>
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean addUserAdd2() throws Exception
	{

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- addUserAdd2_FUW04201SFLogic Start -----");
		// 引き継ぎ情報設定(FUW04401:TELvisionユーザー本加入登録)
		setParam(JFUScreenConst.SCREEN_ID_FUW04401, JFUScreenConst.SCREEN_NAME_FUW04401);
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- addUserAdd2_FUW04201SFLogic End -----");

		return true;
	}

	/**
	 * 照会するボタン押下処理 <BR>
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean shokaiUserIf() throws Exception
	{

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- shokaiUserIf_FUW04201SFLogic Start -----");
		// 引き継ぎ情報設定(FUW04202:TELvisionユーザー情報照会)
		setParam(JFUScreenConst.SCREEN_ID_FUW04202, JFUScreenConst.SCREEN_NAME_FUW04202);
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- shokaiUserIf_FUW04201SFLogic End -----");

		return true;
	}

	/**
	 * 解約するボタン押下処理 <BR>
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean dslUser() throws Exception
	{

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- dslUser_FUW04201SFLogic Start -----");
		// 引き継ぎ情報設定(FUW04601:TELvisionユーザー解約)
		setParam(JFUScreenConst.SCREEN_ID_FUW04601, JFUScreenConst.SCREEN_NAME_FUW04601);
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- dslUser_FUW04201SFLogic End -----");

		return true;
	}

	/**
	 * 公衆通話・設定するボタン押下処理 <BR>
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean setKoshuTuwa() throws Exception
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setKoshuTuwa_FUW04201SFLogic Start -----");
		// 引き継ぎ情報設定(FUW04701:TELvisionユーザー公衆通話設定)
		setParam(JFUScreenConst.SCREEN_ID_FUW04701, JFUScreenConst.SCREEN_NAME_FUW04701);
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setKoshuTuwa_FUW04201SFLogic End -----");

		return true;
	}

	/**
	 * 公衆通話・解約するボタン押下処理 <BR>
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean dslKoshuTuwaSet() throws Exception
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- dslKoshuTuwaSet_FUW04201SFLogic Start -----");
		// 引き継ぎ情報設定(FUW04801:TELvisionユーザー公衆通話設定解約)
		setParam(JFUScreenConst.SCREEN_ID_FUW04801, JFUScreenConst.SCREEN_NAME_FUW04801);
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- dslKoshuTuwaSet_FUW04201SFLogic End -----");

		return true;
	}

	/**
	 * 引き継ぎ情報設定 <BR>
	 * 
	 * @param nextScreenId 遷移先画面ID
	 * @param nextScreenName 遷移先画面名
	 * @throws Exception 例外
	 */
	private void setParam(String nextScreenId, String nextScreenName) throws Exception
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setParam_FUW04201SFLogic Start -----");
		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = super.getServiceFormBean();

		// 引き継ぎ情報dataMap作成
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// TELvisionユーザー本加入登録の場合
		if (JFUScreenConst.SCREEN_ID_FUW04401.equals(nextScreenId))
		{
			// VoIPユーザーID数
			String voipUserIdSu = serviceInfoBean.sendMessageString(FUW04201SFConst.VOIP_USER_ID_SU, X31CWebConst.DATABEAN_GET_VALUE);
			dataMap.put(FUW04401SFConst.VOIP_USER_ID_SU, voipUserIdSu);
			// 引継ぎ情報を設定
			JFUWebCommon.setScreenInfo(this, nextScreenId, dataMap);
		}
		// TELvision･eo-netフォンMYページログインの場合
		if (JFUScreenConst.SCREEN_ID_FUW09801.equals(nextScreenId))
		{
			// ＶｏＩＰユーザー情報
			X31SDataBeanAccessArray voipUserInfo = serviceInfoBean.getDataBeanArray(FUW04201SFConst.VOIP_USER_INFO);
			String userId = JFUStrConst.EMPTY;

			for (int i = 0; i < voipUserInfo.getCount(); i++)
			{
				X31SDataBeanAccess voipUserInfoBean = voipUserInfo.getDataBean(i);

				// 登録完了フラグ
				String addFinFlg = voipUserInfoBean.sendMessageString(FUW04201SFConst.ADD_FIN_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);
				if (ADD_FIN_FLG_OFF.equals(addFinFlg))
				{
					// 登録完了フラグが"0"：未完了の場合、ＶｏＩＰユーザーＩＤを取得
					// ＶｏＩＰユーザーＩＤ
					userId = voipUserInfoBean.sendMessageString(FUW04201SFConst.VOIP_USER_ID_01, X31CWebConst.DATABEAN_GET_VALUE);
					break;
				}

			}
			dataMap.put(FUW09801SFConst.USER_ID, userId);
			dataMap.put(FUW09801SFConst.PRE_GAMEN_ID, JFUScreenConst.SCREEN_ID_FUW04201);
			// 引継ぎ情報を設定
			JFUWebCommon.setScreenInfo(this, nextScreenId, dataMap);
		}

		// TELvisionユーザー情報照会の場合
		if (JFUScreenConst.SCREEN_ID_FUW04202.equals(nextScreenId))
		{
			// 最大オプションサービス数
			String maxOpSvcCnt = serviceInfoBean.sendMessageString(FUW04201SFConst.MAX_OP_SVC_CNT, X31CWebConst.DATABEAN_GET_VALUE);

			dataMap.put(FUW04202SFConst.MAS_OP_SVC_CNT, maxOpSvcCnt);
			// 引継ぎ情報を設定
			JFUWebCommon.setScreenInfo(this, nextScreenId, dataMap);
		}

		// TELvisionユーザー解約の場合 or TELvisionユーザー公衆通話設定の場合
		if (JFUScreenConst.SCREEN_ID_FUW04601.equals(nextScreenId) || JFUScreenConst.SCREEN_ID_FUW04701.equals(nextScreenId))
		{
			// ＶｏＩＰユーザー情報
			X31SDataBeanAccessArray voipUserInfo = serviceInfoBean.getDataBeanArray(FUW04201SFConst.VOIP_USER_INFO);
			// ＶｏＩＰユーザー情報リスト
			ArrayList<HashMap<String, Object>> voipUserInfoList = new ArrayList<HashMap<String, Object>>();
			for (int i = 0; i < voipUserInfo.getCount(); i++)
			{
				X31SDataBeanAccess voipUserInfoBean = voipUserInfo.getDataBean(i);
				// ＶｏＩＰユーザーＩＤ
				String voipUserId = voipUserInfoBean.sendMessageString(FUW04201SFConst.VOIP_USER_ID_01, X31CWebConst.DATABEAN_GET_VALUE);
				// ＶｏＩＰ電話番号
				String voipTelno = voipUserInfoBean.sendMessageString(FUW04201SFConst.VOIP_TELNO_01, X31CWebConst.DATABEAN_GET_VALUE);
				// ｅｏサービス区分
				String eoSvcKbn = voipUserInfoBean.sendMessageString(FUW04201SFConst.EO_SVC_KBN_01, X31CWebConst.DATABEAN_GET_VALUE);
				// 登録完了フラグ
				String addFinFlg = voipUserInfoBean.sendMessageString(FUW04201SFConst.ADD_FIN_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);
				// メールアドレス
				String mlad = voipUserInfoBean.sendMessageString(FUW04201SFConst.MLAD_01, X31CWebConst.DATABEAN_GET_VALUE);
				// 利用停止フラグ
				String riyoStpFlg = voipUserInfoBean.sendMessageString(FUW04201SFConst.RIYO_STP_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);
				// 公衆番号
				String koshuNo = voipUserInfoBean.sendMessageString(FUW04201SFConst.KOSHU_NO_01, X31CWebConst.DATABEAN_GET_VALUE);

				// ＶｏＩＰユーザー情報Mapに設定
				HashMap<String, Object> voipUserInfoMap = new HashMap<String, Object>();
				// ＶｏＩＰユーザーＩＤ
				voipUserInfoMap.put(FUW04201SFConst.VOIP_USER_ID_01, voipUserId);
				// ＶｏＩＰ電話番号
				voipUserInfoMap.put(FUW04201SFConst.VOIP_TELNO_01, voipTelno);
				// ｅｏサービス区分
				voipUserInfoMap.put(FUW04201SFConst.EO_SVC_KBN_01, eoSvcKbn);
				// 登録完了フラグ
				voipUserInfoMap.put(FUW04201SFConst.ADD_FIN_FLG_01, addFinFlg);
				// メールアドレス
				voipUserInfoMap.put(FUW04201SFConst.MLAD_01, mlad);
				// 利用停止フラグ
				voipUserInfoMap.put(FUW04201SFConst.RIYO_STP_FLG_01, riyoStpFlg);
				// 公衆番号
				voipUserInfoMap.put(FUW04201SFConst.KOSHU_NO_01, koshuNo);
				// ＶｏＩＰユーザー情報リストに追加
				voipUserInfoList.add(voipUserInfoMap);
			}

			dataMap.put(MAP_KEY_VOIP_USER_INFO, voipUserInfoList);
			// 引継ぎ情報を設定
			JFUWebCommon.setScreenInfo(this, nextScreenId, dataMap);
		}

		// TELvisionユーザー公衆通話設定解約の場合
		if (JFUScreenConst.SCREEN_ID_FUW04801.equals(nextScreenId))
		{
			// ＶｏＩＰユーザーＩＤ
			String voipUserId = JFUStrConst.EMPTY;
			// ＶｏＩＰユーザー情報
			X31SDataBeanAccessArray voipUserInfo = serviceInfoBean.getDataBeanArray(FUW04201SFConst.VOIP_USER_INFO);
			for (int i = 0; i < voipUserInfo.getCount(); i++)
			{
				X31SDataBeanAccess subbean = voipUserInfo.getDataBean(i);
				// 公衆番号
				String koshuNo = subbean.sendMessageString(FUW04201SFConst.KOSHU_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
				if (!JFUStrConst.EMPTY.equals(koshuNo))
				{
					// 公衆番号が設定されている場合、ＶｏＩＰユーザーＩＤを取得
					voipUserId = subbean.sendMessageString(FUW04201SFConst.VOIP_USER_ID_01, X31CWebConst.DATABEAN_GET_VALUE);
					break;
				}
			}
			dataMap.put(FUW04801SFConst.VOIP_USER_ID, voipUserId);
			// 引継ぎ情報を設定
			JFUWebCommon.setScreenInfo(this, nextScreenId, dataMap);
		}

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("★ 引継情報 ★：＝" + dataMap);
		// 遷移先画面IDを設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);

		// 遷移先画面名を設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setParam_FUW04201SFLogic End -----");
	}

	/**
	 * 外部API呼出処理を行います。 <BR>
	 * 
	 * @param serviceFormBean サービスフォームBean
	 * @param strSvcKeiNo サービス契約番号
	 */
	private void execSync(X31SDataBeanAccess serviceFormBean, String strSvcKeiNo)
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- execSync_FUW04201SFLogic Start -----");
		// 実行結果
		List<String> dataList = new ArrayList<String>();

		// 外部コマンド実行標準出力格納
		StringBuffer outPut = new StringBuffer();

		// 外部コマンド情報
		String[] cmd = { JFUWebCommon.getApplicationConst(JFUStrConst.REMOTE_CMD_NM), JFUWebCommon.getApplicationConst(JFUStrConst.REMOTE_CMD_OP1),
				JFUWebCommon.getApplicationConst(JFUStrConst.FUIFE011_PARAM1), strSvcKeiNo,
				JFUWebCommon.getApplicationConst(JFUStrConst.REMOTE_CMD_OP2), JFUWebCommon.getApplicationConst(JFUStrConst.VOIP_ENV) };

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("★ コマンドライン引数配列 ★：＝" + Arrays.toString(cmd));

		// 外部コマンド実行処理
		String execSyncCode = JFUWebCommon
				.execSync(cmd, outPut, Integer.parseInt(JFUWebCommon.getApplicationConst(JFUStrConst.REMOTE_EXEC_TIME_OUT)));

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("★ リターンコード ★：＝" + execSyncCode);

		// 外部コマンド実行結果
		if (SUCCESS.equals(execSyncCode))
		{
			if (0 < outPut.length())
			{
				// デバッグログ
				com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("★ 外部コマンド実行結果 ★：＝" + outPut.toString());
				// 出力結果をListに詰め直す。
				dataList = Arrays.asList(outPut.toString().split(JFUWebCommon.LINE_SEPARATOR));
			}
			else
			{
				// "0002"（システムエラー）
				com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("★ 外部コマンド実行結果なしエラー ★");
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
			}
		}
		else
		{
			// "0002"（システムエラー）
			com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("★ リターンコードエラー ★");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// 出力結果をサービスフォームBeanに設定
		setServiceFormBean(serviceFormBean, dataList);
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- execSync_FUW04201SFLogic End -----");

	}

	/**
	 * サービスフォームBeanの設定。 <BR>
	 * 
	 * @param serviceFormBean サービスフォームBean
	 * @param dataList 出力結果
	 */
	private void setServiceFormBean(X31SDataBeanAccess serviceFormBean, List<String> dataList)
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setServiceFormBean_FUW04201SFLogic Start -----");
		// ステータス
		String stat = JFUStrConst.EMPTY;
		// 加入属性
		String kanyuZokusei = JFUStrConst.EMPTY;
		// 試用加入終了予定日
		String ftrialKanyuEndRsvBi = JFUStrConst.EMPTY;
		// 本加入移行猶予期限
		String honkanyuIkoKuyoKigen = JFUStrConst.EMPTY;
		// ＶｏＩＰユーザーＩＤ数
		String voipUserIdSu = JFUStrConst.EMPTY;
		// ＶｏＩＰユーザーＩＤ
		String voipUserId = JFUStrConst.EMPTY;
		// ＶｏＩＰ電話番号
		String voipTelno = JFUStrConst.EMPTY;
		// ｅｏサービス区分
		String eoSvcKbn = JFUStrConst.EMPTY;
		// 登録完了フラグ
		String addFinFlg = JFUStrConst.EMPTY;
		// メールアドレス
		String mlad = JFUStrConst.EMPTY;
		// 利用停止フラグ
		String riyoStpFlg = JFUStrConst.EMPTY;
		// 公衆番号
		String koshuNo = JFUStrConst.EMPTY;

		// -------------------------------------------------
		// 出力結果から値の取得
		// -------------------------------------------------
		// ステータス
		stat = dataList.get(0);
		// サービスフォームBean.ステータス
		serviceFormBean.sendMessageString(FUW04201SFConst.STAT, X31CWebConst.DATABEAN_SET_VALUE, stat);
		if (STAT_000.equals(stat))
		{
			// 加入属性
			kanyuZokusei = dataList.get(1);
			// 試用加入終了予定日
			ftrialKanyuEndRsvBi = dataList.get(2);
			// 本加入移行猶予期限
			honkanyuIkoKuyoKigen = dataList.get(3);
			// ＶｏＩＰユーザーＩＤ数
			voipUserIdSu = dataList.get(4);
			int loopCnt = Integer.parseInt(voipUserIdSu);
			// -------------------------------------------------
			// サービスフォームBeanへ設定
			// -------------------------------------------------
			// サービスフォームBean.加入属性
			serviceFormBean.sendMessageString(FUW04201SFConst.KANYU_ZOKUSEI, X31CWebConst.DATABEAN_SET_VALUE, kanyuZokusei);
			// サービスフォームBean.試用加入終了予定日
			serviceFormBean.sendMessageString(FUW04201SFConst.FTRIAL_KANYU_END_RSV_BI, X31CWebConst.DATABEAN_SET_VALUE, ftrialKanyuEndRsvBi);
			// サービスフォームBean.本加入移行猶予期限
			serviceFormBean.sendMessageString(FUW04201SFConst.HONKANYU_IKO_KUYO_KIGEN, X31CWebConst.DATABEAN_SET_VALUE, honkanyuIkoKuyoKigen);
			// サービスフォームBean.ＶｏＩＰユーザーＩＤ数
			serviceFormBean.sendMessageString(FUW04201SFConst.VOIP_USER_ID_SU, X31CWebConst.DATABEAN_SET_VALUE, voipUserIdSu);

			// -------------------------------------------------
			// サービスフォームBean.ＶｏＩＰユーザー情報へ設定
			// -------------------------------------------------
			X31SDataBeanAccessArray voipUserInfoList = serviceFormBean.getDataBeanArray(FUW04201SFConst.VOIP_USER_INFO);
			for (int i = 0; i < loopCnt; i++)
			{
				int dataCnt = i + 5;
				// ＶｏＩＰユーザー情報
				String[] voipUserInfo = dataList.get(dataCnt).split(JFUStrConst.COMMA);
				// ＶｏＩＰユーザーＩＤ
				voipUserId = voipUserInfo[0];
				// ＶｏＩＰ電話番号
				voipTelno = voipUserInfo[1];
				// ｅｏサービス区分
				eoSvcKbn = voipUserInfo[2];
				// 登録完了フラグ
				addFinFlg = voipUserInfo[3];
				// メールアドレス
				mlad = voipUserInfo[4];
				// 利用停止フラグ
				riyoStpFlg = voipUserInfo[5];
				// 公衆番号
				if (voipUserInfo.length == 7)
				{
					koshuNo = voipUserInfo[6];
				}
				else
				{
					koshuNo = JFUStrConst.EMPTY;
				}

				X31SDataBeanAccess voipUserInfoBean = voipUserInfoList.addDataBean();
				// ＶｏＩＰユーザー情報.ＶｏＩＰユーザーＩＤ
				voipUserInfoBean.sendMessageString(FUW04201SFConst.VOIP_USER_ID_01, X31CWebConst.DATABEAN_SET_VALUE, voipUserId);
				// ＶｏＩＰユーザー情報.ＶｏＩＰ電話番号
				voipUserInfoBean.sendMessageString(FUW04201SFConst.VOIP_TELNO_01, X31CWebConst.DATABEAN_SET_VALUE, voipTelno);
				// ＶｏＩＰユーザー情報.ｅｏサービス区分
				voipUserInfoBean.sendMessageString(FUW04201SFConst.EO_SVC_KBN_01, X31CWebConst.DATABEAN_SET_VALUE, eoSvcKbn);
				// ＶｏＩＰユーザー情報.登録完了フラグ
				voipUserInfoBean.sendMessageString(FUW04201SFConst.ADD_FIN_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, addFinFlg);
				// ＶｏＩＰユーザー情報.メールアドレス
				voipUserInfoBean.sendMessageString(FUW04201SFConst.MLAD_01, X31CWebConst.DATABEAN_SET_VALUE, mlad);
				// ＶｏＩＰユーザー情報.利用停止フラグ
				voipUserInfoBean.sendMessageString(FUW04201SFConst.RIYO_STP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, riyoStpFlg);
				// ＶｏＩＰユーザー情報.公衆番号
				voipUserInfoBean.sendMessageString(FUW04201SFConst.KOSHU_NO_01, X31CWebConst.DATABEAN_SET_VALUE, koshuNo);
			}

		}
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setServiceFormBean_FUW04201SFLogic End -----");
	}
}
