/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：リモートサポートプラスオプション解約
*   ソースファイル名：KKA16801SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年07月13日
*＜機能概要＞
*   リモートサポートプラス解約連携を行います。
*   ※このViewロジックはkoptWebBのKKW02516SFLogic(リモートサポートプラスオプション解約)をベースに作成しています。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00       2011/07/13   FJ）砂川    新規作成
*	v2.00   	2012/05/13   FJ) 砂川	【IT1-2012-0000433】利用終了日が最大年月日の場合は表示しないように修正
*   v3.00       2012/03/14   FJ) 高田    利用終了日初期化対応
*   v3.01       2012/04/16   FJ) 高田    割引変更メッセージ対応
*   v3.02       2012/04/30   FJ) 森本    異動理由メモ
*	v3.03       2012/06/25   FJ) 砂川    【IT2-2012-0001034】オプションキャンセルの返却メッセージ対応
*   v4.00   	2012/07/12   FJ) 近藤	【ANK-0571-00-00】オプションの表示用サービス開始日変更対応
*   v4.01   	2012/10/22   FJ) 砂川	【IT1-2012-0001599】解約モードで利用終了日に運用日を初期値として設定する対応
*   v4.02       2013/01/05   FJ) 鷲塚   【IT1-2013-0000140】画面とS-IFのサーバチェック不整合対応
*   v4.03       2013/02/22   FJ) 清崎   【IT1-2013-0000299】申込画面入力支援ワーク情報更新呼出対応
*   v23.00.00	2015/09/30	 FJ）河邊	【ANK-2694-00-00】【WO7】ワンストップ案件（ＳＴＥＰ２）
*	v26.00.00   2016/06/03	FJ) 笠川	【ANK-2687-00-00】プレミアムサポート施策
*	v26.00.01   2016/07/06   FJ)柳      【ANK-2856-00-00】（客A）回復事務手数料の課金
**********************************************************************/
package eo.web.webview.KKA16801SF;

import eo.web.webview.JCCWebBusinessLogic;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
// ANK-2694-00-00 DEL START【ワンストップ用】
//import eo.web.webview.KKW02404SF.KKW02404SFConst;
// ANK-2694-00-00 DEL END【ワンストップ用】
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.commonOneStop.JKKCommonConst;
import eo.web.webview.commonOneStop.JKKScreenConst;
import eo.web.webview.commonOneStop.JKKSetSessionMessage;
import eo.web.webview.mapping.KKSV0215_KKSV0215OPDBMapper;
import eo.web.webview.mapping.KKSV0216_KKSV0216OPDBMapper;
import eo.web.webview.mapping.KKSV0217_KKSV0217OPDBMapper;
import eo.web.webview.mapping.KKSV0218_KKSV0218OPDBMapper;

// ANK-2694-00-00 ADD START【ワンストップ用】
import java.util.List;
import java.util.Map;
import com.fujitsu.futurity.model.common.check.DatetimeCheck;
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 eo.common.constant.JKKStrConst;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.common.JKKOneStopApiCommonUtil;
import eo.web.webview.common.OneStopDataBeanAccess;
import eo.web.webview.common.OneStopDataBeanAccessArray;
import eo.web.webview.commonOneStop.JCCMessageCache;
import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import eo.web.webview.KKA17201SF.KKW02301SFConst;
import eo.web.webview.mapping.KKSV0042_KKSV0042OPDBMapper;
import eo.web.webview.mapping.KKSV0043_KKSV0043OPDBMapper;
import eo.web.webview.mapping.KKSV0061_KKSV0061OPDBMapper;
import eo.web.webview.mapping.KKSV0062_KKSV0062OPDBMapper;
import eo.web.webview.mapping.KKSV0463_KKSV0463OPDBMapper;
import eo.web.webview.mapping.KKSV0551_KKSV0551OPDBMapper;
import eo.web.webview.mapping.KKSV0820_KKSV0820OPDBMapper;
// ANK-2694-00-00 ADD END【ワンストップ用】

/**
 * リモートサポートプラスの解約を行う。<p>
 * オプションサービス契約一覧画面より遷移します。<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")

public class KKA16801SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * メッセージエリア
	 */
	private static final  String[] MSGSTRING = {
		"リモートサポートプラスの解約",
		"リモートサポートプラスの回復",
		"リモートサポートプラスの予約取消"
		};

	// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
	private static final String RMTSPTPRS_INFO = "リモートサポートプラス情報";
	private static final String DSL = "解約";
	private static final String KAIHK = "回復";
	private static final String RSV_CLK = "予約取消";
	// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
	
// ANK-2694-00-00 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 = "KKIFE293";
	
	/** ワンストップ用ワーニング保持リスト */
	private List<Map<String, String>> warnList = null;
	
	/** ワンストップ処理時異動区分(00031:オプション設定) */
	private static final String OS_IDO_DIV = JKKCommonConst.IDO_DIV_VALUE_00031;
// ANK-2694-00-00 ADD START【ワンストップ用】
	
	// ANK-2856-00-00 2016/07/06 ADD START
	// サービス提供履歴フラグ
	private String svcTkRrkFlg = "0";
	// ANK-2856-00-00 2016/07/06 ADD END
	
// ANK-2694-00-00 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.singleKnrnChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// ワンストップ独自共通関連チェック
				if (!this.commonKnrnChkForOneStop())
				{
					//エラー発生の為処理終了
					return true;
				}
				
				// 初期処理用DataBean上書き処理及び関連チェック処理
				if (!overwriteDataBeanKnrnChkForInit())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				///////////////////////////////////////////////
				// リモートサポートプラス更新画面 初期表示処理
				///////////////////////////////////////////////
				this.actionInit();
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// DataBean上書き処理
				this.overwriteDataBean();
				
				/////////////////////////////////////////////////////////
				// リモートサポートプラス更新画面 更新確認ボタン押下処理
				/////////////////////////////////////////////////////////
				this.actionUpd();
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// 機能コード"1"の場合のみ、確定ボタン押下処理
				if (JKKCommonConst.FUNC_CODE_1.equals(funcCode))
				{
					/////////////////////////////////////////////////////////
					// リモートサポートプラス更新確認画面 確定ボタン押下処理
					////////////////////////////////////////////////////////
					this.actionFix();
					
					// メッセージチェック
					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(), "KKIFE293_リモートサポートプラス解約（ワンストップ）にて例外が発生しました。", e);
			this.apiTerminal("99");
		}
		return true;
	}
// ANK-2694-00-00 ADD END【ワンストップ用】
	
// ANK-2694-00-00 ADD START【ワンストップ用】
	
	/**
	 * ワンストップ用API初期処理メソッドです。
     * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean apiInit() throws Exception
	{
		// 受信データXML⇒Map変換
		requestMap = (Map<String, Object>)JKKOneStopApiCommonUtil.getReceiveXml(getSessionId()).get(IF_ID + "_RECEIVE");
		
		// 機能コード取得(業務規制チェック用に単項目チェック前に取得)
		funcCode = (String) requestMap.get("func_code");
		
		// 機能コードが"2"以外の場合、業務規制チェック
		if (!JKKCommonConst.FUNC_CODE_2.equals(funcCode)
				&& !JKKOneStopApiCommonUtil.checkRegulationForUpdateApi(this))
		{
			// エラーメッセージを設定
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5001", warnList, funcCode, IF_ID);
			return false;
		}
		
		// エラー・ワーニングメッセージマップ作成
		this.createMsgMap();
		
		// ワーニングリスト生成
		warnList = new ArrayList<Map<String, String>>();
		
		return true;
	}
// ANK-2694-00-00 ADD END【ワンストップ用】
	
// ANK-2694-00-00 ADD START【ワンストップ用】
	
	/**
	 * メッセージマップ作成処理です。
	 * 画面独自処理にて発生しうるエラーメッセージをMapに格納する。
     * <BR>
	 * @throws Exception
	 */
	private void createMsgMap() throws Exception
	{
		// メッセージ読み込み
		JCCMessageCache.setMessageCache();
			
		// ワーニングメッセージ格納Map組み立て（※なし）
		warMsgMap = new HashMap<String, String[]>();	
		
		// 単関連エラーメッセージ格納Map組み立て（※なし）
		tkckErrMsgMap = new HashMap<String, String[]>();
		
		// エラーメッセージ格納Map組み立て
		errMsgMap = new HashMap<String, String[]>();
		errMsgMap.put(JCCMessageCache.getMessage("EKB0690-NW", new String[]{"利用終了日","過去"}), new String[]{"E5013", ""});
		
		// サービスIFエラー格納Map組み立て
		// KEY=『サービスインターフェイスID,ステータス,エラー返却項目,エラーフラグ』
		sifErrMap = new HashMap<String, String[]>();
		sifErrMap.put("EKK0351C240,1100,svc_endymd,EA",  new String[]{"E5011", ""});
		sifErrMap.put("EKK0351C240,1100,svc_endymd,EB",  new String[]{"E5012", ""});
	}
// ANK-2694-00-00 ADD END【ワンストップ用】
	
// ANK-2694-00-00 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);
			if (!MixCharCheck.isMix1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			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));
			}
		}
		
		// 利用終了日
		itemName = "use_endymd";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!DatetimeCheck.isDateCheck(itemValue) || !JPCUtilCommon.checkDate(itemValue, 8))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 8))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// エラーが存在する場合
		if (errList.size() > 0)
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "10", errList, warnList, funcCode, IF_ID);
			return false;
		}
		
		return true;
	}
// ANK-2694-00-00 ADD END【ワンストップ用】
	
// ANK-2694-00-00 ADD START【ワンストップ用】
	
	/**
	 * ワンストップ独自単関連チェック処理です。
     * <BR>
     * @return boolean
     * @throws Exception
	 */
	private boolean singleKnrnChkForOneStop() throws Exception
	{
		// 単項目関連チェックは存在しない
		
		return true;
	}
// ANK-2694-00-00 ADD END【ワンストップ用】
	
// ANK-2694-00-00 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, "E5003", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約番号存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistSvcKeiNo(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5004", warnList, funcCode, IF_ID);
			return false;
		}
		
		// ユーザID存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistUserId(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5005", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 異動理由の大分類・中分類の組み合わせチェック／サービス契約の異動可能チェック用のサービス呼び出し
		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);
		// ANK-2856-00-00 2016/07/06 ADD START
		osBean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		// ANK-2856-00-00 2016/07/06 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
		// ANK-2856-00-00 2016/07/06 ADD START
		kksv0062Mapper.setKKSV006223SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		// ANK-2856-00-00 2016/07/06 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") : "");
		//料金グループコードが、 Wi-Fi／EMobile／UQ-WiMAX の何れかの場合
		if ("07".equals(prcGrpCd) || "08".equals(prcGrpCd) || "09".equals(prcGrpCd) || "10".equals(prcGrpCd))
		{
			kksv0062Mapper.getKKSV006212SC(paramOsBean, kksv0062OutputMap);
		}
		
		// ANK-2856-00-00 2016/07/06 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;
				}
			}
		}
		// ANK-2856-00-00 2016/07/06 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, "E5006", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約異動可能チェック
		if (!JKKOneStopApiCommonUtil.checkSvcKeiIdoPsb(kksv0062OutputMap, osBean, idoDiv))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5007", warnList, funcCode, IF_ID);
			return false;
		}
		
		return true;
	}
// ANK-2694-00-00 ADD END【ワンストップ用】
	
// ANK-2694-00-00 ADD START【ワンストップ用】
	
	/**
	 * 初期処理用DataBean上書き処理及び関連チェック処理です。
	 * <BR>
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	private boolean overwriteDataBeanKnrnChkForInit()
	{
		// オプションサービス契約一覧初期表示サービスの呼び出し 
		
		// 運用日付
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		// サービス契約番号
		String svcKeiNo = (String)requestMap.get("svc_kei_no");
		
		OneStopDataBeanAccess osBean = new OneStopDataBeanAccess();
		osBean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		osBean.sendMessageString("運用年月日", X31CWebConst.DATABEAN_SET_VALUE,  opeDate);
		osBean.sendMessageString("異動区分", X31CWebConst.DATABEAN_SET_VALUE,  OS_IDO_DIV);
		
		OneStopDataBeanAccess[] paramOsBean = {osBean};
		
		// ■KKSV0042
		HashMap<String, Object> kksv0042ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0042InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0042OutputMap = new HashMap<String, Object>();		
		
		// サービスパラメタ設定
		kksv0042ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0042);
		kksv0042ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0042OP);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0042_KKSV0042OPDBMapper mapper = new KKSV0042_KKSV0042OPDBMapper();
		kksv0042InputMap = mapper.setKKSV004201SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_2);		// サービス契約一意照会
		kksv0042InputMap = mapper.setKKSV004202SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// サービス契約共通情報一覧照会
		kksv0042InputMap = mapper.setKKSV004203SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_2);		// 督促一意照会
		kksv0042InputMap = mapper.setKKSV004204SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// コード名称管理一意照会：異動区分名称
		kksv0042InputMap = mapper.setKKSV004205SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// コード名称管理一意照会：サービス契約ステータス名称
		kksv0042InputMap = mapper.setKKSV004206SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// 割引サービス契約一覧照会
		kksv0042InputMap = mapper.setKKSV004207SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_4);		// サービス契約内訳<eo光電話>一覧照会
		kksv0042InputMap = mapper.setKKSV004208SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// サービス契約内訳一覧照会
		kksv0042InputMap = mapper.setKKSV004209SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// オプションチャンネル情報一覧照会
		// 2016/06/03 ANK-2687-00-00 ADD START ワンストップではセットしているだけ
		kksv0042InputMap = mapper.setKKSV004211CC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// お客様ランク情報一意照会
		// 2016/06/03 ANK-2687-00-00 ADD END ワンストップではセットしているだけ
		// オプションサービス契約一覧照会初期表示サービス実行
		invokeService(kksv0042ParamMap, kksv0042InputMap, kksv0042OutputMap);

		// 取得情報の下りマッピング
		mapper.getKKSV004201SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004202SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004203SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004204SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004205SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004206SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004208SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004209SC(paramOsBean, kksv0042OutputMap);
		
		// ネットサービスチェック
		// ワンストップ用擬似データビーン.サービス契約共通情報一覧照会明細[0].料金グループコードが「ｅｏ光ネットホームタイプ、
		// ｅｏ光ネットメゾンタイプ、ｅｏ光ネットマンションタイプ」以外であるか確認する
		OneStopDataBeanAccessArray ekk0081a010cbsmsg1ListArray = osBean.getDataBeanArray(KKW02301SFConst.EKK0081B010CBSMSG1LIST);
		OneStopDataBeanAccess ekk0081a010cbsmsg1List = ekk0081a010cbsmsg1ListArray.getDataBean(0);
		String prcGcpCd = ekk0081a010cbsmsg1List.sendMessageString(KKW02301SFConst.PRC_GRP_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
		if (!JKKStrConst.CD00133_02.equals(prcGcpCd) && 
				!JKKStrConst.CD00133_03.equals(prcGcpCd) &&
						!JKKStrConst.CD00133_04.equals(prcGcpCd))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5008", warnList, funcCode, IF_ID);
			return false;
		}
		//////////////////////////////////////////////////////////////////////////////
		// オプションサービス契約一覧照会画面 オプションサービス契約一覧初期表示処理
		//////////////////////////////////////////////////////////////////////////////
		
		osBean.sendMessageString(KKW02301SFConst.SORT_ITEM, X31CWebConst.DATABEAN_SET_VALUE, KKW02301SFConst.SORT_ITEM_OPT_SVC_CD_NM);
		osBean.sendMessageString(KKW02301SFConst.SORT_KBN, X31CWebConst.DATABEAN_SET_VALUE, KKW02301SFConst.SORT_KBN_ASC);
		
		// ■KKSV0043
		HashMap<String, Object> kksv0043ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0043InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0043OutputMap = new HashMap<String, Object>();	
		
		kksv0043ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0043);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0043_KKSV0043OPDBMapper mapper_0043 = new KKSV0043_KKSV0043OPDBMapper();
		mapper_0043.setKKSV004301SC(paramOsBean, kksv0043InputMap, JPCModelConstant.FUNC_CD_1);
		mapper_0043.setKKSV004303CC(paramOsBean, kksv0043InputMap, JPCModelConstant.FUNC_CD_1);
		
		// オプションサービス契約一覧照会サービス実行
		invokeService(kksv0043ParamMap, kksv0043InputMap, kksv0043OutputMap);
		
		mapper_0043.getKKSV004301SC(paramOsBean, kksv0043OutputMap,false);
		mapper_0043.getKKSV004303CC(paramOsBean, kksv0043OutputMap);

		// 退避用オプションサービス契約設定
		OneStopDataBeanAccess taihiOpsSvKeiList = null;
		
		// ワンストップ用擬似データビーン.オプションサービス契約の件数分、処理を行う
		OneStopDataBeanAccessArray ekk0351b002cbsmsg1ListArray = osBean.getDataBeanArray(KKW02301SFConst.OP_SVC_KEI_LIST);
		OneStopDataBeanAccess ekk0351b002cbsmsg1List = null;
		for (int i = 0; i < ekk0351b002cbsmsg1ListArray.size(); i++)
		{
			ekk0351b002cbsmsg1List = ekk0351b002cbsmsg1ListArray.getDataBean(i);
			
			// オプションサービス契約.オプションサービスコードがリモートサポートプラス以外であるか確認
			if (!JKKStrConst.OP_SVC_CD_RMTSPRT_PLUS.equals(ekk0351b002cbsmsg1List.sendMessageString(KKW02301SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				continue;
			}
			
			// オプションサービス契約.オプションサービス契約ステータスが解約済または、キャンセル済であるか確認
			if (JKKStrConst.CD00037_DSL_ZM.equals(ekk0351b002cbsmsg1List.sendMessageString(KKW02301SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_GET_VALUE)) ||
					JKKStrConst.CD00037_CANCEL_ZM.equals(ekk0351b002cbsmsg1List.sendMessageString(KKW02301SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				continue;
			}
			
			// 退避用オプションサービス契約にオプションサービス契約を設定する
			taihiOpsSvKeiList = ekk0351b002cbsmsg1List;
			break;
		}
		
		// 存在チェック
		// 退避用オプションサービス契約がnullであるか確認
		if (taihiOpsSvKeiList == null)
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5009", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 契約状態チェック
		// ワンストップ用擬似データビーン.サービス契約共通情報一覧照会明細[0].サービス契約ステータスが
		// 「締結済、サービス提供中、休止・中断中」以外または、
		// 退避用オプションサービス契約.オプションサービス契約ステータスが
		// 「締結済、サービス提供中、休止・中断中」以外の場合、以下の処理を行う
		if (svcKeiStatCheck(ekk0081a010cbsmsg1List) || taihiOpsSvKeiCheck(taihiOpsSvKeiList))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5010", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 初期処理用の引継リスト作成
		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>();
		
		// 処理区分（解約）
		inMap.put(JKKCommonConst.HKTGI_TRAN_DIV, JKKCommonConst.OP_TRAN_DIV_DSL);
		// 異動区分(オプション設定 固定)
		inMap.put(JKKCommonConst.HKTGI_IDO_DIV, OS_IDO_DIV);
		// 異動理由コード
		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"));
		// サービス契約番号
		inMap.put(JKKCommonConst.HKTGI_SVC_KEI_NO, svcKeiNo);
		// SYSID
		inMap.put(JKKCommonConst.HKTGI_SYSID, (String)requestMap.get("sysid"));
		// オプションサービス契約番号
		inMap.put(JKKCommonConst.HKTGI_OP_SVC_KEI_NO, new String[]{taihiOpsSvKeiList.sendMessageString(KKW02301SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE)});
		// 申込番号
		inMap.put(JKKCommonConst.HKTGI_MSKM_NO, taihiOpsSvKeiList.sendMessageString(KKW02301SFConst.MSKM_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
		// 申込明細番号
		inMap.put(JKKCommonConst.HKTGI_MSKM_DTL_NO, taihiOpsSvKeiList.sendMessageString(KKW02301SFConst.MSKM_DTL_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
		
		hktgList.add(inMap);
		paraMap.put(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, hktgList);
		
		JCCWebCommon.setScreenInfo(this, "KKA16801", paraMap);
		
		// 共有フォームビーンにユーザIDを設定する
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)requestMap.get("user_id"));
		
		return true;
	}
// ANK-2694-00-00 ADD END【ワンストップ用】
	
// ANK-2694-00-00 ADD START【ワンストップ用】
	
	/**
	 * サービス契約ステータス存在チェック
	 * ワンストップ用擬似データビーン.サービス契約共通情報一覧照会明細[0].サービス契約ステータスが
	 * 「締結済、サービス提供中、休止・中断中」以外が存在するかチェックする
	 * <BR>
	 * @param ekk0081a010cbsmsg1List サービス契約共通情報一覧照会明細
	 * @return boolean true:チェックOK/false:チェックNG
	 */
	private boolean svcKeiStatCheck(OneStopDataBeanAccess ekk0081a010cbsmsg1List)
	{
		String svcKeiStat = ekk0081a010cbsmsg1List.sendMessageString(KKW02301SFConst.SVC_KEI_STAT_05, X31CWebConst.DATABEAN_GET_VALUE);
		if (JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStat) ||
				JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStat) ||
				JKKStrConst.CD00037_STAT_PAUSE.equals(svcKeiStat))
		{
			return false;
		}
		return true;
	}
// ANK-2694-00-00 ADD END【ワンストップ用】
	
// ANK-2694-00-00 ADD START【ワンストップ用】
	
	/**
	 * オプションサービス契約ステータス存在チェック
	 * 退避用オプションサービス契約.オプションサービス契約ステータスが
	 * 「締結済、サービス提供中、休止・中断中」以外が存在するかチェックする
	 * <BR>
	 * @param taihiOpsSvKeiList 退避用オプションサービス契約
	 * @return boolean true:チェックOK/false:チェックNG
	 */
	private boolean taihiOpsSvKeiCheck(OneStopDataBeanAccess  taihiOpsSvKeiList)
	{
		String opSvcKeiStat = taihiOpsSvKeiList.sendMessageString(KKW02301SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_GET_VALUE);
		if (JKKStrConst.CD00037_CNC_ZM.equals(opSvcKeiStat) ||
				JKKStrConst.CD00037_SVCTK_CHU.equals(opSvcKeiStat) ||
				JKKStrConst.CD00037_STAT_PAUSE.equals(opSvcKeiStat))
		{
			return false;
		}
		return true;
	}
// ANK-2694-00-00 ADD END【ワンストップ用】
	
// ANK-2694-00-00 ADD START【ワンストップ用】
	
	/**
	 * DataBean上書き処理です。
	 * <BR>
	 */
	private void overwriteDataBean()
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		String useEndYmd = (String)requestMap.get("use_endymd");
		// 利用終了日（年）に受信データMap.利用終了日（年）を設定
		bean.sendMessageString(KKW02516SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, useEndYmd.substring(0, 4));
		// 利用終了日（月）に受信データMap.利用終了日（月）を設定
		bean.sendMessageString(KKW02516SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, useEndYmd.substring(4, 6));
		// 利用終了日（日）に受信データMap.利用終了日（日）を設定
		bean.sendMessageString(KKW02516SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, useEndYmd.substring(6, 8));
	}
// ANK-2694-00-00 ADD END【ワンストップ用】
	
// ANK-2694-00-00 ADD START【ワンストップ用】
	
	/**
	 * ワンストップ用API終了メソッドです。
	 * <BR>
	 * @param returnCd リターンコード
	 * @throws Exception
	 */
	private void apiTerminal(String returnCd) throws Exception
	{
		JKKOneStopApiCommonUtil.setReturnXml(this, returnCd, null, warnList, funcCode, IF_ID);
	}
// ANK-2694-00-00 ADD END【ワンストップ用】
	
	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionInit() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定。
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// メッセージ表示用
		String[] msgInfo = new String[1];
		
		// DataBean設定処理（引継情報）
		setHktgiBean(paramBean);

		// 初期表示サービス呼出処理
		executeInitSvc(paramBean);
		
		// DataBean設定処理
		setDataInit(paramBean);
		
		// 処理区分の取得
		String trandiv = bean.sendMessageString(KKW02516SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		// オプションサービス契約ステータスの取得
		String op_svc_kei_stat = bean.sendMessageString(KKW02516SFConst.OP_SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 処理区分が解約の場合のメッセージ出力
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trandiv))
		{
			if(JKKCommonConst.SVC_KEI_STAT_030.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_100.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_210.equals(op_svc_kei_stat))
			{
				;
			}
			else
			{
				// オプションサービス契約ステータスが"締結済","サービス提供中","休止・中断中"のいずれでもない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"解約","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02516SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		// 処理区分が回復の場合のメッセージ出力
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trandiv))
		{
			if(JKKCommonConst.SVC_KEI_STAT_910.equals(op_svc_kei_stat))
			{
				// メッセージの設定
				msgInfo[0] = MSGSTRING[1];
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
			}
			else
			{
				// オプションサービス契約ステータスが"解約済"でない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"回復","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02516SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		// 処理区分が予約取消の場合のメッセージ出力
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trandiv))
		{
			if(JKKCommonConst.SVC_KEI_STAT_010.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_020.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_030.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
			{
				// メッセージの設定
				msgInfo[0] = MSGSTRING[2];
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
			}
			else
			{
				// オプションサービス契約ステータスが"受付済","照査済","締結済","サービス提供中"のいずれでもない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"予約取消","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02516SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * クリア処理<br>
	 * <br>
	 * １．初期表示処理を呼び出します。<br>
	 * <br>
	 * @return true:正常
	 * @throws Exception 
	 */
	public boolean actionClear() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 初期表示サービス呼出処理
		executeInitSvc(paramBean);
		
		// DataBean設定処理
		setDataInit(paramBean);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}
	
	/**
	 * 戻る処理<br>
	 * <br>
	 * １．呼び出し元画面に戻ります。<br>
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionBack() throws Exception
	{

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
	
		// 遷移先の画面IDを取得し共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 解約確認処理<br>
	 * <br>
	 *
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionUpd() throws Exception
	{
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 処理区分の取得
		String trandiv = bean.sendMessageString(KKW02516SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);

		// メッセージ表示用
		String[] msgInfo = new String[1];

		// 返却メッセージＩＤ
		String rtn_msg_id = "";

		// 処理区分が解約の場合
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trandiv))
		{
			// DataBean設定処理
			setDataDsl(paramBean);
			
			// 解約確認サービス呼出処理
			executeDslSvc(paramBean, JPCModelConstant.FUNC_CD_2);

			// 返却メッセージＩＤを取得
			rtn_msg_id = paramBean[0].sendMessageString(KKW02516SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);

			// メッセージの設定
			msgInfo[0] = MSGSTRING[0];
			
		}
		
		// 画面遷移
		if ("".equals(rtn_msg_id)) 
		{
			// 遷移先の画面IDを共有フォームBeanの項目に設定する
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_ID_KKW02517);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_NAME_KKW02517);
			
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
		}
		else
		{
			// メッセージの設定
			String[] str = getMsgRep(trandiv, rtn_msg_id);
			if (str == null) 
			{
				// メッセージ出力(IDのみ)
				JCCWebCommon.setMessageInfo(this, rtn_msg_id);
			}
			else
			{
				// メッセージ出力(置換文字あり)
				JCCWebCommon.setMessageInfo(this, rtn_msg_id, str);
			}
		}

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}
	
	/**
	 * 解約確定処理<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionFix() throws Exception
	{
		boolean result = true;
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 処理区分の取得
		String trandiv = bean.sendMessageString(KKW02516SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);

		// 返却メッセージＩＤ
		String rtn_msg_id = "";

		// メッセージ表示用
		String[] msgInfo = new String[1];
		
		// 処理区分が解約の場合
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trandiv))
		{
			// 解約確認サービス呼出処理
			executeDslSvc(paramBean, JPCModelConstant.FUNC_CD_1);
			
			// 返却メッセージＩＤを取得
			rtn_msg_id = paramBean[0].sendMessageString(KKW02516SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
			
			// メッセージの設定
			msgInfo[0] = MSGSTRING[0];
		}

		// 処理区分が回復の場合
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trandiv))
		{
			// DataBean設定処理
			setDataKaihk(paramBean);
			
			// 回復サービス呼出処理
			executeKaihkSvc(paramBean, JPCModelConstant.FUNC_CD_1);
			
			// 返却メッセージＩＤを取得
			rtn_msg_id = paramBean[0].sendMessageString(KKW02516SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
			
			// メッセージの設定
			msgInfo[0] = MSGSTRING[1];
		}
		
		// 処理区分が予約取消の場合
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trandiv))
		{
			// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
			// サービスフォームBean設定
			setDataRsvcl(paramBean);
			// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
			
			// 予約取消サービス呼出処理
			executeRsvclSvc(paramBean, JPCModelConstant.FUNC_CD_1);
			
			// IT2-2012-0001034 ADD START
			// 返却メッセージＩＤを取得
			rtn_msg_id = paramBean[0].sendMessageString(KKW02516SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
			// IT2-2012-0001034 ADD END
			
			// メッセージの設定
			msgInfo[0] = MSGSTRING[2];
		}
		
		// 画面遷移
		if ("".equals(rtn_msg_id)) 
		{
			// 遷移先の画面IDを共有フォームBeanの項目に設定する
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_ID_KKW02518);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_NAME_KKW02518);

			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, msgInfo);
		}
		else
		{
			// メッセージの設定
			String[] str = getMsgRep(trandiv, rtn_msg_id);
			if (str == null) 
			{
				// メッセージ出力(IDのみ)
				JCCWebCommon.setMessageInfo(this, rtn_msg_id);
			}
			else
			{
				// メッセージ出力(置換文字あり)
				JCCWebCommon.setMessageInfo(this, rtn_msg_id, str);
			}		
		}

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}
	
	/**
	 * 修正処理<br>
	 * <br>
	 * １．変更画面に戻ります。<br>
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionShusei() throws Exception
	{
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW02516);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW02516);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
		
	}

	/**
	 * 完了処理<br>
	 * <br>
	 * １．呼び出し元画面に戻ります。<br>
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionFin() throws Exception
	{
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 遷移先の画面IDを取得し共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCCWebCommon.getScreenId(this));

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
		
	}

	/**
	 * リモートサポートプラス照会サービス実行処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void executeInitSvc(X31SDataBeanAccess[] paramBean)
	{
		
		// 変数の定義
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		
		// リモートサポートプラス照会サービス
		paramMap = new HashMap<String, Object>();		// パラメタ設定用マップ
		inputMap = new HashMap<String, Object>();		// 入力用マップ
		outputMap = new HashMap<String, Object>();		// 結果格納用マップ
		
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0215");
		
		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		KKSV0215_KKSV0215OPDBMapper mapper = new KKSV0215_KKSV0215OPDBMapper();
		
		// オプションサービス契約一意照会
		mapper.setKKSV021501SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		// サービス呼出処理
		invokeService(paramMap, inputMap, outputMap);

		// 下りマッピング処理(サービス項目-DataBean項目マッピング)
		// オプションサービス契約一意照会
		mapper.getKKSV021501SC(paramBean, outputMap);
		
	}	
	
	/**
	 * リモートサポートプラス解約確認サービス実行処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param func_code  機能コード
	 * @throws Exception 
	 */
	private void executeDslSvc(X31SDataBeanAccess[] paramBean, String func_code) throws Exception
	{
		
		// 変数の定義
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		
		// リモートサポートプラス解約確認サービス
		paramMap = new HashMap<String, Object>();		// パラメタ設定用マップ
		inputMap = new HashMap<String, Object>();		// 入力用マップ
		outputMap = new HashMap<String, Object>();		// 結果格納用マップ
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0216");
		
		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		KKSV0216_KKSV0216OPDBMapper mapper = new KKSV0216_KKSV0216OPDBMapper();
		
		// 解約CC
		mapper.setOpSvcKeiDslCC(paramBean, inputMap, func_code);	

		// 返却IDをクリア
		paramBean[0].sendMessageString(KKW02516SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		/*-- 【SATRT】割引変更メッセージ対応 --*/
		// 割引自動適応CC設定部分コメントアウト
		// 割引サービス自動適用CC
		//mapper.setWrisvcAutoAplyCC(paramBean, inputMap, func_code);
		// 割引自動適応CC設定部分コメントアウト
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 結果取得
		mapper.getOpSvcKeiDslCC(paramBean, outputMap);	
		// 割引サービス変更メッセージ取得
		getWrisvcMsg(func_code, outputMap);
		/*-- 【END】割引変更メッセージ対応 --*/
	}	

	/**
	 * リモートサポートプラス回復サービス実行処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param func_code  機能コード
	 * @throws Exception 
	 */
	private void executeKaihkSvc(X31SDataBeanAccess[] paramBean, String func_code) throws Exception
	{
		
		// 変数の定義
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		
		// リモートサポートプラス回復サービス
		paramMap = new HashMap<String, Object>();		// パラメタ設定用マップ
		inputMap = new HashMap<String, Object>();		// 入力用マップ
		outputMap = new HashMap<String, Object>();		// 結果格納用マップ
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0217");
		
		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		KKSV0217_KKSV0217OPDBMapper mapper = new KKSV0217_KKSV0217OPDBMapper();
		
		// 回復CC
		mapper.setOpSvcKeiKaihkCC(paramBean, inputMap, func_code);	
		
		// 返却IDをクリア
		paramBean[0].sendMessageString(KKW02516SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		/*-- 【START】割引変更メッセージ対応 --*/
		// 割引自動適応CC設定部分コメントアウト
		// 割引サービス自動適用CC
		//mapper.setWrisvcAutoAplyCC(paramBean, inputMap, func_code);
		// 割引自動適応CC設定部分コメントアウト
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 結果取得
		mapper.getOpSvcKeiKaihkCC(paramBean, outputMap);
		// 割引サービス変更メッセージ取得
		getWrisvcMsg(func_code, outputMap);
		/*-- 【END】割引変更メッセージ対応 --*/
		
	}
	
	/**
	 * リモートサポートプラス予約取消サービス実行処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param func_code  機能コード
	 * @throws Exception 
	 */
	private void executeRsvclSvc(X31SDataBeanAccess[] paramBean, String func_code) throws Exception
	{
		
		// 変数の定義
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		
		// リモートサポートプラス予約取消サービス
		paramMap = new HashMap<String, Object>();		// パラメタ設定用マップ
		inputMap = new HashMap<String, Object>();		// 入力用マップ
		outputMap = new HashMap<String, Object>();		// 結果格納用マップ
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0218");
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0218_KKSV0218OPDBMapper mapper = new KKSV0218_KKSV0218OPDBMapper();
		
		// 予約取消CC
		mapper.setOpSvcKeiCnslCC(paramBean, inputMap, func_code);
		/*-- 【START】割引変更メッセージ対応 --*/
		// 割引自動適応CC設定部分コメントアウト
		// 割引サービス自動適用CC
		//mapper.setWrisvcAutoAplyCC(paramBean, inputMap, func_code);
		// 割引自動適応CC設定部分コメントアウト
		// 2013/02/22 [IT1-2013-0000299]申込画面入力支援ワーク情報更新呼出対応 ADD START
		mapper.setUpdMkmScinsprtWkCC(paramBean, inputMap, func_code);
		// 2013/02/22 [IT1-2013-0000299]申込画面入力支援ワーク情報更新呼出対応 ADD END
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// IT2-2012-0001034 ADD START
		mapper.getOpsvckeiCnslCC(paramBean, outputMap);
		// IT2-2012-0001034 ADD END
		
		// 割引サービス変更メッセージ取得
		getWrisvcMsg(func_code, outputMap);
		/*-- 【END】割引変更メッセージ対応 --*/
	}	
	
	/**
	 * DataBean設定処理（初期表示）<br>
	 * <br>
	 * 画面DataBeanに必要な項目をセットします。<br>
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void setHktgiBean(X31SDataBeanAccess[] paramBean)
	{
		// 運用日付取得してDataBeanにセットする
		String unyo_ymd = JCCWebCommon.getOpeDate(this, null);
		paramBean[0].sendMessageString(KKW02516SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
		
		// 予約適用年月日
		paramBean[0].sendMessageString(KKW02516SFConst.RSV_APLY_YMD, X31CWebConst.DATABEAN_SET_VALUE, "20991231");

		// 顧客契約引継リストの取得
		X31SDataBeanAccessArray hktgilist = paramBean[0].getDataBeanArray(KKW02516SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess hktgiBean = hktgilist.getDataBean(0);
		
		// DataBeanにセットしなおす
		// 処理区分
		String tran_div = hktgiBean.sendMessageString(KKW02516SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02516SFConst.TRAN_DIV,  X31CWebConst.DATABEAN_SET_VALUE, tran_div);

		// SYSID
		String sysid = hktgiBean.sendMessageString(KKW02516SFConst.SYSID_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02516SFConst.SYSID,  X31CWebConst.DATABEAN_SET_VALUE, sysid);

		// サービス契約番号
		String svc_kei_no = hktgiBean.sendMessageString(KKW02516SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02516SFConst.SVC_KEI_NO,  X31CWebConst.DATABEAN_SET_VALUE, svc_kei_no);

		// 異動区分
		String ido_div = hktgiBean.sendMessageString(KKW02516SFConst.IDO_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02516SFConst.IDO_DIV,  X31CWebConst.DATABEAN_SET_VALUE, ido_div);

		// 異動理由コードの設定
		X31SDataBeanAccessArray ido_rsn_list = paramBean[0].getDataBeanArray(KKW02516SFConst.IDO_RSN_LIST);

		// ▼異動理由メモ対応 Start
		String ido_rsn_memo = hktgiBean.sendMessageString(KKW02516SFConst.IDO_RSN_MEMO_01, X31CWebConst.DATABEAN_GET_VALUE);
		// ▲異動理由メモ対応 End

		// 異動理由コードの要素数を取得
		int cnt = (Integer)hktgiBean.sendMessage(KKW02516SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_COUNT);
		
		// 異動理由コードの要素数分繰り返す
		for(int i = 0; i < cnt; i++)
		{
			X31SDataBeanAccess ido_rsn_bean = null;
			if(ido_rsn_list.getCount() - 1 >= i)
			{
				ido_rsn_bean = ido_rsn_list.getDataBean(i);
			}
			else
			{
				ido_rsn_bean = ido_rsn_list.addDataBean();
			}
			if (ido_rsn_bean == null) 
			{
				continue;
			}

			// 異動理由コードの取得
			String ido_rsn_cd = hktgiBean.sendMessageString(KKW02516SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_VALUE, i);
			
			// 異動理由.異動理由コードの設定
			ido_rsn_bean.sendMessageString(KKW02516SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_cd);
			// ▼異動理由メモ対応 Start
			// 異動理由.異動理由メモの設定
//			ido_rsn_bean.sendMessageString(KKW02516SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			ido_rsn_bean.sendMessageString(KKW02516SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_memo);
			// ▲異動理由メモ対応 End
			
		}
		
		// オプションサービス契約番号
		String op_svc_kei_no = hktgiBean.sendMessageString(KKW02516SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE, 0);
		paramBean[0].sendMessageString(KKW02516SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, op_svc_kei_no);

		// 申込番号
		String mskm_no = hktgiBean.sendMessageString(KKW02516SFConst.MSKM_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02516SFConst.MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_no);
		
		// 申込明細番号
		String mskm_dtl_no = hktgiBean.sendMessageString(KKW02516SFConst.MSKM_DTL_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02516SFConst.MSKM_DTL_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_dtl_no);
		
	}
	
	/**
	 * DataBean設定処理（初期表示）<br>
	 * <br>
	 * 画面DataBeanに必要な項目をセットします。<br>
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void setDataInit(X31SDataBeanAccess[] paramBean)
	{
		// 更新状態可否フラグを更新可にする
		paramBean[0].sendMessageBoolean(KKW02516SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, true);
		
		// 2012/07/12 v4.00.00 【ANK-0571-00-00】オプションの表示用サービス開始日変更対応 DEL START
//		// サービス開始年月日→利用開始日
//		String svc_staymd = paramBean[0].sendMessageString(KKW02516SFConst.SVC_STAYMD, X31CWebConst.DATABEAN_GET_VALUE);
//		paramBean[0].sendMessageString(KKW02516SFConst.USE_STAYMD, X31CWebConst.DATABEAN_SET_VALUE, svc_staymd);
		// 2012/07/12 v4.00.00 【ANK-0571-00-00】オプションの表示用サービス開始日変更対応 DEL END

		// サービス終了年月日→利用終了日
		String svc_endymd = paramBean[0].sendMessageString(KKW02516SFConst.SVC_ENDYMD, X31CWebConst.DATABEAN_GET_VALUE);

		// IT1-2012-0000433 ADD START
		if(JKKCommonConst.MAX_YMD.equals(svc_endymd))
		{
			paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		else
		{
			paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, svc_endymd);
		}
		// IT1-2012-0000433 ADD END

		// ▼▼▼ IT1-2012-0001599 Delete Start ▼▼▼
//		/* 利用終了日初期化対応 
//		// 利用終了日（年）（月）（日）の初期表示
//		String unyo_ymd = paramBean[0].sendMessageString(KKW02516SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
//		*/
//		
//		// 空文字→利用終了日（年）
//		paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, "");
//		// 空文字→利用終了日（月）
//		paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, "");
//		// 空文字→利用終了日（日）
//		paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, "");
		// ▲▲▲ IT1-2012-0001599 Delete End ▲▲▲
		// ▼▼▼ IT1-2012-0001599 Add Start ▼▼▼
		// 利用終了日（年）（月）（日）の初期表示
		String unyo_ymd = paramBean[0].sendMessageString(KKW02516SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 空文字→利用終了日（年）
		paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(0, 4));
		// 空文字→利用終了日（月）
		paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(4, 6));
		// 空文字→利用終了日（日）
		paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(6, 8));
		// ▲▲▲ IT1-2012-0001599 Add End ▲▲▲
	}
	
	/**
	 * DataBean設定処理（解約処理）<br>
	 * <br>
	 * 画面DataBeanに必要な項目をセットします。<br>
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void setDataDsl(X31SDataBeanAccess[] paramBean)
	{
		// 利用終了日取得
		String use_endymd_year = paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String use_endymd_mon = paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String use_endymd_day = paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		String use_endymd = use_endymd_year + use_endymd_mon + use_endymd_day;

		// 利用終了日をDataBeanにセットする
		paramBean[0].sendMessageString(KKW02516SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, use_endymd);

		// サービス終了年月日をDataBeanにセットする
		paramBean[0].sendMessageString(KKW02516SFConst.SVC_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, use_endymd);

		// サービス課金終了年月日をdataBeanにセットする
		String unyo_ymd = paramBean[0].sendMessageString(KKW02516SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02516SFConst.SVC_CHRG_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
		
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
		// 進捗特記事項１
		paramBean[0].sendMessageString(KKW02516SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, RMTSPTPRS_INFO + DSL);
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END

	}
	
	/**
	 * DataBean設定処理（回復処理）<br>
	 * <br>
	 * 画面DataBeanに必要な項目をセットします。<br>
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void setDataKaihk(X31SDataBeanAccess[] paramBean)
	{
		// 回復年月日に運用日付をセットする。
		String unyo_ymd = paramBean[0].sendMessageString(KKW02516SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02516SFConst.KAIHK_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
		
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
		// 進捗特記事項１
		paramBean[0].sendMessageString(KKW02516SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, RMTSPTPRS_INFO + KAIHK);
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
		
	}

	
	// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
	/**
	 * DataBean設定処理（予約取消処理）<br>
	 * <br>
	 * 画面DataBeanに必要な項目をセットします。<br>
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void setDataRsvcl(X31SDataBeanAccess[] paramBean)
	{
		// 進捗特記事項１
		paramBean[0].sendMessageString(KKW02516SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, RMTSPTPRS_INFO + RSV_CLK);
		
	}
	// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
	
	/**
	 * 置換メッセージ取得処理<br>
	 * <br>
	 * 返却メッセージＩＤに対応する置換文字列を取得する。<br>
	 * <br>
	 * @param trandiv 処理区分
	 * @param rtn_msg_id 返却メッセージＩＤ
	 * @return 置換用メッセージ
	 */
	private String[] getMsgRep(String trandiv, String rtn_msg_id)
	{
		
		// 処理区分が解約の場合
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trandiv))
		{
			//IT1-2013-0000140 2013/01/05 DEL START
//			// 休止中未来日付（EKB5440-JW）
//			if (JPCOnlineMessageConstant.EKB5440_JW.equals(rtn_msg_id)) 
//			{
//				String[] str = {"休止中", "未来日指定の解約は"};
//				return str;
//			}
//			
//			// 未来日（EKB0270-NW）
//			if (JPCOnlineMessageConstant.EKB0270_NW.equals(rtn_msg_id)) 
//			{
//				String[] str = {"利用終了日", "運用日+60日", "日付"};
//				return str;
//			}
			//IT1-2013-0000140 2013/01/05 DEL END

			// 過去日(EKB0690-NW)
			if (JPCOnlineMessageConstant.EKB0690_NW.equals(rtn_msg_id)) 
			{
				String[] str = {"利用終了日", "過去"};
				return str;
			}
		}
		// 処理区分が回復の場合
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trandiv))
		{
			
			// 回復可能期間（EKB5440-JW）
			if (JPCOnlineMessageConstant.EKB5440_JW.equals(rtn_msg_id)) 
			{
				String[] str = {"回復可能期間外", "回復は"};
				return str;
			}
			
		}
		// IT2-2012-0001034 ADD START
		// 処理区分が予約取消の場合
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trandiv))
		{
			
			// 予約取消不可（EKB5420-JW）
			if (JPCOnlineMessageConstant.EKB5420_JW.equals(rtn_msg_id)) 
			{
				String[] str = {"オプション", "予約取消"};
				return str;
			}
		}
		// IT2-2012-0001034 ADD END
		
		return null;
		
	}
	
	/*-- 【START】割引変更メッセージ対応 --*/
	/**
	 * 割引サービス変更メッセージ出力処理 <br>
	 * <br>
	 * オプション変更に対する割引サービス変更メッセージを出力する。 <br>
	 * <br>
	 * @param func_code 機能コード
	 * @param outputMap 
	 * @throws Exception 
	 */
	private void getWrisvcMsg(String func_code, HashMap<String, Object> outputMap) throws Exception 
	{
		if(JPCModelConstant.FUNC_CD_1.equals(func_code)) {
			ArrayList<HashMap<String, Object>> msgList = null;
			HashMap<String, Object> warisvcMap = null;
			
			if(outputMap.containsKey("WrisvcAutoAplyCC")){
				warisvcMap = (HashMap<String, Object>)outputMap.get("WrisvcAutoAplyCC");
			}
			
			if(warisvcMap != null) {
				msgList = (ArrayList<HashMap<String, Object>>)warisvcMap.get("msg_list");
			}
			// メッセージ登録部品呼び出し
			JKKSetSessionMessage.setSessionMessage(this, msgList);
		}
	}
	/*-- 【END】割引変更メッセージ対応 --*/
}
