/*********************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KUW00501SFLogic
*	ソースファイル名：KUW00501SFLogic.java
*	作成者			：富士通
*	日付			：2012年04月23日
*＜機能概要＞
*	工事作業項目のロジックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2012/04/23	FJ)高橋		新規作成
*	v3.00.00	2012/04/23	FJ)高橋		【ANK-0377-00-00】（OPMS連携）工事費連携における連携機能追加変更
*
**********************************************************************/
package eo.web.webview.KUW00501SF;

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.JKUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKUCommonUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KUW00501SF.KUW00501SFConst;
import eo.web.webview.common.JCCMessageCache;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKUScreenConst;
import eo.web.webview.common.JKUWebCommon;
import eo.web.webview.mapping.KUSV0018_KUSV0018OPDBMapper;
import eo.web.webview.mapping.KUSV0019_KUSV0019OPDBMapper;

/**
 * 工事作業項目一覧照会のロジッククラスです。
 * @author 富士通
 */
public class KUW00501SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 初期表示ユースケースID01
	 */
	private static final String INIT_USECASE_ID_01 = "KUSV0019";
	/**
	 * 初期表示SCタイトル
	 */
	private static final String INIT_SC_TITLE = "KUSV001901SC";
	/**
	 * 初期表示CCタイトル
	 */
	private static final String INIT_CC_TITLE = "KUSV001901CC";
	/**
	 * 検索ユースケースID
	 */
	private static final String SEARCH_USECASE_ID = "KUSV0018";
	
	/**
	 * 検索表示タイトル
	 */
	private static final String SEARCH_SC_TITLE = "KUSV001801SC";
	/**
	 * 検索処理最大検索件数
	 */
	private static final String SEARCH_MAX_SHOW_CNT = "KUW00501_MAX_SHOW_CNT";
	
	/**
	 * 検索処理ページ表示件数
	 */
	private static final String SEARCH_ROW_PER_PAGE = "KUW00501_ROW_PER_PAGE";
	
	/**
	 * 初期化処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Init() throws Exception
	{
		
		return kuw00501_Init();
		
	}
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean kuw00501_Init() throws Exception
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00501);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00501);

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 遷移元画面ＩＤを設定
		String screenId = JCCWebCommon.getScreenId(this);
		
		//検索パターン 1:遷移元が自業務 2:遷移元が他業務 3:遷移元が完了画面(自業務)
		String searchPattern = getSearchPattern00501(screenId);
		
		// 再検索フラグ
		String re_search_flg = JKUStrConst.RESEARCH_FLG_FALSE;
		
		// 遷移元画面IDが自業務
		if(JKUStrConst.SEARCH_PATTERN_1.equals(searchPattern))
		{ 
			// 再検索フラグにTRUEを設定
			re_search_flg = JKUStrConst.RESEARCH_FLG_TRUE;
			// セッション情報取得
			getSessionInfo(bean);
			
		}
		
		// 遷移元画面IDが他業務
		if(JKUStrConst.SEARCH_PATTERN_2.equals(searchPattern))
		{
			// 戻るボタン表示フラグ設定処理
			bean.sendMessageString(KUW00501SFConst.RTRN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_TRUE);
			// 他業務IDをビーンに設定
			bean.sendMessageString(KUW00501SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_SET_VALUE, screenId);
		}
		
		// 遷移元画面IDが完了画面(自業務)
		if(JKUStrConst.SEARCH_PATTERN_3.equals(searchPattern))
		{
			
			getOtherScAndClear(bean);
			
		}
		
		// サービス呼出処理
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// マッピングクラスのインスタンスを生成
		KUSV0019_KUSV0019OPDBMapper mapper = new KUSV0019_KUSV0019OPDBMapper();
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID_01);
		
		// 上りマッピング
		// マッピングクラスの呼び出し
		mapper.setKUSV001901SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKUSV001901CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		// オペレーション日付取得
		String opeDate = JCCWebCommon.getOpeDate(this, null); 
		
		((HashMap<String, Object>)inputMap.get(INIT_SC_TITLE)).put("key_stdardymd", opeDate);
		((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE)).put(JKUStrConst.RESEARCH_FLG_NM, re_search_flg);
		// 一覧照会共通部設定
		((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE)).put("search_type", JPCModelConstant.SAERCH_TYPE_BBN);
		((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE)).put("max_search_num", JCCWebCommon.getSearchConst(SEARCH_MAX_SHOW_CNT));
		((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE)).put("display_num", JCCWebCommon.getSearchConst(SEARCH_ROW_PER_PAGE));
		
		// ページリンク情報のマッピング
		JCCWebCommon.upmapperPageLinkInfo(this, INIT_CC_TITLE, inputMap);

		// 一覧表示フラグの設定処理
		bean.sendMessageString(KUW00501SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_FALSE);

		// サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		JCCMessageCache.setMessageCache();
		HashMap parentMap = null;
		
		// 下りマッピング
		// マッピングクラスの呼び出し
		mapper.getKUSV001901SC(paramBean, outputMap);
		mapper.getKUSV001901CC(paramBean, outputMap);
		if(outputMap.containsKey(INIT_CC_TITLE))
		{
			parentMap = (HashMap)outputMap.get(INIT_CC_TITLE);
		}
		
		if(JKUStrConst.SEARCH_PATTERN_1.equals(searchPattern))
		{
			// 検索エラーフラグの取得
			String searchErrFlg = JCCWebCommon.getSearchErrFlg(INIT_CC_TITLE, outputMap);
			if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
			{
				// 検索結果が0件の場合の処理
				JCCWebCommon.setMessageInfo(this, "EKB0330--I");
			}
			else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
			{
				String[] msgRp1 = new String[]{JCCWebCommon.getSearchConst("KUW00501_MAX_SHOW_CNT")};
				// 検索結果が最大検索件数超えの場合の処理
				JCCWebCommon.setMessageInfo(this, "EKB0340--I", msgRp1);
			}
			else if(JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
			{
				JCCWebCommon.setMessageInfo(this, "EKB0350--I");
				
				// 一覧表示フラグ設定処理
				bean.sendMessageString(KUW00501SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_TRUE);
				
				// 行選択設定処理
				// 1行目を選択
				paramBean[0].sendMessageString(KUW00501SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");
				
				// 検索コマンドIDの設定
				JCCWebCommon.setSearchCommand(this, "pageLink");
			}
			else
			{
				
				// 一覧表示フラグ設定処理
				bean.sendMessageString(KUW00501SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_TRUE);
				
				// 行選択設定処理
				X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(KUW00501SFConst.EKU0131B010CBSMSG1LIST);
				for (int i = 0; i < beanList.getCount() ; i++)
				{
					X31SDataBeanAccess ekuKojiKmkList = bean.getDataBeanArray(KUW00501SFConst.EKU0131B010CBSMSG1LIST).getDataBean(i);
					String koji_bunrui_cd = bean.sendMessageString(KUW00501SFConst.CHOICE_KOJI_BUNRUI_CD, X31CWebConst.DATABEAN_GET_VALUE);
					String kojihi_kmk_cd = bean.sendMessageString(KUW00501SFConst.CHOICE_KOJIHI_KMK_CD, X31CWebConst.DATABEAN_GET_VALUE);
					String kojihi_tanka_cd = bean.sendMessageString(KUW00501SFConst.CHOICE_KOJIHI_TANKA_CD, X31CWebConst.DATABEAN_GET_VALUE);
					String gene_add_dtm = bean.sendMessageString(KUW00501SFConst.CHOICE_GENE_ADD_DTM, X31CWebConst.DATABEAN_GET_VALUE);
					if (ekuKojiKmkList.sendMessageString(KUW00501SFConst.KOJI_BUNRUI_CD_02, X31CWebConst.DATABEAN_GET_VALUE).equals(koji_bunrui_cd) &&
							ekuKojiKmkList.sendMessageString(KUW00501SFConst.KOJIHI_KMK_CD_02, X31CWebConst.DATABEAN_GET_VALUE).equals(kojihi_kmk_cd) &&
								ekuKojiKmkList.sendMessageString(KUW00501SFConst.KOJIHI_TANKA_CD_02, X31CWebConst.DATABEAN_GET_VALUE).equals(kojihi_tanka_cd) &&
									ekuKojiKmkList.sendMessageString(KUW00501SFConst.GENE_ADD_DTM_02, X31CWebConst.DATABEAN_GET_VALUE).equals(gene_add_dtm))
					{
						paramBean[0].sendMessageString(KUW00501SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, Integer.toString(i));
						break;
					}
				}
				
				// 検索コマンドIDの設定
				JCCWebCommon.setSearchCommand(this, "pageLink");
				
				// 検索条件の保持
				setSessionInfo(false);
			}
		}
		
		return true;
	}
	
	/**
	 * 検索処理
	 * @return search関数
	 * @throws Exception 例外発生時
	 */
	public boolean action_Search() throws Exception
	{
		// ページリンク情報をセッションから削除
		JCCWebCommon.clearPageLinkInfo(this, JKUScreenConst.SCREEN_ID_KUW00501 + "0PJP");
		return search();
		
	}

	/**
	 * 戻るボタン押下イベント
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Rtrn() throws Exception
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 他業務画面ID
		String screenId = bean.sendMessageString(KUW00501SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, screenId);
		
		return true;
	}
	
	/**
	 * 更新処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Update() throws Exception
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 引き継ぎ情報を格納するMAP、次ページへの引き継ぎ
		HashMap<String, Object> hktgiMap = makeHktgiMap(bean, true);
		
		// 検索条件の保持
		hojiForShkDisp(bean);
		
		// 次画面に渡す情報を設定
		JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00505, hktgiMap);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00505);
	
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00505);
		
		return true;
		
	}
	
	/**
	 * 削除処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Delete() throws Exception
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 引き継ぎ情報を格納するMAP、次ページへの引き継ぎ
		HashMap<String, Object> hktgiMap = makeHktgiMap(bean, true);
		
		// 検索条件の保持
		hojiForShkDisp(bean);
		
		// 次画面に渡す情報を設定
		JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00508, hktgiMap);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00508);
	
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00508);
		
		return true;
	}
	
	/**
	 * 次画面引き継ぎマップの作成
	 * @param bean
	 * @param btn_flg 更新削除ボタン押下時：True 新規登録ボタン押下時：False
	 * @return HashMap
	 * @throws Exception 
	 */
	private HashMap<String, Object> makeHktgiMap(X31SDataBeanAccess bean, boolean btn_flg) throws Exception
	{
		
		HashMap<String, Object> hktgiMap = new HashMap<String, Object>();
		
		// 選択値
		String idx = bean.sendMessageString(KUW00501SFConst.CHOICE, X31CWebConst.DATABEAN_GET_VALUE);
		// 工事作業項目一覧照会明細リスト
		X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00501SFConst.EKU0131B010CBSMSG1LIST).getDataBean(Integer.parseInt(idx));
		// 工事分類コード
		String koji_bunrui_cd = listDataBean.sendMessageString(KUW00501SFConst.KOJI_BUNRUI_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
		// 工事費作業項目コード
		String kojihi_kmk_cd = listDataBean.sendMessageString(KUW00501SFConst.KOJIHI_KMK_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
		// 工事費単価コード
		String kojihi_tanka_cd = listDataBean.sendMessageString(KUW00501SFConst.KOJIHI_TANKA_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
		// 予約適用年月日
		String rsv_aply_ymd = listDataBean.sendMessageString(KUW00501SFConst.RSV_APLY_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		hktgiMap.put(KUW00501SFConst.KOJI_BUNRUI_CD_02, koji_bunrui_cd);
		hktgiMap.put(KUW00501SFConst.KOJIHI_KMK_CD_02, kojihi_kmk_cd);
		hktgiMap.put(KUW00501SFConst.KOJIHI_TANKA_CD_02, kojihi_tanka_cd);
		hktgiMap.put(KUW00501SFConst.RSV_APLY_YMD_02, rsv_aply_ymd);
		
		return hktgiMap;
	}
	
	/**
	 * ページング処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Paging() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// セッション情報の取得
		getSessionInfo(bean);
		
		return search();
	}
	
	/**
	 * 検索実行処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean search() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 選択されている工事分類コードを設定
		JKUWebCommon.setSelectListCd(bean, KUW00501SFConst.KOJI_BUNRUI_CD_LIST, KUW00501SFConst.KOJI_BUNRUI_CD);
		
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// ユースケースIDを設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SEARCH_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		KUSV0018_KUSV0018OPDBMapper mapper = new KUSV0018_KUSV0018OPDBMapper();
		mapper.setKUSV001801SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		// 一覧照会共通部設定
		((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE)).put("search_type", JPCModelConstant.SAERCH_TYPE_BBN);
		((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE)).put("max_search_num", JCCWebCommon.getSearchConst(SEARCH_MAX_SHOW_CNT));
		((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE)).put("display_num", JCCWebCommon.getSearchConst(SEARCH_ROW_PER_PAGE));
		
		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, SEARCH_SC_TITLE, inputMap);

		// 一覧表示フラグ設定処理
		bean.sendMessageString(KUW00501SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_FALSE);
		
		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		JCCMessageCache.setMessageCache();
		
		//一覧情報のクリア
		X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(KUW00501SFConst.EKU0131B010CBSMSG1LIST);
		if(beanList.getCount() != 0)
		{
			
			beanList.clearArray();
			
		}
				
		// マッピングクラスの呼び出し
		mapper.getKUSV001801SC(paramBean, outputMap);
		
		// ページリンク情報のマッピング
		JCCWebCommon.downmapperPageLinkInfo(this, SEARCH_SC_TITLE, outputMap);
		
		// 検索エラー取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg(SEARCH_SC_TITLE, outputMap);

		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			// 検索結果が0件の場合の処理
			JCCWebCommon.setMessageInfo(this, "EKB0330--I");
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			String[] msgRp1 = new String[]{JCCWebCommon.getSearchConst(SEARCH_MAX_SHOW_CNT)};
			// 検索結果が最大検索件数超えの場合の処理
			JCCWebCommon.setMessageInfo(this, "EKB0340--I", msgRp1);
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			//表示ページに該当するデータがない場合
			JCCWebCommon.setMessageInfo(this, "EKB0350--I");
			return true;
		}
		else
		{
			// 一覧表示フラグ設定処理
			bean.sendMessageString(KUW00501SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_TRUE);
			
			// 1行目を選択
			paramBean[0].sendMessageString(KUW00501SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 検索コマンドIDの設定
			JCCWebCommon.setSearchCommand(this, "pageLink");
		}

		/**
		 * セッション設定処理
		 */
		setSessionInfo(false);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00501);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00501);
		
		return true;
	}
	
	/**
	 * 他画面からの遷移用の条件保持
	 * @param bean
	 * @throws Exception
	 */
	private void hojiForShkDisp(X31SDataBeanAccess bean) throws Exception
	{
		
		// セッション情報取得
		getSessionInfo(bean);
		
		// セッション情報の設定
		setSessionInfo(true);
	}

	/**
	 * セッションに検索条件を保持する
	 * @param forShkDisp 初期表示フラグ
	 * @throws Exception
	 */
	private void setSessionInfo(boolean forShkDisp) throws Exception
	{
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 引き継ぎ情報を格納するMAP
		HashMap<String, Object> hktgiMap = new HashMap<String, Object>();

		// 検索条件の保持
		// 工事費項目コード
		String kojihi_kmk_cd = bean.sendMessageString(KUW00501SFConst.KOJIHI_KMK_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// 工事費単価コード
		String kojihi_tanka_cd = bean.sendMessageString(KUW00501SFConst.KOJIHI_TANKA_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// 他業務画面ID
		String other_screenId = bean.sendMessageString(KUW00501SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_GET_VALUE);
		// 工事分類コードインデックス
		String idx = JKUWebCommon.getSelectListIdx(bean, KUW00501SFConst.KOJI_BUNRUI_CD_LIST);
		// 工事分類コード
		String koji_bunrui_cd = bean.sendMessageString(KUW00501SFConst.KOJI_BUNRUI_CD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 初期処理用の保持の場合は一覧で選択されたデータをセッションに保持する。
		if(forShkDisp)
		{
			// 選択工事分類コード
			String choice_koji_bunrui_cd = 
				JKUWebCommon.getRadioSelectedValue(bean, KUW00501SFConst.EKU0131B010CBSMSG1LIST, KUW00501SFConst.CHOICE, KUW00501SFConst.KOJI_BUNRUI_CD_02);
			// 選択工事費項目コード
			String choice_kojihi_kmk_cd = 
				JKUWebCommon.getRadioSelectedValue(bean, KUW00501SFConst.EKU0131B010CBSMSG1LIST, KUW00501SFConst.CHOICE, KUW00501SFConst.KOJIHI_KMK_CD_02);
			// 選択工事費単価コード
			String choice_kojihi_tanka_cd = 
				JKUWebCommon.getRadioSelectedValue(bean, KUW00501SFConst.EKU0131B010CBSMSG1LIST, KUW00501SFConst.CHOICE, KUW00501SFConst.KOJIHI_TANKA_CD_02);
			// 選択世代登録年月日時分秒
			String choice_gene_add_dtm = 
				JKUWebCommon.getRadioSelectedValue(bean, KUW00501SFConst.EKU0131B010CBSMSG1LIST, KUW00501SFConst.CHOICE, KUW00501SFConst.GENE_ADD_DTM_02);
			
			hktgiMap.put(KUW00501SFConst.CHOICE_KOJI_BUNRUI_CD, choice_koji_bunrui_cd);
			hktgiMap.put(KUW00501SFConst.CHOICE_KOJIHI_KMK_CD, choice_kojihi_kmk_cd);
			hktgiMap.put(KUW00501SFConst.CHOICE_KOJIHI_TANKA_CD, choice_kojihi_tanka_cd);
			hktgiMap.put(KUW00501SFConst.CHOICE_GENE_ADD_DTM, choice_gene_add_dtm);
			
		}
		
		hktgiMap.put(KUW00501SFConst.INDEX_01, idx);
		hktgiMap.put(KUW00501SFConst.KOJI_BUNRUI_CD, koji_bunrui_cd);
		hktgiMap.put(KUW00501SFConst.KOJIHI_KMK_CD, kojihi_kmk_cd);
		hktgiMap.put(KUW00501SFConst.KOJIHI_TANKA_CD, kojihi_tanka_cd);
		hktgiMap.put(KUW00501SFConst.OTHER_SCREENID, other_screenId);
		
		// 次画面に渡す情報を設定
		JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00501, hktgiMap);
	}
	
	/**
	 * セッションから検索条件を取得する
	 * @param bean
	 */
	private void getSessionInfo(X31SDataBeanAccess bean) 
	{
		
		// セッション情報取得
		HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this);
		
		if(searchInfo != null)
		{
			
			// 工事費項目コード
			bean.sendMessageString(KUW00501SFConst.KOJIHI_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00501SFConst.KOJIHI_KMK_CD).toString());
			// 工事費単価コード
			bean.sendMessageString(KUW00501SFConst.KOJIHI_TANKA_CD, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00501SFConst.KOJIHI_TANKA_CD).toString());
			// 工事分類コード
			bean.sendMessageString(KUW00501SFConst.KOJI_BUNRUI_CD, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00501SFConst.KOJI_BUNRUI_CD).toString());
			// 工事分類コードインデックス 
			JKUWebCommon.setListIndex(bean, KUW00501SFConst.KOJI_BUNRUI_CD_LIST, searchInfo.get(KUW00501SFConst.INDEX_01).toString());
			
			// 他業務画面IDがNULLor空白でない場合
			if(null != searchInfo.get(KUW00501SFConst.OTHER_SCREENID) && !"".equals(searchInfo.get(KUW00501SFConst.OTHER_SCREENID).toString()))
			{
				
				// 他業務IDをビーンに設定
				bean.sendMessageString(KUW00501SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_SET_VALUE, 
						searchInfo.get(KUW00501SFConst.OTHER_SCREENID).toString());
				// 戻るボタン表示フラグを設定
				bean.sendMessageString(KUW00501SFConst.RTRN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_TRUE);
			}
		}
		
	}
	
	/**
	 * セッションから他業務画面IDを取得&フォームをクリアする
	 * @param bean
	 */
	private void getOtherScAndClear(X31SDataBeanAccess bean)
	{
		
		// セッション情報取得
		HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this);
		
		if(searchInfo != null)
		{
			
			ArrayList<String> keyList = new ArrayList<String>();
			// 工事費項目コード
			keyList.add(KUW00501SFConst.KOJIHI_KMK_CD);
			// 工事費単価コード
			keyList.add(KUW00501SFConst.KOJIHI_TANKA_CD);
			// 工事分類コード
			keyList.add(KUW00501SFConst.KOJI_BUNRUI_CD);
			// テキストボックスのセッション情報をクリア
			JKUWebCommon.clearTxtBean(bean, keyList);
			
			// 他業務画面IDがNULLでない場合、他業務画面IDを取得する
			if(null != searchInfo.get(KUW00501SFConst.OTHER_SCREENID) && !"".equals(searchInfo.get(KUW00501SFConst.OTHER_SCREENID).toString()))
			{
				
				// 他業務IDをビーンに設定
				bean.sendMessageString(KUW00501SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_SET_VALUE,
						searchInfo.get(KUW00501SFConst.OTHER_SCREENID).toString());
				// 戻るボタン表示フラグを設定
				bean.sendMessageString(KUW00501SFConst.RTRN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_TRUE);
			}
		}
		
	}
	
	/**
	 * 検索パターン取得処理
	 * @param screenId 画面ID
	 * @return searchPattern 検索パターン
	 */
	public String getSearchPattern00501(String screenId)
	{
		
		String searchPattern = "";
		String lscreenId = "";
		boolean fin_flg = false;
		
		// 画面IDがNULLor空白でない場合
		if(!JKUCommonUtil.isNull(screenId))
		{
			
			// 完了画面からの遷移してきた場合
			if(JKUScreenConst.SCREEN_ID_KUW00504.equals(screenId) || JKUScreenConst.SCREEN_ID_KUW00507.equals(screenId) 
					|| JKUScreenConst.SCREEN_ID_KUW00509.equals(screenId))
			{
				// 完了画面フラグ
				fin_flg = true; 
			
			}
			else
			{
				
				//画面IDが空白でなければ頭の三文字を設定
				lscreenId = screenId.substring(0, 3);
			}
			
		}
		
		//頭三文字が「KUW」の場合は自業務からの遷移、空白でなければ他業務からの遷移、完了フラグがTRUEの場合は完了画面からの遷移
		if("KUW".equals(lscreenId))
		{
			
			searchPattern = JKUStrConst.SEARCH_PATTERN_1;
			
		}
		else if(!"".equals(lscreenId))
		{
			
			searchPattern = JKUStrConst.SEARCH_PATTERN_2;
			
		}
		else if(fin_flg)
		{ 
			
			searchPattern = JKUStrConst.SEARCH_PATTERN_3;
			
		}
		
		return searchPattern;
	}
	

}
