/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW01805SFLogic
*   ソースファイル名：KKW01805SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年10月17日
*＜機能概要＞
*   ADSL工事情報一覧画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/10/17   FJ）富士通  新規作成
*   v3.00.00    2012/04/05   FJ）富士通  巻取り対応
*   v4.00.00    2012/12/18   FJ）野口   【IT1-2012-0002486】対応
*   v5.01.00    2013/05/03   FJ）鳩本   【IT1-2013-0001142】対応
*
**********************************************************************/

/**
 * <DL>
 * <DT>名前
 * <p>
 * <DT>説明:
 * <DD>データの初期化.
 * <DD> generated by Web Client tool V01/L01.
 * </DL>
*/
package eo.web.webview.KKW01805SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

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 com.fujitsu.futurity.web.x31.X31SRuntimeException;

import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;

// Actionタブ用に外部定数を定義
import eo.web.webview.KKW01805SF.KKW01805SFConst;
import eo.web.webview.common.JCCMessageCache;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0351_KKSV0351OPDBMapper;

/**
 * KKW01805のビューロジック
 * <BR>
 * @author 富士通
 */
/**
 * @author 910075
 *
 */
@SuppressWarnings("serial")
public class KKW01805SFLogic extends JCCWebBusinessLogic
{
	
	/** 顧客契約引継情報項目キー */
	private static final String[] CUST_KEI_HKTGI_KEYS = {
		JKKCommonConst.HKTGI_SYSID,
		JKKCommonConst.HKTGI_SVC_KEI_NO,
		JKKCommonConst.HKTGI_IDO_DIV,
		JKKCommonConst.HKTGI_IDO_RSN_CD,
/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		JKKCommonConst.HKTGI_IDO_RSN_MEMO,
/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
		JKKCommonConst.HKTGI_OP_SVC_KEI_NO,
		JKKCommonConst.HKTGI_TRAN_DIV,
		JKKCommonConst.HKTGI_MSKM_NO,
		JKKCommonConst.HKTGI_MSKM_DTL_NO,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_NM,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_VALUE,
		JKKCommonConst.HKTGI_POPUP_MODE
	};
	
	/** 料金グループ */
	String pcrsGrp = "";
	
	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		if (commoninfoBean == null)
		{
			return false;
		}

		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();

		X31SDataBeanAccess[] paramBean = {serviceBean};

		//JCCWebCommon.setScreenInfoメソッドで設定されている画面情報を取得する。
		HashMap<String, Object> parameterMap = JCCWebCommon.getScreenInfo(this);
		
		// パラメータ設定時のみ、引継ぎ情報を取得する
		if(!(parameterMap == null))
		{
			// (1)引継情報の取得
			// ・申込書番号
			serviceBean.sendMessageString(KKW01805SFConst.MSKMSHO_NO,
					X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW01805SFConst.MSKMSHO_NO));
			// ・認証ID
			serviceBean.sendMessageString(KKW01805SFConst.NINSHO_ID,
					X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW01805SFConst.NINSHO_ID));
			// ・設置先電話番号
			serviceBean.sendMessageString(KKW01805SFConst.STC_SAKI_SK_TELNO,
					X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW01805SFConst.STC_SAKI_SK_TELNO));
			// ・お客様名カナ
			serviceBean.sendMessageString(KKW01805SFConst.CUST_KANA,
					X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW01805SFConst.CUST_KANA));
			// ・お客様名
			serviceBean.sendMessageString(KKW01805SFConst.CUST_NM,
					X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW01805SFConst.CUST_NM));
			
			// 退避領域に設定
			// ・申込書番号
			serviceBean.sendMessageString(KKW01805SFConst.MSKMSHO_NO_BK,
					X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW01805SFConst.MSKMSHO_NO));
			// ・認証ID
			serviceBean.sendMessageString(KKW01805SFConst.NINSHO_ID_BK,
					X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW01805SFConst.NINSHO_ID));
			// ・設置先電話番号
			serviceBean.sendMessageString(KKW01805SFConst.STC_SAKI_SK_TELNO_BK,
					X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW01805SFConst.STC_SAKI_SK_TELNO));
			// ・お客様名カナ
			serviceBean.sendMessageString(KKW01805SFConst.CUST_KANA_BK,
					X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW01805SFConst.CUST_KANA));
			// ・お客様名
			serviceBean.sendMessageString(KKW01805SFConst.CUST_NM_BK,
					X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get(KKW01805SFConst.CUST_NM));

			// ソートキー未設定時の対応
			String sort_item_no = serviceBean.sendMessageString(KKW01805SFConst.SORT_ITEM_NO, X31CWebConst.DATABEAN_GET_VALUE);
			if ("".equals(sort_item_no) || null == sort_item_no)
			{
				// "2":申込日
				serviceBean.sendMessageString(KKW01805SFConst.SORT_ITEM_NO, X31CWebConst.DATABEAN_SET_VALUE, "2");
			}
			String sort_kbn = serviceBean.sendMessageString(KKW01805SFConst.SORT_KBN, X31CWebConst.DATABEAN_GET_VALUE);
			if ("".equals(sort_kbn) || null == sort_kbn)
			{
				// "2":降順
				serviceBean.sendMessageString(KKW01805SFConst.SORT_KBN, X31CWebConst.DATABEAN_SET_VALUE, "2");
			}
			
			// 行選択情報の取得
			String select_radio = (String)parameterMap.get(KKW01805SFConst.SELECT_RADIO);
			if("".equals(select_radio) || null == select_radio)
			{
				serviceBean.sendMessageString(KKW01805SFConst.SELECT_RADIO, X31CWebConst.DATABEAN_SET_VALUE, "0");
			}
			else
			{
				serviceBean.sendMessageString(KKW01805SFConst.SELECT_RADIO, X31CWebConst.DATABEAN_SET_VALUE, select_radio);
			}

			// サービス呼出
			callService(paramBean);

		}
		else
		{
			// 顧客引継リスト存在なし（メニューから遷移）
			clearSortInfo(serviceBean);
		
		}

//		//(7)遷移先画面の設定（KKW01805,ADSL工事情報一覧)
		setSelfScreenInfo(commoninfoBean);
		
		return true;
	}

	/**
	 * 検索処理を行います。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean search() throws Exception
	{
		//JCCWebCommon.setScreenInfoメソッドで設定されている画面情報を取得し、
		//サービスフォームBeanに設定する
		JCCWebCommon.getScreenInfo(this);
		
		//サービスフォームBean取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();

		X31SDataBeanAccess[] paramBean = {serviceBean};

		//共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// ページング情報のクリア
		JCCWebCommon.clearPageLinkInfo(this,JKKScreenConst.SCREEN_ID_KKW01805);
		
		// 明細一覧のクリア
		clearSearchList(serviceBean);

		// 退避領域のクリア
		clearBackUpInfo(serviceBean);

		// 検索領域を退避領域にバックアップ
		setSearchInfo(serviceBean);

		// ソート項目の初期化
		clearSortInfo(serviceBean);

		// サービス呼出
		callService(paramBean);
		
//		//(7)遷移先画面の設定（KKW01805,ADSL工事情報一覧)
		setSelfScreenInfo(commonBean);

		return true;
	}

	/**
	 * 入力内容のクリア処理を行います。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean clear() throws Exception
	{
		//JCCWebCommon.setScreenInfoメソッドで設定されている画面情報を取得し、
		//サービスフォームBeanに設定する
		JCCWebCommon.getScreenInfo(this);
		
		//サービスフォームBean取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();

		X31SDataBeanAccess[] paramBean = {serviceBean};

		//共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 明細一覧のクリア
		clearSearchList(serviceBean);
		// 検索条件のクリア
		clearSearchInfo(serviceBean);
		// 退避領域のクリア
		clearBackUpInfo(serviceBean);
		
//		//(7)遷移先画面の設定（KKW01805,ADSL工事情報一覧)
		setSelfScreenInfo(commonBean);

		return true;
	}	
	
	/**
	 * ページング処理を行います。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean changePage() throws Exception
	{
		//JCCWebCommon.setScreenInfoメソッドで設定されている画面情報を取得し、
		//サービスフォームBeanに設定する
		JCCWebCommon.getScreenInfo(this);
		
		//サービスフォームBean取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		//共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 一覧クリア
		clearSearchList(serviceBean);
		
		// マッピングクラスに渡す配列
		X31SDataBeanAccess[] paramBean = {serviceBean};

		// サービス呼び出し処理
		callService(paramBean);
		
//		//(7)遷移先画面の設定（KKW01805,ADSL工事情報一覧)
		setSelfScreenInfo(commonBean);

		return true;
	}

	/**
	 * 工事詳細・更新押下で次画面へ遷移します。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardKojiShuseiUpd() throws Exception
	{
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		if (commoninfoBean == null)
		{
			return false;
		}
		
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
	// (1)遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW01801);

//	// (2)次画面引継内容を設定する。
//		HashMap<String, Object> dataMap = getNextScreenKeys(bean);
		
	// (3)当画面へ戻る際に引き継ぐ情報を設定する。
		HashMap<String, Object> dataMap2 = getSelfScreenKeys(bean);

	// (4)引継情報の設定
	//	JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW01801 + "0PJP", dataMap);
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW01801 + "0PJP",
			getHktgiDataMap(bean, KKW01805SFConst.HKTGI_CUST_KEI_HKTGI_LIST, CUST_KEI_HKTGI_KEYS));
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW01805 + "0PJP", dataMap2);
		
	// (5)戻り先画面ＩＤを設定
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW01801 + "0PJP", JKKScreenConst.SCREEN_ID_KKW01805);

		return true;
	}

	/**
	 * ソート処理を行います。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean sortKojiListSearch() throws Exception
	{
		//JCCWebCommon.setScreenInfoメソッドで設定されている画面情報を取得し、
		//サービスフォームBeanに設定する
		JCCWebCommon.getScreenInfo(this);
		
		//サービスフォームBean取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		//共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 前回検索したページリンク情報をセッションから削除
		JCCWebCommon.clearPageLinkInfo(this, JKKScreenConst.SCREEN_ID_KKW01805);
		
		// (1) 明細一覧のクリア
		clearSearchList(serviceBean);
		
		// (3) 検索を行う
		callService(paramBean);

//		//(7)遷移先画面の設定（KKW01805,ADSL工事情報一覧)
		setSelfScreenInfo(commonBean);

		return true;
	}
	
	/**
	 * 明細一覧、検索結果有無フラグをクリアします。
	 * <br>
	 * @param serviceBean
	 */
	private void clearSearchList(X31SDataBeanAccess serviceBean)
	{
		// 明細一覧のクリア
		serviceBean.getDataBeanArray(KKW01805SFConst.ADSL_KOJI_INFO_LIST).clearArray();
		// 検索結果有無フラグのリセット
		serviceBean.sendMessageBoolean(KKW01805SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
	}
	
	/**
	 * 検索情報を退避情報にセットする。
	 * @param serviceBean
	 */
	private void setSearchInfo(X31SDataBeanAccess serviceBean)
	{
		// 検索条件の退避
		// ・申込書番号
		serviceBean.sendMessageString(KKW01805SFConst.MSKMSHO_NO_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageString(KKW01805SFConst.MSKMSHO_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// ・認証ID
		serviceBean.sendMessageString(KKW01805SFConst.NINSHO_ID_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageString(KKW01805SFConst.NINSHO_ID, X31CWebConst.DATABEAN_GET_VALUE));
		// ・設置先電話番号
		serviceBean.sendMessageString(KKW01805SFConst.STC_SAKI_SK_TELNO_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageString(KKW01805SFConst.STC_SAKI_SK_TELNO, X31CWebConst.DATABEAN_GET_VALUE));
		// ・お客様名カナ
		serviceBean.sendMessageString(KKW01805SFConst.CUST_KANA_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageString(KKW01805SFConst.CUST_KANA, X31CWebConst.DATABEAN_GET_VALUE));
		// ・お客様名
		serviceBean.sendMessageString(KKW01805SFConst.CUST_NM_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageString(KKW01805SFConst.CUST_NM, X31CWebConst.DATABEAN_GET_VALUE));
	}
	
	/**
	 * 検索条件退避領域をクリアします。
	 * <br>
	 * @param serviceBean サービス取得内容
	 */
	private void clearSearchInfo(X31SDataBeanAccess serviceBean)
	{
		// 退避領域のクリア
		// ・申込書番号
		serviceBean.sendMessage(KKW01805SFConst.MSKMSHO_NO, X31CWebConst.DATABEAN_CLEAR);
		// ・認証ID
		serviceBean.sendMessage(KKW01805SFConst.NINSHO_ID, X31CWebConst.DATABEAN_CLEAR);
		// ・設置先電話番号
		serviceBean.sendMessage(KKW01805SFConst.STC_SAKI_SK_TELNO, X31CWebConst.DATABEAN_CLEAR);
		// ・お客様名カナ
		serviceBean.sendMessage(KKW01805SFConst.CUST_KANA, X31CWebConst.DATABEAN_CLEAR);
		// ・お客様名
		serviceBean.sendMessage(KKW01805SFConst.CUST_NM, X31CWebConst.DATABEAN_CLEAR);
	}
	
	/**
	 * 検索条件退避領域をクリアします。
	 * <br>
	 * @param serviceBean サービス取得内容
	 */
	private void clearBackUpInfo(X31SDataBeanAccess serviceBean)
	{
		// 退避領域のクリア
		// ・申込書番号
		serviceBean.sendMessage(KKW01805SFConst.MSKMSHO_NO_BK, X31CWebConst.DATABEAN_CLEAR);
		// ・認証ID
		serviceBean.sendMessage(KKW01805SFConst.NINSHO_ID_BK, X31CWebConst.DATABEAN_CLEAR);
		// ・設置先電話番号
		serviceBean.sendMessage(KKW01805SFConst.STC_SAKI_SK_TELNO_BK, X31CWebConst.DATABEAN_CLEAR);
		// ・お客様名カナ
		serviceBean.sendMessage(KKW01805SFConst.CUST_KANA_BK, X31CWebConst.DATABEAN_CLEAR);
		// ・お客様名
		serviceBean.sendMessage(KKW01805SFConst.CUST_NM_BK, X31CWebConst.DATABEAN_CLEAR);
	}

	/**
	 * ソート項目を初期化します。
	 * 
	 * @param serviceBean
	 */
	private void clearSortInfo(X31SDataBeanAccess serviceBean)
	{
		// ソート項目Ｎｏに"2":申込日を設定
		serviceBean.sendMessageString(KKW01805SFConst.SORT_ITEM_NO, X31CWebConst.DATABEAN_SET_VALUE, "2");
		// ソート区分に"2":降順を設定
		serviceBean.sendMessageString(KKW01805SFConst.SORT_KBN, X31CWebConst.DATABEAN_SET_VALUE, "2");
	}
	
	/**
	 * サービス（KKSV0351）の呼び出しを行います。
	 * <br>
	 * @param paramBean パラメータとなるBean情報
	 * @return 成否
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
//	private boolean callService(X31SDataBeanAccess[] paramBean, String event) throws Exception
	private boolean callService(X31SDataBeanAccess[] paramBean) throws Exception
	{
		
		// 共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		// サービスフォームビーン
		X31SDataBeanAccess bean = super.getServiceFormBean();

	//(2) 3.1.1 サービス呼出処理(callService)実行

		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0351");
		
		// データBeanとBPをマッピングするインスタンスを生成
		KKSV0351_KKSV0351OPDBMapper mapper = new KKSV0351_KKSV0351OPDBMapper();
		
		// 検索条件格納用マップを生成
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		// 処理結果格納用マップを生成
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		
		// 検索処理パターン
		mapper.setKKSV035101CC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "KKSV035101CC", inputMap);
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理
		if(msgResult != null)
		{
			
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
		
		// メッセージ定義ファイルを読み込む
		JCCMessageCache.setMessageCache();
		
		/* ++++++++++ v5.01.00 削除開始 ++++++++++ */
		// サービス結果の転記
//		mapper.getKKSV035101CC(paramBean, outputMap);
		/* ++++++++++ v5.01.00 削除完了 ++++++++++ */

	//(3) 取得データ件数チェック
		
		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("KKSV035101CC", outputMap);
		
		// 予め検索処理結果フラグ="false"を設定する
		// 検索結果有無フラグに初期値"false"をセット
		paramBean[0].sendMessageBoolean(KKW01805SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		
		if("1".equals(searchErrFlg))
		{
			// 検索結果が0件の場合の処理
			JCCWebCommon.setMessageInfo(this, "EKB0330--I");
			// 検索結果有無フラグの設定(false)
			paramBean[0].sendMessageBoolean(KKW01805SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
//			return false;
		}
		else if("2".equals(searchErrFlg))
		{
			// 検索結果が最大検索件数超えの場合の処理
			/* ++++++++++ v5.01.00 修正開始 ++++++++++ */
//			JCCWebCommon.setMessageInfo(this, "EKB0340--I", JCCWebCommon.getSearchConst("KKW01805_ROW_PER_PAGE"));
			JCCWebCommon.setMessageInfo(this, "EKB0340--I", new String[]{JCCWebCommon.getSearchConst("KKW01805_MAX_SHOW_CNT")});
			/* ++++++++++ v5.01.00 修正完了 ++++++++++ */
			// 検索結果有無フラグの設定(false)
			paramBean[0].sendMessageBoolean(KKW01805SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
//			return false;
		}
		else if("3".equals(searchErrFlg))
		/* ++++++++++ v5.01.00 削除開始 ++++++++++ */
//		if("3".equals(searchErrFlg))
		/* ++++++++++ v5.01.00 削除完了 ++++++++++ */
		{
			// 表示ページに該当するデータがない場合の処理
			JCCWebCommon.setMessageInfo(this, "EKB0350--I");
			// 検索結果有無フラグの設定(false)
			/* ++++++++++ v5.01.00 修正開始 ++++++++++ */
//			paramBean[0].sendMessageBoolean(KKW01805SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			paramBean[0].sendMessageBoolean(KKW01805SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
			/* ++++++++++ v5.01.00 修正完了 ++++++++++ */
		}
		/* ++++++++++ v5.01.00 追加開始 ++++++++++ */
		else
		{
			paramBean[0].sendMessageBoolean(KKW01805SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
		}
		
		// サービス結果の転記
		if(paramBean[0].sendMessageBoolean(KKW01805SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			mapper.getKKSV035101CC(paramBean, outputMap);
		}
		/* ++++++++++ v5.01.00 追加完了 ++++++++++ */
		
		// 取得件数を確認し、存在すれば検索結果有無フラグの設定(true)
		int count = paramBean[0].getDataBeanArray(KKW01805SFConst.ADSL_KOJI_INFO_LIST).getCount();

		if(count > 0)
		{
			// 検索結果有無フラグの設定
			paramBean[0].sendMessageBoolean(KKW01805SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
			// ラジオボタン選択値の設定(初期値)
			paramBean[0].sendMessageString(KKW01805SFConst.SELECT_RADIO, X31CWebConst.DATABEAN_SET_VALUE, "0");
			// 戻り情報に設定してあるページ検索キー(ADSL工事番号)を取得する
			String search_key = paramBean[0].sendMessageString(KKW01805SFConst.SEARCH_KEY, X31CWebConst.DATABEAN_GET_VALUE);
			// 画面一覧の取得
			X31SDataBeanAccessArray adsl_koji_info_list = paramBean[0].getDataBeanArray(KKW01805SFConst.ADSL_KOJI_INFO_LIST);

			// 行数分繰り返し
			for(int i = 0; i < count; i++)
			{
				X31SDataBeanAccess adsl_koji_info = adsl_koji_info_list.getDataBean(i);
				if(search_key.equals(adsl_koji_info.sendMessageString(KKW01805SFConst.L_ADSL_KOJI_NO_01, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					// ラジオボタン選択値を設定して繰り返し処理を終了する。
					paramBean[0].sendMessageString(KKW01805SFConst.SELECT_RADIO, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i));
					break;
				}
			}
		}
		else
		{
			// ラジオボタン選択値の設定(空白セット)
			paramBean[0].sendMessageString(KKW01805SFConst.SELECT_RADIO, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		
		//(4)サービス処理結果の取得（下り処理）
		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this,  "0", "KKSV035101CC", outputMap);
		
		//(5) 検索コマンドIDの設定
		// 検索のコマンドIDを設定する（ページングのイベントIDを設定）
		JCCWebCommon.setSearchCommand(this, "B_CHANGE_PAGE");

		// 検索結果有りの場合のみ、(6)ADSL工事履歴一覧の行編集を行う
		if(paramBean[0].sendMessageBoolean(KKW01805SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			setList(paramBean[0], bean);
		}

		return true;
	}
	
	/**
	 * ADSL工事情報一覧の表示設定を行います。
	 * <br>
	 * @param paramBean 設定する一覧のBean情報
	 * @param serviceFormBean 設定する画面のServiceFormBean
	 * @throws Exception
	 */
	private void setList(X31SDataBeanAccess paramBean, X31SDataBeanAccess serviceFormBean)	throws Exception
	{
		X31SDataBeanAccessArray adslList = paramBean.getDataBeanArray(KKW01805SFConst.ADSL_KOJI_INFO_LIST);
		
		int count = adslList.getCount();
		
		for (int i = 0; i < count; i++)	
		{
			X31SDataBeanAccess bean = adslList.getDataBean(i);
			
			// 氏名の結合
			
			// 申込者名（姓）の取得
			String nm_sei = bean.sendMessageString(KKW01805SFConst.L_NM_FMLNM_01, X31CWebConst.DATABEAN_GET_VALUE).trim();
			// 申込者名（名）の取得
			String nm_mei = bean.sendMessageString(KKW01805SFConst.L_NM_FSTNM_01, X31CWebConst.DATABEAN_GET_VALUE).trim();
			
			// 画面表示氏名の設定
//			bean.sendMessageString(KKW01805SFConst.L_NM_01, X31CWebConst.DATABEAN_SET_VALUE, nm_sei.trim() + nm_mei.trim());
			bean.sendMessageString(KKW01805SFConst.L_NM_01, X31CWebConst.DATABEAN_SET_VALUE, nm_sei + nm_mei);
			
			// (6)背景色設定
			if (i % 2 == 1)
			{
				bean.sendMessageString(KKW01805SFConst.L_BK_COLOR_01, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}
			else
			{
				bean.sendMessageString(KKW01805SFConst.L_BK_COLOR_01, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			}
			
			// TODO:サービス契約番号が取得できないためテスト用にデータをセットする。
			//bean.sendMessageString(KKW01805SFConst.L_SVC_KEI_NO_01 , X31CWebConst.DATABEAN_SET_VALUE, "KKSV035001");
		}
	}
	
	/**
	 * ラジオボタンの入力チェックを行う。<BR>
	 * 
     * <BR>
     * @param serviceBean
     * @return selectRadio
	 * @throws Exception 
	 */
	private String selectRadioBtnCheck(X31SDataBeanAccess serviceBean) throws Exception
	{
		
		// 一覧より選択されたラジオボタンのValue
		String selectRadio = serviceBean.sendMessageString(KKW01805SFConst.SELECT_RADIO, X31CWebConst.DATABEAN_GET_VALUE);
		
//		if(isNull(selectRadio)){
		if(null == (selectRadio))
		{
			return "";
		}
		
		return selectRadio;
	}
	
	/**
	 * ADSL工事情報一覧から選択した行のサービス契約番号を取得する。
	 * @param serviceBean
	 * @return 一覧から取得されたサービス契約番号
	 */
	private Object selectSvcKeiNoByRadioBtn(X31SDataBeanAccess serviceBean)
	{
		// 画面選択された行番号を取得する。
		String selectRadio = serviceBean.sendMessageString(KKW01805SFConst.SELECT_RADIO, X31CWebConst.DATABEAN_GET_VALUE);

		// 一覧から選択された行を取得する。
		X31SDataBeanAccessArray adsl_koji_info_list = serviceBean.getDataBeanArray(KKW01805SFConst.ADSL_KOJI_INFO_LIST);
		X31SDataBeanAccess selectBean = adsl_koji_info_list.getDataBean(Integer.parseInt(selectRadio));
	
//		String svc_kei_no = selectBean.sendMessageString(KKW01805SFConst.L_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		Object svc_kei_no = selectBean.sendMessageString(KKW01805SFConst.L_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);

		return svc_kei_no;
	}
	
	/**
	 * 自画面に遷移するときの遷移先画面情報を設定します。
	 * <br>
	 * @param commonBean 共有フォームBeanのアクセスクラス
	 */
	private void setSelfScreenInfo(X31SDataBeanAccess commonBean)
	{
		// 遷移先画面IDを設定（自分自身へ）
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW01805);
		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW01805);
	}
	
	/**
	 * 当画面へ戻る際に引き継ぐ情報を設定します。
	 * <br>
	 * @param serviceBean サービスフォームビーン
	 * @return HashMap<String, Object> 引継情報一覧
	 */
	private HashMap<String, Object> getSelfScreenKeys(X31SDataBeanAccess serviceBean)
	{
		HashMap<String, Object> outMap = new HashMap<String, Object>();
		
		// 引継ぎ情報をセットする
		// ・申込書番号
		outMap.put(KKW01805SFConst.MSKMSHO_NO, serviceBean.sendMessageString(KKW01805SFConst.MSKMSHO_NO_BK, X31CWebConst.DATABEAN_GET_VALUE));
		// ・認証ID
		outMap.put(KKW01805SFConst.NINSHO_ID, serviceBean.sendMessageString(KKW01805SFConst.NINSHO_ID_BK, X31CWebConst.DATABEAN_GET_VALUE));
		// ・設置先電話番号
		outMap.put(KKW01805SFConst.STC_SAKI_SK_TELNO, serviceBean.sendMessageString(KKW01805SFConst.STC_SAKI_SK_TELNO_BK, X31CWebConst.DATABEAN_GET_VALUE));
		// ・お客様名カナ
		outMap.put(KKW01805SFConst.CUST_KANA, serviceBean.sendMessageString(KKW01805SFConst.CUST_KANA_BK, X31CWebConst.DATABEAN_GET_VALUE));
		// ・お客様名
		outMap.put(KKW01805SFConst.CUST_NM, serviceBean.sendMessageString(KKW01805SFConst.CUST_NM_BK, X31CWebConst.DATABEAN_GET_VALUE));

		// ・ソート項目No.
		outMap.put(KKW01805SFConst.SORT_ITEM_NO, serviceBean.sendMessageString(KKW01805SFConst.SORT_ITEM_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// ・ソート区分
		outMap.put(KKW01805SFConst.SORT_KBN, serviceBean.sendMessageString(KKW01805SFConst.SORT_KBN, X31CWebConst.DATABEAN_GET_VALUE));

		// ・ページ検索キー（一覧選択行のサービス契約番号）
//		outMap.put(KKW01805SFConst.SEARCH_KEY,  serviceBean.sendMessageString(KKW01805SFConst.SEARCH_KEY, X31CWebConst.DATABEAN_GET_VALUE));

		
		// 選択位置取得
		String select_radio = serviceBean.sendMessageString(KKW01805SFConst.SELECT_RADIO, X31CWebConst.DATABEAN_GET_VALUE);
		
		// ・ページ検索キー（一覧選択行のADSL工事案件番号を取得）
		X31SDataBeanAccessArray adsl_koji_info_list = serviceBean.getDataBeanArray(KKW01805SFConst.ADSL_KOJI_INFO_LIST);

		X31SDataBeanAccess subBean = adsl_koji_info_list.getDataBean(Integer.parseInt(select_radio));
		
		outMap.put(KKW01805SFConst.SEARCH_KEY, subBean.sendMessageString(KKW01805SFConst.L_ADSL_KOJI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 選択位置取得
//		outMap.put(KKW01805SFConst.SELECT_RADIO, serviceBean.sendMessageString(KKW01805SFConst.SELECT_RADIO, X31CWebConst.DATABEAN_GET_VALUE));
		outMap.put(KKW01805SFConst.SELECT_RADIO, select_radio);
		
		return outMap;
	}	
	
	/**	
	 * <dd>メソッド名：引継情報データマップ取得
	 * <dd>メソッド説明：引数のサービスフォームBeanより引継情報データマップの生成を行う。
	 * <dd>備考：引継情報データタイプの可変項目はString[]のみ対応。
	 * @param bean サービスフォームBean
	 * @param hktgiKey 引継情報データタイプのキー
	 * @param hktgiPrmKeys 引継情報データタイプの項目キーリスト	
	 * @return HashMap<String, Object> 引継情報データマップ
	 */
	private HashMap<String, Object> getHktgiDataMap(X31SDataBeanAccess bean, String hktgiKey, String[] hktgiPrmKeys)
	{
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		List<HashMap<String, Object>> dataList = getHktgiDataList(bean, hktgiKey, hktgiPrmKeys);
		
		dataMap.put(hktgiKey, dataList);
		return dataMap;	
	}

	/**
	 * <dd>メソッド名：引継情報データマップ取得
	 * <dd>メソッド説明：引数のサービスフォームBeanより引継情報データリストの生成を行う。
	 * <dd>備考：引継情報データタイプの可変項目はString[]のみ対応。
	 * @param bean サービスフォームBean
	 * @param hktgiKey 引継情報データタイプのキー
	 * @param hktgiPrmKeys 引継情報データタイプの項目キーリスト	
	 * @return List<HashMap<String, Object>> 引継情報リスト
	 */
	private List<HashMap<String, Object>> getHktgiDataList(X31SDataBeanAccess bean, String hktgiKey, String[] hktgiPrmKeys)
	{
		List<HashMap<String, Object>> dataList = new ArrayList<HashMap<String, Object>>();

		X31SDataBeanAccessArray infList =  bean.getDataBeanArray(hktgiKey);
		HashMap<String, Object> inMap = null;
		for (int i = 0; i < infList.getCount(); i++)
		{
			inMap = new HashMap<String, Object>();
			X31SDataBeanAccess inf = infList.getDataBean(i);
			for (int j = 0; j < hktgiPrmKeys.length; j++)
			{
				try
				{
					// 2011.11.24 値のセット
//					inMap.put(hktgiPrmKeys[j], inf.sendMessageObject(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_VALUE));
					if (hktgiPrmKeys[j].equals(JKKCommonConst.HKTGI_SVC_KEI_NO))
					{
//						inMap.put(hktgiPrmKeys[j], "KKSV035001");
						inMap.put(hktgiPrmKeys[j], selectSvcKeiNoByRadioBtn(bean));
					}
					else
					{
						inMap.put(hktgiPrmKeys[j], inf.sendMessageObject(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_VALUE));
					}
				}
				catch (X31SRuntimeException ex)
				{
					// 可変項目の場合(String[]のみ対応)	
					int length = (Integer)inf.sendMessage(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_COUNT);
					String[] obj = new String[length];
					for (int k = 0; k < length; k++)
					{
						obj[k] = inf.sendMessageString(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_VALUE, k);
					}
					inMap.put(hktgiPrmKeys[j], obj);
				}
			}
			dataList.add(inMap);
		}
		return dataList;	
	}

}
