package com.customization.dito.sendtodo; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.constant.Constants; import com.time.util.DateUtil; import org.apache.commons.lang.StringUtils; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.TimeUtil; import weaver.general.Util; import weaver.hrm.User; import weaver.interfaces.dito.comInfo.PropBean; import java.net.URLEncoder; import java.util.List; import java.util.Map; /** * @Title * @Author wangchaofa * @CreateDate 2023/9/26 * @Version 1.0 * @Description */ public class SendPortalAtAddTodoCmd { private Map params; public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; public SendPortalAtAddTodoCmd(){ } public SendPortalAtAddTodoCmd(Map params){ this.params=params; } public String getShortMessageTitle(String messageTitle) { if (messageTitle.length() > 20) { messageTitle = messageTitle.substring(0, 17) + "..."; } return messageTitle; } /** * * @param username * @param passwd * @param portal_todourl * @param bpm_workflowurl * @param bpm_app_workflowurl * @param bpm_app_requesturl */ public void sendTodoDataByNode(String requestid, List> todolist, String username, String passwd, String center, String portal_todourl, String bpm_workflowurl, String bpm_app_workflowurl, String bpm_app_requesturl){ HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String zhjkbs = "com.customization.dito.sendtodo.SendPortalAtAddTodoCmd.sendTodoDataByNode"; String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); JSONObject requestObject = new JSONObject(); RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); bb.writeLog("SendPortalAtAddTodoCmd--sendTodoDataByNode"); String terminal = "1" ; String taskType = "0"; String actionType = "0" ; try { bb.writeLog("SendPortalAtAddTodoCmd sleep start"); Thread.sleep(2000); bb.writeLog("sleep end "); String sql = ""; 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("urlDing", urlDing); String requestname = "" ; String workflowname = "" ; String nodeId = "" ; String nodeName = "" ; String lastName = ""; 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("sendTodoDataByNode--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")) ; lastName = Util.null2String(rs.getString("loginid")) ; } requestObject.put("center",center); requestObject.put("title",requestname); requestObject.put("creator",lastName); // requestObject.put("taskCode","weaver"+requestid); 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); JSONArray taskObjectList = new JSONArray(); for (Map todoMap: todolist){ JSONObject taskObject = new JSONObject(); JSONArray list = new JSONArray(); JSONObject requestObject2 = new JSONObject(); requestObject2.putAll(requestObject); SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); requestObject2.put("nodeName",todoMap.get("nodename")); requestObject2.put("nodeId",todoMap.get("nodeid")); requestObject2.put("taskCode","weaver"+requestid+"_at_"+todoMap.get("id")); String creator = (String) todoMap.get("loginid"); if("sysadmin".equals(creator)){ creator = "Admin"; } taskObject.put("objectAction","0"); taskObject.put("objectType","0"); taskObject.put("objectCode",creator); taskObject.put("objectId",todoMap.get("id")); taskObject.put("operatorCode",creator); list.add(taskObject); requestObject2.put("messageTitle",getShortMessageTitle(requestname)); requestObject2.put("messageContent", requestname); requestObject2.put("terminal", "1"); requestObject2.put("taskType", "1"); requestObject2.put("actionType", "0"); requestObject2.put("taskObjectList",list); String auth = username + ":" + passwd; bb.writeLog("SendPortalToReadUtil--requestObject:" + requestObject2.toJSONString()); String msgdata = httpRequestUtil.doPostByAuth(Constants.portal_todourl, requestObject2.toJSONString(), auth); bb.writeLog("SendPortalToReadUtil-msgdata:" + msgdata); 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, (String) todoMap.get("id"),requestObject2.toJSONString(),resultCode,"",zhjkbs); sendPortalErrorUtil.saveAtRyjb(requestid,nodeId,(String) todoMap.get("id")); }else if ("TODO-FAIL-002".equals(resultCode)){ //The task does not exist.任务不存在,则新增 User user = new User(); user.setUid(Integer.valueOf(todoMap.get("id").toString())); SendPortalToReadUtil sendPortalToReadUtil = new SendPortalToReadUtil(); sendPortalToReadUtil.sendToReadDataByCreateNode(requestid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); }else{ String resultmsg = msgObject.getString("resultMsg"); sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName, (String) todoMap.get("id"),requestObject2.toJSONString(),resultCode,resultmsg,zhjkbs); } } } } } catch (Exception e) { e.printStackTrace(); } } /** * 去除掉关于流程中@人员的所有门户待阅记录 * @param requestid */ public void dealPortalAtRyjl(String requestid){ RecordSet rs = new RecordSet(); String uf_table = "uf_lcatryjlb" ; rs.executeQuery("select * from "+ uf_table +" where requestid=?",requestid); String nodeid = ""; String userid = ""; while(rs.next()){ nodeid = Util.null2o(rs.getString("nodeid")); userid = Util.null2o(rs.getString("userid")); completePortalReadData(requestid,nodeid,userid); } } /*** * * @param requestid * @param nodeid * @param userid */ public String completePortalReadData(String requestid, String nodeid,String userid){ String resultCode = "" ; String zhjkbs = "com.engine.dito.reqremark.cmd.AtRequestRemarkCmd.completePortalReadData"; 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 = "" ; JSONObject requestObject = new JSONObject(); try { 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); 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.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")) ; } String createdate = TimeUtil.getCurrentDateString(); String createtime = TimeUtil.getCurrentTimeString(); String nodename = getNodeName(nodeid); requestObject.put("center",center); requestObject.put("title",requestname); requestObject.put("creator",workcode); requestObject.put("taskCode", requestid+"_at_"+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",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); String auth = username + ":" + passwd; String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); bb.writeLog("msgdata:"+msgdata); if(StringUtils.isNotEmpty(msgdata)){ JSONObject msgObject = JSONObject.parseObject(msgdata); //{"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,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs); } } } } catch (Exception e) { e.printStackTrace(); bb.writeLog(e); } return resultCode; } /*** * * @param id * @return */ private String getNodeName(String id){ RecordSet rs = new RecordSet(); String name = ""; rs.executeQuery(" select nodename from workflow_nodebase where id = ?",id); while (rs.next()){ name = Util.null2String(rs.getString("nodename")); } return name; } }