/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：物流管理システム
*   モジュール名    ：DKW03001SFLogic
*   ソースファイル名：DKW03001SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年09月20日
*＜機能概要＞
*   出荷状況一覧照会画面です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/09/20   FJ          新規作成
*   v5.00.00	2013/11/11	 FJ          OM-2013-0004070 性能改善（タイムアウトエラーのハンドリング追加）
*
**********************************************************************/
package eo.web.webview.DKW03001SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;
import static eo.common.util.JDKCommonUtil.join;
import static eo.web.webview.common.JDKScreenConst.SCREEN_ID_DKW03001;
import static eo.web.webview.common.JDKScreenConst.SCREEN_ID_DKW03002;
import static eo.web.webview.common.JDKScreenConst.SCREEN_NAME_DKW03002;
import static eo.web.webview.common.JDKWebCommon.appendPrefix;
import static eo.web.webview.common.JDKWebCommon.getBean;
import static eo.web.webview.common.JDKWebCommon.getData;

import java.util.HashMap;

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 com.fujitsu.futurity.web.x31.X31SRuntimeException;
import com.fujitsu.futurity.web.x31.X31SWebLog;

import eo.common.constant.JDKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JDKCommonUtil;
import eo.common.util.JPCDateUtil;
import eo.common.util.JPCEditString;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.DKW03002SF.DKW03002SFConst;
import eo.web.webview.common.JCCMessageCache;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JDKScreenConst;
import eo.web.webview.common.JDKWebCommon;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.mapping.DKSV0095_DKSV0095OPDBMapper;
import eo.web.webview.mapping.DKSV0097_DKSV0097OPDBMapper;

/**
 * 出荷状況一覧照会画面のビューロジック処理を行います。
 * @author user
 */
public class DKW03001SFLogic extends JCCWebBusinessLogic
{
	/**
	 * シリアルバージョンＩＤ
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * 検索有無フラグ：再検索あり
	 */
	private static final String SEACH_FLG_TRUE = "1";

	/**
	 * 検索有無フラグ：再検索なし
	 */
	private static final String SEACH_FLG_FALSE = "0";

	/**
	 * 抽出条件：出荷状況一覧
	 */
	private static final String SHKA_STAT_LIST = "001";

	/**
	 * 抽出条件：出荷処理待ちリスト
	 */
	private static final String SHKA_WAIT_LIST = "002";

	/**
	 * 抽出条件：出荷完了リスト
	 */
	private static final String SHKA_FIN_LIST = "003";

	/**
	 * 抽出条件：出荷キャンセル依頼書
	 */
	private static final String SHKA_CANCEL = "004";

	/**
	 * 抽出条件：出荷完了エラーリスト
	 */
	private static final String SHKA_FIN_ERR_LIST = "005";

	/**
	 * プルダウン判定コード：抽出条件
	 */
	private static final String JUDGECD_CHSHTJOKEN = "1";

	/**
	 * プルダウン判定コード：出荷元
	 */
	private static final String JUDGECD_SHKAMT = "2";

	/**
	 * プルダウン判定コード：契約サービス
	 */
	private static final String JUDGECD_KEISVC = "3";

	/**
	 * プルダウン判定コード：契約サービス区分
	 */
	private static final String JUDGECD_KEISVCKBN = "4";

	/**
	 *  配送ステータス（受付済）
	 */
	private static final String HAISOSTAT_001 = "001";

	/**
	 *  配送ステータス（出荷済）
	 */
	private static final String HAISOSTAT_003 = "003";
	
	/**
	 *  配送ステータス（出荷済）
	 */
	private static final String HAISOSTAT_004 = "004";

	/**
	 *  配送区分（手渡し）
	 */
	private static final String HAISODIV_TEWATASHI = "01";

	/**
     * ダウンロードCSVファイル名（出荷状況一覧）
     */
	private static final String CSV_FILE_NAME_001 = "出荷状況一覧ファイル.csv";

	/**
     * ダウンロードCSVファイル名（出荷処理待ちリスト）
     */
	private static final String CSV_FILE_NAME_002 = "出荷処理待ちリストファイル.csv";

	/**
     * ダウンロードCSVファイル名（出荷完了リスト）
     */
	private static final String CSV_FILE_NAME_003 = "出荷完了リストファイル.csv";

	/**
     * ダウンロードCSVファイル名（出荷キャンセル依頼書）
     */
	private static final String CSV_FILE_NAME_004 = "出荷キャンセル依頼書ファイル.csv";

	/**
     * ダウンロードCSVファイル名（出荷完了エラーリスト）
     */
	private static final String CSV_FILE_NAME_005 = "出荷完了エラーリストファイル.csv";

	/**
	 *  CSV レコード数カウント用
	 */
	private int record_count = 0;

	/**
     * CSVファイルヘッダ情報タイトル文字用（項番）
     */
	private static final String CSV_TITLE_COUNT = "項番";

	/**
     * CSVファイルヘッダ情報タイトル文字用（配送依頼日）
     */
	private static final String CSV_TITLE_HAISOIRAIYMD = "配送依頼日";

	/**
     * CSVファイルヘッダ情報タイトル文字用（お客さまID）
     */
	private static final String CSV_TITLE_SVCKEINO = "お客さまID";

	/**
     * CSVファイルヘッダ情報タイトル文字用（SYSID）
     */
	private static final String CSV_TITLE_SYSID = "SYSID";

	/**
     * CSVファイルヘッダ情報タイトル文字用（契約サービス）
     */
	private static final String CSV_TITLE_KEISVC = "契約サービス";

	/**
     * CSVファイルヘッダ情報タイトル文字用（出荷先）
     */
	private static final String CSV_TITLE_SHKASK = "出荷先";

	/**
     * CSVファイルヘッダ情報タイトル文字用（型番号）
     */
	private static final String CSV_TITLE_MDLNO = "型番号";

	/**
     * CSVファイルヘッダ情報タイトル文字用（製造番号）
     */
	private static final String CSV_TITLE_SEIZONO = "製造番号";

	/**
     * CSVファイルヘッダ情報タイトル文字用（機器契約区分）
     */
	private static final String CSV_TITLE_KIKIKEIDIV = "機器契約区分";

	/**
     * CSVファイルヘッダ情報タイトル文字用（数量）
     */
	private static final String CSV_TITLE_CNT = "数量";

	/**
     * CSVファイルヘッダ情報タイトル文字用（出荷状況）
     */
	private static final String CSV_TITLE_SHKASTAT = "出荷状況";

	/**
     * CSVファイルヘッダ情報タイトル文字用（エラー内容）
     */
	private static final String CSV_TITLE_ERR = "エラー内容";

	/**
     * CSVファイルヘッダ情報タイトル文字用（出荷元）
     */
	private static final String CSV_TITLE_SHKAMT = "出荷元";

	/**
     * CSVファイルヘッダ情報タイトル文字用（出荷元棚名）
     */
	private static final String CSV_TITLE_SHKAMTTN = "出荷元棚名";

	/**
     * CSVファイルヘッダ情報タイトル文字用（出荷ロット番号）
     */
	private static final String CSV_TITLE_SHKALOTNO = "出荷ロット番号";

	/**
     * CSVファイルヘッダ情報タイトル文字用（出荷完了日）
     */
	private static final String CSV_TITLE_SHKAFINYMD = "出荷完了日";

	/**
     * CSVファイルヘッダ情報タイトル文字用（伝票NO）
     */
	private static final String CSV_TITLE_DENPYONO = "伝票NO";

	/**
     * CSVファイルヘッダ情報タイトル文字用（サービス開始日）
     */
	private static final String CSV_TITLE_SV_STA_YMD = "サービス開始日";
	
	/**
     * CSVファイルヘッダ情報タイトル文字用（課金開始日）
     */
	private static final String CSV_TITLE_CHRG_STA_YMD = "課金開始日";
	
	/**
     * CSVファイルヘッダ情報タイトル文字用（機器契約日）
     */
	private static final String CSV_TITLE_KIKI_KEI_YMD = "機器契約日";
	
	/**
     * CSVファイルヘッダ情報タイトル文字用（設置日）
     */
	private static final String CSV_TITLE_STC_YMD = "設置日";
	
	/**
     * CSVファイルヘッダ情報タイトル文字用（工事会社コード）
     */
	private static final String CSV_TITLE_KOCOMP_CD = "工事会社コード";
	
	
	/**
	 * 初期表示を処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean init() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		// 運用日付を取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);

		// 運用日付を設定
		serviceFormBean.sendMessageString(DKW03001SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);

		// 一覧表示件数を初期化する
		serviceFormBean.sendMessageString(DKW03001SFConst.DISP_COUNT, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 検索有無フラグを取得する
		String umuFlg = serviceFormBean.sendMessageString(DKW03001SFConst.SEARCH_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE);

		String bkChshtJoken = null;
		String bkShkaMt = null;
		String bkShkaLotNo = null;
		String bkYMDSta = null;
		String bkYMDEnd = null;
		String bkSeizoNo = null;
		String bkSvkeiNo = null;
		String bkSysid = null;
		String bkKeiSvc = null;
		String bkKeiKbn = "0";
		String judgeCd = null;
		String func_code = JPCModelConstant.FUNC_CD_1;
		
		// 遷移元画面IDを取得
		String screenId = JCCWebCommon.getScreenId(this);
		
		// エラーで遷移してきた場合かつメニュー（null）以外から遷移してきた場合
		if (JZMWebCommon.hasMsgList(super.getCommonInfoBean()) && screenId != null)
		{
			// 検索有無フラグ：再検索あり
			umuFlg = SEACH_FLG_TRUE;
		}

		// メニュー（null）の場合
		if (JDKCommonUtil.isNull(umuFlg) || SEACH_FLG_FALSE.equals(umuFlg))
		{
			// 運用日付−３を取得
			String targetFrom = JPCDateUtil.addDay(opeDate, -30);
			
			// 対象日付（ＦＲＯＭ）に日付を設定する
			X31SDataBeanAccessArray targetStaArray
							= serviceFormBean.getDataBeanArray(DKW03001SFConst.I_TG_STA);
			X31SDataBeanAccess targetSta = targetStaArray.getDataBean(0);

			// 年に運用日付−３０の年月日変換処理（年月日→年）を設定
			targetSta.sendMessageString(DKW03001SFConst.YEAR_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toYearFromYmd(targetFrom));

			// 月に運用日付−３０の年月日変換処理（年月日→月）を設定
			targetSta.sendMessageString(DKW03001SFConst.MON_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toMonthFromYmd(targetFrom));

			// 日に運用日付−３０の年月日変換処理（年月日→日）を設定
			targetSta.sendMessageString(DKW03001SFConst.DAY_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toDayFromYmd(targetFrom));

			// 出荷完了日付（ＦＲＯＭ）に日付を設定する
			X31SDataBeanAccessArray targetEndArray
							= serviceFormBean.getDataBeanArray(DKW03001SFConst.I_TG_END);
			X31SDataBeanAccess targetEnd = targetEndArray.getDataBean(0);

			// 年に運用日付の年月日変換処理（年月日→年）を設定
			targetEnd.sendMessageString(DKW03001SFConst.YEAR_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toYearFromYmd(opeDate));

			// 月に運用日付の年月日変換処理（年月日→月）を設定
			targetEnd.sendMessageString(DKW03001SFConst.MON_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toMonthFromYmd(opeDate));

			// 日に運用日付の年月日変換処理（年月日→日）を設定
			targetEnd.sendMessageString(DKW03001SFConst.DAY_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toDayFromYmd(opeDate));

			// 対象開始日を設定
			serviceFormBean.sendMessageString(DKW03001SFConst.TG_STA
					, X31CWebConst.DATABEAN_SET_VALUE, targetFrom + "000000000");
			bkYMDSta = targetFrom + "000000000";

			// 対象終了日を設定
			serviceFormBean.sendMessageString(DKW03001SFConst.TG_END
					, X31CWebConst.DATABEAN_SET_VALUE, opeDate + "235959999");
			bkYMDEnd = opeDate + "235959999";
			
			// 初期化
			// 検索有無フラグ
			serviceFormBean.sendMessageString(DKW03001SFConst.SEARCH_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
			// 抽出条件
			serviceFormBean.sendMessageString(DKW03001SFConst.CHSHT_JOKEN, X31CWebConst.DATABEAN_SET_VALUE, bkChshtJoken);
			// 出荷元
			serviceFormBean.sendMessageString(DKW03001SFConst.SHKA_MT, X31CWebConst.DATABEAN_SET_VALUE, bkShkaMt);
			// 出荷ロット番号
			serviceFormBean.sendMessageString(DKW03001SFConst.I_SHKA_LOT_NO, X31CWebConst.DATABEAN_SET_VALUE, bkShkaLotNo);
			// 対象開始日
			serviceFormBean.sendMessageString(DKW03001SFConst.TG_STA, X31CWebConst.DATABEAN_SET_VALUE, bkYMDSta);
			// 対象終了日
			serviceFormBean.sendMessageString(DKW03001SFConst.TG_END, X31CWebConst.DATABEAN_SET_VALUE, bkYMDEnd);
			// 製造番号
			serviceFormBean.sendMessageString(DKW03001SFConst.I_SEIZO_NO, X31CWebConst.DATABEAN_SET_VALUE, bkSeizoNo);
			// サービス契約番号
			serviceFormBean.sendMessageString(DKW03001SFConst.I_SVKEI_NO, X31CWebConst.DATABEAN_SET_VALUE, bkSvkeiNo);
			// SYSID
			serviceFormBean.sendMessageString(DKW03001SFConst.I_SYSID, X31CWebConst.DATABEAN_SET_VALUE, bkSysid);
			// 契約サービス
			serviceFormBean.sendMessageString(DKW03001SFConst.KEI_SVC_RKN, X31CWebConst.DATABEAN_SET_VALUE, bkKeiSvc);
			// 契約サービス区分
			serviceFormBean.sendMessageString(DKW03001SFConst.KEI_SVC_KBN, X31CWebConst.DATABEAN_SET_VALUE, bkKeiKbn);
			// 行番号
			serviceFormBean.sendMessageString(DKW03001SFConst.ROW_NO, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		// メニュー以外の場合
		else
		{
			// 画面表示データを設定
			// 抽出条件
			bkChshtJoken = serviceFormBean.sendMessageString(DKW03001SFConst.BK_CHSHT_JOKEN , X31CWebConst.DATABEAN_GET_VALUE);
			// 出荷元
			bkShkaMt = serviceFormBean.sendMessageString(DKW03001SFConst.BK_SHKA_MT , X31CWebConst.DATABEAN_GET_VALUE);
			// 出荷ロット番号
			bkShkaLotNo = serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SHKA_LOT_NO , X31CWebConst.DATABEAN_GET_VALUE);

			// 対象日（FROM）
			X31SDataBeanAccessArray ymdStaArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_TG_STA);
			X31SDataBeanAccess ymdSta = ymdStaArray.getDataBean(0);
			bkYMDSta = serviceFormBean.sendMessageString(DKW03001SFConst.BK_TG_STA
									, X31CWebConst.DATABEAN_GET_VALUE);
			ymdSta.sendMessageString(DKW03001SFConst.YEAR_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toYearFromYmd(bkYMDSta));
			ymdSta.sendMessageString(DKW03001SFConst.MON_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toMonthFromYmd(bkYMDSta));
			ymdSta.sendMessageString(DKW03001SFConst.DAY_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toDayFromYmd(bkYMDSta));

			// 対象日（TO）
			X31SDataBeanAccessArray ymdEndArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_TG_END);
			X31SDataBeanAccess ymdEnd = ymdEndArray.getDataBean(0);
			bkYMDEnd = serviceFormBean.sendMessageString(DKW03001SFConst.BK_TG_END
									, X31CWebConst.DATABEAN_GET_VALUE);
			ymdEnd.sendMessageString(DKW03001SFConst.YEAR_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toYearFromYmd(bkYMDEnd));
			ymdEnd.sendMessageString(DKW03001SFConst.MON_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toMonthFromYmd(bkYMDEnd));
			ymdEnd.sendMessageString(DKW03001SFConst.DAY_03
					, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toDayFromYmd(bkYMDEnd));

			// 製造番号
			bkSeizoNo = serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SEIZO_NO , X31CWebConst.DATABEAN_GET_VALUE);
			// サービス契約番号
			bkSvkeiNo = serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SVKEI_NO , X31CWebConst.DATABEAN_GET_VALUE);
			// SYSID
			bkSysid = serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SYSID , X31CWebConst.DATABEAN_GET_VALUE);
			// 契約サービス
			bkKeiSvc = serviceFormBean.sendMessageString(DKW03001SFConst.BK_KEI_SVC , X31CWebConst.DATABEAN_GET_VALUE);
			// 契約サービス区分
			bkKeiKbn = serviceFormBean.sendMessageString(DKW03001SFConst.BK_KEI_KBN , X31CWebConst.DATABEAN_GET_VALUE);

			// 検索用データを設定
			// 抽出条件
			serviceFormBean.sendMessageString(DKW03001SFConst.CHSHT_JOKEN, X31CWebConst.DATABEAN_SET_VALUE, bkChshtJoken);
			// 出荷元
			serviceFormBean.sendMessageString(DKW03001SFConst.SHKA_MT, X31CWebConst.DATABEAN_SET_VALUE, bkShkaMt);
			// 出荷ロット番号
			serviceFormBean.sendMessageString(DKW03001SFConst.I_SHKA_LOT_NO, X31CWebConst.DATABEAN_SET_VALUE, bkShkaLotNo);
			// 対象開始日
			serviceFormBean.sendMessageString(DKW03001SFConst.TG_STA, X31CWebConst.DATABEAN_SET_VALUE, bkYMDSta);
			// 対象終了日
			serviceFormBean.sendMessageString(DKW03001SFConst.TG_END, X31CWebConst.DATABEAN_SET_VALUE, bkYMDEnd);
			// 製造番号
			serviceFormBean.sendMessageString(DKW03001SFConst.I_SEIZO_NO, X31CWebConst.DATABEAN_SET_VALUE, bkSeizoNo);
			// サービス契約番号
			serviceFormBean.sendMessageString(DKW03001SFConst.I_SVKEI_NO, X31CWebConst.DATABEAN_SET_VALUE, bkSvkeiNo);
			// SYSID
			serviceFormBean.sendMessageString(DKW03001SFConst.I_SYSID, X31CWebConst.DATABEAN_SET_VALUE, bkSysid);
			// 契約サービス
			serviceFormBean.sendMessageString(DKW03001SFConst.KEI_SVC_RKN, X31CWebConst.DATABEAN_SET_VALUE, bkKeiSvc);
			// 契約サービス区分
			serviceFormBean.sendMessageString(DKW03001SFConst.KEI_SVC_KBN, X31CWebConst.DATABEAN_SET_VALUE, bkKeiKbn);

			// 機能コードを設定
			// 出荷完了エラーリストが選択された場合、2を設定
			if (SHKA_FIN_ERR_LIST.equals(bkChshtJoken))
			{
				func_code = JPCModelConstant.FUNC_CD_2;
			}
			// 上記以外の場合、1を設定
			else
			{
				func_code = JPCModelConstant.FUNC_CD_1;
			}

			X31SDataBeanAccess[] paramBean = {serviceFormBean};

			// ページング情報を初期化
			JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW03001);
			// ページングキーを初期化
			serviceFormBean.sendMessage(DKW03001SFConst.PAGEING_KEY, X31CWebConst.DATABEAN_CLEAR);
			
			// サービスの呼び出しを行う
			putServiceDKSV0097(paramBean, func_code, true);

			// 行番号を設定
			String rowNo = 
				serviceFormBean.sendMessageString(DKW03001SFConst.ROW_NO, X31CWebConst.DATABEAN_GET_VALUE);
			if (JDKCommonUtil.isNull(rowNo))
			{
				serviceFormBean.sendMessageString(DKW03001SFConst.ROW_NO, 
													X31CWebConst.DATABEAN_SET_VALUE, "0");
			}

			// 一覧表の表示設定を行う
			this.setList(paramBean[0], serviceFormBean);

			String flg = null;

			// 検索有無フラグを設定
			if (!"0".equals(serviceFormBean.sendMessageString(DKW03001SFConst.DISP_COUNT, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				flg = SEACH_FLG_TRUE;
			}
			else
			{
				flg = SEACH_FLG_FALSE;
			}
			serviceFormBean.sendMessageString(DKW03001SFConst.SEARCH_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, flg);
		}

		// パラメータ作成
		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, "DKSV0095");

		// DataBean⇔BPの上りマッピングを行う
		DKSV0095_DKSV0095OPDBMapper mapper = new DKSV0095_DKSV0095OPDBMapper();
		mapper.setDKSV009501SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV009502SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV009503SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV009504SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// 検索結果格納用マップを生成
		// サービス呼出
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		// エラー処理
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		JCCMessageCache.setMessageCache();

		// DataBean⇔BPの下りマッピングを行う
		mapper.getDKSV009501SC(paramBean, outputMap);
		mapper.getDKSV009502SC(paramBean, outputMap);
		mapper.getDKSV009503SC(paramBean, outputMap);

		// プルダウンの要素にインデックスを付与する
		appendPrefix(getBean(this, DKW03001SFConst.I_CHSHT_JOKEN), DKW03001SFConst.CHSHT_JOKEN_NM_LIST_01);
		pushEmptyToTopOfPulldown(DKW03001SFConst.I_SHKA_MT, DKW03001SFConst.SHKA_MT_CD_LIST_02, DKW03001SFConst.SHKA_MT_NM_LIST_02);
		pushEmptyToTopOfPulldown(DKW03001SFConst.I_KEI_SVC_RKN, DKW03001SFConst.KEI_SVC_CD_LIST_04, DKW03001SFConst.KEI_SVC_NM_LIST_04);

		// 遷移先画面IDの設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW03001, JDKScreenConst.SCREEN_NAME_DKW03001);

		// メニュー以外の場合
		if (SEACH_FLG_TRUE.equals(umuFlg))
		{
			// 抽出条件プルダウンの選択値を設定
			judgeCd = JUDGECD_CHSHTJOKEN;
			int chshtJokenIndex = this.getCodeToIndexForDdl(bkChshtJoken, serviceFormBean, judgeCd);
			X31SDataBeanAccessArray chshtJokenArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_CHSHT_JOKEN);
			X31SDataBeanAccess chshtJoken = chshtJokenArray.getDataBean(0);
			chshtJoken.sendMessageString(DKW03001SFConst.CHSHT_JOKEN_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(chshtJokenIndex));
			// 出荷元プルダウンの選択値を設定
			judgeCd = JUDGECD_SHKAMT;
			int shkaMtIndex = this.getCodeToIndexForDdl(bkShkaMt, serviceFormBean, judgeCd);
			X31SDataBeanAccessArray shkaMtArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_SHKA_MT);
			X31SDataBeanAccess shkaMt = shkaMtArray.getDataBean(0);
			shkaMt.sendMessageString(DKW03001SFConst.SHKA_MT_INDEX_02, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(shkaMtIndex));
			// 契約サービスプルダウンの選択値を設定
			judgeCd = JUDGECD_KEISVC;
			int keiSvcIndex = this.getCodeToIndexForDdl(bkKeiSvc, serviceFormBean, judgeCd);
			X31SDataBeanAccessArray keiSvcArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_KEI_SVC_RKN);
			X31SDataBeanAccess keiSvc = keiSvcArray.getDataBean(0);
			keiSvc.sendMessageString(DKW03001SFConst.KEI_SVC_INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(keiSvcIndex));
		}
		return true;
	}

	/**
	 * 出荷状況一覧照会画面の検索ボタンを処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean search() throws Exception
	{
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		String bkChshtJoken = null;
		String bkShkaMt = null;
		String bkShkaLotNo = null;
		String bkYMDSta = null;
		String bkYMDEnd = null;
		String bkSeizoNo = null;
		String bkSvkeiNo = null;
		String bkSysid = null;
		String bkKeiSvc = null;
		String bkKeiKbn = "0";
		String judgeCd = null;
		String func_code = JPCModelConstant.FUNC_CD_1;

		// 初期化
		// 一覧表示件数
		serviceFormBean.sendMessageString(DKW03001SFConst.DISP_COUNT, X31CWebConst.DATABEAN_SET_VALUE, "0");
		// 抽出条件
		serviceFormBean.sendMessage(DKW03001SFConst.CHSHT_JOKEN, X31CWebConst.DATABEAN_CLEAR);
		// 出荷元
		serviceFormBean.sendMessage(DKW03001SFConst.SHKA_MT, X31CWebConst.DATABEAN_CLEAR);
		// 対象開始日
		serviceFormBean.sendMessage(DKW03001SFConst.TG_STA, X31CWebConst.DATABEAN_CLEAR);
		// 対象終了日
		serviceFormBean.sendMessage(DKW03001SFConst.TG_END, X31CWebConst.DATABEAN_CLEAR);
		// 契約サービス
		serviceFormBean.sendMessage(DKW03001SFConst.KEI_SVC_RKN, X31CWebConst.DATABEAN_CLEAR);
		// 契約サービス区分
		serviceFormBean.sendMessage(DKW03001SFConst.KEI_SVC_KBN, X31CWebConst.DATABEAN_CLEAR);
		// 出荷状況一覧照会明細リスト
		serviceFormBean.getDataBeanArray(DKW03001SFConst.SHOKAI_LIST).clearArray();
		// 行番号
		serviceFormBean.sendMessage(DKW03001SFConst.ROW_NO, X31CWebConst.DATABEAN_CLEAR);
		// ページングキー
		serviceFormBean.sendMessage(DKW03001SFConst.PAGEING_KEY, X31CWebConst.DATABEAN_CLEAR);

		// 検索時抽出条件コード
		serviceFormBean.sendMessage(DKW03001SFConst.BK_CHSHT_JOKEN, X31CWebConst.DATABEAN_CLEAR);
		// 検索時出荷元コード
		serviceFormBean.sendMessage(DKW03001SFConst.BK_SHKA_MT, X31CWebConst.DATABEAN_CLEAR);
		// 検索時出荷ロット番号
		serviceFormBean.sendMessage(DKW03001SFConst.BK_I_SHKA_LOT_NO, X31CWebConst.DATABEAN_CLEAR);
		// 検索時対象開始日
		serviceFormBean.sendMessage(DKW03001SFConst.BK_TG_STA, X31CWebConst.DATABEAN_CLEAR);
		// 検索時対象終了日
		serviceFormBean.sendMessage(DKW03001SFConst.BK_TG_END, X31CWebConst.DATABEAN_CLEAR);
		// 検索時製造番号
		serviceFormBean.sendMessage(DKW03001SFConst.BK_I_SEIZO_NO, X31CWebConst.DATABEAN_CLEAR);
		// 検索時サービス契約番号
		serviceFormBean.sendMessage(DKW03001SFConst.BK_I_SVKEI_NO, X31CWebConst.DATABEAN_CLEAR);
		// 検索時ＳＹＳＩＤ
		serviceFormBean.sendMessage(DKW03001SFConst.BK_I_SYSID, X31CWebConst.DATABEAN_CLEAR);
		// 検索時契約サービスコード
		serviceFormBean.sendMessage(DKW03001SFConst.BK_KEI_SVC, X31CWebConst.DATABEAN_CLEAR);
		// 検索時契約サービス区分
		serviceFormBean.sendMessage(DKW03001SFConst.BK_KEI_KBN, X31CWebConst.DATABEAN_CLEAR);

		// ページング情報の設定
		JCCWebCommon.clearPageLinkInfo(this, JDKScreenConst.SCREEN_ID_DKW03001);

		// 検索時抽出条件コードを設定
		judgeCd = JUDGECD_CHSHTJOKEN;
		X31SDataBeanAccessArray chshtJokenArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_CHSHT_JOKEN);
		String chshtJokenIndex = chshtJokenArray.getDataBean(0).sendMessageString(DKW03001SFConst.CHSHT_JOKEN_INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);
		bkChshtJoken = this.getIndexToCodeForDdl(Integer.valueOf(chshtJokenIndex), serviceFormBean, judgeCd);
		serviceFormBean.sendMessageString(DKW03001SFConst.CHSHT_JOKEN, X31CWebConst.DATABEAN_SET_VALUE, bkChshtJoken);

		// 検索時出荷元コードを設定
		judgeCd = JUDGECD_SHKAMT;
		X31SDataBeanAccessArray shkaMtArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_SHKA_MT);
		String shkaMtIndex = shkaMtArray.getDataBean(0).sendMessageString(DKW03001SFConst.SHKA_MT_INDEX_02, X31CWebConst.DATABEAN_GET_VALUE);
		bkShkaMt = this.getIndexToCodeForDdl(Integer.valueOf(shkaMtIndex), serviceFormBean, judgeCd);
		serviceFormBean.sendMessageString(DKW03001SFConst.SHKA_MT, X31CWebConst.DATABEAN_SET_VALUE, bkShkaMt);

		// 検索時出荷ロット番号を設定
		bkShkaLotNo = serviceFormBean.sendMessageString(DKW03001SFConst.I_SHKA_LOT_NO, X31CWebConst.DATABEAN_GET_VALUE);

		// 対象日（FROM）
		X31SDataBeanAccessArray ymdStaArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_TG_STA);
		X31SDataBeanAccess ymdSta = ymdStaArray.getDataBean(0);
		// 年を取得
		String fromYear = ymdSta.sendMessageString(DKW03001SFConst.YEAR_03, X31CWebConst.DATABEAN_GET_VALUE);
		// 月を取得
		String fromMon = ymdSta.sendMessageString(DKW03001SFConst.MON_03, X31CWebConst.DATABEAN_GET_VALUE);
		// 日を取得
		String fromDay = ymdSta.sendMessageString(DKW03001SFConst.DAY_03, X31CWebConst.DATABEAN_GET_VALUE);

		if (!JDKCommonUtil.isNull(fromYear) || !JDKCommonUtil.isNull(fromMon) || !JDKCommonUtil.isNull(fromDay))
		{
			bkYMDSta = fromYear + fromMon + fromDay;
		}
		// 検索用対象開始日を設定
		serviceFormBean.sendMessageString(DKW03001SFConst.TG_STA, X31CWebConst.DATABEAN_SET_VALUE, bkYMDSta);

		// 対象日（TO）
		X31SDataBeanAccessArray ymdEndArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_TG_END);
		X31SDataBeanAccess ymdEnd = ymdEndArray.getDataBean(0);
		// 年を取得
		String toYear = ymdEnd.sendMessageString(DKW03001SFConst.YEAR_03, X31CWebConst.DATABEAN_GET_VALUE);
		// 月を取得
		String toMon = ymdEnd.sendMessageString(DKW03001SFConst.MON_03, X31CWebConst.DATABEAN_GET_VALUE);
		// 日を取得
		String toDay = ymdEnd.sendMessageString(DKW03001SFConst.DAY_03, X31CWebConst.DATABEAN_GET_VALUE);

		if (!JDKCommonUtil.isNull(toYear) || !JDKCommonUtil.isNull(toMon) || !JDKCommonUtil.isNull(toDay))
		{
			bkYMDEnd = toYear + toMon + toDay;
		}
		// 検索用対象終了日を設定
		serviceFormBean.sendMessageString(DKW03001SFConst.TG_END, X31CWebConst.DATABEAN_SET_VALUE, bkYMDEnd);

		// 検索時製造番号を設定
		bkSeizoNo = serviceFormBean.sendMessageString(DKW03001SFConst.I_SEIZO_NO, X31CWebConst.DATABEAN_GET_VALUE);

		// 検索時サービス契約番号を設定
		bkSvkeiNo = serviceFormBean.sendMessageString(DKW03001SFConst.I_SVKEI_NO, X31CWebConst.DATABEAN_GET_VALUE);

		// 検索時ＳＹＳＩＤを設定
		bkSysid = serviceFormBean.sendMessageString(DKW03001SFConst.I_SYSID, X31CWebConst.DATABEAN_GET_VALUE);

		// 検索時契約サービスコードを設定
		judgeCd = JUDGECD_KEISVC;
		X31SDataBeanAccessArray keiSvcArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_KEI_SVC_RKN);
		String keiSvcIndex = keiSvcArray.getDataBean(0).sendMessageString(DKW03001SFConst.KEI_SVC_INDEX_04, X31CWebConst.DATABEAN_GET_VALUE);
		bkKeiSvc = this.getIndexToCodeForDdl(Integer.valueOf(keiSvcIndex), serviceFormBean, judgeCd);
		serviceFormBean.sendMessageString(DKW03001SFConst.KEI_SVC_RKN, X31CWebConst.DATABEAN_SET_VALUE, bkKeiSvc);

		// 検索時契約サービス区分を設定
		judgeCd = JUDGECD_KEISVCKBN;
		X31SDataBeanAccessArray keiSvcKbnArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_KEI_SVC_RKN);
		String keiSvcKbnIndex = keiSvcKbnArray.getDataBean(0).sendMessageString(DKW03001SFConst.KEI_SVC_INDEX_04, X31CWebConst.DATABEAN_GET_VALUE);
		bkKeiKbn = this.getIndexToCodeForDdl(Integer.valueOf(keiSvcKbnIndex), serviceFormBean, judgeCd);
		serviceFormBean.sendMessageString(DKW03001SFConst.KEI_SVC_KBN, X31CWebConst.DATABEAN_SET_VALUE, bkKeiKbn);

		X31SDataBeanAccess[] paramBean = {serviceFormBean};

		// 機能コードを設定
		// 出荷完了エラーリストが選択された場合、2を設定
		if (SHKA_FIN_ERR_LIST.equals(bkChshtJoken))
		{
			func_code = JPCModelConstant.FUNC_CD_2;
		}
		// 上記以外の場合、1を設定
		else
		{
			func_code = JPCModelConstant.FUNC_CD_1;
		}

		// 引継用項目にデータを格納
		serviceFormBean.sendMessageString(DKW03001SFConst.BK_CHSHT_JOKEN, X31CWebConst.DATABEAN_SET_VALUE, bkChshtJoken);
		serviceFormBean.sendMessageString(DKW03001SFConst.BK_SHKA_MT, X31CWebConst.DATABEAN_SET_VALUE, bkShkaMt);
		serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SHKA_LOT_NO, X31CWebConst.DATABEAN_SET_VALUE, bkShkaLotNo);
		serviceFormBean.sendMessageString(DKW03001SFConst.BK_TG_STA, X31CWebConst.DATABEAN_SET_VALUE, bkYMDSta);
		serviceFormBean.sendMessageString(DKW03001SFConst.BK_TG_END, X31CWebConst.DATABEAN_SET_VALUE, bkYMDEnd);
		serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SEIZO_NO, X31CWebConst.DATABEAN_SET_VALUE, bkSeizoNo);
		serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SVKEI_NO, X31CWebConst.DATABEAN_SET_VALUE, bkSvkeiNo);
		serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SYSID, X31CWebConst.DATABEAN_SET_VALUE, bkSysid);
		serviceFormBean.sendMessageString(DKW03001SFConst.BK_KEI_SVC, X31CWebConst.DATABEAN_SET_VALUE, bkKeiSvc);
		serviceFormBean.sendMessageString(DKW03001SFConst.BK_KEI_KBN, X31CWebConst.DATABEAN_SET_VALUE, bkKeiKbn);

		// サービスの呼び出しを行う
		putServiceDKSV0097(paramBean, func_code, true);

		// 行番号を設定
		String rowNo = 
			serviceFormBean.sendMessageString(DKW03001SFConst.ROW_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (JDKCommonUtil.isNull(rowNo))
		{
			serviceFormBean.sendMessageString(DKW03001SFConst.ROW_NO, 
												X31CWebConst.DATABEAN_SET_VALUE, "0");
		}

		// 一覧表の表示設定を行う
		this.setList(paramBean[0], serviceFormBean);

		String flg = null;

		// 検索有無フラグを設定
		if (!"0".equals(serviceFormBean.sendMessageString(DKW03001SFConst.DISP_COUNT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			flg = SEACH_FLG_TRUE;
		}
		else
		{
			flg = SEACH_FLG_FALSE;
		}
		serviceFormBean.sendMessageString(DKW03001SFConst.SEARCH_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, flg);

		// 遷移先画面IDの設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW03001, JDKScreenConst.SCREEN_NAME_DKW03001);

		return true;
	}

	/**
	 * ページングを処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean paging() throws Exception
	{
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		// 初期化
		serviceFormBean.sendMessage(DKW03001SFConst.CHSHT_JOKEN, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.SHKA_MT, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.TG_STA, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.TG_END, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.KEI_SVC_RKN, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.KEI_SVC_KBN, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.getDataBeanArray(DKW03001SFConst.SHOKAI_LIST).clearArray();
		serviceFormBean.sendMessage(DKW03001SFConst.PAGEING_KEY, X31CWebConst.DATABEAN_CLEAR);

		// 退避データを設定
		serviceFormBean.sendMessageString(DKW03001SFConst.CHSHT_JOKEN, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_CHSHT_JOKEN , X31CWebConst.DATABEAN_GET_VALUE));
		serviceFormBean.sendMessageString(DKW03001SFConst.SHKA_MT, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_SHKA_MT , X31CWebConst.DATABEAN_GET_VALUE));
		serviceFormBean.sendMessageString(DKW03001SFConst.TG_STA, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_TG_STA , X31CWebConst.DATABEAN_GET_VALUE));
		serviceFormBean.sendMessageString(DKW03001SFConst.TG_END, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_TG_END , X31CWebConst.DATABEAN_GET_VALUE));
		serviceFormBean.sendMessageString(DKW03001SFConst.KEI_SVC_RKN, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_KEI_SVC , X31CWebConst.DATABEAN_GET_VALUE));
		serviceFormBean.sendMessageString(DKW03001SFConst.KEI_SVC_KBN, X31CWebConst.DATABEAN_SET_VALUE, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_KEI_KBN , X31CWebConst.DATABEAN_GET_VALUE));

		X31SDataBeanAccess[] paramBean = {serviceFormBean};

		String chshtJoken = serviceFormBean.sendMessageString(DKW03001SFConst.CHSHT_JOKEN, X31CWebConst.DATABEAN_GET_VALUE);

		// 機能コードを設定
		String func_code = "";
		// 出荷完了エラーリストが選択された場合、2を設定
		if (SHKA_FIN_ERR_LIST.equals(chshtJoken))
		{
			func_code = JPCModelConstant.FUNC_CD_2;
		}
		// 上記以外の場合、1を設定
		else
		{
			func_code = JPCModelConstant.FUNC_CD_1;
		}

		// サービスの呼び出しを行う
		putServiceDKSV0097(paramBean, func_code, true);

		// 行番号を設定
		serviceFormBean.sendMessageString(DKW03001SFConst.ROW_NO, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 一覧表の表示設定を行う
		this.setList(paramBean[0], serviceFormBean);

		// 検索有無フラグを設定
		if (!"0".equals(serviceFormBean.sendMessageString(DKW03001SFConst.DISP_COUNT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			serviceFormBean.sendMessageString(DKW03001SFConst.SEARCH_UM_FLG, 
					X31CWebConst.DATABEAN_SET_VALUE, SEACH_FLG_TRUE);
		}
		else
		{
			serviceFormBean.sendMessageString(DKW03001SFConst.SEARCH_UM_FLG, 
					X31CWebConst.DATABEAN_SET_VALUE, SEACH_FLG_FALSE);
		}

		// 遷移先画面IDの設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW03001, JDKScreenConst.SCREEN_NAME_DKW03001);

		return true;
	}

	/**
	 * 出荷状況一覧照会画面の詳細ボタンを処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	public boolean showDetail() throws Exception
	{
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		X31SDataBeanAccessArray shokaiList = serviceFormBean.getDataBeanArray(DKW03001SFConst.SHOKAI_LIST);
		int idx = Integer.parseInt(JDKWebCommon.getData(serviceFormBean, DKW03001SFConst.ROW_NO));
		X31SDataBeanAccess subbean = shokaiList.getDataBean(idx);

		// 画面情報を設定
		HashMap dataMap = new HashMap();

		// 配送対象物品番号
		dataMap.put(DKW03002SFConst.HAISO_TAIBPIN_NO, subbean.sendMessageString(DKW03001SFConst.L_HAISO_TAIBPIN_NO_05, 
																					X31CWebConst.DATABEAN_GET_VALUE));
		// 検索時抽出条件コード
		dataMap.put(DKW03002SFConst.CHSHT_JOKEN, serviceFormBean.sendMessageString(
																DKW03001SFConst.BK_CHSHT_JOKEN, X31CWebConst.DATABEAN_GET_VALUE));

		// 画面情報を設定
		JCCWebCommon.setScreenInfo(this, SCREEN_ID_DKW03002, dataMap);

		X31SWebLog.DEBUG_LOG.debug("引き継ぎ情報Mapの内容：");
		X31SWebLog.DEBUG_LOG.debug(dataMap);

		// 戻る際に必要な情報を設定
		HashMap returnMap = new HashMap();
		// 検索有無フラグ
		returnMap.put(DKW03001SFConst.SEARCH_UM_FLG, 
						serviceFormBean.sendMessageString(DKW03001SFConst.SEARCH_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		// ページングキー
		returnMap.put(DKW03001SFConst.PAGEING_KEY, 
						subbean.sendMessageString(DKW03001SFConst.L_HAISO_TAIBPIN_NO_05, X31CWebConst.DATABEAN_GET_VALUE));

		// 検索条件
		returnMap.put(DKW03001SFConst.BK_CHSHT_JOKEN, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_CHSHT_JOKEN, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(DKW03001SFConst.BK_SHKA_MT, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_SHKA_MT, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(DKW03001SFConst.BK_I_SHKA_LOT_NO, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SHKA_LOT_NO, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(DKW03001SFConst.BK_TG_STA, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_TG_STA, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(DKW03001SFConst.BK_TG_END, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_TG_END, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(DKW03001SFConst.BK_I_SEIZO_NO, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SEIZO_NO, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(DKW03001SFConst.BK_I_SVKEI_NO, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SVKEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(DKW03001SFConst.BK_I_SYSID, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_I_SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(DKW03001SFConst.BK_KEI_SVC, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_KEI_SVC, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(DKW03001SFConst.BK_KEI_KBN, 
				serviceFormBean.sendMessageString(DKW03001SFConst.BK_KEI_KBN, X31CWebConst.DATABEAN_GET_VALUE));

		X31SWebLog.DEBUG_LOG.debug("引き継ぎ情報Mapの内容：");
		X31SWebLog.DEBUG_LOG.debug(returnMap);

		// 画面情報を設定
		JCCWebCommon.setScreenInfo(this, SCREEN_ID_DKW03001, returnMap);
		JCCWebCommon.setScreenId(this, SCREEN_ID_DKW03002, SCREEN_ID_DKW03001);

		// 画面遷移処理
		setNextScreen(SCREEN_ID_DKW03002, SCREEN_NAME_DKW03002);

		return true;
	}

	/**
	 * 出荷状況一覧照会画面のクリアボタンを処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean clear() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		// 抽出条件をクリア
		X31SDataBeanAccessArray chshtJokenArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_CHSHT_JOKEN);
		X31SDataBeanAccess chshtJokenIndex = chshtJokenArray.getDataBean(0);
		chshtJokenIndex.sendMessage(DKW03001SFConst.CHSHT_JOKEN_INDEX_01, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.CHSHT_JOKEN, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.BK_CHSHT_JOKEN, X31CWebConst.DATABEAN_CLEAR);

		// 出荷元をクリア
		X31SDataBeanAccessArray shkaMtArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_SHKA_MT);
		X31SDataBeanAccess shkaMtIndex = shkaMtArray.getDataBean(0);
		shkaMtIndex.sendMessage(DKW03001SFConst.SHKA_MT_INDEX_02, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.SHKA_MT, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.BK_SHKA_MT, X31CWebConst.DATABEAN_CLEAR);

		// 出荷ロット番号をクリア
		serviceFormBean.sendMessage(DKW03001SFConst.I_SHKA_LOT_NO, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.BK_I_SHKA_LOT_NO, X31CWebConst.DATABEAN_CLEAR);

		// 対象日（FROM）をクリア
		X31SDataBeanAccessArray ymdStaArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_TG_STA);
		X31SDataBeanAccess ymdSta = ymdStaArray.getDataBean(0);
		ymdSta.sendMessage(DKW03001SFConst.YEAR_03, X31CWebConst.DATABEAN_CLEAR);
		ymdSta.sendMessage(DKW03001SFConst.MON_03, X31CWebConst.DATABEAN_CLEAR);
		ymdSta.sendMessage(DKW03001SFConst.DAY_03, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.TG_STA, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.BK_TG_STA, X31CWebConst.DATABEAN_CLEAR);

		// 対象日（TO）をクリア
		X31SDataBeanAccessArray ymdEndArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_TG_END);
		X31SDataBeanAccess ymdEnd = ymdEndArray.getDataBean(0);
		ymdEnd.sendMessage(DKW03001SFConst.YEAR_03, X31CWebConst.DATABEAN_CLEAR);
		ymdEnd.sendMessage(DKW03001SFConst.MON_03, X31CWebConst.DATABEAN_CLEAR);
		ymdEnd.sendMessage(DKW03001SFConst.DAY_03, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.TG_END, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.BK_TG_END, X31CWebConst.DATABEAN_CLEAR);

		// 製造番号をクリア
		serviceFormBean.sendMessage(DKW03001SFConst.I_SEIZO_NO, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.BK_I_SEIZO_NO, X31CWebConst.DATABEAN_CLEAR);

		// サービス契約番号をクリア
		serviceFormBean.sendMessage(DKW03001SFConst.I_SVKEI_NO, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.BK_I_SVKEI_NO, X31CWebConst.DATABEAN_CLEAR);

		// SYSIDをクリア
		serviceFormBean.sendMessage(DKW03001SFConst.I_SYSID, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.BK_I_SYSID, X31CWebConst.DATABEAN_CLEAR);

		// 契約サービスをクリア
		X31SDataBeanAccessArray keiSvcArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_KEI_SVC_RKN);
		X31SDataBeanAccess keiSvcIndex = keiSvcArray.getDataBean(0);
		keiSvcIndex.sendMessage(DKW03001SFConst.KEI_SVC_INDEX_04, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.KEI_SVC_RKN, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.BK_KEI_SVC, X31CWebConst.DATABEAN_CLEAR);

		// 契約サービス区分をクリア
		serviceFormBean.sendMessage(DKW03001SFConst.KEI_SVC_KBN, X31CWebConst.DATABEAN_CLEAR);
		serviceFormBean.sendMessage(DKW03001SFConst.BK_KEI_KBN, X31CWebConst.DATABEAN_CLEAR);

		// 出荷状況一覧照会明細リストをクリア
		serviceFormBean.getDataBeanArray(DKW03001SFConst.SHOKAI_LIST).clearArray();

		// 行番号をクリア
		serviceFormBean.sendMessage(DKW03001SFConst.ROW_NO, X31CWebConst.DATABEAN_CLEAR);

		// 一覧表示件数をクリア
		serviceFormBean.sendMessageString(DKW03001SFConst.DISP_COUNT, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 遷移先画面IDを設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW03001);

		// 検索有無フラグを設定
		serviceFormBean.sendMessageString(DKW03001SFConst.SEARCH_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");

		return true;
	}

	/**
	 * 出荷状況一覧照会画面のCSV出力ボタンを処理します。
	 * <br>
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean outputCsv() throws Exception
	{
		record_count = 0;
		String chshtJoken = "";
		String func_code = "";
		String fileData = "";
		StringBuffer fileName = new StringBuffer();

		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {serviceFormBean};
		chshtJoken = serviceFormBean.sendMessageString(DKW03001SFConst.BK_CHSHT_JOKEN, X31CWebConst.DATABEAN_GET_VALUE);

		// 機能コードを設定
		// 出荷完了エラーリストが選択された場合、4を設定
		if (SHKA_FIN_ERR_LIST.equals(chshtJoken))
		{
			func_code = JPCModelConstant.FUNC_CD_4;
		}
		// 上記以外の場合、3を設定
		else
		{
			func_code = JPCModelConstant.FUNC_CD_3;
		}
		// サービスの呼び出しを行う
		if (!putServiceDKSV0097(paramBean, func_code, false))
		{
			return true;
		}

		// ファイル名の作成を行う
		// 出荷状況一覧が選択された場合
		if (SHKA_STAT_LIST.equals(chshtJoken))
		{
			fileName.append(CSV_FILE_NAME_001);
		}
		// 出荷処理待ちリストが選択された場合
		else if (SHKA_WAIT_LIST.equals(chshtJoken))
		{
			fileName.append(CSV_FILE_NAME_002);
		}
		// 出荷完了リストが選択された場合
		else if (SHKA_FIN_LIST.equals(chshtJoken))
		{
			fileName.append(CSV_FILE_NAME_003);
		}
		// 出荷キャンセル依頼書が選択された場合
		else if (SHKA_CANCEL.equals(chshtJoken))
		{
			fileName.append(CSV_FILE_NAME_004);
		}
		// 出荷完了エラーリストが選択された場合
		else
		{
			fileName.append(CSV_FILE_NAME_005);
		}
		fileData = buildFile(chshtJoken);

		// ダウンロード
		JCCWebCommon.setTempDownloadFile(this, fileData.getBytes(JDKStrConst.CHAR_SET_WIN31J), fileName.toString());
		getServiceFormBean().getDataBeanArray(DKW03001SFConst.SHOKAI_LIST_CSV).clearArray();

		return true;
	}

	/**
	 * CSVファイルを生成します。
	 * @param chshtJoken 抽出条件
	 * @return CSVファイル
	 */
	private String buildFile(String chshtJoken)
	{
		X31SDataBeanAccessArray datas = getServiceFormBean().getDataBeanArray(DKW03001SFConst.SHOKAI_LIST_CSV);

		StringBuffer bodyRecords = new StringBuffer();
		for (int i = 0; i < datas.getCount(); i++)
		{
			if (bodyRecords.length() > 0)
			{
				bodyRecords.append(JDKStrConst.LINE_SEPARATOR);
			}
			bodyRecords.append(buildDataRecord(datas.getDataBean(i)));
		}

		String file = join(JDKStrConst.LINE_SEPARATOR,
							buildHeaderRecord(chshtJoken),
							bodyRecords.toString());

		DEBUG_LOG.debug(String.format("ファイル内容：%s", file));

		return file;
	}

	/**
	 * 出力ファイルのヘッダ部を生成します。
	 * @param chshtJoken 抽出条件
	 * @return ヘッダレコード
	 */
	private String buildHeaderRecord(String chshtJoken)
	{
		// 出荷完了エラーリストが選択された場合
		if (SHKA_FIN_ERR_LIST.equals(chshtJoken))
		{
			return join(JDKStrConst.COMMA, 
					dqot(CSV_TITLE_COUNT), 
					dqot(CSV_TITLE_HAISOIRAIYMD), 
					dqot(CSV_TITLE_SVCKEINO), 
					dqot(CSV_TITLE_SYSID), 
					dqot(CSV_TITLE_KEISVC), 
					dqot(CSV_TITLE_SHKASK), 
					dqot(CSV_TITLE_MDLNO), 
					dqot(CSV_TITLE_KIKIKEIDIV), 
					dqot(CSV_TITLE_SEIZONO), 
					dqot(CSV_TITLE_CNT), 
					dqot(CSV_TITLE_ERR), 
					dqot(CSV_TITLE_SHKAMT), 
					dqot(CSV_TITLE_SHKAMTTN), 
					dqot(CSV_TITLE_SHKALOTNO), 
					dqot(CSV_TITLE_SHKAFINYMD), 
					dqot(CSV_TITLE_DENPYONO),
					dqot(CSV_TITLE_SV_STA_YMD),
					dqot(CSV_TITLE_CHRG_STA_YMD),
					dqot(CSV_TITLE_KIKI_KEI_YMD),
					dqot(CSV_TITLE_STC_YMD),
					dqot(CSV_TITLE_KOCOMP_CD));
		}
		// 上記以外の場合
		else
		{
			return join(JDKStrConst.COMMA, 
					dqot(CSV_TITLE_COUNT), 
					dqot(CSV_TITLE_HAISOIRAIYMD), 
					dqot(CSV_TITLE_SVCKEINO), 
					dqot(CSV_TITLE_SYSID), 
					dqot(CSV_TITLE_KEISVC), 
					dqot(CSV_TITLE_SHKASK), 
					dqot(CSV_TITLE_MDLNO), 
					dqot(CSV_TITLE_KIKIKEIDIV), 
					dqot(CSV_TITLE_SEIZONO), 
					dqot(CSV_TITLE_CNT), 
					dqot(CSV_TITLE_SHKASTAT), 
					dqot(CSV_TITLE_SHKAMT), 
					dqot(CSV_TITLE_SHKAMTTN), 
					dqot(CSV_TITLE_SHKALOTNO), 
					dqot(CSV_TITLE_SHKAFINYMD), 
					dqot(CSV_TITLE_DENPYONO),
					dqot(CSV_TITLE_SV_STA_YMD),
					dqot(CSV_TITLE_CHRG_STA_YMD),
					dqot(CSV_TITLE_KIKI_KEI_YMD),
					dqot(CSV_TITLE_STC_YMD),
					dqot(CSV_TITLE_KOCOMP_CD));
		}
	}

	/**
	 * 出力ファイルのデータ部を生成します。
	 * @param data 行データ
	 * @return データレコード
	 */
	private String buildDataRecord(X31SDataBeanAccess data) 
	{
		// 項番
		record_count++;
		String strCnt = Integer.toString(record_count);
		// 配送依頼日
		String haisoIraiYMD = JPCUtilCommon.formatDate(getData(data, DKW03001SFConst.L_HAISO_REQ_YMD_05));
		// サービス契約番号
		String svcKeiNo = getData(data, DKW03001SFConst.L_SVKEI_NO_05);
		// SYSID
		String sysid = getData(data, DKW03001SFConst.L_SYSID_05);

		// 契約サービス
		String keiSvc = "";
		if (!JDKCommonUtil.isNull(getData(data, DKW03001SFConst.L_PRC_GRP_KEI_SVC_05)))
		{
			keiSvc = getData(data, DKW03001SFConst.L_PRC_GRP_KEI_SVC_05);
		}
		else if (!JDKCommonUtil.isNull(getData(data, DKW03001SFConst.L_HOJIN_PRC_GRP_KEI_SVC_05)))
		{
			keiSvc = getData(data, DKW03001SFConst.L_HOJIN_PRC_GRP_KEI_SVC_05);
		}

		// 型番号
		String mdlNo = "";
		if (!JDKCommonUtil.isNull(getData(data, DKW03001SFConst.L_TAKNKIKI_MDL_NO_05)))
		{
			mdlNo = getData(data, DKW03001SFConst.L_TAKNKIKI_MDL_NO_05);
		}
		else if (!JDKCommonUtil.isNull(getData(data, DKW03001SFConst.L_HUZOKUHIN_MDL_NO_05)))
		{
			mdlNo = getData(data, DKW03001SFConst.L_HUZOKUHIN_MDL_NO_05);
		}
		else if (!JDKCommonUtil.isNull(getData(data, DKW03001SFConst.L_TAKNKIKI_SETHIN_MDL_NO_05)))
		{
			mdlNo = getData(data, DKW03001SFConst.L_TAKNKIKI_SETHIN_MDL_NO_05);
		}

		// 機器契約区分
		String kikiKeiDiv = getData(data, DKW03001SFConst.L_KIKI_KEI_DIV_05);
		// 製造番号
		String seizoNo = getData(data, DKW03001SFConst.L_SEIZO_NO_05);
		// 数量
		String cnt = getData(data, DKW03001SFConst.L_CNT_05);
		// 出荷状況／エラー内容
		String shkaJokyo = getData(data, DKW03001SFConst.L_SHKA_JOKYO_05);
		// 出荷元
		String shkaMt = getData(data, DKW03001SFConst.L_SHKA_MT_05);
		// 出荷元棚名
		String shkaMtTn = getData(data, DKW03001SFConst.L_SHKA_MT_SHELF_NM_05);
		// 出荷ロット番号
		String shkaLotNo = getData(data, DKW03001SFConst.L_SHKA_LOT_NO_05);
		// 出荷完了日
		String shkaFinYMD = JPCUtilCommon.formatDate(getData(data, DKW03001SFConst.L_SHKA_FIN_YMD_05));
		// 伝票NO
		String denpyoNo = getData(data, DKW03001SFConst.L_DENPYO_NO_05);

		// サービス開始日
		String svStaYMD = JPCUtilCommon.formatDate(getData(data, DKW03001SFConst.L_SV_STA_YMD_05));
		// 課金開始日
		String chrgStaYMD = JPCUtilCommon.formatDate(getData(data, DKW03001SFConst.L_CHRG_STA_YMD_05));
		// 機器契約日
		String kikiKeiYMD = JPCUtilCommon.formatDate(getData(data, DKW03001SFConst.L_KIKI_KEI_YMD_05));
		// 設置日
		String stcYMD = JPCUtilCommon.formatDate(getData(data, DKW03001SFConst.L_STC_YMD_05));
		// 工事会社コード
		String kocompCd = getData(data, DKW03001SFConst.L_KOCOMP_CD_05);
		
		// 出荷先
		String shkaSk = "";
		String haisoDiv = getData(data, DKW03001SFConst.L_HAISO_DIV_05);
		String haisoStat = getData(data, DKW03001SFConst.L_HAISO_STAT_05);
		// 配送ステータスが「受付済」の場合、または配送ステータスが「出荷済」かつ配送区分が「"01"：手渡し」の場合
		if ((HAISOSTAT_001.equals(haisoStat)) 
				|| ((HAISOSTAT_003.equals(haisoStat) || HAISOSTAT_004.equals(haisoStat)) && HAISODIV_TEWATASHI.equals(haisoDiv)))
		{
			// 「出荷先（機器送付先）」を設定
			shkaSk = getData(data, DKW03001SFConst.L_KIKI_SOHUS_SHKA_SK_05);
		}
		// 上記以外の場合
		else
		{
			// 「出荷先（配送先）」を設定
			shkaSk = getData(data, DKW03001SFConst.L_HISOS_SHKA_SK_05);

			// 「出荷先（配送先）」が取得できない場合
			if (shkaSk == null || shkaSk.equals(""))
			{
				// 「出荷先（機器送付先）」を設定
				shkaSk = getData(data, DKW03001SFConst.L_KIKI_SOHUS_SHKA_SK_05);
			}
		}

		return join(JDKStrConst.COMMA, 
				dqot(strCnt), 
				dqot(haisoIraiYMD), 
				dqot(svcKeiNo), 
				dqot(sysid), 
				dqot(keiSvc), 
				dqot(shkaSk), 
				dqot(mdlNo), 
				dqot(kikiKeiDiv), 
				dqot(seizoNo), 
				dqot(cnt), 
				dqot(shkaJokyo), 
				dqot(shkaMt), 
				dqot(shkaMtTn), 
				dqot(shkaLotNo), 
				dqot(shkaFinYMD), 
				dqot(denpyoNo),
				dqot(svStaYMD), 
				dqot(chrgStaYMD), 
				dqot(kikiKeiYMD), 
				dqot(stcYMD), 
				dqot(kocompCd));
	}

	/**
	 * 文字列をダブルクォーテッドする
	 * @param src 囲まれる文字列
	 * @return \"囲まれる文字列\"
	 */
	private String dqot(String src)
	{
		return String.format("\"%s\"", src);
	}

	/**
	 * 一覧表の表示設定を行います。
	 * <br>
	 * @param paramBean 設定する一覧のBean情報
	 * @param serviceFormBean 設定する画面のServiceFormBean
	 * @throws Exception
	 */
	private void setList(X31SDataBeanAccess paramBean, X31SDataBeanAccess serviceFormBean) throws Exception
	{
		X31SDataBeanAccessArray shokaiList = paramBean.getDataBeanArray(DKW03001SFConst.SHOKAI_LIST);

		for (int i = 0; i < shokaiList.getCount(); i++)
		{
			X31SDataBeanAccess subbean = shokaiList.getDataBean(i);

			// 契約サービスを設定
			String keiSvc = "";

			if (!JDKCommonUtil.isNull(subbean.sendMessageString(DKW03001SFConst.L_PRC_GRP_KEI_SVC_05, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				keiSvc = subbean.sendMessageString(DKW03001SFConst.L_PRC_GRP_KEI_SVC_05, X31CWebConst.DATABEAN_GET_VALUE);
			}
			else if (!JDKCommonUtil.isNull(subbean.sendMessageString(DKW03001SFConst.L_HOJIN_PRC_GRP_KEI_SVC_05, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				keiSvc = subbean.sendMessageString(DKW03001SFConst.L_HOJIN_PRC_GRP_KEI_SVC_05, X31CWebConst.DATABEAN_GET_VALUE);
			}
			subbean.sendMessageString(DKW03001SFConst.L_KEI_SVC_05, X31CWebConst.DATABEAN_SET_VALUE, keiSvc);
			subbean.sendMessageString(DKW03001SFConst.L_KEI_SVC_DISP_NM_05, X31CWebConst.DATABEAN_SET_VALUE, JDKWebCommon.substr(keiSvc, 0, 15));

			// 出荷先を設定
			String shkaSk = "";
			String haisoStat = subbean.sendMessageString(DKW03001SFConst.L_HAISO_STAT_05, X31CWebConst.DATABEAN_GET_VALUE);
			String haisoDiv = subbean.sendMessageString(DKW03001SFConst.L_HAISO_DIV_05, X31CWebConst.DATABEAN_GET_VALUE);
			// 配送ステータスが「受付済」の場合、または配送ステータスが「出荷済」かつ配送区分が「"01"：手渡し」の場合
			if ((HAISOSTAT_001.equals(haisoStat)) 
					|| ((HAISOSTAT_003.equals(haisoStat) || HAISOSTAT_004.equals(haisoStat)) && HAISODIV_TEWATASHI.equals(haisoDiv)))
			{
				// 「出荷先（機器送付先）」を設定
				shkaSk = subbean.sendMessageString(DKW03001SFConst.L_KIKI_SOHUS_SHKA_SK_05, X31CWebConst.DATABEAN_GET_VALUE);
			}
			// 上記以外の場合
			else
			{
				// 「出荷先（配送先）」を設定
				shkaSk = subbean.sendMessageString(DKW03001SFConst.L_HISOS_SHKA_SK_05, X31CWebConst.DATABEAN_GET_VALUE);
				
				// 「出荷先（配送先）」が取得できない場合
				if (shkaSk == null || shkaSk.equals("")) 
				{
					// 「出荷先（機器送付先）」を設定
					shkaSk = subbean.sendMessageString(DKW03001SFConst.L_KIKI_SOHUS_SHKA_SK_05, X31CWebConst.DATABEAN_GET_VALUE);
				}
			}
			subbean.sendMessageString(DKW03001SFConst.L_SHKA_SK_05, X31CWebConst.DATABEAN_SET_VALUE, shkaSk);
			subbean.sendMessageString(DKW03001SFConst.L_SHKA_SK_DISP_NM_05, X31CWebConst.DATABEAN_SET_VALUE, JDKWebCommon.substr(shkaSk, 0, 7));

			// 型番号を設定
			String mdlNo = "";

			if (!JDKCommonUtil.isNull(subbean.sendMessageString(DKW03001SFConst.L_TAKNKIKI_MDL_NO_05, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				mdlNo = subbean.sendMessageString(DKW03001SFConst.L_TAKNKIKI_MDL_NO_05, X31CWebConst.DATABEAN_GET_VALUE);
			}
			else if (!JDKCommonUtil.isNull(subbean.sendMessageString(DKW03001SFConst.L_HUZOKUHIN_MDL_NO_05, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				mdlNo = subbean.sendMessageString(DKW03001SFConst.L_HUZOKUHIN_MDL_NO_05, X31CWebConst.DATABEAN_GET_VALUE);
			}
			else if (!JDKCommonUtil.isNull(subbean.sendMessageString(DKW03001SFConst.L_TAKNKIKI_SETHIN_MDL_NO_05, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				mdlNo = subbean.sendMessageString(DKW03001SFConst.L_TAKNKIKI_SETHIN_MDL_NO_05, X31CWebConst.DATABEAN_GET_VALUE);
			}
			subbean.sendMessageString(DKW03001SFConst.L_MDL_NO_05, X31CWebConst.DATABEAN_SET_VALUE, mdlNo);

			// 出荷元表示名を設定
			String shkaMt = JDKWebCommon.substr(subbean.sendMessageString(DKW03001SFConst.L_SHKA_MT_05, X31CWebConst.DATABEAN_GET_VALUE), 0, 16);
			subbean.sendMessageString(DKW03001SFConst.L_SHKA_MT_DISP_NM_05, X31CWebConst.DATABEAN_SET_VALUE, shkaMt);

			// 出荷元棚名表示名を設定
			String shkaMtTn = JDKWebCommon.substr(subbean.sendMessageString(DKW03001SFConst.L_SHKA_MT_SHELF_NM_05, X31CWebConst.DATABEAN_GET_VALUE), 0, 7);
			subbean.sendMessageString(DKW03001SFConst.L_SHKA_MT_SHELF_NM_DISP_NM_05, X31CWebConst.DATABEAN_SET_VALUE, shkaMtTn);

			if (i % 2 == 1)
			{
				subbean.sendMessageString(DKW03001SFConst.L_COLOR_05, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}
			else
			{
				subbean.sendMessageString(DKW03001SFConst.L_COLOR_05, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			}
			subbean.sendMessageString(DKW03001SFConst.L_NO_05, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i + 1));
		}
		// 一覧表示件数を設定する
		serviceFormBean.sendMessageString(DKW03001SFConst.DISP_COUNT, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(shokaiList.getCount()));
	}

	/**
	 * サービス（DKSV0097）の呼び出しを行います。
	 * <br>
	 * @param paramBean パラメータとなるBean情報
	 * @param func_code 機能コード
	 * @param flg 検索／CSV出力（true：検索、false：CSV出力）
	 * @return 成否
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	private boolean putServiceDKSV0097(X31SDataBeanAccess[] paramBean, String func_code, Boolean flg) throws Exception
	{
		// ユースケースID格納用マップを生成
		HashMap<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0097");

		// マッピングクラスのインスタンスを生成
		DKSV0097_DKSV0097OPDBMapper mapper = new DKSV0097_DKSV0097OPDBMapper();

		HashMap<String, String> dataMap = new HashMap<String, String>();
		mapper.setDKSV009701SC(paramBean, dataMap, func_code);

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "DKSV009701SC", dataMap);

		// 検索結果格納用マップ
		HashMap outputMap = new HashMap<String, String>();
		
		// 処理前の時間を取得
		long searchStartTime = System.currentTimeMillis();
		
		try {
			// 検索処理呼出
			invokeService(paramMap, dataMap, outputMap);
			
		} catch (X31SRuntimeException ex) {
			if (System.currentTimeMillis() - searchStartTime > 240000)
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD840__I);
				return false;
			}
			else
			{
				throw ex;
			}
		}

		// リスト名を設定
		String listName = "";
		if (flg)
		{
			listName = DKW03001SFConst.SHOKAI_LIST;
		}
		else
		{
			listName = DKW03001SFConst.SHOKAI_LIST_CSV;
		}

		((X31SDataBeanAccessArray)paramBean[0].getDataBeanArray(listName)).clearArray();
		mapper.getDKSV009701SC(paramBean, outputMap, listName);

		if (flg)
		{
			// 検索エラーフラグの取得
			String searchErrFlg = JCCWebCommon.getSearchErrFlg("DKSV009701SC", outputMap);

			if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
			{
				// 検索結果が0件の場合の処理
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I);
				return false;
			}
			else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
			{
				// 検索結果が最大検索件数超えの場合の処理
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0340__I,
						new String [] {JCCWebCommon.getSearchConst("DKW03001_MAX_SHOW_CNT")});
				return false;
			}
			else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
			{
				// 表示ページに該当するデータがない
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0350__I);
			}

			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this,  "0", "DKSV009701SC", outputMap);

			// 一覧データに変更があった場合、行番号を再設定する
			String displayPageNum = (String)((HashMap)outputMap.get("DKSV009701SC")).get("display_no");
			if (!JDKCommonUtil.isNull(displayPageNum) && !"0".equals(displayPageNum))
			{
				X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
				serviceFormBean.sendMessageString(DKW03001SFConst.ROW_NO, X31CWebConst.DATABEAN_SET_VALUE, displayPageNum);
			}

			// 検索のコマンドIDを設定する。
			JCCWebCommon.setSearchCommand(this, "L_PAG_LIST");
		}

		return true;
	}

	/**
	 * 画面遷移先を設定します。
	 * <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 judgeCd 判定コード（"1"：抽出条件、"2"：出荷元、"3"：契約サービス）
	 * @return 取得したコード
	 */
	private String getIndexToCodeForDdl(int index, X31SDataBeanAccess serviceFormBean, String judgeCd)
	{
		String retCode = null;

		if (JUDGECD_CHSHTJOKEN.equals(judgeCd))
		{
			// 抽出条件コードリストを取得
			X31SDataBeanAccessArray chshtJokenArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_CHSHT_JOKEN);
			X31SDataBeanAccess chshtJoken = chshtJokenArray.getDataBean(0);
			retCode = chshtJoken.sendMessageString(DKW03001SFConst.CHSHT_JOKEN_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, index);
		}
		else if (JUDGECD_SHKAMT.equals(judgeCd))
		{
			// 出荷元コードリストを取得
			X31SDataBeanAccessArray shkaMtArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_SHKA_MT);
			X31SDataBeanAccess shkaMt = shkaMtArray.getDataBean(0);
			retCode = shkaMt.sendMessageString(DKW03001SFConst.SHKA_MT_CD_LIST_02, X31CWebConst.DATABEAN_GET_VALUE, index);
		}
		else if (JUDGECD_KEISVC.equals(judgeCd))
		{
			// 契約サービスコードリストを取得
			X31SDataBeanAccessArray keiSvcArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_KEI_SVC_RKN);
			X31SDataBeanAccess keiSvc = keiSvcArray.getDataBean(0);
			retCode = keiSvc.sendMessageString(DKW03001SFConst.KEI_SVC_CD_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, index);
		}
		else if (JUDGECD_KEISVCKBN.equals(judgeCd))
		{
			if (index != 0)
			{
				// 契約サービスコードリストを取得
				X31SDataBeanAccessArray keiSvcKbnArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_KEI_SVC_RKN);
				X31SDataBeanAccess keiSvcKbn = keiSvcKbnArray.getDataBean(0);
				retCode = keiSvcKbn.sendMessageString(DKW03001SFConst.KEI_SVC_KBN_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, index - 1);
			}
		}
		return retCode;
	}

	/**
	 * コードを引数にプルダウンからインデックスを取得します。
	 * @param code 状態コード
	 * @param serviceFormBean サービスフォームビーン
	 * @param judgeCd 判定コード（"1"：抽出条件、"2"：出荷元、"3"：契約サービス）
	 * @return 取得したインデックス
	 */
	private int getCodeToIndexForDdl(String code, X31SDataBeanAccess serviceFormBean, String judgeCd)
	{
		int retIndex = 0;

		if (JUDGECD_CHSHTJOKEN.equals(judgeCd))
		{
			// 抽出条件コードリストを取得
			X31SDataBeanAccessArray chshtJokenArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_CHSHT_JOKEN);
			X31SDataBeanAccess chshtJoken = chshtJokenArray.getDataBean(0);

			for (int i = 0; i < Integer.valueOf(chshtJoken.sendMessage(DKW03001SFConst.CHSHT_JOKEN_CD_LIST_01, 
					X31CWebConst.DATABEAN_GET_COUNT).toString()); i++)
			{
				if (code.equals(chshtJoken.sendMessageString(DKW03001SFConst.CHSHT_JOKEN_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, i)))
				{
					retIndex = i;
					break;
				}
			}
		}
		else if (JUDGECD_SHKAMT.equals(judgeCd))
		{
			// 出荷元コードリストを取得
			X31SDataBeanAccessArray shkaMtArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_SHKA_MT);
			X31SDataBeanAccess shkaMt = shkaMtArray.getDataBean(0);

			for (int i = 0; i < Integer.valueOf(shkaMt.sendMessage(DKW03001SFConst.SHKA_MT_CD_LIST_02, X31CWebConst.DATABEAN_GET_COUNT).toString()); i++)
			{
				if (code.equals(shkaMt.sendMessageString(DKW03001SFConst.SHKA_MT_CD_LIST_02, X31CWebConst.DATABEAN_GET_VALUE, i)))
				{
					retIndex = i;
					break;
				}
			}
		}
		else if (JUDGECD_KEISVC.equals(judgeCd))
		{
			// 契約サービスコードリストを取得
			X31SDataBeanAccessArray keiSvcArray = serviceFormBean.getDataBeanArray(DKW03001SFConst.I_KEI_SVC_RKN);
			X31SDataBeanAccess keiSvc = keiSvcArray.getDataBean(0);

			for (int i = 0; i < Integer.valueOf(keiSvc.sendMessage(DKW03001SFConst.KEI_SVC_CD_LIST_04, X31CWebConst.DATABEAN_GET_COUNT).toString()); i++)
			{
				if (code.equals(keiSvc.sendMessageString(DKW03001SFConst.KEI_SVC_CD_LIST_04, 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 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, "");
	}
}
