From c479c7626dd5c6e54eaa8181a54be204aa9b265f Mon Sep 17 00:00:00 2001 From: shilei Date: Fri, 6 Jan 2023 19:02:42 +0800 Subject: [PATCH] =?UTF-8?q?#HJ-22#=20=E6=8F=90=E4=BA=A4=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/createauth/CreateAuthActionApi.java | 10 + .../api/dito/excel/ImportExcelActionApi.java | 2 +- .../dito/sendtodo/HttpRequestUtil.java | 21 +- .../dito/sendtodo/SendMailUtil.java | 2 + .../dito/sendtodo/SendPortalToReadUtil.java | 352 +++++ .../dito/sendtodo/SendPortalTodoRunnable.java | 6 +- .../dito/sendtodo/SendPortalTodoUtil.java | 10 +- .../dito/createauth/cmd/CreateAuthCmd.java | 30 + .../createauth/service/CreateAuthService.java | 11 + .../service/impl/CreateAuthServiceImpl.java | 16 + .../dito/createauth/web/CreateAuthAction.java | 48 + .../dito/excel/cmd/ImportOrgExcelCmd.java | 1 - .../dito/excel/cmd/ImportOrgExcelUtil.java | 2 - .../dito/excel/web/ImportExcelAction.java | 2 +- .../interfaces/dito/comInfo/PropBean.java | 46 +- .../dito/filter/PortalLoginBeforeFilter.java | 9 +- .../job/WorkflowAuthModelingCronJobTest.java | 23 + .../dito/job/WorkflowAuthModelingUtil.java | 259 ++++ .../interfaces/dito/mq/RocketMsgListener.java | 40 + .../interfaces/dito/mq/RocketmqServlet.java | 216 +++ .../interfaces/dito/mq/RocketmqUtil.java | 1364 +++++++++++++++++ 21 files changed, 2443 insertions(+), 27 deletions(-) create mode 100644 src/com/api/dito/createauth/CreateAuthActionApi.java create mode 100644 src/com/customization/dito/sendtodo/SendPortalToReadUtil.java create mode 100644 src/com/engine/dito/createauth/cmd/CreateAuthCmd.java create mode 100644 src/com/engine/dito/createauth/service/CreateAuthService.java create mode 100644 src/com/engine/dito/createauth/service/impl/CreateAuthServiceImpl.java create mode 100644 src/com/engine/dito/createauth/web/CreateAuthAction.java create mode 100644 src/weaver/interfaces/dito/job/WorkflowAuthModelingCronJobTest.java create mode 100644 src/weaver/interfaces/dito/job/WorkflowAuthModelingUtil.java create mode 100644 src/weaver/interfaces/dito/mq/RocketMsgListener.java create mode 100644 src/weaver/interfaces/dito/mq/RocketmqServlet.java create mode 100644 src/weaver/interfaces/dito/mq/RocketmqUtil.java diff --git a/src/com/api/dito/createauth/CreateAuthActionApi.java b/src/com/api/dito/createauth/CreateAuthActionApi.java new file mode 100644 index 00000000..ab14254d --- /dev/null +++ b/src/com/api/dito/createauth/CreateAuthActionApi.java @@ -0,0 +1,10 @@ +package com.api.dito.createauth; + + +import com.engine.dito.createauth.web.CreateAuthAction; + +import javax.ws.rs.Path; + +@Path("/dito/auth") +public class CreateAuthActionApi extends CreateAuthAction { +} diff --git a/src/com/api/dito/excel/ImportExcelActionApi.java b/src/com/api/dito/excel/ImportExcelActionApi.java index 5d01685a..fc133fee 100644 --- a/src/com/api/dito/excel/ImportExcelActionApi.java +++ b/src/com/api/dito/excel/ImportExcelActionApi.java @@ -4,6 +4,6 @@ import com.engine.dito.excel.web.ImportExcelAction; import javax.ws.rs.Path; -@Path("/dito/import") +@Path("/dito/hrmexcel") public class ImportExcelActionApi extends ImportExcelAction { } diff --git a/src/com/customization/dito/sendtodo/HttpRequestUtil.java b/src/com/customization/dito/sendtodo/HttpRequestUtil.java index a9e62757..55291952 100644 --- a/src/com/customization/dito/sendtodo/HttpRequestUtil.java +++ b/src/com/customization/dito/sendtodo/HttpRequestUtil.java @@ -24,16 +24,18 @@ public class HttpRequestUtil extends BaseBean{ bb.writeLog("auth:"+auth); String msgData = "" ; - OkHttpClient client = new OkHttpClient().newBuilder().build(); - MediaType mediaType = MediaType.parse("application/json"); - RequestBody body = RequestBody.create(mediaType, dataJson); - Request request = new Request.Builder() - .url(portal_todourl) - .method("POST", body) - .addHeader("Authorization", authorization) - .addHeader("Content-Type", "application/json") - .build(); + try { + OkHttpClient client = new OkHttpClient().newBuilder().build(); + MediaType mediaType = MediaType.parse("application/json"); + RequestBody body = RequestBody.create(mediaType, dataJson); + Request request = new Request.Builder() + .url(portal_todourl) + .method("POST", body) + .addHeader("Authorization", authorization) + .addHeader("Content-Type", "application/json") + .build(); + Response response = client.newCall(request).execute(); int code = response.code(); @@ -45,6 +47,7 @@ public class HttpRequestUtil extends BaseBean{ } } catch (IOException e) { e.printStackTrace(); + bb.writeLog("HttpRequestUtil--e:"+e); } bb.writeLog("msgData:"+msgData); return msgData; diff --git a/src/com/customization/dito/sendtodo/SendMailUtil.java b/src/com/customization/dito/sendtodo/SendMailUtil.java index 2a5a1f8a..f7b746f8 100644 --- a/src/com/customization/dito/sendtodo/SendMailUtil.java +++ b/src/com/customization/dito/sendtodo/SendMailUtil.java @@ -29,9 +29,11 @@ public class SendMailUtil { String emailVersion = PropBean.getUfPropValue("emailVersion"); String emailkey = PropBean.getUfPropValue("emailkey"); + baseBean.writeLog("emailkey:"+emailkey); if(StringUtils.isEmpty(emailkey)){ emailkey = "email"; } + baseBean.writeLog("emailkey2:"+emailkey); String triggerTime = sdf.format(new Date()); diff --git a/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java b/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java new file mode 100644 index 00000000..864ffaab --- /dev/null +++ b/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java @@ -0,0 +1,352 @@ +package com.customization.dito.sendtodo; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; + +import java.net.URLEncoder; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class SendPortalToReadUtil { + + //public static String EMAIL_REGEX_DEFAULT = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; + public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + + /*** + * 流程发起节点,提交到下个节点,发起节点没有待办,下个节点有待办 + * @param requestid + * @param noideid + * @param user + */ + public void sendToReadDataByCreateNode(String requestid,String noideid,User user,String portal_todourl,String bpm_app_workflowurl,String username,String passwd,String bpm_workflowurl,String center,String bpm_app_requesturl){ + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendMailUtil sendMailUtil = new SendMailUtil(); + + RecordSet rs = new RecordSet(); + + String requestname = ""; + + JSONObject requestObject = new JSONObject(); + String emailArray = ""; + Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); + + BaseBean bb = new BaseBean(); + bb.writeLog("sendToReadDataByCreateNode"); + + String terminal = "1" ; + String actionType = "0" ; + String taskType = "1"; + String objectAction = "0" ; + String objectType = "0"; + String objectId = "" ; + + try { + JSONArray taskObjectList = new JSONArray(); + + String sql =" select t1.workflowid,t1.requestname,t1.requestmark,t1.creater,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + + " t1.requestid as taskCode,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 "+ + " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + + bb.writeLog("sendTodoDataByNode--sql:"+sql); + rs.executeQuery(sql); + if (rs.next()){ + String workflowid = Util.null2String(rs.getString("workflowid")) ; + String workflowname = getWorkflowname(workflowid); + String title = Util.null2String(rs.getString("requestname")) ; + String creator = Util.null2String(rs.getString("loginid")) ; + String workcode = Util.null2String(rs.getString("loginid")) ; + String taskCode = Util.null2String(rs.getString("taskcode")) ; + String nodeId = Util.null2String(rs.getString("nodeid")) ; + + String createdate = Util.null2String(rs.getString("createdate")) ; + String createtime = Util.null2String(rs.getString("createtime")) ; + String messageTitle = Util.null2String(rs.getString("requestname")) ; + String messageContent = Util.null2String(rs.getString("requestname")) ; + + requestname = messageTitle; + messageTitle = getShortMessageTitle(messageTitle); + + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String app_requestUrl = bpm_app_requesturl+requestid; + app_requestUrl = URLEncoder.encode(app_requestUrl,"UTF-8"); + String urlApp = bpm_app_workflowurl+"/interface/mobilelogin/loginsso.jsp?em_auth_usercode="+workcode+"&forwardurl="+app_requestUrl; + String urlDing = bpm_app_workflowurl+"/interface/mobilelogin/loginsso.jsp?em_auth_usercode="+workcode+"&forwardurl="+app_requestUrl; + String nodeName = Util.null2String(rs.getString("nodeName")) ; + + requestObject.put("center",center); + requestObject.put("title",title); + requestObject.put("creator",creator); + requestObject.put("taskCode",taskCode); + requestObject.put("nodeId",nodeId); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",createdate+" "+createtime); + requestObject.put("messageTitle",messageTitle); + requestObject.put("messageContent",messageContent); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("nodeName",nodeName); + requestObject.put("ticketType",workflowname); + } + + sql = " select t2.userid,h1.loginid,h1.email\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t2.isremark in ('9')\n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid; + + bb.writeLog("sendTodoDataByNode--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + + String usercode = Util.null2String(rs.getString("loginid")) ; + bb.writeLog("usercode--sql:"+usercode); + JSONObject taskObject = new JSONObject(); + + String objectCode = usercode ; + String operatorCode = usercode ; + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",objectId); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + + String email = Util.null2String(rs.getString("email")) ; + bb.writeLog("email2:"+email); + Matcher matcher = regex.matcher(email); + if(matcher.matches()){ + emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; + } + } + + requestObject.put("taskObjectList",taskObjectList); + + String auth = username + ":" + passwd; + //bb.writeLog("requestObject:"+requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("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)){ + + bb.writeLog("emailArray:"+emailArray); + if(StringUtils.isNotEmpty(emailArray)) + { + String notificationSubject = "You have a new to-read list:"+requestname+",Please handle it in time"; + String notificationContent = "You have a new to-read list:"+requestname+",Please handle it in time"; + sendMailUtil.sendMail(requestid,emailArray,notificationSubject,notificationContent); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /*** + * 流程提交到写个节点, + * 如果流程提交节点还有待办,意味着流程还是提交节点,只是提交节点一个人删除待办 + * 如果流程提交节点没有待办,意味着流程流转到下个节点,那么查询出来的待办都有新增,并且删除提交节点的所有待办 + * @param requestid + * @param noideid + * @param user + */ + public void sendToReadDataByNode(String requestid,String noideid,User user,String portal_todourl,String bpm_app_workflowurl,String username,String passwd,String bpm_workflowurl,String center,String bpm_app_requesturl){ + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendMailUtil sendMailUtil = new SendMailUtil(); + + JSONObject requestObject = new JSONObject(); + RecordSet rs = new RecordSet(); + + BaseBean bb = new BaseBean(); + bb.writeLog("sendToReadDataByNode"); + + String terminal = "1" ; + String taskType = "1"; + String objectId = "" ; + String requestname = "" ; + String emailArray = ""; + Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); + try { + + int count = 0 ; + String countSql =" select t2.userid,h1.loginid\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\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 ('1', '5', '8', '7', '11'))\n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.REQUESTID = "+requestid+ + " and t2.nodeid = " + noideid ; + bb.writeLog("sendTodoDataByNode--countSql:"+countSql); + rs.executeQuery(countSql); + while (rs.next()){ + count++; + } + bb.writeLog("sendTodoDataByNode--count:"+count); + + if(count == 0) + { + String actionType = "2" ; + String objectAction = "0" ; + String objectType = "0"; + + JSONArray taskObjectList = new JSONArray(); + + String sql =" select t1.workflowid,t1.requestname,t1.requestmark,t1.creater,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + + " t1.requestid as taskCode,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 "+ + " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + bb.writeLog("sendTodoDataByNode--sql:"+sql); + + rs.executeQuery(sql); + if (rs.next()){ + String workflowid = Util.null2String(rs.getString("workflowid")) ; + String workflowname = getWorkflowname(workflowid); + String title = Util.null2String(rs.getString("requestname")) ; + requestname = title; + String creator = Util.null2String(rs.getString("loginid")) ; + String taskCode = Util.null2String(rs.getString("taskcode")) ; + String nodeId = Util.null2String(rs.getString("nodeid")) ; + String workcode = Util.null2String(rs.getString("loginid")) ; + String createdate = Util.null2String(rs.getString("createdate")) ; + String createtime = Util.null2String(rs.getString("createtime")) ; + String messageTitle = Util.null2String(rs.getString("requestname")) ; + messageTitle = getShortMessageTitle(messageTitle); + String messageContent = Util.null2String(rs.getString("requestname")) ; + + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String app_requestUrl = bpm_app_requesturl+requestid; + app_requestUrl = URLEncoder.encode(app_requestUrl,"UTF-8"); + String urlApp = bpm_app_workflowurl+"/interface/mobilelogin/loginsso.jsp?em_auth_usercode="+workcode+"&forwardurl="+app_requestUrl; + String urlDing = bpm_app_workflowurl+"/interface/mobilelogin/loginsso.jsp?em_auth_usercode="+workcode+"&forwardurl="+app_requestUrl; + String nodeName = Util.null2String(rs.getString("nodeName")) ; + + requestObject.put("center",center); + requestObject.put("title",title); + requestObject.put("creator",creator); + requestObject.put("taskCode",taskCode); + requestObject.put("nodeId",nodeId); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",createdate+" "+createtime); + requestObject.put("messageTitle",messageTitle); + requestObject.put("messageContent",messageContent); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("nodeName",nodeName); + requestObject.put("ticketType",workflowname); + } + + sql = " select t2.userid,h1.loginid,h1.email\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t2.isremark in ('9')\n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.REQUESTID = "+requestid; + + bb.writeLog("sendTodoDataByNode--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + + String usercode = Util.null2String(rs.getString("loginid")) ; + String objectCode = usercode ; + String operatorCode = usercode ; + + JSONObject taskObject = new JSONObject(); + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",objectId); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + + String email = Util.null2String(rs.getString("email")) ; + bb.writeLog("email3:"+email); + Matcher matcher = regex.matcher(email); + if(matcher.matches()){ + emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; + } + } + requestObject.put("taskObjectList",taskObjectList); + } + + String auth = username + ":" + passwd; + //bb.writeLog("requestObject:"+requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("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)){ + + bb.writeLog("emailArray:"+emailArray); + if(StringUtils.isNotEmpty(emailArray)) + { + String notificationSubject = "You have a new to-do list:"+requestname+",Please handle it in time"; + String notificationContent = "You have a new to-do list:"+requestname+",Please handle it in time"; + sendMailUtil.sendMail(requestid,emailArray,notificationSubject,notificationContent); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + private String getWorkflowname(String id){ + RecordSet rs = new RecordSet(); + String name = ""; + rs.executeQuery("select workflowname from workflow_base where id = ?",id); + while (rs.next()){ + name = Util.null2String(rs.getString("workflowname")); + } + return name; + } + +} diff --git a/src/com/customization/dito/sendtodo/SendPortalTodoRunnable.java b/src/com/customization/dito/sendtodo/SendPortalTodoRunnable.java index 97e5e045..d363fe0a 100644 --- a/src/com/customization/dito/sendtodo/SendPortalTodoRunnable.java +++ b/src/com/customization/dito/sendtodo/SendPortalTodoRunnable.java @@ -26,7 +26,7 @@ public class SendPortalTodoRunnable implements Runnable{ SendPortalTodoUtil sendPortalTodoUtil = new SendPortalTodoUtil(); SendPortalDoneUtil sendPortalDoneUtil = new SendPortalDoneUtil(); - + SendPortalToReadUtil sendPortalToReadUtil = new SendPortalToReadUtil(); String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl"); String portal_doneurl = PropBean.getUfPropValue("portal_doneurl"); String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl"); @@ -42,9 +42,13 @@ public class SendPortalTodoRunnable implements Runnable{ }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); sendPortalDoneUtil.sendPortalDoneData( new_requestid, nodeid, user, portal_doneurl,bpm_app_workflowurl, username, passwd, bpm_workflowurl,bpm_app_requesturl); + sendPortalToReadUtil.sendToReadDataByCreateNode(new_requestid,nodeid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); + }else if(Util.getIntValue(requestid)> 0 && "submit".equals(src)){ sendPortalTodoUtil.sendTodoDataByNode(requestid,nodeid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); sendPortalDoneUtil.sendPortalDoneData( requestid, nodeid, user, portal_doneurl,bpm_app_workflowurl, username, passwd, bpm_workflowurl,bpm_app_requesturl); + sendPortalToReadUtil.sendToReadDataByNode(requestid,nodeid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); + }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); sendPortalDoneUtil.sendPortalDoneData( requestid, nodeid, user, portal_doneurl,bpm_app_workflowurl, username, passwd, bpm_workflowurl,bpm_app_requesturl); diff --git a/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java b/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java index 25d9cdac..e1169366 100644 --- a/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java +++ b/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java @@ -57,7 +57,7 @@ public class SendPortalTodoUtil { " left join (select id, lastname,loginid,email from hrmresource where status = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + " where t2.userid in ("+userid+") \n" + " and (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 ('1', '5', '8', '9', '7', '11'))\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '7', '11'))\n" + " and (ifnull(t1.currentstatus, -1) = -1 or (ifnull(t1.currentstatus, -1) = 0 and t1.creater in ("+userid+"))) \n" + " and t2.islasttimes = 1 \n" + " and (t2.isprocessing = '' or t2.isprocessing is null) \n" + @@ -261,7 +261,7 @@ public class SendPortalTodoUtil { " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\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 ('1', '5', '8', '9', '7', '11'))\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '7', '11'))\n" + " and t2.islasttimes = 1\n" + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + " and t2.requestid = "+requestid; @@ -356,7 +356,7 @@ public class SendPortalTodoUtil { " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\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 ('1', '5', '8', '9', '7', '11'))\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '7', '11'))\n" + " and t2.islasttimes = 1\n" + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + " and t2.REQUESTID = "+requestid+ @@ -494,7 +494,7 @@ public class SendPortalTodoUtil { " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\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 ('1', '5', '8', '9', '7', '11'))\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '7', '11'))\n" + " and t2.islasttimes = 1\n" + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + " and t2.REQUESTID = "+requestid; @@ -644,7 +644,7 @@ public class SendPortalTodoUtil { " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\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 ('1', '5', '8', '9', '7', '11'))\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '7', '11'))\n" + " and t2.islasttimes = 1\n" + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + " and t2.REQUESTID = "+requestid; diff --git a/src/com/engine/dito/createauth/cmd/CreateAuthCmd.java b/src/com/engine/dito/createauth/cmd/CreateAuthCmd.java new file mode 100644 index 00000000..381fc42a --- /dev/null +++ b/src/com/engine/dito/createauth/cmd/CreateAuthCmd.java @@ -0,0 +1,30 @@ +package com.engine.dito.createauth.cmd; + +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.job.WorkflowAuthModelingUtil; + +import java.util.Map; + +public class CreateAuthCmd extends AbstractCommonCommand> { + @Override + public BizLogContext getLogContext() { + return null; + } + + public CreateAuthCmd(Map params, User user) { + this.params = params; + this.user = user; + } + + @Override + public Map execute(CommandContext commandContext) { + WorkflowAuthModelingUtil workflowAuthModelingUtil = new WorkflowAuthModelingUtil(); + String lcids = Util.null2String(params.get("lcids")) ; + Map map = workflowAuthModelingUtil.executeData(lcids); + return map; + } +} diff --git a/src/com/engine/dito/createauth/service/CreateAuthService.java b/src/com/engine/dito/createauth/service/CreateAuthService.java new file mode 100644 index 00000000..844204d1 --- /dev/null +++ b/src/com/engine/dito/createauth/service/CreateAuthService.java @@ -0,0 +1,11 @@ +package com.engine.dito.createauth.service; + +import weaver.hrm.User; + +import java.util.Map; + +public interface CreateAuthService { + + Map createAuthData(Map datas,User user); + +} diff --git a/src/com/engine/dito/createauth/service/impl/CreateAuthServiceImpl.java b/src/com/engine/dito/createauth/service/impl/CreateAuthServiceImpl.java new file mode 100644 index 00000000..c5db2784 --- /dev/null +++ b/src/com/engine/dito/createauth/service/impl/CreateAuthServiceImpl.java @@ -0,0 +1,16 @@ +package com.engine.dito.createauth.service.impl; + +import com.engine.core.impl.Service; +import com.engine.dito.createauth.cmd.CreateAuthCmd; +import com.engine.dito.createauth.service.CreateAuthService; +import weaver.hrm.User; + +import java.util.Map; + +public class CreateAuthServiceImpl extends Service implements CreateAuthService { + + @Override + public Map createAuthData(Map datas, User user) { + return commandExecutor.execute(new CreateAuthCmd(datas,user)); + } +} diff --git a/src/com/engine/dito/createauth/web/CreateAuthAction.java b/src/com/engine/dito/createauth/web/CreateAuthAction.java new file mode 100644 index 00000000..90470986 --- /dev/null +++ b/src/com/engine/dito/createauth/web/CreateAuthAction.java @@ -0,0 +1,48 @@ +package com.engine.dito.createauth.web; + +import com.alibaba.fastjson.JSONObject; +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.dito.createauth.service.CreateAuthService; +import com.engine.dito.createauth.service.impl.CreateAuthServiceImpl; +import weaver.general.BaseBean; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.HashMap; +import java.util.Map; + +public class CreateAuthAction { + + public CreateAuthService getService(){ + return (CreateAuthService) ServiceUtil.getService(CreateAuthServiceImpl.class); + } + + @GET + @Path("/create") + @Produces({MediaType.TEXT_PLAIN}) + public String createAuthData(@Context HttpServletRequest request, @Context HttpServletResponse response) { + BaseBean bb = new BaseBean(); + bb.writeLog("createAuthData"); + Map apidatas = new HashMap(); + try{ + User user = HrmUserVarify.getUser(request, response); + Map dataMap = ParamUtil.request2Map(request); + apidatas.putAll(getService().createAuthData(dataMap,user)); + apidatas.put("api_status",true); + }catch (Exception e){ + apidatas.put("api_status",false); + apidatas.put("api_errormsg","exception:"+e.getMessage()); + } + bb.writeLog("apidatas:"+ JSONObject.toJSONString(apidatas)); + return JSONObject.toJSONString(apidatas); + + } +} diff --git a/src/com/engine/dito/excel/cmd/ImportOrgExcelCmd.java b/src/com/engine/dito/excel/cmd/ImportOrgExcelCmd.java index 0caff135..e68b4f08 100644 --- a/src/com/engine/dito/excel/cmd/ImportOrgExcelCmd.java +++ b/src/com/engine/dito/excel/cmd/ImportOrgExcelCmd.java @@ -19,7 +19,6 @@ import java.util.Map; import java.util.zip.ZipInputStream; -@Slf4j public class ImportOrgExcelCmd extends AbstractCommonCommand> { public ImportOrgExcelCmd(Map params, User user) { diff --git a/src/com/engine/dito/excel/cmd/ImportOrgExcelUtil.java b/src/com/engine/dito/excel/cmd/ImportOrgExcelUtil.java index e9a9a8dd..b5521a9c 100644 --- a/src/com/engine/dito/excel/cmd/ImportOrgExcelUtil.java +++ b/src/com/engine/dito/excel/cmd/ImportOrgExcelUtil.java @@ -3,10 +3,8 @@ package com.engine.dito.excel.cmd; import lombok.extern.slf4j.Slf4j; import weaver.conn.RecordSet; -@Slf4j public class ImportOrgExcelUtil { - public boolean backupTableByData(String tName,String bName){ RecordSet rs = new RecordSet(); boolean isExist = checkTableIsExist(bName); diff --git a/src/com/engine/dito/excel/web/ImportExcelAction.java b/src/com/engine/dito/excel/web/ImportExcelAction.java index b95c3aa5..60845697 100644 --- a/src/com/engine/dito/excel/web/ImportExcelAction.java +++ b/src/com/engine/dito/excel/web/ImportExcelAction.java @@ -27,7 +27,7 @@ public class ImportExcelAction { @GET - @Path("/orgexcel") + @Path("/import") @Produces({MediaType.TEXT_PLAIN}) public String importOrgExcel(@Context HttpServletRequest request, @Context HttpServletResponse response) { BaseBean bb = new BaseBean(); diff --git a/src/weaver/interfaces/dito/comInfo/PropBean.java b/src/weaver/interfaces/dito/comInfo/PropBean.java index ff73b4d5..59669bed 100644 --- a/src/weaver/interfaces/dito/comInfo/PropBean.java +++ b/src/weaver/interfaces/dito/comInfo/PropBean.java @@ -10,10 +10,14 @@ public class PropBean { public static BaseBean bb = new BaseBean(); public static String active = Util.null2String(bb.getPropValue("developProp","active")).toUpperCase(); + /*** + * + * @param pkey + * @return + */ public static String getUfPropValue(String pkey) { BaseBean baseBean = new BaseBean(); - if(StringUtils.isEmpty(pkey)){ return ""; } @@ -22,17 +26,55 @@ public class PropBean { active = Util.null2String(baseBean.getPropValue("developProp","active")).toUpperCase(); } + baseBean.writeLog("propbeanactive:"+active+" pkey:"+pkey+" "+active+"VALUE"); String pvalue = ""; try{ RecordSet rs = new RecordSet(); + baseBean.writeLog("22222:"); String sql = " SELECT DEVVALUE,TESTVALUE,PRODVALUE FROM UF_PROP WHERE PKEY = ?"; - rs.executeQuery(sql,new Object[]{pkey}); + + baseBean.writeLog("22222:"); + baseBean.writeLog("propbeansql:"+sql); + + rs.executeQuery(sql,new Object[]{pkey.trim()}); + baseBean.writeLog("33333:"); if(rs.next()){ pvalue = Util.null2String(rs.getString(active+"VALUE")); } + baseBean.writeLog("4444444:"); baseBean.writeLog("pvalue:"+pvalue); }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("propbean-e:"+e); + } + return pvalue; + } + + /*** + * + * @param pkey + * @return + */ + public String getUfPropValueStatic(String pkey) + { + BaseBean baseBean = new BaseBean(); + if(StringUtils.isEmpty(pkey)){ + return ""; + } + String active = Util.null2String(baseBean.getPropValue("developProp","active")).toUpperCase(); + String pvalue = ""; + try{ + RecordSet rs = new RecordSet(); + String sql = " SELECT DEVVALUE,TESTVALUE,PRODVALUE FROM UF_PROP WHERE PKEY = ?"; + rs.executeQuery(sql,new Object[]{pkey.trim()}); + if(rs.next()){ + pvalue = Util.null2String(rs.getString(active+"VALUE")); + } + baseBean.writeLog("pvalue:"+pvalue); + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("propbean-e:"+e); } return pvalue; } diff --git a/src/weaver/interfaces/dito/filter/PortalLoginBeforeFilter.java b/src/weaver/interfaces/dito/filter/PortalLoginBeforeFilter.java index 5a2def49..0156e3e5 100644 --- a/src/weaver/interfaces/dito/filter/PortalLoginBeforeFilter.java +++ b/src/weaver/interfaces/dito/filter/PortalLoginBeforeFilter.java @@ -21,16 +21,15 @@ public class PortalLoginBeforeFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { - - BaseBean bb = new BaseBean(); - String bpm_host_array = PropBean.getUfPropValue("bpm_host_array"); - if (!"".equals(bpm_host_array)) { + PropBean propBean = new PropBean(); + String bpm_host_array = propBean.getUfPropValueStatic("bpm_host_array"); + if (StringUtils.isNotEmpty(bpm_host_array)) { String[] bpm_host_arr = bpm_host_array.split(";"); for (int i = 0; i < bpm_host_arr.length; i++) { bpmHostList.add(bpm_host_arr[i]); } } - portalUserAuth = PropBean.getUfPropValue("portal_user_auth"); + portalUserAuth = propBean.getUfPropValueStatic("portal_user_auth"); } @Override diff --git a/src/weaver/interfaces/dito/job/WorkflowAuthModelingCronJobTest.java b/src/weaver/interfaces/dito/job/WorkflowAuthModelingCronJobTest.java new file mode 100644 index 00000000..9932d0d1 --- /dev/null +++ b/src/weaver/interfaces/dito/job/WorkflowAuthModelingCronJobTest.java @@ -0,0 +1,23 @@ +package weaver.interfaces.dito.job; + +import weaver.general.BaseBean; +import weaver.interfaces.schedule.BaseCronJob; + + +/** + * @version 1.0 + * @Title ecology-9 + * @Company 泛微软件 + * @CreateDate 2022/11/14 + * @Description ${description} + * @Author Lee + */ +public class WorkflowAuthModelingCronJobTest extends BaseCronJob { + @Override + public void execute() { + BaseBean bb = new BaseBean(); + bb.writeLog("start WorkflowAuthModelingCronJobTest"); + WorkflowAuthModelingUtil workflowAuthModelingUtil = new WorkflowAuthModelingUtil(); + workflowAuthModelingUtil.executeData(""); + } +} diff --git a/src/weaver/interfaces/dito/job/WorkflowAuthModelingUtil.java b/src/weaver/interfaces/dito/job/WorkflowAuthModelingUtil.java new file mode 100644 index 00000000..282a21fb --- /dev/null +++ b/src/weaver/interfaces/dito/job/WorkflowAuthModelingUtil.java @@ -0,0 +1,259 @@ +package weaver.interfaces.dito.job; + +import org.apache.commons.lang.StringUtils; +import weaver.conn.RecordSet; +import weaver.formmode.setup.ModeRightInfo; +import weaver.general.BaseBean; +import weaver.general.TimeUtil; +import weaver.general.Util; +import weaver.share.ShareManager; + +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @version 1.0 + * @Title ecology-9 + * @Company 泛微软件 + * @CreateDate 2022/11/14 + * @Description ${description} + * @Author Lee + */ +public class WorkflowAuthModelingUtil { + + public Map executeData(String lcids) { + Map map = new HashMap(); + int successDelete = 0; + int failureDelete = 0; + int successInsert = 0; + int failureInsert = 0; + int unchangecount = 0; + int exceptioncount = 0; + + + BaseBean bb = new BaseBean(); + bb.writeLog("start WorkflowAuthModelingCronJobTest"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + bb.writeLog("WorkflowAuthModelingUtil---date:"+sdf.format(new Date())); + + RecordSet rs = new RecordSet(); + ShareManager shareManager = new ShareManager(); + + String currentTime = TimeUtil.getCurrentTimeString(); + ModeRightInfo modeRightInfo = new ModeRightInfo(); + SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss"); + String modedatacreatedate = formatter1.format(new Date()); + String modedatacreatetime = formatter2.format(new Date()); + + String modedatacreater = "1"; + String modedatacreatertype = "0"; + String modedatamodifier = "1"; + String uf_tablename = "uf_workflow_auth"; + + try{ + + String formmodeid = ""; + //查询模块id + String formModeSql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = ? "; + + rs.executeQuery(formModeSql,new Object[]{uf_tablename}); + if (rs.next()) { + formmodeid = Util.null2String(rs.getString("id")); + } + + bb.writeLog("formmodeid:"+formmodeid); + + String where = "" ; + if(StringUtils.isNotEmpty(lcids)){ + where = " and in in("+lcids+")" ; + } + List> workflowList = new ArrayList>(); + Map workflowMap = null; + String baseWorkflowSql = " select id,workflowname from workflow_base where isvalid = 1 and id <> 1 "+where+" order by id "; + rs.execute(baseWorkflowSql); + while (rs.next()) { + String workflowId = rs.getString("id"); + String workflowname = rs.getString("workflowname"); + workflowMap = new HashMap(); + workflowMap.put("workflowId",workflowId); + workflowMap.put("workflowname",workflowname); + workflowList.add(workflowMap); + } + bb.writeLog("workflowList:"+workflowList.size()); + + for(int i=0;i workflowUserMap = workflowList.get(i); + String workflowId = workflowUserMap.get("workflowId"); + + List dbUserList = new ArrayList(); + String sql = " select userselect from "+uf_tablename+" where effective = 0 and workflowselect = ? " ; + rs.executeQuery(sql,new Object[]{}); + while (rs.next()){ + String userselect = rs.getString("userselect"); + if(!dbUserList.contains(userselect)){ + dbUserList.add(userselect); + } + } + + bb.writeLog("dbUserList:"+dbUserList.size()); + String workflowUserIds = shareManager.getWorkflowCreater(Integer.parseInt(workflowId)); + //bb.writeLog("userIds:"+userIds); + if(StringUtils.isNotEmpty(workflowUserIds)) + { + Set userSet = new HashSet(Arrays.asList(workflowUserIds.split(","))); + String[] workflowUserArray = userSet.toArray(new String[userSet.size()]); + List workflowUserList = new ArrayList(workflowUserArray.length); + Collections.addAll(workflowUserList, workflowUserArray); + if(workflowUserList !=null && workflowUserList.size() > 0){ + // 交集 + List intersectionList = workflowUserList.stream().filter(item -> dbUserList.contains(item)).collect(Collectors.toList()); + System.out.println("---交集 intersection---:"+intersectionList.size()); + unchangecount = intersectionList.size(); + + // 差集 (list1 - list2) + List addUserList = workflowUserList.stream().filter(item -> !dbUserList.contains(item)).collect(Collectors.toList()); + bb.writeLog("---差集 addUserList (workflowUserList - dbUserList)---:"+addUserList.size()); + + // 差集 (list2 - list1) + List delUserList = dbUserList.stream().filter(item -> !workflowUserList.contains(item)).collect(Collectors.toList()); + bb.writeLog("---差集 delUserList (dbUserList - workflowUserList)---:"+delUserList.size()); + + workflowUserMap.put("adduserids",addUserList.stream().collect(Collectors.joining(","))); + workflowUserMap.put("deluserids",delUserList.stream().collect(Collectors.joining(","))); + } + }else{ + workflowUserMap.put("adduserids",""); + workflowUserMap.put("deluserids",dbUserList.stream().collect(Collectors.joining(","))); + } + } + + + for(int i=0;i workflowUserMap = workflowList.get(i); + String workflowId = workflowUserMap.get("workflowId"); + String workflowname = workflowUserMap.get("workflowname"); + String adduserids = workflowUserMap.get("adduserids"); + String deluserids = workflowUserMap.get("deluserids"); + //bb.writeLog("distinctuserids:"+distinctuserids); + + if(StringUtils.isNotEmpty(adduserids)) + { + List addUserList = Arrays.asList(adduserids.split(",")); + bb.writeLog("userList:"+addUserList.size()); + for(int k=0;k0) + { + String data_id = "" ; + sql = " select id from "+uf_tablename+" where uuid=? " ; + rs.executeQuery(sql,new Object[]{uuid}); + bb.writeLog("sql:"+sql); + if(rs.next()){ + data_id = Util.null2String(rs.getString("id")); + } + if(StringUtils.isNotEmpty(data_id)){ + modeRightInfo.editModeDataShare(Integer.valueOf(modedatacreater), Integer.parseInt(formmodeid), Integer.parseInt(data_id)); + bb.writeLog("权限更新成功,:"); + } + successInsert++; + }else{ + bb.writeLog("新增数据失败,:"); + failureInsert++; + } + } + } + } + + if(StringUtils.isNotEmpty(deluserids)) + { + List addUserList = Arrays.asList(adduserids.split(",")); + bb.writeLog("userList:"+addUserList.size()); + for(int k=0;k msgs, ConsumeConcurrentlyContext consumeConcurrentlyContext) { + BaseBean bb = new BaseBean(); + MessageExt msg = msgs.get(0); + + RocketmqUtil rocketmqUtil = new RocketmqUtil(); + + try { + + bb.writeLog("Consumer---3----"+new String(msg.getBody())); + String msgdata = new String(msg.getBody(),"UTF-8"); + if(!"".equals(msgdata)) + { + String data = msgdata.substring(msgdata.indexOf("{")); + int errcount = rocketmqUtil.updateOrgData(data); + bb.writeLog("Consumer---errcount---:"+errcount); + } + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + bb.writeLog("Consumer---UnsupportedEncodingException---e:"+e); + return ConsumeConcurrentlyStatus.RECONSUME_LATER; + } + return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; + + } + +} diff --git a/src/weaver/interfaces/dito/mq/RocketmqServlet.java b/src/weaver/interfaces/dito/mq/RocketmqServlet.java new file mode 100644 index 00000000..63db5ad7 --- /dev/null +++ b/src/weaver/interfaces/dito/mq/RocketmqServlet.java @@ -0,0 +1,216 @@ +package weaver.interfaces.dito.mq; + + +import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; +import org.apache.rocketmq.client.exception.MQClientException; +import org.apache.rocketmq.common.consumer.ConsumeFromWhere; +import org.apache.rocketmq.common.protocol.heartbeat.MessageModel; +import weaver.file.Prop; +import weaver.general.BaseBean; +import weaver.general.GCONST; +import weaver.general.InitServer; +import weaver.interfaces.dito.comInfo.PropBean; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; + + + +public class RocketmqServlet extends HttpServlet { + + + private boolean isMainIp = false;//是否为主节点 + + private boolean isSampleMode = false;//是否为单机(启用ridis并且配置了主节点的,则不是单机,否则认为是集群环境) + + @Override + public void init() throws ServletException + { + + BaseBean bb = new BaseBean(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + + bb.writeLog("initiated---进入时间:"+sdf.format(new Date())); + bb.writeLog("***** resource model initiated"); + bb.writeLog("***** resource model initiated"); + bb.writeLog("***** resource model initiated"); + + try{ + isMainIp = isMainIp();//计算是否为集群中的主节点 + isSampleMode = isSampleMode();//判断是否为单机 + bb.writeLog("isMainIp:"+isMainIp); + bb.writeLog("isSampleMode:"+isSampleMode); + + if(isSampleMode){ + initData(); + }else{ + if (isMainIp) { + //则调用service方法加载设置,重新获取workflowid相关超时设置OvertimeEntity + initData(); + } + } + + + + //DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("portal-producer-group_nj"); + //DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("cbec-consumer-group_nj_133"); + //consumer.setNamesrvAddr("172.16.84.183:9001;172.16.84.187:9001"); +// consumer.subscribe("dataSync_topic_nj", "BPM"); +// consumer.setInstanceName("dataSync_topic_nj"); + +// String consumerGroup = PropBean.getUfPropValue("consumerGroup"); +// bb.writeLog("consumerGroup:"+consumerGroup); +// DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(consumerGroup); +// +// String namesrvAddr = PropBean.getUfPropValue("namesrvAddr"); +// bb.writeLog("namesrvAddr:"+namesrvAddr); +// consumer.setNamesrvAddr(namesrvAddr); +// +// String instanceName = PropBean.getUfPropValue("instanceName"); +// bb.writeLog("instanceName:"+instanceName); +// consumer.setInstanceName(instanceName); +// consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); +// //consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET); +// +// String topic = PropBean.getUfPropValue("topic"); +// String subExpression = PropBean.getUfPropValue("subExpression"); +// +// bb.writeLog("topic:"+topic); +// bb.writeLog("subExpression:"+subExpression); +// +// consumer.subscribe(topic,subExpression); +// consumer.setConsumeThreadMin(1); +// consumer.setConsumeThreadMax(1); +// consumer.setConsumeMessageBatchMaxSize(1); +// consumer.setMessageModel(MessageModel.BROADCASTING); +// consumer.registerMessageListener(new RocketMsgListener()); +// consumer.registerMessageListener(new RocketMsgOrderListener()); + + /** + * Consumer对象在使用之前必须要调用start初始化,初始化一次即可
+ */ +// consumer.start(); +// bb.writeLog("Consumer Started."); + + }catch (Exception e){ + bb.writeLog("Consumer resource model initiated--MQClientException:"+e); + } + + bb.writeLog("***** resource model initiated"); + bb.writeLog("***** resource model initiated"); + bb.writeLog("***** resource model initiated"); + } + + + public void initData(){ + BaseBean bb = new BaseBean(); + PropBean propBean = new PropBean(); + + try { + String consumerGroup = propBean.getUfPropValueStatic("consumerGroup"); + bb.writeLog("consumerGroup:" + consumerGroup); + DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(consumerGroup); + String namesrvAddr = propBean.getUfPropValueStatic("namesrvAddr"); + bb.writeLog("namesrvAddr:" + namesrvAddr); + consumer.setNamesrvAddr(namesrvAddr); + String instanceName = propBean.getUfPropValueStatic("instanceName"); + bb.writeLog("instanceName:" + instanceName); + consumer.setInstanceName(instanceName); + consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); + String topic = propBean.getUfPropValueStatic("topic"); + String subExpression = propBean.getUfPropValueStatic("subExpression"); + bb.writeLog("topic:" + topic); + bb.writeLog("subExpression:" + subExpression); + String authid = propBean.getUfPropValueStatic("authid"); + String authpwd = propBean.getUfPropValueStatic("authpwd"); + String clustername = propBean.getUfPropValueStatic("clustername"); + String tenantid = propBean.getUfPropValueStatic("tenantid"); + bb.writeLog("authid:" + authid); + bb.writeLog("authpwd:" + authpwd); + bb.writeLog("clustername:" + clustername); + bb.writeLog("tenantid:" + tenantid); + consumer.subscribe(topic, subExpression); + consumer.setAuthID(authid); + consumer.setAuthPWD(authpwd); + consumer.setClusterName(clustername); + consumer.setTenantID(tenantid); + + consumer.setConsumeThreadMin(1); + consumer.setConsumeThreadMax(1); + consumer.setConsumeMessageBatchMaxSize(1); + + consumer.setMessageModel(MessageModel.BROADCASTING); + consumer.registerMessageListener(new RocketMsgListener()); + consumer.start(); + bb.writeLog("Consumer66Started."); + } catch (MQClientException var13) { + bb.writeLog("Consumer resource model initiated--MQClientException:" + var13); + } + } + + /** + * 实现 HttpServlet 的 doGet 方法,不作任何操作 + * @param request + * @param response + * @throws ServletException + * @throws IOException + */ + @Override + public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + doPost(request, response); + } + + /** + * 实现 HttpServlet 的 doPost 方法,不作任何操作 + * @param request + * @param response + * @throws ServletException + * @throws IOException + */ + + @Override + public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + } + + @Override + public void destroy() + { + // 什么也不做 + } + + + private boolean isMainIp() { + new BaseBean().writeLog("超时判断主节点"); + String mainControlIp = ""; + ArrayList hostIps = new InitServer().getRealIp(); + Prop prop = Prop.getInstance(); + mainControlIp = prop.getPropValue(GCONST.getConfigFile(), "MainControlIP"); + if (hostIps == null || hostIps.size() == 0) { + new BaseBean().writeLog("System Init Error:Cannot get local Ip address,This may cause scripts or Timed task not run! "); + } else { + new BaseBean().writeLog("System Init Message:mainControlIp=" + mainControlIp + " localIp:" + hostIps.toString()); + } + if ((!"".equals(mainControlIp) && hostIps.contains(mainControlIp)) || "".equals(mainControlIp)) { + return true; + } + return false; + } + + public boolean isSampleMode() { + BaseBean base = new BaseBean(); + boolean redis_flag = "1".equals(base.getPropValue("weaver_new_session", "status")); + boolean mainIp_flag = !"".equals(base.getPropValue("weaver", "MainControlIP")); + base.writeLog("超时判断是否为集群环境:redis_flag======"+redis_flag); + base.writeLog("超时判断是否为集群环境:mainIp_flag======="+mainIp_flag); + return !(redis_flag && mainIp_flag); + } + + + +} diff --git a/src/weaver/interfaces/dito/mq/RocketmqUtil.java b/src/weaver/interfaces/dito/mq/RocketmqUtil.java new file mode 100644 index 00000000..53417f3d --- /dev/null +++ b/src/weaver/interfaces/dito/mq/RocketmqUtil.java @@ -0,0 +1,1364 @@ +package weaver.interfaces.dito.mq; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang.StringUtils; +import weaver.conn.RecordSet; +import weaver.formmode.setup.ModeRightInfo; +import weaver.general.BaseBean; +import weaver.general.TimeUtil; +import weaver.general.Util; +import weaver.hrm.company.DepartmentComInfo; +import weaver.hrm.resource.ResourceComInfo; +import weaver.interfaces.dito.comInfo.PropBean; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +public class RocketmqUtil { + private Lock lock = new ReentrantLock(); + public int updateOrgData(String data) + { + BaseBean bb = new BaseBean(); + int errcount = 0; + try{ + lock.lock(); + JSONObject jsonObject = JSONObject.parseObject(data); + if(jsonObject.containsKey("requestObject")) + { + JSONArray requestArray = jsonObject.getJSONArray("requestObject"); + for(int i=0;i dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员信息更新sql执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + + } + }else if("D".equals(actType)){ + status = "5"; + String userUpdateSql = " update hrmresource set status=? where workcode=? "; + bb.writeLog("userUpdateSql:"+userUpdateSql); + boolean flag = rs.executeUpdate(userUpdateSql,new Object[]{status,staffCode}); + bb.writeLog("flag:"+flag); + if(!flag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员离职更新sql执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员系统中已存在,操作类型为A"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + if("A".equalsIgnoreCase(actType)) + { + String pwd = "1"; + String password = DigestUtils.md5Hex(pwd).toUpperCase(); //MD5加密 + bb.writeLog("password:"+password); + + rs.executeProc("HrmResourceMaxId_Get", ""); + rs.next(); + String id = "" + rs.getInt(1); + bb.writeLog("id:"+id); + + if(StringUtils.isNotEmpty(id)){ + String userInsertSql = " insert into hrmresource(id,loginid,password,workcode,lastname,departmentid,subcompanyid1," + + "creater,email,mobile,jobtitle,status,dsporder,systemlanguage,createdate,lastmoddate,created,modified," + + "locationid,seclevel,createrid,lastmodid) " + + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + bb.writeLog("userInsertSql:"+userInsertSql); + boolean flag = rs.executeUpdate(userInsertSql,new Object[]{id,staffCode,password,staffCode,lastname,deptId,subcompanyid1, + creator,email,pwdSmsTel,jobTitleId,status,loginedNum,systemlanguage,currentDate,currentDate,currentDateTime,currentDateTime, + locationid,seclevel,createrid,lastmodid}); + bb.writeLog("flag:"+flag); + if(!flag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员新增sql执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员不在系统中,操作类型为M或者D"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员所属部门为空"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }catch (Exception e){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人力资源异常:"+e.getMessage()); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + } + +// {"authenticationInfo":{"sysUserPostId":"37484","sysUserId":"1","key":"authenticationInfo"},"svcCode": +// "70300100030001","requestObject":[{"content":[{ +// "updateDate":"2022-07-22 11:05:22","orgName":"testOrg722","parentOrgCode":"LNP000001", +// "regionNbr":"TST_PR_CSS","orgLevel":"2","statusCd":"1000", +// "parentOrgName":"Vivia","orgId":"17012", +// "createStaff":"1","orgType":"1000", +// "regionId":"36","parentOrgId":"1", +// "orgCode":"testOrg722", +// "pathCode":"-1.1.17012","actType":"A","partyId":"0", +// "parRegionNbr":"1", +// "createDate":"2022-07-22 11:05:22" +// }],"tableName":"organization","primaryKey":"orgId"}],"key":"svcCont"} + /**** + * + * @param jsonArray + * @return + */ + public void updasteSysOrgData(JSONArray jsonArray, String tableName){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + String nowDateTime = sdf.format(new Date()); + + for(int i=0;i dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","更新部门SQL语句执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else if("D".equalsIgnoreCase(actType)) + { + canceled = "1"; + + int hrmResourceCount = 0 ; + String queryHrmResourceSql = " select id from hrmresource where departmentid = ? and status !=5 " ; + rs.executeQuery(queryHrmResourceSql,new Object[]{deptid}); + if(rs.next()){ + hrmResourceCount++; + } + + if(hrmResourceCount == 0 ){ + String deptUpdateSql = " update hrmdepartment set departmentmark=?,departmentname=?,canceled=?," + + " subcompanyid1=?,showorder=?, supdepid=? where departmentcode=? "; + bb.writeLog("deptUpdateSql:"+deptUpdateSql); + boolean flag = rs.executeUpdate(deptUpdateSql,new Object[]{departmentmark,departmentmark,canceled,subcompanyid1,orgId,supdepid,orgCode}); + bb.writeLog("flag:"+flag); + if(!flag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","封存部门SQL语句执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + + } + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","部门在系统中已存在,操作类型为A"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + if("A".equalsIgnoreCase(actType)) + { + String deptInsertSql = " insert into hrmdepartment(departmentmark,departmentname,departmentcode,subcompanyid1,supdepid,showorder) values(?,?,?,?,?,?) "; + bb.writeLog("deptInsertSql:"+deptInsertSql); + boolean flag = rs.executeUpdate(deptInsertSql,new Object[]{departmentmark,departmentmark,orgCode,subcompanyid1,supdepid,orgId}); + bb.writeLog("flag:"+flag); + if(!flag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","新增部门SQL语句执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","部门在系统中不存在,操作类型为M或者D"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","部门所属分部在系统为空"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }catch (Exception e){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","部门异常:"+e.getMessage()); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + } + +// {"authenticationInfo":{"sysUserPostId":"37484","sysUserId":"1","key":"authenticationInfo"},"svcCode": +// "70300100030001","requestObject":[{"content":[{"sysUserRoleId":"23444","updateDate":"2022-07-22 11:08:33", +// "systemInfoCode":"TYMH","sysRoleId":"17013","statusCd":"1000", +// "systemInfoId":"727001","operType":"1000", +// "systemUserCode":"finaceManager", +// "expDate":"2120-01-01 00:00:00","orgId":"17012", +// "createStaff":"1","effDate":"2022-07-21 10:17:51", +// "systemUserName":"financeManager", +// "orgCode":"testOrg722","roleCode":"orgManager","manageClass":"1000","roleName":"orgManager", +// "actType":"A","sysUserId":"20047","createDate":"2022-07-22 11:08:33"}], +// "tableName":"system_user_role","primaryKey":"sysUserRoleId"}],"key":"svcCont"} + + // {"authenticationInfo":{"sysUserPostId":"37484","sysUserId":"1","key":"authenticationInfo"},"svcCode":"70300100030001", +// "requestObject":[{"content":[{"sysUserRoleId":"23503","updateDate":"2022-07-27 09:32:48","systemInfoCode":"TYMH", +// "hisId":"20182","sysRoleId":"17015","statusCd":"1100","hasUserRole":false,"systemInfoId":"727001", +// "operType":"1000","systemUserCode":"testQian722","expDate":"2120-01-01 00:00:00","orgId":"2","createStaff":"1", +// "effDate":"2022-07-25 13:59:59","systemUserName":"testQian722","orgCode":"2","roleCode":"testQian722", +// "manageClass":"1000","roleName":"testQian722","actType":"D","sysUserId":"20055", +// "createDate":"2022-07-25 15:43:24","updateStaff":"1"}],"tableName":"system_user_role", +// "primaryKey":"sysUserRoleId"}],"key":"svcCont"} + + + //{"authenticationInfo":{"sysUserPostId":"37484","sysUserId":"1","key":"authenticationInfo"},"svcCode":"70300100030001", + // "requestObject":[{"content":[{"sysUserRoleId":"24031","updateDate":"2022-08-09 10:26:15","systemInfoCode":"TYMH", + // "sysRoleId":"17020","statusCd":"1000","systemInfoId":"727001","systemUserCode":"weaver12", + // "expDate":"2120-01-01 00:00:00","orgId":"11205","createStaff":"1","effDate":"2022-08-09 10:26:16", + // "systemUserName":"weaver12","orgCode":"GTR000593","roleCode":"weaver role","manageClass":"1000", + // "roleName":"weaver role","actType":"A","sysUserId":"20104","createDate":"2022-08-09 10:26:15"}], + // "tableName":"system_user_role","primaryKey":"sysUserRoleId"}],"key":"svcCont"} + + +// {"authenticationInfo":{"sysUserPostId":"37484","sysUserId":"1","key":"authenticationInfo"},"svcCode":"70300100030001", +// "requestObject":[{"content":[{"sysUserRoleId":"32411","updateDate":"2022-10-24 19:10:40", +// "systemInfoCode":"TYMH","hisId":"30145","sysRoleId":"23005", +// "statusCd":"1100","hasUserRole":false,"systemInfoId":"727001", +// "systemUserCode":"weaver44","expDate":"2120-01-01 00:00:00","orgId":"17012","createStaff":"1", +// "effDate":"2022-10-24 19:10:11","systemUserName":"weaver44", +// "orgCode":"testOrg722","roleCode":"TestRole02","manageClass":"1000", +// "roleName":"TestRole02","actType":"D","sysUserId":"28025","createDate":"2022-10-24 19:10:19", +// "updateStaff":"1"}],"tableName":"system_user_role","primaryKey":"sysUserRoleId"}],"key":"svcCont"} + + /*** + * + * @param jsonArray + */ + public void updateSystemUserRoleData(JSONArray jsonArray, String tableName) { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + String nowDateTime = sdf.format(new Date()); + + String rolelevel = "2" ; //总部=2;分部=1;部门=0 + String resourcetype = "1"; //1=人力资源 + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + + for (int i = 0; i < jsonArray.size(); i++) + { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String systemInfoCode = Util.null2String(jsonObject.get("systemInfoCode")); + if("PC_OA".equalsIgnoreCase(systemInfoCode)) + { + String roleCode = Util.null2String(jsonObject.get("roleCode")).replace(" ", ""); + String roleName = Util.null2String(jsonObject.get("roleName")); + + String systemUserCode = Util.null2String(jsonObject.get("systemUserCode")); + String systemUserName = Util.null2String(jsonObject.get("systemUserName")); + + String actType = Util.null2String(jsonObject.get("actType")); + String statusCd = Util.null2String(jsonObject.get("statusCd")); + bb.writeLog("statusCd:" + statusCd + " actType:" + actType); + + try { + + String userId = ""; + String roleId = ""; + + if (StringUtils.isNotEmpty(systemUserCode)) { + String sql = " select id from hrmresource where loginid=?"; + rs.executeQuery(sql, new Object[]{systemUserCode}); + if (rs.next()) { + userId = Util.null2String(rs.getString("id")); + } + } + + if(StringUtils.isNotEmpty(roleCode)) { + + String queryRoleIdSql = "select id from hrmroles where ecology_pinyin_search=?"; + rs.executeQuery(queryRoleIdSql, new Object[]{roleCode}); + if (rs.next()) { + roleId = rs.getString("id"); + } + } + bb.writeLog("userId:" + userId + " roleId:" + roleId); + + if (StringUtils.isNotEmpty(userId) && StringUtils.isNotEmpty(roleId)) { + //查看是否已存在角色用户关系 + String releationId = ""; + String ifExistSql = "select id from hrmrolemembers where roleid=? and resourceid=?"; + rs.executeQuery(ifExistSql,new Object[]{roleId, userId}); + if (rs.next()) { + releationId = rs.getString("id"); + } + bb.writeLog("userId:" + userId + " roleId:" + roleId + "releationId:" + releationId); + if (StringUtils.isNotEmpty(releationId)) { + if ("D".equals(actType)) { + String delHrmrolemembersSql = " delete from hrmrolemembers where id = ?"; + boolean flag = rs.executeUpdate(delHrmrolemembersSql, releationId); + bb.writeLog("delHrmrolemembersSql : " + flag); + if (!flag) { + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","角色成员新增失败"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","角色成员系统已存在,操作类型为A或者M"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } else { + if ("A".equals(actType)) { + String insertHrmrolemembersSql = "insert into hrmrolemembers(roleid,resourceid,rolelevel,resourcetype,uuid) values(?,?,?,?,?)"; + boolean flag = rs.executeUpdate(insertHrmrolemembersSql, new Object[]{roleId, userId, rolelevel, resourcetype, UUID.randomUUID().toString()}); + bb.writeLog("insertHrmrolemembersSql : " + flag); + if (!flag) { + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","角色成员新增失败"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","角色成员系统不存在,操作类型为M或者D"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员角色数据,人员或者角色系统不存在"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } catch (Exception e) { + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","角色成员异常:"+e.getMessage()); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + } + } + + + //{"authenticationInfo":{"sysUserPostId":"37484","sysUserId":"1","key":"authenticationInfo"},"svcCode":"70300100030001", +// "requestObject":[{"content":[{"updateDate":"2022-07-27 09:32:48","systemInfoCode":"TYMH","relType":"1100","orgId":"2", +// "sysUserPostId":"123089","orgType":"1000","systemUserName":"testQian722","orgCode":"2","postName":"testXiao", +// "staffName":"testQian722","actType":"D","sysUserId":"20055","createDate":"2022-07-25 15:43:24","defaultFlag":"0", +// "staffCode":"testQian722","orgName":"Default Branch 1","sysPostId":"18007","hisId":"322425", +// "statusCd":"1100","systemInfoId":"727001","systemUserCode":"testQian722","createStaff":"1", +// "postCode":"testXiao","staffId":22021,"updateStaff":"1"}],"tableName":"system_user_post", +// "primaryKey":"sysUserPostId"}],"key":"svcCont"} + + /*** + * + * @param jsonArray + */ + public void updateSystemUserPostData(JSONArray jsonArray, String tableName) { + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + String nowDateTime = sdf.format(new Date()); + + for (int i = 0; i < jsonArray.size(); i++) { + + JSONObject jsonObject = jsonArray.getJSONObject(i); + + String postCode = Util.null2String(jsonObject.get("postCode")); + String systemUserCode = Util.null2String(jsonObject.get("systemUserCode")); + String orgCode = Util.null2String(jsonObject.get("orgCode")); + + String actType = Util.null2String(jsonObject.get("actType")); + String currentDateTime = TimeUtil.getCurrentTimeString(); //当前时间 + String updateStaff = Util.null2String(jsonObject.get("updateStaff")); + if(StringUtils.isEmpty(updateStaff)){ + updateStaff = "1"; + } + + String userId = ""; + String jobtitlesId = ""; + String departmentId = ""; + + try { + if(StringUtils.isNotEmpty(orgCode)){ + String querDepartmentIdSql = " select id from hrmdepartment where departmentcode=? "; + bb.writeLog("querDepartmentIdSql:"+querDepartmentIdSql); + rs.executeQuery(querDepartmentIdSql,new Object[]{orgCode}); + if (rs.next()){ + departmentId = rs.getString("id"); + } + } + if(StringUtils.isNotEmpty(departmentId) && StringUtils.isNotEmpty(systemUserCode)) + { + String sql = " select id from hrmresource where workcode=? and departmentid = ?"; + bb.writeLog("sql:" + sql); + rs.executeQuery(sql, new Object[]{systemUserCode, departmentId}); + if (rs.next()) { + userId = Util.null2String(rs.getString("id")); + } + } + if(StringUtils.isNotEmpty(postCode)) { + String queryRoleIdSql = " select id from hrmjobtitles where jobtitlecode=? "; + bb.writeLog("queryRoleIdSql:" + queryRoleIdSql); + rs.executeQuery(queryRoleIdSql, new Object[]{postCode}); + if (rs.next()) { + jobtitlesId = rs.getString("id"); + } + } + bb.writeLog("jobtitlesId:"+jobtitlesId); + + if(StringUtils.isNotEmpty(jobtitlesId) && StringUtils.isNotEmpty(userId)) + { + if("A".equals(actType) || "M".equals(actType)) + { + String updateUserJobSql = " update hrmresource set jobtitle=?,modified=?,modifier=? where id=? "; + bb.writeLog("updateUserJobSql:"+updateUserJobSql); + boolean flag = rs.executeUpdate(updateUserJobSql,new Object[]{jobtitlesId,currentDateTime,updateStaff,userId}); + bb.writeLog(" updateUserJobFlag: "+flag); + if(!flag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","更新人员岗位sql执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else if("D".equals(actType)){ + jobtitlesId = "" ; + String updateUserJobSql = " update hrmresource set jobtitle=?,modified=?,modifier=? where id=? "; + bb.writeLog("updateUserJobSql:"+updateUserJobSql); + boolean flag = rs.executeUpdate(updateUserJobSql,new Object[]{jobtitlesId,currentDateTime,updateStaff,userId}); + bb.writeLog(" updateUserJobFlag: "+flag); + if(!flag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","删除人员岗位sql执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员岗位中岗位或者人员ID在系统中不存在"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }catch (Exception e){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员岗位异常:"+e.getMessage()); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + } + +// {"authenticationInfo":{"sysUserPostId":"37484","sysUserId":"1","key":"authenticationInfo"},"svcCode":"70300100030001", +// "requestObject":[{"content":[{"updateDate":"2022-08-09 10:24:01", +// "systemInfoCode":"TYMH","regionNbr":"TST_PR_CSS","sysRoleId":"17020", +// "sysRoleName":"weaver role","statusCd":"1000","systemInfoId":"727001","sysRoleCode":"weaver role", +// "createStaff":"1","regionId":"36","sysRoleType":"1000","actType":"A","createDate":"2022-08-09 10:24:01"}], +// "tableName":"system_roles","primaryKey":"sysRoleId"}],"key":"svcCont"} + + +// {"updateDate":"2022-08-09 10:24:01", +// "systemInfoCode":"TYMH","regionNbr":"TST_PR_CSS","sysRoleId":"17020", +// "sysRoleName":"weaver role","statusCd":"1000","systemInfoId":"727001","sysRoleCode":"weaver role", +// "createStaff":"1","regionId":"36","sysRoleType":"1000","actType":"A","createDate":"2022-08-09 10:24:01"} + +// {"authenticationInfo":{"sysUserPostId":"37484","sysUserId":"1","key":"authenticationInfo"}, +// "svcCode":"70300100030001","requestObject":[{"content":[{"updateDate":"2022-07-27 11:04:19","systemInfoCode": +// "TYMH","regionNbr":"TST_PR_CSS","sysRoleId":"17016","sysRoleName":"role727", +// "statusCd":"1000","sysRoleDesc":"test727","systemInfoId":"727001","sysRoleCode":"role727", +// "createStaff":"1","regionId":"36","sysRoleType":"1000","actType":"A","createDate":"2022-07-27 11:04:19"}], +// "tableName":"system_roles","primaryKey":"sysRoleId"}],"key":"svcCont"} + + /*** + * + * @param jsonArray + */ + public void updasteSysRoleData(JSONArray jsonArray, String tableName) { + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + String nowDateTime = sdf.format(new Date()); + + String type = "0"; + String subcompanyid = "0" ; + + for (int i = 0; i < jsonArray.size(); i++) + { + JSONObject jsonObject = jsonArray.getJSONObject(i); + + //角色标识 + String sysRoleCode = Util.null2String(jsonObject.get("sysRoleCode")).replace(" ",""); + //角色名称 + String sysRoleName = Util.null2String(jsonObject.get("sysRoleName")); + //状态1000 有效,1100 无效 + String statusCd = Util.null2String(jsonObject.get("statusCd")); + //角色描述 +// String sysRoleDesc = Util.null2String(jsonObject.get("sysRoleDesc")); + //角色类型1100:管理角色,1000:普通角色 + String sysRoleType = Util.null2String(jsonObject.get("sysRoleType")); + //A:新增,M:修改 + String actType = Util.null2String(jsonObject.get("actType")); + + + bb.writeLog("sysRoleName:"+sysRoleName); + bb.writeLog("sysRoleCode:"+sysRoleCode); + +// String rolesmark = "~`~`7 "+sysRoleName+"`~`8 "+sysRoleName+"`~`~" ; +// String rolesname = "~`~`7 "+sysRoleName+"`~`8 "+sysRoleName+"`~`~" ; + + String rolesmark = sysRoleName ; + String rolesname = sysRoleName ; + + bb.writeLog("rolesmark:"+rolesmark); + bb.writeLog("rolesname:"+rolesname); + + String systemInfoCode = Util.null2String(jsonObject.get("systemInfoCode")); + if("PC_OA".equalsIgnoreCase(systemInfoCode)){ + String uuid = UUID.randomUUID().toString(); + String rolesid = ""; + try{ + if(StringUtils.isNotEmpty(sysRoleCode)){ + String queryRoleSql = "select id from hrmroles where ecology_pinyin_search=?"; + rs.executeQuery(queryRoleSql,new Object[]{sysRoleCode}); + bb.writeLog(queryRoleSql); + if (rs.next()){ + rolesid = rs.getString("id"); + } + } + bb.writeLog("rolesid:"+rolesid); + if (StringUtils.isNotEmpty(rolesid)){ + if ("M".equals(actType)) { //修改 + String updateHrmrolesSql = " update hrmroles set rolesmark=?,rolesname=? where id=?"; + boolean flag = rs.executeUpdate(updateHrmrolesSql, new Object[]{sysRoleName, sysRoleName, rolesid}); + bb.writeLog("updateHrmroles : " + flag); + if (!flag) { + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","系统角色更新SQL执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else if("D".equals(actType)) { + int membercount = 0; + String queryHrmRolesSql = " select id from hrmrolemembers where roleid = ?"; + rs.executeQuery(queryHrmRolesSql,new Object[]{rolesid}); + while (rs.next()){ + membercount++; + } + if(membercount == 0){ + String deleteHrmRolesSql = " delete from hrmroles where id = ?"; + boolean flag = rs.executeUpdate(deleteHrmRolesSql,rolesid); + if(!flag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","系统角色删除SQL执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","系统角色存在角色成员,无法删除系统角色"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","角色成员系统已存在,操作类型为A"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else { + if ("A".equals(actType)){ //新增 + String insertHrmrolesSql = " insert into hrmroles(rolesmark,rolesname,type,subcompanyid,ecology_pinyin_search,uuid) values(?,?,?,?,?,?)"; + boolean flag = rs.executeUpdate(insertHrmrolesSql,new Object[]{rolesmark,rolesname,type,subcompanyid,sysRoleCode, uuid}); + bb.writeLog("insertHrmroles : "+flag); + if(!flag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","新增系统角色SQL执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","系统角色系统不存在,操作类型为M或者D"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + }catch (Exception e){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","系统角色:"+e.getMessage()); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + } + } + + + //{"authenticationInfo":{"sysUserPostId":"37484","sysUserId":"1","key":"authenticationInfo"},"svcCode":"70300100030001", + // "requestObject":[{"content":[{"updateDate":"2022-07-27 11:04:39","orgName":"Vivia","regionNbr":"TST_PR_CSS", + // "initFlag":"0","sysPostId":"18008","statusCd":"1000","systemInfoId":"727001", + // "sysPostType":"1000","orgId":"1","createStaff":"1","regionId":"36","orgCode":"LNP000001","sysPostCode":"position727", + // "actType":"A","sysPostDesc":"test727","sysPostName":"position727","createDate":"2022-07-27 11:04:39"}], + // "tableName":"system_post","primaryKey":"sysPostId"}],"key":"svcCont"} + +// {"authenticationInfo":{"sysUserPostId":"37484","sysUserId":"1","key":"authenticationInfo"},"svcCode":"70300100030001", +// "requestObject":[{"content":[{"updateDate":"2022-07-19 00:51:32", +// "orgName":"Default Company","regionNbr":"1","initFlag":"0", +// "sysPostId":"6006","statusCd":"1000","systemInfoId":"727001", +// "sysPostType":"1000","orgId":"1","createStaff":"1","regionId":"731","orgCode":"1", +// "sysPostCode":"CASH_ADMIN","actType":"M","sysPostDesc":"CASH_ADMIN","sysPostName":"CASH_ADMIN", +// "createDate":"2020-11-13 11:02:11","updateStaff":"1"}],"tableName":"system_post","primaryKey":"sysPostId"}],"key":"svcCont"} + + + /*** + * + * @param jsonArray + */ + public void updasteSysPostData(JSONArray jsonArray, String tableName) { + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + String nowDateTime = sdf.format(new Date()); + + String creater ="1"; + String modifier = "1" ; + String created = TimeUtil.getCurrentTimeString() ; + String modified = TimeUtil.getCurrentTimeString() ; + + for (int i = 0; i < jsonArray.size(); i++) + { + JSONObject jsonObject = jsonArray.getJSONObject(i); + //系统岗位编码 + String sysPostType = Util.null2String(jsonObject.get("sysPostType")); + if("1300".equals(sysPostType)) + { + String sysPostCode = Util.null2String(jsonObject.get("sysPostCode")); + //系统岗位名称 + String sysPostName = Util.null2String(jsonObject.get("sysPostName")); + //部门编码 + String orgCode = Util.null2String(jsonObject.get("orgCode")); + //系统岗位状态1000 有效 1100 无效 + String statusCd = Util.null2String(jsonObject.get("statusCd")); + //修改时间 + String updateDate = Util.null2String(jsonObject.get("updateDate")); + //修改人 + String updateStaff = Util.null2String(jsonObject.get("updateStaff")); + //创建时间 + String createDate = Util.null2String(jsonObject.get("createDate")); + //创建人 + String createStaff = Util.null2String(jsonObject.get("createStaff")); + //A:新增,M:修改 + String actType = Util.null2String(jsonObject.get("actType")); + + //String allname = "~`~`7 " + sysPostName + "`~`8 " + sysPostName + "`~`~"; + + String jobtitlemark = sysPostName; + String jobtitlename = sysPostName; + + try { + String departmentId = ""; + if(StringUtils.isNotEmpty(orgCode)){ + String querDepartmentIdSql = "select id from hrmdepartment where departmentcode=?"; + rs.executeQuery(querDepartmentIdSql, new Object[]{orgCode}); + if (rs.next()) { + departmentId = rs.getString("id"); + } + } + + String groupsid = ""; + String jobgroupname = "DITO_MSS_LEADERSHIP"; + String sql = " select * from hrmjobgroups where jobgroupname like '%"+jobgroupname+"%'"; + rs.executeQuery(sql); + if (rs.next()) { + groupsid = Util.null2String(rs.getString("id")); + } + + String jobactivitiesid = ""; + String jobactivityname = "MSS_LEADERSHIP"; + if (StringUtils.isNotEmpty(groupsid) && StringUtils.isNotEmpty(jobactivityname)) { + sql = " select id from hrmjobactivities where jobgroupid = ? and jobactivityname like '%" + jobactivityname + "%'"; + rs.executeQuery(sql, new Object[]{groupsid}); + if (rs.next()) { + jobactivitiesid = Util.null2String(rs.getString("id")); + } + } + + String jobtitleid = ""; + if (StringUtils.isNotEmpty(jobactivitiesid)) + { + String queryRoleSql = " select id from hrmjobtitles where jobtitlecode =? and jobactivityid = ?"; + rs.executeQuery(queryRoleSql, new Object[]{sysPostCode, jobactivitiesid}); + if (rs.next()) { + jobtitleid = rs.getString("id"); + } + } + + if (StringUtils.isNotEmpty(jobtitleid)) + { + if ("M".equals(actType)) { //修改 + String updateHrmjobactivitiesSql = "update hrmjobtitles set jobtitlemark=?,jobtitlename=?,modified=?,modifier=? where id=?"; + boolean flag = rs.executeUpdate(updateHrmjobactivitiesSql, new Object[]{jobtitlemark, jobtitlename, modified, modifier, jobtitleid}); + bb.writeLog("insertHrmjobactivitiesSql flag:" + flag); + if (!flag) { + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","系统岗位更新SQL执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } else if ("D".equals(actType)) { + String canceled = "1"; + String updateHrmjobactivitiesSql = "update hrmjobtitles set jobtitlemark=?,jobtitlename=?,modified=?,modifier=?,canceled = ? where id=?"; + boolean flag = rs.executeUpdate(updateHrmjobactivitiesSql,new Object[]{jobtitlemark, jobtitlename, modified, modifier, canceled, jobtitleid}); + bb.writeLog("insertHrmjobactivitiesSql flag:" + flag); + if (!flag) { + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","系统岗位封存SQL执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","系统岗位系统已存在,操作类型为A"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + if ("A".equals(actType)) { //新增 + String uuid = UUID.randomUUID().toString(); + String insertHrmjobactivitiesSql = " insert into hrmjobtitles(jobtitlemark,jobtitlename,jobactivityid,jobdepartmentid,jobtitlecode,created,creater,modified,modifier,uuid) values(?,?,?,?,?,?,?,?,?,?)"; + boolean flag = rs.executeUpdate(insertHrmjobactivitiesSql, new Object[]{jobtitlemark, jobtitlename, jobactivitiesid, departmentId, sysPostCode, created, creater, modified, modifier, uuid}); + bb.writeLog("insertHrmjobactivitiesSql flag:" + flag); + if (!flag) { + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","系统岗位新增SQL执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","系统岗位系统不存在,操作类型为D或者M"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + }catch (Exception e) { + + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","系统角色:"+e.getMessage()); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + + } + } + } + } + + + // {"authenticationInfo":{"sysUserPostId":"37484","sysUserId":"1","key":"authenticationInfo"},"svcCode":"70300100030001", + // "requestObject":[{"content":[{"statusDate":"2022-08-09 09:47:54","updateDate":"2022-08-09 09:47:54", + // "staffCode":"fanweiceshi12","orgName":"yhwgfz","regionNbr":"TST_PR_CSS", + // "staffAccount":"fanweiceshi12","statusCd":"1000","staffType":"1000","orgId":"11205","createStaff":"1", + // "eMail":"123453243132312","mobilePhone":"44553321","commonRegionId":"36","orgCode":"GTR000593", + // "staffName":"fanweiceshi12","actType":"A","sysUserId":20102,"partyId":"-1","staffId":"22061", + // "createDate":"2022-08-09 09:47:54","updateStaff":"1"}],"tableName":"staff","primaryKey":"staffId"}],"key":"svcCont"} + + public void updateStaffData(JSONArray jsonArray, String tableName){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + String nowDateTime = sdf.format(new Date()); + + String locationid = "2" ; + String seclevel = "20" ; + String createrid = "1" ; + String lastmodid = "1" ; + String creator = "1"; + String systemlanguage = "8" ; + String pwd = "1"; + String password = DigestUtils.md5Hex(pwd).toUpperCase(); //MD5加密 + bb.writeLog("password:"+password); + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String cus_eid = PropBean.getUfPropValue("cus_eid") ; + + + String currentDate = TimeUtil.getCurrentDateString();//当前日期 + String currentDateTime = TimeUtil.getCurrentTimeString(); //当前时间 + bb.writeLog("currentDate:"+currentDate); + + String jobTitleId = "" ; + 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()){ + jobTitleId = Util.null2String(rs.getString("id")); + } + } + + for(int i=0;i dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员更新SQL执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else if("D".equals(actType)){ + status = "5"; + String userUpdateSql = " update hrmresource set status=? where workcode=? "; + bb.writeLog("userUpdateSql:"+userUpdateSql); + boolean flag = rs.executeUpdate(userUpdateSql,new Object[]{status,staffCode}); + bb.writeLog("flag:"+flag); + if(!flag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员离职SQL执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员在系统中已存在,操作类型为A"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }else{ + if("A".equalsIgnoreCase(actType)) + { + rs.executeProc("HrmResourceMaxId_Get", ""); + rs.next(); + String id = "" + rs.getInt(1); + bb.writeLog("id:"+id); + + if(StringUtils.isNotEmpty(id)) + { + String userInsertSql = " insert into hrmresource(id,loginid,password,workcode,lastname,departmentid,subcompanyid1," + + "creater,email,mobile,jobtitle,status,dsporder,systemlanguage,createdate,lastmoddate,created,modified," + + "locationid,seclevel,createrid,lastmodid) " + + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + bb.writeLog("userInsertSql:"+userInsertSql); + boolean flag = rs.executeUpdate(userInsertSql,new Object[]{id,staffCode,password,staffCode,lastname,deptId,subcompanyid1, + creator,email,pwdSmsTel,jobTitleId,status,loginedNum,systemlanguage,currentDate,currentDate,currentDateTime,currentDateTime, + locationid,seclevel,createrid,lastmodid}); + bb.writeLog("flag:"+flag); + if(!flag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员新增SQL执行错误"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员系统中不存在,操作类型为M或者D"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + + + if(StringUtils.isNotEmpty(userid)) + { + String seqorder = "" ; + rs.executeQuery(" select seqorder from cus_fielddata where scopeid=? and id=? ",new Object[]{scopeid,userid} ); + if(rs.next()){ + seqorder = Util.null2String(rs.getString("seqorder")); + } + if (StringUtils.isNotEmpty(seqorder)) { + String cusUpdateSql = " update cus_fielddata set "+cus_staff+"=?,"+cus_eid+"=? where scope=? and scopeid=? and id=?"; + bb.writeLog(cusUpdateSql); + boolean deflag = rs.executeUpdate(cusUpdateSql, new Object[]{staffId, eId, scope,scopeid,userid}); + if(!deflag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","更新人员自定义信息失败"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } else { + String cusInsertSql = " insert into cus_fielddata(scope,scopeid,id,"+cus_staff+","+cus_eid+") values(?,?,?,?,?)"; + bb.writeLog(cusInsertSql); + boolean deflag = rs.executeUpdate(cusInsertSql, new Object[]{scope, scopeid, userid, staffId, eId}); + if(!deflag){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","新增人员自定义信息失败"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + } + }else{ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人员所属部门为空"); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + }catch (Exception e){ + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("errmessage","人力资源异常:"+e.getMessage()); + dataMap.put("systable",tableName); + recordErrorData(dataMap); + } + } + } + + + /*** + * + */ + public void recordErrorData(Map dataMap){ + + String uftable = "uf_orgmq" ; + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + ModeRightInfo mode=new ModeRightInfo(); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");//当前时间日期 + SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss"); + + int formmodeid = 0 ; + String modedatacreater = "1" ; + String modedatacreatertype = "0" ; + String modedatacreatedate = sdf1.format(new Date()); + String modedatacreatetime = sdf2.format(new Date()); + String uuid = UUID.randomUUID().toString(); + + try { + + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = ? " ; + rs.executeQuery(sql,new Object[]{uftable}); + if(rs.next()){ + formmodeid = Util.getIntValue(Util.null2String(rs.getString("id"))); + } + + String syndate = Util.null2String(dataMap.get("syndate")); + String reqmessage = Util.null2String(dataMap.get("reqmessage")); + String errmessage = Util.null2String(dataMap.get("errmessage")); + String systable = Util.null2String(dataMap.get("systable")); + + int bool = 0; + sql =" insert into "+uftable+"(uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,syndate,reqmessage,errmessage,systable)" + + " values(?,?,?,?,?,?,?,?,?,?)" ; + boolean flag = rs.executeUpdate(sql,new Object[]{uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,syndate,reqmessage,errmessage,systable}); + bb.writeLog("sql;"+sql); + if(flag){ + bool++; + } + bb.writeLog("bool;"+bool); + if(bool>0) + { + String dataid = ""; + sql = " select * from "+uftable+" where uuid=? "; + bb.writeLog("sql:" + sql); + rs.executeQuery(sql,new Object[]{uuid}); + if (rs.next()) { + dataid = Util.null2String(rs.getString("id")); + } + bb.writeLog("sql:" + sql); + bb.writeLog("dataid:" + dataid); + bb.writeLog("modeid:" + formmodeid); + if (StringUtils.isNotEmpty(dataid)) + { + mode.setNewRight(true); + mode.editModeDataShare(Integer.valueOf(modedatacreater), formmodeid, Integer.parseInt(dataid)); + } + } + }catch (Exception e){ + bb.writeLog("e:"+e); + } + } + + /*** + * 更新系统组织换成 + */ + public void removeCache(){ + ResourceComInfo resComInfo; + DepartmentComInfo deptComInfo; + try { + resComInfo = new ResourceComInfo(); + resComInfo.removeResourceCache(); + deptComInfo = new DepartmentComInfo(); + deptComInfo.removeCompanyCache(); + } catch (Exception e) { + new BaseBean().writeLog(e); + } + } + +}