/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：DKW06305SF
*	ソースファイル名：DKW06305SF.java
*	作成者			：FJ
*	日付			：2012年08月13日
*＜機能概要＞
*	VIEWロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2012/08/13	FJ)山崎		新規作成
*
**********************************************************************/

package eo.web.webview.DKW06305SF;

import java.util.ArrayList;
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 eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.DKW06105SF.DKW06105SFConst;
import eo.web.webview.DKW06205SF.DKW06205SFConst;
import eo.web.webview.DKW06305SF.DKW06305SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JDKWebCommon;
import eo.web.webview.common.JDKScreenConst;
import eo.web.webview.mapping.DKSV0150_DKSV0150OPDBMapper;
import eo.web.webview.mapping.DKSV0151_DKSV0151OPDBMapper;

/**
 * DKW06305のビューロジック
 * @author FJ
 *
 */
public class DKW06305SFLogic extends JCCWebBusinessLogic
{
	/** メッセージ置換文字列 */
	private static final String[] MESSAGE_VALUE = {"引当棚情報更新処理"};

	/**
	 * 初期表示ユースケースID
	 */
	private static final String INIT_USECASE_ID = "DKSV0150";

	/**
	 * 更新ユースケースID
	 */
	private static final String UPD_USECASE_ID = "DKSV0151";

	/**
	 * 適応終了年月日
	 */
	 private static final String TENDYMD = "20991231";
	 
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		return dkw06305_init();
	}
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean dkw06305_init() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06305);

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		/**
		 * DataBean設定処理
		 */
		// セッション情報取得
		HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this, JDKScreenConst.SCREEN_ID_DKW06301);

		// 遷移元画面ID(referId)の設定
		String screenId = JCCWebCommon.getScreenId(this);
		bean.sendMessageString(DKW06305SFConst.REFERID, X31CWebConst.DATABEAN_SET_VALUE, screenId);

		// 遷移元画面が一覧画面の場合、画面表示区分を"1":通常表示に変更する
		if("DKW06301".equals(screenId))
		{
			bean.sendMessageString(DKW06305SFConst.SCREEN_DSP_DIV, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		// 運用日付(unyo_ymd)の設定
		String unyoYmd = JCCWebCommon.getOpeDate(this, null);
		bean.sendMessageString(DKW06305SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, unyoYmd);

		// 販売種別コード（保存用）保持
		bean.sendMessageString(DKW06305SFConst.HAMBAI_SBT_CD
				, X31CWebConst.DATABEAN_SET_VALUE, searchInfo.get("hambai_sbt_cd_save").toString());
		
		// 棚コード（保存用）保持
		bean.sendMessageString(DKW06305SFConst.SHELF_CD
				, X31CWebConst.DATABEAN_SET_VALUE, searchInfo.get("shelf_cd_save").toString());
		
		// セッション再保持
		JCCWebCommon.setScreenInfo(this, JDKScreenConst.SCREEN_ID_DKW06301, searchInfo);

		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		DKSV0150_DKSV0150OPDBMapper mapper = new DKSV0150_DKSV0150OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		/*
		 * 上りマッピング
		 */
		// マッピングクラスの呼び出し
		mapper.setDKSV015001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			
			// 遷移先の情報を共有フォームBeanの項目に設定する。
			JCCWebCommon.setScreenInfo(this, JDKScreenConst.SCREEN_ID_DKW06305, searchInfo);
			
			setTransferPageId(JCCWebCommon.getScreenId(this) + "0PJP");
			
			return true;
		}
		
		/**
		 * サービス処理結果の取得
		 */
		
		/*
		 * 下りマッピング
		 */
		// マッピングクラスの呼び出し
		mapper.getDKSV015001SC(paramBean, outputMap);
		
		String tStaYmd = bean.sendMessageString(DKW06305SFConst.HKAT_SHELF_TSTAYMD , X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(DKW06305SFConst.TSTAYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, tStaYmd.substring(0, 4));
		bean.sendMessageString(DKW06305SFConst.TSTAYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, tStaYmd.substring(4, 6));
		bean.sendMessageString(DKW06305SFConst.TSTAYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, tStaYmd.substring(6, 8));
		
		
		String tEndYmd = bean.sendMessageString(DKW06305SFConst.HKAT_SHELF_TENDYMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(!TENDYMD.equals(tEndYmd))
		{
			bean.sendMessageString(DKW06305SFConst.TENDYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, tEndYmd.substring(0, 4));
			bean.sendMessageString(DKW06305SFConst.TENDYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, tEndYmd.substring(4, 6));
			bean.sendMessageString(DKW06305SFConst.TENDYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, tEndYmd.substring(6, 8));
		}
		/**
		 * 取得データ件数チェック
		 */
		// 検索エラー取得

		HashMap parentMap = null;
		if(outputMap.containsKey("DKSV015001SC"))
		{
			parentMap = (HashMap)outputMap.get("DKSV015001SC");
		}

		ArrayList childList = null;
		
		childList = null;
		if(parentMap.containsKey("EDK0451A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EDK0451A010CBSMsg1List");
		}
		if(childList.isEmpty())
		{
			//0件の場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I);
			
			// 遷移先の情報を共有フォームBeanの項目に設定する。
			JCCWebCommon.setScreenInfo(this, JDKScreenConst.SCREEN_ID_DKW06305, searchInfo);
			
			setTransferPageId(JCCWebCommon.getScreenId(this) + "0PJP");

			// 遷移先の情報を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW06301);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06301);

			// 引継ぎ情報（遷移元画面ID）を設定する。
			JCCWebCommon.setScreenId(this, 
									bean.sendMessageString(DKW06305SFConst.REFERID, X31CWebConst.DATABEAN_GET_VALUE),
									JDKScreenConst.SCREEN_ID_DKW06305);
			return true;
		}

		return true;
	}
	
	/**
	 * 更新確認遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean confirmUpdate() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 販売種別コード
		String hambisbtcd = 
			bean.sendMessageString(DKW06305SFConst.HAMBAI_SBT_CD, X31CWebConst.DATABEAN_GET_VALUE); 
		bean.sendMessageString(DKW06305SFConst.HAMBAI_SBT_CD , X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageString(DKW06305SFConst.HAMBAI_SBT_CD , X31CWebConst.DATABEAN_SET_VALUE, hambisbtcd);
		
		// 棚コード
		String shelfcd = 
			bean.sendMessageString(DKW06305SFConst.SHELF_CD, X31CWebConst.DATABEAN_GET_VALUE); 
		bean.sendMessageString(DKW06305SFConst.SHELF_CD , X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageString(DKW06305SFConst.SHELF_CD , X31CWebConst.DATABEAN_SET_VALUE, shelfcd);
		
		// 引当棚適用開始年月日
		String tStaYmd = 
			bean.sendMessageString(DKW06305SFConst.TSTAYMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE) + 
			bean.sendMessageString(DKW06305SFConst.TSTAYMD_MON, X31CWebConst.DATABEAN_GET_VALUE) + 
			bean.sendMessageString(DKW06305SFConst.TSTAYMD_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		
		bean.sendMessageString(DKW06305SFConst.HKAT_SHELF_TSTAYMD , X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageString(DKW06305SFConst.HKAT_SHELF_TSTAYMD , X31CWebConst.DATABEAN_SET_VALUE, tStaYmd);
		
		// 引当棚適用終了年月日
		String tEndYmd = 
			bean.sendMessageString(DKW06305SFConst.TENDYMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE) + 
			bean.sendMessageString(DKW06305SFConst.TENDYMD_MON, X31CWebConst.DATABEAN_GET_VALUE) + 
			bean.sendMessageString(DKW06305SFConst.TENDYMD_DAY, X31CWebConst.DATABEAN_GET_VALUE);

		bean.sendMessageString(DKW06305SFConst.HKAT_SHELF_TENDYMD , X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageString(DKW06305SFConst.HKAT_SHELF_TENDYMD , X31CWebConst.DATABEAN_SET_VALUE, tEndYmd);

		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, UPD_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		DKSV0151_DKSV0151OPDBMapper mapper = new DKSV0151_DKSV0151OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		/*
		 * 上りマッピング
		 */
		// マッピングクラスの呼び出し
		mapper.setDKSV015101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		
		
		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		/**
		 * DataBean設定処理
		 */
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW06306);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06306);

		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, MESSAGE_VALUE);
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		return true;
	}
	
	/**
	 * 戻る遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean returnList() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 遷移元画面ID
		String referId = bean.sendMessageString(DKW06305SFConst.REFERID, X31CWebConst.DATABEAN_GET_VALUE);
		/**
		 * DataBean設定処理
		 */
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, referId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06306);
		
		// 引継ぎ情報（遷移元画面ID）を設定する。
		JCCWebCommon.setScreenId(this, 
								bean.sendMessageString(DKW06305SFConst.REFERID, X31CWebConst.DATABEAN_GET_VALUE),
								JDKScreenConst.SCREEN_ID_DKW06305);
		return true;
	}
	
	/**
	 * 確定遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean fix() 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, UPD_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		DKSV0151_DKSV0151OPDBMapper mapper = new DKSV0151_DKSV0151OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		/*
		 * 上りマッピング
		 */
		mapper.setDKSV015101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		
		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		/**
		 * DataBean設定処理
		 */
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, MESSAGE_VALUE);

		// 遷移先の情報を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW06307);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06307);

		return true;
	}

	/**
	 * 修正遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean modify() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		/**
		 * DataBean設定処理
		 */
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW06305);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06305);

		return true;
	}
	
	/**
	 * 完了遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean complete() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 遷移元画面ID
		String referId = bean.sendMessageString(DKW06305SFConst.REFERID, X31CWebConst.DATABEAN_GET_VALUE);
		/**
		 * DataBean設定処理
		 */

		// 遷移先の情報を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, referId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06301);
		
		// 引継ぎ情報（遷移元画面ID）を設定する。
		JCCWebCommon.setScreenId(this, 
								bean.sendMessageString(DKW06305SFConst.REFERID, X31CWebConst.DATABEAN_GET_VALUE),
								JDKScreenConst.SCREEN_ID_DKW06305);
		return true;
	}

}
