优化系统bug和新增逻辑

This commit is contained in:
weitang 2025-05-19 18:32:47 +08:00
parent aa6c627228
commit 3044462c09
13 changed files with 98 additions and 37 deletions

View File

@ -18,6 +18,7 @@ import com.yfd.platform.modules.basedata.mapper.VoicePatrolLogMapper;
import com.yfd.platform.utils.ExecutionJob;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@ -46,6 +47,8 @@ public class VoiceServerServiceImpl implements VoiceServerService {
private HttpServerConfig httpServerConfig;
@Resource
private VoicePatrolLogMapper voicePatrolLogMapper;
@Resource
private RedisTemplate<String, String> redisTemplate;
@Override
public boolean sendVoiceServerControl(String ID, String actionPower, String fileName) {
@ -120,6 +123,7 @@ public class VoiceServerServiceImpl implements VoiceServerService {
);
// 保存日志
voicePatrolLogMapper.insert(log);
redisTemplate.delete(device.getPatroldeviceId());
});
} catch (Exception e) {
// 异常处理记录详细日志

View File

@ -101,8 +101,8 @@ public class AlgorithmDeviceServiceImpl extends ServiceImpl<AlgorithmDeviceMappe
Map<String, List<DeviceWorkData>> collect =
deviceWorkDataList.stream().collect(Collectors.groupingBy(DeviceWorkData::getSignalId));
for (String signalId : collect.keySet()) {
List<DeviceWorkData> deviceWorkDataGroup = collect.get(signalId);
for (String signalId : signalIdList) {
List<DeviceWorkData> deviceWorkDataGroup = collect.getOrDefault(signalId, Collections.emptyList());
Map<String, Object> map = processSignalData(deviceWorkDataGroup, signalId);
deviceDataList.add(map);
}

View File

@ -15,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@ -131,5 +133,10 @@ public class DeviceWorkDataController {
return ResponseResult.success();
}
@GetMapping("/exportDeviceWorkData")
@ApiOperation("导出环境历史数据")
public void exportDeviceWorkData(String stationId, String signalId,String startDate,String endDate, HttpServletResponse response) throws IOException {
deviceWorkDataService.exportDeviceWorkData(stationId,signalId,startDate,endDate, response);
}
}

View File

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yfd.platform.modules.auxcontrol.domain.DeviceWorkData;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@ -55,4 +57,6 @@ public interface IDeviceWorkDataService extends IService<DeviceWorkData> {
List<Map<String, Object>> getDeviceWorkData(String stationId);
void exportDeviceWorkData(String stationId,String signalId, String startDate, String endDate, HttpServletResponse response) throws IOException;
}

View File

@ -3,19 +3,23 @@ package com.yfd.platform.modules.auxcontrol.service.impl;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yfd.platform.modules.auxcontrol.domain.DeviceWorkData;
import com.yfd.platform.modules.auxcontrol.mapper.DeviceSignalMapper;
import com.yfd.platform.modules.auxcontrol.mapper.DeviceWorkDataMapper;
import com.yfd.platform.modules.auxcontrol.service.IDeviceWorkDataService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yfd.platform.utils.FileUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -101,7 +105,26 @@ public class DeviceWorkDataServiceImpl extends ServiceImpl<DeviceWorkDataMapper,
@Override
public List<Map<String, Object>> getDeviceWorkData(String stationId) {
return deviceWorkDataMapper.getDeviceWorkData(stationId);
return deviceWorkDataMapper.getDeviceWorkData(stationId);
}
@Override
public void exportDeviceWorkData(String stationId,String signalId, String startDate, String endDate, HttpServletResponse response) throws IOException {
LambdaQueryWrapper<DeviceWorkData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DeviceWorkData::getSignalId,signalId).eq(DeviceWorkData::getStationId, stationId).le(DeviceWorkData::getStartTime, endDate).ge(DeviceWorkData::getStartTime, startDate).select(DeviceWorkData::getStartTime, DeviceWorkData::getValue, DeviceWorkData::getUnit).orderByDesc(DeviceWorkData::getStartTime);
List<DeviceWorkData> list = this.list(queryWrapper);
List<Map<String, Object>> listMaps = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = new LinkedHashMap<>();
DeviceWorkData deviceWorkData = list.get(i);
map.put("序号", (i + 1));
map.put("采集时间", deviceWorkData.getStartTime());
map.put("监测数值", deviceWorkData.getValue());
map.put("单位", deviceWorkData.getUnit());
listMaps.add(map);
}
FileUtil.downloadExcel(listMaps, response);
}
}

View File

@ -895,7 +895,8 @@ public class SubstationPatroldeviceController {
map.remove("14");
List<GatewayDevice> gatewayDevices =
gatewayDeviceService.list(new LambdaQueryWrapper<GatewayDevice>().ne(GatewayDevice::getStatus, "00"));
gatewayDeviceService.list(new LambdaQueryWrapper<GatewayDevice>().eq(GatewayDevice::getStationId,
stationId).ne(GatewayDevice::getStatus, "00"));
if (gatewayDevices.size() <= 0) {
Map<String, Object> map1 = new HashMap<>();
map1.put("allCount", 0);

View File

@ -16,6 +16,7 @@ import com.yfd.platform.modules.basedata.service.IVoicePatrolLogService;
import com.yfd.platform.utils.HttpRESTfulUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@ -25,6 +26,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* <p>
@ -38,6 +40,9 @@ import java.util.Map;
@RequestMapping("/basedata/voice-patrol-log")
@Api(value = "VoicePatrolLogController", tags = "声纹巡视数据")
public class VoicePatrolLogController {
@Resource
private RedisTemplate<String, String> redisTemplate;
@Resource
private IVoicePatrolLogService voicePatrolLogService;
@Resource
@ -96,6 +101,11 @@ public class VoicePatrolLogController {
if (substationPatroldevice == null) {
return ResponseResult.error("当前设备不存在");
}
Boolean aBoolean = redisTemplate.hasKey(id);
if (aBoolean != null && aBoolean) {
throw new RuntimeException("当前设备正在录制");
}
redisTemplate.opsForValue().set(id, "1", 5 * 60);
// 生成日志对象基础信息同步执行
VoicePatrolLog log = buildBaseLog(substationPatroldevice, duration);
// 提交异步任务

View File

@ -57,7 +57,8 @@ public class SubstationMaindeviceServiceImpl extends ServiceImpl<SubstationMaind
private SubstationMapper substationMapper;
@Resource
private SubstationAreaMapper substationAreaMapper;
@Resource
private SubstationDeviceMapper substationDeviceMapper;
@Resource
private ISysDictionaryService sysDictionaryService;
@ -253,6 +254,12 @@ public class SubstationMaindeviceServiceImpl extends ServiceImpl<SubstationMaind
if ("1".equals(substationComponent.getDatastatus())) {
return false;
}
LambdaQueryWrapper<SubstationDevice> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SubstationDevice::getComponentId, componentId);
Integer integer = substationDeviceMapper.selectCount(queryWrapper);
if (integer > 0) {
throw new RuntimeException("当前部件已经绑定点位无法删除");
}
int i = substationComponentMapper.deleteById(componentId);
String mainDeviceId = substationComponent.getMainDeviceId();
List<SubstationComponent> list =

View File

@ -1174,7 +1174,9 @@ public class AlarmLogServiceImpl extends ServiceImpl<AlarmLogMapper, AlarmLog> i
if (ObjectUtil.isNotEmpty(alarmLog.get("deviceid"))) {
Map<String, String> thresholdInterval = alarmThresholdService.getThresholdInterval(alarmLog.get("deviceId"
).toString());
alarmLog.putAll(thresholdInterval);
if (thresholdInterval != null) {
alarmLog.putAll(thresholdInterval);
}
}
return alarmLog;
@ -1934,6 +1936,7 @@ public class AlarmLogServiceImpl extends ServiceImpl<AlarmLogMapper, AlarmLog> i
if (!"0".equals(parentid)) {
WebSocketServer.sendInfo(parentid, jsonObject.toString());
}
WebSocketServer.sendInfo("check_" + alarmLog.getStationId(), jsonObject.toString());
WebSocketServer.sendInfo(stationId, jsonObject.toString());
// this.sendTaskData("62", "", alarmLog.getStationCode(), alarmData.toString());
return true;

View File

@ -5,6 +5,7 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.yfd.platform.annotation.Log;
import com.yfd.platform.config.ResponseResult;
@ -233,11 +234,15 @@ public class SysRoleController {
@ResponseBody
public ResponseResult setOrgscope(@RequestParam String id,
@RequestParam String orgscope) {
UpdateWrapper<SysRole> updateWrapper = new UpdateWrapper<>();
List<String> orgCodeList = StrUtil.split(orgscope, ",");
if (orgCodeList.size() > 1) {
return ResponseResult.error("一个用户只能绑定一个站点");
}
LambdaUpdateWrapper<SysRole> updateWrapper = new LambdaUpdateWrapper<>();
//根据id 更新组织范围最近修改人最近修改时间
updateWrapper.eq("id", id).set("orgscope", orgscope).set(
"lastmodifier", userService.getUsername()).set(
"lastmodifydate", LocalDateTime.now());
updateWrapper.eq(SysRole::getId, id).set(SysRole::getOrgscope, orgscope).set(
SysRole::getLastmodifier, userService.getUsername()).set(
SysRole::getLastmodifydate, LocalDateTime.now());
boolean ok = roleService.update(updateWrapper);
if (ok) {
return ResponseResult.success();

View File

@ -205,19 +205,12 @@ public class SysOrganizationServiceImpl extends ServiceImpl<SysOrganizationMappe
if (userInfo.getUsertype() != 0) {
List<SysRole> roleByUserId =
sysRoleMapper.getRoleByUserId(userInfo.getId());
List<String> ids = new ArrayList<>();
// 循环当前角色
for (SysRole sysRole : roleByUserId) {
// 获取角色的组织Id
String orgscope = sysRole.getOrgscope();
if (StrUtil.isBlank(orgscope)) {
continue;
}
// 拆分组织Id
String[] split = orgscope.split(",");
List<String> stringList = Arrays.asList(split);
ids.addAll(stringList);
}
List<String> ids = roleByUserId.stream()
.map(SysRole::getOrgscope) // 提取所有角色的 orgscope 字段
.filter(StrUtil::isNotBlank) // 过滤空字符串
.flatMap(orgscope -> Arrays.stream(orgscope.split(","))) // 拆分并扁平化处理
.distinct() // 去重
.collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(ids)) {
queryWrapper.in(SysOrganization::getId, ids);
}

View File

@ -6,12 +6,12 @@
SELECT
device_id,
MAX(CASE WHEN (alarm_level = '2' AND decide_rule ='6') THEN base_line_value ELSE NULL END) AS commonLower,
MAX(CASE WHEN (alarm_level = '2' AND decide_rule ='7') THEN base_line_value ELSE NULL END) AS commonUpper,
MAX(CASE WHEN (alarm_level = '3' AND decide_rule ='6') THEN base_line_value ELSE NULL END) AS seriousLower,
MAX(CASE WHEN (alarm_level = '3' AND decide_rule ='7') THEN base_line_value ELSE NULL END) AS seriousUpper,
MAX(CASE WHEN (alarm_level = '4' AND decide_rule ='6') THEN base_line_value ELSE NULL END) AS dangerLower,
MAX(CASE WHEN (alarm_level = '4' AND decide_rule ='7') THEN base_line_value ELSE NULL END) AS dangerUpper
MAX(CASE WHEN (alarm_level = '1' AND decide_rule ='6') THEN base_line_value ELSE NULL END) AS commonLower,
MAX(CASE WHEN (alarm_level = '1' AND decide_rule ='7') THEN base_line_value ELSE NULL END) AS commonUpper,
MAX(CASE WHEN (alarm_level = '2' AND decide_rule ='6') THEN base_line_value ELSE NULL END) AS seriousLower,
MAX(CASE WHEN (alarm_level = '2' AND decide_rule ='7') THEN base_line_value ELSE NULL END) AS seriousUpper,
MAX(CASE WHEN (alarm_level = '3' AND decide_rule ='6') THEN base_line_value ELSE NULL END) AS dangerLower,
MAX(CASE WHEN (alarm_level = '3' AND decide_rule ='7') THEN base_line_value ELSE NULL END) AS dangerUpper
FROM
iis_alarm_threshold
WHERE device_id = #{deviceId}

View File

@ -105,14 +105,18 @@
</select>
<select id="getNotCheckAlarmCount" resultType="com.yfd.platform.modules.patroltask.domain.AlarmLog">
SELECT
id,
main_device_id,
component_id,
alarm_source_type
al.*,
al.device_id deviceid,
tr.patroldevice_code deviceId,
tr.patroldevice_channelcode channelId,
tr.patroldevice_pos patroldevicePos
FROM
iis_alarm_log
iis_alarm_log al
LEFT JOIN iis_task_result tr ON al.task_result_id = tr.result_id
WHERE
station_id = #{stationId}
check_flag = '0'
AND task_alarm_type != '4'
AND station_id = #{stationId}
</select>
<select id="getAlarmLogPage" resultType="java.util.Map">
SELECT