Zimo преди 1 ден
родител
ревизия
0255fa54a2

+ 31 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotStaticController.java

@@ -476,6 +476,37 @@ public class IotStaticController {
         }
     }
 
+    @GetMapping("/td/ly/chart/{deviceName}/{identifier}")
+    public CommonResult<List<DeviceVO>> getTdChartLy(@PathVariable("deviceName") String deviceName, @PathVariable("identifier") String identifier, @RequestParam("beginTime") String beginTime, @RequestParam("endTime") String endTime) {
+        if (StringUtils.isBlank(identifier)) {
+            return null;
+        }
+        Timestamp start1 = generateTimestamp(beginTime);
+        Timestamp end1 = generateTimestamp(endTime);
+        Integer i = deviceMapper.tableIfExist(deviceName.toLowerCase());
+        if (i==1) {
+            if (StringUtils.isNotBlank(identifier)&&!"undefined".equals(identifier)) {
+                List<DeviceVO> deviceVOS = tdDeviceMapper.selectAllBtTimeAndIdentifier(deviceName.toLowerCase(), identifier, start1, end1);
+                deviceVOS.forEach(deviceVO->{
+                    deviceVO.setTimestamp(deviceVO.getTs().getTime());
+                    deviceVO.setValue(Objects.nonNull(deviceVO.getLogValue())?Double.valueOf(deviceVO.getLogValue()):null);
+                });
+                return success(deviceVOS.stream().sorted(Comparator.comparing(DeviceVO::getTimestamp).reversed()).collect(Collectors.toList()));
+            } else {
+                List<DeviceVO> deviceVOS = tdDeviceMapper.selectAllBtTime(deviceName.toLowerCase(), start1, end1);
+                deviceVOS.forEach(deviceVO->{
+                    deviceVO.setTimestamp(deviceVO.getTs().getTime());
+                    deviceVO.setValue(Objects.nonNull(deviceVO.getLogValue())?Double.valueOf(deviceVO.getLogValue()):null);
+                });
+                return success(deviceVOS.stream().sorted(Comparator.comparing(DeviceVO::getTimestamp).reversed()).collect(Collectors.toList()));
+            }
+
+        } else {
+            List<DeviceVO> deviceVOS = new ArrayList<>();
+            return success(deviceVOS);
+        }
+    }
+
     public Set<Long> getDeptIds(String dept) {
         Set<Long> ids = new HashSet<>();
         List<DeptRespDTO> depts = new ArrayList<>();

+ 7 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/TDDeviceMapper.java

@@ -130,6 +130,13 @@ public interface TDDeviceMapper extends BaseMapperX<TDDeviceDO> {
     @InterceptorIgnore(tenantLine = "true")
     List<DeviceVO> selectAllBtTimeAndIdentifier(@Param("deviceName") String tableName, @Param("identifier") String identifier,@Param("start") Timestamp start,@Param("end") Timestamp end);
 
+    @Select("SELECT   _WSTART AS ts, AVG(CAST(log_value AS FLOAT)) as log_value   FROM iot_log.device_${deviceName} " +
+            "WHERE ts between #{start} and #{end}INTERVAL(1m) " )
+    @DS("tdengine")
+    @TenantIgnore
+    @InterceptorIgnore(tenantLine = "true")
+    List<DeviceVO> selectAllBtTime(@Param("deviceName") String tableName,@Param("start") Timestamp start,@Param("end") Timestamp end);
+
     @InterceptorIgnore(tenantLine = "true")
     @DS("tdengine")
     @Insert({