/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：物流管理システム
*   ソースファイル名：DKW00401SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年08月09日
*＜機能概要＞
*   Ver登録画面を処理するロジッククラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/08/09   FJ          新規作成
*
**********************************************************************/
package eo.web.webview.DKW02801SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;
import static eo.common.constant.JDKStrConst.DOUBLE_QUAT;
import static eo.common.constant.JPCModelConstant.FUNC_CD_1;
import static eo.common.constant.JPCModelConstant.FUNC_CD_2;
import static eo.common.constant.JPCOnlineMessageConstant.EKB0300_KW;
import static eo.common.constant.JPCOnlineMessageConstant.EKB0370__I;
import static eo.common.constant.JPCOnlineMessageConstant.EKB0380__I;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.B_FIX_CLS;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_ADRTTM;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_ADRTTM_CD_02;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_ADRTTM_CD_LIST_02;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_ADRTTM_INDEX_02;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_ADRTTM_NM_02;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_ADRTTM_NM_LIST_02;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_CD_CD_01;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_CD_CD_LIST_01;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_CD_INDEX_01;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_CD_NM_01;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_CD_NM_LIST_01;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_CHSHT_WAY;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_MDL;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_MDL_CD_03;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_MDL_CD_LIST_03;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_MDL_INDEX_03;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_MDL_NM_03;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_MDL_NM_LIST_03;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_SEIZO_NO_FROM;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_SEIZO_NO_TO;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_SHELF;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_VER;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_VER_FROM;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.I_VER_TO;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.L_COLOR_04;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.L_NO_04;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.L_RSLT_ADRTTM_NM_04;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.L_RSLT_ADRTTM_NM_DISP_04;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.L_RSLT_TAKNKIKI_MODEL_NM_04;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.L_RSLT_TAKNKIKI_MODEL_NM_DISP_04;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.SCREEN_MODE;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.SEARCH_ADRTTM_CD;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.SEARCH_MODEL_LIST;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.SEARCH_MODEL_NO;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.SEARCH_RSLT_LIST;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.SEARCH_SEIZO_LIST;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.SEARCH_SEIZO_NO_FROM;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.SEARCH_SEIZO_NO_TO;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.SEARCH_SHELF_DIV;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.SEARCH_VER_FROM;
import static eo.web.webview.DKW02801SF.DKW02801SFConst.SEARCH_VER_TO;
import static eo.web.webview.common.JDKScreenConst.SCREEN_ID_DKW02801;
import static eo.web.webview.common.JDKScreenConst.SCREEN_ID_DKW02802;
import static eo.web.webview.common.JDKScreenConst.SCREEN_ID_DKW02803;
import static eo.web.webview.common.JDKScreenConst.SCREEN_ID_DKW02804;
import static eo.web.webview.common.JDKScreenConst.SCREEN_NAME_DKW02801;
import static eo.web.webview.common.JDKScreenConst.SCREEN_NAME_DKW02802;
import static eo.web.webview.common.JDKScreenConst.SCREEN_NAME_DKW02803;
import static eo.web.webview.common.JDKScreenConst.SCREEN_NAME_DKW02804;
import static eo.web.webview.common.JDKWebCommon.appendPrefix;
import static eo.web.webview.common.JDKWebCommon.clearPullDown;
import static eo.web.webview.common.JDKWebCommon.getBean;
import static eo.web.webview.common.JDKWebCommon.getData;
import static eo.web.webview.common.JDKWebCommon.setData;
import static eo.web.webview.common.JDKWebCommon.storePullDown;
import static eo.web.webview.common.JDKWebCommon.substr;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JDKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JDKCommonUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.mapping.DKSV0100_DKSV0100OPDBMapper;
import eo.web.webview.mapping.DKSV0101_DKSV0101OPDBMapper;
import eo.web.webview.mapping.DKSV0102_DKSV0102OPDBMapper;
import eo.web.webview.mapping.DKSV0103_DKSV0103OPDBMapper;


/**
 * Ver登録画面を処理するロジッククラスです。
 * @author 富士通
 */
public class DKW02801SFLogic extends JCCWebBusinessLogic
{
	/** シリアル番号 */
	private static final long serialVersionUID = 1L;

	/**
	 * ページング関連（表示ページ番号）
	 */
	private static final String DISPLAY_PAGE_NUM = "display_page_num";

	/**
	 * 検索件数取得キー（表示件数）
	 */
	private static final String DKW02801_ROW_PER_PAGE = "DKW02801_ROW_PER_PAGE";

	/** ファイル読込失敗 */
	private static final String FILE_ERROR = "fileError";
	
	// サービス
	/** 一覧検索サービス(検索用) */
	private static final String CC_SEARCH_MODE = "DKSV010101CC";
	/** 一覧検索サービス(ファイル読込用) */
	private static final String CC_FILE_MODE = "DKSV010201CC";

	// 画面モード
	/** 検索機能 */
	private static final long SEARCH_MODE = 0;
	/** 一覧機能 */
	private static final long SEARCH_RESULT_MODE = 1;

	// 抽出方法
	/** 検索モード */
	private static final String CHSHT_WAY_SEARCH_MODE = "1";
	/** ファイル読込モード */
	private static final String CHSHT_WAY_FILE_MODE = "2";

	/** 抽出方法 */
	private static final Map<String, String> CHSHT_WAY_MAP;
	static
	{
		CHSHT_WAY_MAP = new LinkedHashMap<String, String>();
		CHSHT_WAY_MAP.put(CHSHT_WAY_SEARCH_MODE, "01.検索条件");
		CHSHT_WAY_MAP.put(CHSHT_WAY_FILE_MODE, "02.ファイル読込");
	}
	
	/** メッセージ */
	private static final String MSG_TOROKU = "Ver登録";

	/** 画面IDとページの紐付け */
	private static final Map<String, String> PAGING_MAP;
	static 
	{
		PAGING_MAP = new HashMap<String, String>();
		PAGING_MAP.put(SCREEN_ID_DKW02801, "L_PAG");
		PAGING_MAP.put(SCREEN_ID_DKW02802, "L_PAG_FIX");
		PAGING_MAP.put(SCREEN_ID_DKW02803, "L_PAG_COMPLETE");
	}

	/** 検索結果一覧情報のセッションキー */
	private static final String SCREEN_ID_KEY = "SCREEN_ID";
	
	/** 読込ファイル情報リストを取得する際のキー */
	private static final String SESSION_KEY_READ_FILE_INFO = "readFileInfoKey";
	
	/** 建物情報のセッションキー */
	private static final String SOKO_ID_KEY = "SOKO_ID";
	
	/** 棚情報のセッションキー */
	private static final String SHELF_ID_KEY = "SHELF_ID";
	
	/**
	 * 未押下状態
	 */
	private static final String CTRL_ENABLE = "0";

	/**
	 * 押下状態
	 */
	private static final String CTRL_DISABLE = "1";
	
	
	/**
	 * 初期化処理を行います。
	 * @return 処理実行結果
	 */
	public boolean init() throws Exception
	{
		setNextScreen(SCREEN_ID_DKW02801, SCREEN_NAME_DKW02801);
		setScreenMode(SEARCH_MODE);
		makeChshtWayPullDown();
		return true;
	}

	/**
	 * Ver登録画面の確定ボタンを処理します。
	 * @return 処理実行結果
	 */
	public boolean fix()
	{
		storePullDown(this, I_CHSHT_WAY, I_CD_INDEX_01, I_CD_CD_01, I_CD_NM_01, I_CD_CD_LIST_01, I_CD_NM_LIST_01);
		if (isChshtWaySearchMode())
		{
			searchPulldownData();
		}
		// 確定ボタン押下状態を「1:押下状態」に変更
		setData(this, CTRL_DISABLE, B_FIX_CLS);
		setScreenMode(SEARCH_MODE);
		return true;
	}

	/**
	 * Ver登録画面の検索ボタンを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean search() throws Exception 
	{
		// 結果が表示された状態で再度データ検索ボタン押下された際、システムエラーとなることへの対応
		setScreenMode(SEARCH_MODE);
		
		storeSearchCondition();
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW02801);

		setData(this, new Long(0), I_CHSHT_WAY, I_CD_INDEX_01);
		storePullDown(this, I_CHSHT_WAY, I_CD_INDEX_01, I_CD_CD_01, I_CD_NM_01, I_CD_CD_LIST_01, I_CD_NM_LIST_01);
		
		boolean gotResults = pageDataSearch(SCREEN_ID_DKW02801);
		setScreenMode(gotResults ? SEARCH_RESULT_MODE : SEARCH_MODE);

		setNextScreen(SCREEN_ID_DKW02801, SCREEN_NAME_DKW02801);
		return true;
	}

	/**
	 * Ver登録画面のファイル読込ボタンを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	public boolean dataLoad() throws Exception
	{
		setData(this, new Long(1), I_CHSHT_WAY, I_CD_INDEX_01);
		storePullDown(this, I_CHSHT_WAY, I_CD_INDEX_01, I_CD_CD_01, I_CD_NM_01, I_CD_CD_LIST_01, I_CD_NM_LIST_01);

		JCCWebCommon.setScreenInfo(this, SCREEN_ID_DKW02804 + "0PJP", new HashMap());
		JCCWebCommon.setScreenId(this, SCREEN_ID_DKW02804 + "0PJP", getGamenId());
		setNextScreen(SCREEN_ID_DKW02804, SCREEN_NAME_DKW02804);
		return true;
	}
	
	/**
	 * Ver読込画面から戻ってきた際の処理を行います。
	 * @return 処理実行結果
	 */
	@SuppressWarnings("unchecked")
	public boolean reflect() throws Exception
	{
		// 結果が表示された状態で再度データ読込ボタン押下された際、エラーが発生すると前回の検索結果が残ることへの対応
		setScreenMode(SEARCH_MODE);
		
		HashMap map = JCCWebCommon.getScreenInfo(this);

		setDataStringArray(SEARCH_MODEL_LIST, (List)map.get(SEARCH_MODEL_LIST));
		setDataStringArray(SEARCH_SEIZO_LIST, (List)map.get(SEARCH_SEIZO_LIST));

		setData(this, new Long(1), I_CHSHT_WAY, I_CD_INDEX_01);
		storePullDown(this, I_CHSHT_WAY, I_CD_INDEX_01, I_CD_CD_01, I_CD_NM_01, I_CD_CD_LIST_01, I_CD_NM_LIST_01);

		boolean gotResults = pageDataSearch(SCREEN_ID_DKW02801);
		setScreenMode(gotResults ? SEARCH_RESULT_MODE : SEARCH_MODE);

		setNextScreen(SCREEN_ID_DKW02801, SCREEN_NAME_DKW02801);
		return true;
	}
	
	/**
	 * Ver登録画面の登録ボタンを処理します。
	 * @return 処理実行結果
	 * @throws Exception
	 */
	public boolean add() throws Exception
	{
		if (isChshtWaySearchMode())
		{
			// 検索ボタン押下時の情報を元に検索条件欄の情報を設定する
			setData(this, getData(this, SEARCH_SEIZO_NO_FROM), I_SEIZO_NO_FROM);
			setData(this, getData(this, SEARCH_SEIZO_NO_TO), I_SEIZO_NO_TO);
			setData(this, getData(this, SEARCH_ADRTTM_CD), I_ADRTTM, I_ADRTTM_CD_02);
			setData(this, getData(this, SEARCH_SHELF_DIV), I_SHELF, I_CD_CD_01);
			setData(this, getData(this, SEARCH_MODEL_NO), I_MDL, I_MDL_CD_03);
			setData(this, getData(this, SEARCH_VER_FROM), I_VER_FROM);
			setData(this, getData(this, SEARCH_VER_TO), I_VER_TO);
			
			setData(this, new Long(0), I_CHSHT_WAY, I_CD_INDEX_01);
			
			// 建物と棚のインデックス情報を設定する
			setData(this , getAdrttmSearchIndex(getData(this, SEARCH_ADRTTM_CD)), I_ADRTTM, I_ADRTTM_INDEX_02);
			setData(this , getShelfSearchIndex(getData(this, SEARCH_SHELF_DIV)), I_SHELF, I_CD_INDEX_01);
			setData(this , getMdlSearchIndex(getData(this, SEARCH_MODEL_NO)), I_MDL, I_MDL_INDEX_03);
		}
		else
		{
			setData(this, new Long(1), I_CHSHT_WAY, I_CD_INDEX_01);
		}
		
		//ページリンク情報のクリア
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW02801);
		return pagingFix();
	}

	/**
	 * Ver登録確認画面の修正ボタンを処理します
	 * @return 処理実行結果
	 * @throws Exception
	 */
	public boolean returnCreate() throws Exception
	{
		//ページリンク情報のクリア
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW02802);
		return paging();
	}
	
	/**
	 * Ver登録確認画面の確定ボタンを処理します。
	 * @return 処理実行結果
	 * @throws Exception
	 */
	public boolean complete() throws Exception
	{
		
		verChangeService(convertChshtWay2FuncCd());
		
		return pagingComplete();
	}
	
	/**
	 * Ver登録完了画面の完了ボタンを処理します
	 * @return 処理実行結果
	 * @throws Exception
	 */
	public boolean fin() throws Exception
	{
		setNextScreen(SCREEN_ID_DKW02801, SCREEN_NAME_DKW02801);
		return clear();
	}
	
	/**
	 * サービスフォームビーンのkeyで指定された変数に配列を設定します。
	 * @param key キー
	 * @param datas 設定データ
	 */
	private void setDataStringArray(String key, List<String> datas)
	{
		X31SDataBeanAccess bean = this.getServiceFormBean();
		bean.sendMessage(key, X31CWebConst.DATABEAN_CLEAR);
		for (String data : datas) 
		{
			bean.sendMessageString(key, X31CWebConst.DATABEAN_ADD_VALUE, data.replace(DOUBLE_QUAT, ""));
		}
	}
	
	/**
	 * Ver登録画面のクリアを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean clear() throws Exception {
		setData(this, "", I_SEIZO_NO_FROM);
		setData(this, "", I_SEIZO_NO_TO);
		setData(this, "", I_VER_FROM);
		setData(this, "", I_VER_TO);
		setData(this, 0L, I_CHSHT_WAY, I_CD_INDEX_01);
		setData(this, 0L, I_ADRTTM, I_ADRTTM_INDEX_02);
		setData(this, 0L, I_SHELF, I_CD_INDEX_01);
		setData(this, 0L, I_MDL, I_MDL_INDEX_03);
		setData(this, "", I_VER);
		
		getServiceFormBean().getDataBeanArray(SEARCH_RSLT_LIST).clearArray();
		
		//セッション情報のクリア
		JCCWebCommon.removeScreenInfo(this, SOKO_ID_KEY);
		JCCWebCommon.removeScreenInfo(this, SHELF_ID_KEY);
		JCCWebCommon.removeScreenInfo(this, SCREEN_ID_KEY);
		JCCWebCommon.removeScreenInfo(this, SESSION_KEY_READ_FILE_INFO);
		//ページリンク情報のクリア
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW02801);
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW02802);
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW02803);
		
		// 確定ボタン押下状態を「0:未押下状態」に変更
		setData(this, CTRL_ENABLE, B_FIX_CLS);
		
		storeSearchCondition();
		return init();
	}
	
	/**
	 * Ver登録画面のページングを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean paging() throws Exception 
	{
		if (isChshtWaySearchMode())
		{
			adjustPageDispData(SCREEN_ID_DKW02801, CC_SEARCH_MODE);
		}
		else
		{
			adjustPageDispData(SCREEN_ID_DKW02801, CC_FILE_MODE);
		}
		setNextScreen(SCREEN_ID_DKW02801, SCREEN_NAME_DKW02801);
		return true;
	}

	/**
	 * Ver登録確認画面のページングを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean pagingFix() throws Exception
	{
		JCCWebCommon.setMessageInfo(this, EKB0370__I, new String [] {MSG_TOROKU});

		if (isChshtWaySearchMode())
		{
			adjustPageDispData(SCREEN_ID_DKW02802, CC_SEARCH_MODE);
		}
		else
		{
			adjustPageDispData(SCREEN_ID_DKW02802, CC_FILE_MODE);
		}
		
		setNextScreen(SCREEN_ID_DKW02802, SCREEN_NAME_DKW02802);

		return true;
	}
	
	/**
	 * Ver登録完了画面のページングを処理します。
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean pagingComplete() throws Exception
	{
		JCCWebCommon.setMessageInfo(this, EKB0380__I, new String [] {MSG_TOROKU});

		if (isChshtWaySearchMode())
		{
			adjustPageDispData(SCREEN_ID_DKW02803, CC_SEARCH_MODE);
		}
		else
		{
			adjustPageDispData(SCREEN_ID_DKW02803, CC_FILE_MODE);
		}

		setNextScreen(SCREEN_ID_DKW02803, SCREEN_NAME_DKW02803);

		return true;
	}

	/**
	 * 検索・データ取込共通処理
	 * @param screenId 画面ID
	 * @return 成否
	 * @throws Exception 例外
	 */
	private boolean pageDataSearch(String screenId) throws Exception
	{
		//ページリンク情報のクリア
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW02801);
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW02802);
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW02803);
		
		return innerSearch(FUNC_CD_1, SEARCH_RSLT_LIST, screenId);
	}
	
	/**
	 * 検索処理を呼び出し、エラーフラグの内容に応じてメッセージを設定します。
	 * @param functionCode 機能コード
	 * @param listName 検索結果リスト名
	 * @param screenId 画面ID
	 * @return 成否
	 * @throws Exception 例外
	 */
	private boolean innerSearch(String functionCode, String listName, String screenId) throws Exception 
	{

		String searchErrFlg = searchService(functionCode, listName, screenId);
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			DEBUG_LOG.debug("検索結果0件");
			JCCWebCommon.setMessageInfo(this, "EKB0330--I");
			return false;
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			DEBUG_LOG.debug(String.format("検索結果%s件以上", JCCWebCommon.getSearchConst("DKW02801_MAX_SHOW_CNT")));
			JCCWebCommon.setMessageInfo(this, "EKB0340--I", new String [] {JCCWebCommon.getSearchConst("DKW02801_MAX_SHOW_CNT")});
			return false;
		}
		else if (FILE_ERROR.equals(searchErrFlg))
		{
			return false;
		}
		
		JCCWebCommon.setSearchCommand(this, getVerb(screenId), screenId);
		
		return true;
	}

	/**
	 * 一覧検索のサービスを呼び出します
	 * @param functionCode ファンクションコード
	 * @param listName 一覧名
	 * @param screenId 画面ID
	 * @return エラーコード
	 */
	private String searchService(String functionCode, String listName, String screenId)
	{
		String ret = "";
		
		if (isChshtWaySearchMode())
		{
			ret = dataSearchService(functionCode, listName, screenId);
		}
		else
		{
			ret = fileLoadService(functionCode, listName, screenId);
		}
		
		return ret;
	}
	
	/**
	 * 一覧検索のサービス(検索用)を呼び出します
	 * @param functionCode ファンクションコード
	 * @param listName 一覧名
	 * @param screenId 画面ID
	 * @return エラーコード
	 */
	@SuppressWarnings("unchecked")
	private String dataSearchService(String functionCode, String listName, String screenId)
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		HashMap<String, String> paramMap = new HashMap<String, String>();
		HashMap<String, String> inputMap = new HashMap<String, String>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		bean.getDataBeanArray(listName).clearArray();

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0101");

		DKSV0101_DKSV0101OPDBMapper mapper = new DKSV0101_DKSV0101OPDBMapper();
		mapper.setDKSV010101CC(paramBean, inputMap, functionCode);

		JCCWebCommon.upmapperPageLinkInfo(this, CC_SEARCH_MODE, inputMap, screenId);
		invokeService(paramMap, inputMap, outputMap);
		
		//セッション情報から倉庫データを取得
		HashMap<String, Object> sokoDataMap = JCCWebCommon.getScreenInfo(this, SOKO_ID_KEY);
		
		//セッション情報から棚データを取得
		HashMap<String, Object> selfDataMap = JCCWebCommon.getScreenInfo(this, SHELF_ID_KEY);
		
		// 倉庫名称と棚名称の設定を呼び出す
		setSokoAndShelfName(outputMap, CC_SEARCH_MODE, sokoDataMap, selfDataMap);
		
		//outputMapの情報をセッションに格納する
		JCCWebCommon.setScreenInfo(this, SCREEN_ID_KEY, outputMap);
		
		HashMap<String, Object> outMap = (HashMap<String, Object>)outputMap.get(CC_SEARCH_MODE);
		int max_display_num = Integer.parseInt((String)outMap.get("display_num"));
		
		HashMap<String, Object> dispDataMap = getDispData(outputMap,max_display_num,1,SCREEN_ID_DKW02801, CC_SEARCH_MODE);
		
		JCCWebCommon.downmapperPageLinkInfo(this, CC_SEARCH_MODE, dispDataMap, screenId);
		
		mapper.getDKSV010101CC(paramBean, dispDataMap);

		adjustList(listName, (Map<?,?>)dispDataMap.get(CC_SEARCH_MODE) );
		
		return JCCWebCommon.getSearchErrFlg(CC_SEARCH_MODE, dispDataMap);

	}
	
	/**
	 * 一覧検索のサービス(ファイル読込用)を呼び出します
	 * @param functionCode ファンクションコード
	 * @param listName 一覧名
	 * @param screenId 画面ID
	 * @return エラーコード
	 */
	@SuppressWarnings("unchecked")
	private String fileLoadService(String functionCode, String listName, String screenId)
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		HashMap<String, String> paramMap = new HashMap<String, String>();
		HashMap<String, String> inputMap = new HashMap<String, String>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		bean.getDataBeanArray(listName).clearArray();

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0102");

		DKSV0102_DKSV0102OPDBMapper mapper = new DKSV0102_DKSV0102OPDBMapper();
		mapper.setDKSV010201CC(paramBean, inputMap, functionCode);

		JCCWebCommon.upmapperPageLinkInfo(this, CC_FILE_MODE, inputMap, screenId);
		
		// 検索処理の実施
		invokeService(paramMap, inputMap, outputMap);
		
		// 検索結果が０件もしくは最大件数を超えている場合は、以降の処理を行わない
		String searchErrFlg = JCCWebCommon.getSearchErrFlg(CC_FILE_MODE, outputMap);
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg) || JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			return searchErrFlg;
		}
		
		// 検索結果不足チェックの呼び出し
		if (!isShortCheck(outputMap))
		{
			return FILE_ERROR;
		}
		
		// 倉庫・建物情報を検索する
		HashMap searchResultMap = new HashMap();
		searchSokoAndTanaData(searchResultMap);

		// 倉庫情報を取得する
		HashMap sokoDataMap = getSokoDataMap(searchResultMap);
		// 棚情報を取得する
		HashMap selfDataMap = getShelfDataMap(searchResultMap);
		
		// 倉庫名称と棚名称の設定を呼び出す
		setSokoAndShelfName(outputMap, CC_FILE_MODE, sokoDataMap, selfDataMap);
		
		// outputMapの情報をセッションに格納する
		JCCWebCommon.setScreenInfo(this, SCREEN_ID_KEY, outputMap);
		
		HashMap<String, Object> outMap = (HashMap<String, Object>)outputMap.get(CC_FILE_MODE);
		int max_display_num = Integer.parseInt((String)outMap.get("display_num"));
		
		HashMap<String, Object> dispDataMap = getDispData(outputMap,max_display_num,1,SCREEN_ID_DKW02801, CC_FILE_MODE);
		
		JCCWebCommon.downmapperPageLinkInfo(this, CC_FILE_MODE, dispDataMap, screenId);
		
		mapper.getDKSV010201CC(paramBean, dispDataMap);

		adjustList(listName, (Map<?,?>)dispDataMap.get(CC_FILE_MODE) );

		return JCCWebCommon.getSearchErrFlg(CC_FILE_MODE, dispDataMap);
	}
	
	
	/**
	 * Verの更新処理を行います
	 * @param functionCode ファンクションコード
	 * @return エラー
	 */
	@SuppressWarnings("unchecked")
	private String verChangeService(String functionCode)
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		HashMap<String, String> paramMap = new HashMap<String, String>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0103");
		DKSV0103_DKSV0103OPDBMapper mapper = new DKSV0103_DKSV0103OPDBMapper();
		mapper.setDKSV010301CC(paramBean, inputMap, functionCode);

		//セッション情報から更新用のデータを取得し、連携する
		HashMap<String, Object> sessionDataMap = JCCWebCommon.getScreenInfo(this, SCREEN_ID_KEY);
		
		
		HashMap<String, Object> outMap = new HashMap<String, Object>();
		if (isChshtWaySearchMode())
		{
			outMap = (HashMap<String, Object>)sessionDataMap.get(CC_SEARCH_MODE);
		}
		else
		{
			outMap = (HashMap<String, Object>)sessionDataMap.get(CC_FILE_MODE);
		}

		ArrayList<Map<String, String>> updateList = (ArrayList<Map<String, String>>) outMap.get("verInfoList");
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		parentMap = (HashMap<String, Object>) inputMap.get("DKSV010301CC");
		parentMap.put("updateList", updateList);
		
		invokeService(paramMap, inputMap, outputMap);

		return JCCWebCommon.getSearchErrFlg("DKSV010301CC", outputMap);
	}
	
	
	/**
	 * プルダウンに設定するデータを検索し、セットする
	 */
	@SuppressWarnings("unchecked")
	private void searchPulldownData()
	{
		X31SDataBeanAccess[] paramBean = {super.getServiceFormBean()};
		
		HashMap paramMap = new HashMap();
		HashMap inputMap = new HashMap();
		HashMap outputMap = new HashMap();

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0100");
		DKSV0100_DKSV0100OPDBMapper mapper = new DKSV0100_DKSV0100OPDBMapper();
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return;
		}

		mapper.getDKSV010001SC(paramBean, outputMap);
		mapper.getDKSV010002SC(paramBean, outputMap);
		mapper.getDKSV010003SC(paramBean, outputMap);

		pushEmptyToTopOfPulldown(I_ADRTTM, I_ADRTTM_CD_LIST_02, I_ADRTTM_NM_LIST_02, "");
		pushEmptyToTopOfPulldown(I_SHELF, I_CD_CD_LIST_01, I_CD_NM_LIST_01, "");
		pushEmptyToTopOfPulldown(I_MDL, I_MDL_CD_LIST_03, I_MDL_NM_LIST_03, "");

		// セッションに倉庫情報をセットする
		HashMap SokoMap = getSokoDataMap(outputMap);
		JCCWebCommon.setScreenInfo(this, SOKO_ID_KEY, SokoMap);
		// セッションに棚情報をセットする
		HashMap ShelfMap = getShelfDataMap(outputMap);
		JCCWebCommon.setScreenInfo(this, SHELF_ID_KEY, ShelfMap);
	}
	
	/**
	 * 検索結果の一覧の表示調整をします。
	 */
	@SuppressWarnings("unchecked")
	private void adjustList(String listName, Map outputMap)
	{

		setData(this, 0L, listName);
		
		String displayPageNum = (String)outputMap.get(DISPLAY_PAGE_NUM);
		if (JDKCommonUtil.isNull(displayPageNum))
		{
			displayPageNum = "1";
		}
		
		int iDispPageNum = Integer.parseInt(displayPageNum);
		String rowPerPage = JCCWebCommon.getSearchConst(DKW02801_ROW_PER_PAGE);
		int iRowPerPage = Integer.parseInt(rowPerPage);
		int start = (iDispPageNum - 1) * iRowPerPage;
		
		X31SDataBeanAccessArray list = getServiceFormBean().getDataBeanArray(listName);
		int size = list.getCount();
		for (int i = 0 ; i < size ; i++) 
		{
			X31SDataBeanAccess data = list.getDataBean(i);

			setData(data, String.valueOf(start + i + 1), L_NO_04);
			setData(data, ((i + 1) % 2 == 0) ? "even" : "odd", L_COLOR_04);
			setData(data, (substr(getData(data, L_RSLT_ADRTTM_NM_04), 0, 14)), L_RSLT_ADRTTM_NM_DISP_04);
			setData(data, (substr(getData(data, L_RSLT_TAKNKIKI_MODEL_NM_04), 0, 10)), L_RSLT_TAKNKIKI_MODEL_NM_DISP_04);
		}
	}

	/**
	 * スクリーンモードを設定します。
	 * @param mode スクリーンモード
	 */
	private void setScreenMode(long mode)
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		bean.sendMessageLong(SCREEN_MODE, X31CWebConst.DATABEAN_SET_VALUE, mode);
		
		DEBUG_LOG.debug(String.format("画面モードを %d に設定します", mode));
	}

	/**
	 * 画面遷移先を設定します。
	 * @param nextScreenId 遷移先画面ＩＤ
	 * @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);

		DEBUG_LOG.debug(String.format("遷移先 CD：%s NM：%s", nextScreenId, nextScreenName));
	}

	/**
	 * 画面入力値を検索条件に設定します。
	 */
	private void storeSearchCondition()
	{

		storePullDown(this, I_CHSHT_WAY, I_CD_INDEX_01, I_CD_CD_01, I_CD_NM_01, I_CD_CD_LIST_01, I_CD_NM_LIST_01);
		storePullDown(this, I_ADRTTM, I_ADRTTM_INDEX_02, I_ADRTTM_CD_02, I_ADRTTM_NM_02, I_ADRTTM_CD_LIST_02, I_ADRTTM_NM_LIST_02);
		storePullDown(this, I_SHELF, I_CD_INDEX_01, I_CD_CD_01, I_CD_NM_01, I_CD_CD_LIST_01, I_CD_NM_LIST_01);
		storePullDown(this, I_MDL, I_MDL_INDEX_03, I_MDL_CD_03, I_MDL_NM_03, I_MDL_CD_LIST_03, I_MDL_NM_LIST_03);

		setData(this, getData(this, I_SEIZO_NO_FROM), SEARCH_SEIZO_NO_FROM);
		setData(this, getData(this, I_SEIZO_NO_TO), SEARCH_SEIZO_NO_TO);
		setData(this, getData(this, I_ADRTTM, I_ADRTTM_CD_02), SEARCH_ADRTTM_CD);
		setData(this, getData(this, I_SHELF, I_CD_CD_01), SEARCH_SHELF_DIV);
		setData(this, getData(this, I_MDL, I_MDL_CD_03), SEARCH_MODEL_NO);
		setData(this, getData(this, I_VER_FROM), SEARCH_VER_FROM);
		setData(this, getData(this, I_VER_TO), SEARCH_VER_TO);
	}

	/**
	 * プルダウンの０番目の項目に空白を挿入します。
	 * @param pulldown プルダウンを指す項目ID
	 * @param cdList プルダウン中でコード一覧をさす項目ID
	 * @param nmList プルダウン中で名称一覧をさす項目ID
	 * @param pushString 追加する文字列
	 */
	private void pushEmptyToTopOfPulldown(String pulldown, String cdList, String nmList, String pushString)
	{
		X31SDataBeanAccess pulldownBean = super.getServiceFormBean().getDataBeanArray(pulldown).getDataBean(0);

		appendPrefix(getBean(this, pulldown), nmList);
		
		slideArrayOnDatabean(pulldownBean, cdList, "");
		slideArrayOnDatabean(pulldownBean, nmList, pushString);
	}

	/**
	 * データビーンの配列要素をインデックスが増加する方向に１つずらす
	 * @param bean データビーン
	 * @param listName 対象項目ID
	 * @param pushString 追加する文字列
	 */
	private void slideArrayOnDatabean(X31SDataBeanAccess bean, String listName, String pushString)
	{
		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, pushString);
	}

	/**
	 * 抽出方法のプルダウンリスト作成
	 */
	private void makeChshtWayPullDown()
	{
		clearPullDown(this, I_CHSHT_WAY, I_CD_INDEX_01, I_CD_CD_01, I_CD_NM_01, I_CD_CD_LIST_01, I_CD_NM_LIST_01);
		X31SDataBeanAccess list = getBean(this, I_CHSHT_WAY);
		
		for (String key : CHSHT_WAY_MAP.keySet())
		{
			list.sendMessageString(I_CD_CD_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, key);
			list.sendMessageString(I_CD_NM_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, CHSHT_WAY_MAP.get(key));
		}
	}

	/**
	 * 抽出条件が「検索」かを判定する
	 * @return true: 検索 / false: ファイル読込
	 */
	private boolean isChshtWaySearchMode()
	{
		return (getData(this, I_CHSHT_WAY, I_CD_CD_01).equals(CHSHT_WAY_SEARCH_MODE));
	}

	/**
	 * ページングに設定するコマンドを取得します
	 * @return
	 */
	private String getVerb(String screenId)
	{
		return PAGING_MAP.get(screenId);
	}
	
	/**
	 * 抽出条件から FunctionCdを取得する
	 * @return FunctionCd
	 */
	private String convertChshtWay2FuncCd()
	{
		return (isChshtWaySearchMode() ? FUNC_CD_2 : FUNC_CD_1);
	}
	
	
	/**
	 * セッション情報より画面表示用の処理を行う
	 * @param nextScreenId 遷移先画面ＩＤ
	 * @param serviceName サービス名(DKSV010101CC/DKSV010201CC)
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	private void adjustPageDispData(String nextScreenId, String serviceName)
	{
		//セッション情報からデータを取得
		HashMap<String, Object> sessionDataMap = JCCWebCommon.getScreenInfo(this, SCREEN_ID_KEY);
		
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		
		DKSV0101_DKSV0101OPDBMapper dksv0101mapper = new DKSV0101_DKSV0101OPDBMapper();
		DKSV0102_DKSV0102OPDBMapper dksv0102mapper = new DKSV0102_DKSV0102OPDBMapper();
		
		if (CC_SEARCH_MODE.equals(serviceName))
		{
			dksv0101mapper.setDKSV010101CC(paramBean, inputMap, FUNC_CD_1);
		}
		else
		{
			dksv0102mapper.setDKSV010201CC(paramBean, inputMap, FUNC_CD_1);
		}

		JCCWebCommon.upmapperPageLinkInfo(this, serviceName, inputMap, nextScreenId);
		
		//次に表示するページ数を取得する
		HashMap<String, String> inMap = (HashMap<String, String>)inputMap.get(serviceName);
		int display_page_num = Integer.parseInt(inMap.get("display_page_num"));
		
		//1ページの表示可能な最大件数を取得する
		int max_display_num = Integer.parseInt(inMap.get("display_num"));
		HashMap<String, Object> dispDataMap = getDispData(sessionDataMap,max_display_num,display_page_num, nextScreenId, serviceName);
		
		JCCWebCommon.downmapperPageLinkInfo(this, serviceName, dispDataMap, nextScreenId);
		
		if (CC_SEARCH_MODE.equals(serviceName))
		{
			dksv0101mapper.getDKSV010101CC(paramBean, dispDataMap);
		}
		else
		{
			dksv0102mapper.getDKSV010201CC(paramBean, dispDataMap);
		}
		
		adjustList(SEARCH_RSLT_LIST, (Map<?,?>)dispDataMap.get(serviceName) );
		
		//コマンドマップIDをセッションに設定する
		JCCWebCommon.setSearchCommand(this, getVerb(nextScreenId), nextScreenId);
	}
	
	
	/**
	 * 表示用のMapを生成し、返却します。
	 * @param dataMap 切り出し元のMap
	 * @param max_display_num 1ページの表示可能な最大件数
	 * @param display_page_num 次に表示するページ数
	 * @param nextScreenId 遷移先画面ＩＤ
	 * @param serviceName サービス名(DKSV010101CC/DKSV010201CC)
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getDispData(HashMap<String, Object>dataMap, int max_display_num, int display_page_num, String nextScreenId, String serviceName)
	{
		
		HashMap<String, Object> outMap = (HashMap<String, Object>)dataMap.get(serviceName);
		List<Map<String, String>> resultList = (List<Map<String, String>>) outMap.get("verInfoList");
		
		//表示データの範囲を決定する
		int end = resultList.size();
		int start = (max_display_num * display_page_num) - (max_display_num - 1) -1;
		if ((max_display_num * display_page_num) < end)
		{
			end = max_display_num * display_page_num;
		}
		
		//検索結果Mapから表示用のMapを生成する
		HashMap<String, Object> dispDataMap = new HashMap<String, Object>(dataMap);
		HashMap<String, Object> dispMap = (HashMap<String, Object>) ((HashMap<String, Object>) dispDataMap.get(serviceName)).clone();

		//表示対象のデータのみリストにセットする
		List<Map<String, String>> subList = new ArrayList<Map<String, String>>();
		for (int i = start; i < end; i++){
			if (SCREEN_ID_DKW02801.equals(nextScreenId))
			{
				subList.add(resultList.get(i));
			}
			else
			{
				//Ver登録確認・Ver登録完了画面への遷移時、Ver登録画面で入力したVerで表示用の中身を書き換える
				Map<String, String> childMap = (Map<String, String>) (((HashMap<String, String>) resultList.get(i)).clone());
				String inVer = getData(this, I_VER);
				childMap.put("ver", inVer);
				subList.add(childMap);
			}
		}
		
		dispMap.put("verInfoList", subList);
		dispDataMap.put(serviceName, dispMap);
		dispMap.put(DISPLAY_PAGE_NUM, String.valueOf(display_page_num));

		//最終ページで最大件数以下の場合、関係ないデータが表示される為、事前にクリアする
		getServiceFormBean().getDataBeanArray(SEARCH_RSLT_LIST).clearArray();
		
		return dispDataMap;
	}

	/**
	 * ファイル読込したデータが検索結果に存在しなければ、メッセージを設定します。
	 * @author 富士通
	 * @param outputMap 検索結果
	 * @return true:エラーなし false:エラーあり
	 */
	@SuppressWarnings("unchecked")
	private boolean isShortCheck(HashMap<String, Object> outputMap)
	{
		HashMap<String, Object> outMap = (HashMap<String, Object>)outputMap.get(CC_FILE_MODE);
		List<Map<String, String>> resultList = (List<Map<String, String>>) outMap.get("verInfoList");
		
		// セッションからファイル読込した情報を取り出す
		HashMap<String, Object> sessionReadFileMap = JCCWebCommon.getScreenInfo(this, SESSION_KEY_READ_FILE_INFO);
		ArrayList<Object> fileReadList = (ArrayList<Object>) sessionReadFileMap.get("readList");
		
		boolean resultFlg = true;
		String readData[] = new String[2];
		
		// 不足データチェック
		for (int i = 0; i < fileReadList.size(); i++)
		{
			boolean existFlg = false;
			
			for (int j = 0; j < resultList.size(); j++)
			{
				Map<String, String> childMap = (HashMap<String, String>) resultList.get(j);
				readData = (String[]) fileReadList.get(i);
				if (readData[0].equals(childMap.get("taknkiki_model_cd")) && readData[1].equals(childMap.get("kiki_seizo_no")))
				{
					// 一致データあり
					existFlg = true;
					break;
				}
				else
				{
					continue;
				}
			}
			
			if(!existFlg)
			{
				// 一致データなし
				setMessage(EKB0300_KW, "宅内機器", readData[0] + "、" + readData[1]); 
				resultFlg = false;
			}
		}
		
		return resultFlg;
	}
	
	
	/**
	 * メッセージを設定します。
	 * @author 富士通
	 * @param messageId メッセージＩＤ
	 * @param replacements 置換文字列
	 */
	private void setMessage(String messageId, String...replacements)
	{
		JCCWebCommon.setMessageInfo(this, messageId, replacements);
	}
	
	
	/**
	 * 検索結果より倉庫のマップを返します。
	 * @author 富士通
	 * @param outputMap 検索結果
	 * @return resultSoko 倉庫情報のMap
	 */
	@SuppressWarnings("unchecked")
	private HashMap getSokoDataMap(HashMap<String, Object> outputMap)
	{
		HashMap SokoMap = (HashMap)outputMap.get("DKSV010001SC");
		ArrayList SokoList = (ArrayList)SokoMap.get("EDK0091B040CBSMsg1List");
		
		HashMap resultSoko = new HashMap();
		for(int i = 0; i < SokoList.size(); i++)
		{
			HashMap childMap = (HashMap)SokoList.get(i);
			
			// 工事会社と預託先オフィスの場合は名称を連携されるので、倉庫の情報だけをセットする
			if (JDKStrConst.KANRI_PLACE_SKB_SOKO.equals(childMap.get("adrttm_div")))
			{
				resultSoko.put(childMap.get("adrttm_cd"), childMap.get("adrttm_nm"));
			}
		}
		return resultSoko;
	}
	
	
	/**
	 * 検索結果より棚のマップを返します。
	 * @author 富士通
	 * @param outputMap 検索結果
	 * @return resultShelf 棚情報のMap
	 */
	@SuppressWarnings("unchecked")
	private HashMap getShelfDataMap(HashMap<String, Object> outputMap)
	{
		HashMap ShelfMap = (HashMap)outputMap.get("DKSV010002SC");
		ArrayList ShelfList = (ArrayList)ShelfMap.get("EZM0171B012CBSMsg1List");
		
		HashMap resultShelf = new HashMap();
		for(int i = 0; i < ShelfList.size(); i++)
		{
			HashMap childMap = (HashMap)ShelfList.get(i);
			resultShelf.put(childMap.get("cd_div"), childMap.get("cd_div_nm"));
		}
		return resultShelf;
	}
	
	
	/**
	 * 倉庫情報と棚情報を検索する
	 * @param outputMap 検索結果
	 */
	@SuppressWarnings("unchecked")
	private void searchSokoAndTanaData(HashMap outputMap)
	{
		X31SDataBeanAccess[] paramBean = {super.getServiceFormBean()};
		
		HashMap paramMap = new HashMap();
		HashMap inputMap = new HashMap();

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0100");
		DKSV0100_DKSV0100OPDBMapper mapper = new DKSV0100_DKSV0100OPDBMapper();
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return;
		}

		mapper.getDKSV010001SC(paramBean, outputMap);
		mapper.getDKSV010002SC(paramBean, outputMap);
		
	}
	
	
	/**
	 * 倉庫名称と棚名称を設定する。
	 * @author 富士通
	 * @param outputMap 検索結果
	 * @param serviceName サービス名(DKSV010101CC/DKSV010201CC)
	 * @param sokoDataMap 倉庫棚のMap
	 * @param selfDataMap 棚のMap
	 */
	@SuppressWarnings("unchecked")
	private void setSokoAndShelfName(HashMap<String, Object> outputMap, String serviceName, HashMap sokoDataMap, HashMap selfDataMap)
	{
		HashMap<String, Object> outMap = (HashMap<String, Object>)outputMap.get(serviceName);
		List<Map<String, String>> resultList = (List<Map<String, String>>) outMap.get("verInfoList");
		for (int i = 0; i < resultList.size(); i++)
		{
			Map<String, String> childMap = (HashMap<String, String>) resultList.get(i);
			// 工事会社と預託先オフィスの場合は名称が連携されセット済みの為、倉庫の場合だけ名称をセットする
			if (JDKStrConst.KANRI_PLACE_SKB_SOKO.equals(childMap.get("knri_plc_skbt_cd")))
			{
				// 倉庫名称設定
				childMap.put("adrttm_nm", (String) sokoDataMap.get(childMap.get("adrttm_cd")));
				
				// 棚名称設定
				childMap.put("shelf_nm", (String) selfDataMap.get(childMap.get("shelf_cd")));
			}
		}
	}
	
	
	/**
	 * 選択コード値を元に、建物プルダウンのインデックスを返却する
	 * @author 富士通
	 * @param code 選択コード値
	 * @return index
	 */
	private Long getAdrttmSearchIndex(String code)
	{
		X31SDataBeanAccess pulldown = getServiceFormBean().getDataBeanArray(I_ADRTTM).getDataBean(0);
		int count = (Integer)pulldown.sendMessage(I_ADRTTM_CD_LIST_02,  X31CWebConst.DATABEAN_GET_COUNT);
		for (int i = 0 ; i < count ; i++)
		{
			if (code.equals(pulldown.sendMessageString(I_ADRTTM_CD_LIST_02, X31CWebConst.DATABEAN_GET_VALUE, i)))
			{
				return (long)i;
			}
		}
		return (long)0;
	}


	/**
	 * 選択コード値を元に、棚プルダウンのインデックスを返却する
	 * @author 富士通
	 * @param code 選択コード値
	 * @return index
	 */
	private Long getShelfSearchIndex(String code)
	{
		X31SDataBeanAccess pulldown = getServiceFormBean().getDataBeanArray(I_SHELF).getDataBean(0);
		int count = (Integer)pulldown.sendMessage(I_CD_CD_LIST_01,  X31CWebConst.DATABEAN_GET_COUNT);
		for (int i = 0 ; i < count ; i++)
		{
			if (code.equals(pulldown.sendMessageString(I_CD_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, i)))
			{
				return (long)i;
			}
		}
		return (long)0;
	}

	/**
	 * 選択コード値を元に、型番号プルダウンのインデックスを返却する
	 * @author 富士通
	 * @param code 選択コード値
	 * @return index
	 */
	private Long getMdlSearchIndex(String code)
	{
		X31SDataBeanAccess pulldown = getServiceFormBean().getDataBeanArray(I_MDL).getDataBean(0);
		int count = (Integer)pulldown.sendMessage(I_MDL_CD_LIST_03,  X31CWebConst.DATABEAN_GET_COUNT);
		for (int i = 0 ; i < count ; i++)
		{
			if (code.equals(pulldown.sendMessageString(I_MDL_CD_LIST_03, X31CWebConst.DATABEAN_GET_VALUE, i)))
			{
				return (long)i;
			}
		}
		return (long)0;
	}


}
