/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CRW10801SFLogic
 *	ソースファイル名：CRW10801SFLogic.java
 *	作成者			：富士通
 *	日付			：2017年02月24日
 *＜機能概要＞
 *	コールバック日時一括登録ビューロジック
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
 *
 ********************************************************************************/

package eo.web.webview.CRW10801SF;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JCRUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CRW00101SF.CRW00101SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CRSV0287_CRSV0287OPDBMapper;
import eo.web.webview.mapping.CRSV0283_CRSV0283OPDBMapper;
import eo.web.webview.mapping.CRSV0284_CRSV0284OPDBMapper;
import eo.web.webview.mapping.CRSV0285_CRSV0285OPDBMapper;

/**
 * コールバック日時一括登録 ビューロジック
 * @author FJ
 */
@SuppressWarnings("serial")
public class CRW10801SFLogic extends JCCWebBusinessLogic
{

	/**
	 * サービスID：CRSV0283
	 */
	private static final String SRV_ID_0283 = "CRSV0283";
	/**
	 * サービスID：CRSV0284
	 */
	private static final String SRV_ID_0284 = "CRSV0284";
	/**
	 * サービスID：CRSV0285
	 */
	private static final String SRV_ID_0285 = "CRSV0285";
	/**
	 * モーダル画面：反映用画面ID
	 */
	private static final String MODAL_REF_SCREEN_ID = "CCW00105";
	/**
	 * モーダル画面：反映用画面名
	 */
	private static final String MODAL_REF_SCREEN_NM = "モーダル用反映画面";
	/**
	 * 引継項目リスト
	 */
	private static final Set<String> HKTG_ITEM_SET = new HashSet<String>();

	/**
	 * Array項目リスト
	 */
	private static final Set<String> ARRAY_ITEM_SET = new HashSet<String>();
	
	static {
		//引継ぎ項目
		Collections.addAll(HKTG_ITEM_SET ,
				//対応開始年月日(自)
				CRW10801SFConst.TAIO_STA_DTM_FROM,
				//対応開始年月日(至)
				CRW10801SFConst.TAIO_STA_DTM_TO,
				//クエリ名
				CRW10801SFConst.QUERY_NM,
				//総件数(選択前)
				CRW10801SFConst.TOTAL_CNT_BF);
		//Array項目
		Collections.addAll(ARRAY_ITEM_SET,
				//問合せリスト一覧(選択前)
				CRW10801SFConst.TOIAWASE_LIST_BF,
				//問合せリスト一覧(選択後)
				CRW10801SFConst.TOIAWASE_LIST_AF,
				//コールバック時間指定タイプ
				CRW10801SFConst.CALLBK_SHITEI_TYPE);
	}
	/**
	 * CSVファイル作成：項目のくくり文字
	 */
	private static final String DOUBLE_QUOTATION = "\"";
	/**
	 * ディレイド依頼処理 サービスインターフェイスID
	 */
	private static final String DLYD_SIF_ID = "ECC0111D010";
	/**
	 * ファイルアップロード用 リスト名
	 */
	private static final String FILE_UPLOAD_LIST_NAME = "list_name";
	/**
	 * ファイルアップロード用 アイテム名
	 */
	private static final String FILE_UPLOAD_ITEM_NAME = "item_name";
	/**
	 * ファイルアップロード用 インデックス
	 */
	private static final String FILE_UPLOAD_INDEX = "index";
	/**
	 * ディレイド開始フラグ：ON："1"
	 */
	private static final String DLYD_STA_FLG_ON = "1";
	/**
	 * ディレイド開始フラグ：OFF：""
	 */
	private static final String DLYD_STA_FLG_OFF = "";
	/**
	 * 項目最大桁数セット：選択前："1"
	 */
	private static final String TOIAWASE_BF = "1";
	/**
	 * 項目最大桁数セット：選択後："1"
	 */
	private static final String TOIAWASE_AF = "2";
	/**
	 * エラーメッセージ：埋め込み文字列：システムエラー発生時
	 */
	private static final String ERR_MSG_SYS_ERR = "システムエラーが発生しました。";
	/**
	 * エラーメッセージ：埋め込み文字列：コールバック日時一括登録
	 */
	private static final String ERR_MSG_TOIAWSE_IKKATSU = "コールバック日時一括登録";
	/**
	 * メッセージ：埋め込み文字列：コールバック年月日の一括更新
	 */
	private static final String INF_MSG_UPD_1 = "「コールバック年月日」「コールバック時間」「コールバック時間指定タイプ」が設定されていないため、初期化されます。";
	/**
	 * メッセージ：埋め込み文字列：コールバック年月日の一括更新
	 */
	private static final String INF_MSG_UPD_2 = "「コールバック年月日」に値が設定されます。";
	/**
	 * メッセージ：埋め込み文字列：コールバック年月日、コールバック時間の一括更新
	 */
	private static final String INF_MSG_UPD_3 = "「コールバック年月日」「コールバック時間」に値が設定されます。";
	/**
	 * メッセージ：埋め込み文字列：コールバック年月日、コールバック時間、コールバック時間指定タイプの一括更新
	 */
	private static final String INF_MSG_ALL_UPD = "「コールバック年月日」「コールバック時間」「コールバック時間指定タイプ」に値が設定されます。";
	
	/**	EKBE570--I	*/
	public static final String EKBE570__I = "EKBE570--I";
	
	/**	EKBE570--I	*/
	public static final String EKBE530_KW = "EKBE530-KW";
	
	/**
	 * コールバック日時一括登録画面
	 * 初期表示処理
	 * <BR>
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	public boolean init()
	{
		X31SDataBeanAccess svBean = getServiceFormBean();
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// (a)画面情報取得部品(JCCWebCommon.getScreenInfo)を使用し、引継情報を取得する。
		HashMap<String, Object>dataMap = JCCWebCommon.getScreenInfo(this);
		// 戻り先画面の引継ぎ
		String pScreenId = JCCWebCommon.getScreenId(this);
		JCCWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW10802, pScreenId);
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		clearBean(svBean);
		// (ｱ) 引継情報から下記項目を設定する。
		//   対応開始年月日(自)
		svBean.sendMessageString(CRW10801SFConst.TAIO_STA_DTM_FROM, X31CWebConst.DATABEAN_SET_VALUE, 
												(String)dataMap.get(JCRStrConst.KEY_TAIO_STA_DTM_FROM));
		//   対応開始年月日(至)
		svBean.sendMessageString(CRW10801SFConst.TAIO_STA_DTM_TO, X31CWebConst.DATABEAN_SET_VALUE, 
												(String)dataMap.get(JCRStrConst.KEY_TAIO_STA_DTM_TO));
		//   クエリ名
		svBean.sendMessageString(CRW10801SFConst.QUERY_NM, X31CWebConst.DATABEAN_SET_VALUE, 
												(String)dataMap.get(JCRStrConst.KEY_QUERY_NM));
		//   総件数(選択前)
		svBean.sendMessageString(CRW10801SFConst.TOTAL_CNT_BF, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(JCRStrConst.KEY_QUERY_TOTAL_CNT));
		//(ｲ) 引継情報からクエリ実行問合せ一覧照会明細の1レコードに当たる情報(fieldMap)を基に明細行数分のArrayListの
		//    要素を作成し問合せリスト一覧(選択前)を設定する。
		ArrayList<Object> queryList = (ArrayList<Object>)dataMap.get(JCRStrConst.KEY_QUERY_LIST);
		setToiawaseListBf(svBean, queryList);

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {svBean, cfBean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0287");

		// マッピングクラス
		CRSV0287_CRSV0287OPDBMapper mapper = new CRSV0287_CRSV0287OPDBMapper();

		// マッピング処理（上り）
		mapper.setGETCDNMCTLCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		mapper.getGETCDNMCTLCC(paramBean, outputMap);
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW10801);

		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW10801);


		return true;
	}
	
	/**
	 * コールバック日時一括登録画面
	 * 登録確認ボタン押下処理
	 * <BR>
	 * @return boolean
	 */
	public boolean createCfm()
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess svBean = getServiceFormBean();

		// (a) サービスフォームBean.問合せリスト一覧(選択前).実行がtrue(チェック有)場合、下記処理を行う。
		int iSelectedCnt = setToiSelectedListBfToAf(svBean);
		// (b) サービスフォームBeanを設定する。		
		
		// コールバック希望年月日
		String callbkKiboYmd = JCRUtilCommon.concatYmd(
				svBean.sendMessageString(CRW00101SFConst.CALLBK_KIBO_YMD_YYYY, X31CWebConst.DATABEAN_GET_VALUE)
				, svBean.sendMessageString(CRW00101SFConst.CALLBK_KIBO_YMD_MM, X31CWebConst.DATABEAN_GET_VALUE)
				, svBean.sendMessageString(CRW00101SFConst.CALLBK_KIBO_YMD_DD, X31CWebConst.DATABEAN_GET_VALUE));
		svBean.sendMessageString(CRW00101SFConst.CALLBK_KIBO_YMD, X31CWebConst.DATABEAN_SET_VALUE, callbkKiboYmd != null ? callbkKiboYmd : "");

		// コールバック希望時間
		String callbkKiboTime = JCRUtilCommon.concatHm(
				svBean.sendMessageString(CRW00101SFConst.CALLBK_KIBO_TIME_HO, X31CWebConst.DATABEAN_GET_VALUE)
				, svBean.sendMessageString(CRW00101SFConst.CALLBK_KIBO_TIME_MI, X31CWebConst.DATABEAN_GET_VALUE));
		svBean.sendMessageString(CRW00101SFConst.CALLBK_KIBO_TIME, X31CWebConst.DATABEAN_SET_VALUE, callbkKiboTime != null ? callbkKiboTime : "");

		// コールバック時間指定タイプ
		X31SDataBeanAccess callbkShiteiTypeBean = svBean.getDataBeanArray(CRW00101SFConst.CALLBK_SHITEI_TYPE).getDataBean(0);
		// コールバック時間指定タイプ・コールバック時間指定タイプコード
		callbkShiteiTypeBean.sendMessageString(CRW00101SFConst.L6_SEL_CALLBK_SHITEI_TYPE_CD_07, X31CWebConst.DATABEAN_SET_VALUE
				, JCRWebCommon.getPullDownCode(svBean, CRW00101SFConst.CALLBK_SHITEI_TYPE, CRW00101SFConst.L6_SEL_CALLBK_SHITEI_TYPE_IDX_07
				, CRW00101SFConst.L6_CALLBK_SHITEI_TYPE_CD_07));
		// コールバック時間指定タイプ・コールバック時間指定タイプコード名称
		callbkShiteiTypeBean.sendMessageString(CRW00101SFConst.L6_SEL_CALLBK_SHITEI_TYPE_CD_NM_07, X31CWebConst.DATABEAN_SET_VALUE
				, JCRWebCommon.getPullDownName(svBean, CRW00101SFConst.CALLBK_SHITEI_TYPE, CRW00101SFConst.L6_SEL_CALLBK_SHITEI_TYPE_IDX_07
				, CRW00101SFConst.L6_CALLBK_SHITEI_TYPE_CD_07, CRW00101SFConst.L6_CALLBK_SHITEI_TYPE_CD_NM_07));

		
		
		//     総件数(選択後)
		svBean.sendMessageString(CRW10801SFConst.TOTAL_CNT_AF, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(iSelectedCnt));
		//     追記内容使用可否
		svBean.sendMessageString(CRW10801SFConst.TSUIKI_NAIYO_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		

		
		if(iSelectedCnt == 0)
		{
			//(a) 選択された件数が0件の場合、エラーを示すメッセージ設定を共通部品/メッセージエリア設定処理
			//    （JCRWebCommon.setMessageInfo）を使用して行う。
			JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0410_NW);
		}
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		//コールバック年月日がシステム日付より過去日付の場合エラー。
		if (!JCRUtilCommon.isNull(svBean.sendMessageString(CRW10801SFConst.CALLBK_KIBO_YMD, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 過去日付チェック
			if (opeDate.compareTo(callbkKiboYmd) >= 1){
				//（JCRWebCommon.setMessageInfo）を使用して行う。
				JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0260_NW, new String[] {"コールバック年月日", "現在日付", "日付"}, "callbk_kibo_ymd_yyyy");
				JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0260_NW, new String[] {"コールバック年月日", "現在日付", "日付"}, "callbk_kibo_ymd_mm");
				JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0260_NW, new String[] {"コールバック年月日", "現在日付", "日付"}, "callbk_kibo_ymd_dd");
				
				// 遷移先画面IDを共有フォームBeanに設定
				cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
						JCRScreenConst.SCREEN_ID_CRW10801);
				// 遷移先画面名を共有フォームBeanに設定
				cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
						JCRScreenConst.SCREEN_NAME_CRW10801);
				return true;
			}
		}
		
		if(iSelectedCnt == 0)
		{
			//(a) 上記(5)でエラーの場合、以下の設定を行う。
			// 遷移先画面IDを共有フォームBeanに設定
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JCRScreenConst.SCREEN_ID_CRW10801);
			// 遷移先画面名を共有フォームBeanに設定
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JCRScreenConst.SCREEN_NAME_CRW10801);
		}
		else
		{
			
			String CallbkShiteiType = eo.web.webview.common.JCRWebCommon.getPullDownCode(
					svBean, "コールバック時間指定タイプ", "コールバック時間指定タイプコードインデックス", "コールバック時間指定タイプコードリスト");

			// メッセージを表示する
			if (!JCRUtilCommon.isNull(svBean.sendMessageString(CRW10801SFConst.CALLBK_KIBO_YMD, X31CWebConst.DATABEAN_GET_VALUE))
				&& !JCRUtilCommon.isNull(svBean.sendMessageString(CRW10801SFConst.CALLBK_KIBO_TIME, X31CWebConst.DATABEAN_GET_VALUE))
				&& !JCRUtilCommon.isNull(CallbkShiteiType))
			{
				// コールバック年月日、時間、時間タイプに入力がある場合
				JCCWebCommon.setMessageAreaBackColor(this, "1");
				JCCWebCommon.setMessageInfo(this, EKBE570__I, new String[]{INF_MSG_ALL_UPD});
			}
			else if (!JCRUtilCommon.isNull(svBean.sendMessageString(CRW10801SFConst.CALLBK_KIBO_YMD, X31CWebConst.DATABEAN_GET_VALUE))
					&& !JCRUtilCommon.isNull(svBean.sendMessageString(CRW10801SFConst.CALLBK_KIBO_TIME, X31CWebConst.DATABEAN_GET_VALUE))
					&& JCRUtilCommon.isNull(CallbkShiteiType))
			{
				// コールバック年月日、時間に入力がある場合
				JCCWebCommon.setMessageAreaBackColor(this, "1");
				JCCWebCommon.setMessageInfo(this, EKBE570__I, new String[]{INF_MSG_UPD_3});
			}
			else if (!JCRUtilCommon.isNull(svBean.sendMessageString(CRW10801SFConst.CALLBK_KIBO_YMD, X31CWebConst.DATABEAN_GET_VALUE))
					&& JCRUtilCommon.isNull(svBean.sendMessageString(CRW10801SFConst.CALLBK_KIBO_TIME, X31CWebConst.DATABEAN_GET_VALUE))
					&& JCRUtilCommon.isNull(CallbkShiteiType))
			{
				// コールバック年月日に入力がある場合
				JCCWebCommon.setMessageAreaBackColor(this, "1");
				JCCWebCommon.setMessageInfo(this, EKBE570__I, new String[]{INF_MSG_UPD_2});
			}
			else if (JCRUtilCommon.isNull(svBean.sendMessageString(CRW10801SFConst.CALLBK_KIBO_YMD, X31CWebConst.DATABEAN_GET_VALUE))
					&& JCRUtilCommon.isNull(svBean.sendMessageString(CRW10801SFConst.CALLBK_KIBO_TIME, X31CWebConst.DATABEAN_GET_VALUE))
					&& JCRUtilCommon.isNull(CallbkShiteiType))
			{
				// コールバック年月日、時間、時間タイプに入力がない場合
				JCCWebCommon.setMessageAreaBackColor(this, "1");
				JCCWebCommon.setMessageInfo(this, EKBE570__I, new String[]{INF_MSG_UPD_1});
			}

			//(b) 上記(5)でエラーでない場合、以下の設定を行う。
			// 遷移先画面IDを共有フォームBeanに設定
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JCRScreenConst.SCREEN_ID_CRW10802);
			// 遷移先画面名を共有フォームBeanに設定
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JCRScreenConst.SCREEN_NAME_CRW10802);
		}
		return true;
	}
	
	/**
	 * 問合せ一括登録確認画面
	 * 確定ボタン押下処理
	 * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean fix() throws Exception
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess svBean = getServiceFormBean();
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		//(a) 下記項目を編集後、Byte配列に値を格納する。
		//  (ｱ) 設定内容(１行目)
		StringBuilder output = new StringBuilder();
		createCsvFileHeader(output, cfBean, svBean);
		//  (ｲ) 下記項目を編集後、Byte配列に値を格納する。 （２行目以降）
		createCsvFileBody(output, svBean);

		//(b) サービスフォームBeanに値を設定する。
		svBean.sendMessageString(CRW10801SFConst.EFILE, X31CWebConst.DATABEAN_SET_VALUE, output.toString());
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		X31SDataBeanAccess[] beans = {svBean};
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SRV_ID_0283);
		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// マッピングクラス
		CRSV0283_CRSV0283OPDBMapper mapper = new CRSV0283_CRSV0283OPDBMapper();
		// マッピング処理（上り）
		mapper.setCRSV028301SC(beans, dataMap, JPCModelConstant.FUNC_CD_1);
		//Byte配列セット
		HashMap<String, Object> attachMap = new HashMap<String, Object>();
		// ディレイド依頼処理用マッピング
		setByteArrayMapping(attachMap, svBean);
		// サービス実行(ディレイド処理依頼 Byte配列分のHashMap）
		invokeService(paramMap, dataMap, outputMap, attachMap);
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		mapper.getCRSV028301SC(beans, outputMap);
		// ディレイド処理中メッセージ出力
		JCCWebCommon.setMessageAreaBackColor(this, "1");
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB7660__I);
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// ディレイド開始フラグ ON
		svBean.sendMessageString(CRW10801SFConst.DLYD_STA_FLG, X31CWebConst.DATABEAN_SET_VALUE, DLYD_STA_FLG_ON);
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW10802);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW10802);
		return true;
	}
	
	/**
	 * コールバック日時一括登録確認画面
	 * ディレイド処理依頼結果チェック
	 * <BR>
	 * @return boolean
	 */
	public boolean fixKeepAlive()
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		X31SDataBeanAccess svBean = getServiceFormBean();
		
		X31SDataBeanAccess[] beans = {svBean};
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SRV_ID_0284);
		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// マッピングクラス
		CRSV0284_CRSV0284OPDBMapper mapper = new CRSV0284_CRSV0284OPDBMapper();
		// マッピング処理（上り）
		mapper.setCRSV028401SC(beans, dataMap, JPCModelConstant.FUNC_CD_1);
		// サービス呼び出し
		invokeService(paramMap, dataMap, outputMap);
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		mapper.getCRSV028401SC(beans, outputMap);
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW10802);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW10802);
		return true;
	}
	
	/**
	 * コールバック日時一括登録確認画面
	 * ディレイド処理依頼結果チェック
	 * <BR>
	 * @return boolean
	 */
	public boolean fixResultOk()
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		X31SDataBeanAccess svBean = getServiceFormBean();
		// (a) ディレイド処理の正常終了を示すメッセージ設定を共通部品/メッセージエリア設定処理
		//    （JCRWebCommon.setMessageInfo）を使用して行う。
		JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, new String[] {ERR_MSG_TOIAWSE_IKKATSU});
		// (b) ディレイド開始フラグに空文字を設定し、Ajaxによるポーリング処理を停止する。
		svBean.sendMessageString(CRW10801SFConst.DLYD_STA_FLG, X31CWebConst.DATABEAN_SET_VALUE, DLYD_STA_FLG_OFF);
		
		//リフレッシュタイプ：クエリ一覧クリア
		HashMap<String, Object>refdataMap = new HashMap<String, Object>();
		refdataMap.put(JCRStrConst.KEY_REFRESH_TYPE, JCRStrConst.QUERY_LIST_REFRESH);
		//呼び出し元画面IDの取得
		String pScreenId = JCCWebCommon.getScreenId(this);
		//セッションへリフレッシュタイプをセット
		JCCWebCommon.setScreenInfo(this, pScreenId, refdataMap);
		
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		// モーダル用反映画面へ画面遷移
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,X31CWebConst.DATABEAN_SET_VALUE, MODAL_REF_SCREEN_ID);
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,X31CWebConst.DATABEAN_SET_VALUE, MODAL_REF_SCREEN_NM);
		
		return true;
	}
	
	/**
	 * コールバック日時一括登録確認画面
	 * ディレイド処理依頼結果（エラー）
	 * <BR>
	 * @return boolean
	 */
	public boolean fixResultErr()
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		X31SDataBeanAccess svBean = getServiceFormBean();
		
		X31SDataBeanAccess[] beans = {svBean};
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SRV_ID_0285);
		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// マッピングクラス
		CRSV0285_CRSV0285OPDBMapper mapper = new CRSV0285_CRSV0285OPDBMapper();
		// マッピング処理（上り）
		mapper.setCRSV028501SC(beans, dataMap, JPCModelConstant.FUNC_CD_2);
		//ファイル受信用Map
		HashMap<String, Object> attachMap = new HashMap<String, Object>();
		// サービス呼び出し
		invokeService(paramMap, dataMap, outputMap, attachMap);
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		String errMsg = getErrMsgFromByteArray(attachMap);
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// (a) 取得したエラーファイルの内容を共通部品/メッセージエリア設定処理（JCRWebCommon.setMessageInfo）
		//     の置換文字列に設定する。
		dispErrMessage(errMsg);
		// (b) ディレイド開始フラグに空文字を設定し、Ajaxによるポーリング処理を停止する。
		svBean.sendMessageString(CRW10801SFConst.DLYD_STA_FLG, X31CWebConst.DATABEAN_SET_VALUE, DLYD_STA_FLG_OFF);
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW10802);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW10802);
		
		return true;
	}
	
	/**
	 * コールバック日時一括登録確認画面
	 * ディレイド処理依頼結果(システムエラー)
	 * @return boolean
	 */
	public boolean fixResultSysErr()
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// (a) 取得したエラーファイルの内容を共通部品/メッセージエリア設定処理（JCRWebCommon.setMessageInfo）
		//     の置換文字列に設定する。
		JCCWebCommon.setMessageInfo(this, EKBE530_KW, new String[] {ERR_MSG_SYS_ERR});
		// (b) ディレイド開始フラグに空文字を設定し、Ajaxによるポーリング処理を停止する。
		X31SDataBeanAccess svBean = getServiceFormBean();
		svBean.sendMessageString(CRW10801SFConst.DLYD_STA_FLG, X31CWebConst.DATABEAN_SET_VALUE, DLYD_STA_FLG_OFF);
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW10802);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW10802);
		return true;
	}
	
	/**
	 * コールバック日時一括登録確認画面
	 * キャンセルボタン押下処理
	 * <BR>
	 * @return boolean
	 */
	public boolean cancel()
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess svBean = getServiceFormBean();
		// 追記内容使用可否
		svBean.sendMessageString(CRW10801SFConst.TSUIKI_NAIYO_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// ディレイド開始フラグに空文字を設定し、Ajaxによるポーリング処理を停止する。
		svBean.sendMessageString(CRW10801SFConst.DLYD_STA_FLG, X31CWebConst.DATABEAN_SET_VALUE, DLYD_STA_FLG_OFF);
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW10801);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW10801);
		return true;
	}
	
	/**
	 * 電子ファイル一意照会で取得したマップから、Byte配列を取得し、Stringへ変換後
	 * それを返却します。
	 * <BR>
	 * @param attachMap Byte配列（電子ファイル）がセットされているHashMap
	 * @return String
	 */
	private String getErrMsgFromByteArray(HashMap<String, Object> attachMap)
	{
		//Mapからリストを取得
		ArrayList list = (ArrayList)attachMap.get(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE_LIST);
		//一意照会なので、必ず1件となる。
		HashMap map = (HashMap)list.get(0);
		//エラー電子ファイル Byte配列
		byte[] binaryFile = (byte[])map.get(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE);
		//Byte配列をStringへ変換
		String errMsg = "";
		try {
			errMsg = new String(binaryFile, JCRStrConst.MOJI_CD_MS932);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		return errMsg;
	}
	
	/**
	 * エラーメッセージ出力処理.<br>
	 * ディレイド処理依頼で発生したエラー内容を出力。
	 * 
	 * @param errMsg エラーファイル文字列
	 */
	private void dispErrMessage(String errMsg)
	{

		String[] dispMsg = errMsg.split(JCRStrConst.KAIGYO_CD);
		for(int i = 0; i < dispMsg.length; i++)
		{
			// ディレイド処理エラーメッセージ出力
			// CASEファイルチェックエラー(%1%)
			JCCWebCommon.setMessageInfo(this, EKBE530_KW, new String[] {dispMsg[i]});

		}
	}
	
	/**
	 * バイト配列出力用 CSVファイルイメージ 1行目の作成を行います。
	 * <BR>
	 * @param sb CSVファイルイメージ格納用
	 * @param cfBean 共有フォームBean
	 * @param svBean サービスフォームBean
	 */
	private void createCsvFileHeader(StringBuilder sb, X31SDataBeanAccess cfBean, X31SDataBeanAccess svBean)
	{
		// 共有フォームBean.ログインユーザーＩＤ
		sb.append(DOUBLE_QUOTATION)
		  .append(cfBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE))
		  .append(DOUBLE_QUOTATION).append(JCRStrConst.STR_HALF_COMMA);
		// 共有フォームBean.ログインユーザー名
		sb.append(DOUBLE_QUOTATION + cfBean.sendMessageString(CommonInfoCFConst.USER_NM, X31CWebConst.DATABEAN_GET_VALUE) 
																+ DOUBLE_QUOTATION + JCRStrConst.STR_HALF_COMMA);
		X31SDataBeanAccessArray kggrpCdList = cfBean.getDataBeanArray(CommonInfoCFConst.KGGRP_CD_LIST);
		X31SDataBeanAccess subBean = kggrpCdList.getDataBean(1);
		// 共有フォームBean.業務個別設定組織コード
		sb.append(DOUBLE_QUOTATION)
		  .append(subBean.sendMessageString(CommonInfoCFConst.ORG_CD_01, X31CWebConst.DATABEAN_GET_VALUE))
		  .append(DOUBLE_QUOTATION).append(JCRStrConst.STR_HALF_COMMA);

		// 共有フォームBean.業務個別設定組織名
		sb.append(DOUBLE_QUOTATION)
		  .append(subBean.sendMessageString(CommonInfoCFConst.ORG_NM_01, X31CWebConst.DATABEAN_GET_VALUE)) 
		  .append(DOUBLE_QUOTATION).append(JCRStrConst.STR_HALF_COMMA);

		// サービスフォームBean.コールバック希望年月日
		sb.append(DOUBLE_QUOTATION)
		  .append(svBean.sendMessageString(CRW10801SFConst.CALLBK_KIBO_YMD, X31CWebConst.DATABEAN_GET_VALUE)) 
		  .append(DOUBLE_QUOTATION).append(JCRStrConst.STR_HALF_COMMA);

		// サービスフォームBean.コールバック希望時間
		sb.append(DOUBLE_QUOTATION)
		  .append(svBean.sendMessageString(CRW10801SFConst.CALLBK_KIBO_TIME, X31CWebConst.DATABEAN_GET_VALUE)) 
		  .append(DOUBLE_QUOTATION).append(JCRStrConst.STR_HALF_COMMA);
		
		// サービスフォームBean.コールバック時間指定タイプ
		sb.append(DOUBLE_QUOTATION)
		  .append(eo.web.webview.common.JCRWebCommon.getPullDownCode(
					svBean, "コールバック時間指定タイプ", "コールバック時間指定タイプコードインデックス", "コールバック時間指定タイプコードリスト")) 
		  .append(DOUBLE_QUOTATION);

		// 改行コード
		sb.append(JCRStrConst.KAIGYO_CD);
	}
	
	/**
	 * バイト配列出力用 CSVファイルイメージ 2行目以降の作成を行います。
	 * <BR>
	 * @param sb  CSVファイルイメージ格納用
	 * @param svBean サービスフォームBean
	 */
	private void createCsvFileBody(StringBuilder sb, X31SDataBeanAccess svBean)
	{
		X31SDataBeanAccessArray toiawaseList = svBean.getDataBeanArray(CRW10801SFConst.TOIAWASE_LIST_AF);
		
		for(int iCnt = 0; iCnt < toiawaseList.getCount(); iCnt++)
		{
			X31SDataBeanAccess subBean = toiawaseList.getDataBean(iCnt);
			//サービスフォームBean.問合せリスト一覧(選択後).対応記録番号
			sb.append(DOUBLE_QUOTATION)
			  .append(subBean.sendMessageString(CRW10801SFConst.L1_TAIO_KIROK_NO_02, X31CWebConst.DATABEAN_GET_VALUE))
			  .append(DOUBLE_QUOTATION).append(JCRStrConst.STR_HALF_COMMA);
			//サービスフォームBean.問合せリスト一覧(選択後).更新前更新年月日時分秒
			sb.append(DOUBLE_QUOTATION)
			  .append(subBean.sendMessageString(CRW10801SFConst.L1_UPD_DTM_BF_02, X31CWebConst.DATABEAN_GET_VALUE))
			  .append(DOUBLE_QUOTATION + JCRStrConst.KAIGYO_CD);
		}
	}
	
	/**
	 * ディレイド依頼処理用のByte配列のマッピングを行います。
	 * <BR>
	 * @param attachMap バイト配列用マッピング HashMap
	 * @param svBean サービスフォームBean
	 * @throws UnsupportedEncodingException 
	 */
	private void setByteArrayMapping(HashMap<String, Object> attachMap, X31SDataBeanAccess svBean) throws UnsupportedEncodingException
	{
		//バイト配列へ変換 
		String eFile = svBean.sendMessageString(CRW10801SFConst.EFILE, X31CWebConst.DATABEAN_GET_VALUE);
		byte[] binaryFile = eFile.getBytes(JCRStrConst.MOJI_CD_MS932);
		
		HashMap<String, Object> fileMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> fileList = new ArrayList<HashMap<String, Object>>();
		
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_IDENTIFUCD, DLYD_SIF_ID);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_LIST_NAMAE, FILE_UPLOAD_LIST_NAME);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_ITEM_NAMAE, FILE_UPLOAD_ITEM_NAME);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_INDEX, FILE_UPLOAD_INDEX);
		fileMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE, binaryFile);
		//リストへ追加
		fileList.add(fileMap);
		attachMap.put(X31CWebConst.TELEGRAM_INFO_ATTACH_FILE_LIST, fileList);

	}
	
	/**
	 * 問合せリスト一覧（選択前）で実行チェックボックスがONのデータのみ問合せリスト一覧（選択後）へセット
	 * します。
	 * <BR>
	 * @param svBean サービスフォームBean
	 * @return int 選択後の件数
	 */
	private int setToiSelectedListBfToAf(X31SDataBeanAccess svBean)
	{
		//問合せリスト一覧（選択前）
		X31SDataBeanAccessArray toiawaseListBf = svBean.getDataBeanArray(CRW10801SFConst.TOIAWASE_LIST_BF);
		int iSelectedCnt = 0;
		//問合せリスト一覧（選択後）
		X31SDataBeanAccessArray toiawaseListAf = svBean.getDataBeanArray(CRW10801SFConst.TOIAWASE_LIST_AF);
		//問合せリスト一覧（選択後）クリア
		toiawaseListAf.clearArray();
		
		for(int iCnt = 0; iCnt < toiawaseListBf.getCount(); iCnt++)
		{
			//問合せリスト一覧（選択前）
			X31SDataBeanAccess subBeanBf = toiawaseListBf.getDataBean(iCnt);
			//問合せリスト一覧（選択後）
			X31SDataBeanAccess subBeanAf = null;
			// (a) サービスフォームBean.問合せリスト一覧(選択前).実行がtrue(チェック有)場合、下記処理を行う。
			//    サービスフォームBean.総件数(選択前)分処理を繰り返す。
			boolean execFlg = subBeanBf.sendMessageBoolean(CRW10801SFConst.L0_RUN_01, X31CWebConst.DATABEAN_GET_VALUE);
			if(execFlg)
			{
				iSelectedCnt++;
				//  (ｱ) 行スタイルを取得する。
				String lineStyle = JCRWebCommon.getLineStyle(iSelectedCnt);
				//  (ｲ) 問合せリスト一覧(選択後)のサービスフォームBeanを設定する。
				subBeanAf = toiawaseListAf.addDataBean();
				//明細インデックス
				subBeanAf.sendMessageString(CRW10801SFConst.L1_LINE_NO_02, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(iSelectedCnt));
				//問合せＩＤ
				subBeanAf.sendMessageString(CRW10801SFConst.L1_TAIO_KIROK_NO_02, X31CWebConst.DATABEAN_SET_VALUE, 
										subBeanBf.sendMessageString(CRW10801SFConst.L0_TAIO_KIROK_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
				//対応開始年月日
				subBeanAf.sendMessageString(CRW10801SFConst.L1_TAIO_STA_DTM_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW10801SFConst.L0_TAIO_STA_DTM_01, X31CWebConst.DATABEAN_GET_VALUE));
				//タイトル
				subBeanAf.sendMessageString(CRW10801SFConst.L1_TITLE_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW10801SFConst.L0_TITLE_01, X31CWebConst.DATABEAN_GET_VALUE));
				//サービス名称
				subBeanAf.sendMessageString(CRW10801SFConst.L1_SVC_KEI_NO_NM_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW10801SFConst.L0_SVC_KEI_NO_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
				//問合せ状態コード
				subBeanAf.sendMessageString(CRW10801SFConst.L1_TOIAWASE_STAT_CD_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW10801SFConst.L0_TOIAWASE_STAT_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
				//問合せ状態
				subBeanAf.sendMessageString(CRW10801SFConst.L1_TOIAWASE_STAT_CD_NM_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW10801SFConst.L0_TOIAWASE_STAT_CD_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
				//eoID
				subBeanAf.sendMessageString(CRW10801SFConst.L1_EOID_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW10801SFConst.L0_EOID_01, X31CWebConst.DATABEAN_GET_VALUE));
				//サービス契約番号
				subBeanAf.sendMessageString(CRW10801SFConst.L1_SVC_KEI_NO_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW10801SFConst.L0_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
				//添付有無
				subBeanAf.sendMessageString(CRW10801SFConst.L1_TEMP_UM_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW10801SFConst.L0_TEMP_UM_01, X31CWebConst.DATABEAN_GET_VALUE));
				//更新前更新年月日時分秒
				subBeanAf.sendMessageString(CRW10801SFConst.L1_UPD_DTM_BF_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW10801SFConst.L0_UPD_DTM_BF_01, X31CWebConst.DATABEAN_GET_VALUE));
				//行スタイルクラス
				subBeanAf.sendMessageString(CRW10801SFConst.L1_LINE_STYLE_CLASS_02, X31CWebConst.DATABEAN_SET_VALUE, lineStyle);
				//コールバック希望時間
				subBeanAf.sendMessageString(CRW10801SFConst.L1_CALLBK_KIBO_DAY_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW10801SFConst.L0_CALLBK_KIBO_DAY_01, X31CWebConst.DATABEAN_GET_VALUE));

			}
		}
		
		return iSelectedCnt;

	}
	
	/**
	 * 画面間引継ぎ情報で渡されたクエリ実行問合せ一覧照会明細をサービスフォームBeanへセットする
	 * <BR>
	 * @param svBean サービスフォームBean
	 * @param queryList クエリ実行問合せ一覧照会明細
	 */
	private void setToiawaseListBf(X31SDataBeanAccess svBean, ArrayList<Object> queryList)
	{
		X31SDataBeanAccessArray toiawaseListBf = svBean.getDataBeanArray(CRW10801SFConst.TOIAWASE_LIST_BF);
		for(int iCnt = 0; iCnt < queryList.size(); iCnt++)
		{
			//引継ぎ情報 1レコード分
			HashMap<String, String> fieldMap = (HashMap<String, String>)queryList.get(iCnt);
			X31SDataBeanAccess subBean = toiawaseListBf.addDataBean();
			// (@) 行スタイルを取得する。
			subBean.sendMessageString(CRW10801SFConst.L0_LINE_STYLE_CLASS_01, X31CWebConst.DATABEAN_SET_VALUE,
																	eo.web.webview.common.JCRWebCommon.getLineStyle(iCnt + 1));
			// (A) 問合せリスト一覧(選択前)を設定する。
			//明細インデックス
			subBean.sendMessageString(CRW10801SFConst.L0_LINE_NO_01, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(iCnt + 1));
			//問合せＩＤ
			subBean.sendMessageString(CRW10801SFConst.L0_TAIO_KIROK_NO_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_TAIO_KIROK_NO));
			//対応開始年月日
			subBean.sendMessageString(CRW10801SFConst.L0_TAIO_STA_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_TAIO_STA_DTM));
			//タイトル
			subBean.sendMessageString(CRW10801SFConst.L0_TITLE_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_TITLE));
			//サービス名称
			subBean.sendMessageString(CRW10801SFConst.L0_SVC_KEI_NO_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_SVC_KEI_NO_NM));
			//問合せ状態コード
			subBean.sendMessageString(CRW10801SFConst.L0_TOIAWASE_STAT_CD_01, X31CWebConst.DATABEAN_SET_VALUE, 
															JCRWebCommon.getItemStyle(fieldMap, JCRStrConst.KEY_QUERY_LIST_TOIAWASE_STAT_CD));
			//問合せ状態
			subBean.sendMessageString(CRW10801SFConst.L0_TOIAWASE_STAT_CD_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_TOIAWASE_STAT_CD_NM));
			//eoID
			subBean.sendMessageString(CRW10801SFConst.L0_EOID_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_EOID));
			//サービス契約番号
			subBean.sendMessageString(CRW10801SFConst.L0_SVC_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_SVC_KEI_NO));
			//添付有無
			subBean.sendMessageString(CRW10801SFConst.L0_TEMP_UM_01, X31CWebConst.DATABEAN_SET_VALUE,
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_TMP_UM));
			//更新前更新年月日時分秒
			subBean.sendMessageString(CRW10801SFConst.L0_UPD_DTM_BF_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_UPD_DTM));
			// 実行使用可否
			String toiawaseStatCd = (String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_TOIAWASE_STAT_CD);
			// 問合せ状態コードがクローズまたはキャンセルの場合
			if (JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CLOSE.equals(toiawaseStatCd) ||
				JCRStrConst.CD_DIV_TOIAWASE_STAT_CD_CNCL.equals(toiawaseStatCd))
			{
				subBean.sendMessageString(CRW10801SFConst.L0_RUN_DISABLED_01, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
			}
			else
			{
				subBean.sendMessageString(CRW10801SFConst.L0_RUN_DISABLED_01, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}
			//コールバック希望時間
			subBean.sendMessageString(CRW10801SFConst.L0_CALLBK_KIBO_DAY_01, X31CWebConst.DATABEAN_SET_VALUE,
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_CALLBK_KIBO_DAY));

		}
	}
	
	/**
	 * サービスフォームBeanクリア処理.<br>
	 * サービスフォームBeanのクリアを行う。
	 * 
	 * @param bean サービスフォームBean
	 */
	private void clearBean(X31SDataBeanAccess bean)
	{

		// (1) 項目名のリストを取得する。
		String[] itemNameList = bean.getItemNameList();
		
		// (2) 値のクリアを行う。
		for (int i = 0; i < itemNameList.length; i++)
		{
			// (a) 引継項目の場合、値の保持を行う。
			if (isHktgItem(itemNameList[i]))
			{
				continue;
			}
			// (c) Array項目の場合、リストのクリアを行う。
			else if (isArrayItem(itemNameList[i]))
			{
				bean.getDataBeanArray(itemNameList[i]).clearArray();
			}
			// (d) 上記以外の場合、値のクリアを行う。
			else
			{
				bean.sendMessage(itemNameList[i], X31CWebConst.DATABEAN_CLEAR);
			}
		}
		return;
	}
	
	/**
	 * 引継項目判定処理.<br>
	 * 引継項目の判定を行う。
	 * 
	 * @param itemName 項目ID
	 * @return true:引継項目、false：引継項目以外
	 */
	private boolean isHktgItem(String itemName)
	{
		// (1) 項目名の判定を行い、引継項目の場合は、trueを返却し、引継項目以外の場合は、falseを返却する。
		return HKTG_ITEM_SET.contains(itemName);
	}

	/**
	 * Array項目判定処理.<br>
	 * Array項目の判定を行う。
	 * 
	 * @param itemName 項目ID
	 * @return true:Array項目、false：Array項目以外
	 */
	private boolean isArrayItem(String itemName)
	{
		// (1) 項目名の判定を行い、Array項目の場合は、trueを返却し、Array項目以外の場合は、falseを返却する。
		return ARRAY_ITEM_SET.contains(itemName);
	}

}
