/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：KKA16701SFLogic
*	ソースファイル名	：KKA16701SFLogic.java
*	作成者				：富士通　
*	作成日				：2011年11月04日
*＜機能概要＞
*　コース履歴のビューロジックです。
*　※このViewロジックはkoptWebBのKKW02701(コース履歴)をベースに作成しています。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	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】対応
*	v18.00.00	2015/08/06	FJ) 抱		【ANK-2631-00-00】ワンストップ案件（ＳＴＥＰ１）
*	v18.00.01	2015/09/04	FJ) 森杉	【IT1-2015-0000093】
*	v18.00.02	2015/09/07	FJ) 原田	【IT1-2015-0000095】
*	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/16  FJ) 阮    　【OM-2016-0000943】コース変更取消時の工事進捗チェックの実装
*	v26.00.00   2016/06/03	FJ) 笠川	【ANK-2687-00-00】プレミアムサポート施策
*   v25.00.00	2016/07/07  FJ) 森脇	【OM-2016-0001061】対応
*	v26.00.01	2016/07/28	FJ）柳		【IT1-2016-0000100】異動区分選択切替マッピング漏れ対応
*   v26.00.00	2016/07/29  FJ) 原田	【ANK-2765-00-00】認証IDの統一化
*   v40.00.00	2018/11/09  FJ) 舘山    【ANK-3412-00-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光ネット「シンプルプラン」追加対応
*	v73.00.00	2024/11/21  FJ)森       【ANK-4493-00-00】【eo定期】 光配線マンションのコースアップ対応
*	v74.00.00	2025/01/07	FJ) 森下	【ANK-4592-00-00】テレビ新コース（スカパー用）導入対応
*********************************************************************/
package eo.web.webview.KKA16701SF;

import static eo.web.webview.common.JKKOneStopApiCommonUtil.checkRegulationForUpdateApi;
import static eo.web.webview.common.JKKOneStopApiCommonUtil.getReceiveXml;

import java.util.Arrays;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.model.common.check.HalfCharCheck;
import com.fujitsu.futurity.model.common.check.LengthCheck;
import com.fujitsu.futurity.model.common.check.MixCharCheck;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
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.JPCModelConstant;
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.KKA16701SF.KKW02701SFConst;
import eo.web.webview.commonOneStop.JCCScreenConst;
import eo.web.webview.commonOneStop.JCCWebCommon;
import eo.web.webview.commonOneStop.JCKScreenConst;
import eo.web.webview.commonOneStop.JKKCommonConst;
import eo.web.webview.common.JKKOneStopApiCommonUtil;
import eo.web.webview.commonOneStop.JKKScreenConst;
import eo.web.webview.common.OneStopDataBeanAccess;
import eo.web.webview.commonOneStop.JCCMessageCache;
import eo.web.webview.mapping.KKSV0061_KKSV0061OPDBMapper;
import eo.web.webview.mapping.KKSV0062_KKSV0062OPDBMapper;
import eo.web.webview.mapping.KKSV0394_KKSV0394OPDBMapper;
import eo.web.webview.mapping.KKSV0395_KKSV0395OPDBMapper;
import eo.web.webview.mapping.KKSV0396_KKSV0396OPDBMapper;
import eo.web.webview.mapping.KKSV0463_KKSV0463OPDBMapper;
import eo.web.webview.mapping.KKSV0551_KKSV0551OPDBMapper;
import eo.web.webview.mapping.KKSV0820_KKSV0820OPDBMapper;

/**
* KKW02701のビューロジックです。 <p>
*<BR>
* @author 富士通
*/
@SuppressWarnings("serial")
public class KKA16701SFLogic 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";
	//ANK-4493-00-00 ADD START
	/** 料金コースコード（A57：マンションタイプ グローバル 光配線 10G） */
	private static final String PCRS_CD_A74 = "A74";
	//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";
	
// ANK-2631-00-00 2015/08/06 ADD START
	/** ワンストップ返却用ワーニングメッセージ格納Map */
	private Map<String, String[]> warMsgMap = null;
	/** ワンストップ返却用単関連エラーメッセージ格納Map */
	private Map<String, String[]> tkckErrMsgMap = null;
	/** ワンストップ返却用エラーメッセージ格納Map */
	private Map<String, String[]> errMsgMap = null;
	/** ワンストップ返却用SIFエラー格納Map */
	private Map<String, String[]> sifErrMap = null;
	/** ワンストップ用受信パラメタ格納Map */
	private Map<String, Object> requestMap = null;
	/** 機能コード */
	private String funcCode = null;
	/** インターフェイスID */
	private static final String IF_ID = "KKIFE292";
	/** ワンストップ用ワーニング保持リスト */
	private List<Map<String, String>> warnList = null;
	/** コード区分リスト格納用Map */
	private Map<String, List<Map<String, String>>> cdDivListMap = null;
	/** ワンストップ処理時異動区分(00054:コース変更予約取消) */
	private static final String OS_IDO_DIV = JKKCommonConst.IDO_DIV_VALUE_00054;
	
	/** サービスコード */
	private String svc_cd = null;
	/** 料金グループコード */
	private String prc_grp_cd = null;
	/** 料金コースコード */
	private String prcs_cd = null;
	/** 料金プランコード */
	private String pplan_cd = null;
// ANK-2631-00-00 2015/08/06 ADD END
	// 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
	
	// IT1-2016-0000100 2016/07/28 ADD START
	// サービス提供履歴フラグ
	private String svcTkRrkFlg = "0";
	// IT1-2016-0000100 2016/07/28 ADD END

// ANK-2631-00-00 2015/08/06 ADD START
	/**
	 * ワンストップ用APIコントロールメソッド
	 * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean apiControl() throws Exception
	{
		try
		{
			try
			{
				// API用初期処理
				if (!this.apiInit())
				{
					// 業務規制中の為処理終了
					return true;
				}
				
				// ワンストップ独自単項目チェック
				if (!this.singleChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// ワンストップ独自共通関連チェック
				if (!this.commonKnrnChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// 初期処理用DataBean上書き処理
				this.overwriteDataBeanForInit();
				
				//////////////////////////////////////////
				// コース履歴画面 初期表示処理
				//////////////////////////////////////////
				this.init();
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}

				// ワンストップ独自関連チェック
				if (!this.knrnChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				//////////////////////////////////////////
				// 予約取消確認ボタン押下処理
				//////////////////////////////////////////
				this.forwardRsvClCfm();
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// 機能コード"1"の場合のみ、確定ボタン押下処理
				if (JKKCommonConst.FUNC_CODE_1.equals(funcCode))
				{
					//////////////////////////////////////
					// 更新ボタン押下処理
					//////////////////////////////////////
					this.forwardFix();
					
					// メッセージチェック
					if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
					{
						// エラー発生の為処理終了
						return true;
					}
				}
				
				// API用終了処理(リターンコード00(正常終了))
				this.apiTerminal("00");
			}
			catch (JCCWebServiceException wse)
			{
				// サービスIFエラー処理
				JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID);
				X31CMessageResult msgResult = wse.getMessageList();
				JKKOneStopApiCommonUtil.sifErrChk(this, msgResult, sifErrMap, warnList, IF_ID);
			}
		}
		catch (Exception e)
		{
			// 例外発生時はリターンコード99(システムエラー)
			JKKOneStopApiCommonUtil.printErrorLog(getSessionId(), "KKIFE292_コース履歴_ネット予約取消確認サービスにて例外が発生しました。", e);
			this.apiTerminal("99");
		}
		catch (Throwable er)
		{
			
		}
		return true;
	}
// ANK-2631-00-00 2015/08/06 ADD END

// ANK-2631-00-00 2015/08/06 ADD START
	/**
	 * ワンストップ用API初期処理メソッド
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean apiInit() throws Exception
	{
		// 受信データXML⇒Map変換
		requestMap = (Map<String, Object>)getReceiveXml(getSessionId()).get(IF_ID + "_RECEIVE");
		
		// 機能コード取得(業務規制チェック用に単項目チェック前に取得)
		funcCode = (String) requestMap.get("func_code");
		
		// 機能コードが"2"以外の場合、業務規制チェック
		if (!JKKCommonConst.FUNC_CODE_2.equals(funcCode)
				&& !checkRegulationForUpdateApi(this))
		{
			// エラーメッセージを設定
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5001", warnList, funcCode, IF_ID);
			return false;
		}
		
		// エラー・ワーニングメッセージマップ作成
		this.createMsgMap();
		
		// ワーニングリスト生成
		warnList = new ArrayList<Map<String, String>>();
		
		return true;
	}
// ANK-2631-00-00 2015/08/06 ADD END

// ANK-2631-00-00 2015/08/06 ADD START
	/**
	 * メッセージマップ作成処理
	 * 画面独自処理にて発生しうるエラーメッセージをMapに格納する
     * <BR>
	 * @throws Exception 
	 */
	private void createMsgMap() throws Exception
	{
		// メッセージ読み込み
		JCCMessageCache.setMessageCache();
		
		// ワーニングメッセージ格納Map組み立て
		warMsgMap = new HashMap<String, String[]>();
		warMsgMap.put(JCCMessageCache.getMessage("EKB5950--I", new String[]{""}), new String[]{"W0001", ""});
		warMsgMap.put(JCCMessageCache.getMessage("EKB5960--Q", new String[]{""}), new String[]{"W0002", ""});
		warMsgMap.put(JCCMessageCache.getMessage("EKB8820--Q", new String[]{""}), new String[]{"W0003", ""});

		// 単関連エラーメッセージ格納Map組み立て
		tkckErrMsgMap = new HashMap<String, String[]>();
		//tkckErrMsgMap.put(JCCMessageCache.getMessage("EKB8770-KW", new String[]{"請求先名(カナ)"}), new String[]{"E5002", "kksv040505_shs_kana"});
		//tkckErrMsgMap.put(JCCMessageCache.getMessage("EKB8770-KW", new String[]{"請求先名(カナ)"}), new String[]{"E5028", "rsv_apry_ymd"});
		// ワンストップ返却用エラーメッセージ格納Map組み立て 
		errMsgMap = new HashMap<String, String[]>();
		// OM-2016-0000943 ADD START
		errMsgMap.put(JCCMessageCache.getMessage("EKBA160-KW", new String[]{""}), new
				String[]{"E5006", ""});
		// OM-2016-0000943 ADD END
		// ANK-4287-00-00 ADD START
		errMsgMap.put(JCCMessageCache.getMessage("EKBF750-KW", new String[]{""}), new
				String[]{"E5009", ""});
		// ANK-4287-00-00 ADD END
	}
// ANK-2631-00-00 2015/08/06 ADD END

// ANK-2631-00-00 2015/08/06 ADD START
	/**
	 * ワンストップ用単項目チェックメソッド
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	private boolean singleChkForOneStop() throws Exception
	{
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();
		String itemName = null;
		String itemValue = null;
		
		// 機能コード
		itemName = "func_code";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (!JKKCommonConst.FUNC_CODE_1.equals(itemValue)
					&& !JKKCommonConst.FUNC_CODE_2.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// SYSID
		itemName = "sysid";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// サービス契約番号
		itemName = "svc_kei_no";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由大分類コード
		itemName = "ido_rsn_dbri_cd";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 2))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由中分類コード
		itemName = "ido_rsn_cbri_cd";
		if (requestMap.containsKey(itemName))
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 2))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由メモ
		itemName = "ido_rsn_memo";
		if (requestMap.containsKey(itemName))
		{
			itemValue = (String)requestMap.get(itemName);
// IT1-2015-0000095 2015/09/07 ADD START 【ワンストップ用】
			if (!MixCharCheck.isMix1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
// IT1-2015-0000095 2015/09/07 ADD END 【ワンストップ用】
			if (!LengthCheck.isLength2Check(itemValue, 1, 100))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// ユーザID
		itemName = "user_id";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength2Check(itemValue, 6, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
				
		// エラーが存在する場合
		if (errList.size() > 0)
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "10", errList, warnList, funcCode, IF_ID);
			return false;
		}
		
		return true;
	}
// ANK-2631-00-00 2015/08/06 ADD END

// ANK-2631-00-00 2015/08/06 ADD START
	/**
	 * ワンストップ用共通関連チェックメソッド
	 * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	private boolean commonKnrnChkForOneStop() throws Exception
	{
		// dataBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// チェック対象パラメタの退避
		String sysid = (String)requestMap.get("sysid");
		String svcKeiNo = (String)requestMap.get("svc_kei_no");
		String userId = (String)requestMap.get("user_id");
		String idoDiv = OS_IDO_DIV;
		String idoRsnDbriCd = (String)requestMap.get("ido_rsn_dbri_cd");
		String idoRsnCbriCd = (String)requestMap.get("ido_rsn_cbri_cd");
		
		// 取得対象コード種別（※なし）
		List<String> cdSbtList = new ArrayList<String>();
		
		// 運用日付
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// SYSID・サービス契約番号・ユーザIDの存在チェック＋コード種別の取得
		// ■KKSV0820
		HashMap<String, Object> kksv0820ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0820InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0820OutputMap = new HashMap<String, Object>();
		
		// パラメタ設定
		kksv0820ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0820");
		kksv0820ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0820OP");
		
		// 上りマッピング
		KKSV0820_KKSV0820OPDBMapper kksv0820Mapper = new KKSV0820_KKSV0820OPDBMapper();
		kksv0820Mapper.setKKSV082001CC(paramBean, kksv0820InputMap, opeDate, sysid, svcKeiNo, userId, cdSbtList);
		
		invokeService(kksv0820ParamMap, kksv0820InputMap, kksv0820OutputMap);
		
		// SYSID存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistSysid(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5002", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約番号存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistSvcKeiNo(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5003", warnList, funcCode, IF_ID);
			return false;
		}
		
		// ユーザID存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistUserId(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5004", warnList, funcCode, IF_ID);
			return false;
		}
		
		// コード区分リストの退避
		Map<String, Object> kksv082001ccMap = (Map<String, Object>) kksv0820OutputMap.get("KKSV082001CC");
		Map<String, Object> codeMeishoKanriMap = (Map)kksv082001ccMap.get("codeMeishoKanriMap");
		cdDivListMap = (Map)codeMeishoKanriMap.get("rslt_cd_sbt_map");
		
		// 異動理由の大分類・中分類の組み合わせチェック／サービス契約の異動可能チェック用のサービス呼び出し
		OneStopDataBeanAccess osBean = new OneStopDataBeanAccess();
		osBean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, sysid);
		osBean.sendMessageString("選択サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		osBean.sendMessageString("運用日付", X31CWebConst.DATABEAN_SET_VALUE,  opeDate);
		// IT1-2016-0000100 2016/07/28 ADD START
		osBean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		// IT1-2016-0000100 2016/07/28 ADD END
		
		OneStopDataBeanAccess[] paramOsBean = {osBean};
		
		// ■KKSV0061
		HashMap<String, Object> kksv0061ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0061InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0061OutputMap = new HashMap<String, Object>();
		
		// パラメタ設定
		kksv0061ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0061);
		kksv0061ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0061OP);
		
		// 上りマッピング
		KKSV0061_KKSV0061OPDBMapper kksv0061Mapper = new KKSV0061_KKSV0061OPDBMapper();
		kksv0061Mapper.setKKSV006101SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0061Mapper.setKKSV006102SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_3);
		kksv0061Mapper.setKKSV006103SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_3);
		
		invokeService(kksv0061ParamMap, kksv0061InputMap, kksv0061OutputMap);
		
		// 取得情報の下りマッピング
		kksv0061Mapper.getKKSV006101SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006102SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006103SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006104SC(paramOsBean, kksv0061OutputMap);
		
		// ■KKSV0062
		HashMap<String, Object> kksv0062ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0062InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0062OutputMap = new HashMap<String, Object>();
		
		kksv0062ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0062);
		kksv0062ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0062OP);
		
		// 上りマッピング
		KKSV0062_KKSV0062OPDBMapper kksv0062Mapper = new KKSV0062_KKSV0062OPDBMapper();
		kksv0062Mapper.setKKSV006201SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006202SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006203SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006205SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006206SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006207SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_6);
		kksv0062Mapper.setKKSV006208SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006209SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006210SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006212SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006221SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		// 2016/06/03 ANK-2687-00-00 ADD START
		kksv0062Mapper.setKKSV006222CC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		// 2016/06/03 ANK-2687-00-00 ADD END
		// IT1-2016-0000100 2016/07/28 ADD START
		kksv0062Mapper.setKKSV006223SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		// IT1-2016-0000100 2016/07/28 ADD END
		invokeService(kksv0062ParamMap, kksv0062InputMap, kksv0062OutputMap);
		
		// 取得情報の下りマッピング
		kksv0062Mapper.getKKSV006201SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006205SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006207SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006209SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006210SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006211SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006208SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006221SC(paramOsBean, kksv0062OutputMap);
		Map<?, ?> kksv006201scMap = (Map<?, ?>) kksv0062OutputMap.get("KKSV006201SC");
		List<?> ekk0081a010List = (List<?>) kksv006201scMap.get("EKK0081A010CBSMsg1List");
		Map<?, ?> ekk0081a010Map = (Map<?, ?>) (null != ekk0081a010List && 0 < ekk0081a010List.size() ? ekk0081a010List.get(0) : null);
		String prcGrpCd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("prc_grp_cd") : "");
		
		this.svc_cd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("svc_cd") : "");
		this.prc_grp_cd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("prc_grp_cd") : "");
		this.prcs_cd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("pcrs_cd") : "");
		this.pplan_cd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("pplan_cd") : "");
		
		//料金グループコードが、 Wi-Fi／EMobile／UQ-WiMAX の何れかの場合
		if ("07".equals(prcGrpCd) || "08".equals(prcGrpCd) || "09".equals(prcGrpCd) || "10".equals(prcGrpCd))
		{
			kksv0062Mapper.getKKSV006212SC(paramOsBean, kksv0062OutputMap);
		}
		
		// IT1-2016-0000100 2016/07/28 ADD START
		kksv0062Mapper.getKKSV006223SC(paramOsBean, kksv0062OutputMap);
		
		Map<?, ?> kksv006223scMap = (Map<?, ?>)kksv0062OutputMap.get("KKSV006223SC");
		List<?> eKK0081B024List = (List<?>)kksv006223scMap.get("EKK0081B024CBSMsg1List");
		Map<?, ?> eKK0081B024Map = null;
		String svcKeiStat = "";
		
		// サービス契約履歴一覧照会マップ.サービス契約履歴一覧照会明細がNULLでない
		// かつ サービス契約履歴一覧照会マップ.サービス契約履歴一覧照会明細のサイズが0より大きい場合
		if (eKK0081B024List != null && 0 < eKK0081B024List.size()) {
			for (int i = 0; i < eKK0081B024List.size(); i++) {
				eKK0081B024Map = (Map<?, ?>)eKK0081B024List.get(i);
				
				svcKeiStat = (String)eKK0081B024Map.get("svc_kei_stat");
				
				// サービス契約ステータス = "100"(サービス提供中)の場合、
				// サービス提供履歴フラグに"1"(サービス提供履歴あり)を設定する
				if (JKKCommonConst.SVC_KEI_STAT_100.equals(svcKeiStat)) {
					svcTkRrkFlg = "1";
					break;
				}
			}
		}
		// IT1-2016-0000100 2016/07/28 ADD END
		
		// ■KKSV0463
		HashMap<String, Object> kksv0463ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0463InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0463OutputMap = new HashMap<String, Object>();
		
		kksv0463ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0463);
		kksv0463ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0463OP);
		
		// 上りマッピング
		KKSV0463_KKSV0463OPDBMapper kksv0463Mapper = new KKSV0463_KKSV0463OPDBMapper();
		kksv0463Mapper.setKKSV046301SC(paramOsBean, kksv0463InputMap, JPCModelConstant.FUNC_CD_1, idoDiv);
		
		// 異動区分選択異動理由切替サービスを実施
		invokeService(kksv0463ParamMap, kksv0463InputMap, kksv0463OutputMap);
		
		// ■KKSV0551
		HashMap<String, Object> kksv0551ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0551InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0551OutputMap = new HashMap<String, Object>();
		
		kksv0551ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0551);
		kksv0551ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0551OP);
		
		// 上りマッピング
		KKSV0551_KKSV0551OPDBMapper kksv0551Mapper = new KKSV0551_KKSV0551OPDBMapper();
		kksv0551Mapper.setKKSV055101SC(paramOsBean, kksv0551InputMap, JPCModelConstant.FUNC_CD_1, idoRsnDbriCd);
		
		// 異動区分選択異動理由大分類切替サービスを実施
		invokeService(kksv0551ParamMap, kksv0551InputMap, kksv0551OutputMap);
		
		// 異動理由大分類・中分類組合せチェック
		if (!JKKOneStopApiCommonUtil.checkIdoRsnCdPair(kksv0463OutputMap, kksv0551OutputMap, osBean, idoRsnDbriCd, idoRsnCbriCd))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5005", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約異動可能チェック
		if (!JKKOneStopApiCommonUtil.checkSvcKeiIdoPsb(kksv0062OutputMap, osBean, idoDiv))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5006", warnList, funcCode, IF_ID);
			return false;
		}
		
		return true;
	}
// ANK-2631-00-00 2015/08/06 ADD END

// ANK-2631-00-00 2015/08/06 ADD START
	/**
	 * ワンストップ用単関連チェックメソッドです。
	 * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	private boolean knrnChkForOneStop() throws Exception
	{
		// サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// サービスの種類が「eo光ネット」ではない場合エラー
		String svcCd = svcFormBean.sendMessageString("サービスコード", X31CWebConst.DATABEAN_GET_VALUE);
		if (!JKKCommonConst.SVC_CD_NET.equals(svcCd))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5007", warnList, funcCode, IF_ID);
			
			return false;
		}
		
		return true;
	}
// ANK-2631-00-00 2015/08/06 ADD END

// ANK-2631-00-00 2015/08/06 ADD START
	/**
	 * 初期表示処理用DataBean上書き処理
	 * (ここでは顧客契約引継情報を上書きする)
     * <BR>
	 */
	private void overwriteDataBeanForInit()
	{
		// 初期処理用の引継リスト作成
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> hktgList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> paraMap = new HashMap<String, Object>();
		
		// 異動区分(00054:コース変更予約取消 固定)
		inMap.put(JKKCommonConst.HKTGI_IDO_DIV, JKKCommonConst.IDO_DIV_VALUE_00054);
		// サービス契約番号
		inMap.put(JKKCommonConst.HKTGI_SVC_KEI_NO, (String)requestMap.get("svc_kei_no"));
		// 異動理由コード
		inMap.put(JKKCommonConst.HKTGI_IDO_RSN_CD, new String[]{(String)requestMap.get("ido_rsn_dbri_cd")});
		// 異動理由メモ
		inMap.put(JKKCommonConst.HKTGI_IDO_RSN_MEMO, (String)requestMap.get("ido_rsn_memo"));
		// SYSID
		inMap.put(JKKCommonConst.HKTGI_SYSID, (String)requestMap.get("sysid"));
		// サービスコード
		inMap.put(JKKCommonConst.HKTGI_SVC_CD, this.svc_cd);
		// 料金グループコード
		inMap.put(JKKCommonConst.HKTGI_PRC_GRP_CD, this.prc_grp_cd);
		// 料金コースコード
		inMap.put(JKKCommonConst.HKTGI_PCRS_CD, this.prcs_cd);
		// 料金プランコード
		inMap.put(JKKCommonConst.HKTGI_PPLAN_CD, this.pplan_cd);
		// 変更前サービスコード
		inMap.put(JKKCommonConst.HKTGI_SVC_CD_BF, this.svc_cd);
		// 変更前料金グループコード
		inMap.put(JKKCommonConst.HKTGI_PRC_GRP_CD_BF, this.prc_grp_cd);
		// 変更前料金コースコード
		inMap.put(JKKCommonConst.HKTGI_PCRS_CD_BF, this.prcs_cd);
		// 変更前料金プランコード
		inMap.put(JKKCommonConst.HKTGI_PPLAN_CD_BF, this.pplan_cd);

		hktgList.add(inMap);
		paraMap.put(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, hktgList);
		
		JCCWebCommon.setScreenInfo(this, "KKA16701", paraMap);
		
		
		// 遷移先画面IDを設定 --ワンストップでは遷移先画面は「サービス契約情報更新・照会（ｅｏ光ネット）」固定--
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
// IT1-2015-0000093 2015/09/04 ADD START 【ワンストップ用】
		commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)requestMap.get("user_id"));
// IT1-2015-0000093 2015/09/04 ADD END   【ワンストップ用】
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00128);
	}
// ANK-2631-00-00 2015/08/06 ADD END

// ANK-2631-00-00 2015/08/06 ADD START
	/**
	 * ワンストップ用API終了メソッドです。
     * <BR>
     * @param returnCd リターンコード
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean apiTerminal(String returnCd) throws Exception
	{
		JKKOneStopApiCommonUtil.setReturnXml(this, returnCd, null, warnList, funcCode, IF_ID);
		return true;
	}
// ANK-2631-00-00 2015/08/06 ADD END

/* ++++++++++ v5.00.00 追加開始 ++++++++++ */

	/**
	 * 初期表示処理です。
	 * <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);
			}
		}
		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 Exception
	{
		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);
		mapper.setKKSV039527SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
	// 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;
	}
	
	/**
	 * 引数に値が設定されているか判定します。
	 * <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-4468-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)
			|| 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
	// 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
	// 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
}
