You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
242 lines
12 KiB
Java
242 lines
12 KiB
Java
2 years ago
|
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<String,String> 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<String,String> 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<String> 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<String> 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;
|
||
|
}
|
||
|
}
|