From a84f700f50c989134e2ef7591852bba49da2b1c1 Mon Sep 17 00:00:00 2001 From: shilei <798989044@qq.com> Date: Wed, 24 Jul 2024 09:57:43 +0800 Subject: [PATCH] =?UTF-8?q?#EC=5FHJ160#=202024.07.24=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dito/sendtodo/HttpRequestUtil.java | 28 +- .../dito/sendtodo/SendPortalErrorUtil.java | 68 +- .../sendtodo/SendPortalErrorUtilRunnable.java | 34 +- .../dito/sendtodo/SendPortalRemarkCmd.java | 133 + .../dito/sendtodo/SendPortalToReadUtil.java | 1 - .../dito/sendtodo/SendPortalTodoCmd.java | 115 +- .../sendtodo/SendPortalTodoDeleteUtil.java | 365 +++ .../dito/sendtodo/SendPortalTodoUtil.java | 122 - .../sendtodo/SendPortalWithAddDoneCmd.java | 2 +- .../sendtodo/SendPortalWithDeleteCmd.java | 18 +- .../reqremark/cmd/AtRequestRemarkCmd.java | 309 ++- .../dito/reqremark/cmd/RequestRemarkCmd.java | 20 +- .../cmd/requestForm/LoadParamCmd.java | 2169 +++++++++++++++++ .../workflow/web/RequestFormAction.java | 1190 +++++++++ .../web/RequestMonitorListAction.java | 520 +++- .../dito/filter/HttpRequestUtil.java | 2 +- .../dito/filter/PortalLoginBeforeFilter.java | 66 +- .../SendPortalMonitorArchvingUtil.java | 214 ++ .../monitor/SendPortalMonitorDeleteUtil.java | 573 +++++ .../dito/monitor/SendPortalMonitorUtil.java | 757 +++--- .../interfaces/dito/mq/RocketmqUtil.java | 46 +- .../SendRequestData2PortalInterfaces.java | 5 +- .../remark/OpenRequestRemarkAtRunnable.java | 50 + .../remark/completeRequestRemark8AtUtil.java | 69 + .../dito/robot/SendPortalRobotSubmitUtil.java | 14 +- 25 files changed, 6052 insertions(+), 838 deletions(-) create mode 100644 src/com/customization/dito/sendtodo/SendPortalRemarkCmd.java create mode 100644 src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java create mode 100644 src/com/engine/workflow/cmd/requestForm/LoadParamCmd.java create mode 100644 src/com/engine/workflow/web/RequestFormAction.java create mode 100644 src/weaver/interfaces/dito/monitor/SendPortalMonitorArchvingUtil.java create mode 100644 src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java create mode 100644 src/weaver/interfaces/dito/remark/OpenRequestRemarkAtRunnable.java create mode 100644 src/weaver/interfaces/dito/remark/completeRequestRemark8AtUtil.java diff --git a/src/com/customization/dito/sendtodo/HttpRequestUtil.java b/src/com/customization/dito/sendtodo/HttpRequestUtil.java index d735ef21..3a12612d 100644 --- a/src/com/customization/dito/sendtodo/HttpRequestUtil.java +++ b/src/com/customization/dito/sendtodo/HttpRequestUtil.java @@ -8,7 +8,6 @@ import java.io.IOException; public class HttpRequestUtil extends BaseBean{ private int retryTimes = 2; - private BaseBean bb = new BaseBean(); /*** * @@ -17,7 +16,10 @@ public class HttpRequestUtil extends BaseBean{ */ public String doPostByAuth(String portal_todourl,String dataJson,String auth){ //"http://172.16.25.133/portal-web/centerTodo/sync" + + String zhjkbs = "com.customization.dito.sendtodo.HttpRequestUtil.doPostByAuth"; BaseBean bb = new BaseBean(); + bb.writeLog("doPostByAuth--start:"+System.currentTimeMillis()); SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); String authorization = "Basic "+new String(Base64.encode(auth)); @@ -43,6 +45,7 @@ public class HttpRequestUtil extends BaseBean{ Response response = client.newCall(request).execute(); + bb.writeLog("doPostByAuth--end:"+System.currentTimeMillis()); int code = response.code(); String bodyMsg = response.body().string(); bb.writeLog("response.code():"+code); @@ -51,9 +54,17 @@ public class HttpRequestUtil extends BaseBean{ msgData = bodyMsg; return msgData; }else { - for (int i =0;i> { + @Override + public Map execute(Command> targetCommand) { + BaseBean bb = new BaseBean(); + bb.writeLog("SendPortalRemarkCmd"); + + RemarkSubmitCmd remarkSubmitCmd = (RemarkSubmitCmd) targetCommand; + HttpServletRequest request = remarkSubmitCmd.getRequest(); + + String requestid = Util.null2String(request.getParameter("requestid")).trim(); + String src = Util.null2String(request.getParameter("src")).trim(); + String nodeid = Util.null2String(request.getParameter("nodeid")); + String workflowname = Util.null2String(request.getParameter("workflowname")); + String agentType = Util.null2String(request.getParameter("agentType")); + String creater = Util.null2String(request.getParameter("creater")); + String isremark = Util.null2String(request.getParameter("isremark")); + + User user = remarkSubmitCmd.getUser(); + String userid = user.getUID()+""; + String loginid = user.getLoginid(); + + bb.writeLog("requestid:"+requestid); + bb.writeLog("src:"+src); + bb.writeLog("nodeid:"+nodeid); + bb.writeLog("workflowname:"+workflowname); + bb.writeLog("user:"+user.getLoginid()); + bb.writeLog("creater:"+creater); + bb.writeLog("agentType:"+agentType); + bb.writeLog("isremark:"+agentType); + + List> remark9List = new ArrayList>(); + if("9".equals(isremark) && "save".equals(src)){ + remark9List = queryRequestRemark(requestid,userid); + } + Map result = nextExecute(targetCommand); + sendDate(result,loginid,remark9List); + + return result; + } + + public void sendDate(Map result, String loginid,List> remark9List) { + BaseBean bb = new BaseBean(); + try { + if (result.containsKey("data")) { + //对返回值做加工处理 + RequestOperationResultBean resultBean = (RequestOperationResultBean) result.get("data"); + String executeResult = resultBean.getType().name(); + bb.writeLog("executeResult:" + executeResult); + + if ("SUCCESS".equals(executeResult)) { + + if(!remark9List.isEmpty() && remark9List.size()>0){ + bb.writeLog("SendPortalRemarkCmd-remark9List:"+remark9List.size()); + SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); + String notes = "流程页面打开后,批注抄送需提交的数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByRequestid(remark9List,loginid,notes); + } + + } + } + } catch (Exception e) { + + + } + } + + + /** + * + * @param requestid + * @param userid + * @return + */ + public List> queryRequestRemark(String requestid,String userid){ + List> remark9List = new ArrayList>(); + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + Map map = null; + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname \n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in ('9') and t.preisremark in ('9') \n" + + " and t.requestid ="+requestid + + " and t.userid="+userid+""; + + rs.executeQuery(sql); + bb.writeLog("OpenRequestRemark9Cmd-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid+""); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",requestid); + remark9List.add(map); + } + }catch (Exception e){ + bb.writeLog("queryRequestRemark-e:"+e); + } + return remark9List; + } +} diff --git a/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java b/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java index 57241be4..0f21383a 100644 --- a/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java +++ b/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java @@ -304,7 +304,6 @@ public class SendPortalToReadUtil { requestObject.put("center", center); requestObject.put("title", requestname); - requestObject.put("taskType", taskType); requestObject.put("actionType", actionType); requestObject.put("createDate", processTime); diff --git a/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java b/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java index d8d8289e..2c740282 100644 --- a/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java @@ -1,6 +1,7 @@ package com.customization.dito.sendtodo; -import weaver.conn.RecordSet; +import com.engine.workflow.constant.requestForm.RequestExecuteType; +import org.apache.commons.lang3.StringUtils; import weaver.interfaces.dito.constant.Constants; import com.customization.dito.sendtodo.agent.SendPortalToReadByAgentUtil; import com.customization.dito.sendtodo.agent.SendPortalTodoByAgentUtil; @@ -15,6 +16,8 @@ import weaver.hrm.User; import weaver.interfaces.dito.monitor.SendPortalMonitorUtil; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; import java.util.Map; /*** @@ -25,6 +28,7 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> @Override public Map execute(Command> targetCommand) { + //获取到被代理对象 RequestSubmitCmd requestSubmitCmd = (RequestSubmitCmd)targetCommand; //获取被代理对象的参数 @@ -32,6 +36,7 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> BaseBean bb = new BaseBean(); + bb.writeLog("SendPortalTodoCmd-start:"+System.currentTimeMillis()); HttpServletRequest request = requestSubmitCmd.getRequest(); String requestid = Util.null2String(request.getParameter("requestid")).trim(); String workflowid = Util.null2String(request.getParameter("workflowid")).trim(); @@ -48,6 +53,8 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> String f_weaver_belongto_userid = Util.null2String(request.getParameter("f_weaver_belongto_userid")); String f_weaver_belongto_usertype = Util.null2String(request.getParameter("f_weaver_belongto_usertype")); String creater = Util.null2String(request.getParameter("creater")); + String intervenorid = Util.null2String(request.getParameter("Intervenorid")); + // Map params = ParamUtil.request2Map(request); // params.forEach((t,u)-> { @@ -70,19 +77,50 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> bb.writeLog("f_weaver_belongto_usertype:"+f_weaver_belongto_usertype); bb.writeLog("creater:"+creater); bb.writeLog("agentType:"+agentType); + bb.writeLog("intervenorid:"+intervenorid); + + List> copyList = new ArrayList>(); + List> forwardList = new ArrayList>(); + List> atList = new ArrayList>(); - int forwardcount = 0; try{ - RecordSet rs = new RecordSet(); - String sql =" select t1.userid,t1.nodeid " + - " from workflow_currentoperator t1 " + - " where t1.isremark = 1 " + - " and t1.REQUESTID= " +requestid + - " and t1.USERID= " +userid ; - bb.writeLog("completeForwardRequest --sql:" + sql); - rs.executeQuery(sql); - while (rs.next()) { - forwardcount++ ; + SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); + if("intervenor".equals(src)){ + if(StringUtils.isNotBlank(intervenorid)){ + if("1".equals(agentType)){ + copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,intervenorid); + forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,intervenorid); + atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,intervenorid); + }else{ + copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,intervenorid); + forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,intervenorid); + atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,intervenorid); + } + }else{ + copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); + forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); + atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,userid); + } + }else if("delete".equals(src)){ + if("1".equals(agentType)){ + copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,""); + forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,""); + atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,""); + }else{ + copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,""); + forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,""); + atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,""); + } + }else{ + if("1".equals(agentType)){ + copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); + forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); + atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,userid); + }else{ + copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); + forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); + atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,userid); + } } }catch (Exception e){ @@ -91,14 +129,15 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> //参数回写 //执行标准的业务处理 Map result = nextExecute(targetCommand); + bb.writeLog("SendPortalTodoCmd-submit-end:"+requestid+" time:"+System.currentTimeMillis()); - sendDate(result,requestid,agentType,src,nodeid,userid,f_weaver_belongto_userid,user,forwardcount); + sendDate(result,requestid,agentType,src,nodeid,userid,f_weaver_belongto_userid,user,copyList,forwardList,atList); return result; } - public void sendDate(Map result,String requestid,String agentType,String src,String nodeid,String userid,String f_weaver_belongto_userid,User user,int forwardcount){ + public void sendDate(Map result,String requestid,String agentType,String src,String nodeid,String userid,String f_weaver_belongto_userid,User user,List> copyList,List> forwardList,List> atList){ BaseBean bb = new BaseBean(); try{ @@ -108,12 +147,6 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> String executeResult = resultBean.getType().name(); bb.writeLog("executeResult:"+executeResult); - Map resultMap = resultBean.getResultInfo(); - - for (Map.Entry entry : resultMap.entrySet()) { - System.out.println("resultMap---key= " + entry.getKey() + " and value= " + entry.getValue()); - } - String new_requestid2 = Util.null2String(resultBean.getResultInfo().get("requestid")); bb.writeLog("new_requestid2:"+new_requestid2); @@ -133,12 +166,15 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> String bpm_app_requesturl = Constants.bpm_app_requesturl; + String notes = "" ; + bb.writeLog("SendPortalTodoCmd-portal-start:"+requestid+" time:"+System.currentTimeMillis()); if(Util.getIntValue(requestid) == -1 && "save".equals(src)){ sendPortalTodoUtil.sendTodoDataByCreater(new_requestid,user, portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); + notes = "流程创建保存"; }else if(Util.getIntValue(requestid) == -1 && "submit".equals(src)){ sendPortalTodoUtil.sendTodoDataByCreateNode(new_requestid,nodeid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); sendPortalToReadUtil.sendToReadDataByCreateNode(new_requestid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); - + notes = "流程创建提交"; }else if(Util.getIntValue(requestid)> 0 && "submit".equals(src)){ /*** @@ -155,26 +191,39 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> }else{ sendPortalTodoUtil.sendTodoDataByNode(requestid,nodeid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); sendPortalToReadUtil.sendToReadDataByNode(requestid,user,nodeid,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); - bb.writeLog("forwardcount:"+forwardcount); - if(forwardcount > 0){ - sendPortalTodoUtil.completeForwardRequest(requestid,user,nodeid); - } } + + notes = "流程提交"; }else if(Util.getIntValue(requestid)> 0 && "reject".equals(src)){ sendPortalTodoUtil.sendTodoDataByReject(requestid,nodeid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); - - bb.writeLog("forwardcount:"+forwardcount); - if(forwardcount > 0){ - sendPortalTodoUtil.completeForwardRequest(requestid,user,nodeid); - } - + notes = "流程退回"; }else if(Util.getIntValue(requestid)> 0 && "intervenor".equals(src)){ SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); sendPortalMonitorUtil.monitorIntervention(requestid,userid); + notes = "流程干预"; + }else if(Util.getIntValue(requestid)> 0 && "delete".equals(src)){ + + SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); + sendPortalMonitorUtil.monitorDelete(requestid,userid); + notes = "流程页面删除"; } + bb.writeLog("sendPortalTodoDeleteUtil22:"+notes+" src:"+src); + SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); + sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + bb.writeLog("SendPortalTodoCmd-portal-end:"+requestid+" time:"+System.currentTimeMillis()); + }else if("DELETE".equals(executeResult)){ + String notes = "" ; + if(Util.getIntValue(requestid)> 0 && "delete".equals(src)){ - }else{ + SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); + sendPortalMonitorUtil.monitorDelete(requestid,userid); + notes = "流程页面删除"; + } + bb.writeLog("sendPortalTodoDeleteUtil33:"+notes+" src:"+src); + SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); + sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + }else{ bb.writeLog("SendPortalTodoCmd-FAILURE"); String portal_todourl = Constants.portal_todourl; String bpm_app_workflowurl = Constants.bpm_app_workflowurl; @@ -195,10 +244,8 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> }catch (Exception e){ bb.writeLog("e:"+e); } - } - } diff --git a/src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java b/src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java new file mode 100644 index 00000000..be03950d --- /dev/null +++ b/src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java @@ -0,0 +1,365 @@ +package com.customization.dito.sendtodo; + +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SendPortalTodoDeleteUtil { + + /** + * + * @param requestid + */ + public List> queryWorkflowCopyToByRequestid(String requestid,String current_userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowCopyToByRequestid-requestid:"+requestid); + List> list = new ArrayList>(); + String where = ""; + if(StringUtils.isNotBlank(current_userid)){ + where += " and t.userid in("+current_userid+")" ; + } + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8,9) \n" + + " and t.preisremark not in (18)\n" + + " and t.requestid in("+requestid +") " + where ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowCopyToByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + bb.writeLog("queryWorkflowCopyToByRequestid-list:"+list.size()); + } + }catch (Exception e){ + + } + return list; + } + + public List> queryWorkflowForwardByRequestid(String requestid,String current_userid){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowForwardByRequestid-requestid:"+requestid); + + List> list = new ArrayList>(); + String where = ""; + if(StringUtils.isNotBlank(current_userid)){ + where += " and t.userid in("+current_userid+")" ; + } + + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark = 1 \n" + + " and t.requestid in("+requestid +") "+where ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowForwardByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + bb.writeLog("queryWorkflowForwardByRequestid-list:"+list.size()); + } + }catch (Exception e){ + + } + return list; + } + + + public List> queryWorkflowAtByRequestid(String requestid,String current_userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowAtByRequestid-requestid:"+requestid); + + List> list = new ArrayList>(); + String where = ""; + if(StringUtils.isNotBlank(current_userid)){ + where += " and t.userid in("+current_userid+")" ; + } + try{ + Map map = null; + if (StringUtils.isNotBlank(requestid)) { + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8) and t.preisremark in (18) \n" + + " and t.requestid in("+requestid +") "+where ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowAtByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + + bb.writeLog("queryWorkflowAtByRequestid-list:" + list.size()); + } + }catch (Exception e){ + + } + return list; + } + + + /*** + * + * @param user + * @param copyList + * @param forwardList + * @param atList + */ + public void operate3typeByList(User user, List> copyList, List> forwardList, List> atList,String note){ + + BaseBean bb = new BaseBean(); + String loginid = user.getLoginid()+"" ; + SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); + try{ + bb.writeLog("copyList:"+copyList.size()); + if(copyList.size() >0){ + String notes = note +"删除未读的抄送数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByRequestid(copyList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + try{ + bb.writeLog("forwardList:"+forwardList.size()); + if(forwardList.size() >0){ + String notes = note +"删除未读的转发数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowForwardByRequestid(forwardList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + try{ + bb.writeLog("atList:"+atList.size()); + if(atList.size() >0){ + String notes = note + "删除未读的@数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByRequestid(atList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + } + + + /** + * + * @param requestid + */ + public void queryWorkflowRemark8AtByLoadForm(String requestid,String current_userid,List> remark8List,List> atList){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-requestid:"+requestid); + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8) \n" + + " and t.preisremark in (8,18)\n" + + " and t.requestid in("+requestid +") and t.userid in("+current_userid+")" ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String preisremark = Util.null2String(rs.getString("preisremark")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + + if("8".equals(preisremark)){ + remark8List.add(map); + }else if("8".equals(preisremark)){ + atList.add(map); + } + } + bb.writeLog("queryWorkflowRemark8AtByLoadForm-remark8List:"+remark8List.size()); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-atList:"+atList.size()); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-e:"+e); + } + } + + /*** + * + * @param loginid + * @param remark8List + * @param atList + */ + public void completeReamrk8AtByLoadForm(String loginid, List> remark8List, List> atList){ + + BaseBean bb = new BaseBean(); + SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); + try{ + bb.writeLog("copyList:"+remark8List.size()); + if(remark8List.size() >0){ + String notes = "打开流程表单详情页面,完成抄送不需提交的数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByRequestid(remark8List,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + + try{ + bb.writeLog("atList:"+atList.size()); + if(atList.size() >0){ + String notes = "打开流程表单详情页面,完成@的数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByRequestid(atList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + } + + +// public int getAtCountByRequestid(String requestid,String userid) { +// int atcount = 0 ; +// BaseBean bb = new BaseBean(); +// try{ +// RecordSet rs = new RecordSet(); +// String sql =" select t1.userid,t1.nodeid " + +// " from workflow_currentoperator t1 " + +// " where t1.isremark = 8 and preisremark = 18" + +// " and t1.requestid= " +requestid + +// " and t1.userid= " +userid ; +// bb.writeLog("completeForwardRequest --sql:" + sql); +// rs.executeQuery(sql); +// while (rs.next()) { +// atcount++ ; +// } +// }catch (Exception e){ +// +// } +// return atcount; +// } +// +// +// public int getForwardCountByRequestid(String requestid,String userid) { +// int forwardcount = 0; +// BaseBean bb = new BaseBean(); +// try{ +// RecordSet rs = new RecordSet(); +// String sql =" select t1.userid,t1.nodeid " + +// " from workflow_currentoperator t1 " + +// " where t1.isremark = 1 " + +// " and t1.requestid= " +requestid + +// " and t1.userid= " +userid ; +// bb.writeLog("completeForwardRequest --sql:" + sql); +// rs.executeQuery(sql); +// while (rs.next()) { +// forwardcount++ ; +// } +// }catch (Exception e){ +// +// } +// return forwardcount; +// +// } + +} diff --git a/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java b/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java index 2c55de2f..b1be6ed0 100644 --- a/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java +++ b/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java @@ -1222,126 +1222,4 @@ public class SendPortalTodoUtil { return dataMap; } - - /*** - * - * @param requestid - * @param user - * @param nodeid - * @return - */ - public String completeForwardRequest(String requestid,User user,String nodeid){ - BaseBean bb = new BaseBean(); - bb.writeLog("com.customization.dito.sendtodo.SendPortalTodoUtil.completeForwardRequest"); - String message = " 执行流程提交完成同节点同提交人的转发的流程," ; - - HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); - SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); - - String userid = user.getUID()+""; - - String zhjkbs = "com.customization.dito.sendtodo.SendPortalTodoUtil.completeForwardRequest"; - - RecordSet rs = new RecordSet(); - String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - String actionType = "3"; - String terminal = "1"; - String taskType = "0"; - - String portal_todourl = Constants.portal_todourl; - String bpm_app_workflowurl = Constants.bpm_app_workflowurl; - String username = Constants.username; - String passwd = Constants.passwd; - String bpm_workflowurl = Constants.bpm_workflowurl; - String center = Constants.center; - String bpm_app_requesturl = Constants.bpm_app_requesturl; - - try { - - String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; - String replace = bpm_app_workflowurl.replace("/bpm", ""); - String urlDing = replace + bpm_app_requesturl + requestid; - String urlApp = replace + bpm_app_requesturl + requestid; - - if (StringUtils.isNotEmpty(mobileJumpUrl)) { - urlDing += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); - urlApp += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); - } - - String requestname = "" ; - String workflowname = "" ; - String createrLoginid = "" ; - - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid " + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid " + - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = " + requestid; - - bb.writeLog("completeForwardRequest --sql:" + sql); - - rs.executeQuery(sql); - if (rs.next()) { - requestname = Util.null2String(rs.getString("requestname")); - workflowname = Util.null2String(rs.getString("workflowname")); - createrLoginid = Util.null2String(rs.getString("loginid")); - } - - String nodename = "" ; - if(StringUtils.isNotBlank(nodeid)){ - rs.executeQuery(" select nodename from workflow_nodebase where id = ?",nodeid); - if (rs.next()){ - nodename = Util.null2String(rs.getString("nodename")); - } - } - - JSONObject requestObject = new JSONObject(); - requestObject.put("center", center); - requestObject.put("title", requestname); - requestObject.put("creator", createrLoginid); - requestObject.put("taskCode", "weaver" + requestid+"_zf_"+ userid); - requestObject.put("nodeId", nodeid); - requestObject.put("taskType", taskType); - requestObject.put("actionType", actionType); - requestObject.put("createDate", processTime); - requestObject.put("messageTitle", getShortMessageTitle(requestname)); - requestObject.put("messageContent", requestname); - requestObject.put("terminal", terminal); - requestObject.put("urlPc", urlPc); - requestObject.put("urlApp", urlApp); - requestObject.put("urlDing", urlDing); - requestObject.put("nodeName", nodename); - requestObject.put("ticketType", workflowname); - - bb.writeLog("completeForwardRequest-requestObject:" + requestObject.toJSONString()); - String auth = username + ":" + passwd; - String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); - - if (!"".equals(msgdata)) { - JSONObject msgObject = JSONObject.parseObject(msgdata); - bb.writeLog("completeForwardRequest:"+ msgObject.toJSONString()); - if (msgObject.containsKey("resultCode")) { - String resultCode = msgObject.getString("resultCode"); - message += "调用完成转发接口的返回值:"+resultCode ; - if ("0".equals(resultCode)) { - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, nodeid, nodename, userid, requestObject.toJSONString(), resultCode, "", zhjkbs,"",message); - } else { - String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, nodeid, nodename, userid, requestObject.toJSONString(), resultCode, resultmsg, zhjkbs,"",message); - } - } - } - }catch (Exception e){ - bb.writeLog(e); - e.printStackTrace(); - } - return message; - } - - - - } diff --git a/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java b/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java index 3f9fb637..fbb2ea9e 100644 --- a/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java @@ -261,7 +261,7 @@ public class SendPortalWithAddDoneCmd { // } // bb.writeLog("nodeid2:"+nodeid); - String nodeid = requestid+userid; + String nodeid = requestid+userid+"_"+System.currentTimeMillis(); JSONObject requestObject = new JSONObject(); requestObject.put("center", center); diff --git a/src/com/customization/dito/sendtodo/SendPortalWithDeleteCmd.java b/src/com/customization/dito/sendtodo/SendPortalWithDeleteCmd.java index 0e055fdc..d0554fe0 100644 --- a/src/com/customization/dito/sendtodo/SendPortalWithDeleteCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalWithDeleteCmd.java @@ -27,6 +27,8 @@ public class SendPortalWithDeleteCmd { public Map execute(CommandContext commandContext) { + BaseBean bb = new BaseBean(); + bb.writeLog("SendPortalWithDeleteCmd"); String requestid = Util.null2String(params.get("requestid")); String currentUserId = "1"; @@ -39,11 +41,12 @@ public class SendPortalWithDeleteCmd { String userid = deleteRemarkMap.get("userid"); String lcid = deleteRemarkMap.get("requestid"); + bb.writeLog("SendPortalWithDeleteCmd-userid:"+userid); + bb.writeLog("SendPortalWithDeleteCmd-lcid:"+lcid); + SendPortalWithDeleteToRead(lcid,currentUserId,userid); } - - return null; } @@ -55,6 +58,7 @@ public class SendPortalWithDeleteCmd { */ public void SendPortalWithDeleteTodo(String requestid,String currentUserId){ + String notes = "流程删除后,删除待办数据"; String portal_todourl = Constants.portal_todourl; String bpm_app_workflowurl = Constants.bpm_app_workflowurl; @@ -142,10 +146,10 @@ public class SendPortalWithDeleteCmd { if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,""); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); } } } @@ -163,7 +167,7 @@ public class SendPortalWithDeleteCmd { */ public void SendPortalWithDeleteToRead(String requestid,String currentUserId,String userid){ - + String notes = "流程删除后,删除待阅数据"; String portal_todourl = Constants.portal_todourl; String bpm_app_workflowurl = Constants.bpm_app_workflowurl; String username = Constants.username; @@ -250,10 +254,10 @@ public class SendPortalWithDeleteCmd { if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,""); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); } } } diff --git a/src/com/engine/dito/reqremark/cmd/AtRequestRemarkCmd.java b/src/com/engine/dito/reqremark/cmd/AtRequestRemarkCmd.java index 689187b5..be46f218 100644 --- a/src/com/engine/dito/reqremark/cmd/AtRequestRemarkCmd.java +++ b/src/com/engine/dito/reqremark/cmd/AtRequestRemarkCmd.java @@ -42,12 +42,41 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand @Override public Map execute(CommandContext commandContext) { Map map = new HashMap(); + BaseBean bb = new BaseBean(); int userid = user.getUID(); String requestid = Util.null2String(params.get("requestid")); String nodeid = Util.null2String(params.get("nodeid")); - String resultCode = completePortalReadData(requestid,nodeid,userid+""); - map.put("resultcode",resultCode); + bb.writeLog("AtRequestRemarkCmd-requestid:"+requestid); + bb.writeLog("AtRequestRemarkCmd-nodeid:"+nodeid); + + if(StringUtils.isNotBlank(requestid)){ + + int atcount = 0; + try{ + RecordSet rs = new RecordSet(); + String sql =" select t1.userid,t1.nodeid " + + " from workflow_currentoperator t1 " + + " where preisremark = 18" + + " and t1.requestid= " +requestid + + " and t1.userid= " +userid ; + bb.writeLog("completeForwardRequest --sql:" + sql); + rs.executeQuery(sql); + while (rs.next()) { + atcount++ ; + } + }catch (Exception e){ + + } + + if(atcount > 0){ + String resultCode = completePortalAtToReadData(requestid,nodeid,userid+""); +// completePortalAtDoneData(requestid,nodeid,userid+""); + map.put("resultcode",resultCode); + } + + } + return map; } @@ -57,7 +86,7 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand * @param nodeid * @param userid */ - public String completePortalReadData(String requestid, String nodeid,String userid){ + public String completePortalAtToReadData(String requestid, String nodeid,String userid){ String zhjkbs = "com.engine.dito.reqremark.cmd.AtRequestRemarkCmd.completePortalReadData"; String resultCode = "" ; HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); @@ -71,8 +100,6 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand String center = PropBean.getUfPropValue("center"); String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - String portal_doneurl = PropBean.getUfPropValue("portal_doneurl"); - String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); BaseBean bb = new BaseBean(); RecordSet rs = new RecordSet(); @@ -80,13 +107,12 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand String actionType = "3" ; String terminal = "1" ; String taskType = "1"; //0 – 待办 1 –待阅 - String objectAction = "0" ; - String objectType = "0"; - String objectId = "" ; +// String objectAction = "0" ; +// String objectType = "0"; +// String objectId = "" ; + - JSONObject requestObject = new JSONObject(); try { - String workflowid = ""; String workcode = ""; String sql = " select * from (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + userid + "'"; rs.executeQuery(sql); @@ -104,11 +130,8 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - String requestname = ""; String workflowname = "" ; - String nodeId = ""; - String nodeName = ""; sql = " select t1.workflowid,t1.requestname,t3.workflowname,t1.currentnodeid as nodeid,d1.nodename\n" + " from workflow_requestbase t1\n" + @@ -119,11 +142,8 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand rs.execute(sql); if (rs.next()) { - workflowid = Util.null2String(rs.getString("workflowid")) ; workflowname = Util.null2String(rs.getString("workflowname")) ; requestname = Util.null2String(rs.getString("requestname")) ; - nodeId = Util.null2String(rs.getString("nodeid") + user.getUID()); - nodeName = Util.null2String(rs.getString("nodeName")); } @@ -131,6 +151,7 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand String createtime = TimeUtil.getCurrentTimeString(); String nodename = getNodeName(nodeid); + JSONObject requestObject = new JSONObject(); requestObject.put("center",center); requestObject.put("title",requestname); requestObject.put("creator",workcode); @@ -148,20 +169,19 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand requestObject.put("nodeName",getNodeName(nodeid)); requestObject.put("ticketType",workflowname); +// JSONArray taskObjectList = new JSONArray(); +// JSONObject taskObject = new JSONObject(); +// +// String objectCode = workcode ; +// String operatorCode = workcode ; +// taskObject.put("objectAction",objectAction); +// taskObject.put("objectType",objectType); +// taskObject.put("objectCode",objectCode); +// taskObject.put("objectId",objectId); +// taskObject.put("operatorCode",operatorCode); +// taskObjectList.add(taskObject); +// requestObject.put("taskObjectList",taskObjectList); - JSONArray taskObjectList = new JSONArray(); - JSONObject taskObject = new JSONObject(); - - String objectCode = workcode ; - String operatorCode = workcode ; - taskObject.put("objectAction",objectAction); - taskObject.put("objectType",objectType); - taskObject.put("objectCode",objectCode); - taskObject.put("objectId",objectId); - taskObject.put("operatorCode",operatorCode); - taskObjectList.add(taskObject); - - requestObject.put("taskObjectList",taskObjectList); String auth = username + ":" + passwd; String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); bb.writeLog("msgdata:"+msgdata); @@ -179,48 +199,214 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand } } - boolean flag = checkHasDoneData(requestid,workflowid,userid,nodeid); - if(!flag){ - // 增加已办 +// boolean flag = checkHasDoneData(requestid,workflowid,userid,nodeid); +// if(!flag){ +// // 增加已办 +// requestObject = new JSONObject(); +// requestObject.put("center", center); +// requestObject.put("taskCode", "weaver" + requestid); +// requestObject.put("nodeId", nodeId); +// requestObject.put("ticketType", workflowname); +// requestObject.put("title", requestname); +// requestObject.put("creator", workcode); +// requestObject.put("processStaff", workcode); +// requestObject.put("processTime", processTime); +// requestObject.put("isRecall", "1"); +// requestObject.put("actionType", "0"); +// requestObject.put("urlPC", urlPc); +// requestObject.put("urlApp", urlApp); +// requestObject.put("urlDing", urlDing); +// +// bb.writeLog("delTodoAddDoneSendPortal done requestObject:" + requestObject.toJSONString()); +// msgdata = httpRequestUtil.doPostByAuth(portal_doneurl, requestObject.toJSONString(), auth); +// bb.writeLog("delTodoAddDoneSendPortal done msgdata:" + msgdata); +// if (StringUtils.isNotEmpty(msgdata)) { +// JSONObject msgObject = JSONObject.parseObject(msgdata); +// bb.writeLog("SendPortalWithAddDoneCmd--delTodoAddDoneSendPortal--adddone--msgObject:" + msgObject.toJSONString()); +// //{"resultCode":"1","resultMsg":"No Result"} +// if (msgObject.containsKey("resultCode")) { +// resultCode = msgObject.getString("resultCode"); +// if (!"0".equals(resultCode)) { +// String resultmsg = msgObject.getString("resultMsg"); +// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeid, nodeName, user.getUID() + "", requestObject.toJSONString(), resultCode, resultmsg, zhjkbs,""); +// }else{ +// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeid, nodeName, user.getUID() + "", requestObject.toJSONString(), resultCode, "", zhjkbs,""); +// } +// } +// } +// } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog(e); + } + return resultCode; + } + + + /*** + * + * @param requestid + * @param currentnodeid + * @param userid + * @return + */ + public String completePortalAtDoneData(String requestid,String currentnodeid,String userid){ + + String notes = ""; + String zhjkbs = "com.engine.dito.reqremark.cmd.AtRequestRemarkCmd.completePortalAtDoneData"; + String resultCode = "" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl"); + String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl"); + String username = PropBean.getUfPropValue("username"); + String passwd = PropBean.getUfPropValue("passwd"); + String center = PropBean.getUfPropValue("center"); + String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + String portal_doneurl = PropBean.getUfPropValue("portal_doneurl"); + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + + String actionType = "0" ; + + + try { + int donecount = 0; + // 存在已完成的情况 + String sql =" select id \n" + + " from workflow_currentoperator \n" + + " where requestid = "+requestid+"\n" + + " and userid = "+userid+" \n" + + " and isremark = 2\n" ; + rs.executeQuery(sql); + if(rs.next()){ + donecount++ ; + } + + if(donecount == 0){ + + String nodeid = requestid+userid+"_"+System.currentTimeMillis(); + String nodeName = "" ; + sql = "select nodename from workflow_nodebase where id = " + currentnodeid; + rs.executeQuery(sql); + if(rs.next()){ + nodeName = rs.getString("nodename"); + } + + String workcode = ""; + sql = " select * from (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + userid + "'"; + rs.executeQuery(sql); + while (rs.next()) { + workcode = Util.null2String(rs.getString("loginid")); + } + + String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + String requestname = ""; + String workflowname = "" ; + + sql = " select t1.workflowid,t1.requestname,t3.workflowname,t1.currentnodeid as nodeid,d1.nodename\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = " + requestid; + + rs.execute(sql); + if (rs.next()) { + workflowname = Util.null2String(rs.getString("workflowname")) ; + requestname = Util.null2String(rs.getString("requestname")) ; + } + + JSONObject requestObject = new JSONObject(); requestObject.put("center", center); requestObject.put("taskCode", "weaver" + requestid); - requestObject.put("nodeId", nodeId); + requestObject.put("nodeId", nodeid); requestObject.put("ticketType", workflowname); requestObject.put("title", requestname); requestObject.put("creator", workcode); requestObject.put("processStaff", workcode); requestObject.put("processTime", processTime); requestObject.put("isRecall", "1"); - requestObject.put("actionType", "0"); + requestObject.put("actionType", actionType); requestObject.put("urlPC", urlPc); requestObject.put("urlApp", urlApp); requestObject.put("urlDing", urlDing); + String auth = username + ":" + passwd; bb.writeLog("delTodoAddDoneSendPortal done requestObject:" + requestObject.toJSONString()); - msgdata = httpRequestUtil.doPostByAuth(portal_doneurl, requestObject.toJSONString(), auth); + String msgdata = httpRequestUtil.doPostByAuth(portal_doneurl, requestObject.toJSONString(), auth); bb.writeLog("delTodoAddDoneSendPortal done msgdata:" + msgdata); if (StringUtils.isNotEmpty(msgdata)) { JSONObject msgObject = JSONObject.parseObject(msgdata); - bb.writeLog("SendPortalWithAddDoneCmd--delTodoAddDoneSendPortal--adddone--msgObject:" + msgObject.toJSONString()); - //{"resultCode":"1","resultMsg":"No Result"} + bb.writeLog("completePortalAtDoneData--msgObject:" + msgObject.toJSONString()); if (msgObject.containsKey("resultCode")) { resultCode = msgObject.getString("resultCode"); if (!"0".equals(resultCode)) { String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeid, nodeName, user.getUID() + "", requestObject.toJSONString(), resultCode, resultmsg, zhjkbs,""); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, nodeid, nodeName, user.getUID() + "", requestObject.toJSONString(), resultCode, resultmsg, zhjkbs,"",notes); }else{ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeid, nodeName, user.getUID() + "", requestObject.toJSONString(), resultCode, "", zhjkbs,""); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, nodeid, nodeName, user.getUID() + "", requestObject.toJSONString(), resultCode, "", zhjkbs,"",notes); } } } + } + +// boolean flag = checkHasDoneData(requestid,workflowid,userid,nodeid); +// if(!flag){ +// // 增加已办 +// requestObject = new JSONObject(); +// requestObject.put("center", center); +// requestObject.put("taskCode", "weaver" + requestid); +// requestObject.put("nodeId", nodeId); +// requestObject.put("ticketType", workflowname); +// requestObject.put("title", requestname); +// requestObject.put("creator", workcode); +// requestObject.put("processStaff", workcode); +// requestObject.put("processTime", processTime); +// requestObject.put("isRecall", "1"); +// requestObject.put("actionType", "0"); +// requestObject.put("urlPC", urlPc); +// requestObject.put("urlApp", urlApp); +// requestObject.put("urlDing", urlDing); +// +// bb.writeLog("delTodoAddDoneSendPortal done requestObject:" + requestObject.toJSONString()); +// msgdata = httpRequestUtil.doPostByAuth(portal_doneurl, requestObject.toJSONString(), auth); +// bb.writeLog("delTodoAddDoneSendPortal done msgdata:" + msgdata); +// if (StringUtils.isNotEmpty(msgdata)) { +// JSONObject msgObject = JSONObject.parseObject(msgdata); +// bb.writeLog("SendPortalWithAddDoneCmd--delTodoAddDoneSendPortal--adddone--msgObject:" + msgObject.toJSONString()); +// //{"resultCode":"1","resultMsg":"No Result"} +// if (msgObject.containsKey("resultCode")) { +// resultCode = msgObject.getString("resultCode"); +// if (!"0".equals(resultCode)) { +// String resultmsg = msgObject.getString("resultMsg"); +// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeid, nodeName, user.getUID() + "", requestObject.toJSONString(), resultCode, resultmsg, zhjkbs,""); +// }else{ +// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeid, nodeName, user.getUID() + "", requestObject.toJSONString(), resultCode, "", zhjkbs,""); +// } +// } +// } +// } } catch (Exception e) { e.printStackTrace(); bb.writeLog(e); } return resultCode; - } + } /*** * * @param id @@ -236,22 +422,41 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand return name; } +// private boolean checkHasDoneData(String requestid,String workflowid,String userid,String nodeid){ +// boolean flag = false; +// RecordSet rs = new RecordSet(); +// String sql = "select distinct t1.requestid,t1.requestname,t1.createdate,t2.operatedate,t2.operatetime,t2.usertype,t3.id " + +// " from workflow_requestbase t1,workflow_currentoperator t2,workflow_base t3 " + +// " where t1.requestid=t2.requestid and t1.workflowid=t3.id " + +// " and t3.isvalid in ('1','3') " + +// " and t1.requestid = "+ requestid + +// " and t3.id in ("+ workflowid +") " + +// " and t2.userid in ("+ userid +") " + +// " and t2.nodeid = "+ nodeid + +// " and ifnull(t1.currentstatus,0) !=1 " + +// " and t2.usertype = 0 " + +// " and t2.isremark != '0' " + +// " and islasttimes=1 " + +// " ORDER BY t2.operatedate desc,t2.operatetime desc"; +// rs.executeQuery(sql); +// if(rs.next()){ +// flag = true; +// } +// return flag; +// } + + + + private boolean checkHasDoneData(String requestid,String workflowid,String userid,String nodeid){ boolean flag = false; RecordSet rs = new RecordSet(); - String sql = "select distinct t1.requestid,t1.requestname,t1.createdate,t2.operatedate,t2.operatetime,t2.usertype,t3.id " + - " from workflow_requestbase t1,workflow_currentoperator t2,workflow_base t3 " + - " where t1.requestid=t2.requestid and t1.workflowid=t3.id " + - " and t3.isvalid in ('1','3') " + - " and t1.requestid = "+ requestid + - " and t3.id in ("+ workflowid +") " + + String sql = "select t2.requestid " + + " from workflow_currentoperator t2 " + + " and t2.requestid = "+ requestid + + " and t2.id in ("+ workflowid +") " + " and t2.userid in ("+ userid +") " + - " and t2.nodeid = "+ nodeid + - " and ifnull(t1.currentstatus,0) !=1 " + - " and t2.usertype = 0 " + - " and t2.isremark != '0' " + - " and islasttimes=1 " + - " ORDER BY t2.operatedate desc,t2.operatetime desc"; + " "; rs.executeQuery(sql); if(rs.next()){ flag = true; diff --git a/src/com/engine/dito/reqremark/cmd/RequestRemarkCmd.java b/src/com/engine/dito/reqremark/cmd/RequestRemarkCmd.java index 5e6fcbd4..396ccc8a 100644 --- a/src/com/engine/dito/reqremark/cmd/RequestRemarkCmd.java +++ b/src/com/engine/dito/reqremark/cmd/RequestRemarkCmd.java @@ -54,7 +54,7 @@ public class RequestRemarkCmd extends AbstractCommonCommand> " from workflow_requestbase t1\n" + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t2.preisremark in ('8')\n" + + " and t2.preisremark in ('8') \n" + " and t2.requestid = "+requestid +" and t2.userid in ("+userid+")"; bb.writeLog("RequestRemarkCmd-sql:"+sql); @@ -69,11 +69,11 @@ public class RequestRemarkCmd extends AbstractCommonCommand> String resultCode1 = completePortalReadData(requestid, nodeid,userid+""); bb.writeLog("RequestRemarkCmd -------resultCode1:"+resultCode1); - String resultCode2 = sendPortalDoneData(requestid,nodeid,userid+""); - bb.writeLog("RequestRemarkCmd -------resultCode2:"+resultCode2); +// String resultCode2 = sendPortalDoneData(requestid,nodeid,userid+""); +// bb.writeLog("RequestRemarkCmd -------resultCode2:"+resultCode2); map.put("resultCode1",resultCode1); - map.put("resultCode2",resultCode2); +// map.put("resultCode2",resultCode2); } @@ -97,22 +97,22 @@ public class RequestRemarkCmd extends AbstractCommonCommand> String resultCode1 = completePortalReadData(requestid, nodeid,userid+""); bb.writeLog("RequestRemarkCmd -------resultCode1:"+resultCode1); - String resultCode2 = sendPortalDoneData(requestid,nodeid,userid+""); - bb.writeLog("RequestRemarkCmd -------resultCode2:"+resultCode2); +// String resultCode2 = sendPortalDoneData(requestid,nodeid,userid+""); +// bb.writeLog("RequestRemarkCmd -------resultCode2:"+resultCode2); map.put("resultCode1",resultCode1); - map.put("resultCode2",resultCode2); +// map.put("resultCode2",resultCode2); } }else if("9".equals(preisremark)){ String resultCode1 = completePortalReadData(requestid, nodeid,userid+""); bb.writeLog("RequestRemarkCmd -------resultCode1:"+resultCode1); - String resultCode2 = sendPortalDoneData(requestid,nodeid,userid+""); - bb.writeLog("RequestRemarkCmd -------resultCode2:"+resultCode2); +// String resultCode2 = sendPortalDoneData(requestid,nodeid,userid+""); +// bb.writeLog("RequestRemarkCmd -------resultCode2:"+resultCode2); map.put("resultCode1",resultCode1); - map.put("resultCode2",resultCode2); +// map.put("resultCode2",resultCode2); } diff --git a/src/com/engine/workflow/cmd/requestForm/LoadParamCmd.java b/src/com/engine/workflow/cmd/requestForm/LoadParamCmd.java new file mode 100644 index 00000000..112807ec --- /dev/null +++ b/src/com/engine/workflow/cmd/requestForm/LoadParamCmd.java @@ -0,0 +1,2169 @@ +package com.engine.workflow.cmd.requestForm; + +import com.api.doc.mobile.systemDoc.util.DocDetailUtil; +import com.api.odoc.bean.OfficalConditionInfo; +import com.api.odoc.bean.OfficalResultInfo; +import com.api.odoc.util.WorkflowCreateDocPublicUtil; +import com.api.workflow.constant.RequestAuthenticationConstant; +import com.api.workflow.constant.RequestAuthenticationEnum; +import com.api.workflow.service.RequestAuthenticationService; +import com.api.workflow.util.ServiceUtil; +import com.cloudstore.dev.api.util.EMManager; +import com.cloudstore.dev.api.util.Util_TableMap; +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.common.service.impl.DocCommonServiceImpl; +import com.engine.common.service.impl.PortalCommonServiceImpl; +import com.engine.common.util.AttrSignatureUtil; +import com.engine.common.util.ParamUtil; +import com.engine.core.exception.ECException; +import com.engine.core.interceptor.CommandContext; +import com.engine.hrm.biz.HrmClassifiedProtectionBiz; +import com.engine.workflow.biz.NodeFieldCheckBiz; +import com.engine.workflow.biz.WorkflowCommunicationBiz; +import com.engine.workflow.biz.excelDesign.DoSaveFreeExcelDesignBiz; +import com.engine.workflow.biz.freeNode.FreeNodeBiz; +import com.engine.workflow.biz.freeNode.SimpleModeFreeNodeBiz; +import com.engine.workflow.biz.requestForm.*; +import com.engine.workflow.biz.requestList.RequestListBiz; +import com.engine.workflow.biz.systemBill.SystemBillManagerBiz; +import com.engine.workflow.biz.wfPathSet.WaterMarkBiz; +import com.engine.workflow.constant.RemindTypeEnum; +import com.engine.workflow.constant.requestForm.PromptType; +import com.engine.workflow.constant.requestForm.RequestConstant; +import com.engine.workflow.constant.requestForm.RequestType; +import com.engine.workflow.entity.core.RequestInfoEntity; +import com.engine.workflow.entity.freeNode.FreeNodeEntity; +import com.engine.workflow.entity.requestForm.RequestOperationResultBean; +import com.engine.workflow.entity.wfPathSet.WfWaterMarkEntity; +import com.engine.workflow.service.RequestSecondAuthService; +import com.engine.workflow.service.impl.RequestSecondAuthServiceImpl; +import com.engine.workflow.util.ChuanyueUtil; +import com.engine.workflow.util.SecondAuthUtil; +import com.engine.workflow.util.WfListCusTitleUtil; +import com.google.common.base.Strings; +import weaver.common.DateUtil; +import weaver.conn.RecordSet; +import weaver.cowork.CoworkDAO; +import weaver.cpt.util.CptWfUtil; +import weaver.crm.Maint.CustomerInfoComInfo; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.hrm.moduledetach.ManageDetachComInfo; +import weaver.hrm.resource.ResourceComInfo; +import weaver.mobile.webservices.workflow.soa.RequestPreProcessing; +import weaver.system.SysWFLMonitor; +import weaver.systeminfo.SystemEnv; +import weaver.workflow.agent.AgentManager; +import weaver.workflow.msg.MsgPushUtil; +import weaver.workflow.msg.entity.MsgEntity; +import weaver.workflow.report.ReportAuthorization; +import weaver.workflow.request.*; +import weaver.workflow.workflow.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.net.URLEncoder; +import java.util.*; +import java.util.regex.Pattern; +import com.engine.workflow.biz.AgentBiz; + +/** + * 功能 1:加载流程表单权限信息 2:加载右键菜单 3:加载签字意见相关基础数据 + * * @author wuser0326 + */ +public class LoadParamCmd extends AbstractCommonCommand> { + + private HttpServletRequest request; + private HttpSession session; + private int userid; + private int usertype = 0; + private String logintype; + + private int workflowid = 0; // 工作流id + private int nodeid = 0; // 节点id + private int formid = 0; // 表单或者单据的id + private int requestid; + private String isbill = "0"; // 是否单据 0:否 1:是 + private int lastOperator = 0; // 最后操作者id + private String lastOperateDate = ""; // 最后操作日期 + private String lastOperateTime = ""; // 最后操作时间 + private String f_weaver_belongto_userid; + private String f_weaver_belongto_usertype; + + private String currentdate; + private String currenttime; + private char flag = Util.getSeparator(); + private boolean isprint; + private Map submitParams = new HashMap(); + private AttrSignatureUtil attrSignatureUtil; + private int configId = -1; + private boolean isnewFreeLayout; + + //二开使用request参数 + private Map reqParams; + + public LoadParamCmd(HttpServletRequest request, User user) { + this.request = request; + this.user = user; + session = request.getSession(); + reqParams = ParamUtil.request2Map(request); + f_weaver_belongto_userid = Util.null2String(request.getParameter("f_weaver_belongto_userid")); + f_weaver_belongto_usertype = Util.null2String(request.getParameter("f_weaver_belongto_usertype")); + //user = HrmUserVarify.getUser(request, response, f_weaver_belongto_userid, f_weaver_belongto_usertype); + userid = user.getUID(); + usertype = "2".equals(user.getLogintype()) ? 1 : 0; + usertype = "3".equals(user.getLogintype()) ? 2 : usertype; + logintype = user.getLogintype(); + + requestid = Util.getIntValue(request.getParameter("requestid"), -1); + + String iscreate = Util.null2String(request.getParameter("iscreate")); + DoSaveFreeExcelDesignBiz doSaveFreeExcelDesignBiz = new DoSaveFreeExcelDesignBiz(user); + if (!iscreate.equals("1")) { + this.configId = doSaveFreeExcelDesignBiz.getLayoutConfigId(requestid); + } else { + configId = Util.getIntValue(request.getParameter("configid"), -1); + } + doSaveFreeExcelDesignBiz.getFreeNodeFormConfig(Util.null2String(configId)); + isnewFreeLayout = DoSaveFreeExcelDesignBiz.isNewFreeLayout(Util.null2String(this.configId));//是否是自由流程自定义表单 + if (isnewFreeLayout) { + this.workflowid = doSaveFreeExcelDesignBiz.getWorkflowid(); + } + Calendar today = Calendar.getInstance(); + currentdate = Util.add0(today.get(Calendar.YEAR), 4) + "-" + Util.add0(today.get(Calendar.MONTH) + 1, 2) + "-" + Util.add0(today.get(Calendar.DAY_OF_MONTH), 2); + currenttime = Util.add0(today.get(Calendar.HOUR_OF_DAY), 2) + ":" + Util.add0(today.get(Calendar.MINUTE), 2) + ":" + Util.add0(today.get(Calendar.SECOND), 2); + //取数据库服务器的当前时间 + RecordSet rs = new RecordSet(); + rs.executeProc("GetDBDateAndTime", ""); + if (rs.next()) { + currentdate = rs.getString("dbdate"); + currenttime = rs.getString("dbtime"); + } + isprint = Util.null2String(request.getParameter("isprint")).equals("1"); + f_weaver_belongto_userid = "".equals(f_weaver_belongto_userid) ? userid + "" : f_weaver_belongto_userid; + f_weaver_belongto_usertype = "".equals(f_weaver_belongto_usertype) ? usertype + "" : f_weaver_belongto_usertype; + submitParams.put("requestid", requestid); + submitParams.put("f_weaver_belongto_userid", f_weaver_belongto_userid); + submitParams.put("f_weaver_belongto_usertype", f_weaver_belongto_usertype); + submitParams.put("comemessage", Util.null2String(request.getParameter("comemessage"))); + if (isnewFreeLayout) { + submitParams.put("configid", this.configId); + } + attrSignatureUtil = new AttrSignatureUtil(user.getUID(), request.getHeader("user-agent")); + } + + /** + * 加载权限 + * + * @throws Exception + */ + public Map execute(CommandContext commandContext) throws ECException { + Map apidatas = new HashMap(); + WorkflowConfigComInfo wcc = new WorkflowConfigComInfo(); + long start = System.currentTimeMillis(); + try { + Map resultDatas = new HashMap(); + apidatas.put("params", resultDatas); + //当前用户id,也用于方便确认单点直接打开表单,认证的人是谁 + resultDatas.put("currentUserid", userid); + //签字意见框和签字意见列表是否使用系统默认的----start + resultDatas.put("showDefaultSign", Util.null2String(wcc.getValue("signinout_defaultshow"))); + resultDatas.put("showDefaultLogList", Util.null2String(wcc.getValue("requestloglist_defaultshow"))); + //签字意见框和签字意见列表是否使用系统默认的----end + + //是否开启智能预测 + resultDatas.put("openAutoForecast", Util.null2String(wcc.getValue("form_openAutoForecast"))); + //默认显示智能预测 + resultDatas.put("showAutoForecastResult", Util.null2String(wcc.getValue("form_showAutoForecastResult"))); + //em地址,内网和外网----start + Map emData = EMManager.getEMData(); + resultDatas.put("em_url", emData.get(EMManager.em_url));//em内网地址 + resultDatas.put("em_url_open", emData.get(EMManager.em_url_open));//em外网地址 + //em地址,内网和外网----end + + //是否允许使用“所有人”常用组 + resultDatas.put("allowAllPersonGroup", RequestFormBiz.hasAllPersionGroupAuth(user)); + String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase(); + resultDatas.put("linkageUUID", uuid); + submitParams.put("linkageUUID", uuid); + resultDatas.put("layoutconfigid", configId);//自由流程自定义表单配置id + resultDatas.put("isFreeCustomeForm", DoSaveFreeExcelDesignBiz.judgeIsFreeCustomForm(Util.null2String(workflowid)) ? 1 : 0); + if (isnewFreeLayout) { + DoSaveFreeExcelDesignBiz doSaveFreeExcelDesignBiz = new DoSaveFreeExcelDesignBiz(user); + String freeStartNodeid = doSaveFreeExcelDesignBiz.getCreateNodeid(Util.null2String(workflowid)); + resultDatas.put("freeStartNodeid", freeStartNodeid); + } + + RecordSet recordSet = new RecordSet(); + String iscreate = Util.null2String(request.getParameter("iscreate")); + if ("1".equals(iscreate)) { + return loadCreateCompetence(resultDatas); + } + + RequestOperationResultBean lastOperationResult = new RequestOperationResultBean(); + //表单顶部提示信息(错误提示、提交预览下一节点操作者、流程编辑锁定) + //List promptInfoList; + + List> promptInfos = new ArrayList<>(); + + Map promptInfo = new HashMap(); + String sessionkey = Util.null2String(request.getParameter("sessionkey")); + if (!"".equals(sessionkey)) { + lastOperationResult = (RequestOperationResultBean) Util_TableMap.getObjVal(sessionkey); +// Util_TableMap.clearVal(sessionkey); + if (lastOperationResult == null) + lastOperationResult = new RequestOperationResultBean(); + promptInfo = lastOperationResult.getMessageInfo(); + apidatas.put("conflictFieldInfo", lastOperationResult.getConflictFieldInfo()); + if (promptInfo != null && !"".equals(Util.null2String(promptInfo.get("prompttype")))) { + promptInfos.add(promptInfo); + if (promptInfo.get("prompttype").equals("showContent")) { + resultDatas.put("needReloadList", true); + if ("1".equals(Util.null2String(promptInfo.get("isCustomUrl")))) { + resultDatas.put("isCustomUrl", "1"); + } + } + } + } + + resultDatas.put("isaffirmanceSrc", Util.null2String(request.getParameter("isaffirmanceSrc"))); + String addressKey = Util.null2String(request.getParameter("address")); + if (!"".equals(addressKey)) { + resultDatas.put("position", Util.null2String(request.getParameter("position"))); + resultDatas.put("address", Util_TableMap.getVal(addressKey)); + Util_TableMap.clearVal(addressKey); + } + + WFLinkInfo wfLinkInfo = new WFLinkInfo(); + RecordSet rs = new RecordSet(); + SysWFLMonitor sysWFLMonitor = new SysWFLMonitor(); + WorkflowComInfo workflowComInfo = new WorkflowComInfo(); + WFUrgerManager wfUrgerManager = new WFUrgerManager(); + WFShareAuthorization wfShareAuthorization = new WFShareAuthorization(); + ReportAuthorization reportAuthorization = new ReportAuthorization(); + CoworkDAO coworkDAO = new CoworkDAO(); + WFManager wfManager = new WFManager(); + WFForwardManager wfForwardManager = new WFForwardManager(); + WFCoadjutantManager wfCoadjutantManager = new WFCoadjutantManager(); + // 设置跳转 + resultDatas.put("sendPage", ""); + resultDatas.put("verifyRight", true); + + boolean isfromtab = Util.null2String(request.getParameter("isfromtab")).equals("true"); + String isworkflowhtmldoc = Util.null2String(request.getParameter("isworkflowhtmldoc")); + String fromFlowDoc = Util.null2String(request.getParameter("fromFlowDoc")); // 是否从流程创建文档而来 + + String info = Util.null2String(request.getParameter("infoKey")); + int seeflowdoc = Util.getIntValue(request.getParameter("seeflowdoc"), 0); + String isSubmitDirect = Util.null2String(request.getParameter("isSubmitDirect")); + //String wfdoc = Util.null2String((String) session.getAttribute(requestid + "_wfdoc")); + // 是否显示提示 取值"true"或者"false" + String isShowPrompt = Util.null2String(request.getParameter("isShowPrompt")); + String viewdoc = Util.null2String(request.getParameter("viewdoc")); + + int isovertime = Util.getIntValue(request.getParameter("isovertime"), 0); + int isonlyview = Util.getIntValue(request.getParameter("isonlyview"), 0); + + //当点击编辑时,表单可以编辑 + int reEdit = Util.getIntValue(request.getParameter("reEdit"), 0);// 是否为编辑 + String isaffirmance = Util.null2String(request.getParameter("isaffirmance")); + if (1 == reEdit) isaffirmance = "0"; + resultDatas.put("isaffirmance", isaffirmance); + + String isrequest = Util.null2String(request.getParameter("isrequest")); + String nodetypedoc = Util.null2String(request.getParameter("nodetypedoc")); + int desrequestid = 0; + int wflinkno = Util.getIntValue(request.getParameter("wflinkno")); + String fromoperation = Util.null2String(request.getParameter("fromoperation")); + + String src = Util.null2String(request.getParameter("src"));// 进入该界面前的操作,"submit":提交,"reject":退回。 + // TD4262 增加提示信息 开始 + if (requestid < 0) {// 异构系统跳转 + int _workflowid = Util.getIntValue(request.getParameter("_workflowid"), 0); + int _workflowtype = Util.getIntValue(request.getParameter("_workflowtype"), 0); + String sendPageUrl = weaver.general.GCONST.getContextPath() + "/workflow/request/ViewRequestOS.jsp?requestid=" + requestid + "&workflowid=" + _workflowid + "&sysid=" + _workflowtype; + resultDatas.put("sendPage", sendPageUrl); + resultDatas.put("verifyRight", false); + return apidatas; + } + + int wfcurrrid = 0; + boolean canview = false; // 是否可以查看 + + boolean isurger = false; // 督办人可查看 + boolean wfmonitor = false; // 流程监控人 + + String nodetype = ""; + int preisremark = -1;// 如果是流程参与人,该值会被赋予正确的值,在初始化时先设为错误值,以解决主流程参与人查看子流程时权限判断问题。TD10126 + String isremarkForRM = ""; + int groupdetailid = 0; + int takisremark = -1; + boolean istoManagePage = false; + + String isSignInput = "0"; // 是否显示签字意见输入框 + String currentnodetype = ""; + int currentnodeid = 0; + int creater = 0; // 请求的创建人 + int creatertype = 0; // 创建人类型 0: 内部用户 1: 外部用户 + int deleted = 0; // 请求是否删除 1:是 0或者其它 否 + int billid = 0; // 如果是单据,对应的单据表的id + // TD:8835 + String workflowtype = ""; // 工作流种类 + int helpdocid = 0; // 帮助文档 id + String workflowname = ""; // 工作流名称 + String status = ""; // 当前的操作类型 + String requestname = ""; // 请求名称 + String requestnamenew = ""; // 请求名称 + String requestlevel = ""; // 请求重要级别 0:正常 1:重要 2:紧急 + String requestmark = ""; // 请求编号 + int currentstatus = -1; + // 查询请求的相关工作流基本信息 + recordSet.executeProc("workflow_Requestbase_SByID", requestid + ""); + if (recordSet.next()) { + status = Util.null2String(recordSet.getString("status")); + requestname = ServiceUtil.convertChar(Util.null2String(recordSet.getString("requestname"))); + requestnamenew = ServiceUtil.convertChar(Util.null2String(recordSet.getString("requestnamenew"))); + requestlevel = Util.null2String(recordSet.getString("requestlevel")); + requestmark = Util.null2String(recordSet.getString("requestmark")); + creater = Util.getIntValue(recordSet.getString("creater"), 0); + creatertype = Util.getIntValue(recordSet.getString("creatertype"), 0); + deleted = Util.getIntValue(recordSet.getString("deleted"), 0); + this.workflowid = Util.getIntValue(recordSet.getString("workflowid"), 0); + currentnodeid = Util.getIntValue(recordSet.getString("currentnodeid"), 0); + if (nodeid < 1) + nodeid = currentnodeid; + currentnodetype = Util.null2String(recordSet.getString("currentnodetype")); + if (nodetype.equals("")) + nodetype = currentnodetype; + workflowname = workflowComInfo.getWorkflowname(this.workflowid + ""); + workflowtype = workflowComInfo.getWorkflowtype(this.workflowid + ""); + + lastOperator = Util.getIntValue(recordSet.getString("lastOperator"), 0); + lastOperateDate = Util.null2String(recordSet.getString("lastOperateDate")); + lastOperateTime = Util.null2String(recordSet.getString("lastOperateTime")); + currentstatus = Util.getIntValue(recordSet.getString("currentstatus"), -1); + } else { + //流程被删除时,强制删除消息 + RequestOperationMsgManager romm = new RequestOperationMsgManager(); + List requestMsgEntity = romm.deleteMsgByUserId(Arrays.asList(String.valueOf(requestid)), String.valueOf(userid)); + new MsgPushUtil().pushMsg(requestMsgEntity); + + resultDatas.put("sendPage", weaver.general.GCONST.getContextPath() + "/notice/Deleted.jsp?showtype=wf"); + resultDatas.put("verifyRight", false); + resultDatas.put("requestIsDelete", true); + return apidatas; + } + + if (creater == userid && creatertype == usertype) { // 创建者本人有查看权限 + canview = true; + } + + String isfromreport = Util.null2String(request.getParameter("isfromreport")); + String isfromflowreport = Util.null2String(request.getParameter("isfromflowreport")); + String reportid = Util.null2String(request.getParameter("reportid")); + String isintervenor = Util.null2String(request.getParameter("isintervenor")); + String _ec_ismobile = Util.null2String(request.getParameter("_ec_ismobile")); + int urger = Util.getIntValue(request.getParameter("urger"), 0); + int ismonitor = Util.getIntValue(request.getParameter("ismonitor"), 0); + int iscowork = Util.getIntValue(request.getParameter("iscowork"), 0); + int coworkid = Util.getIntValue(request.getParameter("coworkid"), 0); + int intervenorright = 0; + String iswfshare = "0"; + + RequestAuthenticationService authService = new RequestAuthenticationService(); + authService.setUser(user); + //权限验证 + if (authService.verify(request, requestid)) { + canview = true; + Map authInfo = authService.getAuthInfo(); + + int agentType = Util.getIntValue(Util.null2String(authInfo.get("agentType"))); + int agentorByAgentId = Util.getIntValue(Util.null2String(authInfo.get("agentorByAgentId"))); + submitParams.put("agentType", agentType); + submitParams.put("agentorByAgentId", agentorByAgentId); + resultDatas.put("agentType", agentType); + resultDatas.put("agentorByAgentId", agentorByAgentId); + if (agentType == 1) {//如果流程被代理出去,被代理人也要能办理 + RecordSet recordSetInner = new RecordSet(); + String sql = AgentManager.getAgentorSql(agentorByAgentId, user.getUID(), requestid); + recordSetInner.executeQuery(sql); + if (recordSetInner.next()) { + String tempIsremark = recordSetInner.getString("isremark"); + String tempNodeType = Util.null2String(authInfo.get("nodetype")); + authInfo.put("isremarkForRM", tempIsremark); + if (tempIsremark.equals("1") || tempIsremark.equals("5") || tempIsremark.equals("7") || tempIsremark.equals("9") || (tempIsremark.equals("0") && !tempNodeType.equals("3")) || tempIsremark.equals("11")) { + authInfo.put("istoManagePage", 1); + } + } + } + + RequestAuthenticationEnum authEnum = (RequestAuthenticationEnum) authInfo.get(RequestAuthenticationConstant.KEY_AUTHORITYTYPE); + //rs.writeLog("========= = = == = = RequestAuthenticationEnum.SELF = "+RequestAuthenticationEnum.SELF); + //rs.writeLog("========= = = == = = authEnum = "+authEnum); + if (authEnum.equals(RequestAuthenticationEnum.SELF)) { + resultDatas.put("isSelfAuth", 1); + istoManagePage = Util.getIntValue(Util.null2String(authInfo.get("istoManagePage")), 0) > 0; + nodeid = Util.getIntValue(Util.null2String(authInfo.get("nodeid")), 0); + nodetype = Util.null2String(authInfo.get("nodetype")); + wfcurrrid = Util.getIntValue(Util.null2String(authInfo.get("wfcurrrid")), 0); + preisremark = Util.getIntValue(Util.null2String(authInfo.get("preisremark")), 0); + isremarkForRM = Util.null2String(authInfo.get("isremarkForRM")); + groupdetailid = Util.getIntValue(Util.null2String(authInfo.get("groupdetailid")), 0); + takisremark = Util.getIntValue(Util.null2String(authInfo.get("takisremark")), 0); + /*if(isremarkForRM.equals("8")){----跟需求沟通,这个特殊处理先去掉,哪个节点抄送过去的,就要看到哪个节点的表单 + nodeid = currentnodeid; + nodetype = currentnodetype; + }*/ + if (("2".equals(new WorkflowAllComInfo().getIsValid(this.workflowid + ""))) && !"true".equals(Util.null2String(request.getParameter("belongTest")))) { + if (deleted != 1) { + resultDatas.put("sendPage", weaver.general.GCONST.getContextPath() + "/notice/noRight.jsp"); + resultDatas.put("verifyRight", false); + resultDatas.put("isTest", true); + return apidatas; + } + } + } else { + istoManagePage = false; + nodeid = currentnodeid; + nodetype = currentnodetype; + } + + + try { + if ("0".equals(Util.null2String(Util_TableMap.getObjVal("ConformCheck_" + requestid + "_" + nodeid + "_" + userid)))) { + lastOperationResult = (RequestOperationResultBean) Util_TableMap.getObjVal("ConformCheck_" + requestid + "_" + nodeid); + promptInfo = lastOperationResult.getMessageInfo(); + promptInfos.clear(); + promptInfos.add(promptInfo); + Util_TableMap.setObjVal("ConformCheck_" + requestid + "_" + nodeid + "_" + userid, "1"); + } else if (Util_TableMap.getObjVal("ConformCheck_" + requestid + "_" + nodeid) != null && "0".equals(isremarkForRM)) { + if (Util_TableMap.getObjVal("ConformCheck_" + requestid + "_" + nodeid + "_" + userid) == null) { + rs.executeQuery("select 1 from workflow_currentoperator where nodeid = ? and userid = ? and requestid = ? and (isprocessed <> '' or isprocessed is not null)", nodeid, userid, requestid); + if (rs.next()) { + lastOperationResult = (RequestOperationResultBean) Util_TableMap.getObjVal("ConformCheck_" + requestid + "_" + nodeid); + promptInfo = lastOperationResult.getMessageInfo(); + promptInfos.clear(); + promptInfos.add(promptInfo); + Util_TableMap.setObjVal("ConformCheck_" + requestid + "_" + nodeid + "_" + userid, "1"); + } + } + } + } catch (Exception e) { + } + + if (authEnum.equals(RequestAuthenticationEnum.INTERVENOR) || authEnum.equals(RequestAuthenticationEnum.MONITOR)) { + isSignInput = "1"; + //监控人是否有干预权限 + if (authEnum.equals(RequestAuthenticationEnum.INTERVENOR)) { + if ("true".equals(_ec_ismobile)) { + wfmonitor = true; + attrSignatureUtil.setAttribute("ismonitor", "" + ismonitor); + attrSignatureUtil.setAttribute("wfmonitor", wfmonitor + ""); + } + intervenorright = Util.getIntValue(Util.null2String(authInfo.get("intervenorright")), 0); + attrSignatureUtil.setAttribute("isintervenor", "" + isintervenor); + + } + if (authEnum.equals(RequestAuthenticationEnum.MONITOR)) { + wfmonitor = true; + attrSignatureUtil.setAttribute("ismonitor", "" + ismonitor); + attrSignatureUtil.setAttribute("wfmonitor", wfmonitor + ""); + intervenorright = 0; + } + } + + //督办 + if (authEnum.equals(RequestAuthenticationEnum.URGER)) { + isurger = true; + attrSignatureUtil.setAttribute("urger", "" + urger); + attrSignatureUtil.setAttribute("isurger", isurger + ""); + intervenorright = 0; + } + //相关流程、主子流程 + if (authEnum.equals(RequestAuthenticationEnum.RELATE) || authEnum.equals(RequestAuthenticationEnum.MAINCHILD)) { + desrequestid = Util.getIntValue(Util.null2String(authInfo.get("desrequestid")), 0); + attrSignatureUtil.setAttribute("isrequest", isrequest); + attrSignatureUtil.setAttribute("desrequestid", desrequestid + ""); + attrSignatureUtil.setAttribute("isfromTd", Util.null2String(authInfo.get("isfromTd"))); + } + //报表 + if (authEnum.equals(RequestAuthenticationEnum.REPORT)) { + attrSignatureUtil.setAttribute("isfromreport", isfromreport); + attrSignatureUtil.setAttribute("isfromflowreport", isfromflowreport); + attrSignatureUtil.setAttribute("reportid", reportid); + } + + //共享 + if (authEnum.equals(RequestAuthenticationEnum.WFSHARE)) { + iswfshare = Util.null2String(authInfo.get("iswfshare")); + attrSignatureUtil.setAttribute("iswfshare", "" + iswfshare); + } + + //流程分享 + if (authEnum.equals(RequestAuthenticationEnum.CHATSHARE)) { + attrSignatureUtil.setAttribute("isfromchatshare", request.getParameter("isfromchatshare")); + attrSignatureUtil.setAttribute("sharer", request.getParameter("sharer")); + attrSignatureUtil.setAttribute("sharegroupid", request.getParameter("sharegroupid")); + attrSignatureUtil.setAttribute("firstSharer", request.getParameter("firstSharer")); + } + + //计划任务 + if (authEnum.equals(RequestAuthenticationEnum.WORKTAST)) { + //TODO + } + //计划会议 + if (authEnum.equals(RequestAuthenticationEnum.PLANMEETING)) { + //TODO + } + //建模 + if (authEnum.equals(RequestAuthenticationEnum.MODE)) { + //TODO + attrSignatureUtil.setAttribute("formmodeflag", "1"); + } + + //相关交流 + if (authEnum.equals(RequestAuthenticationEnum.COMMUNICATION)) { + attrSignatureUtil.setAttribute("isFromCommunication", Util.null2String(authInfo.get("isFromCommunication"))); + } + + //协作 + if (authEnum.equals(RequestAuthenticationEnum.COWORK)) { + attrSignatureUtil.setAttribute("iscowork", Util.null2String(authInfo.get("iscowork"))); + attrSignatureUtil.setAttribute("coworkid", Util.null2String(authInfo.get("coworkid"))); + } + + String authStr = authService.getAuthString(); + String authSignatureStr = authService.getAuthSignatureString(); + resultDatas.put("authStr", authStr); + resultDatas.put("authSignatureStr", authSignatureStr); + submitParams.put("authStr", authStr); + submitParams.put("authSignatureStr", authSignatureStr); + attrSignatureUtil.setAttribute("canview", canview + ""); + attrSignatureUtil.setAttribute("preisremark", preisremark + ""); + attrSignatureUtil.setAttribute("wfcurrrid", wfcurrrid + ""); + attrSignatureUtil.setAttribute("groupdetailid", groupdetailid + ""); + attrSignatureUtil.setAttribute("intervenorright", "" + intervenorright); + attrSignatureUtil.setAttribute("requestid", "" + requestid); + } + + //打印校验modeid是否是当前操作者的,防止直接更改url中的modeid进行打印 + if (canview && isprint) { // 增加canview条件防止 通过modeid经行打印 + canview = new PrintInfoBiz().verify(request, user); + } + + boolean hasSecRight = true;//是否有对应的密级权限 + boolean isOpenSec = HrmClassifiedProtectionBiz.isOpenClassification(); + if (HrmClassifiedProtectionBiz.isOpenClassification()) { + Map otherParams = new HashMap<>(); + otherParams.put("ismonitor", ismonitor); + otherParams.put("isintervenor", isintervenor); + otherParams.put("isprint", isprint); + RequestSecLevelBiz secLevelBiz = new RequestSecLevelBiz(); + if (isOpenSec && !secLevelBiz.hasWfRight(requestid, user, otherParams)) { + hasSecRight = false; + } + if (secLevelBiz.existExceptionModifySecLevel(requestid + "")) { + System.err.println("请求:" + requestid + "存在密级被篡改"); + resultDatas.put("exceptionModifySecLevel", true); + resultDatas.put("verifyRight", false); + return apidatas; + } + } + + if (!canview || !hasSecRight) { + //无权 + RequestOperationMsgManager romm = new RequestOperationMsgManager(); + List requestMsgEntity = romm.deleteMsgByUserId(Arrays.asList(String.valueOf(requestid)), String.valueOf(userid)); + new MsgPushUtil().pushMsg(requestMsgEntity); + + attrSignatureUtil.setAttribute(userid + "_" + requestid + "currentusercanview", "true"); + resultDatas.put("sendPage", weaver.general.GCONST.getContextPath() + "/notice/noright.jsp?isovertime=" + isovertime); + resultDatas.put("verifyRight", false); + resultDatas.put("canview", canview); + resultDatas.put("hasSecRight", hasSecRight); + resultDatas.put("userid", userid); + resultDatas.put("usertype", usertype); + resultDatas.put("logintype", user.getLogintype()); + resultDatas.put("isSecNoRight", canview && !hasSecRight ? "1" : "0");//有权限但是密级不够,则弹出密级不够的提示 + return apidatas; + } + + resultDatas.put("iswfshare", iswfshare); + resultDatas.put("isurger", isurger); + resultDatas.put("wfmonitor", wfmonitor); + resultDatas.put("isrequest", isrequest); + resultDatas.put("desrequestid", desrequestid); + resultDatas.put("iscowork", iscowork); + resultDatas.put("coworkid", coworkid); + + resultDatas.put("creater", creater); + resultDatas.put("creatertype", creatertype); + resultDatas.put("isOpenTextTab", false); + + //权限添加时“所有人”可选项受控于组织机构应用分权 + boolean appDetachDisableAll = new ManageDetachComInfo().appDetachDisableAll(user); + resultDatas.put("appDetachDisableAll", appDetachDisableAll); + + String IsFromWFRemark = ""; + if (currentnodetype.equals("3")) { + IsFromWFRemark = "2"; + } else { + if ("1".equals(isremarkForRM) || "0".equals(isremarkForRM) || "7".equals(isremarkForRM) || "8".equals(isremarkForRM) || "9".equals(isremarkForRM)) { + IsFromWFRemark = "0"; + } else if ("2".equals(isremarkForRM)) { + IsFromWFRemark = "1"; + } + } + attrSignatureUtil.setAttribute("IsFromWFRemark", "" + IsFromWFRemark); + resultDatas.put("intervenorright", intervenorright); + + session.removeAttribute(userid + "_" + requestid + "currentusercanview"); + + // TD8715 获取工作流信息,是否显示流程图 + wfManager.setWfid(this.workflowid); + wfManager.getWfInfo(); + String isFree = Util.null2String(wfManager.getIsFree()); + //是否记录表单修改日志 + String isOpenModifyLog = Util.null2String(wfManager.getIsModifyLog()); + //是否可查看表单修改日志 + String isModifyLog = Util.null2String(wfManager.getIsShowModifyLog()); + formid = wfManager.getFormid(); + isbill = wfManager.getIsBill(); + helpdocid = wfManager.getHelpdocid(); + resultDatas.put("needconfirm", Util.null2String(wfManager.getIsaffirmance())); + resultDatas.put("isshared", Util.null2String(wfManager.getIsshared())); + if (HrmClassifiedProtectionBiz.isOpenClassification()) {//开启涉密,内部以上流程不能共享 + int defaultSecLevel = Util.getIntValue(new HrmClassifiedProtectionBiz().getDefaultResourceSecLevel()); + int secLevel = new RequestSecLevelBiz().getSecLevelByRequestId(requestid + ""); + if (secLevel < defaultSecLevel) { + resultDatas.put("isshared", 0); + } + } + resultDatas.put("isFree", isFree); + resultDatas.put("newdocpath", Util.null2String(wfManager.getNewdocpath())); + + if (isnewFreeLayout) { + DoSaveFreeExcelDesignBiz doSaveFreeExcelDesignBiz = new DoSaveFreeExcelDesignBiz(user); + doSaveFreeExcelDesignBiz.getFreeNodeFormConfig(Util.null2String(configId)); + formid = doSaveFreeExcelDesignBiz.getFormid(); + isbill = Util.null2String(doSaveFreeExcelDesignBiz.getIsbill()); + } + + int extendnodeid = nodeid; + boolean isViewNode = false; + FreeNodeEntity nodeEntity = FreeNodeBiz.getCurrentFreeNodeEntity(requestid, nodeid); + if (nodeEntity != null) { + extendnodeid = nodeEntity.getExtendnodeid(); + isViewNode = nodeEntity.getNodetype() == 4 && "0".equals(isremarkForRM); + resultDatas.put("freeNodeExtendNodeId", extendnodeid); + attrSignatureUtil.setAttribute("freeNodeExtendNodeId", Util.null2String(extendnodeid)); + } + //判断流程是否设置过自由节点,在加载流程图时进行校验是否走获取自由流程接口数据 + resultDatas.put("hasFreeNode", FreeNodeBiz.hasFreeNode(requestid)); + int isFormSignature = 0; + int isUseWebRevision_t = Util.getIntValue(new weaver.general.BaseBean().getPropValue("weaver_iWebRevision", "isUseWebRevision"), 0); + //添加selectnextflowpattern参数到params add by jym + recordSet.executeSql("select issignmustinput,ismode,showdes,printdes,toexcel,ishidearea,ishideinput,selectNextFlow,isFormSignature,selectnextflowpattern from workflow_flownode where workflowid=" + this.workflowid + " and nodeid=" + extendnodeid); + // 0:普通模式 1:模板模式 2:html模式 + String ismode = ""; + int showdes = 0; + int printdes = 0; + int toexcel = 0; + String isHideArea = "0"; + String isHideInput = "0"; + String selectNextFlow = "0"; + //流转设定 模式 add by jym + int selectNextFlowPattern = 0; + if (recordSet.next()) { + // 签字意见必填 + resultDatas.put("issignmustinput", Util.getIntValue(recordSet.getString("issignmustinput"), 0)); + ismode = Util.null2String(recordSet.getString("ismode")); + showdes = Util.getIntValue(Util.null2String(recordSet.getString("showdes")), 0); + printdes = Util.getIntValue(Util.null2String(recordSet.getString("printdes")), 0); + toexcel = Util.getIntValue(Util.null2String(recordSet.getString("toexcel")), 0); + isHideArea = Util.null2String(recordSet.getString("ishidearea"), "0"); + isHideInput = Util.null2String(recordSet.getString("ishideinput"), "0"); + selectNextFlow = Util.null2String(recordSet.getString("selectNextFlow"), "0"); + //add by jym + selectNextFlowPattern = Util.getIntValue(Util.null2String(recordSet.getString("selectnextflowpattern")), -1); + if (isUseWebRevision_t == 1 && recordSet.getInt("isFormSignature") == 1) { + isFormSignature = 1; + } + + } + if (isnewFreeLayout) { + ismode = "2"; + } + + resultDatas.put("toexcel", toexcel); + resultDatas.put("isHideArea", isHideArea); + resultDatas.put("isHideInput", isHideInput); + resultDatas.put("selectNextFlow", selectNextFlow); + boolean openNodeCheck = false; + if (nodeid < 0) { + recordSet.executeQuery("select allowModify from workflow_freenode where id = ?", nodeid); + if (recordSet.next()) { + String allowModify = recordSet.getString(1); + if ("1".equals(allowModify)) { + openNodeCheck = new NodeFieldCheckBiz().isOpenNodeFieldCheckInfo(this.workflowid, FreeNodeBiz.getExtendNodeId(requestid, nodeid)); + } + } + } else { + openNodeCheck = new NodeFieldCheckBiz().isOpenNodeFieldCheckInfo(this.workflowid, nodeid); + } + wfCoadjutantManager.getCoadjutantRights(groupdetailid); + if (openNodeCheck) { + rs.executeQuery("select 1 from workflow_currentoperator where (isremark='7' or preisremark='7') and groupdetailid=? and nodeid=? and requestid=? and userid=?", groupdetailid, nodeid, requestid, userid); + if (rs.next() && "0".equals(wfCoadjutantManager.getIsmodify()) && "2".equals(wfCoadjutantManager.getSigntype())) { + openNodeCheck = false; + } + } + resultDatas.put("openNodeCheck", openNodeCheck); + + + //add by jym + WFManager wfm = new WFManager(); + wfm.setWfid(this.workflowid); + try { + wfm.getWfInfo(); + } catch (Exception e) { + throw new ECException(this.getClass().getName() + "执行过程中异常", e); + } + //判断是否自由流程,如果是则为高级模式 + if ("1".equals(wfm.getIsFree())) { + selectNextFlowPattern = (Util.getIntValue(wfManager.getFreewftype(), -1) == 1) ? 0 : 1; + } + resultDatas.put("selectNextFlowPattern", selectNextFlowPattern + ""); + boolean isOrgBeforeCoadSubmit = false; + if (isremarkForRM.equals("0")) {// 协办人已经提交后,由于勾选"未查看一直停留在待办",所以主办人打开代办流程,直接就变成已办 + recordSet + .execute("select c1.id from workflow_currentoperator c1 where c1.requestid=" + + requestid + + " and c1.isremark='2' and c1.preisremark='7' " + + " and exists(select 1 from workflow_currentoperator c2 where c2.id=" + + wfcurrrid + + " and c1.receivedate=c2.receivedate and c1.receivetime=c2.receivetime and c1.nodeid=c2.nodeid and c1.groupdetailid=c2.groupdetailid ) and exists(select id from workflow_groupdetail g where g.id=c1.groupdetailid and g.signtype='0')"); + if (recordSet.next()) { + int c1id_t = Util.getIntValue(recordSet.getString("id")); + if (c1id_t > 0) { + isOrgBeforeCoadSubmit = true; + isremarkForRM = "2"; + istoManagePage = false; + } + } + } + + //attrSignatureUtil.setAttribute(userid + "_" + requestid + "f_weaver_belongto_userid", userid); + //attrSignatureUtil.setAttribute(userid + "_" + requestid + "f_weaver_belongto_usertype", usertype); + attrSignatureUtil.setAttribute("helpdocid", "" + helpdocid); + attrSignatureUtil.setAttribute("isModifyLog", "" + isModifyLog); + attrSignatureUtil.setAttribute("isOpenModifyLog", "" + isOpenModifyLog); + attrSignatureUtil.setAttribute("currentnodeid", "" + currentnodeid); + attrSignatureUtil.setAttribute("currentnodetype", currentnodetype); + //session.setAttribute(userid + "_" + requestid + "isaffirmance", isaffirmance); + //session.setAttribute(userid + "_" + requestid + "reEdit", reEdit + ""); + attrSignatureUtil.setAttribute("workflowname", workflowname); + request.setAttribute(userid + "_" + this.workflowid + "workflowname", workflowname); + attrSignatureUtil.setAttribute("currentstatus", "" + currentstatus); + + resultDatas.put("workflowname", workflowname); + resultDatas.put("currentnodeid", currentnodeid); + resultDatas.put("currentNodeAttribute", new WorkflowNodeComInfo().getNodeattribute(currentnodeid + "")); + resultDatas.put("currentnodetype", currentnodetype); + resultDatas.put("nodetype", currentnodetype); + + // 判断是否有流程创建文档,并且在该节点是有正文字段 + // 判断是否有流程创建文档,并且在该节点是有正文字段 + OfficalConditionInfo docConditionInfo = new OfficalConditionInfo(); + docConditionInfo.setWorkflowId(this.workflowid); + docConditionInfo.setNodeId(nodeid); + OfficalResultInfo resultInfo = WorkflowCreateDocPublicUtil.getWorkflowCreateDocData(docConditionInfo); + + resultDatas.put("isWorkflowDoc", resultInfo.isWorkflowDoc()); + resultDatas.put("flowDocFieldId", resultInfo.getFlowDocFieldId()); + submitParams.put("isWorkflowDoc", resultInfo.isWorkflowDoc()); + + // fromoperation=1表示对流程做过操作,当做提交,退回操作时返回到流程图页面。 + if (fromoperation.equals("1") && (src.equals("submit") || src.equals("reject"))) { + // TODO JHY + } + + wfForwardManager.init(); + wfForwardManager.setWorkflowid(this.workflowid); + wfForwardManager.setNodeid(extendnodeid); + wfForwardManager.setIsremark(isremarkForRM); + wfForwardManager.setTakIsremark(takisremark + ""); + wfForwardManager.setRequestid(requestid); + wfForwardManager.setBeForwardid(wfcurrrid); + wfForwardManager.getWFNodeInfo(); + String IsPendingForward = wfForwardManager.getIsPendingForward(); + String IsTakingOpinions = wfForwardManager.getIsTakingOpinions(); + String IsHandleForward = wfForwardManager.getIsHandleForward(); + String IsBeForward = wfForwardManager.getIsBeForward(); + String IsSubmitedOpinion = wfForwardManager.getIsSubmitedOpinion(); + String IsSubmitForward = wfForwardManager.getIsSubmitForward(); + String IsAlreadyForward = wfForwardManager.getIsAlreadyForward(); + String IsWaitForwardOpinion = wfForwardManager.getIsWaitForwardOpinion(); + String IsBeForwardSubmit = wfForwardManager.getIsBeForwardSubmit(); + String IsBeForwardModify = wfForwardManager.getIsBeForwardModify(); + String IsBeForwardPending = wfForwardManager.getIsBeForwardPending(); + String IsBeForwardTodo = wfForwardManager.getIsBeForwardTodo(); + String IsBeForwardSubmitAlready = wfForwardManager.getIsBeForwardSubmitAlready(); + String IsBeForwardAlready = wfForwardManager.getIsBeForwardAlready(); + String IsBeForwardSubmitNotaries = wfForwardManager.getIsBeForwardSubmitNotaries(); + String IsFromWFRemark_T = wfForwardManager.getIsFromWFRemark(); + boolean IsFreeWorkflow = wfForwardManager.getIsFreeWorkflow(requestid, nodeid, Util.getIntValue(isremarkForRM)); + String IsFreeNode = wfForwardManager.getIsFreeNode(nodeid); + attrSignatureUtil.setAttribute("wfcurrrid", "" + wfcurrrid); + wfForwardManager.setCurrentNodeId(currentnodeid); + wfForwardManager.setNodeid(nodeid); + boolean IsCanSubmit = wfForwardManager.getCanSubmit(); + // boolean IsCanSubmit2=wfForwardManager.getCanSubmit(forwardflag); + boolean IsBeForwardCanSubmitOpinion = wfForwardManager.getBeForwardCanSubmitOpinion(); + boolean IsCanModify = wfForwardManager.getCanModify(); + wfCoadjutantManager.getCoadjutantRights(groupdetailid); + String coadsigntype = wfCoadjutantManager.getSigntype(); + String coadissubmitdesc = wfCoadjutantManager.getIssubmitdesc(); + String coadisforward = wfCoadjutantManager.getIsforward(); + String coadismodify = wfCoadjutantManager.getIsmodify(); + String coadispending = wfCoadjutantManager.getIspending(); + if (!IsCanModify && coadismodify.equals("1")) + IsCanModify = true; + if (nodeid != currentnodeid && coadismodify.equals("1") && isremarkForRM.equals("7")) + IsCanModify = false; + + if (IsCanModify) { + isSignInput = "1"; + } + boolean coadCanSubmit = wfCoadjutantManager.getCoadjutantCanSubmit(requestid, wfcurrrid, isremarkForRM, coadsigntype); + boolean isMainSubmitted = wfCoadjutantManager.isMainSubmitted(); + attrSignatureUtil.setAttribute("isMainSubmitted", "" + isMainSubmitted); + attrSignatureUtil.setAttribute("coadsigntype", coadsigntype); + attrSignatureUtil.setAttribute("coadissubmitdesc", coadissubmitdesc); + attrSignatureUtil.setAttribute("coadisforward", coadisforward); + attrSignatureUtil.setAttribute("coadismodify", coadismodify); + attrSignatureUtil.setAttribute("coadispending", coadispending); + attrSignatureUtil.setAttribute("coadCanSubmit", "" + coadCanSubmit); + attrSignatureUtil.setAttribute("IsPendingForward", IsPendingForward); + attrSignatureUtil.setAttribute("IsTakingOpinions", IsTakingOpinions); + attrSignatureUtil.setAttribute("IsHandleForward", IsHandleForward); + attrSignatureUtil.setAttribute("IsBeForward", IsBeForward); + attrSignatureUtil.setAttribute("IsBeForwardTodo", IsBeForwardTodo); + attrSignatureUtil.setAttribute("IsBeForwardSubmitAlready", IsBeForwardSubmitAlready); + attrSignatureUtil.setAttribute("IsBeForwardAlready", IsBeForwardAlready); + attrSignatureUtil.setAttribute("IsBeForwardSubmitNotaries", IsBeForwardSubmitNotaries); + attrSignatureUtil.setAttribute("IsFromWFRemark_T", IsFromWFRemark_T); + attrSignatureUtil.setAttribute("IsSubmitedOpinion", IsSubmitedOpinion); + attrSignatureUtil.setAttribute("IsSubmitForward", IsSubmitForward); + attrSignatureUtil.setAttribute("IsAlreadyForward", IsAlreadyForward); + attrSignatureUtil.setAttribute("IsWaitForwardOpinion", IsWaitForwardOpinion); + attrSignatureUtil.setAttribute("IsBeForwardSubmit", IsBeForwardSubmit); + attrSignatureUtil.setAttribute("IsBeForwardModify", IsBeForwardModify); + attrSignatureUtil.setAttribute("IsBeForwardPending", IsBeForwardPending); + attrSignatureUtil.setAttribute("IsCanSubmit", "" + IsCanSubmit); + attrSignatureUtil.setAttribute("IsBeForwardCanSubmitOpinion", "" + IsBeForwardCanSubmitOpinion); + attrSignatureUtil.setAttribute("IsCanModify", "" + IsCanModify); + attrSignatureUtil.setAttribute("IsFreeWorkflow", "" + IsFreeWorkflow); + attrSignatureUtil.setAttribute("IsFreeNode", "" + IsFreeNode); + attrSignatureUtil.setAttribute("forwardBack", wfForwardManager.getForwardBack()); + attrSignatureUtil.setAttribute("takeBack", wfForwardManager.getTakeBack()); + + //如果可以流转并且是简易模式 显示流转设置div + boolean isAllowNodeFreeFlow = FreeNodeBiz.isAllowNodeFreeFlow(Util.getIntValue(isremarkForRM), nodeid); + resultDatas.put("showFreeWfSimpleCom", (isAllowNodeFreeFlow && takisremark != -2 && selectNextFlowPattern == 0) ? 1 : 0); + // 判断可否转发 + int Forwardid = 0; + recordSet.executeSql("select isremark,isreminded,preisremark,id,groupdetailid,nodeid from workflow_currentoperator where requestid=" + requestid + " and userid=" + userid + " and usertype=" + + usertype + " and islasttimes = '1' order by isremark,id"); + while (recordSet.next()) { + Forwardid = Util.getIntValue(recordSet.getString("id")); + } + String wfSQL = "select * from workflow_Forward where requestid=" + requestid + " and BeForwardid=" + Forwardid; + recordSet.executeSql(wfSQL); + if (recordSet.next()) { + IsFromWFRemark_T = Util.null2String(recordSet.getString("IsFromWFRemark")); // 待办提交后被转发人是否可提交意见 + IsBeForwardTodo = Util.null2String(recordSet.getString("IsBeForwardTodo")); // 待办可转发 + IsBeForwardAlready = Util.null2String(recordSet.getString("IsBeForwardAlready")); // 已办被转发人可转发 + IsBeForward = Util.null2String(recordSet.getString("IsBeForward")); // 办结被转发人是否可转发 + } + boolean canForwd = false; + if (takisremark == -2 && "1".equals(IsAlreadyForward)) { // 征询意见人\ + canForwd = true; + } + if (takisremark == 2 && "1".equals(IsAlreadyForward)) { // 征询意见接收人\ + canForwd = true; + } + if (takisremark != 2) { + if (("0".equals(IsFromWFRemark_T) && "1".equals(IsBeForwardTodo)) || ("1".equals(IsFromWFRemark_T) && "1".equals(IsBeForwardAlready)) + || ("2".equals(IsFromWFRemark_T) && "1".equals(IsBeForward))) { + canForwd = true; + } + } + + attrSignatureUtil.setAttribute("canForwd", "" + canForwd); + boolean isPendingRemark = false; + if ("0".equals(isremarkForRM)) + isPendingRemark = true; + if (currentnodetype.equals("3") || isViewNode) + resultDatas.put("needReloadList", true); //归档流程刷新操作时间 + //如果提交到下一节点又抄送回上一节点操作人,有可能导致已经更新消息但是抄送消息还未创建,因此设置每次打开流程时如果是抄送不提交,则直接更新消息状态. + + new BaseBean().writeLog("isremarkForRM:"+isremarkForRM); + new BaseBean().writeLog("preisremark:"+preisremark); + + if ("8".equals(isremarkForRM) || preisremark == 8){ + int count = 0; + try{ + BaseBean bb = new BaseBean(); + String sql =" select t.userid,t.nodeid,t.requestid,t.preisremark\n" + + " from workflow_currentoperator t\n" + + " where t.isremark in (8) \n" + + " and t.preisremark in (8)\n" + + " and t.requestid in("+requestid +") and t.userid in("+userid+")" ; + + rs.executeQuery(sql); + bb.writeLog("LoadParamCmd-sql:"+sql); + if (rs.next()){ + count++; + } + bb.writeLog("LoadParamCmd-count:"+count); + }catch (Exception e){ + + } + + if(count > 0){ + RequestOperationMsgManager romm = new RequestOperationMsgManager(); + List requestMsgEntity = romm.getForwardReplyMsg(String.valueOf(requestid), String.valueOf(userid), isremarkForRM); + new MsgPushUtil().pushMsg(requestMsgEntity); + } + } + if (!isprint && (isremarkForRM.equals("8") + || (isremarkForRM.equals("1") && !IsCanSubmit ) + || ("7".equals(isremarkForRM) && !coadCanSubmit) + || isOrgBeforeCoadSubmit + || (isremarkForRM.equals("11") && !ChuanyueUtil.isSubmitSignByRequestId(this.workflowid, requestid, nodeid, userid, usertype, isremarkForRM)))) {//打印模板加载loadform,不做数据更新 + resultDatas.put("needReloadList", true); //不需提交等情况打开流程需刷新列表 + RequestOperationMsgManager romm = new RequestOperationMsgManager(); + List requestMsgEntity = romm.getForwardReplyMsg(String.valueOf(requestid), String.valueOf(userid), isremarkForRM); + if (isremarkForRM.equals("1") && wfForwardManager.hasChildCanSubmit(requestid + "", userid + "")) { + recordSet.executeProc("workflow_CurrentOperator_Copy", requestid + "" + flag + userid + flag + usertype + ""); + new MsgPushUtil().pushMsg(requestMsgEntity); + } else if (isremarkForRM.equals("8") || ("7".equals(isremarkForRM) && !coadCanSubmit) || isOrgBeforeCoadSubmit) { + // recordSet.executeProc("workflow_CurrentOperator_Copy", requestid + "" + flag + userid + flag + usertype + ""); + wcCopy(requestid, userid, usertype); + //抄送不需提交消息 +// if ("8".equals(isremarkForRM)) new MsgPushUtil().pushMsg(requestMsgEntity); + } else if (isremarkForRM.equals("11")) { + new MsgPushUtil().pushMsg(requestMsgEntity); + ChuanyueUtil.executeProc4Chuanyue(this.workflowid, requestid, nodeid, userid, usertype); + } + if (currentnodetype.equals("3")) { + recordSet.executeSql("update workflow_currentoperator set iscomplete=1 where requestid=" + requestid + " and userid=" + userid + " and usertype=" + usertype); + } + isPendingRemark = true; + if (currentnodetype.equals("3")) { + recordSet.executeSql("select isremark from workflow_currentoperator where requestid=" + requestid + " and nodeid=" + nodeid + " and userid=" + userid + " and usertype=" + usertype); + if (recordSet.next()) { + isremarkForRM = Util.null2String(recordSet.getString("isremark")); + } else { + isremarkForRM = "2"; + } + } else { + isremarkForRM = "2"; + } + //attrSignatureUtil.setAttribute(userid + "_" + requestid + "isremarkForRM", isremarkForRM + ""); + istoManagePage = false; + } + + if (ismonitor == 1 || "1".equals(isintervenor)) resultDatas.put("needReloadList", false); + + //钉钉、企业微信pc客户端以默认浏览器打开流程,提交时保存客户端和浏览器交互数据 + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + submitParams.put("openByDefaultBrowser", "1".equals(iscreate) ? "0" : openByDefaultBrowser); + if ("1".equals(openByDefaultBrowser) && "true".equals(Util.null2String(resultDatas.get("needReloadList")))) { + RequestListBiz.putRecord(user, requestid + "");//状态改变,通知钉钉回刷 + } + //钉钉、企业微信pc客户端以默认浏览器打开流程,提交时保存客户端和浏览器交互数据 + + attrSignatureUtil.setAttribute("isremarkForRM", isremarkForRM + ""); + attrSignatureUtil.setAttribute("takisremark", takisremark + ""); + attrSignatureUtil.setAttribute("isPendingRemark", "" + isPendingRemark); + billid = this.calculateBillid(this.formid, Util.getIntValue(this.isbill), this.requestid); + if (isbill.equals("1") && formid == 207) {// 计划任务审批单单独处理 + // 特殊处理,直接跳转到计划任务界面,进行审批操作 + int approverequest = Util.getIntValue(request.getParameter("requestid"), 0); + int wt_requestid = 0; + rs.execute("select * from worktask_requestbase where approverequest=" + approverequest); + if (rs.next()) { + wt_requestid = Util.getIntValue(rs.getString("requestid"), 0); + } + resultDatas.put("sendPage", weaver.general.GCONST.getContextPath() + "/worktask/request/ViewWorktask.jsp?requestid=" + wt_requestid + "&f_weaver_belongto_userid=" + userid + "&f_weaver_belongto_usertype=" + usertype); + resultDatas.put("verifyRight", false); + return apidatas; + } + + + attrSignatureUtil.setAttribute("requestname", requestname); + attrSignatureUtil.setAttribute("workflowid", "" + this.workflowid); + attrSignatureUtil.setAttribute("nodeid", "" + nodeid); + attrSignatureUtil.setAttribute("preisremark", "" + preisremark); + if (((isremarkForRM.equals("0") || isremarkForRM.equals("1")) && !IsCanSubmit) || (isremarkForRM.equals("7") && !coadCanSubmit)) { + istoManagePage = false; + } + attrSignatureUtil.setAttribute("formid", "" + formid); + attrSignatureUtil.setAttribute("billid", "" + billid); + attrSignatureUtil.setAttribute("isbill", isbill); + attrSignatureUtil.setAttribute("nodetype", nodetype); + attrSignatureUtil.setAttribute("creater", "" + creater); + attrSignatureUtil.setAttribute("creatertype", "" + creatertype); + attrSignatureUtil.setAttribute("requestlevel", requestlevel); + + + //实时计算自定义标题 + RequestBaseUtil rbu = new RequestBaseUtil(); + requestnamenew = rbu.formatRequestname(requestname, this.workflowid + "", requestid + "", Util.getIntValue(isbill + ""), formid, user.getLanguage()); + requestnamenew = new WfListCusTitleUtil().getNewRequestName(this.workflowid, requestnamenew); + + resultDatas.put("requestname", requestname); + resultDatas.put("requestnamenew", requestnamenew); + resultDatas.put("helpdocid", helpdocid); + resultDatas.put("workflowid", this.workflowid); + resultDatas.put("nodeid", nodeid); + resultDatas.put("nodetype", nodetype); + resultDatas.put("formid", formid); + resultDatas.put("isbill", isbill); + resultDatas.put("isprint", isprint ? "1" : "0"); + resultDatas.put("isremark", isremarkForRM); + resultDatas.putAll(appendLayoutInfo(ismode, showdes, printdes, extendnodeid)); + + //资产自定义流程类型 + String cptwftype = new CptWfUtil().getAllCptWftype("" + this.workflowid); + boolean isCptwf = false; + boolean ismodeCptwf = false; + if (!"".equals(cptwftype)) { + isCptwf = "fetch".equalsIgnoreCase(cptwftype) + || "move".equalsIgnoreCase(cptwftype) + || "lend".equalsIgnoreCase(cptwftype) + || "discard".equalsIgnoreCase(cptwftype) + || "back".equalsIgnoreCase(cptwftype) + || "loss".equalsIgnoreCase(cptwftype) + || "mend".equalsIgnoreCase(cptwftype) + || "mode_fetch".equalsIgnoreCase(cptwftype) + || "mode_move".equalsIgnoreCase(cptwftype) + || "mode_lend".equalsIgnoreCase(cptwftype) + || "mode_discard".equalsIgnoreCase(cptwftype) + || "mode_back".equalsIgnoreCase(cptwftype) + || "mode_loss".equalsIgnoreCase(cptwftype) + || "mode_mend".equalsIgnoreCase(cptwftype); + ismodeCptwf = cptwftype.startsWith("mode_"); + } + + resultDatas.put("isCptwf", isCptwf); + resultDatas.put("ismodeCptwf", ismodeCptwf); + // writeLog("---------912-----time:" + (System.currentTimeMillis() - + // start)); + // start = System.currentTimeMillis(); + + String titlename = SystemEnv.getHtmlLabelName(18015, user.getLanguage()) + ":" + SystemEnv.getHtmlLabelName(553, user.getLanguage()) + " - " + Util.toScreen(workflowname, user.getLanguage()) + + " - " + Util.toScreen(status,user.getLanguage()) + " " + "" + requestmark + ""; + + /*if(requestid>0 && !wfmonitor){ + User loginUser = (User) session.getAttribute("weaver_user@bean"); + String attentionTag = new RequestAttentionBiz().getAttentionTag2(requestid,loginUser,user); + titlename += attentionTag; + }*/ + + resultDatas.put("titlename", titlename); + + resultDatas.put("btnLabelName", getTabName()); + + apidatas.put("submitParams", submitParams); + + resultDatas.put("requestid", requestid); + resultDatas.put("takisremark", takisremark); + + // 生成隐藏域信息 + submitParams.put("workflowid", this.workflowid); + submitParams.put("workflowtype", workflowtype); + submitParams.put("nodeid", nodeid); + submitParams.put("nodetype", nodetype); + submitParams.put("formid", formid); + submitParams.put("isbill", isbill); + submitParams.put("billid", billid); + submitParams.put("iscreate", "0"); + submitParams.put("needcheck", ""); + submitParams.put("inputcheck", ""); + submitParams.put("src", ""); + submitParams.put("topage", ""); + submitParams.put("uploadType", ""); + submitParams.put("selectfieldvalue", ""); + submitParams.put("isMultiDoc", ""); + submitParams.put("needoutprint", ""); + submitParams.put("htmlfieldids", ""); + submitParams.put("annexmaxUploadImageSize", ""); + submitParams.put("isremark", isremarkForRM); + submitParams.put("takisremark", takisremark); + submitParams.put("currentdate", currentdate); + submitParams.put("currenttime", currenttime); + submitParams.put("creater", creater); + submitParams.put("creatertype", creatertype); + submitParams.put("workflowRequestLogId", ""); + submitParams.put("RejectNodes", ""); + submitParams.put("RejectToNodeid", ""); + submitParams.put("RejectToType", ""); + submitParams.put("SubmitToNodeid", ""); + submitParams.put("remarkLocation", ""); + submitParams.put("isdialog", "1"); + submitParams.put("isovertime", ""); + submitParams.put("needwfback", ""); + submitParams.put("lastOperator", lastOperator); + submitParams.put("lastOperateDate", lastOperateDate); + submitParams.put("lastOperateTime", lastOperateTime); + submitParams.put("needcheckLock", "false"); + // JS事件需要隐藏域 + submitParams.put("isCptwf", isCptwf); + submitParams.put("isSubmitDirectNode", ""); + submitParams.put("lastnodeid", ""); // 值在右键按钮里面计算 + submitParams.put("isSignMustInput", ""); + submitParams.put("isFormSignature", isFormSignature); + submitParams.put("fromFlowDoc", ""); + submitParams.put("temphasUseTempletSucceed", ""); + submitParams.put("createdoc", ""); + submitParams.put("edesign_layout", ""); + + // 默认动态加载签字意见 + boolean signListType = false; + recordSet.executeSql("select signlisttype from workflow_RequestUserDefault where userId = " + user.getUID()); + if (recordSet.next()) { + signListType = "0".equals(recordSet.getString("signlisttype")); + } + resultDatas.put("signListType", signListType); + + if (istoManagePage && !isprint && !wfmonitor && isonlyview != 1 && !"1".equals(isworkflowhtmldoc) && !isViewNode) { + int isremark = Util.getIntValue(isremarkForRM, -1);//取权限中计算好的isremark luosy 2019/3/7 + isSignInput = "1"; +// String topage = URLEncoder.encode(Util.null2String(request.getParameter("topage"))); // 返回的页面 + String docfileid = Util.null2String(request.getParameter("docfileid")); // 新建文档的工作流字段 + String newdocid = Util.null2String(request.getParameter("docid")); // 新建的文档 + String uselessFlag = Util.null2String(request.getParameter("uselessFlag")); + // 加入下一节点的操作人与当前节点的操作人是同一人,需要重新判断是否跳转到正文tab页 + if ("submit".equals(src)) { + uselessFlag = ""; + } + + attrSignatureUtil.setAttribute("status", status); + attrSignatureUtil.setAttribute("requestmark", requestmark); + attrSignatureUtil.setAttribute("deleted", "" + deleted); + attrSignatureUtil.setAttribute("workflowtype", workflowtype); + attrSignatureUtil.setAttribute("helpdocid", "" + helpdocid); + attrSignatureUtil.setAttribute("newdocid", newdocid); + attrSignatureUtil.setAttribute("lastOperator", "" + lastOperator); + attrSignatureUtil.setAttribute("lastOperateDate", lastOperateDate); + attrSignatureUtil.setAttribute("lastOperateTime", lastOperateTime); + + int isviewonly = 0; + if (isremark != 0 || "3".equals(nodetype) || isprint) { + isviewonly = 1; + } + + //E9自由是否允许编辑表单 + if (nodeEntity != null) { + //待办 或意见征询 + if (nodeEntity.isAllowModify() && isremark == 0 || isnewFreeLayout) { + isviewonly = 0; + } else { + isviewonly = 1; + } + } + + if (IsCanModify) { + isviewonly = 0; + } + + //判断当前节点是否为自由节点且可编辑表单 + if ("1".equals(isFree)) { + recordSet.executeSql("select istableedit from workflow_freeright where nodeid = " + nodeid); + if (recordSet.next()) { + int istableedit = Util.getIntValue(recordSet.getString("istableedit"), 0); + if (istableedit == 0) { + isviewonly = 1; + } + } + } + + //计算顶部流程编辑锁定信息(不能覆盖错误提示信息)(编辑锁定屏蔽) + /*String prompttype = Util.null2String(promptInfo.get("prompttype")); + if(!"errormsg".equals(prompttype)){ + LockUtil lockUtil = new LockUtil(); + boolean needcheckLock = lockUtil.isNeedCheckLock(requestid,workflowid,nodeid,Util.getIntValue(isremarkForRM,0),takisremark,userid); + if(needcheckLock){ + String timestamp = Util.null2String(request.getParameter("timestamp")); + Map lockPromptInfo = lockUtil.generateLockPromptInfo(requestid, nodeid, timestamp, user); + if((Boolean)lockPromptInfo.get("haveLocked")) + isviewonly = 1; + submitParams.put("timestamp", lockPromptInfo.get("timestamp")); + if(!"confirminfo".equals(prompttype)) //不覆盖提交确认信息 + promptInfo.putAll(lockPromptInfo); + } + }*/ + + //流程打开显示退回信息 + Map rejectPromptInfo = RequestFormBiz.getRejectPromptInfo(requestid, nodeid, user); + if (promptInfo.isEmpty() && rejectPromptInfo != null && !rejectPromptInfo.isEmpty()) { + promptInfo = rejectPromptInfo; + promptInfo.put("prompttype", PromptType.REJECTINFO.getType()); + promptInfos.add(promptInfo); + } + + //流程打开显示代理信息 + int agentType = Util.getIntValue(Util.null2String(submitParams.get("agentType"))); + int agentorByAgentId = Util.getIntValue(Util.null2String(submitParams.get("agentorByAgentId"))); + Map agentPromptInfo = RequestFormBiz.getAgentPromptInfo(agentType, agentorByAgentId, user); + if (agentPromptInfo != null && !agentPromptInfo.isEmpty()) { + Map otherPromptInfo = new HashMap<>(); + otherPromptInfo.putAll(promptInfo); + promptInfo = agentPromptInfo; + promptInfo.put("otherPromptInfo", otherPromptInfo); + promptInfo.put("prompttype", PromptType.AGENTINFO.getType()); + promptInfos.add(promptInfo); + } + + //如果有加签节点且是简易模式,提示确认加签设置 jym + + if (!"1".equals(isaffirmance) && isremark == 0 && SimpleModeFreeNodeBiz.hasAddSignNode(requestid, nodeid) && selectNextFlowPattern == 0) { + promptInfo = new HashMap<>(); + promptInfo.put("prompttype", "freeWorkflowSimpleInfo"); + promptInfos.add(promptInfo); + } + + //if ("1".equals(isaffirmance) && reEdit == 0) { + //isviewonly = 0; + //} + + if (isremark == 5) {//流程超时干预 + attrSignatureUtil.setAttribute("intervenorright", "" + 2); + resultDatas.put("intervenorright", 2); + } + // 获得被代理人 + int beagenter = 0; + rs.executeSql("select agentorbyagentid,agenttype from workflow_currentoperator where usertype=0 and isremark='0' and requestid=" + requestid + " and userid=" + user.getUID() + " and nodeid=" + nodeid + " order by id desc"); + if (rs.next()) { + int tembeagenter = rs.getInt(1); + if (tembeagenter > 0) { + beagenter = tembeagenter; + } + } + resultDatas.put("isagent", beagenter > 0 ? 1 : 0); + resultDatas.put("beagenter", beagenter); + + + attrSignatureUtil.setAttribute("isagent", beagenter > 0 ? "1" : "0"); + attrSignatureUtil.setAttribute("beagenter", "" + beagenter); + + resultDatas.put("requestType", RequestType.MANAGE_REQ.getId()); + // resultDatas.put("isworkflowdoc", isworkflowdoc); + resultDatas.put("docfileid", docfileid); + resultDatas.put("isSignInput", isSignInput); + resultDatas.put("isviewonly", isviewonly); + + if (!FreeNodeBiz.isFreeFlow(this.workflowid)) { + resultDatas.put("isNeedFlowFreeNodeTips", 1 == selectNextFlowPattern && FreeNodeBiz.isNeedFlowFreeNodeTips(requestid, nodeid, extendnodeid)); + } + boolean canSubmitToRejectNode = FreeNodeBiz.canSubmitToRejectNode(requestid, nodeid, user); + resultDatas.put("canSubmitToRejectNode", canSubmitToRejectNode); + } else { + if ("8".equals(isremarkForRM)) { + WFPathUtil wfutil = new WFPathUtil(); + wfutil.getFixedThreadPool().execute(new RequestPreProcessing(this.workflowid, Util.getIntValue(isbill), formid, requestid, requestname, "", nodeid, 0, false, "", user, true)); + } + + resultDatas.put("requestType", RequestType.VIEW_REQ.getId()); + resultDatas.put("isviewonly", "1"); + resultDatas.put("isSignInput", isSignInput); + } + //设置流程二次验证的信息 + Map authInfo = new HashMap(); + apidatas.put("secondAuthInfo", authInfo); + + String isCAAuth = Util.null2String(request.getParameter("isCAAuth")); //CA数据保护时,此值为1 + + RequestSecondAuthService requestSecondAuthService = com.engine.common.util.ServiceUtil.getService(RequestSecondAuthServiceImpl.class, user); + if ("0".equals(isremarkForRM) && !"1".equals(iscreate) && !"1".equals(isCAAuth)) { + Map checkResult = requestSecondAuthService.checkProtectDatas(requestid, this.workflowid, formid, Util.getIntValue(isbill), nodeid); + String checkSuccess = Util.null2String(checkResult.get("success")); + if ("0".equals(checkSuccess)) { //说明数据验证失败 + String checkMsg = Util.null2String(checkResult.get("message")); + authInfo.putAll(SecondAuthUtil.getSecondAuthInfo(user, checkSuccess, checkMsg)); + } else if ("2".equals(checkSuccess)) { //数据被篡改 + String checkMsg = SystemEnv.getHtmlLabelName(501098, user.getLanguage()); //数据被篡改 + authInfo.putAll(SecondAuthUtil.getSecondAuthInfo(user, checkSuccess, checkMsg)); + } + } + //CA认证,加载CA认证的信息 + if ("1".equals(isCAAuth)) { + Map authParams = new HashMap(); + authParams.put("requestid", requestid); + authParams.put("workflowid", this.workflowid); + authParams.put("nodeid", nodeid); + Map secondAuthConfig = requestSecondAuthService.getSecondAuthConfig(authParams); + apidatas.put("secondAuthConfig", secondAuthConfig); + + //因为扫描二维码后就执行提交操作,没有执行verifyRemark方法,导致取不到签字意见, + // 因此将签字意见直接返回到submitParams中,如果直接扫码提交没有机会修改签字意见,肯定跟加载时的意见保持一致的。 + String myRemark = SecondAuthUtil.getMyRemark(requestid, user); + submitParams.put("remark", myRemark); + } + + Map operationSubmitParams = lastOperationResult.getSubmitParams(); + operationSubmitParams.remove("isremark"); + submitParams.putAll(operationSubmitParams); + submitParams.put(userid + "_" + requestid + "_request_submit_token", System.currentTimeMillis()); + + int requestType = Util.getIntValue(Util.null2String(resultDatas.get("requestType")), -1); + Map remindInfo = this.getRemindInfo(intervenorright, isaffirmance, Util.null2String(this.workflowid), Util.null2String(nodeid), requestType); + apidatas.put("remindInfo", remindInfo); + submitParams.put("remindTypes", Util.null2String(remindInfo.get("value"))); + apidatas.put("promptInfo", promptInfo); + apidatas.put("promptInfos", promptInfos); + + this.appendParamsBeforeReturn(resultDatas); + + RequestInfoEntity reqEntity = new RequestInfoEntity(); + reqEntity.setWorkflowId(this.workflowid); + reqEntity.setRequestId(String.valueOf(requestid)); + + WfWaterMarkEntity waterMarkEntity = WaterMarkBiz.getReqWaterMarkInfo(user, reqEntity, isprint); + if (waterMarkEntity != null) { + resultDatas.put("waterMarkInfo", waterMarkEntity); + } + + //是否开启相关交流 + int isOpenCommunication = Util.getIntValue(wfManager.getIsOpenCommunication(), 0); + //不是流程参与者,能查看签字意见才显示相关交流 + if (!isurger && isOpenCommunication == 1 && "".equals(isremarkForRM)) { + Map communicationRightParams = new HashMap<>(); + communicationRightParams.put("requestid", requestid); + communicationRightParams.put("workflowid", this.workflowid); + communicationRightParams.put(RequestConstant.SIGNATURE_ATTRIBUTES_STR, attrSignatureUtil.getAttributeStr()); + communicationRightParams.put(RequestConstant.SIGNATURE_SECRET_KEY, attrSignatureUtil.getAttributeSignture()); + isOpenCommunication = WorkflowCommunicationBiz.hasCommunicationRight(communicationRightParams, user) ? 1 : 0; + } + if (isOpenCommunication == 1) { + //是否有新的未读消息 + resultDatas.put("hasNewCommunication", WorkflowCommunicationBiz.hasNewCommunication(requestid, user.getUID())); + } + resultDatas.put("isOpenCommunication", isOpenCommunication); + + } catch (Exception e) { + e.printStackTrace(); + } + return apidatas; + } + + //直接由后端返回tab页标签翻译好的名称,防止前端翻译的延迟问题 + private Map getTabName() { + Map tabNameMap = new HashMap(); + tabNameMap.put("formTab",SystemEnv.getHtmlLabelName(34130, user.getLanguage())); + tabNameMap.put("picTab",SystemEnv.getHtmlLabelName(18912, user.getLanguage())); + tabNameMap.put("statusTab",SystemEnv.getHtmlLabelName(386192, user.getLanguage())); + tabNameMap.put("odocTab",SystemEnv.getHtmlLabelName(1265, user.getLanguage())); + tabNameMap.put("resourceTab",SystemEnv.getHtmlLabelName(386426, user.getLanguage())); + tabNameMap.put("shareTab",SystemEnv.getHtmlLabelName(386153, user.getLanguage())); + tabNameMap.put("communicationTab",SystemEnv.getHtmlLabelName(15153, user.getLanguage())); + return tabNameMap; + } + + private Map loadCreateCompetence(Map resultDatas) throws Exception { + Map apidatas = new HashMap(); + apidatas.put("params", resultDatas); + RecordSet rs = new RecordSet(); + // 获得工作流的基本信息 + this.workflowid = Util.getIntValue(WorkflowVersion.getActiveVersionWFID(Util.null2String(request.getParameter("workflowid"))), 0); + resultDatas.put("workflowid", workflowid); + + CptWfUtil cptwfutil = new CptWfUtil(); + // 资产自定义流程类型 + String cptwftype = cptwfutil.getAllCptWftype("" + workflowid); + boolean isCptwf = false; + boolean ismodeCptwf = false; + if (!"".equals(cptwftype)) { + isCptwf = "fetch".equalsIgnoreCase(cptwftype) || "move".equalsIgnoreCase(cptwftype) || "lend".equalsIgnoreCase(cptwftype) || "discard".equalsIgnoreCase(cptwftype) + || "back".equalsIgnoreCase(cptwftype) || "loss".equalsIgnoreCase(cptwftype) || "mend".equalsIgnoreCase(cptwftype) || "mode_fetch".equalsIgnoreCase(cptwftype) + || "mode_move".equalsIgnoreCase(cptwftype) || "mode_lend".equalsIgnoreCase(cptwftype) || "mode_discard".equalsIgnoreCase(cptwftype) || "mode_back".equalsIgnoreCase(cptwftype) + || "mode_loss".equalsIgnoreCase(cptwftype) || "mode_mend".equalsIgnoreCase(cptwftype); + ismodeCptwf = cptwftype.startsWith("mode_"); + } + resultDatas.put("ismodeCptwf", ismodeCptwf); + resultDatas.put("isCptwf", isCptwf); + + WorkflowComInfo wfComInfo = new WorkflowComInfo(); + String workflowname = wfComInfo.getWorkflowname(workflowid + ""); + workflowname = Util.processBody(workflowname, user.getLanguage() + ""); + String workflowtype = wfComInfo.getWorkflowtype(workflowid + ""); // 工作流种类 + + resultDatas.put("workflowname", workflowname); + resultDatas.put("workflowtype", workflowtype); + + int helpdocid = 0; + int messageType = 0; + int chatsType = 0;// 微信提醒(QC:98106) + int defaultName = 0; + String smsAlertsType = "0"; + String chatsAlertType = "0";// 微信提醒(QC:98106) + String docCategory = ""; + String isannexupload = ""; + String annexdocCategory = ""; + String needconfirm = ""; // 是否需要提交确认 + String newdocpath = ""; //限制文档字段新建目录 + String isFree = ""; + int freewftype = 2; + String isValid = ""; // 是否有效 + + int userid = user.getUID(); + String logintype = user.getLogintype(); + String username = ""; + if (logintype.equals("1")) { + ResourceComInfo resComInfo = new ResourceComInfo(); + username = Util.toScreen(resComInfo.getResourcename("" + userid), user.getLanguage()); + } + if (logintype.equals("2")) { + CustomerInfoComInfo cusComInfo = new CustomerInfoComInfo(); + username = Util.toScreen(cusComInfo.getCustomerInfoname("" + userid), user.getLanguage()); + } + resultDatas.put("username", username); + + int islockworkflow = 0; + + // 查询该工作流的表单id,是否是单据(0否,1是),帮助文档id + rs.executeProc("workflow_Workflowbase_SByID", workflowid + ""); + if (rs.next()) { + this.formid = Util.getIntValue(rs.getString("formid"), 0); + this.isbill = "" + Util.getIntValue(rs.getString("isbill"), 0); + //获取自由流程自定义表单 + if (isnewFreeLayout) { + DoSaveFreeExcelDesignBiz doSaveFreeExcelDesignBiz = new DoSaveFreeExcelDesignBiz(this.user); + doSaveFreeExcelDesignBiz.getFreeNodeFormConfig(Util.null2String(this.configId)); + this.formid = doSaveFreeExcelDesignBiz.getFormid(); + this.isbill = Util.null2String(doSaveFreeExcelDesignBiz.getIsbill()); + } + helpdocid = Util.getIntValue(rs.getString("helpdocid"), 0); + // modify by xhheng @20050318 for TD1689, + // 顺便将messageType、docCategory的获取统一至此 + messageType = rs.getInt("messageType"); + smsAlertsType = rs.getString("smsAlertsType"); + // 微信提醒START(QC:98106) + chatsType = rs.getInt("chatsType"); + chatsAlertType = rs.getString("chatsAlertType"); + // 微信提醒END(QC:98106) + defaultName = rs.getInt("defaultName"); + docCategory = rs.getString("docCategory"); + isannexupload = Util.null2String(rs.getString("isannexUpload")); + annexdocCategory = Util.null2String(rs.getString("annexdoccategory")); + needconfirm = Util.null2o(rs.getString("needAffirmance")); + newdocpath = Util.null2String(rs.getString("newdocpath")); + islockworkflow = Util.getIntValue(rs.getString("islockworkflow"), 0); + isFree = rs.getString("isFree"); + isValid = rs.getString("isvalid"); + freewftype = Util.getIntValue(rs.getString("freewftype"), 2); + } + + // 查询该工作流的当前节点id (即改工作流的创建节点 ) + + rs.executeProc("workflow_CreateNode_Select", workflowid + ""); + if (rs.next()) + nodeid = Util.getIntValue(rs.getString(1)); + + resultDatas.put("nodeid", nodeid); + resultDatas.put("formid", formid); + resultDatas.put("isbill", isbill); + resultDatas.put("billid", 0); + resultDatas.put("nodeid", nodeid); + resultDatas.put("helpdocid", helpdocid); + resultDatas.put("messageType", messageType); + resultDatas.put("smsAlertsType", smsAlertsType); + resultDatas.put("chatsType", chatsType); + resultDatas.put("chatsAlertType", chatsAlertType); + resultDatas.put("defaultName", defaultName); + resultDatas.put("docCategory", docCategory); + resultDatas.put("isannexupload", isannexupload); + resultDatas.put("annexdocCategory", annexdocCategory); + resultDatas.put("needconfirm", needconfirm); + resultDatas.put("newdocpath", newdocpath); + resultDatas.put("isFree", isFree); + + getSelectNextFlowParams(workflowid, nodeid, resultDatas);//获取指定下一节点流转信息 + + + // 检查用户是否有创建权限 + RequestCheckUser requestCheckUser = new RequestCheckUser(); + // 2021.11.03 修改agent验权逻辑,封装agentBiz相关方法 -zhhsh2021 + int isagent = Util.getIntValue(request.getParameter("isagent"), 0); + int beagenter = Util.getIntValue(request.getParameter("beagenter"), 0); + int veryid=userid; + if (isagent == 1 && beagenter != 0) { + if (AgentBiz.hasAgentCreatRight(userid,workflowid,beagenter)){ + veryid = beagenter; + } + } + requestCheckUser.setUserid(veryid); + requestCheckUser.setWorkflowid(workflowid); + requestCheckUser.setLogintype(logintype); + requestCheckUser.checkUser(); + boolean verifyRight = requestCheckUser.getHasright() == 1; + + if (islockworkflow == 1 && !"true".equals(Util.null2String(request.getParameter("belongTest")))) + verifyRight = false; //流程锁定并且不是测试状态 + if (("2".equals(isValid) || "0".equals(isValid)) && !"true".equals(Util.null2String(request.getParameter("belongTest")))) { + verifyRight = false;//当前流程版本是否是测试状态流程 + } + resultDatas.put("isagent", isagent); + resultDatas.put("beagenter", beagenter); + resultDatas.put("verifyRight", verifyRight); + boolean onlyVerifyRight = "true".equals(Util.null2String(request.getParameter("onlyVerifyRight"))); + if (!verifyRight || onlyVerifyRight) { + if (onlyVerifyRight && "true".equals(Util.null2String(request.getParameter("belongTest")))) + resultDatas.putAll(new TestWorkflowCheckBiz().judgeSupportSpaTest(workflowid)); + return apidatas; + } + attrSignatureUtil.setAttribute("isagent", "" + isagent); + attrSignatureUtil.setAttribute("beagenter", "" + beagenter); + attrSignatureUtil.setAttribute("configid", "" + configId); + + // 判断是否有流程创建文档,并且在该节点是有正文字段 + OfficalConditionInfo docConditionInfo = new OfficalConditionInfo(); + docConditionInfo.setWorkflowId(workflowid); + docConditionInfo.setNodeId(nodeid); + OfficalResultInfo resultInfo = WorkflowCreateDocPublicUtil.getWorkflowCreateDocData(docConditionInfo); + + resultDatas.put("isWorkflowDoc", resultInfo.isWorkflowDoc()); + resultDatas.put("flowDocFieldId", resultInfo.getFlowDocFieldId()); + submitParams.put("isWorkflowDoc", resultInfo.isWorkflowDoc()); + + //RequestDoc flowDoc = new RequestDoc(); + //boolean docFlag = flowDoc.haveDocFiled(workflowid, nodeid); + //String docFlagss = docFlag ? "1" : "0"; + //session.setAttribute("requestAdd" + user.getUID(), docFlagss); + //resultDatas.put("docFlagss", docFlagss); + + // 判断正文字段是否显示选择按钮 + //ArrayList newTextList = flowDoc.getDocFiled(workflowid); + //if (newTextList != null && newTextList.size() > 0) { + // String newTextNodes = "" + newTextList.get(5); + // String flowDocField = "" + newTextList.get(1); + // session.setAttribute("requestFlowDocField" + user.getUID(), flowDocField); + // session.setAttribute("requestAddNewNodes" + user.getUID(), newTextNodes); + //} + + // 对不同的模块来说,可以定义自己相关的内容,作为请求默认值,比如将 docid 赋值,作为该请求的默认文档 + // 默认的值可以赋多个,中间用逗号格开 + String prjid = Util.null2String(request.getParameter("prjid")); + String docid = Util.null2String(request.getParameter("docid")); + String crmid = Util.null2String(request.getParameter("crmid")); + String hrmid = Util.null2String(request.getParameter("hrmid")); + String reqid = Util.null2String(request.getParameter("reqid")); + if (hrmid.equals("") && logintype.equals("1")) + hrmid = "" + userid; + if (crmid.equals("") && logintype.equals("2")) + crmid = "" + userid; + + resultDatas.put("prjid", prjid); + resultDatas.put("docid", docid); + resultDatas.put("crmid", crmid); + resultDatas.put("hrmid", hrmid); + resultDatas.put("reqid", reqid); + + // 工作流建立完成后将返回的页面 + String topage = Util.null2String(request.getParameter("topage")); + if (isbill.equals("1")) { + session.setAttribute("topage_ForAllBill", topage); + } + + Map fieldMap = request.getParameterMap(); + Set keySet = fieldMap.keySet(); + Iterator it = keySet.iterator(); + String fieldUrl = ""; + while (it.hasNext()) { + String key = Util.null2String((String) it.next()); + if (key.startsWith("field")) { + String[] valueArr = (String[]) fieldMap.get(key); + for (int i = 0; i < valueArr.length; i++) { + String value = valueArr[i]; + fieldUrl += "&" + key + "=" + URLEncoder.encode(value); + } + } + } + if (!"".equals(fieldUrl)) { + fieldUrl = fieldUrl.substring(1, fieldUrl.length()); + fieldUrl = URLEncoder.encode(fieldUrl); + } + resultDatas.put("fieldUrl", fieldUrl); + + // 请求提交的时候需要检查必输的字段名,多个必输项用逗号格开,requestname为新建请求中第一行的请求说明,是每一个请求都必须有的 + // TopTitle.jsp 页面参数 + String titlename = SystemEnv.getHtmlLabelName(18015, user.getLanguage()) + ":" + SystemEnv.getHtmlLabelName(125, user.getLanguage()) + " - " + Util.toScreen(workflowname, user.getLanguage()) + + " - " + SystemEnv.getHtmlLabelName(125, user.getLanguage()); + + String requestid = "-1"; + String ismode = ""; + int showdes = 0, printdes = 0; + String isHideArea = "0"; + String isHideInput = "0"; + int selectNextFlowPattern = 0; + rs.executeSql("select ismode,showdes,ishidearea,ishideinput,selectnextflowpattern from workflow_flownode where workflowid=" + workflowid + " and nodeid=" + nodeid); + if (rs.next()) { + ismode = Util.null2String(rs.getString("ismode")); + if (isnewFreeLayout) { + ismode = "2"; + } + showdes = Util.getIntValue(Util.null2String(rs.getString("showdes")), 0); + printdes = Util.getIntValue(Util.null2String(rs.getString("printdes")), 0); + isHideArea = Util.null2String(rs.getString("ishidearea"), "0"); + isHideInput = Util.null2String(rs.getString("ishideinput"), "0"); + selectNextFlowPattern = Util.getIntValue(Util.null2String(rs.getString("selectnextflowpattern")), 0); + } + + if ("1".equals(isFree)) selectNextFlowPattern = (freewftype == 1) ? 0 : 1; + resultDatas.put("isHideArea", isHideArea); + resultDatas.put("isHideInput", isHideInput); + resultDatas.put("requestid", requestid); + resultDatas.put("titlename", titlename); + resultDatas.put("btnLabelName", getTabName()); + resultDatas.put("requestType", RequestType.CREATE_REQ.getId()); + resultDatas.put("isviewonly", "0"); + resultDatas.put("iscreate", "1"); + resultDatas.put("creater", userid); + resultDatas.put("creatertype", usertype); + resultDatas.put("nodetype", 0); + resultDatas.put("selectNextFlowPattern", selectNextFlowPattern + ""); + resultDatas.put("openNodeCheck", new NodeFieldCheckBiz().isOpenNodeFieldCheckInfo(workflowid, nodeid)); + + //权限添加时“所有人”可选项受控于组织机构应用分权 + boolean appDetachDisableAll = new ManageDetachComInfo().appDetachDisableAll(user); + resultDatas.put("appDetachDisableAll", appDetachDisableAll); + + //如果可以流转并且是简易模式 显示流转设置div + + boolean isAllowNodeFreeFlow = FreeNodeBiz.isAllowNodeFreeFlow(0, nodeid); + resultDatas.put("showFreeWfSimpleCom", (isAllowNodeFreeFlow && selectNextFlowPattern == 0) ? 1 : 0); + resultDatas.putAll(appendLayoutInfo(ismode, showdes, printdes, nodeid)); + resultDatas.put("isSelfAuth", 1); + + submitParams.put("workflowid", workflowid); + submitParams.put("workflowtype", workflowtype); + submitParams.put("nodeid", nodeid); + submitParams.put("nodetype", "0"); + submitParams.put("src", ""); + submitParams.put("iscreate", "1"); + submitParams.put("formid", formid); + submitParams.put("topage", ""); + submitParams.put("isbill", isbill); + submitParams.put("method", ""); + submitParams.put("isMultiDoc", ""); + submitParams.put("requestid", "-1"); + submitParams.put("rand", ""); + submitParams.put("needoutprint", ""); + submitParams.put("htmlfieldids", ""); + submitParams.put("needwfback", ""); +// submitParams.put("docFlags", docFlagss); + submitParams.put(userid + "_" + workflowid + "_addrequest_submit_token", System.currentTimeMillis()); + submitParams.put("lastloginuserid", user.getUID()); + Map remindInfo = this.getRemindInfo(0, "", Util.null2String(workflowid), Util.null2String(nodeid), RequestType.CREATE_REQ.getId()); + submitParams.put("remindTypes", Util.null2String(remindInfo.get("value"))); + apidatas.put("submitParams", submitParams); + this.appendParamsBeforeReturn(resultDatas); + apidatas.put("remindInfo", remindInfo); + + RequestInfoEntity reqEntity = new RequestInfoEntity(); + reqEntity.setWorkflowId(workflowid); + reqEntity.setRequestId("-1"); + WfWaterMarkEntity waterMarkEntity = WaterMarkBiz.getReqWaterMarkInfo(user, reqEntity, isprint); + if (waterMarkEntity != null) { + resultDatas.put("waterMarkInfo", waterMarkEntity); + } + return apidatas; + } + + private Map appendLayoutInfo(String ismodeStr, int showdes, int printdes, int nodeid) { + Map layout = new HashMap(); + int ismode = 0; + int modeid = -1; + int layouttype = Util.getIntValue(request.getParameter("layouttype"), 0); + int layoutversion = 2; + if (isprint) { //打印从request获取,模板已算好 + ismode = Util.getIntValue(request.getParameter("ismode"), 0); + modeid = Util.getIntValue(request.getParameter("modeid")); + layouttype = 1; + if (ismode == 2) { + layoutversion = new LayoutInfoBiz().getLayoutVersion(modeid); + layout.put("printLogListFlag", new PrintInfoBiz().getPrintLogListFlag(modeid, true)); + } else + layout.put("printLogListFlag", (new PrintInfoBiz().getDefaultPrintLogListFlag(nodeid)) == 0 ? 0 : 1);//模板模式不走这里 + } else { + ismode = Util.getIntValue(ismodeStr, 0); + boolean isMobileForm = "1".equals(request.getParameter("isMobileForm")); //移动端 + if (isMobileForm) { + int showLayoutSwitch = 0; //是否显示模板切换按钮 + String layoutAnalysisType = Util.null2String(request.getParameter("layoutAnalysisType")); //是否读取PC模板 + RecordSet rs = new RecordSet(); + rs.executeProc("SystemSet_Select", ""); //读后台配置 + rs.next(); + showLayoutSwitch = Util.getIntValue(rs.getString("mobilechangemode"), 0); + if (showLayoutSwitch == 1 && "".equals(layoutAnalysisType)) { //计算默认模板解析模式 + layoutAnalysisType = "1"; + int mobilemode = Util.getIntValue(rs.getString("mobilemode"), 0); + if (mobilemode == 1) { + int mobileapplyworkflow = Util.getIntValue(rs.getString("mobileapplyworkflow"), 0); + String mobileapplyworkflowids = Util.null2String(rs.getString("mobileapplyworkflowids")); + String versionsIds = "," + WorkflowVersion.getAllVersionStringByWFIDs(mobileapplyworkflowids) + ","; + String wfStr = "," + this.workflowid + ","; + if (mobileapplyworkflow == 0 || (mobileapplyworkflow == 1 && versionsIds.indexOf(wfStr) > -1) || (mobileapplyworkflow == 2 && versionsIds.indexOf(wfStr) == -1)) { + layoutAnalysisType = "2"; //默认使用PC解析模式 + } + } + } + layouttype = "2".equals(layoutAnalysisType) ? 0 : 2; + layout.put("showLayoutSwitch", showLayoutSwitch); + layout.put("layoutAnalysisType", layoutAnalysisType); + } + if (ismode == 2) { //html模式取活动模板、表单模板等 + weaver.workflow.exceldesign.HtmlLayoutOperate htmlLayoutOperate = new weaver.workflow.exceldesign.HtmlLayoutOperate(); + if (this.isnewFreeLayout) { + DoSaveFreeExcelDesignBiz doSaveFreeExcelDesignBiz = new DoSaveFreeExcelDesignBiz(user); + boolean isSimpleFreeFlow = FreeNodeBiz.judgeNodeSimpleFreeFlow(workflowid, this.nodeid); + if (isSimpleFreeFlow) { + modeid = doSaveFreeExcelDesignBiz.getLayoutIdByConfig(configId, nodeid); + } else { + modeid = doSaveFreeExcelDesignBiz.getLayoutIdByConfig(configId, this.nodeid); + } + } else { + modeid = htmlLayoutOperate.getActiveHtmlLayout(workflowid, nodeid, layouttype); + } + if (modeid > 0) { //为html模板 + layoutversion = isnewFreeLayout ? 2 : new LayoutInfoBiz().getLayoutVersion(modeid); + } else { //无html模板默认为普通模板 + ismode = 0; + } + } else { //取普通模式模板 + ismode = 0; + } + } + layout.put("ismode", ismode); + layout.put("modeid", modeid); + layout.put("layouttype", layouttype); + layout.put("layoutversion", layoutversion); + return layout; + } + + private int loadShowAiParams(RecordSet recordSet, String workflowid) { + String showAiSwitch = ""; + String workflowRange = ""; + String workflowIds = ""; + recordSet.executeQuery("select value from workflow_config where name = 'Intelligent_analysis_switch' and type='form'"); + if (recordSet.next()) { + showAiSwitch = recordSet.getString(1); + } + recordSet.executeQuery("select value from workflow_config where name = 'Intelligent_analysis_range' and type='form'"); + if (recordSet.next()) { + workflowRange = recordSet.getString(1); + } + recordSet.executeQuery("select value from workflow_config where name = 'Intelligent_analysis_workflow_path' and type='form'"); + if (recordSet.next()) { + workflowIds = recordSet.getString(1); + } + if ("1".equals(showAiSwitch)) { + String[] wfids = workflowIds.split(","); + switch (workflowRange) { + case "0": + return 1; + case "1": + return (Util.contains(wfids, workflowid)) ? 1 : 0; + case "2": + return (!Util.contains(wfids, workflowid)) ? 1 : 0; + default: + return 0; + } + } else { + return 0; + } + } + + + /** + * 由于新建与编辑走的不同方法,再return前调用此方法用于扩充(新建、编辑)都需要的params + */ + private void appendParamsBeforeReturn(Map resultDatas) { + RecordSet rs = new RecordSet(); + int workflowid = Util.getIntValue(resultDatas.get("workflowid") + "", 0); + int iscreate = Util.getIntValue(resultDatas.get("iscreate") + "", 0); + int formid = Util.getIntValue(resultDatas.get("formid") + "", 0); + int isbill = Util.getIntValue(resultDatas.get("isbill") + "", 0); + int nodeid = Util.getIntValue(resultDatas.get("nodeid") + "", 0); + boolean isMobileForm = "1".equals(request.getParameter("isMobileForm")); + boolean isFormMsg = "1".equals(request.getParameter("isFormMsg")); + + resultDatas.put("nodename", new WorkflowNodeComInfo().getNodename(nodeid + "")); + resultDatas.put("apiResultCacheKey", (new Date()).getTime()); + resultDatas.put("f_weaver_belongto_userid", f_weaver_belongto_userid); + resultDatas.put("f_weaver_belongto_usertype", f_weaver_belongto_usertype); + resultDatas.put("languageid", user.getLanguage()); + resultDatas.put("lastname", user.getLastname()); + resultDatas.put("useInvoiceCloud", weaver.fna.invoice.utils.InvoiceCloudUtil.isExistInvoiceCloudInterface(user)); + if (isMobileForm) { + DocCommonServiceImpl docService = new DocCommonServiceImpl(); + resultDatas.put("docViewUrl", docService.getMobileDocViewLink("${docid}")); + resultDatas.put("fileViewUrl", docService.getMobileFileViewLink("${fileid}")); + } else { + resultDatas.put("docViewUrl", ServiceUtil.docViewUrl); + resultDatas.put("fileViewUrl", ServiceUtil.fileViewUrl); + } + if (isFormMsg) { + if (isMobileForm) { + rs.executeQuery("select value from workflow_config where type= 'msgForm' and name ='mobile_msg_form' "); + } else { + rs.executeQuery("select value from workflow_config where type= 'msgForm' and name ='pc_msg_form' "); + } + rs.next(); + resultDatas.put("msgSubmitFormAction", Util.null2String(rs.getString(1))); + } + PortalCommonServiceImpl portalService = new PortalCommonServiceImpl(); + resultDatas.put("existSynergy", portalService.getPortalSynergyIsUse(iscreate, workflowid, requestid)); + if (isMobileForm) + resultDatas.put("mobileSupportViewFileType", new DocDetailUtil().getAttachViewFileType()); + //custompage自定义页面信息 + + + String oldcustompage = ""; + rs.executeQuery("select custompage from workflow_base where id=?", workflowid); + if (rs.next()) { + oldcustompage = Util.null2String(rs.getString("custompage")).trim(); + } + Map> custompage = new HashMap<>(); + List cssPage = new ArrayList(); + List jsPage = new ArrayList(); + List jspPage = new ArrayList(); + if (!"".equals(oldcustompage)) + jspPage.add(oldcustompage); + rs.executeQuery("select workflowid,url from workflow_custompageconfig where enable=1 and (workflowid=-999 or workflowid=" + workflowid + ") order by workflowid,orderid"); + while (rs.next()) { + String url = Util.null2String(rs.getString("url")); + if (Pattern.compile("\\.css", Pattern.CASE_INSENSITIVE).matcher(url).find()) { + cssPage.add(url); + } else if (Pattern.compile("\\.jsp", Pattern.CASE_INSENSITIVE).matcher(url).find()) { + jspPage.add(url); + } else if (Pattern.compile("\\.js", Pattern.CASE_INSENSITIVE).matcher(url).find()) { + jsPage.add(url); + } + } + custompage.put("cssPage", cssPage); + custompage.put("jsPage", jsPage); + custompage.put("jspPage", jspPage); + CustomPageRangeCache.appendPage(jspPage); + resultDatas.put("custompage", custompage); + //流程测试信息 + String wfTestStr = new TestWorkflowCheckBiz().encodeTestStr(request); + resultDatas.put("belongTest", !"".equals(wfTestStr)); + resultDatas.put("wfTestStr", wfTestStr); + //签名串属性存储 + resultDatas.put(RequestConstant.SIGNATURE_ATTRIBUTES_STR, attrSignatureUtil.getAttributeStr()); + resultDatas.put(RequestConstant.SIGNATURE_SECRET_KEY, attrSignatureUtil.getAttributeSignture()); + //单据信息 + if (isbill == 1) { + SystemBillManagerBiz billManager = new SystemBillManagerBiz(formid); + String billIncludePage = billManager.getIncludePagePath(); + CustomPageRangeCache.appendPage(billIncludePage); + resultDatas.put("billIncludePage", billIncludePage); + resultDatas.put("billIncludePage4mobile", billManager.getIncludePagePath4Mobile()); + } + if (nodeid > 0 || FreeNodeBiz.isFreeNode(nodeid)) + resultDatas.put("margin", RequestFormBiz.generateLayoutMargin(FreeNodeBiz.getExtendNodeId(nodeid))); + + //是否开启showAI智能分析 + resultDatas.put("showAI", loadShowAiParams(rs, String.valueOf(workflowid))); + resultDatas.put("wfFormFieldChangeCfg", getWorkflowFormFieldChangeCfg(nodeid)); + resultDatas.put("openDataVerify", getDataVerifyCfg()); + } + + /** + * 获取是否开启数据校验开关 + * + * @return + */ + private Object getDataVerifyCfg() { + String openDataVerify = "0"; + RecordSet rs = new RecordSet(); + String sql = "select value from workflow_config where name = 'form_open_dataverify' and type = 'form'"; + rs.executeQuery(sql); + while (rs.next()) { + openDataVerify = rs.getString(1); + } + return openDataVerify; + } + + /** + * 兼容异常情况下workflow_form表同一requestid多条记录问题 + * 改为直接从物理表计算billid,计算失败再从workflow_form表计算 + */ + private int calculateBillid(int formid, int isbill, int requestid) { + int billid = 0; + RecordSet rs = new RecordSet(); + if (isbill == 1) { + rs.executeQuery("select tablename from workflow_bill where id=?", formid); + if (rs.next()) { + String tablename = rs.getString("tablename"); + boolean flag = rs.executeQuery("select id from " + tablename + " where requestid=?", requestid); + if (flag && rs.getCounts() == 1 && rs.next()) { + billid = Util.getIntValue(rs.getString("id")); + } + } + if (billid <= 0) { + rs.executeQuery("select billformid,billid from workflow_form where requestid=?", requestid); + if (rs.next()) { + billid = Util.getIntValue(rs.getString("billid")); + //物理表查不到情况formid以workflow_form表为准 + int billformid = Util.getIntValue(rs.getString("billformid"), 0); + if (this.formid < 0 && billformid < 0 && this.formid != billformid) + this.formid = billformid; + } + } + } + return billid; + } + + protected void getSelectNextFlowParams(int workflowid, int nodeid, Map params) { + RecordSet rs = new RecordSet(); + String canChangeNextFlow = ""; + rs.executeQuery("select selectNextFlow from workflow_flownode where nodeid = ? and workflowid = ?", nodeid, workflowid); + if (rs.next()) { + canChangeNextFlow = rs.getString("selectNextFlow"); + } + params.put("selectNextFlow", "1".equals(canChangeNextFlow) ? "1" : "0"); + } + + /** + * 获取提醒类型设置信息 + * + * @param intervenorright 2:干预;其他 非干预 + * @param isaffirmance 流程确认 + * @param wfId 路径ID + * @param currentnodeid 当前节点ID + * @param requestType + * @return + */ + private Map getRemindInfo(int intervenorright, String isaffirmance, String wfId, String currentnodeid, int requestType) { + + Map results = new HashMap<>(); + List> options = new ArrayList<>(); + results.put("options", options); + results.put("isShow", false); + results.put("process", SystemEnv.getHtmlLabelName(533759, user.getLanguage())); + RecordSet rs = new RecordSet(); + rs.executeQuery("select 1 from workflow_base where id = ? and remindScope = '1' ", wfId); + if (rs.next()) { + //em...如果路径开启节点自定义提醒,统一返回一种提醒方式,最后在RequestRemindBiz中,根据节点上设置的提醒方式做提醒 + Map email = new HashMap<>(); + email.put("key", RemindTypeEnum.EMAIL.getCode()); + email.put("showname", SystemEnv.getHtmlLabelName(18845, user.getLanguage())); + options.add(email); + results.put("options", options); + results.put("value", RemindTypeEnum.EMAIL.getCode()); + results.put("isShow", false); + results.put("viewAttr", 2); + return results; + } + + rs.executeQuery("select 1 from workflow_currentoperator where requestid =? and islasttimes =1 and userid = ? and ((isremark =1 and takisremark = 2) or isremark =0) ", requestid, userid); + //流程审批、意见征询回复或者流程创建时,才显示提醒方式 + if ((requestType == RequestType.CREATE_REQ.getId()) || rs.next() || intervenorright == 2) { + String value = null; + WFManager wfManager = new WFManager(); + wfManager.setWfid(Util.getIntValue(wfId)); + try { + wfManager.getWfInfo(); + //1、没有开启提醒 + if (!RequestRemindBiz.isOpenRemind(wfManager)) return results; + //2、E8设置中的提醒方式 + int messageType = Util.getIntValue(wfManager.getMessageType(), -1); //短信 + int smsAlertsType = Util.getIntValue(wfManager.getSmsAlertsType(),0); + + String mailMessageType = wfManager.getMailMessageType(); //邮件 +// if (messageType >= 1) { +// Map sms = new HashMap<>(); +// sms.put("key", RemindTypeEnum.SMS.getCode()); +// sms.put("showname", SystemEnv.getHtmlLabelName(17586, user.getLanguage())); +// options.add(sms); +// results.put("options", options); +// results.put("value", RemindTypeEnum.SMS.getCode()); +// results.put("isShow", false); +// results.put("viewAttr", 2); +// return results; +// } else if ("1".equals(mailMessageType)) { +// Map email = new HashMap<>(); +// email.put("key", RemindTypeEnum.EMAIL.getCode()); +// email.put("showname", SystemEnv.getHtmlLabelName(18845, user.getLanguage())); +// options.add(email); +// results.put("options", options); +// results.put("value", RemindTypeEnum.EMAIL.getCode()); +// results.put("isShow", requestType == RequestType.VIEW_REQ.getId() ? false : true); +// results.put("viewAttr", 2); +// return results; +// } + + //3、E9提醒 + Set defaultValue = new HashSet<>(); + boolean isAlterRemindType = true; + //3.1、开启节点单独设置,当前节点没有单独设置 + String isDefaultSmsRemind = wfManager.getIsDefaultSmsRemind(); + String isDefaultEmailRemind = wfManager.getIsDefaultEmailRemind(); + if ("1".equals(isDefaultSmsRemind) || (messageType >= 1 && smsAlertsType>0)) defaultValue.add(RemindTypeEnum.SMS.getCode()); + if ("1".equals(isDefaultEmailRemind) || "1".equals(mailMessageType)) defaultValue.add(RemindTypeEnum.EMAIL.getCode()); + + String alterRemindNodesType = wfManager.getAlterRemindNodesType(); + if ("1".equals(alterRemindNodesType)) { + String alterRemindNodes = Util.null2String(wfManager.getAlterRemindNodes()); + String[] alterRemindNodesArr = alterRemindNodes.split(","); + List templast = Arrays.asList(alterRemindNodesArr); + isAlterRemindType = templast.contains(FreeNodeBiz.getExtendNodeId(Util.getIntValue(currentnodeid)) + ""); + } + + if (requestType == RequestType.CREATE_REQ.getId()) { + value = String.join(",", defaultValue); //流程创建时取默认 + } else { //其他情况先统一取数据库中的值 + rs.executeQuery("select remindTypes from workflow_requestbase where requestid=?", this.requestid); + if (rs.next()) value = Util.null2String(rs.getString("remindTypes")); + + if (!"1".equals(isaffirmance)) { + + //3、流程刚流转到当前节点,节点操作者查看时,要取默认值 + rs.executeQuery("select receivedate,receivetime from workflow_currentoperator where requestid =? and nodeId = ? and viewtype <> 0", requestid, currentnodeid); + if (!rs.next()) { + value = String.join(",", defaultValue); //当前节点操作者都未查看改流程 + } else { + String receivedate = rs.getString("receivedate"); + String receivetime = rs.getString("receivetime"); + rs.executeQuery("select operatedate,operatetime from workflow_requestLog where requestid =? and nodeId = ? and logtype = '1'", requestid, currentnodeid); + if (!rs.next()) { + value = String.join(",", defaultValue); //查看过,但是没执行过保存 + } else { + String operatedate = rs.getString("operatedate"); + String operatetime = rs.getString("operatetime"); + int compDate = DateUtil.compDate(String.format("%s %s", receivedate, receivetime), String.format("%s %s", operatedate, operatetime)); + if (compDate < 0) { + value = String.join(",", defaultValue); + } + //强制收回后,取默认值 + rs.executeQuery("select 1 from workflow_requestoperatelog where requestid = ? and isinvalid = 1 and operatorId = ? and nodeid = ?", requestid, user.getUID(), currentnodeid); + if (rs.next()) { + value = String.join(",", defaultValue); + } + } + } + } + } + + String isSmsRemind = wfManager.getIsSmsRemind(); + String isEmailRemind = wfManager.getIsEmailRemind(); + boolean disabled = "1".equals(isaffirmance) ? true : (!isAlterRemindType); + if ("1".equals(isSmsRemind) || messageType >= 1) { //短信提醒 + Map sms = new HashMap<>(); + sms.put("key", RemindTypeEnum.SMS.getCode()); + sms.put("showname", SystemEnv.getHtmlLabelName(17586, user.getLanguage())); + sms.put("disabled", disabled); + options.add(sms); + } + if ("1".equals(isEmailRemind) || "1".equals(mailMessageType)) {//邮件提醒 + Map email = new HashMap<>(); + email.put("key", RemindTypeEnum.EMAIL.getCode()); + email.put("showname", SystemEnv.getHtmlLabelName(18845, user.getLanguage())); + email.put("disabled", disabled); + options.add(email); + } + + boolean showRemindtype = true; + if (intervenorright != 2 && requestType == RequestType.VIEW_REQ.getId()) { + showRemindtype = false; + } + results.put("options", options); + results.put("value", value); + results.put("isShow", showRemindtype && isAlterRemindType); + results.put("viewAttr", isAlterRemindType ? 2 : 1); + + } catch (Exception e) { + writeLog(e); + } + } + return results; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + public int getRequestid() { + return requestid; + } + + public int getWorkflowid() { + return workflowid; + } + + public int getFormid() { + return formid; + } + + public String getIsbill() { + return isbill; + } + + public Map getReqParams() { + return reqParams; + } + + private void wcCopy(int requestid, int userid, int usertype) { + String nodetype = "", + cids = "", + endCid = ""; + RecordSet rs = new RecordSet(), + rs1 = new RecordSet(); + String sql = "select co.id,nodetype from workflow_flownode nb inner join workflow_currentoperator co on co.nodeid = nb.nodeid where co.requestid = ? and " + + "userid = ? and usertype = ? and isremark in ('1','7','8')"; + rs.executeQuery(sql, requestid, userid, usertype); + while (rs.next()) { + nodetype = Util.null2String(rs.getString("nodetype")); + if (nodetype.equals("3")) { + endCid = Util.null2String(rs.getString("id")); + } else { + cids += "," + Util.null2String(rs.getString("id")); + } + } + if (!Strings.isNullOrEmpty(cids)) { + String sql1 = "UPDATE workflow_currentoperator SET isremark = 2, operatedate = ?, operatetime = ? WHERE 1=1 and " + Util.getSubINClause(cids.substring(1), "id", "in"); + rs1.executeUpdate(sql1, currentdate, currenttime); + } + if (!Strings.isNullOrEmpty(endCid)) { + rs1.executeUpdate("UPDATE workflow_currentoperator SET isremark = 4, operatedate = ?, operatetime = ? WHERE id = ?", currentdate, currenttime, endCid); + } + } + + /** + * 获取流程表单字段变更记录配置表信息 + */ + private List> getWorkflowFormFieldChangeCfg(int nodeId) { + RecordSet rs = new RecordSet(); + ArrayList> lists = new ArrayList<>(); + String sql = "select nodeid,fieldid,type,maxmun,permaxmun from workflow_fieldchangecfg where nodeid = " + nodeId; + rs.executeQuery(sql); + while (rs.next()) { + HashMap map = new HashMap<>(); + map.put("nodeid", rs.getString("nodeid")); + map.put("fieldid", rs.getString("fieldid")); + map.put("type", rs.getString("type")); + map.put("maxmun", rs.getString("maxmun")); + map.put("permaxmun", rs.getString("permaxmun")); + lists.add(map); + } + return lists; + } +} diff --git a/src/com/engine/workflow/web/RequestFormAction.java b/src/com/engine/workflow/web/RequestFormAction.java new file mode 100644 index 00000000..c5eb88bb --- /dev/null +++ b/src/com/engine/workflow/web/RequestFormAction.java @@ -0,0 +1,1190 @@ +package com.engine.workflow.web; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.api.browser.bean.SearchConditionOption; +import com.customization.dito.sendtodo.SendPortalTodoDeleteUtil; +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.workflow.biz.freeNode.FreeNodeAsyncSubmitBiz; +import com.engine.workflow.biz.requestForm.DetailTemplateDownloadBiz; +import com.engine.workflow.biz.requestForm.RequestFormBiz; +import com.engine.workflow.biz.requestForm.RequestRemindBiz; +import com.engine.workflow.biz.requestList.RequestListBiz; +import com.engine.workflow.biz.requestSubmit.RequestBatchForwardBiz; +import com.engine.workflow.biz.requestSubmit.RequestBatchSubmitThread; +import com.engine.workflow.biz.requestSubmit.RequestSubmitThread; +import com.engine.workflow.constant.RemindTypeEnum; +import com.engine.workflow.constant.requestForm.RequestExecuteType; +import com.engine.workflow.entity.requestForm.RequestOperationResultBean; +import com.engine.workflow.service.*; +import com.engine.workflow.service.impl.*; +import com.google.common.base.Strings; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import weaver.filter.WeaverRequest; +import weaver.general.BaseBean; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.general.WorkFlowTransMethod; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; +import weaver.workflow.request.WFAutoApproveThreadPoolUtil; +import weaver.workflow.workflow.WorkflowConfigComInfo; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by jhy on 2018/2/23. + */ +public class RequestFormAction { + + private RequestFormService getLoadFormService(HttpServletRequest request, HttpServletResponse response) { + User user = RequestFormBiz.getFormUser(request, response, true); + return (RequestFormService) ServiceUtil.getService(RequestFormServiceImpl.class, user); + } + + private RequestFormServiceImpl getFormService(HttpServletRequest request, HttpServletResponse response) { + User user = RequestFormBiz.getFormUser(request, response, false); + return (RequestFormServiceImpl) ServiceUtil.getService(RequestFormServiceImpl.class, user); + } + + private RequestLogService getLogService(HttpServletRequest request, HttpServletResponse response) { + User user = RequestFormBiz.getFormUser(request, response, false); + return (RequestLogService) ServiceUtil.getService(RequestLogServiceImpl.class, user); + } + + private SignInputService getSignInputService(HttpServletRequest request, HttpServletResponse response) { + User user = RequestFormBiz.getFormUser(request, response, false); + return (SignInputService) ServiceUtil.getService(SignInputServiceImpl.class, user); + } + + + private WorkflowTransferSetService getWfTransferSetService(HttpServletRequest request, HttpServletResponse response) { + User user = RequestFormBiz.getFormUser(request, response, false); + return (WorkflowTransferSetService) ServiceUtil.getService(WorkflowTransferSetServiceImpl.class, user); + } + + private HtmlToPdfService getHtmlToPdfService(HttpServletRequest request, HttpServletResponse response){ + User user = RequestFormBiz.getFormUser(request, response, false); + return (HtmlToPdfService)ServiceUtil.getService(HtmlToPdfServiceImpl.class, user); + } + + /** + * 流程测试选择人员后判断用户是否有创建权限 + **/ + @POST + @Path("/judgeCreateRight") + @Produces(MediaType.TEXT_PLAIN) + public String judgeCreateRight(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getLoadFormService(request, response).judgeCreateRight(request); + return JSON.toJSONString(apidatas); + } + + /** + * 表单加载基础信息接口 + **/ + @POST + @Path("/loadForm") + @Produces(MediaType.TEXT_PLAIN) + public String loadForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { + response.setCharacterEncoding("utf-8"); + + BaseBean bb = new BaseBean(); + List> remark8List = new ArrayList>(); + List> atList = new ArrayList>(); + User user = HrmUserVarify.getUser(request, response); + try{ + String requestid = request.getParameter("requestid"); + int userid = user.getUID(); + SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); + sendPortalTodoDeleteUtil.queryWorkflowRemark8AtByLoadForm(requestid,userid+"",remark8List,atList); + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("loadForm-e:"+e); + } + + long start = System.currentTimeMillis(); + String result = getLoadFormService(request, response).loadForm(request); + long duration = System.currentTimeMillis() - start; + if (result.endsWith("}")) + result = result.substring(0, result.length() - 1) + ",\"durationTime\":" + duration + "}"; + + try{ + String loginid = user.getLoginid(); + SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); + sendPortalTodoDeleteUtil.completeReamrk8AtByLoadForm(loginid,remark8List,atList); + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("loadForm2-e:"+e); + } + return result; + } + + /** + * 模板预览接口 + **/ + @POST + @Path("/loadPreView") + @Produces(MediaType.TEXT_PLAIN) + public String loadPreView(@Context HttpServletRequest request, @Context HttpServletResponse response) { + response.setCharacterEncoding("utf-8"); + String result = getFormService(request, response).loadPreView(ParamUtil.request2Map(request)); + return result; + } + + /** + * 加载明细数据接口 + **/ + @POST + @Path("/detailData") + @Produces(MediaType.TEXT_PLAIN) + public String detailData(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).loadDetailData(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); + } + + /** 保存明细分页信息 **/ + @POST + @Path("/saveDetailPaging") + @Produces(MediaType.TEXT_PLAIN) + public String saveDetailPaging(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).saveDetailPaging(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + @POST + @Path("/updateReqInfo") + @Produces(MediaType.TEXT_PLAIN) + public String updateReqInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + + try{ + BaseBean bb = new BaseBean(); + User user = HrmUserVarify.getUser(request, response); + String requestid = request.getParameter("requestid"); + int userid = user.getUID(); + SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); + List> list = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid+""); + bb.writeLog("updateReqInfo--list2:"+list.size()); + }catch (Exception e){ + + } + + + RequestFormServiceImpl formService = getFormService(request, response); + Map apidatas = formService.updateReqInfo(request); + FreeNodeAsyncSubmitBiz.execute(request,formService); + return JSON.toJSONString(apidatas); + } + + /** + * 右键菜单接口 + **/ + @POST + @Path("/rightMenu") + @Produces(MediaType.TEXT_PLAIN) + public String rightMenu(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getRightMenu(request,ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 流程状态接口 + **/ + @POST + @Path("/wfstatusnew") + @Produces(MediaType.TEXT_PLAIN) + public String getStatusData(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map reqParams = ParamUtil.request2Map(request); + reqParams.put("request",request); + Map apidatas = getFormService(request, response).getStatusData(reqParams); + return JSONObject.toJSONString(apidatas); + } + + /** + * 流程状态计数接口 + **/ + @POST + @Path("/wfstatuscount") + @Produces(MediaType.TEXT_PLAIN) + public String getStatusCount(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map reqParams = ParamUtil.request2Map(request); + reqParams.put("request",request); + Map apidatas = getFormService(request, response).getStatusCount(reqParams); + return JSONObject.toJSONString(apidatas); + } + + /** + * 相关资源接口 + **/ + @GET + @Path("/resources") + @Produces(MediaType.TEXT_PLAIN) + public String getResourcesKey(@Context HttpServletRequest request, @Context HttpServletResponse response) throws Exception { + Map apidatas = getFormService(request, response).getResourcesKey(ParamUtil.request2Map(request)); + return JSONObject.toJSONString(apidatas); + } + + /** + * 表单修改日志接口 + **/ + @POST + @Path("/getModifyLog") + @Produces(MediaType.TEXT_PLAIN) + public String getModifyLog(@Context HttpServletRequest request, @Context HttpServletResponse response) { + response.setCharacterEncoding("utf-8"); + Map apidatas = getFormService(request, response).getModifyLog(request); + return JSON.toJSONString(apidatas); + } + + @POST + @Path("/requestBatchSubmit") + @Produces(MediaType.TEXT_PLAIN) + public String requestBatchSubmit(@Context HttpServletRequest request, @Context HttpServletResponse response) { + + + + Map apidatas = new HashMap<> (); + + //验证是否可批量提交----------start + String submitReqIds = Util.null2String(request.getParameter("multiSubIds")); + String isdialog = Util.null2String(request.getParameter("isdialog")); + if(!isdialog.equals("1")) { + if (submitReqIds.endsWith(",")) { + submitReqIds = submitReqIds.substring(0, submitReqIds.length() - 1); + } + apidatas.put("submitReqIds", submitReqIds); + String[] split = submitReqIds.split(","); + User weaUser = RequestFormBiz.getFormUser(request, response, true); + RecordSet recordSet = new RecordSet(); + WorkFlowTransMethod transMethod = new WorkFlowTransMethod(); + if (split.length > 0) { + for (int i = 0; i < split.length; i++) { + String sql = "select requestid,workflowid,ISREMARK,nodeid from WORKFLOW_CURRENTOPERATOR where requestid=" + split[i] + " and islasttimes=1 and userid=" + weaUser.getUID(); + recordSet.execute(sql); + while (recordSet.next()) { + String requestid = recordSet.getString("requestid"); + String workflowid = recordSet.getString("workflowid"); + String isremark = recordSet.getString("ISREMARK"); + String nodeid = recordSet.getString("nodeid"); + String join = String.join("+", workflowid, isremark, requestid, nodeid, String.valueOf(weaUser.getUID())); + String wfSearchResultCheckBox = transMethod.getWFSearchResultCheckBox(join); + if ("false".equals(wfSearchResultCheckBox)) { + apidatas.put("errMsg", "包含不可批量提交的流程"); + return JSON.toJSONString(apidatas); + } + } + } + } + //验证是否可批量提交---------end + } + RequestFormServiceImpl formService = getFormService(request, response); + + User user = formService.getUser(); + WorkflowConfigComInfo configComInfo = new WorkflowConfigComInfo(); + boolean defaultAsyncSubmit = "1".equals(Util.null2String(configComInfo.getValue("request_batchsubmit_async"))); + //需要异步提交 + boolean needBatchSubmit = "1".equals(request.getParameter("needBatchSubmit")); + if (needBatchSubmit && defaultAsyncSubmit) { + WeaverRequest weaverRequest = new WeaverRequest(request); + weaverRequest.setSession(request.getSession()); + RequestBatchSubmitThread batchSubmitThread = new RequestBatchSubmitThread(weaverRequest, formService); + //更新流程状态, 从“待办”更新为“处理中”, 处理中的流程在待办、已办中均不显示(可通过查询流程进行查询到) + batchSubmitThread.executeSubmitBefore(); + //异步执行提交,在提交成功后, 将流程状态改为“已处理”,如发生异常,则更新为“待办”, 并发送错误提交消息到消息中心 + WFAutoApproveThreadPoolUtil.getFixedThreadPool().execute(batchSubmitThread); + } else { + apidatas = formService.requestBatchSubmit(request); + } + + + if(submitReqIds.endsWith(",")) + submitReqIds = submitReqIds.substring(0,submitReqIds.length()-1); + apidatas.put("submitReqIds",submitReqIds);//返回本次提交请求的requestid,用于reload走微搜时数据处理 + + return JSON.toJSONString(apidatas); + } + + /** + * loglist + **/ + @POST + @Path("/getRequestLogBaseInfo") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestLogBaseInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + return JSON.toJSONString(getLogService(request, response).getRequestLogBaseInfo(ParamUtil.request2Map(request))); + } + + @POST + @Path("/getRequestLogList") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestLogList(@Context HttpServletRequest request, @Context HttpServletResponse response) { + return JSON.toJSONString(getLogService(request, response).getRequestLogList(request, ParamUtil.request2Map(request))); + } + + @POST + @Path("/updateUserTxStatus") + @Produces(MediaType.TEXT_PLAIN) + public String updateSignTXStatus(@Context HttpServletRequest request, @Context HttpServletResponse response) { + return JSON.toJSONString(getLogService(request, response).updateUserTxStatus(ParamUtil.request2Map(request))); + } + + @POST + @Path("/updateRequestLogPageSize") + @Produces(MediaType.TEXT_PLAIN) + public String updateRequestLogPageSize(@Context HttpServletRequest request, @Context HttpServletResponse response) { + return JSON.toJSONString(getLogService(request, response).updateRequestLogPageSize(ParamUtil.request2Map(request))); + } + + @GET + @Path("/addDocReadTag") + @Produces(MediaType.TEXT_PLAIN) + public String addDocReadTag(@Context HttpServletRequest request, @Context HttpServletResponse response) { + return JSON.toJSONString(getLogService(request, response).addDocReadLog(ParamUtil.request2Map(request))); + } + + /** + * 签字意见输入框 + **/ + @POST + @Path("/signInput") + @Produces(MediaType.TEXT_PLAIN) + public String signInput(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map reqParams = ParamUtil.request2Map(request); + reqParams.put("request",request); + return JSON.toJSONString(getSignInputService(request, response).getSignInputInfo(reqParams)); + } + + /** + * 判断退回方式 + **/ + @POST + @Path("/judgeRejectWay") + @Produces(MediaType.TEXT_PLAIN) + public String judgeRejectWay(@Context HttpServletRequest request, @Context HttpServletResponse response) { + RequestFormServiceImpl service = getFormService(request, response); + Map apidatas = service.judgeRejectWay(request); + int rejecttype = Util.getIntValue(apidatas.get("rejecttype")+""); + if(rejecttype == 2){ //选择退回节点时,直接算出弹窗所需信息 + Map params = (Map)apidatas.get("params"); + Map chooseInfo = service.getRejectOption(params); + List> rejectNodeList = (List>)chooseInfo.get("rejectNodeList"); + List> remindNodeList = (List>)chooseInfo.get("remindNodeList"); + List submitDirectNodeOptions = (List)chooseInfo.get("submitDirectNodeOptions"); + //当选择退回信息只有一个退回节点可选时,不弹窗直接退回 + if(rejectNodeList != null && remindNodeList !=null && submitDirectNodeOptions != null && rejectNodeList.size() == 1 && remindNodeList.size() == 0 && submitDirectNodeOptions.size() == 0){ + String nodeKey = Util.null2String(rejectNodeList.get(0).get("key")); + int isrejectremind = Util.getIntValue(Util.null2String(params.get("isrejectremind"))); + String directRejectNodeid = nodeKey.substring(0, nodeKey.indexOf("_")); + String directRemindNodeid = isrejectremind == 1 ? directRejectNodeid : ""; + apidatas.put("rejecttype", 1); + params.put("RejectNodes", directRemindNodeid); + params.put("RejectToNodeid", directRejectNodeid); + }else{ + apidatas.put("chooseInfo", chooseInfo); + } + } + return JSON.toJSONString(apidatas); + } + + /** + * 流程提交 + **/ + @POST + @Path("/requestOperation") + @Produces(MediaType.TEXT_PLAIN) + public String requestOperation(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = null; + RequestFormServiceImpl formService = getFormService(request, response); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + boolean isThrowThread = RequestSubmitThread.isThrowThread(request); + if (isThrowThread) { + WeaverRequest weaverRequest = new WeaverRequest(request); + weaverRequest.setSession(request.getSession()); + RequestSubmitThread submitThread = new RequestSubmitThread(formService, weaverRequest); + submitThread.initSubmitLog(); + WFAutoApproveThreadPoolUtil.getFixedThreadPool().execute(submitThread); + apidatas = new HashMap(); + RequestOperationResultBean resultBean = new RequestOperationResultBean(); + resultBean.setType(RequestExecuteType.ASYNC_SUBMIT); + apidatas.put("data", resultBean); + } else { + apidatas = formService.requestSubmit(request); + } + if("1".equals(openByDefaultBrowser)){//钉钉、企业微信pc客户端以默认浏览器打开流程,提交时保存客户端和浏览器交互数据 + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + if(isThrowThread || requestid.equals(new RequestListBiz().removeDoingReqId(requestid,user))){//抛线程处理流程,或者提交流程后状态变更,做记录保存 + RequestListBiz.putRecord(user,requestid); + } + RequestOperationResultBean resultBean = (RequestOperationResultBean) apidatas.get("data"); + if(resultBean != null){ + Map resultInfo = resultBean.getResultInfo(); + resultInfo.put("openByDefaultBrowser",openByDefaultBrowser);//下一个节点还是自己,防止参数丢失 + } + } + return JSON.toJSONString(apidatas); + } + + /** + * 转发、转办、意见征询等提交 + **/ + @POST + @Path("/remarkOperate") + @Produces(MediaType.TEXT_PLAIN) + public String remarkOperate(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).forwardSubmit(request); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + int forwardflag = Util.getIntValue(request.getParameter("forwardflag")); + if((forwardflag == 2 || forwardflag == 3 || forwardflag == 5) && "1".equals(openByDefaultBrowser)){ + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + RequestListBiz.putRecord(user,requestid); + } + return JSON.toJSONString(apidatas); + } + + /** + * 流程撤回 + **/ + @POST + @Path("/requestWithdraw") + @Produces(MediaType.TEXT_PLAIN) + public String requestWithdraw(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).requestWithdraw(request); + return JSON.toJSONString(apidatas); + } + + /** + * 批注回复提交 + **/ + @POST + @Path("/remarkOperation") + @Produces(MediaType.TEXT_PLAIN) + public String remarkOperation(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).remarkSubmit(request); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + if("1".equals(openByDefaultBrowser)){//钉钉、企业微信pc客户端以默认浏览器打开流程,提交时保存客户端和浏览器交互数据 + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + RequestListBiz.putRecord(user,requestid); + } + return JSON.toJSONString(apidatas); + } + + /** + * 功能管理相关 + **/ + @POST + @Path("/functionLink") + @Produces(MediaType.TEXT_PLAIN) + public String functionLink(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).functionManage(request, response); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + String flag = Util.null2String(request.getParameter("flag")); + if(("ov".equals(flag) || "rb".equals(flag) || "cancel".equals(flag) || "stop".equals(flag) || "restart".equals(flag)) && "1".equals(openByDefaultBrowser)){ + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + RequestListBiz.putRecord(user,requestid); + } + return JSON.toJSONString(apidatas); + } + + /** + * 触发子流程 + **/ + @POST + @Path("/triggerSubWf") + @Produces(MediaType.TEXT_PLAIN) + public String triggerSubWf(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).triggerSubWf(request); + return JSON.toJSONString(apidatas); + } + + /** + * 附件上传 + **/ + @POST + @Path("/docUpload") + @Produces(MediaType.TEXT_PLAIN) + public String docUpload(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).uploadFile(request, response); + return JSONObject.toJSONString(apidatas); + } + + /** + * 获取附件字段信息 + **/ + @POST + @Path("/getUploadFileInfo") + @Produces(MediaType.TEXT_PLAIN) + public String getUploadFileInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getFileFieldObj(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 创建流程编号 + **/ + @POST + @Path("/createWfCode") + @Produces(MediaType.TEXT_PLAIN) + public String createWfCode(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).createWfCode(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取流程编号字段值 + **/ + @POST + @Path("/loadWfCodeFieldValueInfo") + @Produces(MediaType.TEXT_PLAIN) + public String loadWfCodeFieldValueInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getWfCodeFieldValue(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 添加常用批示语 + **/ + @POST + @Path("/addWfPhrase") + @Produces(MediaType.TEXT_PLAIN) + public String addWfPhrase(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getSignInputService(request, response).addWfPhrase(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取常用批示语 + **/ + @POST + @Path("/getPhrases") + @Produces(MediaType.TEXT_PLAIN) + public String getPhrases(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getSignInputService(request, response).getPhrases(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 流程导入 + **/ + @POST + @Path("/requestImport") + @Produces(MediaType.TEXT_PLAIN) + public String requestImport(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).requestImport(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 流程明细导入 + **/ + @POST + @Path("/doImportDetail") + @Produces(MediaType.TEXT_PLAIN) + public String requestDetailImport(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).requestDetailImport(request); + return JSON.toJSONString(apidatas); + } + + /** + * 明细导入触发字段联动 + **/ + @POST + @Path("/riggerFieldLinkageCfg") + @Produces(MediaType.TEXT_PLAIN) + public String importFieldLinkageCfg(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).importFieldLinkageCfg(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 明细导入导出excel模板可包含只读字段 + **/ + @POST + @Path("/exportFieldSet") + @Produces(MediaType.TEXT_PLAIN) + public String exportFieldSet(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).exportFieldSet(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 明细导入执行公式 + **/ + @POST + @Path("/riggerFormulaCfg") + @Produces(MediaType.TEXT_PLAIN) + public String importFormulaCfg(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).importFormulaCfg(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 异常处理选人 + **/ + @POST + @Path("/chooseExceptionOperator") + @Produces(MediaType.TEXT_PLAIN) + public String chooseExceptionOperator(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).chooseExceptionOperator(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 超时设置 + **/ + @POST + @Path("/overTimeSetting") + @Produces(MediaType.TEXT_PLAIN) + public String overTimeSetting(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).overTimeSetting(request); + return JSON.toJSONString(apidatas); + } + + /** + * 打印日志基础信息 + **/ + @POST + @Path("/getPrintLogBase") + @Produces(MediaType.TEXT_PLAIN) + public String getPrintLogBase(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getPrintLogBase(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 打印日志数据信息 + **/ + @POST + @Path("/getPrintLogData") + @Produces(MediaType.TEXT_PLAIN) + public String getPrintLogData(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getPrintLogData(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 自由流转读取数据 + **/ + @POST + @Path("/freeFlowRead") + @Produces(MediaType.TEXT_PLAIN) + public String freeFlowRead(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).freeFlowRead(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 自由流转保存数据 + **/ + @POST + @Path("/freeFlowSave") + @Produces(MediaType.TEXT_PLAIN) + public String freeFlowSave(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).freeFlowSave(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 流转设定按钮-返回数据 + * add by jym + **/ + @POST + @Path("/getTransferCondition") + @Produces(MediaType.TEXT_PLAIN) + public String getTransferCondition(@Context HttpServletRequest request,@Context HttpServletResponse response){ + Map apidatas = new HashMap(); + apidatas = getWfTransferSetService(request, response).getTransferCondition(ParamUtil.request2Map(request)); + return JSONObject.toJSONString(apidatas); + } + + /** + * 流程编辑锁定相关操作 + **/ + @POST + @Path("/editLockOper") + @Produces(MediaType.TEXT_PLAIN) + public String editLockOper(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).editLockOper(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取节点打印模板信息 + **/ + @POST + @Path("/loadPrintTemplates") + @Produces(MediaType.TEXT_PLAIN) + public String loadPrintTemplates(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = null; + try { + User user = HrmUserVarify.getUser(request, response); + /*E9打印登录超时报错(QC:527424)*/ + if(user == null) { + response.sendRedirect("/wui/index.html"); + return null; + } + apidatas = getFormService(request, response).loadPrintTemplates(ParamUtil.request2Map(request)); + } catch (IOException e) { + e.printStackTrace(); + } + return JSON.toJSONString(apidatas); + } + + /** + * 运算表达式 + **/ + @POST + @Path("/doEvalExpression") + @Produces(MediaType.TEXT_PLAIN) + public String doEvalExpression(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).doEvalExpression(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 生成打印日志 + **/ + @POST + @Path("/generatePrintLog") + @Produces(MediaType.TEXT_PLAIN) + public String generatePrintLog(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + /*E9打印登录超时报错(QC:527424)*/ + if(user == null) { + try { + response.sendRedirect("/wui/index.html"); + return null; + } catch (IOException e) { + e.printStackTrace(); + } + } + Map apidatas = getFormService(request, response).generatePrintLog(request); + return JSON.toJSONString(apidatas); + } + + /** + * 流程中当前操作者已转发信息 + * @param request + * @param response + * @return + */ + @GET + @Path("/getForwardDatas") + @Produces(MediaType.TEXT_PLAIN) + public String getForwardDatas(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getForwardDatas(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 转发收回 + * @param request + * @param response + * @return + */ + @POST + @Path("/doBack") + @Produces(MediaType.TEXT_PLAIN) + public String doBack(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).doBack(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * form tab 扩展 + * @param request + * @param response + * @return + */ + @POST + @Path("/getFormTab") + @Produces("text/plain;charset=utf-8") + public String loadFormTab(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getFormTab(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + @GET + @Path("/dowloadTemplate") + @Produces(MediaType.APPLICATION_OCTET_STREAM)//返回方式为流 + public String exportExcel(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = RequestFormBiz.getFormUser(request, response, false); + DetailTemplateDownloadBiz dtdBiz = new DetailTemplateDownloadBiz(user); + HSSFWorkbook wb =dtdBiz.templateDownload(request, response); + String filename = dtdBiz.getFilename(); + //filename = java.net.URLEncoder.encode(filename, "UTF-8"); + filename = StringUtils.replace(filename, "/", ""); + filename = StringUtils.replace(filename, "%2F", ""); + filename = StringUtils.replace(filename, "+", "%20"); + filename = Util.formatMultiLang(filename, "7"); + response.setHeader("Content-Disposition", "attachment;filename=" + filename); + response.addHeader("Cache-Control", "no-cache"); + OutputStream os = response.getOutputStream(); + wb.write(os); + os.flush(); + os.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return ""; + } + + + @POST + @Path("/saveMobileSignAnnex") + @Produces("text/plain;charset=utf-8") + public String saveMobileSignAnnex(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getSignInputService(request, response).saveMobileSignAnnexCmd(request); + return JSON.toJSONString(apidatas); + } + + /** + * 获取指定下一节点流转condition + * @param request + * @param response + * @return + */ + @POST + @Path("/getSelectNextFlowCondition") + @Produces("text/plain;charset=utf-8") + public String getSelectNextFlowCondition(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getSelectNextFlowCondition(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取指定下一节点流转节点信息 + * @param request + * @param response + * @return + */ + @POST + @Path("/getSelectFlowNodeInfo") + @Produces("text/plain;charset=utf-8") + public String getSelectFlowNodeInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getSelectNextFlowNodes(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取流程默认提醒方式及当前节点操作者 + * @param request + * @param response + * @return + */ + @GET + @Path("/getRemindData") + @Produces("text/plain;charset=utf-8") + public String getRemindData(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getRemindData(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 提醒 + * @param request + * @param response + * @return + */ + @POST + @Path("/doRemind") + @Produces("text/plain;charset=utf-8") + public String requestRemind(@Context HttpServletRequest request, @Context HttpServletResponse response) { + + Map apidatas = new HashMap<>(); + + User user = RequestFormBiz.getFormUser(request, response, false); + RequestRemindService requestRemindService = (RequestRemindService) ServiceUtil.getService(RequestRemindServiceImpl.class, user); + + Map params = ParamUtil.request2Map(request); + String remindType = Util.null2String(params.get("remindTypes")); //提醒方式 + int requestId = Util.getIntValue(Util.null2String(params.get("requestId"))); + if(Strings.isNullOrEmpty(remindType)){ + return JSON.toJSONString(apidatas); + } + String[] remindTypeArr = remindType.split(","); + for(String t : remindTypeArr){ + if(RemindTypeEnum.SMS.getCode().equals(t)){ + apidatas = requestRemindService.remindBySMS(params); + } + if(RemindTypeEnum.EMAIL.getCode().equals(t)){ + apidatas = requestRemindService.remindByEmail(params); + } + if(RemindTypeEnum.WECHAT.getCode().equals(t)){ + apidatas = requestRemindService.remindByWeChat(params); + } + } + + RequestRemindBiz.updateRemindTypes("",requestId); + return JSON.toJSONString(apidatas); + } + + /** 判断当前流程状态 */ + @POST + @Path("/judgeRequestIsValid") + @Produces("text/plain;charset=utf-8") + public String judgeRequestIsValid(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).judgeRequestIsValid(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** 意见征询收回 */ + @POST + @Path("/doTakeBack") + @Produces("text/plain;charset=utf-8") + public String doTakeBack(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).takeBack(ParamUtil.request2Map(request)); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + if("1".equals(openByDefaultBrowser)){ + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + RequestListBiz.putRecord(user,requestid); + } + return JSON.toJSONString(apidatas); + } + + /** + * 获取自定义菜单设置 + **/ + @POST + @Path("/getCustomOperation") + @Produces("text/plain;charset=utf-8") + public String getCustomOperation(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).getCustomOperation(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 指定自定义动作 + **/ + @GET + @Path("/runCustomOperationAction") + @Produces("text/plain;charset=utf-8") + public String runCustomOperationAction(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).runCustomOperationAction(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 结束意见征询 + **/ + @POST + @Path("/doTakEnd") + @Produces("text/plain;charset=utf-8") + public String doTakEnd(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getFormService(request, response).doTakEnd(request, ParamUtil.request2Map(request)); + String openByDefaultBrowser = Util.null2String(request.getParameter("openByDefaultBrowser")); + if("1".equals(openByDefaultBrowser)){ + User user = RequestFormBiz.getFormUser(request, response, true); + String requestid = Util.null2String(request.getParameter("requestid")); + RequestListBiz.putRecord(user,requestid); + } + return JSON.toJSONString(apidatas); + } + + + /** + * 获取意见所有接收人 + **/ + @GET + @Path("/getLogAllReceiveUser") + @Produces("text/plain;charset=utf-8") + public String getLogAllReceiveUser(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = getLogService(request, response).getLogAllReceiveUser(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + + /** + * 获取节点意见设置 + **/ + @GET + @Path("/getNodeSignSet") + @Produces("text/plain;charset=utf-8") + public String getNodeSignSet(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map reqParams = ParamUtil.request2Map(request); + reqParams.put("request", request); + + Map apidatas = getSignInputService(request, response).getNodeSignSet(reqParams); + return JSON.toJSONString(apidatas); + } + + /** + * 后台html转pdf + **/ + @GET + @Path("/getHtmlToPdf") + @Produces("text/plain;charset=utf-8") + public String gethtmltopdf(@Context HttpServletRequest request, @Context HttpServletResponse response) { + response.setCharacterEncoding("utf-8"); + Map params = ParamUtil.request2Map(request); + Map apidatas = getHtmlToPdfService(request, response).getFormDatas(params); + return JSON.toJSONString(apidatas); + } + + /** + * 获取明细数据的keyid + **/ + @POST + @Path("/detailDataKeyId") + @Produces("text/plain;charset=utf-8") + public String getDetailDataKeyId(@Context HttpServletRequest request, @Context HttpServletResponse response) { + response.setCharacterEncoding("utf-8"); + Map params = ParamUtil.request2Map(request); + Map apidatas = getFormService(request, response).getDetailDataKeyId(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + //获取套红预览地址 + @POST + @Path("/getThPreviewUrl") + @Produces("text/plain;charset=utf-8") + public String getThPreviewUrl(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getThPreviewUrl(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + //获取套红模板地址 + @POST + @Path("/getThMouldList") + @Produces("text/plain;charset=utf-8") + public String getThModuleList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getThMouldList(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * Detail Export Settings + * 明细表导出设置。 + */ + @GET + @Path("/getDetailExpSet") + @Produces("text/plain;charset=utf-8") + public String getDetailExpSet(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getDetailExpSet(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + @POST + @Path("/saveDetailExpSet") + @Produces("text/plain;charset=utf-8") + public String saveDetailExpSet(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).saveDetailExpSet(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 批量转发 + * @param request + * @param response + * @return + */ + @POST + @Path("/batchForward") + @Produces("text/plain;charset=utf-8") + public String batchForward(@Context HttpServletRequest request, @Context HttpServletResponse response){ + User user = RequestFormBiz.getFormUser(request, response, false); + RequestBatchForwardBiz batchForwardBiz = new RequestBatchForwardBiz(); + WeaverRequest weaverRequest = new WeaverRequest(request); + weaverRequest.setSession(request.getSession()); + Map apidatas = batchForwardBiz.executeForward(weaverRequest,user); + return JSON.toJSONString(apidatas); + } + + /** + * 获取自动批准后的下一节点 + * @param request + * @param response + * @return + */ + @POST + @Path("/getNextNodeContent") + @Produces("text/plain;charset=utf-8") + public String getNextNodeContent(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getNextNodeContent(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + + /** + * 流程删除验证 + * @param request + * @param response + * @return + */ + @POST + @Path("/delRequestVerify") + @Produces("text/plain;charset=utf-8") + public String delRequestVerify(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).delRequestVerify(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + + + /** + * 获取自由流程新建流程选择表单按钮 + * @param request + * @param response + * @return + */ + @GET + @Path("/getFreeNodeBrowserItem") + @Produces("text/plain;charset=utf-8") + public String getFreeNodeBrowserItem(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getFreeNodeBrowserItem(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + /** + * 获取自由流程新建流程选择表单按钮 + * @param request + * @param response + * @return + */ + @POST + @Path("/saveFreeNodeFormConfig") + @Produces("text/plain;charset=utf-8") + public String saveFreeNodeFormConfig(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).saveFreeNodeFormConfig(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + @POST + @Path("/conformCheck") + @Produces("text/plain;charset=utf-8") + public String conformCheck(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).conformCheck(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + + @POST + @Path("/getDetailByRequestId") + @Produces("text/plain;charset=utf-8") + public String getDetailByRequestId(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map apidatas = getFormService(request, response).getDetailByRequestId(ParamUtil.request2Map(request)); + return JSON.toJSONString(apidatas); + } + +} diff --git a/src/com/engine/workflow/web/RequestMonitorListAction.java b/src/com/engine/workflow/web/RequestMonitorListAction.java index 40d7aa28..12b34058 100644 --- a/src/com/engine/workflow/web/RequestMonitorListAction.java +++ b/src/com/engine/workflow/web/RequestMonitorListAction.java @@ -2,7 +2,9 @@ package com.engine.workflow.web; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -171,10 +173,66 @@ public class RequestMonitorListAction { String f_weaver_belongto_usertype=request.getParameter("f_weaver_belongto_usertype");//需要增加的代码 user = HrmUserVarify.getUser(request, response, f_weaver_belongto_userid, f_weaver_belongto_usertype) ;//需要增加的代码 setService(user); - apidatas = monitorService.deleteRequestById(request, user); BaseBean bb = new BaseBean(); + + List> copyList = new ArrayList>(); + try{ + String requestid = Util.null2String(request.getParameter("multiRequestIds")); + bb.writeLog("deleteRequestById-requestid"+requestid); + + if(StringUtils.isNotEmpty(requestid)){ + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "queryWorkflowCopyToByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, String.class); + Object newInstance = clazz.newInstance(); + copyList = (List>) method.invoke(newInstance,requestid); + } + }catch (ClassNotFoundException | NoSuchMethodException e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + List> forwardList = new ArrayList>(); + try{ + String requestid = Util.null2String(request.getParameter("multiRequestIds")); + bb.writeLog("deleteRequestById-requestid"+requestid); + if(StringUtils.isNotEmpty(requestid)){ + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "queryWorkflowForwardByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, String.class); + Object newInstance = clazz.newInstance(); + forwardList = (List>) method.invoke(newInstance,requestid); + } + }catch (ClassNotFoundException | NoSuchMethodException e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + List> atList = new ArrayList>(); + try{ + String requestid = Util.null2String(request.getParameter("multiRequestIds")); + bb.writeLog("deleteRequestById-requestid"+requestid); + + if(StringUtils.isNotEmpty(requestid)){ + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "queryWorkflowAtByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, String.class); + Object newInstance = clazz.newInstance(); + atList = (List>) method.invoke(newInstance,requestid); + } + }catch (ClassNotFoundException | NoSuchMethodException e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + apidatas = monitorService.deleteRequestById(request, user); + + try{ String requestid = Util.null2String(request.getParameter("multiRequestIds")); String userid = user.getUID()+"" ; @@ -194,6 +252,61 @@ public class RequestMonitorListAction { bb.writeLog("deleteRequestById-ClassNotFoundException"+e); } + String notes = ""; + try{ + String loginid = user.getLoginid()+"" ; + bb.writeLog("copyList:"+copyList.size()); + if(copyList.size() >0){ + notes = "流程监控删除,删除流程所有未读的抄送数据"; + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "monitorFinishedWorkflowCopyToByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName,List.class,String.class,String.class); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,copyList,loginid,notes); + } + }catch (ClassNotFoundException | NoSuchMethodException e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + try{ + String loginid = user.getLoginid()+"" ; + bb.writeLog("forwardList:"+forwardList.size()); + if(forwardList.size() >0){ + notes = "流程监控删除,删除流程所有未读的转发数据"; + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "monitorFinishedWorkflowForwardByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName,List.class,String.class,String.class); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,forwardList,loginid,notes); + } + }catch (ClassNotFoundException | NoSuchMethodException e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + + try{ + String loginid = user.getLoginid()+"" ; + bb.writeLog("atList:"+atList.size()); + if(atList.size() >0){ + notes = "流程监控删除,删除流程所有未读@的数据"; + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "monitorFinishedWorkflowAtByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName,List.class,String.class,String.class); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,atList,loginid,notes); + } + }catch (ClassNotFoundException | NoSuchMethodException e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + + }catch(Exception e){ e.printStackTrace(); apidatas.put("api_status", false); @@ -215,18 +328,104 @@ public class RequestMonitorListAction { public String archivingRequestById(@Context HttpServletRequest request,@Context HttpServletResponse response){ Map apidatas = new HashMap(); String requestids = Util.null2String(request.getParameter("multiRequestIds")); + + BaseBean bb = new BaseBean(); + + List> userList = new ArrayList>(); try{ + bb.writeLog("deleteRequestById-requestid"+requestids); - User user = HrmUserVarify.getUser(request, response); + if(StringUtils.isNotEmpty(requestids)){ + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; + String methodName = "queryRequestUserDataByArchving" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, String.class); + Object newInstance = clazz.newInstance(); + userList = (List>) method.invoke(newInstance,requestids); + } + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + e.printStackTrace(); + bb.writeLog("archivingRequestById-ClassNotFoundException"+e); + } + + List> copyList = new ArrayList>(); + List> forwardList = new ArrayList>(); + List> atList = new ArrayList>(); + + if(!userList.isEmpty() && userList.size() > 0){ + // 获取 抄送、转发、@ 的数据 + try{ + + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; + String methodName = "queryWorkflowRemarkByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, List.class); + Object newInstance = clazz.newInstance(); + copyList = (List>) method.invoke(newInstance,userList); + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + e.printStackTrace(); + bb.writeLog("archivingRequestById-ClassNotFoundException"+e); + } + + + try{ + String requestid = Util.null2String(request.getParameter("multiRequestIds")); + bb.writeLog("deleteRequestById-requestid"+requestid); + if(StringUtils.isNotEmpty(requestid)){ + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; + String methodName = "queryWorkflowForwardByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, List.class); + Object newInstance = clazz.newInstance(); + forwardList = (List>) method.invoke(newInstance,userList); + } + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + e.printStackTrace(); + bb.writeLog("archivingRequestById-ClassNotFoundException"+e); + } + + + try{ + String requestid = Util.null2String(request.getParameter("multiRequestIds")); + bb.writeLog("deleteRequestById-requestid"+requestid); + + if(StringUtils.isNotEmpty(requestid)){ + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; + String methodName = "queryWorkflowAtByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, List.class); + Object newInstance = clazz.newInstance(); + atList = (List>) method.invoke(newInstance,userList); + } + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + e.printStackTrace(); + bb.writeLog("archivingRequestById-ClassNotFoundException"+e); + } + } + + + // 执行智能预测接口 + + User user = HrmUserVarify.getUser(request, response); + try{ String f_weaver_belongto_userid=request.getParameter("f_weaver_belongto_userid");//需要增加的代码 String f_weaver_belongto_usertype=request.getParameter("f_weaver_belongto_usertype");//需要增加的代码 user = HrmUserVarify.getUser(request, response, f_weaver_belongto_userid, f_weaver_belongto_usertype) ;//需要增加的代码 - addClassInterface2SimpleMode(requestids,user); + + if(StringUtils.isNotEmpty(requestids)){ + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; + String methodName = "doSimpleModeDataByMonitor" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, String.class,User.class); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,requestids,user); + } }catch (Exception e){ } + + //强制归档接口 try{ - User user = HrmUserVarify.getUser(request, response); String f_weaver_belongto_userid=request.getParameter("f_weaver_belongto_userid");//需要增加的代码 String f_weaver_belongto_usertype=request.getParameter("f_weaver_belongto_usertype");//需要增加的代码 user = HrmUserVarify.getUser(request, response, f_weaver_belongto_userid, f_weaver_belongto_usertype) ;//需要增加的代码 @@ -238,75 +437,134 @@ public class RequestMonitorListAction { apidatas.put("api_errormsg", "catch exception : " + e.getMessage()); } + // 完成转发、抄送、@的数据 try{ - String f_weaver_belongto_userid=request.getParameter("f_weaver_belongto_userid");//需要增加的代码 - String f_weaver_belongto_usertype=request.getParameter("f_weaver_belongto_usertype");//需要增加的代码 - User user = HrmUserVarify.getUser(request, response); - user = HrmUserVarify.getUser(request, response, f_weaver_belongto_userid, f_weaver_belongto_usertype) ;//需要增加的代码 String userid = user.getUID()+"" ; - addClassInterface2Monitor(requestids,userid); +// addClassInterface2Monitor(requestids,userid); + if(StringUtils.isNotEmpty(requestids)){ + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; + String methodName = "monitorArchived" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, String.class,String.class); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,requestids,userid); + } }catch (Exception e){ - + bb.writeLog("archivingRequestById-ClassNotFoundException"+e); } - return JSONObject.toJSONString(apidatas); - } - /** - * - * @param requestids - */ - private void addClassInterface2SimpleMode(String requestids,User user){ - BaseBean bb = new BaseBean(); + String notes = ""; try{ - if(StringUtils.isNotEmpty(requestids)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; - String methodName = "doSimpleModeDataByMonitor" ; + + String loginid = user.getLoginid()+"" ; + bb.writeLog("copyList:"+copyList.size()); + if(copyList.size() >0){ + notes = "流程监控删除,删除流程所有未读的抄送数据"; + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "monitorFinishedWorkflowCopyToByRequestid" ; Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class,User.class); + Method method = clazz.getMethod(methodName,List.class,String.class,String.class); Object newInstance = clazz.newInstance(); - method.invoke(newInstance,requestids,user); + method.invoke(newInstance,copyList,loginid,notes); } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); } - } - /*** - * - * @param requestid - * @param userid - */ - private void addClassInterface2Monitor(String requestid,String userid){ - BaseBean bb = new BaseBean(); try{ - bb.writeLog("archivingRequestById-requestid"+requestid); - bb.writeLog("archivingRequestById-userid"+userid); - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; - String methodName = "monitorArchived" ; + String loginid = user.getLoginid()+"" ; + bb.writeLog("forwardList:"+forwardList.size()); + if(forwardList.size() >0){ + notes = "流程监控删除,删除流程所有未读的转发数据"; + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "monitorFinishedWorkflowForwardByRequestid" ; Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class,String.class); + Method method = clazz.getMethod(methodName,List.class,String.class,String.class); Object newInstance = clazz.newInstance(); - method.invoke(newInstance,requestid,userid); + method.invoke(newInstance,forwardList,loginid,notes); } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } catch (IllegalAccessException e) { + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + try{ + String loginid = user.getLoginid()+"" ; + bb.writeLog("atList:"+atList.size()); + if(atList.size() >0){ + notes = "流程监控删除,删除流程所有未读@的数据"; + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "monitorFinishedWorkflowAtByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName,List.class,String.class,String.class); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,atList,loginid,notes); + } + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); } + + return JSONObject.toJSONString(apidatas); } + + /** + * + * @param requestids + */ +// private void addClassInterface2SimpleMode(String requestids,User user){ +// BaseBean bb = new BaseBean(); +// try{ +// if(StringUtils.isNotEmpty(requestids)){ +// String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; +// String methodName = "doSimpleModeDataByMonitor" ; +// Class clazz = Class.forName(className); +// Method method = clazz.getMethod(methodName, String.class,User.class); +// Object newInstance = clazz.newInstance(); +// method.invoke(newInstance,requestids,user); +// } +// }catch (ClassNotFoundException | NoSuchMethodException e){ +// e.printStackTrace(); +// bb.writeLog("archivingRequestById-ClassNotFoundException"+e); +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } catch (InstantiationException e) { +// e.printStackTrace(); +// } catch (InvocationTargetException e) { +// e.printStackTrace(); +// } +// } + + /*** + * + * @param requestid + * @param userid + */ +// private void addClassInterface2Monitor(String requestid,String userid){ +// BaseBean bb = new BaseBean(); +// try{ +// bb.writeLog("archivingRequestById-requestid"+requestid); +// bb.writeLog("archivingRequestById-userid"+userid); +// if(StringUtils.isNotEmpty(requestid)){ +// String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; +// String methodName = "monitorArchived" ; +// Class clazz = Class.forName(className); +// Method method = clazz.getMethod(methodName, String.class,String.class); +// Object newInstance = clazz.newInstance(); +// method.invoke(newInstance,requestid,userid); +// } +// }catch (ClassNotFoundException | NoSuchMethodException e){ +// e.printStackTrace(); +// bb.writeLog("archivingRequestById-ClassNotFoundException"+e); +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } catch (InstantiationException e) { +// e.printStackTrace(); +// } catch (InvocationTargetException e) { +// e.printStackTrace(); +// } +// } /** * 流程暂停 @@ -399,40 +657,164 @@ public class RequestMonitorListAction { @Produces(MediaType.TEXT_PLAIN) public String repossessedRequestById(@Context HttpServletRequest request,@Context HttpServletResponse response){ Map apidatas = new HashMap(); + + BaseBean bb = new BaseBean(); + String requestids = Util.null2String(request.getParameter("multiRequestIds")); + List> userList = new ArrayList>(); try{ - User user = HrmUserVarify.getUser(request, response); - String f_weaver_belongto_userid=request.getParameter("f_weaver_belongto_userid");//需要增加的代码 - String f_weaver_belongto_usertype=request.getParameter("f_weaver_belongto_usertype");//需要增加的代码 - user = HrmUserVarify.getUser(request, response, f_weaver_belongto_userid, f_weaver_belongto_usertype) ;//需要增加的代码 - setService(user); - apidatas = monitorService.repossessedRequestById(request, response, user); + bb.writeLog("deleteRequestById-requestid"+requestids); + if(StringUtils.isNotEmpty(requestids)){ + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; + String methodName = "queryRequestUserDataByArchving" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, String.class); + Object newInstance = clazz.newInstance(); + userList = (List>) method.invoke(newInstance,requestids); + } + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + e.printStackTrace(); + bb.writeLog("archivingRequestById-ClassNotFoundException"+e); + } + List> copyList = new ArrayList>(); + List> forwardList = new ArrayList>(); + List> atList = new ArrayList>(); + + if(!userList.isEmpty() && userList.size() > 0){ + // 获取 抄送、转发、@ 的数据 + try{ + + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; + String methodName = "queryWorkflowRemarkByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, List.class); + Object newInstance = clazz.newInstance(); + copyList = (List>) method.invoke(newInstance,userList); + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + e.printStackTrace(); + bb.writeLog("archivingRequestById-ClassNotFoundException"+e); + } - BaseBean bb = new BaseBean(); try{ String requestid = Util.null2String(request.getParameter("multiRequestIds")); - String userid = user.getUID()+"" ; - bb.writeLog("repossessedRequestById-requestid"+requestid); - bb.writeLog("repossessedRequestById-userid"+userid); + bb.writeLog("deleteRequestById-requestid"+requestid); + if(StringUtils.isNotEmpty(requestid)){ + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; + String methodName = "queryWorkflowForwardByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName, List.class); + Object newInstance = clazz.newInstance(); + forwardList = (List>) method.invoke(newInstance,userList); + } + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + e.printStackTrace(); + bb.writeLog("archivingRequestById-ClassNotFoundException"+e); + } + + try{ + String requestid = Util.null2String(request.getParameter("multiRequestIds")); + bb.writeLog("deleteRequestById-requestid"+requestid); if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; - String methodName = "monitorPossessed" ; + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; + String methodName = "queryWorkflowAtByRequestid" ; Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,String.class,String.class); + Method method = clazz.getMethod(methodName, List.class); Object newInstance = clazz.newInstance(); - method.invoke(newInstance,requestid,userid); + atList = (List>) method.invoke(newInstance,userList); } - }catch (ClassNotFoundException | NoSuchMethodException e){ + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ e.printStackTrace(); - bb.writeLog("repossessedRequestById-ClassNotFoundException"+e); + bb.writeLog("archivingRequestById-ClassNotFoundException"+e); } + } + + User user = HrmUserVarify.getUser(request, response); + try{ + String f_weaver_belongto_userid=request.getParameter("f_weaver_belongto_userid");//需要增加的代码 + String f_weaver_belongto_usertype=request.getParameter("f_weaver_belongto_usertype");//需要增加的代码 + user = HrmUserVarify.getUser(request, response, f_weaver_belongto_userid, f_weaver_belongto_usertype) ;//需要增加的代码 + setService(user); + apidatas = monitorService.repossessedRequestById(request, response, user); }catch(Exception e){ e.printStackTrace(); apidatas.put("api_status", false); apidatas.put("api_errormsg", "catch exception : " + e.getMessage()); } + + try{ + String userid = user.getUID()+"" ; + bb.writeLog("repossessedRequestById-requestids"+requestids); + bb.writeLog("repossessedRequestById-userid"+userid); + + if(StringUtils.isNotEmpty(requestids)){ + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; + String methodName = "monitorPossessed" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName,String.class,String.class); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,requestids,userid); + } + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + e.printStackTrace(); + bb.writeLog("repossessedRequestById-ClassNotFoundException"+e); + } + + String notes = ""; + try{ + String loginid = user.getLoginid()+"" ; + bb.writeLog("copyList:"+copyList.size()); + if(copyList.size() >0){ + notes = "流程监控删除,删除流程所有未读的抄送数据"; + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "monitorFinishedWorkflowCopyToByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName,List.class,String.class,String.class); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,copyList,loginid,notes); + } + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + try{ + + String loginid = user.getLoginid()+"" ; + bb.writeLog("forwardList:"+forwardList.size()); + if(forwardList.size() >0){ + notes = "流程监控删除,删除流程所有未读的转发数据"; + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "monitorFinishedWorkflowForwardByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName,List.class,String.class,String.class); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,forwardList,loginid,notes); + } + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + try{ + String loginid = user.getLoginid()+"" ; + bb.writeLog("atList:"+atList.size()); + if(atList.size() >0){ + notes = "流程监控删除,删除流程所有未读@的数据"; + String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; + String methodName = "monitorFinishedWorkflowAtByRequestid" ; + Class clazz = Class.forName(className); + Method method = clazz.getMethod(methodName,List.class,String.class,String.class); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,atList,loginid,notes); + } + }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + return JSONObject.toJSONString(apidatas); } diff --git a/src/weaver/interfaces/dito/filter/HttpRequestUtil.java b/src/weaver/interfaces/dito/filter/HttpRequestUtil.java index 31500508..fd64f3f8 100644 --- a/src/weaver/interfaces/dito/filter/HttpRequestUtil.java +++ b/src/weaver/interfaces/dito/filter/HttpRequestUtil.java @@ -166,7 +166,7 @@ public class HttpRequestUtil extends BaseBean{ staffCode = "sysadmin"; sql = " select * from hrmresourcemanager where loginid =? "; } else { - sql = " select * from HrmResource where loginid =? "; + sql = " select * from HrmResource where loginid =? or workcode = ? "; } rs.executeQuery(sql,new Object[]{staffCode}); if (rs.next()) diff --git a/src/weaver/interfaces/dito/filter/PortalLoginBeforeFilter.java b/src/weaver/interfaces/dito/filter/PortalLoginBeforeFilter.java index 902860c8..4317302c 100644 --- a/src/weaver/interfaces/dito/filter/PortalLoginBeforeFilter.java +++ b/src/weaver/interfaces/dito/filter/PortalLoginBeforeFilter.java @@ -82,6 +82,7 @@ public class PortalLoginBeforeFilter implements Filter { }else{ String portal_uid = ""; String cookies = request.getHeader("cookie"); + if (StringUtils.isNotEmpty(cookies)) { String[] cookievals = cookies.split(";"); @@ -90,9 +91,8 @@ public class PortalLoginBeforeFilter implements Filter { if (!"".equals(cookval) && cookval.contains("=")) { String key = cookval.substring(0, cookval.indexOf("=")).trim(); String value = cookval.substring(cookval.indexOf("=") + 1).trim(); - //bb.writeLog("key:"+key); //bb.writeLog("value:"+value); - if ("SESSION".equalsIgnoreCase(key)) { + if ("SESSION".equals(key)) { portal_uid = value; //bb.writeLog("portal_uid8888:"+portal_uid); } @@ -122,7 +122,7 @@ public class PortalLoginBeforeFilter implements Filter { { // bb.writeLog("weaver_uid <> uid portal_status:"); String msg = httpRequestUtil.doGetHttp(portalUserAuth,portal_uid); - bb.writeLog("msg:"+msg); + if (!"".equals(msg)) { JSONObject jsonObject = JSONObject.parseObject(msg); @@ -133,8 +133,28 @@ public class PortalLoginBeforeFilter implements Filter { JSONObject resultObject = jsonObject.getJSONObject("resultObject"); String staffCode = resultObject.getString("staffCode"); httpRequestUtil.userSessionFilter(request,response, application, staffCode, portal_uid); + }else{ + try{ + bb.writeLog("requestURL1:"+requestURL); + bb.writeLog("requestURI1:"+request.getRequestURI()); + bb.writeLog("remoteAddr1:"+request.getRemoteAddr()); + bb.writeLog("cookies1:"+cookies); + bb.writeLog("msg1:"+msg); + }catch (Exception e){ + + } } // Util.setCookie(response, "portalStatus", resultCode, -1); + } + }else{ + try{ + bb.writeLog("requestURL12:"+requestURL); + bb.writeLog("requestURI12:"+request.getRequestURI()); + bb.writeLog("remoteAddr12:"+request.getRemoteAddr()); + bb.writeLog("cookies12:"+cookies); + bb.writeLog("msg12:"+msg); + }catch (Exception e){ + } } }else{ @@ -154,8 +174,28 @@ public class PortalLoginBeforeFilter implements Filter { JSONObject resultObject = jsonObject.getJSONObject("resultObject"); String staffCode = resultObject.getString("staffCode"); httpRequestUtil.userSessionFilter(request,response, application, staffCode, portal_uid); + }else{ + try{ + bb.writeLog("requestURL2:"+requestURL); + bb.writeLog("requestURI2:"+request.getRequestURI()); + bb.writeLog("remoteAddr2:"+request.getRemoteAddr()); + bb.writeLog("cookies2:"+cookies); + bb.writeLog("msg2:"+msg); + }catch (Exception e){ + + } } // Util.setCookie(response, "portalStatus", resultCode, -1); + } + }else{ + try{ + bb.writeLog("requestURL22:"+requestURL); + bb.writeLog("requestURI22:"+request.getRequestURI()); + bb.writeLog("remoteAddr22:"+request.getRemoteAddr()); + bb.writeLog("cookies22:"+cookies); + bb.writeLog("msg22:"+msg); + }catch (Exception e){ + } } } @@ -174,8 +214,28 @@ public class PortalLoginBeforeFilter implements Filter { JSONObject resultObject = jsonObject.getJSONObject("resultObject"); String staffCode = resultObject.getString("staffCode"); httpRequestUtil.userSessionFilter(request,response, application, staffCode, portal_uid); + }else{ + try{ + bb.writeLog("requestURL3:"+requestURL); + bb.writeLog("requestURI3:"+request.getRequestURI()); + bb.writeLog("remoteAddr3:"+request.getRemoteAddr()); + bb.writeLog("cookies3:"+cookies); + bb.writeLog("msg3:"+msg); + }catch (Exception e){ + + } } // Util.setCookie(response, "portalStatus", resultCode, -1); + } + }else{ + try{ + bb.writeLog("requestURL32:"+requestURL); + bb.writeLog("requestURI32:"+request.getRequestURI()); + bb.writeLog("remoteAddr32:"+request.getRemoteAddr()); + bb.writeLog("cookies32:"+cookies); + bb.writeLog("msg32:"+msg); + }catch (Exception e){ + } } } diff --git a/src/weaver/interfaces/dito/monitor/SendPortalMonitorArchvingUtil.java b/src/weaver/interfaces/dito/monitor/SendPortalMonitorArchvingUtil.java new file mode 100644 index 00000000..6060c435 --- /dev/null +++ b/src/weaver/interfaces/dito/monitor/SendPortalMonitorArchvingUtil.java @@ -0,0 +1,214 @@ +package weaver.interfaces.dito.monitor; + +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SendPortalMonitorArchvingUtil { + + /*** + * + * @param requestids + * @return + */ + public List> queryRequestUserDataByArchving(String requestids){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + List> list = new ArrayList>(); + Map map = null; + try{ + String sql =" select t2.userid,t2.requestid "+ + " from workflow_requestbase t1 " + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '') \n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11'))\n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid in("+requestids+") "; + + bb.writeLog("queryRequestRemarkByArchving-sql:"+sql); + + rs.execute(sql); + while (rs.next()){ + String userid = Util.null2String(rs.getString("userid")); + String requestid = Util.null2String(rs.getString("requestid")); + map = new HashMap(); + map.put("userid",userid); + map.put("requestid",requestid); + list.add(map); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryRequestRemarkByArchving-e:"+e); + } + + return list; + + } + + + /** + * + * @param userList + * @return + */ + public List> queryWorkflowRemarkByRequestid(List> userList){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + List> list = new ArrayList>(); + Map map = null ; + for(int i = 0;i userMap = userList.get(i); + String requestid = Util.null2String(userMap.get("requestid")); + String current_userid = Util.null2String(userMap.get("userid")); + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8,9) \n" + + " and t.preisremark not in (18)\n" + + " and t.requestid in("+requestid +") and t.userid in("+current_userid+") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowCopyToByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + } + bb.writeLog("queryWorkflowCopyToByRequestid-list:"+list.size()); + return list; + } + + + /*** + * + * @param userList + * @return + */ + public List> queryWorkflowForwardByRequestid(List> userList){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + List> list = new ArrayList>(); + Map map = null ; + for(int i = 0;i userMap = userList.get(i); + String requestid = Util.null2String(userMap.get("requestid")); + String current_userid = Util.null2String(userMap.get("userid")); + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark = 1 \n" + + " and t.requestid in("+requestid +") and t.userid in("+current_userid+") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowForwardByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + bb.writeLog("queryWorkflowForwardByRequestid-list:"+list.size()); + } + + return list; + } + + + /*** + * + * @param userList + * @return + */ + public List> queryWorkflowAtByRequestid(List> userList){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + List> list = new ArrayList>(); + Map map = null ; + for(int i = 0;i userMap = userList.get(i); + String requestid = Util.null2String(userMap.get("requestid")); + String current_userid = Util.null2String(userMap.get("userid")); + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8) and t.preisremark in (18) \n" + + " and t.requestid in("+requestid +") and t.userid in("+current_userid+") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowAtByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + bb.writeLog("queryWorkflowAtByRequestid-list:" + list.size()); + } + return list; + } + + +} diff --git a/src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java b/src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java new file mode 100644 index 00000000..dcc151a1 --- /dev/null +++ b/src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java @@ -0,0 +1,573 @@ +package weaver.interfaces.dito.monitor; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.TimeUtil; +import weaver.general.Util; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SendPortalMonitorDeleteUtil { + + /** + * + * @param requestid + */ + public List> queryWorkflowCopyToByRequestid(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowCopyToByRequestid-requestid:"+requestid); + List> list = new ArrayList>(); + Map map = null ; + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8,9) \n" + + " and t.preisremark not in (18)\n" + + " and t.requestid in("+requestid +") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowCopyToByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + + list.add(map); + } + bb.writeLog("queryWorkflowCopyToByRequestid-list:"+list.size()); + return list; + } + + /** + * + * @param list + * @param loginid + */ + public void monitorFinishedWorkflowCopyToByRequestid(List> list,String loginid,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-loginid:"+loginid); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-userid:"+userid); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-nodeid:"+nodeid); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + monitorFinishedWorkflowCopyToByUserid(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); + } + } + } + + + /*** + * + * @param requestid + * @param userid + * @param nodeid + * @param loginid + * @param workflowname + * @param requestname + * @param nodename + * @param notes + */ + private void monitorFinishedWorkflowCopyToByUserid(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("monitorFinishedWorkflowCopyToByUserid-requestid:"+requestid); + String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.monitorFinishedWorkflowCopyToByUserid" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String portal_todourl = Constants.portal_todourl; + String username = Constants.username; + String passwd = Constants.passwd; + String center = Constants.center; + String bpm_workflowurl = Constants.bpm_workflowurl; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + +// String objectAction = "0" ; +// String objectType = "0"; +// String objectId = "" ; + + JSONObject requestObject = new JSONObject(); + try { + + String createdate = TimeUtil.getCurrentDateString(); + String createtime = TimeUtil.getCurrentTimeString(); + + String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + requestObject.put("center",center); + requestObject.put("title",requestname); + requestObject.put("creator",loginid); + requestObject.put("taskCode", requestid+"_cs_"+userid); + requestObject.put("nodeId",nodeid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",createdate+" "+createtime); + requestObject.put("messageTitle",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + +// JSONArray taskObjectList = new JSONArray(); +// JSONObject taskObject = new JSONObject(); +// +// String objectCode = loginid ; +// String operatorCode = loginid ; +// taskObject.put("objectAction",objectAction); +// taskObject.put("objectType",objectType); +// taskObject.put("objectCode",objectCode); +// taskObject.put("objectId",objectId); +// taskObject.put("operatorCode",operatorCode); +// taskObjectList.add(taskObject); +// requestObject.put("taskObjectList",taskObjectList); + + bb.writeLog("monitorFinishedWorkflowCopyToByUserid-requestObject:"+requestObject.toJSONString()); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("monitorFinishedWorkflowCopyToByUserid-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /*** + * + * @param requestid + */ + public List> queryWorkflowForwardByRequestid(String requestid){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowForwardByRequestid-requestid:"+requestid); + + List> list = new ArrayList>(); + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark = 1 \n" + + " and t.requestid in("+requestid +") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowForwardByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + bb.writeLog("queryWorkflowForwardByRequestid-list:"+list.size()); + } + + return list; + } + + + /*** + * + * @param list + * @param loginid + */ + public void monitorFinishedWorkflowForwardByRequestid(List> list,String loginid,String notes){ + + BaseBean bb = new BaseBean(); + bb.writeLog("monitorFinishedWorkflowForwardByRequestid-loginid:"+loginid); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-userid:"+userid); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-nodeid:"+nodeid); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + monitorFinishedWorkflowForwardByUserId(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); + } + + } + } + + + /*** + * + * @param requestid + * @param userid + * @param nodeid + * @param workcode + * @param workflowname + * @param requestname + * @param nodename + */ + private void monitorFinishedWorkflowForwardByUserId(String requestid,String userid,String nodeid,String workcode,String workflowname,String requestname,String nodename,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("monitorFinishedWorkflowForwardByUserId-requestid:"+requestid); + +// String notes = "流程页面删除后,删除未读的转发数据"; + String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.monitorFinishedWorkflowForwardByUserId" ; + String resultCode = "" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl"); + String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl"); + String portal_todourl = PropBean.getUfPropValue("portal_todourl"); + String username = PropBean.getUfPropValue("username"); + String passwd = PropBean.getUfPropValue("passwd"); + String center = PropBean.getUfPropValue("center"); + String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + String objectAction = "0" ; + String objectType = "0"; + String objectId = "" ; + String nextNodeUserIds = ""; + + JSONObject requestObject = new JSONObject(); + try { + + String createdate = TimeUtil.getCurrentDateString(); + String createtime = TimeUtil.getCurrentTimeString(); + +// String workcode = ""; +// if(StringUtils.isNotBlank(forwardNodeUserId)){ +// String sql = " select * from (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + forwardNodeUserId + "'"; +// rs.executeQuery(sql); +// while (rs.next()) { +// workcode = Util.null2String(rs.getString("loginid")); +// } +// } +// bb.writeLog("monitorFinishedWorkflowForwardByUserId-workcode:"+workcode); +// String forwardNodeName = "" ; +// if(StringUtils.isNotBlank(forwardNodeId)){ +// rs.executeQuery(" select nodename from workflow_nodebase where id = ?",forwardNodeId); +// if (rs.next()){ +// forwardNodeName = Util.null2String(rs.getString("nodename")); +// } +// } +// bb.writeLog("monitorFinishedWorkflowForwardByUserId-forwardNodeName:"+forwardNodeName); + + String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + requestObject.put("center",center); + requestObject.put("title",requestname); + requestObject.put("creator",workcode); + requestObject.put("taskCode", "weaver"+requestid+"_zf_"+userid); + requestObject.put("nodeId",nodeid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",createdate+" "+createtime); + requestObject.put("messageTitle",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + +// JSONArray taskObjectList = new JSONArray(); +// JSONObject taskObject = new JSONObject(); +// String objectCode = workcode ; +// String operatorCode = workcode ; +// taskObject.put("objectAction",objectAction); +// taskObject.put("objectType",objectType); +// taskObject.put("objectCode",objectCode); +// taskObject.put("objectId",objectId); +// taskObject.put("operatorCode",operatorCode); +// taskObjectList.add(taskObject); +// requestObject.put("taskObjectList",taskObjectList); +// bb.writeLog("monitorFinishedWorkflowForwardByUserId-requestObject:"+requestObject.toJSONString()); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("monitorFinishedWorkflowForwardByUserId-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds,notes); + + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,nextNodeUserIds,notes); + + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /*** + * @ + * @param requestid + */ + public List> queryWorkflowAtByRequestid(String requestid) { + + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowAtByRequestid-requestid:"+requestid); + + List> list = new ArrayList>(); + Map map = null; + if (StringUtils.isNotBlank(requestid)) { + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8) and t.preisremark in (18) \n" + + " and t.requestid in("+requestid +") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowAtByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + + bb.writeLog("queryWorkflowAtByRequestid-list:" + list.size()); + } + + return list; + + } + + + public void monitorFinishedWorkflowAtByRequestid(List> list,String loginid,String notes){ + + BaseBean bb = new BaseBean(); + bb.writeLog("monitorFinishedWorkflowAtByRequestid-loginid:" + loginid); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-userid:"+userid); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-nodeid:"+nodeid); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + monitorFinishedWorkflowAtByUserId(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); + } + } + } + + + /*** + * + * @param requestid + * @param userid + * @param nodeid + * @param loginid + * @param workflowname + * @param requestname + * @param nodename + */ + private void monitorFinishedWorkflowAtByUserId(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes){ + + BaseBean bb = new BaseBean(); + bb.writeLog("monitorFinishedWorkflowAtByUserId-requestid:"+requestid); + +// String notes = "流程监控删除后,删除未读的@数据"; + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + + String zhjkbs = "com.customization.dito.sendtodo.SendPortalWithDeleteUtil.completeRequestAtToReadData" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3"; + String terminal = "1" ; + String taskType = "1"; + + try { + + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("center", center); + requestObject.put("title", requestname); + requestObject.put("taskType", taskType); + requestObject.put("actionType", actionType); + requestObject.put("createDate", processTime); + requestObject.put("messageTitle",requestname); + requestObject.put("messageContent", requestname); + requestObject.put("terminal", terminal); + requestObject.put("urlPc", urlPc); + requestObject.put("urlDing", urlDing); + requestObject.put("ticketType", workflowname); + requestObject.put("creator",loginid); + requestObject.put("urlApp",urlApp); + requestObject.put("nodeName",nodename); + requestObject.put("nodeId",nodeid); + requestObject.put("taskCode", "weaver"+requestid+"_at_"+userid); + + String auth = username + ":" + passwd; + bb.writeLog("completeRequestAtToReadData--requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + bb.writeLog("completeRequestAtToReadData-msgdata:" + msgdata); + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,userid,notes); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid,notes); + } + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/src/weaver/interfaces/dito/monitor/SendPortalMonitorUtil.java b/src/weaver/interfaces/dito/monitor/SendPortalMonitorUtil.java index 36dd6ec1..3d5bbdd1 100644 --- a/src/weaver/interfaces/dito/monitor/SendPortalMonitorUtil.java +++ b/src/weaver/interfaces/dito/monitor/SendPortalMonitorUtil.java @@ -38,9 +38,8 @@ public class SendPortalMonitorUtil { String[] lcids = requestids.split(","); for (int i = 0; i < lcids.length; i++) { String requestid = lcids[i]; + bb.writeLog("SendPortalMonitorUtil1--monitorDelete--requestid:"+requestid); monitorDelete4Requestid(requestid,userid); - monitorFinishedWorkflowCopyToByRequestid(requestid); - monitorFinishedWorkflowForwardByRequestid(requestid); } } } @@ -52,6 +51,7 @@ public class SendPortalMonitorUtil { */ public void monitorDelete4Requestid(String requestid,String userid){ + String notes = "流程监控删除后,删除待办数据"; String portal_todourl = Constants.portal_todourl; String bpm_app_workflowurl = Constants.bpm_app_workflowurl; String username = Constants.username; @@ -68,7 +68,7 @@ public class SendPortalMonitorUtil { JSONObject requestObject = new JSONObject(); RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); - bb.writeLog("SendPortalMonitorUtil--monitorDelete4Requestid"); + bb.writeLog("SendPortalMonitorUtil--monitorDelete4Requestid:"+requestid); String terminal = "1" ; String taskType = "0"; String actionType = "3" ; @@ -136,10 +136,10 @@ public class SendPortalMonitorUtil { String resultCode = msgObject.getString("resultCode"); if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,""); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); } } } @@ -154,108 +154,108 @@ public class SendPortalMonitorUtil { * @param requestid * @param second */ - public void againMonitorDelete(String requestid,String userid,int second){ - String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.againMonitorDelete" ; - - String portal_todourl = Constants.portal_todourl; - String bpm_app_workflowurl = Constants.bpm_app_workflowurl; - String username = Constants.username; - String passwd = Constants.passwd; - String bpm_workflowurl = Constants.bpm_workflowurl; - String center = Constants.center; - String bpm_app_requesturl = Constants.bpm_app_requesturl; - - try { - if(second > 0){ - Thread.sleep(second); - } - } catch (InterruptedException e) { - e.printStackTrace(); - } - - SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); - HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); - String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); - RecordSet rs = new RecordSet(); - BaseBean bb = new BaseBean(); - bb.writeLog("SendPortalMonitorUtil--againMonitorDelete"); - String terminal = "1" ; - String taskType = "0"; - String actionType = "3" ; - try { - - String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; - String replace = bpm_app_workflowurl.replace("/bpm", ""); - String urlDing = replace+bpm_app_requesturl+requestid; - String urlApp = replace+bpm_app_requesturl+requestid; - - if(StringUtils.isNotEmpty(mobileJumpUrl)){ - urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); - urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); - } - bb.writeLog("againMonitorDelete-urlDing", urlDing); - - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("againMonitorDelete--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - } - - requestObject.put("center",center); - requestObject.put("title",requestname); - requestObject.put("taskCode","weaver"+requestid); - requestObject.put("nodeId",nodeId); - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",processTime); - requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlApp",urlApp); - requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",workflowname); - - String auth = username + ":" + passwd; - bb.writeLog("againMonitorDelete---requestObject:"+requestObject.toJSONString()); - String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); - bb.writeLog("againMonitorDelete-msgdata:"+msgdata); - Map map = new HashMap<>(); - if(!"".equals(msgdata)){ - JSONObject msgObject = JSONObject.parseObject(msgdata); - //{"resultCode":"1","resultMsg":"No Result"} - if(msgObject.containsKey("resultCode")){ - String resultCode = msgObject.getString("resultCode"); - if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,""); - }else{ - String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } +// public void againMonitorDelete(String requestid,String userid,int second){ +// String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.againMonitorDelete" ; +// +// String portal_todourl = Constants.portal_todourl; +// String bpm_app_workflowurl = Constants.bpm_app_workflowurl; +// String username = Constants.username; +// String passwd = Constants.passwd; +// String bpm_workflowurl = Constants.bpm_workflowurl; +// String center = Constants.center; +// String bpm_app_requesturl = Constants.bpm_app_requesturl; +// +// try { +// if(second > 0){ +// Thread.sleep(second); +// } +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } +// +// SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); +// HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); +// String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); +// JSONObject requestObject = new JSONObject(); +// RecordSet rs = new RecordSet(); +// BaseBean bb = new BaseBean(); +// bb.writeLog("SendPortalMonitorUtil--againMonitorDelete"); +// String terminal = "1" ; +// String taskType = "0"; +// String actionType = "3" ; +// try { +// +// String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); +// String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; +// String replace = bpm_app_workflowurl.replace("/bpm", ""); +// String urlDing = replace+bpm_app_requesturl+requestid; +// String urlApp = replace+bpm_app_requesturl+requestid; +// +// if(StringUtils.isNotEmpty(mobileJumpUrl)){ +// urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); +// urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); +// } +// bb.writeLog("againMonitorDelete-urlDing", urlDing); +// +// String requestname = "" ; +// String workflowname = "" ; +// String nodeId = "" ; +// String nodeName = "" ; +// String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + +// " from workflow_requestbase t1\n" + +// " inner join workflow_base t3 on t1.workflowid = t3.id\n" + +// " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and t1.requestid = "+requestid ; +// +// bb.writeLog("againMonitorDelete--sql2:"+sql); +// +// rs.executeQuery(sql); +// if (rs.next()){ +// requestname = Util.null2String(rs.getString("requestname")) ; +// workflowname = Util.null2String(rs.getString("workflowname")) ; +// nodeId = Util.null2String(rs.getString("nodeid")) ; +// nodeName = Util.null2String(rs.getString("nodeName")) ; +// } +// +// requestObject.put("center",center); +// requestObject.put("title",requestname); +// requestObject.put("taskCode","weaver"+requestid); +// requestObject.put("nodeId",nodeId); +// requestObject.put("taskType",taskType); +// requestObject.put("actionType",actionType); +// requestObject.put("createDate",processTime); +// requestObject.put("messageTitle",getShortMessageTitle(requestname)); +// requestObject.put("messageContent",requestname); +// requestObject.put("terminal",terminal); +// requestObject.put("urlPc",urlPc); +// requestObject.put("urlApp",urlApp); +// requestObject.put("urlDing",urlDing); +// requestObject.put("nodeName",nodeName); +// requestObject.put("ticketType",workflowname); +// +// String auth = username + ":" + passwd; +// bb.writeLog("againMonitorDelete---requestObject:"+requestObject.toJSONString()); +// String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); +// bb.writeLog("againMonitorDelete-msgdata:"+msgdata); +// Map map = new HashMap<>(); +// if(!"".equals(msgdata)){ +// JSONObject msgObject = JSONObject.parseObject(msgdata); +// //{"resultCode":"1","resultMsg":"No Result"} +// if(msgObject.containsKey("resultCode")){ +// String resultCode = msgObject.getString("resultCode"); +// if("0".equals(resultCode)){ +// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,""); +// }else{ +// String resultmsg = msgObject.getString("resultMsg"); +// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); +// } +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } /*** * 流程强制归档 @@ -857,8 +857,6 @@ public class SendPortalMonitorUtil { */ public void monitorIntervention(String requestid,String currentUserId){ monitorInterventionByUserId(requestid,currentUserId); - monitorFinishedWorkflowCopyToByRequestid(requestid); - monitorFinishedWorkflowForwardByRequestid(requestid); } @@ -1074,371 +1072,192 @@ public class SendPortalMonitorUtil { * * @param requestid */ - public void monitorFinishedWorkflowForwardByRequestid(String requestid){ - RecordSet rs = new RecordSet(); - BaseBean bb = new BaseBean(); - List> list = new ArrayList>(); - Map map = null ; - if(StringUtils.isNotBlank(requestid)){ - String sql =" select t.userid,t.nodeid,t.requestid \n" + - " from workflow_currentoperator t\n" + - " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + - " where t.requestid=" + requestid+ - " and (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t.isremark =1" ; - - bb.writeLog("monitorFinishedWorkflowForwardByRequestid-sql:"+sql); - rs.executeQuery(sql); - while (rs.next()){ - String nodeid = Util.null2String(rs.getString("nodeid")); - String userid = Util.null2String(rs.getString("userid")); - - map = new HashMap(); - map.put("requestid",requestid); - map.put("userid",userid); - map.put("nodeid",nodeid); - list.add(map); - } - - for(int i=0;i dataMap = list.get(i); - String newrequestid = Util.null2String(rs.getString("requestid")); - String userid = Util.null2String(rs.getString("userid")); - String nodeid = Util.null2String(rs.getString("nodeid")); - - bb.writeLog("monitorFinishedWorkflowForwardByRequestid-sql:"+sql); - bb.writeLog("monitorFinishedWorkflowForwardByRequestid-sql:"+sql); - if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ - monitorFinishedWorkflowForwardByUserId(newrequestid,userid,nodeid); - } - } - } - } - - /*** - * - * @param requestid - * @param forwardNodeUserId - * @param forwardNodeId - */ - public void monitorFinishedWorkflowForwardByUserId(String requestid,String forwardNodeUserId,String forwardNodeId){ - - String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.monitorFinishedWorkflowForwardByUserId" ; - String resultCode = "" ; - HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); - SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); - - String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl"); - String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl"); - String portal_todourl = PropBean.getUfPropValue("portal_todourl"); - String username = PropBean.getUfPropValue("username"); - String passwd = PropBean.getUfPropValue("passwd"); - String center = PropBean.getUfPropValue("center"); - String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); - String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - - BaseBean bb = new BaseBean(); - RecordSet rs = new RecordSet(); - - String actionType = "3" ; - String terminal = "1" ; - String taskType = "1"; //0 – 待办 1 –待阅 - String objectAction = "0" ; - String objectType = "0"; - String objectId = "" ; - String nextNodeUserIds = ""; - - JSONObject requestObject = new JSONObject(); - try { - - String createdate = TimeUtil.getCurrentDateString(); - String createtime = TimeUtil.getCurrentTimeString(); - - String workcode = ""; - if(StringUtils.isNotBlank(forwardNodeUserId)){ - String sql = " select * from (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + forwardNodeUserId + "'"; - rs.executeQuery(sql); - while (rs.next()) { - workcode = Util.null2String(rs.getString("loginid")); - } - } - - bb.writeLog("monitorFinishedWorkflowForwardByUserId-workcode:"+workcode); - String forwardNodeName = "" ; - if(StringUtils.isNotBlank(forwardNodeId)){ - rs.executeQuery(" select nodename from workflow_nodebase where id = ?",forwardNodeId); - if (rs.next()){ - forwardNodeName = Util.null2String(rs.getString("nodename")); - } - } - bb.writeLog("monitorFinishedWorkflowForwardByUserId-forwardNodeName:"+forwardNodeName); - - String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; - String replace = bpm_app_workflowurl.replace("/bpm", ""); - - String urlDing = replace+bpm_app_requesturl+requestid; - String urlApp = replace+bpm_app_requesturl+requestid; - if(StringUtils.isNotEmpty(mobileJumpUrl)){ - urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); - urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); - } - - - String requestname = ""; - String workflowname = "" ; - - String sql =" select t1.requestname,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = " + requestid; - - rs.execute(sql); - if (rs.next()) { - workflowname = Util.null2String(rs.getString("workflowname")) ; - requestname = Util.null2String(rs.getString("requestname")) ; - } - - requestObject.put("center",center); - requestObject.put("title",requestname); - requestObject.put("creator",workcode); - //requestObject.put("taskCode",requestid+"_cs_"+nodeid+"_"+userid); - requestObject.put("taskCode", requestid+"_zf_"+forwardNodeId); - requestObject.put("nodeId",forwardNodeId); - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",createdate+" "+createtime); - requestObject.put("messageTitle",requestname); - requestObject.put("messageContent",requestname); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlApp",urlApp); - requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",forwardNodeName); - requestObject.put("ticketType",workflowname); - - - JSONArray taskObjectList = new JSONArray(); - JSONObject taskObject = new JSONObject(); - - String objectCode = workcode ; - String operatorCode = workcode ; - taskObject.put("objectAction",objectAction); - taskObject.put("objectType",objectType); - taskObject.put("objectCode",objectCode); - taskObject.put("objectId",objectId); - taskObject.put("operatorCode",operatorCode); - taskObjectList.add(taskObject); - - requestObject.put("taskObjectList",taskObjectList); - bb.writeLog("monitorFinishedWorkflowForwardByUserId-requestObject:"+requestObject.toJSONString()); - - String auth = username + ":" + passwd; - String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); - bb.writeLog("monitorFinishedWorkflowForwardByUserId-msgdata:"+msgdata); - if(StringUtils.isNotEmpty(msgdata)){ - JSONObject msgObject = JSONObject.parseObject(msgdata); - if(msgObject.containsKey("resultCode")){ - resultCode = msgObject.getString("resultCode"); - if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,forwardNodeId,forwardNodeName,forwardNodeUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds); - - }else{ - String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,forwardNodeId,forwardNodeName,forwardNodeUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,nextNodeUserIds); - - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - - /** - * - * @param requestid - */ - public void monitorFinishedWorkflowCopyToByRequestid(String requestid){ - RecordSet rs = new RecordSet(); - BaseBean bb = new BaseBean(); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-requestid:"+requestid); - List> list = new ArrayList>(); - Map map = null ; - - String sql =" select t.userid,t.nodeid,t.requestid \n" + - " from workflow_currentoperator t\n" + - " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + - " where t.requestid=" + requestid+ - " and (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t.isremark in (8,9) " ; - rs.executeQuery(sql); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-sql:"+sql); - - while (rs.next()){ - String nodeid = Util.null2String(rs.getString("nodeid")); - String userid = Util.null2String(rs.getString("userid")); - - map = new HashMap(); - map.put("requestid",requestid); - map.put("userid",userid); - map.put("nodeid",nodeid); - list.add(map); - } - - for(int i=0;i dataMap = list.get(i); - String newrequestid = Util.null2String(dataMap.get("requestid")); - String userid = Util.null2String(dataMap.get("userid")); - String nodeid = Util.null2String(dataMap.get("nodeid")); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-userid:"+userid); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-nodeid:"+nodeid); - - if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ - monitorFinishedWorkflowCopyToByUserid(newrequestid,userid,nodeid); - } - } - } - +// public void monitorFinishedWorkflowForwardByRequestid(String requestid){ +// +// RecordSet rs = new RecordSet(); +// BaseBean bb = new BaseBean(); +// +// List> list = new ArrayList>(); +// Map map = null ; +// if(StringUtils.isNotBlank(requestid)){ +// String sql =" select t.userid,t.nodeid,t.requestid \n" + +// " from workflow_currentoperator t\n" + +// " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + +// " where t.requestid=" + requestid+ +// " and (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and t.isremark =1 " ; +// +// bb.writeLog("monitorFinishedWorkflowForwardByRequestid-sql:"+sql); +// rs.executeQuery(sql); +// while (rs.next()){ +// String nodeid = Util.null2String(rs.getString("nodeid")); +// String userid = Util.null2String(rs.getString("userid")); +// +// map = new HashMap(); +// map.put("requestid",requestid); +// map.put("userid",userid); +// map.put("nodeid",nodeid); +// list.add(map); +// } +// +// bb.writeLog("monitorFinishedWorkflowForwardByRequestid-list:"+list.size()); +// +// for(int i=0;i dataMap = list.get(i); +// String newrequestid = Util.null2String(dataMap.get("requestid")); +// String userid = Util.null2String(dataMap.get("userid")); +// String nodeid = Util.null2String(dataMap.get("nodeid")); +// +// bb.writeLog("monitorFinishedWorkflowForwardByRequestid-userid:"+userid); +// bb.writeLog("monitorFinishedWorkflowForwardByRequestid-nodeid:"+nodeid); +// bb.writeLog("monitorFinishedWorkflowForwardByRequestid-newrequestid:"+newrequestid); +// +// if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ +// monitorFinishedWorkflowForwardByUserId(newrequestid,userid,nodeid); +// } +// } +// } +// } /*** * * @param requestid - * @param copyNodeUserId - * @param copyNodeid + * @param userid + * @param nodeid */ - public void monitorFinishedWorkflowCopyToByUserid(String requestid,String copyNodeUserId,String copyNodeid){ - - String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.monitorFinishedWorkflowCopyToByUserid" ; - - HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); - SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); - - String bpm_app_workflowurl = Constants.bpm_app_workflowurl; - String bpm_app_requesturl = Constants.bpm_app_requesturl; - String portal_todourl = Constants.portal_todourl; - String username = Constants.username; - String passwd = Constants.passwd; - String center = Constants.center; - String bpm_workflowurl = Constants.bpm_workflowurl; - String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - - BaseBean bb = new BaseBean(); - RecordSet rs = new RecordSet(); - - String actionType = "3" ; - String terminal = "1" ; - String taskType = "1"; //0 – 待办 1 –待阅 - String objectAction = "0" ; - String objectType = "0"; - String objectId = "" ; - - JSONObject requestObject = new JSONObject(); - try { - - String createdate = TimeUtil.getCurrentDateString(); - String createtime = TimeUtil.getCurrentTimeString(); - - String workcode = ""; - if(StringUtils.isNotBlank(copyNodeUserId)){ - String sql = " select * from (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + copyNodeUserId + "'"; - rs.executeQuery(sql); - if (rs.next()) { - workcode = Util.null2String(rs.getString("loginid")); - } - } - - bb.writeLog("monitorFinishedWorkflowCopyToByUserid-workcode:"+workcode); - - String copyNodeName = "" ; - if(StringUtils.isNotBlank(copyNodeid)){ - rs.executeQuery(" select nodename from workflow_nodebase where id = ?",copyNodeid); - if (rs.next()){ - copyNodeName = Util.null2String(rs.getString("nodename")); - } - } - bb.writeLog("monitorFinishedWorkflowCopyToByUserid-copyNodeName:"+copyNodeName); - - String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; - String replace = bpm_app_workflowurl.replace("/bpm", ""); - String urlDing = replace+bpm_app_requesturl+requestid; - String urlApp = replace+bpm_app_requesturl+requestid; - if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ - urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); - urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); - } - - String requestname = ""; - String workflowname = "" ; - - String sql =" select t1.requestname,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = " + requestid; - - rs.execute(sql); - if (rs.next()) { - workflowname = Util.null2String(rs.getString("workflowname")) ; - requestname = Util.null2String(rs.getString("requestname")) ; - } - - - requestObject.put("center",center); - requestObject.put("title",requestname); - requestObject.put("creator",workcode); - requestObject.put("taskCode", requestid+"_cs_"+copyNodeUserId); - requestObject.put("nodeId",copyNodeid); - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",createdate+" "+createtime); - requestObject.put("messageTitle",requestname); - requestObject.put("messageContent",requestname); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlApp",urlApp); - requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",copyNodeName); - requestObject.put("ticketType",workflowname); - - - JSONArray taskObjectList = new JSONArray(); - JSONObject taskObject = new JSONObject(); - - String objectCode = workcode ; - String operatorCode = workcode ; - taskObject.put("objectAction",objectAction); - taskObject.put("objectType",objectType); - taskObject.put("objectCode",objectCode); - taskObject.put("objectId",objectId); - taskObject.put("operatorCode",operatorCode); - taskObjectList.add(taskObject); - - requestObject.put("taskObjectList",taskObjectList); - bb.writeLog("monitorFinishedWorkflowCopyToByUserid-requestObject:"+requestObject.toJSONString()); - - String auth = username + ":" + passwd; - String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); - bb.writeLog("monitorFinishedWorkflowCopyToByUserid-msgdata:"+msgdata); - if(StringUtils.isNotEmpty(msgdata)){ - JSONObject msgObject = JSONObject.parseObject(msgdata); - if(msgObject.containsKey("resultCode")){ - String resultCode = msgObject.getString("resultCode"); - if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,copyNodeid,copyNodeName,copyNodeUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,""); - - }else{ - String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,copyNodeid,copyNodeName,copyNodeUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); - - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } +// public void monitorFinishedWorkflowForwardByUserId(String requestid,String userid,String nodeid){ +// +// String notes = "流程页面删除后,删除未读的转发数据"; +// String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.monitorFinishedWorkflowForwardByUserId" ; +// String resultCode = "" ; +// HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); +// SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); +// +// String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl"); +// String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl"); +// String portal_todourl = PropBean.getUfPropValue("portal_todourl"); +// String username = PropBean.getUfPropValue("username"); +// String passwd = PropBean.getUfPropValue("passwd"); +// String center = PropBean.getUfPropValue("center"); +// String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); +// String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); +// +// BaseBean bb = new BaseBean(); +// RecordSet rs = new RecordSet(); +// +// String actionType = "3" ; +// String terminal = "1" ; +// String taskType = "1"; //0 – 待办 1 –待阅 +// String objectAction = "0" ; +// String objectType = "0"; +// String objectId = "" ; +// String nextNodeUserIds = ""; +// +// JSONObject requestObject = new JSONObject(); +// try { +// +// String createdate = TimeUtil.getCurrentDateString(); +// String createtime = TimeUtil.getCurrentTimeString(); +// +// String workcode = ""; +// if(StringUtils.isNotBlank(userid)){ +// String sql = " select * from (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + forwardNodeUserId + "'"; +// rs.executeQuery(sql); +// while (rs.next()) { +// workcode = Util.null2String(rs.getString("loginid")); +// } +// } +// +// bb.writeLog("monitorFinishedWorkflowForwardByUserId-workcode:"+workcode); +// String forwardNodeName = "" ; +// if(StringUtils.isNotBlank(nodeid)){ +// rs.executeQuery(" select nodename from workflow_nodebase where id = ?",nodeid); +// if (rs.next()){ +// forwardNodeName = Util.null2String(rs.getString("nodename")); +// } +// } +// bb.writeLog("monitorFinishedWorkflowForwardByUserId-forwardNodeName:"+forwardNodeName); +// +// String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; +// String replace = bpm_app_workflowurl.replace("/bpm", ""); +// +// String urlDing = replace+bpm_app_requesturl+requestid; +// String urlApp = replace+bpm_app_requesturl+requestid; +// if(StringUtils.isNotEmpty(mobileJumpUrl)){ +// urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); +// urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); +// } +// +// +// String requestname = ""; +// String workflowname = "" ; +// +// String sql =" select t1.requestname,t3.workflowname\n" + +// " from workflow_requestbase t1\n" + +// " inner join workflow_base t3 on t1.workflowid = t3.id\n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and t1.requestid = " + requestid; +// +// rs.execute(sql); +// if (rs.next()) { +// workflowname = Util.null2String(rs.getString("workflowname")) ; +// requestname = Util.null2String(rs.getString("requestname")) ; +// } +// +// requestObject.put("center",center); +// requestObject.put("title",requestname); +// requestObject.put("creator",workcode); +// requestObject.put("taskCode", "weaver"+requestid+"_zf_"+userid); +// requestObject.put("nodeId",forwardNodeId); +// requestObject.put("taskType",taskType); +// requestObject.put("actionType",actionType); +// requestObject.put("createDate",createdate+" "+createtime); +// requestObject.put("messageTitle",requestname); +// requestObject.put("messageContent",requestname); +// requestObject.put("terminal",terminal); +// requestObject.put("urlPc",urlPc); +// requestObject.put("urlApp",urlApp); +// requestObject.put("urlDing",urlDing); +// requestObject.put("nodeName",forwardNodeName); +// requestObject.put("ticketType",workflowname); +// +// +// JSONArray taskObjectList = new JSONArray(); +// JSONObject taskObject = new JSONObject(); +// +// String objectCode = workcode ; +// String operatorCode = workcode ; +// taskObject.put("objectAction",objectAction); +// taskObject.put("objectType",objectType); +// taskObject.put("objectCode",objectCode); +// taskObject.put("objectId",objectId); +// taskObject.put("operatorCode",operatorCode); +// taskObjectList.add(taskObject); +// +// requestObject.put("taskObjectList",taskObjectList); +// bb.writeLog("monitorFinishedWorkflowForwardByUserId-requestObject:"+requestObject.toJSONString()); +// +// String auth = username + ":" + passwd; +// String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); +// bb.writeLog("monitorFinishedWorkflowForwardByUserId-msgdata:"+msgdata); +// if(StringUtils.isNotEmpty(msgdata)){ +// JSONObject msgObject = JSONObject.parseObject(msgdata); +// if(msgObject.containsKey("resultCode")){ +// resultCode = msgObject.getString("resultCode"); +// if("0".equals(resultCode)){ +// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,forwardNodeId,forwardNodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds,notes); +// +// }else{ +// String resultmsg = msgObject.getString("resultMsg"); +// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,forwardNodeId,forwardNodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,nextNodeUserIds,notes); +// +// } +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } } diff --git a/src/weaver/interfaces/dito/mq/RocketmqUtil.java b/src/weaver/interfaces/dito/mq/RocketmqUtil.java index 751cb163..e94b399a 100644 --- a/src/weaver/interfaces/dito/mq/RocketmqUtil.java +++ b/src/weaver/interfaces/dito/mq/RocketmqUtil.java @@ -596,6 +596,8 @@ public class RocketmqUtil { recordErrorData(dataMap); } }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("updasteSysOrgData-e:"+e); Map dataMap = new HashMap(); dataMap.put("syndate",nowDateTime); dataMap.put("reqmessage",jsonObject.toJSONString()); @@ -894,6 +896,8 @@ public class RocketmqUtil { // recordErrorData(dataMap); // } } catch (Exception e) { + e.printStackTrace(); + bb.writeLog("updateSystemUserRoleData-e:"+e); Map dataMap = new HashMap(); dataMap.put("syndate",nowDateTime); dataMap.put("reqmessage",jsonObject.toJSONString()); @@ -949,6 +953,8 @@ public class RocketmqUtil { if(postCode.startsWith("MSS_CTO")) { String systemUserCode = Util.null2String(jsonObject.get("systemUserCode")); + bb.writeLog("updateSystemUserPostData--systemUserCode:"+systemUserCode); + String orgCode = Util.null2String(jsonObject.get("orgCode")); String actType = Util.null2String(jsonObject.get("actType")); String defaultFlag = Util.null2String(jsonObject.get("defaultFlag")); @@ -991,7 +997,7 @@ public class RocketmqUtil { jobtitlesId = Util.null2String(rs.getString("id")); } } - bb.writeLog("jobtitlesId:"+jobtitlesId); + bb.writeLog("jobtitlesId:"+jobtitlesId +" userId:"+userId); if(StringUtils.isNotEmpty(jobtitlesId) && StringUtils.isNotEmpty(userId)) { @@ -1074,15 +1080,26 @@ public class RocketmqUtil { } } } - jobtitlesId = null; + + + String defaultJobTitleId = "" ; + String defaultJobCode = PropBean.getUfPropValue("defaultJobCode"); + if(StringUtils.isNotEmpty(defaultJobCode)){ + String sql = " select id from hrmjobtitles where jobtitlecode = ?" ; + rs.executeQuery(sql,new Object[]{defaultJobCode}); + if(rs.next()){ + defaultJobTitleId = Util.null2String(rs.getString("id")); + } + } + + bb.writeLog("defaultJobTitleId:"+defaultJobTitleId +" userId:"+userId); String updateUserJobSql = " update hrmresource set jobtitle=?,modified=?,modifier=? where id=? "; bb.writeLog("updateUserJobSql:"+updateUserJobSql); - - Object[] objects = new Object[]{jobtitlesId,currentDateTime,updateStaff,userId}; + Object[] objects = new Object[]{defaultJobTitleId,currentDateTime,updateStaff,userId}; boolean flag = rs.executeUpdate(updateUserJobSql,objects); - bb.writeLog(" updateUserJobFlag: "+flag); + bb.writeLog(" updateUserJobFlag2: "+flag); Map dataMap = new HashMap(); dataMap.put("syndate",nowDateTime); dataMap.put("reqmessage",jsonObject.toJSONString()); @@ -1135,6 +1152,8 @@ public class RocketmqUtil { recordErrorData(dataMapp); } }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("updateSystemUserPostData-e:"+e); Map dataMap = new HashMap(); dataMap.put("syndate",nowDateTime); dataMap.put("reqmessage",jsonObject.toJSONString()); @@ -1335,6 +1354,9 @@ public class RocketmqUtil { RolesComInfo.removeRolesCache(); }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("updasteSysRoleData-e:"+e); + Map dataMap = new HashMap(); dataMap.put("syndate",nowDateTime); dataMap.put("reqmessage",jsonObject.toJSONString()); @@ -1647,12 +1669,12 @@ public class RocketmqUtil { } } - jobTitlesComInfo = new JobTitlesComInfo(); jobTitlesComInfo.removeJobTitlesCache(); }catch (Exception e) { - + e.printStackTrace(); + bb.writeLog("updasteSysPostData--e:"+e); Map dataMap = new HashMap(); dataMap.put("syndate",nowDateTime); dataMap.put("reqmessage",jsonObject.toJSONString()); @@ -1660,7 +1682,6 @@ public class RocketmqUtil { dataMap.put("systable",tableName); dataMap.put("staffcode",sysPostCode); recordErrorData(dataMap); - } } } @@ -2183,6 +2204,8 @@ public class RocketmqUtil { recordErrorMessage(staffCode,context); } }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("updateStaffData-e:"+e); Map dataMap = new HashMap(); dataMap.put("staffcode",staffCode); dataMap.put("staffcodecount",""); @@ -2263,7 +2286,8 @@ public class RocketmqUtil { } } }catch (Exception e){ - bb.writeLog("e:"+e); + e.printStackTrace(); + bb.writeLog("recordErrorData-e:"+e); } } @@ -2312,7 +2336,7 @@ public class RocketmqUtil { } } }catch (Exception e){ - bb.writeLog("e"+e); + bb.writeLog("recordErrorMessage-e"+e); } } @@ -2356,6 +2380,7 @@ public class RocketmqUtil { } } catch (IOException e) { e.printStackTrace(); + bb.writeLog("getSysRoles--e:"+e); } return set; } @@ -2429,6 +2454,7 @@ public class RocketmqUtil { } }catch (Exception e){ e.printStackTrace(); + new BaseBean().writeLog("updateDeptMatrix-e:"+e); rs.writeLog(e); bool = false; } diff --git a/src/weaver/interfaces/dito/portal/SendRequestData2PortalInterfaces.java b/src/weaver/interfaces/dito/portal/SendRequestData2PortalInterfaces.java index 5d82e31e..cf7d3af2 100644 --- a/src/weaver/interfaces/dito/portal/SendRequestData2PortalInterfaces.java +++ b/src/weaver/interfaces/dito/portal/SendRequestData2PortalInterfaces.java @@ -191,13 +191,14 @@ public class SendRequestData2PortalInterfaces implements SendRequestStatusDataIn } } + bb.writeLog("deldatas-requestid:"+dobj.getRequestid()); bb.writeLog("deldatas-deleteRemarklist:"+deleteRemarklist.toString()); Map param = new HashMap(); param.put("requestid",dobj.getRequestid()); param.put("deleteRemarkDatas",deleteRemarklist); - new SendPortalWithDeleteCmd(param).execute(Context.getCommandComtext()); +// new SendPortalWithDeleteCmd(param).execute(Context.getCommandComtext()); // deljson.put("DelCount",deldatas.size()); // deljson.put("DelDatas",deletelist); @@ -214,7 +215,7 @@ public class SendRequestData2PortalInterfaces implements SendRequestStatusDataIn // mainboject.put("RequestDatas",jsonArray); //输入内容信息到日志文件中 /log/ecology - log.error("\n"+formatJson(mainboject.toString())); +// log.error("\n"+formatJson(mainboject.toString())); } } diff --git a/src/weaver/interfaces/dito/remark/OpenRequestRemarkAtRunnable.java b/src/weaver/interfaces/dito/remark/OpenRequestRemarkAtRunnable.java new file mode 100644 index 00000000..42d10071 --- /dev/null +++ b/src/weaver/interfaces/dito/remark/OpenRequestRemarkAtRunnable.java @@ -0,0 +1,50 @@ +package weaver.interfaces.dito.remark; + +import weaver.general.BaseBean; +import weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil; + +import java.util.List; +import java.util.Map; + +public class OpenRequestRemarkAtRunnable implements Runnable{ + + private String requestid; + private String userid; + private String loginid; + private List> remark8List; + private List> remark9List; + private List> atList; + public OpenRequestRemarkAtRunnable(String requestid, String userid, String loginid, List> remark8List,List> remark9List, List> atList){ + this.requestid = requestid; + this.userid = userid; + this.loginid = loginid; + this.remark8List = remark8List; + this.remark9List = remark9List; + this.atList = atList; + } + @Override + public void run() { + + SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); + BaseBean bb = new BaseBean(); + if(!remark8List.isEmpty() && remark8List.size()>0){ + bb.writeLog("OpenRequestRemarkAtRunnable-remark8List:"+remark8List.size()); + + String notes = "流程页面打开后,完成抄送不需提交的数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByRequestid(remark8List,loginid,notes); + } + + if(!remark9List.isEmpty() && remark9List.size()>0){ + bb.writeLog("OpenRequestRemarkAtRunnable-remark9List:"+remark9List.size()); + + String notes = "流程页面打开后,批准抄送需提交的数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByRequestid(remark9List,loginid,notes); + } + + if(!atList.isEmpty() && atList.size()>0){ + bb.writeLog("OpenRequestRemarkAtRunnable-atList:"+atList.size()); + String notes = "流程页面打开后,完成@的数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByRequestid(atList,loginid,notes); + } + } +} diff --git a/src/weaver/interfaces/dito/remark/completeRequestRemark8AtUtil.java b/src/weaver/interfaces/dito/remark/completeRequestRemark8AtUtil.java new file mode 100644 index 00000000..2fc73ebf --- /dev/null +++ b/src/weaver/interfaces/dito/remark/completeRequestRemark8AtUtil.java @@ -0,0 +1,69 @@ +package weaver.interfaces.dito.remark; + +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class completeRequestRemark8AtUtil { + + public void completeRequestRemarkAtData(String requestid,int userid,String loginid,String current_nodeid){ + + + BaseBean bb = new BaseBean(); + if(StringUtils.isNotBlank(requestid) && StringUtils.isNotBlank(current_nodeid) && userid>0){ + RecordSet rs = new RecordSet(); + + List> remark8List = new ArrayList>(); + List> remark9List = new ArrayList>(); + List> atList = new ArrayList>(); + Map map = null; + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark \n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark in (8,18) \n" + + " and t.requestid ="+requestid + + " and t.userid="+userid+" and t.nodeid = "+current_nodeid; + + rs.executeQuery(sql); + bb.writeLog("OpenRequestRemark8AtCmd-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String preisremark = Util.null2String(rs.getString("preisremark")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid+""); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",requestid); + if("8".equals(preisremark)){ + remark8List.add(map); + }else if("18".equals(preisremark)){ + atList.add(map); + } + } + + bb.writeLog("OpenRequestRemark8AtCmd-remark8List:"+remark8List.size()); + bb.writeLog("OpenRequestRemark8AtCmd-atList:"+atList.size()); + + OpenRequestRemarkAtRunnable openRequestRemarkAtRunnable = new OpenRequestRemarkAtRunnable(requestid,userid+"",loginid,remark8List,remark9List,atList); + new Thread(openRequestRemarkAtRunnable).start(); + } + } +} diff --git a/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java b/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java index 0192e88b..e7913de5 100644 --- a/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java +++ b/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java @@ -99,10 +99,12 @@ public class SendPortalRobotSubmitUtil { String workflowname = "" ; String currentNodeId = "" ; String currentNodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + + String createrLoginid = "" ; + String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.loginid\n" + " from workflow_requestbase t1\n" + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ + " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + " and t1.requestid = "+requestid ; @@ -114,8 +116,11 @@ public class SendPortalRobotSubmitUtil { workflowname = Util.null2String(rs.getString("workflowname")) ; currentNodeId = Util.null2String(rs.getString("nodeid")) ; currentNodeName = Util.null2String(rs.getString("nodeName")) ; + createrLoginid = Util.null2String(rs.getString("loginid")); } + + requestObject.put("creator",createrLoginid); requestObject.put("center",center); requestObject.put("title",requestname); requestObject.put("taskCode","weaver"+requestid); @@ -244,10 +249,12 @@ public class SendPortalRobotSubmitUtil { String workflowname = "" ; String nodeId = "" ; String nodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + + String createrLoginid = "" ; + String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.loginid\n" + " from workflow_requestbase t1\n" + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ + " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + " and t1.requestid = "+requestid ; @@ -259,6 +266,7 @@ public class SendPortalRobotSubmitUtil { workflowname = Util.null2String(rs.getString("workflowname")) ; nodeId = Util.null2String(rs.getString("nodeid")) ; nodeName = Util.null2String(rs.getString("nodeName")) ; + createrLoginid = Util.null2String(rs.getString("loginid")); } bb.writeLog("sendRobotSubmitByToRead--nodeId:"+nodeId); @@ -314,6 +322,8 @@ public class SendPortalRobotSubmitUtil { taskArray.add(taskObject); JSONObject requestObject = new JSONObject(); + + requestObject.put("creator",createrLoginid); requestObject.put("center",center); requestObject.put("title",requestname); requestObject.put("taskCode", requestid+"_cs_"+userid);