/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：KKW02701SFLogic
*	ソースファイル名	：KKW02701SFLogic.java
*	作成者				：富士通　
*	作成日				：2011年11月04日
*＜機能概要＞
*　コース履歴のビューロジックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/04	FJ）庭山	新規作成
*	v4.00.00	2012/12/11	FJ）庭山	【IT1-2012-0002310】対応
*	v4.01.00    2012/12/21	FJ）野口	【IT1-2012-0002486】対応
*	v5.00.00    2013/1/22	FJ）辛  	【ANK-1270-00-00】1ギガコースその他価格改定対応
*	v4.02.00	2013/02/08	FJ）野口	【ST2-2013-0000455】対応
*	v4.03.00	2013/04/19	FJ）古田	【IT2-2013-0000393】対応
*   v5.00.01	2013/10/31	FJ) 稲岡	【OM-2013-0003452】
*	v5.00.02	2013/11/07	FJ）稲岡	【OM-2013-0003593】
*	v7.00.00	2014/02/22	FJ）稲岡	【OM-2014-0000635】
*	v8.00.00	2014/05/03	FJ）稲岡	【OM-2014-0000808】
*	v9.00.00	2014/08/18	FJ) 田中	【OM-2014-0002633】対応
*	v19.00.00	2015/10/29	FJ) 清水	【OM-2015-0002629】対応 "一時金取消確認"実行時の呼出サービスIFの変更に伴う修正
*	v19.00.01	2015/11/03	FJ) 清水	【OM-2015-0002629】対応 一部再修正
*   v23.00.00   2016/02/22  FJ) 澤田    【IT2-2016-0000004】電話申込が存在してネットのキャンセルを行ったら工事案件が取り消さない
*   v23.01.00	2016/05/10  FJ) 阮		【OM-2016-0000943】対応
*   v25.00.00	2016/07/07  FJ) 森脇	【OM-2016-0001061】対応
*   v26.00.00	2016/07/29  FJ) 原田	【ANK-2765-00-00】認証IDの統一化
*   v40.00.00	2018/11/09  FJ) 舘山    【ANK-3412-00-00】５ギガ・１０ギガコース導入対応
*   v41.00.00	2019/02/27	FJ) 舘山	【ANK-3412-14-00】多機能ルータ交換チェックの追加
*   v51.00.00	2020/10/20	FJ) 吉村	【ANK-3949-00-00】Netflix導入対応（STEP1）
*   v51.00.01	2020/11/02	FJ) 西窪	【ANK-3949-00-00】Netflix導入対応（STEP1）
*	v52.00.00	2021/01/26	FJ) 三原	【ANK-3987-00-00】Netflix導入対応(STEP2)
*	v60.00.00   2022/07/26  FJ) 西窪    【ANK-4287-00-00】【eo定期】機器オプションの予約機能対応
*	v71.00.00	2023/12/28	FJ) 森下	【ANK-4468-00-00】eo光ネット「シンプルプラン」追加対応
*	v71.00.00	2024/06/05	GDC)ml.alcantara	【ANK-4567-00-00】瑕疵外障害改修対応
*	v73.00.00	2024/10/30	FJ) 森      【ANK-4493-00-00】【eo定期】 光配線マンションのコースアップ対応
*	v74.00.00	2025/01/07	FJ) 森下	【ANK-4592-00-00】テレビ新コース（スカパー用）導入対応
*********************************************************************/
package eo.web.webview.KKW02701SF;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x31.X31SRuntimeException;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCDateChecker;
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.JCKScreenConst;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0394_KKSV0394OPDBMapper;
import eo.web.webview.mapping.KKSV0395_KKSV0395OPDBMapper;
import eo.web.webview.mapping.KKSV0396_KKSV0396OPDBMapper;

/**
* KKW02701のビューロジックです。 <p>
*<BR>
* @author 富士通
*/
@SuppressWarnings("serial")
public class KKW02701SFLogic extends JCCWebBusinessLogic
{
	/**
	 * 顧客契約引継情報項目キー
	 */	
	private static final String[] CUST_KEI_HKTGI_KEYS = {
		JKKCommonConst.HKTGI_SYSID,
		JKKCommonConst.HKTGI_SVC_KEI_NO,
		JKKCommonConst.HKTGI_IDO_DIV,
		JKKCommonConst.HKTGI_IDO_RSN_CD,
/* ++++++++++ v4.01.00 追加開始 ++++++++++ */
		JKKCommonConst.HKTGI_IDO_RSN_MEMO,
/* ++++++++++ v4.01.00 追加終了 ++++++++++ */
		JKKCommonConst.HKTGI_OP_SVC_KEI_NO,
		JKKCommonConst.HKTGI_TRAN_DIV,
		JKKCommonConst.HKTGI_MSKM_NO,
		JKKCommonConst.HKTGI_MSKM_DTL_NO,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_NM,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_VALUE,
/* ++++++++++ v5.00.00 追加開始 ++++++++++ */		
		JKKCommonConst.HKTGI_SVC_CD,
		JKKCommonConst.HKTGI_PRC_GRP_CD,
		JKKCommonConst.HKTGI_PCRS_CD,
		JKKCommonConst.HKTGI_PPLAN_CD,
		JKKCommonConst.HKTGI_SVC_CD_BF,
		JKKCommonConst.HKTGI_PRC_GRP_CD_BF,
		JKKCommonConst.HKTGI_PCRS_CD_BF,
		JKKCommonConst.HKTGI_PPLAN_CD_BF,
		JKKCommonConst.HKTGI_WRIB_AUTO_APLY_TG_GAI_FLG,
/* ++++++++++ v5.00.00 追加終了 ++++++++++ */		
		JKKCommonConst.HKTGI_POPUP_MODE};
	
	/** 機器提供サービス契約ステータス（100：提供中） */
	private static final String KKTK_SVC_KEI_STAT_100 = "100";
	/** 宅内機器種別コード（L0：クレードル） */
	private static final String TAKNKIKI_SBT_CD_L0 = "L0";
	/** 料金コースコード（A47：マンションタイプ プライベート 100M VDSL1） */
	private static final String PCRS_CD_A47 = "A47";
	/** 料金コースコード（A48：マンションタイプ プライベート 100M VDSL2） */
	private static final String PCRS_CD_A48 = "A48";
	/** 料金コースコード（A49：マンションタイプ プライベート 100M イーサネット） */
	private static final String PCRS_CD_A49 = "A49";
	/** 料金コースコード（A50：マンションタイプ グローバル 100M VDSL2） */
	private static final String PCRS_CD_A50 = "A50";
	/** 料金コースコード（A51：マンションタイプ グローバル 100M VDSL3） */
	private static final String PCRS_CD_A51 = "A51";
	/** 料金コースコード（A52：マンションタイプ グローバル 100M VDSL4） */
	private static final String PCRS_CD_A52 = "A52";
	/** 料金コースコード（A53：マンションタイプ グローバル 100M VDSL5） */
	private static final String PCRS_CD_A53 = "A53";
	/** 料金コースコード（A54：マンションタイプ グローバル 100M イーサネット） */
	private static final String PCRS_CD_A54 = "A54";
	/** 料金コースコード（A55：マンションタイプ グローバル 1G イーサネット） */
	private static final String PCRS_CD_A55 = "A55";
	/** 料金コースコード（A56：マンションタイプ グローバル 光配線 100M） */
	private static final String PCRS_CD_A56 = "A56";
	/** 料金コースコード（A57：マンションタイプ グローバル 光配線 1G） */
	private static final String PCRS_CD_A57 = "A57";
	// v72.00.00 ANK-4493-00-00 ADD START
	/** 料金コースコード (eo光ネット・マンション　光配線 10G) */
	private static final String PCRS_CD_A74 = "A74";
	// v72.00.00 ANK-4493-00-00 ADD END
	/** 料金コースコード（A26：3G 7.2M 標準タイプ） */
	private static final String PCRS_CD_A26 = "A26";
	/** 料金コースコード（A59：3G 7.2M 光ハイブリッドタイプ） */
	private static final String PCRS_CD_A59 = "A59";
	// IT2-2016-0000004 2016/02/22 ADD START
	/** 料金コースコード（10ギガコース） */
	private static final String PCRS_CD_A83 = "A83";
	/** 料金コースコード（メゾンタイプ10ギガ） */
	private static final String PCRS_CD_A84 = "A84";
	// IT2-2016-0000004 2016/02/22 ADD END
// ▽▽▽ ANK-3412-00-00 ADD START
	/** 料金コースコード（5ギガコース） */
	private static final String PCRS_CD_A89 = "A89";
	/** 料金コースコード（メゾンタイプ5ギガコース） */
	private static final String PCRS_CD_A90 = "A90";	
// ▲▲▲ ANK-3412-00-00 ADD END
	//ANK-3949-00-00 ADD START
	/** 料金コースコード（5ギガコース Netflixプラン） */
	private static final String PCRS_CD_A93 = "A93";
	/** 料金コースコード（メゾンタイプ5ギガ Netflixプラン） */
	private static final String PCRS_CD_A94 = "A94";
	/** 料金コースコード（10ギガコース Netflixプラン） */
	private static final String PCRS_CD_A95 = "A95";
	/** 料金コースコード（メゾンタイプ10ギガ Netflixプラン） */
	private static final String PCRS_CD_A96 = "A96";
	//ANK-3949-00-00 ADD END
	//ANK-4468-00-00 ADD START
	/** 料金コースコード（A97:eo光シンプルプラン10ギガコース） */
	private static final String PCRS_CD_A97 = "A97";
	/** 料金コースコード（A99:eo光シンプルプラン10ギガコースNetflixパック） */
	private static final String PCRS_CD_A99 = "A99";
	//ANK-4468-00-00 ADD END
	/** ルーター速度種別コード（10：100M） */
	private static final String ROUTER_SPEED_SBT_CD_10 = "10";
	/** ルーター速度種別コード（20：1G） */
	private static final String ROUTER_SPEED_SBT_CD_20 = "20";
	
/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
	/** マンションフラグ：マンション以外） */
	private static final String MANSION_FLAG_0 = "0";
	/** 「コース変更手数料減額ＣＰ適用外」チェックボックス表示：1 */
	private static final String CP_DISP_FLG_1 = "1";
	/** 「割引自動適用対象外フラグ」：1 */
	private static final String WRIB_AUTO_APLY_TG_GAI_FLG_1 = "1";
	/** 「割引自動適用対象外フラグ」：0 */
	private static final String WRIB_AUTO_APLY_TG_GAI_FLG_0 = "0";
/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
	// OM-2016-0000943 ADD START
	/** 工事種別コード（009：プラン変更（収容替工事）） */
	private static final String KOJIAK_SBT_PLAN_CHANGE = "009";
	/** 工事案件ステータス（120：ダミー） */
	private static final String KOJIAK_STAT_120 = "120";
	/** 工事案件ステータス（130：受付済） */
	private static final String KOJIAK_STAT_130 = "130";
	/** 工事案件ステータス（200：工事完了） */
	private static final String KOJIAK_STAT_200 = "200";
	// OM-2016-0000943 ADD END

	/**
	 * 初期表示処理です。
	 * <br>
	 * @return boolean　処理の成否。
	 * @throws Throwable 業務サービス内で発生した例外全般。
	 */
	public boolean init() throws Throwable
	{
		// 引継情報の取得
		JCCWebCommon.getScreenInfo(this);
		
		// サービス呼び出し
		return searchCourseRk();
	}

	/**
	 * 予約取消確認ボタン押下処理です。
	 * <br>
	 * @return boolean　処理の成否。
	 * @throws Throwable 業務サービス内で発生した例外全般。
	 */
	public boolean forwardRsvClCfm() throws Throwable
	{
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		HashMap<String, String> paramMap = null;
		
		// 引継情報の取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// 運用年月日時分秒の設定
		svcFormBean.sendMessageString(KKW02701SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDateTimeStamp(this, null));
		// 運用年月日の設定
		svcFormBean.sendMessageString(KKW02701SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));
		
		// 上り項目の設定
		paramMap = setInMsg(svcFormBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		
		// サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// ANK-4287-00-00 ADD START
		HashMap<String, Object> kksv039552ccMap= (HashMap<String, Object>)outputMap.get("KKSV039552SC");
		if (kksv039552ccMap != null && kksv039552ccMap.containsKey("kikiOpRsvFlg"))
		{
			String kikiOpRsvFlg = (String) kksv039552ccMap.get("kikiOpRsvFlg");
			if("1".equals(kikiOpRsvFlg))
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF750_KW);
				return false;
			}
		}
		// ANK-4287-00-00 ADD END
		// ANK-4592-00-00 ADD START
		// 関連チェック（スカパー連携ステータスチェック）
		if (!isSptvStatCheckResult(outputMap, svcFormBean))
		{
			// エラーメッセージの設定
			setErrorInfo(JPCOnlineMessageConstant.EKBG220_JW, new String[] { "CAS番号連携依頼中", "予約", "取消" }, "");
			return false;
		}
		// 関連チェック（エラーコードチェック）
		if (!isErrCdCheckResult(outputMap, svcFormBean))
		{
			// エラーメッセージの設定
			setErrorInfo(JPCOnlineMessageConstant.EKB5440_JW, new String[] { "システムエラー", "対象の予約は取消" }, "");
			return false;
		}
		// 関連チェック（CSオプションチェック）
		if (!isCSOpCheckResult(outputMap, svcFormBean))
		{
			// エラーメッセージの設定
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBG200_KW);
			return false;
		}
		// ANK-4592-00-00 ADD END
		
		// エラー処理 
		if (null != msgResult)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
		
		String svcCd = svcFormBean.sendMessageString("サービスコード", X31CWebConst.DATABEAN_GET_VALUE);
		
/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
		// eo光ＴＶの場合
// OM-2016-0000943 MOD START
//		if (JKKCommonConst.SVC_CD_TV.equals(svcCd))
		if (JKKCommonConst.SVC_CD_TV.equals(svcCd) || JKKCommonConst.SVC_CD_NET.equals(svcCd))
// OM-2016-0000943 MOD END
		{
			// 工事有無フラグ
			String kojiUmFlg = svcFormBean.sendMessageString(KKW02701SFConst.KOJI_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			
			if(isNotBlank(kojiUmFlg))
			{
				// 工事有
				if(JKKCommonConst.UM_U.equals(kojiUmFlg))
				{
					// OM-2016-0000943 ADD START
					if (JKKCommonConst.SVC_CD_TV.equals(svcCd) )
					{
					// OM-2016-0000943 ADD END
					// 関連チェック（工事連携確認チェック）
					if(!isKojiRnkiCheckResult(outputMap))
					{
						// エラーメッセージの設定
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBA160_KW);
						return true;
					}
					// OM-2016-0000943 ADD START
					}
					else if (JKKCommonConst.SVC_CD_NET.equals(svcCd))
					{
						// 関連チェック（工事連携確認チェック）
						if(!isNetKojiRnkiCheckResult(outputMap))
						{
							// エラーメッセージの設定
							JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBA160_KW);
							return true;
						}
					}
					// OM-2016-0000943 ADD END
				}
			}
		}
/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
// OM-2015-0002629 2015/11/03 FJ) 清水 DEL START
//		// 関連チェック（一時金取消確認）
//		if (!isIcjkn(outputMap, "KKSV039527SC"))
//		{
//			// 警告メッセージの設定
//			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5960__Q);
//		}
// OM-2015-0002629 2015/11/03 FJ) 清水 DEL END
		
		
		String prcGrpCd = svcFormBean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_GET_VALUE);
		
		// eoモバイル3Gの場合
		if (JKKCommonConst.PRC_GRP_CD_08.equals(prcGrpCd))
		{
			// 関連チェック（コース変更連携済チェック）
			if(!isCouseRkRnkiCheckResult(outputMap))
			{
				// 警告メッセージの設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9460_KW);
			}
			
			// 関連チェック（クレードル機器存在チェック）
			if(!isKkSonzaiCheckResult(outputMap))
			{
				// 警告メッセージの設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9470_KW);
			}
		}
		// eo光ネットの場合
		else if (JKKCommonConst.SVC_CD_NET.equals(svcCd))
		{
			// 関連チェック（機器提供サービス提供中確認チェック）
			if(!isKktksvTkchuCheckResult(outputMap))
			{
				// 警告メッセージの設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5950__I);
			}
// OM-2015-0002629 2015/11/03 FJ) 清水 MOD START			
//			// 関連チェック（一時金取消確認チェック）
//			if (!isIcjknClCheckResult(outputMap))
//			{
			// 関連チェック（一時金取消確認）
			if (!isIcjkn(outputMap, "KKSV039527SC"))
			{
				// 警告メッセージの設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5960__Q);
			}
// OM-2015-0002629 2015/11/03 FJ) 清水 MOD END			
			// 関連チェック（ルータ速度確認チェック）
			if (!isRouterSpeedCheckResult(outputMap, svcFormBean))
			{
				// 警告メッセージの設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8820__Q);
			}
// ▽▽▽ ANK-3412-14-00 ADD START
			// 関連チェック（多機能ルータ交換チェック）
			if (!isFatRouterExchangeCheckResult(outputMap, svcFormBean))
			{
				// 警告メッセージの設定
				JCCWebCommon.setMessageInfo(this, "EKBF290--I");
			}
// ▲▲▲ ANK-3412-14-00 ADD END
		}
		else
		{
		}
		
		// コース履歴一覧の編集
		setCourseRk();
		
		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[]{"予約取消"});
		
		// 遷移先画面情報を設定します
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02702, JKKScreenConst.SCREEN_NAME_KKW02702);
		
		return true;
	}

	/**
	 * 戻るボタン押下処理です。
	 * <br>
	 * @return boolean　処理の成否。
	 * @throws Throwable 業務サービス内で発生した例外全般。
	 */
	public boolean back() throws Throwable
	{
		// 遷移先画面情報を設定します
		setForwardInfo(JCCWebCommon.getScreenId(this), null);
		
		return true;
	}

	/**
	 * 更新ボタン押下処理です。
	 * <br>
	 * @return boolean　処理の成否。
	 * @throws Throwable 業務サービス内で発生した例外全般。
	 */
	public boolean forwardFix() throws Throwable
	{
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		HashMap<String, String> paramMap = null;
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// 上り項目の設定
		paramMap = setInMsg(svcFormBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		
		// サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// ANK-4287-00-00 ADD START
		HashMap<String, Object> kksv039552ccMap= (HashMap<String, Object>)outputMap.get("KKSV039552SC");
		if (kksv039552ccMap != null && kksv039552ccMap.containsKey("kikiOpRsvFlg"))
		{
			String kikiOpRsvFlg = (String) kksv039552ccMap.get("kikiOpRsvFlg");
			if("1".equals(kikiOpRsvFlg))
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF750_KW);
				return false;
			}
		}
		// ANK-4287-00-00 ADD END
		
		// エラー処理 
		if (null != msgResult)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
		
		String prcGrpCd = svcFormBean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_GET_VALUE);
		
		// eoモバイル3Gの場合
		if (JKKCommonConst.PRC_GRP_CD_08.equals(prcGrpCd))
		{
			// 関連チェック（モバイルコース変更取消チェック）
			if(!isMobileCourseChgCheckResult(outputMap))
			{
				// 警告メッセージの設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9480_KW);
			}
		}
		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9360__I, new String[]{"予約取消"});
		
		// 遷移先画面情報を設定します
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02703, JKKScreenConst.SCREEN_NAME_KKW02703);
		
		return true;
	}

	/**
	 * 戻るボタン押下処理です。
	 * <br>
	 * @return boolean　処理の成否。
	 * @throws Throwable 業務サービス内で発生した例外全般。
	 */
	public boolean forwardBack() throws Throwable
	{
		// 初期表示処理をします
		return searchCourseRk();
	}

	/**
	 * 異動区分選択ボタン押下処理です。
	 * <br>
	 * @return boolean　処理の成否。
	 * @throws Throwable 業務サービス内で発生した例外全般。
	 */
	public boolean forwardIdoDivChoice() throws Throwable
	{
		// 遷移先画面情報を設定します
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// セッション情報の確認
		HashMap<String, Object> dataMap = JCCWebCommon.getScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW00145);
		
		if (null == dataMap)
		{
			// 顧客契約内引継ぎデータを設定します
			dataMap = getHktgiDataMap(svcFormBean, JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, CUST_KEI_HKTGI_KEYS);
		}
		
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW00145, dataMap);
		
		// 遷移先画面情報を設定します
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW00145, null);
		
		return true;
	}

	/**
	 * お客様一覧照会ボタン押下処理です。
	 * <br>
	 * @return boolean　処理の成否。
	 * @throws Throwable 業務サービス内で発生した例外全般。
	 */
	public boolean forwardCustListShokai() throws Throwable
	{
		// 遷移先画面情報を設定します
		setForwardInfo(JCKScreenConst.SCREEN_ID_CKW00101, null);
		
		return true;
	}
	
	/**
	 * v5.00.00 追加
	 * 設定ボタン押下処理
     * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean closeAply() throws Exception 
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		// 遷移先画面情報を設定します
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		X31SDataBeanAccess custbean = paramBean[0].getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST).getDataBean(0);
		
		if(svcFormBean.sendMessageBoolean(KKW02701SFConst.WRIB_AUTO_APLY_TG_GAI_FLG, X31CWebConst.DATABEAN_GET_VALUE) == true)
		{
			custbean.sendMessageString("割引自動適用対象外フラグ", X31CWebConst.DATABEAN_SET_VALUE, WRIB_AUTO_APLY_TG_GAI_FLG_1);
		}
		else
		{
			custbean.sendMessageString("割引自動適用対象外フラグ", X31CWebConst.DATABEAN_SET_VALUE, WRIB_AUTO_APLY_TG_GAI_FLG_0);
		}
		
		// 顧客契約内引継ぎデータを設定
		HashMap<String, Object> dataMap = getHktgiDataMap(svcFormBean, JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, CUST_KEI_HKTGI_KEYS);
		
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW00128, dataMap);
		
		// モーダル用反映画面へ画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_NAME_CCW00105);
		
		return true;
	}

	/**
	 * コース履歴一覧の検索処理をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.サービス上り項目を設定します。<br>
	 *
	 * 2.サービスを呼び出します。<br>
	 *
	 * 3.サービス下り項目をBeanに転記します。<br>
	 *
	 * 4.遷移先情報を設定します。<br>
	 *
	 * </pre>
	 * <p>
	 * @return boolean　処理の成否。
	 */
	private boolean searchCourseRk()
	{
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		HashMap<String, String> paramMap = new HashMap<String, String>();
		KKSV0394_KKSV0394OPDBMapper mapper = new KKSV0394_KKSV0394OPDBMapper();
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// 運用年月日の設定
		svcFormBean.sendMessageString(KKW02701SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));

		// サービスの上り項目設定
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		mapper.setKKSV039401CC(paramBean, inputMap, "");
		
		// サービス呼び出し
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0394");
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if (null != msgResult)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
		
		// サービス結果の転記
		mapper.getKKSV039401CC(paramBean, outputMap);
		
		// ボタン制御フラグ設定（ポップアップモードにより「戻る」/「閉じる」）
		if(setPopupValue())
		{
			svcFormBean.sendMessageString(KKW02701SFConst.CTRL_BUTTON_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		else
		{
			
/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
			
			X31SDataBeanAccess custbean = paramBean[0].getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST).getDataBean(0);
			String idoDiv =  String.valueOf(custbean.sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
			String svcCd = svcFormBean.sendMessageString("サービスコード", X31CWebConst.DATABEAN_GET_VALUE);
			String man_flg = svcFormBean.sendMessageString("マンションフラグ", X31CWebConst.DATABEAN_GET_VALUE);
			String svc_kei_status = svcFormBean.sendMessageString("サービス契約ステータス", X31CWebConst.DATABEAN_GET_VALUE);
			
			boolean bool_wrib_auto_aply_tg_gai_flg = false;
			if(String.valueOf(custbean.sendMessageString("割引自動適用対象外フラグ", X31CWebConst.DATABEAN_GET_VALUE)) == null || 
					"".equals(String.valueOf(custbean.sendMessageString("割引自動適用対象外フラグ", X31CWebConst.DATABEAN_GET_VALUE))))
			{
				bool_wrib_auto_aply_tg_gai_flg = false;
			}
			else
			{
				if("0".equals(String.valueOf(custbean.sendMessageString("割引自動適用対象外フラグ", X31CWebConst.DATABEAN_GET_VALUE))))
				{
					bool_wrib_auto_aply_tg_gai_flg = false;
				}
				else
				{
					bool_wrib_auto_aply_tg_gai_flg = true;
				}
				
			}
			String cp_disp_flg = svcFormBean.sendMessageString("コース変更手数料減額表示", X31CWebConst.DATABEAN_GET_VALUE);
			
			//■ｅｏ光ネットで && マンションタイプ以外 && サービス提供中以降 && 異動区分が「コース変更」&& コース変更手数料減額ＣＰ対象の場合
			if (JKKCommonConst.SVC_CD_NET.equals(svcCd) && MANSION_FLAG_0.equals(man_flg) && 
					JKKCommonConst.IDO_DIV_VALUE_00009.equals(idoDiv) && Integer.parseInt(svc_kei_status) >= 100 && 
					CP_DISP_FLG_1.equals(cp_disp_flg)) 
			{
				//「コース変更手数料減額ＣＰ適用外」設定
				svcFormBean.sendMessageBoolean(KKW02701SFConst.WRIB_AUTO_APLY_TG_GAI_FLG, X31CWebConst.DATABEAN_SET_VALUE, bool_wrib_auto_aply_tg_gai_flg);
				
				// ボタン制御フラグを設定する。
				svcFormBean.sendMessageString(KKW02701SFConst.BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, "3");
				svcFormBean.sendMessageString(KKW02701SFConst.CTRL_BUTTON_FLG, X31CWebConst.DATABEAN_SET_VALUE, "3");
			}
			else
			{
				// ボタン制御フラグを非表示に上書きする。
				svcFormBean.sendMessageString(KKW02701SFConst.BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, "2");
				svcFormBean.sendMessageString(KKW02701SFConst.CTRL_BUTTON_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
			}
			
/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
			
		}
		
		// 遷移先画面情報を設定します
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02701, JKKScreenConst.SCREEN_NAME_KKW02701);
		
		return true;
	}

	/**
	 * コース履歴_ネット予約取消確認サービスの上り項目転記処理をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.サービス上り項目を設定します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param  svcFormBean
	 * @param  inputMap
	 * @param  funcCd
	 * @return HashMap<String, String>　サービス上り項目。
	 */
	private HashMap<String, String> setKKSV0395(X31SDataBeanAccess svcFormBean, HashMap<String, Object> inputMap, String funcCd)
	{
		HashMap<String, String> paramMap = new HashMap<String, String>();
		KKSV0395_KKSV0395OPDBMapper mapper = new KKSV0395_KKSV0395OPDBMapper();
		
		// サービスの上り項目設定
		X31SDataBeanAccess[] paramBean = {svcFormBean};
/* ++++++++++ v4.02.00 追加開始 ++++++++++ */
		mapper.setKKSV039536SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
/* ++++++++++ v4.02.00 追加終了 ++++++++++ */
		mapper.setKKSV039501SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039502SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV039503CC(paramBean, inputMap, funcCd);
		mapper.setKKSV039503SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV039504SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV039505SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039506SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039504CC(paramBean, inputMap, funcCd);
		mapper.setKKSV039501CC(paramBean, inputMap, funcCd);
		mapper.setKKSV039502CC(paramBean, inputMap, funcCd);
		mapper.setKKSV039515SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039516SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039517SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039518SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039519SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039520SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039521SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039522SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039523SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039524SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039525SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039526SC(paramBean, inputMap, funcCd);
	// OM-2015-0002629 2015/10/28 FJ) 清水 MOD START
//		mapper.setKKSV039527SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		// ANK-4567-00-00 MOD START
		//mapper.setKKSV039527SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		mapper.setKKSV039527SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		// ANK-4567-00-00 MOD END
	// OM-2015-0002629 2015/10/28 FJ) 清水 MOD END
		mapper.setKKSV039528SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039529SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		mapper.setKKSV039530SC(paramBean, inputMap, funcCd);
/* ++++++++++ v5.00.02 変更開始 ++++++++++ */
//		mapper.setKKSV039531SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
//		mapper.setKKSV039535SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
//		mapper.setKKSV039532SC(paramBean, inputMap, funcCd);
		mapper.setCourseRkIcjknDelCC(paramBean, inputMap, funcCd);
/* ++++++++++ v5.00.02 変更終了 ++++++++++ */
		mapper.setKKSV039533SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039534SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039505CC(paramBean, inputMap, funcCd);
		mapper.setKKSV0395WorkSC(paramBean, inputMap);
		/* ++++++++++ v4.03.00 変更開始 ++++++++++ */
		mapper.setKKSV039537CC(paramBean, inputMap, funcCd);
		mapper.setKKSV039538CC(paramBean, inputMap, funcCd);
		mapper.setKKSV039539CC(paramBean, inputMap, funcCd);
		/* ++++++++++ v4.03.00 変更完了 ++++++++++ */
/* ++++++++++ v5.00.01 追加開始 ++++++++++ */
		mapper.setKKSV039540CC(paramBean, inputMap, funcCd);
/* ++++++++++ v5.00.01 追加終了 ++++++++++ */
// ANK-2765-00-00 ADD START
		mapper.setKKSV039548CC(paramBean, inputMap, funcCd);
// ANK-2765-00-00 ADD END
// ANK-3949-00-00 ADD START
		if(JKKCommonConst.FUNC_CODE_1.equals(funcCd)){
			mapper.setKKSV039549SC(paramBean, inputMap, funcCd);
		}
// ANK-3949-00-00 ADD END
		// ANK-3987-00-00 ADD START
		if(JKKCommonConst.FUNC_CODE_1.equals(funcCd))
		{
			mapper.setKKSV039551CC(paramBean, inputMap, funcCd);
		}
		// ANK-3987-00-00 ADD END
		// ANK-4287-00-00 ADD START
		mapper.setKKSV039552SC(paramBean, inputMap, funcCd);
		// ANK-4287-00-00 ADD END
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0395");
		
		return paramMap;
	}

	/**
	 * コース履歴_テレビ予約取消確認サービスの上り項目転記処理をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.サービス上り項目を設定します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param  svcFormBean
	 * @param  inputMap
	 * @param  funcCd
	 * @return HashMap<String, String>　サービス上り項目。
	 */
	private HashMap<String, String> setKKSV0396(X31SDataBeanAccess svcFormBean, HashMap<String, Object> inputMap, String funcCd)
	{
		HashMap<String, String> paramMap = new HashMap<String, String>();
		KKSV0396_KKSV0396OPDBMapper mapper = new KKSV0396_KKSV0396OPDBMapper();
		
		// サービスの上り項目設定
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		mapper.setKKSV039601SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039601CC(paramBean, inputMap, funcCd);
		mapper.setKKSV039602SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV039603SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV039604SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039605SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039602CC(paramBean, inputMap, funcCd);
		mapper.setKKSV039604CC(paramBean, inputMap, funcCd);
/* ++++++++++ v8.00.00 変更開始 ++++++++++ */
		// OM-2014-0002633 20140818 田中 ADD START
		mapper.setKKSV039613SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		// OM-2014-0002633 20140818 田中 ADD END
//		mapper.setKKSV039614SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039607CC(paramBean, inputMap, funcCd);
/* ++++++++++ v8.00.00 変更終了 ++++++++++ */
		mapper.setKKSV039615SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		mapper.setKKSV039616SC(paramBean, inputMap, funcCd);
/* ++++++++++ v5.00.02 変更開始 ++++++++++ */
//		mapper.setKKSV039617SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
//		mapper.setKKSV039618SC(paramBean, inputMap, funcCd);
		mapper.setCourseRkIcjknDelCC(paramBean, inputMap, funcCd);
/* ++++++++++ v5.00.02 変更終了 ++++++++++ */
		mapper.setKKSV039619SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039620SC(paramBean, inputMap, funcCd);
		mapper.setKKSV039605CC(paramBean, inputMap, funcCd);
		mapper.setKKSV039606CC(paramBean, inputMap, funcCd);
		mapper.setKKSV0396WorkSC(paramBean, inputMap);
		// ANK-4592-00-00 ADD START
		mapper.setKKSV039608CC(paramBean, inputMap, funcCd);
		// ANK-4592-00-00 ADD END
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0396");
		
		return paramMap;
	}

	/**
	 * コース履歴一覧を予約レコードのみに編集します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.初期表示のコース履歴一覧から予約レコードのみ一覧に編集します。<br>
	 *
	 * </pre>
	 * <p>
	 */
	private void setCourseRk()
	{
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		X31SDataBeanAccessArray infList =  svcFormBean.getDataBeanArray("コース履歴一覧リスト");
		int cnt = infList.getCount();
		
		for (int i = 1; i < cnt; i++)
		{
			infList.removeDataBean(1);
		}
	}

	/**
	 * 上り項目の設定を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.ネットの場合、コース履歴_ネット予約取消確認サービスを設定します。<br>
	 *
	 * 2.テレビの場合、コース履歴_テレビ予約取消確認サービスを設定します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param  svcFormBean
	 * @param  inputMap
	 * @param  funcCd
	 * @return HashMap<String, String>　サービス上り項目。
	 */
	private HashMap<String, String> setInMsg(X31SDataBeanAccess svcFormBean, HashMap<String, Object> inputMap, String funcCd)
	{
		String svcCd = svcFormBean.sendMessageString("サービスコード", X31CWebConst.DATABEAN_GET_VALUE);
		
		// eoネットの場合
		if (JKKCommonConst.SVC_CD_NET.equals(svcCd))
		{
			return setKKSV0395(svcFormBean, inputMap, funcCd);
		}
		// eo光ＴＶの場合
		else if (JKKCommonConst.SVC_CD_TV.equals(svcCd))
		{
			return setKKSV0396(svcFormBean, inputMap, funcCd);
		}
		
		return null;
	}

	/**
	 * 一時金取消確認の関連チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.工事案件が無い場合、trueを返します。<br>
	 *
	 * 2.工事案件ステータスが工事完了済：200以外の場合、trueを返します。<br>
	 *
	 * 3.falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param  outputMap　サービス処理結果
	 * @param  kojiakKey　工事案件取得キー
	 * @return boolean　チェック結果。
	 */
	@SuppressWarnings("unchecked")
	private boolean isIcjkn(HashMap<String, Object> outputMap, String kojiakKey)
	{
		HashMap<String, Object> kojiMsg = null;
		ArrayList<HashMap<String, Object>> kojiList = null;
		HashMap<String, Object> kojiInfo = null;
		String kojiStat = null;
		
		if (!outputMap.containsKey(kojiakKey))
		{
			return true;
		}
		
		kojiMsg = ((HashMap<String, Object>)outputMap.get(kojiakKey));
	// OM-2015-0002629 2015/10/28 FJ) 清水 MOD START
//		kojiList = getArrayListMap(kojiMsg, "EKU0011B020CBSMsg1List");
		kojiList = getArrayListMap(kojiMsg, "EKU0011B090CBSMsg1List");
	// OM-2015-0002629 2015/10/28 FJ) 清水 MOD END
		
		if (kojiList == null)
		{
			return true;
		}
		
		kojiInfo = (HashMap<String, Object>)kojiList.get(0);
		kojiStat = kojiInfo.get("kojiak_stat").toString();
		
		// OM-2016-0001061 ADD START
		// 引継情報の取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		String kojiakNo = kojiInfo.get("kojiak_no").toString();
		// 工事案件番号（申込明細_工事案件）
		String mskm_dtl_kojiak_no = svcFormBean.sendMessageString(KKW02701SFConst.MSKM_DTL_KOJIAK_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (!kojiakNo.equals(mskm_dtl_kojiak_no)) 
		{
			return true;
		}
		// OM-2016-0001061 ADD END

		if (!JKKCommonConst.KOJIAK_STAT_200.equals(kojiStat))
		{
			return true;
		}
		
		return false;
	}

// OM-2015-0002629 2015/11/03 FJ) 清水 DEL START
//	/**
//	 * 一時金取消確認（関連チェック）を行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.工事案件が無い場合、trueを返します。<br>
//	 *
//	 * 2.工事案件ステータスが工事完了済:200以外かつ設定工事ステータスが完了済み:150以外の場合、trueを返します。<br>
//	 *
//	 * 3.falseを返します。<br>
//	 *
//	 * </pre>
//	 * <p>
//	 * @param  outputMap　サービス処理結果
//	 * @return boolean　チェック結果。
//	 */
//	@SuppressWarnings("unchecked")
//	private boolean isIcjknClCheckResult(HashMap<String, Object> outputMap)
//	{
//		HashMap<String, Object> kojiMsg = null;
//		ArrayList<HashMap<String, Object>> kojiList = null;
//		HashMap<String, Object> kojiInfo = null;
//		
//		if (!outputMap.containsKey("KKSV039527SC") && !outputMap.containsKey("KKSV039613SC"))
//		{
//			return true;
//		}
//		
//		kojiMsg = ((HashMap<String, Object>)outputMap.get("KKSV039527SC"));
//		if(null == kojiMsg)
//		{
//			kojiMsg = ((HashMap<String, Object>)outputMap.get("KKSV039613SC"));
//		}
//		
//	// OM-2015-0002629 2015/10/28 FJ) 清水 MOD START
////	kojiList = getArrayListMap(kojiMsg, "EKU0011B020CBSMsg1List");
//		kojiList = getArrayListMap(kojiMsg, "EKU0011B090CBSMsg1List");
//	// OM-2015-0002629 2015/10/28 FJ) 清水 MOD END
//		
//		if (kojiList == null)
//		{
//			return true;
//		}
//		
//		kojiInfo = (HashMap<String, Object>)kojiList.get(0);
//		String kojiStat = getValueMap(kojiInfo, "kojiak_stat");
//		String setteKojiStat = getValueMap(kojiInfo, "sette_koji_stat");
//		
//		if (kojiStat == null || setteKojiStat == null)
//		{
//			return true;
//		}
//		
//		if (!JKKCommonConst.KOJIAK_STAT_200.equals(kojiStat) && !JKKCommonConst.KOJIAK_STAT_150.equals(setteKojiStat))
//		{
//			return true;
//		}
//		
//		return false;
//	}
// OM-2015-0002629 2015/11/03 FJ) 清水 DEL END

	/**
	 * 機器提供サービス提供中確認（関連チェック）を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.提供機器サービス情報が無い場合、trueを返します。<br>
	 *
	 * 2.機器提供サービス契約ステータスがサービス提供中：100以外の場合、trueを返します。<br>
	 *
	 * 3.falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param  outputMap　サービス処理結果
	 * @return boolean　チェック結果。
	 */
	@SuppressWarnings("unchecked")
	private boolean isKktksvTkchuCheckResult(HashMap<String, Object> outputMap)
	{
		HashMap<String, Object> kktksvMsg = null;
		String kktkSvcKeiStat = null;
		
		if (!outputMap.containsKey("KKSV039502CC") && !outputMap.containsKey("KKSV039604CC"))
		{
			return true;
		}
		
		kktksvMsg = ((HashMap<String, Object>)outputMap.get("KKSV039502CC"));
		if(null == kktksvMsg)
		{
			kktksvMsg = ((HashMap<String, Object>)outputMap.get("KKSV039604CC"));
		}
		
		ArrayList<HashMap<String, Object>> workList = (ArrayList<HashMap<String, Object>>)kktksvMsg.get("kktkSvKeiDelCCList");
		
		boolean checkFlg = false;
		for (HashMap<String, Object> workMap : workList)
		{
			if (workMap.containsKey("kktk_svc_kei_stat"))
			{
				kktkSvcKeiStat = workMap.get("kktk_svc_kei_stat").toString();
				if (KKTK_SVC_KEI_STAT_100.equals(kktkSvcKeiStat))
				{
					checkFlg = true;
					break;
				}
			}
		}
		
		if (!checkFlg)
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * コース変更連携済確認（関連チェック）を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.サービス契約<eoモバイル>情報が無い場合、trueを返します。<br>
	 *
	 * 2.事業者コース変更連携年月日が運用日より過去日（同日含む）以外の場合、trueを返します。<br>
	 *
	 * 3.falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param  outputMap　サービス処理結果
	 * @return boolean　チェック結果。
	 */
	@SuppressWarnings("unchecked")
	private boolean isCouseRkRnkiCheckResult(HashMap<String, Object> outputMap)
	{
		HashMap<String, Object> svcMsg = null;
		ArrayList<HashMap<String, Object>> svcList = null;
		HashMap<String, Object> svcInfo = null;
		
		if (!outputMap.containsKey("KKSV039502SC"))
		{
			return true;
		}
		
		svcMsg = ((HashMap<String, Object>)outputMap.get("KKSV039502SC"));
		svcList = getArrayListMap(svcMsg, "EKK0121A010CBSMsg1List");
		
		if (svcList == null)
		{
			return true;
		}
		
		svcInfo = (HashMap<String, Object>)svcList.get(0);
		String jgsCoursechgRnkYmd = getValueMap(svcInfo, "jgs_coursechg_rnk_ymd");
		
		if (jgsCoursechgRnkYmd == null)
		{
			return true;
		}
		
		if (!JPCDateChecker.isPastDate(jgsCoursechgRnkYmd, JCCWebCommon.getOpeDate(this, null), "1"))
		{
			return true;
		}
		
		return false;
	}

	
	/**
	 * クレードル機器存在確認（関連チェック）を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.機器提供サービス情報が無い場合、trueを返します。<br>
	 *
	 * 2.宅内機器種別コードがL0:クレードルが含まれない場合、trueを返します。<br>
	 *
	 * 3.falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param  outputMap　サービス処理結果
	 * @return boolean　チェック結果。
	 */
	@SuppressWarnings("unchecked")
	private boolean isKkSonzaiCheckResult(HashMap<String, Object> outputMap)
	{
		HashMap<String, Object> kktksvMsg = null;
		String taknkikiSbtCd = null;
		
		if (!outputMap.containsKey("KKSV039502CC") && !outputMap.containsKey("KKSV039604CC"))
		{
			return true;
		}
		
		kktksvMsg = ((HashMap<String, Object>)outputMap.get("KKSV039502CC"));
		if(null == kktksvMsg)
		{
			kktksvMsg = ((HashMap<String, Object>)outputMap.get("KKSV039604CC"));
		}
		
		ArrayList<HashMap<String, Object>> workList = (ArrayList<HashMap<String, Object>>)kktksvMsg.get("kktkSvKeiDelCCList");
		
		boolean checkFlg = false;
		for (HashMap<String, Object> workMap : workList)
		{
			if (workMap.containsKey("taknkiki_sbt_cd"))
			{
				taknkikiSbtCd = workMap.get("taknkiki_sbt_cd").toString();
				if (TAKNKIKI_SBT_CD_L0.equals(taknkikiSbtCd))
				{
					checkFlg = true;
					break;
				}
			}
		}
		
		if (!checkFlg)
		{
			return true;
		}
		
		return false;
	}

	/**
	 * ルーター速度確認（関連チェック）を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.提供機器サービス情報が無い場合、trueを返します。<br>
	 *
	 * 2.カレントレコードの保有ルーターコード/ルーター速度種別コード/料金コースコードの組合せが正しい場合、trueを返します。<br>
	 *
	 * 3.falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param  outputMap　サービス処理結果
	 * @param  svcFormBean　画面Bean
	 * @return boolean　チェック結果。
	 */
	@SuppressWarnings("unchecked")
	private boolean isRouterSpeedCheckResult(HashMap<String, Object> outputMap, X31SDataBeanAccess svcFormBean)
	{
		HashMap<String, Object> idoRsvMsg = null;
		HashMap<String, Object> kktksvMsg = null;
		
		
		if (!outputMap.containsKey("KKSV039504CC"))
		{
			return true;
		}
		
		idoRsvMsg = ((HashMap<String, Object>)outputMap.get("KKSV039504CC"));
		if(null == idoRsvMsg)
		{
			return true;
		}
		
		if(!idoRsvMsg.containsKey("old_pcrs_cd"))
		{
			return true;
		}
		
		String curPcrsCd = idoRsvMsg.get("old_pcrs_cd").toString();
		
		if (!outputMap.containsKey("KKSV039502CC"))
		{
			return true;
		}
		
		kktksvMsg = ((HashMap<String, Object>)outputMap.get("KKSV039502CC"));
		if(null == kktksvMsg)
		{
			return true;
		}
		
		ArrayList<HashMap<String, Object>> workList = (ArrayList<HashMap<String, Object>>)kktksvMsg.get("kktkSvKeiDelCCList");
		boolean checkFlg = false;
		for (HashMap<String, Object> workMap : workList)
		{
			if (null == workMap.get("hoyu_router_cd") || null == workMap.get("router_speed_cd"))
			{
				continue;
			}
			
			String hoyuRouterCd = workMap.get("hoyu_router_cd").toString();
			String routerSpeedSbtCd = workMap.get("router_speed_cd").toString();
			
			// IT2-2016-0000004 2016/02/22 ADD START
			//保有ルーター：01(ベーシック)・02(ベーシックギガ)・保有ルーター：03(旧無線)・保有ルーター：04(新無線)の場合・保有ルーター：05(新無線ギガ)
			if (JKKCommonConst.TKCD043_BASIC.equals(hoyuRouterCd) || JKKCommonConst.TKCD043_BASICGIGA.equals(hoyuRouterCd) || JKKCommonConst.TKCD043_KYUMUSEN.equals(hoyuRouterCd) || JKKCommonConst.TKCD043_SHINMUSEN.equals(hoyuRouterCd) || JKKCommonConst.TKCD043_SHINMUSENGIGA.equals(hoyuRouterCd)) {
				//１０Ｇコースであるか
				if (isRcrs10G(curPcrsCd)){
					checkFlg = true;
					break;
				}
			}
			// IT2-2016-0000004 2016/02/22 ADD END
			
			// 保有ルーター：01(ベーシック)/ルーター速度種別：10(100M)の場合
			if (JKKCommonConst.TKCD043_BASIC.equals(hoyuRouterCd) && ROUTER_SPEED_SBT_CD_10.equals(routerSpeedSbtCd))
			{
				if (isRcrsRouter10(curPcrsCd))
				{
					checkFlg = true;
					break;
				}
			}
			// 保有ルーター：02(ベーシックギガ)/ルーター速度種別：20(1G)の場合
			else if(JKKCommonConst.TKCD043_BASICGIGA.equals(hoyuRouterCd) && ROUTER_SPEED_SBT_CD_20.equals(routerSpeedSbtCd))
			{
				if (isRcrsRouter20(curPcrsCd))
				{
					checkFlg = true;
					break;
				}
			}
			// 保有ルーター：03(旧無線)/ルーター速度種別：10(100M)の場合
			else if(JKKCommonConst.TKCD043_KYUMUSEN.equals(hoyuRouterCd) && ROUTER_SPEED_SBT_CD_10.equals(routerSpeedSbtCd))
			{
				if (isRcrsRouter10(curPcrsCd))
				{
					checkFlg = true;
					break;
				}
			}
			// 保有ルーター：04(新無線)/ルーター速度種別：10(100M)の場合
			else if(JKKCommonConst.TKCD043_SHINMUSEN.equals(hoyuRouterCd) && ROUTER_SPEED_SBT_CD_10.equals(routerSpeedSbtCd))
			{
				if (isRcrsRouter10(curPcrsCd))
				{
					checkFlg = true;
					break;
				}
			}
			// 保有ルーター：05(新無線ギガ)/ルーター速度種別：20(1G)の場合
			else if(hoyuRouterCd.equals(JKKCommonConst.TKCD043_SHINMUSENGIGA) && routerSpeedSbtCd.equals(ROUTER_SPEED_SBT_CD_20))
			{
				// 判定無し
			}
		}
		
		if (!checkFlg)
		{
			return true;
		}
		
		return false;
	}

	/**
	 * ルーター速度種別：10(100M)の料金コースコードチェックを行います。<br>
	 * 
	 * @param pcrsCd
	 * @return boolean
	 */
	private boolean isRcrsRouter10(String pcrsCd)
	{
		//ANK-3949-00-00 MOD START
//		if (JKKCommonConst.PCRS_CD_A05.equals(pcrsCd) || JKKCommonConst.PCRS_CD_A07.equals(pcrsCd) || JKKCommonConst.PCRS_CD_A10.equals(pcrsCd))
		if (JKKCommonConst.PCRS_CD_A05.equals(pcrsCd) || JKKCommonConst.PCRS_CD_A07.equals(pcrsCd) || JKKCommonConst.PCRS_CD_A10.equals(pcrsCd)
				|| JKKCommonConst.PCRS_CD_A91.equals(pcrsCd) ||JKKCommonConst.PCRS_CD_A92.equals(pcrsCd))
		//ANK-3949-00-00 MOD END
		{
			return true;
		}
		else if (JKKCommonConst.PCRS_CD_A11.equals(pcrsCd) || PCRS_CD_A55.equals(pcrsCd) || PCRS_CD_A57.equals(pcrsCd))
		{
			return true;
		}
		return false;
	}

	/**
	 * ルーター速度種別：20(1G)の料金コースコードチェックを行います。<br>
	 * 
	 * @param pcrsCd
	 * @return boolean
	 */
	private boolean isRcrsRouter20(String pcrsCd)
	{
		if (JKKCommonConst.PCRS_CD_A03.equals(pcrsCd) || JKKCommonConst.PCRS_CD_A04.equals(pcrsCd) || JKKCommonConst.PCRS_CD_A06.equals(pcrsCd))
		{
			return true;
		}
		else if (JKKCommonConst.PCRS_CD_A08.equals(pcrsCd) || JKKCommonConst.PCRS_CD_A09.equals(pcrsCd) || PCRS_CD_A47.equals(pcrsCd))
		{
			return true;
		}
		else if (PCRS_CD_A48.equals(pcrsCd) || PCRS_CD_A49.equals(pcrsCd) || PCRS_CD_A50.equals(pcrsCd))
		{
			return true;
		}
		else if (PCRS_CD_A51.equals(pcrsCd) || PCRS_CD_A52.equals(pcrsCd) || PCRS_CD_A53.equals(pcrsCd))
		{
			return true;
		}
		else if (PCRS_CD_A54.equals(pcrsCd) || PCRS_CD_A56.equals(pcrsCd))
		{
			return true;
		}
		
		return false;
	}

	/**
	 * モバイルコース変更取消確認（関連チェック）を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.提供機器サービス情報が無い場合、trueを返します。<br>
	 *
	 * 2.料金コースコードがC27（3G 7.2M 通常プラン）からC28(3G 7.2M 光ハイブリッド)の変更でない場合、かつ
	 * 料金コースコードがC28（3G 7.2M 光ハイブリッド）からC27(3G 7.2M 通常プラン)の変更でない場合、trueを返します。<br>
	 *
	 * 3.falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param  outputMap　サービス処理結果
	 * @return boolean　チェック結果。
	 */
	@SuppressWarnings("unchecked")
	private boolean isMobileCourseChgCheckResult(HashMap<String, Object> outputMap)
	{
		HashMap<String, Object> kktksvMsg = null;
		
		if (!outputMap.containsKey("KKSV039504CC"))
		{
			return true;
		}
		
		kktksvMsg = ((HashMap<String, Object>)outputMap.get("KKSV039504CC"));
		if(null == kktksvMsg)
		{
			return true;
		}
		
		String oldPcrsCd = getValueMap(kktksvMsg, "old_pcrs_cd");
		String newPcrsCd = getValueMap(kktksvMsg, "new_pcrs_cd");
		
		if (oldPcrsCd == null || newPcrsCd == null)
		{
			return true;
		}
		
		if (!(oldPcrsCd.equals(PCRS_CD_A26) && newPcrsCd.equals(PCRS_CD_A59)) && !(oldPcrsCd.equals(PCRS_CD_A59) && newPcrsCd.equals(PCRS_CD_A26)))
		{
			return true;
		}
		
		return false;
	}

/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
	/**
	 * 工事連携確認チェック（関連チェック）を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.工事案件が有る（工事案件ステータス="120":登録済, "130":受付済）場合、trueを返します。<br>
	 *
	 * 2.工事案件が無い（工事案件ステータス="140":依頼済以降）場合、falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param  outputMap　サービス処理結果
	 * @return boolean　チェック結果。
	 */
	@SuppressWarnings("unchecked")
	private boolean isKojiRnkiCheckResult(HashMap<String, Object> outputMap)
	{
		HashMap<String, Object> kojiMsg = null;
		ArrayList<HashMap<String, Object>> kojiList = null;
		
		if (!outputMap.containsKey("KKSV039613SC"))
		{
			return true;
		}
		
		kojiMsg = ((HashMap<String, Object>)outputMap.get("KKSV039613SC"));
		if(null == kojiMsg)
		{
			kojiMsg = ((HashMap<String, Object>)outputMap.get("KKSV039613SC"));
		}
		
		kojiList = getArrayListMap(kojiMsg, "EKU0011B020CBSMsg1List");
		
		if (kojiList == null)
		{
			return false;
		}
		
		return true;
	}
	
// OM-2016-0000943 ADD START
	/**
	 * 工事連携確認チェック（関連チェック）を行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.工事案件が有る（工事案件ステータス="120":登録済, "130":受付済）場合、trueを返します。<br>
	 *
	 * 2.工事案件が無い（工事案件ステータス="140":依頼済以降）場合、falseを返します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param  outputMap　サービス処理結果
	 * @return boolean　チェック結果。
	 */
	@SuppressWarnings("unchecked")
	private boolean isNetKojiRnkiCheckResult(HashMap<String, Object> outputMap)
	{
		HashMap<String, Object> kojiMsg = null;
		ArrayList<HashMap<String, Object>> kojiList = null;
		
		if (!outputMap.containsKey("KKSV039527SC"))
		{
			return true;
		}
		
		kojiMsg = ((HashMap<String, Object>)outputMap.get("KKSV039527SC"));
		
		kojiList = getArrayListMap(kojiMsg, "EKU0011B090CBSMsg1List");
		
		if(null == kojiList || kojiList.size() <= 0)
		{
			return true;
		}
		
		boolean checkFlg = false;
		for (HashMap<String, Object> workMap : kojiList)
		{
			if (workMap.containsKey("kojiak_stat"))
			{
				String kojiak_stat = (String)workMap.get("kojiak_stat").toString();
				if ( !KOJIAK_STAT_120.equals(kojiak_stat)
						&& !KOJIAK_STAT_130.equals(kojiak_stat)
						&& !KOJIAK_STAT_200.equals(kojiak_stat)
				)
				{
					checkFlg = true;
					break;
				}
			}
		}
		if (checkFlg)
		{
			return false;
		}
		
		return true;
	}
// OM-2016-0000943 ADD END
	/**
	 * 引数に値が設定されているか判定します。
	 * <br>
	 * @param	arg0	判定する引数
	 * @return	boolean	引数に値が設定されている場合はtrue
	 */
	private boolean isNotBlank(String arg0)
	{
		if (arg0 == null || arg0.length() == 0)
		{
			return false;
		}
		
		return true;
	}
/* ++++++++++ v7.00.00 追加終了 ++++++++++ */

	/**
	 * HashMapから配列値を取得します。<br>
	 * 
	 * @param map
	 * @param key
	 * @return ArrayList<HashMap<String, Object>>
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> getArrayListMap(HashMap<String, Object> map, String key)
	{
		ArrayList<HashMap<String, Object>> list = (ArrayList<HashMap<String, Object>>)map.get(key);
		
		if (list == null || list.size() == 0)
		{
			return null;
		}
		
		return list;
	}

	/**
	 * HashMapから値を取得します。<br>
	 * 
	 * @param map
	 * @param key
	 * @return String
	 */
	private String getValueMap(HashMap<String, Object> map, String key)
	{
		String value = (String)map.get(key);
		
		if (value == null || value.length() == 0)
		{
			return null;
		}
		
		return value;
	}

	/**
	 * 画面遷移情報の設定をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.遷移先画面IDを共有フォームBeanの項目に設定します。<br>
	 *
	 * 2.遷移先画面名を共有フォームBeanの項目に設定します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param next_id 遷移先画面ＩＤ。
	 * @param next_nm 遷移先画面名。
	 */
	private void setForwardInfo(String next_id, String next_nm)
	{
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, next_id);
		
		if (null != next_nm)
		{
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, next_nm);
		}
	}

	/**
	 * <dd>メソッド名：引継情報データマップ取得
	 * <dd>メソッド説明：引数のサービスフォームBeanより引継情報データマップの生成を行う。
	 * <dd>備考：引継情報データタイプの可変項目はString[]のみ対応。
	 * @param bean サービスフォームBean	
	 * @param hktgiKey 引継情報データタイプのキー
	 * @param hktgiPrmKeys 引継情報データタイプの項目キーリスト	
	 * @return HashMap<String, Object> 引継情報データマップ
	 */
	private HashMap<String, Object> getHktgiDataMap(X31SDataBeanAccess bean, String hktgiKey , String[] hktgiPrmKeys)
	{
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		List<HashMap<String, Object>> dataList = new ArrayList<HashMap<String, Object>>();
		
		X31SDataBeanAccessArray infList =  bean.getDataBeanArray(hktgiKey);
		for (int i = 0 ; i < infList.getCount() ; i++)
		{
			HashMap<String, Object> inMap = new HashMap<String, Object>();
			
			X31SDataBeanAccess inf = infList.getDataBean(i);
			for (int j = 0 ; j < hktgiPrmKeys.length ; j++)	
			{
				try	
				{
					inMap.put(hktgiPrmKeys[j], inf.sendMessageObject(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_VALUE));
				}
				catch (X31SRuntimeException ex)	
				{
					// 可変項目の場合(String[]のみ対応)
					int length = (Integer)inf.sendMessage(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_COUNT);
					String[] obj = new String[length];
					for (int k = 0 ; k < length ; k++)
					{
						obj[k] = inf.sendMessageString(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_VALUE, k);
					}
					inMap.put(hktgiPrmKeys[j], obj);
				}
			}
			dataList.add(inMap);
		}
		dataMap.put(hktgiKey, dataList);
		
		return dataMap;	
	}

	/**
	 * 顧客契約引継リスト設定値から画面項目の活性・非活性を判定します。
	 * 
	 * @return true:活性 , false:非活性
	 */
	private boolean setPopupValue()
	{
		// 顧客契約リスト取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccessArray custKeiHktgiList =  bean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		
		// 顧客契約リスト存在時
		if (null != custKeiHktgiList)
		{
			// ポップアップモード設定値を取得
			String popupMode = custKeiHktgiList.getDataBean(0).sendMessageString(JKKCommonConst.HKTGI_POPUP_MODE, X31CWebConst.DATABEAN_GET_VALUE);
			
			if ("".equals(popupMode) || "0".equals(popupMode))
			{
				// "" :未設定
				// "0":画面遷移モード
				// 上記設定時は戻るボタンを表示する。
				return true;
			}
			else
			{
				// "1":新規画面モード（モーダル）
				// "2":新規画面モード（モーダレス）
				// 上記設定時は閉じるの単を表示する。
				return false;
			}
		}
		
		// 顧客契約リスト未設定時、閉じるボタンを表示する。
		return false;
	}
	
	// IT2-2016-0000004 2016/02/22 ADD START
	/**
	 * １０Ｇコース：A74・A83・A84・A89・A90・A93・A94・A95・A96・A97・A99の料金コースコードチェックを行います。<br>
	 * 
	 * @param pcrsCd
	 * @return boolean
	 */
	private boolean isRcrs10G(String pcrsCd)
	{
// ▽▽▽ ANK-3412-00-00 Modify START
//		if (PCRS_CD_A83.equals(pcrsCd) || PCRS_CD_A84.equals(pcrsCd))
		//ANK-4468-00-00 MOD START
		//ANK-3949-00-00 MOD START
	//	if (PCRS_CD_A83.equals(pcrsCd) || PCRS_CD_A84.equals(pcrsCd) || PCRS_CD_A89.equals(pcrsCd) || PCRS_CD_A90.equals(pcrsCd))
	//	if (PCRS_CD_A83.equals(pcrsCd) || PCRS_CD_A84.equals(pcrsCd) || PCRS_CD_A89.equals(pcrsCd) || PCRS_CD_A90.equals(pcrsCd)
	//		|| PCRS_CD_A93.equals(pcrsCd) || PCRS_CD_A94.equals(pcrsCd) || PCRS_CD_A95.equals(pcrsCd) || PCRS_CD_A96.equals(pcrsCd))
		//ANK-3949-00-00 MOD END
		//ANK-4493-00-00 MOD START
//		if (PCRS_CD_A83.equals(pcrsCd) || PCRS_CD_A84.equals(pcrsCd) || PCRS_CD_A89.equals(pcrsCd) || PCRS_CD_A90.equals(pcrsCd)
		if (PCRS_CD_A74.equals(pcrsCd) ||PCRS_CD_A83.equals(pcrsCd) || PCRS_CD_A84.equals(pcrsCd) || PCRS_CD_A89.equals(pcrsCd) || PCRS_CD_A90.equals(pcrsCd)
		//ANK-4468-00-00 MOD END
			|| PCRS_CD_A93.equals(pcrsCd) || PCRS_CD_A94.equals(pcrsCd) || PCRS_CD_A95.equals(pcrsCd) || PCRS_CD_A96.equals(pcrsCd)
			|| PCRS_CD_A97.equals(pcrsCd) || PCRS_CD_A99.equals(pcrsCd))
		//ANK-4493-00-00 MOD END
//▲▲▲ ANK-3412-00-00 Modify END
		{
			return true;
		}
		return false;
	}
	// IT2-2016-0000004 2016/02/22 ADD END
// ▽▽▽ ANK-3412-14-00 ADD START
	/**
	 * 多機能ルータ交換チェック
	 * <b>
	 * @param outputMap
	 * @param svcFormBean
	 * @return boolean true: 正常 false:異常
	 */
	private boolean isFatRouterExchangeCheckResult(HashMap<String, Object> outputMap, X31SDataBeanAccess svcFormBean) 
	{
		HashMap<String, Object> idoRsvMsg = ((HashMap<String, Object>)outputMap.get("KKSV039504CC"));
		if(null != idoRsvMsg)
		{
			String oldPcrsCd = (String)idoRsvMsg.get("old_pcrs_cd");
			if (!JKKStringUtil.isNullBlank(oldPcrsCd))
			{
				// 料金コースに対する多機能ルータの速度コード
				String pcrsSpeedCd = "20";	// デフォルトは１Ｇ
				if (isRcrs10G(oldPcrsCd))
				{
					pcrsSpeedCd = "30";	// デフォルトは１０Ｇ
				}
				HashMap<String, Object> param = (HashMap<String, Object>)outputMap.get("KKSV039502CC");
				if (param != null)
				{
					Object otherMskmRouterStat = param.get("other_mskm_takno_router_stat");
					String curRouterSpeedCd = (String)param.get("cur_takno_router_speed_cd"); // 10/20/30 100M/1G/10G

					// 契約変更中もしく、現行多機能ルータ速度コードが料金コースと合わない場合
					if ("110".equals(otherMskmRouterStat) || 
						(!JKKStringUtil.isNullBlank(curRouterSpeedCd) && pcrsSpeedCd.compareTo(curRouterSpeedCd) > 0))
					{
						return false;
					}
				}
			}
		}		
		return true;
	}
// ▲▲▲ ANK-3412-14-00 ADD END
	// ANK-4592-00-00 ADD START
	/**
	 * スカパー連携ステータスチェック
	 * <b>
	 * @param outputMap
	 * @param svcFormBean
	 * @return boolean true: 正常 false:異常
	 */
	private boolean isSptvStatCheckResult(HashMap<String, Object> outputMap, X31SDataBeanAccess svcFormBean) 
	{
		HashMap<String, Object> kksv039608ccMap= (HashMap<String, Object>)outputMap.get("KKSV039608CC");
		
		if (kksv039608ccMap != null && kksv039608ccMap.containsKey("err_cd"))
		{
			String errCd = (String)kksv039608ccMap.get("err_cd");
			
			if (JKKStrConst.SPTV_ERR_CD_TOUROKU.equals(errCd))
			{
				return false;
			}
		}
		return true;
	}

	/**
	 * エラーコードチェック
	 * <b>
	 * @param outputMap
	 * @param svcFormBean
	 * @return boolean true: 正常 false:異常
	 */
	private boolean isErrCdCheckResult(HashMap<String, Object> outputMap, X31SDataBeanAccess svcFormBean) 
	{
		HashMap<String, Object> kksv039608ccMap= (HashMap<String, Object>)outputMap.get("KKSV039608CC");
		
		if (kksv039608ccMap != null && kksv039608ccMap.containsKey("err_cd"))
		{
			String errCd = (String)kksv039608ccMap.get("err_cd");
			
			if (!JKKStrConst.SPTV_ERR_CD_TOUROKU.equals(errCd) && !JKKStringUtil.isNullBlank(errCd))
			{
				return false;
			}
		}
		return true;
	}

	/**
	 * サービス契約ステータスチェック
	 * <b>
	 * @param outputMap
	 * @param svcFormBean
	 * @return boolean true: 正常 false:異常
	 */
	private boolean isCSOpCheckResult(HashMap<String, Object> outputMap, X31SDataBeanAccess svcFormBean) 
	{
		HashMap<String, Object> kksv039608ccMap= (HashMap<String, Object>)outputMap.get("KKSV039608CC");
		String csOptionUm = "0";
		
		if (kksv039608ccMap != null && kksv039608ccMap.containsKey("cs_option_um"))
		{
			csOptionUm = (String)kksv039608ccMap.get("cs_option_um");
			
			if ("1".equals(csOptionUm))
			{
				return false;
			}
		}
		return true;
	}

	/**
	 * エラー情報の設定を行う。
	 * 
	 * @param msgId
	 * @param repMsg
	 * @param item
	 */
	private void setErrorInfo(String msgId, String[] repMsg, String... item) {
		for (int i = 0; i < item.length; i++) {
			JCCWebCommon.setMessageInfo(this, msgId, repMsg, item[i]);
		}
	}
	// ANK-4592-00-00 ADD END
}
