/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：DKW04002SFLogic
*   ソースファイル名：DKW04002SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年05月10日
*＜機能概要＞
*   出荷指図情報確認画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/05/10   FJ）植木    新規作成
*
**********************************************************************/
package eo.web.webview.DKW04002SF;

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 com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCOnlineMessageConstant;
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.mapping.DKSV0077_DKSV0077OPDBMapper;

/**
 * DKW04002のビューロジック
 * <BR>
 * @author 富士通
 */
public class DKW04002SFLogic extends JCCWebBusinessLogic
{
	/** 生成シリアルバージョン */
	private static final long serialVersionUID = -5733106486169885888L;

	/**
	 * サービスフォームBeanの初期化処理を行います。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定
		JCCWebCommon.getScreenInfo(this);

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[] {"出荷指図情報の作成"});

		// 画面遷移処理
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW04002);

		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW04002);

		return true;
	}

	/**
	 * 出荷指図情報確認画面の出力ボタン押下時にサービスを呼び出します。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean output() throws Exception
	{
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		ArrayList<String> haisoNoList = new ArrayList<String>();

		X31SDataBeanAccessArray haisoInfoList = serviceFormBean.getDataBeanArray(DKW04002SFConst.HAISO_INFO_LIST);
		X31SDataBeanAccessArray haisoSjiReqInfoList = serviceFormBean.getDataBeanArray(DKW04002SFConst.HAISO_SJI_REQ_INFO_LIST);
		haisoSjiReqInfoList.clearArray();

		int cnt = haisoInfoList.getCount();

		// 配送指示依頼明細のデータ作成
		for (int i = 0; i < cnt; i++)
		{
			X31SDataBeanAccess subbean = haisoInfoList.getDataBean(i);

			// 配送情報一覧照会明細リスト.配送番号
			String haisoNo = subbean.sendMessageString(DKW04002SFConst.HAISO_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
			if (!haisoNoList.contains(haisoNo))
			{
				// サービスフォームBeanの編集を行う
				haisoSjiReqInfoList.addDataBean().sendMessageString(DKW04002SFConst.HAISO_NO_02, X31CWebConst.DATABEAN_SET_VALUE, haisoNo);
				haisoNoList.add(haisoNo);
			}
		}

		X31SDataBeanAccess[] paramBean = {serviceFormBean};
		
		// ユースケースID格納用マップを生成。
		HashMap paramMap = new HashMap();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0077");

		// マッピングクラスのインスタンスを生成
		DKSV0077_DKSV0077OPDBMapper mapper = new DKSV0077_DKSV0077OPDBMapper();
		HashMap dataMap = new HashMap();
		mapper.setDKSV007701SC(paramBean, dataMap, "1");

		// 実行結果格納用マップ
		HashMap outputMap = new HashMap();

		// サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, dataMap, outputMap);

		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		JCCMessageCache.setMessageCache();

		// 次画面で表示するメッセージを設定する
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, new String[] {"出荷指図情報の作成"});

		// 画面遷移処理
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW04003);

		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW04003);

		return true;
	}

	/**
	 * 出荷指図情報確認画面の戻るボタン押下処理
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean returnCreate() throws Exception
	{
		// 画面遷移処理
		JCCWebCommon.setScreenId(this, JDKScreenConst.SCREEN_ID_DKW04001, JDKScreenConst.SCREEN_ID_DKW04002);
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW04001);
		
		return true;
	}

	/**
	 * 出荷指図情報完了画面の完了ボタン押下処理
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean complete() throws Exception
	{
		// 画面遷移処理
		JCCWebCommon.setScreenId(this, JDKScreenConst.SCREEN_ID_DKW04001, JDKScreenConst.SCREEN_ID_DKW04003);
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW04001);
		
		return true;
	}

}
