Browse Source

巡检及统计

lipenghui 3 tuần trước cách đây
mục cha
commit
5aee293d0e

+ 19 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderController.java

@@ -212,7 +212,25 @@ public class IotInspectOrderController {
     @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
     public CommonResult<PageResult<IotInspectOrderRespVO>> getIotInspectOrderPageApp(@Valid IotInspectOrderPageReqVO pageReqVO) {
         PageResult<IotInspectOrderDO> pageResult = iotInspectOrderService.getIotInspectOrderPageApp(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotInspectOrderRespVO.class));
+        List<IotInspectOrderRespVO> collect = pageResult.getList().stream().map(e -> {
+            IotInspectOrderRespVO iotInspectOrderRespVO = new IotInspectOrderRespVO();
+            BeanUtils.copyProperties(e, iotInspectOrderRespVO);
+            List<IotInspectOrderDetailDO> details = iotInspectOrderDetailMapper.selectList("order_id", e.getId());
+            long deviceCount = details.stream().map(IotInspectOrderDetailDO::getDeviceId).distinct().count();
+            long exceptionCount = details.stream().filter(f -> Objects.nonNull(f.getIfNormal()) && !f.getIfNormal()).map(IotInspectOrderDetailDO::getDeviceId).distinct().count();
+            Map<Long, List<IotInspectOrderDetailDO>> collect1 = details.stream().collect(Collectors.groupingBy(IotInspectOrderDetailDO::getDeviceId));
+            AtomicInteger needDevice = new AtomicInteger();
+            collect1.forEach((k, v) -> {
+                if (v.stream().anyMatch(gg -> Objects.isNull(gg.getIfNormal()))){
+                    needDevice.getAndIncrement();
+                }
+            });
+            iotInspectOrderRespVO.setDeviceCount(deviceCount);
+            iotInspectOrderRespVO.setExceptionCount(exceptionCount);
+            iotInspectOrderRespVO.setNeedDevice(needDevice.get());
+            return iotInspectOrderRespVO;
+        }).collect(Collectors.toList());
+        return success(new PageResult<>(collect, pageResult.getTotal()));
     }
 
     @GetMapping("/device/page")