⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htdlexecrw.java

📁 以前做的一个j2ee的项目
💻 JAVA
字号:
package gov.gdlt.ssgly.taxcore.taxblh.htdl;

import gov.gdlt.ssgly.taxcore.taxdao.htdl.HTDLdtrwlbDAO;
import gov.gdlt.ssgly.taxcore.taxevent.htdl.IHTDLcall;
import gov.gdlt.ssgly.taxcore.taxevent.htdl.HTDLreturnVO;
import gov.gdlt.ssgly.taxcore.comm.exception.TaxBaseSystemException;
import gov.gdlt.ssgly.taxcore.comm.log.LogWritter;
import gov.gdlt.ssgly.taxcore.taxevent.htdl.HTDLybsdsrwVO;
import gov.gdlt.ssgly.taxcore.taxdao.htdl.HTDLybsdsrwDAO;
import gov.gdlt.ssgly.taxcore.taxevent.htdl.HTDLglddrwResEvent;
import gov.gdlt.ssgly.taxcore.taxdao.htdl.HTDLzxlogDAO;
import gov.gdlt.ssgly.taxcore.taxdao.htdl.HTDLdsrwlbDAO;
import java.util.List;
import gov.gdlt.ssgly.taxcore.taxevent.htdl.HTDLdsrwlbVO;
import gov.gdlt.ssgly.taxcore.taxevent.htdl.HTDLzxqkVO;
import java.util.TimerTask;

/**
 *
 * <p>Title:执行指定的已部署任务列表中的任务 </p>
 *
 * <p>Description: 广东地税税收管理员工作平台</p>
 *
 * <p>Copyright: Copyright (c) 2005 广东省地方税务局,广州市地方税务局</p>
 *
 * <p>Company: 广州地税</p>
 *
 * @author 肖雪莲
 * 单独写一个类执行已部署任务列表中的任务(采用线程类的形式),为了解决session time out的问题
 * @version 1.0
 */
public class HTDLexecRw extends TimerTask {
//public class HTDLexecRw extends Thread{
    public static final String HTDL_SXLX_PROC = "0";
    public static final String HTDL_SXLX_JAVA = "1";

    private String rw_xh; // 任务序号
    private String csl; //任务参数
    public HTDLexecRw(String rw_xh, String csl) {
        this.rw_xh = rw_xh;
        this.csl = csl;
    }

    //
    public void run(){
        boolean errFlag = false;   //用于标记是否出现了exception
        Exception myExcep = null;
        try {
            List tmp = null;
            HTDLybsdsrwDAO ybsdsrwDAO = new HTDLybsdsrwDAO();
            tmp = ybsdsrwDAO.getYbsrwByRwxh(rw_xh);
            if (tmp.size() != 1) {
                LogWritter.sysError("YCHTDL02305:要执行的任务的数据有误,请检查数据库中的数据!"); //mod
                throw new TaxBaseSystemException("YCHTDL02305");
            }
            HTDLybsdsrwVO ybsdsrwVO = (HTDLybsdsrwVO) tmp.get(0);

            java.sql.Timestamp dtBefore;
            java.sql.Timestamp dtAfter;
            dtBefore = new java.sql.Timestamp(System.currentTimeMillis());

            //在任务代码表中,查询实现该blh的实现方式和调用接口
            HTDLdsrwlbDAO dsrwlbDAO = new HTDLdsrwlbDAO();
            tmp = dsrwlbDAO.selectAllRwdm(ybsdsrwVO.getBlh_mc());
            if (tmp.size() != 1) {
                LogWritter.sysError("YCHTDL02306:获取功能的实现方式和调用接口出错,请检查数据库中的数据!"); //mod
//                 throw new TaxBaseSystemException("YCHTDL:获取功能的实现方式和调用接口出错!");
                //往DB写执行日志,一次性写
                HTDLzxlogDAO zxlogDAO = new HTDLzxlogDAO();
                zxlogDAO.setLrry_dm(ybsdsrwVO.getLrry_dm()); //录入人员代码
                zxlogDAO.setRw_xh(rw_xh); //任务序号
                zxlogDAO.setRw_mc(ybsdsrwVO.getRw_mc());
                zxlogDAO.setBlh_mc(ybsdsrwVO.getBlh_mc()); //业务逻辑名称
                zxlogDAO.setBczx_qssj(dtBefore);
                dtAfter = new java.sql.Timestamp(System.currentTimeMillis());
                zxlogDAO.setBczx_zzsj(dtAfter);
                zxlogDAO.setZxjg("-1"); //执行结果
                zxlogDAO.setJgms("在代码表T_DM_HTDL_DSRW中获取指定功能"+ybsdsrwVO.getBlh_mc()+"的相关信息时出错,请检查该表信息!"); //结果描述
                zxlogDAO.saveZxlog(); //insert into db

                HTDLybsdsrwDAO ybsrwDAO = new HTDLybsdsrwDAO();
                ybsrwDAO.updateRwzt(rw_xh, "0");
                return;
            }
            HTDLdsrwlbVO dsrwlbVO = new HTDLdsrwlbVO();
            dsrwlbVO = (HTDLdsrwlbVO) tmp.get(0);
            String sxlx = dsrwlbVO.getSx_lx(); //从DB中得到该blh的实现类型

            //更新任务的参数值
            HTDLybsdsrwDAO ybsrwDAO = new HTDLybsdsrwDAO();
//             ybsrwDAO.updateYbsrwCs(rw_xh, csl);  //不回写参数值

            //更新任务的当前状态为“人工执行中”\u2014\u2014只针对人工调度的任务有效
            //移到blh中
//             ybsrwDAO.updateRwzt(rw_xh,"3");

            //执行任务
            LogWritter.sysDebug("人工调度开始执行" + rw_xh + "号任务:" + dsrwlbVO.getDyjk());
            //插日志Log,提示任务执行中
            HTDLzxlogDAO zxlogDAO = new HTDLzxlogDAO();
            HTDLzxqkVO zxqkVO = new HTDLzxqkVO();
            zxqkVO.setLrry_dm(ybsdsrwVO.getLrry_dm());
            zxqkVO.setRw_xh(rw_xh); //任务序号
            zxqkVO.setRw_mc(ybsdsrwVO.getRw_mc());
            zxqkVO.setBlh_mc(ybsdsrwVO.getBlh_mc()); //业务逻辑名称
            zxqkVO.setBczx_qssj(dtBefore);
//             zxqkVO.setBczx_zzsj(dtAfter);
            zxqkVO.setZxjg("1"); //执行结果
            zxqkVO.setJgms("执行参数:" + csl); //结果描述
            String log_xh = zxlogDAO.insertNewLog(zxqkVO);

            if (log_xh == null) {
                System.out.println("Couldn't get a valid log_xh!..");
            }
            HTDLreturnVO retVO = new HTDLreturnVO();

            if (HTDL_SXLX_PROC.equals(sxlx)) { //该任务是存储过程
//                 System.out.println("jiekou: "+dsrwlbVO.getDyjk());
                retVO = executeProc(dsrwlbVO.getDyjk(), csl);
            } else if (HTDL_SXLX_JAVA.equals(sxlx)) { //该任务是Java类
                retVO = executeJavaClass(dsrwlbVO.getDyjk(), csl);
            } else {
                retVO.setStatus("-1");
                retVO.setDetail("未知的实现类型");
            }
            dtAfter = new java.sql.Timestamp(System.currentTimeMillis());

            //记录日志
            LogWritter.sysDebug("执行结果--状态:" + retVO.getStatus() + "描述:" +
                                retVO.getDetail());
            if (retVO.getDetail() == null) {
                retVO.setDetail("未提供执行结果的描述");
            }

            //往DB写执行日志,一次性写
//             HTDLzxlogDAO zxlogDAO = new HTDLzxlogDAO();
//             zxlogDAO.setLrry_dm(ybsdsrwVO.getLrry_dm()); //录入人员代码
//             zxlogDAO.setRw_xh(rw_xh); //任务序号
//             zxlogDAO.setRw_mc(ybsdsrwVO.getRw_mc());
//             zxlogDAO.setBlh_mc(ybsdsrwVO.getBlh_mc()); //业务逻辑名称
//             zxlogDAO.setBczx_qssj(dtBefore);
//             zxlogDAO.setBczx_zzsj(dtAfter);
//             zxlogDAO.setZxjg(retVO.getStatus()); //执行结果
//             zxlogDAO.setJgms("执行参数:" + csl + ".结果:" + retVO.getDetail()); //结果描述
//             zxlogDAO.saveZxlog(); //insert into db

            //更新日志
            zxqkVO.setLog_xh(log_xh);
            zxqkVO.setBczx_zzsj(dtAfter);
            zxqkVO.setZxjg(retVO.getStatus()); //执行结果
            zxqkVO.setJgms("执行参数:" + csl + ".结果:" + retVO.getDetail() +
                           "(人工调度)"); //结果描述
            zxlogDAO.updateZxlog(zxqkVO);

            //如果执行成功的话,更新已部署任务列表中相应的上次成功执行时间 mod
            if (retVO.getStatus().equals("0")) {
                ybsrwDAO.updateSccg_sj(rw_xh, dtAfter);
            }

            //恢复任务的当前状态为“调度中”\u2014\u2014只针对人工调度的任务有效
            ybsrwDAO.updateRwzt(rw_xh, "0");

        } catch (Exception e) {
            System.out.println("Exception in HTDLexecRw's run : " + e.getMessage());
            LogWritter.sysError(e.getMessage());
//             throw new TaxBaseSystemException(e.getMessage());
        } finally {
        }
    }

//执行指定的java类
    private HTDLreturnVO executeJavaClass(String taskClassName, String csl) throws
            TaxBaseSystemException {
        HTDLreturnVO retVO = new HTDLreturnVO();
        try {
            Object taskObject = Class.forName(taskClassName).newInstance();
            if (taskObject instanceof IHTDLcall) {
                IHTDLcall htdlCall = (IHTDLcall) taskObject;
                retVO = htdlCall.execute(csl);
                if (retVO.getStatus() == null) {
                    retVO.setStatus("0"); //未提供结果并且没有出现异常时,默认为成功
                    retVO.setDetail("接口未提供结果描述!");
                }
            } else { //提供的调用接口没有实现规定的IHTDLcall接口
                retVO.setStatus("-1");
                retVO.setDetail(taskClassName + "没有实现HTDLcall接口,无法统一调用!");
            }
        } catch (Exception e) {
            e.printStackTrace();
//            throw new Exception(HTDLexecDtrw.class.getName() + "执行" + className +"类时出错:" + e.toString());
            if (retVO.getStatus() == null) {
                retVO.setStatus("-1"); //出现异常时候,调用程序把执行结果设为失败
            }
            retVO.setDetail("调用出现异常:" + e.getMessage());
        }
        return retVO;
    }

//执行指定的存储过程
    public HTDLreturnVO executeProc(String procName, String csl) throws
            TaxBaseSystemException {
        HTDLreturnVO procRetVO = new HTDLreturnVO();
        procRetVO.setProcName(procName);
        procRetVO.setCsl(csl);

        try {
            HTDLdtrwlbDAO dtrwlbDAO = new HTDLdtrwlbDAO();
            dtrwlbDAO.execDtrw(procRetVO);
            if (procRetVO.getStatus() == null) {
                procRetVO.setStatus("0"); //未提供结果并且没有出现异常时,默认为成功
                procRetVO.setDetail("接口未提供结果描述!");
            }
        } catch (Exception e) {
            LogWritter.sysDebug(e.toString() + " in " +
                                HTDLexecDtrw.class.getName());
            if (procRetVO.getStatus() == null) {
                procRetVO.setStatus("-1"); //出现异常时候,调用程序把执行结果设为失败
            }
            procRetVO.setDetail("调用出现异常:" + e.toString());
//            throw new Exception(e.toString());
        }
        return procRetVO;
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -