规则报警bug修改

This commit is contained in:
guoshengxiong 2025-11-17 18:40:31 +08:00
parent 9e922f7de4
commit b112cb9f75
9 changed files with 136 additions and 24 deletions

View File

@ -0,0 +1,29 @@
package com.zhgd.xmgl.modules.basicdata.entity.bo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class CompanyUsersByProjectSnBo {
/**
*总企业用户ids多个,分割
*/
@ApiModelProperty("总企业用户ids多个,分割)")
private String uids0;
/**
*一级企业用户ids多个,分割
*/
@ApiModelProperty("一级企业用户ids多个,分割)")
private String uids1;
/**
*二级企业用户ids多个,分割
*/
@ApiModelProperty("二级企业用户ids多个,分割)")
private String uids2;
/**
*三级企业用户ids多个,分割
*/
@ApiModelProperty("三级企业用户ids多个,分割)")
private String uids3;
}

View File

@ -8,6 +8,7 @@ import com.wflow.bean.do_.UserDeptDo;
import com.wflow.bean.vo.OrgTreeVo; import com.wflow.bean.vo.OrgTreeVo;
import com.zhgd.annotation.DataScope; import com.zhgd.annotation.DataScope;
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
import com.zhgd.xmgl.modules.basicdata.entity.bo.CompanyUsersByProjectSnBo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
@ -272,4 +273,6 @@ public interface SystemUserMapper extends BaseMapper<SystemUser> {
*/ */
@DataScope(includeTable = {"system_user"}) @DataScope(includeTable = {"system_user"})
void updateRealNameFromWorker(@Param("workerId") Long workerId, @Param("workerName") String workerName); void updateRealNameFromWorker(@Param("workerId") Long workerId, @Param("workerName") String workerName);
CompanyUsersByProjectSnBo getCompanyUsersByProjectSn(String projectSn);
} }

View File

@ -388,4 +388,18 @@
<update id="updateRealNameFromWorker"> <update id="updateRealNameFromWorker">
update system_user set real_name=#{workerName} where worker_id = #{workerId} update system_user set real_name=#{workerName} where worker_id = #{workerId}
</update> </update>
<select id="getCompanyUsersByProjectSn" resultType="com.zhgd.xmgl.modules.basicdata.entity.bo.CompanyUsersByProjectSnBo">
SELECT GROUP_CONCAT(DISTINCT su0.user_id) uids0,GROUP_CONCAT(DISTINCT su1.user_id) uids1,GROUP_CONCAT(DISTINCT su2.user_id) uids2,GROUP_CONCAT(DISTINCT su3.user_id) uids3
FROM company a
JOIN company b ON b.parent_id = a.company_id
JOIN company cp ON b.company_id = cp.parent_id
JOIN project c ON cp.company_sn = c.company_sn
JOIN company top on top.company_sn=a.headquarters_sn
left join system_user su0 on su0.sn=top.company_sn and su0.account_type=2
left join system_user su1 on su1.sn=a.company_sn and su1.account_type=3
left join system_user su2 on su2.sn=b.company_sn and su2.account_type=4
left join system_user su3 on su3.sn=cp.company_sn and su3.account_type=7
WHERE c.project_sn=#{projectSn}
</select>
</mapper> </mapper>

View File

@ -388,4 +388,6 @@ public interface ISystemUserService extends IService<SystemUser> {
* @return * @return
*/ */
Map<String, Object> verifyLogin(Map<String, Object> map); Map<String, Object> verifyLogin(Map<String, Object> map);
List<Long> getCompanyUserIdsByProjectSn(String projectSn);
} }

View File

@ -1,6 +1,7 @@
package com.zhgd.xmgl.modules.basicdata.service.impl; package com.zhgd.xmgl.modules.basicdata.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.*; import cn.hutool.core.date.*;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
@ -27,6 +28,7 @@ import com.zhgd.redis.lock.RedisRepository;
import com.zhgd.xmgl.constant.Cts; import com.zhgd.xmgl.constant.Cts;
import com.zhgd.xmgl.entity.sj.JwtPayloadUserInfo; import com.zhgd.xmgl.entity.sj.JwtPayloadUserInfo;
import com.zhgd.xmgl.modules.basicdata.entity.*; import com.zhgd.xmgl.modules.basicdata.entity.*;
import com.zhgd.xmgl.modules.basicdata.entity.bo.CompanyUsersByProjectSnBo;
import com.zhgd.xmgl.modules.basicdata.entity.dto.LoginInfoByTokenDto; import com.zhgd.xmgl.modules.basicdata.entity.dto.LoginInfoByTokenDto;
import com.zhgd.xmgl.modules.basicdata.enums.SystemUserAccountTypeEnum; import com.zhgd.xmgl.modules.basicdata.enums.SystemUserAccountTypeEnum;
import com.zhgd.xmgl.modules.basicdata.mapper.*; import com.zhgd.xmgl.modules.basicdata.mapper.*;
@ -1956,4 +1958,22 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
} }
} }
} }
@Override
public List<Long> getCompanyUserIdsByProjectSn(String projectSn) {
CompanyUsersByProjectSnBo bo = baseMapper.getCompanyUsersByProjectSn(projectSn);
ArrayList<Long> list = new ArrayList<>();
addAllCompanyUserIds(list, bo.getUids0());
addAllCompanyUserIds(list, bo.getUids1());
addAllCompanyUserIds(list, bo.getUids2());
addAllCompanyUserIds(list, bo.getUids3());
return list;
}
private void addAllCompanyUserIds(ArrayList<Long> list, String uids0) {
if (StrUtil.isNotBlank(uids0)) {
List<Long> ids = StrUtil.split(uids0, ",").stream().map(Convert::toLong).collect(Collectors.toList());
list.addAll(ids);
}
}
} }

View File

@ -94,7 +94,6 @@ public interface IEnableMessageDevRuleService extends IService<EnableMessageDevR
/** /**
* 开启就发送系统站内消息 * 开启就发送系统站内消息
*
* @param rule * @param rule
* @param type * @param type
*/ */

View File

@ -14,6 +14,7 @@ import com.zhgd.xmgl.call.api.BroadcastManufacturer;
import com.zhgd.xmgl.call.api.DevSmsManufacturer; import com.zhgd.xmgl.call.api.DevSmsManufacturer;
import com.zhgd.xmgl.call.factory.BroadcastManufacturerFactory; import com.zhgd.xmgl.call.factory.BroadcastManufacturerFactory;
import com.zhgd.xmgl.call.factory.DevSmsManufacturerFactory; import com.zhgd.xmgl.call.factory.DevSmsManufacturerFactory;
import com.zhgd.xmgl.constant.Cts;
import com.zhgd.xmgl.enums.ParamEnum; import com.zhgd.xmgl.enums.ParamEnum;
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
import com.zhgd.xmgl.modules.basicdata.entity.bo.NoticeMessagePromptTone; import com.zhgd.xmgl.modules.basicdata.entity.bo.NoticeMessagePromptTone;
@ -36,10 +37,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalTime; import java.time.LocalTime;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -232,8 +230,19 @@ public class EnableMessageDevRuleServiceImpl extends ServiceImpl<EnableMessageDe
if (Objects.equals(rule.getEnableSystemMessagePromptTone(), 1)) { if (Objects.equals(rule.getEnableSystemMessagePromptTone(), 1)) {
tone = new NoticeMessagePromptTone(rule.getMessagePromptToneConfig(), rule.getPlaybackFrequency()); tone = new NoticeMessagePromptTone(rule.getMessagePromptToneConfig(), rule.getPlaybackFrequency());
} }
String title = "设备报警通知";
String msg = rule.getMessageTemplateContent();
List<Long> companyUsers = systemUserService.getCompanyUserIdsByProjectSn(rule.getProjectSn());
if (CollUtil.isNotEmpty(companyUsers)) {
ids.addAll(companyUsers);
}
List<SystemUser> systemUsers = systemUserService.getSystemUsersBySn(new MapBuilder<String, Object>().put(Cts.SN, rule.getProjectSn()).put(Cts.QUERY_TYPE, Cts.PROJECT_LEVEL).build());
if (CollUtil.isNotEmpty(systemUsers)) {
List<Long> userIdSet = systemUsers.stream().map(SystemUser::getUserId).collect(Collectors.toList());
ids.addAll(userIdSet);
}
for (Long id : ids) { for (Long id : ids) {
noticeService.addUserNoticeAndApp(id, "设备报警通知", rule.getMessageTemplateContent(), type, tone); noticeService.addUserNoticeAndApp(id, title, msg, type, tone);
} }
} }
} }

View File

@ -38,18 +38,18 @@ import com.zhgd.xmgl.modules.project.entity.ProjectJqmDev;
import com.zhgd.xmgl.modules.project.entity.vo.ProjectInfoExtVo; import com.zhgd.xmgl.modules.project.entity.vo.ProjectInfoExtVo;
import com.zhgd.xmgl.modules.project.service.IProjectService; import com.zhgd.xmgl.modules.project.service.IProjectService;
import com.zhgd.xmgl.modules.project.service.ProjectJqmDevService; import com.zhgd.xmgl.modules.project.service.ProjectJqmDevService;
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord; import com.zhgd.xmgl.modules.video.entity.*;
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareRecord;
import com.zhgd.xmgl.modules.video.entity.VideoItem;
import com.zhgd.xmgl.modules.video.entity.WorkerInfoToAiAnalyseHardWareAlarmRecord;
import com.zhgd.xmgl.modules.video.entity.bo.AiAnalyseHardWareAlarmRecordNoticeBo; import com.zhgd.xmgl.modules.video.entity.bo.AiAnalyseHardWareAlarmRecordNoticeBo;
import com.zhgd.xmgl.modules.video.entity.bo.Recent10DayRecordsBo;
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTotalVo; import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTotalVo;
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTrendVo; import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTrendVo;
import com.zhgd.xmgl.modules.video.entity.vo.Recent10DayRecordsVo;
import com.zhgd.xmgl.modules.video.enums.AiAnalyseHardWareAlarmRecordHandleResultEnum; import com.zhgd.xmgl.modules.video.enums.AiAnalyseHardWareAlarmRecordHandleResultEnum;
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper; import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper;
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareRecordMapper; import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareRecordMapper;
import com.zhgd.xmgl.modules.video.mapper.WorkerInfoToAiAnalyseHardWareAlarmRecordMapper; import com.zhgd.xmgl.modules.video.mapper.WorkerInfoToAiAnalyseHardWareAlarmRecordMapper;
import com.zhgd.xmgl.modules.video.service.IAiAnalyseHardWareAlarmRecordService; import com.zhgd.xmgl.modules.video.service.IAiAnalyseHardWareAlarmRecordService;
import com.zhgd.xmgl.modules.video.service.IVideoGroupService;
import com.zhgd.xmgl.modules.video.service.IVideoItemService; import com.zhgd.xmgl.modules.video.service.IVideoItemService;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
@ -142,6 +142,10 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl<AiAnaly
@Autowired @Autowired
private IVideoItemService videoItemService; private IVideoItemService videoItemService;
@Lazy
@Autowired
private IVideoGroupService videoGroupService;
@Override @Override
public IPage<AiAnalyseHardWareAlarmRecord> queryAiAnalyseHardWareAlarmPageList(Map<String, Object> map) { public IPage<AiAnalyseHardWareAlarmRecord> queryAiAnalyseHardWareAlarmPageList(Map<String, Object> map) {
int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString()); int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString());
@ -201,28 +205,36 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl<AiAnaly
// log.info("木垒AI预警转发结果{}", result2); // log.info("木垒AI预警转发结果{}", result2);
// }); // });
// } // }
QueryWrapper<AiAnalyseHardWareRecord> queryWrapper = new QueryWrapper<>(); String projectSn = null;
queryWrapper.lambda().eq(AiAnalyseHardWareRecord::getHardwareId, body.getString("hardwareId"));
AiAnalyseHardWareRecord aiAnalyseHardWareRecord = aiAnalyseHardWareRecordMapper.selectOne(queryWrapper);
if (aiAnalyseHardWareRecord == null) {
throw new OpenAlertException(MessageUtil.get("EquipmentNumIncorrectErr"));
}
AiAnalyseHardWareAlarmRecord aiAnalyseHardWareAlarmRecord = new AiAnalyseHardWareAlarmRecord(); AiAnalyseHardWareAlarmRecord aiAnalyseHardWareAlarmRecord = new AiAnalyseHardWareAlarmRecord();
aiAnalyseHardWareAlarmRecord.setCreateTime(body.getString("datetime"));
aiAnalyseHardWareAlarmRecord.setAlarmType(body.getInteger("type"));
aiAnalyseHardWareAlarmRecord.setHardwareId(aiAnalyseHardWareRecord.getHardwareId());
aiAnalyseHardWareAlarmRecord.setHardwareName(aiAnalyseHardWareRecord.getHardwareName());
aiAnalyseHardWareAlarmRecord.setLocation(body.getString("location"));
try { try {
if(StringUtils.isNotBlank(body.getString("remark"))) { if(StringUtils.isNotBlank(body.getString("remark"))) {
VideoItem videoItem = videoItemService.getOne(Wrappers.<VideoItem>lambdaQuery() VideoItem videoItem = videoItemService.getOne(Wrappers.<VideoItem>lambdaQuery()
.eq(VideoItem::getSerialNumber, body.getString("remark"))); .eq(VideoItem::getSerialNumber, body.getString("remark")));
if (videoItem != null) { if (videoItem != null) {
aiAnalyseHardWareAlarmRecord.setLocation(videoItem.getVideoName()); aiAnalyseHardWareAlarmRecord.setLocation(videoItem.getVideoName());
VideoGroup videoGroup = videoGroupService.getById(videoItem.getGroupId());
projectSn = videoGroup == null ? null : videoGroup.getProjectSn();
aiAnalyseHardWareAlarmRecord.setProjectSn(projectSn);
} }
} }
} catch (Exception e) {} } catch (Exception e) {}
aiAnalyseHardWareAlarmRecord.setProjectSn(aiAnalyseHardWareRecord.getProjectSn()); QueryWrapper<AiAnalyseHardWareRecord> queryWrapper = new QueryWrapper<>();
if (projectSn != null) {
queryWrapper.lambda().eq(AiAnalyseHardWareRecord::getProjectSn, projectSn);
}
queryWrapper.lambda().eq(AiAnalyseHardWareRecord::getHardwareId, body.getString("hardwareId"));
AiAnalyseHardWareRecord aiAnalyseHardWareRecord = aiAnalyseHardWareRecordMapper.selectOne(queryWrapper);
if (aiAnalyseHardWareRecord == null) {
throw new OpenAlertException(MessageUtil.get("EquipmentNumIncorrectErr"));
}
aiAnalyseHardWareAlarmRecord.setCreateTime(body.getString("datetime"));
aiAnalyseHardWareAlarmRecord.setAlarmType(body.getInteger("type"));
aiAnalyseHardWareAlarmRecord.setHardwareId(aiAnalyseHardWareRecord.getHardwareId());
aiAnalyseHardWareAlarmRecord.setHardwareName(aiAnalyseHardWareRecord.getHardwareName());
aiAnalyseHardWareAlarmRecord.setLocation(body.getString("location"));
// aiAnalyseHardWareAlarmRecord.setProjectSn(aiAnalyseHardWareRecord.getProjectSn());
aiAnalyseHardWareAlarmRecord.setStatus(1); aiAnalyseHardWareAlarmRecord.setStatus(1);
if (StringUtils.isNotEmpty(body.getString(IMAGE))) { if (StringUtils.isNotEmpty(body.getString(IMAGE))) {
String base64data = ""; String base64data = "";
@ -755,6 +767,30 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl<AiAnaly
baseMapper.updateById(taskProgressMaterialRel); baseMapper.updateById(taskProgressMaterialRel);
} }
@Override
public List<Recent10DayRecordsVo> getRecent10DayRecords(Map<String, Object> param) {
List<Recent10DayRecordsBo> records = baseMapper.getRecent10DayRecords(param);
// 按日期分组
Map<String, List<AiAnalyseHardWareAlarmRecord>> groupedRecords = records.stream()
.collect(Collectors.groupingBy(
Recent10DayRecordsBo::getDate,
LinkedHashMap::new, // 保持日期顺序
Collectors.mapping(bo -> {
return BeanUtil.toBean(bo, AiAnalyseHardWareAlarmRecord.class);
}, Collectors.toList())
));
// 转换为 Vo 对象
return groupedRecords.entrySet().stream()
.map(entry -> {
Recent10DayRecordsVo vo = new Recent10DayRecordsVo();
vo.setDate(entry.getKey());
vo.setRecords(entry.getValue());
return vo;
})
.collect(Collectors.toList());
}
private Integer getAlarmType(Integer algorithmId) { private Integer getAlarmType(Integer algorithmId) {
/* /*
4 行人闯入 4 行人闯入

View File

@ -66,7 +66,7 @@ mqtt.username=admin
mqtt.password=public mqtt.password=public
#mqtt.url=tcp://139.159.226.224:1883 #mqtt.url=tcp://139.159.226.224:1883
#mqtt.url=ws://139.159.226.224:8083/mqtt #mqtt.url=ws://139.159.226.224:8083/mqtt
mqtt.url=tcp://jxj.zhgdyun.com:1883 mqtt.url=wss://gszhdz.crpower.com.cn:8084/mqtt
# 消费者和提供者对应的客户端id以及默认topic # 消费者和提供者对应的客户端id以及默认topic
mqtt.producer.clientId=mqttProd0729 mqtt.producer.clientId=mqttProd0729
mqtt.producer.defaultTopic=topic1 mqtt.producer.defaultTopic=topic1