From eb7abf86da281041f51f7750c43a1264f68fd5ad Mon Sep 17 00:00:00 2001 From: wcf Date: Thu, 16 Nov 2023 16:24:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E4=BB=A3=E7=A0=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B91116?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dito/sendtodo/SendPortalAgentCmd.java | 231 ++++++++++++++++++ .../dito/sendtodo/SendPortalAtAddTodoCmd.java | 6 +- .../dito/sendtodo/SendPortalForwardCmd.java | 10 +- .../reqremark/cmd/AtRequestRemarkCmd.java | 87 ++++--- .../dito/reqremark/cmd/RequestRemarkCmd.java | 4 - .../workflow/cmd/agent/AddAgentSaveCmd.java | 11 +- .../cmd/agent/SaveAgentDetailCmd.java | 160 ++++++++++++ .../workflow/cmd/agent/TakeBackAgentCmd.java | 25 +- 8 files changed, 475 insertions(+), 59 deletions(-) create mode 100644 src/com/customization/dito/sendtodo/SendPortalAgentCmd.java create mode 100644 src/com/engine/workflow/cmd/agent/SaveAgentDetailCmd.java diff --git a/src/com/customization/dito/sendtodo/SendPortalAgentCmd.java b/src/com/customization/dito/sendtodo/SendPortalAgentCmd.java new file mode 100644 index 00000000..63015345 --- /dev/null +++ b/src/com/customization/dito/sendtodo/SendPortalAgentCmd.java @@ -0,0 +1,231 @@ +package com.customization.dito.sendtodo; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.time.util.DateUtil; +import org.apache.commons.lang.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.hrm.resource.ResourceComInfo; +import weaver.interfaces.dito.comInfo.PropBean; + +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Pattern; + +/** + * @Title + * @Author wangchaofa + * @CreateDate 2023/11/15 + * @Version 1.0 + * @Description + */ +public class SendPortalAgentCmd { + + /** + * 先查询出被代理人的待办,然后一一推送给门户,代理人待办增加,被代理人待办删除 + * @param agenterid 代理人 + * @param beagenterid 被代理人 + * @param workflowids 指定流程id + * @param user + */ + public void DealPortalTodoAndDone(int agenterid, int beagenterid, String workflowids, User user){ + RecordSet rs = new RecordSet(); + RecordSet rs1 = new RecordSet(); + JSONArray taskObjectList = new JSONArray(); + String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); + JSONObject taskObject = new JSONObject(); + rs.writeLog("==================== SendPortalAgentCmd DealPortalTodoAndDone ==================="); + rs.writeLog("==================== SendPortalAgentCmd DealPortalTodoAndDone agenterid ==================="+ agenterid); + rs.writeLog("==================== SendPortalAgentCmd DealPortalTodoAndDone beagenterid ==================="+ beagenterid); + + try { + + taskObject.put("objectAction", "0"); + taskObject.put("objectType", "0"); + taskObject.put("objectCode", new ResourceComInfo().getWorkcode(String.valueOf(agenterid))); + taskObject.put("objectId", getStaffId(agenterid)); + taskObject.put("operatorCode", new ResourceComInfo().getWorkcode(String.valueOf(agenterid))); + taskObjectList.add(taskObject); + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + SendMailUtil sendMailUtil = new SendMailUtil(); + + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType"; + + 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 cus_staff = PropBean.getUfPropValue("cus_staff") ; + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + String sql = " select distinct t1.requestid,t1.requestname,t1.createdate,h1.lastname as creatorname,t2.receivedate,t2.receivetime " + + " from workflow_base t " + + " left join workflow_requestbase t1 on t.id=t1.workflowid " + + " left join workflow_currentoperator t2 on t1.requestid = t2.requestid " + + " left join hrmresource h1 on h1.id = t1.creater "+ + " where t2.usertype=0 and t2.userid in (" + beagenterid +") and t.id in (" + workflowids +") "+ + " and ((t2.isremark =0 and (t2.takisremark is null or t2.takisremark ='0')) or t2.isremark in('1','5','9','7','8','9','11') ) " + + " and t2.islasttimes=1 " + + " and (t.isvalid=3 or t.isvalid=1) "; + + rs.writeLog("SendPortalAgentCmd DealPortalTodoAndDone -- sql:" + sql); + + String zhjkbs = "com.engine.workflow.cmd.agent.SaveAgentDetailCmd.DealPortalTodoAndDone"; + String actionType = "1"; + String terminal = "1"; + String taskType = "0"; + rs1.executeQuery(sql); + while (rs1.next()) { + String requestid = Util.null2String(rs1.getString("requestid")); + + String workflowname = ""; + String nodeId = ""; + String nodeName = ""; + JSONObject requestObject = new JSONObject(); + 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 msgdata = ""; + String requestname = ""; + String lastname = ""; + String userids = ""; + String loginid = ""; + String emailArray = ""; + + 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; + + rs.writeLog("SendPortalAgentCmd DealPortalTodoAndDone -- sql:" + 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") + user.getUID()); + nodeName = Util.null2String(rs.getString("nodeName")); + lastname = Util.null2String(rs.getString("lastname")); + loginid = Util.null2String(rs.getString("loginid")); + } + requestObject.put("center", center); + requestObject.put("title", requestname); + requestObject.put("creator", loginid); + 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); + + JSONObject taskObject1 = new JSONObject(); + taskObject1.put("objectAction", "1"); + taskObject1.put("objectType", "0"); + taskObject1.put("objectCode", new ResourceComInfo().getWorkcode(String.valueOf(beagenterid))); + taskObject1.put("objectId", getStaffId(beagenterid)); + taskObject1.put("operatorCode", new ResourceComInfo().getWorkcode(String.valueOf(beagenterid))); + taskObjectList.add(taskObject1); + + if (taskObjectList.size() > 0) { + requestObject.put("taskObjectList", taskObjectList); + } else { + requestObject.put("actionType", "3"); + } + String auth = username + ":" + passwd; + + rs.writeLog("================== SendPortalAgentCmd DealPortalTodoAndDone ======================== "+requestObject.toJSONString()); + + msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + + rs.writeLog("AddAgentSaveCmd emailArray:" + emailArray); + if (StringUtils.isNotEmpty(emailArray)) { + + Map templateMap = getEmailTemplate(requestname, lastname, processTime); + String notificationSubject = templateMap.get("notificationSubject"); + String notificationContent = templateMap.get("notificationContent"); + + sendMailUtil.sendMail(requestid, emailArray, notificationSubject, notificationContent); + } + + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(beagenterid), requestObject.toJSONString(), resultCode, "",zhjkbs, String.valueOf(agenterid)); + + } else { + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(beagenterid), requestObject.toJSONString(), resultCode, resultmsg ,zhjkbs, String.valueOf(agenterid)); + } + } + } + } + }catch (Exception e){ + e.printStackTrace(); + rs.writeLog(e); + } + } + + public String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + /*** + * + * @param requestname + * @param operator + * @param operatorTime + * @return + */ + public Map getEmailTemplate(String requestname,String operator,String operatorTime){ + Map dataMap = new HashMap(); + String notificationSubject = "You have a new To-Read - <"+requestname+"> "; + String notificationContent = operator + " created this task on "+operatorTime+"\n" + + " Please handle it in time."; + dataMap.put("notificationSubject",notificationSubject); + dataMap.put("notificationContent",notificationContent); + return dataMap; + } + + public int getStaffId(int userid){ + int result = -1; + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + RecordSet rs = new RecordSet(); + rs.executeQuery("select "+ cus_staff + " from cus_fielddata where scopeid=-1 and scope = 'HrmCustomFieldByInfoType' and id=?",userid); + rs.next(); + result = Util.getIntValue(rs.getString(cus_staff)); + return result; + } + +} diff --git a/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java b/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java index a092deed..7565b68a 100644 --- a/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java @@ -174,7 +174,7 @@ public class SendPortalAtAddTodoCmd { if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName, (String) todoMap.get("id"),requestObject2.toJSONString(),resultCode,"",zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName, "",requestObject2.toJSONString(),resultCode,"",zhjkbs,(String) todoMap.get("id")); sendPortalErrorUtil.saveAtRyjb(requestid,nodeId,(String) todoMap.get("id")); }else if ("TODO-FAIL-002".equals(resultCode)){ //The task does not exist.任务不存在,则新增 @@ -186,7 +186,7 @@ public class SendPortalAtAddTodoCmd { }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName, (String) todoMap.get("id"),requestObject2.toJSONString(),resultCode,resultmsg,zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName, "",requestObject2.toJSONString(),resultCode,resultmsg,zhjkbs,(String) todoMap.get("id")); } } @@ -329,7 +329,7 @@ public class SendPortalAtAddTodoCmd { resultCode = msgObject.getString("resultCode"); if(!"0".equals(resultCode)){ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodename,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid); } } } diff --git a/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java b/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java index dcebddea..351dd7ed 100644 --- a/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java @@ -200,11 +200,11 @@ public class SendPortalForwardCmd { sendMailUtil.sendMail(requestid, emailArray, notificationSubject, notificationContent); } - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, userids, requestObject.toJSONString(), resultCode, "", zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(user.getUID()), requestObject.toJSONString(), resultCode, "", zhjkbs,userids); } else { String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, userids, requestObject.toJSONString(), resultCode, resultmsg, zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(user.getUID()), requestObject.toJSONString(), resultCode, resultmsg, zhjkbs,userids); } } } @@ -374,11 +374,11 @@ public class SendPortalForwardCmd { sendMailUtil.sendMail(requestid, emailArray, notificationSubject, notificationContent); } - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, userids, requestObject.toJSONString(), resultCode, "",zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(user.getUID()), requestObject.toJSONString(), resultCode, "",zhjkbs,userids); } else { String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, userids, requestObject.toJSONString(), resultCode, resultmsg ,zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(user.getUID()), requestObject.toJSONString(), resultCode, resultmsg ,zhjkbs,userids); } } } @@ -483,7 +483,7 @@ public class SendPortalForwardCmd { String resultCode = msgObject.getString("resultCode"); if (!"0".equals(resultCode)) { String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, user.getUID() + "", nodeName, user.getUID() + "", jsonObject.toJSONString(), resultCode, resultmsg, zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, user.getUID() + "", nodeName, user.getUID() + "", jsonObject.toJSONString(), resultCode, resultmsg, zhjkbs,""); } } } diff --git a/src/com/engine/dito/reqremark/cmd/AtRequestRemarkCmd.java b/src/com/engine/dito/reqremark/cmd/AtRequestRemarkCmd.java index a99e50ac..26ec4e09 100644 --- a/src/com/engine/dito/reqremark/cmd/AtRequestRemarkCmd.java +++ b/src/com/engine/dito/reqremark/cmd/AtRequestRemarkCmd.java @@ -87,7 +87,7 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand 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); @@ -111,7 +111,7 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand String nodeId = ""; String nodeName = ""; - sql = " select t1.requestname,t3.workflowname,t1.currentnodeid as nodeid,d1.nodename\n" + + 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 "+ @@ -120,6 +120,7 @@ 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()); @@ -172,38 +173,41 @@ public class AtRequestRemarkCmd extends AbstractCommonCommand resultCode = msgObject.getString("resultCode"); if(!"0".equals(resultCode)){ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); } } } - // 增加已办 - 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); + boolean flag = checkHasDoneData(requestid,workflowid,userid,nodeid); + if(!flag){ + // 增加已办 + 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,""); + } } } } @@ -229,5 +233,28 @@ 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; + } + } diff --git a/src/com/engine/dito/reqremark/cmd/RequestRemarkCmd.java b/src/com/engine/dito/reqremark/cmd/RequestRemarkCmd.java index fd9fba63..b689e585 100644 --- a/src/com/engine/dito/reqremark/cmd/RequestRemarkCmd.java +++ b/src/com/engine/dito/reqremark/cmd/RequestRemarkCmd.java @@ -3,7 +3,6 @@ package com.engine.dito.reqremark.cmd; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.customization.dito.sendtodo.HttpRequestUtil; -import com.customization.dito.sendtodo.SendMailUtil; import com.customization.dito.sendtodo.SendPortalErrorUtil; import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.entity.BizLogContext; @@ -16,13 +15,10 @@ import weaver.general.TimeUtil; import weaver.general.Util; import weaver.hrm.User; import weaver.interfaces.dito.comInfo.PropBean; -import weaver.interfaces.dito.job.WorkflowAuthModelingUtil; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; public class RequestRemarkCmd extends AbstractCommonCommand> { @Override diff --git a/src/com/engine/workflow/cmd/agent/AddAgentSaveCmd.java b/src/com/engine/workflow/cmd/agent/AddAgentSaveCmd.java index 038ece5a..957c962b 100644 --- a/src/com/engine/workflow/cmd/agent/AddAgentSaveCmd.java +++ b/src/com/engine/workflow/cmd/agent/AddAgentSaveCmd.java @@ -93,6 +93,7 @@ public class AddAgentSaveCmd extends AbstractCommonCommand>{ */ public void DealPortalTodoAndDone(int agenterid, int beagenterid, String workflowids){ RecordSet rs = new RecordSet(); + RecordSet rs1 = new RecordSet(); JSONArray taskObjectList = new JSONArray(); String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); @@ -140,9 +141,9 @@ public class AddAgentSaveCmd extends AbstractCommonCommand>{ String actionType = "1"; String terminal = "1"; String taskType = "0"; - rs.executeQuery(sql); - while (rs.next()) { - String requestid = Util.null2String(rs.getString("requestid")); + rs1.executeQuery(sql); + while (rs1.next()) { + String requestid = Util.null2String(rs1.getString("requestid")); String workflowname = ""; String nodeId = ""; @@ -234,11 +235,11 @@ public class AddAgentSaveCmd extends AbstractCommonCommand>{ sendMailUtil.sendMail(requestid, emailArray, notificationSubject, notificationContent); } - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, userids, requestObject.toJSONString(), resultCode, "",zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(beagenterid), requestObject.toJSONString(), resultCode, "",zhjkbs,String.valueOf(agenterid)); } else { String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, userids, requestObject.toJSONString(), resultCode, resultmsg ,zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(beagenterid), requestObject.toJSONString(), resultCode, resultmsg ,zhjkbs,String.valueOf(agenterid)); } } } diff --git a/src/com/engine/workflow/cmd/agent/SaveAgentDetailCmd.java b/src/com/engine/workflow/cmd/agent/SaveAgentDetailCmd.java new file mode 100644 index 00000000..006e6a3f --- /dev/null +++ b/src/com/engine/workflow/cmd/agent/SaveAgentDetailCmd.java @@ -0,0 +1,160 @@ +package com.engine.workflow.cmd.agent; + +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import com.engine.workflow.biz.AgentBiz; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.workflow.agent.AgentBean; +import weaver.workflow.agent.AgentDateBean; +import weaver.workflow.agent.AgentManager; + +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SaveAgentDetailCmd extends AbstractCommonCommand>{ + + private HttpServletRequest request; + + public SaveAgentDetailCmd(HttpServletRequest request, User user){ + this.request = request; + this.user = user; + } + + public Map execute(CommandContext commandContext) { + Map apidatas = new HashMap(); + try{ + AgentManager agentManager = new AgentManager(user); + String result = ""; + RecordSet rs = new RecordSet(); + int agentid = Util.getIntValue(request.getParameter("agentid"), 0); + Map agentMap = getAgentInfo(agentid); + String workflowid = (String) agentMap.get("workflowid"); + //代理人 + int agenterid = (int) agentMap.get("agenterid"); + //被代理人 + int beagenterid = (int) agentMap.get("beagenterid"); + AgentDateBean datebean = new AgentDateBean(); + datebean.setBegindate(Util.null2String(request.getParameter("beginDate"))); + datebean.setBegintime(Util.null2String(request.getParameter("beginTime"))); + datebean.setEnddate(Util.null2String(request.getParameter("endDate"))); + datebean.setEndtime(Util.null2String(request.getParameter("endTime"))); + List datas = AgentBiz.generateAgentBeanList(request); + int row_0_isPendThing = Util.getIntValue(request.getParameter("row_0_isPendThing"), 0); + int row_0_agentuid = Util.getIntValue(request.getParameter("row_0_agentuid")); + //int overlapMethod = Util.getIntValue(request.getParameter("overlapMethod"), 0); + int overlapMethod = 2; //默认以新保存代理覆盖被重复代理 + String symbol = Util.null2String(request.getParameter("symbol")); + + Class clazz = Class.forName("com.customization.dito.sendtodo.SendPortalAgentCmd"); + + if("edit".equals(symbol)){ + //对接门户 + //代理已有的待办事宜 + if(row_0_isPendThing == 1){ + rs.writeLog("=========== SaveAgentDetailCmd agenterid =================="+agenterid); + rs.writeLog("=========== SaveAgentDetailCmd beagenterid =================="+beagenterid); + rs.writeLog("=========== SaveAgentDetailCmd row_0_agentuid =================="+row_0_agentuid); + + //新的代理人和原有代理人 不一致,需要更新为新的代理人 + if(agenterid != row_0_agentuid){ + rs.executeUpdate("update workflow_agent set agenterid=? where agentid=?",row_0_agentuid,agentid); + if(clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}) != null) { + Method method = clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,beagenterid,agenterid,workflowid,user); + } + }else { + if(clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}) != null) { + Method method = clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,agenterid,beagenterid,workflowid,user); + } + } + }else{ + if(agenterid != row_0_agentuid){ + rs.executeUpdate("update workflow_agent set agenterid=? where agentid=?",row_0_agentuid,agentid); +// DealPortalTodoAndDone(row_0_agentuid, agenterid, workflowid); + } + if(clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}) != null) { + Method method = clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,beagenterid,agenterid,workflowid,user); + } + } + boolean ismodifyCondition = "true".equals(Util.null2String(request.getParameter("ismodifyCondition"))); + result = agentManager.changeAgentSet(agentid, datebean, overlapMethod, ismodifyCondition, datas); + }else if("saveas".equals(symbol)){ //另存为 + //对接门户 + //代理已有的待办事宜 + if(row_0_isPendThing == 1){ + //新的代理人和原有代理人 不一致,需要更新为新的代理人 + if(agenterid != row_0_agentuid){ + rs.executeUpdate("update workflow_agent set agenterid=? where agentid=?",row_0_agentuid,agentid); + if(clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}) != null) { + Method method = clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,row_0_agentuid,beagenterid,workflowid,user); + } + }else { + if(clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}) != null) { + Method method = clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,agenterid,beagenterid,workflowid,user); + } + } + }else{ + if(agenterid != row_0_agentuid){ + rs.executeUpdate("update workflow_agent set agenterid=? where agentid=?",row_0_agentuid,agentid); +// DealPortalTodoAndDone(row_0_agentuid, agenterid, workflowid); + } + if(clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}) != null) { + Method method = clazz.getMethod("DealPortalTodoAndDone",new Class[]{int.class,int.class,String.class,User.class}); + Object newInstance = clazz.newInstance(); + method.invoke(newInstance,beagenterid,agenterid,workflowid,user); + } + } + result = agentManager.saveAsNewAgent(agentid, datebean, datas, overlapMethod); + } + apidatas.put("agentresult", result); + }catch(Exception e){ + apidatas.put("api_status", false); + apidatas.put("api_errormsg", e.getMessage()); + } + return apidatas; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + /** + * 获取流程代理信息 + * @param agentid + * @return + */ + public Map getAgentInfo(int agentid){ + Map map = new HashMap<>(); + RecordSet rs = new RecordSet(); + rs.executeQuery("select * from workflow_agent where agentid=?",agentid); + while(rs.next()){ + String workflowid = Util.null2String(rs.getString("workflowid")); + int agenterid = Util.getIntValue(rs.getString("agenterid")); + int beagenterid = Util.getIntValue(rs.getString("beagenterid")); + + map.put("workflowid",workflowid); + map.put("agenterid",agenterid); + map.put("beagenterid",beagenterid); + } + return map; + } + + + +} diff --git a/src/com/engine/workflow/cmd/agent/TakeBackAgentCmd.java b/src/com/engine/workflow/cmd/agent/TakeBackAgentCmd.java index 643d3579..c193b78a 100644 --- a/src/com/engine/workflow/cmd/agent/TakeBackAgentCmd.java +++ b/src/com/engine/workflow/cmd/agent/TakeBackAgentCmd.java @@ -50,23 +50,23 @@ public class TakeBackAgentCmd extends AbstractCommonCommand>{ if(!"".equals(keyid)) range.add(keyid); } - agentManager.takeBackAgent(range, needBackRunning); if(needBackRunning){ SendPortalTodoAndDone(range); } + agentManager.takeBackAgent(range, needBackRunning); }else if ("pt".equals(symbol)) { // 全部收回逻辑 int agentid = Util.getIntValue(request.getParameter("agentid")); int bagentuid = Util.getIntValue(request.getParameter("bagentuid")); String agentuid = agentManager.getAgentuid(agentid, bagentuid); if(Util.getIntValue(agentuid) > 0){ range = agentManager.getAgentRangeByUser(Util.getIntValue(agentuid), bagentuid); + // 推送门户处理待办和已办 + if(needBackRunning){ + SendPortalTodoAndDone(range); + } agentManager.takeBackAgent(range, needBackRunning); } } - // 推送门户处理待办和已办 - if(needBackRunning){ - SendPortalTodoAndDone(range); - } } catch (Exception e) { flag = false; e.printStackTrace(); @@ -131,6 +131,7 @@ public class TakeBackAgentCmd extends AbstractCommonCommand>{ */ public void DealPortalTodoAndDone(int agenterid, int beagenterid, String workflowids){ RecordSet rs = new RecordSet(); + RecordSet rs1 = new RecordSet(); JSONArray taskObjectList = new JSONArray(); String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); @@ -171,18 +172,18 @@ public class TakeBackAgentCmd extends AbstractCommonCommand>{ " left join workflow_requestbase t1 on t.id=t1.workflowid " + " left join workflow_currentoperator t2 on t1.requestid = t2.requestid " + " left join hrmresource h1 on h1.id = t1.creater "+ - " where t2.usertype=0 and t2.userid in (" + beagenterid +") and t.id in (" + workflowids +") "+ + " where t2.usertype=0 and t2.userid in (" + agenterid +") and t.id in (" + workflowids +") "+ " and ((t2.isremark =0 and (t2.takisremark is null or t2.takisremark ='0')) or t2.isremark in('1','5','9','7','8','9','11') ) " + " and t2.islasttimes=1 " + - " and (t.isvalid=3 or t.isvalid=1) "; + " and (t.isvalid=3 or t.isvalid=1) and t2.agenttype = 2 "; String zhjkbs = "com.engine.workflow.cmd.agent.TakeBackAgentCmd.DealPortalTodoAndDone"; String actionType = "1"; String terminal = "1"; String taskType = "0"; - rs.executeQuery(sql); - while (rs.next()) { - String requestid = Util.null2String(rs.getString("requestid")); + rs1.executeQuery(sql); + while (rs1.next()) { + String requestid = Util.null2String(rs1.getString("requestid")); String workflowname = ""; String nodeId = ""; @@ -274,11 +275,11 @@ public class TakeBackAgentCmd extends AbstractCommonCommand>{ sendMailUtil.sendMail(requestid, emailArray, notificationSubject, notificationContent); } - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, userids, requestObject.toJSONString(), resultCode, "",zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(beagenterid), requestObject.toJSONString(), resultCode, "",zhjkbs,String.valueOf(agenterid)); } else { String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, userids, requestObject.toJSONString(), resultCode, resultmsg ,zhjkbs); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(beagenterid), requestObject.toJSONString(), resultCode, resultmsg ,zhjkbs,String.valueOf(agenterid)); } } }