/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：クエリ登録ビューロジック
 *   ソースファイル名：CRW04501SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2012年01月12日
 *＜機能概要＞
 *   クエリ登録画面のビューロジックです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2012/01/12   FJ）伊藤    新規作成
 *   v47.00.00   2019/08/09   FJ) 大島    ANK-3656-00-00_問い合わせクエリの検索条件追加
 *
 **********************************************************************/

package eo.web.webview.CRW04501SF;

import java.util.EventObject;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CID;
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.x33.X33SException;

import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JCRUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CRSV0152_CRSV0152OPDBMapper;
import eo.web.webview.mapping.CRSV0153_CRSV0153OPDBMapper;
import eo.web.webview.mapping.CRSV0154_CRSV0154OPDBMapper;

/**
 * クエリ登録ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CRW04501SFLogic extends JCCWebBusinessLogic
{

	/**
	 * 親クラスX31BWebBusinessLogicのreceiveMessageWebを
	 * オーバーライドして自動生成されたメソッドです。
	 * @param arg0 (I) イベント情報
	 * @param arg1 (I) WebFWでは使用しません
	 * @param arg2 (I) WebFWでは使用しません
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws X33SException X33SException
	 */
	@Override
	protected boolean receiveMessageWeb(X31CID arg0, Object arg1,EventObject arg2) throws X33SException
	{
		return false;
	}

	/**
	 * 初期表示処理.<br>
	 * 初期表示を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean initIns() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// (a)サービスフォームBeanの全項目をクリアする。
		bean.sendMessage(CRW04501SFConst.QUERY_NM, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageBoolean(CRW04501SFConst.USER_TYPE_CD, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		bean.getDataBeanArray(CRW04501SFConst.QUERY_KMK).clearArray();
		bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN).clearArray();
		bean.getDataBeanArray(CRW04501SFConst.QUERY_AND_JOKEN).clearArray();
		bean.sendMessage(CRW04501SFConst.B_ADD_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.B_DELETE_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.B_SET_DISABLED, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.B_EDIT_AND_JOKEN_DISABLED, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.B_DELETE_AND_JOKEN_DISABLED, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.KEY_CTGR_LV, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.KEY_CD_SBT_CD, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.KEY_BASE_YMD, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.OR_JOKEN_DEL_INDEX, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.AND_JOKEN_DEL_INDEX, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.AND_JOKEN_EDIT_INDEX, X31CWebConst.DATABEAN_CLEAR);
		bean.getDataBeanArray(CRW04501SFConst.QUERY_JOKEN_TMP).clearArray();
		bean.getDataBeanArray(CRW04501SFConst.QUERY_VALUE_TMP).clearArray();
		bean.sendMessage(CRW04501SFConst.FIELD_TYPE_CD, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.BK_QUERY_NM, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageBoolean(CRW04501SFConst.BK_USER_TYPE_CD, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		bean.sendMessage(CRW04501SFConst.BK_QUERY_KMK_INDEX, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.BK_QUERY_VALUE_1, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.BK_QUERY_VALUE_2, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.BK_QUERY_VALUE_3, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.BK_QUERY_VALUE_4, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.BK_QUERY_VALUE_5, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.BK_QUERY_VALUE_INDEX, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04501SFConst.BK_QUERY_JOKEN_INDEX, X31CWebConst.DATABEAN_CLEAR);

		// (b)システム日付の取得
		String sysDate = JCRWebCommon.getSysDate();

		// (c)サービスフォームBean項目の設定
		bean.sendMessageString(CRW04501SFConst.KEY_BASE_YMD, X31CWebConst.DATABEAN_SET_VALUE, sysDate);
		bean.sendMessageString(CRW04501SFConst.KEY_CD_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.CD_SBT_QUERY_JOKEN_CD);

		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0152");

		// マッピングクラス
		CRSV0152_CRSV0152OPDBMapper mapper = new CRSV0152_CRSV0152OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV015201SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setGETQUERYVALUEFORCMBCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setCRSV015202SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// (a)サービスの処理結果を取得する。
		// マッピング処理（下り）
		mapper.getCRSV015201SC(paramBean, outputMap);
		mapper.getGETQUERYVALUEFORCMBCC(paramBean, outputMap);
		mapper.getCRSV015202SC(paramBean, outputMap);

		// (b)サービスフォームBeanの設定
		// 項目名選択インデックスに"0"を設定
		X31SDataBeanAccess queryKmkBean = bean.getDataBeanArray(CRW04501SFConst.QUERY_KMK).getDataBean(0);
		queryKmkBean.sendMessageString(CRW04501SFConst.L0_QUERY_KMK_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 行追加処理
		addRow(bean);

		// OR条件リスト項目名が0件でない場合
		String fieldTypeCd = null;
		if ((Integer)queryKmkBean.sendMessage(CRW04501SFConst.L0_FIELD_TYPE_CD_01, X31CWebConst.DATABEAN_GET_COUNT) != 0)
		{
			// フィールドタイプコードの設定
			fieldTypeCd = queryKmkBean.sendMessageString(CRW04501SFConst.L0_FIELD_TYPE_CD_01, X31CWebConst.DATABEAN_GET_VALUE, 0);
			bean.sendMessageString(CRW04501SFConst.FIELD_TYPE_CD, X31CWebConst.DATABEAN_SET_VALUE, fieldTypeCd);
		}

		// ボタン制御設定
		bean.sendMessageString(CRW04501SFConst.B_DELETE_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);

		// 退避項目設定
		bean.sendMessageString(CRW04501SFConst.BK_QUERY_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageBoolean(CRW04501SFConst.BK_USER_TYPE_CD, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		bean.sendMessageString(CRW04501SFConst.BK_QUERY_KMK_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "0");
		if (!JCRUtilCommon.isNull(fieldTypeCd))
		{
			bean.sendMessageString(CRW04501SFConst.BK_QUERY_VALUE_1, X31CWebConst.DATABEAN_SET_VALUE, "");
			bean.sendMessageString(CRW04501SFConst.BK_QUERY_VALUE_2, X31CWebConst.DATABEAN_SET_VALUE, "");
			bean.sendMessageString(CRW04501SFConst.BK_QUERY_VALUE_3, X31CWebConst.DATABEAN_SET_VALUE, "");
			bean.sendMessageString(CRW04501SFConst.BK_QUERY_VALUE_4, X31CWebConst.DATABEAN_SET_VALUE, "");
			bean.sendMessageString(CRW04501SFConst.BK_QUERY_VALUE_5, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		else
		{
			bean.sendMessageString(CRW04501SFConst.BK_QUERY_VALUE_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		X31SDataBeanAccess orJokenBean = bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN).getDataBean(0);
		bean.sendMessageString(CRW04501SFConst.BK_QUERY_JOKEN_INDEX, X31CWebConst.DATABEAN_SET_VALUE, 
				orJokenBean.sendMessageString(CRW04501SFConst.L3_QUERY_JOKEN_INDEX_04, X31CWebConst.DATABEAN_GET_VALUE));

		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04501);

		return true;
	}

	/**
	 * OR条件追加ボタン押下.<br>
	 * OR条件に行追加する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean addOrJoken() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// (a)(b)(c)行追加処理
		addRow(bean);

		// (d)ボタン制御設定
		// OR条件削除ボタンを活性に設定
		bean.sendMessageString(CRW04501SFConst.B_DELETE_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");

		// OR条件リストが5明細の場合、OR条件追加ボタンを非活性に設定
		X31SDataBeanAccessArray orJoken = bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN);
		if (orJoken.getCount() == 5)
		{
			bean.sendMessageString(CRW04501SFConst.B_ADD_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_DEACTIVE);
		}

		// (3)サービス呼出処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04501);

		return true;
	}

	/**
	 * 入力項目名コンボボックス変更.<br>
	 * 入力された項目名に関連するクエリ値、クエリ条件を返す。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean choiceInputField() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// (a)クエリ値リストテンプレート、フィールドタイプコードのクリア
		bean.getDataBeanArray(CRW04501SFConst.QUERY_VALUE_TMP).clearArray();
		bean.sendMessage(CRW04501SFConst.FIELD_TYPE_CD, X31CWebConst.DATABEAN_CLEAR);

		// (b)フィールドタイプコードの設定
		X31SDataBeanAccess queryKmkBean = bean.getDataBeanArray(CRW04501SFConst.QUERY_KMK).getDataBean(0);
		int queryKmkIdx = Integer.parseInt(queryKmkBean.sendMessageString(CRW04501SFConst.L0_QUERY_KMK_INDEX_01, X31CWebConst.DATABEAN_GET_VALUE));
		String fieldTypeCd = queryKmkBean.sendMessageString(CRW04501SFConst.L0_FIELD_TYPE_CD_01, X31CWebConst.DATABEAN_GET_VALUE, queryKmkIdx);
		bean.sendMessageString(CRW04501SFConst.FIELD_TYPE_CD, X31CWebConst.DATABEAN_SET_VALUE, fieldTypeCd);

		// フィールドタイプコードがnullの場合
		if (JCRUtilCommon.isNull(fieldTypeCd))
		{
			// (3)サービス呼出処理
			// マッピングクラスを使用する為、配列化
			X31SDataBeanAccess[] paramBean = {bean};

			// ユースケースID格納
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0154");

			// マッピングクラス
			CRSV0154_CRSV0154OPDBMapper mapper = new CRSV0154_CRSV0154OPDBMapper();

			// マッピング処理（上り）
			mapper.setGETQUERYVALUEFORCMBCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

			// サービス実行
			invokeService(paramMap, dataMap, outputMap);

			// (4)サービス処理結果の設定
			// (a)サービスの処理結果を取得する。
			// マッピング処理（下り）
			mapper.getGETQUERYVALUEFORCMBCC(paramBean, outputMap);
		}

		// (c)(d)(e)サービスフォームBeanの設定
		// OR条件リストの明細数を取得
		X31SDataBeanAccessArray orJoken = bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN);
		int orJokenCnt = orJoken.getCount();

		// OR条件リストのクリア
		bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN).clearArray();

		// 行追加処理
		for (int i = 0; i < orJokenCnt; i++)
		{
			addRow(bean);
		}

		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04501);

		return true;
	}

	/**
	 * OR条件削除ボタン押下.<br>
	 * 選択されたOR条件の行を削除する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean deleteOrJoken() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// (a)選択された明細を、OR条件リストより削除
		X31SDataBeanAccessArray orJoken = bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN);
		int orJokenDelIndex = Integer.parseInt(bean.sendMessageString(CRW04501SFConst.OR_JOKEN_DEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		orJoken.removeDataBean(orJokenDelIndex);

		// (b)ボタン制御設定
		if (orJoken.getCount() == 1)
		{
			// OR条件リストが1明細の場合、OR条件削除ボタンを非活性に設定
			bean.sendMessageString(CRW04501SFConst.B_DELETE_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
		}
		else
		{
			// OR条件リストが1明細でない場合、OR条件削除ボタン、OR条件追加ボタンを活性に設定
			bean.sendMessageString(CRW04501SFConst.B_DELETE_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");
			bean.sendMessageString(CRW04501SFConst.B_ADD_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_ACTIVE);
		}

		// (3)サービス呼出処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04501);

		return true;
	}

	/**
	 * 設定ボタン押下.<br>
	 * OR条件をAND条件に設定する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean set() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// (a)(b)AND条件リストに設定
		HashMap<String, String> queryJokenTmpMap = new HashMap<String, String>();
		X31SDataBeanAccessArray queryJokeneTmp = bean.getDataBeanArray(CRW04501SFConst.QUERY_JOKEN_TMP);
		// 条件リストテンプレートのデータをHashMapに保持
		for (int i = 0; i < queryJokeneTmp.getCount(); i++)
		{
			X31SDataBeanAccess tmpBean = queryJokeneTmp.getDataBean(i);
			String code = tmpBean.sendMessageString(CRW04501SFConst.L6_QUERY_JOKEN_CD_07, X31CWebConst.DATABEAN_GET_VALUE);
			String name = tmpBean.sendMessageString(CRW04501SFConst.L6_QUERY_JOKEN_CD_NM_07, X31CWebConst.DATABEAN_GET_VALUE);
			queryJokenTmpMap.put(code, name);
		}

		X31SDataBeanAccess queryKmkBean = bean.getDataBeanArray(CRW04501SFConst.QUERY_KMK).getDataBean(0);
		X31SDataBeanAccessArray orJoken = bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN);
		X31SDataBeanAccessArray andJoken = bean.getDataBeanArray(CRW04501SFConst.QUERY_AND_JOKEN);
		X31SDataBeanAccess andJokenBean = null;

		String andJokenEditIdx = bean.sendMessageString(CRW04501SFConst.AND_JOKEN_EDIT_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		int lineNum;
		if (JCRUtilCommon.isNull(andJokenEditIdx))
		{
			andJokenBean = andJoken.addDataBean();
			lineNum = andJoken.getCount();
		}
		else
		{
			andJokenBean = andJoken.getDataBean(Integer.parseInt(andJokenEditIdx));
			lineNum = Integer.parseInt(andJokenEditIdx) + 1;
		}

		String queryKmkIdx = queryKmkBean.sendMessageString(CRW04501SFConst.L0_QUERY_KMK_INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);
		String queryKmkKanriNo = JCRWebCommon.getPullDownName(bean, CRW04501SFConst.QUERY_KMK, CRW04501SFConst.L0_QUERY_KMK_INDEX_01, 
				CRW04501SFConst.L0_QUERY_KMK_KANRI_NO_01, CRW04501SFConst.L0_QUERY_KMK_KANRI_NO_01);
		String queryKmkNm = JCRWebCommon.getPullDownName(bean, CRW04501SFConst.QUERY_KMK, 
				CRW04501SFConst.L0_QUERY_KMK_INDEX_01, CRW04501SFConst.L0_QUERY_KMK_KANRI_NO_01, CRW04501SFConst.L0_QUERY_KMK_NM_01);
		String fieldTypeCd = JCRWebCommon.getPullDownName(bean, CRW04501SFConst.QUERY_KMK, 
				CRW04501SFConst.L0_QUERY_KMK_INDEX_01, CRW04501SFConst.L0_QUERY_KMK_KANRI_NO_01, CRW04501SFConst.L0_FIELD_TYPE_CD_01);
		andJokenBean.sendMessageString(CRW04501SFConst.L4_QUERY_KMK_INDEX_05, X31CWebConst.DATABEAN_SET_VALUE, queryKmkIdx);
		andJokenBean.sendMessageString(CRW04501SFConst.L4_QUERY_KMK_KANRI_NO_05, X31CWebConst.DATABEAN_SET_VALUE, queryKmkKanriNo);
		andJokenBean.sendMessageString(CRW04501SFConst.L4_QUERY_KMK_NM_05, X31CWebConst.DATABEAN_SET_VALUE, queryKmkNm);
		andJokenBean.sendMessageString(CRW04501SFConst.L4_FIELD_TYPE_CD_05, X31CWebConst.DATABEAN_SET_VALUE, fieldTypeCd);
		andJokenBean.sendMessageString(CRW04501SFConst.L4_LINE_STYLE_05, X31CWebConst.DATABEAN_SET_VALUE, JCRWebCommon.getLineStyle(lineNum));

		andJokenBean.getDataBeanArray(CRW04501SFConst.L4_AND_QUERY_VALUE_LIST).clearArray();
		X31SDataBeanAccessArray andValue = andJokenBean.getDataBeanArray(CRW04501SFConst.L4_AND_QUERY_VALUE_LIST);
		for (int i = 0; i < orJoken.getCount(); i++)
		{
			X31SDataBeanAccess orJokenBean = orJoken.getDataBean(i);
			X31SDataBeanAccess andValBean = andValue.addDataBean();

			// フィールドタイプコードがnullの場合
			if (JCRUtilCommon.isNull(fieldTypeCd))
			{
				String  orValIdx = orJokenBean.sendMessageString(CRW04501SFConst.L3_QUERY_VALUE_INDEX_04, X31CWebConst.DATABEAN_GET_VALUE);
				X31SDataBeanAccessArray orJokenVal = orJokenBean.getDataBeanArray(CRW04501SFConst.L3_OR_QUERY_VALUE_LIST);
				andValBean.sendMessageString(CRW04501SFConst.L5_QUERY_VALUE_CD_INDEX_06, X31CWebConst.DATABEAN_SET_VALUE, orValIdx);
				andValBean.sendMessageString(CRW04501SFConst.L5_QUERY_VALUE_CD_06, X31CWebConst.DATABEAN_SET_VALUE, 
						JCRWebCommon.getDetailPullDownValue(orJokenVal, orValIdx, CRW04501SFConst.L2_QUERY_VALUE_CD_03));
				andValBean.sendMessageString(CRW04501SFConst.L5_QUERY_VALUE_CD_NM_06, X31CWebConst.DATABEAN_SET_VALUE, 
						JCRWebCommon.getDetailPullDownValue(orJokenVal, orValIdx, CRW04501SFConst.L2_QUERY_VALUE_03));
			}
			else
			{
				String queryValue = JCRWebCommon.editQueryValue(orJokenBean, 
						new String[] {CRW04501SFConst.L3_QUERY_VALUE_1_04, CRW04501SFConst.L3_QUERY_VALUE_2_04, CRW04501SFConst.L3_QUERY_VALUE_3_04,
						CRW04501SFConst.L3_QUERY_VALUE_4_04, CRW04501SFConst.L3_QUERY_VALUE_5_04}, fieldTypeCd);
				andValBean.sendMessageString(CRW04501SFConst.L5_QUERY_VALUE_06, X31CWebConst.DATABEAN_SET_VALUE, queryValue);
			}

			String  orJokenIdx = orJokenBean.sendMessageString(CRW04501SFConst.L3_QUERY_JOKEN_INDEX_04, X31CWebConst.DATABEAN_GET_VALUE);
			andValBean.sendMessageString(CRW04501SFConst.L5_QUERY_JOKEN_CD_06, X31CWebConst.DATABEAN_SET_VALUE, orJokenIdx);
			andValBean.sendMessageString(CRW04501SFConst.L5_QUERY_JOKEN_CD_NM_06, X31CWebConst.DATABEAN_SET_VALUE, queryJokenTmpMap.get(orJokenIdx));
		}

		// (c)OR条件リスト、クエリ値リストテンプレートのクリア
		bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN).clearArray();
		bean.getDataBeanArray(CRW04501SFConst.QUERY_VALUE_TMP).clearArray();

		// (d)項目名選択インデックスに"0"を設定
		queryKmkBean.sendMessageString(CRW04501SFConst.L0_QUERY_KMK_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// (e)フィールドタイプコードの設定
		fieldTypeCd = queryKmkBean.sendMessageString(CRW04501SFConst.L0_FIELD_TYPE_CD_01, X31CWebConst.DATABEAN_GET_VALUE, 0);
		bean.sendMessageString(CRW04501SFConst.FIELD_TYPE_CD, X31CWebConst.DATABEAN_SET_VALUE, fieldTypeCd);

		// フィールドタイプコードがnullの場合
		if (JCRUtilCommon.isNull(fieldTypeCd))
		{
			// (3)サービス呼出処理
			// マッピングクラスを使用する為、配列化
			X31SDataBeanAccess[] paramBean = {bean};

			// ユースケースID格納
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0154");

			// マッピングクラス
			CRSV0154_CRSV0154OPDBMapper mapper = new CRSV0154_CRSV0154OPDBMapper();

			// マッピング処理（上り）
			mapper.setGETQUERYVALUEFORCMBCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

			// サービス実行
			invokeService(paramMap, dataMap, outputMap);

			// (4)サービス処理結果の設定
			// (a)サービスの処理結果を取得する。
			// マッピング処理（下り）
			mapper.getGETQUERYVALUEFORCMBCC(paramBean, outputMap);
		}

		// (c)行追加処理
		bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN).clearArray();
		addRow(bean);

		// (d)ボタン制御設定
		// AND条件リストが5明細の場合、OR条件追加ボタンを非活性に設定
		if (andJoken.getCount() == 5)
		{
			bean.sendMessageString(CRW04501SFConst.B_SET_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_DEACTIVE);
		}
		bean.sendMessageString(CRW04501SFConst.B_DELETE_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
		bean.sendMessageString(CRW04501SFConst.B_DELETE_AND_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(CRW04501SFConst.B_ADD_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_ACTIVE);

		// (e)AND条件編集インデックスの設定
		bean.sendMessageString(CRW04501SFConst.AND_JOKEN_EDIT_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "");

		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04501);

		return true;
	}

	/**
	 * AND条件削除ボタン押下.<br>
	 * 選択されたAND条件の行を削除する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean deleteAndJoken() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// (a)選択された明細を、OR条件リストより削除
		X31SDataBeanAccessArray andJoken = bean.getDataBeanArray(CRW04501SFConst.QUERY_AND_JOKEN);
		int andJokenDelIndex = Integer.parseInt(bean.sendMessageString(CRW04501SFConst.AND_JOKEN_DEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		andJoken.removeDataBean(andJokenDelIndex);

		// (b)ボタン制御設定
		bean.sendMessageString(CRW04501SFConst.B_SET_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_ACTIVE);

		// (c)行スタイル設定
		for (int i = 0; i < andJoken.getCount(); i++)
		{
			X31SDataBeanAccess andJokenBean = andJoken.getDataBean(i);
			andJokenBean.sendMessageString(CRW04501SFConst.L4_LINE_STYLE_05, X31CWebConst.DATABEAN_SET_VALUE, JCRWebCommon.getLineStyle(i + 1));
		}

		// (3)サービス呼出処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04501);

		return true;
	}

	/**
	 * AND条件編集ボタン押下.<br>
	 * 選択されたAND条件の行を編集する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean addAndJoken() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// (a)OR条件リスト、クエリ値リストテンプレートのクリア
		bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN).clearArray();
		bean.getDataBeanArray(CRW04501SFConst.QUERY_VALUE_TMP).clearArray();

		// (b)行スタイル設定
		X31SDataBeanAccessArray andJoken = bean.getDataBeanArray(CRW04501SFConst.QUERY_AND_JOKEN);
		for (int i = 0; i < andJoken.getCount(); i++)
		{
			X31SDataBeanAccess andJokenBean = andJoken.getDataBean(i);
			andJokenBean.sendMessageString(CRW04501SFConst.L4_LINE_STYLE_05, X31CWebConst.DATABEAN_SET_VALUE, JCRWebCommon.getLineStyle(i + 1));
		}

		// (c)フィールドタイプコードの設定
		int andJokenEditIndex = Integer.parseInt(bean.sendMessageString(CRW04501SFConst.AND_JOKEN_EDIT_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		X31SDataBeanAccess andJokenBean = andJoken.getDataBean(andJokenEditIndex);
		String fieldTypeCd = andJokenBean.sendMessageString(CRW04501SFConst.L4_FIELD_TYPE_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(CRW04501SFConst.FIELD_TYPE_CD, X31CWebConst.DATABEAN_SET_VALUE, fieldTypeCd);

		// (d)OR条件リスト項目名リストの設定
		X31SDataBeanAccess queryKmkBean = bean.getDataBeanArray(CRW04501SFConst.QUERY_KMK).getDataBean(0);
		queryKmkBean.sendMessageString(CRW04501SFConst.L0_QUERY_KMK_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, 
				andJokenBean.sendMessageString(CRW04501SFConst.L4_QUERY_KMK_INDEX_05, X31CWebConst.DATABEAN_GET_VALUE));

		// フィールドタイプコードがnullの場合
		if (JCRUtilCommon.isNull(fieldTypeCd))
		{
			// (3)サービス呼出処理
			// マッピングクラスを使用する為、配列化
			X31SDataBeanAccess[] paramBean = {bean};

			// ユースケースID格納
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0154");

			// マッピングクラス
			CRSV0154_CRSV0154OPDBMapper mapper = new CRSV0154_CRSV0154OPDBMapper();

			// マッピング処理（上り）
			mapper.setGETQUERYVALUEFORCMBCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

			// サービス実行
			invokeService(paramMap, dataMap, outputMap);

			// (4)サービス処理結果の設定
			// (a)サービスの処理結果を取得する。
			// マッピング処理（下り）
			mapper.getGETQUERYVALUEFORCMBCC(paramBean, outputMap);
		}

		// (c)(d)OR条件リストの設定
		X31SDataBeanAccessArray andValList = andJokenBean.getDataBeanArray(CRW04501SFConst.L4_AND_QUERY_VALUE_LIST);
		for (int i = 0; i < andValList.getCount(); i++)
		{
			// 行追加処理
			addRow(bean);

			X31SDataBeanAccess andValListBean = andValList.getDataBean(i);
			X31SDataBeanAccessArray orJoken = bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN);
			X31SDataBeanAccess orJokenBean = orJoken.getDataBean(orJoken.getCount() - 1);
			JCRWebCommon.setSplitQueryValue(orJokenBean, 
					andValListBean.sendMessageString(CRW04501SFConst.L5_QUERY_VALUE_06, X31CWebConst.DATABEAN_GET_VALUE),
					new String[] {CRW04501SFConst.L3_QUERY_VALUE_1_04, CRW04501SFConst.L3_QUERY_VALUE_2_04, CRW04501SFConst.L3_QUERY_VALUE_3_04, 
					CRW04501SFConst.L3_QUERY_VALUE_4_04, CRW04501SFConst.L3_QUERY_VALUE_5_04}, fieldTypeCd);
			orJokenBean.sendMessageString(CRW04501SFConst.L3_QUERY_VALUE_INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, 
					andValListBean.sendMessageString(CRW04501SFConst.L5_QUERY_VALUE_CD_INDEX_06, X31CWebConst.DATABEAN_GET_VALUE));
			orJokenBean.sendMessageString(CRW04501SFConst.L3_QUERY_JOKEN_INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, 
					andValListBean.sendMessageString(CRW04501SFConst.L5_QUERY_JOKEN_CD_06, X31CWebConst.DATABEAN_GET_VALUE));
		}

		// (e)ボタン制御設定
		bean.sendMessageString(CRW04501SFConst.B_SET_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_ACTIVE);
		bean.sendMessageString(CRW04501SFConst.B_DELETE_AND_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);

		if (bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN).getCount() == 1)
		{
			bean.sendMessageString(CRW04501SFConst.B_DELETE_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_STRING);
		}
		else
		{
			bean.sendMessageString(CRW04501SFConst.B_DELETE_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "");
		}

		if (bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN).getCount() < 5)
		{
			bean.sendMessageString(CRW04501SFConst.B_ADD_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_ACTIVE);
		}
		else
		{
			bean.sendMessageString(CRW04501SFConst.B_ADD_OR_JOKEN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.DISABLED_DEACTIVE);
		}

		// (f)行スタイル設定
		andJokenBean.sendMessageString(CRW04501SFConst.L4_LINE_STYLE_05, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.LINE_STYLE_EDIT);

		// (5)引継情報の設定
		// なし。

		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04501);

		return true;
	}

	/**
	 * 登録確認ボタン押下.<br>
	 * 入力チェックを行い、エラーがない場合は、クエリ登録確認画面に遷移する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean confirmIns() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
// ANK-3656-00-00 ADD START
		// AND条件の総件数
		int tatalJknCnt = 0;
		// B6(〜を含まない)の件数
		int b6Cnt = 0;
		X31SDataBeanAccessArray arraybean = bean.getDataBeanArray(CRW04501SFConst.QUERY_AND_JOKEN);
		// AND条件を総当たりして、B6の件数をカウントする。
		for(int i = 0; i < arraybean.getCount(); i++){
			X31SDataBeanAccess subbean = arraybean.getDataBean(i);
			X31SDataBeanAccessArray subArraybean = subbean.getDataBeanArray(CRW04501SFConst.L4_AND_QUERY_VALUE_LIST);
			for(int j = 0; j < subArraybean.getCount(); j++){
				X31SDataBeanAccess subbeanDetail = subArraybean.getDataBean(j);
				tatalJknCnt += 1;
				if ("B6".equals(subbeanDetail.sendMessageString(CRW04501SFConst.L5_QUERY_JOKEN_CD_06, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					b6Cnt += 1;
				}
			}
		}
		// AND条件の総件数とB6の件数が同じだったら、「〜を含まない」しか条件設定されていないのでワーニング出力
		if (tatalJknCnt == b6Cnt)
		{
			JCRWebCommon.setMessageInfo(this, "EKBF340--W");
		}
// ANK-3656-00-00 ADD END
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// サービスフォームBeanの設定
		// なし。

		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean, commoninfoBean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0153");

		// マッピングクラス
		CRSV0153_CRSV0153OPDBMapper mapper = new CRSV0153_CRSV0153OPDBMapper();

		// マッピング処理（上り）
		mapper.setSETQUERYINFOCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// (a)行スタイル設定
		String andJokenEditIdx = bean.sendMessageString(CRW04501SFConst.AND_JOKEN_EDIT_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		// AND条件が編集中の場合
		if (!JCRUtilCommon.isNull(andJokenEditIdx))
		{
			X31SDataBeanAccessArray andJoken = bean.getDataBeanArray(CRW04501SFConst.QUERY_AND_JOKEN);
			X31SDataBeanAccess andJokenBean = andJoken.getDataBean(Integer.parseInt(andJokenEditIdx));
			andJokenBean.sendMessageString(CRW04501SFConst.L4_LINE_STYLE_05, X31CWebConst.DATABEAN_SET_VALUE, 
					JCRWebCommon.getLineStyle(Integer.parseInt(andJokenEditIdx) + 1));
		}

		// (5)引継情報の設定
		// なし。

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04502);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04502);

		return true;
	}

	/**
	 * クリアボタン押下.<br>
	 * 画面をクリアする。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean clear() throws Exception
	{
		// (1)3.1 初期表示(initIns())を行う。
		// 初期表示処理を呼び出す
		return initIns();
	}

	/**
	 * 確定ボタン押下.<br>
	 * クエリ、クエリ項目、クエリ項目内訳を登録する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean fix() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// なし。

		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean, commoninfoBean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0153");

		// マッピングクラス
		CRSV0153_CRSV0153OPDBMapper mapper = new CRSV0153_CRSV0153OPDBMapper();

		// マッピング処理（上り）
		mapper.setSETQUERYINFOCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// (a)戻り先画面ID設定（JCCWebCommon.setScreenId)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW04401, JCRScreenConst.SCREEN_ID_CRW04502);

		// (b)次画面への引継情報(dataMap)を作成する。
		paramMap.put(JCRStrConst.KEY_REFRESH_TYPE, JCRStrConst.QUERY_ALL_REFRESH);

		// (c)画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenInfo(this, JCRScreenConst.SCREEN_ID_CRW04401, paramMap);

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_NAME_CCW00105);

		return true;
	}

	/**
	 * キャンセルボタン押下.<br>
	 * クエリ登録画面に戻る。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean cancel() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1)引継情報の取得
		// なし。

		// (2)サービスフォームBeanの設定
		// (a)行スタイル設定
		String andJokenEditIdx = bean.sendMessageString(CRW04501SFConst.AND_JOKEN_EDIT_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		// AND条件が編集中の場合
		if (!JCRUtilCommon.isNull(andJokenEditIdx))
		{
			X31SDataBeanAccessArray andJoken = bean.getDataBeanArray(CRW04501SFConst.QUERY_AND_JOKEN);
			X31SDataBeanAccess andJokenBean = andJoken.getDataBean(Integer.parseInt(andJokenEditIdx));
			andJokenBean.sendMessageString(CRW04501SFConst.L4_LINE_STYLE_05, X31CWebConst.DATABEAN_SET_VALUE, JCRStrConst.LINE_STYLE_EDIT);
		}

		// (3)サービス呼出処理
		// なし。

		// (4)サービス処理結果の設定
		// なし。

		// (5)引継情報の設定
		// なし。

		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04501);

		return true;
	}

	/**
	 * 行追加処理.<br>
	 * OR条件リストに行を追加する。
	 * 
	 * @param bean サービスフォームBean
	 */
	private void addRow(X31SDataBeanAccess bean)
	{
		X31SDataBeanAccess orJokenBean = bean.getDataBeanArray(CRW04501SFConst.QUERY_OR_JOKEN).addDataBean();

		// クエリ項目リストが0件の場合設定しない
		X31SDataBeanAccess queryKmkBean = bean.getDataBeanArray(CRW04501SFConst.QUERY_KMK).getDataBean(0);
		if ((Integer)queryKmkBean.sendMessage(CRW04501SFConst.L0_FIELD_TYPE_CD_01, X31CWebConst.DATABEAN_GET_COUNT) == 0)
		{
			return;
		}

		// OR条件リスト項目名の選択インデックスを取得
		int queryKmkIdx = Integer.parseInt(queryKmkBean.sendMessageString(CRW04501SFConst.L0_QUERY_KMK_INDEX_01, X31CWebConst.DATABEAN_GET_VALUE));

		// フィールドタイプコード、クエリ条件コードを取得
		String fieldTypeCd = queryKmkBean.sendMessageString(CRW04501SFConst.L0_FIELD_TYPE_CD_01, X31CWebConst.DATABEAN_GET_VALUE, queryKmkIdx);
		String queryJokenCd = queryKmkBean.sendMessageString(CRW04501SFConst.L0_QUERY_JOKEN_GRP_CD_01, X31CWebConst.DATABEAN_GET_VALUE, queryKmkIdx);
		queryJokenCd = queryJokenCd.substring(queryJokenCd.indexOf(".") + 1);

		// フィールドタイプコードがnullの場合
		if (JCRUtilCommon.isNull(fieldTypeCd))
		{
			// クエリ値プルダウン項目を設定
			X31SDataBeanAccessArray queryValueTmp = bean.getDataBeanArray(CRW04501SFConst.QUERY_VALUE_TMP);
			X31SDataBeanAccessArray valList = orJokenBean.getDataBeanArray(CRW04501SFConst.L3_OR_QUERY_VALUE_LIST);
			for (int i = 0; i < queryValueTmp.getCount(); i++)
			{
				String index = String.valueOf(i + 1) + ".";
				X31SDataBeanAccess tmpBean = queryValueTmp.getDataBean(i);
				X31SDataBeanAccess valBean = valList.addDataBean();
				valBean.sendMessageString(CRW04501SFConst.L2_QUERY_VALUE_CD_03, X31CWebConst.DATABEAN_SET_VALUE, 
						tmpBean.sendMessageString(CRW04501SFConst.L7_QUERY_VALUE_CD_08, X31CWebConst.DATABEAN_GET_VALUE));
				valBean.sendMessageString(CRW04501SFConst.L2_QUERY_VALUE_03, X31CWebConst.DATABEAN_SET_VALUE, 
						index + tmpBean.sendMessageString(CRW04501SFConst.L7_QUERY_VALUE_08, X31CWebConst.DATABEAN_GET_VALUE));
			}
			orJokenBean.sendMessageString(CRW04501SFConst.L3_QUERY_VALUE_INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}

		// クエリ条件プルダウン項目を設定
		int cnt = 1;
		X31SDataBeanAccessArray queryJokeneTmp = bean.getDataBeanArray(CRW04501SFConst.QUERY_JOKEN_TMP);
		X31SDataBeanAccessArray jokenList = orJokenBean.getDataBeanArray(CRW04501SFConst.L3_OR_QUERY_JOKEN_LIST);
		for (int i = 0; i < queryJokeneTmp.getCount(); i++)
		{
			X31SDataBeanAccess tmpBean = queryJokeneTmp.getDataBean(i);
			String code = tmpBean.sendMessageString(CRW04501SFConst.L6_QUERY_JOKEN_CD_07, X31CWebConst.DATABEAN_GET_VALUE);
			String name = tmpBean.sendMessageString(CRW04501SFConst.L6_QUERY_JOKEN_CD_NM_07, X31CWebConst.DATABEAN_GET_VALUE);

			if (queryJokenCd.equals(code.substring(0, 1)))
			{
				String index = String.valueOf(cnt++) + ".";
				X31SDataBeanAccess jokenBean = jokenList.addDataBean();
				jokenBean.sendMessageString(CRW04501SFConst.L1_QUERY_JOKEN_CD_02, X31CWebConst.DATABEAN_SET_VALUE, code);
				jokenBean.sendMessageString(CRW04501SFConst.L1_QUERY_JOKEN_CD_NM_02, X31CWebConst.DATABEAN_SET_VALUE, index + name);
			}
		}

		// OR条件リストクエリ条件選択リストが0件でない場合
		if (jokenList.getCount() != 0)
		{
			orJokenBean.sendMessageString(CRW04501SFConst.L3_QUERY_JOKEN_INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, 
					jokenList.getDataBean(0).sendMessageString(CRW04501SFConst.L1_QUERY_JOKEN_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
		}
	}
}
