/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKBandWidthReleaseLmtUpd
*	ソースファイル名	：JBSbatKKBandWidthReleaseLmtUpd.java
*	作成者				：富士通　
*	作成日				：2012年06月11日
*＜機能概要＞
*　帯域制限解除依頼登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/06/11   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.table.JBSbatKK_T_FTTH_TSRCK_JSK;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
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;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKBandWidthReleaseLmtUpd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** ユースケースID 帯域制限実施 */
	private static final String USECASE_ID_KKSV0572 = "KKSV0572";
	
	/** CCタイトル サービスオーダ発行 */
	private static final String CC_TITLE_JKKHAKKOSODCC = "JKKHakkoSODCC";
	
	/** 処理区分 帯域制限実施 */
	private static final String SYORI_DIV_012 = "012";
	
	/** サービスIFのリターンコード(正常) */
	private static final String RETURN_CODE_SUCCESS = "0";

	
	/**
	 * 初期処理
	 * @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
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		// 入力電文からパラメータを取得する
		// サービス契約番号
		String svcKeiNo = inMap.getString(JBSbatKK_T_FTTH_TSRCK_JSK.SVC_KEI_NO);
		// SYSID
		String sysId = inMap.getString(JBSbatKK_T_SVC_KEI.SYSID);

		
		// SODへのパラメータ設定
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		setSodParam(svcKeiNo, sysId, inputMap);

		// ユースケースIDを格納
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, USECASE_ID_KKSV0572);
		
		// サービスの処理結果の格納用MAP
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		JCCBatchEsbInterface.invokeService(super.commonItem, paramMap, inputMap, outputMap);
		
		String returnCode = JCCBatchEsbInterface.getReturnCode(outputMap);
		if(!RETURN_CODE_SUCCESS.equals(returnCode))
		{//サービスがエラーを返した場合
			StringBuffer err_msg = new StringBuffer();
			err_msg.append("ステータスコード ：" + returnCode);
			super.logPrint.printBusinessErrorLog("EKKB0010CW", 
					new String[]{ err_msg.toString() });
		}
		
		StringBuilder sb = new StringBuilder();
		sb.append("サービス契約番号:").append(svcKeiNo).append("の帯域制御解除SODを発行しました。");
		commonItem.getLogPrint().printDebugLog(sb.toString());
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * SOD発行に必要なパラメータを設定します
	 * 
	 * @param svcKeiNo サービス契約番号
	 * @param sysId SYSID
	 */
	private void setSodParam(String svcKeiNo, String sysId, HashMap<String, Object> inputMap)
	{
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		ArrayList<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
		HashMap<String, Object> sodMap = new HashMap<String, Object>();
		HashMap<String, Object> sodKihonInfoMap = new HashMap<String, Object>();
		HashMap<String, Object> svcKeiInfoMap = new HashMap<String, Object>();
		
		// ------------------------------------
		// SOD基本情報を設定する
		// ------------------------------------
		// SYSID
		sodKihonInfoMap.put("sysid", sysId);
		// 処理区分
		sodKihonInfoMap.put("syori_div", SYORI_DIV_012);
		// SOD基本情報をSOD情報に設定する
		sodMap.put("sod_kihon_info", sodKihonInfoMap);
		
		// ------------------------------------
		// サービス契約情報を設定する
		// ------------------------------------
		// サービス契約番号
		svcKeiInfoMap.put("svc_kei_no", svcKeiNo);
		// サービス契約情報をSOD情報に設定する
		sodMap.put("svc_kei_info", svcKeiInfoMap);
		
		// ------------------------------------
		// SOD情報をリストに設定する
		// ------------------------------------
		dataList.add(sodMap);
		
		// ------------------------------------
		// リストをデータマップに設定する
		// ------------------------------------
		dataMap.put("trgt_data_list", dataList);
		// 機能コードを設定
		dataMap.put("func_code", "1");	
		
		// CCのタイトルをキーにデータを格納
		inputMap.put(CC_TITLE_JKKHAKKOSODCC, dataMap);
	}
}
