📄 ssglyworkflow.java
字号:
package gov.gdlt.ssgly.taxcore.taxdao.rwgl.workflow;
import java.math.BigDecimal;
import java.util.ArrayList;
import gov.gdlt.ssgly.taxcore.taxdao.rwgl.RWGLrwjlDAO;
import gov.gdlt.ssgly.taxcore.comm.log.LogWritter;
import gov.gdlt.ssgly.taxcore.taxdao.rwgl.RWGLrwlzxxDAO;
import gov.gdlt.ssgly.taxcore.comm.config.ApplicationContext;
import gov.gdlt.ssgly.taxcore.taxevent.rwgl.RWGLfsdxVO;
import gov.gdlt.ssgly.taxcore.taxevent.rwgl.RWGLrwmxVO;
import gov.gdlt.ssgly.taxcore.taxevent.rwgl.RWGLjhrwVO;
import gov.gdlt.ssgly.taxcore.taxdao.rwgl.RWGLjhapDAO;
/**
* <p>Title: </p>
*
* <p>Description: 广东地税税收管理员工作平台</p>
*
* <p>Copyright: Copyright (c) 2005 广东省地方税务局,广州市地方税务局</p>
*
* <p>Company: 广州地税</p>
*
* @author 王隽
* @version 1.0
*/
public class SsglyWorkFlow implements IWorkFlow {
public SsglyWorkFlow() {
}
/**
* 得到指定操作人员的任务列表
* @param swry_dm String \u2014\u2014操作人员代码<br>
* @param lb_lx String \u2014\u2014列表类型,取值为"dblb"待办列表、"zblb"在办列表、"yblb"已办列表<br>
* @return ArrayList \u2014\u2014返回的列表元素是封装了任务列表的 RWGLrwlbVO 类
*/
public static ArrayList getWorkList(String swry_dm,String lb_lx){
RWGLrwjlDAO lbDAO=new RWGLrwjlDAO();
LogWritter.sysDebug("DAO for "+lb_lx+" created");
ArrayList list=null;
if (lb_lx.equals("dblb")){
LogWritter.sysDebug("calling DAO for "+lb_lx);
list=lbDAO.getDblb(swry_dm);
}
else if (lb_lx.equals("zblb")){
LogWritter.sysDebug("calling DAO for "+lb_lx);
list=lbDAO.getZblb(swry_dm);
}
else if (lb_lx.equals("yblb")){
LogWritter.sysDebug("calling DAO for "+lb_lx);
list=lbDAO.getYblb(swry_dm);
}
else if (lb_lx.equals("qblb")){
LogWritter.sysDebug("calling DAO for "+lb_lx);
list=lbDAO.getQblb(swry_dm);
}else{
LogWritter.sysDebug("wrong lb_lx:"+lb_lx);
}
return list;
}
/**
* 签收任务,被签收的任务必须已经存在于签收者的待办列表中
* @param swry_dm String \u2014\u2014签收者的人员代码
* @param rw_xh BigDecimal \u2014\u2014任务编号
* @return int \u2014\u2014返回修改了的数据行数,如果为1表示签收成功,如果为0表示签收失败
*/
public static int sign(String swry_dm,BigDecimal rw_xh,BigDecimal bz_xh){
RWGLrwlzxxDAO rwDAO=new RWGLrwlzxxDAO();
rwDAO.setSwry_dm(swry_dm);
rwDAO.setRw_xh(rw_xh);
rwDAO.setBz_xh(bz_xh);
int errCode=rwDAO.querySqz();
if (errCode==ApplicationContext.ROWS_NOT_FOUND) return 0;
int rows=rwDAO.sign();
return rows;
}
/**
* 撤销签收任务,被撤销签收的任务必须已经被操作者签收,即已经存在于操作员的在办列表中
* @param swry_dm String \u2014\u2014操作人员代码
* @param rw_xh BigDecimal \u2014\u2014任务编号
* @return int \u2014\u2014返回修改了的数据行数,如果为1表示签收成功,如果为0表示签收失败
*/
public static int unsign(String swry_dm,BigDecimal rw_xh,BigDecimal bz_xh,String lzfs_dm){
RWGLrwlzxxDAO rwDAO=new RWGLrwlzxxDAO();
rwDAO.setSwry_dm(swry_dm);
rwDAO.setRw_xh(rw_xh);
rwDAO.setBz_xh(bz_xh);
rwDAO.setLzfs_dm(lzfs_dm);
return rwDAO.unsign();
}
// /** 已停用
// * 获取发送对象,在办理任务的时候将任务的基本情况传入,可以得到允许发送的人员列表
// * @param swry_dm String \u2014\u2014当前办理此任务的人员代码
// * @param rw_xh BigDecimal \u2014\u2014任务编号
// * @param blfs_dm String \u2014\u2014当前的办理方式,根据办理方式的不同,可以返回的列表也不同
// * @return ArrayList \u2014\u2014返回的列表元素为封装了发送对象的 RWGLfsdxVO 类
// */
// public static ArrayList getFsdx(String swry_dm,BigDecimal rw_xh,String blfs_dm){
// int errCode=ApplicationContext.ROWS_NOT_FOUND;
// ArrayList list=null;
// //设置DAO对象
// RWGLrwjlDAO rwDAO=new RWGLrwjlDAO();
// rwDAO.setSwry_dm(swry_dm);
// rwDAO.setRw_xh(rw_xh);
// LogWritter.sysDebug("DAO for getting Fsdx ready!");
// //获取当前任务信息
// errCode=rwDAO.getNextRy1();
// if ((errCode==ApplicationContext.ROWS_FOUND) && (!rwDAO.getClfs_dm().equals("07"))){
// //如果任务没有流转完成,则开始获取下一人员列表
// LogWritter.sysDebug("next clfs found!");
// list=rwDAO.getNextRy2();
// }else{
// //如果任务已经完成流转,则返回“办结”
// LogWritter.sysDebug("next clfs not found!");
// RWGLfsdxVO fsdxAdd=new RWGLfsdxVO();
// fsdxAdd.setLzfs_dm("07");
// fsdxAdd.setLzfs_mc("办结");
// list=new ArrayList();
// LogWritter.sysDebug("begin to add 07");
// list.add(0,fsdxAdd);
// }
// //以上是对所有人均可进行的正常流转操作
// LogWritter.sysDebug("got list");
// for (int i=0;i<list.size();i++) {
// ((RWGLfsdxVO) (list.get(i))).setBljg_dm("1");
// }
// //以下是针对审核人才有的中断、回退操作
// //略
// return list;
// }
/**
* 获取任务明细信息
* @param rw_xh BigDecimal \u2014\u2014任务序号
* @return RWGLrwmxVO \u2014\u2014返回一个封装了任务明细的 RWGLrwmxVO
*/
public static RWGLrwmxVO getRwmx(BigDecimal rw_xh){
RWGLrwjlDAO wfDAO=new RWGLrwjlDAO();
wfDAO.setRw_xh(rw_xh);
RWGLrwmxVO rwmx=wfDAO.getRwmx();
return rwmx;
}
/**
* 保存任务信息,包括任务处理意见,以及审核人修改过的任务明细信息
* @param rw_xh BigDecimal \u2014\u2014任务序号
* @param swry_dm String \u2014\u2014当前税务人员的代码
* @param clyj String \u2014\u2014处理意见
* @param blfs_dm String \u2014\u2014当前办理方式,如果是“05”审核的话,可以保存修改后的任务明细信息
* @param rwmx RWGLrwmxVO \u2014\u2014封装了修改后的任务明细信息的值对象
* @return int \u2014\u2014返回修改了的数据行数,如果为“1”表示保存成功,否则不成功
*/
public static int save(String swry_dm,RWGLrwmxVO rwmx){
BigDecimal rw_xh=rwmx.getRw_xh();
String clyj=rwmx.getBlyj();
String blfs_dm=rwmx.getClfs_dm();
BigDecimal bz_xh=rwmx.getBz_xh();
int rows=1;
if ((!blfs_dm.equals("07")) && (rwmx.getRwmxxx() !=null)){
LogWritter.sysDebug("begin update rwmxxx");
RWGLrwjlDAO rwjl=new RWGLrwjlDAO();
rwjl.setRw_xh(rw_xh);
rwjl.setClfs_dm(rwmx.getClfs_dm());
rwjl.setRwms(rwmx.getRwms());
rwjl.setRwmxxx(rwmx.getRwmxxx());
rwjl.setSwry_dm(swry_dm);
rows=rwjl.save1();
LogWritter.sysDebug(""+rows+" updated");
}
if (rows==1){
LogWritter.sysDebug("begin update clyj");
RWGLrwlzxxDAO lzxx=new RWGLrwlzxxDAO();
lzxx.setBlyj(clyj);
lzxx.setRw_xh(rw_xh);
lzxx.setSwry_dm(swry_dm);
lzxx.setLzfs_dm(blfs_dm);
lzxx.setBz_xh(bz_xh);
rows=lzxx.save2();
LogWritter.sysDebug(""+rows+" updated");
}
return rows;
}
/**
* 发送任务给下一人
* @param rw_xh BigDecimal \u2014\u2014任务序号
* @param swry_dm String \u2014\u2014当前操作人员代码
* @param clfs_dm String \u2014\u2014下一步的办理方式
* @param jsz_lx String \u2014\u2014接收者类型
* @param jsz_dm String \u2014\u2014接受者代码
* @return ArrayList \u2014\u2014返回一个列表,每一个元素都是一个本类的实例,表示本次发送后,执行了办结的任务列表及其内容
*/
public static ArrayList send(BigDecimal rw_xh,String swry_dm,String clfs_dm,String jsz_lx,String jsz_dm){
RWGLrwjlDAO rwjl=new RWGLrwjlDAO();
RWGLrwlzxxDAO lzxx=new RWGLrwlzxxDAO();
int errCode=ApplicationContext.ROWS_NOT_FOUND;
int rows=0;
ArrayList list=new ArrayList();
rwjl.setRw_xh(rw_xh);
rwjl.setSwry_dm(swry_dm);
rwjl.setClfs_dm(clfs_dm);
rwjl.setJsz_lx(jsz_lx);
if (jsz_lx.equals("1")){
jsz_dm=jsz_dm + ";;";
rwjl.setJsz_dm(jsz_dm);
}else if(clfs_dm.equals("07")){
jsz_dm="";
rwjl.setJsz_dm(jsz_dm);
}else{
rwjl.send6();
jsz_dm=rwjl.getJsz_dm();
}
//属于递归调用的,需要检查是否父任务,确定是否需要办结
if (clfs_dm==null || jsz_lx==null){
LogWritter.sysDebug("父任务"+rw_xh+"被唤醒,准备发送。");
errCode=rwjl.send1();
if (errCode==ApplicationContext.ROWS_FOUND){
LogWritter.sysDebug("获取父任务记录成功。");
}
}else{
LogWritter.sysDebug("准备发送任务"+rw_xh+"。");
}
lzxx.setRw_xh(rw_xh);
lzxx.setSwry_dm(swry_dm);
lzxx.setJsz_dm(jsz_dm);
lzxx.setJsz_lx(jsz_lx);
lzxx.setLzfs_dm(clfs_dm);
rows=lzxx.send234();
if (rows==1){
LogWritter.sysDebug("成功更新流转信息");
if (clfs_dm.equals("07")){
LogWritter.sysDebug("准备办结任务"+rw_xh);
BigDecimal frwxh=rwjl.bj();
if (!frwxh.equals(new BigDecimal(0))){
list=send(frwxh,swry_dm,null,null,null);
}
//将已办结的任务整个DAO添加到列表中,返回给blh,以便调用对应特殊任务的办结方法
list.add(rw_xh);
LogWritter.sysDebug("任务"+rw_xh+"需要后续处理,已添加到列表");
}else{
rwjl.setBz_xh(lzxx.getBz_xh());
rows=rwjl.send5();
}
}else{
LogWritter.sysDebug("更新流转信息失败,更新数据"+rows+"行");
}
return list;
}
/**
* 获取任务的流转信息
* @param rw_xh BigDecimal \u2014\u2014任务序号
* @return ArrayList \u2014\u2014流转信息的列表,表中的元素为RWGLlzxxVO
*/
public static ArrayList getLzxx(BigDecimal rw_xh){
RWGLrwlzxxDAO lzxx=new RWGLrwlzxxDAO(rw_xh);
ArrayList list=lzxx.getLzxx();
return list;
}
/**
* 收回已发送的任务
* @param rw_xh BigDecimal \u2014\u2014任务序号
* @param swry_dm String \u2014\u2014操作者的人员代码
* @return int \u2014\u2014如果成功,返回1
*/
public static int pullBack(BigDecimal rw_xh,String swry_dm){
RWGLrwlzxxDAO lzxx=new RWGLrwlzxxDAO(rw_xh);
lzxx.setSwry_dm(swry_dm);
return lzxx.pullBack("pullBack");
}
/**
* 回退任务到上一人
* @param rw_xh BigDecimal \u2014\u2014任务序号
* @param swry_dm String \u2014\u2014操作者的人员代码
* @return int \u2014\u2014如果成功,返回1
*/
public static int turnBack(BigDecimal rw_xh,String swry_dm){
RWGLrwlzxxDAO lzxx=new RWGLrwlzxxDAO(rw_xh);
lzxx.setSwry_dm(swry_dm);
return lzxx.pullBack("turnBack");//借用收回的方法来实现回退
}
/**
* 增加附件
* @param rwmx RWGLrwmxVO \u2014\u2014将附件的url作为任务明细信息传入,实际处理的时候把该内容附加在数据库该字段之后
* @return int \u2014\u2014如果成功,返回1
*/
public static int addFile(RWGLrwmxVO rwmx){
RWGLrwjlDAO rwjl=new RWGLrwjlDAO();
return rwjl.addFile(rwmx);
}
/**
* 新建任务计划,将计划的内容保存到数据库
* @param jhrw RWGLjhrwVO \u2014\u2014新任务计划的内容
* @return BigDecimal \u2014\u2014新计划的计划序号,保存失败,则返回空值
*/
public static BigDecimal newJhap(RWGLjhrwVO jhrw){
RWGLjhapDAO jhap=new RWGLjhapDAO();
//将VO的内容写入DAO中
jhap.setSwry_dm(jhrw.getJhxdry_dm());
jhap.setRwlx_dm(jhrw.getRwlx_dm());
jhap.setRwxl_dm(jhrw.getRwxl_dm());
jhap.setRwms(jhrw.getRwms());
jhap.setRwmxxx(jhrw.getRwmxxx());
jhap.setNsrnbm(jhrw.getNsrnbm());
jhap.setZzyq(jhrw.getZzyq());
jhap.setCbbm_dm(jhrw.getCbbm_dm());
jhap.setCbry_dm(jhrw.getCbry_dm());
jhap.setYdqd_sj(jhrw.getYdqd_sj());
jhap.setCfzq_lx(jhrw.getCfzq_lx());
jhap.setRwyx_jb(jhrw.getRwyxjb());
//保存计划内容
BigDecimal jh_xh=jhap.newJhap();
if (jh_xh!=null) return jh_xh;
else return null;
}
/**
* 启动工作流
* @param jh_xh BigDecimal \u2014\u2014输入计划序号
* @return int \u2014\u2014成功返回1,不成功返回-1
*/
public static BigDecimal startWorkFlow(BigDecimal jh_xh) {
RWGLjhapDAO jhap=new RWGLjhapDAO();
jhap.setJh_xh(jh_xh);
return startWorkFlow(jhap);
}
/**
* 重载启动工作流的方法
* @param jhap RWGLjhapDAO \u2014\u2014传入已经定义好计划序号的DAO
* @return int \u2014\u2014不成功返回-1
*/
public static BigDecimal startWorkFlow(RWGLjhapDAO jhap){
if (jhap.getJh_xh()!=null) return jhap.jhsx();
else return null;
}
/**
* 创建协办步骤
* @param rw_xh BigDecimal \u2014\u2014任务序号
* @param bz_xh BigDecimal \u2014\u2014创建协办所依据的步骤序号
* @param swry_dm String \u2014\u2014协办人员代码
* @return int 成功返回1,不成功返回-1
*/
public static int createXbz(BigDecimal rw_xh,BigDecimal bz_xh,String swry_dm){
RWGLrwlzxxDAO dao=new RWGLrwlzxxDAO(rw_xh);
dao.setBz_xh(bz_xh);
dao.setSwry_dm(swry_dm);
return dao.addXbz();
}
//以下main方法仅用于测试与ibatis的连接
public static void main(String[] args){
LogWritter.sysDebug("Debug begin...");
ArrayList list=getWorkList("24401020322","dblb");
LogWritter.sysDebug("got "+list.size()+" rows");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -