From 2d774de828af46accfdafc4dc2552e5cb127e790 Mon Sep 17 00:00:00 2001 From: yinq Date: Wed, 21 Jan 2026 17:04:28 +0800 Subject: [PATCH] =?UTF-8?q?change=20-=20=E6=B7=BB=E5=8A=A0=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E6=8E=A5=E5=8F=A3=EF=BC=9A=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=9B=86=E4=B8=AD=E5=99=A8=E4=BF=A1=E6=81=AF=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E3=80=81=E6=A0=B9=E6=8D=AEobjid=E6=9F=A5=E8=AF=A2=E9=9B=86?= =?UTF-8?q?=E4=B8=AD=E5=99=A8=E4=BF=A1=E6=81=AF=E8=AF=A6=E6=83=85=E3=80=81?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E9=9B=86=E4=B8=AD=E5=99=A8=E7=BC=96=E5=8F=B7?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=B5=8B=E6=8E=A7=E7=82=B9=E5=8F=8A=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/MiniProgramApiController.java | 124 ++++++++++++++++++ .../domain/dto/MonitorRealtimeDataDTO.java | 72 ++++++++++ .../service/IMonitorRealtimeDataService.java | 23 ++++ .../impl/MonitorRealtimeDataServiceImpl.java | 102 ++++++++++++++ .../mapper/system/T_MonitorMapper.xml | 1 + 5 files changed, 322 insertions(+) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/MiniProgramApiController.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MonitorRealtimeDataDTO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/IMonitorRealtimeDataService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MonitorRealtimeDataServiceImpl.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/MiniProgramApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/MiniProgramApiController.java new file mode 100644 index 0000000..76a95be --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/MiniProgramApiController.java @@ -0,0 +1,124 @@ +package com.ruoyi.web.controller.api; + +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.system.domain.T_CollectDeviceInfo; +import com.ruoyi.system.domain.T_Monitor; +import com.ruoyi.system.domain.dto.MonitorRealtimeDataDTO; +import com.ruoyi.system.service.IT_CollectDeviceInfoService; +import com.ruoyi.system.service.IT_MonitorService; +import com.ruoyi.system.service.IMonitorRealtimeDataService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 小程序API接口Controller + * + * @author yinq + */ +@Api("小程序接口") +@RestController +@RequestMapping("/miniProgramApi") +public class MiniProgramApiController extends BaseController { + + @Autowired + private IT_CollectDeviceInfoService t_CollectDeviceInfoService; + + @Autowired + private IT_MonitorService t_MonitorService; + + @Autowired + private IMonitorRealtimeDataService monitorRealtimeDataService; + + /** + * 查询集中器信息列表 + */ + @ApiOperation("查询集中器信息列表") + @PostMapping("/collectDevice/list") + @ResponseBody + public AjaxResult getCollectDeviceList(@RequestBody(required = false) T_CollectDeviceInfo t_CollectDeviceInfo) + { + if (t_CollectDeviceInfo == null) { + t_CollectDeviceInfo = new T_CollectDeviceInfo(); + } + List list = t_CollectDeviceInfoService.selectT_CollectDeviceInfoList(t_CollectDeviceInfo); + return AjaxResult.success(list); + } + + /** + * 根据ID查询集中器信息详情 + */ + @ApiOperation("根据ID查询集中器信息详情") + @GetMapping("/collectDevice/{objid}") + @ResponseBody + public AjaxResult getCollectDeviceById(@ApiParam("集中器ID") @PathVariable Long objid) + { + T_CollectDeviceInfo t_CollectDeviceInfo = t_CollectDeviceInfoService.selectT_CollectDeviceInfoById(objid); + if (t_CollectDeviceInfo == null) { + return AjaxResult.error("集中器信息不存在"); + } + return AjaxResult.success(t_CollectDeviceInfo); + } + + /** + * 查询测控点信息列表 + */ + @ApiOperation("查询测控点信息列表") + @PostMapping("/monitor/list") + @ResponseBody + public AjaxResult getMonitorList(@RequestBody(required = false) T_Monitor t_Monitor) + { + if (t_Monitor == null) { + t_Monitor = new T_Monitor(); + } + List list = t_MonitorService.selectT_MonitorList(t_Monitor); + return AjaxResult.success(list); + } + + /** + * 根据ID查询测控点信息详情 + */ + @ApiOperation("根据ID查询测控点信息详情") + @GetMapping("/monitor/{objid}") + @ResponseBody + public AjaxResult getMonitorById(@ApiParam("测控点ID") @PathVariable Integer objid) + { + T_Monitor t_Monitor = t_MonitorService.selectT_MonitorById(objid); + if (t_Monitor == null) { + return AjaxResult.error("测控点信息不存在"); + } + return AjaxResult.success(t_Monitor); + } + + /** + * 根据集中器编号查询测控点列表 + */ + @ApiOperation("根据集中器编号查询测控点列表") + @GetMapping("/monitor/collectDevice/{collectDeviceId}") + @ResponseBody + public AjaxResult getMonitorByCollectDeviceId(@ApiParam("集中器编号") @PathVariable String collectDeviceId) + { + T_Monitor t_Monitor = new T_Monitor(); + t_Monitor.setCollectDeviceId(collectDeviceId); + List list = t_MonitorService.selectT_MonitorList(t_Monitor); + return AjaxResult.success(list); + } + + /** + * 根据集中器编号查询测控点列表及对应的能源实时数据 + * 能源类型:16-物联网环境,20-振动,30-温度阵列 + */ + @ApiOperation("根据集中器编号查询测控点及实时数据") + @GetMapping("/monitor/realtimeData/{collectDeviceId}") + @ResponseBody + public AjaxResult getMonitorRealtimeDataByCollectDeviceId(@ApiParam("集中器编号") @PathVariable String collectDeviceId) + { + List list = monitorRealtimeDataService.selectMonitorRealtimeDataByCollectDeviceId(collectDeviceId); + return AjaxResult.success(list); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MonitorRealtimeDataDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MonitorRealtimeDataDTO.java new file mode 100644 index 0000000..6af6a37 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MonitorRealtimeDataDTO.java @@ -0,0 +1,72 @@ +package com.ruoyi.system.domain.dto; + +import com.ruoyi.system.domain.T_Monitor; +import com.ruoyi.system.domain.T_W_Temperturedata; +import com.ruoyi.system.domain.TVibrationsensorData; +import com.ruoyi.system.domain.TArraytemperaturedata; + +import java.util.List; + +/** + * 测控点及实时数据DTO + * + * @author yinq + * @date 2024 + */ +public class MonitorRealtimeDataDTO { + + /** 测控点信息 */ + private T_Monitor monitor; + + /** 能源类型ID */ + private Integer energyTypeId; + + /** 物联网环境实时数据(能源类型16) */ + private T_W_Temperturedata iotEnvironmentData; + + /** 振动实时数据(能源类型20) */ + private TVibrationsensorData vibrationData; + + /** 温度阵列实时数据(能源类型30) */ + private List arrayTemperatureData; + + public T_Monitor getMonitor() { + return monitor; + } + + public void setMonitor(T_Monitor monitor) { + this.monitor = monitor; + } + + public Integer getEnergyTypeId() { + return energyTypeId; + } + + public void setEnergyTypeId(Integer energyTypeId) { + this.energyTypeId = energyTypeId; + } + + public T_W_Temperturedata getIotEnvironmentData() { + return iotEnvironmentData; + } + + public void setIotEnvironmentData(T_W_Temperturedata iotEnvironmentData) { + this.iotEnvironmentData = iotEnvironmentData; + } + + public TVibrationsensorData getVibrationData() { + return vibrationData; + } + + public void setVibrationData(TVibrationsensorData vibrationData) { + this.vibrationData = vibrationData; + } + + public List getArrayTemperatureData() { + return arrayTemperatureData; + } + + public void setArrayTemperatureData(List arrayTemperatureData) { + this.arrayTemperatureData = arrayTemperatureData; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IMonitorRealtimeDataService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IMonitorRealtimeDataService.java new file mode 100644 index 0000000..173a843 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IMonitorRealtimeDataService.java @@ -0,0 +1,23 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.dto.MonitorRealtimeDataDTO; + +import java.util.List; + +/** + * 测控点及实时数据Service接口 + * + * @author yinq + * @date 2024 + */ +public interface IMonitorRealtimeDataService { + + /** + * 根据集中器编号查询测控点列表及对应的能源实时数据 + * 能源类型:16-物联网环境,20-振动,30-温度阵列 + * + * @param collectDeviceId 集中器编号 + * @return 测控点及实时数据列表 + */ + List selectMonitorRealtimeDataByCollectDeviceId(String collectDeviceId); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MonitorRealtimeDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MonitorRealtimeDataServiceImpl.java new file mode 100644 index 0000000..26b3c68 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/MonitorRealtimeDataServiceImpl.java @@ -0,0 +1,102 @@ +package com.ruoyi.system.service.impl; + +import com.ruoyi.system.domain.T_Monitor; +import com.ruoyi.system.domain.T_W_Temperturedata; +import com.ruoyi.system.domain.TVibrationsensorData; +import com.ruoyi.system.domain.TArraytemperaturedata; +import com.ruoyi.system.domain.dto.MonitorRealtimeDataDTO; +import com.ruoyi.system.service.IMonitorRealtimeDataService; +import com.ruoyi.system.service.IT_MonitorService; +import com.ruoyi.system.service.IT_W_TemperturedataService; +import com.ruoyi.system.service.ITVibrationsensorDataService; +import com.ruoyi.system.service.ITArraytemperaturedataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 测控点及实时数据Service业务层处理 + * + * @author yinq + * @date 2024 + */ +@Service +public class MonitorRealtimeDataServiceImpl implements IMonitorRealtimeDataService { + + @Autowired + private IT_MonitorService t_MonitorService; + + @Autowired + private IT_W_TemperturedataService t_W_TemperturedataService; + + @Autowired + private ITVibrationsensorDataService tVibrationsensorDataService; + + @Autowired + private ITArraytemperaturedataService tArraytemperaturedataService; + + /** + * 根据集中器编号查询测控点列表及对应的能源实时数据 + * 能源类型:16-物联网环境,20-振动,30-温度阵列 + * + * @param collectDeviceId 集中器编号 + * @return 测控点及实时数据列表 + */ + @Override + public List selectMonitorRealtimeDataByCollectDeviceId(String collectDeviceId) { + List resultList = new ArrayList<>(); + + // 1. 根据集中器编号查询测控点列表 + T_Monitor queryMonitor = new T_Monitor(); + queryMonitor.setCollectDeviceId(collectDeviceId); + List monitorList = t_MonitorService.selectT_MonitorList(queryMonitor); + + // 2. 遍历测控点,根据能源类型查询对应的实时数据 + for (T_Monitor monitor : monitorList) { + MonitorRealtimeDataDTO dto = new MonitorRealtimeDataDTO(); + dto.setMonitor(monitor); + + // 获取集中器的能源类型 + Integer energyTypeId = monitor.getMonitorType(); + dto.setEnergyTypeId(energyTypeId); + + // 根据能源类型查询对应的实时数据 + if (energyTypeId != null) { + switch (energyTypeId) { + case 16: // 物联网环境 + T_W_Temperturedata iotQuery = new T_W_Temperturedata(); + iotQuery.setMonitorId(monitor.getMonitorId()); + T_W_Temperturedata iotData = t_W_TemperturedataService.selectTopOneData(iotQuery); + dto.setIotEnvironmentData(iotData); + break; + + case 20: // 振动 + TVibrationsensorData vibrationQuery = new TVibrationsensorData(); + vibrationQuery.setSensorId(monitor.getMonitorId()); + List vibrationList = tVibrationsensorDataService.selectRealTimeMonitor(vibrationQuery); + if (vibrationList != null && !vibrationList.isEmpty()) { + dto.setVibrationData(vibrationList.get(0)); + } + break; + + case 30: // 温度阵列 + TArraytemperaturedata arrayQuery = new TArraytemperaturedata(); + arrayQuery.setMonitorId(monitor.getMonitorId()); + List arrayDataList = tArraytemperaturedataService.selectNewDataStreak(arrayQuery); + dto.setArrayTemperatureData(arrayDataList); + break; + + default: + // 其他能源类型暂不处理 + break; + } + } + + resultList.add(dto); + } + + return resultList; + } +} diff --git a/ruoyi-system/src/main/resources/mapper/system/T_MonitorMapper.xml b/ruoyi-system/src/main/resources/mapper/system/T_MonitorMapper.xml index 5bfef16..c602bef 100644 --- a/ruoyi-system/src/main/resources/mapper/system/T_MonitorMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/T_MonitorMapper.xml @@ -69,6 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and (p_monitorId = #{pMonitorid} OR monitorId = #{pMonitorid}) and monitorType = #{monitorType} and isKeyMonitor = #{isKeyMonitor} + and collectDeviceId = #{collectDeviceId} and monitorStatus = #{monitorStatus} and monitorName = #{monitorName}