/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：DKW02101SFLogic
 *   ソースファイル名：DKW02101SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年08月30日
 *＜機能概要＞
 *   修理完了のビューロジックです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/08/30   FJ）        新規作成
 *   v2.00.00    2012/05/26   FJ）        宅内対応
 *
 **********************************************************************/
package eo.web.webview.DKW02101SF;

import static eo.web.webview.DKW02101SF.DKW02101SFConst.*;
import static eo.web.webview.DKW03701SF.DKW03701SFConst.SHURI_JOKYO_INFO;
import static eo.web.webview.DKW03701SF.DKW03701SFConst.SYOTI_DEV_01;
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.DKW03701SF.DKW03701SFConst;
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.DKSV0030_DKSV0030OPDBMapper;
import eo.web.webview.mapping.DKSV0031_DKSV0031OPDBMapper;

/**
 * 修理完了登録を処理するロジッククラスです。
 * 
 * @author 富士通
 */
public class DKW02101SFLogic 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(DKW02101SFConst.BTRYHOZN_NO, X31CWebConst.DATABEAN_SET_VALUE, btryhoznNo);

			// 運用日付の設定
			serviceFormBean.sendMessageString(DKW02101SFConst.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, "DKSV0030");

		// サービス呼出処理
		DKSV0030_DKSV0030OPDBMapper mapper = new DKSV0030_DKSV0030OPDBMapper();
		mapper.setDKSV003001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV003002SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV003003SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV003004SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV003005SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setDKSV003006SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// サービス処理結果の判定
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);

		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		JCCMessageCache.setMessageCache();

		// サービス処理結果の取得
		mapper.getDKSV003001SC(paramBean, outputMap);
		mapper.getDKSV003002SC(paramBean, outputMap);
		mapper.getDKSV003003SC(paramBean, outputMap);
		mapper.getDKSV003004SC(paramBean, outputMap);
		mapper.getDKSV003005SC(paramBean, outputMap);
		mapper.getDKSV003006SC(paramBean, outputMap);

		// 遷移可否判断処理
		// 修理完了情報.物流保全ステータスの取得
		X31SDataBeanAccess shuriFinInfo = serviceFormBean.getDataBeanArray(DKW02101SFConst.SHURI_FIN_INFO).getDataBean(0);

		
		// 直送機器交換の場合は交換機器引渡しを行っていない場合使用できない
		if ("1".equals(getData(this, DKW02101SFConst.SHURI_JOKYO_INFO, SYOTI_DEV_01)) )
		{
			boolean koukanKikiFlag = true;
			X31SDataBeanAccessArray shuriRirekiList = serviceFormBean.getDataBeanArray(DKW02101SFConst.SHURI_RIREKI_LIST);
			for (int i = 0; i < shuriRirekiList.getCount(); i++)
			{
				X31SDataBeanAccess shuriRireki = shuriRirekiList.getDataBean(i);
				String btryhoznTaioCd = shuriRireki.sendMessageString(DKW02101SFConst.TAIO_DIV_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
				// 物流保全対応コードが"02"（交換機器引渡済）のレコードが存在する
				if (JDKStrConst.BTRYHOZN_TAIO_CD_KIKI_HIKIWATASI_FIN.equals(btryhoznTaioCd))
				{
					koukanKikiFlag = false;
				}
			}
			// 交換機器引渡しを行っていた
			if (koukanKikiFlag)
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0810_NW, new String [] {"データ", "修理完了登録"});
	
				// 一覧画面に強制転送
				setNextScreen(JCCWebCommon.getScreenId(this), JZMWebConst.BLANK);
				setTransferPageId(JCCWebCommon.getScreenId(this) + JZMWebConst.PJP);
	
				return true;
			}
		}


		// 修理完了情報.物流保全ステータスの取得
		String btryhoznStat = getData(this, DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.BTRYHOZN_STAT_05);

		// 修理完了情報.物流保全ステータスが
		// "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(JCCWebCommon.getScreenId(this), JZMWebConst.BLANK);
			setTransferPageId(JCCWebCommon.getScreenId(this) + JZMWebConst.PJP);

			return true;
		}
		
		// 先に依頼者引き渡しをさせる
		// 判断条件はメーカー完了で且つ新機器と旧機器が同じ場合
		if (JDKStrConst.BTRYHOZN_STAT_SHURI_FIN.equals(btryhoznStat)
				&& getData(this, MAKER_FIN_INFO, NEW_KIKI_SEIZO_NO_07).equals(getData(this, MAKER_FIN_INFO, OLD_KIKI_SEIZO_NO_07))
				&& !existTaioCd(SHURI_RIREKI_LIST, TAIO_DIV_CD_02, JDKStrConst.BTRYHOZN_TAIO_CD_IRAISYA_HIKIWATASI_FIN))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0810_NW, new String [] {"データ", "修理完了登録"});

			// 一覧画面に強制転送
			setNextScreen(JCCWebCommon.getScreenId(this), JZMWebConst.BLANK);
			setTransferPageId(JCCWebCommon.getScreenId(this) + JZMWebConst.PJP);

			return true;
		}

		pushEmptyToTopOfPulldown(DKW02101SFConst.TTM_INFO, DKW02101SFConst.TTM_CD_LIST_06, DKW02101SFConst.TTM_NM_LIST_06);
		pushEmptyToTopOfPulldown(DKW02101SFConst.DOSA_CFM_INFO, DKW02101SFConst.CD_DIV_LIST_04, DKW02101SFConst.CD_DIV_NM_LIST_04);
		slideArrayOnDatabean(super.getServiceFormBean().getDataBeanArray(DKW02101SFConst.TTM_INFO).getDataBean(0), DKW02101SFConst.TTM_DIV_LIST_06); 
		
		// サービスフォームBean設定処理
		String modelNo = null;

		// 修理完了情報.物流保全ステータスが"004"（完了済み）の場合
		if (JDKStrConst.BTRYHOZN_STAT_FIN.equals(btryhoznStat))
		{
			// 完了日に修理完了情報.物流保全完了年月日を設定
			String bkFinYMD = null;
			X31SDataBeanAccess finYMD = serviceFormBean.getDataBeanArray(DKW02101SFConst.FIN_YMD).getDataBean(0);
			bkFinYMD = getData(this, DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.BTRYHOZN_FIN_YMD_05);
			finYMD.sendMessageString(DKW02101SFConst.YEAR_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toYearFromYmd(bkFinYMD));
			finYMD.sendMessageString(DKW02101SFConst.MON_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toMonthFromYmd(bkFinYMD));
			finYMD.sendMessageString(DKW02101SFConst.DAY_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toDayFromYmd(bkFinYMD));
		}
		else
		{
			// 完了日に運用日付を設定
			X31SDataBeanAccess finYMD = serviceFormBean.getDataBeanArray(DKW02101SFConst.FIN_YMD).getDataBean(0);
			finYMD.sendMessageString(DKW02101SFConst.YEAR_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toYearFromYmd(opeDate));
			finYMD.sendMessageString(DKW02101SFConst.MON_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toMonthFromYmd(opeDate));
			finYMD.sendMessageString(DKW02101SFConst.DAY_03, X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toDayFromYmd(opeDate));
		}

		// 動作確認情報.コード区分に修理完了情報.動作確認コードを設定
		X31SDataBeanAccess dosaCfmInfo = serviceFormBean.getDataBeanArray(DKW02101SFConst.DOSA_CFM_INFO).getDataBean(0);
		String cdDiv = getData(this, DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.DOSA_CFM_CD_05);
		if (!"".equals(cdDiv))
		{
			int cdDivIndex = getIndexFromCode(cdDiv, serviceFormBean, DKW02101SFConst.DOSA_CFM_INFO, DKW02101SFConst.CD_DIV_LIST_04);
			dosaCfmInfo.sendMessageString(DKW02101SFConst.CD_DIV_04, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(cdDivIndex));
		}

		// 修理完了情報.返品機器番号に値がある場合（交換）
		String hmpinKikiNo = getData(this, DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.HMPIN_KIKI_NO_05);
		if (!"".equals(hmpinKikiNo))
		{
			// 修理完了情報.宅内機器型式コードまたは修理完了情報.付属品型式コードのうち値が設定されているコード値を設定する。
			modelNo = getData(this, DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.TAKNKIKI_MODEL_CD_05);
			if ("".equals(modelNo))
			{
				modelNo = getData(this, DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.HUZOKUHIN_MODEL_CD_05);
			}
			shuriFinInfo.sendMessageString(DKW02101SFConst.MODEL_NO_05, X31CWebConst.DATABEAN_SET_VALUE, modelNo);
		}

		// 修理完了情報.物流保全対応コードに修理完了済みを設定
		shuriFinInfo.sendMessageString(DKW02101SFConst.BTRYHOZN_TAIO_CD_05, X31CWebConst.DATABEAN_SET_VALUE, JDKStrConst.BTRYHOZN_TAIO_CD_SHURI_FIN);

		// 修理完了情報.検証交換結果コードに正常を設定
		shuriFinInfo.sendMessageString(DKW02101SFConst.KNSHOKKAN_RSLT_CD_05, X31CWebConst.DATABEAN_SET_VALUE, "2");

		X31SDataBeanAccess shuriJokyoInfo = serviceFormBean.getDataBeanArray(DKW02101SFConst.SHURI_JOKYO_INFO).getDataBean(0);

		// 修理状況情報.契約者表示名
		String keishaDispNm = JDKWebCommon.substr(getData(this, DKW02101SFConst.SHURI_JOKYO_INFO, DKW02101SFConst.KEISHA_NM_01), 0, 33);
		shuriJokyoInfo.sendMessageString(DKW02101SFConst.KEISHA_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, keishaDispNm);

		// 修理状況情報.メーカー表示名
		String mekaDispNm = JDKWebCommon.substr(getData(this, DKW02101SFConst.SHURI_JOKYO_INFO, DKW02101SFConst.MEKA_NM_01), 0, 10);
		shuriJokyoInfo.sendMessageString(DKW02101SFConst.MEKA_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, mekaDispNm);

		// 修理状況情報.機器契約区分表示名称
		String kikiKeiDevDispNm = JDKWebCommon.substr(getData(this, DKW02101SFConst.SHURI_JOKYO_INFO, DKW02101SFConst.KIKI_KEI_DEV_NM_01), 0, 10);
		shuriJokyoInfo.sendMessageString(DKW02101SFConst.KIKI_KEI_DEV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, kikiKeiDevDispNm);

		// 修理状況情報.製造番号表示名
		String seizoNoDispNm = JDKWebCommon.substr(getData(this, DKW02101SFConst.SHURI_JOKYO_INFO, DKW02101SFConst.SEIZO_NO_01), 0, 20);
		shuriJokyoInfo.sendMessageString(DKW02101SFConst.SEIZO_NO_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, seizoNoDispNm);

		// 修理状況情報.保証区分表示名称
		String hoshoDivDispNm = JDKWebCommon.substr(getData(this, DKW02101SFConst.SHURI_JOKYO_INFO, DKW02101SFConst.HOSHO_DIV_NM_01), 0, 10);
		shuriJokyoInfo.sendMessageString(DKW02101SFConst.HOSHO_DIV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, hoshoDivDispNm);

		// 修理状況情報.処置区分表示名称
		String syotiDevDispNm = JDKWebCommon.substr(getData(this, DKW02101SFConst.SHURI_JOKYO_INFO, DKW02101SFConst.SYOTI_DEV_NM_01), 0, 10);
		shuriJokyoInfo.sendMessageString(DKW02101SFConst.SYOTI_DEV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, syotiDevDispNm);

		// 修理状況情報.受付者表示名
		String ukDispNm = JDKWebCommon.substr(getData(this, DKW02101SFConst.SHURI_JOKYO_INFO, DKW02101SFConst.UK_NM_01), 0, 17);
		shuriJokyoInfo.sendMessageString(DKW02101SFConst.UK_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, ukDispNm);

		// 修理状況情報.故障区分表示名称
		String troubleDivDispNm = JDKWebCommon.substr(getData(this, DKW02101SFConst.SHURI_JOKYO_INFO, DKW02101SFConst.TROUBLE_DIV_NM_01), 0, 17);
		shuriJokyoInfo.sendMessageString(DKW02101SFConst.TROUBLE_DIV_DISP_NM_01, X31CWebConst.DATABEAN_SET_VALUE, troubleDivDispNm);

		X31SDataBeanAccessArray shuriRirekiList = serviceFormBean.getDataBeanArray(DKW02101SFConst.SHURI_RIREKI_LIST);

		for (int i = 0; i < shuriRirekiList.getCount(); i++)
		{
			X31SDataBeanAccess shuriRireki = shuriRirekiList.getDataBean(i);

			// 修理対応履歴.対応区分表示名称
			String taioDivDispNm = JDKWebCommon.substr(shuriRireki.sendMessageString(DKW02101SFConst.TAIO_DIV_NM_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 11);
			shuriRireki.sendMessageString(DKW02101SFConst.TAIO_DIV_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, taioDivDispNm);

			// 修理対応履歴.社員表示名
			String syainDispNm = JDKWebCommon.substr(shuriRireki.sendMessageString(DKW02101SFConst.SYAIN_NM_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 14);
			shuriRireki.sendMessageString(DKW02101SFConst.SYAIN_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, syainDispNm);

			// 修理対応履歴.特記事項表示名
			String tkjkDispNm = JDKWebCommon.substr(shuriRireki.sendMessageString(DKW02101SFConst.TKJK_02, X31CWebConst.DATABEAN_GET_VALUE), 0, 20);
			shuriRireki.sendMessageString(DKW02101SFConst.TKJK_DISP_NM_02, X31CWebConst.DATABEAN_SET_VALUE, tkjkDispNm);

			// 修理対応履歴.背景色を設定
			if (i % 2 == 1)
			{
				shuriRireki.sendMessageString(DKW02101SFConst.COLOR_02, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}
			else
			{
				shuriRireki.sendMessageString(DKW02101SFConst.COLOR_02, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			}
		}

		// 建物情報.建物に修理完了情報.建物を設定
		X31SDataBeanAccess ttmInfo = serviceFormBean.getDataBeanArray(DKW02101SFConst.TTM_INFO).getDataBean(0);
		String ttm = getData(this, DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.TTM_05);
		if (!"".equals(ttm))
		{
			int ttmIndex = getIndexFromCode(ttm, serviceFormBean, DKW02101SFConst.TTM_INFO, DKW02101SFConst.TTM_CD_LIST_06);
			ttmInfo.sendMessageString(DKW02101SFConst.TTM_06, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(ttmIndex));
		}

		// 遷移先画面の設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW02101, JDKScreenConst.SCREEN_NAME_DKW02101);

		return true;
	}

	/**
	 * 登録確認ボタン押下処理
	 * <br>
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean confirmCreate() throws Exception
	{
		
		// （建物区分）
		storePullDown(this, TTM_INFO,
							TTM_06,
							TTM_DIV_06,
							TTM_DIV_LIST_06);
		
		// サービスフォーム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, "DKSV0031");

		// サービスフォームBean設定処理
		String cdDivIndex = getData(this, DKW02101SFConst.DOSA_CFM_INFO, DKW02101SFConst.CD_DIV_04);
		if (!"".equals(cdDivIndex))
		{
			// 修理完了情報.動作確認コードに動作確認情報.コード区分リストの値を設定
			String dosaCfmCd = getCodeFromIndex(Integer.parseInt(cdDivIndex), serviceFormBean,
					DKW02101SFConst.DOSA_CFM_INFO, DKW02101SFConst.CD_DIV_LIST_04);
			setData(this, dosaCfmCd, DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.DOSA_CFM_CD_05);

			// 修理完了情報.動作確認コード名称に動作確認情報.コード区分名リストの値を設定
			String dosaCfmCdNm = getNameFromIndex(Integer.parseInt(cdDivIndex), serviceFormBean,
					DKW02101SFConst.DOSA_CFM_INFO, DKW02101SFConst.CD_DIV_NM_LIST_04);
			setData(this, JDKWebCommon.getFollowOf(dosaCfmCdNm, "."), DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.DOSA_CFM_CD_NM_05);
		}

		// 修理完了情報.建物に建物情報.建物値リストの値を設定
		Long ttmIndex = getDataL(this, DKW02101SFConst.TTM_INFO, DKW02101SFConst.TTM_06);
		String ttm = getCodeFromIndex(ttmIndex.intValue(), serviceFormBean, DKW02101SFConst.TTM_INFO, DKW02101SFConst.TTM_CD_LIST_06);
		setData(this, ttm, DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.TTM_05);

		// 修理完了情報.建物名称に建物情報.建物名リストの値を設定
		String ttmNm = getNameFromIndex(ttmIndex.intValue(), serviceFormBean, DKW02101SFConst.TTM_INFO, DKW02101SFConst.TTM_NM_LIST_06);
		setData(this, JDKWebCommon.getFollowOf(ttmNm, "."), DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.TTM_NM_05);

		// 修理完了情報.物流保全了年月日に完了日を設定
		String btryhoznFinYmdYear = getData(this, DKW02101SFConst.FIN_YMD, DKW02101SFConst.YEAR_03);
		String btryhoznFinYmdMon = getData(this, DKW02101SFConst.FIN_YMD, DKW02101SFConst.MON_03);
		String btryhoznFinYmdDay = getData(this, DKW02101SFConst.FIN_YMD, DKW02101SFConst.DAY_03);
		setData(this, btryhoznFinYmdYear + btryhoznFinYmdMon + btryhoznFinYmdDay,
				DKW02101SFConst.SHURI_FIN_INFO, DKW02101SFConst.BTRYHOZN_FIN_YMD_05);

		// サービス呼出処理
		DKSV0031_DKSV0031OPDBMapper mapper = new DKSV0031_DKSV0031OPDBMapper();
		mapper.setDKSV003101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setDKSV003102SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setDKSV003103SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setDKSV003104SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setDKSV003105SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setDKSV003106CC(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_DKW02102, JDKScreenConst.SCREEN_NAME_DKW02102);

		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, "DKSV0031");

		// サービス呼出処理
		DKSV0031_DKSV0031OPDBMapper mapper = new DKSV0031_DKSV0031OPDBMapper();
		mapper.setDKSV003101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV003102SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV003103SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV003104SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV003105SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setDKSV003106CC(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_DKW02103, JDKScreenConst.SCREEN_NAME_DKW02103);

		return true;
	}

	/**
	 * 修正ボタン押下処理
	 * <br>
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean modify() throws Exception
	{
		// 遷移先画面の設定
		setNextScreen(JDKScreenConst.SCREEN_ID_DKW02101, JDKScreenConst.SCREEN_NAME_DKW02101);

		return true;
	}

	/**
	 * 完了ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean complete() throws Exception
	{
		// 遷移先画面の設定
		setNextScreen(JCCWebCommon.getScreenId(this, JDKScreenConst.SCREEN_ID_DKW02101), 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 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;
	}
	
}
