/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：マルチセッション更新
*   ソースファイル名：KKW02510SFLogic.java
*   作成者          ：FJ
*   日付            ：2011年10月24日
*＜機能概要＞
*   マルチセッション更新部品です。
*＜修正履歴＞
*	バージョン	修正日			修正者		修正内容
*	v1.00   	2011/10/24		FJ）小笹	新規作成
*	v3.00   	2012/03/14		FJ) 高田	利用終了日初期化対応
*	v3.01   	2012/04/20		FJ) 林田	割引変更メッセージ表示対応
*	v3.02   	2012/04/30		FJ) 森本	異動理由メモ対応
*	v3.03   	2012/07/13		FJ) 藤原	【IT2-2012-0001263】サービス提供中の場合変更をできるように修正
*	v4.00   	2012/10/22		FJ) 砂川	【IT1-2012-0001599】解約モードで利用終了日に運用日を初期値として設定する対応
*   v4.01		2012/11/05      FJ) 清崎    【ANK-1223-00-00】進捗補足事項編集対応
*   v4.02       2012/11/22      FJ) 清崎    【TAI-2012-0000091】暫定ロジック修正対応
*   v4.03       2013/01/05      FJ) 鷲塚    【IT1-2013-0000140】画面とS-IFのサーバチェック不整合対応
*   v4.04       2013/01/24      FJ) 清崎    【IT1-2013-0000167】キャンセルSOD発行対応
*   v5.00       2013/05/30      FJ) 近藤    【TG1-2013-0000421】変更可能なオプションサービス契約ステータスの対応
*   v29.00.00   2017/03/13      FJ) 江藤    【OM-2016-0002076】マルチセッション用認証IDの設定誤りの対応
**********************************************************************/
package eo.web.webview.KKW02510SF;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
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 eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.common.JKKSetSessionMessage;
import eo.web.webview.mapping.KKSV0071_KKSV0071OPDBMapper;
import eo.web.webview.mapping.KKSV0072_KKSV0072OPDBMapper;
import eo.web.webview.mapping.KKSV0073_KKSV0073OPDBMapper;
import eo.web.webview.mapping.KKSV0074_KKSV0074OPDBMapper;
import eo.web.webview.mapping.KKSV0075_KKSV0075OPDBMapper;

/**
 * マルチセッションの変更・解約・回復・予約取消を行います。<p>
 * オプションサービス契約一覧照会画面より遷移します。<p>
 * <BR>
 * @author 909721
 *
 */
@SuppressWarnings("serial")
public class KKW02510SFLogic extends JCCWebBusinessLogic
{
	/* プログラムで使用する固定コード値 */
	
	/**
	 * メッセージエリア
	 */
	private static final  String[] INFO_MSGSTRING = {
		"マルチセッション情報の変更",
		"マルチセッション情報の解約",
		"マルチセッション情報の回復",
		"マルチセッション情報の予約取消"
	};
	
	// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
	private static final String MLTSE_INFO = "マルチセッション情報";
	private static final String CHGE = "変更";
	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
	
	/**
	 * 初期表示処理<br>
	 * <br>
	 * １．マッピングのために、DataBeanに遷移元情報を設定します。<br>
	 * ２．マルチセッション情報初期表示サービスの呼び出しを行います。<br>
	 * ３．画面表示用にDataBeanに格納します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionInit() throws Exception 
	{
		HashMap<String, Object> inputMap = null;		// サービスへの入力情報作成のためのMap
		HashMap<String, Object> outputMap = null;		// サービスへからの出力情報取得のためのMap
		
		// メッセージ表示用
		String[] msgInfo = new String[1];
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 前画面からの引継情報を取得します
		// 画面情報を取得し、サービスフォームBeanに設定。
		JCCWebCommon.getScreenInfo(this);
		
		// DataBean設定処理（引継情報）
		setHktgiBean(paramBean);
		
		// サービス呼出し前処理を実施します。
		inputMap = new HashMap<String, Object>();
		
		setInitsrv(paramBean, inputMap);
		
		// サービスを実施します。
		outputMap = new HashMap<String, Object>();
		doService("KKSV0071", "KKSV0071OP", inputMap, outputMap);
		
		// 下りマッピングを実施します
		// マッピングデータから、画面で必要な項目を設定します。
		storeDataBeanInitsrv(paramBean, outputMap);
		
		msgInfo = new String[1];
		
		// 処理区分取得
		String trans_div = bean.sendMessageString(KKW02510SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		// オプションサービス契約ステータスの取得
		String op_svc_kei_stat = bean.sendMessageString(KKW02510SFConst.OP_SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 処理区分が変更の場合のメッセージ出力
		if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
		{
// v5.00 2013/05/30 TG1-2013-0000421 MOD START
//			if(JKKCommonConst.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
			if(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))
// v5.00 2013/05/30 TG1-2013-0000421 MOD END
			{
				;
			}
			else
			{
				// オプションサービス契約ステータスが"サービス提供中"でない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"変更","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02510SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		// 処理区分が解約の場合のメッセージ出力
		else if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
		{
			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(KKW02510SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		// 処理区分が回復の場合のメッセージ出力
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trans_div))
		{
			if(JKKCommonConst.SVC_KEI_STAT_910.equals(op_svc_kei_stat))
			{
			msgInfo[0] = INFO_MSGSTRING[2];
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
			}
			else
			{
				// オプションサービス契約ステータスが"解約済"でない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"回復","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02510SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		// 処理区分が予約取消の場合のメッセージ出力
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trans_div))
		{
			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] = INFO_MSGSTRING[3];
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
			}
			else
			{
				// オプションサービス契約ステータスが"受付済","照査済","締結済","サービス提供中"のいずれでもない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"予約取消","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02510SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 変更画面「更新確認」ボタン押下
	 * １．DataBean設定処理
	 * ２．サービス呼出処理
	 * ３．遷移先画面設定
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionUpdCfm() throws Exception
	{
		HashMap<String, Object> inputMap = null;		// サービスへの入力情報作成のためのMap
		HashMap<String, Object> outputMap = null;		// サービスへからの出力情報取得のためのMap
		
		// メッセージ表示用
		String[] msgInfo = new String[1];
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// サービス呼出し前処理を実施します。
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();
		
		// 処理区分取得
		String trans_div = bean.sendMessageString(KKW02510SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
		{
			// 処理区分"解約"
			// 解約用データ入力
			setDslsrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
			
			// 解約サービスを実施します。
			doService("KKSV0073", "KKSV0073OP", inputMap, outputMap);
			
			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanDslsrv(paramBean, outputMap);
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[1];
		}
		else if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
		{
			// パスワード初期化フラグをパスワード初期化フラグ（制御用）に記録する
			boolean init_flg = paramBean[0].sendMessageBoolean(KKW02510SFConst.PWD_INIT_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			
			// パスワード初期化フラグ → パスワード初期化フラグ（制御用）
			paramBean[0].sendMessageBoolean(KKW02510SFConst.PWD_INIT_FLG_CTRL, X31CWebConst.DATABEAN_SET_VALUE, init_flg);

			// 処理区分"更新"
			// 更新用データ入力
			setChgesrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
			
			// 更新サービスを実施します
			doService("KKSV0072", "KKSV0072OP", inputMap, outputMap);
			
			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanChgesrv(paramBean, outputMap);
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[0];
		}
		
		// 「返却メッセージID」が空であれば、更新を確認するメッセージセットして次画面へ
		// 「返却メッセージID」が存在する場合はエラーなので画面遷移せず「返却メッセージID」をメッセージ表示
		String rtn_msgId = bean.sendMessageString(KKW02510SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(rtn_msgId == null || "".equals(rtn_msgId))
		{
			// 遷移先の画面IDを共有フォームBeanの項目に設定する
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_ID_KKW02511);
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_NAME_KKW02511);
			
			// 変更確認画面メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
			
		}
		else
		{
			// エラーメッセージ表示
			displayGyomuErrorMsg(rtn_msgId, trans_div);
		}
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 変更確認画面「確定」ボタン押下
	 * １．DataBean設定処理
	 * ２．サービス呼出処理
	 * ３．遷移先画面設定
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionFix() throws Exception
	{
		HashMap<String, Object> inputMap = null;		// サービスへの入力情報作成のためのMap
		HashMap<String, Object> outputMap = null;		// サービスへからの出力情報取得のためのMap
		
		// メッセージ表示用
		String[] msgInfo = null;
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// サービス呼出し前処理を実施します。
		inputMap = new HashMap<String, Object>();
		outputMap = new HashMap<String, Object>();
		
		// 処理区分取得
		String trans_div = bean.sendMessageString(KKW02510SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
		{
			// 処理区分"解約"
			// 解約用データ入力
			setDslsrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
			// 解約サービスを実施します。
			doService("KKSV0073", "KKSV0073OP", inputMap, outputMap);
			
			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanDslsrv(paramBean, outputMap);
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[1];
		}
		else if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
		{
			// 処理区分"更新"
			// 更新用データ入力
			setChgesrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
			// 更新サービスを実施します
			doService("KKSV0072", "KKSV0072OP", inputMap, outputMap);
			
			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanChgesrv(paramBean, outputMap);
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[0];
		}
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trans_div))
		{
			// 処理区分"回復"
			// 回復用データ入力
			setKaihksrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
			// 回復サービスを実施します
			doService("KKSV0074", "KKSV0074OP", inputMap, outputMap);
			
			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanKaihksrv(paramBean, outputMap);
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[2];
		}
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trans_div))
		{
			// 処理区分"予約取消"
			// 取消用データ入力
			setRsvclsrv(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
			// 予約取消サービスを実施します
			doService("KKSV0075", "KKSV0075OP", inputMap, outputMap);
			
			// 下りマッピングを実施します
			// マッピングデータから、画面で必要な項目を設定します。
			storeDataBeanRsvclsrv(paramBean, outputMap);
			
			msgInfo = new String[1];
			msgInfo[0] = INFO_MSGSTRING[3];
		}
		
		// 「返却メッセージID」が空であれば、更新を確認するメッセージセットして次画面へ
		// 「返却メッセージID」が存在する場合はエラーなので画面遷移せず「返却メッセージID」をメッセージ表示
		String rtn_msgId = bean.sendMessageString(KKW02510SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(rtn_msgId == null || "".equals(rtn_msgId))
		{
			// 遷移先の画面IDを共有フォームBeanの項目に設定する
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_ID_KKW02512);
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_NAME_KKW02512);
			
			// 変更確認画面メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, msgInfo);
		}
		else
		{
			// エラーメッセージ表示
			displayGyomuErrorMsg(rtn_msgId, trans_div);
		}
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 修正処理<br>
	 * <br>
	 * １．マルチセッション更新画面に戻ります。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws 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_KKW02510);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW02510);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 戻る処理<br>
	 * <br>
	 * １．呼び出し元画面に戻ります。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws 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>
	 * １．呼び出し元画面に戻ります。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws 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>
	 * <br>
	 * １．初期表示処理を呼び出します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionClear() throws Exception
	{
		HashMap<String, Object> inputMap = null;		// サービスへの入力情報作成のためのMap
		HashMap<String, Object> outputMap = null;		// サービスへからの出力情報取得のためのMap
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// サービス呼出し前処理を実施します。
		inputMap = new HashMap<String, Object>();
		
		setInitsrv(paramBean, inputMap);
		
		// サービスを実施します。
		outputMap = new HashMap<String, Object>();
		doService("KKSV0071", "KKSV0071OP", inputMap, outputMap);
		
		// 下りマッピングを実施します
		// マッピングデータから、画面で必要な項目を設定します。
		storeDataBeanInitsrv(paramBean, outputMap);
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}
	
	/**
	 * サービス呼出処理<br>
	 * <br>
	 * マルチセッション更新関連のサービスの呼び出しを行います。<br>
	 * <br>
	 * @param usecase_id ユースケースID
	 * @param operation_id オペレーションID
	 * @param inputMap サービスへの入力情報Map（Not null）
	 * @param resultOutputMap サービスからの出力情報Map
	 * @return APサーバでエラーが発生した場合は、エラーメッセージ情報オブジェクトが返却されます。<br>
	 * 正常終了時には、null値が返却されます。
	 * @throws Exception 
	 */
	private X31CMessageResult doService(String usecase_id, String operation_id,
			HashMap<String, Object> inputMap, HashMap<String, Object> resultOutputMap)
	throws Exception
	{
		X31CMessageResult msgResult = null;		// 戻り値用
		HashMap<String, Object> paramMap = null;				// APサーバに依頼する情報を格納したマップオブジェクト

		try
		{
			// パラメタ設定
			paramMap = new HashMap<String, Object>();
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, usecase_id);
			paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, operation_id);

			// サービスの呼び出し
			msgResult = invokeService(paramMap, inputMap, resultOutputMap);
		}
		finally
		{
			paramMap = null;
		}

		return msgResult;
	}

	/**
	 * 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(KKW02510SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
		
		// 顧客契約引継リスト取得
		X31SDataBeanAccessArray custKeiHktgiList =  paramBean[0].getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);

		// SYSID
		String sysid = custKeiHktgiInf.sendMessageString(KKW02510SFConst.SYSID_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02510SFConst.SYSID,  X31CWebConst.DATABEAN_SET_VALUE, sysid);
		
		// サービス契約番号取得
		String svc_kei_no = custKeiHktgiInf.sendMessageString(KKW02510SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02510SFConst.SVC_KEI_NO,  X31CWebConst.DATABEAN_SET_VALUE, svc_kei_no);
		
		// 処理区分取得
		String trans_div = custKeiHktgiInf.sendMessageString(KKW02510SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02510SFConst.TRAN_DIV,  X31CWebConst.DATABEAN_SET_VALUE, trans_div);
		
		// 異動区分
		String ido_div = custKeiHktgiInf.sendMessageString(KKW02510SFConst.IDO_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02510SFConst.IDO_DIV,  X31CWebConst.DATABEAN_SET_VALUE, ido_div);

		// 異動理由コードの設定
		X31SDataBeanAccessArray ido_rsn_list = paramBean[0].getDataBeanArray(KKW02510SFConst.IDO_RSN_LIST);

		// ▼異動理由メモ対応 Start
		String ido_rsn_memo = custKeiHktgiInf.sendMessageString(KKW02510SFConst.IDO_RSN_MEMO_01, X31CWebConst.DATABEAN_GET_VALUE);
		// ▲異動理由メモ対応 End

		// 異動理由コードの要素数を取得
		int cnt = (Integer)custKeiHktgiInf.sendMessage(KKW02510SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_COUNT);

		// ▼異動理由メモ対応 追加Start
		// 動作不正のため、異動理由リストより取得する処理に変更
		// 異動理由コードの要素数分繰り返す
//		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 = custKeiHktgiInf.sendMessageString(KKW02510SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_VALUE, i);
//			
//			// 異動理由.異動理由コードの設定
//			ido_rsn_bean.sendMessageString(KKW02510SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_cd);
//			// ▼異動理由メモ対応 Start
//			// 異動理由.異動理由メモの設定
////			ido_rsn_bean.sendMessageString(KKW02510SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, "");
//			ido_rsn_bean.sendMessageString(KKW02510SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_memo);
			// ▲異動理由メモ対応 End
//			
//		}
		
		// 異動理由リストからスキーマ格納値の設定を行う
		X31SDataBeanAccessArray ekk1091d010Arr = paramBean[0].getDataBeanArray("異動理由リスト");
		ekk1091d010Arr.clearArray();
		Integer maxIndex = (Integer)custKeiHktgiInf.sendMessage(KKW02510SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_COUNT);
		for(int i = 0 ; i < maxIndex; i ++)
		{
			X31SDataBeanAccess ekk1091d010dtlBean = ekk1091d010Arr.addDataBean();

			String ido_rsn_cd = custKeiHktgiInf.sendMessageString(KKW02510SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_VALUE, i);
			ekk1091d010dtlBean.sendMessageString(KKW02510SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_SET_VALUE, 
					ido_rsn_cd);
			ekk1091d010dtlBean.sendMessageString(KKW02510SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, 
					ido_rsn_memo);

		}
		// ▲異動理由メモ対応 追加End
		
		// オプションサービス契約番号
		String op_svc_kei_no = custKeiHktgiInf.sendMessageString(KKW02510SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE, 0);
		paramBean[0].sendMessageString(KKW02510SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, op_svc_kei_no);

		// 申込番号
		String mskm_no = custKeiHktgiInf.sendMessageString(KKW02510SFConst.MSKM_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02510SFConst.MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_no);
		
		// 申込明細番号
		String mskm_dtl_no = custKeiHktgiInf.sendMessageString(KKW02510SFConst.MSKM_DTL_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02510SFConst.MSKM_DTL_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_dtl_no);

	}

	/**
	 * 初期表示サービス呼出し前Data設定処理<br>
	 * <br>
	 * <br>
	 *
	 * @param paramBean DataBeanアクセスクラス配列
	 * @param inputMap サービスへの入力情報Map（Not null）
	 * @return なし
	 */
	private void setInitsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> inputMap)
	{
		String opeDate = JCCWebCommon.getOpeDate(this , null);		// 運用年月日
		
		// 運用年月日をサービスフォームBeanへ設定
		paramBean[0].sendMessageString(KKW02510SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);
		// 運用年月日時分秒
		paramBean[0].sendMessageString(KKW02510SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDateTimeStamp(this, null));
		//paramBean[0].sendMessageString(KKW02510SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getSysDateTime());
		
		// 返却メッセージIDをクリア
		paramBean[0].sendMessageString(KKW02510SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 処理区分取得
		String trans_div = paramBean[0].sendMessageString(KKW02510SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
		{
			// 処理区分"更新"
			paramBean[0].sendMessageBoolean(KKW02510SFConst.UPD_MODE_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
			// パスワード初期化フラグ
			paramBean[0].sendMessageBoolean(KKW02510SFConst.PWD_INIT_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
		}
		else if(JKKCommonConst.OP_TRAN_DIV_SHOKAI.equals(trans_div))
		{
			// 処理区分"照会"
			paramBean[0].sendMessageBoolean(KKW02510SFConst.NON_UPD_DSL_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
		}
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trans_div) || JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trans_div))
		{
			// 処理区分"回復" or "予約取消"
			paramBean[0].sendMessageBoolean(KKW02510SFConst.KAIHK_CNSL_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
		}
		
		// 上りマッピング
		KKSV0071_KKSV0071OPDBMapper mapper = new KKSV0071_KKSV0071OPDBMapper();

		mapper.setKKSV007101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV007102SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV007103SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV007104SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV007105SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV007106SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
	}

	/**
	 * 初期表示Data保存処理<br>
	 * <br>
	 * <br>
	 *
	 * @param paramBean DataBeanアクセス配列
	 * @param outputMap サービスからの出力情報Map
	 * @return なし
	 */
	private void storeDataBeanInitsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> outputMap)
	{
		// 下りマッピング
		KKSV0071_KKSV0071OPDBMapper mapper = new KKSV0071_KKSV0071OPDBMapper();
		
		if(outputMap != null)
		{
			mapper.getKKSV007101SC(paramBean, outputMap);
			mapper.getKKSV007102SC(paramBean, outputMap);
			mapper.getKKSV007103SC(paramBean, outputMap);
			mapper.getKKSV007104SC(paramBean, outputMap);
			mapper.getKKSV007105SC(paramBean, outputMap);
			mapper.getKKSV007106SC(paramBean, outputMap);
			
			// 更新状態可否フラグを更新可にする
			paramBean[0].sendMessageBoolean(KKW02510SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, true);

			// セッション数
			paramBean[0].sendMessageString(KKW02510SFConst.CHG_SESSION_CNT, X31CWebConst.DATABEAN_SET_VALUE,
					paramBean[0].sendMessageString(KKW02510SFConst.CUR_SESSION_CNT, X31CWebConst.DATABEAN_GET_VALUE));
			
			// 認証ＩＤ
			paramBean[0].sendMessageString(KKW02510SFConst.NINSHO_ID, X31CWebConst.DATABEAN_SET_VALUE,
					paramBean[0].sendMessageString(KKW02510SFConst.MLTISE_NINSHO_ID, X31CWebConst.DATABEAN_GET_VALUE));
			
			// 初期パスワード
			paramBean[0].sendMessageString(KKW02510SFConst.SHK_PWD, X31CWebConst.DATABEAN_SET_VALUE,
					paramBean[0].sendMessageString(KKW02510SFConst.MLTISE_SHK_NINSHO_ID_PWD, X31CWebConst.DATABEAN_GET_VALUE));
			
			// 処理区分取得
			String trans_div = paramBean[0].sendMessageString(KKW02510SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
			
			if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
			{
				// ▼▼▼ IT1-2012-0001599 Delete Start ▼▼▼
//				/* 利用終了日初期化対応 
//				// 処理区分"解約"
//				String unyo_ymd = paramBean[0].sendMessageString(KKW02510SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
//				
//				if(unyo_ymd != null && !("".equals(unyo_ymd)))
//				{*/
//					 // 利用終了日（年）
//					paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, "");
//					 // 利用終了日（月）
//					paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, "");
//					 // 利用終了日（日）
//					paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, "");
////				}
				// ▲▲▲ IT1-2012-0001599 Delete End ▲▲▲
				// ▼▼▼ IT1-2012-0001599 Add Start ▼▼▼
				// 処理区分"解約"
				String unyo_ymd = paramBean[0].sendMessageString(KKW02510SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
				
				if(unyo_ymd != null && !("".equals(unyo_ymd)) && 8 == unyo_ymd.length())
				{
					 // 利用終了日（年）
					paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(0, 4));
					 // 利用終了日（月）
					paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(4, 6));
					 // 利用終了日（日）
					paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(6, 8));
				}
				// ▲▲▲ IT1-2012-0001599 Add End ▲▲▲
			}
			else if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(trans_div))
			{
				// 処理区分"更新"
				paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE,
						paramBean[0].sendMessageString(KKW02510SFConst.SVC_END_YMD, X31CWebConst.DATABEAN_GET_VALUE));
				
				// ▼▼▼動的・静的の判定は固定グローバルIPアドレスのオプションの有無で判定する▼▼▼
//				// 動的マルチセッションか判定する
//				// 動的マルチセッションとは、固定グローバルIPオプションでない場合のこと
//				// マルチセッション用初期認証ＩＤパスワードの設定有無で判定する
//				String mltise_shk_pwd = paramBean[0].sendMessageString(KKW02510SFConst.MLTISE_SHK_NINSHO_ID_PWD, X31CWebConst.DATABEAN_GET_VALUE);
//				if(!("".equals(mltise_shk_pwd)))
//				{
//					paramBean[0].sendMessageBoolean(KKW02510SFConst.KOTEI_GIP_OP_ON_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
//				}
				// ▲▲▲動的・静的の判定は固定グローバルIPアドレスのオプションの有無で判定する▲▲▲
			}
			else if(JKKCommonConst.OP_TRAN_DIV_SHOKAI.equals(trans_div) ||
					JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trans_div) ||
					JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trans_div))
			{
				// 処理区分"照会" or "回復" or "予約取消"
				paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE,
						paramBean[0].sendMessageString(KKW02510SFConst.SVC_END_YMD, X31CWebConst.DATABEAN_GET_VALUE));
			}
		}
	}

	/**
	 * 更新サービス入力設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param inputMap 入力データ
	 * @param func_cd 機能コード
	 * @return なし
	 */
	private void setChgesrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> inputMap, String func_cd)
	{
		
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
		// 進捗特記事項１
		paramBean[0].sendMessageString(KKW02510SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, MLTSE_INFO + CHGE);
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END

		
		// 上りデータマッピング
		KKSV0072_KKSV0072OPDBMapper mapper = new KKSV0072_KKSV0072OPDBMapper();
		
		mapper.setKKSV007201SC(paramBean, inputMap, func_cd);
		mapper.setKKSV007202SC(paramBean, inputMap, func_cd);
		mapper.setKKSV007206SC(paramBean, inputMap, func_cd);
		mapper.setKKSV007203SC(paramBean, inputMap, func_cd);
		mapper.setKKSV007204SC(paramBean, inputMap, func_cd);
		mapper.setJKKHakkoSODCC(paramBean, inputMap, func_cd);
		mapper.setKKSV0072WORK(paramBean, inputMap, func_cd);
	}

	/**
	 * 更新サービス結果設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param outputMap 出力データ
	 * @return なし
	 */
	private void storeDataBeanChgesrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> outputMap)
	{
		// 返却値は使用しないので何もしない
	}

	/**
	 * 解約サービス入力設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param inputMap 入力データ
	 * @param func_cd 機能コード
	 * @return なし
	 */
	private void setDslsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> inputMap, String func_cd)
	{
		// 「更新確認」の場合だけDataBean編集する
		if(JPCModelConstant.FUNC_CD_2.equals(func_cd))
		{
			// 利用終了日
			String use_endymd = paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE) +
								paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_GET_VALUE) +
								paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_GET_VALUE);
			paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, use_endymd);

			// サービス課金終了年月日設定
			// 2012/11/22 [TAI-2012-0000091]暫定ロジック修正対応 DEL START
//			paramBean[0].sendMessageString(KKW02510SFConst.SVC_CHRG_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE,
//					paramBean[0].sendMessageString(KKW02510SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_GET_VALUE));
			// 2012/11/22 [TAI-2012-0000091]暫定ロジック修正対応 DEL END

			// 返却メッセージIDをクリア
			paramBean[0].sendMessageString(KKW02510SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
			
			// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
			// 進捗特記事項１
			paramBean[0].sendMessageString(KKW02510SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, MLTSE_INFO + DSL);
			// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END

		}
		
		// 上りデータマッピング
		KKSV0073_KKSV0073OPDBMapper mapper = new KKSV0073_KKSV0073OPDBMapper();
		mapper.setOpsvckeiDslCC(paramBean, inputMap, func_cd);
		mapper.setJKKHakkoSODCC(paramBean, inputMap, func_cd);
		mapper.setKKSV0073WORK(paramBean, inputMap, func_cd);
	}

	/**
	 * 解約サービス結果設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param outputMap 出力データ
	 * @return なし
	 */
	private void storeDataBeanDslsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> outputMap)
	{
		// 下りデータマッピング
		KKSV0073_KKSV0073OPDBMapper mapper = new KKSV0073_KKSV0073OPDBMapper();
		mapper.getOpsvckeiDslCC(paramBean, outputMap);
	}

	/**
	 * 回復サービス入力設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param inputMap 入力データ
	 * @param func_cd 機能コード
	 * @return なし
	 */
	private void setKaihksrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> inputMap, String func_cd)
	{
		// 回復年月日設定
		String kaihk_ymd = paramBean[0].sendMessageString(KKW02510SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02510SFConst.KAIHK_YMD, X31CWebConst.DATABEAN_SET_VALUE, kaihk_ymd);
		
		// 返却メッセージIDをクリア
		paramBean[0].sendMessageString(KKW02510SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
		// 進捗特記事項１
		paramBean[0].sendMessageString(KKW02510SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, MLTSE_INFO + KAIHK);
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
		
		// 上りデータマッピング
		KKSV0074_KKSV0074OPDBMapper mapper = new KKSV0074_KKSV0074OPDBMapper();
		mapper.setOpsvckeiKaihkCC(paramBean, inputMap, func_cd);
		mapper.setJKKHakkoSODCC(paramBean, inputMap, func_cd);
		mapper.setKKSV0074WORK(paramBean, inputMap, func_cd);
		// 割引自動適応CC設定部分コメントアウト
		/*-- 【START】割引変更メッセージ対応 --*/
		//mapper.setWrisvcAutoAplyCC(paramBean, inputMap, func_cd);	// 割引サービス自動適用CC
		/*-- 【END】割引変更メッセージ対応 --*/
		// 割引自動適応CC設定部分コメントアウト

	}

	/**
	 * 回復サービス結果設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param outputMap 出力データ
	 * @return なし
	 * @throws Exception 
	 */
	private void storeDataBeanKaihksrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> outputMap)  throws Exception 
	{
		// 下りデータマッピング
		KKSV0074_KKSV0074OPDBMapper mapper = new KKSV0074_KKSV0074OPDBMapper();
		
		mapper.getOpsvckeiKaihkCC(paramBean, outputMap);
		/*-- 【START】割引変更メッセージ対応 --*/
		getWrisvcMsg("KKSV0073", outputMap);	// 割引サービス変更メッセージ取得
		/*-- 【END】割引変更メッセージ対応 --*/
		
	}

	/**
	 * 予約取消サービス入力設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param inputMap 入力データ
	 * @param func_cd 機能コード
	 * @return なし
	 */
	private void setRsvclsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> inputMap, String func_cd)
	{
		// 返却メッセージIDをクリア
		paramBean[0].sendMessageString(KKW02510SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
		// 進捗特記事項１
		paramBean[0].sendMessageString(KKW02510SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, MLTSE_INFO + RSV_CLK);
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
		
		// 上りデータマッピング
		KKSV0075_KKSV0075OPDBMapper mapper = new KKSV0075_KKSV0075OPDBMapper();
		
		mapper.setOpsvckeiCnslCC(paramBean, inputMap, func_cd);
		// 2013/01/24 [IT1-2013-0000167]キャンセルSOD発行対応 ADD START
		mapper.setJKKHakkoSODCC(paramBean, inputMap, func_cd);
		// 2013/01/24 [IT1-2013-0000167]キャンセルSOD発行対応 ADD END
		// 割引自動適応CC設定部分コメントアウト
		/*-- 【START】割引変更メッセージ対応 --*/
		//mapper.setWrisvcAutoAplyCC(paramBean, inputMap, func_cd);	// 割引サービス自動適用CC
		/*-- 【END】割引変更メッセージ対応 --*/
		// 割引自動適応CC設定部分コメントアウト
	}
	
	/**
	 * 予約取消サービス結果設定処理
	 * @param paramBean DataBeanアクセス配列
	 * @param outputMap 出力データ
	 * @return なし
	 * @throws Exception 
	 */
	private void storeDataBeanRsvclsrv(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> outputMap)  throws Exception 
	{
		// 下りデータマッピング
		KKSV0075_KKSV0075OPDBMapper mapper = new KKSV0075_KKSV0075OPDBMapper();
		
		mapper.getOpsvckeiCnslCC(paramBean, outputMap);
		/*-- 【START】割引変更メッセージ対応 --*/
		getWrisvcMsg("KKSV0073", outputMap);	// 割引サービス変更メッセージ取得
		/*-- 【END】割引変更メッセージ対応 --*/
	}

	/**
	 * エラーメッセージ画面表示処理
	 * @param rtn_msgId メッセージID
	 * @param trans_div 処理区分
	 * @return なし
	 */
	private void displayGyomuErrorMsg(String rtn_msgId, String trans_div)
	{
		// エラーメッセージ毎に引数を設定して画面表示する
		// TODO:返却内容には追加の可能性あり、その内容によってロジック対応の可能性あり
		
		String[]	params = null;
		
		if(rtn_msgId != null && !("".equals(rtn_msgId)))
		{
			// 処理区分が解約の場合
			if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trans_div))
			{
				//IT1-2013-0000140 2013/01/09 DEL START
//				// 休止中未来日付（EKB5440-JW）
//				if (JPCOnlineMessageConstant.EKB5440_JW.equals(rtn_msgId)) 
//				{
//					params = new String[]{"休止中", "未来日指定の解約は"};
//				}
//				
//				// 未来日（EKB0270-NW）
//				if (JPCOnlineMessageConstant.EKB0270_NW.equals(rtn_msgId)) 
//				{
//					params = new String[]{"利用終了日", "運用日+60日", "日付"};
//				}
				//IT1-2013-0000140 2013/01/09 DEL START
				
				// 過去日(EKB0690-NW)
				if (JPCOnlineMessageConstant.EKB0690_NW.equals(rtn_msgId)) 
				{
					params = new String[]{"利用終了日", "過去"};
				}
			}
			// 処理区分が回復の場合
			else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trans_div))
			{
				
				// 回復可能期間（EKB5440-JW）
				if (JPCOnlineMessageConstant.EKB5440_JW.equals(rtn_msgId)) 
				{
					params = new String[]{"回復可能期間外", "回復は"};
				}
			}
			// IT2-2012-0001034 ADD START
			// 処理区分が予約取消の場合
			else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trans_div))
			{
				
				// 予約取消不可（EKB5420-JW）
				if (JPCOnlineMessageConstant.EKB5420_JW.equals(rtn_msgId)) 
				{
					params = new String[]{"オプション", "予約取消"};
				}
			}
			// IT2-2012-0001034 ADD END

			// OM-2016-0002076 置換文字が設定されていない場合も、メッセージ表示可能にする 2017/03/13 MOD START
//			JCCWebCommon.setMessageInfo(this, rtn_msgId, params);
			if (null != params)
			{
				JCCWebCommon.setMessageInfo(this, rtn_msgId, params);
			}
			else
			{
				JCCWebCommon.setMessageInfo(this, rtn_msgId);
			}
			// OM-2016-0002076 置換文字が設定されていない場合も、メッセージ表示可能にする 2017/03/13 MOD END
		}
	}
	
	/*-- 【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(func_code.equals(JPCModelConstant.FUNC_CD_1)) 
		{
			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】割引変更メッセージ対応 --*/
	

}
