/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW12803SFLogic
*   ソースファイル名：KKW12803SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年08月23日
*＜機能概要＞
*   ログイン実績ダウンロード画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/08/23   FJ）高川    新規作成
*
**********************************************************************/
package eo.web.webview.KKW12803SF;

import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.*;

import java.util.ArrayList;
import java.util.HashMap;

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.util.JPCDateUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.mapping.KKSV0669_KKSV0669OPDBMapper;
import eo.web.webview.mapping.KKSV0670_KKSV0670OPDBMapper;


/**
 * ログイン実績ダウンロードを行います。
 * <BR>
 * @author 富士通
 */
public class KKW12803SFLogic extends JCCWebBusinessLogic
{

	/** ファイル削除年月日  */
	private static final String DELYMD = "20991231";

	/**
	 * 初期表示処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean init() throws Exception
	{
		JKKWebCommon.setSelfScreenID(this);
		
		// サービスフォームBean
		X31SDataBeanAccess dataBean = getServiceFormBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {dataBean};

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// ユースケースIDの設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, KKSV0669);
		
		// マッピングクラスのインスタンスを生成
		KKSV0669_KKSV0669OPDBMapper mapper = new KKSV0669_KKSV0669OPDBMapper();
		mapper.setKKSV066901SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		// サービスの呼び出し
		invokeService(paramMap, dataMap, outputMap);
		
		// サービス実行結果の取得
		mapper.getKKSV066901SC(paramBean, outputMap);
		
		// 集計結果削除日数を取得
		X31SDataBeanAccessArray workParamInfoList = dataBean.getDataBeanArray(KKW12803SFConst.WORK_PARAM_INFO);
		X31SDataBeanAccess subbean = workParamInfoList.getDataBean(0);
		String srltDelNisu = subbean.sendMessageString(KKW12803SFConst.SRLT_DEL_NISU_02, X31CWebConst.DATABEAN_GET_VALUE);
		// 運用日付を取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		if (null != srltDelNisu && !"".equals(srltDelNisu))
		{
			// 運用日付から集計結果削除日数を引いた日付を取得
			String opeDateBf = JPCDateUtil.addDay(opeDate, - Integer.parseInt(srltDelNisu));
			
			// 運用日付（集計結果削除年月日前）をサービスフォームBeanに設定
			dataBean.sendMessageString(KKW12803SFConst.OPE_DATE_BF, X31CWebConst.DATABEAN_SET_VALUE, opeDateBf);
		}
		else
		{
			// 運用日付（集計結果削除年月日前）をサービスフォームBeanに設定
			dataBean.sendMessageString(KKW12803SFConst.OPE_DATE_BF, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		
		// 対象件数の初期化
		X31SDataBeanAccessArray beanList = dataBean.getDataBeanArray(KKW12803SFConst.AGUSR_LOGIN_JSK_INFO);
		if (0 > beanList.getCount() -1)
		{
			subbean = beanList.addDataBean();
			subbean.sendMessageString(KKW12803SFConst.TG_CNT_01, X31CWebConst.DATABEAN_SET_VALUE, new String());
		}
		
		return true;
	}
	
	/**
	 * CSV作成ボタン処理を行います。
	 * <br>
	 * @return 処理結果 
	 * @throws Exception 予期せぬエラー
	 */
	@SuppressWarnings("unchecked")
	public boolean csvCreate()throws Exception
	{
		JKKWebCommon.setSelfScreenID(this);
		
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess dataBean = getServiceFormBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {dataBean};

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// 開始日付・終了日付の設定
		setHanChoiceDay(dataBean);
		
		// バイナリ用Mapの設定
		HashMap<String, Object> attachMap = new HashMap<String, Object>();
		HashMap<String, Object> fileMap = new HashMap<String, Object>();
		ArrayList fileList = new ArrayList();
		
		StringBuffer sb = new StringBuffer();
		sb.append(dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_STAYMD, X31CWebConst.DATABEAN_GET_VALUE));
		sb.append(STR_CAMMA);
		sb.append(dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_ENDYMD, X31CWebConst.DATABEAN_GET_VALUE));
		sb.append(JKKStrConst.LINE_SEPARATOR);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE,  sb.toString().getBytes());
		fileList.add(fileMap);
		attachMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE_LIST, fileList);
		
		// ユースケースIDの設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, KKSV0670);
		
		// マッピングクラスのインスタンスを生成
		KKSV0670_KKSV0670OPDBMapper mapper = new KKSV0670_KKSV0670OPDBMapper();
		mapper.setKKSV067001SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV067002SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV067003SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		HashMap<String, Object> inDataMap = (HashMap<String, Object>)dataMap.get("KKSV067002SC");
		inDataMap.put("dlyd_trn_jssi_unyo_dtm", JCCWebCommon.getOpeDateTimeStamp(this, null));
		inDataMap.put("file_del_ymd", DELYMD);

		inDataMap = (HashMap<String, Object>)dataMap.get("KKSV067003SC");
		inDataMap.put("trn_req_dtm", JCCWebCommon.getOpeDateTimeStamp(this, null).substring(0, 12));
		inDataMap.put("file_del_ymd", DELYMD);
		inDataMap.put("trn_iraisha_opeacnt", JZMWebCommon.getSendMessageString(commonBean, CommonInfoCFConst.USER_ID));
		
		// サービスの呼び出し
		invokeService(paramMap, dataMap, outputMap, attachMap);
		
		// サービス実行結果の取得
		mapper.getKKSV067001SC(paramBean, outputMap);
		
		//入力情報のクリア
		resetInput(dataBean);
		
		return true;
	}

	/**
	 * 開始日付と終了日付を設定します。
	 * @param bean 日報ダウンロード画面
	 */
	private void setHanChoiceDay(X31SDataBeanAccess dataBean)
	{
		String staYmd = null;
		String endYmd = null;
		
		// 開始日付の設定
		String staYmdY = dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_STAYMD_Y, X31CWebConst.DATABEAN_GET_VALUE);
		String staYmdM = dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_STAYMD_M, X31CWebConst.DATABEAN_GET_VALUE);
		String staYmdD = dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_STAYMD_D, X31CWebConst.DATABEAN_GET_VALUE);
		staYmd = staYmdY + staYmdM + staYmdD;
		dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_STAYMD, X31CWebConst.DATABEAN_SET_VALUE, staYmd);
		
		// 終了日付の設定
		String endYmdY = dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_ENDYMD_Y, X31CWebConst.DATABEAN_GET_VALUE);
		String endYmdM = dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_ENDYMD_M, X31CWebConst.DATABEAN_GET_VALUE);
		String endYmdD = dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_ENDYMD_D, X31CWebConst.DATABEAN_GET_VALUE);
		endYmd = endYmdY + endYmdM + endYmdD;
		dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, endYmd);
	}
	
	/**
	 * 入力情報をクリアします。
	 * @param bean 日報ダウンロード画面
	 */
	private void resetInput(X31SDataBeanAccess dataBean)
	{
		dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_STAYMD_Y, X31CWebConst.DATABEAN_SET_VALUE, "");
		dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_STAYMD_M, X31CWebConst.DATABEAN_SET_VALUE, "");
		dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_STAYMD_D, X31CWebConst.DATABEAN_SET_VALUE, "");
		dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_ENDYMD_Y, X31CWebConst.DATABEAN_SET_VALUE, "");
		dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_ENDYMD_M, X31CWebConst.DATABEAN_SET_VALUE, "");
		dataBean.sendMessageString(KKW12803SFConst.HAN_CHOICE_ENDYMD_D, X31CWebConst.DATABEAN_SET_VALUE, "");
	}
}
