/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：物流管理システム
*   ソースファイル名：DKW00801SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年05月27日
*＜機能概要＞
*   棚移動承認一覧照会画面です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/06/29   FJ）        新規作成
*
**********************************************************************/
package eo.web.webview.DKW00801SF;

import static eo.web.webview.DKW00801SF.DKW00801SFConst.*;
import static eo.web.webview.common.JDKWebCommon.appendPrefix;
import static eo.web.webview.common.JDKWebCommon.getBean;
import static eo.web.webview.common.JDKScreenConst.*;

import java.io.UnsupportedEncodingException;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x31.X31SWebLog;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JDKCommonUtil;
import eo.common.util.JPCEditString;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.DKW00802SF.DKW00802SFConst;
import eo.web.webview.common.JCCMessageCache;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JDKWebCommon;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.mapping.DKSV0003_DKSV0003OP_01DBMapper;
import eo.web.webview.mapping.DKSV0004_DKSV0004OPDBMapper;

/**
 * 棚移動承認一覧照会画面のビューロジック処理を行います。
 * @author user
 */
public class DKW00801SFLogic extends JCCWebBusinessLogic
{
	/**
	 * シリアルバージョンＩＤ
	 */
	private static final long serialVersionUID = 1L;

	/** 最大表示件数 */
	private static final String SHOW_MAX_COUNT = "150";
	/** VARB（一覧画面用） */
	private static final String L_PAG_LIST = "L_PAG_LIST";
	/** 処理区分設定コード 未完了 */
	private static final String CD_INCOMPLETE = "0";
	/** プルダウン取得用キー（指定方法） */
	private static final String PULLDOWN_KEY_SHITEI = "CD00334";

	/**
	 * 初期表示を処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean init() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		// 遷移元画面IDを設定
		String screenId = JCCWebCommon.getScreenId(this);

		// 運用日付を設定
		serviceFormBean.sendMessageString(UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, 
											JCCWebCommon.getOpeDate(this, null));

		// プルダウン取得用キーを設定
		serviceFormBean.sendMessageString(SHITEI_KEY, X31CWebConst.DATABEAN_SET_VALUE, 
											PULLDOWN_KEY_SHITEI);

		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {serviceFormBean};

		// ◇ 業務ロジックの記述
		// ユースケースID格納用マップを生成
		HashMap<String, String> paramMap = new HashMap<String, String>();
		HashMap<String, String> inputMap = new HashMap<String, String>();
		HashMap<String, String> outputMap = new HashMap<String, String>();

		// ユースケースIDを設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0003");

		// DataBean⇔BPの上りマッピングを行う
		DKSV0003_DKSV0003OP_01DBMapper mapper = new DKSV0003_DKSV0003OP_01DBMapper();
		mapper.setDKSV000301SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);	// 移動
		mapper.setDKSV000302SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);	// 指定方法

		// サービス呼出
		invokeService(paramMap, inputMap, outputMap);

		JCCMessageCache.setMessageCache();

		// DataBean⇔BPの下りマッピングを行う
		mapper.getDKSV000301SC(paramBean, outputMap);	// 移動
		mapper.getDKSV000302SC(paramBean, outputMap);	// 指定方法

		// プルダウンの要素にインデックスを付与する
		// 移動（元、先）
		pushEmptyToTopOfPulldown(I_MV_LIST, I_TTM_CD_LIST_03, I_TTM_NM_LIST_03, I_TTM_KBN_LIST_03);

		// 指定方法
		pushEmptyToTopOfPulldown(I_SHITEI_WAY_LIST, I_SHITEI_WAY_CD_LIST_02, I_SHITEI_WAY_NM_LIST_02);


		// 一覧表示件数を初期化する
		serviceFormBean.sendMessageString(DISP_COUNT, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// エラーで遷移してきた場合かつメニュー（null）以外から遷移してきた場合
		if (JZMWebCommon.hasMsgList(super.getCommonInfoBean()) && screenId != null)
		{
			// 検索を行うため、メニュー以外から遷移してきたパターンと同じ動作にする
			// エラーメッセージは前画面にて設定済
			screenId = "err";
		}

		// メニュー（null）の場合
		if (JDKCommonUtil.isNull(screenId))
		{
			// 検索有無フラグ
			serviceFormBean.sendMessageString(SEARCH_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		// メニュー以外の場合
		else
		{
			// 検索条件を戻す
			// 指示日（ＦＲＯＭ）
			JDKWebCommon.setData(serviceFormBean, 
								JDKWebCommon.getData(serviceFormBean, S_SJI_YMD_STA_YMD), SJI_YMD_STA);

			X31SDataBeanAccessArray sjiYMDStaArray = serviceFormBean.getDataBeanArray(I_SJI_YMD_STA);
			X31SDataBeanAccess sjiYMDSta = sjiYMDStaArray.getDataBean(0);
			String bkSjiYMDSta = 
				serviceFormBean.sendMessageString(S_SJI_YMD_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE);
			sjiYMDSta.sendMessageString(YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, 
										JPCEditString.toYearFromYmd(bkSjiYMDSta));
			sjiYMDSta.sendMessageString(MON_01, X31CWebConst.DATABEAN_SET_VALUE, 
										JPCEditString.toMonthFromYmd(bkSjiYMDSta));
			sjiYMDSta.sendMessageString(DAY_01, X31CWebConst.DATABEAN_SET_VALUE, 
										JPCEditString.toDayFromYmd(bkSjiYMDSta));

			// 指示日（ＴＯ）
			JDKWebCommon.setData(serviceFormBean, 
									JDKWebCommon.getData(serviceFormBean, S_SJI_YMD_END_YMD), SJI_YMD_END);

			X31SDataBeanAccessArray sjiYMDEndArray = serviceFormBean.getDataBeanArray(I_SJI_YMD_END);
			X31SDataBeanAccess sjiYMDEnd = sjiYMDEndArray.getDataBean(0);
			String bkSjiYMDEnd = 
				serviceFormBean.sendMessageString(S_SJI_YMD_END_YMD, X31CWebConst.DATABEAN_GET_VALUE);
			sjiYMDEnd.sendMessageString(YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, 
										JPCEditString.toYearFromYmd(bkSjiYMDEnd));
			sjiYMDEnd.sendMessageString(MON_01, X31CWebConst.DATABEAN_SET_VALUE, 
										JPCEditString.toMonthFromYmd(bkSjiYMDEnd));
			sjiYMDEnd.sendMessageString(DAY_01, X31CWebConst.DATABEAN_SET_VALUE, 
										JPCEditString.toDayFromYmd(bkSjiYMDEnd));

			// 指定方法
			JDKWebCommon.setData(serviceFormBean, 
									JDKWebCommon.getData(serviceFormBean, S_SHITEI_WAY_CD), SHITEI_WAY_CD);

			// 指定方法プルダウンの選択値を設定
			String siteiCd = serviceFormBean.sendMessageString(SHITEI_WAY_CD, X31CWebConst.DATABEAN_GET_VALUE);
			int shiteiIndex = getCodeToIndexForDdl(siteiCd, serviceFormBean, "2");
			X31SDataBeanAccessArray siteiArray = serviceFormBean.getDataBeanArray(I_SHITEI_WAY_LIST);
			X31SDataBeanAccess shitei = siteiArray.getDataBean(0);
			shitei.sendMessageString(I_SHITEI_WAY_INDEX_02, 
										X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(shiteiIndex));

			// 移動元コード
			JDKWebCommon.setData(serviceFormBean, 
									JDKWebCommon.getData(serviceFormBean, S_MV_MT_CD), MV_MT_CD);

			// 移動元プルダウンの選択値を設定
			String mtCd = serviceFormBean.sendMessageString(MV_MT_CD, X31CWebConst.DATABEAN_GET_VALUE);
			int mtIndex = getCodeToIndexForDdl(mtCd, serviceFormBean, "0");
			X31SDataBeanAccessArray motoArray = serviceFormBean.getDataBeanArray(I_MV_LIST);
			X31SDataBeanAccess mvMt = motoArray.getDataBean(0);
			mvMt.sendMessageString(I_MVMT_INDEX_03, 
									X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(mtIndex));

			// 移動元区分
			JDKWebCommon.setData(serviceFormBean, 
									JDKWebCommon.getData(serviceFormBean, S_MV_MT_KBN), MV_MT_KBN);
			// 移動先コード
			JDKWebCommon.setData(serviceFormBean, 
									JDKWebCommon.getData(serviceFormBean, S_MV_SK_CD), MV_SK_CD);

			// 移動先プルダウンの選択値を設定
			String skCd = serviceFormBean.sendMessageString(MV_SK_CD, X31CWebConst.DATABEAN_GET_VALUE);
			int skIndex = getCodeToIndexForDdl(skCd, serviceFormBean, "1");
			X31SDataBeanAccessArray sakiArray = serviceFormBean.getDataBeanArray(I_MV_LIST);
			X31SDataBeanAccess mvSk = sakiArray.getDataBean(0);
			mvSk.sendMessageString(I_MVSK_INDEX_03, 
									X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(skIndex));

			// 移動先区分
			JDKWebCommon.setData(serviceFormBean, 
									JDKWebCommon.getData(serviceFormBean, S_MV_SK_KBN), MV_SK_KBN);

			// メニュー以外からの遷移でエラーメッセージが入っていた場合はfalseで検索ボタン押下処理を呼ぶ
			if (JZMWebCommon.hasMsgList(super.getCommonInfoBean()))
			{
				return searchCommon(false);
			}
			
			// 画面情報を取得
			HashMap<String, Object> screenInfo = JCCWebCommon.getScreenInfo(this, SCREEN_ID_DKW00802);
			if (screenInfo != null)
			{
				// 処理区分
				String procKbn = (String) screenInfo.get(DKW00802SFConst.PROC_KBN);
				if (!CD_INCOMPLETE.equals(procKbn))
				{
					// DKW00804⇒DKW00802⇒DKW00801の遷移時に対象のデータがなくなるのでfalseで検索ボタン押下処理を呼ぶ
					// 検索ボタン押下処理呼出
					return searchCommon(false);
				}
			}
			
			// 検索ボタン押下処理呼出
			return searchCommon(true);
		}

		// 画面遷移処理
		setNextScreen(SCREEN_ID_DKW00801, SCREEN_NAME_DKW00801);

		return true;
	}

	/**
	 * 棚移動承認一覧照会画面の検索ボタンを処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean search() throws Exception
	{
		return searchCommon(false);
	}

	/**
	 * ページングを処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean paging() throws Exception
	{
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		// 初期化
		serviceFormBean.sendMessage(SJI_YMD_STA, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(SJI_YMD_END, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(SHITEI_WAY_CD, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(MV_MT_CD, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(MV_MT_KBN, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(MV_SK_CD, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(MV_SK_KBN, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(PAGING_KEY, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.getDataBeanArray(SHOKAI_LIST).clearArray();

		// 退避データを設定
		serviceFormBean.sendMessageString(SJI_YMD_STA, X31CWebConst.DATABEAN_SET_VALUE, 
											serviceFormBean.sendMessageString(S_SJI_YMD_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		serviceFormBean.sendMessageString(SJI_YMD_END, X31CWebConst.DATABEAN_SET_VALUE, 
											serviceFormBean.sendMessageString(S_SJI_YMD_END_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		serviceFormBean.sendMessageString(SHITEI_WAY_CD, X31CWebConst.DATABEAN_SET_VALUE, 
											serviceFormBean.sendMessageString(S_SHITEI_WAY_CD, X31CWebConst.DATABEAN_GET_VALUE));
		serviceFormBean.sendMessageString(MV_MT_CD, X31CWebConst.DATABEAN_SET_VALUE, 
											serviceFormBean.sendMessageString(S_MV_MT_CD, X31CWebConst.DATABEAN_GET_VALUE));
		serviceFormBean.sendMessageString(MV_MT_KBN, X31CWebConst.DATABEAN_SET_VALUE
				, serviceFormBean.sendMessageString(S_MV_MT_KBN , X31CWebConst.DATABEAN_GET_VALUE));
		serviceFormBean.sendMessageString(MV_SK_CD, X31CWebConst.DATABEAN_SET_VALUE, 
											serviceFormBean.sendMessageString(S_MV_SK_CD, X31CWebConst.DATABEAN_GET_VALUE));
		serviceFormBean.sendMessageString(MV_SK_KBN, X31CWebConst.DATABEAN_SET_VALUE
				, serviceFormBean.sendMessageString(S_MV_SK_KBN , X31CWebConst.DATABEAN_GET_VALUE));

		X31SDataBeanAccess[] paramBean = {serviceFormBean};

		String mvMt = serviceFormBean.sendMessageString(S_MV_MT_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String mvSk = serviceFormBean.sendMessageString(S_MV_SK_CD, X31CWebConst.DATABEAN_GET_VALUE);

		// 機能コードを設定する
		String func_code = null;
		// 移動元・先が指定されていない場合：１
		if (JDKCommonUtil.isNull(mvMt) || JDKCommonUtil.isNull(mvSk))
		{
			func_code = JPCModelConstant.FUNC_CD_1;
		}
		else if (!JDKCommonUtil.isNull(mvMt) && !JDKCommonUtil.isNull(mvSk))
		{
			// 移動元・先が指定済かつ同じ建物の場合：２
			if (mvMt.equals(mvSk))
			{
				func_code = JPCModelConstant.FUNC_CD_2;
			}
			else
			{
				// 移動元・先が指定済かつ建物が異なる場合：３
				func_code = JPCModelConstant.FUNC_CD_3;
			}
		}

		// サービスの呼び出しを行う
		putServiceDKSV0004(paramBean, func_code, false);

		// 行番号を設定
		serviceFormBean.sendMessageString(ROW_NO, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 一覧表の表示設定を行う
		setList(paramBean[0], serviceFormBean);

		// 検索有無フラグを設定
		if (!"0".equals(serviceFormBean.sendMessageString(DISP_COUNT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			serviceFormBean.sendMessageString(SEARCH_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		else
		{
			serviceFormBean.sendMessageString(SEARCH_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}

		// 画面遷移処理
		setNextScreen(SCREEN_ID_DKW00801, SCREEN_NAME_DKW00801);

		return true;
	}

	/**
	 * 棚移動承認一覧照会画面の詳細ボタンを処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	public boolean showDetail() throws Exception
	{
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		X31SDataBeanAccessArray shokaiList = serviceFormBean.getDataBeanArray(SHOKAI_LIST);
		int idx = Integer.parseInt(JDKWebCommon.getData(serviceFormBean, ROW_NO));
		X31SDataBeanAccess subbean = shokaiList.getDataBean(idx);

		// 画面情報を設定
		HashMap dataMap = new HashMap();
		// 棚移動ロット番号（表示用）
		dataMap.put(DKW00802SFConst.DISP_SHELF_MOVE_LOT_NO, 
					subbean.sendMessageString(L_SHELF_MOVE_LOT_NO_04, X31CWebConst.DATABEAN_GET_VALUE));
		// 棚移動ロット番号
		dataMap.put(DKW00802SFConst.KEY_SHELF_MOVE_LOT_NO, 
					subbean.sendMessageString(L_SHELF_MOVE_LOT_NO_04, X31CWebConst.DATABEAN_GET_VALUE));
		// 処理区分=処理未完了（指示内容CSVボタン表示制御）
		dataMap.put(DKW00802SFConst.PROC_KBN, CD_INCOMPLETE);

		// 画面情報を設定
		JCCWebCommon.setScreenInfo(this, SCREEN_ID_DKW00802, dataMap);

		X31SWebLog.DEBUG_LOG.debug("引き継ぎ情報Mapの内容：");
		X31SWebLog.DEBUG_LOG.debug(dataMap);

		// 戻る際に必要な情報を設定
		HashMap returnMap = new HashMap();
		// 検索有無フラグ
		returnMap.put(SEARCH_UM_FLG, 
						serviceFormBean.sendMessageString(SEARCH_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		// ページングキー
		returnMap.put(PAGING_KEY, 
						subbean.sendMessageString(L_SHELF_MOVE_LOT_NO_04, X31CWebConst.DATABEAN_GET_VALUE));

		// 検索条件
		returnMap.put(S_SJI_YMD_STA_YMD, 
						serviceFormBean.sendMessageString(S_SJI_YMD_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(S_SJI_YMD_END_YMD, 
						serviceFormBean.sendMessageString(S_SJI_YMD_END_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(S_MV_MT_CD, serviceFormBean.sendMessageString(S_MV_MT_CD, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(S_MV_MT_KBN, serviceFormBean.sendMessageString(S_MV_MT_KBN, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(S_MV_SK_CD, serviceFormBean.sendMessageString(S_MV_SK_CD, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(S_MV_SK_KBN, serviceFormBean.sendMessageString(S_MV_SK_KBN, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(S_SHITEI_WAY_CD, serviceFormBean.sendMessageString(S_SHITEI_WAY_CD, X31CWebConst.DATABEAN_GET_VALUE));

		// 画面情報を設定
		JCCWebCommon.setScreenInfo(this, SCREEN_ID_DKW00801, returnMap);
		JCCWebCommon.setScreenId(this, SCREEN_ID_DKW00802, SCREEN_ID_DKW00801);

		// 画面遷移処理
		setNextScreen(SCREEN_ID_DKW00802, SCREEN_NAME_DKW00802);

		return true;
	}

	/**
	 * 棚移動承認一覧照会画面のクリアボタンを処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean clear() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		// 指示日（ＦＲＯＭ）をクリア
		X31SDataBeanAccessArray sjiStaArray = serviceFormBean.getDataBeanArray(I_SJI_YMD_STA);
		X31SDataBeanAccess sjiSta = sjiStaArray.getDataBean(0);
		sjiSta.sendMessage(YEAR_01, X31CWebConst.DATABEAN_CLEAR);
		sjiSta.sendMessage(MON_01, X31CWebConst.DATABEAN_CLEAR);
		sjiSta.sendMessage(DAY_01, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(SJI_YMD_STA, X31CWebConst.DATABEAN_CLEAR);

		// 指示日（ＴＯ）をクリア
		X31SDataBeanAccessArray sjiEndArray = serviceFormBean.getDataBeanArray(I_SJI_YMD_END);
		X31SDataBeanAccess sjiEnd = sjiEndArray.getDataBean(0);
		sjiEnd.sendMessage(YEAR_01, X31CWebConst.DATABEAN_CLEAR);
		sjiEnd.sendMessage(MON_01, X31CWebConst.DATABEAN_CLEAR);
		sjiEnd.sendMessage(DAY_01, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(SJI_YMD_END, X31CWebConst.DATABEAN_CLEAR);

		// 指定方法リストをクリア
		X31SDataBeanAccessArray shiteiArray = serviceFormBean.getDataBeanArray(I_SHITEI_WAY_LIST);
		X31SDataBeanAccess sIndex = shiteiArray.getDataBean(0);
		sIndex.sendMessage(I_SHITEI_WAY_INDEX_02, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(SHITEI_WAY_CD, X31CWebConst.DATABEAN_CLEAR);

		// 移動元リストをクリア
		X31SDataBeanAccessArray mtArray = serviceFormBean.getDataBeanArray(I_MV_LIST);
		X31SDataBeanAccess mtIndex = mtArray.getDataBean(0);
		mtIndex.sendMessage(I_MVMT_INDEX_03, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(MV_MT_CD, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(MV_MT_KBN, X31CWebConst.DATABEAN_CLEAR);

		// 移動先リストをクリア
		X31SDataBeanAccessArray skArray = serviceFormBean.getDataBeanArray(I_MV_LIST);
		X31SDataBeanAccess skIndex = skArray.getDataBean(0);
		skIndex.sendMessage(I_MVSK_INDEX_03, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(MV_SK_CD, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(MV_SK_KBN, X31CWebConst.DATABEAN_CLEAR);

		// 検索用指示日（ＦＲＯＭ）をクリア
		serviceFormBean.sendMessage(S_SJI_YMD_STA_YMD, X31CWebConst.DATABEAN_CLEAR);
		// 検索用指示日（ＴＯ）をクリア
		serviceFormBean.sendMessage(S_SJI_YMD_END_YMD, X31CWebConst.DATABEAN_CLEAR);
		// 検索用指定方法コードをクリア
		serviceFormBean.sendMessage(S_SHITEI_WAY_CD, X31CWebConst.DATABEAN_CLEAR);
		// 検索用移動元コードをクリア
		serviceFormBean.sendMessage(S_MV_MT_CD, X31CWebConst.DATABEAN_CLEAR);
		// 検索用移動元区分をクリア
		serviceFormBean.sendMessage(S_MV_MT_KBN, X31CWebConst.DATABEAN_CLEAR);
		// 検索用移動先コードをクリア
		serviceFormBean.sendMessage(S_MV_SK_CD, X31CWebConst.DATABEAN_CLEAR);
		// 検索用移動先区分をクリア
		serviceFormBean.sendMessage(S_MV_SK_KBN, X31CWebConst.DATABEAN_CLEAR);

		// 棚移動承認一覧照会明細リストをクリア
		serviceFormBean.getDataBeanArray(SHOKAI_LIST).clearArray();

		// 行番号をクリア
		serviceFormBean.sendMessage(ROW_NO, X31CWebConst.DATABEAN_CLEAR);

		// 一覧表示件数をクリア
		serviceFormBean.sendMessageString(DISP_COUNT, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// ページング情報をクリア
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW00801);

		// 遷移先画面IDを設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, 
											X31CWebConst.DATABEAN_SET_VALUE, SCREEN_ID_DKW00801);

		// 検索有無フラグを設定
		serviceFormBean.sendMessageString(SEARCH_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");

		return true;
	}

	/**
	 * 検索処理
	 * <br>
	 * @param transBack 詳細画面戻るボタン押下による遷移:true 以外:false
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean searchCommon(boolean transBack) throws Exception
	{
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		serviceFormBean.getDataBeanArray(SHOKAI_LIST).clearArray();
		if (!transBack)
		{
			// ページング情報を初期化
			JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW00801);
			// ページングキーを初期化
			serviceFormBean.sendMessage(PAGING_KEY, X31CWebConst.DATABEAN_CLEAR);
			// 行番号を初期化
			serviceFormBean.sendMessage(ROW_NO, X31CWebConst.DATABEAN_CLEAR);
		}

		String bkSjiYMDSta = null;		// 指示開始日
		String bkSjiYMDEnd = null;		// 指示終了日
		String bkShiteiWay = null;		// 指定方法
		String bkMvMtCd = null;			// 移動元コード
		String bkMvMtKbn = null;		// 移動元区分
		String bkMvSkCd = null;			// 移動先コード
		String bkMvSkKbn = null;		// 移動先区分
		String func_code = JPCModelConstant.FUNC_CD_1;	// 機能コード

		// 初期化
		// 一覧表示件数
		serviceFormBean.sendMessageString(DISP_COUNT, X31CWebConst.DATABEAN_SET_VALUE, "0");
		// 指示開始日
		serviceFormBean.sendMessage(SJI_YMD_STA, X31CWebConst.DATABEAN_CLEAR);
		// 指示終了日
		serviceFormBean.sendMessage(SJI_YMD_END, X31CWebConst.DATABEAN_CLEAR);
		// 指定方法
		serviceFormBean.sendMessage(SHITEI_WAY_CD, X31CWebConst.DATABEAN_CLEAR);
		// 移動元コード
		serviceFormBean.sendMessage(MV_MT_CD, X31CWebConst.DATABEAN_CLEAR);
		// 移動元区分
		serviceFormBean.sendMessage(MV_MT_KBN, X31CWebConst.DATABEAN_CLEAR);
		// 移動先コード
		serviceFormBean.sendMessage(MV_SK_CD, X31CWebConst.DATABEAN_CLEAR);
		// 移動先区分
		serviceFormBean.sendMessage(MV_SK_KBN, X31CWebConst.DATABEAN_CLEAR);

		// 検索時指示開始日
		serviceFormBean.sendMessage(S_SJI_YMD_STA_YMD, X31CWebConst.DATABEAN_CLEAR);
		// 検索時指示終了日
		serviceFormBean.sendMessage(S_SJI_YMD_END_YMD, X31CWebConst.DATABEAN_CLEAR);
		// 検索時指定方法
		serviceFormBean.sendMessage(S_SHITEI_WAY_CD, X31CWebConst.DATABEAN_CLEAR);
		// 検索時移動元コード
		serviceFormBean.sendMessage(S_MV_MT_CD, X31CWebConst.DATABEAN_CLEAR);
		// 検索時移動元区分
		serviceFormBean.sendMessage(S_MV_MT_KBN, X31CWebConst.DATABEAN_CLEAR);
		// 検索時移動先コード
		serviceFormBean.sendMessage(S_MV_SK_CD, X31CWebConst.DATABEAN_CLEAR);
		// 検索時移動先区分
		serviceFormBean.sendMessage(S_MV_SK_KBN, X31CWebConst.DATABEAN_CLEAR);
		
		// 検索用移動元コードを設定
		X31SDataBeanAccessArray mvMtArray = serviceFormBean.getDataBeanArray(I_MV_LIST);
		String mtIndex = 
			mvMtArray.getDataBean(0).sendMessageString(I_MVMT_INDEX_03, X31CWebConst.DATABEAN_GET_VALUE);
		bkMvMtCd = getIndexToCodeForDdl(Integer.valueOf(mtIndex), serviceFormBean, I_MV_LIST, I_TTM_CD_LIST_03);
		serviceFormBean.sendMessageString(MV_MT_CD, X31CWebConst.DATABEAN_SET_VALUE, bkMvMtCd);
		// 移動元建物区分の設定
		bkMvMtKbn = getIndexToCodeForDdl(Integer.valueOf(mtIndex), serviceFormBean, I_MV_LIST, I_TTM_KBN_LIST_03);
		serviceFormBean.sendMessageString(MV_MT_KBN, X31CWebConst.DATABEAN_SET_VALUE, bkMvMtKbn);

		// 検索用移動先コードを設定
		X31SDataBeanAccessArray mvSkArray = serviceFormBean.getDataBeanArray(I_MV_LIST);
		String skIndex = 
			mvSkArray.getDataBean(0).sendMessageString(I_MVSK_INDEX_03, X31CWebConst.DATABEAN_GET_VALUE);
		bkMvSkCd = getIndexToCodeForDdl(Integer.valueOf(skIndex), serviceFormBean, I_MV_LIST, I_TTM_CD_LIST_03);
		serviceFormBean.sendMessageString(MV_SK_CD, X31CWebConst.DATABEAN_SET_VALUE, bkMvSkCd);

		// 移動先建物区分の設定
		bkMvSkKbn = getIndexToCodeForDdl(Integer.valueOf(skIndex), serviceFormBean, I_MV_LIST, I_TTM_KBN_LIST_03);
		serviceFormBean.sendMessageString(MV_SK_KBN, X31CWebConst.DATABEAN_SET_VALUE, bkMvSkKbn);

		// 検索用指定方法コードを設定
		X31SDataBeanAccessArray shiteiArray = serviceFormBean.getDataBeanArray(I_SHITEI_WAY_LIST);
		String shiteiIndex =
			shiteiArray.getDataBean(0).sendMessageString(I_SHITEI_WAY_INDEX_02, X31CWebConst.DATABEAN_GET_VALUE);
		bkShiteiWay = getIndexToCodeForDdl(Integer.valueOf(shiteiIndex), serviceFormBean, I_SHITEI_WAY_LIST, I_SHITEI_WAY_CD_LIST_02);
		serviceFormBean.sendMessageString(SHITEI_WAY_CD, X31CWebConst.DATABEAN_SET_VALUE, bkShiteiWay);

		// 指示日（ＦＲＯＭ）に日付を設定する
		X31SDataBeanAccessArray sjiStaArray = serviceFormBean.getDataBeanArray(I_SJI_YMD_STA);
		X31SDataBeanAccess sjiSta = sjiStaArray.getDataBean(0);
		// 年を取得
		String fromYear = sjiSta.sendMessageString(YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 月を取得
		String fromMon = sjiSta.sendMessageString(MON_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 日を取得
		String fromDay = sjiSta.sendMessageString(DAY_01, X31CWebConst.DATABEAN_GET_VALUE);

		if (!JDKCommonUtil.isNull(fromYear) || !JDKCommonUtil.isNull(fromMon) || !JDKCommonUtil.isNull(fromDay))
		{
			bkSjiYMDSta = fromYear + fromMon + fromDay;
		}
		// 検索用指示開始日を設定
		serviceFormBean.sendMessageString(SJI_YMD_STA, X31CWebConst.DATABEAN_SET_VALUE, bkSjiYMDSta);

		// 指示日（ＴＯ）に日付を設定する
		X31SDataBeanAccessArray sjiEndArray = serviceFormBean.getDataBeanArray(I_SJI_YMD_END);
		X31SDataBeanAccess sjiEnd = sjiEndArray.getDataBean(0);
		// 年を取得
		String toYear = sjiEnd.sendMessageString(YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 月を取得
		String toMon = sjiEnd.sendMessageString(MON_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 日を取得
		String toDay = sjiEnd.sendMessageString(DAY_01, X31CWebConst.DATABEAN_GET_VALUE);

		if (!JDKCommonUtil.isNull(toYear) || !JDKCommonUtil.isNull(toMon) || !JDKCommonUtil.isNull(toDay))
		{
			bkSjiYMDEnd = toYear + toMon + toDay;
		}
		// 検索用指示終了日を設定
		serviceFormBean.sendMessageString(SJI_YMD_END, X31CWebConst.DATABEAN_SET_VALUE, bkSjiYMDEnd);

		X31SDataBeanAccess[] paramBean = {serviceFormBean};

		// 移動元・先が指定されていない場合：１
		if (JDKCommonUtil.isNull(bkMvMtCd) || JDKCommonUtil.isNull(bkMvSkCd))
		{
			func_code = JPCModelConstant.FUNC_CD_1;
		}
		else if (!JDKCommonUtil.isNull(bkMvMtCd) && !JDKCommonUtil.isNull(bkMvSkCd))
		{
			// 移動元・先が指定済かつ同じ建物の場合：２
			if (bkMvMtCd.equals(bkMvSkCd))
			{
				func_code = JPCModelConstant.FUNC_CD_2;
			}
			else
			{
				// 移動元・先が指定済かつ建物が異なる場合：３
				func_code = JPCModelConstant.FUNC_CD_3;
			}
		}

		// サービスの呼び出しを行う
		putServiceDKSV0004(paramBean, func_code, transBack);

		// 行番号を設定
		String rowNo = serviceFormBean.sendMessageString(ROW_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (JDKCommonUtil.isNull(rowNo))
		{
			serviceFormBean.sendMessageString(ROW_NO, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}

		// 一覧表の表示設定を行う
		setList(paramBean[0], serviceFormBean);

		String flg = null;

		// 検索有無フラグを設定
		if (!"0".equals(serviceFormBean.sendMessageString(DISP_COUNT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			flg = "1";
		}
		else
		{
			flg = "0";
		}
		serviceFormBean.sendMessageString(SEARCH_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, flg);

		// 画面遷移処理
		setNextScreen(SCREEN_ID_DKW00801, SCREEN_NAME_DKW00801);

		// 検索時項目にデータを格納
		serviceFormBean.sendMessageString(S_MV_MT_CD, X31CWebConst.DATABEAN_SET_VALUE, bkMvMtCd);
		serviceFormBean.sendMessageString(S_MV_MT_KBN, X31CWebConst.DATABEAN_SET_VALUE, bkMvMtKbn);
		serviceFormBean.sendMessageString(S_MV_SK_CD, X31CWebConst.DATABEAN_SET_VALUE, bkMvSkCd);
		serviceFormBean.sendMessageString(S_MV_SK_KBN, X31CWebConst.DATABEAN_SET_VALUE, bkMvSkKbn);
		serviceFormBean.sendMessageString(S_SHITEI_WAY_CD, X31CWebConst.DATABEAN_SET_VALUE, bkShiteiWay);
		serviceFormBean.sendMessageString(S_SJI_YMD_STA_YMD, X31CWebConst.DATABEAN_SET_VALUE, bkSjiYMDSta);
		serviceFormBean.sendMessageString(S_SJI_YMD_END_YMD, X31CWebConst.DATABEAN_SET_VALUE, bkSjiYMDEnd);

		return true;
	}

	/**
	 * 一覧表の表示設定を行います。
	 * <br>
	 * @param paramBean 設定する一覧のBean情報
	 * @param serviceFormBean 設定する画面のServiceFormBean
	 * @throws UnsupportedEncodingException 例外
	 */
	private void setList(X31SDataBeanAccess paramBean, X31SDataBeanAccess serviceFormBean) throws UnsupportedEncodingException
	{
		X31SDataBeanAccessArray shokaiList = paramBean.getDataBeanArray(SHOKAI_LIST);

		for (int i = 0; i < shokaiList.getCount(); i++)
		{
			X31SDataBeanAccess subbean = shokaiList.getDataBean(i);
			// 背景色の設定
			if (i % 2 == 1)
			{
				subbean.sendMessageString(L_COLOR_04, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}
			else
			{
				subbean.sendMessageString(L_COLOR_04, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			}

			// 項番の設定
			subbean.sendMessageString(L_NO_04, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i + 1));

			// ツールチップの設定
			// 指示者 7桁
			String sjisyaNm = subbean.sendMessageString(L_SJISHA_04, X31CWebConst.DATABEAN_GET_VALUE);
			subbean.sendMessageString(L_SJISHA_04, X31CWebConst.DATABEAN_SET_VALUE, 
										JDKWebCommon.substr(sjisyaNm, 0, 7));
			subbean.sendMessageString(L_SJISHA_DISP_04, 
										X31CWebConst.DATABEAN_SET_VALUE, sjisyaNm);

			// 移動元 9桁
			String mtSoko = "";
			String mtSokoNm = subbean.sendMessageString(L_MV_MT_SOKO_NM_04, X31CWebConst.DATABEAN_GET_VALUE);
			String mtKojiNm = subbean.sendMessageString(L_MV_MT_KOJI_NM_04, X31CWebConst.DATABEAN_GET_VALUE);
			String mtOfficeNm = subbean.sendMessageString(L_MV_MT_OFFICE_NM_04, X31CWebConst.DATABEAN_GET_VALUE);
			// 存在する名称をツールチップ・名称に設定する
			if (!JDKCommonUtil.isNull(mtSokoNm))
			{
				mtSoko = mtSokoNm;
			}
			else if (!JDKCommonUtil.isNull(mtKojiNm))
			{
				mtSoko = mtKojiNm;
			}
			else if (!JDKCommonUtil.isNull(mtOfficeNm))
			{
				mtSoko = mtOfficeNm;
			}
			subbean.sendMessageString(L_MV_MT_NM_04, X31CWebConst.DATABEAN_SET_VALUE, 
										JDKWebCommon.substr(mtSoko, 0, 9));
			subbean.sendMessageString(L_MV_MT_NM_DISP_04, 
										X31CWebConst.DATABEAN_SET_VALUE, mtSoko);

			// 移動先 9桁
			String skSoko = "";
			String skSokoNm = subbean.sendMessageString(L_MV_SK_SOKO_NM_04, X31CWebConst.DATABEAN_GET_VALUE);
			String skKojiNm = subbean.sendMessageString(L_MV_SK_KOJI_NM_04, X31CWebConst.DATABEAN_GET_VALUE);
			String skOfficeNm = subbean.sendMessageString(L_MV_SK_OFFICE_NM_04, X31CWebConst.DATABEAN_GET_VALUE);
			// 存在する名称をツールチップに設定する
			if (!JDKCommonUtil.isNull(skSokoNm))
			{
				skSoko = skSokoNm;
			}
			else if (!JDKCommonUtil.isNull(skKojiNm))
			{
				skSoko = skKojiNm;
			}
			else if (!JDKCommonUtil.isNull(skOfficeNm))
			{
				skSoko = skOfficeNm;
			}
			subbean.sendMessageString(L_MV_SK_NM_04, X31CWebConst.DATABEAN_SET_VALUE, 
										JDKWebCommon.substr(skSoko, 0, 9));
			subbean.sendMessageString(L_MV_SK_NM_DISP_04, 
										X31CWebConst.DATABEAN_SET_VALUE, skSoko);
		}
		// 一覧表示件数を設定する
		serviceFormBean.sendMessageString(DISP_COUNT, X31CWebConst.DATABEAN_SET_VALUE, 
											String.valueOf(shokaiList.getCount()));
	}

	/**
	 * サービス（DKSV0004）の呼び出しを行います。
	 * <br>
	 * @param paramBean パラメータとなるBean情報
	 * @param func_code 機能コード
	 * @param transBack 詳細画面戻るボタン押下による遷移:true 以外:false
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	private void putServiceDKSV0004(X31SDataBeanAccess[] paramBean, String func_code, boolean transBack) throws Exception
	{
		// ユースケースID格納用マップを生成
		HashMap<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0004");

		// マッピングクラスのインスタンスを生成
		DKSV0004_DKSV0004OPDBMapper mapper = new DKSV0004_DKSV0004OPDBMapper();

		HashMap<String, String> dataMap = new HashMap<String, String>();
		mapper.setDKSV000401SC(paramBean, dataMap, func_code);

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "DKSV000401SC", dataMap);

		// 検索結果格納用マップ
		HashMap outputMap = new HashMap<String, String>();

		// 検索処理呼出
		invokeService(paramMap, dataMap, outputMap);

		((X31SDataBeanAccessArray)paramBean[0].getDataBeanArray(SHOKAI_LIST)).clearArray();

		mapper.getDKSV000401SC(paramBean, outputMap);

		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("DKSV000401SC", outputMap);

		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			// 検索結果が0件の場合の処理
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I);
			return;
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			// 検索結果が最大検索件数超えの場合の処理
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0340__I, 
										new String [] {SHOW_MAX_COUNT});
			return;
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			// 表示ページに該当するデータがない
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0350__I);
		}

		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this,  "0", "DKSV000401SC", outputMap);

		// 詳細画面より遷移時、一覧データに変更があった場合、行番号を再設定する
		// 処理完了後は選択したデータが存在しないため行番号を0に設定する
		if (transBack)
		{
			String displayPageNum = (String)((HashMap)outputMap.get("DKSV000401SC")).get("display_no");
			if (!JDKCommonUtil.isNull(displayPageNum))
			{
				X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
				serviceFormBean.sendMessageString(ROW_NO, X31CWebConst.DATABEAN_SET_VALUE, displayPageNum);
			}
		}

		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, L_PAG_LIST);
	}

	/**
	 * 画面遷移先を設定します。
	 * <br>
	 * @param nextScreenId 遷移先画面ID
	 * @param nextScreenName 遷移先画面名
	 */
	private void setNextScreen(String nextScreenId, String nextScreenName)
	{
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, 
											X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, 
											X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);
	}
	
	/**
	 * インデックスを引数にプルダウンからコードを取得します。
	 * @param index インデックス
	 * @param serviceFormBean サービスフォームビーン
	 * @param pullDownList プルダウンリスト情報
	 * @return 取得したい値のが入っているリスト
	 */
	private String getIndexToCodeForDdl(int index, X31SDataBeanAccess serviceFormBean, String pullDownList, String targetList)
	{
		String retCode = null;

		X31SDataBeanAccessArray accessArray = serviceFormBean.getDataBeanArray(pullDownList);
		X31SDataBeanAccess subbean = accessArray.getDataBean(0);
		retCode = subbean.sendMessageString(targetList, X31CWebConst.DATABEAN_GET_VALUE, index);

		return retCode;
	}

	/**
	 * コードを引数にプルダウンからインデックスを取得します。
	 * @param code 状態コード
	 * @param serviceFormBean サービスフォームビーン
	 * @param judgeCd 判定コード（"0"：移動元、"1"：移動先、"2"：指定方法）
	 * @return 取得したインデックス
	 */
	private int getCodeToIndexForDdl(String code, X31SDataBeanAccess serviceFormBean, String judgeCd)
	{
		int retIndex = 0;

		// 移動元
		if ("0".equals(judgeCd))
		{
			X31SDataBeanAccessArray mvMtArray = serviceFormBean.getDataBeanArray(I_MV_LIST);
			X31SDataBeanAccess mvMt = mvMtArray.getDataBean(0);

			for (int i = 0; i < Integer.valueOf(mvMt.sendMessage(I_TTM_CD_LIST_03, X31CWebConst.DATABEAN_GET_COUNT).toString()); i++)
			{
				if (code.equals(mvMt.sendMessageString(I_TTM_CD_LIST_03, X31CWebConst.DATABEAN_GET_VALUE, i)))
				{
					retIndex = i;
					break;
				}
			}
		}
		else if ("1".equals(judgeCd))
		{
			// 移動先
			X31SDataBeanAccessArray mvSkArray = serviceFormBean.getDataBeanArray(I_MV_LIST);
			X31SDataBeanAccess mvSk = mvSkArray.getDataBean(0);

			for (int i = 0; i < Integer.valueOf(mvSk.sendMessage(I_TTM_CD_LIST_03, X31CWebConst.DATABEAN_GET_COUNT).toString()); i++)
			{
				if (code.equals(mvSk.sendMessageString(I_TTM_CD_LIST_03, X31CWebConst.DATABEAN_GET_VALUE, i)))
				{
					retIndex = i;
					break;
				}
			}
		}
		else if ("2".equals(judgeCd))
		{
			// 指定方法
			X31SDataBeanAccessArray shiteiArray = serviceFormBean.getDataBeanArray(I_SHITEI_WAY_LIST);
			X31SDataBeanAccess shiteiWay = shiteiArray.getDataBean(0);

			int listSize = Integer.valueOf(shiteiWay.sendMessage(I_SHITEI_WAY_CD_LIST_02, 
																	X31CWebConst.DATABEAN_GET_COUNT).toString());
			for (int i = 0; i < listSize; i++)
			{
				if (code.equals(shiteiWay.sendMessageString(I_SHITEI_WAY_CD_LIST_02, X31CWebConst.DATABEAN_GET_VALUE, i)))
				{
					retIndex = i;
					break;
				}
			}
		}
		return retIndex;
	}

	/**
	 * プルダウンの０番目の項目に空白を挿入します。
	 * @param pulldown プルダウンを指す項目ID
	 * @param cdList プルダウン中でコード一覧をさす項目ID
	 * @param nmList プルダウン中で名称一覧をさす項目ID
	 */
	private void pushEmptyToTopOfPulldown(String pulldown, String cdList, String nmList)
	{
		X31SDataBeanAccess pulldownBean = 
			super.getServiceFormBean().getDataBeanArray(pulldown).getDataBean(0);

		appendPrefix(getBean(this, pulldown), nmList);

		slideArrayOnDatabean(pulldownBean, cdList);
		slideArrayOnDatabean(pulldownBean, nmList);
	}
	
	/**
	 * プルダウンの０番目の項目に空白を挿入します。
	 * @param pulldown プルダウンを指す項目ID
	 * @param cdList プルダウン中でコード一覧をさす項目ID
	 * @param nmList プルダウン中で名称一覧をさす項目ID
	 */
	private void pushEmptyToTopOfPulldown(String pulldown, String cdList, String nmList, String kbnList)
	{
		X31SDataBeanAccess pulldownBean = 
			super.getServiceFormBean().getDataBeanArray(pulldown).getDataBean(0);

		appendPrefix(getBean(this, pulldown), nmList);

		slideArrayOnDatabean(pulldownBean, cdList);
		slideArrayOnDatabean(pulldownBean, nmList);
		slideArrayOnDatabean(pulldownBean, kbnList);
	}

	/**
	 * データビーンの配列要素をインデックスが増加する方向に１つずらす
	 * @param bean データビーン
	 * @param listName 対象項目ID
	 */
	private void slideArrayOnDatabean(X31SDataBeanAccess bean, String listName)
	{
		int size = (Integer)(bean.sendMessage(listName, X31CWebConst.DATABEAN_GET_COUNT));

		bean.sendMessageString(listName, X31CWebConst.DATABEAN_ADD_VALUE, "");

		for (int i = size ; i > 0 ; i--)
		{
			String target = 
				bean.sendMessageString(listName, X31CWebConst.DATABEAN_GET_VALUE, i - 1);
			bean.sendMessageString(listName, X31CWebConst.DATABEAN_SET_VALUE, i, target);
		}

		bean.sendMessageString(listName, X31CWebConst.DATABEAN_SET_VALUE, 0, "");
	}
}
