/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：eo光ネット通信状況照会ビューロジック
*	ソースファイル名：FUW07901SFLogic.java
*	作成者			：富士通
*	日付			：2011年08月22日
*＜機能概要＞
*	eo光ネット通信状況照会ビューロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/22	FJ）北島	新規作成
*   v3.00		2012/04/19	FJ) 谷本	【ANK-0050-00-00】 FTTH従量制課金(STEP1)
*   v37.00      2018/02/19  FJ) 美濃原  【ANK-3366-00-00】 eo光設備卸対応
*	v54.00.00	2021/08/31	FJ) 西川 	【ANK-4132-00-00】高リスク情報表示Web画面の2段階認証チェック機能追加
*
**********************************************************************/
package eo.web.webview.FUW07901SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x00.JCCBusinessException;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JFUCommonUtil;
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.FUSV0040_FUSV0040OPDBMapper;

/**
 * eo光ネット通信状況照会ビューロジッククラスです。<p>
 * <br/>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW07901SFLogic extends JCCWebBusinessLogic
{
	/** サービスユースケースID：eo光ネット通信状況照会 */
	private static final String USECASE_ID_FUSV0040 = "FUSV0040";

	/** フロント用画面表示定義ファイル：検索月数 */
	private static final String SEARCH_MON_CNT = "search_mon_cnt";

	/**
	 * 初期表示処理
	 * <br/>
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- init_FUW07901SFLogic Start -----");

		// ■設備卸チェック
		JFUWebCommon.checkOrosi(this);

		// 2段階認証チェック
		if (!JFUWebCommon.isSetAuthTwoStep(this))
		{
			// 2段階認証を促すCMP側共通エラー画面にリダイレクト
			return true;
		}

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// サービスフォームBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// -------------------------------------------------
		// 共有フォームBean情報の取得
		// -------------------------------------------------
		// SSO情報
		X31SDataBeanAccess ssoInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SSO_INFO);

		// -------------------------------------------------
		// 対象年月の設定
		// -------------------------------------------------
		// フロント用画面表示定義ファイルから対象年月を取得
		// サービスＩＦが動的に取得できないため、ここの取得はあまり意味がないです。
		bean.sendMessageString(FUW07901SFConst.SEARCH_MON_CNT, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07901, SEARCH_MON_CNT));

		// -------------------------------------------------
		// サービス呼出処理
		// -------------------------------------------------
		// ホームページURL名取得申込（初期表示）サービスの呼び出しを行う。
		X31SDataBeanAccess[] paramBean = { bean, ssoInfoBean };

		// ユースケースID格納用マップを生成。
		HashMap<String, String> paramMap = new HashMap<String, String>(16);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0040);

		FUSV0040_FUSV0040OPDBMapper mapper = new FUSV0040_FUSV0040OPDBMapper();

		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// SC
		// 1.通信量情報合計一覧照会
		dataMap = mapper.setFUSV004001SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 2.通信量情報合計一覧照会
		dataMap = mapper.setFUSV004002SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 3.通信量情報合計一覧照会
		dataMap = mapper.setFUSV004003SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 4.通信料検索情報照会
		dataMap = mapper.setFUSV004004SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		try
		{
			// サービスの呼び出しを行う。
			invokeService(paramMap, dataMap, outputMap);

		}
		catch (JCCWebServiceException se)
		{
			// システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// ●サービス処理結果の取得
		// 1.通信量情報合計一覧照会
		bean = mapper.getFUSV004001SC(bean, outputMap);
		// 2.通信量情報合計一覧照会
		bean = mapper.getFUSV004002SC(bean, outputMap);
		// 3.通信量情報合計一覧照会
		bean = mapper.getFUSV004003SC(bean, outputMap);
		// 4.通信量検索情報照会
		bean = mapper.getFUSV004004SC(bean, outputMap);

		// 画面情報の編集
		// 最終データ取得日がNULLの場合は、運用日を設定する。
		if (JFUCommonUtil.isNull((bean.sendMessageString(FUW07901SFConst.LAST_DATA_STKUYMD, X31CWebConst.DATABEAN_GET_VALUE))))
		{
			bean.sendMessageString(FUW07901SFConst.LAST_DATA_STKUYMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));
		}

		// -------------------------------------------------
		// 遷移先画面ID、画面名の設定
		// -------------------------------------------------
		// 遷移先画面IDを設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		// 遷移先画面名を設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07901);

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- init_FUW07901SFLogic End -----");
		return true;
	}

}
