/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW06304SFLogic
*   ソースファイル名：KKW06304SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年10月17日
*＜機能概要＞
*   訪問対応履歴一覧画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/10/17   FJ）富士通  新規作成
*   v3.00.00    2012/04/01   FJ）富士通  ロット@対応
*   v3.01.00    2012/08/06   FJ）富士通  【IT2-2012-0001442】対応
*   v5.01.00    2013/04/18   FJ）富士通  【IT1-2013-0000985】対応
*   
**********************************************************************/
package eo.web.webview.KKW06304SF;

import java.text.DecimalFormat;
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;

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.KKSV0392_KKSV0392OPDBMapper;
import eo.web.webview.mapping.KKSV0393_KKSV0393OPDBMapper;

/**
 * KKW06304のビューロジック
 * <BR>
 * @author 富士通
 */

/**
 * @author 910075
 *
 */
@SuppressWarnings("serial")
public class KKW06304SFLogic 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,
		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
	};

	/**
	 * 初期表示処理を行います。
	 * <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);
		
		// ボタン制御フラグの設定のため、顧客契約引継リストを取得する
		ArrayList<HashMap<String, Object>> hktgiList = null;
		
		if( !(parameterMap == null) && !( parameterMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST)==null))
		{
			hktgiList = (ArrayList<HashMap<String, Object>>)parameterMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
			HashMap<String, Object> hktgiInfo = hktgiList.get(0);
			
			// ポップアップメニューの取得
			String popUpMenu = (String)hktgiInfo.get(JKKCommonConst.HKTGI_POPUP_MODE);

			if("1".equals(popUpMenu) || "2".equals(popUpMenu))
			{
				//「閉じる」ボタンを表示
				serviceBean.sendMessageString(KKW06304SFConst.BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
			}
			else
			{
				//「戻る」ボタンを表示
				serviceBean.sendMessageString(KKW06304SFConst.BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
			}
		}
		else
		{
			//「閉じる」ボタンを表示
			serviceBean.sendMessageString(KKW06304SFConst.BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		
		
		// (3)サービス呼出処理
		callService_KKSV0392(paramBean , "");

		//(7)遷移先画面の設定
		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();
		
		// 明細一覧のクリア
		clearSearchList(serviceBean);

		// 退避領域のクリア
		clearBackUpInfo(serviceBean);

		// 検索領域を退避領域にバックアップ
		setSerchInfo(serviceBean);
//
		// ページング情報のクリア
		JCCWebCommon.clearPageLinkInfo(this, JKKScreenConst.SCREEN_ID_KKW06304);

//		// サービス呼出
		callService_KKSV0393(paramBean , "");

//		//(7)遷移先画面の設定
		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();
		
		// マッピングクラスに渡す配列
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 明細一覧のクリア
		clearSearchList(serviceBean);
		
		// サービス呼出
		callService_KKSV0393(paramBean , "");
		
//		//(7)遷移先画面の設定
		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)遷移先画面の設定
		setSelfScreenInfo(commonBean);

		return true;
	}	
	
	/**
	 * 前画面に戻ります。
	 * <br>
	 * @throws Exception
	 * @return 処理成否
	 */
	public boolean back() throws Exception
	{
		//JCCWebCommon.setScreenInfoメソッドで設定されている画面情報を取得し、
		//サービスフォームBeanに設定する
		JCCWebCommon.getScreenInfo(this);
		
		//サービスフォームBean取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();

		X31SDataBeanAccess[] paramBean = {serviceBean};

		//共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 遷移先画面ID取得し設定する。
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));

		return true;
	}
	
	/**
	 * 自画面に遷移するときの遷移先画面情報を設定します。
	 * <br>
	 * @param commonBean 共有フォームBeanのアクセスクラス
	 */
	private void setSelfScreenInfo(X31SDataBeanAccess commonBean)
	{
		// 遷移先画面IDを設定（自分自身へ）
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW06304);
		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW06304);
	}

	/**
	 * サービス（KKSV0392）の呼び出しを行います。
	 * <br>
	 * @param paramBean パラメータとなるBean情報
	 * @param event ボタンイベント
	 * @return 成否
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
	private boolean callService_KKSV0392(X31SDataBeanAccess[] paramBean, String event) throws Exception
	{
		// 共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		// サービスフォームビーン
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 基準日にｵﾝﾗｲﾝ運用日付をセットする
		String stdardymd = JCCWebCommon.getOpeDate(this, null);
		
	//(2) 3.1.1 サービス呼出処理(callService)実行

		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0392");
		
		// データBeanとBPをマッピングするインスタンスを生成
		KKSV0392_KKSV0392OPDBMapper mapper = new KKSV0392_KKSV0392OPDBMapper();
		
		// 検索条件格納用マップを生成
		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.setKKSV039201SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1, stdardymd);
		mapper.setKKSV039202SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1, stdardymd);
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
	
		// メッセージ定義ファイルを読み込む
		JCCMessageCache.setMessageCache();
		
		// サービス結果の転記
		mapper.getKKSV039201SC(paramBean, outputMap);
		mapper.getKKSV039202SC(paramBean, outputMap);

		return true;
	}
	
	/**
	 * サービス（KKSV0393）の呼び出しを行います。
	 * <br>
	 * @param paramBean パラメータとなるBean情報
	 * @param event ボタンイベント
	 * @return 成否
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
	private boolean callService_KKSV0393(X31SDataBeanAccess[] paramBean, String event) throws Exception
	{
		
		// 共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		// サービスフォームビーン
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0393");
		
		// データBeanとBPをマッピングするインスタンスを生成
		KKSV0393_KKSV0393OPDBMapper mapper = new KKSV0393_KKSV0393OPDBMapper();
		
		// 検索条件格納用マップを生成
		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.setKKSV039301CC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "KKSV039301CC", inputMap);
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理
		if(msgResult != null)
		{
			
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
		
		// メッセージ定義ファイルを読み込む
		JCCMessageCache.setMessageCache();
		
		/* ++++++++++ v5.01.00 削除開始 ++++++++++ */
		// サービス結果の転記 → 一覧取得箇所を最大検索件数チェック後に変更
//		mapper.getKKSV039301CC(paramBean, outputMap);
		/* ++++++++++ v5.01.00 削除完了 ++++++++++ */
		
		/* ++++++++++ v5.01.00 追加開始 ++++++++++ */
		boolean list_output_ctrl_flg = false;
		/* ++++++++++ v5.01.00 追加完了 ++++++++++ */
		
	//(3) 取得データ件数チェック
		
		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("KKSV039301CC", outputMap);
		
		// 予め検索処理結果フラグ="false"を設定する
		// 検索結果有無フラグに初期値"false"をセット
		paramBean[0].sendMessageBoolean(KKW06304SFConst.LIST_OUTPUT_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		
		if("1".equals(searchErrFlg))
		{
			// 検索結果が0件の場合の処理
			JCCWebCommon.setMessageInfo(this, "EKB0330--I");
			/* ++++++++++ v5.01.00 削除開始 ++++++++++ */
			// 検索結果有無フラグの設定(false)
//			paramBean[0].sendMessageBoolean(KKW06304SFConst.LIST_OUTPUT_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			/* ++++++++++ v5.01.00 削除完了 ++++++++++ */
		}
		else if("2".equals(searchErrFlg))
		{
			// 検索結果が最大検索件数超えの場合の処理
			/* ++++++++++ v5.01.00 修正開始 ++++++++++ */
//			JCCWebCommon.setMessageInfo(this, "EKB0340--I", new String[]{JCCWebCommon.getSearchConst("KKW06304_ROW_PER_PAGE")});
			JCCWebCommon.setMessageInfo(this, "EKB0340--I", new String[]{JCCWebCommon.getSearchConst("KKW06304_MAX_SHOW_CNT")});
			/* ++++++++++ v5.01.00 修正完了 ++++++++++ */
			
			/* ++++++++++ v5.01.00 削除開始 ++++++++++ */
			// 検索結果有無フラグの設定(false)
//			paramBean[0].sendMessageBoolean(KKW06304SFConst.LIST_OUTPUT_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			/* ++++++++++ v5.01.00 削除完了 ++++++++++ */
		}
		
		/* ++++++++++ v5.01.00 追加開始 ++++++++++ */
		else
		{
			list_output_ctrl_flg = true;
		}
		
		if(list_output_ctrl_flg)
		{
			// サービス結果の転記 → 一覧取得箇所を最大検索件数チェック後に変更
			mapper.getKKSV039301CC(paramBean, outputMap);
		/* ++++++++++ v5.01.00 追加完了 ++++++++++ */
			
			// 取得件数を確認し、存在すれば検索結果有無フラグの設定(true)
			int count = paramBean[0].getDataBeanArray(KKW06304SFConst.SPRT_RIREKI_LIST).getCount();
	
			if(count > 0)
			{
//				paramBean[0].sendMessageBoolean(KKW06304SFConst.LIST_OUTPUT_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
				list_output_ctrl_flg = true;
			}
			else
			{
				// 検索結果が0件の場合の処理
				JCCWebCommon.setMessageInfo(this, "EKB0330--I");
				list_output_ctrl_flg = false;
			}
			
		/* ++++++++++ v5.01.00 追加開始 ++++++++++ */
		}
		paramBean[0].sendMessageBoolean(KKW06304SFConst.LIST_OUTPUT_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, list_output_ctrl_flg);
		/* ++++++++++ v5.01.00 追加完了 ++++++++++ */
		
		//(4)サービス処理結果の取得（下り処理）
		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this,  "0", "KKSV039301CC", outputMap);
		
		//(5) 検索コマンドIDの設定
		// 検索のコマンドIDを設定する（ページングのイベントIDを設定）
		JCCWebCommon.setSearchCommand(this, "B_CHANGE_PAGE");

		// 検索結果有りの場合のみ、訪問対応履歴一覧の行編集を行う
		if(paramBean[0].sendMessageBoolean(KKW06304SFConst.LIST_OUTPUT_CTRL_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			setList(paramBean[0], bean);
		}

		return true;
	}

	/**
	 * 明細一覧、一覧出力制御フラグをクリアします。
	 * <br>
	 * @param serviceBean
	 */
	private void clearSearchList(X31SDataBeanAccess serviceBean)
	{
		// 明細一覧のクリア
		serviceBean.getDataBeanArray(KKW06304SFConst.SPRT_RIREKI_LIST).clearArray();
		// 一覧出力制御フラグのリセット
		serviceBean.sendMessageBoolean(KKW06304SFConst.LIST_OUTPUT_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
	}

	/**
	 * 検索条件退避領域をクリアします。
	 * <br>
	 * @param serviceBean サービス取得内容
	 */
	private void clearBackUpInfo(X31SDataBeanAccess serviceBean)
	{
		//サポート種別退避
		serviceBean.sendMessage(KKW06304SFConst.BK_SUPPORT_SBT, X31CWebConst.DATABEAN_CLEAR);
		//サポート番号退避
		serviceBean.sendMessage(KKW06304SFConst.BK_SUPPORT_NO, X31CWebConst.DATABEAN_CLEAR);
		//ｅｏＩＤ退避
		serviceBean.sendMessage(KKW06304SFConst.BK_EOID, X31CWebConst.DATABEAN_CLEAR);
		//サービス契約番号退避
		serviceBean.sendMessage(KKW06304SFConst.BK_SVKEI_NO, X31CWebConst.DATABEAN_CLEAR);
		//訪問サポート会社コード退避
		serviceBean.sendMessage(KKW06304SFConst.BK_VSIT_SPRT_COMP_CD, X31CWebConst.DATABEAN_CLEAR);
		//対応記録番号退避
		serviceBean.sendMessage(KKW06304SFConst.BK_TAIOKRK_NO, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(自)(年)退避
		serviceBean.sendMessage(KKW06304SFConst.BK_SUPPORT_YEAR_FROM, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(自)(月)退避
		serviceBean.sendMessage(KKW06304SFConst.BK_SUPPORT_MON_FROM, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(自)(日)退避
		serviceBean.sendMessage(KKW06304SFConst.BK_SUPPORT_DAY_FROM, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(自)退避
		serviceBean.sendMessage(KKW06304SFConst.BK_SUPPORT_YMD_FROM, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(至)(年)退避
		serviceBean.sendMessage(KKW06304SFConst.BK_SUPPORT_YEAR_TO, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(至)(月)退避
		serviceBean.sendMessage(KKW06304SFConst.BK_SUPPORT_MON_TO, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(至)(日)退避
		serviceBean.sendMessage(KKW06304SFConst.BK_SUPPORT_DAY_TO, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(至)退避
		serviceBean.sendMessage(KKW06304SFConst.BK_SUPPORT_YMD_TO, X31CWebConst.DATABEAN_CLEAR);
	}

	/**
	 * 検索条件をクリアします。
	 * <br>
	 * @param serviceBean サービス取得内容
	 */
	private void clearSearchInfo(X31SDataBeanAccess serviceBean)
	{
		//サポート種別
		clearSelectValue(serviceBean, KKW06304SFConst.SUPPORT_SBT_TYPE);
		//サポート番号
		serviceBean.sendMessage(KKW06304SFConst.SUPPORT_NO, X31CWebConst.DATABEAN_CLEAR);
		//ｅｏＩＤ
		serviceBean.sendMessage(KKW06304SFConst.EOID, X31CWebConst.DATABEAN_CLEAR);
		//サービス契約番号
		serviceBean.sendMessage(KKW06304SFConst.SVKEI_NO, X31CWebConst.DATABEAN_CLEAR);
		//訪問サポート会社コード
		clearSelectValue(serviceBean, KKW06304SFConst.VSIT_SPRT_COMP_CD_TYPE);
		//対応記録番号
		serviceBean.sendMessage(KKW06304SFConst.TAIOKRK_NO, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(自)(年)
		serviceBean.sendMessage(KKW06304SFConst.SUPPORT_YEAR_FROM, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(自)(月)
		serviceBean.sendMessage(KKW06304SFConst.SUPPORT_MON_FROM, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(自)(日)
		serviceBean.sendMessage(KKW06304SFConst.SUPPORT_DAY_FROM, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(自)
		serviceBean.sendMessage(KKW06304SFConst.SUPPORT_YMD_FROM, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(至)(年)
		serviceBean.sendMessage(KKW06304SFConst.SUPPORT_YEAR_TO, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(至)(月)
		serviceBean.sendMessage(KKW06304SFConst.SUPPORT_MON_TO, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(至)(日)
		serviceBean.sendMessage(KKW06304SFConst.SUPPORT_DAY_TO, X31CWebConst.DATABEAN_CLEAR);
		//サポート年月日(至)
		serviceBean.sendMessage(KKW06304SFConst.SUPPORT_YMD_TO, X31CWebConst.DATABEAN_CLEAR);
	}
	
	/**
	 * 検索情報を退避情報にセットします。
	 * @param serviceBean
	 */
	private void setSerchInfo(X31SDataBeanAccess serviceBean)
	{
		//サポート種別退避←サポート種別
		String supportSbtCode = getSelectValue(serviceBean, KKW06304SFConst.SUPPORT_SBT_TYPE);
		serviceBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_SBT, X31CWebConst.DATABEAN_SET_VALUE, supportSbtCode);
		
		//サポート番号退避←サポート番号
		serviceBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_NO, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_NO, X31CWebConst.DATABEAN_GET_VALUE));
		//ｅｏＩＤ退避←ｅｏＩＤ
		serviceBean.sendMessageString(KKW06304SFConst.BK_EOID, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageString(KKW06304SFConst.EOID, X31CWebConst.DATABEAN_GET_VALUE));
		//サービス契約番号退避←サービス契約番号
		serviceBean.sendMessageString(KKW06304SFConst.BK_SVKEI_NO, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.SVKEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		//訪問サポート会社コード退避←訪問サポート会社コード
		String visitSprtCompCode = getSelectValue(serviceBean, KKW06304SFConst.VSIT_SPRT_COMP_CD_TYPE);
		serviceBean.sendMessageString(KKW06304SFConst.BK_VSIT_SPRT_COMP_CD, X31CWebConst.DATABEAN_SET_VALUE, visitSprtCompCode);

		//対応記録番号退避←対応記録番号
		serviceBean.sendMessageString(KKW06304SFConst.BK_TAIOKRK_NO, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.TAIOKRK_NO, X31CWebConst.DATABEAN_GET_VALUE));

		//サポート年月日(自)(年)退避←サポート年月日(自)(年)
		serviceBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_YEAR_FROM, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_YEAR_FROM, X31CWebConst.DATABEAN_GET_VALUE));
		//サポート年月日(自)(月)退避←サポート年月日(自)(月)
		serviceBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_MON_FROM, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_MON_FROM, X31CWebConst.DATABEAN_GET_VALUE));
		//サポート年月日(自)(日)退避←サポート年月日(自)(日)
		serviceBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_DAY_FROM, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_DAY_FROM, X31CWebConst.DATABEAN_GET_VALUE));
		//サポート年月日(自)←サポート年月日(自)(年)＋サポート年月日(自)(月)＋サポート年月日(自)(日)
		serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_YMD_FROM, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_YEAR_FROM, X31CWebConst.DATABEAN_GET_VALUE) +
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_MON_FROM, X31CWebConst.DATABEAN_GET_VALUE) +
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_DAY_FROM, X31CWebConst.DATABEAN_GET_VALUE));
		//サポート年月日(自)退避←サポート年月日(自)
		serviceBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_YMD_FROM, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_YMD_FROM, X31CWebConst.DATABEAN_GET_VALUE));

		//サポート年月日(至)(年)退避←サポート年月日(至)(年)
		serviceBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_YEAR_TO, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_YEAR_TO, X31CWebConst.DATABEAN_GET_VALUE));
		//サポート年月日(至)(月)退避←サポート年月日(至)(月)
		serviceBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_MON_TO, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_MON_TO, X31CWebConst.DATABEAN_GET_VALUE));
		//サポート年月日(至)(日)退避←サポート年月日(至)(日)
		serviceBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_DAY_TO, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_DAY_TO, X31CWebConst.DATABEAN_GET_VALUE));
		//サポート年月日(至)←サポート年月日(至)(年)＋サポート年月日(至)(月)＋サポート年月日(至)(日)
//		serviceBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_YMD_TO, X31CWebConst.DATABEAN_SET_VALUE,
		serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_YMD_TO, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_YEAR_TO, X31CWebConst.DATABEAN_GET_VALUE) +
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_MON_TO, X31CWebConst.DATABEAN_GET_VALUE) +
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_DAY_TO, X31CWebConst.DATABEAN_GET_VALUE));
		//サポート年月日(至)退避←サポート年月日(至)
		serviceBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_YMD_TO, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW06304SFConst.SUPPORT_YMD_TO, X31CWebConst.DATABEAN_GET_VALUE));
	}
	
	/**
	 * 訪問対応履歴一覧の表示設定を行います。
	 * <br>
	 * @param paramBean 設定する一覧のBean情報
	 * @param serviceFormBean 設定する画面のServiceFormBean
	 * @throws Exception
	 */
	private void setList(X31SDataBeanAccess paramBean, X31SDataBeanAccess serviceFormBean)	throws Exception
	{

		// サポート種別選択内容を取得する
		String support_sbt = serviceFormBean.sendMessageString(KKW06304SFConst.BK_SUPPORT_SBT, X31CWebConst.DATABEAN_GET_VALUE);

		X31SDataBeanAccessArray sprtList = paramBean.getDataBeanArray(KKW06304SFConst.SPRT_RIREKI_LIST);
		int count = sprtList.getCount();
		
/* ++++++++++ v3.01.00 追加開始 ++++++++++ */
		// 作業金額に設定する金額のカンマ編集フォーマットを指定
		DecimalFormat formatAmount = new DecimalFormat("###,###,###,##0");
/* ++++++++++ v3.01.00 追加完了 ++++++++++ */
		
		for (int i = 0; i < count; i++)	
		{
			X31SDataBeanAccess bean = sprtList.getDataBean(i);
			
/* ++++++++++ v3.01.00 追加開始 ++++++++++ */
			// 金額項目WORK領域（カンマ編集対象項目）
			String amount_work = null;
/* ++++++++++ v3.01.00 追加完了 ++++++++++ */
			
			// サポート種別選択内容が「訪問サポート」の場合
			if("01".equals(support_sbt))
			{
				// サポート作業←訪問サポート作業項目名
				bean.sendMessageString(KKW06304SFConst.RSLT_SUPPORT_WORK_02, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW06304SFConst.VSIT_SUPPORT_WORK_KMK_NM_02, X31CWebConst.DATABEAN_GET_VALUE));
				// 作業金額←訪問サポート作業金額
/* ++++++++++ v3.01.00 修正開始 ++++++++++ */
//				bean.sendMessageString(KKW06304SFConst.RSLT_WORK_AMNT_02, X31CWebConst.DATABEAN_SET_VALUE,
//						bean.sendMessageString(KKW06304SFConst.VSIT_SUPPORT_WORK_AMNT_02, X31CWebConst.DATABEAN_GET_VALUE));
				amount_work = bean.sendMessageString(KKW06304SFConst.VSIT_SUPPORT_WORK_AMNT_02, X31CWebConst.DATABEAN_GET_VALUE);
/* ++++++++++ v3.01.00 修正完了 ++++++++++ */
			}
			
			// サポート種別選択内容が「リモートサポート」の場合
			else if ("02".equals(support_sbt))
			{
				// サポート作業←リモートサポート作業項目名
				bean.sendMessageString(KKW06304SFConst.RSLT_SUPPORT_WORK_02, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW06304SFConst.RMT_SUPPORT_WORK_KMK_NM_02, X31CWebConst.DATABEAN_GET_VALUE));
				// 作業金額←リモートサポート料金
/* ++++++++++ v3.01.00 修正開始 ++++++++++ */
//				bean.sendMessageString(KKW06304SFConst.RSLT_WORK_AMNT_02, X31CWebConst.DATABEAN_SET_VALUE,
//						bean.sendMessageString(KKW06304SFConst.RMT_SUPPORT_PRC_02, X31CWebConst.DATABEAN_GET_VALUE));
				amount_work = bean.sendMessageString(KKW06304SFConst.RMT_SUPPORT_PRC_02, X31CWebConst.DATABEAN_GET_VALUE);
/* ++++++++++ v3.01.00 修正完了 ++++++++++ */
			}
			// それ以外の場合
			else
			{
				// サポート作業をクリア
				bean.sendMessage(KKW06304SFConst.RSLT_SUPPORT_WORK_02, X31CWebConst.DATABEAN_CLEAR);
				// 作業金額をクリア
/* ++++++++++ v3.01.00 修正開始 ++++++++++ */
//				bean.sendMessageString(KKW06304SFConst.RSLT_WORK_AMNT_02, X31CWebConst.DATABEAN_SET_VALUE, "0");
				amount_work = "";
/* ++++++++++ v3.01.00 修正完了 ++++++++++ */
			}
			
/* ++++++++++ v3.01.00 追加開始 ++++++++++ */
			// 金額設定時、カンマ編集を行う
			if(!(amount_work == null || "".equals(amount_work)))
			{
				// 金額をカンマ編集して amount_work に設定する
				amount_work = (String)formatAmount.format(Long.parseLong(amount_work));
			}
			bean.sendMessageString(KKW06304SFConst.RSLT_WORK_AMNT_02, X31CWebConst.DATABEAN_SET_VALUE, amount_work);
/* ++++++++++ v3.01.00 追加終了 ++++++++++ */
			
			// 背景色設定
			if (i % 2 == 1)
			{
				bean.sendMessageString(KKW06304SFConst.RSLT_BK_COLOR_02, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}
			else
			{
				bean.sendMessageString(KKW06304SFConst.RSLT_BK_COLOR_02, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			}
		}
	}
	
	/**
	 * プルダウンの設定値を取得します。
	 * <pre>
	 * @param serviceBean
	 * @param targetName
	 * @return String
	 */
	private String getSelectValue(X31SDataBeanAccess serviceBean, String targetName)
	{
		// 取得用
		X31SDataBeanAccess cdBean = serviceBean.getDataBeanArray(targetName).getDataBean(0);
		
		String cbIndex = cdBean.sendMessageString(KKW06304SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);

		if(cbIndex == null)
		{
			return new String(cdBean.sendMessageString(KKW06304SFConst.CD_DIV_CD_LIST_01,
					X31CWebConst.DATABEAN_GET_VALUE, 0)); 
		}
		else
		{
			return new String(cdBean.sendMessageString(KKW06304SFConst.CD_DIV_CD_LIST_01,
					X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(cbIndex)));
		}
	}
	
	/**
	 * プルダウンの設定値をクリアします。
	 * <pre>
	 * @param serviceBean
	 * @param targetName
	 */
	private void clearSelectValue(X31SDataBeanAccess serviceBean, String targetName)
	{
		// 取得用
		X31SDataBeanAccess cdBean = serviceBean.getDataBeanArray(targetName).getDataBean(0);
		// 値をクリア
		cdBean.sendMessage(KKW06304SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_CLEAR);
	}
	
	/**
	 * <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
				{
					if (hktgiPrmKeys[j].equals(JKKCommonConst.HKTGI_SVC_KEI_NO))
					{
					//	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;	
	}
}
