/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム共通
*   モジュール名    ：ZMW04001SFLogic
*   ソースファイル名：ZMW04001SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月16日
*＜機能概要＞
*   住所更新画面の画面制御を行います。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00       2011/06/16   FJ）山本    新規作成
*   v3.00       2012/01/31   FJ) 日野    【UIZ-0004-00-00】視認性向上No.4(メッセージ領域背景黄色)対応
*
**********************************************************************/

package eo.web.webview.ZMW04001SF;

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.ZMSV0052_ZMSV0052OPDBMapper;
import eo.web.webview.mapping.ZMSV0053_ZMSV0053OPDBMapper;

/**
 * 住所更新画面の画面制御を行います。<br>
 * <br>
 * @author FJ
 *
 */
@SuppressWarnings("serial")
public class ZMW04001SFLogic 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 = "＜＜この情報を削除しました＞＞";
	
	/** 住所変更種別コード "01"(市町村合併) */
	private static final String AD_CHG_SBT_CD_01 = "01";
	
	/** 住所変更種別コード "11"(住変-呼称郵便番号両方) */
	private static final String AD_CHG_SBT_CD_11 = "11";
	
	/** 住所変更種別コード "12"(住変-呼称のみ) */
	private static final String AD_CHG_SBT_CD_12 = "12";
	
	/** 住所変更種別コード "13"(住変-郵便番号のみ) */
	private static final String AD_CHG_SBT_CD_13 = "13";
	
	/** メッセージ置き換え文字 */
	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.SV52);
		
		// マッピングクラス
		ZMSV0052_ZMSV0052OPDBMapper mapper = new ZMSV0052_ZMSV0052OPDBMapper();
		
		// マッピング処理（上り）
		String opeDate = JZMWebCommon.getOpeDate(this, null);
		mapper.setZMSV005201SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		((HashMap<String, Object>)dataMap.get(JZMWebConst.SC5201)).put(JZMWebConst.KEY_STDARDYMD, opeDate);
		mapper.setZMSV005202SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		((HashMap<String, Object>)dataMap.get(JZMWebConst.SC5202)).put(JZMWebConst.KEY_STDARDYMD, opeDate);
		mapper.setZMSV005203SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// 一覧クリア
		bean.getDataBeanArray(ZMW04001SFConst.EZM0081B013CBSMSG1LIST).clearArray();
		
		// マッピング処理（下り）
		mapper.getZMSV005201SC(paramBean, outputMap);
		mapper.getZMSV005202SC(paramBean, outputMap);
		mapper.getZMSV005203SC(paramBean, outputMap);
		
		// 検索エラーフラグの取得
		String searchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.SC5203, outputMap);
		
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			
			// 検索結果が0件の場合、エラーメッセージを表示
			JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, ERROR_MESSAGE);
			
			setTransferPageId(JZMWebCommon.getScreenId(this) + JZMWebConst.PJP);
			
			return true;
		}
		editDetail(bean);
		
		// 処理区分
		JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.SHORI_KBN, SHORI_KBN_UPD);
		
		// 情報表示
		JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.INFO_DSP, DEL_INFO);
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW04001);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW04001);
		
		return true;
	}
	
	/**
	 * 画面表示項目の編集を行います。
	 * @param bean サービスフォームBean
	 */
	private void editDetail(X31SDataBeanAccess bean)
	{
		X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW04001SFConst.EZM0081B013CBSMSG1LIST);
		X31SDataBeanAccess listBean = null;
		
		// 適用終了年月日
		JZMWebCommon.replaceTendymd(bean, ZMW04001SFConst.EZM0081B013CBSMSG1LIST, ZMW04001SFConst.AD_TENDYMD_03);
		
		for(int index = 0; index < dataList.getCount(); index++)
		{
			listBean = dataList.getDataBean(index);
			
			// 新住所コード
			String newAdCd = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.NEW_AD_CD_03);
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.DSP_NEW_AD_CD_03, JPCUtilCommon.hyhunAdCd(newAdCd));
			
			// 郵便番号のハイフン編集
			StringBuffer pcd = new StringBuffer(JZMWebConst.PCD_MARK);
			pcd = joinValue(pcd, JPCUtilCommon.hyhunPcd(JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.PCD_03)));
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.DSP_PCD_03, pcd.toString());
			
			// 情報表示
			listBean.sendMessageString(ZMW04001SFConst.DTL_NO_INFO_03, X31CWebConst.DATABEAN_SET_VALUE, INFO_WORD + String.valueOf(index + 1).toUpperCase());
			
			// 一件目の住所情報をヘッダーに設定
			if(index == 0)
			{
				
				// 住所コード
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.DSP_AD_CD,  
						JPCUtilCommon.hyhunAdCd(JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.AD_CD_03)));
				
				// 新住所コード
				if(newAdCd.length() == 11)
				{
					JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.NEW_AD_CD_1_03, newAdCd.substring(0, 2));
					JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.NEW_AD_CD_2_03, newAdCd.substring(2, 5));
					JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.NEW_AD_CD_3_03, newAdCd.substring(5, 8));
					JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.NEW_AD_CD_4_03, newAdCd.substring(8, 11));
				}
				
				// 	郵便番号
				String pcd_03 = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.PCD_03);
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.PCD_1_03, JPCUtilCommon.toTopThreeDigitFromPcd(pcd_03));
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.PCD_2_03, JPCUtilCommon.toUnderFourDigitFromPcd(pcd_03));
				
				// 都道府県名
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.STATE_NM, 
						JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.STATE_NM_03));
				
				// 都道府県名カナ
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.STATE_KANA,
						JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.STATE_KANA_03));
				
				// 適用開始年月日
				String ymd = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.AD_TSTAYMD_03);
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_TSTAYMD, ymd);
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_TSTAYMD_YEAR, JPCUtilCommon.toYearFromYmd(ymd));
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_TSTAYMD_MON, JPCUtilCommon.toMonthFromYmd(ymd));
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_TSTAYMD_DAY, JPCUtilCommon.toDayFromYmd(ymd));
				
				// 適用終了年月日
				ymd = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.AD_TENDYMD_03);
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_TENDYMD, ymd);
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_TENDYMD_YEAR, JPCUtilCommon.toYearFromYmd(ymd));
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_TENDYMD_MON, JPCUtilCommon.toMonthFromYmd(ymd));
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_TENDYMD_DAY, JPCUtilCommon.toDayFromYmd(ymd));
				
				// 施行年月
				String ym = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.EXEC_YM_03);
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.EXEC_YM, ym);
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.EXEC_YM_YEAR, JPCUtilCommon.toYearFromYm(ym));
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.EXEC_YM_MON, JPCUtilCommon.toMonthFromYm(ym));
				
				// 廃止年月
				ym = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.HAISHI_YM_03);
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.HAISHI_YM_YEAR_03, JPCUtilCommon.toYearFromYm(ym));
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.HAISHI_YM_MON_03, JPCUtilCommon.toMonthFromYm(ym));
				
				// 呼称変更年月
				ym = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.KOSHO_CHG_YM_03);
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.KOSHO_CHG_YM_YEAR_03, JPCUtilCommon.toYearFromYm(ym));
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.KOSHO_CHG_YM_MON_03, JPCUtilCommon.toMonthFromYm(ym));
				
				// 郵便番号変更年月
				ym = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.PCD_CHG_YM_03);
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.PCD_CHG_YM_YEAR_03, JPCUtilCommon.toYearFromYm(ym));
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.PCD_CHG_YM_MON_03, JPCUtilCommon.toMonthFromYm(ym));
				
				// 通称コード変更年月
				ym = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.TUSHO_CD_CHG_YM_03);
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.TUSHO_CD_CHG_YM_YEAR_03, JPCUtilCommon.toYearFromYm(ym));
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.TUSHO_CD_CHG_YM_MON_03, JPCUtilCommon.toMonthFromYm(ym));
				
				// 地番変更年月
				ym = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.CHIBAN_CHG_YM_03);
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.CHIBAN_CHG_YM_YEAR_03, JPCUtilCommon.toYearFromYm(ym));
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.CHIBAN_CHG_YM_MON_03, JPCUtilCommon.toMonthFromYm(ym));
				
				// 予約適用年月日
				ymd = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.RSV_APLY_YMD_03);
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.RSV_APLY_YMD_YEAR_03, JPCUtilCommon.toYearFromYmd(ymd));
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.RSV_APLY_YMD_MON_03, JPCUtilCommon.toMonthFromYmd(ymd));
				JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.RSV_APLY_YMD_DAY_03, JPCUtilCommon.toDayFromYmd(ymd));
				
				// 補正対象年月日
				ymd = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.HOSEI_TG_YMD_03);
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.HOSEI_TG_YMD, ymd);
				
				// 更新年月日時分秒
				ymd = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.UPD_DTM_03);
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.UPD_DTM, ymd);
				
				// 世代登録年月日時分秒
				ymd = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.GENE_ADD_DTM_03);
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.GENE_ADD_DTM, ymd);
				
				// 通り名識別フラグ
				String torinaSkibetuFlg = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.TORINA_SKBT_FLG_03);
				if(torinaSkibetuFlg == null || JZMWebConst.BLANK.equals(torinaSkibetuFlg))
				{
					JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.TORINA_SKBT_FLG_SEL_03, JZMWebConst.ZERO);
				}
				else
				{
					JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.TORINA_SKBT_FLG_SEL_03, torinaSkibetuFlg);
				}
				
				
				// 通称コード
				JZMWebCommon.setPullDownIndex(bean, ZMW04001SFConst.TUSHO_CD_INFO, ZMW04001SFConst.TUSHO_CD_IDX_02, 
						JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.TUSHO_CD_03));
			}
			if(index == 1)
			{
				
				// 更新前予約適用年月日
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.RSV_APLY_YMD_BF, 
						JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.RSV_APLY_YMD_03));
			}
		}
	}
	
	/**
	 * 入力された内容の更新確認処理を行います。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean updCfm() throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		boolean isInfoDel = JZMWebCommon.getSendMessageBoolean(bean, ZMW04001SFConst.INFO_DEL);
		
		if (!isInfoDel)
		{
			/** 画面情報の再設定 */
			String yearValue = null;
			String monthValue = null;
			String dayValue = null;
			String ymdValue = null;
			
			// 施行年月
			yearValue = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.EXEC_YM_YEAR);
			monthValue = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.EXEC_YM_MON);
			ymdValue = JPCUtilCommon.concatYm(yearValue, monthValue);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.EXEC_YM, ymdValue);
			
			// 適用開始年月日
			yearValue = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.AD_TSTAYMD_YEAR);
			monthValue = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.AD_TSTAYMD_MON);
			dayValue = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.AD_TSTAYMD_DAY);
			ymdValue = JPCUtilCommon.concatYmd(yearValue, monthValue, dayValue);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_TSTAYMD, ymdValue);
			
			// 適用終了年月日
			yearValue = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.AD_TENDYMD_YEAR);
			monthValue = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.AD_TENDYMD_MON);
			dayValue = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.AD_TENDYMD_DAY);
			ymdValue = JPCUtilCommon.concatYmd(yearValue, monthValue, dayValue);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_TENDYMD, ymdValue);
			
			/** 明細項目の編集処理 */
			X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW04001SFConst.EZM0081B013CBSMSG1LIST);
			X31SDataBeanAccess listBean = null;
			listBean = dataList.getDataBean(0);
			
			// 市区町村名
			String setValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.CITY_NM_03);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.CITY_NM, setValue);
			
			// 市区町村カナ名
			setValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.CITY_KANA_03);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.CITY_KANA, setValue);
			
			// 大字通称名
			setValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.OAZTSU_NM_03);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.OAZTSU_NM, setValue);
			
			// 大字通称カナ名
			setValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.OAZTSU_KANA_03);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.OAZTSU_KANA, setValue);
			
			// 字丁目名
			setValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.AZCHO_NM_03);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AZCHO_NM, setValue);
			
			// 字丁目カナ名
			setValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.AZCHO_KANA_03);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AZCHO_KANA, setValue);
			
			// 適用終了年月日変更判定
			boolean isTEndYmdChange = false;
			String   originalEndYmd = checkEndYmd(JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.AD_TENDYMD_TAIHI_03));
			String   newEndYmd = checkEndYmd(JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.AD_TENDYMD_03));
			if(!newEndYmd.equals(originalEndYmd))
			{
				isTEndYmdChange = true;
			}
			
			// 予約適用年月日
			yearValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.RSV_APLY_YMD_YEAR_03);
			monthValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.RSV_APLY_YMD_MON_03);
			dayValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.RSV_APLY_YMD_DAY_03);
			ymdValue = JPCUtilCommon.concatYmd(yearValue, monthValue, dayValue);
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.RSV_APLY_YMD_03, ymdValue);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.RSV_APLY_YMD, ymdValue);
			
			if(JZMWebConst.ONE.equals(JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.DATA_SIZE)))
			{
				
				// データ件数が一件の場合は適用開始年月日に予約適用年月日を設定する。
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_TSTAYMD, ymdValue);
			}
			
			// 郵便番号
			String pcd1 = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.PCD_1_03);
			String pcd2 = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.PCD_2_03);
			String pcd  = JPCUtilCommon.concatPcd(pcd1, pcd2);
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.PCD_03, pcd);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.PCD, pcd);
			StringBuffer dspPcd = new StringBuffer(JZMWebConst.PCD_MARK);
			if(pcd != null)
			{
				dspPcd.append(JPCUtilCommon.hyhunPcd(pcd));
			}
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.DSP_PCD_03, dspPcd.toString());
			
			// 通り名識別フラグ
			String torinaSkbtFlg = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.TORINA_SKBT_FLG_SEL_03);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.TORINA_SKBT_FLG, torinaSkbtFlg);
			String torinaSkbtFlgName = JZMWebCommon.getBeanArrayValue(bean, ZMW04001SFConst.TORINA_SKBT_FLG_INFO, 
												new Integer(torinaSkbtFlg).intValue(), ZMW04001SFConst.TORINA_SKBT_FLG_NM_LIST_01);
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.TORINA_SKBT_FLG_NM_03, torinaSkbtFlgName);
			
			// 通称コード
			String selectedValue = JZMWebCommon. getPullDownSelectedValue(bean
					, ZMW04001SFConst.TUSHO_CD_INFO, ZMW04001SFConst.TUSHO_CD_NM_LIST_02, ZMW04001SFConst.TUSHO_CD_IDX_02);
			bean.sendMessageString(ZMW04001SFConst.TUSHO_CD_NM_03, X31CWebConst.DATABEAN_SET_VALUE, selectedValue);
			selectedValue = JZMWebCommon. getPullDownSelectedValue(bean
					, ZMW04001SFConst.TUSHO_CD_INFO, ZMW04001SFConst.TUSHO_CD_VALUE_LIST_02, ZMW04001SFConst.TUSHO_CD_IDX_02);
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.TUSHO_CD_03, selectedValue);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.TUSHO_CD, selectedValue);
			
			// 呼称変更年月
			yearValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.KOSHO_CHG_YM_YEAR_03);
			monthValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.KOSHO_CHG_YM_MON_03);
			ymdValue = JPCUtilCommon.concatYm(yearValue, monthValue);
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.KOSHO_CHG_YM_03, ymdValue);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.KOSHO_CHG_YM, ymdValue);
			
			// 郵便番号変更年月
			yearValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.PCD_CHG_YM_YEAR_03);
			monthValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.PCD_CHG_YM_MON_03);
			ymdValue = JPCUtilCommon.concatYm(yearValue, monthValue);
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.PCD_CHG_YM_03, ymdValue);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.PCD_CHG_YM, ymdValue);
			
			// 通称コード変更年月
			yearValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.TUSHO_CD_CHG_YM_YEAR_03);
			monthValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.TUSHO_CD_CHG_YM_MON_03);
			ymdValue = JPCUtilCommon.concatYm(yearValue, monthValue);
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.TUSHO_CD_CHG_YM_03, ymdValue);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.TUSHO_CD_CHG_YM, ymdValue);
			
			// 地番変更年月
			yearValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.CHIBAN_CHG_YM_YEAR_03);
			monthValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.CHIBAN_CHG_YM_MON_03);
			ymdValue = JPCUtilCommon.concatYm(yearValue, monthValue);
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.CHIBAN_CHG_YM_03, ymdValue);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.CHIBAN_CHG_YM, ymdValue);
			
			// 新住所コード
			StringBuffer adCd = new StringBuffer();
			adCd.append(JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.NEW_AD_CD_1_03));
			adCd.append(JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.NEW_AD_CD_2_03));
			adCd.append(JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.NEW_AD_CD_3_03));
			adCd.append(JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.NEW_AD_CD_4_03));
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.NEW_AD_CD_03, adCd.toString());
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.NEW_AD_CD, adCd.toString());
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.DSP_NEW_AD_CD_03, JPCUtilCommon.hyhunAdCd(adCd.toString()));
			
			// 廃止年月
			yearValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.HAISHI_YM_YEAR_03);
			monthValue = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.HAISHI_YM_MON_03);
			ymdValue = JPCUtilCommon.concatYm(yearValue, monthValue);
			JZMWebCommon.setSendMessageString(listBean, ZMW04001SFConst.HAISHI_YM_03, ymdValue);
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.HAISHI_YM, ymdValue);
			
			String haishiYM = JPCUtilCommon.concatYm(yearValue, monthValue);
			String shoriKbn = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.SHORI_KBN);
			
			// 住所修正コード
			if(JZMWebConst.ONE.equals(shoriKbn))
			{
				
				// 処理区分が"1"(更新)の場合、1件目の住所修正コードを設定する。
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_SHUSEI_CD, 
						JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.AD_SHUSEI_CD_03));
			}
			else if(JZMWebConst.TWO.equals(shoriKbn) && (haishiYM == null || JZMWebConst.BLANK.equals(haishiYM)))
			{
				
				// 処理区分が"2"(予約)の場合で廃止年月が入力無しの場合、"3"(修正)を設定する。
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_SHUSEI_CD, JZMWebConst.THREE);
			}
			else if(JZMWebConst.TWO.equals(shoriKbn) && !(haishiYM == null || JZMWebConst.BLANK.equals(haishiYM)))
			{
				
				// 処理区分が"2"(予約)の場合で廃止年月が入力有りの場合、"5"(廃止)を設定する。
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_SHUSEI_CD, JZMWebConst.FIVE);
			}
			
			// 補正対象年月日
			if(JZMWebConst.TWO.equals(shoriKbn))
			{
				
				// 処理区分が"2"(予約)の場合、補正対象年月日に予約適用年月日を設定
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.HOSEI_TG_YMD, 
						JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.RSV_APLY_YMD));
			}
			else if(JZMWebConst.ONE.equals(shoriKbn))
			{
				
				// 処理区分が"1"(更新)の場合、補正年月日が設定済みの場合、予約適用年月日を設定
				String hoseiYmg = JZMWebCommon.getSendMessageString(listBean, ZMW04001SFConst.HOSEI_TG_YMD);
				if(hoseiYmg != null && !JZMWebConst.BLANK.equals(hoseiYmg))
				{
					JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.HOSEI_TG_YMD, JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.RSV_APLY_YMD));
				}
				
			}
			
			// 住所変更種別コード
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.AD_CHG_SBT_CD, getAdChgSbtCd(bean));
			
			if(JZMWebConst.ONE.equals(shoriKbn))
			{
				
				// 処理区分が"1"(更新)の場合、更新処理区分に"1"(更新)を設定
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.UPD_SHORI_KBN, JZMWebConst.ONE);
			}
			else if(JZMWebConst.TWO.equals(shoriKbn) && !isTEndYmdChange)
			{
				
				// 処理区分が"2"(予約)の場合で、適用終了年月日変更無しの場合、更新処理区分に"2"(予約)を設定
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.UPD_SHORI_KBN, JZMWebConst.TWO);
			}
			else if(JZMWebConst.TWO.equals(shoriKbn) && isTEndYmdChange)
			{
				
				// 処理区分が"2"(予約)の場合で、適用終了年月日変更無しの場合、更新処理区分に"3"(適用終了日更新)を設定
				JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.UPD_SHORI_KBN, JZMWebConst.THREE);
			}
		}
		else 
		{
			/** 明細項目の編集処理 */
			X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW04001SFConst.EZM0081B013CBSMSG1LIST);
			X31SDataBeanAccess listBean = null;
			listBean = dataList.getDataBean(0);
			
			// 郵便番号
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.PCD_03, ZMW04001SFConst.PCD_TAIHI_03);
			
			// 都道府県名
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.STATE_NM_03, ZMW04001SFConst.STATE_NM_TAIHI_03);
			
			// 都道府県カナ名
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.STATE_KANA_03, ZMW04001SFConst.STATE_KANA_TAIHI_03);
			
			// 市区町村名
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.CITY_NM_03, ZMW04001SFConst.CITY_NM_TAIHI_03);
			
			// 市区町村カナ名
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.CITY_KANA_03, ZMW04001SFConst.CITY_KANA_TAIHI_03);
			
			// 大字通称名
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.OAZTSU_NM_03, ZMW04001SFConst.OAZTSU_NM_TAIHI_03);
			
			// 大字通称カナ名
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.OAZTSU_KANA_03, ZMW04001SFConst.OAZTSU_KANA_TAIHI_03);
			
			// 字丁目名
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.AZCHO_NM_03, ZMW04001SFConst.AZCHO_NM_TAIHI_03);
			
			// 字丁目カナ名
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.AZCHO_KANA_03, ZMW04001SFConst.AZCHO_KANA_TAIHI_03);
			
			// 通り名識別フラグ
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.TORINA_SKBT_FLG_03, ZMW04001SFConst.TORINA_SKBT_FLG_TAIHI_03);
			
			// 通り名識別フラグ名
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.TORINA_SKBT_FLG_NM_03, ZMW04001SFConst.TORINA_SKBT_FLG_NM_TAIHI_03);
			
			// 通称コード
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.TUSHO_CD_03, ZMW04001SFConst.TUSHO_CD_TAIHI_03);
			
			// 通称コード名
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.TUSHO_CD_NM_03, ZMW04001SFConst.TUSHO_CD_NM_TAIHI_03);
			
			// 施工年月
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.EXEC_YM_03, ZMW04001SFConst.EXEC_YM_TAIHI_03);
			
			// 廃止年月
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.HAISHI_YM_03, ZMW04001SFConst.HAISHI_YM_TAIHI_03);
			
			// 呼称変更年月
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.KOSHO_CHG_YM_03, ZMW04001SFConst.KOSHO_CHG_YM_TAIHI_03);
			
			// 郵便番号変更年月
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.PCD_CHG_YM_03, ZMW04001SFConst.PCD_CHG_YM_TAIHI_03);
			
			// 通称コード変更年月
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.TUSHO_CD_CHG_YM_03, ZMW04001SFConst.TUSHO_CD_CHG_YM_TAIHI_03);
			
			// 地番変更年月
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.CHIBAN_CHG_YM_03, ZMW04001SFConst.CHIBAN_CHG_YM_TAIHI_03);
			
			// 適用開始年月日
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.AD_TSTAYMD_03, ZMW04001SFConst.AD_TSTAYMD_TAIHI_03);
			
			// 適用終了年月日
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.AD_TENDYMD_03, ZMW04001SFConst.AD_TENDYMD_TAIHI_03);
			
			// 新住所コード
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.NEW_AD_CD_03, ZMW04001SFConst.NEW_AD_CD_TAIHI_03);
			
			// 予約適用年月日
			JZMWebCommon.shiftBeanValue(listBean, ZMW04001SFConst.RSV_APLY_YMD_03, ZMW04001SFConst.RSV_APLY_YMD_TAIHI_03);

			// 情報削除フラグがtrueの場合、更新処理区分に"4"(削除)を設定
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.UPD_SHORI_KBN, JZMWebConst.FOUR);
			
			editDetail(bean);
		}

		String updShoriKbn = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.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.SV53);
		
		// マッピングクラス
		ZMSV0053_ZMSV0053OPDBMapper mapper = new ZMSV0053_ZMSV0053OPDBMapper();
		
		// マッピング処理（上り）
		if(JZMWebConst.ONE.equals(updShoriKbn))
		{
			mapper.setZMSV005301SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		}
		else if(JZMWebConst.TWO.equals(updShoriKbn))
		{
			mapper.setZMSV005302SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		}
		else if(JZMWebConst.THREE.equals(updShoriKbn))
		{
			mapper.setZMSV005303SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		}
		else if(JZMWebConst.FOUR.equals(updShoriKbn))
		{
			mapper.setZMSV005304SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		}
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// 情報表示
		if(JZMWebConst.TWO.equals(updShoriKbn) || JZMWebConst.THREE.equals(updShoriKbn))
		{
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.INFO_DSP, PRV_INFO_CFM);
		}
		else if(JZMWebConst.FOUR.equals(updShoriKbn))
		{
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.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_ZMW04002);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW04002);
		
		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.SV53);
		
		// マッピングクラス
		ZMSV0053_ZMSV0053OPDBMapper mapper = new ZMSV0053_ZMSV0053OPDBMapper();
		
		// マッピング処理（上り）
		String updShoriKbn = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.UPD_SHORI_KBN);
		if(JZMWebConst.ONE.equals(updShoriKbn))
		{
			mapper.setZMSV005301SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		else if(JZMWebConst.TWO.equals(updShoriKbn))
		{
			mapper.setZMSV005302SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		else if(JZMWebConst.THREE.equals(updShoriKbn))
		{
			mapper.setZMSV005303SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		else if(JZMWebConst.FOUR.equals(updShoriKbn))
		{
			mapper.setZMSV005304SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		
		// サービス実行
		invokeService(paramMap, dataMap, outputMap);
		
		// 情報表示
		if(JZMWebConst.TWO.equals(updShoriKbn) || JZMWebConst.THREE.equals(updShoriKbn))
		{
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.INFO_DSP, PRV_INFO_FIN);
		}
		else if(JZMWebConst.FOUR.equals(updShoriKbn))
		{
			JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.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_ZMW04003);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW04003);
		
		return true;
	}
	
	/**
	 * 予約追加処理を行います。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 予期せぬエラー
	 */
	public boolean rsvAdd() throws Exception
	{

		// 共有フォームBean
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 処理区分
		JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.SHORI_KBN, SHORI_KBN_PRV);
		
		// 情報削除
		JZMWebCommon.setSendMessageBoolean(bean, ZMW04001SFConst.INFO_DEL, false);
		
		// 情報表示
		JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.INFO_DSP, PRV_INFO_CFM);
		
		X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW04001SFConst.EZM0081B013CBSMSG1LIST);
		X31SDataBeanAccess listBean_01 = null;
		X31SDataBeanAccess listBean_02 = null;
		
		// データ件数
		String dataSize = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.DATA_SIZE);
		if(JZMWebConst.ONE.equals(dataSize))
		{
			dataList.addDataBean();
		}
		listBean_01 = dataList.getDataBean(0);
		listBean_02 = dataList.getDataBean(1);
		
		// 住所コード
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.AD_CD_03, ZMW04001SFConst.AD_CD_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.AD_CD_03, ZMW04001SFConst.AD_CD_TAIHI_03);
		
		// 世代登録年月日時分秒
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.GENE_ADD_DTM_03, ZMW04001SFConst.GENE_ADD_DTM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.GENE_ADD_DTM_03, ZMW04001SFConst.GENE_ADD_DTM_TAIHI_03);
		
		// 郵便番号
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.PCD_03, ZMW04001SFConst.PCD_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.PCD_03, ZMW04001SFConst.PCD_TAIHI_03);
		
		// 都道府県名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.STATE_NM_03, ZMW04001SFConst.STATE_NM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.STATE_NM_03, ZMW04001SFConst.STATE_NM_TAIHI_03);
		
		// 都道府県カナ名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.STATE_KANA_03, ZMW04001SFConst.STATE_KANA_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.STATE_KANA_03, ZMW04001SFConst.STATE_KANA_TAIHI_03);
		
		// 市区町村名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.CITY_NM_03, ZMW04001SFConst.CITY_NM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.CITY_NM_03, ZMW04001SFConst.CITY_NM_TAIHI_03);
		
		// 市区町村カナ名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.CITY_KANA_03, ZMW04001SFConst.CITY_KANA_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.CITY_KANA_03, ZMW04001SFConst.CITY_KANA_TAIHI_03);
		
		// 大字通称名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.OAZTSU_NM_03, ZMW04001SFConst.OAZTSU_NM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.OAZTSU_NM_03, ZMW04001SFConst.OAZTSU_NM_TAIHI_03);
		
		// 大字通称カナ名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.OAZTSU_KANA_03, ZMW04001SFConst.OAZTSU_KANA_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.OAZTSU_KANA_03, ZMW04001SFConst.OAZTSU_KANA_TAIHI_03);
		
		// 字丁目名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.AZCHO_NM_03, ZMW04001SFConst.AZCHO_NM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.AZCHO_NM_03, ZMW04001SFConst.AZCHO_NM_TAIHI_03);
		
		// 字丁目カナ名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.AZCHO_KANA_03, ZMW04001SFConst.AZCHO_KANA_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.AZCHO_KANA_03, ZMW04001SFConst.AZCHO_KANA_TAIHI_03);
		
		// 通り名識別フラグ
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.TORINA_SKBT_FLG_03, ZMW04001SFConst.TORINA_SKBT_FLG_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.TORINA_SKBT_FLG_03, ZMW04001SFConst.TORINA_SKBT_FLG_TAIHI_03);
		
		// 通り名識別フラグ名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.TORINA_SKBT_FLG_NM_03, ZMW04001SFConst.TORINA_SKBT_FLG_NM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.TORINA_SKBT_FLG_NM_03, ZMW04001SFConst.TORINA_SKBT_FLG_NM_TAIHI_03);
		
		// 通称コード
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.TUSHO_CD_03, ZMW04001SFConst.TUSHO_CD_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.TUSHO_CD_03, ZMW04001SFConst.TUSHO_CD_TAIHI_03);
		
		// 通称コード名
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.TUSHO_CD_NM_03, ZMW04001SFConst.TUSHO_CD_NM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.TUSHO_CD_NM_03, ZMW04001SFConst.TUSHO_CD_NM_TAIHI_03);
		
		// 施工年月
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.EXEC_YM_03, ZMW04001SFConst.EXEC_YM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.EXEC_YM_03, ZMW04001SFConst.EXEC_YM_TAIHI_03);
		
		// 廃止年月
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.HAISHI_YM_03, ZMW04001SFConst.HAISHI_YM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.HAISHI_YM_03, ZMW04001SFConst.HAISHI_YM_TAIHI_03);
		
		// 呼称変更年月
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.KOSHO_CHG_YM_03, ZMW04001SFConst.KOSHO_CHG_YM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.KOSHO_CHG_YM_03, ZMW04001SFConst.KOSHO_CHG_YM_TAIHI_03);
		
		// 郵便番号変更年月
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.PCD_CHG_YM_03, ZMW04001SFConst.PCD_CHG_YM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.PCD_CHG_YM_03, ZMW04001SFConst.PCD_CHG_YM_TAIHI_03);
		
		// 通称コード変更年月
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.TUSHO_CD_CHG_YM_03, ZMW04001SFConst.TUSHO_CD_CHG_YM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.TUSHO_CD_CHG_YM_03, ZMW04001SFConst.TUSHO_CD_CHG_YM_TAIHI_03);
		
		// 地番変更年月
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.CHIBAN_CHG_YM_03, ZMW04001SFConst.CHIBAN_CHG_YM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.CHIBAN_CHG_YM_03, ZMW04001SFConst.CHIBAN_CHG_YM_TAIHI_03);
		
		// 適用開始年月日
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.AD_TSTAYMD_03, ZMW04001SFConst.AD_TSTAYMD_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.AD_TSTAYMD_03, ZMW04001SFConst.AD_TSTAYMD_TAIHI_03);
		
		// 適用終了年月日
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.AD_TENDYMD_03, ZMW04001SFConst.AD_TENDYMD_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.AD_TENDYMD_03, ZMW04001SFConst.AD_TENDYMD_TAIHI_03);
		
		// 新住所コード
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.NEW_AD_CD_03, ZMW04001SFConst.NEW_AD_CD_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.NEW_AD_CD_03, ZMW04001SFConst.NEW_AD_CD_TAIHI_03);
		
		// 住所変更種別コード
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.AD_CHG_SBT_CD_03, ZMW04001SFConst.AD_CHG_SBT_CD_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.AD_CHG_SBT_CD_03, ZMW04001SFConst.AD_CHG_SBT_CD_TAIHI_03);
		
		// 補正対象年月日
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.HOSEI_TG_YMD_03, ZMW04001SFConst.HOSEI_TG_YMD_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.HOSEI_TG_YMD_03, ZMW04001SFConst.HOSEI_TG_YMD_TAIHI_03);
		
		// 住所修正コード
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.AD_SHUSEI_CD_03, ZMW04001SFConst.AD_SHUSEI_CD_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.AD_SHUSEI_CD_03, ZMW04001SFConst.AD_SHUSEI_CD_TAIHI_03);
		
		// 予約適用年月日
		JZMWebCommon.setSendMessageString(listBean_01, ZMW04001SFConst.RSV_APLY_YMD_03, JZMWebConst.BLANK);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.RSV_APLY_YMD_03, ZMW04001SFConst.RSV_APLY_YMD_TAIHI_03);
		
		// 更新年月日時分秒
		setPrvAddDataValue(listBean_01, listBean_01, ZMW04001SFConst.UPD_DTM_03, ZMW04001SFConst.UPD_DTM_TAIHI_03);
		setPrvAddDataValue(listBean_02, listBean_01, ZMW04001SFConst.UPD_DTM_03, ZMW04001SFConst.UPD_DTM_TAIHI_03);
		
		// データ件数
		JZMWebCommon.setSendMessageString(bean, ZMW04001SFConst.DATA_SIZE, JZMWebConst.TWO);

		editDetail(bean);
		
		// 画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW04001);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW04001);
		
		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_ZMW04001);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst. SCREEN_NAME_ZMW04001);
		
		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 value 結合元文字列
	 * @param joinValue 結合文字列
	 * @return 結合された文字列
	 */
	private StringBuffer joinValue(StringBuffer value, String joinValue)
	{
		
		// 結合文字列がnullで無い場合、結合を行う。
		if(joinValue != null)
		{
			value.append(joinValue);
		}
		return value;
	}
	
	/**
	 * 適用終了年月日のチェックを行い、判定結果の日付を返却します。<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 bean サービスフォームBean
	 * @return value 判定した住所変更種別コード
	 */
	private String getAdChgSbtCd(X31SDataBeanAccess bean)
	{
		// 廃止年月
		String haishiYmd = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.HAISHI_YM);
		
		// 住所コード
		String adCd = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.AD_CD);
		
		// 新住所コード
		String newAdCd = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.NEW_AD_CD);
		if(!JZMWebCommon.nullToBlank(haishiYmd).equals(JZMWebConst.BLANK) && !adCd.equals(newAdCd))
		{
			
			// 廃止年月が入力有りの場合で、住所コードと新住所コードの値が異なる場合、"01"(市町村合併)を返却する。
			return AD_CHG_SBT_CD_01;
		}
		
		// 明細リスト(1件目)
		X31SDataBeanAccessArray dataList = bean.getDataBeanArray(ZMW04001SFConst.EZM0081B013CBSMSG1LIST);
		X31SDataBeanAccess listBean_01 = null;
		listBean_01 = dataList.getDataBean(0);
		
		// データ件数
		String dataSize = JZMWebCommon.getSendMessageString(bean, ZMW04001SFConst.DATA_SIZE);
		if(JZMWebConst.ONE.equals(dataSize))
		{
			
			// データ件数が1件の場合、設定されている住所変更種別コードを返却
			return JZMWebCommon.getSendMessageString(listBean_01, ZMW04001SFConst.AD_CHG_SBT_CD_03);
		}
		
		// 明細リスト(2件目)
		X31SDataBeanAccess listBean_02 = null;
		listBean_02 = dataList.getDataBean(1);
		boolean isKoshoCht = isChangeYm(listBean_01, listBean_02, ZMW04001SFConst.KOSHO_CHG_YM_03);
		boolean isPcdChg = isChangeYm(listBean_01, listBean_02, ZMW04001SFConst.PCD_CHG_YM_03);
		
		if(isKoshoCht && isPcdChg)
		{
			
			// 呼称変更年月・郵便番号変更年月に変更がある場合、"11"(住変-呼称郵便番号両方)
			return AD_CHG_SBT_CD_11;
		}
		if(isKoshoCht)
		{
			
			// 呼称変更年月に変更がある場合、"12"(住変-呼称のみ)
			return AD_CHG_SBT_CD_12;
		}
		if(isPcdChg)
		{
			
			// 郵便番号変更年月に変更がある場合、"13"(住変-郵便番号のみ)
			return AD_CHG_SBT_CD_13;
		}
		
		// 上記以外の場合、設定されている住所変更種別コードを返却
		return JZMWebCommon.getSendMessageString(listBean_01, ZMW04001SFConst.AD_CHG_SBT_CD_03);
	}
	
	/**
	 * 年月の大小判定を行います。
	 * 
	 * @param listBean_01 サービスフォームBeanのリスト1件目
	 * @param listBean_02 サービスフォームBeanのリスト2件目
	 * @param clmName サービスフォームBeanの項目名
	 * @return boolean チェック判定結果
	 */
	private boolean isChangeYm(X31SDataBeanAccess listBean_01, X31SDataBeanAccess listBean_02, String clmName)
	{
		
		// チェック対象年月(1件目)
		String checkTargetYm_01 = JZMWebCommon.nullToBlank(JZMWebCommon.getSendMessageString(listBean_01, clmName));
		
		// チェック対象年月(2件目)
		String checkTargetYm_02 = JZMWebCommon.nullToBlank(JZMWebCommon.getSendMessageString(listBean_02, clmName));
		
		return checkTargetYm_01.compareTo(checkTargetYm_02) > 0;
	}
	
	/**
	 * 予約追加時の表示データの設定を行います。<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);
	}
}
