/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKUseStpRlsRunWrapperCC
*   ソースファイル名：JKKUseStpRlsRunWrapperCC.java
*   作成者          ：富士通
*   日付            ：2013年04月04日
*＜機能概要＞
*   利用停止解除実行ラッピングを行う。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v22.00.00   2016/02/19   FJ）星野    OM-2016-0000366対応 新規作成
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.HashMap;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;
import com.sun.enterprise.tools.common.util.StringUtils;

/**
 * 
 * 利用停止解除実行CCラッパークラス
 * @author 富士通
 */
//@SuppressWarnings("unchecked")
public class JKKUseStpRlsRunWrapperCC extends AbstractCommonComponent
{

	/** 利用停止解除実行CCマップのキー */
	private static final String MAP_CC_ID_USE_STP_RLS_RUN = "JKKUSESTPRLSRUNCC";
	/** 督促状況更新副次処理マッピングCCマップのキー */
	private static final String MAP_CC_ID_TOKUSOKU_HUKUJI_MAPPING = "TOKUSOKUHUKJIMAPPINGCC";
	/** マップキー(機能コード) */
	private static final String MAP_KEY_FUNC_CODE = "func_code";
	/** マップキー(請求契約番号) */
	private static final String MAP_KEY_SEIKY_KEI_NO = "seiky_kei_no";

	/**
	 * 利用停止解除抽出・実行メソッド
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable 例外時にスローします
	 */
	public IRequestParameterReadWrite execute(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			String fixedText) throws Throwable
	{
		

		//リクエストパラメータ情報取得
		HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);
		if(paramMap==null || paramMap.isEmpty()){
			return param;
		}
		
		//機能コード
		String funcCode = (String)paramMap.get(MAP_KEY_FUNC_CODE);
		//請求契約番号
		String seikyKeiNo = (String) paramMap.get(MAP_KEY_SEIKY_KEI_NO);
		
		if(StringUtils.isEmpty(funcCode) || StringUtils.isEmpty(seikyKeiNo)){
			return param;
		}

		printlnEjbLog("＃＃＃＃JKKUseStpRlsRunWrapperCC.execute() seikyKeiNo=" + seikyKeiNo);

//		if (! "0".equals(mmbIspKssiCd)) {
//			// 0（通常）以外のとき、利用停止解除の指示書は出さない
//			return param;
//		}
//		
//		// お客様・契約者タイプコードを取得して、5（マンションオーナー）以外の場合、指示書を登録する。
//		String keishaTypeCd = getKeishaTypeCd(ck0011map);
//		
//		if(JACStrConst.KEISHA_TYPE_CD_MT_OWN.equals(keishaTypeCd))
//		{
//			// 5（マンションオーナー）のとき、利用停止解除の指示書は出さない
//			return param;
//		}
//		
//		// 支払い方法入力支援コードがISP決済の場合に指示書を登録する
//		if (!checkPaymentInSuppurt(handle, param, fixedText, sysid)) 
//		{
//			return param;
//		}
//		
//		// ID通知書発行識別コードが"発行あり"の場合に指示書を登録する
//		if (!checkIdTchishoHakSkbtCd(handle, param, fixedText, sysid))
//		{
//			return param;
//		}
		
		// リクエストパラメータに設定
//		paramMap.put(USE_STP_SYSID, sysid);
		
		// 利停解除CCパラメータ設定
		HashMap<String, Object> workMap = new HashMap<String, Object>(); 
		workMap.put(MAP_KEY_FUNC_CODE, funcCode);
		workMap.put("chsht_trgt_seiky_kei_no", seikyKeiNo);
		param.setData(MAP_CC_ID_USE_STP_RLS_RUN, workMap);

		/*************************************************************************************/
		/** 利用停止解除実行ＣＣ                                                            **/
		/*************************************************************************************/
		JKKUseStpRlsRunCC useStpRlsRun = new JKKUseStpRlsRunCC();
		JCHTokusokuHukjiMappingCC tokusokuHukujiMapping = new JCHTokusokuHukjiMappingCC();
		// 利用停止解除抽出
		param = useStpRlsRun.chshtUseStpRlsSvc(handle, param, MAP_CC_ID_USE_STP_RLS_RUN);
		// 実行用パラメータ設定
		param = tokusokuHukujiMapping.useStpRlsRunMapping(handle, param, MAP_CC_ID_TOKUSOKU_HUKUJI_MAPPING);
		// 利用停止解除実行
		param = useStpRlsRun.runUseStpRls(handle, param, MAP_CC_ID_USE_STP_RLS_RUN);

		//処理終了
		return param;
		
	}
	
	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>デバッグログを出力します<BR>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param dumpObj 出力するオブジェクト
	 */
	private void printlnEjbLog(Object dumpObj) {
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), dumpObj, null, null, null);
	}
}
