/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：物流管理システム
*   モジュール名    ：DKW03302SFLogic
*   ソースファイル名：DKW03302SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年05月24日
*＜機能概要＞
*   出荷完了エラー一覧照会画面です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/05/24   FJ）福西    新規作成
*
**********************************************************************/
package eo.web.webview.DKW03302SF;

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.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCMessageCache;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JDKScreenConst;
import eo.web.webview.common.JDKWebCommon;
import eo.web.webview.mapping.DKSV0018_DKSV0018OPDBMapper;

/**
 * 
 * @author user
 *
 */
public class DKW03302SFLogic extends JCCWebBusinessLogic
{

	/**
	 * シリアルバージョンＩＤ
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * 初期表示を処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{

		// 画面情報を取得し、サービスフォームBeanに設定
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		// 遷移先画面ＩＤの設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW03302, JDKScreenConst.SCREEN_NAME_DKW03302);

		// 初期化処理
		serviceFormBean.sendMessageString(DKW03302SFConst.DISP_COUNT, X31CWebConst.DATABEAN_SET_VALUE, "0");
		serviceFormBean.getDataBeanArray(DKW03302SFConst.SHKA_ERR_LIST).clearArray();
		
		// 運用日付を設定。
		serviceFormBean.sendMessageString(DKW03302SFConst.KJN_YMD
				, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));

		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {serviceFormBean};

		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成。
		HashMap paramMap = new HashMap();
		HashMap inputMap = new HashMap();
		HashMap outputMap = new HashMap();

		// ユースケースＩＤを設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0018");
		
		// DataBean⇔BPの上りマッピングを行う
		DKSV0018_DKSV0018OPDBMapper mapper = new DKSV0018_DKSV0018OPDBMapper();
		mapper.setDKSV001801SC(paramBean, inputMap, "1");

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "DKSV001801SC", inputMap);

		// 検索結果格納用マップを生成。
		// サービス呼出 
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		JCCMessageCache.setMessageCache();

		// DataBean⇔BPの下りマッピングを行う
		mapper.getDKSV001801SC(paramBean, outputMap) ;

		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("DKSV001801SC", outputMap);
		if ("1".equals(searchErrFlg))
		{

			return true;
		}
		else if ("2".equals(searchErrFlg))
		{

			return true;
		}

		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "0", "DKSV001801SC", outputMap);

		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, "L_PAG_LIST_ERR_DISP");

		X31SDataBeanAccessArray shkaErrList = paramBean[0].getDataBeanArray("出荷完了エラーリスト");

		for (int i = 0; i < shkaErrList.getCount(); i++)
		{
			X31SDataBeanAccess subbean = shkaErrList.getDataBean(i);
			if (i % 2 == 1)
			{
				subbean.sendMessageString(DKW03302SFConst.L_COLOR_01, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}
			else
			{
				subbean.sendMessageString(DKW03302SFConst.L_COLOR_01, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			}

			subbean.sendMessageString(DKW03302SFConst.L_NO_01, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i + 1));

			String lShkaSk = subbean.sendMessageString(DKW03302SFConst.L_SHKA_SK_01, X31CWebConst.DATABEAN_GET_VALUE);
			String lErrDtl = subbean.sendMessageString(DKW03302SFConst.L_ERR_DTL_01, X31CWebConst.DATABEAN_GET_VALUE);
			subbean.sendMessageString(DKW03302SFConst.L_SHKA_SK_TOOLTIP_01, X31CWebConst.DATABEAN_SET_VALUE, lShkaSk);
			subbean.sendMessageString(DKW03302SFConst.L_ERR_DTL_TOOLTIP_01, X31CWebConst.DATABEAN_SET_VALUE, lErrDtl);

			subbean.sendMessageString(DKW03302SFConst.L_SHKA_SK_01, X31CWebConst.DATABEAN_SET_VALUE
					, JDKWebCommon.substr(lShkaSk, 0, 16));
			subbean.sendMessageString(DKW03302SFConst.L_ERR_DTL_01, X31CWebConst.DATABEAN_SET_VALUE
					, JDKWebCommon.substr(lErrDtl, 0, 20));
		}

		// 一覧表示件数を設定する
		serviceFormBean.sendMessageString(DKW03302SFConst.DISP_COUNT, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(shkaErrList.getCount()));

		return true;
	}

	/**
	 * ページングを処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean pagingErrDisp() throws Exception
	{
		init();

		return true;
	}

	/**
	 * 出荷完了エラー一覧画面の戻るボタンを処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean returnList() throws Exception
	{
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW03301, JDKScreenConst.SCREEN_NAME_DKW03301);
		return true;
	}

	/**
	 * 画面遷移先を設定します。
	 * <br>
	 * @param nextScreenId 遷移先画面ＩＤ
	 * @param nextScreenName 遷移先画面名
	 */
	private void setNextScreen(String nextScreenId, String nextScreenName)
	{
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);
	}
}
