/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKNetflixAutoKeistaReqAdd
*	ソースファイル名	：JBSbatKKNetflixAutoKeistaReqAdd.java
*	作成者				：富士通　
*	作成日				：2020年12月24日
*＜機能概要＞
*　Netflix自動契約開始(Enroll)依頼登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v51.00.00	2020/11/05  FJ)西窪		【ANK-3949-08-00】Netflix導入対応（STEP1）
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM915;

import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.log.JBSbatLogUtil;
import eo.framework.util.JBSbatStringUtil;
import eo.framework.util.JCCBatchEsbInterface;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKNetflixAutoKeistaReqAdd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 処理区分（Netflix契約開始）*/
	private static final String NETFLIXSTA = "05";
	
	/**
	 * 初期処理
	 * @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
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		String svcKeiNo    = "";					// サービス契約番号
		String syoriKbn    = "";					// 処理区分
		String pcrsNpackFlg = "";					// 料金コース・Nパックありフラグ

		// サービス契約番号
		svcKeiNo = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM915.SVC_KEI_NO));
		// 処理区分
		syoriKbn = NETFLIXSTA;
		// 料金コース・Nパックありフラグ
		pcrsNpackFlg = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM915.PCRS_NPACK_FLG));

		
		// ログレベルがデバッグモードの場合
		if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
		{
			super.logPrint.printDebugLog("サービス契約番号：" +  svcKeiNo);
			super.logPrint.printDebugLog("処理区分：" +  syoriKbn);
			super.logPrint.printDebugLog("料金コース・Nパックありフラグ：" +  pcrsNpackFlg);

		}
		
		// ユースケースIDを格納するMAP
		HashMap<Object, Object>  paramMapOpn = new HashMap<Object, Object>();
		paramMapOpn.put(JCCBatchEsbInterface.TELEGRAM_INFO_USECASE_ID, "KKSV0951");
		paramMapOpn.put(JCCBatchEsbInterface.TELEGRAM_INFO_OPERATION_ID, "KKSV0951OP");
		
		// サービスに渡す業務データを格納するMAP
		HashMap<String, Object> inputMapOpn = new HashMap<String, Object>();
		
		
		// inputMapに設定するデータをHashMapで構築する。
		HashMap<String, Object>  NetflixDataMap = new HashMap<String, Object>();
		
		NetflixDataMap.put("svc_kei_no", svcKeiNo);			 // サービス契約番号
		NetflixDataMap.put("syori_kbn", syoriKbn);			// 処理区分
		NetflixDataMap.put("pcrs_npack_flg", pcrsNpackFlg); // 料金コース・Nパックありフラグ
		
		inputMapOpn.put("KKSV095101CC", NetflixDataMap);
		
		// サービスの処理結果が格納されるMAP
		HashMap<Object, Object> outputMapOpn = new HashMap<Object, Object>();
		
		// サービス呼び出し
		try{
			JCCBatchEsbInterface.invokeService(super.commonItem, paramMapOpn, inputMapOpn, outputMapOpn);
		}
		catch(Exception e){
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, 
					new String[]{"Netflix用他事業者契約異動通知登録CCでエラーが発生しました"});
			// エラーフラグ設定
			super.commonItem.setErrFlg(true);
			return null;
		}
		
		// 部品からのリターンコードを取得します。
		String returnCode = (String)outputMapOpn.get("RETURN_CODE");
		super.logPrint.printDebugLog("★RETURN_CODE：" + returnCode);
		
		// サービスインターフェースよりエラーが返却された場合
		if(!"0000".equals(returnCode))
		{
			StringBuffer sb = new StringBuffer();
			sb.append(" サービス契約番号：" +svcKeiNo);
			sb.append("、処理区分："+ syoriKbn);
			sb.append("、料金コース・Nパックありフラグ："+ pcrsNpackFlg);
			// 「サービスインターフェイスエラーの場合は、下記のログ出力する。
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0010CW, 
				new String[]{"Netflix用他事業者契約異動通知登録CCでエラーが発生しました(リターンコード):" + returnCode + sb.toString()});
			// エラーフラグ設定
			super.commonItem.setErrFlg(true);
			
		}
		
		super.logPrint.printDebugLog("execute_END");
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
