/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：DKW02001SFLogic
 *   ソースファイル名：DKW02001SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年09月22日
 *＜機能概要＞
 *   依頼者引渡のビューロジックです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/09/22   FJ）        新規作成
 *   v10.00.00   2014/10/02   FJ）中野    OM-2014-0002799
 *
 **********************************************************************/
package eo.web.webview.DKW02001SF;

import static eo.common.constant.JPCOnlineMessageConstant.EKB0300_KW;
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.DKW02001SF.DKW02001SFConst.*;
import static eo.web.webview.DKW03701SF.DKW03701SFConst.DAITAI_KIKI_CD_01;
import static eo.web.webview.DKW03701SF.DKW03701SFConst.SHURI_JOKYO_INFO;
import static eo.web.webview.DKW03701SF.DKW03701SFConst.SYOTI_DEV_01;

import java.util.Calendar;
import java.util.GregorianCalendar;
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 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.DKSV0066_DKSV0066OPDBMapper;
import eo.web.webview.mapping.DKSV0068_DKSV0068OPDBMapper;

/**
 * 依頼者引渡を処理するロジッククラスです。
 * <BR>
 * @author 富士通
 */
public class DKW02001SFLogic extends JCCWebBusinessLogic
{
	/** シリアルバージョン */
	private static final long serialVersionUID = 1L;
	
	/** メッセージ */
	private static final String MSG_KOKAN_KIKI_HIKIWATASHI = "依頼者引渡登録";

	/**
	 * サービスフォームBeanの初期化処理を行います。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	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(JDKStrConst.BUTSURYUHOZEN_NO);
			paramBean[0].sendMessageString(KEY_BTRYHOZN_NO, X31CWebConst.DATABEAN_SET_VALUE, buturyHozenNo);
			paramBean[0].sendMessageString(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, "DKSV0066");

		// マッピングクラスのインスタンスを生成
		DKSV0066_DKSV0066OPDBMapper mapper = new DKSV0066_DKSV0066OPDBMapper();
		HashMap dataMap = new HashMap();
		
		mapper.setDKSV006601SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV006602SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV006603SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV006604SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		
		// 検索結果格納用マップ
		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.getDKSV006601SC(paramBean, outputMap);
		mapper.getDKSV006602SC(paramBean, outputMap);
		mapper.getDKSV006603SC(paramBean, outputMap);
		mapper.getDKSV006604SC(paramBean, outputMap);
		

		
		// 遷移可否判断処理
		// 修理状況情報.物流保全ステータスの取得
		String btryhoznStat = getData(this, SHURI_JOKYO_INFO, SHURI_JOKYO_CD_01);

		// 直送機器交換の場合は当機能を使用できない
		if ("1".equals(getData(this, SHURI_JOKYO_INFO, SYOTI_DEV_01)) )
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0810_NW, new String [] {"データ", "依頼者引渡は"});

			// 一覧画面に強制転送
			setNextScreen(screenId, JZMWebConst.BLANK);
			setTransferPageId(screenId + JZMWebConst.PJP);

			return true;
		}

		// 物流保全ステータス（修理状況コード）が
		// "001"（受付済み）
		// "003"（メーカー修理完了済み）
		// "004"（完了済み）でない場合）
		if (   !JDKStrConst.BTRYHOZN_STAT_UKETSUKE.equals(btryhoznStat)
			&& !JDKStrConst.BTRYHOZN_STAT_SHURI_FIN.equals(btryhoznStat)
			&& !JDKStrConst.BTRYHOZN_STAT_FIN.equals(btryhoznStat))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0810_NW, new String [] {"データ", "依頼者引渡は"});

			// 一覧画面に強制転送
			setNextScreen(screenId, JZMWebConst.BLANK);
			setTransferPageId(screenId + JZMWebConst.PJP);

			return true;
		}
		
		// メーカー修理完了している場合は、型番製造番号が同じであること
		if (existTaioCd(SHURI_TAIO_RIREKI_LIST, TAIO_DIV_CD_02, JDKStrConst.BTRYHOZN_TAIO_CD_MAKER_SHURI_FIN))
		{
			if (!(   getData(this, SHURI_JOKYO_INFO, TAKNKIKI_MODEL_CD_01).equals(getData(this, IRAISHA_HIKIWATASHI_INFO, RENEWAL_AF_TAKNKIKI_MDL_CD_03))
				  && getData(this, SHURI_JOKYO_INFO, HUZOKUHIN_MODEL_CD_01).equals(getData(this, IRAISHA_HIKIWATASHI_INFO, RENEWAL_AF_HZKHIN_MDL_CD_03))
				  && getData(this, SHURI_JOKYO_INFO, SEIZO_NO_01).equals(getData(this, IRAISHA_HIKIWATASHI_INFO, SEIZO_NO_03))))
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0810_NW, new String [] {"データ", "メーカー返品機器が修理機器と違うため依頼者引渡は"});
	
				// 一覧画面に強制転送
				setNextScreen(screenId, JZMWebConst.BLANK);
				setTransferPageId(screenId + JZMWebConst.PJP);
	
				return true;
			}
		}
		
		// 表示編集を行う
		setDispPram();
		
		pushEmptyToTopOfPulldown(TTM_INFO, TTM_CD_LIST_05, TTM_NM_LIST_05);
		slideArrayOnDatabean(super.getServiceFormBean().getDataBeanArray(DKW02001SFConst.TTM_INFO).getDataBean(0), DKW02001SFConst.TTM_DIV_LIST_05); 

		// 修理対応履歴の依頼者対応記録存在有無
		boolean resultSonzai = existTaioCd(SHURI_TAIO_RIREKI_LIST, TAIO_DIV_CD_02, JDKStrConst.BTRYHOZN_TAIO_CD_IRAISYA_HIKIWATASI_FIN);
		if (!resultSonzai)
		{
			// 修理対応履歴の依頼者引渡対応記録が存在しない場合
			X31SDataBeanAccess iraishaHikiwatashiInfoBean = getServiceFormBean().getDataBeanArray(IRAISHA_HIKIWATASHI_INFO).getDataBean(0);
			iraishaHikiwatashiInfoBean.sendMessageString(EXISTS_FLG_03, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 引渡年月日 設定
			String unyouYmd = getData(this, KEY_UNYO_YMD);
			setData(this, JPCEditString.toYearFromYmd(unyouYmd), HIKIWATASHI_YMD, HIKIWATASHI_DATE_YEAR_04);
			setData(this, JPCEditString.toMonthFromYmd(unyouYmd), HIKIWATASHI_YMD, HIKIWATASHI_DATE_MON_04);
			setData(this, JPCEditString.toDayFromYmd(unyouYmd), HIKIWATASHI_YMD, HIKIWATASHI_DATE_DATE_04);
			
			// 建物、備考クリア処理
			setData(iraishaHikiwatashiInfoBean, "", TTM_CD_03);
			setData(iraishaHikiwatashiInfoBean, "", TTM_NM_03);
			setData(iraishaHikiwatashiInfoBean, "", BIKO_03);
		}
		else
		{
			// 修理対応履歴の依頼者引渡対応記録が存在する場合
			setData(this, "1", IRAISHA_HIKIWATASHI_INFO, EXISTS_FLG_03);
			
			// 引渡年月日 設定
			String hikiwatashiYmd = getData(this, IRAISHA_HIKIWATASHI_INFO, HIKIWATASHI_DATE_03);
			if (!"".equals(hikiwatashiYmd))
			{
				setData(this, JPCEditString.toYearFromYmd(hikiwatashiYmd), HIKIWATASHI_YMD, HIKIWATASHI_DATE_YEAR_04);
				setData(this, JPCEditString.toMonthFromYmd(hikiwatashiYmd), HIKIWATASHI_YMD, HIKIWATASHI_DATE_MON_04);
				setData(this, JPCEditString.toDayFromYmd(hikiwatashiYmd), HIKIWATASHI_YMD, HIKIWATASHI_DATE_DATE_04);
			}

			// 建物（倉庫コード）のデータ有無
			String sokoCd = getData(this, IRAISHA_HIKIWATASHI_INFO, TTM_CD_03);
			if (!"".equals(sokoCd))
			{
				long index = getCdIndex(TTM_INFO, TTM_CD_LIST_05, sokoCd);
				setData(this, String.valueOf(index), TTM_INFO, TTM_INDEX_05);
			}
		}		
		// 修理不可の場合は、旧機器を返却するためにリニューアル品に旧機器を設定する
		if (JDKStrConst.SHURI_FUKA.equals(getData(this, SHURI_JOKYO_INFO, SHURI_KAHI_CD_01)))
		{
			setData(this, getData(this, SHURI_JOKYO_INFO, TAKNKIKI_MODEL_CD_01), IRAISHA_HIKIWATASHI_INFO, RENEWAL_AF_TAKNKIKI_MDL_CD_03);
			setData(this, getData(this, SHURI_JOKYO_INFO, SEIZO_NO_01), IRAISHA_HIKIWATASHI_INFO, SEIZO_NO_03);
		}
		
		// 画面遷移処理
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_ID_DKW02001);

		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JDKScreenConst.SCREEN_NAME_DKW02001);

		return true;
	}

	/**
	 * 修理品受取確認画面の確認ボタンを処理します。
	 * @author 富士通
	 * @return 成否
	 * @throws Exception 例外
	 */
	public boolean confirmCreate() throws Exception
	{
		
		// 建物
		storePullDown(this, TTM_INFO,
							TTM_INDEX_05,
							TTM_CD_05,
							TTM_NM_05,
							TTM_CD_LIST_05,
							TTM_NM_LIST_05);


		// （建物区分）
		storePullDown(this, TTM_INFO,
							TTM_INDEX_05,
							TTM_DIV_05,
							TTM_DIV_LIST_05);
		
		// 引渡年月日
		String hikiwatashiYmd = getData(this, HIKIWATASHI_YMD, HIKIWATASHI_DATE_YEAR_04)
		+ getData(this, HIKIWATASHI_YMD, HIKIWATASHI_DATE_MON_04)
		+ getData(this, HIKIWATASHI_YMD, HIKIWATASHI_DATE_DATE_04);
		setData(this, hikiwatashiYmd, HIKIWATASHI_YMD, HIKIWATASHI_DATE_YMD_04);
		
		// 引渡日単項目チェック
		if(!checkDate(hikiwatashiYmd, 8))
		{
			JCCWebCommon.setMessageInfo(this, "EKB1050-TW", new String[] {"引渡日"});
			return false;
		}
		
		// サービスインターフェイス機能呼び出し
		String  func_code = JPCModelConstant.FUNC_CD_2;
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {serviceFormBean};
		
		// 物流保全対応コード 固定"08"（依頼者引渡済み）
		setData(this, JDKStrConst.BTRYHOZN_TAIO_CD_IRAISYA_HIKIWATASI_FIN, IRAISHA_HIKIWATASHI_INFO, BTRYHOZN_TAIO_CD_03);
		// 配送区分 固定"02"（修理）
		setData(this, "02", IRAISHA_HIKIWATASHI_INFO, HAISO_DIV_03);
		// 配送先個別指定フラグ 固定"1"（個別指定なし）
		setData(this, "1", IRAISHA_HIKIWATASHI_INFO, HISOS_KSITEI_FLG_03);
		// 棚コード 固定"008"（修理棚）
		setData(this, "008", IRAISHA_HIKIWATASHI_INFO, SHELF_CD_03);
		// 住所未確定フラグ 固定"1"（住所確定）
		setData(this, "1", IRAISHA_HIKIWATASHI_INFO, AD_MI_FIX_FLG_03);
		// 出荷待機フラグ 固定"0"（出荷対象）
		setData(this, "0", IRAISHA_HIKIWATASHI_INFO, SHUKKA_TAIKI_FLG_03);
		// 通知書添付コード 固定"0"（なし）
		setData(this, "0", IRAISHA_HIKIWATASHI_INFO, TCHISHO_TEMP_CD_03);
		// 配送メモ 固定"直送"
		setData(this, "直送", IRAISHA_HIKIWATASHI_INFO, HAISO_MEMO_03);
		// 依頼件数 固定"1"
		setData(this, "1", IRAISHA_HIKIWATASHI_INFO, REQ_CNT_03);
		// 正常件数 固定"1"
		setData(this, "1", IRAISHA_HIKIWATASHI_INFO, NORMAL_CNT_03);
		// エラー件数 固定"0"
		setData(this, "0", IRAISHA_HIKIWATASHI_INFO, ERR_CNT_03);
		// 出荷完了明細処理結果コード 固定"2"（正常）
		setData(this, "2", IRAISHA_HIKIWATASHI_INFO, SHUKKA_DTL_RSLT_CD_03);
		// 数量 固定"1"
		setData(this, "1", IRAISHA_HIKIWATASHI_INFO, CNT_03);
		
		// 修理受付日フォーマット
		String shuriUkeYmd = getData(this, IRAISHA_HIKIWATASHI_INFO, BTRYHOZN_UK_DTM_03);
		setData(this, shuriUkeYmd.substring(0, 8), IRAISHA_HIKIWATASHI_INFO, BTRYHOZN_UK_DTM_03);
		
		
		// サービスの呼び出しを行う
		if (!putServiceDKSV0068(paramBean, func_code))
		{
			return false;
		}
		
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String [] { MSG_KOKAN_KIKI_HIKIWATASHI});
		// 遷移先画面IDの設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW02002, JDKScreenConst.SCREEN_NAME_DKW02002);
		
		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, "");
	}
	
	/**
	 * サービス（DKSV0068）の呼び出しを行います。
	 * <br>
	 * @param paramBean パラメータとなるBean情報
	 * @param func_code 機能コード
	 * @return 成否
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
	private boolean putServiceDKSV0068(X31SDataBeanAccess[] paramBean, String func_code) throws Exception
	{
		// ユースケースID格納用マップを生成
		HashMap<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0068");
		
		// マッピングクラスのインスタンスを生成
		DKSV0068_DKSV0068OPDBMapper mapper = new DKSV0068_DKSV0068OPDBMapper();
		HashMap<String, String> dataMap = new HashMap<String, String>();
		
		mapper.setDKSV006801SC(paramBean, dataMap, func_code);
		mapper.setDKSV006802SC(paramBean, dataMap, func_code);
		mapper.setDKSV006803SC(paramBean, dataMap, func_code);
		mapper.setDKSV006805SC(paramBean, dataMap, func_code);
		mapper.setDKSV006806SC(paramBean, dataMap, func_code);
		mapper.setDKSV006807CC(paramBean, dataMap, func_code);
		
		// 検索結果格納用マップ
		HashMap<String, String> outputMap = new HashMap<String, String>();
		
		// 検索処理呼出
		X31CMessageResult msgResult = invokeService(paramMap, dataMap, outputMap);
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
		
		// OM-2014-0002799 ADD START
		// 倉庫棚のチェックを実施
		if (errInfo(outputMap))
		{
			return false;
		}
		// OM-2014-0002799 ADD END
		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 (!putServiceDKSV0068(paramBean, func_code))
		{
			return false;
		}
		
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, new String [] { MSG_KOKAN_KIKI_HIKIWATASHI});
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW02003, JDKScreenConst.SCREEN_NAME_DKW02003);
		return true;
	}
	
	/**
	 * 修正ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean modify() throws Exception
	{
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW02001, JDKScreenConst.SCREEN_NAME_DKW02001);
		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 idKey 対応記録コード
	 * @param cd 依頼者引渡済みコード
	 * @return 存在有無
	 */
	private boolean existTaioCd(String info, String idKey, String cd)
	{
		int count = getServiceFormBean().getDataBeanArray(SHURI_TAIO_RIREKI_LIST).getCount();
		for (int i = 0 ; i < count ; i++)
		{
			X31SDataBeanAccess list = getServiceFormBean().getDataBeanArray(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(SHURI_JOKYO_INFO).getCount();
		for (int i = 0 ; i < count1 ; i++)
		{
			X31SDataBeanAccess list1 = getServiceFormBean().getDataBeanArray(SHURI_JOKYO_INFO).getDataBean(i);
			// 契約者名
			String keishaNm = JDKWebCommon.substr(list1.sendMessageString(KEISHA_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 33);
			list1.sendMessageString(KEISHA_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, keishaNm);
			// 受付者名
			String ukNm = JDKWebCommon.substr(list1.sendMessageString(UK_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 17);
			list1.sendMessageString(UK_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, ukNm);
			// メーカー名
			String mekaNm = JDKWebCommon.substr(list1.sendMessageString(MEKA_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 10);
			list1.sendMessageString(MEKA_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, mekaNm);
			// 故障区分
			String troubleDivNm = JDKWebCommon.substr(list1.sendMessageString(TROUBLE_DIV_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 17);
			list1.sendMessageString(TROUBLE_DIV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, troubleDivNm);
			// 機器契約区分
			String kikiKeiDevNm = JDKWebCommon.substr(list1.sendMessageString(KIKI_KEI_DEV_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 10);
			list1.sendMessageString(KIKI_KEI_DEV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, kikiKeiDevNm);
			// 保証区分
			String hoshoDivNm = JDKWebCommon.substr(list1.sendMessageString(HOSHO_DIV_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 10);
			list1.sendMessageString(HOSHO_DIV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, hoshoDivNm);
			// 製造番号
			String seizoNo = JDKWebCommon.substr(list1.sendMessageString(SEIZO_NO_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 20);
			list1.sendMessageString(SEIZO_NO_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, seizoNo);
			// 処置区分
			String syotiDevNm = JDKWebCommon.substr(list1.sendMessageString(SYOTI_DEV_NM_01, X31CWebConst.DATABEAN_GET_VALUE), 0, 10);
			list1.sendMessageString(SYOTI_DEV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, syotiDevNm);
		}
		
		int count2 = getServiceFormBean().getDataBeanArray(SHURI_TAIO_RIREKI_LIST).getCount();
		for (int i = 0 ; i < count2 ; i++)
		{
			X31SDataBeanAccess list2 = getServiceFormBean().getDataBeanArray(SHURI_TAIO_RIREKI_LIST).getDataBean(i);
			// 対応区分
			String taioDivNm = JDKWebCommon.substr(list2.sendMessageString(TAIO_DIV_NM_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 11);
			list2.sendMessageString(TAIO_DIV_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, taioDivNm);
			// 社員名
			String syainNm = JDKWebCommon.substr(list2.sendMessageString(SYAIN_NM_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 14);
			list2.sendMessageString(SYAIN_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, syainNm);
			// 特記事項
			String tkjk = JDKWebCommon.substr(list2.sendMessageString(TKJK_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 20);
			list2.sendMessageString(TKJK_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, tkjk);
			
			if (i % 2 == 1)
			{
				list2.sendMessageString(L_COLOR_02, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}
			else
			{
				list2.sendMessageString(L_COLOR_02, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			}
		}
	}
	
	/**
	 * 完了ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean complete() throws Exception
	{
		// 遷移先画面IDの設定
		setNextScreen(JCCWebCommon.getScreenId(this, JDKScreenConst.SCREEN_ID_DKW02001), 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;
		}
	}
	// OM-2014-0002799 ADD START
	/**
	 * エラーメッセージを設定します。
	 * @param outputMap サービスの出力結果
	 * @return 設定した場合、true 設定をフレームワークに任せる場合、false
	 */
	private boolean errInfo(HashMap outputMap)
	{
		
		HashMap<String, Object> outMap = new HashMap<String, Object>(outputMap);
		
		boolean existErr = false;
		
		HashMap infMap = (HashMap)outMap.get("DKSV006807CC");
		
		if (!infMap.containsKey("EDKA0010008"))
		{
			return existErr;
		}
		HashMap errMap = null;
		errMap = (HashMap)infMap.get("EDKA0010008");
		
		if (null == errMap)	
		{
			return existErr;
		}
		
		String statCd   = "";
		String errCode  = "";
		if (errMap.containsKey("returnCode"))
		{
			statCd = errMap.get("returnCode").toString();
		}
		if (errMap.containsKey("errCode"))
		{
			errCode = errMap.get("errCode").toString();
		}
		
		if ("1100".equals(statCd) && "EP".equals(errCode))
		{
			existErr = true;
			JCCWebCommon.setMessageInfo(this, EKB0300_KW, 
										new String [] { "宅内機器", "倉庫コード" }, "I_TTM");
		}
		
		return existErr;
		
	}
	// OM-2014-0002799 ADD END
}
