/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：FUW00127SFLogic
 *   ソースファイル名：FUW00127SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年04月01日
 *＜機能概要＞
 *   eoID認証画面ビューロジックです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/04/01   FJ）        新規作成
 *   v3.00.00    2012/04/25   FJ）池田    ANK-0028-00-00対応
 *   v4.00.00    2012/10/30   FJ）齋藤   【IT1-2012-0001845】オープン、ファミリー会員の申込改善要望取り下げに伴うフロント改修対応
 *   v4.01.00    2012/11/13   FJ) 岩元   「IT2-2012-0001695」WiFi即時開通対応
 *   v4.02.00    2012/11/22   FJ) 大塚   【IT2-2012-0001790】
 *   v4.02.00    2012/12/15   FJ) 佐々木 【PT強化-No.803】FUW00127での「戻る」ボタン表示不備対応
 *   v4.03.00    2012/12/26   FJ) 長沢   【TAI-2012-0000136-171】マスタ−会員のサービス追加導線対応
 *   v5.00.00    2013/02/21   FJ）齋藤   【ANK-1222-00-00】スマートリンク料金シミュレーション対応
 *   v5.01.00    2013/03/13   FJ）岡井   【IT1-2013-0000445】ADSL・登録フラグ対応
 *   v5.02.00    2013/03/13   FJ）岡井   【IT1-2013-0000640】督促ステータス不正チェック対応
 *   v5.03.00    2013/04/08   FJ）大村    障害No.204 AxM連携でのPMP画像読み込み対応(シングルサインオン)
 *   v5.04.00    2013/04/09   FJ）岡井   【内部障害】認証例外対応
 *   v5.05.00    2013/05/30   FJ）岡井   【内部障害】追加不可対象サービスを追加
 *   v5.06.00    2013/08/07   FJ) 近藤   【IT1-2013-0001556】アカウントロック対応
 *   v15.00.00   2015/05/20   FJ）中西   【ANK-2480-00-00】新電力対応
 *   v16.00.00   2015/11/02   FJ) 横山   【ANK-2480-00-00】新電力対応
 *   v25.00.00   2016/06/06   FJ) 西川   【ANK-2798-00-00】eoフロント　戻るボタンを利用した再ログインに伴う改修
 *   v26.00.00   2016/08/16   FJ) 張本   【ANK-2893-00-00】【eo電気】取扱コード暫定対応
 *   v28.00.00   2016/10/12   FJ) 横山   【ANK-3032-00-00】AxM再構築対応
 *   v28.00.01   2016/11/24   FJ) 横山   【ANK-3032-03-00】AxM再構築対応【案件内仕変3:フロントからアクセスするCMPログイン画面URLの変更対応】
 *   v29.00.00   2016/10/31   FJ) 張本   【ANK-2990-00-00】新電力対応Step2
 *   v33.00.00   2017/08/31   FJ) 西川   【ANK-2794-00-00】フロントの督促ST制限強化
 *   v34.00      2017/09/07   FJ) 張本   【ANK-3210-00-00】電気単独対応
 *   v34.01      2017/09/07   FJ) 張本   【IT1-2018-0000009】オープン／ファミリー会員対応
 *   v37.00      2018/02/19   FJ) 美濃原 【ANK-3366-00-00】eo光設備卸対応
 *   v38.00      2018/09/19   FJ) 西川 　【ANK-3508-00-00】パズル認証対応
 **********************************************************************/
package eo.web.webview.FUW00127SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.fujitsu.futurity.common.JSYLogBase;
import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
import com.fujitsu.futurity.web.x00.JCCBusinessException;
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.X31SRuntimeException;
import com.fujitsu.futurity.web.x33.HttpDispatchContext;
import com.fujitsu.futurity.web.x33.X33CUtil;
import com.fujitsu.futurity.web.x33.X33WSessionController;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JCCFrameworkException;
import eo.common.util.JFUCommonUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW00111SF.FUW00111SFLogic;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JFUCapyInterface;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.common.JFUiDANinsho;
import eo.web.webview.mapping.FUSV0227_FUSV0227OPDBMapper;

/**
 *
 * <br>
 *
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW00127SFLogic extends JCCWebBusinessLogic
{

	/** 画面遷移モード（通常遷移） */
	private static final String SCREEN_MODE_NORMAL = "0";

	/** ユースケースID（FUSV0227） */
	private static final String USECASE_ID_FUSV0227 = "FUSV0227";

	/** FUSV022701CC */
	private static final String FUSV022701CC = "FUSV022701CC";
	/** FUSV022702SC */
	private static final String FUSV022702SC = "FUSV022702SC";
	/** FUSV022705SC */
	private static final String FUSV022705SC = "FUSV022705SC";
	/** JFUGetTokusokuInfoCCList */
	private static final String JFUGETTOKUSOKUINFOCCLIST = "JFUGetTokusokuInfoCCList";
	/** EKK0081B519CBSMsg1List */
	private static final String EKK0081B519CBSMSG1LIST = "EKK0081B519CBSMsg1List";
	/** ECK0011A010CBSMsg1List */
	private static final String ECK0011A010CBSG1LIST = "ECK0011A010CBSMsg1List";

	/** tokusoku_stat */
	private static final String TOKUSOKU_STAT = "tokusoku_stat";
	/** prc_grp_cd */
	private static final String PRC_GRP_CD = "prc_grp_cd";
	/** svc_kei_stat */
	private static final String SVC_KEI_STAT = "svc_kei_stat";

	/** マスター会員(内部処理用会員種別) */
	private static final String DUMMY_KIIN_SBT_MASTER = "1";
	/** ファミリー会員(内部処理用会員種別) */
	private static final String DUMMY_KIIN_SBT_FAMILY = "2";
	/** オープン会員(内部処理用会員種別) */
	private static final String DUMMY_KIIN_SBT_OPEN = "3";

	/** 追加申込(申込区分) */
	private static final String MSKM_KBN_ADD = "2";

	/** パズル認証エラーメッセージID */
	private static final String PUZZLE_AUTHERR_MSG_ID = "EKF0400-TW";
	/** 個別エラーメッセージID */
	private static final String AUTHERR_MSG_ID = "EKF0420-TW";
	/** 個別エラー表示部ID */
	private static final String ID_ITEM = "id";
	//** 2016/10/12 ANK-3032-00-00 add start */
	/** 個別エラー表示部pw */
	private static final String PW_ITEM = "pw";
	//** 2016/10/12 ANK-3032-00-00 add end */

	/** アカウントロックフラグON */
	private static final String ADMIN_LOCKOUT_ON = "1";
	/** アカウントロックフラグOFF */
	private static final String ADMIN_LOCKOUT_OFF = "0";
	/** 自画面ID */
	private static final String SCREEN_ID_FUW00127 = "FUW00127";
	/** 契約者タイプコード */
	private static final String KEISHA_TYPE_CD = "keisha_type_cd";

	/** svc_cd */
	private static final String SVC_CD = "svc_cd";

	/** mineoのみフラグ（追加可能サービス契約なし） */
	private static final String MINEO_ONLY_FLG_VALID_NOT_EXISTS = "0";

	/** mineoのみフラグ（mineoサービスのみ存在） */
	private static final String MINEO_ONLY_FLG_MINEO_ONLY = "1";

	/** mineoのみフラグ（mineoサービス、eoサービス共に存在） */
	private static final String MINEO_ONLY_FLG_MINEO_EO = "2";

	/** mineoのみフラグ（eoサービスのみ存在） */
	private static final String MINEO_ONLY_FLG_EO_ONLY = "3";

	/** mineoのみフラグ（電気サービスのみ存在） */
	private static final String MINEO_ONLY_FLG_ELEC_ONLY = "4";

	/** mineoのみフラグ（サービス契約なし） */
	private static final String MINEO_ONLY_FLG_ALL_NOT_EXISTS = "5";

	/** mineoのみフラグ（モバイルサービスのみ存在） */
	private static final String MINEO_ONLY_FLG_MB_ONLY = "6";

	/** eo電気サービス契約状態（サービス契約なし） */
	private static final String EO_ELECTRIC_STA_VALID_NOT_EXISTS = "0";

	/** eo電気サービス契約状態（eo電気サービス単独） */
	private static final String EO_ELECTRIC_STA_ELECTRIC_ONLY = "1";

	//** 2016/10/12 ANK-3032-00-00 add start */
	/** iDA認証 KEY RETURN_CODE */
	private static final String KEY_RETURN_CODE = "RETURN_CODE";

	/** iDA認証 KEY SYSID */
	private static final String KEY_SYSID = "SYSID";

	/** iDA認証 KEY 会員種別 */
	private static final String KEY_KIIN_SHUBT = "KIIN_SHUBT";

	/** iDA認証 KEY TURK_FLG */
	private static final String KEY_TURK_FLG = "TURK_FLG";

	/** iDA認証 KEY SSO_TOKEN */
	private static final String KEY_SSO_TOKEN = "SSO_TOKEN";

	/** Cookies KEY SMSESSION */
	private static final String COOKIES_KEY_SMSESSION = "SMSESSION";

	/** エラーメッセージID EKF0010-TW */
	private static final String ERR_MASSAGE_EKF0010TW = "EKF0010-TW";

	/** エラーメッセージID EKF0160-TW */
	private static final String ERR_MASSAGE_EKF0160TW = "EKF0160-TW";

	/** エラーメッセージID EKF0400-TW */
	private static final String ERR_MASSAGE_EKF0400TW = "EKF0400-TW";

	/** FUdispDefinition取得用キー */
	private static final String KEY_MULT_LOGIN = "multiple_login";

	/** 桁数チェック eoid:最小桁 */
	private static final int EOID_MIN = 4;

	/** 桁数チェック eoid:最大桁 */
	private static final int EOID_MAX = 80;

	/** 桁数チェック パスワード:最小桁 */
	private static final int PASS_MIN = 6;

	/** 桁数チェック パスワード:最大桁 */
	private static final int PASS_MAX = 16;

	/** セッション作成対象会員種別リスト */
	private static final List SESSION_CRE_KIIN_LIST = Arrays.asList(JFUStrConst.CD00039_10, JFUStrConst.CD00039_20);
	//** 2016/10/12 ANK-3032-00-00 add end */

	/** アプリケーションプロパティ　Capy表示モード取得キー */
	private static final String CAPY_DISP_MODE = "CAPY_DISP_MODE";

	/** 業務規制コード FUGKW0579(FUW00127_eoID認証) */
	private static final String WORK_KISEI_CD_FUGKW0579 = "FUGKW0579";

	/**
	 * 初期表示処理
	 *
	 * @return true
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{

		// 画面情報を取得し、サービスフォームBeanに設定
		HashMap<String, Object> hikitugiMap = JCCWebCommon.getScreenInfo(this);
		X31SDataBeanAccess sfBean = getServiceFormBean();
		if (hikitugiMap != null)
		{
			// 【PT強化-No.803】FUW00127での「戻る」ボタン表示不備対応 MOD START
			String executeMethod = (String)hikitugiMap.get(JFUScreenConst.SCREEN_ID_FUW00127);
			if (executeMethod != null && FUW00111SFLogic.EXECUTE_METHOD_EOID.equals(executeMethod))
			{
				// 戻るボタン表示フラグを立てます。
				sfBean.sendMessageString(FUW00127SFConst.BACK_BTN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
			}
		}

		// 申込受付実績登録部品実行
		JFUWebCommon.executeWebMskmUkJskAdd(this);

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// ■eoID認証業務規制フラグの設定
		// 業務規制コード：FUGKW0579（FUW00127_eoID認証）
		if (JFUStrConst.REQUEST_RESTRICTION_FLG_ON.equals(getKiseiFlg(WORK_KISEI_CD_FUGKW0579)))
		{
			// 規制フラグが"1"(規制中)の場合
			DEBUG_LOG.debug("DEBUG： ●FUW00127_eoID認証（初期表示）：業務規制中（FUGKW0579）");

			// eoID認証業務規制フラグを「1:規制有」とする。
			sfBean.sendMessageString(FUW00127SFConst.AUTH_WORK_KISEI_FLG, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00002_1);

			return true;
		}

		// ■ベリサイン表示済フラグの設定
		// WEB新規情報
		X31SDataBeanAccess webNewInfo = commoninfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		// ベリサイン表示済フラグ
		webNewInfo.sendMessageBoolean(CommonInfoCFConst.VERISIGN_DISP_FL_06, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);

		// ■パズル認証表示フラグの設定
		String capyDispMode = JCCWebCommon.getApplicationConst(CAPY_DISP_MODE);

		// 初期設定として、Capyパズル認証表示フラグを「0:非表示」とする。
		sfBean.sendMessageString(FUW00127SFConst.PAZZULE_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00002_0);

		if (JFUStrConst.ON.equals(capyDispMode))
		{
			// Capyパズル画像が表示モードの場合

			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
			DEBUG_LOG.debug("DEBUG： ●FUW00127_eoID認証（初期表示）Capy稼動監視処理【開始】");

			DEBUG_LOG.debug("DEBUG： ●FUW00127_eoID認証（初期表示）Capy稼動監視API処理");

			// ●Capy稼動監視API
			if (JFUCapyInterface.STATUS_RESULT_SUCCESS.equals(JFUWebCommon.getCapyStatusReqRslt(this, "")))
			{
				// Capy稼動監視APIの結果でCapy側が稼動中と判断した場合

				// Capyパズル認証表示フラグを「1:表示」とする。
				sfBean.sendMessageString(FUW00127SFConst.PAZZULE_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00002_1);

			}

			DEBUG_LOG.debug("DEBUG： ●FUW00127_eoID認証（初期表示）Capy稼動監視処理【終了】");
			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
		}

		return true;
	}

	/**
	 * 次へボタン押下時
	 *
	 * @return true
	 * @throws Exception
	 */
	public boolean next() throws Exception
	{

		// サービスフォームBeanのアクセッサーを取得します。
		X31SDataBeanAccess sfBean = getServiceFormBean();
		// 共有フォームBeanのアクセッサーを取得します。
		X31SDataBeanAccess cfBean = getCommonInfoBean();

		// ＷＥＢ新規情報
		X31SDataBeanAccessArray beanNewArr = cfBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		if (beanNewArr.getCount() == 0)
		{
			beanNewArr.addDataBean();
		}
		X31SDataBeanAccess beanNew = beanNewArr.getDataBean(0);

		// ＷＥＢ新規情報.契約者情報
		X31SDataBeanAccessArray beanContractArr = beanNew.getDataBeanArray(CommonInfoCFConst.KEIYAKUSHA_INFO);
		if (beanContractArr.getCount() == 0)
		{
			beanContractArr.addDataBean();
		}
		X31SDataBeanAccess beanContract = beanContractArr.getDataBean(0);

		// ＷＥＢ新規情報.リダイレクト情報
		X31SDataBeanAccessArray beanRedirectArr = beanNew.getDataBeanArray(CommonInfoCFConst.REDIRECT_INFO);
		if (beanRedirectArr.getCount() == 0)
		{
			beanRedirectArr.addDataBean();
		}
		X31SDataBeanAccess beanRedirect = beanRedirectArr.getDataBean(0);

		// ＷＥＢ新規情報.ｅｏモバイル情報取得
		X31SDataBeanAccessArray eoMobileInfoArr = beanNew.getDataBeanArray(CommonInfoCFConst.EOMOBILE);
		if (eoMobileInfoArr.getCount() == 0)
		{
			eoMobileInfoArr.addDataBean();
		}
		X31SDataBeanAccess eoMobileInfoBean = eoMobileInfoArr.getDataBean(0);

		// ●その他情報を取得
		X31SDataBeanAccessArray beanArray3 = beanNew.getDataBeanArray(CommonInfoCFConst.ELSE_INFO);
		if (beanArray3.getCount() == 0)
		{
			beanArray3.addDataBean();
		}
		X31SDataBeanAccess elseInfoBean = beanArray3.getDataBean(0);

		// ●契約サービス情報を取得
		X31SDataBeanAccessArray beanArray4 = beanNew.getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		if (beanArray4.getCount() == 0)
		{
			beanArray4.addDataBean();
		}
		X31SDataBeanAccess keiyakuSvcInfoBean = beanArray4.getDataBean(0);

		//** 2016/10/12 ANK-3032-00-00 add start */
		// アカウントロックフラグ：初期化
		sfBean.sendMessageString(FUW00127SFConst.ADMIN_LOCKOUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, ADMIN_LOCKOUT_OFF);
		//** 2016/10/12 ANK-3032-00-00 add end */

		// サービスフォームBeanより認証用パラメータを取得します。
		String eoid = sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_GET_VALUE);
		String pass = sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_GET_VALUE);

		//** 2016/10/12 ANK-3032-00-00 add start *
		// サービスフォームBeanから取得したパラメータのチェックを行います。
		if (!paramCheck(eoid, pass, sfBean))
		{
			return true;
		}
		//** 2016/10/12 ANK-3032-00-00 add end */

		X33WSessionController sc = X33CUtil.getSession(this.getSessionId());
		HttpServletRequest req = sc.getServletRequest();

		// ■eoID認証業務規制フラグの設定
		// 業務規制コード：FUGKW0579（FUW00127_eoID認証）
		if (JFUStrConst.REQUEST_RESTRICTION_FLG_ON.equals(getKiseiFlg(WORK_KISEI_CD_FUGKW0579)))
		{
			// 規制フラグが"1"(規制中)の場合
			DEBUG_LOG.debug("DEBUG： ●FUW00127_eoID認証（次へ）：業務規制中（FUGKW0579）");

			// eoID認証業務規制フラグを「1:規制有」とする。
			sfBean.sendMessageString(FUW00127SFConst.AUTH_WORK_KISEI_FLG, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00002_1);

			return true;
		}

		// ■パズル認証チェック
		String capyDispMode = JCCWebCommon.getApplicationConst(CAPY_DISP_MODE);

		// 初期設定として、Capyパズル認証表示フラグを「0:非表示」とする。
		sfBean.sendMessageString(FUW00127SFConst.PAZZULE_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00002_0);

		if (JFUStrConst.ON.equals(capyDispMode))
		{
			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
			DEBUG_LOG.debug("DEBUG： ●FUW00127_eoID認証（次へ）パズル認証処理【開始】");

			// Capyパズル画像が表示モードの場合

			DEBUG_LOG.debug("DEBUG： ●FUW00127_eoID認証（次へ）Capy稼動監視API処理");

			// ●Capy稼動監視API
			if (JFUCapyInterface.STATUS_RESULT_SUCCESS.equals(JFUWebCommon.getCapyStatusReqRslt(this, eoid)))
			{
				// Capy稼動監視APIの結果でCapy側が稼動中と判断した場合

				// Capyパズル認証表示フラグを「1:表示」とする。
				sfBean.sendMessageString(FUW00127SFConst.PAZZULE_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00002_1);

				// リクエスト情報取得
				Map<String, Object> reqMap = getRequestParams();

				HashMap<String, String> inMap = new HashMap<String, String>();

				// リクエスト情報の「チャレンジキー」を設定する。
				inMap.put(JFUCapyInterface.VERIFY_REQ_CHALLENGEKEY, (String)reqMap.get(JFUCapyInterface.VERIFY_REQ_CHALLENGEKEY));
				// リクエスト情報の「回答」を設定する。
				inMap.put(JFUCapyInterface.VERIFY_REQ_ANSWER, (String)reqMap.get(JFUCapyInterface.VERIFY_REQ_ANSWER));

				DEBUG_LOG.debug("DEBUG： ●FUW00127_eoID認証（次へ）Capy回答照会API処理");

				// ●Capy回答照会API
				if (!JFUCapyInterface.VERIFY_RESULT_SUCCESS.equals(JFUWebCommon.getCapyVerifyReqRslt(inMap, this, eoid)))
				{
					// Capy回答照会APIの結果が正常終了以外の場合

					// IDとPW欄をクリアし自画面に戻りエラーメッセージ（ログイン情報が正しくありません。）を表示
					sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
					sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);

					JCCWebCommon.setMessageInfo(this, PUZZLE_AUTHERR_MSG_ID, new String[] { "ログイン情報" }, ID_ITEM);

					DEBUG_LOG.debug("DEBUG： パズル認証_NG (自画面に戻りエラーメッセージを表示)");
					DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");

					return true;
				}
			}
			DEBUG_LOG.debug("DEBUG： ●FUW00127_eoID認証（次へ）パズル認証処理【終了】");
			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
		}

		DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
		//** 2016/10/12 ANK-3032-00-00 mod start */
		DEBUG_LOG.debug("DEBUG： ●FUW00127_eoID認証 iDAへの認証要求処理");
		//** 2016/10/12 ANK-3032-00-00 mod end */
		DEBUG_LOG.debug("DEBUG：   ・eoID             ＝【" + eoid + "】");

		//** 2016/10/12 ANK-3032-00-00 add start */
		// 多重ログインフラグ
		boolean multLoginFlg = false;
		// iDA連携（EOID）
		HashMap<String, String> authEoidMap = null;
		//** 2016/10/12 ANK-3032-00-00 add end */
		try
		{
			//** 2016/10/12 ANK-3032-00-00 add start */
			String ssoToken = JFUStrConst.EMPTY;
			// セッションの取得処理
			Cookie[] cookies = req.getCookies();
			// クッキーからSMSESSIONを取得
			for (int i = 0; i < cookies.length; i++)
			{
				if (COOKIES_KEY_SMSESSION.equals(cookies[i].getName()))
				{
					ssoToken = cookies[i].getValue();
					break;
				}
			}
			DEBUG_LOG.debug("DEBUG：   ・SMSESSION ＝【" + ssoToken + "】");
			String sessionSysid = JFUStrConst.EMPTY;
			// SMSESSIONがあれば認証確認処理
			if (!JFUCommonUtil.isNull(ssoToken))
			{
				// iDA連携（SMSESSION）
				HashMap<String, String> authSessionMap = JFUiDANinsho.authConfirmApi(ssoToken, this);
				// 認証確認結果判定
				if (!JFUStrConst.IDA_NINSHO_CD_OK.equals(authSessionMap.get(KEY_RETURN_CODE)))
				{
					// 認証確認NGの場合、IDとPW欄をクリアし自画面に戻りエラーメッセージ（キャッシュ、クッキーが原因のため、多重ログイン扱い）を表示
					sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
					sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);

					sfBean.sendMessageString(FUW00127SFConst.ADMIN_LOCKOUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, ADMIN_LOCKOUT_ON);
					sfBean.sendMessageString(FUW00127SFConst.ADMIN_LOCKOUT_MSG, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDispText(SCREEN_ID_FUW00127, KEY_MULT_LOGIN));

					DEBUG_LOG.debug("DEBUG： 認証確認NG (自画面に戻りエラーメッセージを表示)");
					DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");

					return true;
				}
				sessionSysid = authSessionMap.get(KEY_SYSID);
				if (JFUCommonUtil.isNull(sessionSysid))
				{
					// SYSID未取得の場合、IDとPW欄をクリアし自画面に戻りエラーメッセージ（キャッシュ、クッキーが原因のため、多重ログイン扱い）を表示
					sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
					sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);

					sfBean.sendMessageString(FUW00127SFConst.ADMIN_LOCKOUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, ADMIN_LOCKOUT_ON);
					sfBean.sendMessageString(FUW00127SFConst.ADMIN_LOCKOUT_MSG, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDispText(SCREEN_ID_FUW00127, KEY_MULT_LOGIN));

					DEBUG_LOG.debug("DEBUG： 認証確認SYSID_NG (自画面に戻りエラーメッセージを表示)");
					DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");

					return true;
				}
			}
			authEoidMap = JFUiDANinsho.authenticateApi(this, eoid, pass, super.getClientIPAddress(), true, sessionSysid, SESSION_CRE_KIIN_LIST);
			String eoidSysid = authEoidMap.get(KEY_SYSID);
			if (!JFUCommonUtil.isNull(eoidSysid) && !JFUCommonUtil.isNull(ssoToken))
			{
				if (!eoidSysid.equals(sessionSysid))
				{
					multLoginFlg = true;
				}
			}
			//** 2016/10/12 ANK-3032-00-00 add end */
		}
		catch (JCCFrameworkException fe)
		{
			// 例外が発生した場合、エラー
			DEBUG_LOG.debug("DEBUG： 認証例外エラー 例外情報：" + fe.toString());
			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0004);
		}
		//** 2016/10/12 ANK-3032-00-00 mod start */
		if (JFUStrConst.IDA_NINSHO_CD_HAND_LOCK.equals(authEoidMap.get(KEY_RETURN_CODE))
				|| JFUStrConst.IDA_NINSHO_CD_AUTO_LOCK.equals(authEoidMap.get(KEY_RETURN_CODE)))
		//** 2016/10/12 ANK-3032-00-00 mod end */
		{
			// アカウントロックの場合、IDとPW欄をクリアし自画面に戻りエラーメッセージを表示
			sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.ADMIN_LOCKOUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, ADMIN_LOCKOUT_ON);
			sfBean.sendMessageString(FUW00127SFConst.ADMIN_LOCKOUT_MSG, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDispText(SCREEN_ID_FUW00127, "admin_lockout"));

			DEBUG_LOG.debug("DEBUG： アカウントロックエラー (自画面に戻りエラーメッセージを表示) ");
			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");

			return true;

		}
		//** 2016/10/12 ANK-3032-00-00 mod start */
		else if (multLoginFlg)
		//** 2016/10/12 ANK-3032-00-00 mod end */
		{
			// 多重ログインの場合、IDとPW欄をクリアし自画面に戻りエラーメッセージを表示

			sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);

			sfBean.sendMessageString(FUW00127SFConst.ADMIN_LOCKOUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, ADMIN_LOCKOUT_ON);
			sfBean.sendMessageString(FUW00127SFConst.ADMIN_LOCKOUT_MSG, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDispText(SCREEN_ID_FUW00127, "multiple_login"));

			DEBUG_LOG.debug("DEBUG： FUW00127_eoID認証 多重ログインエラー (自画面に戻りエラーメッセージを表示)");
			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");

			return true;
		}

		// 連携情報取得
		String authStat = null;
		String kiinSbt = null;
		String sysId = null;
		String dummyKiinSbt = null;
		String turkFlg = null;

		//** 2016/10/12 ANK-3032-00-00 mod start */
		// iDA認証 接続設定取得
		String idaConnext = JCMAPLConstMgr.getString(JFUStrConst.IDA_CONNECTION);

		// ●接続有無判別
		if (JFUStrConst.ON.equals(idaConnext))
		{
			// 接続用ロジック
			DEBUG_LOG.debug("DEBUG： ■ 接続用ロジック ■");
			authStat = (String)authEoidMap.get(KEY_RETURN_CODE);
		}
		else
		{
			// 未接続用ロジック
			DEBUG_LOG.debug("DEBUG： ■ 未接続用ロジック ■");
			authStat = (String)authEoidMap.get(KEY_RETURN_CODE);
		}
		//** 2016/10/12 ANK-3032-00-00 mod end */
		//** 2016/10/12 ANK-3032-00-00 mod start */
		// 認証結果判定
		if (!JFUStrConst.IDA_NINSHO_CD_OK.equals(authStat))
		//** 2016/10/12 ANK-3032-00-00 mod end */
		{
			// 認証NGの場合、IDとPW欄をクリアし自画面に戻りエラーメッセージを表示
			sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			JCCWebCommon.setMessageInfo(this, AUTHERR_MSG_ID, new String[] { "eoID", "入力" }, ID_ITEM);

			DEBUG_LOG.debug("DEBUG： 認証NG (自画面に戻りエラーメッセージを表示)");
			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");

			return true;
		}
		//** 2016/10/12 ANK-3032-00-00 add start */
		else if (JFUCommonUtil.isNull(authEoidMap.get(KEY_SYSID)))
		{
			// sysid未取得の場合、IDとPW欄をクリアし自画面に戻りエラーメッセージを表示
			sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			JCCWebCommon.setMessageInfo(this, AUTHERR_MSG_ID, new String[] { "eoID", "入力" }, ID_ITEM);

			DEBUG_LOG.debug("DEBUG： 認証NG (自画面に戻りエラーメッセージを表示)");
			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");

			return true;
		}
		//** 2016/10/12 ANK-3032-00-00 add end */
		//** 2016/10/12 ANK-3032-00-00 mod start */
		// 画面間引き継ぎ情報の生成
		cfBean.sendMessageString(CommonInfoCFConst.SMSESSION_KEY, X31CWebConst.DATABEAN_SET_VALUE, (String)authEoidMap.get(KEY_SSO_TOKEN));
		// SMSESSION
		String smSession = (String)authEoidMap.get(KEY_SSO_TOKEN);
		//** 2016/10/12 ANK-3032-00-00 mod end */

		// ●認証後値設定処理(テスト用・本番用ロジック判別)
		// 障害No66対応：登録フラグ追加
		//** 2016/10/12 ANK-3032-00-00 mod start */
		if (JFUStrConst.ON.equals(idaConnext))
		{
			// 本番用ロジック
			DEBUG_LOG.debug("DEBUG： ■ 認証OK (接続用ロジック) ■");

			kiinSbt = (String)authEoidMap.get(KEY_KIIN_SHUBT);
			sysId = (String)authEoidMap.get(KEY_SYSID);
			turkFlg = (String)authEoidMap.get(KEY_TURK_FLG);
			//** 2016/10/12 ANK-3032-00-00 mod end */

			// 会員種別を内部パラメータに置き換え
			if (JFUStrConst.CD00039_30.equals(kiinSbt))
			{
				// オープン会員
				dummyKiinSbt = DUMMY_KIIN_SBT_OPEN;
			}
			else if (JFUStrConst.CD00039_21.equals(kiinSbt) || JFUStrConst.CD00039_11.equals(kiinSbt))
			{
				// ファミリー会員
				dummyKiinSbt = DUMMY_KIIN_SBT_FAMILY;
			}
			else if (JFUStrConst.CD00039_20.equals(kiinSbt) || JFUStrConst.CD00039_10.equals(kiinSbt))
			{
				// マスター会員
				dummyKiinSbt = DUMMY_KIIN_SBT_MASTER;
			}
		}
		else
		{
			// 未接続用ロジック
			DEBUG_LOG.debug("DEBUG： ■ 認証OK (未接続用ロジック) ■");

			String dummyVal = eoid.substring(0, 4);
			if ("T009".equals(dummyVal))
			{
				// オープン会員
				kiinSbt = JFUStrConst.CD00039_30;
				dummyKiinSbt = DUMMY_KIIN_SBT_OPEN;
				turkFlg = JFUStrConst.TURK_FLG_0;
			}
			else if ("T008".equals(dummyVal))
			{
				// ファミリー会員（法人）
				kiinSbt = JFUStrConst.CD00039_21;
				dummyKiinSbt = DUMMY_KIIN_SBT_FAMILY;
				turkFlg = JFUStrConst.TURK_FLG_0;
			}
			else if ("T007".equals(dummyVal))
			{
				// マスター会員（法人）
				kiinSbt = JFUStrConst.CD00039_20;
				dummyKiinSbt = DUMMY_KIIN_SBT_MASTER;
				turkFlg = JFUStrConst.TURK_FLG_0;
			}
			else if ("T006".equals(dummyVal))
			{
				// ファミリー会員（個人）
				kiinSbt = JFUStrConst.CD00039_11;
				dummyKiinSbt = DUMMY_KIIN_SBT_FAMILY;
				turkFlg = JFUStrConst.TURK_FLG_0;
			}
			else if (eoid.length() > 4 && eoid.contains("T005_") && eoid.split("_").length == 4)
			{
				// 登録フラグ考慮ログイン情報
				kiinSbt = eoid.split("_")[1];
				dummyKiinSbt = eoid.split("_")[2];
				turkFlg = eoid.split("_")[3];
			}
			else
			{
				// マスター会員（個人）
				kiinSbt = JFUStrConst.CD00039_10;
				dummyKiinSbt = DUMMY_KIIN_SBT_MASTER;
				turkFlg = JFUStrConst.TURK_FLG_0;
			}

			// パスワードをSYSIDとして設定
			sysId = pass;
		}

		// ●会員種別判別(個人法人)
		if (JFUStrConst.CD00039_30.equals(kiinSbt))
		{
			// オープン会員
			DEBUG_LOG.debug("DEBUG： ■ 会員種別：オープン会員 ■");
		}
		else if (JFUStrConst.CD00039_11.equals(kiinSbt) || JFUStrConst.CD00039_10.equals(kiinSbt))
		{
			// ファミリー会員（個人） or マスター会員（個人）
			DEBUG_LOG.debug("DEBUG： ■ 会員種別：ファミリー会員（個人） or マスター会員（個人） ■");
			beanNew.sendMessageString(CommonInfoCFConst.KEI_SBT_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00036_1);
		}
		else if (JFUStrConst.CD00039_21.equals(kiinSbt) || JFUStrConst.CD00039_20.equals(kiinSbt))
		{
			// ファミリー会員（法人）or マスター会員（法人）
			DEBUG_LOG.debug("DEBUG： ■ 会員種別：ファミリー会員（法人）or マスター会員（法人） ■");
			beanNew.sendMessageString(CommonInfoCFConst.KEI_SBT_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00036_2);
		}

		// 共有フォームBeanに値を設定
		// 契約者情報.会員種別
		beanContract.sendMessageString(CommonInfoCFConst.KIIN_SBT_09, X31CWebConst.DATABEAN_SET_VALUE, dummyKiinSbt);
		// ｅｏＩＤ
		beanNew.sendMessageString(CommonInfoCFConst.EOID_06, X31CWebConst.DATABEAN_SET_VALUE, eoid);
		// ＳＹＳＩＤ
		beanNew.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_SET_VALUE, sysId);

		// ●サービス呼出処理
		// マッパークラス作成
		FUSV0227_FUSV0227OPDBMapper mapper = new FUSV0227_FUSV0227OPDBMapper();
		// ユースケースIDマップ
		HashMap paramMap = new HashMap();
		// 入力データマップ
		HashMap inputMap = new HashMap();
		// 結果データマップ
		HashMap outputMap = new HashMap();
		// ユースケースIDをセット
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0227);

		// 豆缶（IMRC定義の順序に合わせる事）
		X31SDataBeanAccess[] beans_can = { getCommonInfoBean() };

		// ●上りマッピング
		// マッパを使って豆の缶詰を個別の部品へ渡す手続き
		mapper.setFUSV022701CC(beans_can, inputMap, JPCModelConstant.FUNC_CD_1);
		// お客様一意照会
		mapper.setFUSV022702SC(beans_can, inputMap, JPCModelConstant.FUNC_CD_2, this);
		// 連絡先(コンテンツ用メールアドレス)一覧照会
		mapper.setFUSV022703SC(beans_can, inputMap, JPCModelConstant.FUNC_CD_1);
		// オプションサービス既契約情報一覧照会
		mapper.setFUSV022704SC(beans_can, inputMap, JPCModelConstant.FUNC_CD_1);
		// サービス契約一覧照会（SYSID）3
		mapper.setFUSV022705SC(beans_can, inputMap, JPCModelConstant.FUNC_CD_1);

		// ●サービス呼出
		try
		{
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (X31SRuntimeException ex)
		{
			// システムエラー
			DEBUG_LOG.debug("DEBUG： システムエラー：サービス呼出エラー(次へボタン)");
			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// 共有フォームBeanに値を設定
		// 画面遷移モード
		beanNew.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, SCREEN_MODE_NORMAL);

		// 共有フォームBeanから値を取得
		// ＷＥＢ新規情報.申込回線サービス
		String mskmKsnSvc = beanNew.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06, X31CWebConst.DATABEAN_GET_VALUE);
		// モバイルコース取得
		String mobileCourse = eoMobileInfoBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE);
		// 申込区分
		String mskmKbn = beanNew.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_GET_VALUE);
		// ＷｉＭＡＸＲＯＭ取得　ANK-1467-00-00_UQWiMAX白ロム申込における画面容量制限への対応
		String redWimaxrom = beanRedirect.sendMessageString(CommonInfoCFConst.RED_WIMAXROM_17, X31CWebConst.DATABEAN_GET_VALUE);

		// SCマップ情報取得
		HashMap parentMap = (HashMap)outputMap.get(FUSV022705SC);

		// 明細取得
		ArrayList childList = (ArrayList)parentMap.get(EKK0081B519CBSMSG1LIST);

		// mineoのみフラグ(会員種別処理に引数として渡す)
		// 初期値："5"(サービス契約なし)を設定
		String mineoOnlyFlg = MINEO_ONLY_FLG_ALL_NOT_EXISTS;
		// eo電気サービス契約状態("0"(サービス契約なし)で初期化)
		String eoElectricSta = EO_ELECTRIC_STA_VALID_NOT_EXISTS;
		// その他単独フラグ
		String otherOnlyFlg = JFUStrConst.EMPTY;

		// mineoのみフラグの初期化
		if (childList != null && !childList.isEmpty())
		{
			// 有効なサービス契約の料金グループコードのSetを作成
			Set<String> validPrcGrpCdSet = new LinkedHashSet<String>();
			// 有効なサービス契約のサービスコードのSetを作成
			Set<String> validSvcCdSet = new LinkedHashSet<String>();
			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				// 料金グループコード
				String prcGrpCd = (String)childMap.get(PRC_GRP_CD);
				// サービスコード
				String svcCd = (String)childMap.get(SVC_CD);
				// サービス契約ステータス
				String svcKeiStat = (String)childMap.get(SVC_KEI_STAT);

				// サービス契約ステータスにより分岐
				if (!(JFUStrConst.CD00037_910.equals(svcKeiStat)) && !(JFUStrConst.CD00037_920.equals(svcKeiStat)))
				{
					// サービス契約ステータスが"910"(解約済)、"920"(キャンセル済)以外の場合、有効な料金グループコードとして保持
					validPrcGrpCdSet.add(prcGrpCd);
					// サービス契約ステータスが"910"(解約済)、"920"(キャンセル済)以外の場合、有効なサービスコードとして保持
					validSvcCdSet.add(svcCd);
				}
			}

			if (validSvcCdSet.size() == 1 && validSvcCdSet.contains(JFUStrConst.CD00130_04))
			{
				// サービスコードが"04"(ホスティングサービス)のみの場合、"5"(サービス契約なし)を設定
				mineoOnlyFlg = MINEO_ONLY_FLG_ALL_NOT_EXISTS;
			}
			else
			{
				// その他の場合、"0"(追加可能サービス契約なし)を設定
				mineoOnlyFlg = MINEO_ONLY_FLG_VALID_NOT_EXISTS;
			}

			// mineoサービス契約存在判定
			if (validPrcGrpCdSet.contains(JFUStrConst.CD00133_51))
			{
				// mineoサービス契約が存在する場合、"1"(mineoサービスのみ存在)を設定
				mineoOnlyFlg = MINEO_ONLY_FLG_MINEO_ONLY;
			}

			// mineoサービス契約以外存在判定
			if (validPrcGrpCdSet.contains(JFUStrConst.CD00133_02) || validPrcGrpCdSet.contains(JFUStrConst.CD00133_03)
					|| validPrcGrpCdSet.contains(JFUStrConst.CD00133_04) || validPrcGrpCdSet.contains(JFUStrConst.CD00133_07)
					|| validPrcGrpCdSet.contains(JFUStrConst.CD00133_08) || validPrcGrpCdSet.contains(JFUStrConst.CD00133_09)
					|| validPrcGrpCdSet.contains(JFUStrConst.CD00133_10) || validPrcGrpCdSet.contains(JFUStrConst.CD00133_11)
					|| validPrcGrpCdSet.contains(JFUStrConst.CD00133_12) || validPrcGrpCdSet.contains(JFUStrConst.CD00133_13))
			{
				// 下記の料金グループコードが存在する場合
				// "02"(eo光ネットホームタイプ)、"03"(eo光ネットメゾンタイプ)、"04"(eo光ネットマンションタイプ)
				// "07"(eoモバイル(Wi-Fi))、"08"(eoモバイル(EM))、"09"(eoモバイル(UQ-WiMAX))、"10"(eo光電話)
				// "11"(eo光テレビ(K-CAT))、"12"(eo光テレビ(KCN))、"13"(eo光テレビ(再送信))

				// mineoサービス契約存在状態で分岐
				if (validPrcGrpCdSet.contains(JFUStrConst.CD00133_51))
				{

					// mineoサービス契約が存在する場合、"2"(mineoサービス、eoサービス共に存在)を設定
					mineoOnlyFlg = MINEO_ONLY_FLG_MINEO_EO;
				}
				else
				{

					// mineoサービス契約が存在しない場合、"3"(eoサービスのみ存在)を設定
					mineoOnlyFlg = MINEO_ONLY_FLG_EO_ONLY;
				}
			}

			// eo電気サービス契約のみ存在判定 電気用のコードに変更
			if (validPrcGrpCdSet.size() == 1 && validPrcGrpCdSet.contains(JFUStrConst.CD00133_17))
			{
				eoElectricSta = EO_ELECTRIC_STA_ELECTRIC_ONLY;
			}
			// eo電気サービス、ホスティング契約のみ存在判定 電気用のコードに変更
			if (validPrcGrpCdSet.size() == 2 && validPrcGrpCdSet.contains(JFUStrConst.CD00133_17)
					&& validPrcGrpCdSet.contains(JFUStrConst.CD00133_14))
			{
				eoElectricSta = EO_ELECTRIC_STA_ELECTRIC_ONLY;
			}
			// eo電気サービス契約がある場合
			if (validPrcGrpCdSet.contains(JFUStrConst.CD00133_17))
			{
				keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.ELEC_MSKM_UM_10, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00002_1);
			}

			// 電気サービス存在判定
			if (validPrcGrpCdSet.contains(JFUStrConst.CD00133_17))
			{
				// "4"(電気サービスのみ存在)を設定
				otherOnlyFlg = MINEO_ONLY_FLG_ELEC_ONLY;
			}
			// モバイルサービス存在判定
			if (validPrcGrpCdSet.contains(JFUStrConst.CD00133_07) || validPrcGrpCdSet.contains(JFUStrConst.CD00133_08)
					|| validPrcGrpCdSet.contains(JFUStrConst.CD00133_09))
			{
				// "6"(モバイルサービスのみ存在)を設定
				otherOnlyFlg = MINEO_ONLY_FLG_MB_ONLY;
			}
			// eo光サービス存在判定
			if (validPrcGrpCdSet.contains(JFUStrConst.CD00133_02) || validPrcGrpCdSet.contains(JFUStrConst.CD00133_03)
					|| validPrcGrpCdSet.contains(JFUStrConst.CD00133_04) || validPrcGrpCdSet.contains(JFUStrConst.CD00133_10)
					|| validPrcGrpCdSet.contains(JFUStrConst.CD00133_11) || validPrcGrpCdSet.contains(JFUStrConst.CD00133_12)
					|| validPrcGrpCdSet.contains(JFUStrConst.CD00133_13))
			{
				otherOnlyFlg = JFUStrConst.EMPTY;
			}
		}

		// ●会員種別処理
		if (JFUStrConst.CD00039_10.equals(kiinSbt) || JFUStrConst.CD00039_20.equals(kiinSbt))
		{
			// マスター会員(個人・法人)
			runMasterMember(outputMap, cfBean, mobileCourse, mskmKbn, mskmKsnSvc, redWimaxrom, turkFlg, mineoOnlyFlg, elseInfoBean, beanNew, eoElectricSta, otherOnlyFlg);
		}
		else
		{
			// 上記以外の場合、回線無しエラー画面に遷移
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00160);
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00160);
		}

		// ●オプションサービス既契約情報一覧照会下りマッピング
		mapper.getFUSV022704SC(beans_can, outputMap);

		// SCマップ情報取得
		HashMap pMap = (HashMap)outputMap.get(FUSV022702SC);

		if (isNullForList((ArrayList)pMap.get(ECK0011A010CBSG1LIST)))
		{
			// 上記以外の場合、回線無しエラー画面に遷移
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00127);
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00127);

			// 認証NGの場合、IDとPW欄をクリアし自画面に戻りエラーメッセージを表示
			sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			JCCWebCommon.setMessageInfo(this, AUTHERR_MSG_ID, new String[] { "eoID", "入力" }, ID_ITEM);

			DEBUG_LOG.debug("DEBUG： 認証NG (自画面に戻りエラーメッセージを表示)");
			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");

			return true;
		}

		// ■設備卸チェック
		JFUWebCommon.checkOrosi(this);

		// 契約種別を取得
		ArrayList cList = (ArrayList)pMap.get(ECK0011A010CBSG1LIST);
		String keiSbt;
		for (int i = 0; i < cList.size(); i++)
		{
			HashMap childMap = (HashMap)cList.get(0);
			keiSbt = (String)childMap.get(KEISHA_TYPE_CD);
		}

		// 追加
		beanNew.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_SET_VALUE, MSKM_KBN_ADD);

		DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");

		return true;
	}

	/**
	 * 戻るボタン押下時
	 *
	 * @return true
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{

		// 共有フォームBeanのアクセッサーを取得します。
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ＷＥＢ新規情報
		X31SDataBeanAccessArray web_new_info = commoninfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		if (web_new_info.getCount() == 0)
		{
			web_new_info.addDataBean();
		}
		X31SDataBeanAccess web_new_infobean = web_new_info.getDataBean(0);

		// 遷移情報を設定します。
		web_new_infobean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, SCREEN_MODE_NORMAL);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00111);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00111);

		return true;
	}

	/**
	 * 次へボタン押下時のマスター会員処理です。
	 *
	 * <br>
	 * @param outputMap サービス返却マップ
	 * @param cfBean 共有フォームBean
	 * @param mobileCourse モバイルコース
	 * @param mskmKbn 申込区分
	 * @param mskmKsnSvc 申込サービス
	 * @param redWimaxrom WiMAXROM
	 * @param turkFlg 登録フラグ
	 * @param otherOnlyFlg その他単独フラグ
	 */
	private void runMasterMember(HashMap outputMap, X31SDataBeanAccess cfBean, String mobileCourse, String mskmKbn, String mskmKsnSvc,
			String redWimaxrom, String turkFlg, String mineoOnlyFlg, X31SDataBeanAccess elseInfoBean, X31SDataBeanAccess beanNew,
			String eoElectricSta, String otherOnlyFlg)
	{
		if (JFUStrConst.TURK_FLG_0.equals(turkFlg))
		{
			// 登録フラグが本登録の場合
			DEBUG_LOG.debug("DEBUG： ■会員情報：マスター会員＆本登録");

			// ●督促状態チェック
			if (!chkTokusoku(outputMap))
			{
				// 督促状態エラー

				DEBUG_LOG.debug("DEBUG： マスター会員：督促状態エラー ");
				DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0104);
			}

			cfBean.sendMessageString(CommonInfoCFConst.BEFORE_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00127);

			// ●遷移先設定

			// mineo契約判断処理
			// サービス契約無し
			if (MINEO_ONLY_FLG_ALL_NOT_EXISTS.equals(mineoOnlyFlg))
			{
				// サービス契約なし

				// システムエラー
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
			}
			else if (MINEO_ONLY_FLG_VALID_NOT_EXISTS.equals(mineoOnlyFlg) && EO_ELECTRIC_STA_VALID_NOT_EXISTS.equals(eoElectricSta))
			{
				// システムエラー "0113"(追加不可エラー)を設定
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0113);
			}
			else if (!JFUStrConst.EMPTY.equals(otherOnlyFlg))
			{
				// モバイル単独または電気単独の場合

				// 手続内容確認画面へ遷移
				cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00103);
				cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00103);
				// 共有フォームBean.新規情報.mineo単独フラグにその他単独フラグを設定
				beanNew.sendMessageString(CommonInfoCFConst.MINEO_ONLY_FLG_06, X31CWebConst.DATABEAN_SET_VALUE, otherOnlyFlg);
			}
			else if (MINEO_ONLY_FLG_MINEO_ONLY.equals(mineoOnlyFlg))
			{
				// mineoサービスのみ存在

				if (JFUStrConst.MOBILE_COURSE_WIFI.equals(mobileCourse))
				{
					// 共有フォームBean.eoモバイル.モバイルコースが"1"(WiFi)の場合
					if (JFUStrConst.MSKM_KBN_ADD.equals(mskmKbn))
					{
						// 共有フォームBean.ＷＥＢ新規情報.申込区分が"2"(追加)の場合
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00123);
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00123);
					}
					else
					{
						// 共有フォームBean.ＷＥＢ新規情報.申込区分が"2"(追加)以外の場合
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00159);
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00159);
					}
				}
				else if (JFUStrConst.MSKM_KSN_SVC_MOBILE.equals(mskmKsnSvc))
				{

					if (JFUStrConst.WIMAXROM_WHITE.equals(redWimaxrom))
					{
						// ANK-1467-00-00_UQWiMAX白ロム申込における画面容量制限への対応

						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00161);
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00161);
					}
					else
					{
						// 白ロム遷移以外の場合

						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00123);
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00123);
					}
				}
				else
				{
					// 手続内容確認画面へ遷移
					cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00103);
					cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00103);
					// 共有フォームBean.新規情報.mineo単独フラグにmineo単独フラグを設定
					beanNew.sendMessageString(CommonInfoCFConst.MINEO_ONLY_FLG_06, X31CWebConst.DATABEAN_SET_VALUE, MINEO_ONLY_FLG_MINEO_ONLY);

				}
			}
			else if (MINEO_ONLY_FLG_MINEO_EO.equals(mineoOnlyFlg) || MINEO_ONLY_FLG_EO_ONLY.equals(mineoOnlyFlg))
			{
				// mineoサービスが存在し、かつeoサービスも存在する。もしくは、eoサービスのみ存在

				if (JFUStrConst.MOBILE_COURSE_WIFI.equals(mobileCourse))
				{
					// 共有フォームBean.eoモバイル.モバイルコースが"1"(WiFi)の場合
					if (JFUStrConst.MSKM_KBN_ADD.equals(mskmKbn))
					{
						// 共有フォームBean.ＷＥＢ新規情報.申込区分が"2"(追加)の場合
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00103);
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00103);
					}
					else
					{
						// 共有フォームBean.ＷＥＢ新規情報.申込区分が"2"(追加)以外の場合
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00159);
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00159);
					}
				}
				else if (JFUStrConst.MSKM_KSN_SVC_MOBILE.equals(mskmKsnSvc))
				{
					if (JFUStrConst.WIMAXROM_WHITE.equals(redWimaxrom))
					{
						// ANK-1467-00-00_UQWiMAX白ロム申込における画面容量制限への対応
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00161);
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00161);
					}
					else
					{
						// 白ロム遷移以外の場合
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00123);
						cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00123);
					}
				}
				else
				{
					// 上記以外は手続内容確認画面に遷移
					cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00103);
					cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00103);
				}
			}
			else if (JFUStrConst.TURK_FLG_1.equals(turkFlg))
			{
				// マスター会員で登録フラグが仮登録の場合、共通エラー画面へ遷移
				DEBUG_LOG.debug("DEBUG： ■会員情報：マスター会員＆仮登録　仮登録エラー");
				DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0114);
			}
			else if (JFUStrConst.TURK_FLG_2.equals(turkFlg))
			{
				// マスター会員で登録フラグが未移行の場合、共通エラー画面へ遷移
				DEBUG_LOG.debug("DEBUG： ■会員情報：マスター会員＆未移行　未移行エラー");
				DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0115);
			}
			else
			{
				// マスター会員で登録フラグが該当なしの場合、共通エラー画面へ遷移
				DEBUG_LOG.debug("DEBUG： ■会員情報：マスター会員＆登録フラグ該当なし　システムエラー");
				DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
			}
		}
	}

	/**
	 * マスター会員時の督促状態チェックを実施します。
	 *
	 * <br>
	 * @param outputMap アウトマップ
	 * @return OK:true / NG:false
	 */
	private boolean chkTokusoku(HashMap outputMap)
	{
		// ■共有フォームBean.ＷＥＢ新規情報.ｅｏ電気申込可能督促フラグの設定
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		// WEB新規情報
		X31SDataBeanAccess webNewInfo = commoninfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		// 督促フラグ(可)
		webNewInfo.sendMessageString(CommonInfoCFConst.ELEC_MSKM_TKSK_FLG_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.ELEC_TKSK_KA);

		if (isNullForMap(outputMap))
		{
			// 督促情報が存在しない場合、チェックを実施せず、OKとする
			DEBUG_LOG.debug("DEBUG： ■督促情報無し　結果：OK");
			return true;
		}
		if (isNullForMap((HashMap)outputMap.get(FUSV022701CC)))
		{
			// 督促情報が存在しない場合、チェックを実施せず、OKとする
			DEBUG_LOG.debug("DEBUG： ■督促情報無し　結果：OK");
			return true;
		}

		// SCマップ取得
		HashMap parentMap = (HashMap)outputMap.get(FUSV022701CC);

		if (isNullForList((ArrayList)parentMap.get(JFUGETTOKUSOKUINFOCCLIST)))
		{
			// 督促情報が存在しない場合、チェックを実施せず、OKとする
			DEBUG_LOG.debug("DEBUG： ■督促情報無し　結果：OK");
			return true;
		}

		// 明細取得
		ArrayList childList = (ArrayList)parentMap.get(JFUGETTOKUSOKUINFOCCLIST);
		// 督促ステータス閾値
		int threshold = Integer.parseInt(JCCWebCommon.getApplicationConst(JFUStrConst.THRESHOLD_TOKUSOKU_STAT));

		// ｅｏ電気申込不可督促ステータス閾値
		int elecTkskValue = Integer.parseInt(JCCWebCommon.getApplicationConst(JFUStrConst.EOELEC_TOKUSOKU_STAT));
		// 電気督促最大値
		int elecTkskMaxValue = 0;

		for (int i = 0; i < childList.size(); i++)
		{
			HashMap childMap = (HashMap)childList.get(i);
			String tokusokuStat = (String)childMap.get(TOKUSOKU_STAT);

			if (JFUWebCommon.isNull(tokusokuStat))
			{
				// 空の場合、次の繰り返し処理へ
				DEBUG_LOG.debug("DEBUG： ■" + String.valueOf(i + 1) + "件目データ：督促ステータスNULL　正常");
				continue;
			}

			// 数値に変換
			int intTokusokuStat = Integer.parseInt(tokusokuStat);

			if (intTokusokuStat >= threshold)
			{
				// SYSID配下の全請求先の督促スタータスに閾値以上の督促ステータスが一つでも含まれる場合

				DEBUG_LOG.debug("DEBUG： ■SYSID配下の請求先の督促スタータスに閾値以上の督促ステータス含まれるため、NG");
				return false;
			}

			if (intTokusokuStat >= elecTkskMaxValue)
			{
				elecTkskMaxValue = intTokusokuStat;
			}
		}

		if (elecTkskMaxValue >= elecTkskValue)
		{
			// 督促フラグ(不可)
			webNewInfo.sendMessageString(CommonInfoCFConst.ELEC_MSKM_TKSK_FLG_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.ELEC_TKSK_FUKA);

		}

		return true;
	}

	/**
	 * マップがNULLであるか判定します。
	 *
	 * <br>
	 * @param map マップ
	 * @return 結果
	 */
	private boolean isNullForMap(Map map)
	{
		return map == null || map.size() == 0;
	}

	/**
	 * リストがNULLであるか判定します。
	 *
	 * <br>
	 * @param map マップ
	 * @return 結果
	 */
	private boolean isNullForList(ArrayList list)
	{
		return list == null || list.size() == 0;
	}

	//** 2016/10/12 ANK-3032-00-00 mod start */

	/**
	 * Cookieの生成処理を行う
	 * <br>
	 * @param sessionId Viewロジックインスタンス
	 * @param smsession
	 */
	private static void createCookie(String sessionId, String smsession)
	{
		// Cookieオブジェクトの生成
		Cookie cookie = new Cookie(JFUStrConst.IDA_NINSHO_COOKIES_KEY, smsession);

		// アプリケーションプロパティファイルよりCookieの有効ドメインを取得する。
		String idaCookieDomain = JCCWebCommon.getApplicationConst(JFUStrConst.KEY_IDA_COOKIE_DOMAIN);
		// アプリケーションプロパティファイルの必須チェック
		if (idaCookieDomain == null)
		{
			throw new JCCFrameworkException("APLConst.propertiesにIDA_COOKIE_DOMAINが設定されていません。");
		}
		// Cookieへ属性を設定する。
		cookie.setDomain(idaCookieDomain); // Cookieの有効ドメインを設定
		// アプリケーションプロパティファイルよりCookieの有効パスを取得する。
		String idaCookiePath = JCCWebCommon.getApplicationConst(JFUStrConst.KEY_IDA_COOKIE_PATH);
		// アプリケーションプロパティファイルの必須チェック
		if (idaCookiePath == null)
		{
			throw new JCCFrameworkException("APLConst.propertiesにIDA_COOKIE_PATHが設定されていません。");
		}
		// Cookieへ属性を設定する。
		cookie.setPath(idaCookiePath); // Cookieの有効パスを設定
		// アプリケーションプロパティファイルよりCookieの最長存続期間を取得する。
		String idaCookieAge = JCCWebCommon.getApplicationConst(JFUStrConst.KEY_IDA_COOKIE_AGE);
		// アプリケーションプロパティファイルの必須チェック
		if (idaCookieAge == null)
		{
			throw new JCCFrameworkException("APLConst.propertiesにIDA_COOKIE_AGEEが設定されていません。");
		}
		// Cookieへ属性を設定する。
		cookie.setMaxAge(Integer.parseInt(idaCookieAge)); // Cookieの最長存続期間を設定
		// アプリケーションプロパティファイルよりCookieのsecure属性を取得する。
		String idaCookieSecure = JCCWebCommon.getApplicationConst(JFUStrConst.KEYIDA_COOKIE_SECURE);
		// アプリケーションプロパティファイルの必須チェック
		if (idaCookieSecure == null)
		{
			throw new JCCFrameworkException("APLConst.propertiesにIDA_COOKIE_SECUREが設定されていません。");
		}
		// Cookieへ属性を設定する。
		cookie.setSecure(Boolean.parseBoolean(idaCookieSecure)); // Cookieのsecure属性を設定

		// HttpServletResponseオブジェクトの取得
		X33WSessionController sc = X33CUtil.getSession(sessionId);
		HttpServletResponse res = ((HttpDispatchContext)sc.getContext()).getServletResponse();
		// Cookieのセット
		res.addCookie(cookie);

	}

	//** 2016/10/12 ANK-3032-00-00 mod end */
	//** 2016/10/12 ANK-3032-00-00 add start */

	/**
	 * eoid、パスワードのチェックを行う
	 * <br>
	 * @param eoid eoid
	 * @param password パスワード
	 * @param sfBean サービスフォームBean
	 * @return OK:true / NG:false
	 */
	private boolean paramCheck(String eoid, String password, X31SDataBeanAccess sfBean)
	{

		boolean idPassChrckFlg = true;

		// eoid 必須チェック
		if (JFUCommonUtil.isNull(eoid))
		{
			// 認証NGの場合、IDとPW欄をクリアし自画面に戻りエラーメッセージを表示
			sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			JCCWebCommon.setMessageInfo(this, ERR_MASSAGE_EKF0010TW, new String[] { "eoID" }, ID_ITEM);

			DEBUG_LOG.debug("DEBUG： eoid 必須チェックNG (自画面に戻りエラーメッセージを表示)");

			idPassChrckFlg = false;
		}

		// eoid 桁数チェック
		else if (!(EOID_MIN <= eoid.length() && EOID_MAX >= eoid.length()))
		{
			// 認証NGの場合、IDとPW欄をクリアし自画面に戻りエラーメッセージを表示
			sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			JCCWebCommon.setMessageInfo(this, ERR_MASSAGE_EKF0400TW, new String[] { "eoIDの桁数" }, ID_ITEM);

			DEBUG_LOG.debug("DEBUG： eoid 桁数チェックNG (自画面に戻りエラーメッセージを表示)");

			idPassChrckFlg = false;
		}

		// eoid ドメインチェック
		else if (!JFUCommonUtil.chkHankakuEisuji2(eoid))
		{
			// 認証NGの場合、IDとPW欄をクリアし自画面に戻りエラーメッセージを表示
			sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			JCCWebCommon.setMessageInfo(this, ERR_MASSAGE_EKF0160TW, new String[] { "eoID" }, ID_ITEM);

			DEBUG_LOG.debug("DEBUG： eoid ドメインチェックNG (自画面に戻りエラーメッセージを表示)");

			idPassChrckFlg = false;
		}

		// パスワード 必須チェック
		if (JFUCommonUtil.isNull(password))
		{
			// 認証NGの場合、IDとPW欄をクリアし自画面に戻りエラーメッセージを表示
			sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			JCCWebCommon.setMessageInfo(this, ERR_MASSAGE_EKF0010TW, new String[] { "パスワード" }, PW_ITEM);

			DEBUG_LOG.debug("DEBUG： パスワード 必須チェックNG (自画面に戻りエラーメッセージを表示)");

			idPassChrckFlg = false;
		}

		// パスワード 桁数チェック
		else if (!(PASS_MIN <= password.length() && PASS_MAX >= password.length()))
		{
			// 認証NGの場合、IDとPW欄をクリアし自画面に戻りエラーメッセージを表示
			sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			JCCWebCommon.setMessageInfo(this, ERR_MASSAGE_EKF0400TW, new String[] { "パスワードの桁数" }, PW_ITEM);

			DEBUG_LOG.debug("DEBUG： パスワード 桁数チェックNG (自画面に戻りエラーメッセージを表示)");

			idPassChrckFlg = false;
		}

		// パスワード ドメインチェック
		else if (!JFUCommonUtil.chkHankakuEisuji2(password))
		{
			// 認証NGの場合、IDとPW欄をクリアし自画面に戻りエラーメッセージを表示
			sfBean.sendMessageString(FUW00127SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			sfBean.sendMessageString(FUW00127SFConst.PSWD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			JCCWebCommon.setMessageInfo(this, ERR_MASSAGE_EKF0160TW, new String[] { "パスワード" }, PW_ITEM);

			DEBUG_LOG.debug("DEBUG： パスワード ドメインチェックNG (自画面に戻りエラーメッセージを表示)");

			idPassChrckFlg = false;

		}
		if (!idPassChrckFlg)
		{
			DEBUG_LOG.debug("DEBUG：※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
		}

		return idPassChrckFlg;
	}

	//** 2016/10/12 ANK-3032-00-00 add end */

	/**
	 * 規制フラグ取得
	 * <br>
	 * @param work_kisei_cd		業務規制コード
	 * @return	業務規制コードが一致する業務規制一覧照会明細から取得した規制フラグ(一致する明細が存在しない場合はnull)
	 */
	private String getKiseiFlg(String work_kisei_cd)
	{
		// 規制フラグ
		String kisei_flg = null;

		// 業務規制情報取得
		HashMap<String, Object> workKiseiInfoMap = JCCWebCommon.getBusinessControlMap(this);

		// 業務規制情報マップから、規制情報を取得
		HashMap<String, Object> workKiseiMap = (HashMap<String, Object>)workKiseiInfoMap.get(work_kisei_cd);

		if (!JFUWebCommon.isNull(workKiseiMap))
		{
			// 業務規制フラグの取得
			kisei_flg = (String)workKiseiMap.get(JFUStrConst.KISEI_FLG);
		}
		return kisei_flg;
	}

	/**
	 * ビジネスログへの出力処理
	 *
	 * @param msg ログ情報
	 * @param cls クラス
	 */
	@SuppressWarnings("unchecked")
	public static void outputBusLog(String msg, Class cls)
	{
		JSYwebLog.println(JSYLogBase.EXECUTION, cls, msg, "CS0003I", null, null);
	}

}
