/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatWCWctlOrderSend
*	ソースファイル名	：JBSbatWCWctlOrderSend.java
*	作成者				：富士通　
*	作成日				：2011年09月21日
*＜機能概要＞
*　視聴契約送信部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/21   富士通		新規作成
*	v3.00.00	2012/06/11   富士通		TAI-2012-0000054（性能対応）
*	v3.00.01	2012/08/24   富士通		ST1-2012-0000407 対応
*	v3.00.02	2012/09/07	 FJ)大山	【IT1-2012-0000985】グループID対応を実施
*	v3.01.00	2012/08/31	 FJ)大山	【TAI-2012-0000094】JBSbatSQLAccessのinitial化対応
*	v3.01.01	2013/02/21	 FJ)水谷	【TAI-2012-0000142】対応を実施
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.common.JWCBatCommon;
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 JBSbatWCWctlOrderSend extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(局)*/
	private static final String D_TBL_NAME_WC_M_KYOKU = "WC_M_KYOKU";

	/** テーブル(視聴制御オーダ)*/
	private static final String D_TBL_NAME_WC_T_WC_ORDER = "WC_T_WC_ORDER";

	/** テーブル(デジタルティアグループ)*/
	private static final String D_TBL_NAME_WC_M_DGTIA_GRP = "WC_M_DGTIA_GRP";

	/** テーブル(視聴制御オーダ対象デジタルティアグループ)*/
	private static final String D_TBL_NAME_WC_T_WC_ODR_TG_DGTIA = "WC_T_WC_ODR_TG_DGTIA";

	/** テーブル(ＳＴＢメッセージオーダ)*/
	private static final String D_TBL_NAME_WC_T_STB_MSG_ORDER = "WC_T_STB_MSG_ORDER";

	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** テーブル(ティアグループ対象ティア)*/
	private static final String D_TBL_NAME_WC_M_TIA_GRP_TG_TIA = "WC_M_TIA_GRP_TG_TIA";

	/** SQL定義キー(WC_SELECT_001)*/
	private static final String WC_M_KYOKU_WC_SELECT_001 = "WC_SELECT_001";

	/** SQL定義キー(WC_SELECT_003)*/
	private static final String WC_T_WC_ORDER_WC_SELECT_003 = "WC_SELECT_003";

	/** SQL定義キー(WC_SELECT_002)*/
	private static final String WC_M_DGTIA_GRP_WC_SELECT_002 = "WC_SELECT_002";

	/** SQL定義キー(WC_SELECT_001)*/
	private static final String WC_T_WC_ODR_TG_DGTIA_WC_SELECT_001 = "WC_SELECT_001";

	/** SQL定義キー(WC_UPDATE_002)*/
	private static final String WC_T_WC_ORDER_WC_UPDATE_002 = "WC_UPDATE_002";

	/** SQL定義キー(WC_SELECT_002)*/
	private static final String WC_T_STB_MSG_ORDER_WC_SELECT_002 = "WC_SELECT_002";

	/** SQL定義キー(WC_UPDATE_003)*/
	private static final String WC_T_STB_MSG_ORDER_WC_UPDATE_003 = "WC_UPDATE_003";

	/** テーブルアクセスクラス(局)*/
	private JBSbatSQLAccess db_WC_M_KYOKU = null;

	/** テーブルアクセスクラス(視聴制御オーダ)*/
	private JBSbatSQLAccess db_WC_T_WC_ORDER = null;

	/** テーブルアクセスクラス(デジタルティアグループ)*/
	private JBSbatSQLAccess db_WC_M_DGTIA_GRP = null;

	/** テーブルアクセスクラス(視聴制御オーダ対象デジタルティアグループ)*/
	private JBSbatSQLAccess db_WC_T_WC_ODR_TG_DGTIA = null;

	/** テーブルアクセスクラス(ＳＴＢメッセージオーダ)*/
	private JBSbatSQLAccess db_WC_T_STB_MSG_ORDER = null;

	/** テーブルアクセスクラス(ティアグループ対象ティア)*/
	private static JBSbatSQLAccess db_WC_M_TIA_GRP_TG_TIA = null;

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	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アクセスクラスを生成します
		db_WC_M_KYOKU = new JBSbatSQLAccess(commonItem, D_TBL_NAME_WC_M_KYOKU);
		db_WC_T_WC_ORDER = new JBSbatSQLAccess(commonItem, D_TBL_NAME_WC_T_WC_ORDER);
		db_WC_M_DGTIA_GRP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_WC_M_DGTIA_GRP);
		db_WC_T_WC_ODR_TG_DGTIA = new JBSbatSQLAccess(commonItem, D_TBL_NAME_WC_T_WC_ODR_TG_DGTIA);
		db_WC_T_STB_MSG_ORDER = new JBSbatSQLAccess(commonItem, D_TBL_NAME_WC_T_STB_MSG_ORDER);
		db_WC_M_TIA_GRP_TG_TIA = new JBSbatSQLAccess(commonItem, D_TBL_NAME_WC_M_TIA_GRP_TG_TIA);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		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> map_kyoku_cd = JWCBatCommon.getkyoku_cd(this.commonItem);
		
		String kyoku_cd = (String)map_kyoku_cd.get(JWCStrConst.KYOKU_CD);

		
		// 制御エリアの取得
		Map<String, Object> map_area_cd = JWCBatCommon.getctrl_area_cd(this.commonItem,kyoku_cd);

		String ctrl_area_cd = (String)map_area_cd.get(JWCStrConst.CTRL_AREA_CD);
		
		// 視聴制御オーダー取得 
		 //パラメータの設定
		String[] wtcl_order_param = {
				kyoku_cd
		};
		
		executeWC_T_WC_ORDER_WC_SELECT_003(wtcl_order_param);
		
		// 実行結果の取得
		JBSbatCommonDBInterface map = new JBSbatCommonDBInterface (); 

		// デジタルティア（ＴＭ０）コード取得
		ArrayList<String> rtnTM0 = new ArrayList();
		String[] paramTM0 = new String[1];
		
		paramTM0[0] = JWCStrConst.WORK_WC_BS_DGTIA_GRP_CD1;
		rtnTM0 = JWCBatCommon.executeZM_M_WORK_PARAM_KNRI_WC_SELECT_001(commonItem,paramTM0, db_ZM_M_WORK_PARAM_KNRI);
		
		ArrayList rtnTiaTM0 = new ArrayList();
		
		if(rtnTM0 != null && rtnTM0.size() != 0)
		{
			String in_tm0 = rtnTM0.get(0);
			rtnTiaTM0 = JWCBatCommon.gettmdgtia_cd(commonItem,
					in_tm0,
					kyoku_cd,
					db_WC_M_DGTIA_GRP);
		}
		
		// デジタルティア（ＴＭ１）コード取得
		ArrayList<String> rtnTM1 = new ArrayList();
		String[] paramTM1 = new String[1];
		
		paramTM1[0] = JWCStrConst.WORK_WC_BS_DGTIA_GRP_CD2;
		rtnTM1 = JWCBatCommon.executeZM_M_WORK_PARAM_KNRI_WC_SELECT_001(commonItem,paramTM1, db_ZM_M_WORK_PARAM_KNRI);
		
		ArrayList rtnTiaTM1 = new ArrayList();
		
		if(rtnTM1 != null && rtnTM1.size() != 0)
		{
			String in_tm1 = rtnTM1.get(0);
			rtnTiaTM1 = JWCBatCommon.gettmdgtia_cd(commonItem,
					in_tm1,
					kyoku_cd,
					db_WC_M_DGTIA_GRP);
		}
		
		// デジタルティア（ＴＭ２）コード取得
		ArrayList<String> rtnTM2 = new ArrayList();
		String[] paramTM2 = new String[1];
		
		paramTM2[0] = JWCStrConst.WORK_WC_BS_DGTIA_GRP_CD3;
		rtnTM2 = JWCBatCommon.executeZM_M_WORK_PARAM_KNRI_WC_SELECT_001(commonItem,paramTM2, db_ZM_M_WORK_PARAM_KNRI);

		ArrayList rtnTiaTM2 = new ArrayList();
		
		if(rtnTM2 != null && rtnTM2.size() != 0)
		{
			String in_tm2 = rtnTM2.get(0);
			rtnTiaTM2 = JWCBatCommon.gettmdgtia_cd(commonItem,
					in_tm2,
					kyoku_cd,
					db_WC_M_DGTIA_GRP);
		}
		
		// デジタルティア（ＴＭ３）コード取得
		ArrayList<String> rtnTM3 = new ArrayList();
		String[] paramTM3 = new String[1];
		
		paramTM3[0] = JWCStrConst.WORK_WC_BS_DGTIA_GRP_CD4;
		rtnTM3 = JWCBatCommon.executeZM_M_WORK_PARAM_KNRI_WC_SELECT_001(commonItem,paramTM3, db_ZM_M_WORK_PARAM_KNRI);

		ArrayList rtnTiaTM3 = new ArrayList();
		
		if(rtnTM3 != null && rtnTM3.size() != 0)
		{
			String in_tm3 = rtnTM3.get(0);
			rtnTiaTM3 = JWCBatCommon.gettmdgtia_cd(commonItem,
					in_tm3,
					kyoku_cd,
					db_WC_M_DGTIA_GRP);
		}
		
		while((map=db_WC_T_WC_ORDER.selectNext())!=null){
		    
			// 視聴制御オーダーから視聴制御番号を取得
			String wctrl_order_no = map.getString("WCTRL_ORDER_NO");
		    // 視聴制御オーダから制御要求キーを取得
			String ctrl_yokyu_key = map.getString("CTRL_YOKYU_KEY");
			// 視聴制御オーダから視聴制御オーダコードを取得
			String wctl_order_cd = map.getString("WCTRL_ORDER_CD");
		    // 視聴制御オーダから制御タイプコードを取得
			String ctrl_type_cd = map.getString("CTRL_TYPE_CD");
			// 視聴制御オーダから制御モードコードを取得
			String ctrl_mode_cd = map.getString("CTRL_MODE_CD");
			
			
		    // 視聴制御オーダからＳＴＢ機器製造番号を取得
			String stb_kiki_seizo_no = map.getString("STB_KIKI_SEIZO_NO");

			// 2011/11/29 STB機器製造番号のtrim対応
			if(stb_kiki_seizo_no != null && !"".equals(stb_kiki_seizo_no))
			{
				stb_kiki_seizo_no = stb_kiki_seizo_no.trim();
			}
			
			// 視聴制御オーダからＳＴＢ制御用機種コードを取得
			String stb_ctrl_model_cd= map.getString("STB_CTRL_MODEL_CD");
			// 視聴制御オーダからＳＴＢＩＤを取得
			String stb_id = map.getString("STB_ID");
			// 視聴制御オーダからＳＴＢＣＡＳ内蔵フラグ	を取得
			String stb_cas_naizo_flg = map.getString("STB_CAS_NAIZO_FLG");
			// 視聴制御オーダからＣ−ＣＡＳカード番号を取得
			String ccas_card_no = map.getString("CCAS_CARD_NO");
			// 視聴制御オーダからＢ−ＣＡＳカード番号を取得
			String bcas_card_no = map.getString("BCAS_CARD_NO");
			// 視聴制御オーダから課金フラグを取得
			String chrg_flg = map.getString("CHRG_FLG");
			// 視聴制御オーダからＳＴＢグループＩＤ１を取得
			String stb_grp_id_1 = map.getString("STB_GRP_ID_1");
			// 視聴制御オーダからＳＴＢグループＩＤ２を取得
			String stb_grp_id_2 = map.getString("STB_GRP_ID_2");
			// 視聴制御オーダからＳＴＢグループＩＤ３を取得
			String stb_grp_id_3 = map.getString("STB_GRP_ID_3");
			// 視聴制御オーダからＳＴＢグループＩＤ４を取得
			String stb_grp_id_4 = map.getString("STB_GRP_ID_4");
			// 視聴制御オーダからＳＴＢグループＩＤ５を取得
			String stb_grp_id_5 = map.getString("STB_GRP_ID_5");
			// 視聴制御オーダからＳＴＢグループＩＤsd６を取得
			String stb_grp_id_6 = map.getString("STB_GRP_ID_6");
			// 視聴制御オーダからＳＴＢグループＩＤ７を取得
			String stb_grp_id_7 = map.getString("STB_GRP_ID_7");
			// 視聴制御オーダから再設定フラグを取得
			String re_setting_flg= map.getString("RE_SETTE_FLG");
			
			// 視聴制御オーダー対象デジタルティアグループの取得
			String[] wc_odr_tg_dgtia = new String[1];
			wc_odr_tg_dgtia[0] = wctrl_order_no;
			
			ArrayList<String> tialist = new ArrayList<String>();
			if(wctl_order_cd != null && (!JWCStrConst.CD_DIV_WCTRL_ORDER_UNSET.equals(wctl_order_cd)
					&& !JWCStrConst.CD_DIV_WCTRL_ORDER_STBCLEAR.equals(wctl_order_cd)
					&& !JWCStrConst.CD_DIV_WCTRL_ORDER_CCASCLEAR.equals(wctl_order_cd) 
					&& !JWCStrConst.CD_DIV_WCTRL_ORDER_PASSCLS.equals(wctl_order_cd)
					&& !JWCStrConst.CD_DIV_WCTRL_REQ_TRN_CD_DYMMY.equals(map.getString("WCTRL_REQ_TRN_CD"))))
			{
				tialist = JWCBatCommon.executeWC_M_TIA_GRP_TG_TIA_WC_SELECT_003(commonItem, wc_odr_tg_dgtia, db_WC_M_TIA_GRP_TG_TIA);
			
				if(tialist.size() == 0) 
				{
					this.logPrint.printDebugLog("視聴オーダ対象デジタルティアの取得失敗");
					commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EWCB0330CE,
							new String[]{"デジタルティア","制御要求キー：" + wctrl_order_no});
	//				throw new JBSbatBusinessException(JPCBatchMessageConstant.EWCB0018CE,new String[]{"デジタルティア","デジタルティアグループ"});
				}
			}
			
			// 視聴制御コマンド発行インタフェースの編集
			HashMap<Object, Object> webInfoList = new HashMap< Object, Object>();

			webInfoList.put(JWCStrConst.WCTRL_ORDER_CD, wctl_order_cd);	// 視聴制御オーダコード
			webInfoList.put(JWCStrConst.KYOKU_CD, kyoku_cd); 				// 局コード
			webInfoList.put(JWCStrConst.CTRL_AREA_CD, ctrl_area_cd); 		// 制御エリア
			webInfoList.put(JWCStrConst.CTRL_YOKYU_KEY, ctrl_yokyu_key); 	// 制御要求キー
			webInfoList.put(JWCStrConst.CTRL_TYPE_CD, ctrl_type_cd); 		// 制御タイプ
			webInfoList.put(JWCStrConst.CTRL_MODE_CD, ctrl_mode_cd); 		// 制御モード
			webInfoList.put(JWCStrConst.STB_ID, stb_id); 					// STB ID
			webInfoList.put(JWCStrConst.STB_KIKI_SEIZO_NO, stb_kiki_seizo_no); // 製造番号
			webInfoList.put(JWCStrConst.STB_CTRL_MODEL_CD, stb_ctrl_model_cd); // 制御用機種コード
			webInfoList.put(JWCStrConst.STB_CAS_NAIZO_FLG, stb_cas_naizo_flg); // C-CAS内蔵タイプSTB
			webInfoList.put(JWCStrConst.CCAS_CARD_NO, ccas_card_no); 		// C-CAS ID
			webInfoList.put(JWCStrConst.BCAS_CARD_NO, bcas_card_no); 		// B-CAS ID

			webInfoList.put(JWCStrConst.CHRG_FLG, chrg_flg);	// 課金フラグ
			webInfoList.put(JWCStrConst.CCAS_SHKKA_CMD_HAK_FLG, JWCStrConst.CD_DIV_WCTRL_CHRG_FLG_CHRG_TRGT);// C-CAS初期化コマンド発行有無
			webInfoList.put(JWCStrConst.RE_SETTE_FLG, JWCStrConst.CD_DIV_WATCH_RE_SETTE_FLG_ADDCHG);// 再設定フラグ
			
			// ティアグループ（Remax)の設定
			ArrayList<Map<Object,Object>> tiaremaxlist = new ArrayList<Map<Object,Object>>();
			
			for(int i = 0 ;i < tialist.size() ; i++) 
			{
				Map<Object,Object>tiaremax = new HashMap<Object, Object>();
				String tia = tialist.get(i);
				tiaremax.put(JWCStrConst.DGTIA_CD1, tia);
				tiaremaxlist.add(tiaremax);
			}
			webInfoList.put(JWCStrConst.EWC0011D010CBSMSG1LIST, tiaremaxlist);
			
			// デジタルティア（ＴＭ１）
			ArrayList<HashMap<Object, Object>> list2 = new ArrayList<HashMap<Object, Object>>();
			if(rtnTiaTM1 != null)
			{
				for(Object list : rtnTiaTM1)
				{
					HashMap<Object, Object>cd = new HashMap<Object, Object>();
					cd.put(JWCStrConst.DGTIA_CD3, (String)list.toString());
					list2.add(cd);
				}
			}
			webInfoList.put(JWCStrConst.EWC0011D010CBSMSG3LIST, list2);
			
			// デジタルティア（ＴＭ２）
			ArrayList<HashMap<Object, Object>> list3 = new ArrayList<HashMap<Object, Object>>();
			if(rtnTiaTM2 != null) 
			{
				for(Object list : rtnTiaTM2)
				{
					HashMap<Object, Object>cd = new HashMap<Object, Object>();
					cd.put(JWCStrConst.DGTIA_CD4, (String)list.toString());
					list3.add(cd);
				}
			}
			webInfoList.put(JWCStrConst.EWC0011D010CBSMSG4LIST, list3);
			
			// デジタルティア（ＴＭ３）
			ArrayList<HashMap<Object, Object>> list4 = new ArrayList<HashMap<Object, Object>>();
			if(rtnTiaTM3 != null) 
			{
				for(Object list : rtnTiaTM3)
				{
					HashMap<Object, Object>cd = new HashMap<Object, Object>();
					cd.put(JWCStrConst.DGTIA_CD5, (String)list.toString());
					list4.add(cd);
				}
			}
			webInfoList.put(JWCStrConst.EWC0011D010CBSMSG5LIST, list4);

			ArrayList<Map<Object,Object>> grpidlist = new ArrayList<Map<Object,Object>>();
			
//			if(stb_grp_id_1 != null && !"".equals(stb_grp_id_1)) 
//			{
				Map<Object,Object>grpid = new HashMap<Object, Object>();
				grpid.put(JWCStrConst.GRP_ID, stb_grp_id_1);
				grpidlist.add(grpid);
//			}
//			if(stb_grp_id_2 != null && !"".equals(stb_grp_id_2)) 
//			{
				Map<Object,Object>grpid2 = new HashMap<Object, Object>();
				grpid2.put(JWCStrConst.GRP_ID, stb_grp_id_2);
				grpidlist.add(grpid2);
//			}
//			if(stb_grp_id_3 != null && !"".equals(stb_grp_id_3)) 
//			{
				Map<Object,Object>grpid3 = new HashMap<Object, Object>();
				grpid3.put(JWCStrConst.GRP_ID, stb_grp_id_3);
				grpidlist.add(grpid3);
//			}
			
//			if(stb_grp_id_4 != null && !"".equals(stb_grp_id_4)) 
//			{
				Map<Object,Object>grpid4 = new HashMap<Object, Object>();
				grpid4.put(JWCStrConst.GRP_ID, stb_grp_id_4);
				grpidlist.add(grpid4);
//			}
			
//			if(stb_grp_id_5 != null && !"".equals(stb_grp_id_5)) 
//			{
				Map<Object,Object>grpid5 = new HashMap<Object, Object>();
				grpid5.put(JWCStrConst.GRP_ID, stb_grp_id_5);
				grpidlist.add(grpid5);
//			}
//			if(stb_grp_id_6 != null && !"".equals(stb_grp_id_6)) 
//			{
				Map<Object,Object>grpid6 = new HashMap<Object, Object>();
				grpid6.put(JWCStrConst.GRP_ID, stb_grp_id_6);
				grpidlist.add(grpid6);
//			}
			
			if(grpidlist.size() != 0) 
			{
				webInfoList.put(JWCStrConst.EWC0011D010CBSMSG6LIST, grpidlist);
			}
			
			// コマンド発行部品の実行
			Boolean rtn = JWCBatCommon.executecmdHakko(webInfoList, commonItem);
			if(rtn == false)
			{
				this.logPrint.printDebugLog("コマンド発行でエラー発生");
				String parm = "制御要求キー:" + wctrl_order_no;
 				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EWCB0210CE,new String[]{parm});
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EWCB0210CE,new String[]{parm});
			}
			
			String ctrl_cmd_hakko_zumi_flg = JWCStrConst.CD_DIV_WATCH_CMD_HAKKO_FLG_HAKKOZUMI;
			String run_rslt_cd = JWCStrConst.CD_DIV_WCTRL_RSLT_CMD_CTR_CHU;

			// 視聴制御オーダーテーブルの更新
			String[] update_oder_param = new String[9];
			String datetime = JCCBatCommon.getSysDateTimeStamp();
			update_oder_param[0] = String.format("%03d",Integer.parseInt(JWCStrConst.CD_DIV_WATCH_ORDER_FLG_NORMAL)); // コマンド発行済みフラグ(0)
			update_oder_param[1] = ctrl_cmd_hakko_zumi_flg; // コマンド発行済みフラグ(0)
			update_oder_param[2] = run_rslt_cd;
			update_oder_param[3] = datetime;
			update_oder_param[4] = datetime;
			update_oder_param[5] = super.batchUserId;
			update_oder_param[6] = commonItem.getOpeDate();
			update_oder_param[7] = JCCBatCommon.getTrnId();
			update_oder_param[8] = wctrl_order_no;
			
			executeWC_T_WC_ORDER_WC_UPDATE_002(update_oder_param);
			
			super.commit();
			
		}

		// STBメッセージオーダの取得
		 //パラメータの設定
		String[] stb_order_param = {
							kyoku_cd
				};
		executeWC_T_STB_MSG_ORDER_WC_SELECT_002(stb_order_param);
		
		// 実行結果の取得
		JBSbatCommonDBInterface stb_map = new JBSbatCommonDBInterface (); 

		while((stb_map=db_WC_T_STB_MSG_ORDER.selectNext())!=null){
			// STBメッセージオーダからＳＴＢメッセージオーダ種別コードを取得
			String stb_msg_order_sbt_cd = stb_map.getString("STB_MSG_ORDER_SBT_CD");

			// STBメッセージオーダからＳＴＢメッセージオーダ番号を取得
			String stb_msg_order_no = stb_map.getString("STB_MSG_ORDER_NO");
			// STBメッセージオーダから制御要求キーを取得
			String ctrl_type_cd = stb_map.getString("CTRL_TYPE_CD");
			
			// STBメッセージオーダから制御タイプコードを取得
			String ctrl_yokyu_key = stb_map.getString("CTRL_YOKYU_KEY");
			// STBメッセージオーダかＳＴＢ機器製造番号を取得
			String stb_takunkiki_model_cd = stb_map.getString("STB_TAKNKIKI_MODEL_CD");
			
			// 2011/11/29 STB機器製造番号を右trimするように修正
			if(stb_takunkiki_model_cd != null && !"".equals(stb_takunkiki_model_cd))
			{
				stb_takunkiki_model_cd = stb_takunkiki_model_cd.trim();
			}
			
			// STBメッセージオーダからＳＴＢＩＤを取得
			String stb_id = stb_map.getString("STB_ID");
			// STBメッセージオーダからグループＩＤ値域コードを取得
			String grp_id_range_cd= stb_map.getString("GRP_ID_RANGE_CD");
			// STBメッセージオーダからＳＴＢグループＩＤを取得
			String stb_rgp_id = stb_map.getString("STB_GRP_ID");
			// STBメッセージオーダからＨＥメッセージＩＤを取得
			String he_msg_id = stb_map.getString("HE_MSG_ID");
			// STBメッセージオーダからメッセージ送出年月日時分秒を取得
			String msg_send_dtm = stb_map.getString("MSG_SEND_DTM");
			// STBメッセージオーダからメッセージ停止年月日時分秒を取得
			String msg_stp_dtm = stb_map.getString("MSG_STP_DTM");
			// STBメッセージオーダからＳＴＢメッセージ内容を取得
			String stb_msg_naiyo = stb_map.getString("STB_MSG_NAIYO");

			// 視聴制御コマンド発行インタフェースの編集
			HashMap<Object, Object> stbMsgList = new HashMap< Object, Object>();

			if("00".equals(stb_msg_order_sbt_cd)) 
			{
				stbMsgList.put(JWCStrConst.WCTRL_ORDER_CD,  JWCStrConst.CD_DIV_WCTRL_ORDER_STBMSGSND );	// 視聴制御オーダコード
				stbMsgList.put(JWCStrConst.KYOKU_CD, kyoku_cd); 				// 局コード
				stbMsgList.put(JWCStrConst.CTRL_YOKYU_KEY, ctrl_yokyu_key); 		// 制御エリア
				stbMsgList.put(JWCStrConst.CTRL_AREA_CD, ctrl_area_cd); 		// 制御エリア
				stbMsgList.put(JWCStrConst.CTRL_TYPE_CD, ctrl_type_cd); 		// 制御タイプ
				stbMsgList.put(JWCStrConst.HE_MSG_ID, he_msg_id); 		// HEメッセージＩＤ
				stbMsgList.put(JWCStrConst.STB_ID, stb_id); 		// ＳＴＢＩＤ
				stbMsgList.put(JWCStrConst.STB_KIKI_SEIZO_NO, stb_takunkiki_model_cd); 		// 機器製造番号
				stbMsgList.put(JWCStrConst.MSG_SEND_DTM, msg_send_dtm); 		// 送信開始年月日
				stbMsgList.put(JWCStrConst.MSG_STP_DTM, msg_stp_dtm); 		// 送信終了年月日
				stbMsgList.put(JWCStrConst.STB_MSG_NAIYO, stb_msg_naiyo); 		// メッセージ内容
			}
			if("01".equals(stb_msg_order_sbt_cd)) 
			{
				stbMsgList.put(JWCStrConst.WCTRL_ORDER_CD,  JWCStrConst.CD_DIV_WCTRL_ORDER_GRPMSGSND );	// 視聴制御オーダコード
				stbMsgList.put(JWCStrConst.KYOKU_CD, kyoku_cd); 				// 局コード
				stbMsgList.put(JWCStrConst.CTRL_YOKYU_KEY, ctrl_yokyu_key); 		// 制御エリア
				stbMsgList.put(JWCStrConst.CTRL_AREA_CD, ctrl_area_cd); 		// 制御エリア
				stbMsgList.put(JWCStrConst.CTRL_TYPE_CD, ctrl_type_cd); 		// 制御タイプ
				stbMsgList.put(JWCStrConst.HE_MSG_ID, he_msg_id); 		// HEメッセージＩＤ
				stbMsgList.put(JWCStrConst.GRP_ID_RANGE_CD, grp_id_range_cd); 		// グループＩＤ値域コード
				stbMsgList.put(JWCStrConst.STB_GRP_ID, stb_rgp_id); 		// ＳＴＢグループＩＤ
				stbMsgList.put(JWCStrConst.MSG_SEND_DTM, msg_send_dtm); 		// 送信開始年月日
				stbMsgList.put(JWCStrConst.MSG_STP_DTM, msg_stp_dtm); 		// 送信終了年月日
				stbMsgList.put(JWCStrConst.STB_MSG_NAIYO, stb_msg_naiyo); 		// メッセージ内容
			}
			if("02".equals(stb_msg_order_sbt_cd)) 
			{
				stbMsgList.put(JWCStrConst.WCTRL_ORDER_CD,  JWCStrConst.CD_DIV_WCTRL_ORDER_MSGSNDSTOP );	// 視聴制御オーダコード
				stbMsgList.put(JWCStrConst.KYOKU_CD, kyoku_cd); 				// 局コード
				stbMsgList.put(JWCStrConst.CTRL_YOKYU_KEY, ctrl_yokyu_key); 		// 制御エリア
				stbMsgList.put(JWCStrConst.CTRL_AREA_CD, ctrl_area_cd); 		// 制御エリア
				stbMsgList.put(JWCStrConst.CTRL_TYPE_CD, ctrl_type_cd); 		// 制御タイプ
				stbMsgList.put(JWCStrConst.HE_MSG_ID, he_msg_id); 		// HEメッセージＩＤ
			}
			
			// コマンドを発行する。
			boolean ret = JWCBatCommon.executecmdStbCmdHakko(stbMsgList, commonItem);
			
			if(ret == false) {
				this.logPrint.printDebugLog("コマンド発行でエラー発生");
				String parm = "ＳＴＢメッセージオーダ番号:" + stb_msg_order_no;
				commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EWCB0210CE,new String[]{parm});
				throw new JBSbatBusinessException(JPCBatchMessageConstant.EWCB0210CE,new String[]{parm});
			}
			
			String ctrl_cmd_hakko_zumi_flg = JWCStrConst.CD_DIV_WATCH_CMD_HAKKO_FLG_HAKKOZUMI;
			String run_rslt_cd = JWCStrConst.CD_DIV_WCTRL_RSLT_CMD_CTR_CHU;
			
			// ＳＴＢメッセージオーダを更新する。
			String[] update_stbmsg_param = new String[9];
			String datetime = JCCBatCommon.getSysDateTimeStamp();
			update_stbmsg_param[0] = String.format("%03d",Integer.parseInt(JWCStrConst.CD_DIV_WATCH_ORDER_FLG_NORMAL)); // 視聴制御オーダーステータス(0)
			update_stbmsg_param[1] = ctrl_cmd_hakko_zumi_flg; // コマンド発行済みフラグ(0)
			update_stbmsg_param[2] = run_rslt_cd;
			update_stbmsg_param[3] = datetime;
			update_stbmsg_param[4] = datetime;
			update_stbmsg_param[5] = super.batchUserId;
			update_stbmsg_param[6] = commonItem.getOpeDate();
			update_stbmsg_param[7] = JCCBatCommon.getTrnId();
			update_stbmsg_param[8] = stb_msg_order_no;
			
			executeWC_T_STB_MSG_ORDER_WC_UPDATE_003(update_stbmsg_param);
			
			super.commit();
			// エラー時の処理を記載する。
		}

		return null;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_WC_M_KYOKU.close();
		db_WC_T_WC_ORDER.close();
		db_WC_M_DGTIA_GRP.close();
		db_WC_T_WC_ODR_TG_DGTIA.close();
		db_WC_T_STB_MSG_ORDER.close();
		db_WC_M_TIA_GRP_TG_TIA.close();
		db_ZM_M_WORK_PARAM_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
		commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EWCB0020AI, 
				new String[]{"視聴契約送信"});
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(WC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeWC_M_KYOKU_WC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();

		// DBアクセスを実行します
		db_WC_M_KYOKU.selectBySqlDefine(paramList, WC_M_KYOKU_WC_SELECT_001);
	}

	/**
	 * SQLKEY(WC_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	視聴制御オーダステータス
	 *		 	制御コマンド発行済みフラグ
	 *		 	局コード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeWC_T_WC_ORDER_WC_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_WC_T_WC_ORDER.selectBySqlDefine(paramList, WC_T_WC_ORDER_WC_SELECT_003);
	}

	/**
	 * SQLKEY(WC_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	視聴制御オーダー番号
	 *		 	局
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeWC_M_DGTIA_GRP_WC_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_WC_M_DGTIA_GRP.selectBySqlDefine(paramList, WC_M_DGTIA_GRP_WC_SELECT_002);
	}

	/**
	 * SQLKEY(WC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	視聴制御オーダーコード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeWC_T_WC_ODR_TG_DGTIA_WC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_WC_T_WC_ODR_TG_DGTIA.selectBySqlDefine(paramList, WC_T_WC_ODR_TG_DGTIA_WC_SELECT_001);
	}

	/**
	 * SQLKEY(WC_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	視聴制御オーダーステータス
	 *		 	制御コマンド発行済みフラグ
	 *		 	オーダ結果受付年月日時分秒
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	制御要求キー
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeWC_T_WC_ORDER_WC_UPDATE_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());

		// DBアクセスを実行します
		db_WC_T_WC_ORDER.executeBySqlDefine(paramList, WC_T_WC_ORDER_WC_UPDATE_002);
	}

	/**
	 * SQLKEY(WC_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	ＳＴＢメッセージオーダステータス
	 *		 	制御コマンド発行済みフラグ
	 *		 	局コード
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeWC_T_STB_MSG_ORDER_WC_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_WC_T_STB_MSG_ORDER.selectBySqlDefine(paramList, WC_T_STB_MSG_ORDER_WC_SELECT_002);
	}

	/**
	 * SQLKEY(WC_UPDATE_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	ＳＴＢメッセージオーダステータス
	 *		 	制御コマンド発行済みフラグ
	 *		 	オーダ結果受付年月日時分秒
	 *		 	更新年月日時分秒
	 *		 	更新オペレータアカウント
	 *		 	制御要求キー
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeWC_T_STB_MSG_ORDER_WC_UPDATE_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());

		// DBアクセスを実行します
		db_WC_T_STB_MSG_ORDER.executeBySqlDefine(paramList, WC_T_STB_MSG_ORDER_WC_UPDATE_003);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
