/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
*   モジュール名    ：物流管理システム
 *   ソースファイル名：DKW01601SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年09月01日
 *＜機能概要＞
 * 交換機器引渡画面を処理するロジッククラスです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/09/01   FJ）        新規作成
 *  ｖ5.00.00    2013/11/08   FJ）        (回線場所住所未確定フラグ、修理受付日フォーマット設定値の分岐追加）OM-2013-0004150
 *  v52.00.00	 2021/02/10	  FJ)平野	  【ANK-3903-00-00】故障交換登録業務改善対応
 *	ｖ56.00.00	2021/09/06	GDC)M. Gungog	【ANK-4038-00-00】光ローゼット化対応
 *	ｖ56.00.01	2021/12/27	FJ)謝			【ANK-4038-07-00】【eo定期】光ローゼット化対応(画面チェックをワーニングへ変更する対応)
 **********************************************************************/
package eo.web.webview.DKW01601SF;

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 static eo.web.webview.common.JDKWebCommon.setData;
import static eo.web.webview.common.JDKWebCommon.storePullDown;
import static eo.web.webview.DKW01601SF.DKW01601SFConst.*;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;

import com.fujitsu.futurity.web.x00.JCCWebServiceException;
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.X31CMessageResult.X31CMessageMoreInfo;

import static eo.common.constant.JDKStrConst.*;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JDKCommonUtil;
import eo.common.util.JPCEditString;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.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.JZMWebConst;
import eo.web.webview.mapping.DKSV0048_DKSV0048OPDBMapper;
import eo.web.webview.mapping.DKSV0060_DKSV0060OPDBMapper;
import eo.web.webview.mapping.DKSV0061_DKSV0061OPDBMapper;

/**
 * 交換機器引渡画面を処理するロジッククラスです。
 * @author 富士通
 */
public class DKW01601SFLogic extends JCCWebBusinessLogic
{
	/** シリアルバージョン */
	private static final long serialVersionUID = 1L;
	
	/** メッセージ */
	private static final String MSG_KOKAN_KIKI_HIKIWATASHI = "交換機器引渡登録";
	// ANK-3903-00-00 ADD START
    /** 活性非活性判定フラグ:非活性 */
    public static final String CHKONOFFFlg_OFF = "1";
    
    /** 修理完了チェック:1 */
    public static final String SHURI_FIN_CHK_ON = "1";
    // ANK-3903-00-00 ADD END
    
// ANK-4038-00-00 ADD START
    private static final String PREFIX_SET = "SET-";
// ANK-4038-00-00 ADD END
	/**
	 * サービスフォームBeanの初期化処理を行います。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		String screenId = JCCWebCommon.getScreenId(this);
		X31SDataBeanAccess[] paramBean = {serviceFormBean};
		
		// メニューからの遷移
		if (screenId != null)
		{
			HashMap<String, Object> map = JCCWebCommon.getScreenInfo(this);
			String buturyHozenNo = (String)map.get(BUTSURYUHOZEN_NO);
			paramBean[0].sendMessageString(DKW01601SFConst.KEY_BTRYHOZN_NO, X31CWebConst.DATABEAN_SET_VALUE, buturyHozenNo);
			paramBean[0].sendMessageString(DKW01601SFConst.KEY_UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));
		}
		else
		{
			return true;
		}

		// ユースケースID格納用マップを生成。
		HashMap paramMap = new HashMap();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0048");

		// マッピングクラスのインスタンスを生成
		DKSV0048_DKSV0048OPDBMapper mapper = new DKSV0048_DKSV0048OPDBMapper();
		HashMap dataMap = new HashMap();
		
		mapper.setDKSV004801SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV004802SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV004803SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV004806SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV004804_7SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		// 検索結果格納用マップ
		HashMap<String, String> outputMap = new HashMap<String, String>();

		// 検索処理呼出
		X31CMessageResult msgResult = invokeService(paramMap, dataMap, outputMap);

		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		JCCMessageCache.setMessageCache();

		mapper.getDKSV004801SC(paramBean, outputMap);
		mapper.getDKSV004802SC(paramBean, outputMap);
		mapper.getDKSV004803SC(paramBean, outputMap);
		mapper.getDKSV004804SC(paramBean, outputMap);
		mapper.getDKSV004805SC(paramBean, outputMap);
		mapper.getDKSV004806SC(paramBean, outputMap);
		mapper.getDKSV004807SC(paramBean, outputMap);
		
		// 遷移可否判断処理
		// 修理状況情報.物流保全ステータスの取得
		String btryhoznStat = getData(this, DKW01601SFConst.SHURI_JOKYO_INFO, DKW01601SFConst.SHURI_JOKYO_CD_01);

		// 物流保全ステータス（修理状況コード）が
		// "001"（受付）,"002"（修理依頼）,"003"（修理完了）,"004"（完了）でない場合）
		if (!BTRYHOZN_STAT_UKETSUKE.equals(btryhoznStat) && !BTRYHOZN_STAT_SHURI_IRAI.equals(btryhoznStat) 
				&& !BTRYHOZN_STAT_SHURI_FIN.equals(btryhoznStat) && !BTRYHOZN_STAT_FIN.equals(btryhoznStat))
		{
			return toSearch(screenId, JPCOnlineMessageConstant.EKB0810_NW, "データ", "交換機器引渡は");
		}
		
		// 機器修理でかつ代替機必要でない場合は当機能を使用できない
		if (SHURI.equals(getData(this, SHURI_JOKYO_INFO, SYOTI_DEV_CD_01)) && !DAITAIKI_HITUYO.equals(getData(this, SHURI_JOKYO_INFO, DAITAI_KIKI_CD_01)))
		{
			return toSearch(screenId, JPCOnlineMessageConstant.EKB0810_NW, "データ", "代替不要のため交換機器引渡は");
		}
		
		// 表示編集を行う
		setDispPram();
		// ANK-3903-00-00 ADD START
		// 初期表示の完了にtrueを設定
		serviceFormBean.sendMessageBoolean(DKW01601SFConst.I_FIN_CHK,X31CWebConst.DATABEAN_SET_VALUE, true);
		// 初期表示の修理完了チェックに"1"を設定
		serviceFormBean.sendMessageString(DKW01601SFConst.SHURI_FIN_CHECK,X31CWebConst.DATABEAN_SET_VALUE, SHURI_FIN_CHK_ON);
		// ANK-3903-00-00 ADD END
		pushEmptyToTopOfPulldown(DKW01601SFConst.HIKIWATASHI_GDS_DIV_INFO, 
				DKW01601SFConst.HIKIWATASHI_GDS_DIV_CD_LIST_05, DKW01601SFConst.HIKIWATASHI_GDS_DIV_NM_LIST_05);
		pushEmptyToTopOfPulldown(DKW01601SFConst.SHELF_DIV_INFO, DKW01601SFConst.SHELF_DIV_CD_LIST_06, DKW01601SFConst.SHELF_DIV_NM_LIST_06);
		pushEmptyToTopOfPulldown(DKW01601SFConst.MODEL_NO_INFO, DKW01601SFConst.MODEL_NO_CD_LIST_07, DKW01601SFConst.MODEL_NO_CD_DSP_LIST_07);
		pushEmptyToTopOfPulldown(DKW01601SFConst.TIME_INFO, DKW01601SFConst.TIME_CD_LIST_08, DKW01601SFConst.TIME_NM_LIST_08);
		
		// 修理対応履歴の交換引渡対応記録存在有無
		boolean resultSonzai = checkTaioCd(DKW01601SFConst.SHURI_TAIO_RIREKI_LIST, DKW01601SFConst.TAIO_DIV_CD_02, "02");
		// ANK-3903-00-00 ADD START
		// 修理対応履歴の修理完了記録存在有無
		boolean shuriFinUm = checkTaioCd(DKW01601SFConst.SHURI_TAIO_RIREKI_LIST, DKW01601SFConst.TAIO_DIV_CD_02, BTRYHOZN_TAIO_CD_SHURI_FIN);
		// 修理対応履歴に修理完了の記録があれば完了のチェックボックスを非活性とする
		if(shuriFinUm)
		{
			serviceFormBean.sendMessageString(DKW01601SFConst.CHK_ON_OFF_FLG,
					X31CWebConst.DATABEAN_SET_VALUE, CHKONOFFFlg_OFF);
		}
		// ANK-3903-00-00 ADD END
		if (!resultSonzai)
		{
			// 修理対応履歴の交換引渡対応記録が存在しない場合
			X31SDataBeanAccess workBean = getServiceFormBean().getDataBeanArray(DKW01601SFConst.WORKS).getDataBean(0);
			workBean.sendMessageString(DKW01601SFConst.EXISTS_FLG_09,
					X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 引渡年月日 設定
			String unyouYmd = getData(this, DKW01601SFConst.KEY_UNYO_YMD);
			X31SDataBeanAccess ymdBean = getServiceFormBean().getDataBeanArray(DKW01601SFConst.HIKIWATASHI_YMD).getDataBean(0);
			ymdBean.sendMessageString(DKW01601SFConst.HIKIWATASHI_DATE_YEAR_04,
					X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toYearFromYmd(unyouYmd));
			ymdBean.sendMessageString(DKW01601SFConst.HIKIWATASHI_DATE_MON_04,
					X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toMonthFromYmd(unyouYmd));
			ymdBean.sendMessageString(DKW01601SFConst.HIKIWATASHI_DATE_DATE_04,
					X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toDayFromYmd(unyouYmd));
			
			// 引渡商品区分コードに無償交換を設定
			// ANK-3903-00-00 MOD START
//			long index = getCdIndex(DKW01601SFConst.HIKIWATASHI_GDS_DIV_INFO, DKW01601SFConst.HIKIWATASHI_GDS_DIV_CD_LIST_05, getData(this, KOKAN_KIKI_HIKIWATASHI_INFO, HIKIWATASHI_GDS_DIV_CD_03));
			long index = 2;
			// ANK-3903-00-00 MOD END
			X31SDataBeanAccess hikiwatashiGdsDivInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.HIKIWATASHI_GDS_DIV_INFO).getDataBean(0);
			hikiwatashiGdsDivInfoList.sendMessageString(DKW01601SFConst.HIKIWATASHI_GDS_DIV_INDEX_05, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(index));
			
			// 型番号に修理受付時データを設定
			String modelNoCd = getData(this, DKW01601SFConst.SHURI_JOKYO_INFO, DKW01601SFConst.MDL_NO_01);
			if (!"".equals(modelNoCd))
			{
				long index1 = getCdIndex(DKW01601SFConst.MODEL_NO_INFO, DKW01601SFConst.MODEL_NO_CD_LIST_07, modelNoCd);
				X31SDataBeanAccess modelNoInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.MODEL_NO_INFO).getDataBean(0);
				modelNoInfoList.sendMessageString(DKW01601SFConst.MODEL_NO_INDEX_07, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(index1));
			}
			
			// ANK-3903-00-00 ADD START
			// 修理状況情報に取付機器管理場所棚コードの有無確認
			String attKikiKriplaceShelfCd = getData(this, DKW01601SFConst.SHURI_JOKYO_INFO, DKW01601SFConst.ATT_KIKI_KRIPLACE_SHELF_CD);
			if (!"".equals(attKikiKriplaceShelfCd))
			{
				long shelfIndex = getCdIndex(DKW01601SFConst.SHELF_DIV_INFO, DKW01601SFConst.SHELF_DIV_CD_LIST_06, attKikiKriplaceShelfCd);
				X31SDataBeanAccess shelfDivInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.SHELF_DIV_INFO).getDataBean(0);
				shelfDivInfoList.sendMessageString(DKW01601SFConst.SHELF_DIV_INDEX_06, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(shelfIndex));
			}
			// 修理状況情報に取付機器宅内機器型式コードの有無確認
			String attKikiTkkkmdlCd = getData(this, DKW01601SFConst.SHURI_JOKYO_INFO, DKW01601SFConst.ATT_KIKI_TKKKMDL_CD);
			if (!"".equals(attKikiTkkkmdlCd))
			{
				long kataIndex = getCdIndex(DKW01601SFConst.MODEL_NO_INFO, DKW01601SFConst.MODEL_NO_CD_LIST_07, attKikiTkkkmdlCd);
				X31SDataBeanAccess modelNoInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.MODEL_NO_INFO).getDataBean(0);
				modelNoInfoList.sendMessageString(DKW01601SFConst.MODEL_NO_INDEX_07, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(kataIndex));
			}
			// 修理状況情報に取付機器管理場所コードの有無確認
			String attKikiKriPlaceCd = getData(this, DKW01601SFConst.SHURI_JOKYO_INFO, DKW01601SFConst.ATT_KIKI_KRIPLACE_CD);
			if (!"".equals(attKikiKriPlaceCd))
			{
				
				X31SDataBeanAccess ttmCdInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO).getDataBean(0);
				ttmCdInfoList.sendMessageString(DKW01601SFConst.TTM_CD_03, X31CWebConst.DATABEAN_SET_VALUE, attKikiKriPlaceCd);
				search();
			}
			// 修理状況情報に取付機器製造番号の有無確認
			String attKikiSeizoNo = getData(this, DKW01601SFConst.SHURI_JOKYO_INFO, DKW01601SFConst.ATT_KIKI_SEIZO_NO);
			if (!"".equals(attKikiSeizoNo))
			{
				X31SDataBeanAccess seizoNoInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO).getDataBean(0);
				seizoNoInfoList.sendMessageString(DKW01601SFConst.SEIZO_NO_03, X31CWebConst.DATABEAN_SET_VALUE, attKikiSeizoNo);
			}
			// ANK-3903-00-00 ADD END
			// 建物コード・製造番号・備考 クリア　（棚コードのドロップリストダウンは何もしない）
			X31SDataBeanAccess kokanKikiHikiwatashiInfoBean =
				getServiceFormBean().getDataBeanArray(DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO).getDataBean(0);
			// ANK-3903-00-00 DEL START
//			kokanKikiHikiwatashiInfoBean.sendMessageString(DKW01601SFConst.TTM_CD_03, X31CWebConst.DATABEAN_SET_VALUE, "");
//			kokanKikiHikiwatashiInfoBean.sendMessageString(DKW01601SFConst.TTM_NM_03, X31CWebConst.DATABEAN_SET_VALUE, "");
//			kokanKikiHikiwatashiInfoBean.sendMessageString(DKW01601SFConst.SEIZO_NO_03, X31CWebConst.DATABEAN_SET_VALUE, "");
			// ANK-3903-00-00 DEL END
			kokanKikiHikiwatashiInfoBean.sendMessageString(DKW01601SFConst.BIKO_03, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		else
		{
			// 修理対応履歴の交換引渡対応記録が存在する場合
			X31SDataBeanAccess workBean = getServiceFormBean().getDataBeanArray(DKW01601SFConst.WORKS).getDataBean(0);
			workBean.sendMessageString(DKW01601SFConst.EXISTS_FLG_09,
					X31CWebConst.DATABEAN_SET_VALUE, "1");
			
			// 引渡年月日 設定
			String hikiwatashiYmd = getData(this, DKW01601SFConst.HIKIWATASHI_YMD, DKW01601SFConst.HIKIWATASHI_DATE_YMD_04);
			if (!"".equals(hikiwatashiYmd))
			{
				X31SDataBeanAccess ymdBean = getServiceFormBean().getDataBeanArray(DKW01601SFConst.HIKIWATASHI_YMD).getDataBean(0);
				ymdBean.sendMessageString(DKW01601SFConst.HIKIWATASHI_DATE_YEAR_04,
						X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toYearFromYmd(hikiwatashiYmd));
				ymdBean.sendMessageString(DKW01601SFConst.HIKIWATASHI_DATE_MON_04,
						X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toMonthFromYmd(hikiwatashiYmd));
				ymdBean.sendMessageString(DKW01601SFConst.HIKIWATASHI_DATE_DATE_04,
						X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toDayFromYmd(hikiwatashiYmd));
			}
			
			// 引渡商品区分コードのデータ有無
			String hikiwatashiGdsDivCd = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.HIKIWATASHI_GDS_DIV_CD_03);
			if (!"".equals(hikiwatashiGdsDivCd))
			{
				long index = getCdIndex(DKW01601SFConst.HIKIWATASHI_GDS_DIV_INFO, DKW01601SFConst.HIKIWATASHI_GDS_DIV_CD_LIST_05, hikiwatashiGdsDivCd);
				X31SDataBeanAccess hikiwatashiGdsDivInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.HIKIWATASHI_GDS_DIV_INFO).getDataBean(0);
				hikiwatashiGdsDivInfoList.sendMessageString(DKW01601SFConst.HIKIWATASHI_GDS_DIV_INDEX_05, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(index));
			}
			
			// 棚区分コードのデータ有無
			String shelfDivCd = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.SHELF_DIV_CD_03);
			if (!"".equals(shelfDivCd))
			{
				long index = getCdIndex(DKW01601SFConst.SHELF_DIV_INFO, DKW01601SFConst.SHELF_DIV_CD_LIST_06, shelfDivCd);
				X31SDataBeanAccess shelfDivInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.SHELF_DIV_INFO).getDataBean(0);
				shelfDivInfoList.sendMessageString(DKW01601SFConst.SHELF_DIV_INDEX_06, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(index));
			}
			
			// 型番号のデータ有無
			String modelNoCd = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.MODEL_NO_CD_03);
			if (!"".equals(modelNoCd))
			{
				long index = getCdIndex(DKW01601SFConst.MODEL_NO_INFO, DKW01601SFConst.MODEL_NO_CD_LIST_07, modelNoCd);
				X31SDataBeanAccess modelNoInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.MODEL_NO_INFO).getDataBean(0);
				modelNoInfoList.sendMessageString(DKW01601SFConst.MODEL_NO_INDEX_07, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(index));
			}
			
			// 時間指定コードのデータ有無
			String timeCd = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TIME_CD_03);
			if ("".equals(timeCd))
			{
				timeCd = "0";
			}
			long index = getCdIndex(DKW01601SFConst.TIME_INFO, DKW01601SFConst.TIME_CD_LIST_08, timeCd);
			X31SDataBeanAccess timeInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.TIME_INFO).getDataBean(0);
			timeInfoList.sendMessageString(DKW01601SFConst.TIME_INDEX_08, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(index));
		}
		
		// 画面遷移処理
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW01601);

		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW01601);

		return true;
	}
	
	/**
	 * 検索ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean search() throws Exception
	{
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {serviceFormBean};
		String  func_code = JPCModelConstant.FUNC_CD_1;
		
		// 倉庫名称の初期化
		setData(this, "", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TTM_NM_03);
		
		// サービスインターフェイス機能呼び出し
		if (!putServiceDKSV0061(paramBean, func_code))
		{
			return true;
		}
		
		// 倉庫名称取得判定
		X31SDataBeanAccess sagyoInfoBean = getServiceFormBean().getDataBeanArray(DKW01601SFConst.WORKS).getDataBean(0);
		String ttmNm = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TTM_NM_03);
		if ("".equals(ttmNm))
		{
			// みなと倉庫判断フラグを設定（初期化）
			sagyoInfoBean.sendMessageString(DKW01601SFConst.SOKO_FLG_09, X31CWebConst.DATABEAN_SET_VALUE, "9");
			JCCWebCommon.setMessageInfo(this, "EKB2190-KW", new String[] {"建物コード"});
			return true;
		}
		
		String ttmCd = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TTM_CD_03);
		if (MINATO_SOKO_CD.equals(ttmCd))
		{
			// 引渡商品区分が代替機出荷の場合はエラー
			storePullDown(this, DKW01601SFConst.HIKIWATASHI_GDS_DIV_INFO,
								DKW01601SFConst.HIKIWATASHI_GDS_DIV_INDEX_05,
								DKW01601SFConst.HIKIWATASHI_GDS_DIV_CD_05,
								DKW01601SFConst.HIKIWATASHI_GDS_DIV_NM_05,
								DKW01601SFConst.HIKIWATASHI_GDS_DIV_CD_LIST_05,
								DKW01601SFConst.HIKIWATASHI_GDS_DIV_NM_LIST_05);
			String hikiwatashiGdsDivCd = getData(this, DKW01601SFConst.HIKIWATASHI_GDS_DIV_INFO, DKW01601SFConst.HIKIWATASHI_GDS_DIV_CD_05);
			if ("3".equals(hikiwatashiGdsDivCd))
			{
				// みなと倉庫判断フラグを設定（初期化）
				sagyoInfoBean.sendMessageString(DKW01601SFConst.SOKO_FLG_09, X31CWebConst.DATABEAN_SET_VALUE, "9");
				JCCWebCommon.setMessageInfo(this, "EKB0970-NW", new String[] {"引渡商品区分で代替機出荷", "みなと倉庫"});
				return true;
			}
			
			// みなと倉庫判断フラグを設定（みなと倉庫）
			sagyoInfoBean.sendMessageString(DKW01601SFConst.SOKO_FLG_09, X31CWebConst.DATABEAN_SET_VALUE, "1");
			
			// みなと倉庫の場合は棚コードに"000"（通常棚）を設定する
			long index = getCdIndex(DKW01601SFConst.SHELF_DIV_INFO, DKW01601SFConst.SHELF_DIV_CD_LIST_06, TUJYO_TANA);
			X31SDataBeanAccess shelfDivInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.SHELF_DIV_INFO).getDataBean(0);
			shelfDivInfoList.sendMessageString(DKW01601SFConst.SHELF_DIV_INDEX_06, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(index));
			
			// 製造番号初期化
			X31SDataBeanAccess kokanKikiHikiwatashiInfoBean =
				getServiceFormBean().getDataBeanArray(DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO).getDataBean(0);
			kokanKikiHikiwatashiInfoBean.sendMessageString(DKW01601SFConst.SEIZO_NO_03, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		else
		{
			// みなと倉庫判断フラグを設定（みなと倉庫以外）
			sagyoInfoBean.sendMessageString(DKW01601SFConst.SOKO_FLG_09, X31CWebConst.DATABEAN_SET_VALUE, "0");
			// 時間指定に"1"（指定なし）を設定する
			X31SDataBeanAccess timeInfoList = getServiceFormBean().getDataBeanArray(DKW01601SFConst.TIME_INFO).getDataBean(0);
			timeInfoList.sendMessageString(DKW01601SFConst.TIME_INDEX_08, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		
		// 遷移フラグ設定（フォーカス項目設定）
		X31SDataBeanAccess workBean = getServiceFormBean().getDataBeanArray(DKW01601SFConst.WORKS).getDataBean(0);
		workBean.sendMessageString(DKW01601SFConst.SENI_FLG_09,
				X31CWebConst.DATABEAN_SET_VALUE, "1");
		
		return true;
	}

	/**
	 * 修理品受取確認画面の確認ボタンを処理します。
	 * @author 富士通
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean confirmCreate() throws Exception
	{
		// 倉庫名称取得
		if (!search())
		{
			return true;
		}
		
		// 引渡商品区分
		storePullDown(this, DKW01601SFConst.HIKIWATASHI_GDS_DIV_INFO,
							DKW01601SFConst.HIKIWATASHI_GDS_DIV_INDEX_05,
							DKW01601SFConst.HIKIWATASHI_GDS_DIV_CD_05,
							DKW01601SFConst.HIKIWATASHI_GDS_DIV_NM_05,
							DKW01601SFConst.HIKIWATASHI_GDS_DIV_CD_LIST_05,
							DKW01601SFConst.HIKIWATASHI_GDS_DIV_NM_LIST_05);
		
		// 型番号
		storePullDown(this, DKW01601SFConst.MODEL_NO_INFO,
							DKW01601SFConst.MODEL_NO_INDEX_07,
							DKW01601SFConst.MODEL_NO_CD_07,
							DKW01601SFConst.MODEL_NO_CD_07,
							DKW01601SFConst.MODEL_NO_CD_LIST_07,
							DKW01601SFConst.MODEL_NO_CD_DSP_LIST_07);
		
		// 棚コード
		storePullDown(this, DKW01601SFConst.SHELF_DIV_INFO,
							DKW01601SFConst.SHELF_DIV_INDEX_06,
							DKW01601SFConst.SHELF_DIV_CD_06,
							DKW01601SFConst.SHELF_DIV_NM_06,
							DKW01601SFConst.SHELF_DIV_CD_LIST_06,
							DKW01601SFConst.SHELF_DIV_NM_LIST_06);
		
		// 時間指定
		storePullDown(this, DKW01601SFConst.TIME_INFO,
							DKW01601SFConst.TIME_INDEX_08,
							DKW01601SFConst.TIME_CD_08,
							DKW01601SFConst.TIME_NM_08,
							DKW01601SFConst.TIME_CD_LIST_08,
							DKW01601SFConst.TIME_NM_LIST_08);
		
		// 画面入力建物コードの取得
		String ttmCd = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TTM_CD_03);
		
		// 機器修理でかつ代替機必要な場合
		if (SHURI.equals(getData(this, DKW01601SFConst.SHURI_JOKYO_INFO, DKW01601SFConst.SYOTI_DEV_CD_01)) && DAITAIKI_HITUYO.equals(getData(this, DKW01601SFConst.SHURI_JOKYO_INFO, DKW01601SFConst.DAITAI_KIKI_CD_01)))
		{
			// 引渡商品区分が代替機器出荷以外はエラー
			if (!"3".equals(getData(this, DKW01601SFConst.HIKIWATASHI_GDS_DIV_INFO, DKW01601SFConst.HIKIWATASHI_GDS_DIV_CD_05)))
			{
				JCCWebCommon.setMessageInfo(this,  "EKB1040-JW",
						new String[] {"処置区分", "機器修理", "代替機器出荷以外は指定"}, "I_HIKIWATASHI_GDS_DIV");
				return true;
			}
		}

		// 型番号のデータ有無
		String selectModelNoCd = getData(this, DKW01601SFConst.MODEL_NO_INFO, DKW01601SFConst.MODEL_NO_CD_07);
		if (!"".equals(selectModelNoCd))
		{
			int index = getCdIndex(DKW01601SFConst.MODEL_NO_INFO, DKW01601SFConst.MODEL_NO_CD_LIST_07, selectModelNoCd);
			// 選択された型番号の機器区分、機器種別コード、修理交換グループ種別コード取得
			String selectKikiKbn = getNameFromIndex(DKW01601SFConst.MODEL_NO_INFO, DKW01601SFConst.KIKI_KBN_LIST_07, index);
			String selectTaknkikiSbtCd = getNameFromIndex(DKW01601SFConst.MODEL_NO_INFO, DKW01601SFConst.TAKNKIKI_SBT_CD_LIST_07, index);
			String selectShuriKokanGrpSbtCd = getNameFromIndex(DKW01601SFConst.MODEL_NO_INFO, DKW01601SFConst.SHURI_KOKAN_GRP_SBT_CD_LIST_07, index);
			
			// 修理状況情報の型番号と画面で選択された型番号の修理交換グループ種別コードを比較し、異なる場合はエラー
			String shuriKokanGrpSbtCd = getData(this, DKW01601SFConst.SHURI_JOKYO_INFO, DKW01601SFConst.SHURI_KOKAN_GRP_SBT_CD_01);
			if (!shuriKokanGrpSbtCd.equals(selectShuriKokanGrpSbtCd))
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0810_NW,
						new String[] {"型番号", "修理受付時の型番号の修理交換グループ種別コードが異なる為、選択"}, "I_MDL_NO");
				return true;
			}
			
			// 宅内機器設定
			if ("1".equals(selectKikiKbn))
			{
				// 種別と型式コード設定
				setData(this, selectTaknkikiSbtCd, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TAKNKIKI_SBT_CD_03);
				setData(this, selectModelNoCd, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TAKNKIKI_MODEL_CD_03);
				setData(this, "", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.HUZOKUHIN_SBT_CD_03);
				setData(this, "", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.HUZOKUHIN_MODEL_CD_03);
				setData(this, "", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TAKNKIKI_SETHIN_MODEL_CD_03);
			}
			// 付属品設定
			if ("2".equals(selectKikiKbn))
			{
				// 種別と型式コード設定
				setData(this, "", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TAKNKIKI_SBT_CD_03);
				setData(this, "", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TAKNKIKI_MODEL_CD_03);
				setData(this, selectTaknkikiSbtCd, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.HUZOKUHIN_SBT_CD_03);
				setData(this, selectModelNoCd, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.HUZOKUHIN_MODEL_CD_03);
				setData(this, "", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TAKNKIKI_SETHIN_MODEL_CD_03);
			}
			
			
			// ANK-4038-00-00 ADD START
			// 交換機器引渡内容情報.旧宅内機器種別コードが"D0"(ONU)
			if (ONU.equals(getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.OLD_TAKNKIKI_SBT_CD_03)))
			{
				// 交換機器引渡内容情報.ローゼット設置状態コード
				String rozettStcStatCd = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.ROZETT_STC_STAT_CD);
				// 修理状況情報．宅内機器型式コード
				String tankikiModelCd01 = getData(this, DKW01601SFConst.SHURI_JOKYO_INFO, DKW01601SFConst.TAKNKIKI_MODEL_CD_01);
				
				// 交換機器引渡内容情報.ローゼット設置状態コードが"1"(設置済) && 　型番号プルダウン選択値（型番号情報．型番号コード）が「SET-」で始まる型番号でない場合。
				if ("1".equals(rozettStcStatCd) && !selectModelNoCd.startsWith(PREFIX_SET))
				{
// ANK-4038-07-00 MOD START
//					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1040_JW, new String[] {"ONUの属する回線", "ローゼット設置済", "「SET-」以外の型番は指定"});
//					return true;
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBA880__Q, new String[] {"ONUの属する回線", "ローゼット設置済", "「SET-」以外の型番の登録"});
// ANK-4038-07-00 MOD END
				}
				
				// 修理状況情報．宅内機器型式コードが「SET-」 && 　型番号プルダウン選択値（型番号情報．型番号コード）が「SET-」で始まる型番号でない場合。
				if (tankikiModelCd01.startsWith("SET-")&& !selectModelNoCd.startsWith(PREFIX_SET))
				{
// ANK-4038-07-00 MOD START
//					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1040_JW, new String[] {"ONUの属する回線", "ローゼット設置済", "「SET-」以外の型番は指定"});
//					return true;
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBA880__Q, new String[] {"ONUの属する回線", "ローゼット設置済", "「SET-」以外の型番の登録"});
// ANK-4038-07-00 MOD END
				}
			}
			// ANK-4038-00-00 ADD END
			
			// 建物コードがみなと倉庫以外の場合は以下のチェック処理を行う
			if (!MINATO_SOKO_CD.equals(ttmCd))
			{
				X31SDataBeanAccess sagyoInfoBean = getServiceFormBean().getDataBeanArray(DKW01601SFConst.WORKS).getDataBean(0);
				
				// 棚コード必須チェック
				String shelfDivCd = getData(this, DKW01601SFConst.SHELF_DIV_INFO, DKW01601SFConst.SHELF_DIV_CD_06);
				if ("".equals(shelfDivCd))
				{
					sagyoInfoBean.sendMessageString(DKW01601SFConst.SOKO_FLG_09, X31CWebConst.DATABEAN_SET_VALUE, "2");
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0010_TW, new String[] {"棚コード"}, "I_SHELF_CD");
					return true;
				}
				
				// 選択された型番号の製造番号有無取得
				String seizoNoUm = getNameFromIndex(DKW01601SFConst.MODEL_NO_INFO, DKW01601SFConst.SEIZO_NO_UM_LIST_07, index);
				// 製造番号取得
				String seizoNo = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.SEIZO_NO_03);
				// 製造番号有無が有りの場合で、製造番号が空ならエラー
				if ("1".equals(seizoNoUm) && "".equals(seizoNo))
				{
					sagyoInfoBean.sendMessageString(DKW01601SFConst.SOKO_FLG_09, X31CWebConst.DATABEAN_SET_VALUE, "2");
					// "%1%を選択した場合%2%を入力してください。%1%を選択した場合%2%を入力する。"
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0710_NW, new String[] {"宅内機器の型番号", "製造番号"}, "I_SSN_NO");
					return true;
				}
				// 製造番号有無が無しの場合で、製造番号が入力されていたらエラー
				if ("0".equals(seizoNoUm) && !"".equals(seizoNo))
				{
					sagyoInfoBean.sendMessageString(DKW01601SFConst.SOKO_FLG_09, X31CWebConst.DATABEAN_SET_VALUE, "2");
					// "%1%が選択されている場合は%2%は入力できません。%1%を選択した場合に入力可能な項目のみ入力する。"
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0970_NW, new String[] {"付属品の型番号", "製造番号"}, "I_SSN_NO");
					return true;
				}
			}
			else
			{
				// 製造番号存在チェック
				String seizoNo = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.SEIZO_NO_03);
				if (!"".equals(seizoNo))
				{
					X31SDataBeanAccess sagyoInfoBean = getServiceFormBean().getDataBeanArray(DKW01601SFConst.WORKS).getDataBean(0);
					sagyoInfoBean.sendMessageString(DKW01601SFConst.SOKO_FLG_09, X31CWebConst.DATABEAN_SET_VALUE, "3");
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0290_JW, new String[] {"建物コード", "みなと倉庫", "入力"}, "I_SSN_NO");
					return true;
				}
			}
		}
		
		// 引渡年月日
		String hikiwatashiYmd = getData(this, DKW01601SFConst.HIKIWATASHI_YMD, DKW01601SFConst.HIKIWATASHI_DATE_YEAR_04)
		+ getData(this, DKW01601SFConst.HIKIWATASHI_YMD, DKW01601SFConst.HIKIWATASHI_DATE_MON_04)
		+ getData(this, DKW01601SFConst.HIKIWATASHI_YMD, DKW01601SFConst.HIKIWATASHI_DATE_DATE_04);
		setData(this, hikiwatashiYmd, DKW01601SFConst.HIKIWATASHI_YMD, DKW01601SFConst.HIKIWATASHI_DATE_YMD_04);
		
		// 引渡日単項目チェック
		if(!checkDate(hikiwatashiYmd, 8))
		{
			JCCWebCommon.setMessageInfo(this, "EKB1050-TW", new String[] {"引渡日"});
			return true;
		}
		
		// サービスインターフェイス機能呼び出し
		String  func_code = JPCModelConstant.FUNC_CD_2;
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {serviceFormBean};
		
		// 配送区分 固定"02"（修理）
		setData(this, "02", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.HAISO_DIV_03);
		// 配送先個別指定フラグ 固定"1"（個別指定なし）
		setData(this, "1", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.HISOS_KSITEI_FLG_03);

		// 建物コードがみなと倉庫以外の場合は住所未確定フラグ 固定"1"（住所確定）
		if (!MINATO_SOKO_CD.equals(ttmCd))
		{
			setData(this, "1", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.AD_MI_FIX_FLG_03);
		}
		else
		{
			String kisnPlcAdMiFixFlg = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.KISN_PLC_AD_MI_FIX_FLG_03);
			// 住所未確定フラグがNULLの場合は住所未確定フラグ 固定"1"（住所確定）
			if (JDKCommonUtil.isNull(kisnPlcAdMiFixFlg))
			{
				setData(this, "1", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.AD_MI_FIX_FLG_03);
			}
			else
			{
				setData(this, kisnPlcAdMiFixFlg, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.AD_MI_FIX_FLG_03);
			}
		}

		// 出荷待機フラグ 固定"0"（出荷対象）
		setData(this, "0", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.SHUKKA_TAIKI_FLG_03);
		// 返品区分 固定"4"（故障品）
		setData(this, "4", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.HMPIN_DIV_03);
		// 返品元個別指定フラグ 固定"0"（個別指定なし）
		setData(this, "0", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.HMPIN_MOTO_KSITEI_FLG_03);
		// 修理受付日フォーマット
		String shuriUkeYmd = getData(this, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.BTRYHOZN_UK_YMD_03);
		if (JDKCommonUtil.isNull(shuriUkeYmd))
		{
			setData(this, shuriUkeYmd, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.BTRYHOZN_UK_YMD_03);
		}
		else
		{
			setData(this, shuriUkeYmd.substring(0, 8), DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.BTRYHOZN_UK_YMD_03);
		}
		// 物流保全対応コード 固定"02"（交換機器引渡済み）
		setData(this, BTRYHOZN_TAIO_CD_KIKI_HIKIWATASI_FIN, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.BTRYHOZN_TAIO_CD_03);
		// 異動区分 固定"00027"（交換機器引渡済み）
		setData(this, "00027", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.IDO_DIV_03);
		// ANK-3903-00-00 ADD START
		// 修理完了完了日 オンライン運用日
		String shuriFinDate = JCCWebCommon.getOpeDate(this, null);
		setData(this, shuriFinDate, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.SHURI_FIN_DATE);
		// 修理完了建物コード 入力の建物コード
		setData(this, ttmCd, DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.TTM_CD_03);
		// 修理完了動作確認コード:nullを設定
		setData(this, "", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.SHURI_FIN_DOSA_CFM_CD);
		// 修理完了備考:nullを設定
		setData(this, "", DKW01601SFConst.KOKAN_KIKI_HIKIWATASHI_INFO, DKW01601SFConst.SHURI_FIN_BIKO);
		// ANK-3903-00-00 ADD END
		// サービスの呼び出しを行う
		if (!putServiceDKSV0060(paramBean, func_code))
		{
			return true;
		}
		
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String [] { MSG_KOKAN_KIKI_HIKIWATASHI});
		// 遷移先画面IDの設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW01602, JDKScreenConst.SCREEN_NAME_DKW01602);
		
		return true;
	}
	
	
	/**
	 * 一覧画面への遷移を行う
	 * @param screenId 一覧画面の画面ID
	 * @return 成否
	 */
	private boolean toSearch(String screenId, String errCd, String...errMsgs)
	{
		JCCWebCommon.setMessageInfo(this, errCd, errMsgs);

		// 一覧画面に強制転送
		setNextScreen(screenId, JZMWebConst.BLANK);
		setTransferPageId(JCCWebCommon.getScreenId(this) + JZMWebConst.PJP);

		return true;
	}
	
	/**
	 * プルダウンの０番目の項目に空白を挿入します。
	 * @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, "");
	}
	
	/**
	 * サービス（DKSV0060）の呼び出しを行います。
	 * <br>
	 * @param paramBean パラメータとなるBean情報
	 * @param func_code 機能コード
	 * @return 成否
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
	private boolean putServiceDKSV0060(X31SDataBeanAccess[] paramBean, String func_code) throws Exception
	{
		// ユースケースID格納用マップを生成
		HashMap<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0060");
		
		// マッピングクラスのインスタンスを生成
		DKSV0060_DKSV0060OPDBMapper mapper = new DKSV0060_DKSV0060OPDBMapper();
		HashMap<String, String> dataMap = new HashMap<String, String>();
		
		mapper.setDKSV006001SC(paramBean, dataMap, func_code);
		mapper.setDKSV006002SC(paramBean, dataMap, func_code);
		mapper.setDKSV006003SC(paramBean, dataMap, func_code);
		mapper.setDKSV006004SC(paramBean, dataMap, func_code);
		mapper.setDKSV006005SC(paramBean, dataMap, func_code);
		mapper.setDKSV006007SC(paramBean, dataMap, func_code);
		mapper.setDKSV006009SC(paramBean, dataMap, func_code);
		mapper.setDKSV006010SC(paramBean, dataMap, func_code);
		mapper.setDKSV006011SC(paramBean, dataMap, func_code);
		mapper.setDKSV006012CC(paramBean, dataMap, func_code);
		// ANK-3903-00-00 ADD START
		mapper.setDKSV006013SC(paramBean, dataMap, func_code);
		mapper.setDKSV006014SC(paramBean, dataMap, func_code);
		mapper.setDKSV006015SC(paramBean, dataMap, func_code);
		//運用日を取得し、物流保全完了マップに詰める
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		mapper.setDKSV006016SC(paramBean, dataMap, func_code,opeDate);
		mapper.setDKSV006017SC(paramBean, dataMap, func_code);
		mapper.setDKSV006018CC(paramBean, dataMap, func_code);
		// ANK-3903-00-00 ADD END
		
		// 検索結果格納用マップ
		HashMap<String, String> outputMap = new HashMap<String, String>();
		
		// 検索処理呼出
		X31CMessageResult result = null;
		JCCWebServiceException inputException = null;
		try
		{
			result = invokeService(paramMap, dataMap, outputMap);
		}
		catch (JCCWebServiceException e)
		{
			inputException = e;
			result = e.getMessageList();
			
			X31CMessageMoreInfo [] messages = result.getMessageMoreInfoList();
			if (messages != null && messages.length > 0)
			{
				if (!"tk_mdl_cd".equals(messages[0].getItemId()))
				{
					throw e;
				}
				if (!"EE".equals(messages[0].getItemCheckErr()))
				{
					throw e;
				}
				if (!"1100".equals(messages[0].getStatus()))
				{
					throw e;
				}
				if (!"EKKA0020005".equals(messages[0].getTemplateId()))
				{
					throw e;
				}
				if (!"DKW016010PJP".equals(messages[0].getGamenId()))
				{
					throw e;
				}
				
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBA140_KW, new String [] { "型番号", getData(this, MODEL_NO_INFO, MODEL_NO_CD_07)}, "I_MDL_NO");
				return false;
			}
		}
		if (result != null)
		{
			JCCWebCommon.setMessageInfo(this, result);
			return false;
		}
		
		return true;
	}
	
	/**
	 * サービス（DKSV0061）の呼び出しを行います。
	 * <br>
	 * @param paramBean パラメータとなるBean情報
	 * @param func_code 機能コード
	 * @return 成否
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
	private boolean putServiceDKSV0061(X31SDataBeanAccess[] paramBean, String func_code) throws Exception
	{
		// ユースケースID格納用マップを生成
		HashMap<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0061");
		
		// マッピングクラスのインスタンスを生成
		DKSV0061_DKSV0061OPDBMapper mapper = new DKSV0061_DKSV0061OPDBMapper();
		HashMap<String, String> dataMap = new HashMap<String, String>();
		
		mapper.setDKSV006101SC(paramBean, dataMap, func_code);
		
		// 検索結果格納用マップ
		HashMap<String, String> outputMap = new HashMap<String, String>();
		
		// 検索処理呼出
		X31CMessageResult result = null;
		JCCWebServiceException inputException = null;
		try
		{
			result = invokeService(paramMap, dataMap, outputMap);
		}
		catch (JCCWebServiceException e)
		{
			inputException = e;
			result = e.getMessageList();
		}
		if (result != null)
		{
			JCCWebCommon.setMessageInfo(this, result);
			return false;
		}
		
		mapper.getDKSV006101SC(paramBean, outputMap);
		
		return true;
	}
	
	/**
	 * 修理品受取確認画面の戻るボタンを処理します。
	 * @author 富士通
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean action_Bback() throws Exception
	{
		// 遷移先画面IDの設定
		setNextScreen(JCCWebCommon.getScreenId(this), JZMWebConst.BLANK);
		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);
	}
	
	/**
	 * 確定ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean fix() throws Exception
	{
		
		// サービスインターフェイス機能呼び出し
		String  func_code = JPCModelConstant.FUNC_CD_1;
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {serviceFormBean};
		
		// サービスの呼び出しを行う
		if (!putServiceDKSV0060(paramBean, func_code))
		{
			return false;
		}
		
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, new String [] { MSG_KOKAN_KIKI_HIKIWATASHI});
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW01603, JDKScreenConst.SCREEN_NAME_DKW01603);
		return true;
	}
	
	/**
	 * 修正ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean modify() throws Exception
	{
		// 遷移フラグ設定（フォーカス項目設定）
		X31SDataBeanAccess workBean = getServiceFormBean().getDataBeanArray(DKW01601SFConst.WORKS).getDataBean(0);
		workBean.sendMessageString(DKW01601SFConst.SENI_FLG_09,
				X31CWebConst.DATABEAN_SET_VALUE, "0");
		
		// 遷移先画面IDの設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW01601, JDKScreenConst.SCREEN_NAME_DKW01601);
		return true;
	}
	
	/**
	 * 指定されたドロップダウンリストのコードにてインデックス値を取得します。
	 * @param info ドロップダウンリスト情報
	 * @param cdList ドロップダウンリスト情報内のコードリスト
	 * @param cd コード
	 * @return コードに対するインデックス値
	 */
	private int getCdIndex(String info, String cdList, String cd)
	{
		X31SDataBeanAccess list = getBean(this, info);
		int count = (Integer)list.sendMessage(cdList, X31CWebConst.DATABEAN_GET_COUNT);
		for (int i = 0 ; i < count ; i++)
		{
			if (list.sendMessageString(cdList, X31CWebConst.DATABEAN_GET_VALUE, i).equals(cd))
			{
				return i;
			}
		}
		return -1;
	}
	
	/**
	 * 指定されたドロップダウンリストのインデックス値にて名称を取得します。
	 * @param info ドロップダウンリスト情報
	 * @param cdList ドロップダウンリスト情報内のコードリスト
	 * @param index コード
	 * @return インデックス値に対する名称
	 */
	private String getNameFromIndex(String info, String cdList, int index)
	{
		X31SDataBeanAccess pulldown = this.getServiceFormBean().getDataBeanArray(info).getDataBean(0);
		return pulldown.sendMessageString(cdList,
										X31CWebConst.DATABEAN_GET_VALUE,
										index - 1);
	}
	
	/**
	 * 修理対応履歴情報にて交換機器引渡の対応記録が存在するかを判定します。
	 * @param info 修理対応履歴情報
	 * @param idKey 対応記録コード
	 * @param cd 交換機器引渡済みコード
	 * @return 存在有無
	 */
	private boolean checkTaioCd(String info, String idKey, String cd)
	{
		int count = getServiceFormBean().getDataBeanArray(DKW01601SFConst.SHURI_TAIO_RIREKI_LIST).getCount();
		for (int i = 0 ; i < count ; i++)
		{
			X31SDataBeanAccess list = getServiceFormBean().getDataBeanArray(DKW01601SFConst.SHURI_TAIO_RIREKI_LIST).getDataBean(i);
			if (cd.equals(list.sendMessageString(idKey, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 表示項目編集を行います。
	 * @throws Exception 例外発生時
	 */
	private void setDispPram() throws Exception
	{
		int count1 = getServiceFormBean().getDataBeanArray(DKW01601SFConst.SHURI_JOKYO_INFO).getCount();
		for (int i = 0 ; i < count1 ; i++)
		{
			X31SDataBeanAccess list1 = getServiceFormBean().getDataBeanArray(DKW01601SFConst.SHURI_JOKYO_INFO).getDataBean(i);
			// 契約者名
			String keishaNm = JDKWebCommon.substr(list1.sendMessageString(DKW01601SFConst.KEISHA_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 33);
			list1.sendMessageString(DKW01601SFConst.KEISHA_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, keishaNm);
			// 受付者名
			String ukNm = JDKWebCommon.substr(list1.sendMessageString(DKW01601SFConst.UK_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 17);
			list1.sendMessageString(DKW01601SFConst.UK_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, ukNm);
			// メーカー名
			String mekaNm = JDKWebCommon.substr(list1.sendMessageString(DKW01601SFConst.MEKA_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 10);
			list1.sendMessageString(DKW01601SFConst.MEKA_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, mekaNm);
			// 故障区分
			String troubleDivNm = JDKWebCommon.substr(list1.sendMessageString(DKW01601SFConst.TROUBLE_DIV_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 17);
			list1.sendMessageString(DKW01601SFConst.TROUBLE_DIV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, troubleDivNm);
			// 機器契約区分
			String kikiKeiDevNm = JDKWebCommon.substr(list1.sendMessageString(DKW01601SFConst.KIKI_KEI_DEV_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 10);
			list1.sendMessageString(DKW01601SFConst.KIKI_KEI_DEV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, kikiKeiDevNm);
			// 保証区分
			String hoshoDivNm = JDKWebCommon.substr(list1.sendMessageString(DKW01601SFConst.HOSHO_DIV_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 10);
			list1.sendMessageString(DKW01601SFConst.HOSHO_DIV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, hoshoDivNm);
			// 製造番号
			String seizoNo = JDKWebCommon.substr(list1.sendMessageString(DKW01601SFConst.SEIZO_NO_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 20);
			list1.sendMessageString(DKW01601SFConst.SEIZO_NO_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, seizoNo);
			// 処置区分
			String syotiDevNm = JDKWebCommon.substr(list1.sendMessageString(DKW01601SFConst.SYOTI_DEV_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 10);
			list1.sendMessageString(DKW01601SFConst.SYOTI_DEV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, syotiDevNm);
		}
		
		int count2 = getServiceFormBean().getDataBeanArray(DKW01601SFConst.SHURI_TAIO_RIREKI_LIST).getCount();
		for (int i = 0 ; i < count2 ; i++)
		{
			X31SDataBeanAccess list2 = getServiceFormBean().getDataBeanArray(DKW01601SFConst.SHURI_TAIO_RIREKI_LIST).getDataBean(i);
			// 対応区分
			String taioDivNm = JDKWebCommon.substr(list2.sendMessageString(DKW01601SFConst.TAIO_DIV_NM_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 11);
			list2.sendMessageString(DKW01601SFConst.TAIO_DIV_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, taioDivNm);
			// 社員名
			String syainNm = JDKWebCommon.substr(list2.sendMessageString(DKW01601SFConst.SYAIN_NM_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 14);
			list2.sendMessageString(DKW01601SFConst.SYAIN_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, syainNm);
			// 特記事項
			String tkjk = JDKWebCommon.substr(list2.sendMessageString(DKW01601SFConst.TKJK_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 20);
			list2.sendMessageString(DKW01601SFConst.TKJK_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, tkjk);
			
			if (i % 2 == 1)
			{
				list2.sendMessageString(DKW01601SFConst.L_COLOR_02, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}
			else
			{
				list2.sendMessageString(DKW01601SFConst.L_COLOR_02, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			}
		}
	}
	
	/**
	 * 完了ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean complete() throws Exception
	{
		// 遷移先画面IDの設定
		setNextScreen(JCCWebCommon.getScreenId(this, JDKScreenConst.SCREEN_ID_DKW01601), JZMWebConst.BLANK);
		return true;
	}
	
	/**
	 * 入力された日付のチェックを行います。
	 * @param ymd 年月日
	 * @param ketaNum 桁数
	 * @return 日付整合性
	 */
	private boolean checkDate(String ymd, int ketaNum) 
	{
		// 引数チェック
		if (JDKCommonUtil.isNull(ymd)) 
		{
			return false;
		}

		try 
		{
			int yyyy = Integer.parseInt(ymd.substring(0, 4));

			int mm = Integer.parseInt(ymd.substring(4, 6));

			int dd = 1;

			if (ketaNum == 8) 
			{
				dd = Integer.parseInt(ymd.substring(6, 8));
			}

			// 月は 0 から始まる。（0:１月 となる。）
			Calendar cl = new GregorianCalendar(yyyy, mm - 1, dd);

			// カレンダークラスにより、日付が調整されてしまっている場合は、エラーである。
			if ((cl.get(Calendar.YEAR) != yyyy) 
					|| ((cl.get(Calendar.MONTH) + 1) != mm) 
					|| (cl.get(Calendar.DATE) != dd)) 
			{
				return false;
			}
			else 
			{
				return true;
			}
		}
		catch (StringIndexOutOfBoundsException e) 
		{
			return false;
		}
	}
}
