From 468ea120259a7d98a80daadabf634afcd5d3af8b Mon Sep 17 00:00:00 2001 From: lld <15027638633@163.com> Date: Wed, 1 Apr 2026 20:59:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E6=A3=9A=E5=88=A0=E9=99=A4=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=80=BB=E8=BE=91=E3=80=82=E5=AE=8C=E5=96=84=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interceptor/DeviceStatusHandler.java | 4 +++ .../controller/SysAgriInfoController.java | 29 +++++++++++++------ .../controller/SysMessageController.java | 8 +++++ .../com/agri/system/domain/SysMessage.java | 17 +++++++++-- .../com/agri/system/domain/SysUserAgri.java | 4 +++ .../system/service/impl/AgriServiceImpl.java | 8 ++++- .../service/impl/SysAgriInfoServiceImpl.java | 3 +- .../service/impl/SysMessageServiceImpl.java | 6 ++++ .../com/agri/system/util/UrlEncodeUtil.java | 6 +++- .../mapper/system/SysAgriInfoMapper.xml | 9 +++++- .../mapper/system/SysImeiAutoLogMapper.xml | 3 +- .../mapper/system/SysMessageMapper.xml | 10 ++++++- .../mapper/system/SysUserAgriMapper.xml | 13 ++++----- 13 files changed, 96 insertions(+), 24 deletions(-) diff --git a/agri-framework/src/main/java/com/agri/framework/interceptor/DeviceStatusHandler.java b/agri-framework/src/main/java/com/agri/framework/interceptor/DeviceStatusHandler.java index e4bc0a7..c4d8e30 100644 --- a/agri-framework/src/main/java/com/agri/framework/interceptor/DeviceStatusHandler.java +++ b/agri-framework/src/main/java/com/agri/framework/interceptor/DeviceStatusHandler.java @@ -167,6 +167,10 @@ public class DeviceStatusHandler { // 湿度上下限 BigDecimal humiUp = agriInfo.getHumiUp(); BigDecimal humiLow = agriInfo.getHumiLow(); + if (BigDecimal.ZERO.compareTo(tempUp) == 0 + && BigDecimal.ZERO.compareTo(tempLow) == 0 + && BigDecimal.ZERO.compareTo(humiUp) == 0 + && BigDecimal.ZERO.compareTo(humiLow) == 0) return; List msgList = new ArrayList<>(); // 仅当up且所有key为数字时,才更新最新状态缓存 for (String key : payloadObj.keySet()) { diff --git a/agri-system/src/main/java/com/agri/system/controller/SysAgriInfoController.java b/agri-system/src/main/java/com/agri/system/controller/SysAgriInfoController.java index 6c9818a..8ed66b0 100644 --- a/agri-system/src/main/java/com/agri/system/controller/SysAgriInfoController.java +++ b/agri-system/src/main/java/com/agri/system/controller/SysAgriInfoController.java @@ -4,7 +4,6 @@ import com.agri.common.annotation.Log; import com.agri.common.core.controller.BaseController; import com.agri.common.core.domain.AjaxResult; import com.agri.common.core.page.TableDataInfo; -import com.agri.common.enums.AgriEnum; import com.agri.common.enums.BusinessType; import com.agri.common.utils.SecurityUtils; import com.agri.common.utils.poi.ExcelUtil; @@ -12,16 +11,14 @@ import com.agri.system.domain.SysAgriInfo; import com.agri.system.domain.SysUserAgri; import com.agri.system.domain.vo.AgriInfoView; import com.agri.system.service.ISysAgriInfoService; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.agri.system.service.ISysUserAgriService; import org.apache.commons.lang3.StringUtils; -import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; -import java.util.Map; /** * 大棚管理Controller @@ -36,6 +33,8 @@ public class SysAgriInfoController extends BaseController @Autowired private ISysAgriInfoService sysAgriInfoService; + @Autowired + private ISysUserAgriService userAgriService; /** * 查询大棚管理列表 */ @@ -149,12 +148,24 @@ public class SysAgriInfoController extends BaseController @PreAuthorize("@ss.hasPermi('assets:agri:edit')") @Log(title = "大棚管理", businessType = BusinessType.UPDATE) @PutMapping("/renameAgriName") - public AjaxResult renameAgriName(@RequestParam("imei") String imei, @RequestParam("newAgriName") String newAgriName) + public AjaxResult renameAgriName(@RequestParam("agriId") String agriId, + @RequestParam("imei") String imei, + @RequestParam("newAgriName") String newAgriName) { - boolean update = sysAgriInfoService.lambdaUpdate() - .eq(SysAgriInfo::getImei, imei) - .set(SysAgriInfo::getAgriName, newAgriName) - .update(); + boolean update = false; + if (SecurityUtils.isAdmin()) { + update = sysAgriInfoService.lambdaUpdate() + .eq(SysAgriInfo::getImei, imei) + .set(SysAgriInfo::getAgriName, newAgriName) + .update(); + } else { + update = userAgriService.lambdaUpdate() + .eq(SysUserAgri::getUserId, SecurityUtils.getUserId()) + .eq(SysUserAgri::getAgriId, imei) + .set(SysUserAgri::getAgriName, newAgriName) + .update(); + } + return update? success():error(); } } diff --git a/agri-system/src/main/java/com/agri/system/controller/SysMessageController.java b/agri-system/src/main/java/com/agri/system/controller/SysMessageController.java index bfe2495..a62c419 100644 --- a/agri-system/src/main/java/com/agri/system/controller/SysMessageController.java +++ b/agri-system/src/main/java/com/agri/system/controller/SysMessageController.java @@ -46,6 +46,14 @@ public class SysMessageController extends BaseController return getDataTable(list); } + @PreAuthorize("@ss.hasPermi('warn:message:list')") + @GetMapping("/getMessage") + public AjaxResult getMessage(SysMessage sysMessage) + { + List list = sysMessageService.selectSysMessageList(sysMessage); + return success(list); + } + /** * 导出系统消息中心列表 */ diff --git a/agri-system/src/main/java/com/agri/system/domain/SysMessage.java b/agri-system/src/main/java/com/agri/system/domain/SysMessage.java index d530b44..56dcb9a 100644 --- a/agri-system/src/main/java/com/agri/system/domain/SysMessage.java +++ b/agri-system/src/main/java/com/agri/system/domain/SysMessage.java @@ -1,13 +1,19 @@ package com.agri.system.domain; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.agri.common.annotation.Excel; import com.agri.common.core.domain.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; +import java.util.List; /** * 系统消息中心对象 sys_message @@ -23,6 +29,8 @@ public class SysMessage extends BaseEntity private static final long serialVersionUID = 1L; /** 消息主键ID */ + @TableId(type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) private Long id; private String imei; @@ -58,4 +66,9 @@ public class SysMessage extends BaseEntity @Excel(name = "跳转链接地址") private String linkUrl; + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate monitorDate; + + private List imeiList; } diff --git a/agri-system/src/main/java/com/agri/system/domain/SysUserAgri.java b/agri-system/src/main/java/com/agri/system/domain/SysUserAgri.java index 4551d5f..335a3d7 100644 --- a/agri-system/src/main/java/com/agri/system/domain/SysUserAgri.java +++ b/agri-system/src/main/java/com/agri/system/domain/SysUserAgri.java @@ -40,6 +40,10 @@ public class SysUserAgri extends BaseEntity @Excel(name = "大棚ID") private String agriId; + /** 大棚名称 */ + @Excel(name = "大棚名称") + private String agriName; + /** 协同用户ID */ @Excel(name = "协同用户ID") private Long userId; diff --git a/agri-system/src/main/java/com/agri/system/service/impl/AgriServiceImpl.java b/agri-system/src/main/java/com/agri/system/service/impl/AgriServiceImpl.java index 63736f4..e59dfcb 100644 --- a/agri-system/src/main/java/com/agri/system/service/impl/AgriServiceImpl.java +++ b/agri-system/src/main/java/com/agri/system/service/impl/AgriServiceImpl.java @@ -9,6 +9,8 @@ import com.agri.system.service.ISysUserAgriService; import com.agri.system.util.UrlEncodeUtil; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.collections4.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -18,6 +20,7 @@ import java.util.stream.Collectors; @Service public class AgriServiceImpl implements AgriService { + private static final Logger log = LoggerFactory.getLogger(AgriServiceImpl.class); @Resource private ISysUserAgriService userAgriService; @@ -37,6 +40,10 @@ public class AgriServiceImpl implements AgriService { List agriUser = userAgriService.findAgriUser(new SysUserAgri(idList)); + if (CollectionUtils.isEmpty(agriUser)) { + log.info("大棚未关联用户,暂停推送消息"); + return Collections.emptyList(); + } List msgList = new ArrayList<>(); for (SysAgriInfo agriInfo : offlineList) { @@ -50,7 +57,6 @@ public class AgriServiceImpl implements AgriService { message.setLinkUrl(UrlEncodeUtil.buildControlPageUrl(agriInfo, "/pages/home/control/index?agriInfo=")); for (SysUserAgri userAgri : agriUser){ message.setReceiver(userAgri.getUserId()); - } msgList.add(message); } diff --git a/agri-system/src/main/java/com/agri/system/service/impl/SysAgriInfoServiceImpl.java b/agri-system/src/main/java/com/agri/system/service/impl/SysAgriInfoServiceImpl.java index 09111a3..8908d6f 100644 --- a/agri-system/src/main/java/com/agri/system/service/impl/SysAgriInfoServiceImpl.java +++ b/agri-system/src/main/java/com/agri/system/service/impl/SysAgriInfoServiceImpl.java @@ -164,6 +164,7 @@ public class SysAgriInfoServiceImpl extends ServiceImpl selectSysMessageList(SysMessage sysMessage) { + if (!SecurityUtils.isAdmin()) { + sysMessage.setReceiver(SecurityUtils.getUserId()); + } return baseMapper.selectSysMessageList(sysMessage); } diff --git a/agri-system/src/main/java/com/agri/system/util/UrlEncodeUtil.java b/agri-system/src/main/java/com/agri/system/util/UrlEncodeUtil.java index cbcee81..8684f32 100644 --- a/agri-system/src/main/java/com/agri/system/util/UrlEncodeUtil.java +++ b/agri-system/src/main/java/com/agri/system/util/UrlEncodeUtil.java @@ -3,6 +3,8 @@ package com.agri.system.util; import com.agri.system.domain.SysAgriInfo; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.net.URLEncoder; @@ -12,6 +14,7 @@ import java.net.URLEncoder; */ public class UrlEncodeUtil { + private static final Logger log = LoggerFactory.getLogger(UrlEncodeUtil.class); /** * 【和你 JS 完全等价】生成跳转URL */ @@ -21,7 +24,8 @@ public class UrlEncodeUtil { JSONObject agriObj = new JSONObject(); agriObj.put("imei", agriInfo.getImei()); agriObj.put("agriName", agriInfo.getAgriName()); - agriObj.put("agriId", agriInfo.getId()); + agriObj.put("agriId", agriInfo.getId().toString()); + log.info("agriInfo:{}", agriInfo); agriObj.put("workMode", agriInfo.getWorkMode()); // 2. JSON.stringify diff --git a/agri-system/src/main/resources/mapper/system/SysAgriInfoMapper.xml b/agri-system/src/main/resources/mapper/system/SysAgriInfoMapper.xml index 5a1fe59..13f06de 100644 --- a/agri-system/src/main/resources/mapper/system/SysAgriInfoMapper.xml +++ b/agri-system/src/main/resources/mapper/system/SysAgriInfoMapper.xml @@ -52,12 +52,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT agri.id, agri.imei, - agri.agri_name, agri.work_mode, agri.quilt_num, agri.film_num, agri.blind_num, user_agri.user_id, + case when + user_agri.user_id is null + then + agri.agri_name + else + user_agri.agri_name + end + as agri_name, dtu_last.time, dtu_last.ts, dtu_last.temp1, diff --git a/agri-system/src/main/resources/mapper/system/SysImeiAutoLogMapper.xml b/agri-system/src/main/resources/mapper/system/SysImeiAutoLogMapper.xml index fa015a4..264342d 100644 --- a/agri-system/src/main/resources/mapper/system/SysImeiAutoLogMapper.xml +++ b/agri-system/src/main/resources/mapper/system/SysImeiAutoLogMapper.xml @@ -29,7 +29,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + and DATE_FORMAT(create_time, '%Y-%m-%d') = #{monitorDate} and receiver = #{receiver} and title = #{title} and msg_type = #{msgType} and read_status = #{readStatus} and content like concat('%', #{content}, '%') + + imei IN + + #{imei} + + + order by create_time asc