From 0d0ee047caaea2eae7660e8d77933f9904560dd9 Mon Sep 17 00:00:00 2001 From: DELL Date: Mon, 1 Apr 2024 18:29:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4ai=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E5=BC=B9=E7=AA=97=EF=BC=8C=E7=9B=B8=E4=BC=BC?= =?UTF-8?q?=E5=BA=A6=E4=B8=BA100=E7=9A=84=E4=B8=BA=E7=A9=BA=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E4=BC=A00?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/util/requestFormat/SearchQuery.java | 12 ++ .../controller/FlowTaskController.java | 5 +- .../flowable/service/IFlowTaskService.java | 2 +- .../service/impl/FlowTaskServiceImpl.java | 139 +++++++++++++++++- .../impl/OcrSearchHistoryServiceImpl.java | 41 +++--- 5 files changed, 175 insertions(+), 24 deletions(-) diff --git a/jyjz-common/jyjz-common-base/src/main/java/cn/jyjz/xiaoyao/common/base/util/requestFormat/SearchQuery.java b/jyjz-common/jyjz-common-base/src/main/java/cn/jyjz/xiaoyao/common/base/util/requestFormat/SearchQuery.java index be1fb6b9..6d7fb60b 100644 --- a/jyjz-common/jyjz-common-base/src/main/java/cn/jyjz/xiaoyao/common/base/util/requestFormat/SearchQuery.java +++ b/jyjz-common/jyjz-common-base/src/main/java/cn/jyjz/xiaoyao/common/base/util/requestFormat/SearchQuery.java @@ -95,6 +95,9 @@ public class SearchQuery implements java.io.Serializable{ public void addGreater(String field,Integer value){ addQuery(field,value, SearchQueryConstant.SEARCH_GREATER); } + public void addGreater(String field,String value){ + addQuery(field,value, SearchQueryConstant.SEARCH_GREATER); + } public void addGreater(String field,Long value){ addQuery(field,value, SearchQueryConstant.SEARCH_GREATER); @@ -111,6 +114,9 @@ public class SearchQuery implements java.io.Serializable{ public void addGreaterEqual(String field,Integer value){ addQuery(field,value, SearchQueryConstant.SEARCH_GREATER_EQUAL); } + public void addGreaterEqual(String field,String value){ + addQuery(field,value, SearchQueryConstant.SEARCH_GREATER_EQUAL); + } public void addGreaterEqual(String field,BigDecimal value){ addQuery(field,value, SearchQueryConstant.SEARCH_GREATER_EQUAL); @@ -121,6 +127,9 @@ public class SearchQuery implements java.io.Serializable{ public void addLess(String field,Integer value){ addQuery(field,value, SearchQueryConstant.SEARCH_LESS); } + public void addLess(String field,String value){ + addQuery(field,value, SearchQueryConstant.SEARCH_LESS); + } public void addLess(String field,Long value){ addQuery(field,value, SearchQueryConstant.SEARCH_LESS); @@ -134,6 +143,9 @@ public class SearchQuery implements java.io.Serializable{ public void addLessEqual(String field,Integer value){ addQuery(field,value, SearchQueryConstant.SEARCH_LESS_EQUAL); } + public void addLessEqual(String field,String value){ + addQuery(field,value, SearchQueryConstant.SEARCH_LESS_EQUAL); + } public void addLessEqual(String field,BigDecimal value){ addQuery(field,value, SearchQueryConstant.SEARCH_LESS_EQUAL); diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java index f5dff51c..086e8b98 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/controller/FlowTaskController.java @@ -307,13 +307,16 @@ public class FlowTaskController extends BaseController { searchQuery.addLike("fromtaskname", taskName); } + //获取用户预设检索条件id + String userSearchId = request.getParameter("userSearchId"); + User user = this.userService.getSessionUser(request); if (user.isUserIsSys(xiaoyaoConfig.getWebconfig().getSysLoginUser().split(","))) { flowTaskService.getMyProcessInstances(searchQuery.getQuery(), pageUtils); } else { - flowTaskService.getMyProcessInstances(user, tenantId, searchQuery.getQuery(), pageUtils); + flowTaskService.getMyProcessInstances(user, tenantId, searchQuery.getQuery(), pageUtils,userSearchId); //待办信息,增加是否查看标记 // if(StringUtils.isNotBlank(assigneeId) && assigneeId.equals(user.getId().toString())){ diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java index 3a485c3f..c4b13513 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java @@ -70,7 +70,7 @@ public interface IFlowTaskService { * @param tenantId * @param pageUtils */ - public void getMyProcessInstances(User user,String tenantId, Map query,PageUtils pageUtils); + public void getMyProcessInstances(User user,String tenantId, Map query,PageUtils pageUtils,String userSearchId); /** * 查询我的待办、已经办理任务 diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java index 15f4dd1d..0ea0e5bc 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java @@ -10,6 +10,7 @@ import cn.jyjz.flowable.entity.FlowTaskInfo; import cn.jyjz.flowable.service.IFlowInstanceService; import cn.jyjz.xiaoyao.common.base.language.SystemMessage; import cn.jyjz.xiaoyao.common.base.service.UserTokenService; +import cn.jyjz.xiaoyao.common.base.util.requestFormat.SearchQuery; import cn.jyjz.xiaoyao.common.base.vo.ResultVo; import cn.jyjz.xiaoyao.common.base.vo.ResultVoUtil; import cn.jyjz.xiaoyao.oa.from.dataDao.FlowableccMybatisDao; @@ -439,7 +440,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(approve.getFlowTaskInfoList())) { List flowTaskInfoList = approve.getFlowTaskInfoList(); for (FlowTaskInfo flowTaskInfo : flowTaskInfoList) { - if(!formIds.contains(flowTaskInfo.getFormId())){ + if (!formIds.contains(flowTaskInfo.getFormId())) { continue; } // 当前要处理的任务 @@ -1289,7 +1290,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask * @param tenantId * @param pageUtils */ - public void getMyProcessInstances(User user, String tenantId, Map searchQuery, PageUtils pageUtils) { + public void getMyProcessInstances(User user, String tenantId, Map searchQuery, PageUtils pageUtils, String userSearchId) { ParamterPage paramterPage = new ParamterPage(); paramterPage.setStart((pageUtils.getCurrPage() - 1) * pageUtils.getPageSize()); paramterPage.setPagesize(pageUtils.getPageSize()); @@ -1314,6 +1315,15 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask query.put("searchassignee", user.getLoginname()); query.putAll(searchQuery); + if (!userSearchId.isEmpty()) { + OcrUsersearch ocrUsersearch = ocrUsersearchService.selectByUserSearchId(userSearchId); + SearchQuery additionalQuery = new SearchQuery(); + for (OcrUsersearchchild usersearchchild : ocrUsersearch.getOcrUsersearchchildList()) { + this.formattingSearchChild1(additionalQuery, usersearchchild); + } + query.putAll(additionalQuery.getQuery()); + } + Long count = ocrTaskchildPictureService.listmytaskCount(query); query.put("page", paramterPage); @@ -1937,5 +1947,130 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask return queryWrapper; } + private SearchQuery formattingSearchChild1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) { + switch (usersearchchild.getSearchRelationType()) { + case "where": + // 添加 "where" 查询条件 + this.formattingSearchType1(searchQuery, usersearchchild); + break; + case "and": + // 添加 "and" 查询条件 + SearchQuery andQuery = this.formattingSearchType1(new SearchQuery(), usersearchchild); + searchQuery.setSearchQuery(andQuery); + break; + case "or": + // 添加 "or" 查询条件 + SearchQuery orQuery = this.formattingSearchType1(new SearchQuery(), usersearchchild); + searchQuery.setSearchQuery(orQuery); + break; + default: + break; + } + return searchQuery; + } + + private SearchQuery formattingSearchType1(SearchQuery searchQuery, OcrUsersearchchild usersearchchild) { + //查询类型 相等true 不相等fase + boolean queryType = "eq".equals(usersearchchild.getSearchtype()); + + // 1.获取检查数据,确定数据类型 + String valueType = SearchParaFormatting.clickSearchValue(usersearchchild.getSearchvalue()); + List arrayData = null; //集合型数据 + List sectionInts = null; //纯数字区间型数据 + String[] sections = null; //字符串区间型数据 + DateTime beginTime = null; //日期时间区间型数据 + DateTime endTime = null; //日期时间区间型数据 + + // 2.根据数据类型,解构数据 + switch (valueType) { + case "array": + //处理多文件 + String[] datas = usersearchchild.getSearchvalue().split(","); + arrayData = Arrays.asList(datas); + break; + case "section": + //格式化数据,仅在做区间的时候去除空格,其他地方不进行空格去除. + sections = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-"); + //校验是否纯数字,纯数字的话,要转成int,否则比对时会有问题 + sectionInts = new ArrayList<>(); + for (String data : sections) { + if (data.matches("\\d+")) { + sectionInts.add(Integer.parseInt(data)); + } + } + break; + case "time": + //格式化时间数据 + String[] times = usersearchchild.getSearchvalue().trim().replaceAll("\\s+", "").split("-"); + beginTime = DateUtil.parse(times[0], "yyyy/MM/dd"); + endTime = DateUtil.parse(times[1], "yyyy/MM/dd"); + break; + default: + } + + // 3.根据查询类型 组装查询条件 相等 + switch (valueType) { + case "array": + //集合数据 + //相等 + if (queryType) { + searchQuery.addIn(usersearchchild.getSearchfield(), arrayData); + break; + } + //不相等 + searchQuery.addNotIn(usersearchchild.getSearchfield(), arrayData); + break; + + case "section": + //数字区间查询 + if (sectionInts != null && sectionInts.size() == 2) { + if (queryType) { + //相等 + searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sectionInts.get(0)); + searchQuery.addLessEqual(usersearchchild.getSearchfield(), sectionInts.get(1)); + break; + } + //不相等 + searchQuery.addLess(usersearchchild.getSearchfield(), sectionInts.get(0)); + searchQuery.addGreater(usersearchchild.getSearchfield(), sectionInts.get(1)); + break; + } + + //字符串区间查询 + if (queryType) { + //相等 + searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), sections[0]); + searchQuery.addLessEqual(usersearchchild.getSearchfield(), sections[1]); + break; + } + //不相等 + searchQuery.addLess(usersearchchild.getSearchfield(), sections[0]); + searchQuery.addGreater(usersearchchild.getSearchfield(), sections[1]); + break; + + + case "time": + //时间区间数据 + //相等 + if (queryType) { + searchQuery.addGreaterEqual(usersearchchild.getSearchfield(), beginTime); + searchQuery.addLessEqual(usersearchchild.getSearchfield(), endTime); + break; + } + //不相等 + searchQuery.addLess(usersearchchild.getSearchfield(), beginTime); + searchQuery.addGreater(usersearchchild.getSearchfield(), endTime); + break; + + default: + if (queryType) { + searchQuery.addEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue()); + break; + } + searchQuery.addNotEqual(usersearchchild.getSearchfield(), usersearchchild.getSearchvalue()); + } + return searchQuery; + } + } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrSearchHistoryServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrSearchHistoryServiceImpl.java index 22a2487e..c11f7b4d 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrSearchHistoryServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrSearchHistoryServiceImpl.java @@ -147,11 +147,10 @@ public class OcrSearchHistoryServiceImpl extends ServiceImpl selectaisp(String userid, String id,Integer nodeType) { List> resultList = ocrsearchhistorymapper.selectaispList(id); + Map mappedResults = new LinkedHashMap<>(); if (resultList == null || resultList.isEmpty()) { return Collections.emptyMap(); } - - Map mappedResults = new LinkedHashMap<>(); String selectaiuser = ocrsearchhistorymapper.selectaiuser(userid); mappedResults.put("packageId", id); mappedResults.put("tenantUserName", selectaiuser); @@ -160,30 +159,32 @@ public class OcrSearchHistoryServiceImpl extends ServiceImpl pictureIds = new ArrayList<>(); // 存储所有的pictureId for (Map selectaisp : resultList) { - Object pictureResult = selectaisp.get("pictureResult"); - String pictureResultStr = pictureResult.toString(); - if ("100.0".equals(pictureResultStr)) { - similarComplete++; - Long pictureId = (Long) selectaisp.get("pictureId"); - if (pictureId != null) { - pictureIds.add(String.valueOf(pictureId)); // 转换为String + if(selectaisp.size()!=0){ + Object pictureResult = selectaisp.get("pictureResult"); + String pictureResultStr = pictureResult.toString(); + if ("100.0".equals(pictureResultStr)) { + similarComplete++; + Long pictureId = (Long) selectaisp.get("pictureId"); + if (pictureId != null) { + pictureIds.add(String.valueOf(pictureId)); // 转换为String + } } } - } - if(similarComplete==0){ - return Collections.emptyMap(); + } List pendingApprovalList = new ArrayList<>(); // 存储待审批的pictureId集合 List approvedList = new ArrayList<>(); // 存储通过的pictureId集合 List failedList = new ArrayList<>(); // 存储不通过的pictureId集合 - List failedPictureIds = ocrPictureService.getPictureNodeStatesList(pictureIds, nodeType); - for (OcrPicture picture : failedPictureIds) { - if (picture.getHistoryStates() == 3) { - failedList.add(picture.getRemark()); - } else if (picture.getHistoryStates() == 1) { - pendingApprovalList.add(picture.getRemark()); - } else if (picture.getHistoryStates() == 2) { - approvedList.add(picture.getRemark()); + if(pictureIds.size()!=0){ + List failedPictureIds = ocrPictureService.getPictureNodeStatesList(pictureIds, nodeType); + for (OcrPicture picture : failedPictureIds) { + if (picture.getHistoryStates() == 3) { + failedList.add(picture.getRemark()); + } else if (picture.getHistoryStates() == 1) { + pendingApprovalList.add(picture.getRemark()); + } else if (picture.getHistoryStates() == 2) { + approvedList.add(picture.getRemark()); + } } }