/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CRW04701SFLogic
 *	ソースファイル名：CRW04701SFLogic.java
 *	作成者			：富士通
 *	日付			：2011年11月04日
 *＜機能概要＞
 *	問合せメモ一括登録ビューロジック
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
 *	ｖ10.00.00	2014/07/11	FJ)伊藤		ANK-2048-00-00  【ＮＯ．８２２】簡易メモ一括入力機能
 *	v56.00.00	2021/11/18	FJ)西窪		ANK-4150-00-00  対応履歴改善ニーズ対応
 *
 ********************************************************************************/

package eo.web.webview.CRW04701SF;

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.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.CRSV0207_CRSV0207OPDBMapper;
import eo.web.webview.mapping.CRSV0208_CRSV0208OPDBMapper;
import eo.web.webview.mapping.CRSV0209_CRSV0209OPDBMapper;

/**
 * 問合せメモ一括登録 ビューロジック
 * @author FJ
 */
@SuppressWarnings("serial")
public class CRW04701SFLogic extends JCCWebBusinessLogic
{

	/**
	 * サービスID：CRSV0207
	 */
	private static final String SRV_ID_0207 = "CRSV0207";
	/**
	 * サービスID：CRSV0208
	 */
	private static final String SRV_ID_0208 = "CRSV0208";
	/**
	 * サービスID：CRSV0209
	 */
	private static final String SRV_ID_0209 = "CRSV0209";
	/**
	 * モーダル画面：反映用画面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>();

	/**
	 * Boolean項目リスト
	 */
	private static final Set<String> BOOLEAN_ITEM_SET = new HashSet<String>();

	/**
	 * Array項目リスト
	 */
	private static final Set<String> ARRAY_ITEM_SET = new HashSet<String>();
	
	static {
		//引継ぎ項目
		Collections.addAll(HKTG_ITEM_SET ,
				//対応開始年月日(自)
				CRW04701SFConst.TAIO_STA_DTM_FROM,
				//対応開始年月日(至)
				CRW04701SFConst.TAIO_STA_DTM_TO,
				//クエリ名
				CRW04701SFConst.QUERY_NM,
				//総件数(選択前)
				CRW04701SFConst.TOTAL_CNT_BF);
		//Boolean項目
		Collections.addAll(BOOLEAN_ITEM_SET
				//クローズ有無
				, CRW04701SFConst.CLOSE_UM);
		//Array項目
		Collections.addAll(ARRAY_ITEM_SET,
				//問合せリスト一覧(選択前)
				CRW04701SFConst.TOIAWASE_LIST_BF,
				//問合せリスト一覧(選択後)
				CRW04701SFConst.TOIAWASE_LIST_AF);
	}
	/**
	 * クローズ名称：クローズする
	 */
	private static final String CLOSE = "同時にクローズする";
	/**
	 * クローズ名称：クローズしない
	 */
	private static final String NO_CLOSE = "同時にクローズしない";
	/**
	 * クローズ有無：クローズあり："1"
	 */
	private static final String CLOSE_ARI = "1";
	/**
	 * クローズ有無：クローズなし："0"
	 */
	private static final String CLOSE_NASHI = "0";
	/**
	 * 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 = "問合せメモ一括登録";

// v10.00.00 ANK-2048-00-00 ADD START
	/**
	 * メッセージ：埋め込み文字列：簡易メモの一括更新
	 */
	private static final String INF_MSG_UPD_EASY_MEMO = "「簡易メモ」";
	/**
	 * メッセージ：埋め込み文字列：問合せメモの一括更新
	 */
	private static final String INF_MSG_UPD_MEMO = "「問合せメモ」";
	/**
	 * メッセージ：埋め込み文字列：簡易メモ、問合せメモの一括更新
	 */
	private static final String INF_MSG_ALL_UPD = "「簡易メモ」「問合せメモ」両方";
// v10.00.00 ANK-2048-00-00 ADD END
	
	/**
	 * 問合せメモ一括登録画面
	 * 初期表示処理
	 * <BR>
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	public boolean init()
	{
		X31SDataBeanAccess svBean = getServiceFormBean();
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// (a)画面情報取得部品(JCCWebCommon.getScreenInfo)を使用し、引継情報を取得する。
		HashMap<String, Object>dataMap = JCCWebCommon.getScreenInfo(this);
		// 戻り先画面の引継ぎ
		String pScreenId = JCCWebCommon.getScreenId(this);
		JCCWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW04702, pScreenId);
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		clearBean(svBean);
		// (ｱ) 引継情報から下記項目を設定する。
		//   対応開始年月日(自)
		svBean.sendMessageString(CRW04701SFConst.TAIO_STA_DTM_FROM, X31CWebConst.DATABEAN_SET_VALUE, 
												(String)dataMap.get(JCRStrConst.KEY_TAIO_STA_DTM_FROM));
		//   対応開始年月日(至)
		svBean.sendMessageString(CRW04701SFConst.TAIO_STA_DTM_TO, X31CWebConst.DATABEAN_SET_VALUE, 
												(String)dataMap.get(JCRStrConst.KEY_TAIO_STA_DTM_TO));
		//   クエリ名
		svBean.sendMessageString(CRW04701SFConst.QUERY_NM, X31CWebConst.DATABEAN_SET_VALUE, 
												(String)dataMap.get(JCRStrConst.KEY_QUERY_NM));
		//   総件数(選択前)
		svBean.sendMessageString(CRW04701SFConst.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)サービス呼出処理
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW04701);

		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW04701);


		return true;
	}
	
	/**
	 * 問合せメモ一括登録画面
	 * 登録確認ボタン押下処理
	 * <BR>
	 * @return boolean
	 */
	public boolean createCfm()
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess svBean = getServiceFormBean();
//		X31SDataBeanAccessArray toiawaseListBf = svBean.getDataBeanArray(CRW04701SFConst.TOIAWASE_LIST_BF);
		// (a) サービスフォームBean.問合せリスト一覧(選択前).実行がtrue(チェック有)場合、下記処理を行う。
		int iSelectedCnt = setToiSelectedListBfToAf(svBean);
		// (b) サービスフォームBeanを設定する。
		//     クローズ有無名称
		if(svBean.sendMessageBoolean(CRW04701SFConst.CLOSE_UM, X31CWebConst.DATABEAN_GET_VALUE))
		{
			svBean.sendMessageString(CRW04701SFConst.CLOSE_UM_NM, X31CWebConst.DATABEAN_SET_VALUE, CLOSE);
		}
		else
		{
			svBean.sendMessageString(CRW04701SFConst.CLOSE_UM_NM, X31CWebConst.DATABEAN_SET_VALUE, NO_CLOSE);
		}
		//     総件数(選択後)
		svBean.sendMessageString(CRW04701SFConst.TOTAL_CNT_AF, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(iSelectedCnt));
		//     追記内容使用可否
		svBean.sendMessageString(CRW04701SFConst.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();
		if(iSelectedCnt == 0)
		{
			//(a) 上記(5)でエラーの場合、以下の設定を行う。
			// 遷移先画面IDを共有フォームBeanに設定
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JCRScreenConst.SCREEN_ID_CRW04701);
			// 遷移先画面名を共有フォームBeanに設定
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JCRScreenConst.SCREEN_NAME_CRW04701);
		}
		else
		{

// v10.00.00 ANK-2048-00-00 ADD START
			// メッセージを表示する
			if (!JCRUtilCommon.isNull(svBean.sendMessageString(CRW04701SFConst.EASY_MEMO, X31CWebConst.DATABEAN_GET_VALUE))
				&& !JCRUtilCommon.isNull(svBean.sendMessageString(CRW04701SFConst.TSUIKI_NAIYO, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// 簡易メモ、追記内容の両方に入力がある場合
				JCCWebCommon.setMessageAreaBackColor(this, "1");
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE149__I, new String[]{INF_MSG_ALL_UPD});
			}
			else if (!JCRUtilCommon.isNull(svBean.sendMessageString(CRW04701SFConst.EASY_MEMO, X31CWebConst.DATABEAN_GET_VALUE))
				&& JCRUtilCommon.isNull(svBean.sendMessageString(CRW04701SFConst.TSUIKI_NAIYO, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// 簡易メモのみに入力がある場合
				JCCWebCommon.setMessageAreaBackColor(this, "1");
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE149__I, new String[]{INF_MSG_UPD_EASY_MEMO});
			}
			else if (JCRUtilCommon.isNull(svBean.sendMessageString(CRW04701SFConst.EASY_MEMO, X31CWebConst.DATABEAN_GET_VALUE))
				&& !JCRUtilCommon.isNull(svBean.sendMessageString(CRW04701SFConst.TSUIKI_NAIYO, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// 追記内容のみに入力がある場合
				JCCWebCommon.setMessageAreaBackColor(this, "1");
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE149__I, new String[]{INF_MSG_UPD_MEMO});
			}
// v10.00.00 ANK-2048-00-00 ADD END

			//(b) 上記(5)でエラーでない場合、以下の設定を行う。
			// 遷移先画面IDを共有フォームBeanに設定
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JCRScreenConst.SCREEN_ID_CRW04702);
			// 遷移先画面名を共有フォームBeanに設定
			cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JCRScreenConst.SCREEN_NAME_CRW04702);
		}
		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);
		//  (ｳ) 上記(ｲ)の次行に通常のメモ内容と一括登録時の追記内容との境界を示すため、以下の内容をByte配列に格納する。
		//    %memo%
		output.append(JCRStrConst.MEMO_START_MOJI);
		//  (ｴ) 上記(ｳ)の次行〜最終行に以下の内容をByte配列に格納する。
		//    追記内容
		output.append(svBean.sendMessageString(CRW04701SFConst.TSUIKI_NAIYO, X31CWebConst.DATABEAN_GET_VALUE));
		//(b) サービスフォームBeanに値を設定する。
		svBean.sendMessageString(CRW04701SFConst.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_0207);
		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// マッピングクラス
		CRSV0207_CRSV0207OPDBMapper mapper = new CRSV0207_CRSV0207OPDBMapper();
		// マッピング処理（上り）
		mapper.setCRSV020701SC(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.getCRSV020701SC(beans, outputMap);
		// ディレイド処理中メッセージ出力
		JCCWebCommon.setMessageAreaBackColor(this, "1");
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB7660__I);
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// ディレイド開始フラグ ON
		svBean.sendMessageString(CRW04701SFConst.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_CRW04702);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW04702);
		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_0208);
		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// マッピングクラス
		CRSV0208_CRSV0208OPDBMapper mapper = new CRSV0208_CRSV0208OPDBMapper();
		// マッピング処理（上り）
		mapper.setCRSV020801SC(beans, dataMap, JPCModelConstant.FUNC_CD_1);
		// サービス呼び出し
		invokeService(paramMap, dataMap, outputMap);
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		mapper.getCRSV020801SC(beans, outputMap);
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess cfBean = getCommonInfoBean();
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW04702);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW04702);
		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(CRW04701SFConst.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_0209);
		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// マッピングクラス
		CRSV0209_CRSV0209OPDBMapper mapper = new CRSV0209_CRSV0209OPDBMapper();
		// マッピング処理（上り）
		mapper.setCRSV020901SC(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(CRW04701SFConst.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_CRW04702);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW04702);
		
		return true;
	}
	
	/**
	 * 問合せ一括登録確認画面
	 * ディレイド処理依頼結果(システムエラー)
	 * @return boolean
	 */
	public boolean fixResultSysErr()
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// (a) 取得したエラーファイルの内容を共通部品/メッセージエリア設定処理（JCRWebCommon.setMessageInfo）
		//     の置換文字列に設定する。
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB7690_KW, new String[] {ERR_MSG_SYS_ERR});
		// (b) ディレイド開始フラグに空文字を設定し、Ajaxによるポーリング処理を停止する。
		X31SDataBeanAccess svBean = getServiceFormBean();
		svBean.sendMessageString(CRW04701SFConst.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_CRW04702);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW04702);
		return true;
	}
	
	/**
	 * 問合せ一括登録確認画面
	 * キャンセルボタン押下処理
	 * <BR>
	 * @return boolean
	 */
	public boolean cancel()
	{
		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		X31SDataBeanAccess svBean = getServiceFormBean();
		// 追記内容使用可否
		svBean.sendMessageString(CRW04701SFConst.TSUIKI_NAIYO_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。
		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// ディレイド開始フラグに空文字を設定し、Ajaxによるポーリング処理を停止する。
		svBean.sendMessageString(CRW04701SFConst.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_CRW04701);
		// 遷移先画面名を共有フォームBeanに設定
		cfBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW04701);
		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, JPCOnlineMessageConstant.EKB7690_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.クローズ有無がtrueの場合"1"、falseの場合、"0"
		boolean closeFlg = svBean.sendMessageBoolean(CRW04701SFConst.CLOSE_UM, X31CWebConst.DATABEAN_GET_VALUE);
		if(closeFlg)
		{
			sb.append(DOUBLE_QUOTATION).append(CLOSE_ARI).append(DOUBLE_QUOTATION).append(JCRStrConst.STR_HALF_COMMA);
		}
		else
		{
			sb.append(DOUBLE_QUOTATION).append(CLOSE_NASHI).append(DOUBLE_QUOTATION).append(JCRStrConst.STR_HALF_COMMA);
		}
		// 共有フォーム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);

// v10.00.00 ANK-2048-00-00 MOD START
//		sb.append(DOUBLE_QUOTATION)
//		  .append(subBean.sendMessageString(CommonInfoCFConst.ORG_NM_01, X31CWebConst.DATABEAN_GET_VALUE)) 
//		  .append(DOUBLE_QUOTATION);

		// 共有フォームBean.業務個別設定組織名
		sb.append(DOUBLE_QUOTATION)
		  .append(subBean.sendMessageString(CommonInfoCFConst.ORG_NM_01, X31CWebConst.DATABEAN_GET_VALUE)) 
		  .append(DOUBLE_QUOTATION).append(JCRStrConst.STR_HALF_COMMA);
// v10.00.00 ANK-2048-00-00 MOD END

// v10.00.00 ANK-2048-00-00 ADD START
		// サービスフォームBean.簡易メモ
		sb.append(DOUBLE_QUOTATION)
		  .append(svBean.sendMessageString(CRW04701SFConst.EASY_MEMO, X31CWebConst.DATABEAN_GET_VALUE)) 
		  .append(DOUBLE_QUOTATION);
// v10.00.00 ANK-2048-00-00 ADD END

		// 改行コード
		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(CRW04701SFConst.TOIAWASE_LIST_AF);
		
		for(int iCnt = 0; iCnt < toiawaseList.getCount(); iCnt++)
		{
			X31SDataBeanAccess subBean = toiawaseList.getDataBean(iCnt);
			//サービスフォームBean.問合せリスト一覧(選択後).対応記録番号
			sb.append(DOUBLE_QUOTATION)
			  .append(subBean.sendMessageString(CRW04701SFConst.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(CRW04701SFConst.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(CRW04701SFConst.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(CRW04701SFConst.TOIAWASE_LIST_BF);
		int iSelectedCnt = 0;
		//問合せリスト一覧（選択後）
		X31SDataBeanAccessArray toiawaseListAf = svBean.getDataBeanArray(CRW04701SFConst.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(CRW04701SFConst.L0_RUN_01, X31CWebConst.DATABEAN_GET_VALUE);
			if(execFlg)
			{
				iSelectedCnt++;
				//  (ｱ) 行スタイルを取得する。
				String lineStyle = JCRWebCommon.getLineStyle(iSelectedCnt);
				//  (ｲ) 問合せリスト一覧(選択後)のサービスフォームBeanを設定する。
				subBeanAf = toiawaseListAf.addDataBean();
				//明細インデックス
				subBeanAf.sendMessageString(CRW04701SFConst.L1_LINE_NO_02, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(iSelectedCnt));
				//問合せＩＤ
				subBeanAf.sendMessageString(CRW04701SFConst.L1_TAIO_KIROK_NO_02, X31CWebConst.DATABEAN_SET_VALUE, 
										subBeanBf.sendMessageString(CRW04701SFConst.L0_TAIO_KIROK_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
				//対応開始年月日
				subBeanAf.sendMessageString(CRW04701SFConst.L1_TAIO_STA_DTM_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04701SFConst.L0_TAIO_STA_DTM_01, X31CWebConst.DATABEAN_GET_VALUE));
				//タイトル
				subBeanAf.sendMessageString(CRW04701SFConst.L1_TITLE_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04701SFConst.L0_TITLE_01, X31CWebConst.DATABEAN_GET_VALUE));
				//サービス名称
				subBeanAf.sendMessageString(CRW04701SFConst.L1_SVC_KEI_NO_NM_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04701SFConst.L0_SVC_KEI_NO_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
				//問合せ状態コード
				subBeanAf.sendMessageString(CRW04701SFConst.L1_TOIAWASE_STAT_CD_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04701SFConst.L0_TOIAWASE_STAT_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
				//問合せ状態
				subBeanAf.sendMessageString(CRW04701SFConst.L1_TOIAWASE_STAT_CD_NM_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04701SFConst.L0_TOIAWASE_STAT_CD_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
				//eoID
				subBeanAf.sendMessageString(CRW04701SFConst.L1_EOID_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04701SFConst.L0_EOID_01, X31CWebConst.DATABEAN_GET_VALUE));
				//サービス契約番号
				subBeanAf.sendMessageString(CRW04701SFConst.L1_SVC_KEI_NO_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04701SFConst.L0_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
				//添付有無
				subBeanAf.sendMessageString(CRW04701SFConst.L1_TEMP_UM_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04701SFConst.L0_TEMP_UM_01, X31CWebConst.DATABEAN_GET_VALUE));
				//更新前更新年月日時分秒
				subBeanAf.sendMessageString(CRW04701SFConst.L1_UPD_DTM_BF_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04701SFConst.L0_UPD_DTM_BF_01, X31CWebConst.DATABEAN_GET_VALUE));
				//行スタイルクラス
				subBeanAf.sendMessageString(CRW04701SFConst.L1_LINE_STYLE_CLASS_02, X31CWebConst.DATABEAN_SET_VALUE, lineStyle);
// v10.00.00 ANK-2048-00-00 ADD START
				//簡易メモ
				subBeanAf.sendMessageString(CRW04701SFConst.L1_EASY_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04701SFConst.L0_EASY_MEMO_01, X31CWebConst.DATABEAN_GET_VALUE));
// v10.00.00 ANK-2048-00-00 ADD END
			    // ANK-4150-00-00 ADD START
				//コールバック希望日時
				subBeanAf.sendMessageString(CRW04701SFConst.L1_CALLBK_KIBO_DAY_02, X31CWebConst.DATABEAN_SET_VALUE, 
						subBeanBf.sendMessageString(CRW04701SFConst.L0_CALLBK_KIBO_DAY_01, X31CWebConst.DATABEAN_GET_VALUE));
			    // ANK-4150-00-00 ADD END
			}
		}
		
		return iSelectedCnt;

	}
	
	/**
	 * 画面間引継ぎ情報で渡されたクエリ実行問合せ一覧照会明細をサービスフォームBeanへセットする
	 * <BR>
	 * @param svBean サービスフォームBean
	 * @param queryList クエリ実行問合せ一覧照会明細
	 */
	private void setToiawaseListBf(X31SDataBeanAccess svBean, ArrayList<Object> queryList)
	{
		X31SDataBeanAccessArray toiawaseListBf = svBean.getDataBeanArray(CRW04701SFConst.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(CRW04701SFConst.L0_LINE_STYLE_CLASS_01, X31CWebConst.DATABEAN_SET_VALUE,
																	eo.web.webview.common.JCRWebCommon.getLineStyle(iCnt + 1));
			// (A) 問合せリスト一覧(選択前)を設定する。
			//明細インデックス
			subBean.sendMessageString(CRW04701SFConst.L0_LINE_NO_01, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(iCnt + 1));
			//問合せＩＤ
			subBean.sendMessageString(CRW04701SFConst.L0_TAIO_KIROK_NO_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_TAIO_KIROK_NO));
			//対応開始年月日
			subBean.sendMessageString(CRW04701SFConst.L0_TAIO_STA_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_TAIO_STA_DTM));
			//タイトル
			subBean.sendMessageString(CRW04701SFConst.L0_TITLE_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_TITLE));
			//サービス名称
			subBean.sendMessageString(CRW04701SFConst.L0_SVC_KEI_NO_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_SVC_KEI_NO_NM));
			//問合せ状態コード
			subBean.sendMessageString(CRW04701SFConst.L0_TOIAWASE_STAT_CD_01, X31CWebConst.DATABEAN_SET_VALUE, 
															JCRWebCommon.getItemStyle(fieldMap, JCRStrConst.KEY_QUERY_LIST_TOIAWASE_STAT_CD));
			//問合せ状態
			subBean.sendMessageString(CRW04701SFConst.L0_TOIAWASE_STAT_CD_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_TOIAWASE_STAT_CD_NM));
			//eoID
			subBean.sendMessageString(CRW04701SFConst.L0_EOID_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_EOID));
			//サービス契約番号
			subBean.sendMessageString(CRW04701SFConst.L0_SVC_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_SVC_KEI_NO));
			//添付有無
			subBean.sendMessageString(CRW04701SFConst.L0_TEMP_UM_01, X31CWebConst.DATABEAN_SET_VALUE,
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_TMP_UM));
			//更新前更新年月日時分秒
			subBean.sendMessageString(CRW04701SFConst.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(CRW04701SFConst.L0_RUN_DISABLED_01, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
			}
			else
			{
				subBean.sendMessageString(CRW04701SFConst.L0_RUN_DISABLED_01, X31CWebConst.DATABEAN_SET_VALUE, new String());
			}
// v10.00.00 ANK-2048-00-00 ADD START
			//簡易メモ
			subBean.sendMessageString(CRW04701SFConst.L0_EASY_MEMO_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_EASY_MEMO));
// v10.00.00 ANK-2048-00-00 ADD END
			// ANK-4150-00-00 ADD START
			//コールバック希望日時
			subBean.sendMessageString(CRW04701SFConst.L0_CALLBK_KIBO_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, 
															(String)fieldMap.get(JCRStrConst.KEY_QUERY_LIST_CALLBK_KIBO_DAY));
			// ANK-4150-00-00 ADD END
		}
	}
	
	/**
	 * サービスフォーム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;
			}
			// (b) Boolean型の場合、初期値の設定を行う。
			else if (isBooleanItem(itemNameList[i]))
			{
				bean.sendMessageBoolean(itemNameList[i], X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			}
			// (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);
	}

	/**
	 * Boolean項目判定処理.<br>
	 * Boolean項目の判定を行う。
	 * 
	 * @param itemName 項目ID
	 * @return true:Boolean項目、false：Boolean項目以外
	 */
	private boolean isBooleanItem(String itemName)
	{
		// (1) 項目名の判定を行い、Boolean項目の場合は、trueを返却し、Boolean項目以外の場合は、falseを返却する。
		return BOOLEAN_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);
	}

}
