소스 검색

feat:新增根据楼层获取房间及温湿度功能

lwb 3 달 전
부모
커밋
dc7f1c72d7

+ 7 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/targetroom/controller/TargetRoomController.java

@@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.coldchain.modular.targetroom.dto.RoomMonitor;
 import vip.xiaonuo.coldchain.modular.targetroom.param.*;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
@@ -141,4 +142,10 @@ public class TargetRoomController {
         targetRoomService.edit(targetRoomEditParam);
         return CommonResult.ok();
     }
+    @Operation(summary = "获取房间列表")
+    @GetMapping("/coldchain/targetroom/roomMonitor")
+    public CommonResult<List<RoomMonitor>> roomMonitor(String floor) {
+        return CommonResult.data(targetRoomService.getListByFloor(floor));
+    }
+
 }

+ 38 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/targetroom/dto/RoomMonitor.java

@@ -0,0 +1,38 @@
+package vip.xiaonuo.coldchain.modular.targetroom.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 房间设备联查实体
+ *
+ * @author hyh
+ * @date  2024/12/31 00:05
+ **/
+@Getter
+@Setter
+public class RoomMonitor {
+    /** 房间名 */
+    @Schema(description = "房间名")
+    private String roomName;
+    /** 楼层 */
+    @Schema(description = "楼层")
+    private String floor;
+    /** 设备名称 */
+    @Schema(description = "设备名称")
+    private String monitorName;
+    /** 探头编号 */
+    @Schema(description = "探头编号")
+    private String sensorCode;
+    /** 探头路由 */
+    @Schema(description = "探头路由")
+    private Integer sensorRoute;
+    /** 温度 */
+    @Schema(description = "温度")
+    private Float temp;
+    /** 湿度 */
+    @Schema(description = "湿度")
+    private Float humidity;
+
+}

+ 4 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/targetroom/mapper/TargetRoomMapper.java

@@ -13,8 +13,11 @@
 package vip.xiaonuo.coldchain.modular.targetroom.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.coldchain.modular.targetroom.dto.RoomMonitor;
 import vip.xiaonuo.coldchain.modular.targetroom.entity.TargetRoom;
 
+import java.util.List;
+
 /**
  * 房间配置Mapper接口
  *
@@ -22,4 +25,5 @@ import vip.xiaonuo.coldchain.modular.targetroom.entity.TargetRoom;
  * @date  2024/12/31 00:05
  **/
 public interface TargetRoomMapper extends BaseMapper<TargetRoom> {
+    List<RoomMonitor> getRoomMonitor(String floor);
 }

+ 24 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/targetroom/mapper/mapping/TargetRoomMapper.xml

@@ -2,4 +2,28 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="vip.xiaonuo.coldchain.modular.targetroom.mapper.TargetRoomMapper">
 
+    <resultMap id="RoomMonitorResultMap" type="vip.xiaonuo.coldchain.modular.targetroom.dto.RoomMonitor">
+        <result column="roomName" property="roomName"/>
+        <result column="floor" property="floor"/>
+        <result column="monitorName" property="monitorName"/>
+        <result column="sensor_code" property="sensorCode"/>
+        <result column="sensor_route" property="sensorRoute"/>
+    </resultMap>
+    <select id="getRoomMonitor" resultMap="RoomMonitorResultMap">
+        SELECT
+            room.`name` as roomName,
+            t.`name` as monitorName,
+            r.`name` as regionName,
+            room.floor as floor,
+            r.sensor_code,
+            r.sensor_route
+        FROM `target_room` as room
+                 LEFT JOIN `monitor_target` as t ON t.room_id = room.id
+                 LEFT JOIN `monitor_target_region` as r ON r.monitor_target_id = t.id
+        WHERE room.DELETE_FLAG = 'NOT_DELETE'
+          AND t.DELETE_FLAG = 'NOT_DELETE'
+          AND r.DELETE_FLAG = 'NOT_DELETE'
+          AND room.floor = #{floor}
+        GROUP BY roomName
+    </select>
 </mapper>

+ 6 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/targetroom/service/TargetRoomService.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.coldchain.modular.targetroom.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.coldchain.modular.targetroom.dto.RoomMonitor;
 import vip.xiaonuo.coldchain.modular.targetroom.entity.TargetRoom;
 import vip.xiaonuo.coldchain.modular.targetroom.param.TargetRoomAddParam;
 import vip.xiaonuo.coldchain.modular.targetroom.param.TargetRoomEditParam;
@@ -90,4 +91,9 @@ public interface TargetRoomService extends IService<TargetRoom> {
      */
     TargetRoom getRoomByName(String roomName);
 
+    /**
+     * 根据楼层获取房间列表
+     */
+    List<RoomMonitor> getListByFloor(String floor);
+
 }

+ 33 - 1
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/targetroom/service/impl/TargetRoomServiceImpl.java

@@ -25,8 +25,11 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
+import vip.xiaonuo.coldchain.core.bean.influxdb.SensorData;
+import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
 import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
 import vip.xiaonuo.coldchain.modular.monitortarget.service.MonitorTargetService;
+import vip.xiaonuo.coldchain.modular.targetroom.dto.RoomMonitor;
 import vip.xiaonuo.common.enums.CommonDeleteFlagEnum;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
@@ -52,7 +55,10 @@ public class TargetRoomServiceImpl extends ServiceImpl<TargetRoomMapper, TargetR
 
     @Resource
     private MonitorTargetService monitorTargetService;
-
+    @Resource
+    private TargetRoomMapper targetRoomMapper;
+    @Resource
+    private MonitorDeviceService monitorDeviceService;
     @Override
     public Page<TargetRoom> page(TargetRoomPageParam targetRoomPageParam) {
         SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
@@ -154,4 +160,30 @@ public class TargetRoomServiceImpl extends ServiceImpl<TargetRoomMapper, TargetR
                 .eq(TargetRoom::getName, roomName);
         return getOne(queryWrapper);
     }
+
+    @Override
+    public List<RoomMonitor> getListByFloor(String floor) {
+        List<RoomMonitor> list = targetRoomMapper.getRoomMonitor(floor);
+        list.forEach(roomMonitor -> {
+            SensorData sensorData = monitorDeviceService.queryLatestDataByDeviceIdAndRoads(roomMonitor.getSensorCode(),roomMonitor.getSensorRoute());
+            if(sensorData==null){
+                roomMonitor.setTemp(0.0f);
+                roomMonitor.setHumidity(0.0f);
+            }else{
+                if(sensorData.getTemperature() == null){
+                    roomMonitor.setTemp(0.0f);
+                }else{
+                    roomMonitor.setTemp(sensorData.getTemperature());
+                }
+                if(sensorData.getHumidity() == null){
+                    roomMonitor.setHumidity(0.0f);
+                }else{
+                    roomMonitor.setHumidity(sensorData.getHumidity());
+                }
+            }
+
+            //roomMonitor.setTemp(sensorData.getTemperature() == null ? 0.0f : sensorData.getTemperature());
+        });
+        return list;
+    }
 }

+ 2 - 1
snowy-web-app/src/main/java/vip/xiaonuo/core/config/GlobalConfigure.java

@@ -148,7 +148,8 @@ public class GlobalConfigure implements WebMvcConfigurer {
             "/qp/*",
 
             /* 全值匹配组织名 */
-            "/coldchain/alarmuser/getOrgByName"
+            "/coldchain/alarmuser/getOrgByName",
+            "/coldchain/targetroom/roomMonitor"
     };
 
     /**