/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：eo電話番号発番登録
*   ソースファイル名：KKW00201SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年05月29日
*＜機能概要＞
*   
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/05/29   FJ          新規作成
*  v10.00.00    2014/09/18   FJ)伊藤     【OM-2014-0000770】対応
*  v72.00.00    2024/12/02   FJ)奥村     【ANK-4627-00-00 #84711】KKW00201：opt番号を発番し、内訳が受付済だが、エイジングが存在しない
**********************************************************************/

package eo.web.webview.KKW00201SF;

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.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKPulldownUtil;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.mapping.KKSV0088_KKSV0088OPDBMapper;
import eo.web.webview.mapping.KKSV0089_KKSV0089OPDBMapper;
import eo.web.webview.mapping.KKSV0090_KKSV0090OPDBMapper;


/**
 * <dd>クラス名：KKW00201SFLogic
 * <dd>クラス説明：eo電話番号の払出を行う。
 * <dd>備考：なし。
 * @version 1.00.00 2011/05/24
 * @author FJ
 */
@SuppressWarnings("serial")
public class KKW00201SFLogic extends JCCWebBusinessLogic 
{
	
	/**
	 * <dd>メソッド名：初期表示処理
	 * <dd>メソッド説明：eo電話番号発番登録画面の初期表示を行う。
	 * <dd>備考：なし。
	 * @return boolean true
	 * @throws Exception 例外
	 */
	public boolean actionInit() throws Exception 
	{

		HashMap<String, Object> paramMap  = null;
		HashMap<String, Object> inputMap  = null;
		HashMap<String, Object> outputMap = null;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// -----------引継情報の取得-----------
		HashMap<String, Object> hktgiInfMap = JCCWebCommon.getScreenInfo(this);
		String adCd     = (String)hktgiInfMap.get(KKW00201SFConst.HKTGI_KEY_AD_CD);			// 住所コード
		String sysid    = (String)hktgiInfMap.get(KKW00201SFConst.HKTGI_KEY_SYSID);			// ＳＹＳＩＤ
		String svcKeiNo = (String)hktgiInfMap.get(KKW00201SFConst.HKTGI_KEY_SVC_KEI_NO);	// サービス契約番号

		// ▼▼▼▼▼ 2013/03/02 OT-2013-0000253 ADD START ▼▼▼▼▼
		//****************************************************************//
		//                  ※※※※※　注意　※※※※※                  //
		//****************************************************************//
		// 下記異動区分は、「新規契約」の画面からのみしか                 //
		// 送信されません！！                                             //
		// 新規契約の画面からの場合のみ、                                 //
		// 「指定予約払出」「引継予約払出」をプルダウンに                 //
		// 出力しないようにするためのものです！！                         //
		//****************************************************************//
		String idoDiv   = (String)hktgiInfMap.get(KKW00201SFConst.HKTGI_KEY_IDO_DIV);		// 異動区分
		// ▲▲▲▲▲ 2013/03/02 OT-2013-0000253 ADD E N D ▲▲▲▲▲

		bean.sendMessageString(KKW00201SFConst.AD_CD,      X31CWebConst.DATABEAN_SET_VALUE, adCd);
		bean.sendMessageString(KKW00201SFConst.SYSID,      X31CWebConst.DATABEAN_SET_VALUE, sysid);
		bean.sendMessageString(KKW00201SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		// ▼▼▼▼▼ 2013/03/02 OT-2013-0000253 ADD START ▼▼▼▼▼
		bean.sendMessageString(KKW00201SFConst.IDO_DIV,    X31CWebConst.DATABEAN_SET_VALUE, idoDiv);
		// ▲▲▲▲▲ 2013/03/02 OT-2013-0000253 ADD E N D ▲▲▲▲▲

		// -----------サービス呼出処理-----------
		paramMap  = new HashMap<String, Object>();	// パラメタ設定用マップ
		inputMap  = new HashMap<String, Object>();	// 入力情報格納用マップ
		outputMap = new HashMap<String, Object>();	// 結果格納用マップ

		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0088);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0088OP);


		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0088_KKSV0088OPDBMapper mapper = new KKSV0088_KKSV0088OPDBMapper();
		mapper.setKKSV008801SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV008802SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		// eo電話番号発番登録初期表示サービスを実施
		invokeService(paramMap, inputMap, outputMap);

		// 取得情報の下りマッピング
		mapper.getKKSV008801SC(paramBean, outputMap);
		mapper.getKKSV008802SC(paramBean, outputMap);

		// ▼▼▼▼▼ 2013/03/02 OT-2013-0000253 ADD START ▼▼▼▼▼
		if (JKKCommonConst.IDO_DIV_VALUE_00001.equals(idoDiv))
		{
			// 前画面ID取得
			String preScreenId = JCCWebCommon.getScreenId(this);
			if (
					JKKScreenConst.SCREEN_ID_KKW00108.equals(preScreenId)
					|| JKKScreenConst.SCREEN_ID_KKW00109.equals(preScreenId)
			)
			{
				// 新規契約、かつ新規申込画面からの場合
				// 払出種別プルダウンの一部を除去する
				delHradsiSbtList(outputMap, "KKSV008802SC");
			}
		}
		// ▲▲▲▲▲ 2013/03/02 OT-2013-0000253 ADD E N D ▲▲▲▲▲

		JKKPulldownUtil.setPulldownList(bean, outputMap, KKW00201SFConst.HRADSI_SBT_PULLDOWN_INF, "KKSV008802SC", false);

		// OM-2013-0005252 番号区画レコードが存在しない住所コードで発番するとシステムエラー 2013/12/26 START
//		//IT2-2012-0000674 2012-06-08 ADD_START
//		X31SDataBeanAccessArray areacdInfoList = bean.getDataBeanArray(KKW00201SFConst.AREACD_INF_LIST);
//
//		// 市外局番情報リストが取得できない場合はエラー
//		if (areacdInfoList.getCount() <= 0)
//		{
//			JKKWebCommon.setMessageInfo(this, "EKB4320-KW");
//		}
//		//IT2-2012-0000674 2012-06-08 ADD_END
		// OM-2013-0005252 番号区画レコードが存在しない住所コードで発番するとシステムエラー 2013/12/26 END

		// 市外局番情報リストの先頭行を選択
		bean.sendMessageString(KKW00201SFConst.AREACD_INF_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// -----------遷移先画面設定-----------
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00201);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00201);

		// 市外局番情報選択時関数設定処理
		setAreacdInfChoiceFunc(bean);

		// OM-2013-0005252 番号区画レコードが存在しない住所コードで発番するとシステムエラー 2013/12/26 START
		X31SDataBeanAccessArray areacdInfoList = bean.getDataBeanArray(KKW00201SFConst.AREACD_INF_LIST);
		// 市外局番情報リストが取得できない場合はエラー
		if (areacdInfoList.getCount() <= 0)
		{
			JKKWebCommon.setMessageInfo(this, "EKB4320-KW");
		}
		else
		{
			// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
			// 電話番号発番
			telnoHtb(true);
			// エイジング登録
			addAging(true);
			// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END
		}
		// OM-2013-0005252 番号区画レコードが存在しない住所コードで発番するとシステムエラー 2013/12/26 END

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;

	}

	// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
	/**
	 * <dd>メソッド名：電話番号発番処理
	 * <dd>メソッド説明：eo電話番号発番登録画面で電話番号発番ボタン押下時の処理を行う。
	 * <dd>備考：なし。
	 * @return boolean true
	 * @throws Exception 例外
	 */
	public boolean actionTelnoHtb() throws Exception 
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		// 共有Bean アクセスクラスの取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// 選択されている払出種別
		X31SDataBeanAccess hradsiSbtPulldownInf = bean.getDataBeanArray(KKW00201SFConst.HRADSI_SBT_PULLDOWN_INF).getDataBean(0);
		String hradsiSbtIndex = hradsiSbtPulldownInf.sendMessageString(KKW00201SFConst.INDEX_02, X31CWebConst.DATABEAN_GET_VALUE);
		String hradsiSbt = hradsiSbtPulldownInf.sendMessageString(KKW00201SFConst.CD_DIV_LIST_02, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(hradsiSbtIndex));

		// ANK-4627-00-00 #84711 ADD START
		// 電話番号発番ボタン押下時の払出種別プルダウン情報を保持する
		bean.sendMessageString(KKW00201SFConst.TAIHI_HRADSI_SBT_PULLDOWN_INF, X31CWebConst.DATABEAN_SET_VALUE, hradsiSbt);
		// ANK-4627-00-00 #84711 ADD END
		
		// 通常払出の場合
		if (JKKCommonConst.HRADSI_SBT_CD_01.equals(hradsiSbt))
		{
			// 払出電話番号
			String hradsiTelNo = bean.sendMessageString(KKW00201SFConst.HRADSI_TEL_NO, X31CWebConst.DATABEAN_GET_VALUE);
			// 選択されている市外局番情報リストのインデックス
			String areacdInfChoice = bean.sendMessageString(KKW00201SFConst.AREACD_INF_CHOICE, X31CWebConst.DATABEAN_GET_VALUE);

			// 電話番号発番ボタンの押下が1回目で、市外局番情報リストが変更されていない（先頭行）場合
			if (isNull(hradsiTelNo) && "0".equals(areacdInfChoice))
			{
				// 初期払出電話番号を払出電話番号として使用する
				String initHradsiTelNo = bean.sendMessageString(KKW00201SFConst.INIT_HRADSI_TEL_NO, X31CWebConst.DATABEAN_GET_VALUE);
				if (isNull(initHradsiTelNo))
				{
					JKKWebCommon.setMessageInfo(this, "EKB4330-KW");
				}
				else
				{
					bean.sendMessageString(KKW00201SFConst.HRADSI_TEL_NO, X31CWebConst.DATABEAN_SET_VALUE, initHradsiTelNo);
				}
			}
			// 電話番号発番ボタンの押下が2回目以降、または市外局番情報リストが変更されている場合
			else
			{
				// 電話番号発番処理を実行
				telnoHtb(false);
				// エイジング登録
				addAging(false);
			}
		}
		// 通常払出以外の場合
		else
		{
			// 電話番号発番処理を実行
			telnoHtb(false);
			// エイジング登録は確定ボタン押下時に行う
		}

		// 共有フォームBean設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00201);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00201);

		return true;
	}
	// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END

	// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
	/**
	 * <dd>メソッド名：電話番号発番処理
	 * <dd>メソッド説明：eo電話番号発番登録画面で電話番号発番処理を行う。
	 * <dd>備考：なし。
	 * @param isInit 初期処理かどうか
	 * @throws Exception 例外
	 */
//	public boolean actionTelnoHtb() throws Exception 
	private void telnoHtb(boolean isInit) throws Exception
	// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END
	{

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
//		// 共有Bean アクセスクラスの取得
//		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END

		// -----------サービスフォームBeanに電話番号取得条件を設定-----------
		// 払出電話番号を初期化
		bean.sendMessage(KKW00201SFConst.HRADSI_TEL_NO, X31CWebConst.DATABEAN_CLEAR);
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
//		// 選択されている払出種別の取得
//		X31SDataBeanAccess hradsiSbtPulldownInf = bean.getDataBeanArray(KKW00201SFConst.HRADSI_SBT_PULLDOWN_INF).getDataBean(0);
//		String hradsiSbtIndex = hradsiSbtPulldownInf.sendMessageString(KKW00201SFConst.INDEX_02, X31CWebConst.DATABEAN_GET_VALUE);
//		String hradsiSbt = hradsiSbtPulldownInf.sendMessageString(KKW00201SFConst.CD_DIV_LIST_02, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(hradsiSbtIndex));
		String hradsiSbt = "";
		// 初期処理の場合
		if (isInit)
		{
			// 通常払出を指定
			hradsiSbt = JKKCommonConst.HRADSI_SBT_CD_01;
		}
		else
		{
			// 選択されている払出種別の取得
			X31SDataBeanAccess hradsiSbtPulldownInf = bean.getDataBeanArray(KKW00201SFConst.HRADSI_SBT_PULLDOWN_INF).getDataBean(0);
			String hradsiSbtIndex = hradsiSbtPulldownInf.sendMessageString(KKW00201SFConst.INDEX_02, X31CWebConst.DATABEAN_GET_VALUE);
			hradsiSbt = hradsiSbtPulldownInf.sendMessageString(KKW00201SFConst.CD_DIV_LIST_02, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(hradsiSbtIndex));
		}
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END

		// 検索時払出種別の設定
		bean.sendMessageString(KKW00201SFConst.SEARCH_HRADSI_SBT, X31CWebConst.DATABEAN_SET_VALUE, hradsiSbt);

		// 選択されている市外局番情報リスト.ＭＡコードの取得
		String areacdInfChoice = bean.sendMessageString(KKW00201SFConst.AREACD_INF_CHOICE, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccess areacdInf = bean.getDataBeanArray(KKW00201SFConst.AREACD_INF_LIST).getDataBean(Integer.parseInt(areacdInfChoice));
		String maCd = areacdInf.sendMessageString(KKW00201SFConst.MA_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

		// ＫＥＹ＿番号区画コードの設定
		bean.sendMessageString(KKW00201SFConst.KEY_NO_KUKAKU_CD, X31CWebConst.DATABEAN_SET_VALUE, maCd);

		// ＫＥＹ＿電話番号予約ステータスの設定
		if (JKKCommonConst.HRADSI_SBT_CD_01.equals(hradsiSbt))
		{
			bean.sendMessageString(KKW00201SFConst.KEY_TELNO_RSV_STAT, X31CWebConst.DATABEAN_SET_VALUE, JKKCommonConst.TELNO_RSV_STAT_VALUE_999);
		}
		else
		{
			bean.sendMessageString(KKW00201SFConst.KEY_TELNO_RSV_STAT, X31CWebConst.DATABEAN_SET_VALUE, JKKCommonConst.TELNO_RSV_STAT_VALUE_100);
		}

		// ＫＥＹ＿予約者ＳＹＳＩＤ、ＫＥＹ＿予約者サービス契約番号の設定
		if (
				JKKCommonConst.HRADSI_SBT_CD_03.equals(hradsiSbt)
				|| JKKCommonConst.HRADSI_SBT_CD_04.equals(hradsiSbt)
		)
		{
			String hktgSysId    = bean.sendMessageString(KKW00201SFConst.SYSID,      X31CWebConst.DATABEAN_GET_VALUE);	// 引継SYSID
			String hktgSvcKeiNo = bean.sendMessageString(KKW00201SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);	// 引継サービス契約番号

			bean.sendMessageString(KKW00201SFConst.KEY_YOYAKSHA_SYSID,      X31CWebConst.DATABEAN_SET_VALUE, hktgSysId);
			bean.sendMessageString(KKW00201SFConst.KEY_YOYAKSHA_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, hktgSvcKeiNo);
		}
		else
		{
			bean.sendMessage(KKW00201SFConst.KEY_YOYAKSHA_SYSID,      X31CWebConst.DATABEAN_CLEAR);
			bean.sendMessage(KKW00201SFConst.KEY_YOYAKSHA_SVC_KEI_NO, X31CWebConst.DATABEAN_CLEAR);
		}

		// ＫＥＹ＿電話番号予約種別コードの設定
		if (JKKCommonConst.HRADSI_SBT_CD_01.equals(hradsiSbt))
		{
			bean.sendMessageString(KKW00201SFConst.KEY_TELNO_RSV_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		else if (JKKCommonConst.HRADSI_SBT_CD_02.equals(hradsiSbt))
		{
			bean.sendMessageString(KKW00201SFConst.KEY_TELNO_RSV_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, "01");
		}
		else if (JKKCommonConst.HRADSI_SBT_CD_03.equals(hradsiSbt))
		{
			bean.sendMessageString(KKW00201SFConst.KEY_TELNO_RSV_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, "02");
		}
		else if (JKKCommonConst.HRADSI_SBT_CD_04.equals(hradsiSbt))
		{
			bean.sendMessageString(KKW00201SFConst.KEY_TELNO_RSV_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, "03");
		}

		// 市外局番情報選択時関数設定処理
		setAreacdInfChoiceFunc(bean);

		// 一覧検索処理
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
//		searchList(bean, hradsiSbt, true);
		searchList(bean, hradsiSbt, true, isInit);
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END

		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
//		// 2012/06/20 IT2-2012-0000852 ADD START 共有Beanに画面IDを設定
//		// 共有フォームBean設定
//		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00201);
//		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00201);
//		// 2012/06/20 IT2-2012-0000852 ADD END
//
//		return true;
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END
	}
	
	/**
	 * <dd>メソッド名：ページング処理
	 * <dd>メソッド説明：eo電話番号発番登録画面でページングリンク時の処理を行う。
	 * <dd>備考：なし。
	 * @return boolean true
	 * @throws Exception 例外
	 */
	public boolean actionPaging() throws Exception 
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 検索時払出種別を取得
		String hradsiSbt = bean.sendMessageString(KKW00201SFConst.SEARCH_HRADSI_SBT, X31CWebConst.DATABEAN_GET_VALUE);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		// 一覧検索処理
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
//		searchList(bean, hradsiSbt, false);
		searchList(bean, hradsiSbt, false, false);
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
	/**
	 * <dd>メソッド名：確定処理
	 * <dd>メソッド説明：eo電話番号発番登録画面で確定ボタン押下時の処理を行う。
	 * <dd>備考：なし。
	 * @return boolean true
	 * @throws Exception 例外
	 */
	public boolean actionFix() throws Exception 
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 払出電話番号
		String hradsiTelNo = bean.sendMessageString(KKW00201SFConst.HRADSI_TEL_NO, X31CWebConst.DATABEAN_GET_VALUE);

		if (isNull(hradsiTelNo))
		{
			JKKWebCommon.setMessageInfo(this, "EKB4350-KW");
			return true;
		}

		// 選択されている払出種別
		X31SDataBeanAccess hradsiSbtPulldownInf = bean.getDataBeanArray(KKW00201SFConst.HRADSI_SBT_PULLDOWN_INF).getDataBean(0);
		String hradsiSbtIndex = hradsiSbtPulldownInf.sendMessageString(KKW00201SFConst.INDEX_02, X31CWebConst.DATABEAN_GET_VALUE);
		String hradsiSbt = hradsiSbtPulldownInf.sendMessageString(KKW00201SFConst.CD_DIV_LIST_02, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(hradsiSbtIndex));

		// ANK-4627-00-00 #84711 ADD START
		// 画面で選択されている払出種別と電話番号発番ボタン押下時に選択されていた払出種別を比較し、一致しない場合はエラーメッセージを表示
		String taihiHradsiSbt = bean.sendMessageString(KKW00201SFConst.TAIHI_HRADSI_SBT_PULLDOWN_INF, X31CWebConst.DATABEAN_GET_VALUE);
		if (taihiHradsiSbt != null && !"".equals(taihiHradsiSbt) &&  hradsiSbt != taihiHradsiSbt)
		{
			JKKWebCommon.setMessageInfo(this, "EKBG210-KW");
			return true;
		}
		// ANK-4627-00-00 #84711 ADD END

		// 通常払出以外の場合
		if (!JKKCommonConst.HRADSI_SBT_CD_01.equals(hradsiSbt))
		{
			// エイジング登録
			addAging(false);
		}

		// 払出電話番号を引継情報としてセット
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put(KKW00201SFConst.HKTGI_KEY_HRADSI_TEL_NO, hradsiTelNo);
		JCCWebCommon.setScreenInfo(this, JCCWebCommon.getScreenId(this), dataMap);

		// モーダル用反映画面へ画面遷移
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_NAME_CCW00105);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}
	// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END

	// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
	/**
	 * <dd>メソッド名：エイジング登録処理
	 * <dd>メソッド説明：払出電話番号をエイジングに登録する。
	 * <dd>備考：なし。
	 * @param isInit 初期処理かどうか
	 * @throws Exception 例外
	 */
//	public boolean actionFix() throws Exception 
	private void addAging(boolean isInit) throws Exception 
	// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END
	{
		
		HashMap<String, Object> paramMap  = null;
		HashMap<String, Object> inputMap  = null;
		HashMap<String, Object> outputMap = null;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
//		// 20120524 ST2-2012-0000731 START
//		if (isNull(bean.sendMessageString(KKW00201SFConst.HRADSI_TEL_NO, X31CWebConst.DATABEAN_GET_VALUE)))
//		{
//			JKKWebCommon.setMessageInfo(this, "EKB4350-KW");
//			return true;
//		}
//		// 20120524 ST2-2012-0000731 END
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END

		// -----------サービスフォームBeanにエイジング対象登録値を設定-----------
		// エイジング対象値に払出電話番号を設定
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
//		String hradsiTelNo = bean.sendMessageString(KKW00201SFConst.HRADSI_TEL_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String hradsiTelNo = "";
		// 初期処理の場合
		if (isInit)
		{
			// エイジング対象は初期払出電話番号
			hradsiTelNo = bean.sendMessageString(KKW00201SFConst.INIT_HRADSI_TEL_NO, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else
		{
			// エイジング対象は払出電話番号
			hradsiTelNo = bean.sendMessageString(KKW00201SFConst.HRADSI_TEL_NO, X31CWebConst.DATABEAN_GET_VALUE);
		}

		if (isNull(hradsiTelNo))
		{
			return;
		}
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END
		bean.sendMessageString(KKW00201SFConst.AGING_TG_VALUE, X31CWebConst.DATABEAN_SET_VALUE, hradsiTelNo);

		// -----------サービス呼出処理-----------
		paramMap  = new HashMap<String, Object>();	// パラメタ設定用マップ
		inputMap  = new HashMap<String, Object>();	// 入力情報格納用マップ
		outputMap = new HashMap<String, Object>();	// 結果格納用マップ

		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0090);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0090OP);

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0090_KKSV0090OPDBMapper mapper = new KKSV0090_KKSV0090OPDBMapper();
		mapper.setKKSV009001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// 案件対応 ANK-1670-00-00 2013/11/05 ADD START
		// エイジング一覧照会
		mapper.setKKSV009005SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// 案件対応 ANK-1670-00-00 2013/11/05 ADD END
		mapper.setKKSV009002SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// 2012/10/15 UI残_No.718 ADD START
		mapper.setKKSV009003SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV009004SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// 2012/10/15 UI残_No.718 ADD END
		mapper.setREQCHK(paramBean, inputMap, null);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		// eo電話番号発番登録確定サービスを実施
		invokeService(paramMap, inputMap, outputMap);

		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
//		// 払出電話番号を引継情報としてセット
//		HashMap<String, Object> dataMap = new HashMap<String, Object>();
//		dataMap.put(KKW00201SFConst.HKTGI_KEY_HRADSI_TEL_NO, hradsiTelNo);
//		JCCWebCommon.setScreenInfo(this, JCCWebCommon.getScreenId(this), dataMap);
//
//		// モーダル用反映画面へ画面遷移
//		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
//		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);
//		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_NAME_CCW00105);
//
//		// DataBeanログ出力
//		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
//
//		return true;
		// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END
	}
	
	// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
	/**
	 * <dd>メソッド名：一覧検索処理
	 * <dd>メソッド説明：一覧検索を行う。
	 * <dd>備考：なし。
	 * @param bean サービスフォームBean
	 * @param hradsiSbt 払出種別
	 * @param pageReset ページングのリセット
	 * @param isInit 初期処理かどうか
	 * @throws Exception 例外
	 */
//	private void searchList(X31SDataBeanAccess bean, String hradsiSbt, boolean pageReset) throws Exception 
	private void searchList(X31SDataBeanAccess bean, String hradsiSbt, boolean pageReset, boolean isInit) throws Exception
	// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END
	{
		// 予約電話番号情報リストをクリア
		bean.getDataBeanArray(KKW00201SFConst.RSY_TELNO_INF_LIST).clearArray();

		// -----------サービス呼出処理-----------
		HashMap<String, Object> paramMap  = null;
		HashMap<String, Object> inputMap  = null;
		HashMap<String, Object> outputMap = null;

		X31SDataBeanAccess[] paramBean = {bean};

		paramMap  = new HashMap<String, Object>();	// パラメタ設定用マップ
		inputMap  = new HashMap<String, Object>();	// 入力情報格納用マップ
		outputMap = new HashMap<String, Object>();	// 結果格納用マップ

		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0089);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0089OP);

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0089_KKSV0089OPDBMapper mapper = new KKSV0089_KKSV0089OPDBMapper();
		// 20140918 OM-2014-0000770 Add Start
		if (JKKCommonConst.HRADSI_SBT_CD_01.equals(hradsiSbt)) {
			// 通常払出の場合、機能コード＝「3」で実行する
			mapper.setKKSV008901SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3);
		} else {
		// 20140918 OM-2014-0000770 Add End
			
			mapper.setKKSV008901SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
		// 20140918 OM-2014-0000770 Add Start
		}
		// 20140918 OM-2014-0000770 Add End
		
		//ページ番号のリセット
		if(pageReset){
			JCCWebCommon.clearPageLinkInfo(this, "KKW00201");
		}

		// ページリンク情報の上りマッピング
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "KKSV008901SC", inputMap);

		// eo電話番号発番登録電話番号発番サービスを実施
		invokeService(paramMap, inputMap, outputMap);

		// 取得情報の下りマッピング
		mapper.getKKSV008901SC(paramBean, outputMap);

		// -----------サービスフォームBeanの補完処理-----------
		if (JKKCommonConst.HRADSI_SBT_CD_01.equals(hradsiSbt))
		{
			// ****************************************
			// 払出種別コードが通常払出の場合
			// ****************************************
			X31SDataBeanAccessArray rsyTelnoInfList = bean.getDataBeanArray(KKW00201SFConst.RSY_TELNO_INF_LIST);
			if (rsyTelnoInfList.getCount() > 0)
			{
				String hradsiTelNo = rsyTelnoInfList.getDataBean(0).sendMessageString(KKW00201SFConst.TELNO_03, X31CWebConst.DATABEAN_GET_VALUE);
				// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 START
				// 初期処理の場合
				if (isInit)
				{
					// 初期払出電話番号を設定
					bean.sendMessageString(KKW00201SFConst.INIT_HRADSI_TEL_NO, X31CWebConst.DATABEAN_SET_VALUE, hradsiTelNo);
				}
				else
				{
					// 払出電話番号を設定
					bean.sendMessageString(KKW00201SFConst.HRADSI_TEL_NO, X31CWebConst.DATABEAN_SET_VALUE, hradsiTelNo);
				}
				// OM-2013-0005037 通常払出で発番した電話番号がエイジング登録済のエラーになる 2013/12/11 END
				// 予約電話番号情報リストを初期化
				rsyTelnoInfList.clearArray();
			}
			// 20120524 ST2-2012-0000731 START
			else
			{
				JKKWebCommon.setMessageInfo(this, "EKB4330-KW");
				return;
			}
			// 20120524 ST2-2012-0000731 END
		}
		else
		{
			// ****************************************
			// 上記以外の場合
			// ****************************************

			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this, "0", "KKSV008901SC", outputMap);

			// 検索のコマンドIDを設定する。
			JCCWebCommon.setSearchCommand(this, "paging");

			X31SDataBeanAccessArray rsyTelnoInfList = bean.getDataBeanArray(KKW00201SFConst.RSY_TELNO_INF_LIST);
			// 20120524 ST2-2012-0000731 START
			if (rsyTelnoInfList.getCount() == 0)
			{
				JKKWebCommon.setMessageInfo(this, "EKB4330-KW");
				return;
			}
			// 20120524 ST2-2012-0000731 END

			for (int i = 0; i < rsyTelnoInfList.getCount(); i++)
			{
				X31SDataBeanAccess rsyTelnoInf = rsyTelnoInfList.getDataBean(i);

				if (i == 0)
				{
					// 払出電話番号を設定
					String hradsiTelNo = rsyTelnoInf.sendMessageString(KKW00201SFConst.TELNO_03, X31CWebConst.DATABEAN_GET_VALUE);
					bean.sendMessageString(KKW00201SFConst.HRADSI_TEL_NO, X31CWebConst.DATABEAN_SET_VALUE, hradsiTelNo);
					// 予約電話番号情報選択を設定
					bean.sendMessageString(KKW00201SFConst.RSY_TELNO_INF_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i));

					String updDtm = rsyTelnoInf.sendMessageString(KKW00201SFConst.UPD_DTM_03,X31CWebConst.DATABEAN_GET_VALUE);
					bean.sendMessageString(KKW00201SFConst.UPD_DTM, X31CWebConst.DATABEAN_SET_VALUE, updDtm);
				}

				// ++++++++++++++++++++++++++++++++++++
				// 払出種別コードが
				// 指定予約払出、引継予約払出の場合
				// ++++++++++++++++++++++++++++++++++++
				if (
						JKKCommonConst.HRADSI_SBT_CD_03.equals(hradsiSbt)
						|| JKKCommonConst.HRADSI_SBT_CD_04.equals(hradsiSbt)
				)
				{
					String hktgSysId    = bean.sendMessageString(KKW00201SFConst.SYSID,      X31CWebConst.DATABEAN_GET_VALUE);	// 引継SYSID
					String hktgSvcKeiNo = bean.sendMessageString(KKW00201SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);	// 引継サービス契約番号

					// 予約電話番号情報リストの予約ＳＹＳＩＤ、予約者サービス契約番号を設定
					rsyTelnoInf.sendMessageString(KKW00201SFConst.RSY_SYSID_03,           X31CWebConst.DATABEAN_SET_VALUE, hktgSysId);
					rsyTelnoInf.sendMessageString(KKW00201SFConst.YOYAKSHA_SVC_KEI_NO_03, X31CWebConst.DATABEAN_SET_VALUE, hktgSvcKeiNo);
				}

				// 選択時関数を設定
				//2012/10/17 UI残_No.718 UPD START
				rsyTelnoInf.sendMessageString(
						KKW00201SFConst.CHOICE_FUNC_03,
						X31CWebConst.DATABEAN_SET_VALUE,
						"setHradsiTelNo('"
						+ rsyTelnoInf.sendMessageString(KKW00201SFConst.TELNO_03,        X31CWebConst.DATABEAN_GET_VALUE) + "','"
						+ rsyTelnoInf.sendMessageString(KKW00201SFConst.UPD_DTM_03,      X31CWebConst.DATABEAN_GET_VALUE) + "','"
						+ rsyTelnoInf.sendMessageString(KKW00201SFConst.TELNO_RSV_NO_03, X31CWebConst.DATABEAN_GET_VALUE)
						+ "');"
				);
				//2012/10/17 UI残_No.718 UPD END
			}
		}
	}
	
	/**
	 * <dd>メソッド名：市外局番情報選択時関数設定処理
	 * <dd>メソッド説明：市外局番情報リストの選択時関数を設定する。
	 * <dd>備考：なし。
	 * @param bean サービスフォームBean
	 */
	private void setAreacdInfChoiceFunc(X31SDataBeanAccess bean)
	{

		int areacdInfChoice = Integer.parseInt(bean.sendMessageString(KKW00201SFConst.AREACD_INF_CHOICE, X31CWebConst.DATABEAN_GET_VALUE));
		X31SDataBeanAccessArray areacdInfList = bean.getDataBeanArray(KKW00201SFConst.AREACD_INF_LIST);
		for (int i = 0; i < areacdInfList.getCount(); i++)
		{
			X31SDataBeanAccess areacdInf = areacdInfList.getDataBean(i);
			// 選択時関数を設定
			if (areacdInfChoice == i)
			{
				areacdInf.sendMessageString(KKW00201SFConst.CHOICE_FUNC_01, X31CWebConst.DATABEAN_SET_VALUE, "clearHradsiTelNo(false);");
			}
			else
			{
				areacdInf.sendMessageString(KKW00201SFConst.CHOICE_FUNC_01, X31CWebConst.DATABEAN_SET_VALUE, "clearHradsiTelNo(true);");
			}
		}
	}
	
	/**
	 * オブジェクトに値が設定されているか判定します。
	 * <br>
	 * @param arg0 判定するオブジェクト
	 * @return オブジェクトに値が設定されていない場合はtrue
	 */
	public static boolean isNull(Object arg0) 
	{
		if (arg0 == null) 
		{
			return true;
		}

		return 0 == arg0.toString().length();
	}

	private void delHradsiSbtList(HashMap<String, Object> outputMap, String mapKey)
	{
		// 下り情報マップから対象の情報を取得します
		HashMap<String, Object> parentMap = (HashMap)outputMap.get(mapKey);

		if(parentMap == null) 
		{
			// NULLの場合処理を終了します
			return ;
		}

		// Mapにコード名称管理一覧照会明細が含まれているか判定します
		// コード明細情報リストにコード名称管理一意照会明細を設定します
		ArrayList childList = (ArrayList)parentMap.get("EZM0171B010CBSMsg1List");
		// コード明細情報リストがNULLか、空か判定します
		if (childList == null || 0 == childList.size())
		{
			// NULL、空の場合処理を終了します
			return ;
		}

		// 返却用ArrayList
		ArrayList<HashMap<String, Object>> newChildList = new ArrayList<HashMap<String, Object>>();

		// コード明細情報リスト分コードリスト、コード名リストを取得します
		for (int i = 0; i < childList.size(); i++)
		{
			// コード明細情報リストをコード明細情報Mapに設定します
			HashMap childMap = (HashMap)childList.get(i);

			// コード取得
			String cdDiv = (String)childMap.get("cd_div");

			// 「指定予約払出」「引継予約払出」以外を格納する
			if (
					!(
							JKKCommonConst.HRADSI_SBT_CD_03.equals(cdDiv)
							|| JKKCommonConst.HRADSI_SBT_CD_04.equals(cdDiv)
					)
			)
			{
				newChildList.add(childMap);
			}
		}

		// 作成したArrayListを格納する
		parentMap.put("EZM0171B010CBSMsg1List", newChildList);
	}
}
