/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUPayWayPsbCheckCC
*   ソースファイル名：JFUPayWayPsbCheckCC.java
*   作成者          ：富士通
*   日付            ：2014年05月12日
*＜機能概要＞
*   支払方法有効性チェック部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v9.00       2014/05/12   FJ)文元     新規作成
*                                        
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;

import eo.ejb.cbs.cbsmsg.EKK0491B504CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491B504CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0491B510CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491B510CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0501A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0501A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0521A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0521A010CBSMsg1List;

/**
 * 支払方法有効性チェック部品です。
 * 
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUPayWayPsbCheckCC extends JFUBaseCC
{

	/* ■□ 現請求契約情報一覧照会 ■□ */
	/** テンプレートID(現請求契約情報一覧照会) */
	private static final String TEMPLATE_ID_EKK0491B504 = "EKK0491B504";
	/** テンプレートID(現請求契約情報一覧照会明細) */
	private static final String TEMPLATE_ID_EKK0491B504_DETAIL = EKK0491B504CBSMsg.EKK0491B504CBSMSG1LIST;
	/** IN項目リスト(現請求契約情報一覧照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0491B504 = Arrays.asList(EKK0491B504CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(現請求契約情報一覧照会) */
	private static final String ERROR_COLUMN_EKK0491B504 = EKK0491B504CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(現請求契約情報一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK0491B504 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0491B504 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 口座一意照会照会 ■□ */
	/** テンプレートID(口座一意照会照会) */
	private static final String TEMPLATE_ID_EKK0501A010 = "EKK0501A010";
	/** テンプレートID(口座一意照会照会明細) */
	private static final String TEMPLATE_ID_EKK0501A010_DETAIL = EKK0501A010CBSMsg.EKK0501A010CBSMSG1LIST;
	/** IN項目リスト(口座一意照会照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0501A010 = Arrays.asList(EKK0501A010CBSMsg.KEY_SEIKY_WAY_NO_KOZA);
	/** 関連チェックエラー項目(口座一意照会照会) */
	private static final String ERROR_COLUMN_EKK0501A010 = EKK0501A010CBSMsg.KEY_SEIKY_WAY_NO_KOZA_ERR;
	/** SC実行結果取得キー(口座一意照会照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK0501A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0501A010 + TEMP_TEMPLATE_PRIFIX_SEP + "1";
	
	/* ■□ クレジットカード一意照会照会 ■□ */
	/** テンプレートID(クレジットカード一意照会照会) */
	private static final String TEMPLATE_ID_EKK0521A010 = "EKK0521A010";
	/** テンプレートID(クレジットカード一意照会照会明細) */
	private static final String TEMPLATE_ID_EKK0521A010_DETAIL = EKK0521A010CBSMsg.EKK0521A010CBSMSG1LIST;
	/** IN項目リスト(クレジットカード一意照会照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0521A010 = Arrays.asList(EKK0521A010CBSMsg.KEY_SEIKY_WAY_NO_CRECARD);
	/** 関連チェックエラー項目(クレジットカード一意照会照会) */
	private static final String ERROR_COLUMN_EKK0521A010 = EKK0521A010CBSMsg.KEY_SEIKY_WAY_NO_CRECARD_ERR;
	/** SC実行結果取得キー(クレジットカード一意照会照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK0521A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0521A010 + TEMP_TEMPLATE_PRIFIX_SEP + "1";
	
	/* ■□ 請求契約一覧照会（未来予約取得） ■□ */
	/** テンプレートID(請求契約一覧照会（未来予約取得）) */
	private static final String TEMPLATE_ID_EKK0491B510 = "EKK0491B510";
	/** テンプレートID(請求契約一覧照会（未来予約取得）明細) */
	private static final String TEMPLATE_ID_EKK0491B510_DETAIL = EKK0491B510CBSMsg.EKK0491B510CBSMSG1LIST;
	/** IN項目リスト(請求契約一覧照会（未来予約取得）) */
	private static final List<String> IN_COLUMN_LIST_EKK0491B510 = Arrays.asList(EKK0491B510CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(請求契約一覧照会（未来予約取得）) */
	private static final String ERROR_COLUMN_EKK0491B510 = EKK0491B510CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(請求契約一覧照会（未来予約取得）) */
	private static final String TEMP_TEMPLATE_KEY_EKK0491B510 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0491B510 + TEMP_TEMPLATE_PRIFIX_SEP + "1";
	
	/** IN項目:サービス契約番号 */
	private static final String IN_PARAM_KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** ＣＣ出力マップ項目(支払方法有効性チェック結果) */
	private static final String OUT_PARAM_PAY_WAY_PSB_CHK = "pay_way_psb_chk";
	
	/** 有効判定対象の口座ステータスリスト */
	private static final List<String> YUKOU_KOZA_STAT_LIST =
			Arrays.asList(JFUStrConst.CD00058_010, JFUStrConst.CD00058_020, JFUStrConst.CD00058_100);
	/** 有効判定対象のクレジットカードステータスリスト */
	private static final List<String> YUKOU_CRE_STAT_LIST =
			Arrays.asList(JFUStrConst.CD00059_010, JFUStrConst.CD00059_020);
	
	/**
	 * 支払方法有効性チェック実行処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	public IRequestParameterReadWrite execPayWayPsbCheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 返却マップ生成
		HashMap resMap = new HashMap();

		// チェック結果（初期値：否）
		String retChk = JFUStrConst.CD00003_0;
		
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		// IN項目:サービス契約番号
		String inParamSvcKeiNo = (String)inMap.get(IN_PARAM_KEY_SVC_KEI_NO);
		
		// ●現請求契約一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0491B504);
		// 検索エラーなし
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapEKK0491B504(param, fixedText, inParamSvcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0491B504, TEMPLATE_ID_EKK0491B504_DETAIL, IN_COLUMN_LIST_EKK0491B504,
				ERROR_COLUMN_EKK0491B504);
		// 結果の明細取得
		List<HashMap> genSeikyuList = getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_EKK0491B504, TEMPLATE_ID_EKK0491B504_DETAIL);
		// 1件目のデータを取得する。
		HashMap<String, String> seikyuMap = genSeikyuList.get(0);
		
		// 支払方法有効性判定チェック
		// true:可 false:否
		if (chkSeikyWay(handle, param, fixedText, seikyuMap))
		{
			// 判定：可
			retChk = JFUStrConst.CD00003_1;
		}
		
		// 判定が可の場合、返却
		if (JFUStrConst.CD00003_1.equals(retChk))
		{
			// 返却マップに設定
			resMap.put(OUT_PARAM_PAY_WAY_PSB_CHK, retChk);
			param.setData(fixedText, resMap);
			
			return param;
		}
		
		// 否の場合、処理続行
		
		// ●請求契約一覧照会（未来予約取得）
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0491B510);
		// 検索エラーなし
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapEKK0491B510(param, fixedText, inParamSvcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0491B510, TEMPLATE_ID_EKK0491B510_DETAIL, IN_COLUMN_LIST_EKK0491B510,
				ERROR_COLUMN_EKK0491B510);
		// 結果の明細取得
		List<HashMap> futureSeikyuList = getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_EKK0491B510, TEMPLATE_ID_EKK0491B510_DETAIL);
		
		// ワーク・予約適用年月日
		String wkRsvAplyYmd = JFUStrConst.EMPTY;
		
		// ワーク・チェック用請求契約（未来予約）レコード
		List<HashMap> wkFutureSeikyuList = new ArrayList<HashMap>();
		HashMap<String, Object> wkFutureSeikyuMap = new HashMap<String, Object>();
		
		// チェック用請求契約（未来予約）レコード取得
		for (int i = 0; i < futureSeikyuList.size(); i++)
		{
			HashMap<String, Object> futureSeikyuMap = (HashMap<String, Object>)futureSeikyuList.get(i);
			
			// 予約適用年月日
			String rsvAplyYmd = (String)futureSeikyuMap.get(EKK0491B510CBSMsg1List.RSV_APLY_YMD);
			
			if (JFUBPCommon.isNull(rsvAplyYmd))
			{
				// 次レコードへ
				continue;
			}
			
			// ワークに未設定の場合
			if (JFUBPCommon.isNull(wkRsvAplyYmd))
			{
				// ワーク予約適用年月日に設定
				wkRsvAplyYmd = rsvAplyYmd;
			}
			else
			{
				// 予約適用年月日が同じものは、世代管理年月日が最大のものを採用する
				// ※IFにて、予約適用年月日、世代管理年月日の昇順でorderbyしている
				// 比較用にintに変換
				int intWkRsvAplyYmd = Integer.parseInt(wkRsvAplyYmd);
				int intRsvAplyYmd = Integer.parseInt(rsvAplyYmd);

				// ワーク予約適用年月日＜予約適用年月日
				if (intWkRsvAplyYmd < intRsvAplyYmd)
				{
					// ワークをワークチェック用請求契約（未来予約）レコードに設定
					wkFutureSeikyuList.add(wkFutureSeikyuMap);

					// ワーク予約適用年月日に設定
					wkRsvAplyYmd = rsvAplyYmd;
				}
			}

			// ワークに設定
			wkFutureSeikyuMap = futureSeikyuMap;
		}
		
		if (wkFutureSeikyuMap != null && wkFutureSeikyuMap.size() > 0)
		{
			// 最終ワークをワーク・チェック用請求契約（未来予約）レコードに設定
			wkFutureSeikyuList.add(wkFutureSeikyuMap);
		}
		
		// ワーク・チェック用請求契約（未来予約）レコードに設定がある場合
		if (wkFutureSeikyuList != null && wkFutureSeikyuList.size() > 0)
		{
			// 直近の未来予約に対する支払方法有効性判定チェック
			retChk = chkFutureModify(handle, param, fixedText, seikyuMap, wkFutureSeikyuList);
		}
		
		// 返却マップに設定
		resMap.put(OUT_PARAM_PAY_WAY_PSB_CHK, retChk);
		param.setData(fixedText, resMap);
		
		return param;

	}
	
	/**
	 * 支払方法有効性判定チェック
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ	 
	 * @param seikyuMap 請求マップ（または請求契約（未来予約）マップ）
	 * @return true:可 false：否
	 * @throws Exception 
	 */
	private boolean chkSeikyWay(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, String> seikyuMap)
			throws Exception
	{
		// 返却値初期設定
		boolean retFlg = false;
		
		// 請求方法コード取得
		String seikyWay = seikyuMap.get(EKK0491B504CBSMsg1List.SEIKY_WAY_CD);
		
		// チェック
		//「"2":預金口座振替」「"3":郵便自動振込」
		if ((JFUStrConst.CD00166_2.equals(seikyWay)) || (JFUStrConst.CD00166_3.equals(seikyWay)))
		{
			// 請求方法番号（口座）
			String seikyWayNoKoza = seikyuMap.get(EKK0491B504CBSMsg1List.SEIKY_WAY_NO_KOZA);
			
			// ●口座一意照会
			// 一時領域削除
			super.deleteTempArea(param, fixedText);
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_EKK0501A010);
			// 検索エラーなし
			ignoreSearchError(param, fixedText);
			// 上りマッピング
			setInMapEKK0501A010(param, fixedText, seikyWayNoKoza);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0501A010, TEMPLATE_ID_EKK0501A010_DETAIL, IN_COLUMN_LIST_EKK0501A010,
					ERROR_COLUMN_EKK0501A010);
			// 結果の明細取得
			List<HashMap> kozaList = getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_EKK0501A010, TEMPLATE_ID_EKK0501A010_DETAIL);
			// 1件目のデータを取得する。（※一意照会の為）
			HashMap<String, String> kozaListMap = kozaList.get(0);
			
			// ステータス
			String kozaStat = kozaListMap.get(EKK0501A010CBSMsg1List.KOZA_STAT);
			// 新規コード
			String newCd = kozaListMap.get(EKK0501A010CBSMsg1List.NEW_CD);
			
			// ステータスが有効対象の場合
			if (YUKOU_KOZA_STAT_LIST.contains(kozaStat))
			{
				// 新規コードをチェック
				if (JFUStrConst.CD00169_0.equals(newCd))
				{
					// 継続の場合、可
					retFlg = true;
				}
			}
			
			// 以外は、否
		} 
		else if (JFUStrConst.CD00166_4.equals(seikyWay))
		{
			//「"4":クレジットカード」

			// 請求方法番号（クレジットカード）
			String seikyWayNoCrecard = seikyuMap.get(EKK0491B504CBSMsg1List.SEIKY_WAY_NO_CRECARD);
			
			// ●クレジット一意照会
			// 一時領域削除
			super.deleteTempArea(param, fixedText);
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_EKK0521A010);
			// 検索エラーなし
			ignoreSearchError(param, fixedText);
			// 上りマッピング
			setInMapEKK0521A010(param, fixedText, seikyWayNoCrecard);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0521A010, TEMPLATE_ID_EKK0521A010_DETAIL, IN_COLUMN_LIST_EKK0521A010,
					ERROR_COLUMN_EKK0521A010);
			// 結果の明細取得
			List<HashMap> creList = getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_EKK0521A010, TEMPLATE_ID_EKK0521A010_DETAIL);
			// 1件目のデータを取得する。（※一意照会の為）
			HashMap<String, String> creListMap = creList.get(0);
			
			// ステータス
			String crecardStat = creListMap.get(EKK0521A010CBSMsg1List.CRECARD_STAT);
			// 無効年月
			String crecaMkYm = creListMap.get(EKK0521A010CBSMsg1List.CRECA_MK_YM);
			
			// ステータスが有効対象の場合
			if (YUKOU_CRE_STAT_LIST.contains(crecardStat))
			{
				// 可
				retFlg = true;
			}
			else if (JFUStrConst.CD00059_100.equals(crecardStat))
			{
				// 審査済の場合は、
				// 無効年月をチェック
				if (!JFUBPCommon.isNull(crecaMkYm))
				{
					// 運用日付
					String opeDateYm = JFUBPCommon.getOpeDate(null).substring(0, 6);

					// 比較用にintに変換
					int intOpeDateYm = Integer.parseInt(opeDateYm);
					int intCrekaMkYm = Integer.parseInt(crecaMkYm);
					
					// 無効年月＞運用日
					if (intCrekaMkYm > intOpeDateYm)
					{
						// 可
						retFlg = true;
					}
				}
				else
				{
					// 未設定は可能
					retFlg = true;
				}
			}
			// 以外は、否
		}
		
		return retFlg;
	}
	
	/**
	 * 直近の未来予約に対する支払方法有効性判定チェック
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param seikyuMap 請求マップ
	 * @param wkFutureSeikyuList 請求契約（未来予約）リスト
	 * @return true:可 false：否
	 * @throws Exception 
	 */
	private String chkFutureModify(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, String> seikyuMap,
			List<HashMap> wkFutureSeikyuList) throws Exception
	{
		// 初期値：否
		String retChk = JFUStrConst.CD00003_0;

		// カレントレコードの比較情報
		// 請求方法コード取得
		String seikyWay = nullToBlank((String)seikyuMap.get(EKK0491B504CBSMsg1List.SEIKY_WAY_CD));
		// 請求方法番号（口座）
		String seikyWayNoKoza = nullToBlank((String)seikyuMap.get(EKK0491B504CBSMsg1List.SEIKY_WAY_NO_KOZA));
		// 請求方法番号（クレジットカード）
		String seikyWayNoCrecard = nullToBlank((String)seikyuMap.get(EKK0491B504CBSMsg1List.SEIKY_WAY_NO_CRECARD));

		for (int i = 0; i < wkFutureSeikyuList.size(); i++)
		{
			// 請求契約（未来予約）の比較情報
			HashMap<String, String> wkFutureSeikyuMap = (HashMap<String, String>)wkFutureSeikyuList.get(i);

			// 請求方法コード取得
			String ftSeikyWay = nullToBlank((String)wkFutureSeikyuMap.get(EKK0491B510CBSMsg1List.SEIKY_WAY_CD));
			// 請求方法番号（口座）
			String ftSeikyWayNoKoza = nullToBlank((String)wkFutureSeikyuMap.get(EKK0491B510CBSMsg1List.SEIKY_WAY_NO_KOZA));
			// 請求方法番号（クレジットカード）
			String ftSeikyWayNoCrecard = nullToBlank((String)wkFutureSeikyuMap.get(EKK0491B510CBSMsg1List.SEIKY_WAY_NO_CRECARD));

			if ((!seikyWay.equals(ftSeikyWay)) || (!seikyWayNoKoza.equals(ftSeikyWayNoKoza)) || (!seikyWayNoCrecard.equals(ftSeikyWayNoCrecard)))
			{
				// 請求方法コード、請求方法番号（口座）、請求方法番号（クレジットカード）のいずれかが違うとき
				// 支払方法有効性判定チェックを行なう
				if (chkSeikyWay(handle, param, fixedText, wkFutureSeikyuMap))
				{
					// true:可の場合
					// 返却値に"可"
					retChk = JFUStrConst.CD00003_1;
				}
				
				// 処理を抜ける
				break;
			}

			// 該当しない場合は処理続行
		}

		return retChk;
	}
	
	/**
	 * 上りマッピング項目設定(現請求契約一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0491B504(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0491B504CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}
	
	/**
	 * 上りマッピング項目設定(口座一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param seikyWayNoKoza 請求方法番号（口座）
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0501A010(IRequestParameterReadWrite param, String fixedText, String seikyWayNoKoza) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿請求方法番号（口座）
		inMap.put(EKK0501A010CBSMsg.KEY_SEIKY_WAY_NO_KOZA, seikyWayNoKoza);
	}
	
	/**
	 * 上りマッピング項目設定(クレジットカード一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param seikyWayNoCrecard 請求方法番号（クレジットカード）
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0521A010(IRequestParameterReadWrite param, String fixedText, String seikyWayNoCrecard) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿請求方法番号（クレジットカード）
		inMap.put(EKK0521A010CBSMsg.KEY_SEIKY_WAY_NO_CRECARD, seikyWayNoCrecard);
	}
	
	/**
	 * 上りマッピング項目設定(請求契約一覧照会（未来予約取得）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0491B510(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0491B510CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * Nullの場合は空文字を設定
	 * 
	 * <br>
	 * @param temp
	 * @return String
	 */
	private String nullToBlank(String temp)
	{
		String ret = JFUStrConst.EMPTY;

		if (!JFUBPCommon.isNull(temp))
		{
			ret = temp;
		}

		return ret;
	}
	
	/**
	 * チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}

}
