/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：TUW01901SFLogic
*	ソースファイル名：TUW01901SFLogic.java
*	作成者			：FJ
*	日付			：2011年06月13日
*＜機能概要＞
*	TUW01901のビューロジック
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2011/06/13	FJ)宮本		新規作成
*	v3.00.01	2012/06/13	FJ)宮本		TAI-2012-0000054
*	v4.00.00	2012/06/29	FJ)宮本		IT1-2012-0000871
*	v48.00.00	2020/01/21	FJ)西窪		ANK-3507-00-00		TDIS連携の自動化対応
*
********************************************************************************/

package eo.web.webview.TUW01901SF;

import java.util.HashMap;

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 eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.constant.JTUStrConst;
import eo.common.util.JPCDateUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JTUWebCommon;
import eo.web.webview.common.JTUScreenConst;
import eo.web.webview.mapping.TUSV0058_TUSV0058OPDBMapper;
import eo.web.webview.mapping.TUSV0059_TUSV0059OPDBMapper;
import eo.web.webview.mapping.TUSV0060_TUSV0060OPDBMapper;

/**
 * TUW01901のビューロジック
 * @author FJ
 *
 */
public class TUW01901SFLogic extends JCCWebBusinessLogic
{
	/**
	 * 初期表示ユースケースID
	 */
	private static final String INIT_USECASE_ID = "TUSV0058";
	/**
	 * 初期表示SCタイトル01
	 */
	private static final String INIT_SC_TITLE01 = "TUSV005801SC";
	/**
	 * 送信確認ユースケースID
	 */
	private static final String CFM_USECASE_ID = "TUSV0059";
	/**
	 * 送信確認SCタイトル01
	 */
	private static final String CFM_SC_TITLE01 = "TUSV005901SC";
	/**
	 * 送信確認SCタイトル02
	 */
	private static final String CFM_SC_TITLE02 = "TUSV005902SC";
	/**
	 * 確定ユースケースID
	 */
	private static final String FIX_USECASE_ID = "TUSV0060";
	/**
	 * 確定SCタイトル01
	 */
	private static final String FIX_SC_TITLE01 = "TUSV006001SC";
	/**
	 * 確定SCタイトル02
	 */
	private static final String FIX_SC_TITLE02 = "TUSV006002SC";
	/**
	 * 確定CCタイトル01
	 */
	private static final String FIX_CC_TITLE01 = "TUSV006001CC";

	/**
	 * 最大検索件数
	 */
	private static final String CFM_MAX_SHOW_CNT = "TUW01902_MAX_SHOW_CNT";
	
	/**
	 * 最大検索件数(ダウンロードファイル管理)
	 */
	private static final String DL_FILE_MAX_SHOW_CNT = "TUW01902_DLFILE_MAX_SHOW_CNT";
	
	/**
	 * ページ表示件数
	 */
	private static final String CFM_ROW_PER_PAGE = "TUW01902_ROW_PER_PAGE";

	/** メッセージ置換文字列  */
	private static final 	String[] MESSAGE_VALUE = {"TDIS申込依頼"};
	/** メッセージ置換文字列EKB0290  */
	private static final 	String[] MESSAGE_VALUE_EKB0290 = {"電話帳申込", "送信済", "送信"};
	/** メッセージ置換文字列EKB0720  */
	private static final 	String[] MESSAGE_VALUE_EKB0720 = {"申込事業所", "申込事業所情報"};
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_init() throws Exception
	{
		return tdisMskmReq_init();
	}
	
	/**
	 * 初期化処理
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	private boolean tdisMskmReq_init()
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW01901, JTUScreenConst.SCREEN_NAME_TUW01901);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 戻るボタンの表示要否判定
		bean.sendMessageString(TUW01901SFConst.BACK_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE
				, JTUWebCommon.getBackDispFlg(this, JTUScreenConst.SCREEN_ID_TUW01901));
		
		// 一覧情報のクリア
		X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(TUW01901SFConst.ETU0041B013CBSMSG1LIST);
		if(beanList.getCount() != 0)
		{
			beanList.clearArray();
		}
		
		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		TUSV0058_TUSV0058OPDBMapper mapper = new TUSV0058_TUSV0058OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// システム日付取得
		String sysDate = JCCWebCommon.getSysDate();
		// ANK 3507-00-00 ADD START
		String sysDateBefore = JPCDateUtil.addDay(sysDate, -1) ;
		// ANK 3507-00-00 ADD END
		
		// 上りマッピングの呼び出し
		// ANK 3507-00-00 MOD START
		// mapper.setTUSV005801SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, sysDate);
		mapper.setTUSV005801SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, sysDateBefore);
		// ANK 3507-00-00 MOD END

		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		/**
		 * サービス処理結果の取得
		 */
		// 下りマッピングの呼び出し
		mapper.getTUSV005801SC(paramBean, outputMap);
		
		// 検索エラー取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg(INIT_SC_TITLE01, outputMap);
		
		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			//0件の場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0720_KW, MESSAGE_VALUE_EKB0720);
			return true;
		}
		
		return true;
	}
	
	
	/**
	 * 送信確認ボタン押下イベント
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_cfm() throws Exception
	{
		// セッション情報を削除 
		JCCWebCommon.clearPageLinkInfo(this, JTUScreenConst.SCREEN_ID_TUW01902);
			
		return search();
	
	}

	/**
	 * ページング押下イベント
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_paging() throws Exception
	{
		return search();
	}

	/**
	 * 検索処理
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean search() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		/**
		 * DataBean設定処理
		 */

		// 表示フラグの初期化
		bean.sendMessageString(TUW01901SFConst.FIX_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.DISP_FLG_FALSE);

		// 一覧情報のクリア
		X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(TUW01901SFConst.ETU0081B011CBSMSG1LIST);
		if(beanList.getCount() != 0)
		{
			beanList.clearArray();
		}
		
		/**
		 * サービス呼出処理
		 */
		//  ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, CFM_USECASE_ID);

		// マッピングクラスのインスタンスを生成
		TUSV0059_TUSV0059OPDBMapper mapper = new TUSV0059_TUSV0059OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 運用日付取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// 上りマッピングの呼び出し
		mapper.setTUSV005901SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setTUSV005902SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, opeDate);

		// ファイル名
		String file_name = JTUStrConst.FILE_TDIS_MSKM_REQ.replace(JTUStrConst.DATE_MD, opeDate.substring(4, 8));
		
		((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE01)).put("key_file_nm", file_name);
		((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE01)).put("key_trn_kanri_no", JTUStrConst.SYORI_KANRI_NUM_TDISMSKM);
		((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE01)).put("max_search_num", JCCWebCommon.getSearchConst(DL_FILE_MAX_SHOW_CNT));
		
		//一覧照会共通部設定
		((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE02)).put("search_type", JPCModelConstant.SAERCH_TYPE_BBN);
		((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE02)).put("max_search_num", JCCWebCommon.getSearchConst(CFM_MAX_SHOW_CNT));
		((HashMap<String, Object>)inputMap.get(CFM_SC_TITLE02)).put("display_num", JCCWebCommon.getSearchConst(CFM_ROW_PER_PAGE));

		// ページリンク情報のマッピング
		JCCWebCommon.upmapperPageLinkInfo(this, CFM_SC_TITLE02, inputMap, JTUScreenConst.SCREEN_ID_TUW01902);
		
		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		/**
		 * サービス処理結果の取得
		 */
		
		// 下りマッピングの呼び出し
		mapper.getTUSV005902SC(paramBean, outputMap);
		
		/**
		 * 取得データ件数チェック
		 */
		HashMap<String, Object> scMap01 = (HashMap<String, Object>)outputMap.get(CFM_SC_TITLE01);
		String file_cnt = scMap01.get("total_search_num").toString();

		// 検索エラー取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg(CFM_SC_TITLE02, outputMap);
		
		if(Integer.parseInt(file_cnt) > 0)
		{
			//ダウンロードファイル管理の検索件数が0件でない場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0290_JW, MESSAGE_VALUE_EKB0290);
			return true;
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			//表示ページに該当するデータがない場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0350__I);
			return true;
		}

		// ページリンク情報のマッピング
		JCCWebCommon.downmapperPageLinkInfo(this, CFM_SC_TITLE02, outputMap, JTUScreenConst.SCREEN_ID_TUW01902);
		
		// 検索コマンドIDの設定
		JCCWebCommon.setSearchCommand(this, "pageLink",  JTUScreenConst.SCREEN_ID_TUW01902);
		
		
		/**
		 * DataBean設定処理
		 */
		//ボタン表示フラグ設定
		bean.sendMessageString(TUW01901SFConst.FIX_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.DISP_FLG_TRUE);
		
		// 行スタイル設定
		JTUWebCommon.setRowStyle(bean, TUW01901SFConst.ETU0081B011CBSMSG1LIST, TUW01901SFConst.ROW_STYLE_02);

		// メッセージ設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, MESSAGE_VALUE);
		JCCWebCommon.setMessageAreaBackColor(this, "1");
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW01902, JTUScreenConst.SCREEN_NAME_TUW01902);
		
		return true;
	}
	
	
	/**
	 * 確定ボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean action_fix() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// ボタン表示フラグの初期化
		bean.sendMessageString(TUW01901SFConst.FIX_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.DISP_FLG_FALSE);
		
		/**
		 * サービス呼出処理
		 */
		//  ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, FIX_USECASE_ID);

		// マッピングクラスのインスタンスを生成
		TUSV0060_TUSV0060OPDBMapper mapper = new TUSV0060_TUSV0060OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 運用日付取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// 上りマッピングの呼び出し
		mapper.setTUSV006001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setTUSV006002SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, opeDate);
		mapper.setTUSV006001CC(paramBean, inputMap);
		
		// ファイル名
		String file_name = JTUStrConst.FILE_TDIS_MSKM_REQ.replace(JTUStrConst.DATE_MD, opeDate.subSequence(4, 8));
		
		// ＫＥＹ＿ファイル名
		((HashMap<String, Object>)inputMap.get(FIX_SC_TITLE01)).put("key_file_nm", file_name);
		((HashMap<String, Object>)inputMap.get(FIX_SC_TITLE01)).put("key_trn_kanri_no", JTUStrConst.SYORI_KANRI_NUM_TDISMSKM);
		((HashMap<String, Object>)inputMap.get(FIX_SC_TITLE01)).put("max_search_num", JCCWebCommon.getSearchConst(DL_FILE_MAX_SHOW_CNT));
		// ユーザーID
		((HashMap<String, Object>)inputMap.get(FIX_CC_TITLE01)).put("user_id"
				, commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE));
		// ユーザー名
		((HashMap<String, Object>)inputMap.get(FIX_CC_TITLE01)).put("user_nm"
				, commoninfoBean.sendMessageString(CommonInfoCFConst.USER_NM, X31CWebConst.DATABEAN_GET_VALUE));
		// 帳票名
		((HashMap<String, Object>)inputMap.get(FIX_CC_TITLE01)).put("chohyo_nm", file_name);
		
		/**
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		/**
		 * サービス処理結果の取得
		 */
		HashMap<String, Object> scMap01 = (HashMap<String, Object>)outputMap.get(FIX_SC_TITLE01);
		String file_cnt = scMap01.get("total_search_num").toString();
		
		if(Integer.parseInt(file_cnt) > 0)
		{
			//ダウンロードファイル管理の検索件数が0件でない場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0290_JW, MESSAGE_VALUE_EKB0290);
			return true;
		}

		/**
		 * メッセージ設定
		 */
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, MESSAGE_VALUE);
		
		/**
		 * DataBean設定処理
		 */
		setOutputBean(bean, outputMap);

		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW01903, JTUScreenConst.SCREEN_NAME_TUW01903);
		
		
		return true;
	}
	
	/**
	 * 再表示ボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_redisp() throws Exception
	{
		return tdisMskmReq_init();
	}
	
	/**
	 * 戻るボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_back() throws Exception
	{
		return tdisMskmReq_init();
	}
	
	/**
	 * 完了ボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_fin() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 戻り先IDの取得
		String backScreenId = JTUWebCommon.getScreenId(this);
		
		// 戻り先IDの有無で遷移先の判定を行う。
		if(JTUWebCommon.isNull(backScreenId)
				|| JTUScreenConst.SCREEN_ID_TUW01901.equals(backScreenId))
		{
			// 初期処理実行
			return tdisMskmReq_init();
		}
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, backScreenId, "");
		return true;
	}

	
	/**
	 * 先頭画面 戻る遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_top_back() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		/**
		 * DataBean設定処理
		 */
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUWebCommon.getScreenId(this), "");
		
		return true;
	}
	
	/**
	 * 完了画面のBean情報を設定
	 * @param bean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	private void setOutputBean(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{
		HashMap<String, Object> parentMapSC = null;
		HashMap<String, Object> parentMapCC = null;
	
		parentMapSC = (HashMap<String, Object>)outputMap.get(FIX_SC_TITLE02);
		
		parentMapCC = (HashMap<String, Object>)outputMap.get(FIX_CC_TITLE01);
		
		X31SDataBeanAccessArray listDataBean = bean.getDataBeanArray(TUW01901SFConst.ETU0041B013CBSMSG1LIST);
		
		
		bean.sendMessageString(TUW01901SFConst.DATA_CNT, X31CWebConst.DATABEAN_SET_VALUE, parentMapSC.get("total_search_num").toString());
		bean.sendMessageString(TUW01901SFConst.FILE_NM, X31CWebConst.DATABEAN_SET_VALUE, parentMapCC.get("chohyo_nm").toString());
		bean.sendMessageString(TUW01901SFConst.SENDS, X31CWebConst.DATABEAN_SET_VALUE
				, listDataBean.getDataBean(0).sendMessageString(TUW01901SFConst.MSKM_JIGSHONM_01, X31CWebConst.DATABEAN_GET_VALUE));

	}
	
}
	
