diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzFlowController.java b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzFlowController.java index 077f750dd..8d67d14db 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzFlowController.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzFlowController.java @@ -83,8 +83,9 @@ public class XzFlowController { List list = instanceQuery.list(); List processInstanceVos = getInstances(list); processInstanceVos = processInstanceVos.stream().filter(p -> p.getResult().toString().equals(state)).collect(Collectors.toList()); - List formIds = processInstanceVos.stream().map(p -> p.getFormId()).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList()); List wflowModelHistorys = wflowModelHistorysMapper.selectList(null); + List wflowModelGroups = wflowModelGroupsMapper.selectList(Wrappers.lambdaQuery() + .ne(WflowModelGroups::getGroupName, "已停用")); List> resultList = new ArrayList<>(); Map total = new HashMap<>(); if (state.equals("RUNNING")) { @@ -96,14 +97,19 @@ public class XzFlowController { } total.put("num", processInstanceVos.size()); resultList.add(total); - for (String formId : formIds) { + for (WflowModelGroups wflowModelGroup : wflowModelGroups) { Map resultMap = new HashMap<>(); - List collect = wflowModelHistorys.stream().filter(w -> w.getFormId().equals(formId)).collect(Collectors.toList()); - resultMap.put("name", collect.get(collect.size() - 1).getFormName()); - long count = processInstanceVos.stream().filter(p -> p.getFormId().equals(formId)).count(); + resultMap.put("name", wflowModelGroup.getGroupName()); + List modelHistorysList = wflowModelHistorys.stream().filter(w -> w.getGroupId() == wflowModelGroup.getGroupId()).collect(Collectors.toList()); + List collect = modelHistorysList.stream().map(m -> m.getFormId()).collect(Collectors.toList()); + long count = processInstanceVos.stream().filter(p -> collect.contains(p.getFormId())).count(); int number = (int) count; resultMap.put("num", number); - resultMap.put("ratio", new BigDecimal(number).divide(new BigDecimal(processInstanceVos.size()), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100))); + if (processInstanceVos.size() == 0) { + resultMap.put("ratio", 0); + } else { + resultMap.put("ratio", new BigDecimal(number).divide(new BigDecimal(processInstanceVos.size()), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100))); + } resultList.add(resultMap); } resultList = resultList.stream().sorted((o1, o2) -> MapUtils.getInteger(o2, "num").compareTo(MapUtils.getInteger(o1, "num"))).collect(Collectors.toList());