/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKSvcKeiUseStpRlsCst
*	ソースファイル名	：JBSbatKKSvcKeiUseStpRlsCst.java
*	作成者				：富士通　
*	作成日				：2011年07月21日
*＜機能概要＞
*　サービス契約利用停止解除対象抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/21   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.util.JBSbatCheckUtil;
import eo.framework.util.JCCBatchEsbInterface;
import eo.business.common.JBSbatMatchServiceInterface;
import eo.business.util.file.JBSbatKKIFI006;
import eo.business.util.file.JBSbatKKIFM083;
import eo.business.util.file.JBSbatKKIFM084;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKSvcKeiUseStpRlsCst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 請求契約番号の最大値 */
//	private static final String  SEIKY_KEI_NO_MAX = "9999999999";
	
	/** サービス契約利用停止解除対象抽出ユースケースID */
	private static final String USECASE_ID_0183 = "KKSV0183";
	
	/** サービス契約利用停止解除対象抽出オペレーションID */
	private static final String OPARATION_ID_0183 = "KKSV0183OP";
	
	/** 
	 * サービス契約利用停止解除対象抽出とのインタフェース項目ID
	 */
	/** 項目ID−CCユーザ定義文字列 */
	private static final String SVIF_USER_DATA = "JKKUseStpRlsRunCC";
	
	/** 項目ID−結果リスト */
	private static final String SVIF_RSLT_DATA_LIST = "svc_kei_no_list";

	/** 項目ID−請求契約番号 */
	private static final String SVIF_SEIKY_KEI_NO = "seiky_kei_no";
	
	/** 項目ID−サービス契約番号 */
	private static final String SVIF_SVC_KEI_NO = "svc_kei_no";
	
	/** 項目ID−サービス契約ステータス */
	private static final String SVIF_SVC_KEI_STAT = "svc_kei_stat";
	
	/** 項目ID−抽出対象請求契約番号 **/
	private static final String CHSHT_TRGT_SEIKY_KEI_NO = "chsht_trgt_seiky_kei_no";
	
	/** 警告時のメッセージID **/
	private static final String MESSAGE_ID = "EKKB0180CE";


	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		JBSbatOutputItem outputBean = null;
//		String mastSeikyKeiNo = SEIKY_KEI_NO_MAX;
//		String tranSeikyKeiNo = SEIKY_KEI_NO_MAX;
		String taishoSeikyKeiNo = null;
		ArrayList<HashMap<String, Object>> rsltMapList = null; 

		//ST3-2012-0000262 2012/09/10 START
		taishoSeikyKeiNo=inMap.getString(JBSbatKKIFI006.SEIKY_KEI_NO);
		//ST3-2012-0000262 2012/09/10 END

		// 利用停止解除実行呼び出し
		rsltMapList = svcKeiUseStpRlsCall(taishoSeikyKeiNo);

		outputBean = new JBSbatOutputItem();
		//レスポンスが取得できているか？(０件のときも含む)
		if((rsltMapList == null) || (rsltMapList.size() == 0))
		{
			
			//警告を設定
			super.logPrint.printBusinessErrorLog(MESSAGE_ID, new String[]{taishoSeikyKeiNo});
			// エラーフラグ設定
			super.commonItem.setErrFlg(true);
		}
		else
		{
			// 利用停止解除対象データ出力
			outputBean = outSvcKeiUseStpRls(rsltMapList);
		}

		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 *  サービス契約利用停止解除対象データ出力。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <p>
	 * @param  seikyKeiNo 請求契約番号
	 * @return rsltMapList 利用停止解除サービス契約リスト
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> svcKeiUseStpRlsCall(String seikyKeiNo) throws Exception
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, USECASE_ID_0183);
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, OPARATION_ID_0183);
		
		// サービスに渡す業務データを格納するMAPです。
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		// inputMapに設定するデータをHashMapで構築する。
		HashMap<String, String> dataMap = new HashMap<String, String>();

		// 請求契約番号
		dataMap.put(CHSHT_TRGT_SEIKY_KEI_NO, seikyKeiNo);
		
		String ccTitle = SVIF_USER_DATA;
		
		// inputMapにデータをCCのタイトルをキーとして設定する。
		inputMap.put(ccTitle, dataMap);
		// サービスの処理結果が格納されるMAP
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		//サービス契約利用停止解除実行(共通処理)を呼び出します。
		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
		
		// サービスの処理結果が格納されたoutputMapから指定したキーで値を取得する。
		HashMap<String, Object> userMap = (HashMap)outputMap.get(ccTitle);
		
		// 結果データを取得
		ArrayList<HashMap<String, Object>> rsltMapList = (ArrayList<HashMap<String, Object>>)userMap.get(SVIF_RSLT_DATA_LIST);
		
		return rsltMapList;
	}

	/**
	 *  サービス契約利用停止解除対象のデータを出力します。<br>
	 * <p>
	 * <p>
	 * @param  rsltMapList サービス契約利用停止解除対象リスト
	 * @return outputBean	出力データリスト
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatOutputItem outSvcKeiUseStpRls(ArrayList<HashMap<String, Object>> rsltMapList) throws Exception
	{
		JBSbatOutputItem outputBean = new JBSbatOutputItem();

		// サービス契約利用停止解除対象のデータリストを作成する
		for (int i = 0; i < rsltMapList.size(); i++)
		{
			JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();

			HashMap<String, Object> rsltMap = rsltMapList.get(i);
			
			// 請求契約番号
			outmap.setString(JBSbatKKIFM084.SEIKY_KEI_NO, rsltMap.get(SVIF_SEIKY_KEI_NO));
			// サービス契約番号
			outmap.setString(JBSbatKKIFM084.SVC_KEI_NO, rsltMap.get(SVIF_SVC_KEI_NO));
			// サービス契約ステータス
			outmap.setString(JBSbatKKIFM084.SVC_KEI_STAT, rsltMap.get(SVIF_SVC_KEI_STAT));
			
			outmap.setOutFlg(true);
			
			outputBean.addOutMapList(outmap);
		}

		return outputBean;
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
