/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKW16601SFLogic
*	ソースファイル名：KKW16601SFLogic.java
*	作成者			：FJ
*	日付			：2012年10月11日
*＜機能概要＞
*	KKW16601のビューロジック
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/10/11	FJ)藤原		新規作成
*	v5.00.00	2013/11/15	FJ)高川		【OM-2013-0004221】排他制御対応
*
********************************************************************************/
package eo.web.webview.KKW16601SF;

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.JKKStrConst;
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.KKW12801SF.KKW12801SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.mapping.KKSV0720_KKSV0720OPDBMapper;
import eo.web.webview.mapping.KKSV0721_KKSV0721OPDBMapper;

/**
 * KKW16601のビューロジック
 * @author FJ
 *
 */
public class KKW16601SFLogic extends JCCWebBusinessLogic
{
	
	/** メッセージ置換文字列  */
	private static final 	String[] MESSAGE_VALUE = {"CSVデータ出力依頼"};
	
	/** メッセージ置換文字列  */
	private static final 	String[] MESSAGE_VALUE_2 = {"CSV出力依頼処理"};
	
	/**
	 * 照会処理ユースケースID
	 */
	private static final String SHOKAI_USECASE_ID = "KKSV0720";
	/**
	 * CSV出力依頼処理ユースケースID
	 */
	private static final String CSV_OUTPUT_IRAI_USECASE_ID = "KKSV0721";

	/**
	 * 依頼処理SCタイトル03
	 */
	private static final String IRAI_SC_TITLE03 = "KKSV072103SC";

	/**
	 * CSV出力件数(0件)
	 */
	private static final String CSV_OUTPUT_CNT_ZERO = "0";

	/**
	 * 初期表示処理
	 * @return boolean
	 */
	public boolean action_init()
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		/**
		 * DataBean設定処理
		 */
		// 遷移元画面IDの存在チェック
		String backScreenId = JKKWebCommon.getScreenId(this);
		
		// 戻るボタンの表示要否判定
		if(backScreenId != null)
		{
			bean.sendMessageString(KKW16601SFConst.BACK_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
					JKKStrConst.KDDI_BACK_BTN_DSP_FLG_TRUE);
		}
		else
		{
			bean.sendMessageString(KKW16601SFConst.BACK_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
					JKKStrConst.KDDI_BACK_BTN_DSP_FLG_FALSE);
		}
		
//		// ディレイド処理依頼ステータスの初期化
//		bean.sendMessageString(KKW16601SFConst.DLYD_TRN_REQ_STAT, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 遷移元画面IDの再設定
		JKKWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW16601, backScreenId);

		/**
		 * サービス呼出処理
		 */
		//  ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SHOKAI_USECASE_ID);

		// マッピングクラスのインスタンスを生成
		KKSV0720_KKSV0720OPDBMapper mapper = new KKSV0720_KKSV0720OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		/**
		 * 上りマッピング
		 */
		// マッピングクラスの呼び出し
		mapper.setKKSV072001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		/**
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		
		// エラー処理 
		if(msgResult != null)
		{
			JKKWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		/**
		 * サービス処理結果の取得
		 */

		/**
		 * 下りマッピング
		 */ 
		// マッピングクラスの呼び出し
		mapper.getKKSV072001SC(paramBean, outputMap);

		/**
		 * 遷移先画面の設定
		 */
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW16601);
		
		
		return true;
	}
	
	/**
	 * 再表示ボタン押下
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_re_dsp() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		/**
		 * サービス呼出処理
		 */
		//  ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SHOKAI_USECASE_ID);

		// マッピングクラスのインスタンスを生成
		KKSV0720_KKSV0720OPDBMapper mapper = new KKSV0720_KKSV0720OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		/**
		 * 上りマッピング
		 */
		// マッピングクラスの呼び出し
		mapper.setKKSV072001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		/**
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		
		// エラー処理 
		if(msgResult != null)
		{
			JKKWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		/**
		 * サービス処理結果の取得
		 */

		/**
		 * 下りマッピング
		 */ 
		// マッピングクラスの呼び出し
		mapper.getKKSV072001SC(paramBean, outputMap);
		
		/**
		 * 遷移先画面の設定
		 */
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW16601);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW16601);
		
		
		return true;
	}

	/**
	 * CSV出力依頼ボタン押下
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_csv_output_irai() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		/**
		 * サービス呼出処理
		 */
		//  ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, CSV_OUTPUT_IRAI_USECASE_ID);

		// マッピングクラスのインスタンスを生成
		KKSV0721_KKSV0721OPDBMapper mapper = new KKSV0721_KKSV0721OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		/**
		 * 上りマッピング
		 */
		// マッピングクラスの呼び出し
		mapper.setKKSV072101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV072102SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3);
		mapper.setKKSV072103SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV072104SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		HashMap<String, Object> inDataMap = (HashMap<String, Object>)inputMap.get(IRAI_SC_TITLE03);

		inDataMap = (HashMap<String, Object>)inputMap.get(IRAI_SC_TITLE03);
		inDataMap.put("trn_req_dtm", JKKWebCommon.getSysDateTime().substring(0, 12));
		inDataMap.put("trn_iraisha_opeacnt", JZMWebCommon.getSendMessageString(commoninfoBean, CommonInfoCFConst.USER_ID));

		/**
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		// エラー処理 
		if(msgResult != null)
		{
			JKKWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		/**
		 * 下りマッピング
		 */ 
		// マッピングクラスの呼び出し
		mapper.getKKSV072101SC(paramBean, outputMap);
		mapper.getKKSV072102SC(paramBean, outputMap);
		mapper.getKKSV072104SC(paramBean, outputMap);
		
		/**
		 * ディレイド処理依頼ステータスチェック
		 */
		// ディレイド処理依頼ステータス
		String stat = bean.sendMessageString(KKW16601SFConst.DLYD_TRN_REQ_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		
		if ("001".equals(stat) || "004".equals(stat))
		{
			// 排他エラーの場合
			JKKWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBA920__Q, MESSAGE_VALUE_2);
		}
		else
		{
			/**
			 * 取得データ件数チェック
			 */
			// 総件数取得
			String ttlCnt = bean.sendMessageString(KKW16601SFConst.TTL_CNT, X31CWebConst.DATABEAN_GET_VALUE);
			
			if(CSV_OUTPUT_CNT_ZERO.equals(ttlCnt))
			{
				//0件の場合
				JKKWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBC420__I);
			}
			else
			{
				//エラーなし
				JKKWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, MESSAGE_VALUE);
			}
		}
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW16601);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW16601);
		
		return true;
	}

	/**
	 * 処理結果確認ボタン押下
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_tran_rslt_cfm() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		/**
		 * DataBean設定処理
		 */
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW10904);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW10904);

		return true;
	}

/**
	 * 戻るボタン押下
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_back() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		/**
		 * DataBean設定処理
		 */
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, 
				JKKWebCommon.getScreenId(this));

		return true;
	}
}
