/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：問合せモニタ詳細ビューロジック
*   ソースファイル名：CRW05002SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年09月09日
*＜機能概要＞
*   問合せモニタ詳細画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/09/09   FJ）        新規作成
*	v29.00.00	2017/03/01	 FJ)クウン   ANK-2923-00-00_(客B) 担当者モニタへの担当者検索条件追加
*
**********************************************************************/

package eo.web.webview.CRW05101SF;

import java.util.EventObject;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CID;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CRW01201SF.CRW01201SFConst;
import eo.web.webview.CRW01601SF.CRW01601SFConst;
import eo.web.webview.CRW05101SF.CRW05101SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CRSV0172_CRSV0172OPDBMapper;

/**
 * 問合せモニタ詳細ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CRW05101SFLogic extends JCCWebBusinessLogic
{

	/**
	 * 親クラスX31BWebBusinessLogicのreceiveMessageWebを
	 * オーバーライドして自動生成されたメソッドです。
	 * @param arg0 (I) イベント情報
	 * @param arg1 (I) WebFWでは使用しません
	 * @param arg2 (I) WebFWでは使用しません
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws X33SException X33SException
	 */
	@Override
	protected boolean receiveMessageWeb(X31CID arg0, Object arg1,
			EventObject arg2) throws X33SException
	{
		return false;
	}

	/**
	 * 初期表示処理.<br>
	 * 初期表示を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean init() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケース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>();

		// (1)引継情報の取得
		// (a)画面情報取得部品（JCCWebCommon.getScreenInfo)を使用し、引継情報を取得する。
		JCRWebCommon.getScreenInfo(this);

		// (2)サービスフォームBeanの設定
		// 対応記録番号リスト取得
		X31SDataBeanAccessArray taioKirokNoBeanList = bean.getDataBeanArray(CRW05101SFConst.TAIO_KIROK_NO_LIST);

		// 対応記録番号リストチェック
		if (taioKirokNoBeanList.getCount() > 0) 
		{
			// ＫＥＹ＿対応記録番号
			bean.sendMessageString(CRW05101SFConst.KEY_TAIO_KIROK_NO, X31CWebConst.DATABEAN_SET_VALUE, getKeyTaioKirokNo());

			// (3)サービス呼出処理
			// マッピングクラスを使用する為、配列化
			X31SDataBeanAccess[] paramBean = {bean};

			// ユースケースID格納
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0172");

			// マッピングクラス
			CRSV0172_CRSV0172OPDBMapper mapper = new CRSV0172_CRSV0172OPDBMapper();

			// マッピング処理（上り）
			mapper.setCRSV017201SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
			mapper.setCRSV017202SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

			// サービス実行
			invokeService(paramMap, dataMap, outputMap);

			// (4)サービス処理結果の設定
			// (a)マッピング処理（下り）
			mapper.getCRSV017201SC(paramBean, outputMap);
			mapper.getCRSV017202SC(paramBean, outputMap);
			
			// (b)サービスフォームBean項目の設定
			// 対応記録一覧照会明細リスト取得
			X31SDataBeanAccessArray detailBeanList = bean.getDataBeanArray(CRW05101SFConst.ECR0011B160CBSMSG1LIST);
			// 対応記録一覧照会明細リストチェック
			if (detailBeanList.getCount() == 0)
			{
				// 検索結果:指定されたデータが存在しません。
				JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I, new String[]{""});
			}
			
		}
		else
		{
			// 総件数に0を設定
			bean.sendMessageString(CRW05101SFConst.TOTAL_NUM, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.CR_STR_ZERO);
			
			// 検索結果:指定されたデータが存在しません。
			JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I, new String[]{""});
		}

		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW05101);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW05101);

		return true;
	}

	/**
	 * 問合せIDリンク押下
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean clickLinkToiawaseId() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1)引継情報の設定
		// なし。
		
		// (2)サービスフォームBeanの設定
		// なし。

		// (3)サービス呼出し処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定

		// 選択された対応記録一覧照会明細インデックス取得
		int nSlctDetailIndex = Integer.valueOf(bean.sendMessageString(CRW05101SFConst.SLCT_DETAIL_INDEX, X31CWebConst.DATABEAN_GET_VALUE)).intValue();

		// 対応記録一覧照会明細リスト取得
		X31SDataBeanAccessArray ecr0011b160cbsmsg1list = bean.getDataBeanArray(CRW05101SFConst.ECR0011B160CBSMSG1LIST);

		// 選択された対応記録一覧照会明細取得
		X31SDataBeanAccess detailBean = ecr0011b160cbsmsg1list.getDataBean(nSlctDetailIndex);
		
		//(a)次画面への引継情報(dataMap)を作成する。
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// 対応記録番号
		dataMap.put(CRW01601SFConst.TAIO_KIROK_NO, detailBean.sendMessageString(CRW05101SFConst.L0_TAIO_KIROK_NO_01,
				X31CWebConst.DATABEAN_GET_VALUE));
		// 遷移元画面ＩＤ
		dataMap.put(CRW01601SFConst.PREVIOUS_SCREEN_ID, JCRScreenConst.SCREEN_ID_CRW05101); 

		// (b)画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		// 次画面に渡す情報を設定
		JCRWebCommon.setScreenInfo(this, JCRScreenConst.SCREEN_ID_CRW01601, dataMap);
		
		// (6)共有フォームビーンの設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW01601);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW01601);

		return true;
	}
	
	/**
	 * 戻るボタン押下
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean back() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1)引継情報の設定
		// なし。
		
		// (2)サービスフォームBeanの設定
		// なし。

		// (3)サービス呼出し処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// (a)次画面への引継情報(dataMap)を作成する。
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// 絞込ワークグループ名
		dataMap.put(CRW05101SFConst.SEARCH_WKKBT_ORG_NM, bean.sendMessageString(CRW05101SFConst.SEARCH_WKKBT_ORG_NM,
				X31CWebConst.DATABEAN_GET_VALUE));
		// 初期表示時ワークグループリスト
		dataMap.put(CRW05101SFConst.INIT_WKKBT_ORG_LIST, JCRWebCommon.getArrayList(bean.getDataBeanArray(CRW05101SFConst.INIT_WKKBT_ORG_LIST)));
		// 発生年（自）
		dataMap.put(CRW05101SFConst.HASSEI_YEAR_STAT, bean.sendMessageString(CRW05101SFConst.HASSEI_YEAR_STAT, 
				X31CWebConst.DATABEAN_GET_VALUE));
		// 発生月（自）
		dataMap.put(CRW05101SFConst.HASSEI_MONTH_STAT, bean.sendMessageString(CRW05101SFConst.HASSEI_MONTH_STAT, 
				X31CWebConst.DATABEAN_GET_VALUE));
		// 発生日（自）
		dataMap.put(CRW05101SFConst.HASSEI_DAY_STAT, bean.sendMessageString(CRW05101SFConst.HASSEI_DAY_STAT, 
				X31CWebConst.DATABEAN_GET_VALUE));
		// 発生年（至）
		dataMap.put(CRW05101SFConst.HASSEI_YEAR_END, bean.sendMessageString(CRW05101SFConst.HASSEI_YEAR_END, 
				X31CWebConst.DATABEAN_GET_VALUE));
		// 発生月（至）
		dataMap.put(CRW05101SFConst.HASSEI_MONTH_END, bean.sendMessageString(CRW05101SFConst.HASSEI_MONTH_END, 
				X31CWebConst.DATABEAN_GET_VALUE));
		// 発生日（至）
		dataMap.put(CRW05101SFConst.HASSEI_DAY_END, bean.sendMessageString(CRW05101SFConst.HASSEI_DAY_END, 
				X31CWebConst.DATABEAN_GET_VALUE));
		// ソート指定項目
		dataMap.put(CRW05101SFConst.SORT_SHITEI_KMK, bean.sendMessageString(CRW05101SFConst.SORT_SHITEI_KMK, 
				X31CWebConst.DATABEAN_GET_VALUE));
		// ソート順
		dataMap.put(CRW05101SFConst.SORT_ORDER, bean.sendMessageString(CRW05101SFConst.SORT_ORDER, 
				X31CWebConst.DATABEAN_GET_VALUE));
		// ＫＥＹ＿業務個別設定組織コード
		dataMap.put(CRW05101SFConst.KEY_WKKBT_ORG_CD, bean.sendMessageString(CRW05101SFConst.KEY_WKKBT_ORG_CD, 
				X31CWebConst.DATABEAN_GET_VALUE));
		// 戻り検索フラグ
		dataMap.put(CRW05101SFConst.RETURN_SEARCH_FLG, JCRStrConst.RETURN_SEARCH_FLG_ON);

		// 戻り先画面ID取得
		String backScreenId = JCRWebCommon.getScreenId(this, JCRScreenConst.SCREEN_ID_CRW05101);
		
		// 問合せモニタ一覧照会（ユーザー別）画面または問合せモニタ一覧照会（キューBOX別）画面へ戻る場合
		if (JCRScreenConst.SCREEN_ID_CRW05001.equals(backScreenId) || JCRScreenConst.SCREEN_ID_CRW05004.equals(backScreenId))
		{
			// 全件出力フラグ
			if (JCRStrConst.ALL_OUTPUT_FLG_ON.equals(bean.sendMessageString(CRW05101SFConst.ALL_OUTPUT_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				dataMap.put(CRW05101SFConst.ALL_OUTPUT_FLG, Boolean.TRUE);
			}
			else
			{
				dataMap.put(CRW05101SFConst.ALL_OUTPUT_FLG, Boolean.FALSE);
			}
			//---------v29.00.00 追加開始---------//
			// 従業員番号
			dataMap.put(CRW05101SFConst.SEARCH_USER_ID, bean.sendMessageString(CRW05101SFConst.SEARCH_USER_ID, 
					X31CWebConst.DATABEAN_GET_VALUE));
			//---------v29.00.00 追加終了---------//
		}
		// 問合せモニタ一覧照会（カテゴリー別）画面へ戻る場合
		if (JCRScreenConst.SCREEN_ID_CRW05002.equals(backScreenId))
		{
			// 問合せモニタ一覧照会(カテゴリー別)明細
			dataMap.put(CRW05101SFConst.ECR0321B010CBSMSG1LIST, JCRWebCommon.getArrayList(bean.getDataBeanArray(CRW05101SFConst.ECR0321B010CBSMSG1LIST)));
		}
		
		// (b)画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		// 次画面に渡す情報を設定
		JCRWebCommon.setScreenInfo(this, backScreenId, dataMap);

		// (6)共有フォームビーンの設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, backScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, backScreenId);
		
		return true;
	}
	
	/**
	 * 問合せ対応メイン画面の初期表示を行う。<br>
	 * <br>
	 * 問合せ対応メイン画面へ遷移し、
	 * メニューから問合せ対応メイン画面を起動した状態にします。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean transferToMain() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		JCRWebCommon.getScreenInfo(this);

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		//(a)次画面への引継情報(dataMap)を作成する。
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// 対応記録番号
		dataMap.put(CRW01201SFConst.TAIO_KIROK_NO, bean.sendMessageString(CRW05101SFConst.TAIO_KIROK_NO,
				X31CWebConst.DATABEAN_GET_VALUE));
		// タブID
		dataMap.put(CRW01201SFConst.CURRENTTAB, "");

		// (b)画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		// 次画面に渡す情報を設定
		JCRWebCommon.setScreenInfo(this, JCRScreenConst.SCREEN_ID_CRW01201, dataMap);

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW01201);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW01201);

		return true;
	}

	/**
	 * ＫＥＹ＿対応記録番号取得処理を行う。<br>
	 * <br>
	 * 対応記録番号リストより、ＫＥＹ＿対応記録番号を取得する。
	 * @return String
	 * 
	 */
	private String getKeyTaioKirokNo() 
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 対応記録番号リスト取得
		X31SDataBeanAccessArray taioKirokNoBeanList = bean.getDataBeanArray(CRW05101SFConst.TAIO_KIROK_NO_LIST);
		
		// ＫＥＹ＿対応記録番号を生成する
		StringBuilder keyTaioKirokNo = new StringBuilder();
		for (int i = 0; i < taioKirokNoBeanList.getCount(); i++)
		{
			// 対応記録番号取得
			X31SDataBeanAccess taioKirokNoBean = taioKirokNoBeanList.getDataBean(i);
			
			if (i > 0)
			{
				// カンマ設定
				keyTaioKirokNo.append(JCRStrConst.STR_HALF_COMMA);
			}
			// 対応記録番号をシングルコートで囲って設定
			keyTaioKirokNo.append(JCRStrConst.STR_HALF_SINGLE_QUOTATION)
			.append(taioKirokNoBean.sendMessageString(CRW05101SFConst.L0_TAIO_KIROK_NO_01, X31CWebConst.DATABEAN_GET_VALUE))
			.append(JCRStrConst.STR_HALF_SINGLE_QUOTATION);
			
		}

		return keyTaioKirokNo.toString();
	}

}
