/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：KKW14001SFLogic
 *   ソースファイル名：KKW14001SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2012年7月12日
 *＜機能概要＞
 *   スマートバリュー情報更新画面 Viewロジックです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v4.00.00    2012/7/12   FJ）五十嵐    新規作成
 *
 **********************************************************************/

package eo.web.webview.KKW14001SF;


import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
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.JKKStrConst;
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.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.mapping.KKSV0601_KKSV0601OPDBMapper;
import eo.web.webview.mapping.KKSV0602_KKSV0602OPDBMapper;
import eo.web.webview.mapping.KKSV0603_KKSV0603OPDBMapper;

/**
 * スマートバリュー情報の登録・更新を行います。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW14001SFLogic extends JCCWebBusinessLogic
{
	/** 画面コード：登録 */
	private static final String ADD = "ADD";

	/** 画面コード：更新(開始前) */
	private static final String UPDATE_STA_BF = "UPDATE_STA_BF";

	/** 画面コード：更新(開始後) */
	private static final String UPDATE_STA_AF = "UPDATE_STA_AF";

	/** 画面コード：再申込 */
	private static final String RE_ADD = "RE_ADD";

	/** コードリストの定数 */
	private static final String CD_DIV_LIST = "コードリスト";

	/** コード名リストの定数 */
	private static final String CD_DIV_NM_LIST = "コード名リスト";

	/** 名称リストの定数 */
	private static final String NM_LIST = "名称リスト";

	/** 添え字 */
	private static final String INDEX = "添え字";

	/** 添え字とラベルの区切り文字 */
	public static final String IDX_SEP = ".";

	/** 共通メッセージ */
	private static final String CMN_MSG_SMART_VALUE = "スマートバリューの設定";

	/** エラーコード（バリューコード重複） */
	private static final String ERR_CD_EA = "EA";

	/**
	 * スマートバリュー更新画面 初期表示処理。
	 * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean init() throws Exception
	{

		// 引継情報MAPの取得
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean = { serviceBean };

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   "KKSV0601");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0601OP");

		// マッピングクラスを作成
		KKSV0601_KKSV0601OPDBMapper mapper = new KKSV0601_KKSV0601OPDBMapper();
		// 条件格納用のマップを作成
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 処理結果格納用のマップを作成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		// 引継情報の取得
		// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		X31SDataBeanAccessArray custKeiHktgiList = paramBean[0].getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);

		// 引継情報を第一階層に設定
		// サービス契約番号
		paramBean[0].sendMessageString(KKW14001SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// SYSID
		paramBean[0].sendMessageString(KKW14001SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SYSID, X31CWebConst.DATABEAN_GET_VALUE));

		// 上りマッピング
		mapper.setKKSV060101CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		invokeService(paramMap, inputMap, outputMap);

		// 下りマッピング
		mapper.getKKSV060101CC(paramBean, outputMap);
		// プルダウンの下りマッピング
		setPulldownList(paramBean[0], outputMap, KKW14001SFConst.TAJGS_TCH_YOKSI_UM_LIST, "KKSV060101CC", false);

		// 画面モード設定
		String gamenMode = "";

		// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		// モードの判定
		// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		String tajgsWribKeiNo = paramBean[0].sendMessageString(KKW14001SFConst.TAJGS_WRIB_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		// 他事業者割引契約が存在しない場合
		if (null == tajgsWribKeiNo || "".equals(tajgsWribKeiNo))
		{
			// 登録
			gamenMode = ADD;
		}
		// 他事業者割引契約が存在する場合
		else
		{
			// 他事業者割引契約解約年月日
			String tajgsWribKeiDslYmd = paramBean[0].sendMessageString(KKW14001SFConst.TAJGS_WRIB_KEI_DSL_YMD, X31CWebConst.DATABEAN_GET_VALUE);
			// 他事業者割引契約解約年月日が設定されていない、または初期値の場合
			if (null == tajgsWribKeiDslYmd || "".equals(tajgsWribKeiDslYmd) || JKKStrConst.END_YMD_DEFAULT.equals(tajgsWribKeiDslYmd))
			{
				// 他事業者割引契約締結年月日
				String tajgsWribKeiCncYmd = paramBean[0].sendMessageString(KKW14001SFConst.TAJGS_WRIB_KEI_CNC_YMD, X31CWebConst.DATABEAN_GET_VALUE);
				// 他事業者割引契約締結年月日が設定されていない、または初期値の場合
				if (null == tajgsWribKeiCncYmd || "".equals(tajgsWribKeiCncYmd) || JKKStrConst.END_YMD_DEFAULT.equals(tajgsWribKeiCncYmd))
				{
					// 更新(開始前)
					gamenMode = UPDATE_STA_BF;
				}
				else
				{
					// 更新(開始後)
					gamenMode = UPDATE_STA_AF;
				}
			}
			// 他事業者割引契約解約年月日が設定されている場合
			else
			{
				// 再申込
				gamenMode = RE_ADD;
			}
		}
		// 画面モードセット
		paramBean[0].sendMessageString(KKW14001SFConst.GAMEN_MODE, X31CWebConst.DATABEAN_SET_VALUE, gamenMode);

		if (ADD.equals(gamenMode) || RE_ADD.equals(gamenMode))
		{
			setPulldownIndex(paramBean, KKW14001SFConst.TAJGS_TCH_YOKSI_UM_LIST, "");
		}
		else
		{
			setPulldownIndex(paramBean, KKW14001SFConst.TAJGS_TCH_YOKSI_UM_LIST, paramBean[0].sendMessageString(KKW14001SFConst.TAJGS_TCH_YOKSI_UM, X31CWebConst.DATABEAN_GET_VALUE));
		}
		// 表示項目の編集
		editDispItem(paramBean[0]);

		if (UPDATE_STA_AF.equals(gamenMode))
		{
			// 対象のスマートバリューは既に開始されているため、バリューコードの変更不可の旨のメッセージを表示
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBB790__I);
		}
		else if(RE_ADD.equals(gamenMode))
		{
			// 対象のスマートバリューは再申込のため、バリューコードを再登録する旨のメッセージを表示
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBB800__I);
		}

		// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		// 表示用日付情報格納
		// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		// 他事業者割引契約締結年月日＿表示用
		paramBean[0].sendMessageString(KKW14001SFConst.TAJGS_WRIB_KEI_CNC_YMD_VIEW, X31CWebConst.DATABEAN_SET_VALUE,
				formatDate(paramBean[0].sendMessageString(KKW14001SFConst.TAJGS_WRIB_KEI_CNC_YMD, X31CWebConst.DATABEAN_GET_VALUE)));
		// 他事業者割引契約解約年月日＿表示用
		paramBean[0].sendMessageString(KKW14001SFConst.TAJGS_WRIB_KEI_DSL_YMD_VIEW, X31CWebConst.DATABEAN_SET_VALUE,
				formatDate(paramBean[0].sendMessageString(KKW14001SFConst.TAJGS_WRIB_KEI_DSL_YMD, X31CWebConst.DATABEAN_GET_VALUE)));
		// 解約他事業者通知年月日（ネット）＿表示用
		paramBean[0].sendMessageString(KKW14001SFConst.DSL_TAJGS_TCH_YMD_NET_VIEW, X31CWebConst.DATABEAN_SET_VALUE,
				formatDate(paramBean[0].sendMessageString(KKW14001SFConst.DSL_TAJGS_TCH_YMD_NET, X31CWebConst.DATABEAN_GET_VALUE)));
		// 解約他事業者通知年月日（電話）＿表示用
		paramBean[0].sendMessageString(KKW14001SFConst.DSL_TAJGS_TCH_YMD_TEL_VIEW, X31CWebConst.DATABEAN_SET_VALUE,
				formatDate(paramBean[0].sendMessageString(KKW14001SFConst.DSL_TAJGS_TCH_YMD_TEL, X31CWebConst.DATABEAN_GET_VALUE)));
		// 料料金プラン変更他事業者通知年月日＿表示用
		paramBean[0].sendMessageString(KKW14001SFConst.PPCHG_TAJGS_TCH_YMD_VIEW, X31CWebConst.DATABEAN_SET_VALUE,
				formatDate(paramBean[0].sendMessageString(KKW14001SFConst.PPCHG_TAJGS_TCH_YMD, X31CWebConst.DATABEAN_GET_VALUE)));

		// 次画面情報のセット
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14001);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14001);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 更新確認ボタン押下(更新モード時)
	 * @return
	 * @throws Exception
	 */
	public boolean updCheck() throws Exception
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean = { serviceBean };

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   "KKSV0602");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0602OP");

		// マッピングクラスを作成
		KKSV0602_KKSV0602OPDBMapper mapper = new KKSV0602_KKSV0602OPDBMapper();
		// 条件格納用のマップを作成
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 処理結果格納用のマップを作成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 表示項目の編集
		editDispItem(paramBean[0]);

		// 上りマッピング
		// 機能コードに「チェックのみ」を設定
		mapper.setKKSV060201CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		invokeService(paramMap, inputMap, outputMap);

		// 完了メッセージ設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[]{CMN_MSG_SMART_VALUE});

		// 次画面情報のセット
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14002);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14002);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 更新確認ボタン押下(新規登録・再申込モード時)
	 * @return
	 * @throws Exception
	 */
	public boolean addCheck() throws Exception
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean = { serviceBean };

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   "KKSV0603");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0603OP");

		// マッピングクラスを作成
		KKSV0603_KKSV0603OPDBMapper mapper = new KKSV0603_KKSV0603OPDBMapper();
		// 条件格納用のマップを作成
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 処理結果格納用のマップを作成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 表示項目の編集
		editDispItem(paramBean[0]);

		// 上りマッピング
		// 機能コードに「チェックのみ」を設定
		mapper.setKKSV060301CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		invokeService(paramMap, inputMap, outputMap);

		// バリューコード重複エラー確認
		HashMap<String, String> parentMap = null;
		if(outputMap.containsKey("KKSV060301CC")){
			parentMap = (HashMap<String, String>)outputMap.get("KKSV060301CC");
		}

		if (parentMap != null)
		{
			// エラーコード取得
			String chkErrCd = (String)parentMap.get("kddi_val_cd_err");
			if (ERR_CD_EA.equals(chkErrCd))
			{
				// 完了メッセージ設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB2230_KW, new String[]{"バリューコード"});
				return false;
			}
		}

		// 完了メッセージ設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[]{CMN_MSG_SMART_VALUE});

		// 次画面情報のセット
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14002);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14002);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 戻るボタン押下
	 * @return
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();

		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 確定ボタン押下(更新モード時)
	 * @return
	 * @throws Exception
	 */
	public boolean execUpd() throws Exception
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean = { serviceBean };

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   "KKSV0602");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0602OP");

		// マッピングクラスを作成
		KKSV0602_KKSV0602OPDBMapper mapper = new KKSV0602_KKSV0602OPDBMapper();
		// 条件格納用のマップを作成
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 処理結果格納用のマップを作成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 上りマッピング
		// 機能コードに「チェック＆登録」を設定
		mapper.setKKSV060201CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		invokeService(paramMap, inputMap, outputMap);

		// KDDIバリューコード
		String kddiValCd = paramBean[0].sendMessageString(KKW14001SFConst.KDDI_VAL_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// KDDI事業者契約管理番号
		String kddiJgsKeiKanriNo = paramBean[0].sendMessageString(KKW14001SFConst.KDDI_JGS_KEI_KANRI_NO, X31CWebConst.DATABEAN_GET_VALUE);

		// 完了メッセージ設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, new String[]{CMN_MSG_SMART_VALUE});
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBC190__I, new String[]{kddiValCd, kddiJgsKeiKanriNo});

		// 次画面情報のセット
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14003);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14003);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 確定ボタン押下(新規登録・再申込モード時)
	 * @return
	 * @throws Exception
	 */
	public boolean execAdd() throws Exception
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean = { serviceBean };

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();

		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   "KKSV0603");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0603OP");

		// マッピングクラスを作成
		KKSV0603_KKSV0603OPDBMapper mapper = new KKSV0603_KKSV0603OPDBMapper();
		// 条件格納用のマップを作成
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 処理結果格納用のマップを作成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 上りマッピング
		// 機能コードに「チェック＆登録」を設定
		mapper.setKKSV060301CC(new X31SDataBeanAccess[]{serviceBean}, inputMap, JPCModelConstant.FUNC_CD_1);

		invokeService(paramMap, inputMap, outputMap);

		// 下りマッピング
		mapper.getKKSV060301CC(paramBean, outputMap);

		// バリューコード重複エラー確認
		HashMap<String, String> parentMap = null;
		if(outputMap.containsKey("KKSV060301CC")){
			parentMap = (HashMap<String, String>)outputMap.get("KKSV060301CC");
		}

		if (parentMap != null)
		{
			// エラーコード取得
			String chkErrCd = (String)parentMap.get("kddi_val_cd_err");
			if (ERR_CD_EA.equals(chkErrCd))
			{
				// 完了メッセージ設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB2230_KW, new String[]{"バリューコード"});
				return false;
			}
		}

		// KDDIバリューコード
		String kddiValCd = paramBean[0].sendMessageString(KKW14001SFConst.KDDI_VAL_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// 登録後のKDDI事業者契約管理番号
		String kddiJgsKeiKanriNo = paramBean[0].sendMessageString(KKW14001SFConst.KDDI_JGS_KEI_KANRI_NO_ADD, X31CWebConst.DATABEAN_GET_VALUE);

		// 完了メッセージ設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, new String[]{CMN_MSG_SMART_VALUE});
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBC190__I, new String[]{kddiValCd, kddiJgsKeiKanriNo});

		// 次画面情報のセット
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14003);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14003);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 修正ボタン押下
	 * @return
	 * @throws Exception
	 */
	public boolean cancel() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();

		// 次画面情報のセット
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14001);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14001);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 完了ボタン押下
	 * @return
	 * @throws Exception
	 */
	public boolean complete() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();

		// 次画面情報のセット
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00145);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00145);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 表示項目を編集します。<br>
	 * 
	 * @param serviceBean サービスフォームBeanのアクセスクラス
	 */
	private void editDispItem(X31SDataBeanAccess serviceBean)
	{
		// 他事業者通知抑止有無プルダウンの選択値を取得
		String tajgsTchYoksiUm = JKKWebCommon.getPullDownCode(serviceBean, KKW14001SFConst.TAJGS_TCH_YOKSI_UM_LIST,
				KKW14001SFConst.INDEX_03, KKW14001SFConst.CD_DIV_LIST_03);

		// 他事業者通知抑止有無
		serviceBean.sendMessageString(KKW14001SFConst.TAJGS_TCH_YOKSI_UM, X31CWebConst.DATABEAN_SET_VALUE, tajgsTchYoksiUm);

		// 他事業者通知抑止有無プルダウンの選択名称を取得
		String tajgsTchYoksiUmView = JKKWebCommon.getPullDownName(serviceBean, KKW14001SFConst.TAJGS_TCH_YOKSI_UM_LIST,
				KKW14001SFConst.INDEX_03, KKW14001SFConst.CD_DIV_LIST_03, KKW14001SFConst.CD_DIV_NM_LIST_03);

		// 他事業者通知抑止有無＿表示用
		serviceBean.sendMessageString(KKW14001SFConst.TAJGS_TCH_YOKSI_UM_VIEW, X31CWebConst.DATABEAN_SET_VALUE, tajgsTchYoksiUmView);
	}

	/**
	 * <dd>メソッド名	：setPulldownList
	 * <dd>メソッド説明	：下り情報Mapから取得したコードリスト、コード名リストを
	 *                    プルダウン情報Beanに設定します。
	 * 
	 * @param bean データBeanアクセスクラス
	 * @param outputMap 下り情報Map
	 * @param pulldownKey プルダウン情報取得キー
	 * @param outMapKey 下り情報Map取得キー
	 * @param blankFlag 1行目ブランク付与フラグ  true:付与する,false:付与しない
	 * @throws Exception 例外が発生した場合
	 */
	private void setPulldownList(
			X31SDataBeanAccess bean,
			HashMap<String, Object> outputMap, 
			String pulldownKey,
			String outMapKey,
			boolean blankFlag
	) throws Exception
	{

		// データBeanアクセスクラスがNULLかどうか判定します
		if (bean == null)
		{
			// NULL、空の場合処理を終了します
			return ;
		}
		// 下り情報MapがNULLか判定する
		if(outputMap == null)
		{
			// NULLの場合処理を終了します
			return ;
		}
		// プルダウンキーがNULLか空文字かどうか判定します
		if (pulldownKey == null || "".equals(pulldownKey))
		{
			// NULL、空文字の場合処理を終了します
			return ;
		}

		// 下り情報Map取得キーがNULLか空文字かどうか判定します
		if (outMapKey == null || "".equals(outMapKey))
		{
			// NULL、空文字の場合処理を終了します
			return ;
		}
		// 下り情報マップから対象の情報を取得します
		HashMap<String, Object> parentMap = (HashMap<String, Object>)outputMap.get(outMapKey);

		if(parentMap == null) 
		{
			// NULLの場合処理を終了します
			return ;
		}
		// Mapにコード名称管理一覧照会明細が含まれているか判定します
		// コード明細情報リストにコード名称管理一意照会明細を設定します
		ArrayList<HashMap<String, String>> childList = (ArrayList<HashMap<String, String>>)parentMap.get("EZM0171B010CBSMsg1List");
		// コード明細情報リストがNULLか、空か判定します
		if (childList == null || 0 == childList.size())
		{
			// NULL、空の場合処理を終了します
			return ;
		}

		// 対象の発行ステータスDataBeanを取得し、データBeanアクセスクラスリストに設定します
		X31SDataBeanAccessArray pulldown_list = bean.getDataBeanArray(pulldownKey);

		// データBeanアクセスクラスに対象のプルダウン情報Beanを設定します
		X31SDataBeanAccess pulldown_subbean = pulldown_list.getDataBean(0);


		// プルダウン情報Beanのコードリスト領域のクリアを行います
		pulldown_subbean.sendMessage(CD_DIV_LIST,    X31CWebConst.DATABEAN_CLEAR);
		// プルダウン情報Beanのコードリスト名領域のクリアを行います
		pulldown_subbean.sendMessage(CD_DIV_NM_LIST, X31CWebConst.DATABEAN_CLEAR);

		// 先頭に空文字を設定するか判定します
		if(blankFlag)
		{
			// 先頭に空文字を設定
			pulldown_subbean.sendMessageString(CD_DIV_LIST,    X31CWebConst.DATABEAN_ADD_VALUE, "");
			pulldown_subbean.sendMessageString(CD_DIV_NM_LIST, X31CWebConst.DATABEAN_ADD_VALUE, "");

		}

		// コード明細情報リスト分コードリスト、コード名リストを取得します
		for (int i = 0; i < childList.size(); i++)
		{
			// コード明細情報リストをコード明細情報Mapに設定します
			HashMap<String, String> childMap = (HashMap<String, String>)childList.get(i);
			// プルダウン情報Beanにコード区分を設定する
			pulldown_subbean.sendMessageString(CD_DIV_LIST, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("cd_div"));
			// 対象のBeanにコード区分名を設定する
			String cd_div = (String)childMap.get("cd_div");
			String cd_div_nm = (String)childMap.get("cd_div_nm");
			// 添え字、"."、コードリスト名の順にプルダウン情報Beanに設定する
			pulldown_subbean.sendMessageString(CD_DIV_NM_LIST, X31CWebConst.DATABEAN_ADD_VALUE, cd_div + IDX_SEP + cd_div_nm);
			pulldown_subbean.sendMessageString(NM_LIST, X31CWebConst.DATABEAN_ADD_VALUE, cd_div_nm);
		}
	}

	/**
	 * 年月日書式(yyyy/MM/dd)の編集を行います。
	 * ただし、年月日が初期値(20991231)の場合は、空文字を返します。
	 * 
	 * @param date 年月日書式に編集する文字列(yyyyMMdd)
	 * @return 年月日書式に編集された文字列(yyyy/MM/dd)
	 */
	private String formatDate(String date)
	{
		if (JKKStrConst.END_YMD_DEFAULT.equals(date))
		{
			return "";
		}

		return JPCUtilCommon.formatDate(date);
	}

	/**
	 * コード値を元にプルダウンの添え字を設定します。 <br>
	 * 
	 * @param		paramBean			DataBean項目の配列
	 * @param		pullDownName		プルダウン項目名
	 * @param		selectCd			選択中のコード値
	 * @return		なし
	 */
	private void setPulldownIndex(X31SDataBeanAccess[] paramBean, String pullDownName, String selectCd)
	{
		// プルダウンリストの取得
		X31SDataBeanAccessArray pulldownInfoList = paramBean[0].getDataBeanArray(pullDownName);
		X31SDataBeanAccess pulldownInfoBean = pulldownInfoList.getDataBean(0);

		// コードリストの要素数の取得
		int maxCnt = (Integer)pulldownInfoBean.sendMessage(CD_DIV_LIST, X31CWebConst.DATABEAN_GET_COUNT);

		// 《繰返条件》
		// コードリストの要素数分繰り返す
		for (int cnt = 0; cnt < maxCnt; cnt++)
		{
			// コードリストの要素取得
			String pulldownCode = pulldownInfoBean.sendMessageString(CD_DIV_LIST, X31CWebConst.DATABEAN_GET_VALUE, cnt);
			// コードが一致した場合
			if (selectCd.equals(pulldownCode))
			{
				// コードの格納されている要素のindexを添え字に設定
				pulldownInfoBean.sendMessageString(INDEX, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(cnt));
				break;
			}
		}

		return;
	}

}
