/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：物件検索
 *   ソースファイル名：FUW09906SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年10月21日
 *＜機能概要＞
 *  物件検索のビューロジッククラスです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/10/21   FJ）	     新規作成
 *   v47.00      2020/01/08   FJ)西川    【ANK-3628-00-00】マンションタイプ引越しNaviのフォロー対応
 *   v56.00      2021/12/06   FJ)美濃原  【ANK-4103-00-00】マンション光コンセントタイプのWeb受付対応
 *
 **********************************************************************/

package eo.web.webview.FUW09906SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.Arrays;
import java.util.HashMap;

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.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0331_FUSV0331OPDBMapper;

/**
 * 物件検索画面（フロント）のビューロジッククラスです。
 * <p>
 * <BR>
 *
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW09906SFLogic extends JCCWebBusinessLogic {

	/** 画面遷移モード：0:通常遷移 */
	private static final String SCREEN_MODE_0 = "0";

	/** 取得パラメータキー：郵便番号１ */
	private static final String PCD_KEY1 = "pcd_1";

	/** 取得パラメータキー：郵便番号２ */
	private static final String PCD_KEY2 = "pcd_2";

	/** 取得パラメータキー：現在のマンションＩＤ */
	private static final String NOW_MANSION_ID = "now_mansion_id";

	/** メソッド判定文字列：初期表示 */
	private static final String INIT = "init";

	/** メソッド判定文字列：検索 */
	private static final String SEARCH = "search";

	/** メソッド判定文字列：検索 */
	private static final String ERROR = "error";

	/** 検索キー */
	private static final String ADD_INFO_ERR = "add_info";

	/** サービスID */
	private static final String SERVICE_ID = "FUSV0331";

	/** 検索結果マップID */
	private static final String SEARCH_MAP_ID = "FUSV033101SC";

	/** 住所検索情報一覧照会 */
	private static final String REL_CHK_TMP_ID_PCD = "EZM0081B080";
	/** プラン変更不可チェックエラー(アイテム) */
	private static final String RELATION_CHECK_PCD = "key_pcd";

	/** 郵便番号が単関連チェックエラーになった際のメッセージID */
	private static final String MSGID_PCD_DOMAIN_ERR = "EKF0140-TW";

	/** 郵便番号が単関連チェックエラーになった際のメッセージID */
	private static final String MSGID_PCD_KETA_ERR = "EKF0390-NW";

	/** エラーアイテムID：電話番号 */
	private static final String ITEMID_ZIPFRONT = "zip";

	/** 表示タイプ：マンション */
	private static final String DISP_TYPE_MF = "マンション";

	/** 表示タイプ：メゾン */
	private static final String DISP_TYPE_MZ = "メゾン";

	/** 加入契約ネット申込可否：申込可能 */
	private static final String KNYKEI_NET_MSKM_KH_MSKM_KANOU = "1";

	/** 申込可否：否*/
	private static final String MSKM_FUKA = "1";
	/**
	 * 初期表示処理を行います。
	 *
	 * @return true
	 * @throws Exception
	 *             例外
	 */
	public boolean init() throws Exception {

		String pcd_1 = JFUStrConst.EMPTY;
		String pcd_2 = JFUStrConst.EMPTY;
		String nowMansionId = JFUStrConst.EMPTY;

		// サービスフォームBean取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// ページング情報の設定
		JCCWebCommon.clearPageLinkInfo(this, JFUScreenConst.SCREEN_ID_FUW09906);

		// 親画面からもらう情報をHashMapに設定する
		HashMap paramMap = new HashMap();

		// 親画面からの情報を取得する
		paramMap = JCCWebCommon.getScreenInfo(this,
				JFUScreenConst.SCREEN_ID_FUW09906);

		if (paramMap != null)
		{
			if (!JFUWebCommon.isNull(paramMap.get(PCD_KEY1)) && !JFUWebCommon.isNull(paramMap.get(PCD_KEY2)))
			{
				// 郵便番号
				pcd_1 = (String)paramMap.get(PCD_KEY1);
				pcd_2 = (String)paramMap.get(PCD_KEY2);
			}

			if (!JFUWebCommon.isNull(paramMap.get(NOW_MANSION_ID)))
			{
				// 現在のマンションＩＤ
				nowMansionId = (String)paramMap.get(NOW_MANSION_ID);
			}
		}

		serviceBean.sendMessageString(FUW09906SFConst.SRC_PCD,
				X31CWebConst.DATABEAN_SET_VALUE, pcd_1 + pcd_2);
		serviceBean.sendMessageString(FUW09906SFConst.PCD_1,
				X31CWebConst.DATABEAN_SET_VALUE, pcd_1);
		serviceBean.sendMessageString(FUW09906SFConst.PCD_2,
				X31CWebConst.DATABEAN_SET_VALUE, pcd_2);
		serviceBean.sendMessageString(FUW09906SFConst.NOW_MANSION_ID,
				X31CWebConst.DATABEAN_SET_VALUE, nowMansionId);

		// サービスフォームBean都道府県リスト取得
		X31SDataBeanAccessArray arystate = serviceBean
				.getDataBeanArray(FUW09906SFConst.STATE_LIST);
		arystate.clearArray();
		X31SDataBeanAccess statelist = arystate.addDataBean();

		// サービスフォームBeanマンション一覧取得
		X31SDataBeanAccessArray manItiran = serviceBean
				.getDataBeanArray(FUW09906SFConst.EKK0861B501CBSMSG1LIST);
		manItiran.clearArray();

		// 遷移先画面の設定を行います。
		setNextScreen(SCREEN_MODE_0, JFUScreenConst.SCREEN_ID_FUW09906,
				JFUScreenConst.SCREEN_NAME_FUW09906);

		try
		{
			// サービスを呼び出します。
			setService(serviceBean, statelist, INIT);

			// サービス申込可能判定処理
			this.svcMskmHnti(commonInfoBean, serviceBean);
		}
		catch (JCCWebServiceException jwse)
		{
			// サービスを呼び出します。
			setService(serviceBean, statelist, ERROR);

			X31CMessageResult msgRes = jwse.getMessageList();

			for (X31CMessageMoreInfo moreInfo : Arrays.asList(msgRes.getMessageMoreInfoList()))
			{
				// 関連チェック
				// ドメインチェックエラー
				if (String.valueOf(JPCModelConstant.SINGLEDATA_ERR).equals(moreInfo.getStatus())
						&& REL_CHK_TMP_ID_PCD.equals(moreInfo.getTemplateId()) && RELATION_CHECK_PCD.equals(moreInfo.getItemId())
						&& JFUStrConst.DMN_ERR.equals(moreInfo.getItemCheckErr()))
				{
					// メッセージ置換文字列取得
					String replaceTxt = "郵便番号";

					// 単項目チェックエラーとしてユーザーに入力内容確認を促す。
					JCCWebCommon.setMessageInfo(this, MSGID_PCD_DOMAIN_ERR, new String[] { replaceTxt }, ITEMID_ZIPFRONT);
					return true;
				}

				// 桁数チェックエラー
				if (String.valueOf(JPCModelConstant.SINGLEDATA_ERR).equals(moreInfo.getStatus())
						&& REL_CHK_TMP_ID_PCD.equals(moreInfo.getTemplateId()) && RELATION_CHECK_PCD.equals(moreInfo.getItemId())
						&& JFUStrConst.KETA_ERR.equals(moreInfo.getItemCheckErr()))
				{
					// メッセージ置換文字列取得
					String replaceTxt1 = "郵便番号を入力";
					String replaceTxt2 = "郵便番号を全て入力";

					// 単項目チェックエラーとしてユーザーに入力内容確認を促す。
					JCCWebCommon.setMessageInfo(this, MSGID_PCD_KETA_ERR, new String[] { replaceTxt1, replaceTxt2}, ITEMID_ZIPFRONT);
					return true;
				}
			}
			// 上記以外はシステムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		return true;
	}

	/**
	 * 検索ボタン押下時の処理を行います。
	 *
	 * @return true
	 * @throws Exception
	 *             例外
	 */
	public boolean search() throws Exception {
		String pcd_1 = JFUStrConst.EMPTY;
		String pcd_2 = JFUStrConst.EMPTY;
		String srcPcd = JFUStrConst.EMPTY;// 検索郵便番号

		// サービスフォームBean取得
		X31SDataBeanAccess serviceBean = getServiceFormBean();

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// サービスフォームBean都道府県リスト取得
		X31SDataBeanAccessArray stateValList = serviceBean
				.getDataBeanArray(FUW09906SFConst.STATE_LIST);

		X31SDataBeanAccess stateValBean = stateValList.getDataBean(0);

		pcd_1 = serviceBean.sendMessageString(FUW09906SFConst.PCD_1,
				X31CWebConst.DATABEAN_GET_VALUE);
		pcd_2 = serviceBean.sendMessageString(FUW09906SFConst.PCD_2,
				X31CWebConst.DATABEAN_GET_VALUE);

		// 検索郵便番号
		if (pcd_1 != null && pcd_2 != null) {
			srcPcd = pcd_1 + pcd_2;
			serviceBean.sendMessageString(FUW09906SFConst.SRC_PCD,
					X31CWebConst.DATABEAN_SET_VALUE, srcPcd);
		}

		// 選択された都道府県のindexを取得します。
		String index = serviceBean.sendMessageString(FUW09906SFConst.SRC_STATE,
				X31CWebConst.DATABEAN_GET_VALUE);

		// indexより都道府県名を取得します。
		String state_nm = stateValBean.sendMessageString(
				FUW09906SFConst.FUKEN_NAME_LIST_02,
				X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));

		// 検索都道府県名称をセットします。
		serviceBean.sendMessageString(FUW09906SFConst.SRC_STATE,
				X31CWebConst.DATABEAN_SET_VALUE, state_nm);

		// サービスフォームBeanマンション一覧取得
		X31SDataBeanAccessArray manItiran = serviceBean
				.getDataBeanArray(FUW09906SFConst.EKK0861B501CBSMSG1LIST);
		manItiran.clearArray();

		// サービスを呼び出します。
		setService(serviceBean, null, SEARCH);

		// サービス申込可能判定処理
		this.svcMskmHnti(commonInfoBean, serviceBean);

		// 検索府県名称をindexに置き換えなおします。
		serviceBean.sendMessageString(FUW09906SFConst.SRC_STATE,
				X31CWebConst.DATABEAN_SET_VALUE, index);

		// 遷移先画面の設定を行います。
		setNextScreen(SCREEN_MODE_0, JFUScreenConst.SCREEN_ID_FUW09906,
				JFUScreenConst.SCREEN_NAME_FUW09906);

		return true;
	}

	/**
	 * サービス申込可能判定処理
	 *
	 * <br>
	 * @param commonInfoBean 共有フォームBean
	 * @param serviceInfoBean サービスフォームBean
	 * @param agentMskmLimitList 代理店申込制限一覧
	 */
	private void svcMskmHnti(X31SDataBeanAccess commonInfoBean, X31SDataBeanAccess serviceInfoBean)
	{
		// 検索結果を取得
		X31SDataBeanAccessArray ekk0861B501CmsMsg1List = serviceInfoBean.getDataBeanArray(FUW09906SFConst.EKK0861B501CBSMSG1LIST);

		// 現在のマンションID
		String nowMansionId = serviceInfoBean.sendMessageString(FUW09906SFConst.NOW_MANSION_ID,
				X31CWebConst.DATABEAN_GET_VALUE);

		int workCounter = 0;
		while (workCounter < ekk0861B501CmsMsg1List.getCount().intValue())
		{
			// 検索結果(n番目)を取得
			X31SDataBeanAccess ekk0861B501CmsMsg1 = ekk0861B501CmsMsg1List.getDataBean(workCounter);

			// 提供方式コード
			String tkHoshikiCd = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.TK_HOSHIKI_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			String tk_hoshiki_chg_sbt_cd = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.TK_HOSHIKI_CHG_SBT_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			if (JFUWebCommon.isTkHosikiChgSbtCd(tk_hoshiki_chg_sbt_cd))
			{
				// 提供方式変更の場合
				setChangeMskmKh(ekk0861B501CmsMsg1);
			}

			// 検索結果から以下の値を取得する。
			// マンション物件コード		mansion_bukken_cd
			String mansionBukkenCd = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.MANSION_BUKKEN_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 加入契約申込条件コード	knykei_mskm_joken_cd
			String knykeiMskmJokenCd = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_MSKM_JOKEN_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

			// ネット加入契約申込条件コード	net_knykei_mskm_joken_cd
			String netKnykeiMskmJokenCd = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.NET_KNYKEI_MSKM_JOKEN_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

			// テレビ加入契約申込条件コード	tv_knykei_mskm_joken_cd
			String tvKnykeiMskmJokenCd = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.TV_KNYKEI_MSKM_JOKEN_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 加入契約ネット10G申込可否
			String knykeiNet10gMskmKh =
					ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_NET_10G_MSKM_KH_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 加入契約ネット1G申込可否
			String knykeiNet1gMskmKh =
					ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_NET_1G_MSKM_KH_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 加入契約ネット200M申込可否
			String knykeiNet200mMskmKh =
					ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_NET_200M_MSKM_KH_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 加入契約ネット100M申込可否
			String knykeiNet100mMskmKh =
					ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_NET_100M_MSKM_KH_01, X31CWebConst.DATABEAN_GET_VALUE);

			// メゾン光テレビ提供コード	maison_hikari_tv_tk_cd
			String maisonHikariTvTkCd =
					ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.MAISON_HIKARI_TV_TK_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 光テレビ提供状況コード	hikari_tv_tk_jokyo_cd
			String hikariTvTkJokyoCd =
					ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.HIKARI_TV_TK_JOKYO_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 光電話提供コード		hikari_tel_tk_cd
			String hikariTelTkCd = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.HIKARI_TEL_TK_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

			// テレビ単独の場合の表示制御とリンク制御
			// WEB新規情報からマンション情報を取得
			String mansionKakakutaiCd =
					ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.MANSION_KAKAKUTAI_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			String takniTokuhsenYtkojiCd =
					ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.TAKNI_TOKUHSEN_YRKOJI_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			//「IT1-No973」テレビ単独の場合の表示制御とリンク制御<<<E

			// CAT-ID
			String catid = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.CATID_01, X31CWebConst.DATABEAN_GET_VALUE);

			String kaisenUseKeiNo = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KAISEN_USE_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);

			// プライベートマンションは追加申込不可

			boolean donyuRsvAticleFlg = false;

			// サービス提供状況の判定
			// 上記で取得した項目より、サービス提供状態の判定とサービスフォームBeanのデータ削除を行う。
			// @マンション物件コードが"001"(マンション)の場合
			if (JFUStrConst.MANSION_BUKKEN_CD_MF.equals(mansionBukkenCd))
			{
				// サービスフォームBeanを以下のように設定する。
				// 表示用タイプ		"マンション"
				ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.DISP_TYPE_01, X31CWebConst.DATABEAN_SET_VALUE, DISP_TYPE_MF);

				// マンションＩＤを取得
				String mansionId = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.MANSION_ID_01, X31CWebConst.DATABEAN_GET_VALUE);

				if (!JFUWebCommon.isNull(nowMansionId) && nowMansionId.equals(mansionId))
				{
					// 現在ご利用中のマンションＩＤと検索物件のマンションＩＤが同じ場合

					if (JFUStrConst.CD00590_001.equals(tkHoshikiCd) || JFUStrConst.CD00590_003.equals(tkHoshikiCd) || JFUStrConst.CD00590_004.equals(tkHoshikiCd)
							|| JFUStrConst.CD00590_005.equals(tkHoshikiCd) || JFUStrConst.CD00590_006.equals(tkHoshikiCd) || JFUStrConst.CD00590_007.equals(tkHoshikiCd)
							|| JFUStrConst.CD00590_010.equals(tkHoshikiCd))
					{
						// VDSL／イーサのマンションで現住所と選択物件のMIDが同一の場合、同一マンションＩＤフラグに「true」を設定する。
						// VDSL／イーサのマンションの判定は提供方式コードが「イーサネット：001／VDSL1：003／VDSL2：004／VDSL3：005／VDSL4：006／VDSL5：007／ギガイーサネット：010」の場合、対象とする。
						ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.SAME_MANSION_ID_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
					}
				}

				// 資料請求フラグ取得
				String siryoSeikyFlg = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.SIRYO_SEIKY_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);

				// 資料請求の場合
				if ("1".equals(siryoSeikyFlg))
				{
					// テレビ単独の場合の表示制御とリンク制御
					if (JFUStrConst.HIKARI_TV_TK_JOKYO_CD_TV_TNDK.equals(hikariTvTkJokyoCd)
							|| JFUStrConst.HIKARI_TV_TK_JOKYO_CD_TV_TNDK_WEB_HK.equals(hikariTvTkJokyoCd))
					{
						//マンション価格帯コード＝1:低価格　もしくは、マンション価格帯コード≠1:低価格 かつ 宅内特殊配線有料工事コード＝001:特殊配線
						//の場合は、非表示とする
						if (JFUStrConst.MANSION_KAKAKUTAI_CD_TEI.equals(mansionKakakutaiCd)
								|| (!JFUStrConst.MANSION_KAKAKUTAI_CD_TEI.equals(mansionKakakutaiCd) && JFUStrConst.TAKNI_TOKUHSEN_YRKOJI_CD_TKHN
										.equals(takniTokuhsenYtkojiCd)))
						{
							// n番目のマンション一覧を削除する。
							ekk0861B501CmsMsg1List.removeDataBean(workCounter);
							// 後続の処理は行わず、次のマンション一覧の編集を行う。
							continue;
						}

					}

					// ネット・テレビ加入契約申込条件コードより導入予定か資料請求かを判定
					donyuRsvAticleFlg = judgeDonyuRsvAticle(netKnykeiMskmJokenCd, tvKnykeiMskmJokenCd, takniTokuhsenYtkojiCd, ekk0861B501CmsMsg1);
					// 導入予定か資料請求の場合
					if(donyuRsvAticleFlg)
					{
						// 後続の処理は行わず、次のマンション一覧の編集を行う
						workCounter++;
						continue;
					}
					// データ不整合による資料請求の為、下記のBeanに値を設定する
					// 資料請求表示フラグ siryo_seikyu_disp_flg true(表示)
					ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.SIRYO_SEIKY_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);

					workCounter++;

					continue;
				}

				// CAT-IDは上に移動

				if (!JFUStrConst.EMPTY.equals(catid))
				{
					if (JFUStrConst.HIKARI_TV_TK_JOKYO_CD_TV_TNDK.equals(hikariTvTkJokyoCd)
							|| JFUStrConst.HIKARI_TV_TK_JOKYO_CD_TV_TNDK_WEB_HK.equals(hikariTvTkJokyoCd))
					{
						// テレビ単独の場合の表示制御とリンク制御
						// マンション価格帯コード＝1:低価格　もしくは、マンション価格帯コード≠1:低価格 かつ 宅内特殊配線有料工事コード＝001:特殊配線
						// の場合は、非表示とする
						// 宅内特殊配線有料工事コードを取得
						if (JFUStrConst.MANSION_KAKAKUTAI_CD_TEI.equals(mansionKakakutaiCd)
								|| (!JFUStrConst.MANSION_KAKAKUTAI_CD_TEI.equals(mansionKakakutaiCd) && JFUStrConst.TAKNI_TOKUHSEN_YRKOJI_CD_TKHN
										.equals(takniTokuhsenYtkojiCd)))
						{
							// n番目のマンション一覧を削除する。
							ekk0861B501CmsMsg1List.removeDataBean(workCounter);
							// 後続の処理は行わず、次のマンション一覧の編集を行う。
							continue;
						}

						// ネット・テレビ加入契約申込条件コードより導入予定か資料請求かを判定
						donyuRsvAticleFlg = judgeDonyuRsvAticle(netKnykeiMskmJokenCd, tvKnykeiMskmJokenCd, takniTokuhsenYtkojiCd, ekk0861B501CmsMsg1);
						// 導入予定か資料請求の場合
						if(donyuRsvAticleFlg)
						{
							// 後続の処理は行わず、次のマンション一覧の編集を行う
							workCounter++;
							continue;
						}

						// テレビが提供されているため、下記のBeanに値を設定する
						// テレビ提供フラグ		tv_tk_disp_flg	true(表示)
						ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.TV_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);

						workCounter++;
						// テレビ単独の為、後続の処理は行わず、次のマンション一覧の編集を行う。
						continue;
					}
				}

				// サービスフォームBeanの表示フラグ初期化する。
				this.doInitDispFlg(ekk0861B501CmsMsg1);

				// ネット・テレビ加入契約申込条件コードより導入予定か資料請求かを判定
				donyuRsvAticleFlg = judgeDonyuRsvAticle(netKnykeiMskmJokenCd, tvKnykeiMskmJokenCd, takniTokuhsenYtkojiCd, ekk0861B501CmsMsg1);
				// 導入予定か資料請求の場合
				if(donyuRsvAticleFlg)
				{
					// 後続の処理は行わず、次のマンション一覧の編集を行う
					workCounter++;
					continue;
				}

				// 加入契約申込条件コードが"10"(資料請求)、"11"(Web可単独)、"12"(Web可併設)、"13"(全戸一括)のいずれかの場合
				if (this.isNetOk001(knykeiMskmJokenCd) && !JFUStrConst.EMPTY.equals(kaisenUseKeiNo)
						&& !JFUStrConst.KNYKEI_MSKM_JOKEN_DONYU_MK.equals(netKnykeiMskmJokenCd))
				{
					// ネットが提供されているため、下記のBeanに値を設定する
					// ネット提供フラグ net_tk_disp_flg true(表示)
					ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.NET_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
				}

				// 光電話提供コードが"001"(申込可能)の場合
				if (JFUStrConst.HIKARI_TEL_TK_CD_MSKM_KANOU.equals(hikariTelTkCd) && !JFUStrConst.EMPTY.equals(kaisenUseKeiNo)
						&& !JFUStrConst.KNYKEI_MSKM_JOKEN_DONYU_MK.equals(netKnykeiMskmJokenCd))
				{
					// 電話サービスが提供されているため、下記のBeanに値を設定する
					// 電話提供フラグ tel_tk_disp_flg true(表示)
					ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.TEL_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
				}

				// CAT-IDチェック
				// テレビが提供可能な場合は、必ずCAT-IDに値が設定されている。
				if (!JFUStrConst.EMPTY.equals(catid))
				{
					// 光テレビ提供状況コードが"0"(サービス未提供) かつ ""(空)でない場合
					if (!JFUStrConst.HIKARI_TV_TK_JOKYO_CD_MITK.equals(hikariTvTkJokyoCd) && !JFUStrConst.EMPTY.equals(hikariTvTkJokyoCd)
							 && !JFUStrConst.KNYKEI_MSKM_JOKEN_DONYU_MK.equals(tvKnykeiMskmJokenCd))
					{
						// テレビが提供されているため、下記のBeanに値を設定する
						// テレビ提供フラグ tv_tk_disp_flg true(表示)
						ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.TV_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
					}
				}

				// 加入契約申込条件コードが"19"(無効マンション)の場合
				if (JFUStrConst.KNYKEI_MSKM_JOKEN_DONYU_MK.equals(knykeiMskmJokenCd) && !JFUStrConst.EMPTY.equals(kaisenUseKeiNo))
				{
					// ネット加入契約申込条件コードが"10"(資料請求)、"11"(Web可単独)、"12"(Web可併設)、"13"(全戸一括)のいずれかの場合
					if (this.isNetOk001(netKnykeiMskmJokenCd) && !JFUStrConst.EMPTY.equals(kaisenUseKeiNo))
					{
						// ネットが提供されているため、下記のBeanに値を設定する
						// ネット提供フラグ		net_tk_disp_flg		true(表示)
						ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.NET_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
					}
					// テレビ加入契約申込条件コードが"10"(資料請求)、"11"(Web可単独)、"12"(Web可併設)、"13"(全戸一括)のいずれかの場合
					if (this.isNetOk001(tvKnykeiMskmJokenCd))
					{
						// テレビが提供可能な場合は、必ずCAT-IDに値が設定されている。
						if (!JFUStrConst.EMPTY.equals(catid))
						{
							// 光テレビ提供状況コードが"0"(サービス未提供) かつ ""(空)でない場合
							if (!JFUStrConst.HIKARI_TV_TK_JOKYO_CD_MITK.equals(hikariTvTkJokyoCd) && !JFUStrConst.EMPTY.equals(hikariTvTkJokyoCd))
							{
								// テレビが提供されているため、下記のBeanに値を設定する
								// テレビ提供フラグ tv_tk_disp_flg true(表示)
								ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.TV_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
							}
						}
					}
				}
			}
			else if (JFUStrConst.MANSION_BUKKEN_CD_MZ.equals(mansionBukkenCd))
			{
				// マンション物件コードが"002"(メゾン)の場合

				// サービスフォームBeanを以下のように設定する。
				// 表示用タイプ		"メゾン"
				ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.DISP_TYPE_01, X31CWebConst.DATABEAN_SET_VALUE, DISP_TYPE_MZ);

				// 資料請求フラグ取得
				String siryoSeikyFlg = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.SIRYO_SEIKY_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);

				// サービスフォームBeanの表示フラグを初期化する。
				this.doInitDispFlg(ekk0861B501CmsMsg1);

				// 資料請求の場合
				if ("1".equals(siryoSeikyFlg))
				{
					// ネット・テレビ加入契約申込条件コードより導入予定か資料請求かを判定
					donyuRsvAticleFlg = judgeDonyuRsvAticle(netKnykeiMskmJokenCd, tvKnykeiMskmJokenCd, takniTokuhsenYtkojiCd, ekk0861B501CmsMsg1);
					// 導入予定か資料請求の場合
					if(donyuRsvAticleFlg)
					{
						// 後続の処理は行わず、次のマンション一覧の編集を行う
						workCounter++;
						continue;
					}
					// データ不整合による資料請求の為、下記のBeanに値を設定する

					// 資料請求表示フラグ	siryo_seikyu_disp_flg	true(表示)
					ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.SIRYO_SEIKY_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);

					workCounter++;
					continue;
				}

				// ネット・テレビ加入契約申込条件コードより導入予定か資料請求かを判定
				donyuRsvAticleFlg = judgeDonyuRsvAticle(netKnykeiMskmJokenCd, tvKnykeiMskmJokenCd, takniTokuhsenYtkojiCd, ekk0861B501CmsMsg1);
				// 導入予定か資料請求の場合
				if(donyuRsvAticleFlg)
				{
					// 後続の処理は行わず、次のマンション一覧の編集を行う
					workCounter++;
					continue;
				}

				// ネット可否フラグのいずれかが"1"(申込可能)の場合
				if ((KNYKEI_NET_MSKM_KH_MSKM_KANOU.equals(knykeiNet10gMskmKh) || KNYKEI_NET_MSKM_KH_MSKM_KANOU.equals(knykeiNet1gMskmKh)
						|| KNYKEI_NET_MSKM_KH_MSKM_KANOU.equals(knykeiNet200mMskmKh) || KNYKEI_NET_MSKM_KH_MSKM_KANOU.equals(knykeiNet100mMskmKh))
						&& !JFUStrConst.KNYKEI_MSKM_JOKEN_DONYU_MK_MAISON.equals(netKnykeiMskmJokenCd))
				{
					// ネット提供フラグ		net_tk_disp_flg		true(表示)
					ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.NET_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
				}

				// 光電話提供コードが"001"(申込可能)の場合
				if (JFUStrConst.HIKARI_TEL_TK_CD_MSKM_KANOU.equals(hikariTelTkCd)
						&& !JFUStrConst.KNYKEI_MSKM_JOKEN_DONYU_MK_MAISON.equals(netKnykeiMskmJokenCd))
				{
					// 電話サービスが提供されているため、下記のBeanに値を設定する
					// 電話提供フラグ	tel_tk_disp_flg		true(表示)
					ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.TEL_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
				}

				// テレビが提供可能な場合は、必ずCAT-IDに値が設定されている。
				if (!JFUStrConst.EMPTY.equals(catid))
				{
					// メゾン光テレビ申込可能フラグが"10"(K-CAT申込可)の場合
					if (JFUStrConst.MAISON_HIKARI_TV_TK_CD_K_CAT.equals(maisonHikariTvTkCd)
							 && !JFUStrConst.KNYKEI_MSKM_JOKEN_DONYU_MK_MAISON.equals(tvKnykeiMskmJokenCd))
					{
						// テレビが提供されているため、下記のBeanに値を設定する
						// テレビ提供フラグ		tv_tk_disp_flg	true(表示)
						ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.TV_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
					}
				}

				// 加入契約申込条件コードが"29"(無効マンション)の場合
				if (JFUStrConst.KNYKEI_MSKM_JOKEN_DONYU_MK_MAISON.equals(knykeiMskmJokenCd) && !JFUStrConst.EMPTY.equals(kaisenUseKeiNo))
				{
					// ネット加入契約申込条件コードが"10"(資料請求)、"11"(Web可単独)、"12"(Web可併設)、"13"(全戸一括)のいずれかの場合
					if (this.isNetOk001(netKnykeiMskmJokenCd) && !JFUStrConst.EMPTY.equals(kaisenUseKeiNo))
					{
						// ネットが提供されているため、下記のBeanに値を設定する
						// ネット提供フラグ		net_tk_disp_flg		true(表示)
						ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.NET_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
					}
					// テレビ加入契約申込条件コードが"10"(資料請求)、"11"(Web可単独)、"12"(Web可併設)、"13"(全戸一括)のいずれかの場合
					if (this.isNetOk001(tvKnykeiMskmJokenCd))
					{
						// テレビが提供可能な場合は、必ずCAT-IDに値が設定されている。
						if (!JFUStrConst.EMPTY.equals(catid))
						{
							// 光テレビ提供状況コードが"0"(サービス未提供) かつ ""(空)でない場合
							if (!JFUStrConst.HIKARI_TV_TK_JOKYO_CD_MITK.equals(hikariTvTkJokyoCd) && !JFUStrConst.EMPTY.equals(hikariTvTkJokyoCd))
							{
								// テレビが提供されているため、下記のBeanに値を設定する
								// テレビ提供フラグ		tv_tk_disp_flg	true(表示)
								ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.TV_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
							}
						}
					}
				}
			}

			workCounter++;
		}

		workCounter = 0;
		while (workCounter < ekk0861B501CmsMsg1List.getCount().intValue())
		{
			// 検索結果(n番目)を取得
			X31SDataBeanAccess ekk0861B501CmsMsg1 = ekk0861B501CmsMsg1List.getDataBean(workCounter);

			// 提供サービス欄に表示する情報が存在する場合、true
			boolean isVisible = false;

			//「|=」は、OR条件です。(a = a || b)

			// 導入予定表示フラグ
			isVisible |= ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.DONYU_YOTEI_DISP_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 資料請求表示フラグ
			isVisible |= ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.SIRYO_SEIKY_DISP_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);

			// ネット提供フラグ
			isVisible |= ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.NET_TK_DISP_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 電話提供フラグ
			isVisible |= ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.TEL_TK_DISP_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);

			// テレビ提供フラグ
			isVisible |= ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.TV_TK_DISP_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 提供サービス欄に表示する情報が存在しない場合、そのマンションは画面表示しない。
			if (!isVisible)
			{
				ekk0861B501CmsMsg1List.removeDataBean(workCounter);
				continue;
			}

			workCounter++;
		}

		// 検索結果件数 +1 を取得する。検索結果件数が0件の場合は、空白を設定する。
		String searchResultCount = JFUStrConst.EMPTY;
		if (ekk0861B501CmsMsg1List.getCount() > 0)
		{
			searchResultCount = String.valueOf(ekk0861B501CmsMsg1List.getCount() + 1);
		}

		// 検索結果件数をサービスフォームBeanに格納する。
		serviceInfoBean.sendMessageString(FUW09906SFConst.SEARCH_RESULT_COUNT, X31CWebConst.DATABEAN_SET_VALUE, searchResultCount);

	}

	/**
	 * 指定した加入契約申込条件コードから、ネットが提供かどうか判定する。
	 * マンション用。
	 * <br>
	 * @param knykeiMskmJokenCd 加入契約申込条件コード
	 * @return 提供：true 未提供：false
	 */
	private boolean isNetOk001(String knykeiMskmJokenCd)
	{
		// 加入契約申込条件コードが10,11,12,13の場合、ネット提供。
		if (JFUStrConst.KNYKEI_MSKM_JOKEN_ATICLE.equals(knykeiMskmJokenCd) || JFUStrConst.KNYKEI_MSKM_JOKEN_WEB_SNGL.equals(knykeiMskmJokenCd))
		{
			return true;
		}

		if (JFUStrConst.KNYKEI_MSKM_JOKEN_WEB_HEISETSU.equals(knykeiMskmJokenCd) || JFUStrConst.KNYKEI_MSKM_JOKEN_IKT.equals(knykeiMskmJokenCd))
		{
			return true;
		}

		// 未提供
		return false;
	}

	/**
	 * ネット・テレビ加入契約申込条件コードより
	 * 導入予定か資料請求かを判定する。
	 *
	 * <br>
	 * @param netKnykeiMskmJokenCd ネット加入契約申込条件コード
	 * @param tvKnykeiMskmJokenCd テレビ加入契約申込条件コード
	 * @param takniTokuhsenYtkojiCd 宅内特殊配線有料工事コード
	 * @param ekk0861B501CmsMsg1 マンション一覧
	 */
	private boolean judgeDonyuRsvAticle(String netKnykeiMskmJokenCd, String tvKnykeiMskmJokenCd, String takniTokuhsenYtkojiCd, X31SDataBeanAccess ekk0861B501CmsMsg1)
	{
		// 加入契約申込条件コードが導入予定（"14"）の場合
		if (JFUStrConst.KNYKEI_MSKM_JOKEN_DONYU_RSV.equals(netKnykeiMskmJokenCd)
				|| JFUStrConst.KNYKEI_MSKM_JOKEN_DONYU_RSV.equals(tvKnykeiMskmJokenCd))
		{
			// 導入予定のマンションのため、下記のBeanに値を設定する
			// 導入予定表示フラグ	true(表示)
			ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.DONYU_YOTEI_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
			// 資料請求フラグに"0"を上書く
			ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.SIRYO_SEIKY_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, "0");
			// 加入契約申込条件コード(本体)を上書く
			ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_MSKM_JOKEN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.KNYKEI_MSKM_JOKEN_DONYU_RSV);

			return true;
		}

		// 加入契約申込条件コードが導入予定（"20"）の場合
		if (JFUStrConst.KNYKEI_MSKM_JOKEN_ATICLE_RSV_MAISON.equals(netKnykeiMskmJokenCd)
				|| JFUStrConst.KNYKEI_MSKM_JOKEN_ATICLE_RSV_MAISON.equals(tvKnykeiMskmJokenCd))
		{
			// 導入予定のマンションのため、下記のBeanに値を設定する
			// 導入予定表示フラグ	true(表示)
			ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.DONYU_YOTEI_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
			// 資料請求フラグに"0"を上書く
			ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.SIRYO_SEIKY_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, "0");
			// 加入契約申込条件コード(本体)を上書く
			ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_MSKM_JOKEN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.KNYKEI_MSKM_JOKEN_ATICLE_RSV_MAISON);

			return true;
		}

		// 加入契約申込条件コードが資料請求（"10"）の場合
		if (JFUStrConst.KNYKEI_MSKM_JOKEN_ATICLE.equals(netKnykeiMskmJokenCd)
				|| JFUStrConst.KNYKEI_MSKM_JOKEN_ATICLE.equals(tvKnykeiMskmJokenCd))
		{
			// 資料請求のマンションのため、下記のBeanに値を設定する
			// 資料請求表示フラグ	true(表示)
			ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.SIRYO_SEIKY_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
			// 加入契約申込条件コード(本体)を上書く
			ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_MSKM_JOKEN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.KNYKEI_MSKM_JOKEN_ATICLE);

			return true;
		}

		// 加入契約申込条件コードが資料請求（"21"）の場合
		if (JFUStrConst.KNYKEI_MSKM_JOKEN_ATICLE_SIKY_MAISON.equals(netKnykeiMskmJokenCd)
				|| JFUStrConst.KNYKEI_MSKM_JOKEN_ATICLE_SIKY_MAISON.equals(tvKnykeiMskmJokenCd))
		{
			// 資料請求のマンションのため、下記のBeanに値を設定する
			// 資料請求表示フラグ	true(表示)
			ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.SIRYO_SEIKY_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
			// 加入契約申込条件コード(本体)を上書く
			ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_MSKM_JOKEN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.KNYKEI_MSKM_JOKEN_ATICLE_SIKY_MAISON);

			return true;
		}

		// 加入契約条件申込コードが13(全戸一括)且つ宅内特殊配線有料工事コードが「001:特殊配線マンション」
		if ((JFUStrConst.KNYKEI_MSKM_JOKEN_IKT.equals(netKnykeiMskmJokenCd)
				|| JFUStrConst.KNYKEI_MSKM_JOKEN_IKT.equals(tvKnykeiMskmJokenCd))
				&& JFUStrConst.TAKNI_TOKUHSEN_YRKOJI_CD_TKHN.equals(takniTokuhsenYtkojiCd))
		{
			// 資料請求のマンションのため、下記のBeanに値を設定する
			// 資料請求表示フラグ	true(表示)
			ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.SIRYO_SEIKY_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, true);
			// 加入契約申込条件コード(本体)を上書く
			ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_MSKM_JOKEN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.KNYKEI_MSKM_JOKEN_ATICLE_SIKY_MAISON);

			return true;
		}

		return false;
	}

	/**
	 * 指定したデータタイプBeanの表示フラグを初期化する。
	 *
	 * <br>
	 * @param ekk0861B501CmsMsg1 マンション一覧
	 */
	private void doInitDispFlg(X31SDataBeanAccess ekk0861B501CmsMsg1)
	{

		// マンションＩＤ
		String mansionId = ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.MANSION_ID_01, X31CWebConst.DATABEAN_GET_VALUE);

		if (JFUStrConst.EMPTY.equals(mansionId))
		{
			ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.MANSION_ID_01, X31CWebConst.DATABEAN_SET_VALUE, "-");
		}

		// サービスフォームBeanを以下のように初期化する。
		// 導入予定表示フラグ	false(非表示)
		ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.DONYU_YOTEI_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, false);

		// ネット提供フラグ		false(非表示)
		ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.NET_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, false);

		// 電話提供フラグ		false(非表示)
		ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.TEL_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, false);

		// テレビ提供フラグ		false(非表示)
		ekk0861B501CmsMsg1.sendMessageBoolean(FUW09906SFConst.TV_TK_DISP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, false);
	}

	/**
	 * ページングを処理します。 <br>
	 *
	 * @return boolean
	 * @throws Exception
	 */
	public boolean paging() throws Exception {

		// 検索処理を行います。
		if (!search()) {
			return false;
		}

		// 遷移先画面の設定を行います。
		setNextScreen(SCREEN_MODE_0, JFUScreenConst.SCREEN_ID_FUW09906,
				JFUScreenConst.SCREEN_NAME_FUW09906);

		return true;
	}

	/**
	 * サービス呼出処理を行います。
	 *
	 * @param bean
	 *            : サービスフォームBeanのインスタンス
	 * @param statebean
	 *            : 都道府県リストのインスタンス
	 * @param addbean
	 *            : 住所リストのインスタンス
	 * @return 成否
	 * @throws Exception
	 *             データベースアクセスエラーが発生した場合
	 */
	private boolean setService(X31SDataBeanAccess bean,
			X31SDataBeanAccess statebean,
			String method) {
		X31SDataBeanAccess[] paramBean = { bean };
		String srcPst = JFUStrConst.EMPTY;
		String state_search_flg = JFUStrConst.EMPTY;// 都道府県一覧取得処理
		String address_search_flg = JFUStrConst.EMPTY;// 住所一覧取得処理

		// 結果表示フラグに"0"(非表示)を設定します。
		bean.sendMessageString(FUW09906SFConst.RET_INIT_FLG,
				X31CWebConst.DATABEAN_SET_VALUE, "0");

		// paramMapを生成します。
		HashMap paramMap = new HashMap();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SERVICE_ID);

		// マッピングクラスのインスタンスを生成します。
		FUSV0331_FUSV0331OPDBMapper mapper = new FUSV0331_FUSV0331OPDBMapper();

		// 検索用郵便番号取得
		srcPst = bean.sendMessageString(FUW09906SFConst.SRC_PCD,
				X31CWebConst.DATABEAN_GET_VALUE);

		// 上りマッピング用
		HashMap dataMap = new HashMap();

		// 実行判定用フラグ設定
		if (ERROR.equals(method))
		{
			mapper.setMskmUcwkMap(paramBean, dataMap, JPCModelConstant.FUNC_CD_1, JCCWebCommon.getOpeDate(this, null));
			state_search_flg = "1";

		}else if (INIT.equals(method)) {

			mapper.setMskmUcwkMap(paramBean, dataMap, JPCModelConstant.FUNC_CD_1, JCCWebCommon.getOpeDate(this, null));
			state_search_flg = "1";

			// 検索用郵便番号に値があれば、都道府県一覧取得処理を行う。
			if (srcPst.length() > 0) {
				mapper.setFUSV033101SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
				mapper.setFUSV033101CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1); // 住所検索情報一覧照会
				address_search_flg = "1";
			}
		} else if (SEARCH.equals(method)) {
			mapper.setFUSV033101SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			mapper.setFUSV033101CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1); // 住所検索情報一覧照会
			address_search_flg = "1";
		}

		if ("1".equals(address_search_flg)) {
			// ページング用マップ取得
			HashMap<String, Object> pagingMap = (HashMap) dataMap
					.get("FUSV033101SC");

			// 検索処理パターン設定
			pagingMap.put(JFUStrConst.PAGING_INFO_SEARCH_TYPE,
					JPCModelConstant.SAERCH_TYPE_BBN);
			// 最大検索件数設定
			pagingMap.put(JFUStrConst.PAGING_INFO_MAX_SEARCH_NUM, JCCWebCommon
					.getSearchConst("FUW09906_MAX_SHOW_CNT"));
			// 表示件数設定
			pagingMap.put(JFUStrConst.PAGING_INFO_DISPLAY_NUM, JCCWebCommon
					.getSearchConst("FUW09906_ROW_PER_PAGE"));
			// ページング初期設定
			JCCWebCommon.upmapperPageLinkInfo(this, "0", SEARCH_MAP_ID,
					dataMap);
		}

		// 検索結果格納用マップを生成します。
		HashMap outputMap = new HashMap();

		// サービスを呼び出します。
		invokeService(paramMap, dataMap, outputMap);

		// 都道府県一覧照会の取り出し
		if (state_search_flg != null && "1".equals(state_search_flg)) {
			mapper.getMskmUcwkMap(statebean, outputMap);
		}

		// 住所検索情報一覧照会の取り出し
		if (address_search_flg != null && "1".equals(address_search_flg)) {
			mapper.getFUSV033101CC(paramBean, outputMap, JCCWebCommon.getOpeDate(this, null));

			// 検索エラーフラグの取得
			String searchError = JCCWebCommon.getSearchErrFlg(SEARCH_MAP_ID,
					outputMap);
			X31SDataBeanAccessArray manItiran = paramBean[0].getDataBeanArray(FUW09906SFConst.EKK0861B501CBSMSG1LIST);

			if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchError)) {
				// 検索結果が0件の場合の処理
				JCCWebCommon.setMessageInfo(this
								,JPCOnlineMessageConstant.EKB0330__I
								,ADD_INFO_ERR);
				// 結果表示フラグに"1"(表示)を設定します。
				bean.sendMessageString(FUW09906SFConst.RET_INIT_FLG,
						X31CWebConst.DATABEAN_SET_VALUE, "0");
				// 検索ボタン押下フラグに"1"(押下)を設定します。
				bean.sendMessageString(FUW09906SFConst.SRC_BTN_FLG,
						X31CWebConst.DATABEAN_SET_VALUE, "1");
				return true;
			} else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX
					.equals(searchError)) {
				// 検索最大件数がオーバーした場合の処理
				JCCWebCommon.setMessageInfo(this,
						JPCOnlineMessageConstant.EKB0340__I,
						new String[] { (String) ((HashMap<?, ?>) dataMap
								.get(SEARCH_MAP_ID)).get("max_search_num") },
						ADD_INFO_ERR);
				// 結果表示フラグに"1"(表示)を設定します。
				bean.sendMessageString(FUW09906SFConst.RET_INIT_FLG,
						X31CWebConst.DATABEAN_SET_VALUE, "0");
				// 検索ボタン押下フラグに"1"(押下)を設定します。
				bean.sendMessageString(FUW09906SFConst.SRC_BTN_FLG,
						X31CWebConst.DATABEAN_SET_VALUE, "1");
				return true;
			} else if ("4"
					.equals(searchError)) {
				// 検索最大件数がオーバーした場合の処理
				JCCWebCommon.setMessageInfo(this,
						JPCOnlineMessageConstant.EKF0420_TW,
						new String[] { "物件があるエリアの詳細な住所情報", "入力" },
						ADD_INFO_ERR);
				// 結果表示フラグに"1"(表示)を設定します。
				bean.sendMessageString(FUW09906SFConst.RET_INIT_FLG,
						X31CWebConst.DATABEAN_SET_VALUE, "0");
				// 検索ボタン押下フラグに"1"(押下)を設定します。
				bean.sendMessageString(FUW09906SFConst.SRC_BTN_FLG,
						X31CWebConst.DATABEAN_SET_VALUE, "1");
				return true;
			} else if (manItiran == null || manItiran.getCount() == 0) {
				// 検索最大件数がオーバーした場合の処理
				JCCWebCommon.setMessageInfo(this,
						JPCOnlineMessageConstant.EKB8160_TW,
						new String[] { "指定した検索条件に該当する物件" },
						ADD_INFO_ERR);
				// 結果表示フラグに"1"(表示)を設定します。
				bean.sendMessageString(FUW09906SFConst.RET_INIT_FLG,
						X31CWebConst.DATABEAN_SET_VALUE, "0");
				// 検索ボタン押下フラグに"1"(押下)を設定します。
				bean.sendMessageString(FUW09906SFConst.SRC_BTN_FLG,
						X31CWebConst.DATABEAN_SET_VALUE, "1");
				return true;
			}

			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this, "0", SEARCH_MAP_ID,
					outputMap);

			// 検索のコマンドIDを設定する。
			JCCWebCommon.setSearchCommand(this, "PAGING");

			// 結果表示フラグに"1"(表示)を設定します。
			bean.sendMessageString(FUW09906SFConst.RET_INIT_FLG,
					X31CWebConst.DATABEAN_SET_VALUE, "1");
			// 検索ボタン押下フラグに"1"(押下)を設定します。
			bean.sendMessageString(FUW09906SFConst.SRC_BTN_FLG,
					X31CWebConst.DATABEAN_SET_VALUE, "1");

		}

		return true;

	}

	/**
	 * 画面遷移先を設定します。
	 *
	 * @author 富士通
	 * @param screenMode
	 * @param nextScreenId
	 *            遷移先画面ＩＤ
	 * @param nextScreenName
	 *            遷移先画面名
	 *
	 */
	private void setNextScreen(String screenMode, String nextScreenId,
			String nextScreenName) {
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// WEB新規情報
		X31SDataBeanAccess bn = getWebInfo(commoninfoBean);

		bn.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06,
				X31CWebConst.DATABEAN_SET_VALUE, screenMode);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);

		DEBUG_LOG.debug(String.format("遷移先 CD：%s NM：%s", nextScreenId,
				nextScreenName));
	}

	/**
	 * WEB新規情報のインスタンスを取得します。
	 *
	 * @param bean
	 * @return bn
	 */
	private X31SDataBeanAccess getWebInfo(X31SDataBeanAccess bean) {

		X31SDataBeanAccessArray arr = bean
				.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		if (arr.getCount() == 0) {
			arr.addDataBean();
		}
		X31SDataBeanAccess bn = arr.getDataBean(0);

		return bn;
	}

	/**
	 * 提供方式変更の設定（1G,5G,10G：料金コースは1G）
	 * 
	 * <br>
	 * @param ekk0861B501CmsMsg1 マンション一覧.明細
	 */
	private void setChangeMskmKh(X31SDataBeanAccess ekk0861B501CmsMsg1)
	{
		// 加入契約ネット10G申込可否
		ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_NET_10G_MSKM_KH_01, X31CWebConst.DATABEAN_SET_VALUE, MSKM_FUKA);

		// 加入契約ネット1G申込可否
		ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_NET_1G_MSKM_KH_01, X31CWebConst.DATABEAN_SET_VALUE,
				CommonInfoCFConst.MOBILE_1G_16);

		// 加入契約ネット200M申込可否
		ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_NET_200M_MSKM_KH_01, X31CWebConst.DATABEAN_SET_VALUE, MSKM_FUKA);

		// 加入契約ネット100M申込可否
		ekk0861B501CmsMsg1.sendMessageString(FUW09906SFConst.KNYKEI_NET_100M_MSKM_KH_01, X31CWebConst.DATABEAN_SET_VALUE, MSKM_FUKA);
	}
}