/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：DKW06402SFLogic
*	ソースファイル名：DKW06402SFLogic.java
*	作成者			：FJ
*	日付			：2012年09月26日
*＜機能概要＞
*	VIEWロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	10.00.00	2014/09/26	FJ）宇野	ANK-2042-00-00対応
*
**********************************************************************/

package eo.web.webview.DKW06402SF;

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.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JDKScreenConst;
import eo.web.webview.mapping.DKSV0158_DKSV0158OPDBMapper;
import eo.web.webview.mapping.DKSV0159_DKSV0159OPDBMapper;


/**
 * DKW06402のビューロジック
 * @author FJ
 *
 */
public class DKW06402SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 初期表示ユースケースID
	 */
	private static final String INIT_USECASE_ID = "DKSV0158";
	
	/**
	 * 登録ユースケースID
	 */
	private static final String ADD_USECASE_ID = "DKSV0159";
	
	
	/**
	 * リスト最大検索件数
	 */
	private static final String LIST_MAX_SHOW_CNT = "DKW06302_LIST_MAX_SHOW_CNT";
	
	/** メッセージ置換文字列  */
	private static final 	String[] MESSAGE_VALUE = {"出荷型番変更"};
	
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		JCCWebCommon.getScreenInfo(this);
		
		// 登録画面情報設定処理
		setAddScreenInfo();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
								, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06402);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		/**
		 * DataBean設定処理
		 */
		// オペレーション日付取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		bean.sendMessageString(DKW06402SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);
		
		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		DKSV0158_DKSV0158OPDBMapper mapper = new DKSV0158_DKSV0158OPDBMapper();
		
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// 上りマッピングクラスの呼び出し
		mapper.setDKSV015801CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// 下りマッピングクラスの呼び出し
		mapper.getDKSV015801CC(paramBean, outputMap);
		
		return true;
	}
	
	/**
	 * 登録確認遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean upd_cfm()  throws Exception
	{
		
		// 確認画面の情報を共有フォームBeanの項目に設定する。
		setAddScreenInfo();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		Integer listCount = bean.getDataBeanArray(DKW06402SFConst.SHKA_MDL_INFO_LIST).getCount();
		
		for (int i = 0; i < listCount; i++)
		{
			// パラメータ作成
			X31SDataBeanAccess subBean = bean.getDataBeanArray(DKW06402SFConst.SHKA_MDL_INFO_LIST).getDataBean(i);
			
			String startYear = subBean.sendMessageString("適用開始年月日（年）", X31CWebConst.DATABEAN_GET_VALUE);
			String startMonth = subBean.sendMessageString("適用開始年月日（月）", X31CWebConst.DATABEAN_GET_VALUE);
			String startDay = subBean.sendMessageString("適用開始年月日（日）", X31CWebConst.DATABEAN_GET_VALUE);
			
			subBean.sendMessageString("適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, startYear + this.paddingZero(startMonth, 2) + this.paddingZero(startDay, 2));
			
			String endYear = subBean.sendMessageString("適用終了年月日（年）", X31CWebConst.DATABEAN_GET_VALUE);
			String endMonth = subBean.sendMessageString("適用終了年月日（月）", X31CWebConst.DATABEAN_GET_VALUE);
			String endDay = subBean.sendMessageString("適用終了年月日（日）", X31CWebConst.DATABEAN_GET_VALUE);
			
			subBean.sendMessageString("適用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, endYear + this.paddingZero(endMonth, 2) + this.paddingZero(endDay, 2));
			
		}
		/*
		 * サービス呼出処理
		 */
		// なし
		
		// 確認画面用初期処理
		initCfm();
		
		return true;
		
	}
	
	/**
	 * 戻る遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean rtrn() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		JCCWebCommon.setScreenId(this, JDKScreenConst.SCREEN_ID_DKW06401, JDKScreenConst.SCREEN_ID_DKW06402);
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW06401);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06401);
		
		return true;
	}
	
	/**
	 * 確定ボタン処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean fix() throws Exception
	{
		
		// 確認画面情報設定処理
		setCfmScreenInfo();
		
		// サービスフォーム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, ADD_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		DKSV0159_DKSV0159OPDBMapper mapper = new DKSV0159_DKSV0159OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 上りマッピングクラスの呼び出し
		mapper.setDKSV015901CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// 完了画面用初期処理
		initFin();
		
		return true;
		
	}
	
	/**
	 * 修正ボタン処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean shusei() throws Exception
	{
		// 登録画面に遷移する
		setAddScreenInfo();
		
		return true;
	}
	
	/**
	 * 完了ボタン処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean fin() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW06401);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06401);
		
		return true;
	}
	/**
	 * 確認画面用初期処理
	 * @throws Exception
	 */
	private void initCfm() throws Exception
	{
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 確認画面情報設定処理
		setCfmScreenInfo();
		
		//　プルダウンの値を設定する。
		Integer listCount = bean.getDataBeanArray(DKW06402SFConst.SHKA_MDL_INFO_LIST).getCount();
		
		for (int i = 0; i < listCount; i++)
		{
			// パラメータ作成
			X31SDataBeanAccess subBean = bean.getDataBeanArray(DKW06402SFConst.SHKA_MDL_INFO_LIST).getDataBean(i);
			String IiChngSelect = subBean.sendMessageString(DKW06402SFConst.I_CHNG_SELECT_01, X31CWebConst.DATABEAN_GET_VALUE);
			subBean.sendMessageString(DKW06402SFConst.I_CHNG_SELECT_NM_01, X31CWebConst.DATABEAN_SET_VALUE,IiChngSelect);
		}
		// 確認メッセージを表示する。
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, MESSAGE_VALUE);
		JCCWebCommon.setMessageAreaBackColor(this, "1");
		
	}
	
	/**
	 * 確認画面用初期処理
	 * @throws Exception
	 */
	private void initFin() throws Exception
	{
		// 完了画面情報設定処理
		setFinScreenInfo();
		
		// 確認メッセージを表示する。
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, MESSAGE_VALUE);
		
	}
	/**
	 * 登録画面情報設定処理
	 * @throws Exception
	 */
	private void setAddScreenInfo() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 登録画面のIDと名称をを共有フォームBeanに設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW06402);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06402);
	}
	
	/**
	 * 確認画面情報設定処理
	 * 
	 */
	private void setCfmScreenInfo() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 確認画面のIDと名称をを共有フォームBeanに設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW06403);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06403);
	}
	
	/**
	 * 完了画面情報設定処理
	 * 
	 */
	private void setFinScreenInfo() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 確認画面のIDと名称をを共有フォームBeanに設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW06404);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW06404);
	}

	/**
	 * パディング処理
	 * @param str ゼロ埋めしたい文字列
	 * @return ゼロ埋めした文字列
	 */
	private String paddingZero(String str,int size)
	{
		String ret = str;
		if (ret.length() >= 1)
		{
			while(ret.length() < size)
			{
				ret = "0" + ret;
			}
		}
		return ret;
	}
}

