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>{ 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 execute(CommandContext commandContext){ Map apidatas = new HashMap(); Map resultmap = new HashMap(); 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 requestidlist = new ArrayList(); 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> 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 subMap = new HashMap(); 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> 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 zlcMap = new HashMap(); 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 ResultList = new ArrayList<>(); String selectbaseSql="select * from workflow_requestbase where requestid in ("+idResult+")"; try { rs.execute(selectbaseSql); while (rs.next()){ HashMap 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> 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 selectbaseMap = new HashMap(); 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> 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 selectlogMap = new HashMap(); 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 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 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; } }