/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：DKW01901SFLogic
 *   ソースファイル名：DKW01901SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年07月28日
 *＜機能概要＞
 *   機器メーカー修理完了のビューロジックです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/07/28   FJ）        新規作成
 *   v12.00.00   2015/02/04   FJ）中山    【OM-2014-0003968】画面項目｢建物｣をラベル表示に変更
 *
 **********************************************************************/
package eo.web.webview.DKW01901SF;

import static eo.web.webview.DKW01901SF.DKW01901SFConst.*;
import static eo.web.webview.common.JDKWebCommon.*;

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 eo.common.constant.JDKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCEditString;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.DKW01601SF.DKW01601SFConst;
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.DKSV0005_DKSV0005OPDBMapper;
import eo.web.webview.mapping.DKSV0014_DKSV0014OPDBMapper;

/**
 * 機器メーカー修理完了を処理するロジッククラスです。
 * 
 * @author 富士通
 */
public class DKW01901SFLogic extends JCCWebBusinessLogic
{
	/** シリアルバージョン */
	private static final long serialVersionUID = 1L;

	/**
	 * 初期表示処理
	 * <br>
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定
		String opeDate = JCCWebCommon.getOpeDate(this, null);

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		X31SDataBeanAccess[] paramBean = { serviceFormBean };

		if (JCCWebCommon.getScreenId(this) != null)
		{
			// 物流保全番号の設定
			HashMap<String, Object> map = JCCWebCommon.getScreenInfo(this);
			String btryhoznNo = (String)map.get(JDKStrConst.BUTSURYUHOZEN_NO);
			paramBean[0].sendMessageString(DKW01901SFConst.BTRYHOZN_NO, X31CWebConst.DATABEAN_SET_VALUE, btryhoznNo);

			// 運用日付の設定
			serviceFormBean.sendMessageString(DKW01901SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);
		}
		else
		{
			return true;
		}

		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, "DKSV0005");

		// サービス呼出処理
		DKSV0005_DKSV0005OPDBMapper mapper = new DKSV0005_DKSV0005OPDBMapper();
		mapper.setDKSV000501SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV000502SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV000503SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV000504SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
//OM-2014-0003968 DEL START
//		mapper.setDKSV000505SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
//OM-2014-0003968 DEL END

		// サービス処理結果の判定
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		JCCMessageCache.setMessageCache();

		// サービス処理結果の取得
		mapper.getDKSV000501SC(paramBean, outputMap);
		mapper.getDKSV000502SC(paramBean, outputMap);
		mapper.getDKSV000503SC(paramBean, outputMap);
		mapper.getDKSV000504SC(paramBean, outputMap);
//OM-2014-0003968 DEL START
//		mapper.getDKSV000505SC(paramBean, outputMap);
//OM-2014-0003968 DEL END
		mapper.getDKSV000506SC(paramBean, outputMap);

		// 遷移可否判断処理
		// 機器メーカー修理完了情報.物流保全ステータスの取得
		X31SDataBeanAccess kikiMakerShuriFinInfo = serviceFormBean.getDataBeanArray(DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO).getDataBean(0);
		String btryhoznStat = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.BTRYHOZN_STAT_06);

		// 機器メーカー修理完了情報.物流保全ステータスが
		// "002"（メーカー修理依頼済み）
		// "003"（メーカー修理完了済み）
		// "004"（完了済み）でない場合
		if (!JDKStrConst.BTRYHOZN_STAT_SHURI_IRAI.equals(btryhoznStat) && !JDKStrConst.BTRYHOZN_STAT_SHURI_FIN.equals(btryhoznStat)
				&& !JDKStrConst.BTRYHOZN_STAT_FIN.equals(btryhoznStat))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0810_NW, new String [] {"データ", "機器メーカー修理完了登録"});

			// 一覧画面に強制転送
			setNextScreen(JCCWebCommon.getScreenId(this), JZMWebConst.BLANK);
			setTransferPageId(JCCWebCommon.getScreenId(this) + JZMWebConst.PJP);

			return true;
		}
		
		// 代替機が必要な場合は、先に交換機器画面から代替機を出荷してること
		if (   JDKStrConst.DAITAIKI_HITUYO.equals(getData(this, KIKI_MAKER_SHURI_FIN_INFO, DAITAI_KIKI_CD_06))
			&& !existTaioCd(SHURI_RIREKI_LIST, TAIO_DIV_CD_02, JDKStrConst.BTRYHOZN_TAIO_CD_KIKI_HIKIWATASI_FIN))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0810_NW, new String [] {"データ", "機器メーカー修理完了登録"});

			setNextScreen(JCCWebCommon.getScreenId(this), JZMWebConst.BLANK);
			setTransferPageId(JCCWebCommon.getScreenId(this) + JZMWebConst.PJP);

			return true;
		}

//OM-2014-0003968 DEL START
//		pushEmptyToTopOfPulldown(DKW01901SFConst.TTM_INFO, DKW01901SFConst.TTM_CD_LIST_07, DKW01901SFConst.TTM_NM_LIST_07);
//OM-2014-0003968 DEL END
		pushEmptyToTopOfPulldown(DKW01901SFConst.UK_GOODS_INFO, DKW01901SFConst.CD_DIV_LIST_05, DKW01901SFConst.CD_DIV_NM_LIST_05);
		pushEmptyToTopOfPulldown(DKW01901SFConst.MODEL_INFO, DKW01901SFConst.MODEL_NO_LIST_04,
				DKW01901SFConst.MODEL_NO_NM_LIST_04, DKW01901SFConst.MODEL_FLG_LIST_04, DKW01901SFConst.SHURI_KOKAN_GRP_SBT_CD_LIST_04);
//OM-2014-0003968 DEL START
//		slideArrayOnDatabean(super.getServiceFormBean().getDataBeanArray(DKW01901SFConst.TTM_INFO).getDataBean(0), DKW01901SFConst.TTM_DIV_LIST_07);
//OM-2014-0003968 DEL END

		// サービスフォームBean設定処理
		String modelNo = null;

		// 機器メーカー修理完了情報.物流保全ステータスが"002"（メーカー修理依頼済み）の場合
		if (JDKStrConst.BTRYHOZN_STAT_SHURI_IRAI.equals(btryhoznStat))
		{
			// 機器メーカー修理完了情報.型番号に機器メーカー修理完了情報.宅内機器型式コードまたは
			// 機器メーカー修理完了情報.付属品型式コードのうち値が設定されているコード値を設定
			modelNo = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.TAKNKIKI_MODEL_CD_06);
			if ("".equals(modelNo))
			{
				modelNo = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.HUZOKUHIN_MODEL_CD_06);
			}
			kikiMakerShuriFinInfo.sendMessageString(DKW01901SFConst.MODEL_NO_06, X31CWebConst.DATABEAN_SET_VALUE, modelNo);

			// 修理完了日に運用日付を設定
			X31SDataBeanAccess shuriFinYMD = serviceFormBean.getDataBeanArray(DKW01901SFConst.SHURI_FIN_YMD).getDataBean(0);
			shuriFinYMD.sendMessageString(DKW01901SFConst.YEAR_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toYearFromYmd(opeDate));
			shuriFinYMD.sendMessageString(DKW01901SFConst.MON_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toMonthFromYmd(opeDate));
			shuriFinYMD.sendMessageString(DKW01901SFConst.DAY_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toDayFromYmd(opeDate));

			// 機器メーカー修理完了情報.製造番号に機器製造番号を設定
			String seizoNo = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.KIKI_SEIZO_NO_06);
			kikiMakerShuriFinInfo.sendMessageString(DKW01901SFConst.SEIZO_NO_06, X31CWebConst.DATABEAN_SET_VALUE, seizoNo);
		}
		else
		{
			// 機器メーカー修理完了情報.型番号に機器メーカー修理完了情報.リニューアル後宅内機器型式コードまたは
			// 機器メーカー修理完了情報.リニューアル後付属品型式コードのうち値が設定されているコード値を設定
			modelNo = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.RENEWAL_AF_TAKNKIKI_MDL_CD_06);
			if ("".equals(modelNo))
			{
				modelNo = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.RENEWAL_AF_HZKHIN_MDL_CD_06);
			}
			kikiMakerShuriFinInfo.sendMessageString(DKW01901SFConst.MODEL_NO_06, X31CWebConst.DATABEAN_SET_VALUE, modelNo);

			// 機器メーカー修理完了情報.メーカーコードに機器メーカー修理完了情報.リニューアル後メーカーコードを設定
			String makerCd = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.RENEWAL_AF_MAKER_CD_06);
			kikiMakerShuriFinInfo.sendMessageString(DKW01901SFConst.MAKER_CD_06, X31CWebConst.DATABEAN_SET_VALUE, makerCd);

			// 機器メーカー修理完了情報.メーカー名に機器メーカー修理完了情報.リニューアル後メーカー名を設定
			String makerNm = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.RENEWAL_AF_MAKER_NM_06);
			kikiMakerShuriFinInfo.sendMessageString(DKW01901SFConst.MAKER_NM_06, X31CWebConst.DATABEAN_SET_VALUE, makerNm);

			// 修理完了日に機器メーカー修理完了情報.メーカー修理完了年月日を設定
			String bkShuriFinYMD = null;
			X31SDataBeanAccess shuriFinYMD = serviceFormBean.getDataBeanArray(DKW01901SFConst.SHURI_FIN_YMD).getDataBean(0);
			bkShuriFinYMD = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.MKR_SHURI_FIN_YMD_06);
			shuriFinYMD.sendMessageString(DKW01901SFConst.YEAR_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toYearFromYmd(bkShuriFinYMD));
			shuriFinYMD.sendMessageString(DKW01901SFConst.MON_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toMonthFromYmd(bkShuriFinYMD));
			shuriFinYMD.sendMessageString(DKW01901SFConst.DAY_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toDayFromYmd(bkShuriFinYMD));

			// 機器メーカー修理完了情報.製造番号にリニューアル後機器製造番号を設定
			String seizoNo = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.RENEWAL_AF_KIKI_SEIZO_NO_06);
			kikiMakerShuriFinInfo.sendMessageString(DKW01901SFConst.SEIZO_NO_06, X31CWebConst.DATABEAN_SET_VALUE, seizoNo);
		}

		// 型番号情報.型番号に機器メーカー修理完了情報.型番号を設定
		X31SDataBeanAccess modelInfo = serviceFormBean.getDataBeanArray(DKW01901SFConst.MODEL_INFO).getDataBean(0);
		int modelNoIndex = getIndexFromCode(modelNo, serviceFormBean, DKW01901SFConst.MODEL_INFO, DKW01901SFConst.MODEL_NO_LIST_04);
		modelInfo.sendMessageString(DKW01901SFConst.MODEL_NO_04, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(modelNoIndex));

		// 受取商品区分情報.コード区分に機器メーカー修理完了情報.メーカー返品受取商品コードを設定
		X31SDataBeanAccess ukGoodsInfo = serviceFormBean.getDataBeanArray(DKW01901SFConst.UK_GOODS_INFO).getDataBean(0);
		String cdDiv = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.MKRHMPIN_UK_GOODS_CD_06);
		int cdDivIndex = getIndexFromCode(cdDiv, serviceFormBean, DKW01901SFConst.UK_GOODS_INFO, DKW01901SFConst.CD_DIV_LIST_05);
		ukGoodsInfo.sendMessageString(DKW01901SFConst.CD_DIV_05, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(cdDivIndex));

		// 機器メーカー修理完了情報.物流保全対応コードに機器メーカー修理完了済みを設定
		kikiMakerShuriFinInfo.sendMessageString(DKW01901SFConst.BTRYHOZN_TAIO_CD_06, X31CWebConst.DATABEAN_SET_VALUE, "07");

		X31SDataBeanAccess shuriJokyoInfo = serviceFormBean.getDataBeanArray(DKW01901SFConst.SHURI_JOKYO_INFO).getDataBean(0);

		// 修理状況情報.契約者表示名
		String keishaDispNm = JDKWebCommon.substr(getData(this, DKW01901SFConst.SHURI_JOKYO_INFO, DKW01901SFConst.KEISHA_NM_01), 0, 33);
		shuriJokyoInfo.sendMessageString(DKW01901SFConst.KEISHA_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, keishaDispNm);

		// 修理状況情報.メーカー表示名
		String mekaDispNm = JDKWebCommon.substr(getData(this, DKW01901SFConst.SHURI_JOKYO_INFO, DKW01901SFConst.MEKA_NM_01), 0, 10);
		shuriJokyoInfo.sendMessageString(DKW01901SFConst.MEKA_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, mekaDispNm);

		// 修理状況情報.機器契約区分表示名称
		String kikiKeiDevDispNm = JDKWebCommon.substr(getData(this, DKW01901SFConst.SHURI_JOKYO_INFO, DKW01901SFConst.KIKI_KEI_DEV_NM_01), 0, 10);
		shuriJokyoInfo.sendMessageString(DKW01901SFConst.KIKI_KEI_DEV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, kikiKeiDevDispNm);

		// 修理状況情報.製造番号表示名
		String seizoNoDispNm = JDKWebCommon.substr(getData(this, DKW01901SFConst.SHURI_JOKYO_INFO, DKW01901SFConst.SEZO_NO_01), 0, 20);
		shuriJokyoInfo.sendMessageString(DKW01901SFConst.SEZO_NO_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, seizoNoDispNm);

		// 修理状況情報.保証区分表示名称
		String hoshoDivDispNm = JDKWebCommon.substr(getData(this, DKW01901SFConst.SHURI_JOKYO_INFO, DKW01901SFConst.HOSHO_DIV_NM_01), 0, 10);
		shuriJokyoInfo.sendMessageString(DKW01901SFConst.HOSHO_DIV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, hoshoDivDispNm);

		// 修理状況情報.処置区分表示名称
		String syotiDevDispNm = JDKWebCommon.substr(getData(this, DKW01901SFConst.SHURI_JOKYO_INFO, DKW01901SFConst.SYOTI_DEV_NM_01), 0, 10);
		shuriJokyoInfo.sendMessageString(DKW01901SFConst.SYOTI_DEV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, syotiDevDispNm);

		// 修理状況情報.受付者表示名
		String ukDispNm = JDKWebCommon.substr(getData(this, DKW01901SFConst.SHURI_JOKYO_INFO, DKW01901SFConst.UK_NM_01), 0, 17);
		shuriJokyoInfo.sendMessageString(DKW01901SFConst.UK_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, ukDispNm);

		// 修理状況情報.故障区分表示名称
		String troubleDivDispNm = JDKWebCommon.substr(getData(this, DKW01901SFConst.SHURI_JOKYO_INFO, DKW01901SFConst.TROUBLE_DIV_NM_01), 0, 17);
		shuriJokyoInfo.sendMessageString(DKW01901SFConst.TROUBLE_DIV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, troubleDivDispNm);

		X31SDataBeanAccessArray shuriRirekiList = serviceFormBean.getDataBeanArray(DKW01901SFConst.SHURI_RIREKI_LIST);

		for (int i = 0; i < shuriRirekiList.getCount(); i++)
		{
			X31SDataBeanAccess shuriRireki = shuriRirekiList.getDataBean(i);

			// 修理対応履歴.対応区分表示名称
			String taioDivDispNm = JDKWebCommon.substr(shuriRireki.sendMessageString(DKW01901SFConst.TAIO_DIV_NM_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 11);
			shuriRireki.sendMessageString(DKW01901SFConst.TAIO_DIV_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, taioDivDispNm);

			// 修理対応履歴.社員表示名
			String syainDispNm = JDKWebCommon.substr(shuriRireki.sendMessageString(DKW01901SFConst.SYAIN_NM_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 14);
			shuriRireki.sendMessageString(DKW01901SFConst.SYAIN_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, syainDispNm);

			// 修理対応履歴.特記事項表示名
			String tkjkDispNm = JDKWebCommon.substr(shuriRireki.sendMessageString(DKW01901SFConst.TKJK_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 20);
			shuriRireki.sendMessageString(DKW01901SFConst.TKJK_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, tkjkDispNm);

			// 修理対応履歴.背景色を設定
			if (i % 2 == 1)
			{
				shuriRireki.sendMessageString(DKW01901SFConst.COLOR_02, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}
			else
			{
				shuriRireki.sendMessageString(DKW01901SFConst.COLOR_02, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			}
		}

//OM-2014-0003968 DEL START
//		// 建物情報.建物に機器メーカー修理完了情報.建物を設定
//		X31SDataBeanAccess ttmInfo = serviceFormBean.getDataBeanArray(DKW01901SFConst.TTM_INFO).getDataBean(0);
//		String ttm = getData(this, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.TTM_06);
//		if (!"".equals(ttm))
//		{
//			int ttmIndex = getIndexFromCode(ttm, serviceFormBean, DKW01901SFConst.TTM_INFO, DKW01901SFConst.TTM_CD_LIST_07);
//			ttmInfo.sendMessageString(DKW01901SFConst.TTM_07, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(ttmIndex));
//		}
//OM-2014-0003968 DEL END
		// 遷移先画面の設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW01901, JDKScreenConst.SCREEN_NAME_DKW01901);

		return true;
	}

	/**
	 * 登録確認ボタン押下処理
	 * <br>
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean confirmCreate() throws Exception
	{
		
//OM-2014-0003968 DEL START
//		// （建物区分）
//		storePullDown(this, TTM_INFO,
//							TTM_07,
//							TTM_DIV_07,
//							TTM_DIV_LIST_07);
//OM-2014-0003968 DEL END
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		X31SDataBeanAccess[] paramBean = { serviceFormBean };

		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, "DKSV0014");


		// 修理状況情報.修理交換グループ種別コードと型番号情報.修理交換グループ種別コードリストの値が異なる場合エラー
		String modelNoIndex = getData(this, DKW01901SFConst.MODEL_INFO, DKW01901SFConst.MODEL_NO_04);
		String selectShuriKokanGrpSbtCd = getNameFromIndex(Integer.parseInt(modelNoIndex),
				serviceFormBean, DKW01901SFConst.MODEL_INFO, DKW01901SFConst.SHURI_KOKAN_GRP_SBT_CD_LIST_04);
		String shuriKokanGrpSbtCd = getData(this, DKW01901SFConst.SHURI_JOKYO_INFO, DKW01901SFConst.SHURI_KOKAN_GRP_SBT_CD_01);
		if (!shuriKokanGrpSbtCd.equals(selectShuriKokanGrpSbtCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0810_NW,
					new String[] {"型番号", "修理受付時の型番号の修理交換グループ種別コードが異なる為、選択"}, "model_info");
			return false;
		}

		// サービスフォームBean設定処理
		// 機器メーカー修理完了情報.型番号に型番号情報.型番号リストの値を設定
		String modelNo = getCodeFromIndex(Integer.parseInt(modelNoIndex), serviceFormBean, DKW01901SFConst.MODEL_INFO, DKW01901SFConst.MODEL_NO_LIST_04);
		setData(this, modelNo, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.MODEL_NO_06);

		// 機器メーカー修理完了情報.型番号名称に型番号情報.型番号名称リストの値を設定
		String modelNoNm = getNameFromIndex(Integer.parseInt(modelNoIndex), serviceFormBean,
				DKW01901SFConst.MODEL_INFO, DKW01901SFConst.MODEL_NO_NM_LIST_04);
		setData(this, JDKWebCommon.getFollowOf(modelNoNm, "."), DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.MODEL_NO_NM_06);

		// 機器メーカー修理完了情報.型番号判別フラグに型番号情報.型番号判別フラグリストの値を設定
		String modelFlg = getNameFromIndex(Integer.parseInt(modelNoIndex), serviceFormBean, DKW01901SFConst.MODEL_INFO, DKW01901SFConst.MODEL_FLG_LIST_04);
		setData(this, modelFlg, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.MODEL_FLG_06);

		// 機器メーカー修理完了情報.メーカー返品受取商品コードに受取商品区分情報.コード区分リストの値を設定
		String cdDivIndex = getData(this, DKW01901SFConst.UK_GOODS_INFO, DKW01901SFConst.CD_DIV_05);
		String mkrhmpinUkGoodsCd = getCodeFromIndex(Integer.parseInt(cdDivIndex), serviceFormBean,
				DKW01901SFConst.UK_GOODS_INFO, DKW01901SFConst.CD_DIV_LIST_05);
		setData(this, mkrhmpinUkGoodsCd, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.MKRHMPIN_UK_GOODS_CD_06);

		// 機器メーカー修理完了情報.受取商品コード名称に受取商品区分情報.コード区分名リストの値を設定
		String ukGoodsCdNm = getNameFromIndex(Integer.parseInt(cdDivIndex), serviceFormBean,
				DKW01901SFConst.UK_GOODS_INFO, DKW01901SFConst.CD_DIV_NM_LIST_05);
		setData(this, JDKWebCommon.getFollowOf(ukGoodsCdNm, "."), DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.UK_GOODS_CD_NM_06);

//OM-2014-0003968 DEL START
//		// 機器メーカー修理完了情報.建物に建物情報.建物値リストの値を設定
//		Long ttmIndex = getDataL(this, DKW01901SFConst.TTM_INFO, DKW01901SFConst.TTM_07);
//		String ttm = getCodeFromIndex(ttmIndex.intValue(), serviceFormBean, DKW01901SFConst.TTM_INFO, DKW01901SFConst.TTM_CD_LIST_07);
//		setData(this, ttm, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.TTM_06);
//
//		// 機器メーカー修理完了情報.建物名称に建物情報.建物名リストの値を設定
//		String ttmNm = getNameFromIndex(ttmIndex.intValue(), serviceFormBean, DKW01901SFConst.TTM_INFO, DKW01901SFConst.TTM_NM_LIST_07);
//		setData(this, JDKWebCommon.getFollowOf(ttmNm, "."), DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.TTM_NM_06);
//OM-2014-0003968 DEL END

		// 機器メーカー修理完了情報.メーカー修理完了年月日に修理完了日を設定
		String mkrShuriFinYmdYear = getData(this, DKW01901SFConst.SHURI_FIN_YMD, DKW01901SFConst.YEAR_03);
		String mkrShuriFinYmdMon = getData(this, DKW01901SFConst.SHURI_FIN_YMD, DKW01901SFConst.MON_03);
		String mkrShuriFinYmdDay = getData(this, DKW01901SFConst.SHURI_FIN_YMD, DKW01901SFConst.DAY_03);
		setData(this, mkrShuriFinYmdYear + mkrShuriFinYmdMon + mkrShuriFinYmdDay,
				DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.MKR_SHURI_FIN_YMD_06);

		// 機器メーカー修理完了情報.リニューアル後宅内機器型式コードに機器メーカー修理完了情報.型番号判別フラグが"1"（宅内機器型式コード）である場合は
		// 機器メーカー修理完了情報.型番号を設定、以外はNULLを設定
		if ("1".equals(modelFlg))
		{
			setData(this, modelNo, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.RENEWAL_AF_TAKNKIKI_MDL_CD_06);
		}
		else
		{
			setData(this, "", DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.RENEWAL_AF_TAKNKIKI_MDL_CD_06);
		}

		// 機器メーカー修理完了情報.リニューアル後付属品型式コードに機器メーカー修理完了情報.型番号判別フラグが"2"（付属品型式コード）である場合は
		// 機器メーカー修理完了情報.型番号を設定、以外はNULLを設定
		if ("2".equals(modelFlg))
		{
			setData(this, modelNo, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.RENEWAL_AF_HZKHIN_MDL_CD_06);
		}
		else
		{
			setData(this, "", DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.RENEWAL_AF_HZKHIN_MDL_CD_06);
		}

		String svcKeiCd = getData(this, DKW01901SFConst.SHURI_JOKYO_INFO, DKW01901SFConst.SVC_KEI_NO_01);
		setData(this, svcKeiCd, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.SVC_KEI_NO_06);
		String kktkSbtcd = getData(this, DKW01901SFConst.SHURI_JOKYO_INFO, DKW01901SFConst.KKTK_SBT_CD_01);
		setData(this, kktkSbtcd, DKW01901SFConst.KIKI_MAKER_SHURI_FIN_INFO, DKW01901SFConst.KKTK_SBT_CD_06);

		// サービス呼出処理
		DKSV0014_DKSV0014OPDBMapper mapper = new DKSV0014_DKSV0014OPDBMapper();
		mapper.setDKSV001401SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setDKSV001402SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setDKSV001403SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setDKSV001404SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setDKSV001405SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		mapper.setDKSV001407SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV001408SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setDKSV001409SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		mapper.setDKSV001406CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		// サービス処理結果の判定
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}

		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String [] {"機器メーカー修理完了登録"});

		// 遷移先画面の設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW01902, JDKScreenConst.SCREEN_NAME_DKW01902);

		return true;
	}

	/**
	 * 戻るボタン押下処理
	 * <br>
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean returnList() throws Exception
	{
		// 遷移先画面の設定
		setNextScreen(JCCWebCommon.getScreenId(this), JZMWebConst.BLANK);

		return true;
	}

	/**
	 * 確定ボタン押下処理
	 * <br>
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean fix() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();

		X31SDataBeanAccess[] paramBean = { serviceFormBean };

		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, "DKSV0014");

		// サービス呼出処理
		DKSV0014_DKSV0014OPDBMapper mapper = new DKSV0014_DKSV0014OPDBMapper();
		mapper.setDKSV001401SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV001402SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV001403SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV001404SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV001405SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV001407SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV001408SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV001409SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV001406CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// サービス処理結果の判定
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, new String [] { "機器メーカー修理完了登録"});

		// 遷移先画面の設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW01903, JDKScreenConst.SCREEN_NAME_DKW01903);

		return true;
	}

	/**
	 * 修正ボタン押下処理
	 * <br>
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean modify() throws Exception
	{
		// 遷移先画面の設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW01901, JDKScreenConst.SCREEN_NAME_DKW01901);

		return true;
	}

	/**
	 * 完了ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean complete() throws Exception
	{
		// 遷移先画面の設定
		setNextScreen(JCCWebCommon.getScreenId(this, JDKScreenConst.SCREEN_ID_DKW01901), JZMWebConst.BLANK);

		return true;
	}

	/**
	 * インデックスを引数にプルダウンからコードを取得します。
	 * @param index インデックス
	 * @param serviceFormBean サービスフォームビーン
	 * @param listNm リスト項目名
	 * @param cdValueListNm コード値リスト項目名
	 * @return 取得したコード
	 */
	private String getCodeFromIndex(int index, X31SDataBeanAccess serviceFormBean, String listNm, String cdValueListNm)
	{
		// リストを取得
		X31SDataBeanAccessArray beanArray = serviceFormBean.getDataBeanArray(listNm);
		X31SDataBeanAccess bean = beanArray.getDataBean(0);
		String retCode = bean.sendMessageString(cdValueListNm, X31CWebConst.DATABEAN_GET_VALUE, index);

		return retCode;
	}

	/**
	 * インデックスを引数にプルダウンから名称を取得します。
	 * @param index インデックス
	 * @param serviceFormBean サービスフォームビーン
	 * @param listNm リスト項目名
	 * @param cdNameListNm コード名リスト項目名
	 * @return 取得した名称
	 */
	private String getNameFromIndex(int index, X31SDataBeanAccess serviceFormBean, String listNm, String cdNameListNm)
	{
		// リストを取得
		X31SDataBeanAccessArray beanArray = serviceFormBean.getDataBeanArray(listNm);
		X31SDataBeanAccess bean = beanArray.getDataBean(0);
		String retName = bean.sendMessageString(cdNameListNm, X31CWebConst.DATABEAN_GET_VALUE, index);

		return retName;
	}

	/**
	 * コードを引数にプルダウンからインデックスを取得します。
	 * @param code コード
	 * @param serviceFormBean サービスフォームビーン
	 * @param listNm リスト項目名
	 * @param cdValueListNm コード値リスト項目名
	 * @return 取得したインデックス
	 */
	private int getIndexFromCode(String code, X31SDataBeanAccess serviceFormBean, String listNm, String cdValueListNm)
	{
		// 状態コードリストを取得
		X31SDataBeanAccessArray beanArray = serviceFormBean.getDataBeanArray(listNm);
		X31SDataBeanAccess bean = beanArray.getDataBean(0);

		int retIndex = 0;

		for (int i = 0; i < Integer.valueOf(bean.sendMessage(cdValueListNm, X31CWebConst.DATABEAN_GET_COUNT).toString()); i++)
		{
			if (code.equals(bean.sendMessageString(cdValueListNm, X31CWebConst.DATABEAN_GET_VALUE, i)))
			{
				retIndex = i;
				break;
			}
		}

		return retIndex;
	}

	/**
	 * 画面遷移先を設定します。
	 * <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 pulldown プルダウンを指す項目ID
	 * @param cdList プルダウン中でコード一覧をさす項目ID
	 * @param nmList プルダウン中で名称一覧をさす項目ID
	 */
	private void pushEmptyToTopOfPulldown(String pulldown, String cdList, String nmList)
	{
		X31SDataBeanAccess pulldownBean = super.getServiceFormBean().getDataBeanArray(pulldown).getDataBean(0);

		appendPrefix(getBean(this, pulldown), nmList);
		
		slideArrayOnDatabean(pulldownBean, cdList);
		slideArrayOnDatabean(pulldownBean, nmList);
	}

	/**
	 * プルダウンの０番目の項目に空白を挿入します。
	 * @param pulldown プルダウンを指す項目ID
	 * @param cdList プルダウン中でコード一覧をさす項目ID
	 * @param nmList プルダウン中で名称一覧をさす項目ID
	 * @param flgList プルダウン中でフラグ一覧をさす項目ID
	 * @param grpList プルダウン中で修理交換グループ一覧をさす項目ID
	 */
	private void pushEmptyToTopOfPulldown(String pulldown, String cdList, String nmList, String flgList, String grpList)
	{
		X31SDataBeanAccess pulldownBean = super.getServiceFormBean().getDataBeanArray(pulldown).getDataBean(0);

		appendPrefix(getBean(this, pulldown), nmList);
		
		slideArrayOnDatabean(pulldownBean, cdList);
		slideArrayOnDatabean(pulldownBean, nmList);
		slideArrayOnDatabean(pulldownBean, flgList);
		slideArrayOnDatabean(pulldownBean, grpList);
	}

	/**
	 * データビーンの配列要素をインデックスが増加する方向に１つずらす
	 * @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, "");
	}
	
	/**
	 * 修理対応履歴情報にて指定の対応記録が存在するかを判定します。
	 * @param info 修理対応履歴情報
	 * @param idKey 対応記録コード
	 * @param cd 存在確認コード
	 * @return 存在有無
	 */
	private boolean existTaioCd(String info, String idKey, String cd)
	{
		int count = getServiceFormBean().getDataBeanArray(info).getCount();
		for (int i = 0 ; i < count ; i++)
		{
			X31SDataBeanAccess list = getServiceFormBean().getDataBeanArray(info).getDataBean(i);
			if (cd.equals(list.sendMessageString(idKey, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				return true;
			}
		}
		return false;
	}
	
}
