/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム共通
*   モジュール名    ：ZMW06001SFLogic
*   ソースファイル名：ZMW06001SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月16日
*＜機能概要＞
*   住所対象番号区画更新画面の画面制御を行います。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v2.00       2011/06/16   FJ）山本    新規作成
*   v4.00       2013/04/12   FJ）伊藤    【OT-2013-0000596】通信事業者拠点コード追加
*
**********************************************************************/

package eo.web.webview.ZMW06001SF;

import java.util.HashMap;

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.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.common.JZMWebConst;
import eo.web.webview.mapping.ZMSV0078_ZMSV0078OPDBMapper;
import eo.web.webview.mapping.ZMSV0079_ZMSV0079OPDBMapper;

/**
 * 住所対象番号区画更新画面の画面制御を行います。<br>
 * <br>
 * @author FJ
 *
 */
@SuppressWarnings("serial")
public class ZMW06001SFLogic extends JCCWebBusinessLogic 
{
	
	/** メッセージ置き換え文字 */
	private static final String[] ERROR_MESSAGE = {"住所対象番号区画", "情報"};
	
	/** 情報表示文字列 */
	private static final String INFO_WORD = "■情報";
	
	/** 処理区分(更新) */
	private static final String SHORI_KBN_UPD = "1";
	
	/** 処理区分(予約) */
	private static final String SHORI_KBN_PRV = "2";
	
	/** 情報表示(削除) */
	private static final String DEL_INFO = "この情報を削除する";
	
	/** 情報表示 */
	private static final String PRV_INFO_CFM = "＜＜この情報が追加されます＞＞";
	
	/** 情報表示 */
	private static final String PRV_INFO_FIN = "＜＜この情報が追加されました＞＞";
	
	/** 情報表示(削除) */
	private static final String DEL_INFO_CFM = "＜＜この情報を削除します＞＞";
	
	/** 情報表示(削除) */
	private static final String DEL_INFO_FIN = "＜＜この情報を削除しました＞＞";
	
	/** メッセージ置き換え文字 */
	private static final String[] UPDATE_MESSAGE = {"住所対象番号区画情報更新"};

	/**
	 * 住所対象番号区画更新画面の初期表示処理を行います。<BR>
	 * <BR>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// 画面情報取得
		JZMWebCommon.getScreenInfo(this);
		
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV78);
		
		// マッピングクラス
		ZMSV0078_ZMSV0078OPDBMapper mapper = new ZMSV0078_ZMSV0078OPDBMapper();
		
		// マッピング処理（上り）
		String opeDate = JZMWebCommon.getOpeDate(this, null);
		mapper.setZMSV007801SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		((HashMap<String, Object>)dataMap.get(JZMWebConst.SC7801)).put(JZMWebConst.KEY_STDARDYMD, opeDate);
		mapper.setZMSV007802SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		((HashMap<String, Object>)dataMap.get(JZMWebConst.SC7802)).put(JZMWebConst.KEY_STDARDYMD, opeDate);
		mapper.setZMSV007803SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// 一覧クリア
		bean.getDataBeanArray(ZMW06001SFConst.EZM0091B011CBSMSG1LIST).clearArray();
		
		// マッピング処理（下り）
		mapper.getZMSV007801SC(paramBean, outputMap);
		mapper.getZMSV007802SC(paramBean, outputMap);
		mapper.getZMSV007803SC(paramBean, outputMap);
		
		// 検索エラーフラグの取得
		String searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.SC7803, outputMap);
		
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			
			// 検索結果が0件の場合、エラーメッセージを表示
			JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, ERROR_MESSAGE);
			
			// 画面遷移
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMWebCommon.getScreenId(this));
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE , JZMWebConst.BLANK);
			
			setTransferPageId(JZMWebCommon.getScreenId(this) + JZMWebConst.PJP);
			
			return true;
		}
		editDetail(bean);
		
		// 処理区分
		JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.SHORI_KBN, SHORI_KBN_UPD);
		
		// 予約フラグ
		JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.RSV_FLG, JZMWebConst.ZERO);
		
		// 情報表示
		JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.INFO_DSP, DEL_INFO);
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW06001);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW06001);
		
		return true;
	}
	
	/**
	 * 画面表示項目の編集を行います。
	 * @param bean サービスフォームBean
	 */
	private void editDetail(X31SDataBeanAccess bean)
	{
		X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW06001SFConst.EZM0091B011CBSMSG1LIST);
		X31SDataBeanAccess listBean = null;
		
		// 適用終了年月日
		JZMWebCommon.replaceTendymd(bean, ZMW06001SFConst.EZM0091B011CBSMSG1LIST, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_04);
		
		for(int index = 0; index < dataList.getCount(); index++)
		{
			listBean = dataList.getDataBean(index);
			
			// 情報表示
			listBean.sendMessageString(ZMW06001SFConst.DTL_NO_INFO_04, X31CWebConst.DATABEAN_SET_VALUE, INFO_WORD + String.valueOf(index + 1).toUpperCase());
			
			// 一件目の住所情報をヘッダーに設定
			if(index == 0)
			{
				
				// 住所コード
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.DSP_AD_CD,  
						JPCUtilCommon.hyhunAdCd(JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.AD_CD_04)));
				
				// 番号区画コード
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.NO_KUKAKU_CD,  
						JPCUtilCommon.hyhunAdCd(JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.NO_KUKAKU_CD_04)));
				
				// 適用開始年月日
				String ymd = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_04);
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD, ymd);
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_YEAR, JPCUtilCommon.toYearFromYmd(ymd));
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_MON, JPCUtilCommon.toMonthFromYmd(ymd));
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_DAY, JPCUtilCommon.toDayFromYmd(ymd));
				
				// 適用終了年月日
				ymd = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_04);
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD, ymd);
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_YEAR, JPCUtilCommon.toYearFromYmd(ymd));
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_MON, JPCUtilCommon.toMonthFromYmd(ymd));
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_DAY, JPCUtilCommon.toDayFromYmd(ymd));
				
				// 予約適用年月日
				ymd = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.RSV_APLY_YMD_04);
				JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.RSV_APLY_YMD_YEAR_04, JPCUtilCommon.toYearFromYmd(ymd));
				JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.RSV_APLY_YMD_MON_04, JPCUtilCommon.toMonthFromYmd(ymd));
				JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.RSV_APLY_YMD_DAY_04, JPCUtilCommon.toDayFromYmd(ymd));
				
				// 警察通報可否
				String kahi = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.POLI_TSUHO_KH_04);
				if(kahi == null || JZMWebConst.BLANK.equals(kahi))
				{
					JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.POLI_TSUHO_KH_SEL_04, JZMWebConst.ZERO);
				}
				else
				{
					String kahiValue = JZMWebCommon.getRadioValue(bean, ZMW06001SFConst.POLI_TSUHO_KH_INFO, ZMW06001SFConst.POLI_TSUHO_KH_VALUE_LIST_01, kahi);
					JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.POLI_TSUHO_KH_SEL_04, kahiValue);
				}
				
				// 消防通報可否
				kahi = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.SHOBO_TSUHO_KH_04);
				if(kahi == null || JZMWebConst.BLANK.equals(kahi))
				{
					JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.SHOBO_TSUHO_KH_SEL_04, JZMWebConst.ZERO);
				}
				else
				{
					String kahiValue = JZMWebCommon.getRadioValue(bean, ZMW06001SFConst.SHOBO_TSUHO_KH_INFO, ZMW06001SFConst.SHOBO_TSUHO_KH_VALUE_LIST_02, kahi);
					JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.SHOBO_TSUHO_KH_SEL_04, kahiValue);
				}
				
				// 更新年月日時分秒
				ymd = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.UPD_DTM_04);
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.UPD_DTM, ymd);
				
				// 世代登録年月日時分秒
				ymd = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.GENE_ADD_DTM_04);
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.GENE_ADD_DTM, ymd);
				
				// 申込事業所番号
				String selectIndex = JZMWebCommon.getPullDownIndex(bean, ZMW06001SFConst.MSKM_JIGSHO_NO_INFO, ZMW06001SFConst.MSKM_JIGSHO_NO_VALUE_LIST_03, 
						JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.MSKM_JIGSHO_NO_04));
				JZMWebCommon.setPullDownIndex(bean, ZMW06001SFConst.MSKM_JIGSHO_NO_INFO, ZMW06001SFConst.MSKM_JIGSHO_NO_IDX_03, selectIndex);
			}
			if(index == 1)
			{
				// 更新前予約適用年月日
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.RSV_APLY_YMD_BF, 
						JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.RSV_APLY_YMD_04));
			}
		}
	}
	
	
	/**
	 * 入力された内容の更新確認処理を行います。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean updCfm() throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		boolean isInfoDel = JZMWebCommon.getSendMessageBoolean(bean, ZMW06001SFConst.INFO_DEL);
		
		if (!isInfoDel)
		{
			// 画面情報の再設定
			String yearValue = null;
			String monthValue = null;
			String dayValue = null;
			String ymdValue = null;
			
			// 適用開始年月日
			yearValue = JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_YEAR);
			monthValue = JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_MON);
			dayValue = JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_DAY);
			ymdValue = JPCUtilCommon.concatYmd(yearValue, monthValue, dayValue);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD, ymdValue);
			
			// 適用終了年月日
			yearValue = JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_YEAR);
			monthValue = JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_MON);
			dayValue = JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_DAY);
			ymdValue = JPCUtilCommon.concatYmd(yearValue, monthValue, dayValue);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD, ymdValue);
			
			// 明細項目の編集処理
			X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW06001SFConst.EZM0091B011CBSMSG1LIST);
			X31SDataBeanAccess listBean = null;
			listBean = dataList.getDataBean(0);
			
			// 市外局番
			String setValue = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.AREACD_04);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AREACD, setValue);
			
			// 地域コード
			setValue = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.CKI_CD_04);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.CKI_CD, setValue);
			
			// 天気予報グループID
			setValue = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.TENKI_YOHO_GRP_ID_04);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.TENKI_YOHO_GRP_ID, setValue);
			
			// 発番順位
			setValue = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.HTB_JUN_04);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.HTB_JUN, setValue);
			
			// 通信事業者拠点コード
			setValue = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.TSJGS_KTN_CD_04);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.TSJGS_KTN_CD, setValue);
			
			// 通信事業者拠点コード
			setValue = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.BMP_KOJI_MSKM_JIGSHO_NO_04);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.BMP_KOJI_MSKM_JIGSHO_NO, setValue);
			
			// 適用終了年月日変更判定
			boolean isTEndYmdChange = false;
			String   originalEndYmd = checkEndYmd(JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_TAIHI_04));
			String   newEndYmd = checkEndYmd(JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD));
			if(!newEndYmd.equals(originalEndYmd))
			{
				isTEndYmdChange = true;
			}
			
			// 予約適用年月日
			yearValue = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.RSV_APLY_YMD_YEAR_04);
			monthValue = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.RSV_APLY_YMD_MON_04);
			dayValue = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.RSV_APLY_YMD_DAY_04);
			ymdValue = JPCUtilCommon.concatYmd(yearValue, monthValue, dayValue);
			JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.RSV_APLY_YMD_04, ymdValue);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.RSV_APLY_YMD, ymdValue);
			
			if(JZMWebConst.ONE.equals(JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.DATA_SIZE)))
			{
				
				// データ件数が一件の場合は適用開始年月日に予約適用年月日を設定する。
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD, ymdValue);
			}
			
			
			// 警察通報可否
			String poliTsuhoKahi = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.POLI_TSUHO_KH_SEL_04);
			String poliTsuhoKahiName = JZMWebCommon.getBeanArrayValue(bean, ZMW06001SFConst.POLI_TSUHO_KH_INFO, 
					new Integer(poliTsuhoKahi).intValue(), ZMW06001SFConst.POLI_TSUHO_KH_NM_LIST_01);
			JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.POLI_TSUHO_KH_NM_04, poliTsuhoKahiName);
			poliTsuhoKahi = JZMWebCommon.getBeanArrayValue(bean, ZMW06001SFConst.POLI_TSUHO_KH_INFO, 
					new Integer(poliTsuhoKahi).intValue(), ZMW06001SFConst.POLI_TSUHO_KH_VALUE_LIST_01);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.POLI_TSUHO_KH, poliTsuhoKahi);
			
			
			// 消防通報可否
			String shoboTsuhoKahi = JZMWebCommon.getSendMessageString(listBean, ZMW06001SFConst.SHOBO_TSUHO_KH_SEL_04);
			String shoboTsuhoKahiName = JZMWebCommon.getBeanArrayValue(bean, ZMW06001SFConst.SHOBO_TSUHO_KH_INFO, 
					new Integer(shoboTsuhoKahi).intValue(), ZMW06001SFConst.SHOBO_TSUHO_KH_NM_LIST_02);
			JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.SHOBO_TSUHO_KH_NM_04, shoboTsuhoKahiName);
			shoboTsuhoKahi = JZMWebCommon.getBeanArrayValue(bean, ZMW06001SFConst.SHOBO_TSUHO_KH_INFO, 
					new Integer(shoboTsuhoKahi).intValue(), ZMW06001SFConst.SHOBO_TSUHO_KH_VALUE_LIST_02);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.SHOBO_TSUHO_KH, shoboTsuhoKahi);
			
			
			// 申込事業所番号
			String selectedValue = JZMWebCommon. getPullDownSelectedValue(bean, 
					ZMW06001SFConst.MSKM_JIGSHO_NO_INFO, ZMW06001SFConst.MSKM_JIGSHONM_LIST_03, ZMW06001SFConst.MSKM_JIGSHO_NO_IDX_03);
			bean.sendMessageString(ZMW06001SFConst.MSKM_JIGSHONM_04, X31CWebConst.DATABEAN_SET_VALUE, selectedValue);
			JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.MSKM_JIGSHONM_04, selectedValue);
			selectedValue = JZMWebCommon. getPullDownSelectedValue(bean, 
					ZMW06001SFConst.MSKM_JIGSHO_NO_INFO, ZMW06001SFConst.MSKM_JIGSHO_NO_VALUE_LIST_03, ZMW06001SFConst.MSKM_JIGSHO_NO_IDX_03);
			JZMWebCommon.setSendMessageString(listBean, ZMW06001SFConst.MSKM_JIGSHO_NO_04, selectedValue);
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.MSKM_JIGSHO_NO, selectedValue);
			
			String shoriKbn = JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.SHORI_KBN);
			if(JZMWebConst.ONE.equals(shoriKbn) && !isTEndYmdChange)
			{
				
				// 処理区分が"1"(更新)の場合、更新処理区分に"1"(更新)を設定
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.UPD_SHORI_KBN, JZMWebConst.ONE);
			}
			else if(JZMWebConst.ONE.equals(shoriKbn) && isTEndYmdChange)
			{
				
				// 処理区分が"2"(予約)の場合で、適用終了年月日変更無しの場合、更新処理区分に"3"(適用終了日更新)を設定
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.UPD_SHORI_KBN, JZMWebConst.THREE);
			}
			else if(JZMWebConst.TWO.equals(shoriKbn) && !isTEndYmdChange)
			{
				
				// 処理区分が"2"(予約)の場合で、適用終了年月日変更無しの場合、更新処理区分に"2"(予約)を設定
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.UPD_SHORI_KBN, JZMWebConst.TWO);
			}
			else if(JZMWebConst.TWO.equals(shoriKbn) && isTEndYmdChange)
			{
				
				// 処理区分が"2"(予約)の場合で、適用終了年月日変更無しの場合、更新処理区分に"3"(適用終了日更新)を設定
				JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.UPD_SHORI_KBN, JZMWebConst.THREE);
			}
		}
		else 
		{
			
			// 明細項目の編集処理
			X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW06001SFConst.EZM0091B011CBSMSG1LIST);
			X31SDataBeanAccess listBean = null;
			listBean = dataList.getDataBean(0);
			
			// 市外局番
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.AREACD_04, ZMW06001SFConst.AREACD_TAIHI_04);
			
			// 地域コード
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.CKI_CD_04, ZMW06001SFConst.CKI_CD_TAIHI_04);
			
			// 天気予報グループID
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.TENKI_YOHO_GRP_ID_04, ZMW06001SFConst.TENKI_YOHO_GRP_ID_TAIHI_04);
			
			// 発番順位
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.HTB_JUN_04, ZMW06001SFConst.HTB_JUN_TAIHI_04);
			
			// 警察通報可否
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.POLI_TSUHO_KH_04, ZMW06001SFConst.POLI_TSUHO_KH_TAIHI_04);
			
			// 警察通報可否名
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.POLI_TSUHO_KH_NM_04, ZMW06001SFConst.POLI_TSUHO_KH_NM_TAIHI_04);
			
			// 消防通報可否
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.SHOBO_TSUHO_KH_04, ZMW06001SFConst.SHOBO_TSUHO_KH_TAIHI_04);
			
			// 消防通報可否名
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.SHOBO_TSUHO_KH_NM_04, ZMW06001SFConst.SHOBO_TSUHO_KH_NM_TAIHI_04);
			
			// 申込事業所番号
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.MSKM_JIGSHO_NO_04, ZMW06001SFConst.MSKM_JIGSHO_NO_TAIHI_04);
			
			// 申込事業所名
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.MSKM_JIGSHONM_04, ZMW06001SFConst.MSKM_JIGSHONM_TAIHI_04);
			
			// 適用開始年月日
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_04, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_TAIHI_04);
			
			// 適用終了年月日
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_04, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_TAIHI_04);
			
			// 予約適用年月日
			JZMWebCommon.shiftBeanValue(listBean, ZMW06001SFConst.RSV_APLY_YMD_04, ZMW06001SFConst.RSV_APLY_YMD_TAIHI_04);

			// 情報削除フラグがtrueの場合、更新処理区分に"4"(削除)を設定
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.UPD_SHORI_KBN, JZMWebConst.FOUR);
			
			editDetail(bean);
		}

		String updShoriKbn = JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.UPD_SHORI_KBN);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV79);
		
		// マッピングクラス
		ZMSV0079_ZMSV0079OPDBMapper mapper = new ZMSV0079_ZMSV0079OPDBMapper();
		
		// マッピング処理（上り）
		if(JZMWebConst.ONE.equals(updShoriKbn))
		{
			mapper.setZMSV007901SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		}
		else if(JZMWebConst.TWO.equals(updShoriKbn))
		{
			mapper.setZMSV007902SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		}
		else if(JZMWebConst.THREE.equals(updShoriKbn))
		{
			mapper.setZMSV007903SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		}
		else if(JZMWebConst.FOUR.equals(updShoriKbn))
		{
			mapper.setZMSV007904SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		}
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// 情報表示
		if(JZMWebConst.TWO.equals(updShoriKbn) || 
				(JZMWebConst.THREE.equals(updShoriKbn) && JZMWebConst.ONE.equals(JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.RSV_FLG))))
		{
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.INFO_DSP, PRV_INFO_CFM);
		}
		else if(JZMWebConst.FOUR.equals(updShoriKbn))
		{
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.INFO_DSP, DEL_INFO_CFM);
		}
			
		// 確認メッセージを表示
		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, UPDATE_MESSAGE);
		JZMWebCommon.setMessageAreaBackColor(this, JZMWebConst.ONE);
		
		// 遷移先画面ID、名称の設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW06002);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW06002);
		
		return true;
	}

	/**
	 * 呼び出し元画面に遷移します。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean back() throws Exception
	{
		
		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMWebCommon.getScreenId(this));
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);
		
		return true;
	}
	
	/**
	 * 入力された内容にて、更新処理を行います。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean fix() throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV79);
		
		// マッピングクラス
		ZMSV0079_ZMSV0079OPDBMapper mapper = new ZMSV0079_ZMSV0079OPDBMapper();
		
		// マッピング処理（上り）
		String updShoriKbn = JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.UPD_SHORI_KBN);
		if(JZMWebConst.ONE.equals(updShoriKbn))
		{
			mapper.setZMSV007901SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		else if(JZMWebConst.TWO.equals(updShoriKbn))
		{
			mapper.setZMSV007902SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		else if(JZMWebConst.THREE.equals(updShoriKbn))
		{
			mapper.setZMSV007903SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		else if(JZMWebConst.FOUR.equals(updShoriKbn))
		{
			mapper.setZMSV007904SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// 情報表示
		if(JZMWebConst.TWO.equals(updShoriKbn) || JZMWebConst.THREE.equals(updShoriKbn))
		{
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.INFO_DSP, PRV_INFO_FIN);
		}
		else if(JZMWebConst.FOUR.equals(updShoriKbn))
		{
			JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.INFO_DSP, DEL_INFO_FIN);
		}
		
		// 完了メッセージを表示
		JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, UPDATE_MESSAGE);

		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW06003);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW06003);
		
		return true;
	}
	
	/**
	 * 予約追加処理を行います。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean rsvAdd() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 処理区分
		JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.SHORI_KBN, SHORI_KBN_PRV);
		
		// 情報削除
		JZMWebCommon.setSendMessageBoolean(bean, ZMW06001SFConst.INFO_DEL, false);
		
		// 情報表示
		JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.INFO_DSP, PRV_INFO_CFM);
		
		X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW06001SFConst.EZM0091B011CBSMSG1LIST);
		X31SDataBeanAccess listBean_01 = null;
		X31SDataBeanAccess listBean_02 = null;
		
		// データ件数
		String dataSize = JZMWebCommon.getSendMessageString(bean, ZMW06001SFConst.DATA_SIZE);
		if(JZMWebConst.ONE.equals(dataSize))
		{
			dataList.addDataBean();
		}
		listBean_01 = dataList.getDataBean(0);
		listBean_02 = dataList.getDataBean(1);
		
		// 住所コード
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.AD_CD_04, ZMW06001SFConst.AD_CD_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.AD_CD_04, ZMW06001SFConst.AD_CD_TAIHI_04);
		
		// 番号区画コード
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.AD_CD_04, ZMW06001SFConst.AD_CD_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.AD_CD_04, ZMW06001SFConst.AD_CD_TAIHI_04);
		
		// 世代登録年月日時分秒
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.GENE_ADD_DTM_04, ZMW06001SFConst.GENE_ADD_DTM_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.GENE_ADD_DTM_04, ZMW06001SFConst.GENE_ADD_DTM_TAIHI_04);
		
		// 市外局番
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.AREACD_04, ZMW06001SFConst.AREACD_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.AREACD_04, ZMW06001SFConst.AREACD_TAIHI_04);
		
		// 地域コード
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.CKI_CD_04, ZMW06001SFConst.CKI_CD_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.CKI_CD_04, ZMW06001SFConst.CKI_CD_TAIHI_04);
		
		// 天気予報グループID
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.TENKI_YOHO_GRP_ID_04, ZMW06001SFConst.TENKI_YOHO_GRP_ID_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.TENKI_YOHO_GRP_ID_04, ZMW06001SFConst.TENKI_YOHO_GRP_ID_TAIHI_04);
		
		// 発番順位
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.HTB_JUN_04, ZMW06001SFConst.HTB_JUN_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.HTB_JUN_04, ZMW06001SFConst.HTB_JUN_TAIHI_04);
		
		// 警察通報可否
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.POLI_TSUHO_KH_04, ZMW06001SFConst.POLI_TSUHO_KH_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.POLI_TSUHO_KH_04, ZMW06001SFConst.POLI_TSUHO_KH_TAIHI_04);
		
		// 警察通報可否名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.POLI_TSUHO_KH_NM_04, ZMW06001SFConst.POLI_TSUHO_KH_NM_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.POLI_TSUHO_KH_NM_04, ZMW06001SFConst.POLI_TSUHO_KH_NM_TAIHI_04);
		
		// 消防通報可否
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.SHOBO_TSUHO_KH_04, ZMW06001SFConst.SHOBO_TSUHO_KH_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.SHOBO_TSUHO_KH_04, ZMW06001SFConst.SHOBO_TSUHO_KH_TAIHI_04);
		
		// 消防通報可否名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.SHOBO_TSUHO_KH_NM_04, ZMW06001SFConst.SHOBO_TSUHO_KH_NM_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.SHOBO_TSUHO_KH_NM_04, ZMW06001SFConst.SHOBO_TSUHO_KH_NM_TAIHI_04);
		
		// 通称コード
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.MSKM_JIGSHO_NO_04, ZMW06001SFConst.MSKM_JIGSHO_NO_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.MSKM_JIGSHO_NO_04, ZMW06001SFConst.MSKM_JIGSHO_NO_TAIHI_04);
		
		// 通称コード名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.MSKM_JIGSHONM_04, ZMW06001SFConst.MSKM_JIGSHONM_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.MSKM_JIGSHONM_04, ZMW06001SFConst.MSKM_JIGSHONM_TAIHI_04);
		
		// 適用開始年月日
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_04, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_04, ZMW06001SFConst.AD_TG_NO_KUKAKU_TSTAYMD_TAIHI_04);
		
		// 適用終了年月日
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_04, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_04, ZMW06001SFConst.AD_TG_NO_KUKAKU_TENDYMD_TAIHI_04);
		
		// 予約適用年月日
		JZMWebCommon.setSendMessageString(listBean_01, ZMW06001SFConst.RSV_APLY_YMD_04, JZMWebConst.BLANK);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.RSV_APLY_YMD_04, ZMW06001SFConst.RSV_APLY_YMD_TAIHI_04);
		
		// 更新年月日時分秒
		setPrvAddDataValue(listBean_01, listBean_01, ZMW06001SFConst.UPD_DTM_04, ZMW06001SFConst.UPD_DTM_TAIHI_04);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW06001SFConst.UPD_DTM_04, ZMW06001SFConst.UPD_DTM_TAIHI_04);
		
		// データ件数
		JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.DATA_SIZE, JZMWebConst.TWO);
		
		// 予約フラグ
		JZMWebCommon.setSendMessageString(bean, ZMW06001SFConst.RSV_FLG, JZMWebConst.ONE);

		editDetail(bean);
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW06001);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW06001);
		
		return true;
	}
	
	/**
	 * 更新画面に遷移します。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean shusei() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW06001);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst. SCREEN_NAME_ZMW06001);
		
		return true;
	}

	/**
	 * 更新処理を完了し、呼び出し元画面に遷移します。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean fin() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMWebCommon.getScreenId(this));
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE , JZMWebConst.BLANK);
				
		return true;
	}
	
	/**
	 * 適用終了年月日のチェックを行い、判定結果の日付を返却します。<br>
	 * <br>
	 * @param endYmd 適用終了年月日
	 * @return returnValue 適用終了年月日判定結果日付
	 */
	private String checkEndYmd(String endYmd)
	{
		if(endYmd == null || JZMWebConst.BLANK.equals(endYmd))
		{
			
			// 設定値がない場合はブランクを
			return JZMWebConst.BLANK;
		}
		
		if(JZMWebConst.ENDYMD.equals(endYmd))
		{
			
			// 2099/12/31の場合、ブランクを返却
			return JZMWebConst.BLANK;
		}
		
		// 上記以外の場合、入力値を返却
		return endYmd;
	}
	
	/**
	 * 予約追加時の表示データの設定を行います。<br>
	 * <br>
	 * @param listBean_01 設定先サービスフォームBean
	 * @param listBean_02 設定元サービスフォームBean
	 * @param clmName_01 設定先サービスフォームBeanの項目名
	 * @param clmName_02 設定元サービスフォームBeanの項目名
	 */
	private void setPrvAddDataValue(X31SDataBeanAccess listBean_01, X31SDataBeanAccess listBean_02, String clmName_01, String clmName_02)
	{
		
		// 設定値取得
		String setValue = JZMWebCommon.getSendMessageString(listBean_02, clmName_02);
		
		// 設定先に値を設定
		JZMWebCommon.setSendMessageString(listBean_01, clmName_01, setValue);
	}
}
