/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JCHPageTransferUtil
 *	ソースファイル名：JCHPageTransferUtil.java
 *	作成者			：富士通
 *	日付			：2011年09月21日
 *＜機能概要＞
 *	共通で使用する画面遷移ユーティリティクラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/09/21	富士通		新規作成
 *	v5.00.00	2013/09/10	FJ)小野		【OM-2013-0001907】請求内訳の検索時の動作不具合につき、子画面クローズ時の制御を変更。
 *	v16.00.00	2015/06/26	FJ)西面		【ANK-2480-00-00】新電力対応
 *  v23.00.00   2015/11/09  FJ）寺園    ANK-2693-00-00 オーダリング案件（ＳＴＥＰ２）
 *  v23.00.01   2016/03/09  FJ）山口    【ANK-2715-00-00】料金系画面の改善
 *  v47.00.00   2019/12/13  FJ）麻生    【ANK-3716-00-00】SMAPS即時決済送信処理システム化
 *  v49.00.00   2020/04/06  FJ)西川     ANK-3785-00-00_解約後転居先情報の管理
 *  v52.00.00   2020/12/08  GDC)        【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
 *  v58.00.00   2022/10/13  FJ)謝       【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
 **********************************************************************/
package eo.web.webview.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JACStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;

/**
 * <p>
 * 画面遷移ユーティリティクラスです。
 * </p>
 * 
 * @author 富士通
 */
public class JCHPageTransferUtil
{

	/** 請求契約番号 */
	private static final String SEIKY_KEI_NO = "請求契約番号";

	/** サービス契約番号 */
	private static final String SVC_KEI_NO = "サービス契約番号";

	/** 次画面ＩＤ */
	public static final String NEXT_SCREEN_ID = "次画面ＩＤ";

	/** 次画面名称 */
	public static final String NEXT_SCREEN_NM = "次画面名称";

	/** ＫＥＹ＿請求契約番号 */
	private static final String KEY_SEIKY_KEI_NO = "ＫＥＹ＿請求契約番号";

	/**
	 * TODO 画面遷移ガイドライン対応完了時にメソッドを削除
	 * 
	 * 指定された画面IDに遷移します。（子画面用） <br>
	 * 
	 * @param bl Viewロジックインスタンス
	 * @param HikitugiList 引継情報
	 * @param nextScreenId 遷移先の画面ID
	 * @param nextScreenNm 遷移先の画面名称
	 * @param prevScreenId 遷移元の画面ID
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public static final boolean screenTransfer(JCCWebBusinessLogic bl, List<String> HikitugiList, String nextScreenId, String nextScreenNm, String prevScreenId)
			throws Exception
	{

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = bl.getServiceFormBean();

		// 引継情報の作成
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// 配列に設定されている項目名をMapに設定
		for (int i = 0; i < HikitugiList.size(); i++)
		{
			dataMap.put(HikitugiList.get(i), bean.sendMessageString(HikitugiList.get(i), X31CWebConst.DATABEAN_GET_VALUE));
		}

		// 引継情報の設定
		JCCWebCommon.setScreenInfo(bl, nextScreenId, dataMap);

		// 戻る際に必要な情報の設定
		JCCWebCommon.setScreenId(bl, nextScreenId, prevScreenId);

		// 遷移先画面の設定
		X31SDataBeanAccess commoninfoBean = bl.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenNm);

		return true;
	}

	/**
	 * 次画面引継ぎ情報・自画面戻り遷移情報を設定し、マップの返却を行う。<br>
	 * 
	 * @param List 引継情報リスト
	 * @param List 戻り遷移用検索条件リスト
	 * @param String 自画面ID
	 * @param String 遷移先画面ID
	 * @param String 遷移先の確認画面ID
	 * @return HashMap 画面遷移情報マップ
	 */
	public static HashMap<String, Object> createScreenTransferMap(List<String> dataHikitugiList, List<String> searchConditionList,
			String prevScreenId, String nextScreenId, String nextCfmScreenId)
	{
		HashMap<String, Object> screenTransferMap = new HashMap<String, Object>();

		screenTransferMap.put("dataHikitugiList", dataHikitugiList);		// 引継情報リスト
		screenTransferMap.put("searchConditionList", searchConditionList);	// 戻り遷移用検索条件リスト
		screenTransferMap.put("prevScreenId", prevScreenId);				// 遷移前画面ID
		screenTransferMap.put("nextScreenId", nextScreenId);				// 遷移先画面ID
		screenTransferMap.put("nextCfmScreenId", nextCfmScreenId);			// 遷移先の確認画面ID

		return screenTransferMap;
	}
	
	/**
	 * 引数パラメータより次画面引継ぎ情報・自画面戻り遷移情報を設定し、指定された画面IDに遷移します。<br>
	 * 
	 * @param bl Viewロジックインスタンス
	 * @param screenTransferMap 画面遷移情報マップ<br>
	 * 　　dataHikitugiList 引継情報リスト,<br>
	 * 　　searchConditionList 戻り遷移情報リスト,<br>
	 * 　　nextScreenId 遷移先画面ID,<br>
	 * 　　nextCfmScreenId 遷移先の確認画面ID,<br>
	 * 　　prevScreenId 遷移前画面ID<br>
	 * @param dataHikitugiMap 次画面引継用マップ<br>
	 * @param searchConditionMap 自画面戻り遷移用マップ<br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public static final boolean screenTransfer(JCCWebBusinessLogic bl, HashMap<String, Object> screenTransferMap,
			HashMap<String, Object> dataHikitugiMap, HashMap<String, Object> searchConditionMap) throws Exception
	{
		// 画面遷移情報の取出し
		List<String> dataHikitugiList = (List<String>)screenTransferMap.get("dataHikitugiList");		// 引継情報リスト
		List<String> searchConditionList = (List<String>)screenTransferMap.get("searchConditionList");	// 戻り遷移用検索条件リスト
		String nextScreenId = (String)screenTransferMap.get("nextScreenId");							// 遷移先画面ID
		String nextCfmScreenId = (String)screenTransferMap.get("nextCfmScreenId");						// 遷移先の確認画面ID
		String prevScreenId = (String)screenTransferMap.get("prevScreenId");							// 遷移前画面ID

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = bl.getServiceFormBean();

		// 引継情報の作成
		if(null == dataHikitugiMap)
		{
			dataHikitugiMap = new HashMap<String, Object>();
		}

		// 配列に設定されている項目名を引継用Mapに設定
		if(null != dataHikitugiList)
		{
			for (int i = 0; i < dataHikitugiList.size(); i++)
			{
				dataHikitugiMap.put(dataHikitugiList.get(i), bean.sendMessageString(dataHikitugiList.get(i), X31CWebConst.DATABEAN_GET_VALUE));
			}
		}

		// 戻り遷移情報の作成
		if(null == searchConditionMap)
		{
			searchConditionMap = new HashMap<String, Object>();
		}

		// 配列に設定されている項目名を戻り用Mapに設定
		if(null != searchConditionList)
		{
			for (int i = 0; i < searchConditionList.size(); i++)
			{
				searchConditionMap.put(searchConditionList.get(i), bean.sendMessageString(searchConditionList.get(i), X31CWebConst.DATABEAN_GET_VALUE));
			}
		}

		// 引継情報の設定
		JCCWebCommon.setScreenInfo(bl, nextScreenId, dataHikitugiMap);
		// 戻り遷移情報の設定
		if(null != searchConditionMap && searchConditionMap.size() > 0)
		{
			JCCWebCommon.setScreenInfo(bl, prevScreenId, searchConditionMap);
		}

		// 戻る際に必要な情報の設定
		JCCWebCommon.setScreenId(bl, nextScreenId, prevScreenId);
		// 完了遷移時に必要な情報の設定
		if(JCHWebCommon.isNotNullOrEmpty(nextCfmScreenId))
		{
			JCCWebCommon.setScreenId(bl, nextCfmScreenId, prevScreenId);
		}

		// 次画面名称を取得
		String nextScreenNm = getScreenNm(nextScreenId);

		// 遷移先画面の設定
		X31SDataBeanAccess commoninfoBean = bl.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenNm);

		return true;
	}

	/**
	 * 指定された画面IDに遷移します。（タブ画面用） <br>
	 * 
	 * @param bl Viewロジックインスタンス
	 * @param nextScreenId 遷移先の画面ID
	 * @param nextScreenNm 遷移先の画面名称
	 * @param prevScreenId 遷移元の画面ID
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public static final boolean tabTransfer(JCCWebBusinessLogic bl, String nextScreenId, String nextScreenNm, String prevScreenId)
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = bl.getServiceFormBean();

		// 引継情報の作成
		HashMap<String, Object> dataHikitugiMap = new HashMap<String, Object>();
		dataHikitugiMap.put(SEIKY_KEI_NO, bean.sendMessageString(SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
// ▼▼ ANK-2693-00-00 オーダリング案件（STEP2） ADD START ▼▼
		dataHikitugiMap.put(JCHCommonConst.SYSCD, bean.sendMessageString(JCHCommonConst.SYSCD, X31CWebConst.DATABEAN_GET_VALUE));
// ▲▲ ANK-2693-00-00 オーダリング案件（STEP2） ADD  END ▲▲
// ANK-2715-00-00 ADD START
		dataHikitugiMap.put(JCHCommonConst.PRC_TAB_SENI_MOTO_SCREEN_ID, bean.sendMessageString(JCHCommonConst.PRC_TAB_SENI_MOTO_SCREEN_ID
				, X31CWebConst.DATABEAN_GET_VALUE));
// ANK-2715-00-00 ADD END

		HashMap<String, Object> searchConditionMap = new HashMap<String, Object>();
		searchConditionMap.put(SEIKY_KEI_NO, bean.sendMessageString(SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
// ▼▼ ANK-2693-00-00 オーダリング案件（STEP2） ADD START ▼▼
		searchConditionMap.put(JCHCommonConst.SYSCD, bean.sendMessageString(JCHCommonConst.SYSCD, X31CWebConst.DATABEAN_GET_VALUE));
// ▲▲ ANK-2693-00-00 オーダリング案件（STEP2） ADD  END ▲▲
// ANK-2715-00-00 ADD START
		searchConditionMap.put(JCHCommonConst.PRC_TAB_SENI_MOTO_SCREEN_ID, bean.sendMessageString(JCHCommonConst.PRC_TAB_SENI_MOTO_SCREEN_ID
				, X31CWebConst.DATABEAN_GET_VALUE));
// ANK-2715-00-00 ADD END

		// 引継情報の設定
		JCCWebCommon.setScreenInfo(bl, nextScreenId, dataHikitugiMap);
		JCCWebCommon.setScreenInfo(bl, prevScreenId, searchConditionMap);

		// 戻る際に必要な情報の設定
		JCCWebCommon.setScreenInfo(bl, nextScreenId, dataHikitugiMap);
		JCCWebCommon.setScreenId(bl, nextScreenId, prevScreenId);

		// 遷移先画面の設定
		X31SDataBeanAccess commoninfoBean = bl.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenNm);

		return true;
	}

	/**
	 * TODO 画面遷移ガイドライン対応完了時にメソッドを削除
	 * 
	 * モーダル反映画面に遷移して画面を閉じます。（子画面閉じるボタン押下用） <br>
	 * 
	 * @param bl Viewロジックインスタンス
	 * @param HikitugiList 引継情報
	 * @param nextScreenId 遷移先の画面ID
	 * @param nextScreenNm 遷移先の画面名
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public static final boolean closeTransfer(JCCWebBusinessLogic bl, List<String> HikitugiList, String nextScreenId, String nextScreenNm)
	{

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = bl.getServiceFormBean();

		// 引継情報の作成
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// 配列に設定されている項目名をMapに設定
		for (int i = 0; i < HikitugiList.size(); i++)
		{
			dataMap.put(HikitugiList.get(i), bean.sendMessageString(HikitugiList.get(i), X31CWebConst.DATABEAN_GET_VALUE));
		}

		// 引継情報の設定
		JCCWebCommon.setScreenInfo(bl, nextScreenId, dataMap);

		// 複数の画面から呼ばれてる場合
		if (JCHWebCommon.isNullOrEmpty(nextScreenNm))
		{
			nextScreenNm = getScreenNm(nextScreenId);
		}

		// 遷移先画面の設定
		X31SDataBeanAccess commoninfoBean = bl.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, nextScreenNm);

		return true;
	}

	/**
	 * モーダル反映画面に遷移して画面を閉じます。<br>
	 * openModeが指定なしの場合、openMode を null として
	 * closeTransfer(JCCWebBusinessLogic bl, String nextScreenId, String openMode)をコールする。
	 * 
	 * @param bl Viewロジックインスタンス
	 * @param nextScreenId 遷移先の画面ID
	 * @param openMode 自画面（子画面）が開かれているモード
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public static final boolean closeTransfer(JCCWebBusinessLogic bl, String nextScreenId)
	{
		return closeTransfer(bl, nextScreenId, null);
	}

	/**
	 * モーダル反映画面またはモーダレス反映画面に遷移して画面を閉じます。<br>
	 * 
	 * @param bl Viewロジックインスタンス
	 * @param nextScreenId 遷移先の画面ID
	 * @param openMode 自画面（子画面）が開かれているモード
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	protected static boolean closeTransfer(JCCWebBusinessLogic bl, String nextScreenId, String openMode)
	{
		// 画面IDに紐付く画面名称を取得
		String nextScreenNm = getScreenNm(nextScreenId);

		// 子画面反映画面ID
		String nextCCWScreenId = "";

		// オープンモード指定なしの場合、モーダルで起動
		if (openMode == null)
		{
			nextCCWScreenId = JCCScreenConst.SCREEN_ID_CCW00105;
		}
		else if (JACStrConst.OPEN_MODE_MODALESS.equals(openMode))
		{
			nextCCWScreenId = JCCScreenConst.SCREEN_ID_CCW00104;
		}
		else
		{
			nextCCWScreenId = JCCScreenConst.SCREEN_ID_CCW00105;
		}

		// 遷移先画面の設定
		X31SDataBeanAccess commoninfoBean = bl.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextCCWScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenNm);

		return true;
	}

	/**
	 * 遷移元画面への戻り遷移を行います。（戻るボタン押下用） <br>
	 * 
	 * @param bl Viewロジックインスタンス
	 * @param nextScreenId 遷移先の画面ID
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public static final boolean backTransfer(JCCWebBusinessLogic bl, String nextScreenId)
	{
		// 画面IDに紐付く画面名称を取得
		String nextScreenNm = getScreenNm(nextScreenId);

		// 遷移先画面の設定
		X31SDataBeanAccess commoninfoBean = bl.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenNm);

		return true;
	}

	/**
	 * 割賦契約情報更新画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public static boolean keiKapTransfer(JCCWebBusinessLogic bl, String prevScreenId) throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = bl.getServiceFormBean();

		// 引継情報の作成(遷移先画面IDの取得)
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		String nextScreenId = JACScreenConst.SCREEN_ID_KKW15501;
		String nextScreenName = JACScreenConst.SCREEN_NAME_KKW15501;

		// 割賦契約情報更新画面への引き継ぎ用データマップ格納処理
		// 請求契約番号
		dataMap.put(KEY_SEIKY_KEI_NO, bean.sendMessageString(SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 引継情報の設定
		JCCWebCommon.setScreenInfo(bl, nextScreenId, dataMap);

		// 戻り遷移情報の設定
		HashMap<String, Object> searchConditionMap = new HashMap<String, Object>();
		searchConditionMap.put(SEIKY_KEI_NO, bean.sendMessageString(SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		JCCWebCommon.setScreenInfo(bl, prevScreenId, searchConditionMap);

		// 戻る際に必要な情報の設定
		JCCWebCommon.setScreenId(bl, nextScreenId, prevScreenId);

		// 遷移先画面の設定
		X31SDataBeanAccess commoninfoBean = bl.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);

		return true;
	}

	/**
	 * 【請求契約ボタン押下時の処理】 請求契約更新画面に遷移します。 <br>
	 * 
	 * @param bl Viewロジックインスタンス
	 * @param nextScreenId 遷移先の画面ID
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public static boolean seikyKeiTransfer(JCCWebBusinessLogic bl, String prevScreenId) throws Exception
	{

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = bl.getServiceFormBean();

		/* TODO : サービス番号の取得実装は、IT2向けの暫定措置です */
		// 引継情報の作成
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		String next_ID = JACScreenConst.SCREEN_ID_KKW01601;
		String next_NM = JACScreenConst.SCREEN_NAME_KKW01601;

		dataMap.put(SEIKY_KEI_NO, bean.sendMessageString(SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
// ANK-3846-00-00 ADD START
		dataMap.put("prev_screen_id", prevScreenId);
// ANK-3846-00-00 ADD END

		// 引継情報の設定
		JCCWebCommon.setScreenInfo(bl, next_ID, dataMap);

		// 戻り遷移情報の設定
		HashMap<String, Object> searchConditionMap = new HashMap<String, Object>();
		searchConditionMap.put(SEIKY_KEI_NO, bean.sendMessageString(SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		JCCWebCommon.setScreenInfo(bl, prevScreenId, searchConditionMap);

		// 遷移先画面の設定
		X31SDataBeanAccess commoninfoBean = bl.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, next_ID);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, next_NM);

		return true;
	}

	/**
	 * 契約S画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public static boolean keiTransfer(JCCWebBusinessLogic bl, String prevScreenId) throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = bl.getServiceFormBean();

		// 引継情報の作成(遷移先画面IDの取得)
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		String nextScreenId = JCHCommonServiceUtil.getMoveToKeiSysScreen(bl, dataMap);
		String nextScreenName = JACStrConst.KARA_MOJI;

		// 対象の画面名称を取得
		nextScreenName = getScreenNm(nextScreenId);

		// 契約Ｓ引き継ぎ用データマップ格納処理
		dataMap = setKeiHktgiDataMap(dataMap);

		HashMap<String, Object> returnDataMap = (HashMap<String, Object>) dataMap.clone();

		// 引継情報の設定
		JCCWebCommon.setScreenInfo(bl, nextScreenId, dataMap);
		JCCWebCommon.setScreenInfo(bl, prevScreenId, returnDataMap);

		// 戻り遷移情報の設定
		HashMap<String, Object> searchConditionMap = new HashMap<String, Object>();
		searchConditionMap.put(SEIKY_KEI_NO, bean.sendMessageString(SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		JCCWebCommon.setScreenInfo(bl, prevScreenId, searchConditionMap);

		// 戻る際に必要な情報の設定
		JCCWebCommon.setScreenId(bl, nextScreenId, prevScreenId);

		// 遷移先画面の設定
		X31SDataBeanAccess commoninfoBean = bl.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);

		return true;
	}

	/**
	 * 対応履歴画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public static boolean taioRirekiTransfer(JCCWebBusinessLogic bl, String prevScreenId) throws Exception
	{

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = bl.getServiceFormBean();

		// 引継情報の作成(サービス契約番号の取得)
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		ArrayList<HashMap<String, Object>> svcKeiIcrnInfo = JCHCommonServiceUtil.getSvcKeiNoMoveToOtherSys(bl, paramBeans);

		String next_ID = JACStrConst.KARA_MOJI;
		String next_NM = JACStrConst.KARA_MOJI;

		if (1 < svcKeiIcrnInfo.size())
		{
			// サービスフォームBeanのアクセサを配列化する
			dataMap.put(NEXT_SCREEN_ID, JACScreenConst.SCREEN_ID_CRW01201);
			dataMap.put(NEXT_SCREEN_NM, JACScreenConst.SCREEN_NAME_CRW01201);
			next_ID = JACScreenConst.SCREEN_ID_CHW01901;
			next_NM = JACScreenConst.SCREEN_NAME_CHW01901;

		}
		else
		{
			next_ID = JACScreenConst.SCREEN_ID_CRW01201;
			next_NM = JACScreenConst.SCREEN_NAME_CRW01201;

			String svcKeiNo = JACStrConst.KARA_MOJI;

			if (0 < svcKeiIcrnInfo.size())
			{
				HashMap<String, Object> childMap = (HashMap<String, Object>) svcKeiIcrnInfo.get(0);
				svcKeiNo = (String) childMap.get("svc_kei_no");
			}

			dataMap.put(SVC_KEI_NO, svcKeiNo);
			// 遷移区分 ← "0"(画面遷移)
			dataMap.put(JKKCommonConst.HKTGI_POPUP_MODE, "0");
			// 異動区分 ← ""(空文字)
			dataMap.put(JKKCommonConst.HKTGI_IDO_DIV, JACStrConst.KARA_MOJI);
			// 異動理由コード ← ""(空文字)
			dataMap.put(JKKCommonConst.HKTGI_IDO_RSN_CD, new String[] { JACStrConst.KARA_MOJI });
		}

		dataMap.put(SEIKY_KEI_NO, bean.sendMessageString(SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 引継情報の設定
		JCCWebCommon.setScreenInfo(bl, next_ID, dataMap);

		// 戻り遷移情報の設定
		HashMap<String, Object> searchConditionMap = new HashMap<String, Object>();
		searchConditionMap.put(SEIKY_KEI_NO, bean.sendMessageString(SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		JCCWebCommon.setScreenInfo(bl, prevScreenId, searchConditionMap);

		// 戻る際に必要な情報の設定
		JCCWebCommon.setScreenId(bl, next_ID, prevScreenId);

		// 遷移先画面の設定
		X31SDataBeanAccess commoninfoBean = bl.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, next_ID);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, next_NM);

		return true;
	}

	/**
	 * 指定された画面IDと一致する画面名称を取得します。
	 * 
	 * @param screenId 画面ID
	 * @return 画面名称
	 */
	public static String getScreenNm(String screenId)
	{
		String screenNm = null;

		// 一時金一覧
		if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00101))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00101;
		}
		// 一時金登録
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00102))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00102;
		}
		// 一時金登録確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00103))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00103;
		}
		// 一時金更新
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00104))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00104;
		}
		// 一時金更新確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00105))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00105;
		}
		// 一時金削除
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00106))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00106;
		}
		// 一時金削除確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00107))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00107;
		}
		// NHK視聴課金取込
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00201))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00201;
		}
		// NHK視聴課金取込確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00202))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00202;
		}
		// 通話明細照会
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00601))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00601;
		}
		// 通話明細再発行
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00602))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00602;
		}
		// 通話明細再発行確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00603))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00603;
		}
		// eoモバイルパケット照会
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW00801))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW00801;
		}
		// モバイル事業者間精算照会
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW01201))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW01201;
		}
		// コンテンツ事業者間精算照会
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW01301))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW01301;
		}
		// FTTH通信量一覧
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW01401))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW01401;
		}
		// FTTH通信量登録
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW01402))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW01402;
		}
		// FTTH通信量登録確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW01403))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW01403;
		}
		// FTTH通信量更新
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW01404))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW01404;
		}
		// FTTH通信量更新確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_ACW01405))
		{
			screenNm = JACScreenConst.SCREEN_NAME_ACW01405;
		}
		// 債権管理
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00101))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00101;
		}
		// 債権詳細照会
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00102))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00102;
		}
		// 入金取消確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00103))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00103;
		}
		// 請求一覧
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00104))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00104;
		}
		// 請求内訳
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00105))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00105;
		}
		// 請求書再発行
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00106))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00106;
		}
		// 請求書再発行確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00107))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00107;
		}
		// 請求詳細照会
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00108))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00108;
		}
		// 請求内訳再発行
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00109))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00109;
		}
		// 請求内訳再発行確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00110))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00110;
		}
		// 料金調整
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00201))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00201;
		}
		// 料金調整確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00202))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00202;
		}
		// 料金変更
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00301))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00301;
		}
		// 料金変更確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00302))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00302;
		}
		// 請求書引抜き一覧照会
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00401))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00401;
		}
		// 請求書引抜き登録
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00501))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00501;
		}
		// 請求書引抜き登録確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00502))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00502;
		}
		// 請求書引抜き解除
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00503))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00503;
		}
		// 請求書引抜き解除確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00504))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00504;
		}
		// 入金一覧
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00601))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00601;
		}
		// 入金詳細照会
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00701))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00701;
		}
		// 入金登録
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00801))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00801;
		}
		// 入金登録確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00802))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00802;
		}
		// 随時請求登録
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00901))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00901;
		}
		// 随時請求登録確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00902))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00902;
		}
		// 随時入金登録
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01001))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01001;
		}
		// 随時入金登録確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01002))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01002;
		}
		// 金庫管理
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01101))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01101;
		}
		// 金庫登録
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01102))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01102;
		}
		// 金庫登録確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01103))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01103;
		}
		// 金庫移動登録
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01104))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01104;
		}
		// 金庫移動登録確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01105))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01105;
		}
		// 金庫取消
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01106))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01106;
		}
		// 金庫取消確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01107))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01107;
		}
		// 金庫詳細照会
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01108))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01108;
		}
		// 金庫一覧
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01109))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01109;
		}
		// 金庫統合登録
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01110))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01110;
		}
		// 金庫統合登録確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01111))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01111;
		}
		// 督促管理
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01301))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01301;
		}
		// 督促状況更新
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01302))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01302;
		}
		// 督促状況更新確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01303))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01303;
		}
		// 記事登録
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01304))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01304;
		}
		// 記事登録確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01305))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01305;
		}
		// 支払証明書発行
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01701))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01701;
		}
		// 支払証明書発行確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01702))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01702;
		}
		// 料金訂正一覧
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01801))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01801;
		}
		// サービス契約選択
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW01901))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW01901;
		}
		// 入金取消
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW02001))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW02001;
		}
		// 入金取消確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW02002))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW02002;
		}
		// 請求書分割発行
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW02201))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW02201;
		}
		// 請求書分割発行
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW02202))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW02202;
		}
		// 解約後転居先（督促）情報登録
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW02501))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW02501;
		}
		// 解約後転居先（督促）情報登録確認
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW02502))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW02502;
		}
		// 請求契約更新
		else if (screenId.equals(JACScreenConst.SCREEN_ID_KKW01601))
		{
			screenNm = JACScreenConst.SCREEN_NAME_KKW01601;
		}
		// お客様一覧照会画面
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CKW00101))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CKW00101;
		}
		// サービス契約一覧照会画面
		else if (screenId.equals(JACScreenConst.SCREEN_ID_KKW01101))
		{
			screenNm = JACScreenConst.SCREEN_NAME_KKW01101;
		}
		// サービス契約情報更新（eo光ネット）画面
		else if (screenId.equals(JACScreenConst.SCREEN_ID_KKW00128))
		{
			screenNm = JACScreenConst.SCREEN_NAME_KKW00128;
		}
		// サービス契約情報更新（ｅｏADSL）
		else if (screenId.equals(JKKScreenConst.SCREEN_ID_KKW00132))
		{
			screenNm = JKKScreenConst.SCREEN_NAME_KKW00132;
		}
		// マンション契約一覧照会
		else if (screenId.equals(JKKScreenConst.SCREEN_ID_KKW12503))
		{
			screenNm = JKKScreenConst.SCREEN_NAME_KKW12503;
		}
		// マンション契約情報照会
		else if (screenId.equals(JKKScreenConst.SCREEN_ID_KKW12504))
		{
			screenNm = JKKScreenConst.SCREEN_NAME_KKW12504;
		}
		// 問合せ対応メイン
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CRW01201))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CRW01201;
		}
//v16.00.00 2015/06/26 Add Start
		// サービス契約情報更新（ｅｏ電気）
		else if (screenId.equals(JKKScreenConst.SCREEN_ID_KKW00195))
		{
			screenNm = JKKScreenConst.SCREEN_NAME_KKW00195;
		}
//v16.00.00 2015/06/26 Add End
		// ANK-3716-00-00 ADD START
		// 
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00111))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00111;
		}
		// 
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00112))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00112;
		}
		// 
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00113))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW00113;
		}
		// ANK-3716-00-00 ADD START

		// ANK-3838-00-00 ADD START
		// パーフェクト口座情報登録更新画面
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW02601))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW02601;
		}
		// パーフェクト口座情報登録更新確認画面
		else if (screenId.equals(JACScreenConst.SCREEN_ID_CHW02602))
		{
			screenNm = JACScreenConst.SCREEN_NAME_CHW02602;
		}
		// ANK-3838-00-00 ADD END
		
		return screenNm;
	}

	/**
	 * 契約Ｓ引き継ぎ用データマップ格納処理
	 * 
	 * @param inMap 引き継ぎ用のデータマップ
	 * @return 受け渡し用HashMap
	 */
	private static HashMap<String, Object> setKeiHktgiDataMap(HashMap<String, Object> inMap)
	{
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();

		list.add(inMap);
		dataMap.put(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, list);

		return dataMap;
	}

}
