📄 htdlglblh.java
字号:
package gov.gdlt.ssgly.taxcore.taxblh.htdl;
import gov.gdlt.ssgly.taxcore.comm.blh.*;
import gov.gdlt.ssgly.taxcore.comm.event.*;
import gov.gdlt.ssgly.taxcore.comm.exception.*;
import gov.gdlt.ssgly.taxcore.comm.log.LogWritter;
import gov.gdlt.ssgly.taxcore.comm.config.ApplicationContext;
import gov.gdlt.ssgly.taxcore.taxevent.htdl.*;
//import gov.gdlt.ssgly.taxcore.taxblh.htdl.*;
import gov.gdlt.ssgly.taxcore.taxdao.htdl.*;
import java.util.ArrayList;
import java.sql.*;
import javax.servlet.ServletContext.*;
import java.util.Calendar;
import java.util.List;
import java.util.Timer;
/**
*
* <p>Title: </p>
*
* <p>Description: 广东地税税收管理员工作平台</p>
*
* <p>Copyright: Copyright (c) 2005 广东省地方税务局,广州市地方税务局</p>
*
* <p>Company: 广州地税</p>
*
* @author 肖雪莲
* @version 1.0
*/
public class HTDLglBLH extends BaseBizLogicHandler {
// public static final String HTDL_SXLX_PROC = "0";
// public static final String HTDL_SXLX_JAVA = "1";
static final int HTDL_RWZT_SCHEDULING = 0; //任务状态,调度中
static final int HTDL_RWZT_PAUSE = 1; //任务状态,停止调度
public HTDLglBLH() {
}
////////////////// 抽象方法实现 /////////////////////
/**
* validateData 实现具体的业务数据规则校验
* req : RequestEvent, 客户端请求数具
* conn : Connection 数据库连结
* 返回:boolean true:数据校验成功 false:数据校验不成功
*/
protected ResponseEvent validateData(RequestEvent req) throws
Exception {
return null;
}
/**
* 此方法实现了业务逻辑的处理过程,处理具体业务逻辑的过程中,
* 在出现异常的时侯, 必须向上抛出异常,异常的处理在
* BaseBizLogicHandler实现异常的处理,事务处理和日志的记录;具体要的异常的定义根据
* 具体的业务来确定。返回的参数的对象类型必须是ResponseEvent类型的对象实例,
* 如果捕捉到业务上的异常,并对具体的业务的异常进行处理,如根据TaxBaseBizException
* 以及它的扩展类的异常,写应用日志信息,异常捕获后,相应地要向上抛以下几种异常
* 1.TaxBaseSystemException
* 2.TaxBaseBizException
* 3.Throwable
* 输入参数:
* req : RequestEvent, 客户端请求的数据对象实例
* conn : Connection 数据库的连接句柄
* 返回:ResponseEvent 返回给客户端的数据对象实例
*/
protected ResponseEvent performTask(RequestEvent req) throws
TaxBaseSystemException, TaxBaseBizException {
String dealMethod = req.getDealMethod();
ResponseEvent res = new ResponseEvent();
//for test
// LogWritter.testDebug("dealMethod: "+ dealMethod);
//end for test
HTDLglddrwReqEvent reqEvent = (HTDLglddrwReqEvent) req;
try {
if ("getZxqkLog".equals(dealMethod)) { //查看任务的执行日志
/*在此调用具体的查看定时任务执行情况的方法,并把返回结果赋值给res*/
res = this.getZxqkLog(reqEvent);
} else if ("addDdrw".equals(dealMethod)) { //添加新的调度任务
res = this.addDdrw(reqEvent);
} else if ("delDdrw".equals(dealMethod)) { //删除一项已有的调度任务
res = this.delDdrw(reqEvent);
} else if ("getYbsrwlb".equals(dealMethod)) { //查看已部署任务列表
res = this.getYbsrwlb(reqEvent);
} else if ("addZxlog".equals(dealMethod)) { //插入任务执行情况日志
res = this.addZxlog(reqEvent);
} else if ("getDsrwlb".equals(dealMethod)) { //得到任务代码表
res = this.getDsrwlb(reqEvent);
} else if ("modRwzt".equals(dealMethod)) { //修改任务状态 调度中<-->停止调度
res = this.modRwzt(reqEvent);
} else if ("getRwlb&Ybsrwlb".equals(dealMethod)) { //一次获得任务代码表和已部署任务列表
res = this.getRwlbandYbsrw(reqEvent);
} else if ("startSchedule".equals(dealMethod)) { //启动调度管理进程,实现自动定时调度
res = this.startSchedule(reqEvent);
} else if ("stopSchedule".equals(dealMethod)) { //停止调度管理进程
res = this.stopSchedule(reqEvent);
} else if ("getZxlogFuzzy".equals(dealMethod)) { //用模糊查询得到执行日志
res = this.getZxlogFuzzy(reqEvent);
} else if ("getAllDtrw".equals(dealMethod)) { //得到当天任务列表中的所有任务
res = this.getAllDtrw(reqEvent);
} else if ("createDtrw".equals(dealMethod)) { //生成当天任务列表
res = this.createDtrw(reqEvent);
} else if ("executeDtrw".equals(dealMethod)) { //执行当天任务列表中的内容
res = this.executeDtrw(reqEvent);
} else if ("deleteDtrw".equals(dealMethod)) { //删除当天任务列表中指定的任务
res = this.deleteDtrw(reqEvent);
} else if ("countDtrwbyZt".equals(dealMethod)) { //计算当天任务列表中指定状态的记录数
res = this.countDtrwbyZt(reqEvent);
} else if ("modRwCs".equals(dealMethod)) { //修改指定任务的参数值
res = this.modRwCs(reqEvent);
} else if ("executeRw".equals(dealMethod)) { //用传入参数执行指定的任务
res = this.executeRw(reqEvent);
} else if ("editDdrw".equals(dealMethod)) { //修改指定的任务的属性
res = this.editDdrw(reqEvent);
} else if ("resetRwZt".equals(dealMethod)) { //重置指定任务的状态为空闲中
res = this.resetRwZt(reqEvent);
} else {
TaxBaseSystemException e = new TaxBaseSystemException(
"YCHTDL02304"); //在HTDLglBLH中没有找到匹配的dealMethod
LogWritter.sysError("YCHTDL02304:在HTDLglBLH中没有找到匹配的dealMethod");
throw e;
}
} catch (TaxBaseSystemException ex) {
LogWritter.sysError(ex.getMessage());
throw ex;
}
return res;
}
/**
* 具体实现查看定时任务执行情况的方法。根据reqEvent传进来的参数,查找T_HTDL_DSRWZXLOG表
* 得到结果
*/
private ResponseEvent getZxqkLog(HTDLglddrwReqEvent reqEvent) throws
TaxBaseSystemException {
// 与DAO交互,得到定时任务执行情况列表的VO
HTDLzxlogDAO zxlogDAO = new HTDLzxlogDAO();
// LogWritter.sysDebug("HTDL,------" + sessionID +
// "开始查询任务执行情况日志.....------");
HTDLglddrwResEvent resEvent = new HTDLglddrwResEvent();
try {
ArrayList zxlogVOList = (ArrayList) zxlogDAO.selectAllZxlog(
reqEvent.
getHtdlCxzxqkVO());
resEvent.setZxqkVOList(zxlogVOList);
resEvent.setRepCode("0");
} catch (TaxBaseSystemException e) {
resEvent.setRepCode("-1");
LogWritter.sysError(e.getMessage());
throw e;
} catch (Exception e) {
resEvent.setRepCode("YCHTDL02301");
LogWritter.sysError("YCHTDL02301:BLH中查看任务执行日志时出现异常!" + e.getMessage());
throw new TaxBaseSystemException("YCHTDL02301"); //mod encode
}
// LogWritter.sysDebug("HTDL,------完成查询任务执行情况日志,共有记录" + zxlogVOList.size() +
// "条。------");
return resEvent;
}
//添加新的调度任务
private ResponseEvent addDdrw(HTDLglddrwReqEvent reqEvent) throws
TaxBaseSystemException {
// LogWritter.sysDebug("HTDL,------" + sessionID +
// "加入一项新的调度任务开始......------");
HTDLybsdsrwVO ybsdsrwVO = reqEvent.getHtdlYbsdsrwVO(); //要插入的任务的相关参数
// LogWritter.sysDebug("HTDL,新调度任务的内容: " + ybsdsrwVO);
//把参数设置到对应的DAO中
HTDLybsdsrwDAO ybsdsrwDAO = new HTDLybsdsrwDAO();
//任务序号由sequence产生
ybsdsrwDAO.setRw_mc(ybsdsrwVO.getRw_mc()); //任务名称
ybsdsrwDAO.setBlh_mc(ybsdsrwVO.getBlh_mc()); //业务逻辑名称
ybsdsrwDAO.setDq_zt(ybsdsrwVO.getDq_zt()); //当前的状态
//任务部署时间取数据库系统时间,任务停止时间为空
ybsdsrwDAO.setZxpl(ybsdsrwVO.getZxpl()); //执行的频率
ybsdsrwDAO.setZlsj(ybsdsrwVO.getZlsj()); //增量时间
ybsdsrwDAO.setZxyxj(ybsdsrwVO.getZxyxj()); //执行优先级
ybsdsrwDAO.setLrry_dm(ybsdsrwVO.getLrry_dm()); //录入人员代码
ybsdsrwDAO.setZb(ybsdsrwVO.getZb()); //所属组别
//参数, added by xxl 2005-9-19
ybsdsrwDAO.setCsl(ybsdsrwVO.getCsl());
HTDLglddrwResEvent resEvent = new HTDLglddrwResEvent();
//调用DAO提供的方法操作数据库,插入记录
try {
if (ybsdsrwDAO.saveDsrw()) {
resEvent.setRepCode("0");
} else {
resEvent.setRepCode("YCHTDL02302");
LogWritter.sysError("YCHTDL02302:插入新任务操作失败!");
throw new TaxBaseSystemException("YCHTDL02302:插入新任务操作失败!"); //编码mod
}
} catch (TaxBaseSystemException e) {
resEvent.setRepCode("-1");
LogWritter.sysError(e.getMessage());
//需要统一编码 mod
throw new TaxBaseSystemException(e.getMessage());
}
// LogWritter.sysDebug("HTDL,------结束新调度任务的插入!-------");
return resEvent;
}
//删除指定的调度任务记录,
private ResponseEvent delDdrw(HTDLglddrwReqEvent reqEvent) throws
TaxBaseSystemException {
// LogWritter.sysDebug("HTDL,-----" + sessionID + "删除任务开始.....------");
//把参数设置到对应的DAO中
ArrayList listRwxh = reqEvent.getListRwxh();
StringBuffer rwxh = new StringBuffer();
for (int i = 0; i < listRwxh.size(); i++) {
rwxh.append("'");
rwxh.append(listRwxh.get(i));
rwxh.append("'");
if (i != listRwxh.size() - 1) {
rwxh.append(",");
}
}
// LogWritter.sysDebug("HTDL,----要删除的任务序号列表:" + listRwxh);
HTDLglddrwResEvent resEvent = new HTDLglddrwResEvent();
HTDLybsdsrwDAO ybsdsrwDAO = new HTDLybsdsrwDAO();
try {
int account = ybsdsrwDAO.deleteYbsrwBatch(new String(rwxh));
if (account != listRwxh.size()) {
if (account == ApplicationContext.RET_FAIL) {
resEvent.setRepCode("YCHTDL02302");
resEvent.setRetMsg("YCHTDL02302:删除指定的已部署任务失败!"); //需要统一编码 mod
LogWritter.sysError("YCHTDL02302:删除指定的已部署任务失败!!");
throw new TaxBaseSystemException(
"YCHTDL02302");
} else {
resEvent.setRepCode("-1");
resEvent.setRetMsg("部分记录被删除:" + account); //需要统一编码 mod
}
} else { //全部删除成功
resEvent.setRepCode("0");
resEvent.setRetMsg("成功删除" + account + "条记录!");
}
} catch (TaxBaseSystemException ex) {
resEvent.setRepCode("-1");
LogWritter.sysError(ex.getMessage());
throw ex;
}
// LogWritter.sysDebug("HTDL,------" + sessionID + "完成批量删除任务状态,操作结果: " +
// resEvent.getRepCode());
return resEvent;
}
//删除当天任务列表中指定的任务List
private ResponseEvent deleteDtrw(HTDLglddrwReqEvent reqEvent) throws
TaxBaseSystemException {
// LogWritter.sysDebug("HTDL删除任务开始.....------");
//把参数设置到对应的DAO中
ArrayList listRwxh = reqEvent.getListRwxh();
// LogWritter.sysDebug("HTDL,----要删除的任务序号列表:" + listRwxh);
HTDLglddrwResEvent resEvent = new HTDLglddrwResEvent();
HTDLdtrwlbDAO dtrwDAO = new HTDLdtrwlbDAO();
try {
int account = dtrwDAO.deleteDtrwBatch(listRwxh);
if (account != listRwxh.size()) {
if (account == ApplicationContext.RET_FAIL) {
resEvent.setRepCode("YCHTDL02303");
resEvent.setRetMsg("YCHTDL02303:删除指定的当天任务失败!"); //需要统一编码 mod
LogWritter.sysError("YCHTDL02303:删除指定的当天任务失败!!");
throw new TaxBaseSystemException("YCHTDL02303");
} else {
resEvent.setRepCode("-1");
resEvent.setRetMsg("部分记录被删除:" + account); //需要统一编码 mod
}
} else { //全部删除成功
resEvent.setRepCode("0");
resEvent.setRetMsg("成功删除" + account + "条记录!");
}
} catch (TaxBaseSystemException ex) {
resEvent.setRepCode("-1");
LogWritter.sysError(ex.getMessage());
//需要统一编码 mod
throw ex;
}
// LogWritter.sysDebug("HTDL,------完成批量删除任务状态,操作结果: " +
// resEvent.getRepCode());
return resEvent;
}
//查询已部署任务列表的内容
private ResponseEvent getYbsrwlb(HTDLglddrwReqEvent reqEvent) throws
TaxBaseSystemException {
// 与DAO交互,得到已部署定时任务列表的VO
HTDLybsdsrwDAO ybsdsrwDAO = new HTDLybsdsrwDAO();
// LogWritter.sysDebug("HTDL,------" + sessionID +
// "开始查询已部署任务列表中的内容.....------");
ArrayList ybsrwlbVOList = (ArrayList) ybsdsrwDAO.selectAllYbsrw(
reqEvent.getBlh());
// LogWritter.sysDebug("HTDL,------完成查询已部署任务列表的查询,共有记录" +
// ybsrwlbVOList.size() + "条------");
HTDLglddrwResEvent resEvent = new HTDLglddrwResEvent();
resEvent.setYbsrwlbVOList(ybsrwlbVOList);
resEvent.setRepCode("0");
return resEvent;
}
private ResponseEvent addZxlog(HTDLglddrwReqEvent reqEvent) throws
TaxBaseSystemException {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -