From 0cce96a2227b927dd4f57a703d24ceccf306fe73 Mon Sep 17 00:00:00 2001 From: wangwei_123 <1255324804@qq.com> Date: Tue, 2 Dec 2025 17:41:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8A=A5=E8=AD=A6=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E6=97=A5=E5=BF=97=EF=BC=8C=E4=BF=AE=E6=94=B9=E8=A7=84?= =?UTF-8?q?=E5=88=99=E4=B8=8D=E5=90=8C=E6=AD=A5=E5=88=B0redis=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/AlarmMessageController.java | 107 +++++++++++++++++++ .../yudao/module/hand/dal/AlarmMessageDO.java | 63 +++++++++++ .../iocoder/yudao/module/hand/dal/AlarmRuleDO.java | 2 + .../module/hand/enums/ErrorCodeConstants.java | 4 +- .../module/hand/mapper/AlarmMessageMapper.java | 33 ++++++ .../module/hand/service/AlarmMessageService.java | 67 ++++++++++++ .../hand/service/impl/AlarmMessageServiceImpl.java | 117 +++++++++++++++++++++ .../hand/service/impl/AlarmRuleServiceImpl.java | 30 +++--- .../module/hand/vo/AlarmMessagePageReqVO.java | 41 ++++++++ .../yudao/module/hand/vo/AlarmMessageRespVO.java | 51 +++++++++ .../module/hand/vo/AlarmMessageSaveReqVO.java | 36 +++++++ .../main/resources/mapper/AlarmMessageMapper.xml | 12 +++ 12 files changed, 548 insertions(+), 15 deletions(-) create mode 100644 cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/controller/admin/AlarmMessageController.java create mode 100644 cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/dal/AlarmMessageDO.java create mode 100644 cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/mapper/AlarmMessageMapper.java create mode 100644 cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/AlarmMessageService.java create mode 100644 cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/impl/AlarmMessageServiceImpl.java create mode 100644 cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessagePageReqVO.java create mode 100644 cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessageRespVO.java create mode 100644 cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessageSaveReqVO.java create mode 100644 cc-admin-master/yudao-module-hand/src/main/resources/mapper/AlarmMessageMapper.xml diff --git a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/controller/admin/AlarmMessageController.java b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/controller/admin/AlarmMessageController.java new file mode 100644 index 0000000..063898b --- /dev/null +++ b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/controller/admin/AlarmMessageController.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.hand.controller.admin; + +import cn.iocoder.yudao.module.hand.dal.AlarmMessageDO; +import cn.iocoder.yudao.module.hand.service.AlarmMessageService; +import cn.iocoder.yudao.module.hand.vo.AlarmMessagePageReqVO; +import cn.iocoder.yudao.module.hand.vo.AlarmMessageRespVO; +import cn.iocoder.yudao.module.hand.vo.AlarmMessageSaveReqVO; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + + + +@Tag(name = "管理后台 - GAS手持探测器推送") +@RestController +@RequestMapping("/gas/alarm-message") +@Validated +public class AlarmMessageController { + + @Resource + private AlarmMessageService alarmMessageService; + + @PostMapping("/create") + @Operation(summary = "创建GAS手持探测器推送") + @PreAuthorize("@ss.hasPermission('gas:alarm-message:create')") + public CommonResult createAlarmMessage(@Valid @RequestBody AlarmMessageSaveReqVO createReqVO) { + return success(alarmMessageService.createAlarmMessage(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新GAS手持探测器推送") + @PreAuthorize("@ss.hasPermission('gas:alarm-message:update')") + public CommonResult updateAlarmMessage(@Valid @RequestBody AlarmMessageSaveReqVO updateReqVO) { + alarmMessageService.updateAlarmMessage(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除GAS手持探测器推送") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('gas:alarm-message:delete')") + public CommonResult deleteAlarmMessage(@RequestParam("id") Long id) { + alarmMessageService.deleteAlarmMessage(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除GAS手持探测器推送") + @PreAuthorize("@ss.hasPermission('gas:alarm-message:delete')") + public CommonResult deleteAlarmMessageList(@RequestParam("ids") List ids) { + alarmMessageService.deleteAlarmMessageListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得GAS手持探测器推送") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('gas:alarm-message:query')") + public CommonResult getAlarmMessage(@RequestParam("id") Long id) { + AlarmMessageDO alarmMessage = alarmMessageService.getAlarmMessage(id); + return success(BeanUtils.toBean(alarmMessage, AlarmMessageRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得GAS手持探测器推送分页") + @PreAuthorize("@ss.hasPermission('gas:alarm-message:query')") + public CommonResult> getAlarmMessagePage(@Valid AlarmMessagePageReqVO pageReqVO) { + PageResult pageResult = alarmMessageService.getAlarmMessagePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AlarmMessageRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出GAS手持探测器推送 Excel") + @PreAuthorize("@ss.hasPermission('gas:alarm-message:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportAlarmMessageExcel(@Valid AlarmMessagePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = alarmMessageService.getAlarmMessagePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "GAS手持探测器推送.xls", "数据", AlarmMessageRespVO.class, + BeanUtils.toBean(list, AlarmMessageRespVO.class)); + } + +} \ No newline at end of file diff --git a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/dal/AlarmMessageDO.java b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/dal/AlarmMessageDO.java new file mode 100644 index 0000000..88963ae --- /dev/null +++ b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/dal/AlarmMessageDO.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.hand.dal; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * GAS手持探测器推送 DO + * + * @author 超级管理员 + */ +@TableName("gas_alarm_message") +@KeySequence("gas_alarm_message_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AlarmMessageDO extends BaseDO { + + /** + * 主键ID + */ + @TableId + private Long id; + /** + * 手持表id + */ + private Long detectorId; + /** + * 持有人名称 + */ + private String name; + /** + * 设备编号 + */ + private String sn; + /** + * 消息 + */ + private String message; + /** + * 推送设备sn,逗号分割 + */ + private String pushSnList; + /** + * 备注 + */ + private String remark; + /** + * 部门id + */ + private Long deptId; + /** + * 租户id + */ + private Long tenantId; + +} \ No newline at end of file diff --git a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/dal/AlarmRuleDO.java b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/dal/AlarmRuleDO.java index 49bcd37..e68ed03 100644 --- a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/dal/AlarmRuleDO.java +++ b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/dal/AlarmRuleDO.java @@ -54,10 +54,12 @@ public class AlarmRuleDO extends BaseDO { /** * 触发值(小) */ + @TableField(updateStrategy = FieldStrategy.ALWAYS) private Double min; /** * 触发值(大) */ + @TableField(updateStrategy = FieldStrategy.ALWAYS) private Double max; /** * 最值方向(0:小;1:大) diff --git a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/enums/ErrorCodeConstants.java b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/enums/ErrorCodeConstants.java index 536d720..441d3d6 100644 --- a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/enums/ErrorCodeConstants.java +++ b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/enums/ErrorCodeConstants.java @@ -25,5 +25,7 @@ public interface ErrorCodeConstants { ErrorCode FACTORY_NOT_EXISTS = new ErrorCode(1000071, "GAS工厂不存在"); ErrorCode HAND_DETECTOR_REDIS_NOT_EXISTS = new ErrorCode(100001, "请先登录,再查看"); - ErrorCode PERSONNEL_NOT_EXISTS = new ErrorCode(2131, "人员信息不存在"); + ErrorCode PERSONNEL_NOT_EXISTS = new ErrorCode(100002, "人员信息不存在"); + + ErrorCode ALARM_MESSAGE_NOT_EXISTS = new ErrorCode(100003, "GAS手持探测器推送不存在"); } diff --git a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/mapper/AlarmMessageMapper.java b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/mapper/AlarmMessageMapper.java new file mode 100644 index 0000000..6b3358a --- /dev/null +++ b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/mapper/AlarmMessageMapper.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.hand.mapper; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.hand.dal.AlarmMessageDO; +import cn.iocoder.yudao.module.hand.vo.AlarmMessagePageReqVO; +import org.apache.ibatis.annotations.Mapper; + +/** + * GAS手持探测器推送 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface AlarmMessageMapper extends BaseMapperX { + + default PageResult selectPage(AlarmMessagePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(AlarmMessageDO::getDetectorId, reqVO.getDetectorId()) + .likeIfPresent(AlarmMessageDO::getName, reqVO.getName()) + .eqIfPresent(AlarmMessageDO::getSn, reqVO.getSn()) + .eqIfPresent(AlarmMessageDO::getMessage, reqVO.getMessage()) + .eqIfPresent(AlarmMessageDO::getPushSnList, reqVO.getPushSnList()) + .eqIfPresent(AlarmMessageDO::getRemark, reqVO.getRemark()) + .eqIfPresent(AlarmMessageDO::getDeptId, reqVO.getDeptId()) + .betweenIfPresent(AlarmMessageDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AlarmMessageDO::getId)); + } + +} \ No newline at end of file diff --git a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/AlarmMessageService.java b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/AlarmMessageService.java new file mode 100644 index 0000000..f73322c --- /dev/null +++ b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/AlarmMessageService.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.hand.service; + +import java.util.*; + +import cn.iocoder.yudao.module.hand.dal.AlarmMessageDO; +import cn.iocoder.yudao.module.hand.dal.HandDetectorDO; +import cn.iocoder.yudao.module.hand.vo.AlarmMessagePageReqVO; +import cn.iocoder.yudao.module.hand.vo.AlarmMessageSaveReqVO; +import cn.iocoder.yudao.module.hand.vo.HandDataVo; +import jakarta.validation.*; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * GAS手持探测器推送 Service 接口 + * + * @author 超级管理员 + */ +public interface AlarmMessageService { + + /** + * 创建GAS手持探测器推送 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createAlarmMessage(@Valid AlarmMessageSaveReqVO createReqVO); + + /** + * 更新GAS手持探测器推送 + * + * @param updateReqVO 更新信息 + */ + void updateAlarmMessage(@Valid AlarmMessageSaveReqVO updateReqVO); + + /** + * 删除GAS手持探测器推送 + * + * @param id 编号 + */ + void deleteAlarmMessage(Long id); + + /** + * 批量删除GAS手持探测器推送 + * + * @param ids 编号 + */ + void deleteAlarmMessageListByIds(List ids); + + /** + * 获得GAS手持探测器推送 + * + * @param id 编号 + * @return GAS手持探测器推送 + */ + AlarmMessageDO getAlarmMessage(Long id); + + /** + * 获得GAS手持探测器推送分页 + * + * @param pageReqVO 分页查询 + * @return GAS手持探测器推送分页 + */ + PageResult getAlarmMessagePage(AlarmMessagePageReqVO pageReqVO); + + void createAlarmRecord(HandDataVo redisData, List listAll, String msgContent); +} \ No newline at end of file diff --git a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/impl/AlarmMessageServiceImpl.java b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/impl/AlarmMessageServiceImpl.java new file mode 100644 index 0000000..9108f26 --- /dev/null +++ b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/impl/AlarmMessageServiceImpl.java @@ -0,0 +1,117 @@ +package cn.iocoder.yudao.module.hand.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.module.hand.dal.AlarmMessageDO; +import cn.iocoder.yudao.module.hand.dal.HandDetectorDO; +import cn.iocoder.yudao.module.hand.mapper.AlarmMessageMapper; +import cn.iocoder.yudao.module.hand.service.AlarmMessageService; +import cn.iocoder.yudao.module.hand.vo.AlarmMessagePageReqVO; +import cn.iocoder.yudao.module.hand.vo.AlarmMessageSaveReqVO; +import cn.iocoder.yudao.module.hand.vo.HandDataVo; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; +import static cn.iocoder.yudao.module.hand.enums.ErrorCodeConstants.ALARM_MESSAGE_NOT_EXISTS; + +/** + * GAS手持探测器推送 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class AlarmMessageServiceImpl implements AlarmMessageService { + + @Resource + private AlarmMessageMapper alarmMessageMapper; + + @Override + public Long createAlarmMessage(AlarmMessageSaveReqVO createReqVO) { + // 插入 + AlarmMessageDO alarmMessage = BeanUtils.toBean(createReqVO, AlarmMessageDO.class); + alarmMessageMapper.insert(alarmMessage); + + // 返回 + return alarmMessage.getId(); + } + + @Override + public void updateAlarmMessage(AlarmMessageSaveReqVO updateReqVO) { + // 校验存在 + validateAlarmMessageExists(updateReqVO.getId()); + // 更新 + AlarmMessageDO updateObj = BeanUtils.toBean(updateReqVO, AlarmMessageDO.class); + alarmMessageMapper.updateById(updateObj); + } + + @Override + public void deleteAlarmMessage(Long id) { + // 校验存在 + validateAlarmMessageExists(id); + // 删除 + alarmMessageMapper.deleteById(id); + } + + @Override + public void deleteAlarmMessageListByIds(List ids) { + // 删除 + alarmMessageMapper.deleteByIds(ids); + } + + + private void validateAlarmMessageExists(Long id) { + if (alarmMessageMapper.selectById(id) == null) { + throw exception(ALARM_MESSAGE_NOT_EXISTS); + } + } + + @Override + public AlarmMessageDO getAlarmMessage(Long id) { + return alarmMessageMapper.selectById(id); + } + + @Override + public PageResult getAlarmMessagePage(AlarmMessagePageReqVO pageReqVO) { + return alarmMessageMapper.selectPage(pageReqVO); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createAlarmRecord(HandDataVo redisData, List listAll, String msgContent) { + String pushSnListStr = ""; + if (CollUtil.isNotEmpty(listAll)) { + pushSnListStr = listAll.stream() + .map(HandDetectorDO::getSn) + .filter(StrUtil::isNotBlank) + .collect(Collectors.joining(",")); + } + // 2. 构建实体对象 + AlarmMessageDO alarmDO = new AlarmMessageDO(); + alarmDO.setDetectorId(redisData.getId()); + alarmDO.setName(redisData.getName()); + alarmDO.setSn(redisData.getSn()); + alarmDO.setTenantId(redisData.getTenantId()); + alarmDO.setDeptId(redisData.getDeptId()); + alarmDO.setMessage(msgContent); + alarmDO.setPushSnList(pushSnListStr); + alarmDO.setRemark("系统自动触发报警推送"); + + // 3. 落库 + alarmMessageMapper.insert(alarmDO); + } + +} \ No newline at end of file diff --git a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/impl/AlarmRuleServiceImpl.java b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/impl/AlarmRuleServiceImpl.java index 867792d..629a9e2 100644 --- a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/impl/AlarmRuleServiceImpl.java +++ b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/service/impl/AlarmRuleServiceImpl.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.hand.dal.GasTypeDO; import cn.iocoder.yudao.module.hand.mapper.AlarmRuleMapper; import cn.iocoder.yudao.module.hand.service.AlarmRuleService; import cn.iocoder.yudao.module.hand.util.RedisKeyUtil; +import cn.iocoder.yudao.module.hand.util.RedisUtil; import cn.iocoder.yudao.module.hand.vo.AlarmRulePageReqVO; import cn.iocoder.yudao.module.hand.vo.AlarmRuleSaveReqVO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -16,6 +17,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -50,50 +52,42 @@ public class AlarmRuleServiceImpl implements AlarmRuleService { "'gas_rules_map:' + T(cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder).getTenantId()"; @Resource private AlarmRuleMapper alarmRuleMapper; + @Resource + private RedisUtil redisUtil; @Override - @CacheEvict(cacheNames = RedisKeyUtil.ALARM_RULES_CACHE_NAME, - // 【关键修改】使用 #tenantId 来引用方法参数,确保缓存key与查询数据严格对应。 - key = EVICT_CACHE_KEY_SPEL) public Long createAlarmRule(AlarmRuleSaveReqVO createReqVO) { // 插入 AlarmRuleDO alarmRule = BeanUtils.toBean(createReqVO, AlarmRuleDO.class); alarmRuleMapper.insert(alarmRule); - // 返回 + deleteRedisCache(); return alarmRule.getId(); } @Override - @CacheEvict(cacheNames = RedisKeyUtil.ALARM_RULES_CACHE_NAME, - // 【关键修改】使用 #tenantId 来引用方法参数,确保缓存key与查询数据严格对应。 - key = EVICT_CACHE_KEY_SPEL) public void updateAlarmRule(AlarmRuleSaveReqVO updateReqVO) { // 校验存在 validateAlarmRuleExists(updateReqVO.getId()); // 更新 AlarmRuleDO updateObj = BeanUtils.toBean(updateReqVO, AlarmRuleDO.class); alarmRuleMapper.updateById(updateObj); + deleteRedisCache(); } @Override - @CacheEvict(cacheNames = RedisKeyUtil.ALARM_RULES_CACHE_NAME, - // 【关键修改】使用 #tenantId 来引用方法参数,确保缓存key与查询数据严格对应。 - key = EVICT_CACHE_KEY_SPEL) public void deleteAlarmRule(Long id) { // 校验存在 validateAlarmRuleExists(id); // 删除 alarmRuleMapper.deleteById(id); - + deleteRedisCache(); } @Override - @CacheEvict(cacheNames = RedisKeyUtil.ALARM_RULES_CACHE_NAME, - // 【关键修改】使用 #tenantId 来引用方法参数,确保缓存key与查询数据严格对应。 - key = EVICT_CACHE_KEY_SPEL) public void deleteAlarmRuleListByIds(List ids) { // 删除 alarmRuleMapper.deleteByIds(ids); + deleteRedisCache(); } @@ -140,4 +134,12 @@ public class AlarmRuleServiceImpl implements AlarmRuleService { public List getListAll() { return alarmRuleMapper.selectList(); } + private void deleteRedisCache() { + Long tenantId = TenantContextHolder.getTenantId(); + if (tenantId != null) { + // 格式: cacheName + ":" + key部分 + String cacheKey = "alarm_rulesKey:gas_rules_map:" + tenantId; + redisUtil.del(cacheKey); + } + } } \ No newline at end of file diff --git a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessagePageReqVO.java b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessagePageReqVO.java new file mode 100644 index 0000000..047cad3 --- /dev/null +++ b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessagePageReqVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.hand.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - GAS手持探测器推送分页 Request VO") +@Data +public class AlarmMessagePageReqVO extends PageParam { + + @Schema(description = "手持表id", example = "10665") + private Long detectorId; + + @Schema(description = "持有人名称", example = "王五") + private String name; + + @Schema(description = "设备编号") + private String sn; + + @Schema(description = "消息") + private String message; + + @Schema(description = "推送设备sn,逗号分割") + private String pushSnList; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "部门id", example = "12286") + private Long deptId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessageRespVO.java b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessageRespVO.java new file mode 100644 index 0000000..3026820 --- /dev/null +++ b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessageRespVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.hand.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - GAS手持探测器推送 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AlarmMessageRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13733") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "手持表id", example = "10665") + @ExcelProperty("手持表id") + private Long detectorId; + + @Schema(description = "持有人名称", example = "王五") + @ExcelProperty("持有人名称") + private String name; + + @Schema(description = "设备编号") + @ExcelProperty("设备编号") + private String sn; + + @Schema(description = "消息") + @ExcelProperty("消息") + private String message; + + @Schema(description = "推送设备sn,逗号分割") + @ExcelProperty("推送设备sn,逗号分割") + private String pushSnList; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "部门id", example = "12286") + @ExcelProperty("部门id") + private Long deptId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessageSaveReqVO.java b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessageSaveReqVO.java new file mode 100644 index 0000000..7357145 --- /dev/null +++ b/cc-admin-master/yudao-module-hand/src/main/java/cn/iocoder/yudao/module/hand/vo/AlarmMessageSaveReqVO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.hand.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - GAS手持探测器推送新增/修改 Request VO") +@Data +public class AlarmMessageSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13733") + private Long id; + + @Schema(description = "手持表id", example = "10665") + private Long detectorId; + + @Schema(description = "持有人名称", example = "王五") + private String name; + + @Schema(description = "设备编号") + private String sn; + + @Schema(description = "消息") + private String message; + + @Schema(description = "推送设备sn,逗号分割") + private String pushSnList; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "部门id", example = "12286") + private Long deptId; + +} \ No newline at end of file diff --git a/cc-admin-master/yudao-module-hand/src/main/resources/mapper/AlarmMessageMapper.xml b/cc-admin-master/yudao-module-hand/src/main/resources/mapper/AlarmMessageMapper.xml new file mode 100644 index 0000000..a3cbf5e --- /dev/null +++ b/cc-admin-master/yudao-module-hand/src/main/resources/mapper/AlarmMessageMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file