/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatWCYakanKanshi
*	ソースファイル名	：JBSbatWCYakanKanshi.java
*	作成者				：富士通　
*	作成日				：2011年10月19日
*＜機能概要＞
*　夜間視聴制御状況監視部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/19   富士通		新規作成
*	v3.01.00	2012/08/31	 FJ)大山	【TAI-2012-0000094】JBSbatSQLAccessのinitial化対応
*	v3.02.00	2013/06/25	 FJ)大山	【IT1-2013-0001281】
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.Map;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JWCBatCommon;
import eo.business.util.table.JBSbatWC_T_WC_ORDER;
import eo.business.util.table.JBSbatWC_T_STB_MSG_ORDER;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JWCStrConst;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatWCYakanKanshi extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private static JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EWCB0010AI, 
											new String[]{"夜間視聴状況監視"});
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/

		// 局コードの取得
		Map<String, Object> rtnMap = null;
		rtnMap = JWCBatCommon.getkyoku_cd(commonItem);
		Boolean rtn = (Boolean)rtnMap.get(JWCStrConst.CMD_RESULT_CD);
		if(!rtn)
		{
			commonItem.getLogPrint().printDebugLog("局コード取得エラー :" + rtn);
		}
		String kyoku_cd = (String)(rtnMap.get(JWCStrConst.KYOKU_CD)) ;
		commonItem.getLogPrint().printDebugLog("局コード :" + kyoku_cd);
		
		// 制御エリアコードの取得
		Map<String, Object> rtnMap1 = null;
		rtnMap1 = JWCBatCommon.getctrl_area_cd(commonItem, kyoku_cd);
		rtn = (Boolean)rtnMap.get(JWCStrConst.CMD_RESULT_CD);
		if(!rtn)
		{
			commonItem.getLogPrint().printDebugLog("制御エリアコード取得エラー :" + rtn);
		}
		String ctrl_area_cd = (String)(rtnMap1.get(JWCStrConst.CTRL_AREA_CD)) ;
		commonItem.getLogPrint().printDebugLog("制御エリアコード :" + ctrl_area_cd);

		// 業務パラメータから、しきい値を取得
		// 視聴制御オーダのリアルのしきい値
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		paramList.setValue("WC_ZANSU_REAL_WCTL");
		ArrayList<String> rtndata1 = new ArrayList<String>();
		rtndata1 = JWCBatCommon.executeZM_M_WORK_PARAM_KNRI_WC_SELECT_001(commonItem,paramList.getList().toArray(), db_ZM_M_WORK_PARAM_KNRI);
		long zmzansu_real_wctl = new Long((String)rtndata1.get(0)).longValue();
		
		// ＳＴＢメッセージオーダのリアルの残数取得
		JBSbatCommonDBInterface paramList2 = new JBSbatCommonDBInterface();
		paramList2.setValue("WC_ZANSU_REAL_MSG");
		ArrayList<String> rtndata2 = new ArrayList<String>();
		rtndata2 = JWCBatCommon.executeZM_M_WORK_PARAM_KNRI_WC_SELECT_001(commonItem,paramList2.getList().toArray(), db_ZM_M_WORK_PARAM_KNRI);
		long zmzansu_real_msg = new Long((String)rtndata2.get(0)).longValue();

		// 視聴制御オーダのバッチの残数取得
		JBSbatCommonDBInterface paramList3 = new JBSbatCommonDBInterface();
		paramList3.setValue("WC_ZANSU_BAT_WCTL");
		ArrayList<String> rtndata3 = new ArrayList<String>();
		rtndata3 = JWCBatCommon.executeZM_M_WORK_PARAM_KNRI_WC_SELECT_001(commonItem,paramList3.getList().toArray(), db_ZM_M_WORK_PARAM_KNRI);
		long zmzansu_bat_wctl = new Long((String)rtndata3.get(0)).longValue();

		// ＳＴＢメッセージオーダのバッチの残数取得
		JBSbatCommonDBInterface paramList4 = new JBSbatCommonDBInterface();
		paramList4.setValue("WC_ZANSU_BAT_MSG");
		ArrayList<String> rtndata4 = new ArrayList<String>();
		rtndata4 = JWCBatCommon.executeZM_M_WORK_PARAM_KNRI_WC_SELECT_001(commonItem,paramList4.getList().toArray(), db_ZM_M_WORK_PARAM_KNRI);
		long zmzansu_bat_msg = new Long((String)rtndata4.get(0)).longValue();

		// 視聴制御オーダのリアルの残数取得
		Map<String, Object> rtnMap5 = null;
		rtnMap5 = JWCBatCommon.executeWC_T_WC_ORDER_WC_SELECT_004(commonItem,
										kyoku_cd,
										ctrl_area_cd,
										JWCStrConst.CD_DIV_WCTRL_TRN_CD_REAL,
										JWCStrConst.CD_DIV_WATCH_RSLT_RCV_FLG_MIREV);
		rtn = (Boolean)rtnMap5.get(JWCStrConst.CMD_RESULT_CD);
		if(!rtn)
		{
			this.logPrint.printDebugLog("視聴制御オーダのリアルの残数取得でエラー発生");
		}
		long wczansu_real_wctl = 0;
		if(rtnMap5.get(JBSbatWC_T_WC_ORDER.RSLT_RCV_FLG) != null)
		{
			wczansu_real_wctl = new Long((String)rtnMap5.get(JBSbatWC_T_WC_ORDER.RSLT_RCV_FLG)).longValue();
			
		}
		this.logPrint.printDebugLog("視聴制御オーダのリアルの残数値＝" + wczansu_real_wctl);

		// ＳＴＢメッセージオーダのリアルの残数取得
		Map<String, Object> rtnMap6 = null;
		rtnMap6 = JWCBatCommon.executeWC_T_STB_MSG_ORDER_WC_SELECT_003(commonItem,
										kyoku_cd,
										ctrl_area_cd,
										JWCStrConst.CD_DIV_WCTRL_TRN_CD_REAL,
										JWCStrConst.CD_DIV_WATCH_RSLT_RCV_FLG_MIREV);
		rtn = (Boolean)rtnMap6.get(JWCStrConst.CMD_RESULT_CD);
		if(!rtn)
		{
			this.logPrint.printDebugLog("ＳＴＢメッセージオーダのリアルの残数取得でエラー発生");
		}
		long wczansu_real_msg = 0;
		if(rtnMap6.get(JBSbatWC_T_STB_MSG_ORDER.RSLT_RCV_FLG) != null)
		{
			wczansu_real_msg = new Long((String)rtnMap6.get(JBSbatWC_T_STB_MSG_ORDER.RSLT_RCV_FLG)).longValue();
			
		}
		this.logPrint.printDebugLog("ＳＴＢメッセージオーダのリアルの残数値＝" + wczansu_real_msg);

		// 視聴制御オーダのバッチの残数取得
		Map<String, Object> rtnMap7 = null;
		rtnMap7 = JWCBatCommon.executeWC_T_WC_ORDER_WC_SELECT_004(commonItem,
										kyoku_cd,
										ctrl_area_cd,
										JWCStrConst.CD_DIV_WCTRL_TRN_CD_BAT,
										JWCStrConst.CD_DIV_WATCH_RSLT_RCV_FLG_MIREV);
		rtn = (Boolean)rtnMap7.get(JWCStrConst.CMD_RESULT_CD);
		if(!rtn)
		{
			this.logPrint.printDebugLog("視聴制御オーダのバッチの残数取得でエラー発生");
		}
		long wczansu_bat_wctl = 0;
		if(rtnMap7.get(JBSbatWC_T_WC_ORDER.RSLT_RCV_FLG) != null)
		{
			wczansu_bat_wctl = new Long((String)rtnMap7.get(JBSbatWC_T_WC_ORDER.RSLT_RCV_FLG)).longValue();
			
		}
		this.logPrint.printDebugLog("視聴制御オーダのバッチの残数値＝" + wczansu_bat_wctl);

		// ＳＴＢメッセージオーダのリアルの残数取得
		Map<String, Object> rtnMap8 = null;
		rtnMap8 = JWCBatCommon.executeWC_T_STB_MSG_ORDER_WC_SELECT_003(commonItem,
										kyoku_cd,
										ctrl_area_cd,
										JWCStrConst.CD_DIV_WCTRL_TRN_CD_BAT,
										JWCStrConst.CD_DIV_WATCH_RSLT_RCV_FLG_MIREV);
		rtn = (Boolean)rtnMap8.get(JWCStrConst.CMD_RESULT_CD);
		if(!rtn)
		{
			this.logPrint.printDebugLog("ＳＴＢメッセージオーダのバッチの残数取得でエラー発生");
		}
		long wczansu_bat_msg = 0;
		if(rtnMap8.get(JBSbatWC_T_STB_MSG_ORDER.RSLT_RCV_FLG) != null)
		{
			wczansu_bat_msg = new Long((String)rtnMap8.get(JBSbatWC_T_STB_MSG_ORDER.RSLT_RCV_FLG)).longValue();
			
		}
		this.logPrint.printDebugLog("ＳＴＢメッセージオーダのバッチの残数値＝" + wczansu_bat_msg);

		commonItem.setInformationFlg(true);
		if(zmzansu_real_wctl < wczansu_real_wctl)
		{
			this.logPrint.printDebugLog("視聴制御オーダのリアルの残数しきい値超え発生" + " " + zmzansu_real_wctl + " " + wczansu_real_wctl);
/*			throw new JBSbatBusinessException(JPCBatchMessageConstant.EWCB0420JE, new String[]{"7", 
														rtndata1.get(0),
														rtnMap5.get(JBSbatWC_T_WC_ORDER.RSLT_RCV_FLG).toString()});
*/
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EWCB0420JI, new String[]{"7",
														rtndata1.get(0),
														rtnMap5.get(JBSbatWC_T_WC_ORDER.RSLT_RCV_FLG).toString()});
		}
		if(zmzansu_real_msg < wczansu_real_msg)
		{
			this.logPrint.printDebugLog("ＳＴＢメッセージオーダのリアルの残数しきい値超え発生" + " " + zmzansu_real_msg + " " + wczansu_real_msg);
/*			throw new JBSbatBusinessException(JPCBatchMessageConstant.EWCB0440JE, new String[]{"7",
														rtndata2.get(0),
														rtnMap6.get(JBSbatWC_T_STB_MSG_ORDER.RSLT_RCV_FLG).toString()});
*/
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EWCB0440JI, new String[]{"7",
														rtndata2.get(0),
														rtnMap6.get(JBSbatWC_T_STB_MSG_ORDER.RSLT_RCV_FLG).toString()});
		}
		if(zmzansu_bat_wctl < wczansu_bat_wctl)
		{
			this.logPrint.printDebugLog("視聴制御オーダのバッチの残数しきい値超え発生" + " " + zmzansu_bat_wctl + " " + wczansu_bat_wctl);
/*			throw new JBSbatBusinessException(JPCBatchMessageConstant.EWCB0430JI, new String[]{"7",
														rtndata3.get(0),
														rtnMap7.get(JBSbatWC_T_WC_ORDER.RSLT_RCV_FLG).toString()});
*/
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EWCB0430JI, new String[]{"7",
														rtndata3.get(0),
														rtnMap7.get(JBSbatWC_T_WC_ORDER.RSLT_RCV_FLG).toString()});

		}
		if(zmzansu_bat_msg < wczansu_bat_msg)
		{
			this.logPrint.printDebugLog("ＳＴＢメッセージのバッチの残数しきい値超え発生" + " " + zmzansu_bat_msg + " " + wczansu_bat_msg);
/*			throw new JBSbatBusinessException(JPCBatchMessageConstant.EWCB0450JE, new String[]{"7",
														rtndata4.get(0),
														rtnMap8.get(JBSbatWC_T_STB_MSG_ORDER.RSLT_RCV_FLG).toString()});
*/
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EWCB0450JI, new String[]{"7",
														rtndata4.get(0),
														rtnMap8.get(JBSbatWC_T_STB_MSG_ORDER.RSLT_RCV_FLG).toString()});
		}
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		db_ZM_M_WORK_PARAM_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EWCB0020AI, 
											new String[]{"夜間視聴状況監視"});
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
