水泥搅拌桩/旋挖设备bug修复

This commit is contained in:
guoshengxiong 2025-12-24 17:24:20 +08:00
parent c08b92471f
commit c5043a90a6
2 changed files with 67 additions and 15 deletions

View File

@ -270,16 +270,20 @@ public class CementMixPileDevServiceImpl extends ServiceImpl<CementMixPileDevMap
Set<String> processedAlarms = new HashSet<>(); Set<String> processedAlarms = new HashSet<>();
for (CementMixPileAlarm alarm : alarms) { for (CementMixPileAlarm alarm : alarms) {
CementMixPileDev dev = devMap.get(alarm.getDevSn()); CementMixPileDev dev = devMap.get(alarm.getDevSn());
if (dev == null || StrUtil.isBlank(dev.getAlarmPushWorkerId())) { if (dev == null) {
continue; continue;
} }
List<SystemUser> systemUserList = systemUserService.list(Wrappers.<SystemUser>lambdaQuery().in(SystemUser::getUserId, StrUtil.split(dev.getAlarmPushWorkerId(), ",")).last(Cts.IGNORE_DATA_SCOPE_CONDITION)); List<Long> userIdList = new ArrayList<>();
if (StrUtil.isNotBlank(dev.getAlarmPushWorkerId())) {
userIdList = systemUserService.list(Wrappers.<SystemUser>lambdaQuery().in(SystemUser::getUserId, StrUtil.split(dev.getAlarmPushWorkerId(), ",")).last(Cts.IGNORE_DATA_SCOPE_CONDITION))
.stream().map(SystemUser::getUserId).collect(Collectors.toList());
}
String title = "水泥搅拌桩报警通知"; String title = "水泥搅拌桩报警通知";
String msg = StrUtil.format("{}实时桩深数据异常!报警时间:{},设计桩深{}米,当前显示{}米。", alarm.getPilePointName(), DateUtil.formatDateTime(alarm.getAlarmTime()), alarm.getDesignPileDepth(), alarm.getRealPileDepth()); String msg = StrUtil.format("{}实时桩深数据异常!报警时间:{},设计桩深{}米,当前显示{}米。", alarm.getPilePointName(), DateUtil.formatDateTime(alarm.getAlarmTime()), alarm.getDesignPileDepth(), alarm.getRealPileDepth());
noticeService.addProjectLevelNotice(alarm.getProjectSn(), title, msg, "35", null); noticeService.addProjectLevelNotice(alarm.getProjectSn(), title, msg, "35", null);
if (CollectionUtils.isNotEmpty(systemUserList)) { if (CollectionUtils.isNotEmpty(userIdList)) {
for (SystemUser systemUser : systemUserList) { for (Long userId : userIdList) {
noticeService.addUserNotice(systemUser.getUserId(), noticeService.addUserNotice(userId,
title, title,
msg, msg,
"35"); "35");

View File

@ -1,41 +1,57 @@
package com.zhgd.xmgl.modules.bigdevice.service.impl; package com.zhgd.xmgl.modules.bigdevice.service.impl;
import cn.hutool.core.collection.CollUtil; 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.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.system.query.QueryGenerator; 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.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.dto.CementMixPileRealtimeDto;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.CementMixPileRealtimeVo; import com.zhgd.xmgl.modules.bigdevice.entity.vo.CementMixPileRealtimeVo;
import com.zhgd.xmgl.modules.bigdevice.mapper.CementMixPileRealtimeMapper; 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.modules.bigdevice.service.ICementMixPileRealtimeService;
import com.zhgd.xmgl.util.MapBuilder; import com.zhgd.xmgl.util.MapBuilder;
import com.zhgd.xmgl.util.PageUtil; import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil; import com.zhgd.xmgl.util.RefUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* @Description: 水泥搅拌桩/旋挖沉桩实时数据 * @Description: 水泥搅拌桩/旋挖沉桩实时数据
* @author pds * @author pds
* @date 2025-12-12 * @date 2025-12-12
* @version V1.0 * @version V1.0
*/ */
@Service @Service
public class CementMixPileRealtimeServiceImpl extends ServiceImpl<CementMixPileRealtimeMapper, CementMixPileRealtime> implements ICementMixPileRealtimeService { public class CementMixPileRealtimeServiceImpl extends ServiceImpl<CementMixPileRealtimeMapper, CementMixPileRealtime> implements ICementMixPileRealtimeService {
@Autowired @Autowired
private CementMixPileRealtimeMapper cementMixPileRealtimeMapper; private CementMixPileRealtimeMapper cementMixPileRealtimeMapper;
@Lazy
@Autowired
private ICementMixPilePointService cementMixPilePointService;
@Lazy
@Autowired
private ICementMixPileAlarmService cementMixPileAlarmService;
@Override @Override
public IPage<CementMixPileRealtimeVo> queryPageList(HashMap<String, Object> param) { public IPage<CementMixPileRealtimeVo> queryPageList(HashMap<String, Object> param) {
QueryWrapper<CementMixPileRealtimeVo> queryWrapper = this.getQueryWrapper(param); QueryWrapper<CementMixPileRealtimeVo> queryWrapper = this.getQueryWrapper(param);
Page<CementMixPileRealtimeVo> page = PageUtil.getPage(param); Page<CementMixPileRealtimeVo> page = PageUtil.getPage(param);
IPage<CementMixPileRealtimeVo> pageList = baseMapper.queryList(page, queryWrapper,param); IPage<CementMixPileRealtimeVo> pageList = baseMapper.queryList(page, queryWrapper, param);
pageList.setRecords(this.dealList(pageList.getRecords())); pageList.setRecords(this.dealList(pageList.getRecords()));
return pageList; return pageList;
} }
@ -43,7 +59,7 @@ public class CementMixPileRealtimeServiceImpl extends ServiceImpl<CementMixPileR
@Override @Override
public List<CementMixPileRealtimeVo> queryList(HashMap<String, Object> param) { public List<CementMixPileRealtimeVo> queryList(HashMap<String, Object> param) {
QueryWrapper<CementMixPileRealtimeVo> queryWrapper = getQueryWrapper(param); QueryWrapper<CementMixPileRealtimeVo> queryWrapper = getQueryWrapper(param);
return dealList(baseMapper.queryList(queryWrapper,param)); return dealList(baseMapper.queryList(queryWrapper, param));
} }
private QueryWrapper<CementMixPileRealtimeVo> getQueryWrapper(HashMap<String, Object> param) { private QueryWrapper<CementMixPileRealtimeVo> getQueryWrapper(HashMap<String, Object> param) {
@ -57,24 +73,56 @@ public class CementMixPileRealtimeServiceImpl extends ServiceImpl<CementMixPileR
} }
@Override @Override
public void add(CementMixPileRealtimeDto cementMixPileRealtimeDto) { public void add(CementMixPileRealtimeDto dto) {
cementMixPileRealtimeDto.setId(null); dto.setId(null);
baseMapper.insert(cementMixPileRealtimeDto); setPilePointName(dto);
baseMapper.insert(dto);
addAlarmIf(dto);
}
private void addAlarmIf(CementMixPileRealtimeDto dto) {
CementMixPilePoint point = cementMixPilePointService.getOne(new LambdaQueryWrapper<CementMixPilePoint>()
.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 @Override
public void edit(CementMixPileRealtimeDto cementMixPileRealtimeDto) { public void edit(CementMixPileRealtimeDto cementMixPileRealtimeDto) {
CementMixPileRealtime oldCementMixPileRealtime = baseMapper.selectById(cementMixPileRealtimeDto.getId()); CementMixPileRealtime oldCementMixPileRealtime = baseMapper.selectById(cementMixPileRealtimeDto.getId());
if(oldCementMixPileRealtime==null) { if (oldCementMixPileRealtime == null) {
throw new OpenAlertException("未找到对应实体"); throw new OpenAlertException("未找到对应实体");
} }
setPilePointName(cementMixPileRealtimeDto);
baseMapper.updateById(cementMixPileRealtimeDto); baseMapper.updateById(cementMixPileRealtimeDto);
} }
private void setPilePointName(CementMixPileRealtimeDto cementMixPileRealtimeDto) {
CementMixPilePoint point = cementMixPilePointService.getOne(new LambdaQueryWrapper<CementMixPilePoint>()
.eq(CementMixPilePoint::getId, cementMixPileRealtimeDto.getPointId()));
if (point != null) {
cementMixPileRealtimeDto.setPilePointName(point.getPilePointName());
}
}
@Override @Override
public void delete(String id) { public void delete(String id) {
CementMixPileRealtime cementMixPileRealtime = baseMapper.selectById(id); CementMixPileRealtime cementMixPileRealtime = baseMapper.selectById(id);
if(cementMixPileRealtime==null) { if (cementMixPileRealtime == null) {
throw new OpenAlertException("未找到对应实体"); throw new OpenAlertException("未找到对应实体");
} }
baseMapper.deleteById(id); baseMapper.deleteById(id);
@ -83,8 +131,8 @@ public class CementMixPileRealtimeServiceImpl extends ServiceImpl<CementMixPileR
@Override @Override
public CementMixPileRealtimeVo queryById(String id) { public CementMixPileRealtimeVo queryById(String id) {
List<CementMixPileRealtimeVo> list = this.queryList(new MapBuilder<String, Object>() List<CementMixPileRealtimeVo> list = this.queryList(new MapBuilder<String, Object>()
.put("id", id) .put("id", id)
.build()); .build());
CementMixPileRealtimeVo entity = CollUtil.getFirst(list); CementMixPileRealtimeVo entity = CollUtil.getFirst(list);
if (entity == null) { if (entity == null) {
throw new OpenAlertException("未找到对应实体"); throw new OpenAlertException("未找到对应实体");