/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：顧客契約
 *	モジュール名	：KKW13802SFLogic
 *	ソースファイル名：KKW13802SFLogic.java
 *	作成者			：FJ
 *	日付			：2012年07月02日
 *＜機能概要＞
 *	メーリングリスト情報登録機能のビューロジッククラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2012/07/02	FJ		新規作成
 *
 **********************************************************************/
package eo.web.webview.KKW13802SF;

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.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.mapping.KKSV0597_KKSV0597OPDBMapper;
import eo.web.webview.mapping.KKSV0598_KKSV0598OPDBMapper;

/**
 * <dd>クラス名：同番移転情報更新ビューロジック <dd>クラス説明：画面上のボタン押下時の各処理を記述します。 <dd>備考：
 * 
 * @version 1.0 2012/02/16
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW13802SFLogic extends JCCWebBusinessLogic
{

	/** 同番移転ステータス 021:NTT送信待ち */
	private static final String DOBANITEN_STAT_021 = "NTT送信待ち";
	/** 同番移転ステータス 022:NTT送信済み */
	private static final String DOBANITEN_STAT_022 = "NTT送信済み";
	/** 同番移転ステータス 023:同番移転結果不可 */
	private static final String DOBANITEN_STAT_023 = "同番移転結果不可";
	/** 同番移転ステータス 031:同番移転結果可 */
	private static final String DOBANITEN_STAT_031 = "同番移転結果可";
	/** 同番移転ステータス 050:同番移転完了 */
	private static final String DOBANITEN_STAT_050 = "同番移転完了";
	/** 同番移転ステータス 090:同番移転取消 */
	private static final String DOBANITEN_STAT_090 = "同番移転取消";
	
	/** 同番移転ステータス 021:NTT送信待ち */
	private static final String DBNITN_STAT_021 = "021";
	/** 同番移転ステータス 022:NTT送信済み */
	private static final String DBNITN_STAT_022 = "022";
	/** 同番移転ステータス 023:同番移転結果不可 */
	private static final String DBNITN_STAT_023 = "023";
	/** 同番移転ステータス 031:同番移転結果可 */
	private static final String DBNITN_STAT_031 = "031";
	/** 同番移転ステータス 050:同番移転完了 */
	private static final String DBNITN_STAT_050 = "050";
	/** 同番移転ステータス 090:同番移転取消 */
	private static final String DBNITN_STAT_090 = "090";
	
	/** 番ポ有無 0：無  */
	private static final String BMP_UM_KBN_0 = "0";
	/** 番ポ有無 無*/
	private static final String BMP_UM_0 = "無";
	/** 番ポ有無 有*/
	private static final String BMP_UM_1 = "有";
	
	/** 同番移転可否調査結果コード 0:未 */
	private static final String DBNITE_KH_MI = "未";
	/** 同番移転可否調査結果コード 1:可 */
	private static final String DBNITE_KH_KA = "可";
	/** 同番移転可否調査結果コード 2:否 */
	private static final String DBNITE_KH_HI = "否";
	
	/** 同番移転可否調査結果コード 0:未 */
	private static final String DBNITEN_KH_KEKKA_0 = "0";
	/** 同番移転可否調査結果コード 1:可 */
	private static final String DBNITEN_KH_KEKKA_1 = "1";
	/** 同番移転可否調査結果コード 2:否 */
	private static final String DBNITEN_KH_KEKKA_2 = "2";
	
	/** 同番移転依頼制御コード 連携 */
	private static final String DOBANITEN_IRAI_CTRL_1 = "1";
	/** 同番移転依頼制御コード 連携不要 */
	private static final String DOBANITEN_IRAI_CTRL_2 = "2";
	/** 同番移転依頼制御コード 保留 */
	private static final String DOBANITEN_IRAI_CTRL_0 = "0";
	
	/** 同番移転依頼制御コード 連携 */
	private static final String DOBANITEN_IRAI_CTRL_DSP_1 = "連携";
	/** 同番移転依頼制御コード 連携不要 */
	private static final String DOBANITEN_IRAI_CTRL_DSP_2 = "連携不要";
	/** 同番移転依頼制御コード 保留 */
	private static final String DOBANITEN_IRAI_CTRL_DSP_0 = "保留";
	
	/** 同番移転可否 1:可 */
	private static final String DOBANITEN_KA = "1";
	/** 同番移転可否 2:否 */
	private static final String DOBANITEN_HI = "2";
	
	/** 更新処理 */
	private static final String CTRL_CD_UPD = "0";
	/** 取消処理 */
	private static final String CTRL_CD_TRKS = "1";
	
	/**コードリストの定数*/
	private static final String CD_DIV_LIST = "コードリスト";
	
	/**コード名リストの定数*/
	private static final String CD_DIV_NM_LIST = "コード名リスト";
	
	/**添え字の定数*/
	private static final String INDEX = "添え字";

    /**名称リストの定数*/
	private static final String NM_LIST = "名称リスト";

	/** 添え字とラベルの区切り文字 */
	public static final String IDX_SEP = ".";
	
	/**
	 * 登録画面初期表示処理
	 * 
	 * @return 画面ごとの処理結果
	 * @throws Exception
	 */
	public boolean actionInit() throws Exception
	{
		boolean ret = true;

		//共有Bean アクセスクラスの取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// 遷移先画面IDを取得 
		String screenId = commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);
		
		String screenName = "";

		// 遷移先画面IDから、行う表示処理を決定する
		if (JKKScreenConst.SCREEN_ID_KKW13802.equals(screenId))			//更新画面
		{
			ret = actionInitKKW13802();
			
			screenName = JKKScreenConst.SCREEN_NAME_KKW13802;
		} 
		else if (JKKScreenConst.SCREEN_ID_KKW13803.equals(screenId))	//更新確認画面
		{
			screenName = JKKScreenConst.SCREEN_NAME_KKW13803;
		}  
		else if (JKKScreenConst.SCREEN_ID_KKW13804.equals(screenId))	//更新完了画面
		{
			screenName = JKKScreenConst.SCREEN_NAME_KKW13804;
		}

		//共通Bean設定処理
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, screenId);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, screenName);

		return ret;
	}
	
	public boolean actionInitKKW13802() throws Exception
	{
		// サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// 引継情報を取得
		JCCWebCommon.getScreenInfo(this);

		// 引継ぎ項目取得
		getCustHktgiInfo(svcFormBean);
		
		// 初期表示項目取得
		invoke(svcFormBean);
		
		setString(svcFormBean, KKW13802SFConst.CTRL_CD, CTRL_CD_UPD);
		
		editFromBeanInit(svcFormBean);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}

	/** 
	 * 表示用に画面項目を編集（初期表示）
	 * コード→コード名称
	 * @param svcFormBean
	 */
	private void editFromBeanInit(X31SDataBeanAccess svcFormBean)
	{
		
		// 同番移転登録日
		String dobanitenYmd = getString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_YMD);
		// 可否調査依頼
		String dobanitenReqCtrlCd = getString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_REQ_CTRL_CD);
		// 番ポ有無
		String bmpUm = getString(svcFormBean, KKW13802SFConst.HKTG_BMP_UM);
		// 同番移転ステータス
		String dobanitenStat = getString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_STAT);
		
		
		// ****** 同番移転登録日 ******
		if (!isMaxYmd(dobanitenYmd))
		{
			setString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_YMD, JPCUtilCommon.formatDate(dobanitenYmd));
		}
		else
		{
			setString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_YMD, "");
		}
		
		
		// ****** 同番移転依頼制御コード ******
		if (DOBANITEN_IRAI_CTRL_1.equals(dobanitenReqCtrlCd))
		{
			// 連携
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_REQ_CTRL_CD_DSP, DOBANITEN_IRAI_CTRL_DSP_1);
		}
		else if (DOBANITEN_IRAI_CTRL_2.equals(dobanitenReqCtrlCd))
		{
			// 連携不要
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_REQ_CTRL_CD_DSP, DOBANITEN_IRAI_CTRL_DSP_2);
		}
		else if (DOBANITEN_IRAI_CTRL_0.equals(dobanitenReqCtrlCd))
		{
			// 保留
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_REQ_CTRL_CD_DSP, DOBANITEN_IRAI_CTRL_DSP_0);
		}
		
		
		// ****** 番ポ有無 ******
		if (BMP_UM_KBN_0.equals(bmpUm))
		{
			// 無し
			setString(svcFormBean, KKW13802SFConst.BMP_UM_DSP, BMP_UM_0);
		}
		else
		{
			// 有り
			setString(svcFormBean, KKW13802SFConst.BMP_UM_DSP, BMP_UM_1);
		}
		
		
		// ****** 同番移転ステータス ******
		if (DBNITN_STAT_021.equals(dobanitenStat))
		{
			// 021:NTT送信待ち
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_STAT_DSP, DOBANITEN_STAT_021);
		}
		else if (DBNITN_STAT_022.equals(dobanitenStat))
		{
			// 022:NTT送信済み
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_STAT_DSP, DOBANITEN_STAT_022);
		}
		else if (DBNITN_STAT_023.equals(dobanitenStat))
		{
			// 023:同番移転完了
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_STAT_DSP, DOBANITEN_STAT_023);
		}
		else if (DBNITN_STAT_031.equals(dobanitenStat))
		{
			// 031:同番移転結果可
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_STAT_DSP, DOBANITEN_STAT_031);
		}
		else if (DBNITN_STAT_050.equals(dobanitenStat))
		{
			// 050:同番移転完了
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_STAT_DSP, DOBANITEN_STAT_050);
		}
		else if (DBNITN_STAT_090.equals(dobanitenStat))
		{
			// 090:同番移転取消
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_STAT_DSP, DOBANITEN_STAT_090);
		}
	}
	
	/**
	 * 表示用に画面項目を編集（確認画面）
	 * @param svcFormBean
	 */
	private void editFromBeanFix(X31SDataBeanAccess svcFormBean)
	{
		// 可否調査結果登録
		String dobanitenJdgCd = getString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_JDG_CD);
		
		if (DBNITEN_KH_KEKKA_0.equals(dobanitenJdgCd))
		{
			// 0:未
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_JDG_CD_DSP, DBNITE_KH_MI);
		}
		else if (DBNITEN_KH_KEKKA_1.equals(dobanitenJdgCd))
		{
			// 1:可
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_JDG_CD_DSP, DBNITE_KH_KA);
		}
		else if (DBNITEN_KH_KEKKA_2.equals(dobanitenJdgCd))
		{
			// 2:否
			setString(svcFormBean, KKW13802SFConst.DOBANITEN_JDG_CD_DSP, DBNITE_KH_HI);
		}
	}

	/**
	 * 引継ぎ情報取得
	 * @param svcFormBean
	 * @param custKeiHktgiInf
	 */
	private void getCustHktgiInfo(X31SDataBeanAccess svcFormBean)
	{

		X31SDataBeanAccessArray custKeiHktgiList = svcFormBean.getDataBeanArray(KKW13802SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
		
		// 引継同番移転登録日
		setString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_YMD, getString(custKeiHktgiInf, KKW13802SFConst.GENE_ADD_DTM_01));
		// 引継可否調査依頼
		setString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_REQ_CTRL_CD, getString(custKeiHktgiInf, KKW13802SFConst.DOBANITEN_REQ_CTRL_CD_01));
		// 引継お客様ＩＤ
		setString(svcFormBean, KKW13802SFConst.HKTG_SVC_KEI_NO, getString(custKeiHktgiInf, KKW13802SFConst.SVC_KEI_NO_01));
		// 引継契約者名
		setString(svcFormBean, KKW13802SFConst.HKTG_KEISHA_NM, getString(custKeiHktgiInf, KKW13802SFConst.KEISHA_NM_01));
		// 引継番ポ有無
		setString(svcFormBean, KKW13802SFConst.HKTG_BMP_UM, getString(custKeiHktgiInf, KKW13802SFConst.BMP_UM_01));
		// 引継同番移転電話番号
		setString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_TEL, getString(custKeiHktgiInf, KKW13802SFConst.DOBANITEN_TEL_01));
		// 引継同番移転ステータス
		setString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_STAT, getString(custKeiHktgiInf, KKW13802SFConst.DOBANITEN_STAT_01));
		// 引継可否調査結果登録
		setString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_JDG_CD, getString(custKeiHktgiInf, KKW13802SFConst.DOBANITEN_JDG_CD_01));
		// 同番移転番号
		setString(svcFormBean, KKW13802SFConst.DOBANITEN_NO, getString(custKeiHktgiInf, KKW13802SFConst.DOBANITEN_NO_01));
		// サービス契約内訳番号
		setString(svcFormBean, KKW13802SFConst.SVC_KEI_UCWK_NO, getString(custKeiHktgiInf, KKW13802SFConst.SVC_KEI_UCWK_NO_01));
		
		// 可否調査結果登録
		setString(svcFormBean, KKW13802SFConst.IND, getString(custKeiHktgiInf, KKW13802SFConst.DOBANITEN_JDG_CD_01));
	}

	/**
	 * 更新確認ボタン押下イベントハンドラｓ
	 * 
	 * @return
	 */
	public boolean actionAdd() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		if (null == bean)
		{
			throw new Exception();
		}
		JCCWebCommon.setScreenId(this, "KKW13803", JKKScreenConst.SCREEN_ID_KKW13803);
		
		// 選択されていた値をbeanにセット
		selectedPulldownValue(bean, KKW13802SFConst.DOBANITEN_JDG_LIST, KKW13802SFConst.HKTG_DOBANITEN_JDG_CD);
		
		// 同番移転チェック
		if (!checkDobaniten(bean))
		{
			return true;
		}
		
		// 機能コードを"2"でサービスを呼び出す
		invokeFix(bean, "2", CTRL_CD_UPD);
		
		// 更新確認メッセージを表示
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I,
				new String[] { "更新" });
		
		// 画面項目編集
		editFromBeanFix(bean);
		// 遷移先の設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13803);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13803);
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 戻るボタン押下イベントハンドラ
	 * 
	 * @return
	 */
	public boolean actionBack()
	{

		String prevScreenId = JCCWebCommon.getScreenId(this);

		// 共有Bean アクセスクラスの取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// 遷移先の指定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				prevScreenId);

		return true;
	}

	
	/**
	 * 確定ボタン押下イベントハンドラ
	 * 
	 * @return
	 */
	public boolean actionFix() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		if (null == bean)
		{
			throw new Exception();
		}
		String ctrl_cd = "";
		
		// 遷移元画面が同番移転情報更新画面の場合
		if (JKKScreenConst.SCREEN_ID_KKW13803.equals(JCCWebCommon.getScreenId(this)))
		{
			// 更新処理を行う
			ctrl_cd = CTRL_CD_UPD;
		}
		else
		{
			// 同番移転一覧照会画面からの遷移時
			// 取消処理を行う
			ctrl_cd = CTRL_CD_TRKS;
			X31SDataBeanAccessArray dobanitenList = bean.getDataBeanArray(KKW13802SFConst.DOBANITENLIST);
			X31SDataBeanAccess dobanitenInf = dobanitenList.getDataBean(0);
			
			// 同番移転ステータス
			String dobanitenStat = getString(dobanitenInf, KKW13802SFConst.DOBANITEN_STAT_05);
			
			// 同番移転ステータスが「021：NTT送信待ち」以外の場合はエラー
			if (!"021".equals(dobanitenStat))
			{
				//error
				JCCWebCommon.setMessageInfo(this, "EKBB280-JW");
				return true;
			}
		}
		
		// 同番移転チェック
		if (!checkDobaniten(bean))
		{
			return true;
		}
		
		// 機能コードを"1"でサービスを呼び出す
		invokeFix(bean, "1", ctrl_cd);
		
		String[] str =
		{
			"同番移転情報変更"
		};
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9360__I, str);
		
		// 遷移先の設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13804);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13804);
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}
	
	/**
	 * 一覧画面より取消ボタン押下イベントハンドラ
	 * 
	 * @return
	 */
	public boolean actionCancel() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		if (null == bean)
		{
			throw new Exception();
		}
		
		
		// 更新確認メッセージを表示
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I,
				new String[] { "取消" });
		
		// 引継情報を取得
		JCCWebCommon.getScreenInfo(this);

		// 引継ぎ項目取得
		getCustHktgiInfo(bean);
		
		editFromBeanInit(bean);
		editFromBeanFix(bean);
		
		invoke(bean);
		
		setString(bean, KKW13802SFConst.CTRL_CD, CTRL_CD_TRKS);
		
		// 遷移先の設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13803);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13803);
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}
	
	/**
	 * 修正ボタン押下イベントハンドラ
	 * 
	 * @return
	 */
	public boolean actionShusei() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		if (null == bean)
		{
			throw new Exception();
		}
		
		// 遷移先の設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13802);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13802);
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}
	
	/**
	 * クリアボタン押下
	 * @return
	 * @throws Exception
	 */
	public boolean actionClear() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		if (null == bean)
		{
			throw new Exception();
		}
		
		selectedPulldownIndex(bean, KKW13802SFConst.DOBANITEN_JDG_LIST, getString(bean, KKW13802SFConst.SEL_VALUE));
		
		// 遷移先の設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13802);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13802);
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * （完了画面）一覧照会へボタン押下イベントハンドラ
	 * 
	 * @return
	 */
	public boolean actionIchiran()
	{
		// 遷移先の設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13801);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13801);
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}
	
	/**
	 * サービス呼出処理（初期表示）
	 * @param svcFormBean
	 * @throws Throwable 
	 */
	private void invoke(X31SDataBeanAccess svcFormBean) throws Exception
	{
		// ユースケースID格納用のHashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// サービス呼出結果を格納するHashMap
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0597);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0597OP);

		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean =
		{
			svcFormBean
		};

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0597_KKSV0597OPDBMapper mapper = new KKSV0597_KKSV0597OPDBMapper();
		mapper.setKKSV059701CC(paramBean, inputMap, "1");
		invokeService(paramMap, inputMap, outputMap);
		mapper.getKKSV059701CC(paramBean, outputMap);

		// プルダウン設定
		setPulldown(svcFormBean, outputMap, KKW13802SFConst.DOBANITEN_JDG_LIST, "KKSV059701CC", false, "dobaniten_jdg_list");
		selectedPulldownIndex(svcFormBean, KKW13802SFConst.DOBANITEN_JDG_LIST, getString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_JDG_CD));
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
	}
	
	/**
	 * サービス呼出処理(更新確認、確定)
	 * @param svcFormBean
	 * @param funcCd 機能コード
	 * @param ctrl_cd 更新取消区分
	 */
	private void invokeFix(X31SDataBeanAccess svcFormBean, String funcCd, String ctrl_cd)
	{
		// ユースケースID格納用のHashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// サービス呼出結果を格納するHashMap
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0598);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0598OP);

		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean =
		{
			svcFormBean
		};
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0598_KKSV0598OPDBMapper mapper = new KKSV0598_KKSV0598OPDBMapper();
		mapper.setKKSV059801CC(paramBean, inputMap, funcCd, ctrl_cd);
		invokeService(paramMap, inputMap, outputMap);
		mapper.getKKSV059801CC(paramBean, outputMap);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
	}
	
	/**
	 * チェック処理（共通）
	 * @param svcFormBean
	 */
	protected boolean checkDobaniten(X31SDataBeanAccess svcFormBean)
	{
		boolean ret = true;
		// 同番移転依頼制御コード
		String dobanitenReqCtrlCd = getString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_REQ_CTRL_CD);
		// 同番移転ステータス
		String dobanitenStat = getString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_STAT);
		
		// 同番移転情報リスト
		X31SDataBeanAccessArray dobanitenList = svcFormBean.getDataBeanArray(KKW13802SFConst.DOBANITENLIST);
		X31SDataBeanAccess dobanitenInf = dobanitenList.getDataBean(0);
		
		// 同番移転可否
		String dobanitenKh = getString(svcFormBean, KKW13802SFConst.IND);
		
		// 同番移転判定コード
		String dobanitenJdgCd = getString(svcFormBean, KKW13802SFConst.HKTG_DOBANITEN_JDG_CD);
		
		// 同番移転依頼制御コードが「連携不要」の場合に
		
		// 同番移転依頼制御コードが「連携不要」
		if (DOBANITEN_IRAI_CTRL_2.equals(dobanitenReqCtrlCd))
		{
			// 同番移転判定コードが「未」が選択されている場合、エラー。
			if (DBNITEN_KH_KEKKA_0.equals(dobanitenJdgCd))
			{
				ret = false;
				JCCWebCommon.setMessageInfo(this, "EKBB260-NW");
			}
		}
		// 同番移転依頼制御コードが「連携」かつ、同番移転可否が「可」「否」のどちらかが設定されている場合
		else if (DOBANITEN_IRAI_CTRL_1.equals(dobanitenReqCtrlCd) 
				&& !isNull(dobanitenKh) 
				&& (DOBANITEN_KA.equals(dobanitenKh) || DOBANITEN_HI.equals(dobanitenKh))
				)
		{
			// 同番移転判定コードが「未」が選択されている場合、エラー。
			if (DBNITEN_KH_KEKKA_0.equals(dobanitenJdgCd))
			{
				ret = false;
				// エラー
				JCCWebCommon.setMessageInfo(this, "EKBB270-NW");

			}
		}
		else if (DOBANITEN_IRAI_CTRL_0.equals(dobanitenReqCtrlCd))
		{
			ret = false;
			JCCWebCommon.setMessageInfo(this, "EKBB280-JW");
		}
		
		// 同番移転ステータスが「050:同番移転完了」、「090:同番移転取消」の場合
		if (DBNITN_STAT_050.equals(dobanitenStat) || DBNITN_STAT_090.equals(dobanitenStat))
		{
			ret = false;
			JCCWebCommon.setMessageInfo(this, "EKBB280-JW");
		}
		
		return ret;
	}
	
	/**
	 * 最大年月日判定
	 * @param ymd
	 * @return
	 */
	private boolean isMaxYmd(String ymd)
	{
		if (ymd.indexOf("/") != -1)
		{
			ymd = ymd.replaceAll("/", "");
		}
		return JKKCommonConst.MAX_YMD.equals(ymd);
	}
	
	/**
	 * プルダウン設定
	 * @param bean
	 * @param map
	 * @param pulldownKey
	 * @param outMapKey
	 * @param blankFlag
	 * @throws Exception
	 */
	private void setPulldown(X31SDataBeanAccess bean, HashMap<String, Object> map, String pulldownKey,
			String outMapKey, boolean blankFlag, String childListKey) throws Exception
	{
		setPulldownList(bean, map, pulldownKey, outMapKey, blankFlag, childListKey);
	}
	
	/**
	 * <dd>メソッド名	：setPulldownList
	 * <dd>メソッド説明	：下り情報Mapから取得したコードリスト、コード名リストを
	 *                    プルダウン情報Beanに設定します。
	 * 
	 * @param bean データBeanアクセスクラス
	 * @param outputMap 下り情報Map
	 * @param pulldownKey プルダウン情報取得キー
	 * @param outMapKey 下り情報Map取得キー
	 * @param blankFlag 1行目ブランク付与フラグ  true:付与する,false:付与しない
	 * @exception Exceptionがスローされます。
	 */
	@SuppressWarnings("unchecked")
	public static void setPulldownList(X31SDataBeanAccess bean, HashMap<String, Object> outputMap, 
			String pulldownKey, String outMapKey, boolean blankFlag, String childListKey) 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)outputMap.get(outMapKey);

		if(parentMap == null) 
		{
			//NULLの場合処理を終了します
			return ;
		}
		//Mapにコード名称管理一覧照会明細が含まれているか判定します
		//コード明細情報リストにコード名称管理一意照会明細を設定します
		ArrayList childList = (ArrayList)parentMap.get(childListKey);
		//コード明細情報リストが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, "");

		}

//		//添え字
//		int index = 1;

		//コード明細情報リスト分コードリスト、コード名リストを取得します
		for (int i = 0; i < childList.size(); i++)
		{
			//コード明細情報リストをコード明細情報Mapに設定します
			HashMap childMap = (HashMap)childList.get(i);
			//プルダウン情報Beanにコード区分を設定する
			pulldown_subbean.sendMessageString(CD_DIV_LIST, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("cd_div"));
			//対象のBeanにコード区分名を設定する
			String cd_div_nm = (String)childMap.get("cd_div_nm");
			// ST2-2012-0000706 2012/05/01 MOD START
			//添え字、"."、コードリスト名の順にプルダウン情報Beanに設定する
			pulldown_subbean.sendMessageString(CD_DIV_NM_LIST, X31CWebConst.DATABEAN_ADD_VALUE, cd_div_nm);
			// ST2-2012-0000706 2012/05/01 MOD END
//			//添え字のカウントアップ
//			index++;
		}
	}
	
	/**
	 * <dd>メソッド名：プルダウン選択処理
	 * <dd>メソッド説明：指定のコードでプルダウンを選択状態にする。
	 * <dd>備考：なし。
	 * @param bean サービスフォームBean
	 * @param pulldownInfName プルダウン情報名(キー値)
	 * @param targetCd 指定コード
	 */
	private void selectedPulldownIndex(X31SDataBeanAccess bean, String pulldownInfName, String targetCd)
	{
		String index = "0";
		
		X31SDataBeanAccessArray pulldownInfList = bean.getDataBeanArray(pulldownInfName);
		X31SDataBeanAccess pulldownInf = pulldownInfList.getDataBean(0);
		
		if (!isNull(targetCd))
		{
			int count = (Integer)pulldownInf.sendMessage(CD_DIV_LIST, X31CWebConst.DATABEAN_GET_COUNT);
			for (int i = 0 ; i < count ; i++)
			{
				String cd = pulldownInf.sendMessageString(CD_DIV_LIST, X31CWebConst.DATABEAN_GET_VALUE, i);
				if (cd.equals(targetCd))
				{
					index = String.valueOf(i);
					break;
				}
			}
		}
		
		pulldownInf.sendMessageString(INDEX, X31CWebConst.DATABEAN_SET_VALUE, index);
		setString(bean, KKW13802SFConst.SEL_VALUE, index);
	}
	
	/**
	 * プルダウンの選択INDEXより選択されたコードを取得し、指定beanに設定
	 * @param bean
	 * @param pulldownInfName
	 * @param target
	 */
	private void selectedPulldownValue(X31SDataBeanAccess bean, String pulldownInfName, String target)
	{
		X31SDataBeanAccessArray pulldownInfList = bean.getDataBeanArray(pulldownInfName);
		X31SDataBeanAccess pulldownInf = pulldownInfList.getDataBean(0);
		
		// 
		String index = getString(pulldownInf, INDEX);
		
		if (!isNull(index))
		{
			// 選択されていたINDEXよりコード取得
			String cd = pulldownInf.sendMessageString(CD_DIV_LIST, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));
			
			// beanにセット
			setString(bean, target, cd);
		}
	}
	
	/**
	 * オブジェクトに値が設定されているか判定します。 <br>
	 * 
	 * @param arg0
	 *            判定するオブジェクト
	 * @return オブジェクトに値が設定されていない場合はtrue
	 */
	private boolean isNull(Object arg0)
	{
		if (arg0 == null)
		{
			return true;
		}

		if (arg0 instanceof String)
		{
			return "".equals(arg0);
		}

		return 0 == arg0.toString().length();
	}
	
	/**
	 * beanより指定keyの値を取得（String）
	 * @param bean
	 * @param key
	 * @return
	 */
	private String getString(X31SDataBeanAccess bean, String key)
	{
		return bean.sendMessageString(key, X31CWebConst.DATABEAN_GET_VALUE);
	}

	/**
	 * beanに指定keyの値を設定（String）
	 * @param bean
	 * @param key
	 * @param val
	 */
	private void setString(X31SDataBeanAccess bean, String key, String val)
	{
		bean.sendMessageString(key, X31CWebConst.DATABEAN_SET_VALUE, val);
	}

	/**
	 * beanより指定keyの値を取得（boolean）
	 * @param bean
	 * @param key
	 * @return
	 */
	private boolean getBoolean(X31SDataBeanAccess bean, String key)
	{
		return bean.sendMessageBoolean(key, X31CWebConst.DATABEAN_GET_VALUE);
	}

	/**
	 * beanに指定keyの値を設定（boolean）
	 * @param bean
	 * @param key
	 * @param val
	 */
	private void setBoolean(X31SDataBeanAccess bean, String key, boolean val)
	{
		bean.sendMessageBoolean(key, X31CWebConst.DATABEAN_SET_VALUE, val);
	}
}
