/*********************************************************************
* All Rights reserved.Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：KKW14902SFLogic
*   ソースファイル名：KKW14902SFLogic.java
*   作成者          ：FJ
*   日付            ：2012年09月21日
*＜機能概要＞
*   番ポなし番号事前通知詳細更新画面 Viewロジックです。
*＜修正履歴＞
*	バージョン	修正日			修正者		修正内容
*	v4.00.00	2011/09/21		FJ）中尾	新規作成
*
**********************************************************************/
package eo.web.webview.KKW14902SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.constant.JZMStrConst;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.mapping.KKSV0706_KKSV0706OPDBMapper;
import eo.web.webview.mapping.KKSV0707_KKSV0707OPDBMapper;

/**
 * <p>
 * 未送信の番ポなし番号事前通知書の更新、<br>
 * 送信済の番ポなし番号事前通知書の再発行を行います。<br>
 * <p>
 * <BR>
 * @author FJ
 */
@SuppressWarnings("serial")
public class KKW14902SFLogic extends JCCWebBusinessLogic
{
	/** 遷移モード（再発行） */
	public static final String SENI_MODE_REHAKKO = "1";
	/** 遷移モード（更新） */
	public static final String SENI_MODE_UPD = "2";
	/** 遷移モード（照会） */
	public static final String SENI_MODE_SHOKAI = "3";
	
	/** ディレイド処理依頼種別コード（ヤマト送信） */
	public static final String DLYD_TRN_REQ_SBT_YAMATO_SEND = "10301";
	
	/** 郵便記号 **/
	private static final String PCD_KIGO = "〒";
	
	/** 番地･号チェックの比較桁数-字丁目の設定がある場合 */
	private static final int BNCHIGO_CHK_AZCHO_LEN = 15;
	/** 番地･号チェックの比較桁数-大字通称名の設定がある場合 */
	private static final int BNCHIGO_CHK_OAZTSU_LEN = 27;
	/** 番地･号チェックの比較桁数-市区町村の設定がある場合 */
	private static final int BNCHIGO_CHK_CITY_LEN = 45;
	/** 番地･号チェックの番地号埋め込み文字１-契約者 */
	private static final String BNCHIGO_CHK_UMKM_MSG1_1 = "契約者_番地･号";
	/** 番地･号チェックの番地号埋め込み文字１-利用場所 */
	private static final String BNCHIGO_CHK_UMKM_MSG1_2 = "利用場所_番地･号";
	/** 番地･号チェックの属性埋め込み文字２ */
	private static final String BNCHIGO_CHK_UMKM_MSG2 = "全角";
	
	/** 送信データチェックの埋め込み文字１ */
	private static final String SEND_DATA_CHK_UMKM_MSG1 = "既に送信済の";
	/** 送信データチェックの埋め込み文字２ */
	private static final String SEND_DATA_CHK_UMKM_MSG2 = "更新";
	
	/** 送信バッチ実行有無チェックの埋め込み文字１ */
	private static final String SEND_BAT_RUN_UM_CHK_UMKM_MSG1 = "送信バッチが実行中の";
	/** 送信バッチ実行有無チェックの埋め込み文字２ */
	private static final String SEND_BAT_RUN_UM_CHK_UMKM_MSG2 = "実行";
	
	/** 更新確認／確定時の遷移先画面の表示メッセージ-再発行モード */
	private static final String SENISAKI_SCREEN_DSP_MSG1 = "番ポなし番号事前通知詳細の登録";
	/** 更新確認／確定時の遷移先画面の表示メッセージ-更新モード */
	private static final String SENISAKI_SCREEN_DSP_MSG2 = "番ポなし番号事前通知詳細の更新";
	
	
	/**
	 * 初期表示処理<br>
	 * <br>
	 * 画面表示、プルダウン表示のためのサービスの呼び出しを行います。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionInit() throws Exception
	{
		printStartLog("actionInit");
		
		// 画面情報を取得し、サービスフォームBeanに設定
		JCCWebCommon.getScreenInfo(this);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// サービスをコール
		callInitSvc(bean);
		
		// サービスフォームBeanの更新
		setInitDataBean(bean);
		
		// 遷移モード
		String seni_mode = bean.sendMessageString(KKW14902SFConst.SENI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 遷移モードが「再発行」の場合
		if (SENI_MODE_REHAKKO.equals(seni_mode))
		{
			// メッセージの設定
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBB440__I);
		}
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 画面名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14902);
		
		printEndLog("actionInit");
		return true;
	}
	
	/**
	 * 更新確認処理<br>
	 * <br>
	 * チェック処理の実施、更新確認のためのサービスの呼び出しを行い、<br>
	 * 番ポなし番号事前通知詳細更新確認画面へ遷移します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionUpd() throws Exception
	{
		printStartLog("actionUpd");
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 住所検索画面で閉じるボタンを押下された場合の対応
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14902);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14902);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 番地･号チェック
		if (!callBnchigoChk(bean))
		{
			printEndLog("actionUpd");
			return true;
		}
		
		// 送信データチェック
		if (!callSendDataChk(bean))
		{
			printEndLog("actionUpd");
			return true;
		}
		
		// サービスフォームBeanの更新
		setUpdDataBean(bean);
		
		// 遷移モード
		String seni_mode = bean.sendMessageString(KKW14902SFConst.SENI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 遷移モードが「再発行」の場合
		if (SENI_MODE_REHAKKO.equals(seni_mode))
		{
			// 再発行用ワークの更新
			setWorkInfo(bean);
		}
		
		// サービスをコール
		HashMap<String, Object> outputMap = callUpdSvc(bean, JPCModelConstant.FUNC_CD_2);
		
		// 送信バッチ実行有無チェック
		if (!callSendBatRunUmChk(bean, outputMap))
		{
			printEndLog("actionUpd");
			return true;
		}
		
		String[] umkmMsg = new String[1];
		
		// 遷移モードが「再発行」の場合
		if (SENI_MODE_REHAKKO.equals(seni_mode))
		{
			umkmMsg[0] = SENISAKI_SCREEN_DSP_MSG1;
		}
		// 遷移モードが「更新」の場合
		else if (SENI_MODE_UPD.equals(seni_mode))
		{
			umkmMsg[0] = SENISAKI_SCREEN_DSP_MSG2;
		}
		
		// メッセージ表示処理
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, umkmMsg);
		
		// 遷移先画面の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14903);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14903);
		
		printEndLog("actionUpd");
		return true;
	}
	
	/**
	 * 戻る処理<br>
	 * <br>
	 * 遷移元画面に遷移します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionBack() throws Exception
	{
		printStartLog("actionBack");
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		printEndLog("actionBack");
		return true;
	}
	
	/**
	 * 住所検索（契約者）処理<br>
	 * <br>
	 * 契約者情報の住所検索のため、住所検索画面を表示します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionKeishaAdSearch() throws Exception
	{
		printStartLog("actionKeishaAdSearch");
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 引継ぎ情報の作成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JZMStrConst.key_pcd_1,
				bean.sendMessageString(KKW14902SFConst.KEISHA_PCD1, X31CWebConst.DATABEAN_GET_VALUE));
		paramMap.put(JZMStrConst.key_pcd_2,
				bean.sendMessageString(KKW14902SFConst.KEISHA_PCD2, X31CWebConst.DATABEAN_GET_VALUE));
		paramMap.put(JZMStrConst.key_ad_cd_1, "");
		paramMap.put(JZMStrConst.key_ad_cd_2, "");
		paramMap.put(JZMStrConst.key_ad_cd_3, "");
		paramMap.put(JZMStrConst.key_ad_cd_4, "");
		paramMap.put(JZMStrConst.key_state_nm,
				bean.sendMessageString(KKW14902SFConst.KEISHA_STATE_NM,  X31CWebConst.DATABEAN_GET_VALUE));
		paramMap.put(JZMStrConst.key_city_nm,
				bean.sendMessageString(KKW14902SFConst.KEISHA_CITY_NM,  X31CWebConst.DATABEAN_GET_VALUE));
		paramMap.put(JZMStrConst.key_oaztsu_nm,
				bean.sendMessageString(KKW14902SFConst.KEISHA_OAZTSU_NM,  X31CWebConst.DATABEAN_GET_VALUE));
		paramMap.put(JZMStrConst.key_azcho_nm,
				bean.sendMessageString(KKW14902SFConst.KEISHA_AZCHO_NM,  X31CWebConst.DATABEAN_GET_VALUE));
		
		// 住所検索画面への引継ぎ情報の設定
		setAdSearchParam(paramMap);
		
		printLog(JSYwebLog.DEBUG, paramMap, "次画面への引継情報");
		printEndLog("actionKeishaAdSearch");
		return true;
	}
	
	/**
	 * 住所検索戻る（契約者）処理<br>
	 * <br>
	 * 住所検索画面での検索結果を契約者情報へ反映します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionKeishaAdSearchRtn() throws Exception
	{
		printStartLog("actionKeishaAdSearchRtn");
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 住所検索画面からの引継ぎ情報を取得
		HashMap<String, Object> paramMap = JCCWebCommon.getScreenInfo(this);
		
		// 引継ぎ情報を反映
		bean.sendMessageString(KKW14902SFConst.KEISHA_PCD1,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_pcd_1));
		bean.sendMessageString(KKW14902SFConst.KEISHA_PCD2,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_pcd_2));
		bean.sendMessageString(KKW14902SFConst.KEISHA_STATE_NM,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_state_nm));
		bean.sendMessageString(KKW14902SFConst.KEISHA_CITY_NM,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_city_nm));
		bean.sendMessageString(KKW14902SFConst.KEISHA_OAZTSU_NM,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_oaztsu_nm));
		bean.sendMessageString(KKW14902SFConst.KEISHA_AZCHO_NM,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_azcho_nm));
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14902);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14902);
		
		printEndLog("actionKeishaAdSearchRtn");
		return true;
	}
	
	/**
	 * 住所検索（利用場所）処理<br>
	 * <br>
	 * 利用場所情報の住所検索のため、住所検索画面を表示します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionKaisenAdSearch() throws Exception
	{
		printStartLog("actionKaisenAdSearch");
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 引継ぎ情報の作成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JZMStrConst.key_pcd_1,
				bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_PCD1, X31CWebConst.DATABEAN_GET_VALUE));
		paramMap.put(JZMStrConst.key_pcd_2,
				bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_PCD2, X31CWebConst.DATABEAN_GET_VALUE));
		paramMap.put(JZMStrConst.key_ad_cd_1, "");
		paramMap.put(JZMStrConst.key_ad_cd_2, "");
		paramMap.put(JZMStrConst.key_ad_cd_3, "");
		paramMap.put(JZMStrConst.key_ad_cd_4, "");
		paramMap.put(JZMStrConst.key_state_nm,
				bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_STATE_NM,  X31CWebConst.DATABEAN_GET_VALUE));
		paramMap.put(JZMStrConst.key_city_nm,
				bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_CITY_NM,  X31CWebConst.DATABEAN_GET_VALUE));
		paramMap.put(JZMStrConst.key_oaztsu_nm,
				bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_OAZTSU_NM,  X31CWebConst.DATABEAN_GET_VALUE));
		paramMap.put(JZMStrConst.key_azcho_nm,
				bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_AZCHO_NM,  X31CWebConst.DATABEAN_GET_VALUE));
		
		// 住所検索画面への引継ぎ情報の設定
		setAdSearchParam(paramMap);
		
		printLog(JSYwebLog.DEBUG, paramMap, "次画面への引継情報");
		printEndLog("actionKaisenAdSearch");
		return true;
	}
	
	/**
	 * 住所検索戻る（利用場所）処理<br>
	 * <br>
	 * 住所検索画面での検索結果を利用場所情報へ反映します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionKaisenAdSearchRtn() throws Exception
	{
		printStartLog("actionKaisenAdSearchRtn");
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 住所検索画面からの引継ぎ情報を取得
		HashMap<String, Object> paramMap = JCCWebCommon.getScreenInfo(this);
		
		// 引継ぎ情報を反映
		bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_PCD1,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_pcd_1));
		bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_PCD2,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_pcd_2));
		bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_STATE_NM,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_state_nm));
		bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_CITY_NM,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_city_nm));
		bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_OAZTSU_NM,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_oaztsu_nm));
		bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_AZCHO_NM,
				X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JZMStrConst.ret_azcho_nm));
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14902);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14902);
		
		printEndLog("actionKaisenAdSearchRtn");
		return true;
	}
	
	/**
	 * 確定処理<br>
	 * <br>
	 * チェック処理の実施、確定のためのサービスの呼び出しを行い、<br>
	 * 番ポなし番号事前通知書の再発行または更新を行います。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionFix() throws Exception
	{
		printStartLog("actionFix");
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 送信データチェック
		if (!callSendDataChk(bean))
		{
			printEndLog("actionFix");
			return true;
		}
		
		// サービスをコール
		HashMap<String, Object> outputMap = callUpdSvc(bean, JPCModelConstant.FUNC_CD_1);
		
		// 送信バッチ実行有無チェック
		if (!callSendBatRunUmChk(bean, outputMap))
		{
			printEndLog("actionFix");
			return true;
		}
		
		// 遷移モード
		String seni_mode = bean.sendMessageString(KKW14902SFConst.SENI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		String[] umkmMsg = new String[1];
		
		// 遷移モードが「再発行」の場合
		if (SENI_MODE_REHAKKO.equals(seni_mode))
		{
			umkmMsg[0] = SENISAKI_SCREEN_DSP_MSG1;
		}
		// 遷移モードが「更新」の場合
		else if (SENI_MODE_UPD.equals(seni_mode))
		{
			umkmMsg[0] = SENISAKI_SCREEN_DSP_MSG2;
		}
		
		// メッセージ表示処理
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, umkmMsg);
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14904);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14904);
		
		printEndLog("actionFix");
		return true;
	}
	
	/**
	 * 修正処理<br>
	 * <br>
	 * 番ポなし番号事前通知詳細更新に遷移します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionShusei() throws Exception
	{
		printStartLog("actionShusei");
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14902);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14902);
		
		printEndLog("actionShusei");
		return true;
	}
	
	/**
	 * 一覧照会へ処理<br>
	 * <br>
	 * 遷移元画面へ遷移します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionFin() throws Exception
	{
		printStartLog("actionFin");
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		printEndLog("actionFin");
		return true;
	}
	
	/**
	 * 番地･号チェック処理<br>
	 * <br>
	 * 契約者・利用場所に関する番地号の文字数をチェックします。<br>
	 * <br>
	 *
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @return true:チェックＯＫ false:チェックＮＧ
	 */
	private boolean callBnchigoChk(X31SDataBeanAccess bean)
	{
		// 契約者_市区町村
		String keisha_city = bean.sendMessageString(KKW14902SFConst.KEISHA_CITY_NM, X31CWebConst.DATABEAN_GET_VALUE);
		// 契約者_大字通称
		String keisha_oaztsu = bean.sendMessageString(KKW14902SFConst.KEISHA_OAZTSU_NM, X31CWebConst.DATABEAN_GET_VALUE);
		// 契約者_字丁目
		String keisha_azcho = bean.sendMessageString(KKW14902SFConst.KEISHA_AZCHO_NM, X31CWebConst.DATABEAN_GET_VALUE);
		// 契約者_番地号
		String keisha_bnchigo = bean.sendMessageString(KKW14902SFConst.KEISHA_BNCHIGO, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 利用場所_市区町村
		String kaisen_place_city = bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_CITY_NM, X31CWebConst.DATABEAN_GET_VALUE);
		// 利用場所_大字通称
		String kaisen_place_oaztsu = bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_OAZTSU_NM, X31CWebConst.DATABEAN_GET_VALUE);
		// 利用場所_字丁名
		String kaisen_place_azcho = bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_AZCHO_NM, X31CWebConst.DATABEAN_GET_VALUE);
		// 利用場所_番地号
		String kaisen_place_bnchigo = bean.sendMessageString(KKW14902SFConst.KAISEN_PLACE_BNCHIGO, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 契約者_番地･号チェック
		boolean chkKeishaResult = 
			isBnchigoChk(keisha_city, keisha_oaztsu, keisha_azcho, keisha_bnchigo, BNCHIGO_CHK_UMKM_MSG1_1);
		// 利用場所_番地･号チェック
		boolean chkKaisenPlaceResult =
			isBnchigoChk(kaisen_place_city, kaisen_place_oaztsu, kaisen_place_azcho, kaisen_place_bnchigo, BNCHIGO_CHK_UMKM_MSG1_2);
		
		if (!chkKeishaResult || !chkKaisenPlaceResult)
		{
			return false;
		}
		else
		{
			return true;
		}
		
	}
	
	/**
	 * 番地･号チェック<br>
	 * <br>
	 * 番地号の文字数チェックを行います。<br>
	 * <br>
	 *
	 * @param city 市区町村
	 * @param oaztsu 大字通称
	 * @param azcho 字丁名
	 * @param bnchigo 番地号
	 * @param errItem エラー項目名
	 * @return true:チェックＯＫ false:チェックＮＧ
	 */
	private boolean isBnchigoChk(String city, String oaztsu, String azcho, String bnchigo, String errItem)
	{
		// 字丁目名の設定がある場合
		if (!JKKStringUtil.isNullBlank(azcho))
		{
			// 番地･号に16文字以上の入力がある場合
			if (bnchigo.length() > BNCHIGO_CHK_AZCHO_LEN)
			{
				// 番地･号チェックエラー
				JCCWebCommon.setMessageInfo(this,
						JPCOnlineMessageConstant.EKB0030_TW, new String[] {
								errItem, BNCHIGO_CHK_UMKM_MSG2, Integer.toString(BNCHIGO_CHK_AZCHO_LEN)});
				return false;
			}
		}
		// 大字通称名の設定がある場合
		else if (!JKKStringUtil.isNullBlank(oaztsu))
		{
			// 番地･号に28文字以上の入力がある場合
			if (bnchigo.length() > BNCHIGO_CHK_OAZTSU_LEN)
			{
				// 番地･号チェックエラー
				JCCWebCommon.setMessageInfo(this,
						JPCOnlineMessageConstant.EKB0030_TW, new String[] {
								errItem, BNCHIGO_CHK_UMKM_MSG2, Integer.toString(BNCHIGO_CHK_OAZTSU_LEN)});
				return false;
			}
		}
		// 市区町村の設定がある場合
		else if (!JKKStringUtil.isNullBlank(city))
		{
			// 番地･号に46文字以上の入力がある場合
			if (bnchigo.length() > BNCHIGO_CHK_CITY_LEN)
			{
				// 番地･号チェックエラー
				JCCWebCommon.setMessageInfo(this,
						JPCOnlineMessageConstant.EKB0030_TW, new String[] {
								errItem, BNCHIGO_CHK_UMKM_MSG2, Integer.toString(BNCHIGO_CHK_CITY_LEN)});
				return false;
			}
		}
		
		return true;
	}
	
	/**
	 * 送信データチェック処理<br>
	 * <br>
	 * 対象の番ポなし番号事前通知書が送信済みでないかをチェックします。<br>
	 * <br>
	 *
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @return true:チェックＯＫ false:チェックＮＧ
	 */
	private boolean callSendDataChk(X31SDataBeanAccess bean)
	{
		// 遷移モード
		String seni_mode = bean.sendMessageString(KKW14902SFConst.SENI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		// 送信年月日時分秒
		String rslt_send_dtm = bean.sendMessageString(KKW14902SFConst.RSLT_SEND_DTM, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 遷移モードが「更新」、かつ 送信年月日時分秒が設定済みの場合
		if (SENI_MODE_UPD.equals(seni_mode)
				&& !JKKStringUtil.isNullBlank(rslt_send_dtm))
		{
			// 送信データチェックエラー
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW,
					new String[]{SEND_DATA_CHK_UMKM_MSG1, SEND_DATA_CHK_UMKM_MSG2});
			return false;
		}
		
		return true;
	}
	
	/**
	 * 送信バッチ実行有無チェック処理<br>
	 * <br>
	 * 依頼中の番ポなし番号事前通知書作成のデータ抽出ジョブが存在しないかをチェックします。<br>
	 * <br>
	 *
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @param outputMap APサーバの処理結果業務データ
	 * @return true:チェックＯＫ false:チェックＮＧ
	 */
	private boolean callSendBatRunUmChk(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{
		// 遷移モード
		String seni_mode = bean.sendMessageString(KKW14902SFConst.SENI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		// チェック結果
		boolean chkResult = true;
		
		// 遷移モードが「再発行」の場合
		if (SENI_MODE_REHAKKO.equals(seni_mode))
		{
			chkResult = isSendBatRunUmChkRehakko(outputMap);
		}
		// 遷移モードが「更新」の場合
		else if (SENI_MODE_UPD.equals(seni_mode))
		{
			chkResult = isSendBatRunUmChkUpd(outputMap);
		}
		
		if (!chkResult)
		{
			// 送信バッチ実行有無チェックエラー
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW,
					new String[]{SEND_BAT_RUN_UM_CHK_UMKM_MSG1, SEND_BAT_RUN_UM_CHK_UMKM_MSG2});
		}
		
		return chkResult;
	}
	
	/**
	 * 送信バッチ実行有無チェック（再発行）<br>
	 * <br>
	 * APサーバの処理結果業務データの内容を元に、<br>
	 * 依頼中の番ポなし番号事前通知書作成のデータ抽出ジョブが存在しないかをチェックします。<br>
	 * ※依頼中のデータが存在した場合は後続のサービスIF（加入御礼書発行登録）が実行されていないため、<br>
	 * 後続のサービスIFの出力結果が存在するかどうかでチェックします。<br>
	 * <br>
	 *
	 * @param outputMap APサーバの処理結果業務データ
	 * @return true:チェックＯＫ false:チェックＮＧ
	 */
	@SuppressWarnings("unchecked")
	private boolean isSendBatRunUmChkRehakko(HashMap<String, Object> outputMap)
	{
		HashMap dataMap = (HashMap)outputMap.get("KKSV070702SC");
		
		if (dataMap == null || !dataMap.containsKey("EKK1151D010CBSMsg1List"))
		{
			return false;
		}
		
		ArrayList dataList = (ArrayList)dataMap.get("EKK1151D010CBSMsg1List");
		
		if (dataList.size() != 1)
		{
			return false;
		}
		
		HashMap childMap = (HashMap)dataList.get(0);
		
		if (!childMap.containsKey("kanuoreso_hakko_no"))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 送信バッチ実行有無チェック（更新）<br>
	 * <br>
	 * APサーバの処理結果業務データの内容を元に、<br>
	 * 依頼中の番ポなし番号事前通知書作成のデータ抽出ジョブが存在しないかをチェックします。<br>
	 * ※依頼中のデータが存在した場合は後続のサービスIF（加入御礼書発行更新）が実行されていないため、<br>
	 * 後続のサービスIFの出力結果が存在するかどうかでチェックします。<br>
	 * <br>
	 *
	 * @param outputMap APサーバの処理結果業務データ
	 * @return true:チェックＯＫ false:チェックＮＧ
	 */
	@SuppressWarnings("unchecked")
	private boolean isSendBatRunUmChkUpd(HashMap<String, Object> outputMap)
	{
		HashMap dataMap = (HashMap)outputMap.get("KKSV070703SC");
		
		if (dataMap == null || !dataMap.containsKey("upd_dtm"))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 初期表示用サービス呼出処理<br>
	 * <br>
	 * 初期表示時のサービスの呼び出しを行います。<br>
	 * <br>
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @throws Exception 
	 */
	private void callInitSvc(X31SDataBeanAccess bean) throws Exception
	{
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 上りマッピング処理
		KKSV0706_KKSV0706OPDBMapper mapper = new KKSV0706_KKSV0706OPDBMapper();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		mapper.setKKSV070601SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV070602SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV070603SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV070604SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV070605SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV070606SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV070607SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス呼出（番ポなし番号事前通知詳細照会）
		HashMap<String, Object> outputMap = invokeService("KKSV0706", "KKSV0706OP", inputMap);
		
		// 下りマッピング処理
		mapper.getKKSV070601SC(paramBean, outputMap);
		JKKWebCommon.setPulldownList(paramBean[0], outputMap, KKW14902SFConst.SEND_JGI_FLG_INFO, "KKSV070602SC", true);
		JKKWebCommon.setPulldownList(paramBean[0], outputMap, KKW14902SFConst.KEISHA_TYPE_CD_INFO, "KKSV070603SC", true);
		JKKWebCommon.setPulldownList(paramBean[0], outputMap, KKW14902SFConst.KISN_PLC_AD_FIX_FLG_INFO, "KKSV070604SC", true);
		JKKWebCommon.setPulldownList(paramBean[0], outputMap, KKW14902SFConst.BMP_UM_1_INFO, "KKSV070605SC", true);
		JKKWebCommon.setPulldownList(paramBean[0], outputMap, KKW14902SFConst.SHOSA_ZM_FLG_1_INFO, "KKSV070606SC", true);
		JKKWebCommon.setPulldownList(paramBean[0], outputMap, KKW14902SFConst.BMP_UM_2_INFO, "KKSV070605SC", true);
		JKKWebCommon.setPulldownList(paramBean[0], outputMap, KKW14902SFConst.SHOSA_ZM_FLG_2_INFO, "KKSV070606SC", true);
		JKKWebCommon.setPulldownList(paramBean[0], outputMap, KKW14902SFConst.LETTER_SBT_CD_INFO, "KKSV070607SC", true);
	}
	
	/**
	 * 更新用サービス呼出処理<br>
	 * <br>
	 * 更新時のサービスの呼び出しを行います。<br>
	 * <br>
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @param func_code 機能コード
	 * @return APサーバの処理結果業務データ
	 * @throws Exception 
	 */
	private HashMap<String, Object> callUpdSvc(X31SDataBeanAccess bean, String func_code) throws Exception
	{
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 上りマッピング処理
		KKSV0707_KKSV0707OPDBMapper mapper = new KKSV0707_KKSV0707OPDBMapper();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		mapper.setKKSV070701SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV070702SC(paramBean, inputMap, func_code);
		mapper.setKKSV070703SC(paramBean, inputMap, func_code);
		
		// サービス呼出（番ポなし番号事前通知詳細更新）
		HashMap<String, Object> outputMap = invokeService("KKSV0707", "KKSV0707OP", inputMap);
		
		return outputMap;
	}
	
	/**
	 * サービス呼出処理<br>
	 * <br>
	 * サービスの呼び出しを行います。<br>
	 * <br>
	 * @param usecase_id ユースケースID
	 * @param operation_id オペレーションID
	 * @param inputMap APサーバに依頼する業務データ
	 * @return APサーバの処理結果業務データ
	 * @throws Exception 
	 */
	private HashMap<String, Object> invokeService(String usecase_id,
			String operation_id, HashMap<String, Object> inputMap)
			throws Exception
	{
		debugLog("-- invokeService[START] --");
		
		// パラメタ設定
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, usecase_id);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, operation_id);
		
		// メッセージリストの初期化
		clearMessageResultList();
		
		// DataBeanをログ出力
		debugLog("***** サービス呼出前 *****");
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		// サービスの呼び出し
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		invokeService(paramMap, inputMap, outputMap);
		
		debugLog("-- invokeService[END] --");
		return outputMap;
	}
	
	/**
	 * 初期表示用サービスフォームBeanの更新<br>
	 * <br>
	 * 初期表示時のサービスフォームBeanの更新を行います。<br>
	 * <br>
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 */
	private void setInitDataBean(X31SDataBeanAccess bean)
	{
		// 送信除外フラグ情報のインデックスの設定
		setPulldownIndex(bean, KKW14902SFConst.SEND_JGI_FLG_INFO, KKW14902SFConst.SEND_JGI_FLG_VALUE);
		// 契約者_契約者タイプコード情報のインデックスの設定
		setPulldownIndex(bean, KKW14902SFConst.KEISHA_TYPE_CD_INFO, KKW14902SFConst.KEISHA_TYPE_CD_VALUE);
		// 利用場所_住所未確定フラグ情報のインデックスの設定
		setPulldownIndex(bean, KKW14902SFConst.KISN_PLC_AD_FIX_FLG_INFO, KKW14902SFConst.KISN_PLC_AD_FIX_FLG_VALUE);
		// 電話_番号ポータビリティ有無#1情報のインデックスの設定
		setPulldownIndex(bean, KKW14902SFConst.BMP_UM_1_INFO, KKW14902SFConst.BMP_UM_1_VALUE);
		// 電話_照査済区分#1情報のインデックスの設定
		setPulldownIndex(bean, KKW14902SFConst.SHOSA_ZM_FLG_1_INFO, KKW14902SFConst.SHOSA_ZM_FLG_1_VALUE);
		// 電話_番号ポータビリティ有無#2情報のインデックスの設定
		setPulldownIndex(bean, KKW14902SFConst.BMP_UM_2_INFO, KKW14902SFConst.BMP_UM_2_VALUE);
		// 電話_照査済区分#2情報のインデックスの設定
		setPulldownIndex(bean, KKW14902SFConst.SHOSA_ZM_FLG_2_INFO, KKW14902SFConst.SHOSA_ZM_FLG_2_VALUE);
		// 申込区分情報のインデックスの設定
		setPulldownIndex(bean, KKW14902SFConst.LETTER_SBT_CD_INFO, KKW14902SFConst.LETTER_SBT_CD_VALUE);
		
		// 契約者_郵便番号の表示用項目設定
		setInitPcd(bean, KKW14902SFConst.KEISHA_PCD,
				KKW14902SFConst.KEISHA_PCD1, KKW14902SFConst.KEISHA_PCD2, KKW14902SFConst.KEISHA_PCD_HY);
		// 利用場所_郵便番号の表示用項目設定
		setInitPcd(bean, KKW14902SFConst.KAISEN_PLACE_PCD,
				KKW14902SFConst.KAISEN_PLACE_PCD1, KKW14902SFConst.KAISEN_PLACE_PCD2, KKW14902SFConst.KAISEN_PLACE_PCD_HY);
		
		// 遷移モード
		String seni_mode = bean.sendMessageString(KKW14902SFConst.SENI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 遷移モードが「再発行」の場合
		if (SENI_MODE_REHAKKO.equals(seni_mode))
		{
			// 送信年月日時分秒をクリア
			bean.sendMessageString(KKW14902SFConst.RSLT_SEND_DTM, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
	}
	
	/**
	 * 更新確認用サービスフォームBeanの更新<br>
	 * <br>
	 * 更新確認時のサービスフォームBeanの更新を行います。<br>
	 * <br>
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 */
	private void setUpdDataBean(X31SDataBeanAccess bean)
	{
		// 送信除外フラグの選択値・選択名の設定
		setPulldownItem(bean, KKW14902SFConst.SEND_JGI_FLG_INFO,
				KKW14902SFConst.SEND_JGI_FLG_VALUE, KKW14902SFConst.SEND_JGI_FLG_NM);
		
		// 契約者_契約者タイプコードの選択値・選択名の設定
		setPulldownItem(bean, KKW14902SFConst.KEISHA_TYPE_CD_INFO,
				KKW14902SFConst.KEISHA_TYPE_CD_VALUE, KKW14902SFConst.KEISHA_TYPE_CD_NM);
		// 利用場所_住所未確定フラグの選択値・選択名の設定
		setPulldownItem(bean, KKW14902SFConst.KISN_PLC_AD_FIX_FLG_INFO,
				KKW14902SFConst.KISN_PLC_AD_FIX_FLG_VALUE, KKW14902SFConst.KISN_PLC_AD_FIX_FLG_NM);
		// 電話_番号ポータビリティ有無#1の選択値・選択名の設定
		setPulldownItem(bean, KKW14902SFConst.BMP_UM_1_INFO,
				KKW14902SFConst.BMP_UM_1_VALUE, KKW14902SFConst.BMP_UM_1_NM);
		// 電話_照査済区分#1の選択値・選択名の設定
		setPulldownItem(bean, KKW14902SFConst.SHOSA_ZM_FLG_1_INFO,
				KKW14902SFConst.SHOSA_ZM_FLG_1_VALUE, KKW14902SFConst.SHOSA_ZM_FLG_1_NM);
		// 電話_番号ポータビリティ有無#2の選択値・選択名の設定
		setPulldownItem(bean, KKW14902SFConst.BMP_UM_2_INFO,
				KKW14902SFConst.BMP_UM_2_VALUE, KKW14902SFConst.BMP_UM_2_NM);
		// 電話_照査済区分#2の選択値・選択名の設定
		setPulldownItem(bean, KKW14902SFConst.SHOSA_ZM_FLG_2_INFO,
				KKW14902SFConst.SHOSA_ZM_FLG_2_VALUE, KKW14902SFConst.SHOSA_ZM_FLG_2_NM);
		// 申込区分の選択値・選択名の設定
		setPulldownItem(bean, KKW14902SFConst.LETTER_SBT_CD_INFO,
				KKW14902SFConst.LETTER_SBT_CD_VALUE, KKW14902SFConst.LETTER_SBT_CD_NM);

		// 契約者_郵便番号の表示用項目設定
		setUpdPcd(bean, KKW14902SFConst.KEISHA_PCD,
				KKW14902SFConst.KEISHA_PCD1, KKW14902SFConst.KEISHA_PCD2, KKW14902SFConst.KEISHA_PCD_HY);
		// 利用場所_郵便番号の表示用項目設定
		setUpdPcd(bean, KKW14902SFConst.KAISEN_PLACE_PCD,
				KKW14902SFConst.KAISEN_PLACE_PCD1, KKW14902SFConst.KAISEN_PLACE_PCD2, KKW14902SFConst.KAISEN_PLACE_PCD_HY);
	}
	
	/**
	 * プルダウンのインデックス設定<br>
	 * <br>
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @param key_info 対象のプルダウン情報のキー
	 * @param key_code 対象のプルダウン選択値のキー
	 */
	private void setPulldownIndex(X31SDataBeanAccess bean, String key_info, String key_code)
	{
		// コードを取得
		String code = bean.sendMessageString(key_code, X31CWebConst.DATABEAN_GET_VALUE);
		// コードに対するインデックスを取得
		String index = JKKWebCommon.getPullDownIndex(bean, code, key_info, KKW14902SFConst.CD_DIV_LIST_01);
		// 添え字を更新
		X31SDataBeanAccess pullBean = bean.getDataBeanArray(key_info).getDataBean(0);
		pullBean.sendMessageString(KKW14902SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, index);
	}
	
	/**
	 * プルダウンのインデックスに対応する選択値、選択名の設定<br>
	 * <br>
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @param key_info 対象のプルダウン情報のキー
	 * @param key_code 対象のプルダウン選択値のキー
	 * @param key_nm 対象のプルダウン選択名のキー
	 */
	private void setPulldownItem(X31SDataBeanAccess bean, String key_info, String key_code, String key_nm)
	{
		// 選択値の設定
		setPulldownItemCd(bean, key_info, key_code);
		// 選択名の設定
		setPulldownItemNm(bean, key_info, key_nm);
	}
	
	/**
	 * プルダウンのインデックスに対応する選択値の設定<br>
	 * <br>
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @param key_info 対象のプルダウン情報のキー
	 * @param key_code 対象のプルダウン選択値のキー
	 */
	private void setPulldownItemCd(X31SDataBeanAccess bean, String key_info, String key_code)
	{
		// 選択値
		String code = JKKWebCommon.getPullDownCode(bean, key_info, KKW14902SFConst.INDEX_01, KKW14902SFConst.CD_DIV_LIST_01);
		bean.sendMessageString(key_code, X31CWebConst.DATABEAN_SET_VALUE, code);
	}
	
	/**
	 * プルダウンのインデックスに対応する選択名の設定<br>
	 * <br>
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @param key_info 対象のプルダウン情報のキー
	 * @param key_nm 対象のプルダウン選択名のキー
	 */
	private void setPulldownItemNm(X31SDataBeanAccess bean, String key_info, String key_nm)
	{
		// 選択名
		String nm = JKKWebCommon.getPullDownCode(bean, key_info, KKW14902SFConst.INDEX_01, KKW14902SFConst.CD_DIV_NM_LIST_01);
		bean.sendMessageString(key_nm, X31CWebConst.DATABEAN_SET_VALUE, nm);
	}
	
	/**
	 * 初期表示時の郵便番号項目の設定<br>
	 * <br>
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @param key_pcd 対象の郵便番号のキー
	 * @param key_pcd1 対象の郵便番号1のキー
	 * @param key_pcd2 対象の郵便番号2のキー
	 * @param key_pcd_hy 対象の郵便番号編集のキー
	 */
	private void setInitPcd(X31SDataBeanAccess bean, String key_pcd, String key_pcd1, String key_pcd2, String key_pcd_hy)
	{
		// 郵便番号
		String pcd = bean.sendMessageString(key_pcd, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 郵便番号1
		bean.sendMessageString(key_pcd1, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toTopThreeDigitFromPcd(pcd));
		// 郵便番号2
		bean.sendMessageString(key_pcd2, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toUnderFourDigitFromPcd(pcd));
		// 郵便番号編集
		bean.sendMessageString(key_pcd_hy, X31CWebConst.DATABEAN_SET_VALUE, getPcdHy(pcd));
	}
	
	/**
	 * 更新確認時の郵便番号項目の設定<br>
	 * <br>
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @param key_pcd 対象の郵便番号のキー
	 * @param key_pcd1 対象の郵便番号1のキー
	 * @param key_pcd2 対象の郵便番号2のキー
	 * @param key_pcd_hy 対象の郵便番号編集のキー
	 */
	private void setUpdPcd(X31SDataBeanAccess bean, String key_pcd, String key_pcd1, String key_pcd2, String key_pcd_hy)
	{
		// 郵便番号1
		String pcd1 = bean.sendMessageString(key_pcd1, X31CWebConst.DATABEAN_GET_VALUE);
		// 郵便番号2
		String pcd2 = bean.sendMessageString(key_pcd2, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 郵便番号
		String pcd = JPCUtilCommon.concatPcd(pcd1, pcd2);
		bean.sendMessageString(key_pcd, X31CWebConst.DATABEAN_SET_VALUE, pcd);
		// 郵便番号編集
		bean.sendMessageString(key_pcd_hy, X31CWebConst.DATABEAN_SET_VALUE, getPcdHy(pcd));
	}
	
	/**
	 * ラベル表示用の郵便番号を取得<br>
	 * <br>
	 * @param pcd 郵便番号
	 * @return ラベル表示用の郵便番号
	 */
	private String getPcdHy(String pcd)
	{
		// 郵便番号(ハイフン付き)
		String pcd_hy = JPCUtilCommon.hyhunPcd(pcd);
		String pcd_label = "";
		
		if (!JKKStringUtil.isNullBlank(pcd_hy))
		{
			pcd_label = PCD_KIGO + pcd_hy;
		}
		
		return pcd_label;
	}
	
	/**
	 * 再発行用ワークの更新<br>
	 * <br>
	 * 番ポなし番号事前通知の再発行を行うためのサービスとのマッピング用のワーク情報を更新します。<br>
	 * <br>
	 *
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 */
	private void setWorkInfo(X31SDataBeanAccess bean)
	{
		// 加入御礼データ種別コード
		setDspItemToWork(bean, KKW14902SFConst.KANUORE_DATA_SBT_CD, KKW14902SFConst.KANUORE_DATA_SBT_CD_02);
		// データ抽出年月日時分秒
		setDspItemToWork(bean, KKW14902SFConst.DATA_CHSHT_DTM, KKW14902SFConst.DATA_CHSHT_DTM_02);
		// 送信除外フラグ
		setDspItemToWork(bean, KKW14902SFConst.SEND_JGI_FLG_VALUE, KKW14902SFConst.SEND_JGI_FLG_02);
		// 送信年月日時分秒
		setDspItemToWork(bean, KKW14902SFConst.RSLT_SEND_DTM, KKW14902SFConst.RSLT_SEND_DTM_02);
		// SYSID
		setDspItemToWork(bean, KKW14902SFConst.SYSID, KKW14902SFConst.SYSID_02);
		// お客さまID
		setDspItemToWork(bean, KKW14902SFConst.SVC_KEI_NO, KKW14902SFConst.SVC_KEI_NO_02);
		// 申込番号
		setDspItemToWork(bean, KKW14902SFConst.MSKMSHO_NO, KKW14902SFConst.MSKMSHO_NO_02);
		// 契約者_契約者タイプコード
		setDspItemToWork(bean, KKW14902SFConst.KEISHA_TYPE_CD_VALUE, KKW14902SFConst.KEISHA_TYPE_CD_02);
		// 契約者_郵便番号
		setDspItemToWork(bean, KKW14902SFConst.KEISHA_PCD, KKW14902SFConst.KEISHA_PCD_02);
		// 契約者_都道府県
		setDspItemToWork(bean, KKW14902SFConst.KEISHA_STATE_NM, KKW14902SFConst.KEISHA_STATE_NM_02);
		// 契約者_市区町村
		setDspItemToWork(bean, KKW14902SFConst.KEISHA_CITY_NM, KKW14902SFConst.KEISHA_CITY_NM_02);
		// 契約者_大字通称
		setDspItemToWork(bean, KKW14902SFConst.KEISHA_OAZTSU_NM, KKW14902SFConst.KEISHA_OAZTSU_NM_02);
		// 契約者_字丁目
		setDspItemToWork(bean, KKW14902SFConst.KEISHA_AZCHO_NM, KKW14902SFConst.KEISHA_AZCHO_NM_02);
		// 契約者_番地号
		setDspItemToWork(bean, KKW14902SFConst.KEISHA_BNCHIGO, KKW14902SFConst.KEISHA_BNCHIGO_02);
		// 契約者_住所補記・建物名
		setDspItemToWork(bean, KKW14902SFConst.KEISHA_ADRTTM, KKW14902SFConst.KEISHA_ADRTTM_02);
		// 契約者_住所補記・部屋番号
		setDspItemToWork(bean, KKW14902SFConst.KEISHA_ADRRM, KKW14902SFConst.KEISHA_ADRRM_02);
		// 契約者名
		setDspItemToWork(bean, KKW14902SFConst.CUST_NM, KKW14902SFConst.CUST_NM_02);
		// 契約者名（カナ）
		setDspItemToWork(bean, KKW14902SFConst.CUST_NM_KANA, KKW14902SFConst.CUST_NM_KANA_02);
		// 利用場所_郵便番号
		setDspItemToWork(bean, KKW14902SFConst.KAISEN_PLACE_PCD, KKW14902SFConst.KAISEN_PLACE_PCD_02);
		// 利用場所_都道府県
		setDspItemToWork(bean, KKW14902SFConst.KAISEN_PLACE_STATE_NM, KKW14902SFConst.KAISEN_PLACE_STATE_NM_02);
		// 利用場所_市区町村
		setDspItemToWork(bean, KKW14902SFConst.KAISEN_PLACE_CITY_NM, KKW14902SFConst.KAISEN_PLACE_CITY_NM_02);
		// 利用場所_大字通称
		setDspItemToWork(bean, KKW14902SFConst.KAISEN_PLACE_OAZTSU_NM, KKW14902SFConst.KAISEN_PLACE_OAZTSU_NM_02);
		// 利用場所_字丁目
		setDspItemToWork(bean, KKW14902SFConst.KAISEN_PLACE_AZCHO_NM, KKW14902SFConst.KAISEN_PLACE_AZCHO_NM_02);
		// 利用場所_番地号
		setDspItemToWork(bean, KKW14902SFConst.KAISEN_PLACE_BNCHIGO, KKW14902SFConst.KAISEN_PLACE_BNCHIGO_02);
		// 利用場所_住所補記・建物名
		setDspItemToWork(bean, KKW14902SFConst.KAISEN_PLACE_ADRTTM, KKW14902SFConst.KAISEN_PLACE_ADRTTM_02);
		// 利用場所_住所補記・部屋番号
		setDspItemToWork(bean, KKW14902SFConst.KAISEN_PLACE_ADRRM, KKW14902SFConst.KAISEN_PLACE_ADRRM_02);
		// 利用場所_住所未確定フラグ
		setDspItemToWork(bean, KKW14902SFConst.KISN_PLC_AD_FIX_FLG_VALUE, KKW14902SFConst.KISN_PLC_AD_FIX_FLG_02);
		// 電話_電話番号#1
		setDspItemToWork(bean, KKW14902SFConst.TELNO_1, KKW14902SFConst.TELNO_1_02);
		// 電話_番号ポータビリティ有無#1
		setDspItemToWork(bean, KKW14902SFConst.BMP_UM_1_VALUE, KKW14902SFConst.BMP_UM_1_02);
		// 電話_照査済区分#1
		setDspItemToWork(bean, KKW14902SFConst.SHOSA_ZM_FLG_1_VALUE, KKW14902SFConst.SHOSA_ZM_FLG_1_02);
		// 電話_電話番号#2
		setDspItemToWork(bean, KKW14902SFConst.TELNO_2, KKW14902SFConst.TELNO_2_02);
		// 電話_番号ポータビリティ有無#2
		setDspItemToWork(bean, KKW14902SFConst.BMP_UM_2_VALUE, KKW14902SFConst.BMP_UM_2_02);
		// 電話_照査済区分#2
		setDspItemToWork(bean, KKW14902SFConst.SHOSA_ZM_FLG_2_VALUE, KKW14902SFConst.SHOSA_ZM_FLG_2_02);
		// 申込区分
		setDspItemToWork(bean, KKW14902SFConst.LETTER_SBT_CD_VALUE, KKW14902SFConst.LETTER_SBT_CD_02);
		// サービスコード
		setDspItemToWork(bean, KKW14902SFConst.SVC_CD, KKW14902SFConst.SVC_CD_02);
		// 料金グループコード
		setDspItemToWork(bean, KKW14902SFConst.PRC_GRP_CD, KKW14902SFConst.PRC_GRP_CD_02);
		// 料金コースコード
		setDspItemToWork(bean, KKW14902SFConst.PCRS_CD, KKW14902SFConst.PCRS_CD_02);
		// 料金プランコード
		setDspItemToWork(bean, KKW14902SFConst.PPLAN_CD, KKW14902SFConst.PPLAN_CD_02);
		// 異動区分
		setDspItemToWork(bean, KKW14902SFConst.IDO_DIV, KKW14902SFConst.IDO_DIV_02);
	}
	
	/**
	 * 表示項目から再発行用ワークへのマッピング<br>
	 * <br>
	 * 表示項目の再発行ワークへマッピングします。<br>
	 * <br>
	 *
	 * @param bean サービスフォームBeanのデータBeanアクセスクラス
	 * @param key_dsp_item 対象の表示項目のキー
	 * @param key_work_item 対象のワーク項目のキー
	 */
	private void setDspItemToWork(X31SDataBeanAccess bean, String key_dsp_item, String key_work_item)
	{
		// 再発行用ワーク
		X31SDataBeanAccess workBean = bean.getDataBeanArray(KKW14902SFConst.WORK_INFO).getDataBean(0);
		
		// 表示用項目
		String dspValue = bean.sendMessageString(key_dsp_item, X31CWebConst.DATABEAN_GET_VALUE);
		
		// ワーク項目の更新
		workBean.sendMessageString(key_work_item, X31CWebConst.DATABEAN_SET_VALUE, dspValue);
	}
	
	/**
	 * 住所検索画面への引継ぎ情報設定<br>
	 * <br>
	 * 住所検索画面への引継ぎ情報を設定します。<br>
	 * <br>
	 *
	 * @param paramMap 引継ぎ情報
	 */
	private void setAdSearchParam(HashMap<String, Object> paramMap)
	{
		// 引継ぎ情報の設定
		JCCWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW10601, paramMap);
		// 戻り先画面ＩＤの設定
		JCCWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW10601, JKKScreenConst.SCREEN_ID_KKW14902);
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW10601);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW10601);
	}
	
	/**
	 * ログ出力
	 * <br>
	 * DEBUGレベルのログ出力を行います。
	 * <br>
	 * @param msg ログ出力する文字列
	 */
	private void debugLog(String msg)
	{
		JSYwebLog.println(JSYwebLog.DEBUG, getClass(), msg, null, null, null);
	}
	
	/**
	 * 開始ログ出力
	 * <br>
	 * DEBUGレベルのログ出力を行います。
	 * <br>
	 * @param msg ログ出力する文字列
	 */
	private void printStartLog(String msg)
	{
		StringBuffer sb = new StringBuffer();
		sb.append("-- ").append(msg).append("[START]").append(" --");
		debugLog(sb.toString());
	}
	
	/**
	 * 終了ログ出力
	 * <br>
	 * DEBUGレベルのログ出力を行います。
	 * <br>
	 * @param msg ログ出力する文字列
	 */
	private void printEndLog(String msg)
	{
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		StringBuffer sb = new StringBuffer();
		sb.append("-- ").append(msg).append("[END]").append(" --");
		debugLog(sb.toString());
	}
	
	/**
	 * ログ出力
	 * <br>
	 * HashMapの中身をすべてログ出力します。
	 * <br>
	 * @param type ログ種別
	 * @param target 出力対象
	 * @param msg ログ出力の前後に出力する文字
	 */
	@SuppressWarnings("unchecked")
	private void printLog(int type, HashMap target, String msg)
	{
		// 引継内容をログ出力
		JSYwebLog.println(type, getClass(), "********** " + msg + "（開始） **********", null, null, null);
		
		Iterator it = target.entrySet().iterator();
		
		while(it.hasNext())
		{
			Map.Entry<Object, Object> ent = (Entry<Object, Object>)it.next();
			JSYwebLog.println(type, getClass(), ent.getKey() + " = " + ent.getValue(), null, null, null);
		}
		
		JSYwebLog.println(type, getClass(), "********** " + msg + "（終了） **********", null, null, null);
	}
	
}
