From c5043a90a6c5e7ffc203996e3d2fa6307d433b2f Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Wed, 24 Dec 2025 17:24:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B0=B4=E6=B3=A5=E6=90=85=E6=8B=8C=E6=A1=A9/?= =?UTF-8?q?=E6=97=8B=E6=8C=96=E8=AE=BE=E5=A4=87bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CementMixPileDevServiceImpl.java | 14 ++-- .../CementMixPileRealtimeServiceImpl.java | 68 ++++++++++++++++--- 2 files changed, 67 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CementMixPileDevServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CementMixPileDevServiceImpl.java index 174b03c14..3d5f53f89 100644 --- a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CementMixPileDevServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CementMixPileDevServiceImpl.java @@ -270,16 +270,20 @@ public class CementMixPileDevServiceImpl extends ServiceImpl processedAlarms = new HashSet<>(); for (CementMixPileAlarm alarm : alarms) { CementMixPileDev dev = devMap.get(alarm.getDevSn()); - if (dev == null || StrUtil.isBlank(dev.getAlarmPushWorkerId())) { + if (dev == null) { continue; } - List systemUserList = systemUserService.list(Wrappers.lambdaQuery().in(SystemUser::getUserId, StrUtil.split(dev.getAlarmPushWorkerId(), ",")).last(Cts.IGNORE_DATA_SCOPE_CONDITION)); + List userIdList = new ArrayList<>(); + if (StrUtil.isNotBlank(dev.getAlarmPushWorkerId())) { + userIdList = systemUserService.list(Wrappers.lambdaQuery().in(SystemUser::getUserId, StrUtil.split(dev.getAlarmPushWorkerId(), ",")).last(Cts.IGNORE_DATA_SCOPE_CONDITION)) + .stream().map(SystemUser::getUserId).collect(Collectors.toList()); + } String title = "水泥搅拌桩报警通知"; String msg = StrUtil.format("{}实时桩深数据异常!报警时间:{},设计桩深{}米,当前显示{}米。", alarm.getPilePointName(), DateUtil.formatDateTime(alarm.getAlarmTime()), alarm.getDesignPileDepth(), alarm.getRealPileDepth()); noticeService.addProjectLevelNotice(alarm.getProjectSn(), title, msg, "35", null); - if (CollectionUtils.isNotEmpty(systemUserList)) { - for (SystemUser systemUser : systemUserList) { - noticeService.addUserNotice(systemUser.getUserId(), + if (CollectionUtils.isNotEmpty(userIdList)) { + for (Long userId : userIdList) { + noticeService.addUserNotice(userId, title, msg, "35"); diff --git a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CementMixPileRealtimeServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CementMixPileRealtimeServiceImpl.java index b10c2a388..841b26d4d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CementMixPileRealtimeServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CementMixPileRealtimeServiceImpl.java @@ -1,41 +1,57 @@ package com.zhgd.xmgl.modules.bigdevice.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.NumberUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.xmgl.modules.bigdevice.entity.CementMixPilePoint; import com.zhgd.xmgl.modules.bigdevice.entity.CementMixPileRealtime; +import com.zhgd.xmgl.modules.bigdevice.entity.dto.CementMixPileAlarmDto; import com.zhgd.xmgl.modules.bigdevice.entity.dto.CementMixPileRealtimeDto; import com.zhgd.xmgl.modules.bigdevice.entity.vo.CementMixPileRealtimeVo; import com.zhgd.xmgl.modules.bigdevice.mapper.CementMixPileRealtimeMapper; +import com.zhgd.xmgl.modules.bigdevice.service.ICementMixPileAlarmService; +import com.zhgd.xmgl.modules.bigdevice.service.ICementMixPilePointService; import com.zhgd.xmgl.modules.bigdevice.service.ICementMixPileRealtimeService; import com.zhgd.xmgl.util.MapBuilder; import com.zhgd.xmgl.util.PageUtil; import com.zhgd.xmgl.util.RefUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; +import java.util.Objects; /** * @Description: 水泥搅拌桩/旋挖沉桩实时数据 * @author: pds - * @date: 2025-12-12 + * @date: 2025-12-12 * @version: V1.0 */ @Service public class CementMixPileRealtimeServiceImpl extends ServiceImpl implements ICementMixPileRealtimeService { @Autowired private CementMixPileRealtimeMapper cementMixPileRealtimeMapper; + @Lazy + @Autowired + private ICementMixPilePointService cementMixPilePointService; + @Lazy + @Autowired + private ICementMixPileAlarmService cementMixPileAlarmService; + @Override public IPage queryPageList(HashMap param) { QueryWrapper queryWrapper = this.getQueryWrapper(param); Page page = PageUtil.getPage(param); - IPage pageList = baseMapper.queryList(page, queryWrapper,param); + IPage pageList = baseMapper.queryList(page, queryWrapper, param); pageList.setRecords(this.dealList(pageList.getRecords())); return pageList; } @@ -43,7 +59,7 @@ public class CementMixPileRealtimeServiceImpl extends ServiceImpl queryList(HashMap param) { QueryWrapper queryWrapper = getQueryWrapper(param); - return dealList(baseMapper.queryList(queryWrapper,param)); + return dealList(baseMapper.queryList(queryWrapper, param)); } private QueryWrapper getQueryWrapper(HashMap param) { @@ -57,24 +73,56 @@ public class CementMixPileRealtimeServiceImpl extends ServiceImpl() + .eq(CementMixPilePoint::getId, dto.getPointId())); + if (point == null) { + return; + } + if (Objects.nonNull(dto.getRealtimeDepth()) && Objects.nonNull(point.getDesignPileDepth()) + && NumberUtil.isGreater(dto.getRealtimeDepth(), point.getDesignPileDepth())) { + CementMixPileAlarmDto alarmDto = new CementMixPileAlarmDto(); + alarmDto.setProjectSn(dto.getProjectSn()); + alarmDto.setAlarmTime(dto.getPositioningTime() != null ? dto.getPositioningTime() : new DateTime()); + alarmDto.setPointId(point.getId()); + alarmDto.setPilePointName(point.getPilePointName()); + alarmDto.setDesignPileDepth(point.getDesignPileDepth()); + alarmDto.setRealPileDepth(dto.getRealtimeDepth()); + alarmDto.setDevSn(dto.getDevSn()); + alarmDto.setDevType(dto.getDevType()); + cementMixPileAlarmService.add(alarmDto); + } } @Override public void edit(CementMixPileRealtimeDto cementMixPileRealtimeDto) { CementMixPileRealtime oldCementMixPileRealtime = baseMapper.selectById(cementMixPileRealtimeDto.getId()); - if(oldCementMixPileRealtime==null) { + if (oldCementMixPileRealtime == null) { throw new OpenAlertException("未找到对应实体"); } + setPilePointName(cementMixPileRealtimeDto); baseMapper.updateById(cementMixPileRealtimeDto); } + private void setPilePointName(CementMixPileRealtimeDto cementMixPileRealtimeDto) { + CementMixPilePoint point = cementMixPilePointService.getOne(new LambdaQueryWrapper() + .eq(CementMixPilePoint::getId, cementMixPileRealtimeDto.getPointId())); + if (point != null) { + cementMixPileRealtimeDto.setPilePointName(point.getPilePointName()); + } + } + @Override public void delete(String id) { CementMixPileRealtime cementMixPileRealtime = baseMapper.selectById(id); - if(cementMixPileRealtime==null) { + if (cementMixPileRealtime == null) { throw new OpenAlertException("未找到对应实体"); } baseMapper.deleteById(id); @@ -83,8 +131,8 @@ public class CementMixPileRealtimeServiceImpl extends ServiceImpl list = this.queryList(new MapBuilder() - .put("id", id) - .build()); + .put("id", id) + .build()); CementMixPileRealtimeVo entity = CollUtil.getFirst(list); if (entity == null) { throw new OpenAlertException("未找到对应实体");