/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：FUW07201SFLogic
*   ソースファイル名：FUW07201SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年09月15日
*＜機能概要＞
*   eo光電話 NTT番号切替工事日予約申込 ビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/09/15   FJ）西川    新規作成
*   V3.00		2012/04/19	 FJ）岡井	 【ANK-0041-00-00】申込完了メール対応
*
**********************************************************************/
package eo.web.webview.FUW07201SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.math.BigDecimal;
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.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x31.X31CMessageResult.X31CMessageMoreInfo;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0113_FUSV0113OPDBMapper;
import eo.web.webview.mapping.FUSV0114_FUSV0114OPDBMapper;
import eo.web.webview.mapping.FUSV0115_FUSV0115OPDBMapper;

/**
 * FUW072_eo光電話 NTT番号切替工事日予約申込 ビューロジック
 * <br>
 * @author 富士通
 */
public class FUW07201SFLogic extends JCCWebBusinessLogic
{

	////////////////////////////////////////////////////////////////////////////////
	//	定数
	////////////////////////////////////////////////////////////////////////////////

	/** 予約状態 "0"(予約可能) */
	private static final String RSV_STAT_0 = "0";

	/** 予約状態 "1"(工事完了済) */
	private static final String RSV_STAT_1 = "1";

	/** 予約状態 "2"(切替日手続中) */
	private static final String RSV_STAT_2 = "2";

	/** 予約状態 "3"(切替日確定済) */
	private static final String RSV_STAT_3 = "3";

	/** 予約状態 "4"(予約受付済) */
	private static final String RSV_STAT_4 = "4";

	/** 予約状態 "5"(他事業者サービスご利用中) */
	private static final String RSV_STAT_5 = "5";

	/** 予約状態 "6"(eo光電話開通未確認_番ポ追加申込時) */
	private static final String RSV_STAT_6 = "6";

	/** 予約状態 "7"(eo光電話開通未確認_通話ログなし) */
	private static final String RSV_STAT_7 = "7";

	/** 予約状態 "8"(他事業者調整不可) */
	private static final String RSV_STAT_8 = "8";

	/** 予約状態 "9"(ＮＴＴ申請不可) */
	private static final String RSV_STAT_9 = "9";

	/** 予約状態 "10"(番ポ工事取消) */
	private static final String RSV_STAT_10 = "10";

	/** 予約状態 "1"(工事完了済) 取得キー */
	private static final String RSV_STAT_1_KEY = "rsv_stat_1";

	/** 予約状態 "2"(切替日手続中) 取得キー */
	private static final String RSV_STAT_2_KEY = "rsv_stat_2";

	/** 予約状態 "3"(切替日確定済) 取得キー */
	private static final String RSV_STAT_3_KEY = "rsv_stat_3";

	/** 予約状態 "4"(予約受付済) 取得キー */
	private static final String RSV_STAT_4_KEY = "rsv_stat_4";

	/** 予約状態 "5"(他事業者サービスご利用中) 取得キー */
	private static final String RSV_STAT_5_KEY = "rsv_stat_5";

	/** 予約状態 "6"(eo光電話開通未確認_番ポ追加申込時) 取得キー */
	private static final String RSV_STAT_6_KEY = "rsv_stat_6";

	/** 予約状態 "7"(eo光電話開通未確認_通話ログなし) 取得キー */
	private static final String RSV_STAT_7_KEY = "rsv_stat_7";

	/** 予約状態 "8"(他事業者調整不可) 取得キー */
	private static final String RSV_STAT_8_KEY = "rsv_stat_8";

	/** 予約状態 "9"(ＮＴＴ申請不可) 取得キー */
	private static final String RSV_STAT_9_KEY = "rsv_stat_9";

	/** 予約状態 "10"(番ポ工事取消) 取得キー */
	private static final String RSV_STAT_10_KEY = "rsv_stat_10";

	/** 過去日判定パラメータ："1"(同日を含む) */
	private static final String IS_PAST_DATE_PARAM_TODAY_YES = "1";

	/** XPathクエリ ＜確認事項タイトルマップ＞ */
	private static final String XPATH_QUERY_CFM_JIKO_TITLE = "DISPSETTING/SETTING[@screenId='FUW07202']/DISPTEXT[@groupid='cfm_jiko_title']";

	/** XPathクエリ ＜確認事項内容マップ＞ */
	private static final String XPATH_QUERY_CFM_JIKO_NAIYO = "DISPSETTING/SETTING[@screenId='FUW07202']/DISPTEXT[@groupid='cfm_jiko_naiyo']";

	/** XPathクエリ ＜注意事項タイトルマップ＞ */
	private static final String XPATH_QUERY_CHUI_JIKO_TITLE = "DISPSETTING/SETTING[@screenId='FUW07203']/DISPTEXT[@groupid='chui_jiko_title']";

	/** XPathクエリ ＜注意事項内容マップ＞ */
	private static final String XPATH_QUERY_CHUI_JIKO_NAIYO = "DISPSETTING/SETTING[@screenId='FUW07203']/DISPTEXT[@groupid='chui_jiko_naiyo']";

	/** XPathクエリ 開始日日数 */
	private static final String XPATH_QUERY_STAYMD_CNT = "DISPSETTING/SETTING[@screenId='FUW07204']/DISPCTL[@id='staymd_cnt']/text()";

	/** XPathクエリ 可能期間日数 */
	private static final String XPATH_QUERY_PSB_PRD_CNT = "DISPSETTING/SETTING[@screenId='FUW07204']/DISPCTL[@id='psb_prd_cnt']/text()";

	/** XPathクエリ 基準値１ */
	private static final String XPATH_QUERY_STDARD_VALUE_1 = "DISPSETTING/SETTING[@screenId='FUW07204']/DISPCTL[@id='stdard_value_1']/text()";

	/** XPathクエリ 基準値２ */
	private static final String XPATH_QUERY_STDARD_VALUE_2 = "DISPSETTING/SETTING[@screenId='FUW07204']/DISPCTL[@id='stdard_value_2']/text()";

	/** XPathクエリ ＜時間帯表示有マップ＞ */
	private static final String XPATH_QUERY_DSP_TIME = "DISPSETTING/SETTING[@screenId='FUW07204']/DISPCTL[@groupid='dsp_time']";

	/** 画面定義取得 属性名 */
	private static final String GET_DISP_ITEM_ATTR_NM = "id";

	/** サービスID eo光電話NTT工事日予約電話番号選択初期表示 */
	private static final String SVC_ID_INIT = "FUSV0113";

	/** サービスID eo光電話NTT番号切替工事日予約申込希望日リスト取得 */
	private static final String SVC_ID_GET_LIST = "FUSV0114";

	/** サービスID eo光電話NTT番号切替工事日予約申込実行 */
	private static final String SVC_ID_MSKM = "FUSV0115";

	/** 予約可能区分 0:○（余裕があります） */
	private static final String RSV_PSB_KBN_0 = "0";

	/** 予約可能区分 1:△（残りわずか） */
	private static final String RSV_PSB_KBN_1 = "1";

	/** 予約可能区分 2:×（受付終了） */
	private static final String RSV_PSB_KBN_2 = "2";

	/** 予約可能区分 3:−（対象外） */
	private static final String RSV_PSB_KBN_3 = "3";

	/** テンプレートID:番ポ工事内容変更 */
	private static final String TEMPLATE_ID_ETU0011C010 = "ETU0011C010";

	/** エラーフラグ:番ポ工事・存在チェックエラー */
	private static final String ERR_FLG_BMPKJ_SONZAI_CHK = JFUStrConst.RELATION_CHECK_ERR_EG;

	/** エラーフラグ:番ポ工事・排他チェックエラー */
	private static final String ERR_FLG_BMPKJ_HAITA_CHK = JFUStrConst.RELATION_CHECK_ERR_EH;

	/** 項目ID:番ポ工事番号 */
	private static final String ITEM_ID_BMP_KOJI_NO = "bmp_koji_no";

	/** 項目ID:番ポ工事希望年月日時 */
	private static final String ITEM_ID_BMP_KOJI_KIBO_YMDH = "bmp_koji_kibo_ymdh";

	/** 申込完了メールID */
	private static final String MSKM_COMP_MAIL_ID = "FUW072_1";

	/** カラム名リスト：予約可能数 */
	private static final String[] COLUM_NM_LIST_RSV_PSB_CNT =
			{

			FUW07201SFConst.N_0_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_1_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_2_JIDAI_RSV_PSB_CNT_08,
					FUW07201SFConst.N_3_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_4_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_5_JIDAI_RSV_PSB_CNT_08,
					FUW07201SFConst.N_6_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_7_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_8_JIDAI_RSV_PSB_CNT_08,
					FUW07201SFConst.N_9_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_10_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_11_JIDAI_RSV_PSB_CNT_08,
					FUW07201SFConst.N_12_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_13_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_14_JIDAI_RSV_PSB_CNT_08,
					FUW07201SFConst.N_15_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_16_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_17_JIDAI_RSV_PSB_CNT_08,
					FUW07201SFConst.N_18_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_19_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_20_JIDAI_RSV_PSB_CNT_08,
					FUW07201SFConst.N_21_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_22_JIDAI_RSV_PSB_CNT_08, FUW07201SFConst.N_23_JIDAI_RSV_PSB_CNT_08

			};

	/** カラム名リスト：工事合計数 */
	private static final String[] COLUM_NM_LIST_KOJI_GOKEI_CNT =
			{

			FUW07201SFConst.N_0_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_1_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_2_JIDAI_KOJI_GOKEI_CNT_08,
					FUW07201SFConst.N_3_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_4_JIDAI_KOJI_GOKEI_CNT_08,
					FUW07201SFConst.N_5_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_6_JIDAI_KOJI_GOKEI_CNT_08,
					FUW07201SFConst.N_7_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_8_JIDAI_KOJI_GOKEI_CNT_08,
					FUW07201SFConst.N_9_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_10_JIDAI_KOJI_GOKEI_CNT_08,
					FUW07201SFConst.N_11_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_12_JIDAI_KOJI_GOKEI_CNT_08,
					FUW07201SFConst.N_13_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_14_JIDAI_KOJI_GOKEI_CNT_08,
					FUW07201SFConst.N_15_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_16_JIDAI_KOJI_GOKEI_CNT_08,
					FUW07201SFConst.N_17_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_18_JIDAI_KOJI_GOKEI_CNT_08,
					FUW07201SFConst.N_19_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_20_JIDAI_KOJI_GOKEI_CNT_08,
					FUW07201SFConst.N_21_JIDAI_KOJI_GOKEI_CNT_08, FUW07201SFConst.N_22_JIDAI_KOJI_GOKEI_CNT_08,
					FUW07201SFConst.N_23_JIDAI_KOJI_GOKEI_CNT_08

			};

	/** サービス契約内訳ステータス エラーリスト */
	private static final List<String> SVC_KEI_UCWK_STAT_ERR_LIST = Arrays.asList(JFUStrConst.CD00037_010,
																					JFUStrConst.CD00037_920,
																					JFUStrConst.CD00037_210,
																					JFUStrConst.CD00037_220,
																					JFUStrConst.CD00037_910);

	/** 予約状態種別 申し込み不可リスト */
	private static final List<String> RSV_STAT_MSKM_NG_LIST = Arrays.asList(RSV_STAT_2,
																				RSV_STAT_3,
																				RSV_STAT_4,
																				RSV_STAT_5,
																				RSV_STAT_6,
																				RSV_STAT_7,
																				RSV_STAT_8,
																				RSV_STAT_9,
																				RSV_STAT_10);

	/** BigDecimal定数：100 */
	private static final BigDecimal BIGDECIMAL_100 = new BigDecimal("100");

////////////////////////////////////////////////////////////////////////////////
//	【FUW07201】
////////////////////////////////////////////////////////////////////////////////

	/**
	 * 初期表示処理【FUW07201】
	 * <br>
	 * @return boolean true(固定)
	 * @throws Exception	すべての例外
	 */
	public boolean init() throws Exception
	{

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		//----------------------------------------------
		// 共通チェック
		//     ・住所未確定チェック
		//     ・ＶＡポート番号チェック
		//     ・契約状態チェック
		//----------------------------------------------
		chkCommon(commonInfoBean);

		//----------------------------------------------
		// サービス呼出処理
		//----------------------------------------------
		callSvcFUSV0113(bean, commonInfoBean);

		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// 予約状態種別の決定            ----- start -----
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

		// 番ポ工事一覧照会情報アクセサ
		X31SDataBeanAccessArray bmpKojiIcrnShokaiInfoArray = bean.getDataBeanArray(FUW07201SFConst.BMP_KOJI_ICRN_SHOKAI_INFO);

		//----------------------------------------------
		// 番ポ工事一覧照会情報の要素数が0件の場合
		//----------------------------------------------
		if (0 == bmpKojiIcrnShokaiInfoArray.getCount())
		{

			DEBUG_LOG.debug("FUW072_init【契約状態エラー】番ポ工事一覧照会情報の要素数が0件");
			// 契約状態エラーとし、業務共通例外クラス（JCCBusinessException）をスローする。
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}

		//----------------------------------------------
		// オンライン運用日付取得
		//----------------------------------------------
		String opeDate = JFUWebCommon.getOpeDate(this, null);
		DEBUG_LOG.debug("FUW072_init【オンライン運用日付】" + opeDate);

		// 予約状態種別リスト
		List<String> rsvStatList = new ArrayList<String>(bmpKojiIcrnShokaiInfoArray.getCount());
		// サービス契約情報
		X31SDataBeanAccess svcKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO);

		//=========================================================================================
		// ※取得データ件数分LOOP              ----- start -----
		//=========================================================================================
		for (int i = 0; i < bmpKojiIcrnShokaiInfoArray.getCount(); i++)
		{
			//----------------------------------------------
			// 番ポ工事一覧照会情報取得(1)
			//----------------------------------------------
			// 番ポ工事一覧照会情報
			X31SDataBeanAccess bmpKojiIcrnShokaiInfo = bmpKojiIcrnShokaiInfoArray.getDataBean(i);
			// 番ポ工事ステータス
			String bmpKojiStat = bmpKojiIcrnShokaiInfo.sendMessageString(FUW07201SFConst.BMP_KOJI_STAT_07, X31CWebConst.DATABEAN_GET_VALUE);
			// 番ポ工事希望年月日保留フラグ
			String bmpkjKiboYmdPdingFlg =
					bmpKojiIcrnShokaiInfo.sendMessageString(FUW07201SFConst.BMPKJ_KIBO_YMD_PDING_FLG_07, X31CWebConst.DATABEAN_GET_VALUE);
			// 番ポ工事確定年月日時
			String bmpKojiFixYmdh = bmpKojiIcrnShokaiInfo.sendMessageString(FUW07201SFConst.BMP_KOJI_FIX_YMDH_07, X31CWebConst.DATABEAN_GET_VALUE);
			// 番ポ工事希望年月日時
			String bmpKojiKiboYmdh = bmpKojiIcrnShokaiInfo.sendMessageString(FUW07201SFConst.BMP_KOJI_KIBO_YMDH_07, X31CWebConst.DATABEAN_GET_VALUE);

			String bmpMskmshoTypeCd =
					bmpKojiIcrnShokaiInfo.sendMessageString(FUW07201SFConst.BMP_MSKMSHO_TYPE_CD_07, X31CWebConst.DATABEAN_GET_VALUE);

			DEBUG_LOG.debug("★番ポ工事ステータス(" + i + ") == " + bmpKojiStat);
			DEBUG_LOG.debug("★番ポ工事希望年月日保留フラグ(" + i + ") == " + bmpkjKiboYmdPdingFlg);
			DEBUG_LOG.debug("★番ポ工事確定年月日時(" + i + ") == " + bmpKojiFixYmdh);
			DEBUG_LOG.debug("★番ポ工事希望年月日時(" + i + ") == " + bmpKojiKiboYmdh);

			DEBUG_LOG.debug("★番ポ申込書タイプコード[番ポ依頼内容コード](" + i + ") == " + bmpMskmshoTypeCd);

			//----------------------------------------------
			// 番ポ工事完了済判定
			//----------------------------------------------
			// 番ポ工事ステータス＝"050"(番ポ工事完了)の場合
			if (JFUStrConst.CD00194_050.equals(bmpKojiStat))
			{
				// 予約状態種別  ⇒  "1"(工事完了済)
				rsvStatList.add(i, RSV_STAT_1);
				continue;
			}
			//----------------------------------------------
			// 番ポ工事不可・取消判定
			//----------------------------------------------
			// 番ポ工事ステータス＝"013"(他事業者調整不可)の場合
			else if (JFUStrConst.CD00194_013.equals(bmpKojiStat))
			{
				// 予約状態種別  ⇒  "8"(他事業者調整不可)
				rsvStatList.add(i, RSV_STAT_8);
				continue;
			}
			// 番ポ工事ステータス＝"023"(ＮＴＴ申請不可)の場合
			else if (JFUStrConst.CD00194_023.equals(bmpKojiStat))
			{
				// 予約状態種別  ⇒  "9"(ＮＴＴ申請不可)
				rsvStatList.add(i, RSV_STAT_9);
				continue;
			}
			// 番ポ工事ステータス＝"090"(番ポ工事取消)の場合
			else if (JFUStrConst.CD00194_090.equals(bmpKojiStat))
			{
				// 予約状態種別  ⇒  "10"(番ポ工事取消)
				rsvStatList.add(i, RSV_STAT_10);
				continue;
			}
			//----------------------------------------------
			// 他事業者サービス利用判定
			//----------------------------------------------
			// 番ポ工事ステータス＝"010"(他事業者確認要) または、
			// 番ポ工事ステータス＝"011"(他事業者依頼待ち) または、
			// 番ポ工事ステータス＝"012"(他事業者依頼済み)の場合
			else if (JFUStrConst.CD00194_010.equals(bmpKojiStat) || JFUStrConst.CD00194_011.equals(bmpKojiStat)
					|| JFUStrConst.CD00194_012.equals(bmpKojiStat))
			{
				// 予約状態種別  ⇒  "5"(他事業者サービスご利用中)
				rsvStatList.add(i, RSV_STAT_5);
				continue;
			}
			//----------------------------------------------
			// 他事業者サービス利用判定(2)
			//----------------------------------------------
			// 番ポ工事ステータス＝"000"(工事希望日未入力)の場合
			else if (JFUStrConst.CD00194_000.equals(bmpKojiStat))
			{
				//------------------------------------------------------------------------------------
				// INFO:注意
				//------------------------------------------------------------------------------------
				// 番ポ工事．番ポ申込書タイプコードには、
				// コード定義の「番ポ依頼内容コード」が設定される
				// (コード定義に「番ポ申込書タイプコード」が存在するが、これが設定されるわけではない)
				//
				//        番ポ依頼内容コード:"1"(移転) → NTTからの番ポ
				//        番ポ依頼内容コード:"2"(変更) → 他事業者からの番ポ

				// 番ポ申込書タイプコード[番ポ依頼内容コード]＝"2"(変更)の場合
				if (JFUStrConst.CD00524_2.equals(bmpMskmshoTypeCd))
				{
					// 予約状態種別  ⇒  "5"(他事業者サービスご利用中)
					rsvStatList.add(i, RSV_STAT_5);
					continue;
				}
				// 上記以外で番ポ申込書タイプコード[番ポ依頼内容コード]＝"1"(移転)でない場合
				// (現状、定義されているのは"3"(廃止)のみ)
				else if (!JFUStrConst.CD00524_1.equals(bmpMskmshoTypeCd))
				{
					DEBUG_LOG.debug("FUW072_init【契約状態エラー】番ポ申込書タイプコード[番ポ依頼内容コード]が「1:移転」「2:変更」以外");
					// 契約状態エラー
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
				}
			}
			//----------------------------------------------
			// 番ポ工事希望日保留判定
			//----------------------------------------------
			// 番ポ工事希望年月日保留フラグ＝"1"(保留)の場合
			else if (JFUStrConst.CD00426_1.equals(bmpkjKiboYmdPdingFlg))
			{
				// 予約状態種別  ⇒  "2"(切替日手続中)
				rsvStatList.add(i, RSV_STAT_2);
				continue;
			}
			//----------------------------------------------
			// 工事日確定判定
			//----------------------------------------------
			// 番ポ工事確定年月日時が設定済（≠null、"")の場合
			else if (0 < JFUWebCommon.getLength(JFUWebCommon.trim(bmpKojiFixYmdh)))
			{
				// 予約状態種別  ⇒  "3"(切替日確定済)
				rsvStatList.add(i, RSV_STAT_3);
				continue;
			}
			//----------------------------------------------
			// 希望日予約受付済判定
			//----------------------------------------------
			// 番ポ工事希望年月日時が設定済（≠null、"")の場合
			else if (0 < JFUWebCommon.getLength(JFUWebCommon.trim(bmpKojiKiboYmdh)))
			{
				// 予約状態種別  ⇒  "4"(予約受付済)
				rsvStatList.add(i, RSV_STAT_4);
				continue;
			}
			//----------------------------------------------
			// 希望日入力可能判定
			//----------------------------------------------
			else if (!JFUStrConst.CD00194_000.equals(bmpKojiStat))
			{
				DEBUG_LOG.debug("FUW072_init【システムエラー】番ポ工事ステータス≠000(工事希望日未入力)");
				// 番ポ工事ステータス≠"000"(工事希望日未入力)の場合
				// システムエラーとし、業務共通例外クラス（JCCBusinessException）をスローする。
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
			}

			/////////////////////////////////////////////////////////////////////////////////////////////////
			// 【eo光電話開通確認】
			/////////////////////////////////////////////////////////////////////////////////////////////////
			eoHtelOpenCfm(svcKeiInfo, bmpKojiIcrnShokaiInfo, rsvStatList, opeDate, i);
		}
		//=========================================================================================
		// ※取得データ件数分LOOP              ----- end   -----
		//=========================================================================================

		//----------------------------------------------
		// (予約状態種別の設定件数チェック)
		//----------------------------------------------
		// ありえないが、システム的に念のためチェック
		if (bmpKojiIcrnShokaiInfoArray.getCount() != rsvStatList.size())
		{
			DEBUG_LOG.debug("FUW072_init【システムエラー】予約状態種別の設定件数が不正");
			// 予約状態種別の判定が不能の場合、システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// 予約状態種別の決定            ----- end -----
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

		//----------------------------------------------
		// サービスフォームBean設定
		//----------------------------------------------
		setBeanValue(bean, bmpKojiIcrnShokaiInfoArray, rsvStatList);

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07201);

		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07201);

		return true;
	}

	/**
	 * 【eo光電話開通確認】<br>
	 * 番ポ追加／同時申込判定 を行い、判定結果に応じて<br>
	 * eo光電話の開通確認を行います。<br>
	 * また、確認結果を元に予約状態種別を判定し、リストに追加します。
	 * <br>
	 * @param svcKeiInfo			サービス契約情報
	 * @param bmpKojiIcrnShokaiInfo	番ポ工事一覧照会情報
	 * @param rsvStatList			予約状態種別リスト
	 * @param opeDate				オンライン運用日付
	 * @param i						LOOPカウンタ
	 * @throws Exception		すべての例外
	 */
	private void eoHtelOpenCfm(X31SDataBeanAccess svcKeiInfo,
								X31SDataBeanAccess bmpKojiIcrnShokaiInfo,
								List<String> rsvStatList,
								String opeDate,
								int i) throws Exception
	{
		//----------------------------------------------
		// サービス契約内訳情報取得
		//----------------------------------------------
		// 番ポ工事一覧照会情報.サービス契約内訳番号
		String svcKeiUcwkNo = JFUWebCommon.getDataBeanItemByPath(bmpKojiIcrnShokaiInfo, FUW07201SFConst.SVC_KEI_UCWK_NO_07);

		// サービス契約内訳番号が、番ポ工事一覧照会情報と一致するサービス契約内訳情報を取得
		Map<String, String> condition = new HashMap<String, String>();
		condition.put(CommonInfoCFConst.SVC_KEI_UCWK_NO_24, svcKeiUcwkNo);
		X31SDataBeanAccess svcKeiUcwkInfo = JFUWebCommon.getDataBeanTypeByPathWithKey(svcKeiInfo, CommonInfoCFConst.SVC_KEI_UCWK_INFO, condition);

		// 番ポ有無
		String bmpUm = JFUWebCommon.getDataBeanItemByPath(svcKeiUcwkInfo, CommonInfoCFConst.BMP_UM_24);
		// 初回CDR発生年月日
		String firstCdrHasseiYmd = JFUWebCommon.getDataBeanItemByPath(svcKeiUcwkInfo, CommonInfoCFConst.FIRST_CDR_HASSEI_YMD_24);
		// サービス課金開始年月日
		String svcChrgStaymd = JFUWebCommon.getDataBeanItemByPath(svcKeiUcwkInfo, CommonInfoCFConst.SVC_CHRG_STAYMD_24);

		DEBUG_LOG.debug("▲番ポ工事一覧照会情報.サービス契約内訳番号(" + i + ") == " + svcKeiUcwkNo);
		DEBUG_LOG.debug("▲番ポ有無(" + i + ") == " + bmpUm);
		DEBUG_LOG.debug("▲初回CDR発生年月日(" + i + ") == " + firstCdrHasseiYmd);
		DEBUG_LOG.debug("▲サービス課金開始年月日(" + i + ") == " + svcChrgStaymd);

		//----------------------------------------------
		// 番ポ工事一覧照会情報取得(2)
		//----------------------------------------------
		// 番ポ工事受付年月日
		String bmpKojiUkYmd = bmpKojiIcrnShokaiInfo.sendMessageString(FUW07201SFConst.BMP_KOJI_UK_YMD_07, X31CWebConst.DATABEAN_GET_VALUE);
		// NTT契約電話回線番号
		String nttKeiTelKaisenNo = bmpKojiIcrnShokaiInfo.sendMessageString(FUW07201SFConst.NTT_KEI_TEL_KAISEN_NO_07,
																			X31CWebConst.DATABEAN_GET_VALUE);

		DEBUG_LOG.debug("◎番ポ工事受付年月日(" + i + ") == " + bmpKojiUkYmd);
		DEBUG_LOG.debug("◎NTT契約電話回線番号(" + i + ") == " + nttKeiTelKaisenNo);

		//----------------------------------------------
		// （番ポ追加／同時申込判定）
		//----------------------------------------------
		// ===================================================
		// サービス契約内訳情報.番ポ有無が"0"(無)の場合
		// ===================================================
		if (JFUStrConst.CD00002_0.equals(bmpUm))
		{
			DEBUG_LOG.debug("【eo光電話開通確認】＜番ポ追加申込＞ (" + i + ")");
			//----------------------------------------------
			// 【eo光電話開通確認】＜番ポ追加申込＞
			//----------------------------------------------
			// 初回CDR発生年月日が設定済（≠null、"")の場合
			if (0 < JFUWebCommon.getLength(JFUWebCommon.trim(firstCdrHasseiYmd)))
			{
				// 予約状態種別  ⇒  "0"(予約可能)
				rsvStatList.add(i, RSV_STAT_0);
				return;
			}
			// サービス課金開始年月日≦オンライン運用日付の場合
			else if ((0 < JFUWebCommon.getLength(JFUWebCommon.trim(svcChrgStaymd))
						&& JFUWebCommon.isPastDate(svcChrgStaymd, opeDate, IS_PAST_DATE_PARAM_TODAY_YES)))
			{
				// 予約状態種別  ⇒  "0"(予約可能)
				rsvStatList.add(i, RSV_STAT_0);
				return;
			}
			// いずれにも該当しなかった場合
			else
			{
				// 予約状態種別  ⇒  "6"(eo光電話開通未確認_番ポ追加申込時)
				rsvStatList.add(i, RSV_STAT_6);
				return;
			}


		}
		// ===================================================
		// サービス契約内訳情報.番ポ有無が"0"(無)でない場合
		// ===================================================
		else
		{
			DEBUG_LOG.debug("【eo光電話開通確認】＜番ポ同時申込＞ (" + i + ")");
			//----------------------------------------------
			// 【eo光電話開通確認】＜番ポ同時申込＞
			//----------------------------------------------
			if ((0 == JFUWebCommon.getLength(JFUWebCommon.trim(bmpKojiUkYmd)))
					|| (0 == JFUWebCommon.getLength(JFUWebCommon.trim(nttKeiTelKaisenNo))))
			{
				DEBUG_LOG.debug("FUW072_eoHtelOpenCfm【システムエラー】番ポ工事受付年月日が未設定、またはNTT契約電話回線番号が未設定");
				// 番ポ工事受付年月日が未設定(＝null、""）、または、
				// NTT契約電話回線番号が未設定(＝null、""）の場合
				// システムエラーとし、業務共通例外クラス（JCCBusinessException）をスローする。
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
			}

			//----------------------------------------------
			// 通話ログ参照（自動応答サーバ）
			//----------------------------------------------
			// パラメータ用リスト
			List<Object> paramList = new ArrayList<Object>(2);
			paramList.add(nttKeiTelKaisenNo);	// [0]電話番号		←	NTT契約電話回線番号
			paramList.add(bmpKojiUkYmd);		// [1]通話開始日	←	番ポ工事受付年月日

			// チェック結果が、true(通話ログあり)の場合
			if (JFUWebCommon.isAutoResponseLog(paramList))
			{
				// 予約状態種別  ⇒  "0"(予約可能)
				rsvStatList.add(i, RSV_STAT_0);
				return;
			}
			// チェック結果が、false(通話ログなし)の場合
			else
			{
				// 予約状態種別  ⇒  "7"(eo光電話開通未確認_通話ログなし)
				rsvStatList.add(i, RSV_STAT_7);
				return;
			}
		}
	}



	/**
	 * サービスフォームBean設定<br>
	 * 予約状態種別を元に、サービスフォームBeanに値を設定します。
	 * <br>
	 * @param bean							サービスフォームBean
	 * @param bmpKojiIcrnShokaiInfoArray	番ポ工事一覧照会情報アクセサ
	 * @param rsvStatList					予約状態種別リスト
	 * @throws Exception	すべての例外
	 */
	private void setBeanValue(X31SDataBeanAccess bean,
								X31SDataBeanAccessArray bmpKojiIcrnShokaiInfoArray,
								List<String> rsvStatList) throws Exception
	{

		//----------------------------------------------
		// 画面表示文言取得処理
		//----------------------------------------------
		// ＜予約状態マップ＞<キー:予約状態種別、値:予約状態の表示文言>
		Map<String, String> rsvStatMap = getRsvStatMap();

		//----------------------------------------------
		// サービスフォームBean設定
		//----------------------------------------------
		// ----- 電話番号情報 ------ //
		X31SDataBeanAccessArray telNoIfArray = bean.getDataBeanArray(FUW07201SFConst.TELNO_INFO);
		for (int i = 0; i < bmpKojiIcrnShokaiInfoArray.getCount(); i++)
		{
			//-----------------------------------------------------------------------------------------
			// 番ポ工事一覧照会情報
			X31SDataBeanAccess bmpKojiIcrnShokaiInfo = bmpKojiIcrnShokaiInfoArray.getDataBean(i);
			// 電話番号情報
			X31SDataBeanAccess telNoInfo = telNoIfArray.addDataBean();
			// 予約状態種別
			String rsvStat = rsvStatList.get(i);
			//-----------------------------------------------------------------------------------------

			// ■番号     ← 1からの連番
			telNoInfo.sendMessageString(FUW07201SFConst.NO_01, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i + 1));

			// ■電話番号 ← 番ポ工事一覧照会明細.NTT契約電話回線番号
			telNoInfo.sendMessageString(FUW07201SFConst.TELNO_01, X31CWebConst.DATABEAN_SET_VALUE,
											bmpKojiIcrnShokaiInfo.sendMessageString(FUW07201SFConst.NTT_KEI_TEL_KAISEN_NO_07,
																						X31CWebConst.DATABEAN_GET_VALUE));

			// ============================================
			// ■切替工事日
			// --------------------------------------------
			// "3"(切替日確定済)の場合
			if (RSV_STAT_3.equals(rsvStat))
			{
				// 切替工事日 ← 番ポ工事一覧照会明細.番ポ工事確定年月日時
				telNoInfo.sendMessageString(FUW07201SFConst.SWITCH_KOJI_DATE_01, X31CWebConst.DATABEAN_SET_VALUE,
													bmpKojiIcrnShokaiInfo.sendMessageString(FUW07201SFConst.BMP_KOJI_FIX_YMDH_07,
																						X31CWebConst.DATABEAN_GET_VALUE));
			}
			// "4"(予約受付済)の場合
			else if (RSV_STAT_4.equals(rsvStat))
			{
				// 切替工事日 ← 番ポ工事一覧照会明細.番ポ工事希望年月日時
				telNoInfo.sendMessageString(FUW07201SFConst.SWITCH_KOJI_DATE_01, X31CWebConst.DATABEAN_SET_VALUE,
						bmpKojiIcrnShokaiInfo.sendMessageString(FUW07201SFConst.BMP_KOJI_KIBO_YMDH_07,
															X31CWebConst.DATABEAN_GET_VALUE));
			}
			// ============================================

			// ============================================
			// ■予約状態／電話番号表示フラグ
			// --------------------------------------------
			//  "0"(予約可能)以外の場合
			if (!RSV_STAT_0.equals(rsvStat))
			{
				// 予約状態 ← 予約状態種別に対応する画面表示用文言
				telNoInfo.sendMessageString(FUW07201SFConst.RSV_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, rsvStatMap.get(rsvStat));
				// 電話番号表示フラグ ← false(非表示)
				telNoInfo.sendMessageBoolean(FUW07201SFConst.TELNO_DSP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			}
			// 上記以外の場合
			else
			{
				// 電話番号表示フラグ ← true(表示)
				telNoInfo.sendMessageBoolean(FUW07201SFConst.TELNO_DSP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
			}
			// ============================================

			// ============================================
			// ■他事業者サービス利用説明表示フラグ
			// --------------------------------------------
			// "5"(他事業者サービスご利用中)の場合
			if (RSV_STAT_5.equals(rsvStat))
			{
				// 他事業者サービス利用説明表示フラグ ← true(表示)
				telNoInfo.sendMessageBoolean(FUW07201SFConst.TAJGS_SVC_USE_SETMEI_DSP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
			}
			// 上記以外の場合
			else
			{
				// 他事業者サービス利用説明表示フラグ ← false(非表示)
				telNoInfo.sendMessageBoolean(FUW07201SFConst.TAJGS_SVC_USE_SETMEI_DSP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			}
			// ============================================

			// ==============================================
			// ■eo光電話アダプター初期動作確認表示フラグ
			// ----------------------------------------------
			// "7"(eo光電話開通未確認_通話ログなし)の場合
			if (RSV_STAT_7.equals(rsvStat))
			{
				// eo光電話アダプター初期動作確認表示フラグ ← true(表示)
				telNoInfo.sendMessageBoolean(FUW07201SFConst.EO_HTEL_ADAPTER_SHK_DOSA_CRM_DSP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
			}
			// 上記以外の場合
			else
			{
				// eo光電話アダプター初期動作確認表示フラグ ← false(非表示)
				telNoInfo.sendMessageBoolean(FUW07201SFConst.EO_HTEL_ADAPTER_SHK_DOSA_CRM_DSP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			}
			// ==============================================

		}

		// ===========================================================
		// ■2番号同一、1番号のみの変更についての説明表示フラグ
		// ■申し込むボタン表示フラグ
		// -----------------------------------------------------------
		// 電話番号情報が複数存在する場合
		if (1 < telNoIfArray.getCount())
		{
			// ----------------------------------------------------------------------------------------------------------------
			// ■2番号同一、1番号のみの変更についての説明表示フラグ
			// ----------------------------------------------------------------------------------------------------------------
			// いずれも、"0"(予約可能)である場合
			if (RSV_STAT_0.equals(rsvStatList.get(0)) && (RSV_STAT_0.equals(rsvStatList.get(1))))
			{
				// 2番号同一、1番号のみの変更についての説明表示フラグ ← true(表示)
				bean.sendMessageBoolean(FUW07201SFConst.NO_CHG_SETMEI_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
			}
			// 上記以外の場合
			else
			{
				// 2番号同一、1番号のみの変更についての説明表示フラグ ← false(非表示)
				bean.sendMessageBoolean(FUW07201SFConst.NO_CHG_SETMEI_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			}
			// ----------------------------------------------------------------------------------------------------------------

			// ----------------------------------------------------------------------------------------------------------------
			// ■申し込むボタン表示フラグ
			// ----------------------------------------------------------------------------------------------------------------
			// いずれかが、申込不可ステータスの場合
			if (RSV_STAT_MSKM_NG_LIST.contains(rsvStatList.get(0)) || RSV_STAT_MSKM_NG_LIST.contains(rsvStatList.get(1)))
			{
				// 申し込むボタン表示フラグ ← false(非表示)
				bean.sendMessageBoolean(FUW07201SFConst.MSKM_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			}
			else
			{
				// いずれも、"1"(工事完了済)である場合
				if (RSV_STAT_1.equals(rsvStatList.get(0)) && RSV_STAT_1.equals(rsvStatList.get(1)))
				{
					// 申し込むボタン表示フラグ ← false(非表示)
					bean.sendMessageBoolean(FUW07201SFConst.MSKM_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
				}
				// 上記以外の場合
				else
				{
					// 申し込むボタン表示フラグ ← true(表示)
					bean.sendMessageBoolean(FUW07201SFConst.MSKM_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
				}
			}
			// ----------------------------------------------------------------------------------------------------------------

		}
		// 上記以外の場合(電話番号１件)
		else
		{
			// 2番号同一、1番号のみの変更についての説明表示フラグ ← false(非表示)
			bean.sendMessageBoolean(FUW07201SFConst.NO_CHG_SETMEI_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);

			//  "0"(予約可能)の場合
			if (RSV_STAT_0.equals(rsvStatList.get(0)))
			{
				// 申し込むボタン表示フラグ ← true(表示)
				bean.sendMessageBoolean(FUW07201SFConst.MSKM_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
			}
			// "0"(予約可能)以外の場合
			else
			{
				// 申し込むボタン表示フラグ ← false(非表示)
				bean.sendMessageBoolean(FUW07201SFConst.MSKM_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			}

		}
	}

	/**
	 * 予約状態マップ取得<br>
	 * 画面表示文言を取得し、キー:予約状態種別、値:予約状態の表示文言のマップに設定します。
	 * <br>
	 * @return	予約状態マップ
	 * @throws Exception	すべての例外
	 */
	private Map<String, String> getRsvStatMap() throws Exception
	{
		Map<String, String> rsvStatMap = new HashMap<String, String>();

		// 予約状態:"1"(工事完了済)
		rsvStatMap.put(RSV_STAT_1, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07201, RSV_STAT_1_KEY));
		// 予約状態:"2"(切替日手続中)
		rsvStatMap.put(RSV_STAT_2, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07201, RSV_STAT_2_KEY));
		// 予約状態:"3"(切替日確定済)
		rsvStatMap.put(RSV_STAT_3, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07201, RSV_STAT_3_KEY));
		// 予約状態:"4"(予約受付済)
		rsvStatMap.put(RSV_STAT_4, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07201, RSV_STAT_4_KEY));
		// 予約状態:"5"(他事業者サービスご利用中)
		rsvStatMap.put(RSV_STAT_5, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07201, RSV_STAT_5_KEY));
		// 予約状態:"6"(eo光電話開通未確認_番ポ追加申込時)
		rsvStatMap.put(RSV_STAT_6, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07201, RSV_STAT_6_KEY));
		// 予約状態:"7"(eo光電話開通未確認_通話ログなし)
		rsvStatMap.put(RSV_STAT_7, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07201, RSV_STAT_7_KEY));
		// 予約状態:"8"(他事業者調整不可)
		rsvStatMap.put(RSV_STAT_8, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07201, RSV_STAT_8_KEY));
		// 予約状態:"9"(ＮＴＴ申請不可)
		rsvStatMap.put(RSV_STAT_9, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07201, RSV_STAT_9_KEY));
		// 予約状態:"10"(番ポ工事取消)
		rsvStatMap.put(RSV_STAT_10, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07201, RSV_STAT_10_KEY));

		return rsvStatMap;
	}


	/**
	 * サービス呼出処理（FUSV0113_eo光電話NTT工事日予約電話番号選択初期表示）
	 * <br>
	 * @param bean				サービスフォームBean
	 * @param commonInfoBean	共有フォームBean
	 * @throws Exception	すべての例外
	 */
	@SuppressWarnings("unchecked")
	private void callSvcFUSV0113(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean) throws Exception
	{
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = { commonInfoBean, bean };

		// サービスIDをparamにセット
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SVC_ID_INIT);

		// 設定値格納用マップを生成。
		HashMap inputMap = new HashMap();
		// 検索結果格納用マップを生成。
		HashMap outputMap = new HashMap();

		// DataBean-BPマッピング
		FUSV0113_FUSV0113OPDBMapper mapper = new FUSV0113_FUSV0113OPDBMapper();

		// サービスの入力値設定
		// 機能コード:"1"
		mapper.setFUSV011301SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setFUSV011302SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		try
		{
			// サービス呼出
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			DEBUG_LOG.debug("FUW072_callSvcFUSV0113【システムエラー】FUSV0113_JCCWebServiceException発生");
			// システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// サービスの出力値設定
		mapper.getFUSV011301SC(paramBean, outputMap);
		mapper.getFUSV011302SC(paramBean, outputMap);
	}

	/**
	 * 申し込むボタン押下処理【FUW07201】
	 * 
	 * @return boolean true(固定)
	 * @throws Exception	すべての例外
	 */
	public boolean mskm() throws Exception
	{

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		//----------------------------------------------
		// サービスフォームBean設定
		//----------------------------------------------
		// ----- 電話番号情報 ------ //
		X31SDataBeanAccessArray telNoIfArray = bean.getDataBeanArray(FUW07201SFConst.TELNO_INFO);
		if (1 == telNoIfArray.getCount())
		{
			// 電話番号情報が1件の場合 ← ""(クリア)
			telNoIfArray.getDataBean(0).sendMessageString(FUW07201SFConst.NO_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		}

		// 確認事項情報アクセサ
		X31SDataBeanAccessArray cfmJikoIfArray = bean.getDataBeanArray(FUW07201SFConst.CFM_JIKO_INFO);

		if (0 == cfmJikoIfArray.getCount())
		{
			//----------------------------------------------
			// 画面表示文言取得処理
			//----------------------------------------------
			// ＜確認事項タイトルマップ＞
			Map<String, String> cfmJikoTitleMap = JFUWebCommon.getDispItemsAsMap(XPATH_QUERY_CFM_JIKO_TITLE, GET_DISP_ITEM_ATTR_NM);

			// ＜確認事項内容マップ＞
			Map<String, String> cfmJikoNaiyoMap = JFUWebCommon.getDispItemsAsMap(XPATH_QUERY_CFM_JIKO_NAIYO, GET_DISP_ITEM_ATTR_NM);

			// ----- 確認事項情報 ------ //
			for (int i = 0; i < cfmJikoTitleMap.size(); i++)
			{
				X31SDataBeanAccess cfmJikoInfo = cfmJikoIfArray.addDataBean();
				// 確認事項番号
				cfmJikoInfo.sendMessageString(FUW07201SFConst.CFM_JIKO_NO_02, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i + 1));
				// 確認事項タイトル
				cfmJikoInfo.sendMessageString(FUW07201SFConst.CFM_JIKO_TITLE_02, X31CWebConst.DATABEAN_SET_VALUE,
													cfmJikoTitleMap.get(String.valueOf(i)));
				// 確認事項内容
				cfmJikoInfo.sendMessageString(FUW07201SFConst.CFM_JIKO_NAIYO_02, X31CWebConst.DATABEAN_SET_VALUE,
													cfmJikoNaiyoMap.get(String.valueOf(i)));
			}

		}

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07202);

		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07202);

		return true;
	}

////////////////////////////////////////////////////////////////////////////////
//	【FUW07202】
////////////////////////////////////////////////////////////////////////////////

	/**
	 * 戻るボタン押下処理【FUW07202】
	 * 
	 * @return boolean true(固定)
	 * @throws Exception	すべての例外
	 */
	public boolean backTo1() throws Exception
	{

		X31SDataBeanAccess cfmJikoInfo = null;

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		//----------------------------------------------
		// サービスフォームBean設定
		//----------------------------------------------
		// ----- 電話番号情報 ------ //
		X31SDataBeanAccessArray telNoIfArray = bean.getDataBeanArray(FUW07201SFConst.TELNO_INFO);
		for (int i = 0; i < telNoIfArray.getCount(); i++)
		{
			// 番号     ← 1からの連番
			telNoIfArray.getDataBean(i).sendMessageString(FUW07201SFConst.NO_01, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i + 1));
		}

		// ----- 確認事項情報 ------ //
		X31SDataBeanAccessArray cfmJikoIfArray = bean.getDataBeanArray(FUW07201SFConst.CFM_JIKO_INFO);

		// 利用区分のクリア
		for (int i = 0; i < cfmJikoIfArray.getCount(); i++)
		{
			cfmJikoInfo = cfmJikoIfArray.getDataBean(i);
			cfmJikoInfo.sendMessageString(FUW07201SFConst.USE_KBN_02, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		}

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07201);

		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07201);

		return true;
	}

	/**
	 * 次へボタン押下処理【FUW07202】
	 * 
	 * @return boolean true(固定)
	 * @throws Exception	すべての例外
	 */
	public boolean nextTo3() throws Exception
	{

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 注意事項情報
		X31SDataBeanAccessArray chuiJikoIfArray = bean.getDataBeanArray(FUW07201SFConst.CHUI_JIKO_INFO);

		if (0 == chuiJikoIfArray.getCount())
		{

			//----------------------------------------------
			// 画面表示文言取得処理
			//----------------------------------------------
			// ＜注意事項タイトルマップ＞
			Map<String, String> chuiJikoTitleMap = JFUWebCommon.getDispItemsAsMap(XPATH_QUERY_CHUI_JIKO_TITLE, GET_DISP_ITEM_ATTR_NM);

			// ＜注意事項内容マップ＞
			Map<String, String> chuiJikoNaiyoMap = JFUWebCommon.getDispItemsAsMap(XPATH_QUERY_CHUI_JIKO_NAIYO, GET_DISP_ITEM_ATTR_NM);

			//----------------------------------------------
			// サービスフォームBean設定
			//----------------------------------------------
			// ----- 注意事項情報 ------ //
			for (int i = 0; i < chuiJikoTitleMap.size(); i++)
			{
				X31SDataBeanAccess chuiJikoInfo = chuiJikoIfArray.addDataBean();
				// 注意事項番号
				chuiJikoInfo.sendMessageString(FUW07201SFConst.CHUI_JIKO_NO_03, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i + 1));
				// 注意事項タイトル
				chuiJikoInfo.sendMessageString(FUW07201SFConst.CHUI_JIKO_TITLE_03, X31CWebConst.DATABEAN_SET_VALUE,
												chuiJikoTitleMap.get(String.valueOf(i)));
				// 注意事項内容
				chuiJikoInfo.sendMessageString(FUW07201SFConst.CHUI_JIKO_NAIYO_03, X31CWebConst.DATABEAN_SET_VALUE,
												chuiJikoNaiyoMap.get(String.valueOf(i)));
			}
		}

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07203);

		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07203);

		return true;
	}

////////////////////////////////////////////////////////////////////////////////
//	【FUW07203】
////////////////////////////////////////////////////////////////////////////////

	/**
	 * 戻るボタン押下処理【FUW07203】
	 * 
	 * @return boolean true(固定)
	 * @throws Exception	すべての例外
	 */
	public boolean backTo2() throws Exception
	{

		X31SDataBeanAccess chuiJikoInfo = null;

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		//----------------------------------------------
		// サービスフォームBean設定
		//----------------------------------------------
		// ----- 注意事項情報 ------ //
		X31SDataBeanAccessArray chuiJikoIfArray = bean.getDataBeanArray(FUW07201SFConst.CHUI_JIKO_INFO);
		// 了承フラグのクリア
		for (int i = 0; i < chuiJikoIfArray.getCount(); i++)
		{
			chuiJikoInfo = chuiJikoIfArray.getDataBean(i);
			chuiJikoInfo.sendMessageBoolean(FUW07201SFConst.RYOSHO_FLG_03, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		}
		// 同意するチェックのクリア
		bean.sendMessageBoolean(FUW07201SFConst.KOJIN_INFO_TRAT_DOI, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		// 許諾するチェックのクリア
		bean.sendMessageBoolean(FUW07201SFConst.NTT_KISN_KSH_KYODAK_DOI, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07202);

		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07202);

		return true;
	}

	/**
	 * 次へボタン押下処理【FUW07203】
	 * 
	 * @return boolean true(固定)
	 * @throws Exception	すべての例外
	 */
	public boolean nextTo4() throws Exception
	{

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// ----- 予約時間帯表示情報 ------ //
		X31SDataBeanAccessArray rsvTimeDspIfArray = bean.getDataBeanArray(FUW07201SFConst.RSV_TIME_DSP_INFO);

		//----------------------------------------------
		// 画面表示文言取得・サービスフォームBean設定
		//----------------------------------------------
		if (JFUStrConst.EMPTY.equals(bean.sendMessageString(FUW07201SFConst.STAYMD_CNT, X31CWebConst.DATABEAN_GET_VALUE)))
		{

			// 開始日日数
			bean.sendMessageString(FUW07201SFConst.STAYMD_CNT, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDispItem(XPATH_QUERY_STAYMD_CNT));
			// 可能期間日数
			bean.sendMessageString(FUW07201SFConst.PSB_PRD_CNT, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDispItem(XPATH_QUERY_PSB_PRD_CNT));

			// 基準値１
			bean.sendMessageString(FUW07201SFConst.STDARD_VALUE_1, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon
					.getDispItem(XPATH_QUERY_STDARD_VALUE_1));
			// 基準値２
			bean.sendMessageString(FUW07201SFConst.STDARD_VALUE_2, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon
					.getDispItem(XPATH_QUERY_STDARD_VALUE_2));

			// ＜時間帯表示有マップ＞
			Map<String, String> dspTimeMap = JFUWebCommon.getDispItemsAsMap(XPATH_QUERY_DSP_TIME, GET_DISP_ITEM_ATTR_NM);

			// ----- 予約時間帯表示情報 ------ //
			for (int i = 0; i < dspTimeMap.size(); i++)
			{
				X31SDataBeanAccess rsvTimeDspInfo = rsvTimeDspIfArray.addDataBean();
				// タイトル予約時間(HH)
				rsvTimeDspInfo.sendMessageString(FUW07201SFConst.TITLE_RSV_TIME_06, X31CWebConst.DATABEAN_SET_VALUE, dspTimeMap
						.get(String.valueOf(i)));
			}
		}

		//----------------------------------------------
		// サービス呼出処理
		//----------------------------------------------
		callSvcFUSV0114(bean, commonInfoBean);

		// ----- 番ポ工事希望日予約情報(サービス戻り値) ------ //
		X31SDataBeanAccessArray bmpKojiRsvPsbsuIfArray = bean.getDataBeanArray(FUW07201SFConst.BMP_KOJI_RSV_PSBSU_INFO);
		// ----- 工事希望日時情報 ------ //
		X31SDataBeanAccessArray kojiKiboDateIfArray = bean.getDataBeanArray(FUW07201SFConst.KOJI_KIBO_DATE_INFO);
		kojiKiboDateIfArray.clearArray();

		//----------------------------------------------
		// 番ポ工事希望日予約情報の要素数が0件の場合
		//----------------------------------------------
		if (0 == bmpKojiRsvPsbsuIfArray.getCount())
		{
			DEBUG_LOG.debug("FUW072_nextTo4【システムエラー】番ポ工事希望日予約情報の要素数が0件");
			// システムエラーとし、業務共通例外クラス（JCCBusinessException）をスローする。
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		//----------------------------------------------
		// サービスフォームBean設定
		//----------------------------------------------

		X31SDataBeanAccess bmpKojiRsvPsbsuInfo = null;	// 番ポ工事希望日予約明細
		X31SDataBeanAccess kojiKiboDateInfo = null;		// 工事希望日時情報
		X31SDataBeanAccessArray rsvTimeIfArray = null;	// 予約時間帯情報(配列)
		X31SDataBeanAccess rsvTimeInfo = null;			// 予約時間帯情報
		X31SDataBeanAccess rsvTimeDspIf = null;			// 予約時間帯表示情報

		// 基準値１
		String stdardValue1 = bean.sendMessageString(FUW07201SFConst.STDARD_VALUE_1, X31CWebConst.DATABEAN_GET_VALUE);
		// 基準値２
		String stdardValue2 = bean.sendMessageString(FUW07201SFConst.STDARD_VALUE_2, X31CWebConst.DATABEAN_GET_VALUE);

		DEBUG_LOG.debug("FUW072_nextTo4【基準値１】" + stdardValue1);
		DEBUG_LOG.debug("FUW072_nextTo4【基準値２】" + stdardValue2);

		String rsvTime = null; // 予約時間

		for (int i = 0; i < bmpKojiRsvPsbsuIfArray.getCount(); i++)
		{

			bmpKojiRsvPsbsuInfo = bmpKojiRsvPsbsuIfArray.getDataBean(i);	// 番ポ工事希望日予約明細
			kojiKiboDateInfo = kojiKiboDateIfArray.addDataBean(); 			// 工事希望日時情報

			// 工事年月日(yyyymmdd)
			kojiKiboDateInfo.sendMessageString(FUW07201SFConst.KOJI_YMD_04, X31CWebConst.DATABEAN_SET_VALUE,
					bmpKojiRsvPsbsuInfo.sendMessageString(FUW07201SFConst.BMP_KOJI_YMD_08, X31CWebConst.DATABEAN_GET_VALUE));
			// 営業日フラグ
			kojiKiboDateInfo.sendMessageString(FUW07201SFConst.BUSIDAY_FLG_04, X31CWebConst.DATABEAN_SET_VALUE, bmpKojiRsvPsbsuInfo
					.sendMessageString(FUW07201SFConst.EIGYO_FLG_08, X31CWebConst.DATABEAN_GET_VALUE));

			DEBUG_LOG.debug("□工事年月日□ == " + kojiKiboDateInfo.sendMessageString(FUW07201SFConst.KOJI_YMD_04, X31CWebConst.DATABEAN_GET_VALUE));
			DEBUG_LOG.debug("□営業日フラグ□ == "
						+ kojiKiboDateInfo.sendMessageString(FUW07201SFConst.BUSIDAY_FLG_04, X31CWebConst.DATABEAN_GET_VALUE));

			// -------- 予約時間帯情報 ------ //
			rsvTimeIfArray = kojiKiboDateInfo.getDataBeanArray(FUW07201SFConst.RSV_TIME_INFO);

			for (int j = 0; j < rsvTimeDspIfArray.getCount(); j++)
			{

				rsvTimeDspIf = rsvTimeDspIfArray.getDataBean(j);	// 予約時間帯表示情報
				rsvTimeInfo = rsvTimeIfArray.addDataBean();			// 予約時間帯情報

				// 予約時間(HH)
				rsvTime = rsvTimeDspIf.sendMessageString(FUW07201SFConst.TITLE_RSV_TIME_06, X31CWebConst.DATABEAN_GET_VALUE);
				rsvTimeInfo.sendMessageString(FUW07201SFConst.RSV_TIME_05, X31CWebConst.DATABEAN_SET_VALUE, rsvTime);

				// 予約可能区分
				rsvTimeInfo.sendMessageString(FUW07201SFConst.RSV_PSB_KBN_05, X31CWebConst.DATABEAN_SET_VALUE,
												editRsvPsbKbn(bmpKojiRsvPsbsuInfo, rsvTime, stdardValue1, stdardValue2));
			}
		}

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07204);

		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07204);

		return true;
	}

	/**
	 * サービス呼出処理（FUSV0114_eo光電話NTT番号切替工事日予約申込希望日リスト取得）
	 * <br>
	 * @param bean				サービスフォームBean
	 * @param commonInfoBean	共有フォームBean
	 * @throws Exception		すべての例外
	 */
	@SuppressWarnings("unchecked")
	private void callSvcFUSV0114(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean) throws Exception
	{

		// ----- 番ポ工事希望日予約情報(サービス戻り値) ------ //
		X31SDataBeanAccessArray bmpKojiRsvPsbsuIfArray = bean.getDataBeanArray(FUW07201SFConst.BMP_KOJI_RSV_PSBSU_INFO);
		// 初期化
		bmpKojiRsvPsbsuIfArray.clearArray();

		// パラメータ作成
		X31SDataBeanAccess[] paramBean = { commonInfoBean, bean };

		// サービスIDをparamにセット
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SVC_ID_GET_LIST);

		// 設定値格納用マップを生成。
		HashMap inputMap = new HashMap();
		// 検索結果格納用マップを生成。
		HashMap outputMap = new HashMap();

		// DataBean-BPマッピング
		FUSV0114_FUSV0114OPDBMapper mapper = new FUSV0114_FUSV0114OPDBMapper();

		// サービスの入力値設定
		// 機能コード:"1"
		mapper.setFUSV011401SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setFUSV011402SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		try
		{
			// サービス呼出
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			DEBUG_LOG.debug("FUW072_callSvcFUSV0114【システムエラー】FUSV0114_サービス呼出でJCCWebServiceException発生");
			// システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// サービスの出力値設定
		mapper.getFUSV011402SC(paramBean, outputMap);
	}

	/**
	 * 予約可能区分編集
	 * <br>
	 * @param bmpKojiRsvPsbsuInfo	番ポ工事希望日予約明細Bean
	 * @param rsvTime				予約時間(HH)
	 * @param s_stdardValue1		基準値１
	 * @param s_stdardValue2		基準値２
	 * @return	予約可能区分
	 * @throws Exception	すべての例外
	 */
	private String editRsvPsbKbn(X31SDataBeanAccess bmpKojiRsvPsbsuInfo, String rsvTime, String s_stdardValue1, String s_stdardValue2)
			throws Exception
	{

		String rsvPsbKbn = RSV_PSB_KBN_3; // 戻り値：デフォルト ⇒ 3:−（対象外）

		// 予約可能区分 ===============================
		//		0:○（余裕があります）	RSV_PSB_KBN_0
		//		1:△（残りわずか）		RSV_PSB_KBN_1
		//		2:×（受付終了）		RSV_PSB_KBN_2
		//		3:−（対象外）			RSV_PSB_KBN_3
		//=============================================

		// 予約可能数
		String columNm = COLUM_NM_LIST_RSV_PSB_CNT[Integer.valueOf(rsvTime).intValue()];
		BigDecimal rsvPsbCnt = new BigDecimal(bmpKojiRsvPsbsuInfo.sendMessageString(columNm, X31CWebConst.DATABEAN_GET_VALUE));
		// 工事合計数
		columNm = COLUM_NM_LIST_KOJI_GOKEI_CNT[Integer.valueOf(rsvTime).intValue()];
		BigDecimal kojiGokeiCnt = new BigDecimal(bmpKojiRsvPsbsuInfo.sendMessageString(columNm, X31CWebConst.DATABEAN_GET_VALUE));

		DEBUG_LOG.debug("	■予約時間■" + rsvTime);

		DEBUG_LOG.debug("	★予約可能数★==" + rsvPsbCnt.toPlainString());
		DEBUG_LOG.debug("	★工事合計数★==" + kojiGokeiCnt.toPlainString());

		// 基準値１
		BigDecimal stdardValue1 = new BigDecimal(s_stdardValue1);
		// 基準値２
		BigDecimal stdardValue2 = new BigDecimal(s_stdardValue2);

		// 判定基準値１
		BigDecimal jdgstdValue1 = null;
		// 判定基準値２
		BigDecimal jdgstdValue2 = null;

		if (BigDecimal.ZERO.equals(rsvPsbCnt))
		{

			// 予約可能数が0の場合	⇒ 3:−（対象外）
			return RSV_PSB_KBN_3;

		}
		else
		{

			// 基準値を判定 ==================================

			// 判定基準値１ :（予約可能数）×（基準値1）÷100
			jdgstdValue1 = (rsvPsbCnt.multiply(stdardValue1)).divide(BIGDECIMAL_100);
			// 判定基準値２ :（予約可能数）×（基準値2）÷100
			jdgstdValue2 = (rsvPsbCnt.multiply(stdardValue2)).divide(BIGDECIMAL_100);

			if (0 >= kojiGokeiCnt.compareTo(jdgstdValue1))
			{

				// （合計数）<=（予約可能数）×（基準値1）÷100 の場合
				// ⇒ 0:○（余裕があります）
				rsvPsbKbn = RSV_PSB_KBN_0;

				DEBUG_LOG.debug("		⇒ 0:○（余裕があります）");

			}
			else if ((0 < kojiGokeiCnt.compareTo(jdgstdValue1)) && (0 >= kojiGokeiCnt.compareTo(jdgstdValue2)))
			{

				//（合計数）> （予約可能数）×（基準値1）÷100　かつ、（合計数）<=（予約可能数）×（基準値2）÷100 の場合
				// 	⇒ 1:△（残りわずか）
				rsvPsbKbn = RSV_PSB_KBN_1;
				DEBUG_LOG.debug("		⇒ 1:△（残りわずか）");

			}
			else if (0 < kojiGokeiCnt.compareTo(jdgstdValue2))
			{
				//（合計数）> （予約可能数）×（基準値2）÷100 の場合
				// 	⇒ 2:×（受付終了）
				rsvPsbKbn = RSV_PSB_KBN_2;
				DEBUG_LOG.debug("		⇒ 2:×（受付終了）");
			}
		}

		return rsvPsbKbn;
	}

////////////////////////////////////////////////////////////////////////////////
//	【FUW07204】
////////////////////////////////////////////////////////////////////////////////

	/**
	 * 戻るボタン押下処理【FUW07204】
	 * 
	 * @return boolean true(固定)
	 * @throws Exception
	 */
	public boolean backTo3() throws Exception
	{

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07203);

		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07203);

		return true;
	}

	/**
	 * 希望日リンク押下処理【FUW07204】
	 * 
	 * @return boolean true(固定)
	 * @throws Exception
	 */
	public boolean choiceKiboDate() throws Exception
	{

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		//----------------------------------------------
		// 申込前チェック・申込実行
		//  機能コード："2"
		//----------------------------------------------
		chkPreAndExecMskm(bean, commonInfoBean, JPCModelConstant.FUNC_CD_2);

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07205);

		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07205);

		return true;
	}

	////////////////////////////////////////////////////////////////////////////////
	//	【FUW07205】
	////////////////////////////////////////////////////////////////////////////////

	/**
	 * 戻るボタン押下処理【FUW07205】
	 * 
	 * @return boolean true(固定)
	 * @throws Exception
	 */
	public boolean backTo4() throws Exception
	{

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		//----------------------------------------------
		// サービスフォームBean設定
		//----------------------------------------------
		// 工事希望日時（選択された日時）のクリア
		bean.sendMessageString(FUW07201SFConst.BMP_KOJI_KIBO_YMDH, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07204);

		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07204);

		return true;
	}

	/**
	 * 申し込むボタン押下処理【FUW07205】
	 * 
	 * @return boolean true(固定)
	 * @throws Exception
	 */
	public boolean execMskm() throws Exception
	{

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		//----------------------------------------------
		// 申込前チェック・申込実行
		//  機能コード："1"
		//----------------------------------------------
		chkPreAndExecMskm(bean, commonInfoBean, JPCModelConstant.FUNC_CD_1);

		//----------------------------------------------
		// 申込完了メール
		//----------------------------------------------
		JFUWebCommon.sendMskmFinMail(this, MSKM_COMP_MAIL_ID);

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07206);

		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07206);

		return true;
	}

////////////////////////////////////////////////////////////////////////////////
//	【共通】
////////////////////////////////////////////////////////////////////////////////

	/**
	 * 共通チェック<br>
	 * 以下のチェックを行い、エラーの場合は各エラーに対応した<br>
	 * 業務共通例外クラス（JCCBusinessException）をスローします。<br>
	 * 
	 * ・住所未確定チェック<br>
	 * ・ＶＡポート番号チェック<br>
	 * ・契約状態チェック
	 * <br>
	 * @param commonInfoBean	共有フォームBean
	 * @throws Exception		すべての例外
	 */
	private void chkCommon(X31SDataBeanAccess commonInfoBean) throws Exception
	{

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// サービス契約情報
		X31SDataBeanAccess svcKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO);
		// サービス契約内訳情報アクセサ
		X31SDataBeanAccessArray svcKeiUcwkArray = svcKeiInfo.getDataBeanArray(CommonInfoCFConst.SVC_KEI_UCWK_INFO);
		// サービス契約回線内訳情報アクセサ
		X31SDataBeanAccessArray svcKeiKaisenUcwkArray = svcKeiInfo.getDataBeanArray(CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_INFO);

		//----------------------------------------------
		// 住所未確定チェック
		//----------------------------------------------
		// サービス契約回線内訳情報が0件
		if (0 == svcKeiKaisenUcwkArray.getCount())
		{
			DEBUG_LOG.debug("FUW072_chkCommon【システムエラー】サービス契約回線内訳情報が0件");
			// システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// 共有フォームBean.サービス契約回線情報.回線場所住所未確定フラグ
		if (JFUStrConst.CD00467_1.equals(JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.SVC_KEI_KAISEN_UCWK_INFO
				+ JFUWebCommon.SEP_0 + CommonInfoCFConst.KISN_PLC_AD_MI_FIX_FLG_26)))
		{
			DEBUG_LOG.debug("FUW072_chkCommon【住所未確定エラー】回線場所住所未確定フラグが1(住所未確定）");
			// "1"(住所未確定）の場合、住所未確定エラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0401);
		}

		//----------------------------------------------
		// ＶＡポート番号チェック
		//----------------------------------------------
		// ＶＡポート番号チェックエラーフラグ
		boolean isVaPortNoChkErr = false;


		// ===== サービス契約内訳情報が0件 =======================
		if (0 == svcKeiUcwkArray.getCount())
		{
			// ■ＶＡポート番号が取得できない場合、エラー
			isVaPortNoChkErr = true;
			DEBUG_LOG.debug("FUW072_chkCommon【契約状態エラー】ＶＡポート番号が取得できない(サービス契約内訳情報が0件)");
		}
		// ===== サービス契約内訳情報が1件 =======================
		else if (1 == svcKeiUcwkArray.getCount())
		{
			// ＶＡポート番号
			String vaPortNo = JFUWebCommon.getDataBeanItemByPath(svcKeiUcwkArray.getDataBean(0), CommonInfoCFConst.VA_PORT_NO_24);

			if ((0 != JFUWebCommon.getLength(JFUWebCommon.trim(vaPortNo))) && (!JFUStrConst.CD00593_1.equals(JFUWebCommon.trim(vaPortNo)))
					&& (!JFUStrConst.CD00593_2.equals(JFUWebCommon.trim(vaPortNo))))
			{
				// ■ＶＡポート番号に"1"(電話1)、または"2"(電話2)以外の値が設定されていた場合、エラー
				//   ※null、空文字の場合はＯＫ
				isVaPortNoChkErr = true;
				DEBUG_LOG.debug("FUW072_chkCommon【契約状態エラー】ＶＡポート番号に1(電話1)、または2(電話2)以外の値が設定");
			}
		}
		// ===== サービス契約内訳情報が2件 =======================
		else if (2 == svcKeiUcwkArray.getCount())
		{
			// ＶＡポート番号1
			String vaPortNo1 = JFUWebCommon.getDataBeanItemByPath(svcKeiUcwkArray.getDataBean(0), CommonInfoCFConst.VA_PORT_NO_24);
			// ＶＡポート番号2
			String vaPortNo2 = JFUWebCommon.getDataBeanItemByPath(svcKeiUcwkArray.getDataBean(1), CommonInfoCFConst.VA_PORT_NO_24);

			if (!((JFUStrConst.CD00593_1.equals(JFUWebCommon.trim(vaPortNo1)) && JFUStrConst.CD00593_2.equals(JFUWebCommon.trim(vaPortNo2)))

			|| (JFUStrConst.CD00593_2.equals(JFUWebCommon.trim(vaPortNo1)) && JFUStrConst.CD00593_1.equals(JFUWebCommon.trim(vaPortNo2)))))
			{
				// ■ＶＡポート番号が"1"(電話1)、"2"(電話2)の組合せでない場合、エラー
				isVaPortNoChkErr = true;
				DEBUG_LOG.debug("FUW072_chkCommon【契約状態エラー】ＶＡポート番号が1(電話1)、2(電話2)の組合せでない");
			}

		}

		// ＶＡポート番号チェックエラーの場合
		if (isVaPortNoChkErr)
		{
			// 契約状態エラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}

		//----------------------------------------------
		// 契約状態チェック
		//----------------------------------------------
		chkKeiStat(commonInfoBean);

	}

	/**
	 * 契約状態チェック<br>
	 * サービス契約内訳ステータスが下記に該当する場合、<br>
	 * 契約状態エラーとし、業務共通例外クラス（JCCBusinessException）をスローします。<br>
	 * ・"010"(受付済)<br>
	 * ・"920"(キャンセル済)<br>
	 * ・"210"(休止・中断中)<br>
	 * ・"220"(停止中)<br>
	 * ・"910"(解約済)
	 * <br>
	 * @param commonInfoBean	共有フォームBean
	 * @throws Exception		すべての例外
	 */
	private void chkKeiStat(X31SDataBeanAccess commonInfoBean) throws Exception
	{
		// サービス契約情報
		X31SDataBeanAccess svcKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO);
		// サービス契約内訳情報アクセサ
		X31SDataBeanAccessArray svcKeiUcwkArray = svcKeiInfo.getDataBeanArray(CommonInfoCFConst.SVC_KEI_UCWK_INFO);

		for (int i = 0; i < svcKeiUcwkArray.getCount(); i++)
		{
			// サービス契約内訳ステータス
			String svcKeiUcwkStat = JFUWebCommon.getDataBeanItemByPath(svcKeiUcwkArray.getDataBean(i), CommonInfoCFConst.SVC_KEI_UCWK_STAT_24);

			// サービス契約内訳ステータス エラーリストに含まれる場合
			if (SVC_KEI_UCWK_STAT_ERR_LIST.contains(svcKeiUcwkStat))
			{
				DEBUG_LOG.debug("FUW072_chkKeiStat【契約状態エラー】サービス契約内訳ステータスが不正：(ステータス)" + svcKeiUcwkStat);
				// 契約状態エラー
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
			}
		}
	}

	/**
	 * 申込前チェック・申込実行処理
	 * <br>
	 * @param bean				サービスフォームBean
	 * @param commonInfoBean	共有フォームBean
	 * @param funcCd			機能コード
	 * @throws Exception		すべての例外
	 */
	private void chkPreAndExecMskm(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean, String funcCd) throws Exception
	{
		//----------------------------------------------
		// 共通関連チェック
		//----------------------------------------------
		JFUWebCommon.checkCommonRelation(this, SVC_ID_MSKM);

		//----------------------------------------------
		// 現顧客契約情報最新化
		//----------------------------------------------
		JFUWebCommon.refreshGenCustKei(this);

		//----------------------------------------------
		// 共通チェック
		//     ・住所未確定チェック
		//     ・ＶＡポート番号チェック
		//     ・契約状態チェック
		//----------------------------------------------
		chkCommon(commonInfoBean);

		//----------------------------------------------
		// サービス呼出処理
		//----------------------------------------------
		callSvcFUSV0115(bean, commonInfoBean, funcCd);

	}


	/**
	 * サービス呼出処理（FUSV0115_eo光電話NTT番号切替工事日予約申込実行）
	 * <br>
	 * @param bean				サービスフォームBean
	 * @param commonInfoBean	共有フォームBean
	 * @param funcCd			機能コード
	 * @throws Exception		すべての例外
	 */
	private void callSvcFUSV0115(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean, String funcCd) throws Exception
	{
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = { commonInfoBean, bean };

		// サービスIDをparamにセット
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SVC_ID_MSKM);

		// 設定値格納用マップを生成。
		HashMap inputMap = new HashMap();
		// 検索結果格納用マップを生成。
		HashMap outputMap = new HashMap();

		// DataBean-BPマッピング
		FUSV0115_FUSV0115OPDBMapper mapper = new FUSV0115_FUSV0115OPDBMapper();

		// サービスの入力値設定(機能コード)
		mapper.setFUSV011501SC(paramBean, inputMap, funcCd);
		mapper.setFUSV011502SC(paramBean, inputMap, funcCd);
		mapper.setFUSV011503SC(paramBean, inputMap, funcCd);
		mapper.setFUSV011504SC(paramBean, inputMap, funcCd);
		mapper.setFUSV011505SC(paramBean, inputMap, funcCd);

		try
		{
			// サービス呼出
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			//----------------------------------------------
			// 例外情報を取得
			//----------------------------------------------
			X31CMessageResult msgResult = se.getMessageList();
			X31CMessageMoreInfo[] moreInfo = msgResult.getMessageMoreInfoList();
			X31CMessageMoreInfo info = moreInfo[0]; // (関連チェック系は必ずエラーが1つのため0番目から取得)
			String templateid = info.getTemplateId(); // テンプレートID
			String itemid = info.getItemId(); // アイテム
			String status = info.getStatus(); // ステータス
			String errFlg = info.getItemCheckErr(); // エラーフラグ

			DEBUG_LOG.debug("FUW072_callSvcFUSV0115 JCCWebServiceException発生/" + templateid + ":" + status + ":" + itemid + ":" + errFlg);

			// エラーを判定
			// ============================================================== //
			// テンプレートIDが"ETU0011C010"(番ポ工事内容変更)
			// ============================================================== //
			if (TEMPLATE_ID_ETU0011C010.equals(templateid))
			{
				//----------------------------------------------
				// 単項目チェック
				//----------------------------------------------
				if (String.valueOf(JPCModelConstant.SINGLEDATA_ERR).equals(status) && ITEM_ID_BMP_KOJI_KIBO_YMDH.equals(itemid))
				{
					// ============================================================== //
					// ステータスが"1000"（単項目チェックエラー） かつ、
					// アイテムが"番ポ工事希望年月日時" の場合
					// ============================================================== //
					DEBUG_LOG.debug("FUW072_callSvcFUSV0115【業務エラーを再throw】");
					// 業務エラーを再throw
					throw se;
				}

				//----------------------------------------------
				// 関連制約チェック
				//----------------------------------------------
				else if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status) && ITEM_ID_BMP_KOJI_NO.equals(itemid))
				{
					if (ERR_FLG_BMPKJ_SONZAI_CHK.equals(errFlg) || ERR_FLG_BMPKJ_HAITA_CHK.equals(errFlg))
					{
						// ============================================================== //
						// ステータスが"1100"（内部スキーマ関連チェックエラー） かつ、
						// アイテムが"番ポ工事番号" かつ
						// エラーフラグが"EG"(番ポ工事・存在チェックエラー)、または、
						// 					"EH"(番ポ工事・排他チェックエラー)	の場合
						// ============================================================== //
						DEBUG_LOG.debug("FUW072_callSvcFUSV0115【更新不可エラー】番ポ工事の排他エラー");
						// 更新不可エラー
						throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0204);
					}
				}
				else
				{
					DEBUG_LOG.debug("FUW072_callSvcFUSV0115【システムエラー】その他のエラー");
					// システムエラー
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
				}
			}
			else
			{
				DEBUG_LOG.debug("FUW072_callSvcFUSV0115【システムエラー】その他のエラー");
				// システムエラー
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
			}
		}
	}
}
