优化系统bug和新增逻辑
This commit is contained in:
parent
aa6c627228
commit
3044462c09
@ -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) {
|
||||
// 异常处理:记录详细日志
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
// 提交异步任务
|
||||
|
@ -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 =
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user