/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CRW04003SFLogic
 *	ソースファイル名：CRW04003SFLogic.java
 *	作成者			：富士通
 *	日付			：2011年04月25日
 *＜機能概要＞
 *	ユーザー選択ビューロジック
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
 *
 ********************************************************************************/

/**
 * <DL>
 * <DT>名前
 * <p>
 * <DT>説明: 
 * <DD>データの初期化.
 * <DD> generated by Web Client tool V01/L01.
 * </DL>
*/
package eo.web.webview.CRW04003SF;

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.constant.JPCOnlineMessageConstant;
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.CRSV0015_CRSV0015OPDBMapper;
import eo.web.webview.mapping.CRSV0016_CRSV0016OPDBMapper;

/**
 * ユーザー選択ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CRW04003SFLogic 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>
	 * <br>
	 * ユーザー選択(初期表示)サービスを呼び出し、
	 * ユーザー選択画面の初期表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean initUser() throws Exception
	{
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		JCRWebCommon.getScreenInfo(this);

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// サービスフォームBeanの項目をクリアする。
		bean.sendMessage(CRW04003SFConst.KEY_USER_ID, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04003SFConst.KEY_USER_NM, X31CWebConst.DATABEAN_CLEAR);
		bean.getDataBeanArray(CRW04003SFConst.WKKBT_POSITION).clearArray();
		bean.sendMessage(CRW04003SFConst.KEY_WKKBT_ORG_NM, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04003SFConst.KEY_WKKBT_ORG, X31CWebConst.DATABEAN_CLEAR);
		bean.getDataBeanArray(CRW04003SFConst.WKKBT_ORG).clearArray();
		bean.getDataBeanArray(CRW04003SFConst.ALL_WKKBT_ORG).clearArray();
		bean.sendMessage(CRW04003SFConst.KEY_SORT_SHITEI_KMK, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04003SFConst.TOTAL_NUM, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04003SFConst.SEARCH_ERR_FLG, X31CWebConst.DATABEAN_CLEAR);	
		bean.sendMessageBoolean(CRW04003SFConst.SEARCH_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		bean.sendMessage(CRW04003SFConst.WK_KEY_USER_ID, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04003SFConst.WK_KEY_USER_NM, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04003SFConst.WK_KEY_WKKBT_ORG_NM, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04003SFConst.WK_WKKBT_ORG_CD, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(CRW04003SFConst.WK_WKKBT_POSITION_CD, X31CWebConst.DATABEAN_CLEAR);
		bean.getDataBeanArray(CRW04003SFConst.WK_WKKBT_ORG).clearArray();
		
		bean.sendMessage(CRW04003SFConst.CHOICE_ROW, X31CWebConst.DATABEAN_CLEAR);
		bean.getDataBeanArray(CRW04003SFConst.EZM0051B020CBSMSG1LIST).clearArray();

		// システム日付
		bean.sendMessageString(CRW04003SFConst.OPE_DATE, X31CWebConst.DATABEAN_SET_VALUE, JCRWebCommon.getSysDate());
		
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0015");

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// マッピングクラス
		CRSV0015_CRSV0015OPDBMapper mapper = new CRSV0015_CRSV0015OPDBMapper();
		
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};
		
		// マッピング処理（上り）
		// 対応履歴業務個別設定立場一覧照会
		mapper.setGETWKKBTPOSITION1RCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// 対応履歴業務個別設定組織一覧照会
		mapper.setGETWKKBTGRCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// マッピング処理（下り）
		// 対応履歴業務個別設定立場一覧照会
		mapper.getGETWKKBTPOSITION1RCC(paramBean, outputMap);

		// 対応履歴業務個別設定組織一覧照会
		mapper.getGETWKKBTGRCC(paramBean, outputMap);

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04003);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04003);
		
		return true;
	}

	/**
	 * 検索ボタン押下処理。<br>
	 * <br>
	 * ユーザー選択(検索ボタン押下)サービスを呼び出し、
	 * ユーザー選択画面の初期表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean search() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 検索条件を保存
		setSearchCondition();

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// 機能コード"1"による条件検索
		findByCondition(JPCModelConstant.FUNC_CD_1 , JCRStrConst.USER_ID);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		setServiceResult();

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。
		
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04003);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04003);

		return true;
	}

	/**
	 * クリアボタン押下処理。<br>
	 * <br>
	 * 画面の入力項目、検索結果をクリアし、
	 * ユーザー選択画面を初期表示した状態に戻します。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean clear() throws Exception
	{
		return initUser();
	}

	/**
	 * 設定ボタン押下処理。<br>
	 * <br>
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean set() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// 出力モード
		String outputMode = bean.sendMessageString(CRW04003SFConst.OUTPUT_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		X31SDataBeanAccessArray wgList = bean.getDataBeanArray(CRW04003SFConst.EZM0051B020CBSMSG1LIST);
		
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		
		bean.getDataBeanArray(CRW04003SFConst.RET_USER_LIST).clearArray();
		X31SDataBeanAccessArray userList = bean.getDataBeanArray(CRW04003SFConst.RET_USER_LIST);
		
		// 出力モード：単一
		if (JCRStrConst.OUTPUT_MODE_SINGLE.equals(outputMode))
		{
			int selectRow = Integer.parseInt(bean.sendMessageString(CRW04003SFConst.CHOICE_ROW, X31CWebConst.DATABEAN_GET_VALUE));
			
			X31SDataBeanAccess wgBean = wgList.getDataBean(selectRow);
			userList.addDataBean();
			X31SDataBeanAccess userBean = userList.getDataBean(0);
			userBean.sendMessageString(CRW04003SFConst.RET_USER_ID_06, X31CWebConst.DATABEAN_SET_VALUE, 
					wgBean.sendMessageString(CRW04003SFConst.L3_USER_ID_04, X31CWebConst.DATABEAN_GET_VALUE));
			userBean.sendMessageString(CRW04003SFConst.RET_USER_NM_06, X31CWebConst.DATABEAN_SET_VALUE,
					wgBean.sendMessageString(CRW04003SFConst.L3_USER_NM_04, X31CWebConst.DATABEAN_GET_VALUE));
			userBean.sendMessageString(CRW04003SFConst.RET_WKKBT_ORG_CD_06, X31CWebConst.DATABEAN_SET_VALUE, 
					wgBean.sendMessageString(CRW04003SFConst.L3_WKKBT_ORG_CD_04, X31CWebConst.DATABEAN_GET_VALUE));
			userBean.sendMessageString(CRW04003SFConst.RET_WKKBT_ORG_NM_06, X31CWebConst.DATABEAN_SET_VALUE, 
					wgBean.sendMessageString(CRW04003SFConst.L3_WKKBT_ORG_NM_04, X31CWebConst.DATABEAN_GET_VALUE));
			userBean.sendMessageString(CRW04003SFConst.RET_WKKBT_POSITION_CD_06, X31CWebConst.DATABEAN_SET_VALUE, 
					wgBean.sendMessageString(CRW04003SFConst.L3_WKKBT_POSITION_CD_04, X31CWebConst.DATABEAN_GET_VALUE));
			userBean.sendMessageString(CRW04003SFConst.RET_WKKBT_POSITION_NM_06, X31CWebConst.DATABEAN_SET_VALUE, 
					wgBean.sendMessageString(CRW04003SFConst.L3_WKKBT_POSITION_NM_04, X31CWebConst.DATABEAN_GET_VALUE));
		} 
		// 出力モード：複数
		else if (JCRStrConst.OUTPUT_MODE_MULTI.equals(outputMode))
		{
			for (int i = 0; i < wgList.getCount(); i++)
			{
				X31SDataBeanAccess wgBean = wgList.getDataBean(i);
				
				if (wgBean.sendMessageBoolean(CRW04003SFConst.L3_SELECTED_BOOLEAN_04, X31CWebConst.DATABEAN_GET_VALUE))
				{
					userList.addDataBean();
					X31SDataBeanAccess userBean = userList.getDataBean(userList.getCount() - 1);
					userBean.sendMessageString(CRW04003SFConst.RET_USER_ID_06, X31CWebConst.DATABEAN_SET_VALUE, 
							wgBean.sendMessageString(CRW04003SFConst.L3_USER_ID_04, X31CWebConst.DATABEAN_GET_VALUE));
					userBean.sendMessageString(CRW04003SFConst.RET_USER_NM_06, X31CWebConst.DATABEAN_SET_VALUE,
							wgBean.sendMessageString(CRW04003SFConst.L3_USER_NM_04, X31CWebConst.DATABEAN_GET_VALUE));
					userBean.sendMessageString(CRW04003SFConst.RET_WKKBT_ORG_CD_06, X31CWebConst.DATABEAN_SET_VALUE, 
							wgBean.sendMessageString(CRW04003SFConst.L3_WKKBT_ORG_CD_04, X31CWebConst.DATABEAN_GET_VALUE));
					userBean.sendMessageString(CRW04003SFConst.RET_WKKBT_ORG_NM_06, X31CWebConst.DATABEAN_SET_VALUE, 
							wgBean.sendMessageString(CRW04003SFConst.L3_WKKBT_ORG_NM_04, X31CWebConst.DATABEAN_GET_VALUE));
					userBean.sendMessageString(CRW04003SFConst.RET_WKKBT_POSITION_CD_06, X31CWebConst.DATABEAN_SET_VALUE, 
							wgBean.sendMessageString(CRW04003SFConst.L3_WKKBT_POSITION_CD_04, X31CWebConst.DATABEAN_GET_VALUE));
					userBean.sendMessageString(CRW04003SFConst.RET_WKKBT_POSITION_NM_06, X31CWebConst.DATABEAN_SET_VALUE, 
							wgBean.sendMessageString(CRW04003SFConst.L3_WKKBT_POSITION_NM_04, X31CWebConst.DATABEAN_GET_VALUE));
				}
			}
		}

		dataMap.put(CRW04003SFConst.RET_USER_LIST, JCRWebCommon.getArrayList(bean.getDataBeanArray(CRW04003SFConst.RET_USER_LIST)));
		
		// 戻り先画面ID取得（JCCWebCommon.getScreenInfo)を使用し、戻り先画面IDを取得する。
		String screenId = JCRWebCommon.getScreenId(this);
		
		// 画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenInfo(this, screenId, dataMap);

		// -------------------------------------------------- //
		// (6)遷移先画面の設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_NAME_CCW00105);

		return true;

	}
	
	/**
	 * ユーザーＩＤ▲ボタン押下処理。<br>
	 * <br>
	 * 現在、検索済みの検索条件を元に、ユーザー選択(検索ボタン押下)サービスを呼び出し、
	 * ユーザーＩＤの昇順でユーザー一覧照会明細の検索を行い、ユーザー選択画面の表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean sortAscUserId() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 保存された検索条件を設定
		getSearchCondition();

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// 機能コード"1"によるソートキー指定条件検索
		findByCondition(JPCModelConstant.FUNC_CD_1, JCRStrConst.USER_ID);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		setServiceResult();

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04003);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04003);

		return true;
	}

	/**
	 * ユーザーＩＤ▼ボタン押下処理。<br>
	 * <br>
	 * 現在、検索済みの検索条件を元に、ユーザー選択(検索ボタン押下)サービスを呼び出し、
	 * ユーザーＩＤの降順でユーザー一覧照会明細の検索を行い、ユーザー選択画面の表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean sortDescUserId() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 保存された検索条件を設定
		getSearchCondition();

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// 機能コード"2"によるソートキー指定条件検索
		findByCondition(JPCModelConstant.FUNC_CD_2, JCRStrConst.USER_ID);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		setServiceResult();

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04003);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04003);

		return true;
	}

	/**
	 * 氏名▲ボタン押下処理。<br>
	 * <br>
	 * 現在、検索済みの検索条件を元に、ユーザー選択(検索ボタン押下)サービスを呼び出し、
	 * 氏名の昇順でユーザー一覧照会明細の検索を行い、ユーザー選択画面の表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean sortAscNm() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 保存された検索条件を設定
		getSearchCondition();

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// 機能コード"1"によるソートキー指定条件検索
		findByCondition(JPCModelConstant.FUNC_CD_1, JCRStrConst.USER_NM);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		setServiceResult();

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04003);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04003);

		return true;
	}

	/**
	 * 氏名▼ボタン押下処理。<br>
	 * <br>
	 * 現在、検索済みの検索条件を元に、ユーザー選択(検索ボタン押下)サービスを呼び出し、
	 * 氏名の降順でユーザー一覧照会明細の検索を行い、ユーザー選択画面の表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean sortDescNm() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 保存された検索条件を設定
		getSearchCondition();

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// 機能コード"2"によるソートキー指定条件検索
		findByCondition(JPCModelConstant.FUNC_CD_2, JCRStrConst.USER_NM);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		setServiceResult();

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04003);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04003);

		return true;
	}

	/**
	 * ワークグループ▲ボタン押下処理。<br>
	 * <br>
	 * 現在、検索済みの検索条件を元に、ユーザー選択(検索ボタン押下)サービスを呼び出し、
	 * ワークグループの昇順でユーザー一覧照会明細の検索を行い、ユーザー選択画面の表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean sortAscWkgrp() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 保存された検索条件を設定
		getSearchCondition();

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// 機能コード"1"によるソートキー指定条件検索
		findByCondition(JPCModelConstant.FUNC_CD_1, JCRStrConst.WKKBT_ORG_NM);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		setServiceResult();

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04003);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04003);

		return true;
	}

	/**
	 * ワークグループ▼ボタン押下処理。<br>
	 * <br>
	 * 現在、検索済みの検索条件を元に、ユーザー選択(検索ボタン押下)サービスを呼び出し、
	 * ワークグループの降順でユーザー一覧照会明細の検索を行い、ユーザー選択画面の表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean sortDescWkgrp() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 保存された検索条件を設定
		getSearchCondition();

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// 機能コード"2"によるソートキー指定条件検索
		findByCondition(JPCModelConstant.FUNC_CD_2,  JCRStrConst.WKKBT_ORG_NM);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		setServiceResult();

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04003);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04003);

		return true;
	}

	/**
	 * 権限▲ボタン押下処理。<br>
	 * <br>
	 * 現在、検索済みの検索条件を元に、ユーザー選択(検索ボタン押下)サービスを呼び出し、
	 * 権限の昇順でユーザー一覧照会明細の検索を行い、ユーザー選択画面の表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean sortAscAuthority() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 保存された検索条件を設定
		getSearchCondition();

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// 機能コード"1"によるソートキー指定条件検索
		findByCondition(JPCModelConstant.FUNC_CD_1, JCRStrConst.WKKBT_POSITION_NM);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		setServiceResult();

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04003);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04003);

		return true;
	}

	/**
	 * 権限▼ボタン押下処理。<br>
	 * <br>
	 * 現在、検索済みの検索条件を元に、ユーザー選択(検索ボタン押下)サービスを呼び出し、
	 * 権限の降順でユーザー一覧照会明細の検索を行い、ユーザー選択画面の表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean sortDescAuthority() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 保存された検索条件を設定
		getSearchCondition();

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// 機能コード"2"によるソートキー指定条件検索
		findByCondition(JPCModelConstant.FUNC_CD_2, JCRStrConst.WKKBT_POSITION_NM);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		setServiceResult();

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04003);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04003);

		return true;
	}

	/**
	 * ワークグループ検索処理。<br>
	 * <br>
	 * 画面初期表示時に取得した全ワークグループのリストから、
	 * 検索キーとして入力されたワークグループ名をマッチングし、ヒットした名称のリストを返します。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean searchWkgrp() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBean
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 画面入力されたワークグループ名
		String keyOrgNm = bean.sendMessageString(CRW04003SFConst.KEY_WKKBT_ORG_NM, X31CWebConst.DATABEAN_GET_VALUE);

		
		// 退避している全ワークグループリスト
		X31SDataBeanAccessArray allList = bean.getDataBeanArray(CRW04003SFConst.ALL_WKKBT_ORG);
		
		// ワークグループリストをクリア
		bean.getDataBeanArray(CRW04003SFConst.WKKBT_ORG).clearArray();
		
		// ワークグループリストに空行を追加
		X31SDataBeanAccessArray wgList = bean.getDataBeanArray(CRW04003SFConst.WKKBT_ORG);
		wgList.addDataBean();
		X31SDataBeanAccess wgBean = wgList.getDataBean(0);;
		wgBean.sendMessageString(CRW04003SFConst.L1_WKKBT_ORG_CD_02, X31CWebConst.DATABEAN_SET_VALUE, " ");
		wgBean.sendMessageString(CRW04003SFConst.L1_WKKBT_ORG_NM_02, X31CWebConst.DATABEAN_SET_VALUE, " ");
		
		int allCount = allList.getCount();

		// 退避している全ワークグループリストからマッチング
		for (int i = 1; i < allCount; i++)
		{
			X31SDataBeanAccess orgBean = allList.getDataBean(i);
			String orgCd = orgBean.sendMessageString(CRW04003SFConst.L2_WKKBT_ORG_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
			String orgNm = orgBean.sendMessageString(CRW04003SFConst.L2_WKKBT_ORG_NM_03, X31CWebConst.DATABEAN_GET_VALUE);

			int indexOf = orgNm.lastIndexOf(keyOrgNm);

			// キーの指定がない場合、もしくはキーの指定がありキーと一致した場合設定
			if ((JCRUtilCommon.isNull(keyOrgNm)) || (indexOf > -1))
			{
				wgList.addDataBean();
				wgBean = wgList.getDataBean(wgList.getCount() - 1);
				wgBean.sendMessageString(CRW04003SFConst.L1_WKKBT_ORG_CD_02, X31CWebConst.DATABEAN_SET_VALUE, orgCd);
				wgBean.sendMessageString(CRW04003SFConst.L1_WKKBT_ORG_NM_02, X31CWebConst.DATABEAN_SET_VALUE, orgNm);
			}
		}
		
		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW04003);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW04003);

		return true;
	}

	/**
	 * 検索処理。<br>
	 * <br>
	 * 指定されたソート指定項目とソート順、サービスフォームBeanに設定された条件を元にユーザー選択(検索ボタン押下)サービスを呼び出し、
	 * ユーザー一覧照会明細の検索を行い、ユーザー選択画面の表示を行います。
	 * 
	 * @param funcCode 機能コード
	 * @param sortKey ソート指定項目
	 */
	private void findByCondition(String funcCode, String sortKey)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// ソート指定項目を設定
		bean.sendMessageString(CRW04003SFConst.KEY_SORT_SHITEI_KMK, X31CWebConst.DATABEAN_SET_VALUE, sortKey);

		// 検索処理
		findByCondition(funcCode);

		return;

	}
	
	/**
	 * 検索処理。<br>
	 * <br>
	 * サービスフォームBeanに設定された条件を元にユーザー選択(検索ボタン押下)サービスを呼び出し、
	 * ユーザー一覧照会明細の検索を行い、ユーザー選択画面の表示を行います。
	 * 
	 * @param funcCode 機能コード
	 */
	private void findByCondition(String funcCode)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0016");

		// マッピングクラス
		CRSV0016_CRSV0016OPDBMapper mapper = new CRSV0016_CRSV0016OPDBMapper();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// マッピング処理（上り）
		mapper.setCRSV001601SC(paramBean, dataMap, funcCode);

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// ユーザー一覧照会明細クリア
		bean.getDataBeanArray(CRW04003SFConst.EZM0051B020CBSMSG1LIST).clearArray();

		// サービスの処理結果を取得する。
		mapper.getCRSV001601SC(paramBean, outputMap);

		return;
	}

	/**
	 * サービス処理結果設定。<br>
	 * <br>
	 * サービスの処理結果を設定します。
	 * 
	 */
	private void setServiceResult()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 検索結果表示フラグの設定
		bean.sendMessageBoolean(CRW04003SFConst.SEARCH_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);

		// 検索エラーフラグ(0件)
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(bean.sendMessageString(CRW04003SFConst.SEARCH_ERR_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			//検索結果:指定されたデータが存在しません。
			JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I, new String[]{""});
		}

		return;
	}
	
	/**
	 * 検索条件保存処理を行う。<br>
	 * <br>
	 * 画面に入力されている検索条件（ソート指定項目、ソート順は除く）をサービスフォームBeanの退避領域に保存します。
	 * 
	 */
	private void setSearchCondition()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		bean.sendMessageString(CRW04003SFConst.WK_KEY_USER_ID, X31CWebConst.DATABEAN_SET_VALUE,
				bean.sendMessageString(CRW04003SFConst.KEY_USER_ID, X31CWebConst.DATABEAN_GET_VALUE));

		bean.sendMessageString(CRW04003SFConst.WK_KEY_USER_NM, X31CWebConst.DATABEAN_SET_VALUE,
				bean.sendMessageString(CRW04003SFConst.KEY_USER_NM, X31CWebConst.DATABEAN_GET_VALUE));

		bean.sendMessageString(CRW04003SFConst.WK_KEY_WKKBT_ORG_NM, X31CWebConst.DATABEAN_SET_VALUE,
				bean.sendMessageString(CRW04003SFConst.KEY_WKKBT_ORG_NM, X31CWebConst.DATABEAN_GET_VALUE));
		
		bean.sendMessageString(CRW04003SFConst.WK_WKKBT_ORG_CD, X31CWebConst.DATABEAN_SET_VALUE,
				bean.sendMessageString(CRW04003SFConst.KEY_WKKBT_ORG, X31CWebConst.DATABEAN_GET_VALUE));

		X31SDataBeanAccess positionbean = bean.getDataBeanArray(CRW04003SFConst.WKKBT_POSITION).getDataBean(0);
		
		bean.sendMessageString(CRW04003SFConst.WK_WKKBT_POSITION_CD, X31CWebConst.DATABEAN_SET_VALUE, 
				positionbean.sendMessageString(CRW04003SFConst.L0_WKKBT_POSITION_IDX_01, X31CWebConst.DATABEAN_GET_VALUE));

		
		if (!bean.sendMessageString(CRW04003SFConst.WK_KEY_WKKBT_ORG_NM, X31CWebConst.DATABEAN_GET_VALUE).equals("")) 
		{
			bean.getDataBeanArray(CRW04003SFConst.WK_WKKBT_ORG).clearArray();
			X31SDataBeanAccessArray wkList = bean.getDataBeanArray(CRW04003SFConst.WK_WKKBT_ORG);
			X31SDataBeanAccessArray orgList = bean.getDataBeanArray(CRW04003SFConst.WKKBT_ORG);
			
			int allCount = orgList.getCount();

			for (int i = 0; i < allCount; i++)
			{
				X31SDataBeanAccess orgBean = orgList.getDataBean(i);
				String orgCd = orgBean.sendMessageString(CRW04003SFConst.L1_WKKBT_ORG_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
				String orgNm = orgBean.sendMessageString(CRW04003SFConst.L1_WKKBT_ORG_NM_02, X31CWebConst.DATABEAN_GET_VALUE);

				wkList.addDataBean();
				X31SDataBeanAccess wkBean = wkList.getDataBean(wkList.getCount() - 1);
				wkBean.sendMessageString(CRW04003SFConst.L4_WKKBT_ORG_CD_05, X31CWebConst.DATABEAN_SET_VALUE, orgCd);
				wkBean.sendMessageString(CRW04003SFConst.L4_WKKBT_ORG_NM_05, X31CWebConst.DATABEAN_SET_VALUE, orgNm);
			}
		}

		return;
	}

	/**
	 * 検索条件取得処理を行う。<br>
	 * <br>
	 * サービスフォームBeanの退避領域に保存されている検索条件（ソート指定項目、ソート順は除く）を
	 * サービスフォームBeanの検索条件に設定します。
	 * 
	 */
	private void getSearchCondition()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		bean.sendMessageString(CRW04003SFConst.KEY_USER_ID, X31CWebConst.DATABEAN_SET_VALUE,
				bean.sendMessageString(CRW04003SFConst.WK_KEY_USER_ID, X31CWebConst.DATABEAN_GET_VALUE));

		bean.sendMessageString(CRW04003SFConst.KEY_USER_NM, X31CWebConst.DATABEAN_SET_VALUE,
				bean.sendMessageString(CRW04003SFConst.WK_KEY_USER_NM, X31CWebConst.DATABEAN_GET_VALUE));

		bean.sendMessageString(CRW04003SFConst.KEY_WKKBT_ORG_NM, X31CWebConst.DATABEAN_SET_VALUE,
				bean.sendMessageString(CRW04003SFConst.WK_KEY_WKKBT_ORG_NM, X31CWebConst.DATABEAN_GET_VALUE));
		
		bean.sendMessageString(CRW04003SFConst.KEY_WKKBT_ORG, X31CWebConst.DATABEAN_SET_VALUE,
				bean.sendMessageString(CRW04003SFConst.WK_WKKBT_ORG_CD, X31CWebConst.DATABEAN_GET_VALUE));

		X31SDataBeanAccess positionbean = bean.getDataBeanArray(CRW04003SFConst.WKKBT_POSITION).getDataBean(0);
		String  positionIdx = bean.sendMessageString(CRW04003SFConst.WK_WKKBT_POSITION_CD, X31CWebConst.DATABEAN_GET_VALUE);
		positionbean.sendMessageString(CRW04003SFConst.L0_WKKBT_POSITION_IDX_01, X31CWebConst.DATABEAN_SET_VALUE, positionIdx);
		
		if (!bean.sendMessageString(CRW04003SFConst.KEY_WKKBT_ORG_NM, X31CWebConst.DATABEAN_GET_VALUE).equals("")) 
		{
			bean.getDataBeanArray(CRW04003SFConst.WKKBT_ORG).clearArray();
			X31SDataBeanAccessArray orgList = bean.getDataBeanArray(CRW04003SFConst.WKKBT_ORG);
			X31SDataBeanAccessArray wkList = bean.getDataBeanArray(CRW04003SFConst.WK_WKKBT_ORG);
			
			int allCount = wkList.getCount();

			for (int i = 0; i < allCount; i++)
			{
				X31SDataBeanAccess wkBean = wkList.getDataBean(i);
				String orgCd = wkBean.sendMessageString(CRW04003SFConst.L4_WKKBT_ORG_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
				String orgNm = wkBean.sendMessageString(CRW04003SFConst.L4_WKKBT_ORG_NM_05, X31CWebConst.DATABEAN_GET_VALUE);

				orgList.addDataBean();
				X31SDataBeanAccess orgBean = orgList.getDataBean(orgList.getCount() - 1);
				orgBean.sendMessageString(CRW04003SFConst.L1_WKKBT_ORG_CD_02, X31CWebConst.DATABEAN_SET_VALUE, orgCd);
				orgBean.sendMessageString(CRW04003SFConst.L1_WKKBT_ORG_NM_02, X31CWebConst.DATABEAN_SET_VALUE, orgNm);
			}
		}
		
		return;
	}

}
