Просмотр исходного кода

根据事件编码查询设备

李进 1 год назад
Родитель
Сommit
8d8d3751de

+ 21 - 0
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -105,6 +105,27 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
 
     private final DeviceAlgorithmChargingServiceImpl deviceAlgorithmChargingService;
 
+    @PostMapping("eventList")
+    @ApiOperation("根据事件编码查询设备")
+    public R<List<DeviceInfoDto.EventListVo>> eventList(@RequestBody @Validated DeviceInfoDto.EventList eventList) {
+        String countAs = "id";
+        QueryWrapper<DeviceEventMsg> queryWrapper = new QueryWrapper<DeviceEventMsg>()
+                .select(LambdaUtils.getUnderlineCaseName(DeviceEventMsg::getDeviceId) + "as " + LambdaUtils.getProperty(DeviceEventMsg::getDeviceId), "count(*) as " + countAs)
+                .eq(LambdaUtils.getUnderlineCaseName(DeviceEventMsg::getCode), eventList.getCode())
+                .groupBy(LambdaUtils.getUnderlineCaseName(DeviceEventMsg::getDeviceId))
+                .last(countAs + " >= " + eventList.getSize());
+        List<DeviceEventMsg> list = deviceEventMsgService.list(queryWrapper);
+        if(!Emptys.check(list)) {
+            return R.ok();
+        }
+        List<DeviceInfo> deviceInfos = listByIds(new JArrayList<>(list).getProperty(DeviceEventMsg::getDeviceId));
+        List<DeviceInfoDto.EventListVo> eventListVos = copy(DeviceInfoDto.EventListVo.class, deviceInfos);
+        List<DeviceInfoDto.EventListVo> builder = copy(eventListVos)
+                .target(list, DeviceInfoDto.EventListVo::getDeviceId, DeviceInfoDto.EventListVo::getSize, DeviceEventMsg::getDeviceId, DeviceEventMsg::getId)
+                .builder();
+        return R.ok(builder);
+    }
+
 
     @ApiOperation("点位设备数量查询")
     @Override

+ 22 - 0
device-api/src/main/java/com/xy/dto/DeviceInfoDto.java

@@ -38,6 +38,19 @@ public class DeviceInfoDto {
      */
     public final static String CLEAR = "clear";
 
+    @Data
+    @Accessors(chain = true)
+    public static class EventList {
+
+        @NotBlank(message = "code不能为空")
+        @ApiModelProperty(value = "事件编码", hidden = true)
+        private String code;
+
+        @NotNull(message = "size不能空")
+        @ApiModelProperty(value = "大于次数", hidden = true)
+        private Integer size;
+    }
+
     @Data
     @Accessors(chain = true)
     public static class AlgorithmCharging {
@@ -1054,4 +1067,13 @@ public class DeviceInfoDto {
         private Integer num;
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class EventListVo extends Vo {
+
+        @ApiModelProperty("事件发生次数")
+        private Integer size;
+
+    }
+
 }