package com.engine.service.impl; import com.alibaba.druid.util.StringUtils; import com.engine.service.TJBKWorkFlowService; import com.engine.workflow.util.CommonUtil; import com.icbc.api.internal.apache.http.impl.cookie.S; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; import weaver.security.util.SecurityMethodUtil; import weaver.wechat.util.Utils; import weaver.workflow.request.todo.OfsSettingObject; import weaver.workflow.request.todo.RequestUtil; import weaver.workflow.webservices.WorkflowServiceImpl; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import static weaver.security.util.SecurityMethodUtil.clearKeywordFromConditon; public class TJBKWorkFlowServiceImpl implements TJBKWorkFlowService { private static final String getIdByWorkCodesql = "SELECT id FROM HRMRESOURCE WHERE workcode = ? "; private static final String getToReadwfidsql = "SELECT b.* from hpsetting_wfcenter a , workflowcentersettingdetail b where a.eid = b.eid and a.tabid = b.tabid and a.tabtitle = '我的待阅' and b.TYPE ='flowid'"; // private static final String getToReadwfidsql = "SELECT b.* from hpsetting_wfcenter a , workflowcentersettingdetail b where a.eid = b.eid and a.tabid = b.tabid"; private WorkflowServiceImpl workflowService = new WorkflowServiceImpl(); private RecordSet rs = new RecordSet(); @Override public Integer getToDoCount(Map paramMap) { String value = paramMap.get("value"); String key = paramMap.get("key"); //User currentUser = null; String userId = ""; try{ //验证工号是否为空 if (!StringUtils.isEmpty(value) && !StringUtils.isEmpty(key)){ // 获取用户 RecordSet recordSet = new RecordSet(); recordSet.executeQuery(getIdByWorkCodesql,value); if (recordSet.next()){ userId = Utils.null2String(recordSet.getString("id")); //currentUser = new User(Integer.parseInt(userId)); } } // String[] strings = {}; // new RecordSet() String conditionsql = getToDoWfidCondition(); // new BaseBean().writeLog("getToDoWfidCondition"+conditionsql); String[] strings = {conditionsql}; int toDoWorkflowRequestCount = getToDoWorkflowRequestCount4OS(Integer.parseInt(userId), strings,true); paramMap.put("status","COMPLETE"); paramMap.put("code","S000A000"); paramMap.put("desc","success"); //int toDoWorkflowRequestCount = workflowService.getToDoWorkflowRequestCount(Integer.parseInt("1"), strings); return toDoWorkflowRequestCount;}catch (Exception E){ paramMap.put("status","FAIL"); paramMap.put("code","ESB-E-000002"); paramMap.put("desc","人员不存在"); return null; } } @Override public Integer getToReadCount(Map paramMap) { String value = paramMap.get("value"); String key = paramMap.get("key"); User currentUser = null; String userId = ""; try { //验证工号是否为空 if (!StringUtils.isEmpty(value) && !StringUtils.isEmpty(key)) { // 获取用户 RecordSet recordSet = new RecordSet(); recordSet.executeQuery(getIdByWorkCodesql, value); if (recordSet.next()) { userId = Utils.null2String(recordSet.getString("id")); currentUser = new User(Integer.parseInt(userId)); } } String conditionsql = getToReadWfidCondition(); new BaseBean().writeLog("getToReadWfidCondition"+conditionsql); String[] strings = {conditionsql}; int toBeReadWorkflowRequestCount = getToDoWorkflowRequestCount4OS(Integer.parseInt(userId), strings, true); paramMap.put("status","COMPLETE"); paramMap.put("code","S000A000"); paramMap.put("desc","success"); //int toBeReadWorkflowRequestCount = workflowService.getToBeReadWorkflowRequestCount(Integer.parseInt("1"), strings, false); return toBeReadWorkflowRequestCount; }catch (Exception E){ paramMap.put("status","FAIL"); paramMap.put("code","ESB-E-000002"); paramMap.put("desc","人员不存在"); return null; } } private String getToReadWfidCondition() { RecordSet rs = new RecordSet(); boolean b = rs.executeQuery(getToReadwfidsql); String[] arr = new String[rs.getCounts()]; StringBuilder sqlwhere = new StringBuilder(); int i = 0; while (rs.next()){ String content = Util.null2String( rs.getString("content")); if (!StringUtils.isEmpty(content)){ arr[i] = "t1.workflowid = "+content; i++; } } // 过滤掉空元素 List nonNullElements = Arrays.stream(arr) .filter(element -> element != null && !element.isEmpty()) .collect(Collectors.toList()); String result = String.join(" OR ", nonNullElements); if (StringUtils.isEmpty(result)){return "";} return "(" + result +")"; } private String getToDoWfidCondition() { RecordSet rs = new RecordSet(); boolean b = rs.executeQuery(getToReadwfidsql); String[] arr = new String[rs.getCounts()]; StringBuilder sqlwhere = new StringBuilder(); int i = 0; while (rs.next()){ String content = Util.null2String( rs.getString("content")); if (!StringUtils.isEmpty(content)){ arr[i] = "t1.workflowid != " + content; i++; } } // 过滤掉空元素 List nonNullElements = Arrays.stream(arr) .filter(element -> element != null && !element.isEmpty()) .collect(Collectors.toList()); String result = String.join(" AND ", nonNullElements); if (StringUtils.isEmpty(result)){return "";} return "(" + result +")"; } public int getToDoWorkflowRequestCount4OS(int var1, String[] var2, boolean var3) { String var4 = " select distinct "; String var5 = " t1.createdate,t1.createtime,t1.creater,t1.currentnodeid,t1.currentnodetype,t1.lastoperator,t1.creatertype,t1.lastoperatortype,t1.lastoperatedate,t1.lastoperatetime,t1.requestid,t1.requestname,t1.requestlevel,t1.workflowid,t2.receivedate,t2.receivetime "; String var6 = " from workflow_requestbase t1,workflow_currentoperator t2 "; String var7 = " where t1.requestid=t2.requestid "; var7 = var7 + " and ((t2.isremark='0' and (t2.takisremark is null or t2.takisremark=0 )) or t2.isremark in('1','5','8','9','7','11')) and t2.islasttimes=1"; var7 = var7 + " and (isprocessing = '' or isprocessing is null) "; var7 = var7 + " and t1.workflowid in(select id from workflow_base where (isvalid='1' or isvalid='3') and (activeversionid is null or activeversionid=0 or activeversionid in(select id from workflow_base where isvalid='1')) )"; var7 = var7 + this.sqldelete(); String var8 = var7; var7 = " and t2.usertype = 0 and t2.userid = " + var1; String var9 = CommonUtil.getDBJudgeNullFun((new RecordSet()).getDBType()); var7 = var7 + " and (" + var9 + "(t1.currentstatus,-1) = -1 or (" + var9 + "(t1.currentstatus,-1)=0 and t1.creater in (" + var1 + "))) "; String var10 = ""; if (var2 != null) { for(int var11 = 0; var11 < var2.length; ++var11) { String var12 = var2[var11]; var12 = SecurityMethodUtil.clearKeywordFromConditon(var12); var10 = var10 + (var12 != null && !"".equals(var12) ? " and " + var12 : ""); } } var7 = var7 + var10; RequestUtil var16 = new RequestUtil(); OfsSettingObject var17 = var16.getOfsSetting(); boolean var13 = var17.getIsuse() == 1; String var14 = ""; if (var3 && var13) { String var15 = " select createdate,createtime,creatorid as creater,-1 as currentnodeid,'' as currentnodetype,-1 as lastoperator,0 as creatertype,0 as lastoperatortype,'' as lastoperatedate,'' as lastoperatetime,requestid,requestname,0 as requestlevel,workflowid,receivedate,receivetime from ofs_todo_data where islasttimes=1 and isremark in(0,8,9) and workflowid in (select workflowid from ofs_workflow where (cancel=0 or cancel is null)) and userid=" + var1 + var10.replaceAll("t2.", "").replaceAll("t1.", ""); var14 = this.getPaginationCountSql(var4, var5, var6, var7, var8, var15); } else { var14 = this.getPaginationCountSql(var4, var5, var6, var7, var8); } var14 = var14.replace("t1.deleted", "SpecialHandling"); return this.getWorkflowRequestCount(var14); } private String sqldelete() { String deletesql = " and (t1.deleted<>1 or t1.deleted is null or t1.deleted='') "; if (this.rs.getDBType().equalsIgnoreCase("postgresql")) { deletesql = " and (t1.deleted<>1 or t1.deleted is null) "; } return deletesql; } private String getPaginationCountSql(String var1, String var2, String var3, String var4, String var5, String var6) { return this.getPaginationCountSql(var1, var2, var3, var4, var5, var6, ""); } private String getPaginationCountSql(String var1, String var2, String var3, String var4, String var5, String var6, String var7) { var1 = Util.null2String(var1).replaceAll("(?i)(drop|insert|alter|truncate|delete|union|wait|xp_cmdshel|DBMS_PIPE|IIF|UTL_HTTP|SLEEP|net user|--|/\\*.*?\\*/)", "__SQLINJECTION__"); var2 = SecurityMethodUtil.clearKeywordFromConditon(var2); var3 = SecurityMethodUtil.clearKeywordFromConditon(var3); var4 = SecurityMethodUtil.clearKeywordFromConditon(var4); var4 = var5 + var4; String var8 = " select count(*) my_count from ( " + var1 + " " + var2 + " " + var3 + " " + var4 + " SpecialHandUN " + var6 + ("".equals(var7) ? "" : " SpecialHandUN " + var7) + " ) tableA "; return var8; } private String getPaginationCountSql(String var1, String var2, String var3, String var4, String var5) { var1 = Util.null2String(var1).replaceAll("(?i)(drop|insert|alter|truncate|delete|union|wait|xp_cmdshel|DBMS_PIPE|IIF|UTL_HTTP|SLEEP|net user|--|/\\*.*?\\*/)", "__SQLINJECTION__"); var2 = SecurityMethodUtil.clearKeywordFromConditon(var2); var3 = SecurityMethodUtil.clearKeywordFromConditon(var3); var4 = SecurityMethodUtil.clearKeywordFromConditon(var4); var4 = var5 + var4; String var6 = " select count(*) my_count from ( " + var1 + " " + var2 + " " + var3 + " " + var4 + " ) tableA "; return var6; } private int getWorkflowRequestCount(String var1) { RecordSet var2 = new RecordSet(); var1 = Util.null2String(var1).replaceAll("(?i)(drop|insert|alter|truncate|delete|union|wait|xp_cmdshel|DBMS_PIPE|IIF|UTL_HTTP|SLEEP|net user|--|/\\*.*?\\*/)", "__SQLINJECTION__"); var1 = var1.replace("SpecialHandling", "t1.deleted").replaceAll("SpecialHandUN", "union"); int var3 = 0; try { var2.executeSql(var1); if (var2.next()) { var3 = var2.getInt("my_count"); } } catch (Exception var5) { var5.printStackTrace(); new BaseBean().writeLog(var5); } return var3; } }