You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
744 lines
41 KiB
Java
744 lines
41 KiB
Java
package com.engine.workflow.cmd.requestForm;
|
|
|
|
import com.api.workflow.util.ServiceUtil;
|
|
import com.cloudstore.dev.api.util.Util_TableMap;
|
|
import com.engine.common.biz.AbstractCommonCommand;
|
|
import com.engine.common.entity.BizLogContext;
|
|
import com.engine.core.interceptor.CommandContext;
|
|
import com.engine.workflow.biz.WorkflowTestBiz;
|
|
import com.engine.workflow.biz.publicApi.RequestOperateBiz;
|
|
import com.engine.workflow.biz.requestForm.RequestRemindBiz;
|
|
import com.engine.workflow.biz.requestForm.SubmitErrorMsgBiz;
|
|
import com.engine.workflow.biz.requestForm.TestWorkflowCheckBiz;
|
|
import com.engine.workflow.biz.requestList.RequestAttentionBiz;
|
|
import com.engine.workflow.biz.workflowOvertime.OvertimeBiz;
|
|
import com.engine.workflow.constant.RemindTypeEnum;
|
|
import com.engine.workflow.constant.requestForm.RequestExecuteType;
|
|
import com.engine.workflow.entity.requestForm.RequestOperationResultBean;
|
|
import weaver.conn.RecordSet;
|
|
import weaver.conn.RecordSetTrans;
|
|
import weaver.file.FileUpload;
|
|
import weaver.general.BaseBean;
|
|
import weaver.general.Util;
|
|
import weaver.hrm.User;
|
|
import weaver.meeting.MeetingUtil;
|
|
import weaver.systeminfo.SystemEnv;
|
|
import weaver.workflow.agent.AgentManager;
|
|
import weaver.workflow.msg.MsgPushUtil;
|
|
import weaver.workflow.msg.entity.MsgEntity;
|
|
import weaver.workflow.report.RequestDeleteLog;
|
|
import weaver.workflow.request.RequestAnnexUpload;
|
|
import weaver.workflow.request.RequestDeleteUtils;
|
|
import weaver.workflow.request.RequestOperationMsgManager;
|
|
import weaver.workflow.request.WFUrgerManager;
|
|
import weaver.workflow.workflow.*;
|
|
import weaver.workflow.workflow.RequestForceDrawBack;
|
|
import weaver.workflow.workflow.WFManager;
|
|
import weaver.workflow.workflow.WfForceDrawBack;
|
|
import weaver.workflow.workflow.WfForceOver;
|
|
import weaver.workflow.workflow.WfFunctionManageUtil;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.io.IOException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.*;
|
|
|
|
/**
|
|
* 功能管理
|
|
* @author liuzy 2018/5/4
|
|
*/
|
|
public class FunctionManageCmd extends AbstractCommonCommand<Map<String,Object>>{
|
|
|
|
private HttpServletRequest request;
|
|
private HttpServletResponse response;
|
|
|
|
public FunctionManageCmd(HttpServletRequest request, HttpServletResponse response, User user){
|
|
this.request = request;
|
|
this.response = response;
|
|
this.user = user;
|
|
}
|
|
|
|
//判断是否为空,可能已分配空间有值为 "" (空串),也可能未分配空间没有值为 null
|
|
private boolean isEmpty(String str) {
|
|
if ("".equals(str) || str == null) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public Map<String,Object> execute(CommandContext commandContext){
|
|
Map<String, Object> apidatas = new HashMap<String, Object>();
|
|
|
|
Map<String, String> resultmap = new HashMap<String, String>();
|
|
int logintype = Util.getIntValue(user.getLogintype());
|
|
int requestid = Util.getIntValue(request.getParameter("requestid"), 0);
|
|
String flag = Util.null2String(request.getParameter("flag"));
|
|
WfFunctionManageUtil wffmu = new WfFunctionManageUtil();
|
|
ArrayList<String> requestidlist = new ArrayList<String>();
|
|
|
|
int formid = Util.getIntValue(request.getParameter("formid"), 0);
|
|
int requestLogId = Util.getIntValue(request.getParameter("workflowRequestLogId"), 0);
|
|
String signdocids = Util.null2String(request.getParameter("signdocids"));
|
|
String signworkflowids = Util.null2String(request.getParameter("signworkflowids"));
|
|
String remark = Util.null2String(request.getParameter("remark"));
|
|
int workflowid = Util.getIntValue(request.getParameter("workflowid"), 0);
|
|
int nodeid = -1;
|
|
|
|
|
|
String isnew = new BaseBean().getPropValue("WorkflowOvertimeIsNew" , "isNew");
|
|
boolean isnewFlag = "1".equals(isnew);
|
|
// 流程暂停
|
|
if ("stop".equals(flag)) {
|
|
wffmu.setStopOperation(requestid, user);
|
|
// this.pushOperationMsg(requestid,user,flag);
|
|
if(isnewFlag)
|
|
OvertimeBiz.getInstance().cancelOvertimeTask(requestid, nodeid);//取消超时任务
|
|
}
|
|
|
|
// 流程撤销
|
|
if ("cancel".equals(flag)) {
|
|
wffmu.setCancelOperation(requestid, user);
|
|
// this.pushOperationMsg(requestid,user,flag);
|
|
if(isnewFlag)
|
|
OvertimeBiz.getInstance().cancelOvertimeTask(requestid, nodeid);//取消超时任务
|
|
}
|
|
|
|
// 流程启用
|
|
if ("restart".equals(flag)) {
|
|
wffmu.setRestartOperation(requestid, user);
|
|
// this.pushOperationMsg(requestid,user,flag);
|
|
if(isnewFlag)
|
|
OvertimeBiz.getInstance().addOvertimeTaskThread(requestid, workflowid, nodeid);//添加超时任务
|
|
}
|
|
|
|
|
|
// 强制归档
|
|
if ("ov".equals(flag)) {
|
|
WfForceOver wfo = new WfForceOver();
|
|
String annexdocids = "";
|
|
String fromflow = Util.null2String(request.getParameter("fromflow"));
|
|
String remarkLocation = Util.null2String(request.getParameter("remarkLocation"));
|
|
|
|
int agentType = Util.getIntValue(Util.null2String(request.getParameter("agentType")));
|
|
int agentorByAgentId = Util.getIntValue(Util.null2String(request.getParameter("agentorByAgentId")));
|
|
if (agentType == 1) {//流程代理出去,本人强制归档,需先收回代理
|
|
AgentManager agentManager = new AgentManager(user);
|
|
agentManager.agentBackRequest(agentorByAgentId, user.getUID(), workflowid + "", requestid);
|
|
Date currentDate = new Date();
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
|
|
SimpleDateFormat timeForamt = new SimpleDateFormat("HH:mm:ss");
|
|
new RecordSet().executeUpdate("update workflow_currentoperator set operatedate = ? , operatetime = ? where userid = ? and requestid = ? and (operatedate is null or operatedate < ' ' ) ",
|
|
dateFormat.format(currentDate), timeForamt.format(currentDate), user.getUID(), requestid);
|
|
}
|
|
|
|
if (fromflow.equals("1")) {
|
|
FileUpload fu = new FileUpload(request);
|
|
remark = Util.null2String(fu.getParameter("remark"));
|
|
workflowid = Util.getIntValue(fu.getParameter("workflowid"), -1);
|
|
nodeid = Util.getIntValue(fu.getParameter("nodeid"), -1);
|
|
|
|
// 获取签字意见相关文档,相关流程
|
|
|
|
signdocids = Util.null2String(fu.getParameter("signdocids"));
|
|
signworkflowids = Util.null2String(fu.getParameter("signworkflowids"));
|
|
String ismode = Util.null2String(request.getParameter("ismode"));
|
|
if (!ismode.equals("1")) {
|
|
RequestAnnexUpload rau = new RequestAnnexUpload();
|
|
rau.setRequest(fu);
|
|
rau.setUser(user);
|
|
annexdocids = rau.AnnexUpload();
|
|
} else {
|
|
String hasSign = "0";// 模板中是否设置了签字
|
|
RecordSet rs = new RecordSet();
|
|
rs.executeSql("select * from workflow_modeview where formid=" + formid + " and nodeid=" + nodeid + " and fieldid=-4");
|
|
if (rs.next())
|
|
hasSign = "1";
|
|
if ("1".equals(hasSign)) {// 模板中设置了签字
|
|
annexdocids = Util.null2String(fu.getParameter("qianzi"));
|
|
} else {// 模板中没有设置签字,按普通方式上传签字意见的附件
|
|
RequestAnnexUpload rau = new RequestAnnexUpload();
|
|
rau.setRequest(fu);
|
|
rau.setUser(user);
|
|
annexdocids = rau.AnnexUpload();
|
|
}
|
|
}
|
|
|
|
|
|
WFManager wfManager = new WFManager();
|
|
wfManager.setWfid(workflowid);
|
|
try {
|
|
wfManager.getWfInfo();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
String isShowChart = Util.null2s(wfManager.getIsShowChart().trim(),"0");
|
|
apidatas.put("isShowChart", isShowChart);
|
|
}
|
|
|
|
wfo.setRemark(remark);
|
|
wfo.setAnnexdocids(annexdocids);
|
|
wfo.setSigndocids(signdocids);
|
|
wfo.setSignworkflowids(signworkflowids);
|
|
wfo.setRequestLogId(requestLogId);
|
|
wfo.setRemarkLocation(remarkLocation);
|
|
|
|
WFUrgerManager wfum = new WFUrgerManager();
|
|
if (wffmu.haveOtherOperationRight(requestid) && !wfo.isOver(requestid) && (wfo.isNodeOperator(requestid, user.getUID()) || wfum.getMonitorViewRight(requestid, user.getUID()))) {
|
|
requestidlist.add("" + requestid);
|
|
wfo.doForceOver(requestidlist, request, response, user);
|
|
apidatas.put("success",1);
|
|
if(isnewFlag)
|
|
OvertimeBiz.getInstance().cancelOvertimeTask(requestid, nodeid);//取消超时任务
|
|
}else{
|
|
apidatas.put("success",0);
|
|
}
|
|
//判断是否属于流程测试
|
|
TestWorkflowCheckBiz testBiz = new TestWorkflowCheckBiz();
|
|
boolean belongTest = testBiz.judgeBelongTest(request, false);
|
|
if(belongTest) {
|
|
RecordSet rs = new RecordSet();
|
|
rs.executeQuery("select nodeid from workflow_flownode where workflowid = ? and nodetype = 3",workflowid);
|
|
rs.next();
|
|
WorkflowTestBiz.setWorkflowTestInfo(flag, requestid, nodeid, "", null,rs.getInt("nodeid"));
|
|
}
|
|
|
|
this.doArchiveRemind(workflowid,requestid);
|
|
|
|
new weaver.cpt.util.CptWfUtil().releaseFrozenCptnum(requestid+""); //清除资产冻结
|
|
}
|
|
|
|
// 强制收回
|
|
if ("rb".equals(flag)) {
|
|
|
|
/*
|
|
TODO 流程强制收回
|
|
//先查询workflowid在建模表中是否存在如果存在查询nodeid下
|
|
1. 先根据requestids查workflowid和nodeid看有没有在配置表里
|
|
有:有没有子流程数据一并删除
|
|
没有:不做处理
|
|
*/
|
|
BaseBean bb = new BaseBean();
|
|
RecordSet rs = new RecordSet();
|
|
String lcWorkflowid="";
|
|
String lcCurrentnodeid="";
|
|
//requestid,workflowid,currentnodeid
|
|
String query="select * from workflow_requestbase where requestid ="+requestid;
|
|
bb.writeLog("querysql-->"+query);
|
|
try {
|
|
rs.execute(query);
|
|
bb.writeLog("查询数据-->");
|
|
if (rs.next()){
|
|
lcWorkflowid = Util.null2String(rs.getString("workflowid"));
|
|
lcCurrentnodeid = Util.null2String(rs.getString("lastnodeid"));
|
|
}
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
}
|
|
bb.writeLog("lcWorkflowid-->"+lcWorkflowid);
|
|
bb.writeLog("lcCurrentnodeid-->"+lcCurrentnodeid);
|
|
if (!isEmpty(lcWorkflowid) && !isEmpty(lcCurrentnodeid)) {
|
|
bb.writeLog("查询出的workflowid和currentnodeid不为空");
|
|
int cnt = 0;
|
|
int touchnodeid = 0;
|
|
//查询配置表
|
|
String sczlc = "select COUNT(1) as cnt,touchnodeid,workflowid from uf_sczlc where workflowid=" + lcWorkflowid + " and nodeid=" + lcCurrentnodeid + " group by touchnodeid,workflowid";
|
|
|
|
bb.writeLog("sczlc-->" + sczlc);
|
|
try {
|
|
rs.execute(sczlc);
|
|
bb.writeLog("sczlc查询数据-->");
|
|
while (rs.next()) {
|
|
int workflowid1 = rs.getInt("workflowid");
|
|
if(workflowid==workflowid1) {
|
|
cnt = rs.getInt("cnt");
|
|
touchnodeid = rs.getInt("touchnodeid");
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
bb.writeLog("workflowid-->" + workflowid);
|
|
bb.writeLog("touchnodeid-->" + touchnodeid);
|
|
bb.writeLog("cnt结果-->" + cnt);
|
|
if (cnt>0){
|
|
// select requestid,workflowid,currentnodeid from workflow_requestbase where mainrequestid=239239
|
|
// select COUNT(*) as cnt from workflow_requestbase where mainrequestid=239239
|
|
List<Map<String, String>> subList = new ArrayList<>();
|
|
// String subWorkflowSql="select * from Workflow_SubwfSet where mainWorkflowId="+lcWorkflowid+" and triggerNodeId="+lcCurrentnodeid;
|
|
String subworkflowsql1 = "select workflowid subWorkflowId from workflow_requestbase where requestid in (select subrequestid from workflow_subwfrequest where subrequestid in (select requestid from workflow_requestbase where mainrequestid="+requestid+" and triggernode = "+touchnodeid+"))";
|
|
//String subWorkflowSql="select subWorkflowId from Workflow_SubwfSet where mainWorkflowId="+lcWorkflowid+" and triggerNodeId="+touchnodeid;
|
|
bb.writeLog("subWorkflowSql-->"+subworkflowsql1);
|
|
try {
|
|
rs.executeQuery(subworkflowsql1);
|
|
bb.writeLog("查询数据子流程id-->");
|
|
while (rs.next()){
|
|
Map<String, String> subMap = new HashMap<String, String>();
|
|
String subWorkflowId = Util.null2String(rs.getString(1));
|
|
bb.writeLog("subWorkflowId-->"+subWorkflowId);
|
|
subMap.put("subWorkflowId",subWorkflowId);
|
|
subList.add(subMap);
|
|
}
|
|
bb.writeLog("查询数据subList-->"+subList);
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
}
|
|
|
|
if (subList.size()>0){
|
|
bb.writeLog("进入subList>0-->");
|
|
String subWorkid="";
|
|
for (int s = 0; s < subList.size(); s++) {
|
|
String subWorkflowId = subList.get(s).get("subWorkflowId").toString();
|
|
if(s+1 == subList.size()){
|
|
subWorkid = subWorkid + subWorkflowId;
|
|
}else{
|
|
subWorkid = subWorkid + subWorkflowId+",";
|
|
}
|
|
}
|
|
bb.writeLog("subWorkid-->"+subWorkid);
|
|
|
|
List<Map<String, String>> zlcList = new ArrayList<>();
|
|
String zlc=" select * from workflow_requestbase where mainrequestid="+requestid+" and workflowid in ("+subWorkid+")";
|
|
bb.writeLog("zlc-->"+zlc);
|
|
try {
|
|
rs.execute(zlc);
|
|
bb.writeLog("zlc查询数据-->");
|
|
while (rs.next()){
|
|
Map<String, String> zlcMap = new HashMap<String, String>();
|
|
String zlcRequestid = Util.null2String(rs.getString("requestid"));
|
|
String zlcWorkflowid = Util.null2String(rs.getString("workflowid"));
|
|
String zlcCurrentnodeid = Util.null2String(rs.getString("currentnodeid"));
|
|
zlcMap.put("zlcRequestid",zlcRequestid);
|
|
zlcMap.put("zlcWorkflowid",zlcWorkflowid);
|
|
zlcMap.put("zlcCurrentnodeid",zlcCurrentnodeid);
|
|
zlcList.add(zlcMap);
|
|
}
|
|
bb.writeLog("zlc查询数据zlcList-->"+zlcList);
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
}
|
|
|
|
if (zlcList.size()>0){
|
|
bb.writeLog("进入zlcList.size()>0-->");
|
|
String idResult="";
|
|
for (int s = 0; s < zlcList.size(); s++) {
|
|
String id = zlcList.get(s).get("zlcRequestid").toString();
|
|
if(s+1 == zlcList.size()){
|
|
idResult = idResult + id;
|
|
}else{
|
|
idResult = idResult + id+",";
|
|
}
|
|
}
|
|
bb.writeLog("idResult-->"+idResult);
|
|
|
|
ArrayList<Map> ResultList = new ArrayList<>();
|
|
String selectbaseSql="select * from workflow_requestbase where requestid in ("+idResult+")";
|
|
try {
|
|
rs.execute(selectbaseSql);
|
|
while (rs.next()){
|
|
HashMap<String, String> map = new HashMap<>();
|
|
map.put("requestid",Util.null2String(rs.getString("requestid")));
|
|
map.put("workflowid",Util.null2String(rs.getString("workflowid")));
|
|
ResultList.add(map);
|
|
}
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
}
|
|
|
|
bb.writeLog("ResultList-->"+ResultList);
|
|
|
|
for (int i = 0; i < ResultList.size(); i++) {
|
|
bb.writeLog("进入删除子流程方法-->["+i+"]");
|
|
boolean requestid1 = deleteWF(ResultList.get(i).get("requestid").toString(), user, "");
|
|
bb.writeLog("删除返回值-->"+requestid1);
|
|
}
|
|
|
|
|
|
// if (zlcList.size()>0){
|
|
// bb.writeLog("进入zlcList.size()>0-->");
|
|
// String idResult="";
|
|
// for (int s = 0; s < zlcList.size(); s++) {
|
|
// String id = zlcList.get(s).get("zlcRequestid").toString();
|
|
// if(s+1 == zlcList.size()){
|
|
// idResult = idResult + id;
|
|
// }else{
|
|
// idResult = idResult + id+",";
|
|
// }
|
|
// }
|
|
// bb.writeLog("idResult-->"+idResult);
|
|
//
|
|
|
|
|
|
/*if (!isEmpty(idResult) && !isEmpty(subWorkid)){
|
|
List<Map<String, String>> selectbaseList = new ArrayList<>();
|
|
String selectbaseSql="select * from workflow_requestbase where requestid in ("+idResult+") and workflowid in ("+subWorkid+")";
|
|
bb.writeLog("selectbaseSql-->"+selectbaseSql);
|
|
try {
|
|
rs.execute(selectbaseSql);
|
|
bb.writeLog("查询待删除的子流程数据base-->");
|
|
while (rs.next()){
|
|
Map<String, String> selectbaseMap = new HashMap<String, String>();
|
|
selectbaseMap.put("requestid",Util.null2String(rs.getString("requestid")));
|
|
selectbaseMap.put("workflowid",Util.null2String(rs.getString("workflowid")));
|
|
selectbaseMap.put("lastnodeid",Util.null2String(rs.getString("lastnodeid")));
|
|
selectbaseMap.put("lastnodetype",Util.null2String(rs.getString("lastnodetype")));
|
|
selectbaseMap.put("currentnodeid",Util.null2String(rs.getString("currentnodeid")));
|
|
selectbaseMap.put("currentnodetype",Util.null2String(rs.getString("currentnodetype")));
|
|
selectbaseMap.put("status",Util.null2String(rs.getString("status")));
|
|
selectbaseMap.put("passedgroups",Util.null2String(rs.getString("passedgroups")));
|
|
selectbaseMap.put("totalgroups",Util.null2String(rs.getString("totalgroups")));
|
|
selectbaseMap.put("requestname",Util.null2String(rs.getString("requestname")));
|
|
selectbaseMap.put("creater",Util.null2String(rs.getString("creater")));
|
|
selectbaseMap.put("createdate",Util.null2String(rs.getString("createdate")));
|
|
selectbaseMap.put("createtime",Util.null2String(rs.getString("createtime")));
|
|
selectbaseMap.put("lastoperator",Util.null2String(rs.getString("lastoperator")));
|
|
selectbaseMap.put("lastoperatedate",Util.null2String(rs.getString("lastoperatedate")));
|
|
selectbaseMap.put("lastoperatetime",Util.null2String(rs.getString("lastoperatetime")));
|
|
selectbaseMap.put("deleted",Util.null2String(rs.getString("deleted")));
|
|
selectbaseMap.put("creatertype",Util.null2String(rs.getString("creatertype")));
|
|
selectbaseMap.put("lastoperatortype",Util.null2String(rs.getString("lastoperatortype")));
|
|
selectbaseMap.put("nodepasstime",Util.null2String(rs.getString("nodepasstime")));
|
|
selectbaseMap.put("nodelefttime",Util.null2String(rs.getString("nodelefttime")));
|
|
selectbaseMap.put("docids",Util.null2String(rs.getString("docids")));
|
|
selectbaseMap.put("crmids",Util.null2String(rs.getString("crmids")));
|
|
selectbaseMap.put("hrmids",Util.null2String(rs.getString("hrmids")));
|
|
selectbaseMap.put("prjids",Util.null2String(rs.getString("prjids")));
|
|
selectbaseMap.put("cptids",Util.null2String(rs.getString("cptids")));
|
|
selectbaseMap.put("requestlevel",Util.null2String(rs.getString("requestlevel")));
|
|
selectbaseMap.put("requestmark",Util.null2String(rs.getString("requestmark")));
|
|
selectbaseMap.put("messageType",Util.null2String(rs.getString("messageType")));
|
|
selectbaseMap.put("mainRequestId",Util.null2String(rs.getString("mainRequestId")));
|
|
selectbaseMap.put("currentstatus",Util.null2String(rs.getString("currentstatus")));
|
|
selectbaseMap.put("laststatus",Util.null2String(rs.getString("laststatus")));
|
|
selectbaseMap.put("ismultiprint",Util.null2String(rs.getString("ismultiprint")));
|
|
selectbaseMap.put("chatsType",Util.null2String(rs.getString("chatsType")));
|
|
selectbaseMap.put("ecology_pinyin_search",Util.null2String(rs.getString("ecology_pinyin_search")));
|
|
selectbaseMap.put("requestnamenew",Util.null2String(rs.getString("requestnamenew")));
|
|
selectbaseMap.put("formsignaturemd5",Util.null2String(rs.getString("formsignaturemd5")));
|
|
selectbaseMap.put("dataaggregated",Util.null2String(rs.getString("dataaggregated")));
|
|
selectbaseMap.put("secLevel",Util.null2String(rs.getString("secLevel")));
|
|
selectbaseMap.put("secdocid",Util.null2String(rs.getString("secdocid")));
|
|
selectbaseMap.put("remindTypes",Util.null2String(rs.getString("remindTypes")));
|
|
selectbaseMap.put("lastFeedBackDate",Util.null2String(rs.getString("lastFeedBackDate")));
|
|
selectbaseMap.put("lastFeedBackTime",Util.null2String(rs.getString("lastFeedBackTime")));
|
|
selectbaseMap.put("lastfeedbackoperator",Util.null2String(rs.getString("lastfeedbackoperator")));
|
|
selectbaseMap.put("requestnamehtmlnew",Util.null2String(rs.getString("requestnamehtmlnew")));
|
|
selectbaseMap.put("secvalidity",Util.null2String(rs.getString("secvalidity")));
|
|
selectbaseList.add(selectbaseMap);
|
|
}
|
|
bb.writeLog("查询数据selectbaseList-->"+selectbaseList);
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
}
|
|
|
|
for (int i = 0; i < selectbaseList.size(); i++) {
|
|
String baseInsert="insert into deleteworkflow_requestbase (requestid,workflowid,lastnodeid,lastnodetype,currentnodeid,currentnodetype,status,passedgroups,totalgroups,requestname,creater,createdate,createtime,lastoperator,lastoperatedate,lastoperatetime,deleted,creatertype,lastoperatortype,nodepasstime,nodelefttime,docids,crmids,hrmids,prjids,cptids,requestlevel,requestmark,messageType,mainRequestId,currentstatus,laststatus,ismultiprint,chatsType,ecology_pinyin_search,requestnamenew,formsignaturemd5,dataaggregated,secLevel,secdocid,remindTypes,lastFeedBackDate,lastFeedBackTime,lastfeedbackoperator,requestnamehtmlnew,secvalidity) ";
|
|
String baseValues="values ('"
|
|
+selectbaseList.get(i).get("requestid")+ "'," +
|
|
"'"+selectbaseList.get(i).get("workflowid")+"',"+
|
|
"'"+selectbaseList.get(i).get("lastnodeid")+"',"+
|
|
"'"+selectbaseList.get(i).get("lastnodetype")+"',"+
|
|
"'"+selectbaseList.get(i).get("currentnodeid")+"',"+
|
|
"'"+selectbaseList.get(i).get("currentnodetype")+"',"+
|
|
"'"+selectbaseList.get(i).get("status")+"',"+
|
|
"'"+selectbaseList.get(i).get("passedgroups")+"',"+
|
|
"'"+selectbaseList.get(i).get("totalgroups")+"',"+
|
|
"'"+selectbaseList.get(i).get("requestname")+"',"+
|
|
"'"+selectbaseList.get(i).get("creater")+"',"+
|
|
"'"+selectbaseList.get(i).get("createdate")+"',"+
|
|
"'"+selectbaseList.get(i).get("createtime")+"',"+
|
|
"'"+selectbaseList.get(i).get("lastoperator")+"',"+
|
|
"'"+selectbaseList.get(i).get("lastoperatedate")+"',"+
|
|
"'"+selectbaseList.get(i).get("lastoperatetime")+"',"+
|
|
"'"+selectbaseList.get(i).get("deleted")+"',"+
|
|
"'"+selectbaseList.get(i).get("creatertype")+"',"+
|
|
"'"+selectbaseList.get(i).get("lastoperatortype")+"',"+
|
|
"'"+selectbaseList.get(i).get("nodepasstime")+"',"+
|
|
"'"+selectbaseList.get(i).get("nodelefttime")+"',"+
|
|
"'"+selectbaseList.get(i).get("docids")+"',"+
|
|
"'"+selectbaseList.get(i).get("crmids")+"',"+
|
|
"'"+selectbaseList.get(i).get("hrmids")+"',"+
|
|
"'"+selectbaseList.get(i).get("prjids")+"',"+
|
|
"'"+selectbaseList.get(i).get("cptids")+"',"+
|
|
"'"+selectbaseList.get(i).get("requestlevel")+"',"+
|
|
"'"+selectbaseList.get(i).get("requestmark")+"',"+
|
|
"'"+selectbaseList.get(i).get("messageType")+"',"+
|
|
"'"+selectbaseList.get(i).get("mainRequestId")+"',"+
|
|
"'"+selectbaseList.get(i).get("currentstatus")+"',"+
|
|
"'"+selectbaseList.get(i).get("laststatus")+"',"+
|
|
"'"+selectbaseList.get(i).get("ismultiprint")+"',"+
|
|
"'"+selectbaseList.get(i).get("chatsType")+"',"+
|
|
"'"+selectbaseList.get(i).get("ecology_pinyin_search")+"',"+
|
|
"'"+selectbaseList.get(i).get("requestnamenew")+"',"+
|
|
"'"+selectbaseList.get(i).get("formsignaturemd5")+"',"+
|
|
"'"+selectbaseList.get(i).get("dataaggregated")+"',"+
|
|
"'"+selectbaseList.get(i).get("secLevel")+"',"+
|
|
"'"+selectbaseList.get(i).get("secdocid")+"',"+
|
|
"'"+selectbaseList.get(i).get("remindTypes")+"',"+
|
|
"'"+selectbaseList.get(i).get("lastFeedBackDate")+"',"+
|
|
"'"+selectbaseList.get(i).get("lastFeedBackTime")+"',"+
|
|
"'"+selectbaseList.get(i).get("lastfeedbackoperator")+"',"+
|
|
"'"+selectbaseList.get(i).get("requestnamehtmlnew")+"',"+
|
|
"'"+selectbaseList.get(i).get("secvalidity")+"')";
|
|
String baseInsertSql=baseInsert+baseValues;
|
|
boolean execute = rs.execute(baseInsertSql);
|
|
bb.writeLog("baseInsertSql-->"+baseInsertSql);
|
|
bb.writeLog("baseInsert-->"+execute);
|
|
}
|
|
|
|
|
|
|
|
List<Map<String, String>> selectlogList = new ArrayList<>();
|
|
String selectlogSql="select * from workflow_requestlog where requestid in ("+idResult+") and workflowid in ("+subWorkid+")";
|
|
bb.writeLog("selectlogSql-->"+selectlogSql);
|
|
try {
|
|
rs.execute(selectlogSql);
|
|
bb.writeLog("查询待删除的子流程数据log-->");
|
|
while (rs.next()){
|
|
Map<String, String> selectlogMap = new HashMap<String, String>();
|
|
selectlogMap.put("requestid",Util.null2String(rs.getString("requestid")));
|
|
selectlogMap.put("workflowid",Util.null2String(rs.getString("workflowid")));
|
|
selectlogMap.put("nodeid",Util.null2String(rs.getString("nodeid")));
|
|
selectlogMap.put("logtype",Util.null2String(rs.getString("logtype")));
|
|
selectlogMap.put("operatedate",Util.null2String(rs.getString("operatedate")));
|
|
selectlogMap.put("operatetime",Util.null2String(rs.getString("operatetime")));
|
|
selectlogMap.put("operator",Util.null2String(rs.getString("operator")));
|
|
selectlogMap.put("remark",Util.null2String(rs.getString("remark")));
|
|
selectlogMap.put("clientip",Util.null2String(rs.getString("clientip")));
|
|
selectlogMap.put("operatortype",Util.null2String(rs.getString("operatortype")));
|
|
selectlogMap.put("destnodeid",Util.null2String(rs.getString("destnodeid")));
|
|
selectlogMap.put("receivedPersons",Util.null2String(rs.getString("receivedPersons")));
|
|
selectlogMap.put("showorder",Util.null2String(rs.getString("showorder")));
|
|
selectlogMap.put("agentorbyagentid",Util.null2String(rs.getString("agentorbyagentid")));
|
|
selectlogMap.put("agenttype",Util.null2String(rs.getString("agenttype")));
|
|
selectlogMap.put("annexdocids",Util.null2String(rs.getString("annexdocids")));
|
|
selectlogMap.put("requestLogId",Util.null2String(rs.getString("requestLogId")));
|
|
selectlogMap.put("operatorDept",Util.null2String(rs.getString("operatorDept")));
|
|
selectlogMap.put("signdocids",Util.null2String(rs.getString("signdocids")));
|
|
selectlogMap.put("signworkflowids",Util.null2String(rs.getString("signworkflowids")));
|
|
selectlogMap.put("isMobile",Util.null2String(rs.getString("isMobile")));
|
|
selectlogMap.put("HandWrittenSign",Util.null2String(rs.getString("HandWrittenSign")));
|
|
selectlogMap.put("SpeechAttachment",Util.null2String(rs.getString("SpeechAttachment")));
|
|
selectlogMap.put("receivedpersonids",Util.null2String(rs.getString("receivedpersonids")));
|
|
selectlogMap.put("remarklocation",Util.null2String(rs.getString("remarklocation")));
|
|
selectlogMap.put("isSubmitDirect",Util.null2String(rs.getString("isSubmitDirect")));
|
|
selectlogMap.put("remarkquote",Util.null2String(rs.getString("remarkquote")));
|
|
selectlogMap.put("fulltextannotation",Util.null2String(rs.getString("fulltextannotation")));
|
|
selectlogMap.put("speechattachmente9",Util.null2String(rs.getString("speechattachmente9")));
|
|
selectlogMap.put("uuid",Util.null2String(rs.getString("uuid")));
|
|
selectlogMap.put("operatorSub",Util.null2String(rs.getString("operatorSub")));
|
|
selectlogMap.put("operatorJob",Util.null2String(rs.getString("operatorJob")));
|
|
selectlogList.add(selectlogMap);
|
|
}
|
|
bb.writeLog("查询数据selectlogList-->"+selectlogList);
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
}
|
|
|
|
for (int i = 0; i < selectlogList.size(); i++) {
|
|
String logInsert="insert into deleteworkflow_requestlog (requestid,workflowid,nodeid,logtype,operatedate,operatetime,operator,remark,clientip,operatortype,destnodeid,receivedPersons,showorder,agentorbyagentid,agenttype,annexdocids,requestLogId,operatorDept,signdocids,signworkflowids,isMobile,HandWrittenSign,SpeechAttachment,receivedpersonids,remarklocation,isSubmitDirect,remarkquote,fulltextannotation,speechattachmente9,uuid,operatorSub,operatorJob) ";
|
|
String logValues="values ('"
|
|
+ selectlogList.get(i).get("requestid")+ "'," +
|
|
"'"+selectlogList.get(i).get("workflowid")+"',"+
|
|
"'"+selectlogList.get(i).get("nodeid")+"',"+
|
|
"'"+selectlogList.get(i).get("logtype")+"',"+
|
|
"'"+selectlogList.get(i).get("operatedate")+"',"+
|
|
"'"+selectlogList.get(i).get("operatetime")+"',"+
|
|
"'"+selectlogList.get(i).get("operator")+"',"+
|
|
"'"+selectlogList.get(i).get("remark")+"',"+
|
|
"'"+selectlogList.get(i).get("clientip")+"',"+
|
|
"'"+selectlogList.get(i).get("operatortype")+"',"+
|
|
"'"+selectlogList.get(i).get("destnodeid")+"',"+
|
|
"'"+selectlogList.get(i).get("receivedPersons")+"',"+
|
|
"'"+selectlogList.get(i).get("showorder")+"',"+
|
|
"'"+selectlogList.get(i).get("agentorbyagentid")+"',"+
|
|
"'"+selectlogList.get(i).get("agenttype")+"',"+
|
|
"'"+selectlogList.get(i).get("annexdocids")+"',"+
|
|
"'"+selectlogList.get(i).get("requestLogId")+"',"+
|
|
"'"+selectlogList.get(i).get("operatorDept")+"',"+
|
|
"'"+selectlogList.get(i).get("signdocids")+"',"+
|
|
"'"+selectlogList.get(i).get("signworkflowids")+"',"+
|
|
"'"+selectlogList.get(i).get("isMobile")+"',"+
|
|
"'"+selectlogList.get(i).get("HandWrittenSign")+"',"+
|
|
"'"+selectlogList.get(i).get("SpeechAttachment")+"',"+
|
|
"'"+selectlogList.get(i).get("receivedpersonids")+"',"+
|
|
"'"+selectlogList.get(i).get("remarklocation")+"',"+
|
|
"'"+selectlogList.get(i).get("isSubmitDirect")+"',"+
|
|
"'"+selectlogList.get(i).get("remarkquote")+"',"+
|
|
"'"+selectlogList.get(i).get("fulltextannotation")+"',"+
|
|
"'"+selectlogList.get(i).get("speechattachmente9")+"',"+
|
|
"'"+selectlogList.get(i).get("uuid")+"',"+
|
|
"'"+selectlogList.get(i).get("operatorSub")+"',"+
|
|
"'"+selectlogList.get(i).get("operatorJob")+"')";
|
|
String logInsertSql=logInsert+logValues;
|
|
boolean execute = rs.execute(logInsertSql);
|
|
bb.writeLog("logInsertSql-->"+logInsertSql);
|
|
bb.writeLog("logInsert-->"+execute);
|
|
}
|
|
|
|
String baseSql="delete from workflow_requestbase where requestid in ("+idResult+") and workflowid in ("+subWorkid+")";
|
|
String logSql="delete from workflow_requestlog where requestid in ("+idResult+") and workflowid in ("+subWorkid+")";
|
|
bb.writeLog("进入删除子流程-->");
|
|
bb.writeLog("baseSql-->"+baseSql);
|
|
bb.writeLog("logSql-->"+logSql);
|
|
rs.execute(baseSql);
|
|
rs.execute(logSql);
|
|
}*/
|
|
//子流程数量
|
|
int size= ResultList.size();
|
|
bb.writeLog("子流程数量-->"+size);
|
|
apidatas.put("zlcCount",size);
|
|
bb.writeLog("子流程添加成功");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
WfForceDrawBack wfdb = new WfForceDrawBack();
|
|
RequestForceDrawBack requestForceDrawBack = new RequestForceDrawBack();
|
|
RequestOperationResultBean resultBean = new RequestOperationResultBean();
|
|
|
|
|
|
if (wffmu.haveOtherOperationRight(requestid) && wfdb.isHavePurview(requestid, user.getUID(), logintype, -1, -1)) {
|
|
requestidlist.add("" + requestid);
|
|
// WfForceDrawBack.doForceDrawBack(requestidsArr, request,
|
|
// response, -1, -1);
|
|
// 使用新的收回方式
|
|
String sessionkey = workflowid + "_" + nodeid + "_" + user.getUID() + "_" + System.currentTimeMillis();
|
|
int result = requestForceDrawBack.foreceDrawBack(user, requestid, false, -1, -1);
|
|
if (!requestForceDrawBack.isAddInOperateSuccess()) {//强制收回附加操作执行失败,返回错误信息
|
|
String message = requestForceDrawBack.getMessage();
|
|
String messagecontent = requestForceDrawBack.getMessageContent();
|
|
if("".equals(message) || requestid <= 0) {
|
|
message = "1";
|
|
}
|
|
resultBean.setMessageInfo(SubmitErrorMsgBiz.getMsgInfo(request,user,message,messagecontent));
|
|
resultBean.setType(RequestExecuteType.FAILD);
|
|
Util_TableMap.setObjVal(Util.null2String(sessionkey), resultBean);
|
|
apidatas.put("success",false);
|
|
apidatas.put("msg",SystemEnv.getHtmlLabelNames("506175,83071",user.getLanguage()));
|
|
return apidatas;
|
|
}
|
|
if (result == RequestForceDrawBack.OLDDATA) {
|
|
wfdb.doForceDrawBack(requestidlist, request, response, -1, -1);
|
|
}
|
|
RequestOperateBiz.drawBackSpecialTreatment(formid, workflowid);
|
|
|
|
/*E9打印登录超时报错(QC:527424)*/
|
|
if(user == null) {
|
|
try {
|
|
response.sendRedirect(weaver.general.GCONST.getContextPath()+"/wui/index.html");
|
|
return null;
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
//判断是否可以跳转到新的页面
|
|
boolean reqRoute = ServiceUtil.isReqRoute(String.valueOf(requestid),user);
|
|
apidatas.put("reqRoute", reqRoute);
|
|
apidatas.put("success",result == RequestForceDrawBack.SUCCESS);
|
|
if(result == RequestForceDrawBack.SUCCESS){
|
|
apidatas.put("msg",SystemEnv.getHtmlLabelName(83585,user.getLanguage()));
|
|
}else if(result == RequestForceDrawBack.FAIL){
|
|
apidatas.put("msg",SystemEnv.getHtmlLabelName(389102,user.getLanguage()));
|
|
}else if(result == RequestForceDrawBack.NORIGHT){
|
|
apidatas.put("msg",SystemEnv.getHtmlLabelName(18567,user.getLanguage()));
|
|
}
|
|
apidatas.put("sessionkey", sessionkey);
|
|
}else {
|
|
apidatas.put("success",false);
|
|
apidatas.put("msg",SystemEnv.getHtmlLabelName(18567,user.getLanguage()));
|
|
}
|
|
|
|
}
|
|
//自动取消 流程关注
|
|
new RequestAttentionBiz().cancelAttention(requestid,flag);
|
|
return apidatas;
|
|
}
|
|
|
|
/**
|
|
* 删除流程
|
|
* @param requestid
|
|
*/
|
|
public static boolean deleteWF(String requestid, User user, String from){
|
|
RequestDeleteUtils rdu = new RequestDeleteUtils();
|
|
RecordSetTrans trst = new RecordSetTrans();
|
|
trst.setAutoCommit(false);
|
|
RequestDeleteLog log = rdu.initRequestDeleteLog(user, from, String.valueOf(requestid));
|
|
RequestDeleteUtils rdu1 = new RequestDeleteUtils(Util.getIntValue(requestid),trst,log);
|
|
try {
|
|
rdu1.executeDeleteRequest();
|
|
trst.commit();
|
|
} catch (Exception e) {
|
|
new BaseBean().writeLog(e);
|
|
trst.rollback();
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
@Override
|
|
public BizLogContext getLogContext() {
|
|
return null;
|
|
}
|
|
|
|
|
|
/**
|
|
* 暂停、撤销、启用消息数据
|
|
* @param requestId
|
|
* @param user
|
|
* @param flag
|
|
*/
|
|
private boolean pushOperationMsg(int requestId,User user,String flag){
|
|
|
|
RequestOperationMsgManager romm = new RequestOperationMsgManager();
|
|
List<MsgEntity> requestMsgEntity = romm.getOperateMsgByReqId(String.valueOf(requestId),user,flag);
|
|
new MsgPushUtil().pushMsg(requestMsgEntity);
|
|
return true;
|
|
}
|
|
|
|
|
|
private void doArchiveRemind(int workflowid,int requestid){
|
|
String src = Util.null2String(request.getParameter("src"));
|
|
String remindTypes = Util.null2String(request.getParameter("remindTypes")); //表单上提醒方式
|
|
RequestRemindBiz requestRemindBiz = new RequestRemindBiz(user);
|
|
//默认提醒
|
|
WFManager wfManager = new WFManager();
|
|
try{
|
|
wfManager.setWfid(workflowid);
|
|
wfManager.getWfInfo();
|
|
}catch (Exception e){}
|
|
|
|
if("-1".equals(remindTypes)){ //老数据
|
|
int messageType = Util.getIntValue(Util.null2String(request.getParameter("messageType")),-1); // 老短信提醒
|
|
int mailMessageType = Util.getIntValue(Util.null2String(request.getParameter("chatsType")),-1); // 老邮件提醒
|
|
if(messageType >=1) requestRemindBiz.requestRemind(requestid,workflowid,src, RemindTypeEnum.SMS,messageType);
|
|
//历史数据可能只有短信提醒,但是其实也开启了邮件提醒
|
|
int _mailMessageType = Util.getIntValue(wfManager.getMailMessageType(),-1);
|
|
if(mailMessageType == 1 || _mailMessageType == 1) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0);
|
|
Set<String> remindType = new HashSet<>();
|
|
if(messageType >=1) {
|
|
requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.SMS,messageType);
|
|
}
|
|
if(mailMessageType == 1 || _mailMessageType == 1) {
|
|
requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0);
|
|
}
|
|
}else{
|
|
|
|
String isSmsRemind = remindTypes.indexOf(RemindTypeEnum.SMS.getCode()) > -1 ? "1" : "0";
|
|
String isEmailRemind = remindTypes.indexOf(RemindTypeEnum.EMAIL.getCode()) > -1 ? "1" : "0";
|
|
if("1".equals(isSmsRemind)) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.SMS,0);
|
|
if("1".equals(isEmailRemind)) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0);
|
|
}
|
|
requestRemindBiz.requestEmailApproveRemind(String.valueOf(workflowid),String.valueOf(requestid),src);
|
|
}
|
|
|
|
public HttpServletRequest getRequest() {
|
|
return request;
|
|
}
|
|
}
|