/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUW03901SFLogic
*	ソースファイル名：FUW03901SFLogic.java
*	作成者			：富士通
*	日付			：2011年06月01日
*＜機能概要＞
*	認証IDパスワード変更のビューロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/01	FJ)中尾		新規作成
*   v4.00		2012/09/27  FJ)岡井     変更【ANK-1198-00-00】変更系申込画面の提供条件・利用規約の設置位置について
*   v4.00		2012/09/30  FJ)中谷     変更【ANK-0350-00-00】認証ＩＤパスワード変更ログイン設定変更
*   v4.00		2012/10/24  FJ)中谷     変更【IT1-2012-0001669】現在パスワードのチェックを修正
*   v5.00		2013/08/21  FJ)岡井     変更【OM-2013-0000401】SOD対応
*  v28.00		2017/02/20  FJ)森脇     変更【OM-2017-0000160】「認証ＩＤパスワード認証一覧照会」機能コードを"1"に変更
*  v37.00		2018/02/16  FJ)美濃原   変更【ANK-3366-00-00】eo光設備卸対応
*  v73.00		2024/07/08  FJ)浅井     変更【ANK-4427-00-00】NTT卸対応
*
**********************************************************************/
package eo.web.webview.FUW03901SF;

import static eo.web.webview.CommonInfoCF.CommonInfoCFConst.URL_SCREEN_ID_21;
import static eo.web.webview.common.JFUWebCommon.SEP_0;
import static eo.web.webview.common.JFUWebCommon.SSO_INFO;

import java.util.ArrayList;
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.X31SWebLog;
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.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0075_FUSV0075OPDBMapper;
import eo.web.webview.mapping.FUSV0192_FUSV0192OPDBMapper;
import eo.web.webview.mapping.FUSV0259_FUSV0259OPDBMapper;

/**
 * 認証IDパスワード変更のビューロジッククラスです。
 *
 * <br>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW03901SFLogic extends JCCWebBusinessLogic
{

	/** サービスID（申込） */
	private static final String USECASE_ID_FUSV0075 = "FUSV0075";
	/** サービスID（初期表示） */
	private static final String USECASE_ID_FUSV0192 = "FUSV0192";
	/** サービスID（申込(ADSL)） */
	private static final String USECASE_ID_FUSV0259 = "FUSV0259";

	/** FUSV019201CC */
	private static final String FUSV019201CC = "FUSV019201CC";
	/** EKK0721A010CBSMsg1List */
	private static final String EKK0721A010CBSMSG1LIST = "EKK0721A010CBSMsg1List";

	/** 空文字 */
	private static final String STR_NULL = JFUStrConst.EMPTY;

	/** 置換文字(チェック用)：新しいパスワード（再入力） */
	private static final String[] RE_INPUT_CHG_PWD_KANREN_MSG = { "新しいパスワード（再入力）" };
	/** 置換文字(チェック用)：新しいパスワードに;、;パスワード以外 */
	private static final String[] CHG_PWD_KANREN_MSG = { "新しいパスワードに", "、", "パスワード以外" };
	/** 置換文字(チェック用)：パスワードが不正です。パスワード */
	private static final String[] REPLACE_CHAR_PWD_ARRAY = { "パスワードが不正です。パスワード" };
	/** エラー表示画面項目箇所(チェック用)：now_pwd */
	private static final String ERR_NOW_PWD_ITEM_ID = "now_pwd";
	/** エラー表示画面項目箇所(チェック用)：now_pwd */
	private static final String ERR_CHG_PWD_ITEM_ID = "chg_pwd";
	/** エラー表示画面項目箇所(チェック用)：re_input_chg_pwd */
	private static final String ERR_RE_INPUT_CHG_PWD_ITEM_ID = "re_input_chg_pwd";

	/**
	 * 初期処理です。
	 * 
	 * @return 必ずtrue
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{

// ANK-4427-00-00 add start
		JFUWebCommon.checkOrosi(this);
// ANK-4427-00-00 add end

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		String screeId = JFUWebCommon.getScreenId(this);
		if (JFUScreenConst.SCREEN_NAME_FUW08801.equals(screeId))
		{
			// 各種パスワード変更画面から遷移してきた場合

			// ＳＳＯ情報 ＳＹＳＩＤ
			String sysId =
					JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.SSO_INFO + JFUWebCommon.SEP_0 + CommonInfoCFConst.SYSID_21);

			// ＳＳＯ情報 認証ＩＤ
			String ninshoId =
					JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.SSO_INFO + JFUWebCommon.SEP_0 + CommonInfoCFConst.NINSHO_ID_21);

			// 値を設定する
			// ＳＳＯ情報 ＵＲＬ画面ＩＤ
			JFUWebCommon.setDataBeanItemByPath(commonInfoBean, SSO_INFO + SEP_0 + URL_SCREEN_ID_21, "CERTIFY_ID_PASSWORD_CHANGE");

			if (JFUWebCommon.isNull(sysId) || JFUWebCommon.isNull(ninshoId))
			{
				// "0002"（システムエラー）
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
			}

			// 現顧客契約情報をリフレッシュします。
			JFUWebCommon.refreshGenCustKei(this);

			// フロントオンライン共通部品/共通関連チェック処理
			JFUWebCommon.checkCommonRelation(this, USECASE_ID_FUSV0075);

			// 共有フォームBeanを再取得。
			commonInfoBean = super.getCommonInfoBean();
		}

		/* ----- 共有ホームBean情報を取得 ----- */

		// ○WEB変更情報
		X31SDataBeanAccess webChgInfoBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);
		// ○SSO情報
		X31SDataBeanAccess ssoInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.SSO_INFO).getDataBean(0);

		// SSO情報取得
		// 現在の認証IDを取得
		String ssoInfoNinshoId = ssoInfoBean.sendMessageString(CommonInfoCFConst.NINSHO_ID_21, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(FUW03901SFConst.NOW_NINSHO_ID, X31CWebConst.DATABEAN_SET_VALUE, ssoInfoNinshoId);
		if (JFUWebCommon.isNull(ssoInfoNinshoId))
		{
			X31SWebLog.DEBUG_LOG.debug("【SSO情報 認証ID未設定エラー】");
			// システムエラーをスロー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// ○現顧客情報
		X31SDataBeanAccess genCustKeiInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO).getDataBean(0);
		// ○サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = genCustKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0);
		// ○サービス契約内訳情報
		X31SDataBeanAccess svcKeiUcwkInfoBean = null;
		String ninshoId = null;

		// ★サービス契約内訳情報(サービス契約情報の子)を取得
		X31SDataBeanAccessArray svcKeiUcwkInfoArray = svcKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_UCWK_INFO);
		for (int k = 0; k < svcKeiUcwkInfoArray.getCount(); k++)
		{
			svcKeiUcwkInfoBean = svcKeiUcwkInfoArray.getDataBean(k);

			// サービス契約内訳.ＩＳＰ認証ＩＤ
			String svcKeiUcwkInfoISPNinshoId =
					svcKeiUcwkInfoBean.sendMessageString(CommonInfoCFConst.ISP_NINSHO_ID_24, X31CWebConst.DATABEAN_GET_VALUE);

			if (ssoInfoNinshoId.equals(svcKeiUcwkInfoISPNinshoId))
			{
				ninshoId = svcKeiUcwkInfoISPNinshoId;
				break;
			}
		}

		// ●認証IDチェック処理
		if (JFUWebCommon.isNull(ninshoId))
		{
			// 共有フォームBean.サービス契約内訳情報.ＩＳＰ認証ＩＤが無しの場合

			// "0102"（契約状態エラー）
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}

		// ●契約状態チェック
		String svcKeiStat = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_STAT_23, X31CWebConst.DATABEAN_GET_VALUE);
		if (JFUStrConst.CD00037_210.equals(svcKeiStat) || JFUStrConst.CD00037_220.equals(svcKeiStat))
		{
			// "0102"（契約状態エラー）
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}

		// 各Beanを配列に格納
		X31SDataBeanAccess[] beanArray = { bean, commonInfoBean };

		// ユースケースID格納用マップを生成。
		HashMap<String, String> paramMap = new HashMap<String, String>(16);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0192);

		// DBMapperクラス呼び出し
		FUSV0192_FUSV0192OPDBMapper mapper = new FUSV0192_FUSV0192OPDBMapper();

		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// ●上りマッピング
		// 初期費用一覧照会コモンコンポーネント部品CC
		mapper.setFUSV019201CC(beanArray, dataMap, JPCModelConstant.FUNC_CD_1);
		// 現サービス契約内訳情報一覧照会（ネット）SC
		mapper.setFUSV019201SC(beanArray, dataMap, JPCModelConstant.FUNC_CD_3);

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// ●サービス呼び出し
		try
		{
			invokeService(paramMap, dataMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// ●下りマッピング
		// 現サービス契約内訳情報一覧照会（ネット）SC
		mapper.getFUSV019201SC(bean, outputMap);

		// ●料金表マッピング
		JFUWebCommon.setPrcInfoArea(bean, outputMap, null, FUSV019201CC, "FUW03901");

		// 有料フラグを設定(初期費用があればTRUE)
		bean.sendMessageBoolean(FUW03901SFConst.PAY_FLG, X31CWebConst.DATABEAN_SET_VALUE, chkPayInitialCost(outputMap));

		// マンション区分を設定
		bean.sendMessageBoolean(FUW03901SFConst.MANSION_DIV, X31CWebConst.DATABEAN_SET_VALUE, getMansionDiv(bean, commonInfoBean));

		// -------- 遷移先画面の指定 --------
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW03901);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW03901);

		return true;
	}

	/**
	 * 確認画面の申し込むボタン押下の処理です。
	 * 
	 * @return 必ずtrue
	 * @throws Exception
	 */
	public boolean mskm() throws Exception
	{
		// フロントオンライン共通部品/共通関連チェック処理
		JFUWebCommon.checkCommonRelation(this, USECASE_ID_FUSV0075);

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		/* ----- 共有ホームBean情報を取得 ----- */
		X31SDataBeanAccess ssoInfoBean = null;
		X31SDataBeanAccess genCustKeiInfoBean = null;

		// ★WEB変更の情報を取得
		X31SDataBeanAccessArray webChgInfoBeanArray = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO);
		X31SDataBeanAccess webChgInfoBean = webChgInfoBeanArray.getDataBean(0);

		// ★SSO情報
		X31SDataBeanAccessArray ssoInfoArray = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.SSO_INFO);
		ssoInfoBean = ssoInfoArray.getDataBean(0);

		// ★現顧客情報を取得
		X31SDataBeanAccessArray genCustKeiInfoArray = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO);
		genCustKeiInfoBean = genCustKeiInfoArray.getDataBean(0);

		// ●現サービス情報チェック
		String chkNinshoId = bean.sendMessageString(FUW03901SFConst.NOW_NINSHO_ID, X31CWebConst.DATABEAN_GET_VALUE);
		if (chkNinshoId == null || chkNinshoId.equals(STR_NULL))
		{
			// 契約状態エラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}

		// ●単関連チェック
		if (!tankanrenCheck(bean, commonInfoBean))
		{
			return true;
		}

		// ●サービス呼出
		// 各Beanを配列でまとめる
		X31SDataBeanAccess[] paramBean1 = { bean };
		X31SDataBeanAccess[] paramBean2 = { bean, ssoInfoBean };
		X31SDataBeanAccess[] paramBean3 = { bean, ssoInfoBean, genCustKeiInfoBean };

		// ○サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = genCustKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0);
		String prcGrpCd = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.PRC_GRP_CD_23, X31CWebConst.DATABEAN_GET_VALUE);

		// 　ユースケースID格納用マップ
		HashMap<String, String> paramMap = new HashMap<String, String>(16);
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// eoADSL(フレッツ) 以外の場合
		if (!JFUStrConst.CD00133_06.equals(prcGrpCd))
		{

			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0075);

			FUSV0075_FUSV0075OPDBMapper mapper = new FUSV0075_FUSV0075OPDBMapper();

			// 上りマッピング
			// 認証ＩＤパスワード存在確認CC
			dataMap = mapper.setFUSV007501CC(paramBean3, dataMap, JPCModelConstant.FUNC_CD_1);
			// 認証ＩＤ一覧照会
			dataMap = mapper.setFUSV007501SC(paramBean3, dataMap, JPCModelConstant.FUNC_CD_3);
			// 認証ＩＤパスワード認証一覧照会１
			dataMap = mapper.setFUSV007502SC(paramBean3, dataMap, JPCModelConstant.FUNC_CD_1);
			// 認証ＩＤパスワード認証一覧照会２
			dataMap = mapper.setFUSV007503SC(paramBean3, dataMap, JPCModelConstant.FUNC_CD_1);
			// 申込内容承認登録
			dataMap = mapper.setFUSV007504SC(paramBean2, dataMap, JPCModelConstant.FUNC_CD_1);
			// ISP認証IDパスワード変更
			dataMap = mapper.setFUSV007505SC(paramBean1, dataMap, JPCModelConstant.FUNC_CD_1);
			// 進捗登録
			dataMap = mapper.setFUSV007506SC(paramBean2, dataMap, JPCModelConstant.FUNC_CD_1);
			// 申込明細照査・後続業務依頼
			dataMap = mapper.setFUSV007507SC(paramBean1, dataMap, JPCModelConstant.FUNC_CD_1);
			// サービスIF結果データ移送1CC
			dataMap = mapper.setFUSV007502CC(paramBean1, dataMap, JPCModelConstant.FUNC_CD_1);
			// サービスIF結果データ移送2CC
			dataMap = mapper.setFUSV007503CC(paramBean1, dataMap, JPCModelConstant.FUNC_CD_1);
			// サービスIF結果データ移送3CC
			dataMap = mapper.setFUSV007504CC(paramBean1, dataMap, JPCModelConstant.FUNC_CD_1);
			// サービスオーダ発行CC
			dataMap = mapper.setFUSV007505CC(paramBean3, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		// eoADSL(フレッツ) の場合
		else
		{
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0259);

			FUSV0259_FUSV0259OPDBMapper mapper = new FUSV0259_FUSV0259OPDBMapper();

			mapper.setFUSV025901CC(paramBean3, dataMap, JPCModelConstant.FUNC_CD_1);
		}

		// 検索結果格納用マップを生成。
		HashMap<Object, Object> outputMap = new HashMap<Object, Object>();

		// サービス呼出を行う
		try
		{
			X31CMessageResult msgResult = invokeService(paramMap, dataMap, outputMap);
			if (msgResult != null)
			{
				JFUWebCommon.setMessageInfo(this, msgResult);
				return true;
			}

		}
		catch (JCCWebServiceException se)
		{
			// 例外情報を取得
			X31CMessageResult msgResult = se.getMessageList();
			X31CMessageMoreInfo[] moreInfo = msgResult.getMessageMoreInfoList();
			X31CMessageMoreInfo info = moreInfo[0];// 関連チェック系は必ずエラーが1つのため0番目から取得する。
			String templateid = info.getTemplateId();
			String itemid = info.getItemId();
			String status = info.getStatus();
			String errFlg = info.getItemCheckErr();

			// ●関連チェック
			if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status))
			{
				// 排他チェック
				// テンプレートIDが"EKK0171C012"かつエラーフラグが"EA"かつアイテムが"サービス契約内訳番号"の場合
				if ("EKK0171C012".equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg) && "svc_kei_ucwk_no".equals(itemid))
				{
					// 更新不可エラー
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0204);
				}

				// 認証ＩＤ・認証ＩＤパスワードの一致チェック
				// テンプレートIDが"EKK0171B002"かつエラーフラグが"EA"かつアイテムが"ＩＳＰ認証ＩＤパスワード"の場合
				if ("EKK0171B002".equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg) && "key_isp_ninsho_id_pwd".equals(itemid))
				{
					JFUWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKF0400_TW, REPLACE_CHAR_PWD_ARRAY, ERR_NOW_PWD_ITEM_ID);
					return true;
				}

				// 認証ＩＤ（サービス契約内訳）の存在チェック
				// テンプレートIDが"EKK0171A010"かつエラーフラグが"EA"かつアイテムが"サービス契約内訳"の場合
				if ("EKK0171A010".equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg) && "key_svc_kei_ucwk_no".equals(itemid))
				{
					// システムエラー
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
				}

			}

			// システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// -------- 遷移先画面の指定 --------
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW03902);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW03902);

		return true;
	}

	/**
	 * 単関連チェック処理です。
	 * 
	 * <br>
	 * @param bean サービスフォームBean
	 * @param commonInfoBean 共有フォームBean
	 * @return true
	 */
	private boolean tankanrenCheck(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean)
	{
		String nowPass = bean.sendMessageString(FUW03901SFConst.NOW_NINSHO_ID_PWD, X31CWebConst.DATABEAN_GET_VALUE);
		String chgPass = bean.sendMessageString(FUW03901SFConst.CHG_NINSHO_ID_PWD, X31CWebConst.DATABEAN_GET_VALUE);
		String reChgPass = bean.sendMessageString(FUW03901SFConst.RE_INPUT_CHG_NINSHO_ID_PWD, X31CWebConst.DATABEAN_GET_VALUE);

		// ○WEB変更情報
		X31SDataBeanAccess webChgInfoBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);
		// ○SSO情報
		X31SDataBeanAccess ssoInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.SSO_INFO).getDataBean(0);

		// SSO情報取得
		// 現在の認証IDを取得
		String ssoInfoNinshoId = ssoInfoBean.sendMessageString(CommonInfoCFConst.NINSHO_ID_21, X31CWebConst.DATABEAN_GET_VALUE);

		// ○現顧客情報
		X31SDataBeanAccess genCustKeiInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO).getDataBean(0);
		// ○サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = genCustKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0);
		// ○サービス契約内訳情報
		X31SDataBeanAccess svcKeiUcwkInfoBean = null;

		// ★サービス契約内訳情報(サービス契約情報の子)を取得
		X31SDataBeanAccessArray svcKeiUcwkInfoArray = svcKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_UCWK_INFO);

		for (int k = 0; k < svcKeiUcwkInfoArray.getCount(); k++)
		{
			svcKeiUcwkInfoBean = svcKeiUcwkInfoArray.getDataBean(k);

			// サービス契約内訳.ＩＳＰ認証ＩＤ
			String svcKeiUcwkInfoISPNinshoId =
					svcKeiUcwkInfoBean.sendMessageString(CommonInfoCFConst.ISP_NINSHO_ID_24, X31CWebConst.DATABEAN_GET_VALUE);

			// 同一チェック
			// 現在のパスワードが入力済みの場合
			// 現在のパスワード・サービス契約内訳情報ISP認証ID(※ADSLと兼用)が同一でない場合エラー
			if (ssoInfoNinshoId.equals(svcKeiUcwkInfoISPNinshoId))
			{
				String svcKeiUcwkInfoISPNinshoIdPwd =
						svcKeiUcwkInfoBean.sendMessageString(CommonInfoCFConst.ISP_NINSHO_ID_PWD_24, X31CWebConst.DATABEAN_GET_VALUE);
				if (!svcKeiUcwkInfoISPNinshoIdPwd.equals(nowPass))
				{
					JFUWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKF0400_TW, REPLACE_CHAR_PWD_ARRAY, ERR_NOW_PWD_ITEM_ID);
					return false;
				}
				break;
			}
		}

		// 同一チェック
		// 新しいパスワード・新しいパスワード（再入力）が入力済みの場合
		// 新しいパスワード・新しいパスワード（再入力）が同一でない場合エラー
		if (!chgPass.equals(reChgPass))
		{
			JFUWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKF0400_TW, RE_INPUT_CHG_PWD_KANREN_MSG, ERR_RE_INPUT_CHG_PWD_ITEM_ID);
			return false;
		}

		// パスワード変更チェック
		// 現在のパスワード・新しいパスワードが入力済みの場合、且つ、現在のパスワードと新しいパスワードが同一の場合
		// 現在のパスワード・新しいパスワードが同一の場合エラー
		if (nowPass.equals(chgPass))
		{
			JFUWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKF0270_NW, CHG_PWD_KANREN_MSG, ERR_CHG_PWD_ITEM_ID);
			return false;
		}

		return true;
	}

	/**
	 * マンション区分（有料文言制御用）を判定します。 <BR>
	 * 
	 * @param bean サービスフォームBean
	 * @param commonInfoBean 共有フォームBean
	 * 
	 * @return true:マンション(全戸一括)かつ支払金あり / false:マンション(全戸一括)以外または支払金なし
	 */
	private boolean getMansionDiv(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean)
	{
		// WEB変更情報
		X31SDataBeanAccess webChgInfoBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);
		// 現顧客情報
		X31SDataBeanAccess genCustKeiInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO).getDataBean(0);
		// サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = genCustKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0);

		// 料金グループコード
		String prcGrpCd = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.PRC_GRP_CD_23, X31CWebConst.DATABEAN_GET_VALUE);
		// 加入契約支払方式コード
		String kanyuKeiPayHoshikiCd =
				svcKeiInfoBean.sendMessageString(CommonInfoCFConst.KANYU_KEI_PAY_HOSHIKI_CD_23, X31CWebConst.DATABEAN_GET_VALUE);

		// 有料フラグを取得
		boolean payFlg = bean.sendMessageBoolean(FUW03901SFConst.PAY_FLG, X31CWebConst.DATABEAN_GET_VALUE);

		// マンション(全戸一括)、かつ、支払金がある場合、「true」を設定
		boolean result = JFUStrConst.CD00133_04.equals(prcGrpCd) && JFUStrConst.CD01216_003.equals(kanyuKeiPayHoshikiCd) && payFlg;

		return result;
	}

	/**
	 * 有料フラグ判定（初期費用）処理です。
	 * @param bean
	 * @param outputMap
	 * @return true:初期費用あり / false:初期費用なし
	 */
	@SuppressWarnings("unchecked")
	public boolean chkPayInitialCost(HashMap outputMap)
	{
		boolean res = false;
		HashMap parentMap = null;

		if (outputMap.containsKey(FUSV019201CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV019201CC);
		}

		if (null != parentMap && parentMap.containsKey(EKK0721A010CBSMSG1LIST))
		{
			ArrayList childList = (ArrayList)parentMap.get(EKK0721A010CBSMSG1LIST);

			if (childList != null && childList.size() > 0)
			{
				// 初期費用がある場合
				res = true;
			}
			else
			{
				// 初期費用がない場合
				res = false;
			}
		}

		return res;
	}

}