/*********************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KUW00101SFLogic
*	ソースファイル名：KUW00101SFLogic.java
*	作成者			：富士通
*	日付			：2011年07月31日
*＜機能概要＞
*	工事案件一覧照会画面のロジックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/31	FJ)高橋		新規作成
*	v3.00.00	2012/01/31	FJ)高橋		【TAI-2011-0000041】他チームからの画面遷移
*	v10.00.00	2014/08/01	FJ)佐野		【ANK-1918-00-00】US管理システム対応
*	v53.00.00   2021/04/28	FJ)謝		【ANK-3989-00-00】マンション光コンセント方式への5G・10Gコース追加
*	v60.00.00	2022/06/21	 FJ)Arah	【ANK-4244-00-00】【eo定期】MT既設賃貸対応
**********************************************************************/
package eo.web.webview.KUW00101SF;

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.KUW00101SF.KUW00101SFConst;
import eo.web.webview.KUW00102SF.KUW00102SFConst;
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.KUSV0002_KUSV0002OPDBMapper;
import eo.web.webview.mapping.KUSV0003_KUSV0003OPDBMapper;

import eo.common.constant.JKUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKUCommonUtil;

/**
 * 工事案件一覧照会のロジッククラスです。
 * @author 富士通
 */
public class KUW00101SFLogic extends JCCWebBusinessLogic 
{
	/**
	 * 連携サービス契約番号
	 */
	private static final String RNKI_SVC_KEI_NO = "SVC_KEI_NO";
	/**
	 * 連携ポップアップモード
	 */
	private static final String RNKI_POPUP_MODE = "POPUP_MODE";
	
	/**
	 * 工事案件番号
	 */
	private static final String KOJIAK_NO = "工事案件番号";
	
	/**
	 * サービス契約番号
	 */
	private static final String SVC_KEI_NO = "サービス契約番号";
	
	/**
	 * 初期表示ユースケースID
	 */
	private static final String INIT_USECASE_ID = "KUSV0003";
	
	/**
	 * 初期表示CCタイトル
	 */
	private static final String INIT_CC_TITLE = "KUSV000301CC";
	
	/**
	 * 検索ユースケースID
	 */
	private static final String SEARCH_USECASE_ID = "KUSV0002";
	
	/**
	 * 検索SCタイトル
	 */
	private static final String SEARCH_SC_TITLE = "KUSV000201SC";
	
	/**
	 * 初期化処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Init() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00101);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00101);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 遷移元画面ＩＤを設定
		String screenId = JCCWebCommon.getScreenId(this);
		
		// 検索パターン 1:遷移元が自業務 2:遷移元が他業務 3:遷移元がメニュー
		String searchPattern = JKUWebCommon.getSearchPattern(screenId);
		
		// 条件部の設定
		setForm();
		
		// 自業務からの遷移
		if(JKUStrConst.SEARCH_PATTERN_1.equals(searchPattern))
		{
			HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this);
			
			if(!JKUCommonUtil.isNull(searchInfo.get(KUW00101SFConst.OTHER_SCREENID)))
			{
				// 他業務IDをビーンに設定
				bean.sendMessageString(KUW00101SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_SET_VALUE, 
						searchInfo.get(KUW00101SFConst.OTHER_SCREENID).toString());
				// 戻るボタン表示フラグを設定
				bean.sendMessageString(KUW00101SFConst.RTRN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, 
						searchInfo.get(KUW00101SFConst.RTRN_DISP_FLG).toString());
				// 閉じるボタン表示フラグを設定
				bean.sendMessageString(KUW00101SFConst.CLOSE_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, 
						searchInfo.get(KUW00101SFConst.CLOSE_DISP_FLG).toString());
			}
			
			X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00101SFConst.KINO_CD_LIST).getDataBean(0);
			
			// 検索条件の取得
			String kino_cd = bean.sendMessageString(KUW00101SFConst.KINO_SBT_CD, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 検索条件の設定
			if("3".equals(kino_cd))
			{
				listDataBean.sendMessageString(KUW00101SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "0");
			}
			else
			{
				listDataBean.sendMessageString(KUW00101SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "1");
			}
			
			
			// ◇ 業務ロジックの記述
			// ユースケース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>();
			
			// ユースケースＩＤを設定
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID);

			// DataBean⇔BPの上りマッピングを行う
			KUSV0003_KUSV0003OPDBMapper mapper = new KUSV0003_KUSV0003OPDBMapper();
			mapper.setKUSV000301CC(paramBean, inputMap, kino_cd);
			
			// ページング情報の設定
			JCCWebCommon.upmapperPageLinkInfo(this, INIT_CC_TITLE, inputMap);
			
			// 一覧表示フラグ設定処理
			bean.sendMessageString(KUW00101SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 検索結果格納用マップを生成。
			// サービス呼出 
			X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

			// エラー処理 
			if (msgResult != null)
			{
				JCCWebCommon.setMessageInfo(this, msgResult);
				return true;
			}

			JCCMessageCache.setMessageCache();
			
			// 下りマッピング
			// マッピングクラスの呼び出し
			mapper.getKUSV000301CC(paramBean, outputMap);

			// ページリンク情報のマッピング
			JCCWebCommon.downmapperPageLinkInfo(this, INIT_CC_TITLE, outputMap);
			
			// 検索エラーフラグの取得
			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("KUW00101_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(KUW00101SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
				
				// 行選択設定処理
				// 1行目を選択
				paramBean[0].sendMessageString(KUW00101SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");
				
				// 検索コマンドIDの設定
				JCCWebCommon.setSearchCommand(this, "pageLink");
			}
			else
			{
				
				// 一覧表示フラグ設定処理
				bean.sendMessageString(KUW00101SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
				
				// 行選択設定処理
				X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(KUW00101SFConst.EKU0011B010CBSMSG1LIST);
				for (int i = 0; i < beanList.getCount() ; i++)
				{
					X31SDataBeanAccess ekulist = bean.getDataBeanArray(KUW00101SFConst.EKU0011B010CBSMSG1LIST).getDataBean(i);
					String kojiakNo = bean.sendMessageString(KUW00101SFConst.CHOICE_KOJIAK_NO, X31CWebConst.DATABEAN_GET_VALUE);
					String svcKeiNo = bean.sendMessageString(KUW00101SFConst.CHOICE_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
					if (ekulist.sendMessageString(KUW00101SFConst.KOJIAK_NO_02, X31CWebConst.DATABEAN_GET_VALUE).equals(kojiakNo) &&
							ekulist.sendMessageString(KUW00101SFConst.SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE).equals(svcKeiNo))
					{
						paramBean[0].sendMessageString(KUW00101SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, Integer.toString(i));
						break;
					}
				}
				
				// 検索コマンドIDの設定
				JCCWebCommon.setSearchCommand(this, "pageLink");
			}
			
			// セッション設定処理
			hojiSearchInfo();
			
			return true;
			
		}
		// 他業務からの遷移
		else if(JKUStrConst.SEARCH_PATTERN_2.equals(searchPattern))
		{
			// 他業務IDをビーンに設定
			bean.sendMessageString(KUW00101SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
			// セッション情報取得
			HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this);
			// 工事案件番号サービス契約番号
			bean.sendMessageString(KUW00101SFConst.KOJIAK_NO_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
			
			if(searchInfo != null)
			{
				// ポップアップモードで表示するボタンを決定
				if(!JKUCommonUtil.isNull(searchInfo.get(RNKI_POPUP_MODE)))
				{
					// 閉じるボタン表示フラグ設定処理
					bean.sendMessageString(KUW00101SFConst.CLOSE_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
				}
				else
				{
					// 戻るボタン表示フラグ設定処理
					bean.sendMessageString(KUW00101SFConst.RTRN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
				}
				
				
				// 連携サービス契約番号がある場合
				if(!JKUCommonUtil.isNull(searchInfo.get(RNKI_SVC_KEI_NO)))
				{
					// 連携サービス契約番号の取得と設定
					bean.sendMessageString(KUW00101SFConst.KOJIAK_NO_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, searchInfo.get(RNKI_SVC_KEI_NO).toString());
					
					//検索条件の設定
					X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00101SFConst.KINO_CD_LIST).getDataBean(0);
					listDataBean.sendMessageString(KUW00101SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "0");
					
					action_Search();
				}
			}
			else
			{
				// 戻るボタン表示フラグ設定処理
				bean.sendMessageString(KUW00101SFConst.RTRN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
			}
			
			return true;
		}
		// 通常初期表示
		else
		{
			return true;
		}
	}
	
	/**
	 * 検索処理
	 * @return search関数
	 * @throws Exception 例外発生時
	 */
	public boolean action_Search() throws Exception
	{
		// ページリンク情報をセッションから削除
		JCCWebCommon.clearPageLinkInfo(this, JKUScreenConst.SCREEN_ID_KUW00101 + "0PJP");
		
		return search();
	}
	
	/**
	 * ページング処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Paging() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// セッション情報取得
		HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this);
		
		if(searchInfo != null)
		{
			bean.sendMessageString(KUW00101SFConst.KOJIAK_NO_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00101SFConst.KOJIAK_NO_SVC_KEI_NO).toString());
			
			X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00101SFConst.KINO_CD_LIST).getDataBean(0);
			
			listDataBean.sendMessageString(KUW00101SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00101SFConst.INDEX_01).toString());
		}
		return search();
	}
	
	/**
	 * 共通ボタン押下イベント
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Dtail() throws Exception
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 契約サービスコード
		String kei_svc_cd = "";
		// 料金プランコード
		String pplan_cd = "";
		
		// 引き継ぎ情報を取得
		String idx = bean.sendMessageString(KUW00101SFConst.CHOICE, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00101SFConst.EKU0011B010CBSMSG1LIST).getDataBean(Integer.parseInt(idx));
		String kojiak_no = listDataBean.sendMessageString(KUW00101SFConst.KOJIAK_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
		String svc_kei_no = listDataBean.sendMessageString(KUW00101SFConst.SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		
		
		// 工事契約サービスコード取得に使用するマップ
		HashMap<String, String> eoKokyakuMap = new HashMap<String, String>();
		
		eoKokyakuMap.put(JKUStrConst.RNKI_SYS_PRC_GRP_CD,
				listDataBean.sendMessageString(KUW00101SFConst.PRC_GRP_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
		eoKokyakuMap.put(JKUStrConst.RNKI_SYS_PCRS_CD,
				listDataBean.sendMessageString(KUW00101SFConst.PCRS_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
		eoKokyakuMap.put(JKUStrConst.RNKI_SYS_PPLAN_CD,
				listDataBean.sendMessageString(KUW00101SFConst.PPLAN_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
		eoKokyakuMap.put(JKUStrConst.RNKI_SYS_WRIB_TYPE_CD,
				listDataBean.sendMessageString(KUW00101SFConst.WRIB_TYPE_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
		eoKokyakuMap.put(JKUStrConst.RNKI_SYS_MANS_BUKKEN_CD,
				listDataBean.sendMessageString(KUW00101SFConst.MANSION_BUKKEN_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
		eoKokyakuMap.put(JKUStrConst.RNKI_SYS_MANS_TSN_STB_CD,
				listDataBean.sendMessageString(KUW00101SFConst.MANS_TUSHIN_EQUIP_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
		eoKokyakuMap.put(JKUStrConst.RNKI_SYS_IP_HARAIDASHI,
				listDataBean.sendMessageString(KUW00101SFConst.IP_HRADSI_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
		eoKokyakuMap.put(JKUStrConst.RNKI_SYS_SYSTEM,
				JKUStrConst.RNKI_SYSTEM_OPMS);
// ANK-3989-00-00 ADD START
// ANK-4244-00-00 MOD START
//		// 提供方式パターンコードが"51"(光コンセント) かつ、棟内速度コードが"008"(5G/5G)、"009"(10G/10G)の場合
//		if (JKUStrConst.CD01213_HKR_SOCKET.equals(listDataBean.sendMessageString(KUW00101SFConst.TK_HOSHIKI_PATTERN_CD_02, X31CWebConst.DATABEAN_GET_VALUE))
//				&& (JKUStrConst.TONAI_SPEED_CD_5G_5G.equals(listDataBean.sendMessageString(KUW00101SFConst.TONAI_SPEED_CD_02, X31CWebConst.DATABEAN_GET_VALUE))
//						|| JKUStrConst.TONAI_SPEED_CD_10G_10G.equals(listDataBean.sendMessageString(KUW00101SFConst.TONAI_SPEED_CD_02, X31CWebConst.DATABEAN_GET_VALUE))))
		if ((JKUStrConst.TONAI_SPEED_CD_5G_5G.equals(listDataBean.sendMessageString(KUW00101SFConst.TONAI_SPEED_CD_02, X31CWebConst.DATABEAN_GET_VALUE))
			  || JKUStrConst.TONAI_SPEED_CD_10G_10G.equals(listDataBean.sendMessageString(KUW00101SFConst.TONAI_SPEED_CD_02, X31CWebConst.DATABEAN_GET_VALUE))))
// ANK-4244-00-00 MOD START
		{
			eoKokyakuMap.put(JKUStrConst.RNKI_SYS_TK_HOSHIKI_PATTERN_CD,
					listDataBean.sendMessageString(KUW00101SFConst.TK_HOSHIKI_PATTERN_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
			eoKokyakuMap.put(JKUStrConst.RNKI_SYS_TONAI_SPEED_CD,
					listDataBean.sendMessageString(KUW00101SFConst.TONAI_SPEED_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
		}
		else
		{
			eoKokyakuMap.put(JKUStrConst.RNKI_SYS_TK_HOSHIKI_PATTERN_CD, null);
			eoKokyakuMap.put(JKUStrConst.RNKI_SYS_TONAI_SPEED_CD, null);
		}
//ANK-3989-00-00 ADD END
		
		HashMap<String, String> retMap = JKUWebCommon.getSetsubiCodeMap(eoKokyakuMap);
		
		if(retMap != null)
		{
			// 契約サービスコード
			kei_svc_cd = retMap.get(JKUStrConst.RNKI_SYS_KKEI_SVC_CD);
			
			// 料金プランコード
			pplan_cd = retMap.get(JKUStrConst.RNKI_SYS_PPLAN_CD);
		}
		
		// 引き継ぎ情報を格納するMAP、次ページへの引き継ぎ
		HashMap<String, Object> hktgiMap = new HashMap<String, Object>();

		hktgiMap.put(KOJIAK_NO, kojiak_no);
		hktgiMap.put(SVC_KEI_NO, svc_kei_no);
		hktgiMap.put(KUW00102SFConst.KEI_SVC, kei_svc_cd);
		hktgiMap.put(KUW00102SFConst.PPLAN, pplan_cd);
		
		// 次画面に渡す情報を設定
		JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00102, hktgiMap);
		
		// 検索条件の保持
		hojiSearchInfoAndChoiceRow(kojiak_no, svc_kei_no);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00102);
	
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00102);
		
		return true;
	}
	
	/**
	 * 固有ボタン押下イベント
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Koyu() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 引き継ぎ情報を取得
		String idx = bean.sendMessageString(KUW00101SFConst.CHOICE, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00101SFConst.EKU0011B010CBSMSG1LIST).getDataBean(Integer.parseInt(idx));
		String kojiak_no = listDataBean.sendMessageString(KUW00101SFConst.KOJIAK_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
		String svc_kei_no = listDataBean.sendMessageString(KUW00101SFConst.SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 遷移先情報の取得
		String seni_info = listDataBean.sendMessageString(KUW00101SFConst.SENI_INFO_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 次画面に渡す情報を設定
		HashMap<String, Object> hktgiMap = makeHktgiMap(kojiak_no, svc_kei_no);
		
		// 検索条件の保持
		hojiSearchInfoAndChoiceRow(kojiak_no, svc_kei_no);
		
		// seni_infoが"001"遷移先KUW00103 "002"遷移先KUW00104 "003"遷移先KUW00105 "004"遷移先KUW00106 "005"遷移先KUW00107
		if("001".equals(seni_info))
		{
			// 次画面に渡す情報を設定
			JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00103, hktgiMap);
			
			// 遷移先の画面IDを共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
					, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00103);
		
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
					, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00103);
		}
		
		else if("002".equals(seni_info))
		{
			// 次画面に渡す情報を設定
			JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00104, hktgiMap);
			
			// 遷移先の画面IDを共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
					, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00104);
		
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
					, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00104);
		}
		
		else if("003".equals(seni_info))
		{
			// 次画面に渡す情報を設定
			JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00105, hktgiMap);
			
			// 遷移先の画面IDを共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
					, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00105);
		
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
					, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00105);
		}
		else if("004".equals(seni_info))
		{
			// 次画面に渡す情報を設定
			JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00106, hktgiMap);
			
			// 遷移先の画面IDを共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
					, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00106);
		
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
					, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00106);
		}
		
		else
		{
			// 次画面に渡す情報を設定
			JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00107, hktgiMap);
			
			// 遷移先の画面IDを共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
					, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00107);
		
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
					, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00107);
		}
		return true;
	}
	
	/**
	 * 宅内機器ボタン押下イベント
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean action_Taknkiki() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 引き継ぎ情報を取得
		String idx = bean.sendMessageString(KUW00101SFConst.CHOICE, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00101SFConst.EKU0011B010CBSMSG1LIST).getDataBean(Integer.parseInt(idx));
		String kojiak_no = listDataBean.sendMessageString(KUW00101SFConst.KOJIAK_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
		String svc_kei_no = listDataBean.sendMessageString(KUW00101SFConst.SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 次画面に渡す情報を設定
		HashMap<String, Object> hktgiMap = makeHktgiMap(kojiak_no, svc_kei_no);
		
		// 次画面に渡す情報を設定
		JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00108, hktgiMap);
		
		// 検索条件の保持
		hojiSearchInfoAndChoiceRow(kojiak_no, svc_kei_no);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00108);
	
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00108);
		
		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(KUW00101SFConst.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_Close() throws Exception
	{
		return true;
	}
	
	
	/**
	 * 検索条件と選択行の保持
	 * @param kojiak_no 選択された工事案件番号
	 * @param svc_kei_no 選択されたサービス契約番号
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean hojiSearchInfoAndChoiceRow(String kojiak_no, String svc_kei_no) throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// セッション情報取得
		HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this);
		
		if(searchInfo != null)
		{
			bean.sendMessageString(KUW00101SFConst.KOJIAK_NO_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00101SFConst.KOJIAK_NO_SVC_KEI_NO).toString());
			
			X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00101SFConst.KINO_CD_LIST).getDataBean(0);
			
			listDataBean.sendMessageString(KUW00101SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE
					, searchInfo.get(KUW00101SFConst.INDEX_01).toString());
			
		}
		
		// 検索条件の保持
		String func_code = getFuncCode();
		String kojiak_no_svc_kei_no = bean.sendMessageString(KUW00101SFConst.KOJIAK_NO_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String other_screenId = bean.sendMessageString(KUW00101SFConst.OTHER_SCREENID, X31CWebConst.DATABEAN_GET_VALUE);
		String rtrnDispFlg = bean.sendMessageString(KUW00101SFConst.RTRN_DISP_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		String closeDispFlg = bean.sendMessageString(KUW00101SFConst.CLOSE_DISP_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 引き継ぎ情報を格納するMAP、選択された工事案件の保持
		HashMap<String, Object> hktgiMap001 = new HashMap<String, Object>();
		
		// 自画面に保持する情報を設定
		hktgiMap001.put(KUW00101SFConst.CHOICE_KOJIAK_NO, kojiak_no);
		hktgiMap001.put(KUW00101SFConst.CHOICE_SVC_KEI_NO, svc_kei_no);
		hktgiMap001.put(KUW00101SFConst.KOJIAK_NO_SVC_KEI_NO, kojiak_no_svc_kei_no);
		hktgiMap001.put(KUW00101SFConst.KINO_SBT_CD, func_code);
		hktgiMap001.put(KUW00101SFConst.OTHER_SCREENID, other_screenId);
		hktgiMap001.put(KUW00101SFConst.RTRN_DISP_FLG, rtrnDispFlg);
		hktgiMap001.put(KUW00101SFConst.CLOSE_DISP_FLG, closeDispFlg);
		
		JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00101, hktgiMap001);
		
		return true;
	}
	
	/**
	 * 検索条件の保持
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean hojiSearchInfo() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 引き継ぎ情報マップ
		HashMap<String, Object> hktgiMap001 = new HashMap<String, Object>();
		
		String kojiak_no_svc_kei_no = bean.sendMessageString(KUW00101SFConst.KOJIAK_NO_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00101SFConst.KINO_CD_LIST).getDataBean(0);
		String idx = listDataBean.sendMessageString(KUW00101SFConst.INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 機能コードの設定
		String func_code = getFuncCode();
		
		hktgiMap001.put(KUW00101SFConst.INDEX_01, idx);
		hktgiMap001.put(KUW00101SFConst.KOJIAK_NO_SVC_KEI_NO, kojiak_no_svc_kei_no);
		hktgiMap001.put(KUW00101SFConst.KINO_SBT_CD, func_code);
		
		JCCWebCommon.setScreenInfo(this, JKUScreenConst.SCREEN_ID_KUW00101, hktgiMap001);
		
		return true;
	}
	
	/**
	 * 検索条件の設定処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean setForm() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 機能コードリスト
		X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00101SFConst.KINO_CD_LIST).getDataBean(0);
		
		// 検索機能コードリストの初期化
		listDataBean.sendMessageString(KUW00101SFConst.CD_NM_01, X31CWebConst.DATABEAN_REMOVE);
		listDataBean.sendMessageString(KUW00101SFConst.CD_01, X31CWebConst.DATABEAN_REMOVE);
		
		// 検索機能コードリストの値設定
		listDataBean.sendMessageString(KUW00101SFConst.CD_NM_01, X31CWebConst.DATABEAN_ADD_VALUE, "01.お客さまID");
		listDataBean.sendMessageString(KUW00101SFConst.CD_NM_01, X31CWebConst.DATABEAN_ADD_VALUE, "02.工事案件番号");
		listDataBean.sendMessageString(KUW00101SFConst.CD_01, X31CWebConst.DATABEAN_ADD_VALUE, "1");
		listDataBean.sendMessageString(KUW00101SFConst.CD_01, X31CWebConst.DATABEAN_ADD_VALUE, "2");
		
		return true;
	}
	
	/**
	 * 機能コードの取得処理
	 * @return func_code 機能コード
	 */
	public String getFuncCode()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		String func_code = "1";
		
		// 機能コードの設定
		X31SDataBeanAccess listDataBean = bean.getDataBeanArray(KUW00101SFConst.KINO_CD_LIST).getDataBean(0);
		bean.sendMessageString(KUW00101SFConst.KOJIAK_NO_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String idx = listDataBean.sendMessageString(KUW00101SFConst.INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);
		String kino_cd = listDataBean.sendMessageString(KUW00101SFConst.CD_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(idx));
		
		// ドロップダウンでサービス契約番号が選択されていた場合func_codeに3をセット。工事案件番号が選択されていた場合func_codeに4をセット
		if("1".equals(kino_cd))
		{
			func_code = "3";
		}
		else
		{
			func_code = "4";
		}
		
		return func_code;
	}
	
	/**
	 * 次画面引き継ぎマップの作成
	 * @param kojiak_no 工事案件番号
	 * @param svc_kei_no サービス契約番号
	 * @return HashMap 引き継ぎマップ
	 */
	public HashMap<String, Object> makeHktgiMap(String kojiak_no, String svc_kei_no)
	{
		// 引き継ぎ情報を格納するMAP、次ページへの引き継ぎ
		HashMap<String, Object> hktgiMap = new HashMap<String, Object>();

		hktgiMap.put(KOJIAK_NO, kojiak_no);
		hktgiMap.put(SVC_KEI_NO, svc_kei_no);
		
		return hktgiMap;
	}
	
	/**
	 * 検索実行処理
	 * @return boolean
	 * @throws Exception 例外発生時
	 */
	public boolean search() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 機能コードの設定
		String func_code = getFuncCode();
		
		// サービス呼出処理
		// ユースケース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>();
		
		// ユースケースＩＤを設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SEARCH_USECASE_ID);

		// DataBean⇔BPの上りマッピングを行う
		KUSV0002_KUSV0002OPDBMapper mapper = new KUSV0002_KUSV0002OPDBMapper();
		mapper.setKUSV000201SC(paramBean, inputMap, func_code);
		
		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, SEARCH_SC_TITLE, inputMap);
		
		
		//一覧表示フラグ設定処理
		bean.sendMessageString(KUW00101SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		
		// 検索結果格納用マップを生成。
		// サービス呼出 
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		JCCMessageCache.setMessageCache();
		
		// 一覧情報のクリア
		X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(KUW00101SFConst.EKU0011B010CBSMSG1LIST);
		if(beanList.getCount() != 0)
		{
			
			beanList.clearArray();
		}
		
		// 下りマッピング
		// マッピングクラスの呼び出し
		mapper.getKUSV000201SC(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("KUW00101_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(KUW00101SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
			
			// 行選択設定処理
			// 1行目を選択
			paramBean[0].sendMessageString(KUW00101SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 検索コマンドIDの設定
			JCCWebCommon.setSearchCommand(this, "pageLink");
		}
		
		
		// セッション設定処理
		hojiSearchInfo();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_ID_KUW00101);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKUScreenConst.SCREEN_NAME_KUW00101);
		
		return true;
	}
}
