/*********************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KUW00301SFLogic
*	ソースファイル名：KUW00301SFLogic.java
*	作成者			：富士通
*	日付			：2012年01月18日
*＜機能概要＞
*	帯域変更一覧照会画面のロジックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v2.00.00	2012/01/18	FJ)高橋		新規作成
*
**********************************************************************/
package eo.web.webview.KUW00301SF;

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.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KUW00301SF.KUW00301SFConst;
import eo.web.webview.KUW00302SF.KUW00302SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCCMessageCache;
import eo.web.webview.common.JKUScreenConst;
import eo.web.webview.common.JKUWebCommon;
import eo.web.webview.mapping.KUSV0013_KUSV0013OPDBMapper;
import eo.web.webview.mapping.KUSV0031_KUSV0031OPDBMapper;
import eo.web.webview.mapping.KUSV0032_KUSV0032OPDBMapper;
import eo.web.webview.mapping.KUSV0033_KUSV0033OPDBMapper;

import eo.common.constant.JKUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JPCUtilCommon;

/**
 * 帯域変更一覧照会のロジッククラスです。
 * @author 富士通
 */
public class KUW00301SFLogic extends JCCWebBusinessLogic 
{
	/**
	 * 初期表示ユースケースID01
	 */
	private static final String INIT_USECASE_ID_01 = "KUSV0033";
	
	/**
	 * 初期表示ユースケースID02
	 */
	private static final String INIT_USECASE_ID_02 = "KUSV0013";
	
	/**
	 * 初期表示SCタイトル01
	 */
	private static final String INIT_SC_TITLE_01 = "KUSV003301SC";
	
	/**
	 * 初期表示SCタイトル02
	 */
	private static final String INIT_SC_TITLE_02 = "KUSV001301SC";
	
	/**
	 * 初期表示CCタイトル01
	 */
	private static final String INIT_CC_TITLE_01 = "KUSV003301CC";
	
	/**
	 * 初期表示CCタイトル02
	 */
	private static final String INIT_CC_TITLE_02 = "KUSV001301CC";
	
	/**
	 * 検索ユースケースID01
	 */
	private static final String SEARCH_USECASE_ID_01 = "KUSV0031";
	
	/**
	 * 検索ユースケースID02
	 */
	private static final String SEARCH_USECASE_ID_02 = "KUSV0032";
	
	/**
	 * 検索SCタイトル01
	 */
	private static final String SEARCH_SC_TITLE_01 = "KUSV003101SC";
	
	/**
	 * 検索SCタイトル02
	 */
	private static final String SEARCH_SC_TITLE_02 = "KUSV003201SC";
	
	/**
	 * 検索処理最大検索件数
	 */
	private static final String SEARCH_MAX_SHOW_CNT = "KUW00301_MAX_SHOW_CNT";
	
	/**
	 * 検索処理ページ表示件数
	 */
	private static final String SEARCH_ROW_PER_PAGE = "KUW00301_ROW_PER_PAGE";
	
	/**
	 * 選択値OLT設定変更情報
	 */
	private static final String CHOICE_OLT = "1";
	
	/**
	 * 選択値GE-PON設定変更情報
	 */
	private static final String CHOICE_GEPON = "2";
	
	/**
	 * 種別インデックス
	 */
	private static final String IDX_SBT = "種別インデックス";
	
	/**
	 * 日時インデックス
	 */
	private static final String IDX_DATE = "日時インデックス";
	
	/**
	 * 時FROMインデックス
	 */
	private static final String IDX_TIME_FROM = "時FROMインデックス";
	
	/**
	 * 時TOインデックス
	 */
	private static final String IDX_TIME_TO = "時TOインデックス";
	
	/**
	 * 設定結果インデックス
	 */
	private static final String IDX_SETTE_RSLT_CD = "設定結果コードインデックス";
	
	/**
	 * 時From配列プルダウン用
	 */
	private static final String[] TIME_FROM_LIST = {"", "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
		"11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"};
	
	/**
	 * 時To配列プルダウン用
	 */
	private static final String[] TIME_TO_LIST = {"", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
		"11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"};
	
	
	/**
	 * 初期化処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Init() throws Exception
	{
		return kuw00301_init();
	}
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean kuw00301_init() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00301);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00301);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 条件部の設定
		setForm();
		
		// 遷移元画面ＩＤを設定
		String screenId = JCCWebCommon.getScreenId(this);
		
		// 検索パターン 1:遷移元が自業務 2:遷移元が他業務 3:遷移元がメニュー
		String searchPattern = JKUWebCommon.getSearchPattern(screenId);
		
		// 再検索フラグ
		String re_search_flg = JKUStrConst.RESEARCH_FLG_FALSE;
		
		// 種別初期化
		String stb = CHOICE_OLT;
		
		// 日付種別初期化
		String func_code = JPCModelConstant.FUNC_CD_1;
		
		// 遷移元画面IDが自業務
		if(JKUStrConst.SEARCH_PATTERN_1.equals(searchPattern))
		{
			re_search_flg = JKUStrConst.RESEARCH_FLG_TRUE;
			getSessionInfo(bean);
			setSearchJoken(bean, true);
			stb = JKUWebCommon.getSelectListCd(bean, KUW00301SFConst.SBT_LIST);
			func_code = JKUWebCommon.getSelectListCd(bean, KUW00301SFConst.DATE_SBT_LIST);
		}
		
		// 遷移元画面IDが他業務
		if(JKUStrConst.SEARCH_PATTERN_2.equals(searchPattern))
		{
			// 戻るボタン表示フラグ設定処理
			bean.sendMessageString(KUW00301SFConst.RTRN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_TRUE);
			// 他業務IDをビーンに設定
			bean.sendMessageString(KUW00301SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_SET_VALUE, screenId);
		}
		
		// 遷移元画面が再送完了画面の時のみ
		if(JKUScreenConst.SCREEN_ID_KUW00303.equals(screenId))
		{
			//ページリンク情報をセッションから削除
			JCCWebCommon.clearPageLinkInfo(this, JKUScreenConst.SCREEN_ID_KUW00301 + "0PJP");
		}
		
		// サービス呼出処理
		// ユースケース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>();
		
		// マッピングクラスのインスタンスを生成
		KUSV0033_KUSV0033OPDBMapper mapperOlt = new KUSV0033_KUSV0033OPDBMapper();
		KUSV0013_KUSV0013OPDBMapper mapperGepon = new KUSV0013_KUSV0013OPDBMapper();
		
		if(CHOICE_OLT.equals(stb))
		{
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID_01);
			
			// 上りマッピング
			// マッピングクラスの呼び出し
			mapperOlt.setKUSV003301SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			mapperOlt.setKUSV003301CC(paramBean, inputMap, func_code);
			
			// オペレーション日付取得
			String opeDate = JCCWebCommon.getOpeDate(this, null); 
			
			if (inputMap.containsKey(INIT_SC_TITLE_01))
			{
				((HashMap<String, Object>)inputMap.get(INIT_SC_TITLE_01)).put("key_stdardymd", opeDate);
			}
			
			if (inputMap.containsKey(INIT_CC_TITLE_01))
			{
				((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE_01)).put(JKUStrConst.RESEARCH_FLG_NM, re_search_flg);
				// 一覧照会共通部設定
				((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE_01)).put("search_type", JPCModelConstant.SAERCH_TYPE_BBN);
				((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE_01)).put("max_search_num", JCCWebCommon.getSearchConst(SEARCH_MAX_SHOW_CNT));
				((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE_01)).put("display_num", JCCWebCommon.getSearchConst(SEARCH_ROW_PER_PAGE));
			}
			
			// ページリンク情報のマッピング
			JCCWebCommon.upmapperPageLinkInfo(this, INIT_CC_TITLE_01, inputMap);
		}
		else
		{
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID_02);
			
			// 上りマッピング
			// マッピングクラスの呼び出し
			mapperGepon.setKUSV001301SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			mapperGepon.setKUSV001301CC(paramBean, inputMap, func_code);
			
			// オペレーション日付取得
			String opeDate = JCCWebCommon.getOpeDate(this, null); 
			
			if (inputMap.containsKey(INIT_SC_TITLE_02))
			{
				((HashMap<String, Object>)inputMap.get(INIT_SC_TITLE_02)).put("key_stdardymd", opeDate);
			}
			
			if (inputMap.containsKey(INIT_CC_TITLE_02))
			{
				((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE_02)).put(JKUStrConst.RESEARCH_FLG_NM, re_search_flg);
				// 一覧照会共通部設定
				((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE_02)).put("search_type", JPCModelConstant.SAERCH_TYPE_BBN);
				((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE_02)).put("max_search_num", JCCWebCommon.getSearchConst(SEARCH_MAX_SHOW_CNT));
				((HashMap<String, Object>)inputMap.get(INIT_CC_TITLE_02)).put("display_num", JCCWebCommon.getSearchConst(SEARCH_ROW_PER_PAGE));
			}
			
			// ページリンク情報のマッピング
			JCCWebCommon.upmapperPageLinkInfo(this, INIT_CC_TITLE_02, inputMap);
		}
		
		// 一覧表示フラグの設定処理
		bean.sendMessageString(KUW00301SFConst.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;
		String searchErrFlg = "";
		
		if(CHOICE_OLT.equals(stb))
		{
			// 下りマッピング
			// マッピングクラスの呼び出し
			mapperOlt.getKUSV003301SC(paramBean, outputMap);
			mapperOlt.getKUSV003301CC(paramBean, outputMap);
			if(outputMap.containsKey(INIT_CC_TITLE_01))
			{
				parentMap = (HashMap)outputMap.get(INIT_CC_TITLE_01);
			}
			
			// 検索エラー取得
			searchErrFlg = JCCWebCommon.getSearchErrFlg(INIT_CC_TITLE_01, outputMap);
		}
		else
		{
			// 下りマッピング
			// マッピングクラスの呼び出し
			mapperGepon.getKUSV001301SC(paramBean, outputMap);
			mapperGepon.getKUSV001301CC(paramBean, outputMap);
			
			if(outputMap.containsKey(INIT_CC_TITLE_02))
			{
				parentMap = (HashMap)outputMap.get(INIT_CC_TITLE_02);
			}
			
			// 検索エラー取得
			searchErrFlg = JCCWebCommon.getSearchErrFlg(INIT_CC_TITLE_02, 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);
			return true;
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			if(CHOICE_OLT.equals(stb))
			{
				// ページリンク情報のマッピング
				JCCWebCommon.downmapperPageLinkInfo(this, INIT_CC_TITLE_01, outputMap);
			}
			else
			{
				// ページリンク情報のマッピング
				JCCWebCommon.downmapperPageLinkInfo(this, INIT_CC_TITLE_02, outputMap);
			}
			
			// 遷移元画面が再送完了画面でない時はエラーメッセージを表示
			if(!JKUScreenConst.SCREEN_ID_KUW00303.equals(screenId))
			{
				String[] msgRp = null;
				
				if(CHOICE_OLT.equals(stb))
				{
					msgRp = new String[]{"OLT設定変更", "データ"};
				}
				else
				{
					msgRp = new String[]{"イーサネット帯域変更", "データ"};
				}
				
				// メッセージの設定
				JCCWebCommon.setMessageInfo(this, "EKB0300-KW", msgRp);
			}
			
			
			// 一覧表示フラグ設定処理
			bean.sendMessageString(KUW00301SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_TRUE);
			
			// 行選択設定処理
			// 1行目を選択
			paramBean[0].sendMessageString(KUW00301SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 検索コマンドIDの設定
			JCCWebCommon.setSearchCommand(this, "pageLink");
			
			// 検索条件の保持
			setSessionInfo(false);
		}
		else if(parentMap.containsKey("EKU0211B010CBSMsg1List") || parentMap.containsKey("EKU0221B010CBSMsg1List"))
		{
			
			if(CHOICE_OLT.equals(stb))
			{
				// ページリンク情報のマッピング
				JCCWebCommon.downmapperPageLinkInfo(this, INIT_CC_TITLE_01, outputMap);
			}
			else
			{
				// ページリンク情報のマッピング
				JCCWebCommon.downmapperPageLinkInfo(this, INIT_CC_TITLE_02, outputMap);
			}
			
			// 一覧表示フラグ設定処理
			bean.sendMessageString(KUW00301SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_TRUE);
			
			// 遷移元画面が再送完了の場合は一行目を選択
			if(JKUScreenConst.SCREEN_ID_KUW00303.equals(screenId))
			{
				// 1行目を選択
				paramBean[0].sendMessageString(KUW00301SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");
			}
			else
			{
				// 行選択設定処理
				X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(KUW00301SFConst.CBSMSGLIST);
				for (int i = 0; i < beanList.getCount() ; i++)
				{
					X31SDataBeanAccess ekulist = bean.getDataBeanArray(KUW00301SFConst.CBSMSGLIST).getDataBean(i);
					String chg_no = bean.sendMessageString(KUW00301SFConst.CHOICE_CHG_NO, X31CWebConst.DATABEAN_GET_VALUE);
					if (ekulist.sendMessageString(KUW00301SFConst.CHG_NO_02, X31CWebConst.DATABEAN_GET_VALUE).equals(chg_no))
					{
						paramBean[0].sendMessageString(KUW00301SFConst.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_KUW00301 + "0PJP");
		return search();
	}
	
	/**
	 * ページング処理
	 * @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 action_Saiso() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 引き継ぎ情報を格納するMAP
		HashMap<String, Object> hktgiMap = new HashMap<String, Object>();
		
		// 引き継ぎ情報を取得 
		String chg_no = JKUWebCommon.getRadioSelectedValue(bean, KUW00301SFConst.CBSMSGLIST, KUW00301SFConst.CHOICE,
				KUW00301SFConst.CHG_NO_02);
		
		hojiForShkDisp(bean);
		
		// 種別の取得 
		String stb = JKUWebCommon.getSelectListCd(bean, KUW00301SFConst.SBT_LIST);
		
		hktgiMap.put(KUW00302SFConst.CHG_NO, chg_no);
		hktgiMap.put(KUW00302SFConst.SBT, stb);
		
		// 次画面に渡す情報を設定
		JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00302, hktgiMap);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00302);
	
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00302);
		
		return true;
	}
	
	/**
	 * 戻るボタン押下イベント
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Rtrn() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		String screenId = bean.sendMessageString(KUW00301SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, screenId);
		
		return true;
	}
	
	/**
	 * 検索条件の設定処理
	 * @return boolean
	 */
	private void setForm()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 種別リスト
		ArrayList<String> sbtCd = new ArrayList<String>();
		ArrayList<String> sbtNm = new ArrayList<String>();
		// 種別リストの値設定
		sbtCd.add(CHOICE_OLT);
		sbtCd.add(CHOICE_GEPON);
		sbtNm.add("01.OLT設定変更情報");
		sbtNm.add("02.GE-PON設定変更情報");
		
		// 日付種別リスト
		ArrayList<String> dateSbtCd = new ArrayList<String>();
		ArrayList<String> dateSbtNm = new ArrayList<String>();
		// 日付種別リストの値設定
		dateSbtCd.add(JPCModelConstant.FUNC_CD_3);
		dateSbtCd.add(JPCModelConstant.FUNC_CD_1);
		dateSbtCd.add(JPCModelConstant.FUNC_CD_2);
		dateSbtNm.add("");
		dateSbtNm.add("01.依頼日時");
		dateSbtNm.add("02.応答日時");
		
		// 日付(時From)リスト
		ArrayList<String> jiFromCd = new ArrayList<String>();
		ArrayList<String> jiFromNm = new ArrayList<String>();
		for(int i = 0; i < TIME_FROM_LIST.length; i++)
		{
			// 日付(時From)リストの値設定
			jiFromNm.add(TIME_FROM_LIST[i]);
			jiFromCd.add(TIME_FROM_LIST[i]);
		}
		
		// 日付(時To)リスト
		ArrayList<String> jiToCd = new ArrayList<String>();
		ArrayList<String> jiToNm = new ArrayList<String>();
		for(int i = 0; i < TIME_TO_LIST.length; i++)
		{
			// 日付(時To)リストの値設定
			jiToCd.add(TIME_TO_LIST[i]);
			jiToNm.add(TIME_TO_LIST[i]);
		}
		
		// 種別リストの初期化
		JKUWebCommon.resetPull(bean, KUW00301SFConst.SBT_LIST, sbtCd, sbtNm);
		// 日付種別リストの初期化
		JKUWebCommon.resetPull(bean, KUW00301SFConst.DATE_SBT_LIST, dateSbtCd, dateSbtNm);
		// 日付(時From)リストの初期化
		JKUWebCommon.resetPull(bean, KUW00301SFConst.JI_FROM_LIST, jiFromCd, jiFromNm);
		// 日付種別リストの初期化
		JKUWebCommon.resetPull(bean, KUW00301SFConst.JI_TO_LIST, jiToCd, jiToNm);
	}
	
	/**
	 * 検索条件の設定
	 * @param bean
	 * @param shkDisp 初期表示判断フラグ
	 * @throws Exception
	 */
	private void setSearchJoken(X31SDataBeanAccess bean, boolean shkDisp) throws Exception
	{
		// 日時の設定
		String year = bean.sendMessageString(KUW00301SFConst.DATE_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 年が入力されていれば日付設定あり
		if(!"".equals(year))
		{
			String month = bean.sendMessageString(KUW00301SFConst.DATE_MON, X31CWebConst.DATABEAN_GET_VALUE);
			String day = bean.sendMessageString(KUW00301SFConst.DATE_DAY, X31CWebConst.DATABEAN_GET_VALUE);
			String ymd = year + month + day;
			
			// 時間Fromリストの選択値を取得
			String valFrom = JKUWebCommon.getSelectListCd(bean, KUW00301SFConst.JI_FROM_LIST);
			// 時間Fromが空白だっだ場合最小値00を設定
			if("".equals(valFrom))
			{
				valFrom = "00";
			}
			// 時間Toリストの選択値を取得
			String valTo = JKUWebCommon.getSelectListCd(bean, KUW00301SFConst.JI_TO_LIST);
			// 時間Toが空白だった場合は最大値24を設定
			if("".equals(valTo))
			{
				valTo = "24";
			}
			// Toは表示よりも一時間引いたものにする
			valTo = Integer.toString(Integer.parseInt(valTo) - 1);
			valTo = JPCUtilCommon.fillZero(valTo, 2, false);
			
			bean.sendMessageString(KUW00301SFConst.DATE_FROM, X31CWebConst.DATABEAN_SET_VALUE, ymd + valFrom + "00" + "00");
			bean.sendMessageString(KUW00301SFConst.DATE_TO, X31CWebConst.DATABEAN_SET_VALUE, ymd + valTo + "59" + "59");
		}
		else
		{
			bean.sendMessageString(KUW00301SFConst.DATE_FROM, X31CWebConst.DATABEAN_SET_VALUE, "");
			bean.sendMessageString(KUW00301SFConst.DATE_TO, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		
		// 設定結果コードの設定
		// 初期表示の場合は設定結果プルダウンが設定される前になるので、セッションに保持されている設定結果がDataBeanに設定される
		if(!shkDisp)
		{
			// 設定結果コードの選択値を取得
			JKUWebCommon.setSelectListCd(bean, KUW00301SFConst.SETTE_RSLT_CD_LIST, KUW00301SFConst.SETTE_RSLT_CD);
		}
	}
	
	/**
	 * セッションに検索条件を保持する
	 * @param forShkDisp 初期処理用の保持：True 検索ボタン押下後の保持：False
	 * @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 kojiak_no = bean.sendMessageString(KUW00301SFConst.KOJIAK_NO, X31CWebConst.DATABEAN_GET_VALUE);
		// サービス契約番号
		String svc_kei_no = bean.sendMessageString(KUW00301SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		// 年月日
		String year = bean.sendMessageString(KUW00301SFConst.DATE_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String month = bean.sendMessageString(KUW00301SFConst.DATE_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String day = bean.sendMessageString(KUW00301SFConst.DATE_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		// 種別
		String idxSbt = JKUWebCommon.getSelectListIdx(bean, KUW00301SFConst.SBT_LIST);
		// 時間種別
		String idxDate = JKUWebCommon.getSelectListIdx(bean, KUW00301SFConst.DATE_SBT_LIST);
		// 時(From)
		String idxTimeFrom = JKUWebCommon.getSelectListIdx(bean, KUW00301SFConst.JI_FROM_LIST);
		// 時(To)
		String idxTimeTo = JKUWebCommon.getSelectListIdx(bean, KUW00301SFConst.JI_TO_LIST);
		// 設定結果コード 
		String idxSetteRslt = JKUWebCommon.getSelectListIdx(bean, KUW00301SFConst.SETTE_RSLT_CD_LIST);
		String valSetteRslt = JKUWebCommon.getSelectListCd(bean, KUW00301SFConst.SETTE_RSLT_CD_LIST);
		// 他業務画面ID
		String other_screenId = bean.sendMessageString(KUW00301SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 初期処理用の保持の場合は一覧で選択されたデータの変更番号(PK)をセッションに保持する。
		if(forShkDisp)
		{
			String chg_no = JKUWebCommon.getRadioSelectedValue(bean, KUW00301SFConst.CBSMSGLIST, KUW00301SFConst.CHOICE, KUW00301SFConst.CHG_NO_02);
			hktgiMap.put(KUW00301SFConst.CHOICE_CHG_NO, chg_no);
		}
		
		hktgiMap.put(IDX_SBT, idxSbt);
		hktgiMap.put(IDX_DATE, idxDate);
		hktgiMap.put(IDX_TIME_FROM, idxTimeFrom);
		hktgiMap.put(IDX_TIME_TO, idxTimeTo);
		hktgiMap.put(IDX_SETTE_RSLT_CD, idxSetteRslt);		
		
		hktgiMap.put(KUW00301SFConst.KOJIAK_NO, kojiak_no);
		hktgiMap.put(KUW00301SFConst.SVC_KEI_NO, svc_kei_no);
		hktgiMap.put(KUW00301SFConst.DATE_YEAR, year);
		hktgiMap.put(KUW00301SFConst.DATE_MON, month);
		hktgiMap.put(KUW00301SFConst.DATE_DAY, day);
		hktgiMap.put(KUW00301SFConst.SETTE_RSLT_CD, valSetteRslt);
		hktgiMap.put(KUW00301SFConst.OTHER_SCREENID, other_screenId);
		
		// 次画面に渡す情報を設定
		JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00301, hktgiMap);
	}
	
	/**
	 * セッションから検索条件を取得する
	 * @param bean
	 */
	private void getSessionInfo(X31SDataBeanAccess bean)
	{
		// セッション情報取得
		HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this);
		
		if(searchInfo != null)
		{
			
			// 案件番号
			bean.sendMessageString(KUW00301SFConst.KOJIAK_NO, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00301SFConst.KOJIAK_NO).toString());
			// サービス契約番号
			bean.sendMessageString(KUW00301SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00301SFConst.SVC_KEI_NO).toString());
			// 年月日
			bean.sendMessageString(KUW00301SFConst.DATE_YEAR, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00301SFConst.DATE_YEAR).toString());
			bean.sendMessageString(KUW00301SFConst.DATE_MON, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00301SFConst.DATE_MON).toString());
			bean.sendMessageString(KUW00301SFConst.DATE_DAY, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00301SFConst.DATE_DAY).toString());
			
			// 種別
			JKUWebCommon.setListIndex(bean, KUW00301SFConst.SBT_LIST, searchInfo.get(IDX_SBT).toString());
			//日付種別
			JKUWebCommon.setListIndex(bean, KUW00301SFConst.DATE_SBT_LIST, searchInfo.get(IDX_DATE).toString());
			// 時(From)
			JKUWebCommon.setListIndex(bean, KUW00301SFConst.JI_FROM_LIST, searchInfo.get(IDX_TIME_FROM).toString());
			// 時(To)
			JKUWebCommon.setListIndex(bean, KUW00301SFConst.JI_TO_LIST, searchInfo.get(IDX_TIME_TO).toString());
			// 設定結果
			JKUWebCommon.setListIndex(bean, KUW00301SFConst.SETTE_RSLT_CD_LIST, searchInfo.get(IDX_SETTE_RSLT_CD).toString());
			
			if(null != searchInfo.get(KUW00301SFConst.OTHER_SCREENID) && !"".equals(searchInfo.get(KUW00301SFConst.OTHER_SCREENID).toString()))
			{
				// 他業務IDをビーンに設定
				bean.sendMessageString(KUW00301SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_SET_VALUE
						, searchInfo.get(KUW00301SFConst.OTHER_SCREENID).toString());
				// 戻るボタン表示フラグを設定
				bean.sendMessageString(KUW00301SFConst.RTRN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_TRUE);
			}
		}
	}
	
	/**
	 * 他画面からの遷移用の条件保持
	 * @param bean
	 * @throws Exception 
	 */
	private void hojiForShkDisp(X31SDataBeanAccess bean) throws Exception
	{
		// セッション情報取得
		getSessionInfo(bean);
		
		// セッション情報の設定
		setSessionInfo(true);
	}
	
	/**
	 * 検索実行処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean search() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 種別の取得
		String stb = JKUWebCommon.getSelectListCd(bean, KUW00301SFConst.SBT_LIST);
		
		// 日付種別の取得
		String func_code = JKUWebCommon.getSelectListCd(bean, KUW00301SFConst.DATE_SBT_LIST);
		// 日時From、日時To、設定結果コードの設定
		setSearchJoken(bean, false);
		
		// ユースケース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>();
		
		// DataBean⇔BPの上りマッピングを行う
		KUSV0031_KUSV0031OPDBMapper mapperOlt = new KUSV0031_KUSV0031OPDBMapper();
		KUSV0032_KUSV0032OPDBMapper mapperGepon = new KUSV0032_KUSV0032OPDBMapper();
		
		if(CHOICE_OLT.equals(stb))
		{
			// ユースケースＩＤを設定
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SEARCH_USECASE_ID_01);
			
			mapperOlt.setKUSV003101SC(paramBean, inputMap, func_code);
			
			// 一覧照会共通部設定
			((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE_01)).put("search_type", JPCModelConstant.SAERCH_TYPE_BBN);
			((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE_01)).put("max_search_num", JCCWebCommon.getSearchConst(SEARCH_MAX_SHOW_CNT));
			((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE_01)).put("display_num", JCCWebCommon.getSearchConst(SEARCH_ROW_PER_PAGE));
			// ページング情報の設定
			JCCWebCommon.upmapperPageLinkInfo(this, SEARCH_SC_TITLE_01, inputMap);
		}
		else
		{
			// ユースケースＩＤを設定
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SEARCH_USECASE_ID_02);
	
			// DataBean⇔BPの上りマッピングを行う
			mapperGepon.setKUSV003201SC(paramBean, inputMap, func_code);
			
			// 一覧照会共通部設定
			((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE_02)).put("search_type", JPCModelConstant.SAERCH_TYPE_BBN);
			((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE_02)).put("max_search_num", JCCWebCommon.getSearchConst(SEARCH_MAX_SHOW_CNT));
			((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE_02)).put("display_num", JCCWebCommon.getSearchConst(SEARCH_ROW_PER_PAGE));
			// ページング情報の設定
			JCCWebCommon.upmapperPageLinkInfo(this, SEARCH_SC_TITLE_02, inputMap);
		}
		
		
		// 一覧表示フラグ設定処理
		bean.sendMessageString(KUW00301SFConst.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(KUW00301SFConst.CBSMSGLIST);
		if(beanList.getCount() != 0)
		{
			
			beanList.clearArray();
		}
		
		// 検索エラーフラグ
		String searchErrFlg = "";
		
		// 下りマッピング
		if(CHOICE_OLT.equals(stb))
		{
			// マッピングクラスの呼び出し
			mapperOlt.getKUSV003101SC(paramBean, outputMap);
			
			// ページリンク情報のマッピング
			JCCWebCommon.downmapperPageLinkInfo(this, SEARCH_SC_TITLE_01, outputMap);
						
			// 検索エラー取得
			searchErrFlg = JCCWebCommon.getSearchErrFlg(SEARCH_SC_TITLE_01, outputMap);
		}
		else
		{
			// マッピングクラスの呼び出し
			mapperGepon.getKUSV003201SC(paramBean, outputMap);
			
			// ページリンク情報のマッピング
			JCCWebCommon.downmapperPageLinkInfo(this, SEARCH_SC_TITLE_02, outputMap);
			
			// 検索エラー取得
			searchErrFlg = JCCWebCommon.getSearchErrFlg(SEARCH_SC_TITLE_02, 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(KUW00301SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JKUStrConst.DISP_FLG_TRUE);
			
			// 1行目を選択
			paramBean[0].sendMessageString(KUW00301SFConst.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_KUW00301);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00301);
		
		return true;
	}
}
