From 3c99067ef128386afd13e734fa8634648ed04d67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=BE=E5=AF=8C=E6=96=8C?= Date: Wed, 15 Oct 2025 22:53:10 +0800 Subject: [PATCH] =?UTF-8?q?fix=20(farm):=20=E5=BE=AE=E4=BF=A1=E7=AB=AF?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - --- .../controller/admin/wx/WxController.java | 9 ++++ .../wx/vo/DeviceStatisticsInfoRespVO.java | 27 +++++++++++ .../service/deviceinfo/DeviceInfoService.java | 7 +++ .../deviceinfo/DeviceInfoServiceImpl.java | 46 +++++++++++++++++-- .../service/plotinfo/PlotInfoServiceImpl.java | 6 +-- 5 files changed, 88 insertions(+), 7 deletions(-) create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/wx/vo/DeviceStatisticsInfoRespVO.java diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/wx/WxController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/wx/WxController.java index ef804d39..693af156 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/wx/WxController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/wx/WxController.java @@ -77,6 +77,15 @@ public class WxController { this.companyConf = companyConf; } + @GetMapping("/device-info/statistics") + @Operation(summary = "获取设备统计") + @Parameter(name = "baseId", description = "基地编号") + public CommonResult> getDeviceStatisticsList(@RequestParam("baseId") String baseId) { + List res = deviceInfoService.getDeviceStatisticsList(baseId); + + return success(res); + } + @GetMapping("/device-info/get") @Operation(summary = "获取设备信息") @Parameter(name = "baseId", description = "基地编号") diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/wx/vo/DeviceStatisticsInfoRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/wx/vo/DeviceStatisticsInfoRespVO.java new file mode 100644 index 00000000..aded790a --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/wx/vo/DeviceStatisticsInfoRespVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.farm.controller.admin.wx.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @description: TODO + * @author: binda + * @date: 2025/10/15 22:33 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeviceStatisticsInfoRespVO { + + @Schema(description = "设备分类名称") + private String deviceTypeName; + @Schema(description = "设备总数") + private int totalNum; + @Schema(description = "在线设备数") + private int onlineNum; + @Schema(description = "离线设备数") + private int offlineNum; + +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java index 35446543..b70557e1 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.DeviceStat import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.UpdateDevicePropertiesForWfReqVO; import cn.iocoder.yudao.module.farm.controller.admin.digitalcockpit.vo.DeviceInfoRespVO; import cn.iocoder.yudao.module.farm.controller.admin.digitalcockpit.vo.DeviceMonitorDataRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.wx.vo.DeviceStatisticsInfoRespVO; import cn.iocoder.yudao.module.farm.dal.dataobject.deviceinfo.DeviceInfoDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.farm.manager.equipmentproducer.dto.RealTimeDataResponse; @@ -139,4 +140,10 @@ public interface DeviceInfoService { List deviceList(); List deviceList(String plotId); + /** + * 设备统计信息 + * @param baseId + * @return + */ + List getDeviceStatisticsList(String baseId); } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java index 76182079..92c1c836 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java @@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.DeviceStat import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.UpdateDevicePropertiesForWfReqVO; import cn.iocoder.yudao.module.farm.controller.admin.digitalcockpit.vo.DeviceInfoRespVO; import cn.iocoder.yudao.module.farm.controller.admin.digitalcockpit.vo.DeviceMonitorDataRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.wx.vo.DeviceStatisticsInfoRespVO; import cn.iocoder.yudao.module.farm.dal.dataobject.baseinfo.BaseInfoDO; import cn.iocoder.yudao.module.farm.dal.dataobject.deviceclassify.DeviceClassifyDO; import cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo.PlotInfoDO; @@ -43,10 +44,7 @@ import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.module.farm.dal.mysql.deviceinfo.DeviceInfoMapper; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -372,6 +370,46 @@ public class DeviceInfoServiceImpl implements DeviceInfoService { return execute(doList); } + @Override + public List getDeviceStatisticsList(String baseId) { + + LambdaQueryWrapperX wrapperX = new LambdaQueryWrapperX<>(); + wrapperX.eq(DeviceInfoDO::getBaseId, baseId); + wrapperX.eq(DeviceInfoDO::getDeleted, CommonConstants.NO_CODE); + + List doList = deviceInfoMapper.selectList(wrapperX); + Map> orderedGroup = doList.stream() + .collect(Collectors.groupingBy( + DeviceInfoDO::getDeviceType, + LinkedHashMap::new, + Collectors.toList() + )); + + + List res = new ArrayList<>(); + Map typeNameMap = deviceClassifyService.getTypeNameMap(); + for (Map.Entry> entry : orderedGroup.entrySet()) { + String key = entry.getKey(); + String keyName = typeNameMap.get(key); + + List list = entry.getValue(); + + int onlineCount = list.stream() + .filter(device -> device.getDeviceState() == 1) + .mapToInt(DeviceInfoDO::getDeviceState) + .sum(); + + int offlineCount = list.stream() + .filter(device -> device.getDeviceState() != 1) + .mapToInt(DeviceInfoDO::getDeviceState) + .sum(); + + res.add(new DeviceStatisticsInfoRespVO(keyName,list.size(),onlineCount,offlineCount)); + } + + return res; + } + private List execute(List doList) { Map> groupedByDeviceType = doList.stream().collect(Collectors.groupingBy(DeviceInfoDO::getDeviceType)); diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java index e4bd01d4..afcdc3f1 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java @@ -71,7 +71,7 @@ public class PlotInfoServiceImpl implements PlotInfoService { plotInfo.setTenantId(String.valueOf(user.getTenantId())); plotInfoMapper.insert(plotInfo); - PlotLesseeSaveReqVO plotLesseeSaveReqVO = createReqVO.getPlotLesseeSaveReqVO(); + PlotLesseeSaveReqVO plotLesseeSaveReqVO = createReqVO.getPlotLessee(); PlotLesseeDO plotLesseeDO = BeanUtils.toBean(plotLesseeSaveReqVO, PlotLesseeDO.class); insertLessee(plotLesseeDO, createReqVO.getBaseId(), plotInfo.getId(), plotInfo.getPlotName()); @@ -109,7 +109,7 @@ public class PlotInfoServiceImpl implements PlotInfoService { Set collect = doList.stream().map(e-> e.getLeaseIdCard()).collect(Collectors.toSet()); // 指定当前的租户状态为: 已租 - PlotLesseeSaveReqVO plotLesseeSaveReqVO = updateReqVO.getPlotLesseeSaveReqVO(); + PlotLesseeSaveReqVO plotLesseeSaveReqVO = updateReqVO.getPlotLessee(); String idCard = plotLesseeSaveReqVO.getLeaseIdCard(); PlotLesseeDO plotLesseeDO = BeanUtils.toBean(plotLesseeSaveReqVO, PlotLesseeDO.class); if (collect.contains(idCard)) { @@ -180,7 +180,7 @@ public class PlotInfoServiceImpl implements PlotInfoService { PlotInfoDO plotInfoDO = this.getPlotInfo(id); PlotLesseeInfoRespVO plotLesseeDetailsRespVO = BeanUtils.toBean(plotInfoDO, PlotLesseeInfoRespVO.class); - plotLesseeDetailsRespVO.setPlotLesseeDetailsRespVO(subLesseeInfo); + plotLesseeDetailsRespVO.setPlotLessee(subLesseeInfo); plotLesseeDetailsRespVO.setPlotLeaseStatusName(LEASE_STATUS_MAP.get(plotLesseeDetailsRespVO.getPlotLeaseStatus())); return plotLesseeDetailsRespVO; }