This commit is contained in:
2026-07-09 08:40:32 +08:00
parent caf4e2c415
commit 8f7a35e3c7
44 changed files with 1328 additions and 188 deletions

View File

@@ -1 +1,125 @@
package com.maibu.controller;
package com.maibu.controller;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.maibu.annotation.Log;
import com.maibu.core.business.alarm_center.Alarm;
import com.maibu.core.business.dto.AlarmHandleDTO;
import com.maibu.core.business.dto.AlarmQueryDTO;
import com.maibu.core.controller.BaseController;
import com.maibu.core.domain.AjaxResult;
import com.maibu.core.page.TableDataInfo;
import com.maibu.enums.BusinessType;
import com.maibu.service.IAlarmService;
import com.maibu.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@Api("告警中心接口")
@RestController
@Slf4j
@RequestMapping("/iot/alarm")
public class AlarmController extends BaseController{
@Autowired
private IAlarmService alarmService;
// @PreAuthorize("@ss.hasPermi('iot:alarm:list')")
@GetMapping("/list")
@ApiOperation("告警分页列表")
public TableDataInfo list(AlarmQueryDTO queryDTO) {
// startPage();
// return alarmService.selectAlarmPage(queryDTO);
return alarmService.selectAlarmPage(queryDTO);
}
// @PreAuthorize("@ss.hasPermi('iot:alarm:query')")
@GetMapping("/{id}")
@ApiOperation("获取告警详情")
public AjaxResult getInfo(@PathVariable Long id) {
return AjaxResult.success(alarmService.selectAlarmById(id));
}
// @PreAuthorize("@ss.hasPermi('iot:alarm:add')")
@Log(title = "告警", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("新增告警")
public AjaxResult add(@RequestBody Alarm alarm) {
return toAjax(alarmService.insertAlarm(alarm));
}
// @PreAuthorize("@ss.hasPermi('iot:alarm:edit')")
@Log(title = "告警", businessType = BusinessType.UPDATE)
@PutMapping
@ApiOperation("修改告警")
public AjaxResult edit(@RequestBody Alarm alarm) {
return toAjax(alarmService.updateAlarm(alarm));
}
//@PreAuthorize("@ss.hasPermi('iot:alarm:handle')")
@Log(title = "告警处理", businessType = BusinessType.UPDATE)
@PutMapping("/handle")
@ApiOperation("处理告警")
public AjaxResult handle(@RequestBody AlarmHandleDTO handleDTO) {
return toAjax(alarmService.handleAlarm(handleDTO));
}
// @PreAuthorize("@ss.hasPermi('iot:alarm:remove')")
@Log(title = "告警", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
@ApiOperation("删除告警")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(alarmService.deleteAlarmByIds(ids));
}
// @PreAuthorize("@ss.hasPermi('iot:alarm:statistics')")
// @GetMapping("/statistics")
// @ApiOperation("告警统计")
// public AjaxResult statistics() {
// Map<String, Object> statistics = alarmService.getAlarmStatistics();
// return AjaxResult.success(statistics);
// }
@GetMapping("/statistics")
@ApiOperation("告警统计")
public AjaxResult statistics(AlarmQueryDTO queryDTO) {
Map<String, Object> statistics = alarmService.getAlarmStatistics(queryDTO);
return AjaxResult.success(statistics);
}
// @PreAuthorize("@ss.hasPermi('iot:alarm:export')")
@Log(title = "告警", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ApiOperation("导出告警")
public void export(HttpServletResponse response, AlarmQueryDTO queryDTO) {
try {
List<Alarm> list = alarmService.selectAlarmList(queryDTO);
ExcelUtil<Alarm> util = new ExcelUtil<>(Alarm.class);
util.exportExcel(response, list, "告警数据");
} catch (Exception e) {
log.error("导出告警失败", e);
}
}
}

View File

@@ -0,0 +1,49 @@
package com.maibu.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.maibu.core.business.DeviceRunParam;
import com.maibu.core.controller.BaseController;
import com.maibu.core.domain.AjaxResult;
import com.maibu.core.page.TableDataInfo;
import com.maibu.dto.DeviceRunParamQueryDTO;
import com.maibu.service.impl.DeviceRunParamService;
@RestController
@RequestMapping("/iot/deviceRunParam")
public class DeviceRunParamController extends BaseController {
@Autowired
private DeviceRunParamService service;
@PostMapping("/save")
public AjaxResult save(@RequestBody DeviceRunParam deviceRunParam) {
return AjaxResult.success(service.save(deviceRunParam));
}
@PostMapping("/list")
public TableDataInfo list(@RequestBody DeviceRunParamQueryDTO dto) {
startPage();
return getDataTable(service.list(dto));
}
@GetMapping("/selectByDeviceId")
public AjaxResult selectByDeviceId(@RequestParam String deviceId) {
return AjaxResult.success(service.selectByDeviceId(deviceId));
}
@PostMapping("/delete")
public AjaxResult delete(@RequestBody List<Long> ids) {
return AjaxResult.success(service.delete(ids));
}
}

View File

@@ -0,0 +1,43 @@
package com.maibu.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.maibu.core.business.ErrorIdentificationStandard;
import com.maibu.core.controller.BaseController;
import com.maibu.core.domain.AjaxResult;
import com.maibu.core.page.TableDataInfo;
import com.maibu.dto.ErrorQueryDTO;
import com.maibu.service.impl.ErrorIdentificationService;
@RestController
@RequestMapping("/iot/errorIdentification")
public class ErrorIdentificationController extends BaseController {
@Autowired
private ErrorIdentificationService service;
@PostMapping("/save")
public AjaxResult save(@RequestBody ErrorIdentificationStandard error) {
return AjaxResult.success(service.save(error));
}
@PostMapping("/list")
public TableDataInfo list(@RequestBody ErrorQueryDTO dto) {
startPage();
return getDataTable(service.list(dto));
}
@PostMapping("/delete")
public AjaxResult delete(@RequestBody List<Long> ids) {
return AjaxResult.success(service.delete(ids));
}
}

View File

@@ -1,5 +1,20 @@
package com.maibu.controller;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.maibu.annotation.Log;
import com.maibu.core.business.IOTWorkOrder;
import com.maibu.core.business.dto.WorkOrderDispatchDTO;
@@ -10,16 +25,10 @@ import com.maibu.core.page.TableDataInfo;
import com.maibu.enums.BusinessType;
import com.maibu.service.IWorkOrderService;
import com.maibu.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@Api("工单任务接口")
@RestController

View File

@@ -1,20 +1,25 @@
package com.maibu.controller;
import java.io.InputStream;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.maibu.core.business.WorkRecord;
import com.maibu.core.business.path.LatAndLngEntity;
import com.maibu.core.controller.BaseController;
import com.maibu.core.domain.R;
import com.maibu.service.impl.WorkRecordService;
import com.maibu.utils.MinioUtil;
import com.maibu.utils.json.JsonUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.http.MediaType;
import java.io.InputStream;
import java.util.List;
@RestController
@RequestMapping("/iot/workRecord")

View File

@@ -0,0 +1,11 @@
package com.maibu.dto;
import com.maibu.core.domain.BaseEntity;
import lombok.Data;
@Data
public class DeviceRunParamQueryDTO extends BaseEntity {
private Long siteId;
private String deviceId;
}

View File

@@ -0,0 +1,15 @@
package com.maibu.dto;
import com.maibu.core.domain.BaseEntity;
import com.maibu.core.enums.ErrorLevel;
import com.maibu.core.enums.ErrorSource;
import lombok.Data;
@Data
public class ErrorQueryDTO extends BaseEntity {
private String errorName;
private ErrorSource errorSource;
private String errorCode;
private ErrorLevel errorLevel;
}

View File

@@ -1 +1,11 @@
package com.maibu.mapper;
package com.maibu.mapper;
import org.apache.ibatis.annotations.Mapper;
import com.maibu.core.business.alarm_center.Alarm;
import com.maibu.mybatis.mapper.BaseMapperX;
@Mapper
public interface AlarmMapper extends BaseMapperX<Alarm> {
}

View File

@@ -5,20 +5,31 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.maibu.core.business.Device;
import com.maibu.core.business.alarm_center.Alarm;
import com.maibu.core.business.alarm_center.AlarmMessage;
import com.maibu.core.business.device.NettyDevice;
import com.maibu.core.business.dto.AlarmHandleDTO;
import com.maibu.core.business.dto.AlarmQueryDTO;
import com.maibu.core.domain.model.LoginUser;
import com.maibu.core.enums.ErrorSource;
import com.maibu.core.page.TableDataInfo;
import com.maibu.exception.ServiceException;
import com.maibu.mapper.AlarmMapper;
import com.maibu.mapper.DeviceMapper;
import com.maibu.memory.GlobalMemory;
import com.maibu.mqtt.MqttTopic;
import com.maibu.service.IAlarmService;
import com.maibu.utils.SecurityUtils;
import com.maibu.utils.StringUtils;
import com.maibu.utils.json.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -26,9 +37,9 @@ import java.util.Map;
import java.util.stream.Collectors;
@Service
@Slf4j
public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements IAlarmService {
@Autowired
private DeviceMapper deviceMapper;
@@ -55,7 +66,6 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
return baseMapper.selectList(wrapper);
}
@Override
public Map<String, Object> getAlarmStatistics(AlarmQueryDTO queryDTO) {
com.github.pagehelper.PageHelper.clearPage();
@@ -69,14 +79,14 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
statistics.put("processing", alarms.stream().filter(a -> a.getHandleStatus() == 2).count());
statistics.put("closed", alarms.stream().filter(a -> a.getHandleStatus() == 3).count());
statistics.put("levelStats", alarms.stream().collect(Collectors.groupingBy(Alarm::getAlarmLevel, Collectors.counting())));
statistics.put("typeStats", alarms.stream().collect(Collectors.groupingBy(Alarm::getAlarmType, Collectors.counting())));
statistics.put("levelStats",
alarms.stream().collect(Collectors.groupingBy(Alarm::getAlarmLevel, Collectors.counting())));
statistics.put("typeStats",
alarms.stream().collect(Collectors.groupingBy(Alarm::getAlarmType, Collectors.counting())));
return statistics;
}
private void validateQueryParams(AlarmQueryDTO queryDTO) {
Long userId = SecurityUtils.getUserId();
if (SecurityUtils.isAdmin(userId)) {
@@ -93,10 +103,12 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
}
private void validateSiteAccess(Long siteId) {
if (siteId == null) return;
if (siteId == null)
return;
Long userId = SecurityUtils.getUserId();
if (SecurityUtils.isAdmin(userId)) return;
if (SecurityUtils.isAdmin(userId))
return;
LoginUser loginUser = SecurityUtils.getLoginUser();
Long userSiteId = loginUser.getSiteId();
@@ -116,8 +128,7 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
Long count = deviceMapper.selectCount(
new LambdaQueryWrapper<Device>()
.eq(Device::getSiteId, siteId)
.eq(Device::getOrgId, userOrgId)
);
.eq(Device::getOrgId, userOrgId));
if (count == 0) {
// 如果查不到设备,说明要么场站无设备,要么场站不属于该组织
// 这里为了安全,默认拦截。如果允许查空场站,需改为校验 SysSite 表
@@ -128,17 +139,18 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
}
}
private void validateDeviceAccess(Long deviceId) {
if (deviceId == null) return;
private void validateDeviceAccess(String deviceId) {
if (deviceId == null)
return;
Long userId = SecurityUtils.getUserId();
if (SecurityUtils.isAdmin(userId)) return;
if (SecurityUtils.isAdmin(userId))
return;
Device device = deviceMapper.selectOne(
new LambdaQueryWrapper<Device>()
.eq(Device::getDeviceId, deviceId)
.select(Device::getOrgId, Device::getSiteId)
);
.select(Device::getOrgId, Device::getSiteId));
if (device == null) {
throw new ServiceException("设备不存在");
@@ -175,9 +187,11 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
}
wrapper.exists(sql, queryDTO.getSiteId());
} else if (userSiteId != null) {
wrapper.exists("SELECT 1 FROM iot_device d WHERE d.device_id = iot_alarm.device_id AND d.site_id = {0}", userSiteId);
wrapper.exists("SELECT 1 FROM iot_device d WHERE d.device_id = iot_alarm.device_id AND d.site_id = {0}",
userSiteId);
} else if (userOrgId != null) {
wrapper.exists("SELECT 1 FROM iot_device d WHERE d.device_id = iot_alarm.device_id AND d.org_id = {0}", userOrgId);
wrapper.exists("SELECT 1 FROM iot_device d WHERE d.device_id = iot_alarm.device_id AND d.org_id = {0}",
userOrgId);
}
}
@@ -196,12 +210,12 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
if (queryDTO.getHandleStatus() != null) {
wrapper.eq(Alarm::getHandleStatus, queryDTO.getHandleStatus());
}
// if (queryDTO.getStartTime() != null) {
// wrapper.ge(Alarm::getAlarmTime, queryDTO.getStartTime());
// }
// if (queryDTO.getEndTime() != null) {
// wrapper.le(Alarm::getAlarmTime, queryDTO.getEndTime());
// }
// if (queryDTO.getStartTime() != null) {
// wrapper.ge(Alarm::getAlarmTime, queryDTO.getStartTime());
// }
// if (queryDTO.getEndTime() != null) {
// wrapper.le(Alarm::getAlarmTime, queryDTO.getEndTime());
// }
if (queryDTO.getStartTime() != null) {
wrapper.ge(Alarm::getAlarmTime, queryDTO.getStartTime());
@@ -222,7 +236,8 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
@Override
public Alarm selectAlarmById(Long id) {
Alarm alarm = baseMapper.selectById(id);
if (alarm == null) throw new ServiceException("告警不存在");
if (alarm == null)
throw new ServiceException("告警不存在");
Long userId = SecurityUtils.getUserId();
if (!SecurityUtils.isAdmin(userId) && alarm.getDeviceId() != null) {
@@ -258,7 +273,8 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
@Override
public int handleAlarm(AlarmHandleDTO handleDTO) {
Alarm alarm = baseMapper.selectById(handleDTO.getAlarmId());
if (alarm == null) throw new ServiceException("告警不存在");
if (alarm == null)
throw new ServiceException("告警不存在");
Long userId = SecurityUtils.getUserId();
if (!SecurityUtils.isAdmin(userId) && alarm.getDeviceId() != null) {
@@ -307,7 +323,7 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
@Override
public Map<String, Object> getAlarmStatistics() {
com.github.pagehelper.PageHelper.clearPage(); // 清除可能的分页参数
com.github.pagehelper.PageHelper.clearPage(); // 清除可能的分页参数
Long userId = SecurityUtils.getUserId();
LoginUser loginUser = SecurityUtils.getLoginUser();
Long userOrgId = loginUser.getOrgId();
@@ -316,9 +332,11 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
LambdaQueryWrapper<Alarm> wrapper = new LambdaQueryWrapper<>();
if (!SecurityUtils.isAdmin(userId)) {
if (userSiteId != null) {
wrapper.exists("SELECT 1 FROM iot_device d WHERE d.device_id = iot_alarm.device_id AND d.site_id = {0}", userSiteId);
wrapper.exists("SELECT 1 FROM iot_device d WHERE d.device_id = iot_alarm.device_id AND d.site_id = {0}",
userSiteId);
} else if (userOrgId != null) {
wrapper.exists("SELECT 1 FROM iot_device d WHERE d.device_id = iot_alarm.device_id AND d.org_id = {0}", userOrgId);
wrapper.exists("SELECT 1 FROM iot_device d WHERE d.device_id = iot_alarm.device_id AND d.org_id = {0}",
userOrgId);
}
}
wrapper.ge(Alarm::getAlarmTime, LocalDateTime.now().minusDays(7));
@@ -330,9 +348,50 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
statistics.put("processing", alarms.stream().filter(a -> a.getHandleStatus() == 2).count());
statistics.put("closed", alarms.stream().filter(a -> a.getHandleStatus() == 3).count());
statistics.put("levelStats", alarms.stream().collect(Collectors.groupingBy(Alarm::getAlarmLevel, Collectors.counting())));
statistics.put("typeStats", alarms.stream().collect(Collectors.groupingBy(Alarm::getAlarmType, Collectors.counting())));
statistics.put("levelStats",
alarms.stream().collect(Collectors.groupingBy(Alarm::getAlarmLevel, Collectors.counting())));
statistics.put("typeStats",
alarms.stream().collect(Collectors.groupingBy(Alarm::getAlarmType, Collectors.counting())));
return statistics;
}
public void pushAlertMes(List<AlarmMessage> alarmMessages) {
if (alarmMessages == null || alarmMessages.isEmpty()) {
return;
}
List<Alarm> list = new ArrayList<>();
for (AlarmMessage alarmMessage : alarmMessages) {
Alarm alarm = new Alarm();
alarm.setAlarmNo(alarmMessage.getNo());
alarm.setAlarmLevel(alarmMessage.getLevel());
alarm.setAlarmType(1);
alarm.setAlarmTitle(alarmMessage.getName());
alarm.setAlarmContent(alarmMessage.getContent());
alarm.setDeviceId(alarmMessage.getDeviceName());
alarm.setDeviceName(alarmMessage.getDeviceName());
alarm.setDeviceType(ErrorSource.MOWER);
alarm.setAlarmTime(LocalDateTime.now());
pushErrorMessage(alarmMessage.getDeviceName(), JsonUtils.toJsonString(alarm));
list.add(alarm);
}
baseMapper.insertBatch(list);
// todo 推送websocket?
}
public void pushErrorMessage(String deviceId, String dto) {
try {
GlobalMemory.mqttClientUtil.publish(String.format(MqttTopic.DEVICE_ERROR_PUSH_TOPIC, deviceId), dto);
// List<NettyDevice> controlMasters = sessionManager.getAllSlaveControl(deviceId);
// if (!CollectionUtils.isEmpty(controlMasters)) {
// controlMasters.forEach(x -> {
// websocketMesDispather.dispather(x.getConnectorId(), dto);
// log.info("推送错误信息 device:{},content:{}", deviceId, dto);
// });
// }
} catch (MqttException e) {
log.error("推送错误信息失败 device:{}error:{}", deviceId, e.getMessage());
}
}
}

View File

@@ -0,0 +1,67 @@
package com.maibu.service.impl;
import java.util.Collection;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.maibu.core.business.DeviceRunParam;
import com.maibu.dto.DeviceRunParamQueryDTO;
import com.maibu.mapper.DeviceRunParamMapper;
import com.maibu.memory.GlobalMemory;
import com.maibu.memory.SiteMemory;
@Service
public class DeviceRunParamService {
@Autowired
private DeviceRunParamMapper deviceRunParamMapper;
public boolean save(DeviceRunParam deviceRunParam) {
SiteMemory siteMemory = GlobalMemory.getSiteMemory(deviceRunParam.getOrgId(), deviceRunParam.getSiteId());
if (siteMemory != null) {
siteMemory.saveDeviceRunParam(deviceRunParam);
}
return deviceRunParamMapper.saveOrUpdate(deviceRunParam);
}
public List<DeviceRunParam> list(DeviceRunParamQueryDTO dto) {
LambdaQueryWrapper<DeviceRunParam> queryWrapper = new LambdaQueryWrapper<>();
if (dto != null) {
if (dto.getSiteId() != null) {
queryWrapper.eq(DeviceRunParam::getSiteId, dto.getSiteId());
}
if (StringUtils.isEmpty(dto.getDeviceId())) {
queryWrapper.eq(DeviceRunParam::getDeviceId, dto.getDeviceId());
}
}
return deviceRunParamMapper.selectList(queryWrapper);
}
public DeviceRunParam selectByDeviceId(String deviceId) {
LambdaQueryWrapper<DeviceRunParam> queryWrapper = new LambdaQueryWrapper<>();
if (!StringUtils.isEmpty(deviceId)) {
queryWrapper.eq(DeviceRunParam::getDeviceId, deviceId);
}
return deviceRunParamMapper.selectOne(queryWrapper);
}
public int delete(List<Long> ids) {
List<DeviceRunParam> deviceRunParams = deviceRunParamMapper.selectBatchIds(ids);
if (!CollectionUtils.isEmpty(deviceRunParams)) {
deviceRunParams.forEach(x -> {
SiteMemory siteMemory = GlobalMemory.getSiteMemory(x.getOrgId(), x.getSiteId());
if (siteMemory != null) {
siteMemory.removeDeviceRunParam(x.getDeviceId());
}
});
}
int i = deviceRunParamMapper.deleteBatchIds(ids);
return i;
}
}

View File

@@ -0,0 +1,48 @@
package com.maibu.service.impl;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.maibu.core.business.ErrorIdentificationStandard;
import com.maibu.dto.ErrorQueryDTO;
import com.maibu.mapper.ErrorIdentificationStandardMapper;
@Service
public class ErrorIdentificationService {
@Autowired
private ErrorIdentificationStandardMapper errorIdentificationStandardMapper;
public boolean save(ErrorIdentificationStandard errorIdentificationStandard) {
return errorIdentificationStandardMapper.saveOrUpdate(errorIdentificationStandard);
}
public List<ErrorIdentificationStandard> list(ErrorQueryDTO dto) {
LambdaQueryWrapper<ErrorIdentificationStandard> queryWrapper = new LambdaQueryWrapper<>();
if (dto != null) {
if (!StringUtils.isEmpty(dto.getErrorCode())) {
queryWrapper.eq(ErrorIdentificationStandard::getErrorCode, dto.getErrorCode());
}
if (!StringUtils.isEmpty(dto.getErrorName())) {
queryWrapper.like(ErrorIdentificationStandard::getErrorName, dto.getErrorName());
}
if (dto.getErrorLevel() != null) {
queryWrapper.eq(ErrorIdentificationStandard::getErrorLevel, dto.getErrorLevel());
}
if (dto.getErrorSource() != null) {
queryWrapper.eq(ErrorIdentificationStandard::getErrorSource, dto.getErrorSource());
}
}
return errorIdentificationStandardMapper.selectList(queryWrapper);
}
public int delete(List<Long> ids) {
int i = errorIdentificationStandardMapper.deleteBatchIds(ids);
return i;
}
}

View File

@@ -8,6 +8,7 @@ import com.maibu.core.business.IOTWorkOrder;
import com.maibu.core.business.dto.WorkOrderDispatchDTO;
import com.maibu.core.business.dto.WorkOrderQueryDTO;
import com.maibu.core.domain.model.LoginUser;
import com.maibu.core.enums.ErrorLevel;
import com.maibu.core.page.TableDataInfo;
import com.maibu.exception.ServiceException;
import com.maibu.mapper.DeviceMapper;
@@ -451,7 +452,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
.filter(w -> w.getCreateTime().toLocalDate().equals(LocalDateTime.now().toLocalDate()))
.count());
statistics.put("highPriority", workOrders.stream().filter(w -> w.getPriorityLevel() == 1).count());
statistics.put("highPriority", workOrders.stream().filter(w -> w.getPriorityLevel().equals(ErrorLevel.ERROR)).count());
return statistics;
}
@@ -483,7 +484,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
workOrder.setOrderTitle(alarm.getAlarmTitle());
workOrder.setSourceType(7);
workOrder.setOrderType(2);
workOrder.setPriorityLevel(determinePriority(alarm.getAlarmLevel()));
workOrder.setPriorityLevel(alarm.getAlarmLevel());
workOrder.setDeviceId(alarm.getDeviceId());
workOrder.setDeviceName(alarm.getDeviceName());
workOrder.setDeviceType(alarm.getDeviceType());

View File

@@ -3,8 +3,6 @@ package com.maibu.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.maibu.core.business.DeviceModel;
import java.util.List;
/**
* @author jsmbz
* @description 针对表【iot_device_model(设备模型表)】的数据库操作Service
@@ -13,6 +11,7 @@ import java.util.List;
public interface SysDeviceModelService {
/**
* 新增设备模型
*
* @param deviceModel
* @return
*/
@@ -20,7 +19,8 @@ public interface SysDeviceModelService {
/**
* 分页查询设备模型列表
* @param page 分页对象
*
* @param page 分页对象
* @param deviceModel 查询条件
* @return 分页结果
*/
@@ -28,6 +28,7 @@ public interface SysDeviceModelService {
/**
* selectDeviceModelById
*
* @param id
* @return
*/
@@ -35,6 +36,7 @@ public interface SysDeviceModelService {
/**
* updateDeviceModel
*
* @param deviceModel
* @return
*/
@@ -42,6 +44,7 @@ public interface SysDeviceModelService {
/**
* 删除(逻辑删除模型)
*
* @param id
* @return
*/

View File

@@ -5,6 +5,9 @@ import com.maibu.core.domain.entity.SysSite;
import com.maibu.exception.ServiceException;
import com.maibu.mapper.SysRegionMapper;
import com.maibu.mapper.SysSiteMapper;
import com.maibu.memory.GlobalMemory;
import com.maibu.memory.SiteMemory;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -13,7 +16,6 @@ import org.springframework.util.CollectionUtils;
import java.util.List;
@Service
public class SysSiteService {
@@ -23,21 +25,25 @@ public class SysSiteService {
@Autowired
private SysRegionService sysRegionService;
public List<SysSite> list(SysSite site) {
LambdaQueryWrapper<SysSite> queryWrapper = new LambdaQueryWrapper<>();
if (site != null && !StringUtils.isEmpty(site.getSiteName())) {
queryWrapper.like(SysSite::getSiteName, site.getSiteName());
}
if (site != null && site.getOrgId()!=null) {
if (site != null && site.getOrgId() != null) {
queryWrapper.eq(SysSite::getOrgId, site.getOrgId());
}
queryWrapper.orderByAsc(SysSite::getOrgId);
return sysSiteMapper.selectList(queryWrapper);
}
public boolean save(SysSite org) {
return sysSiteMapper.saveOrUpdate(org);
public boolean save(SysSite site) {
boolean b = sysSiteMapper.saveOrUpdate(site);
SiteMemory siteMemory = GlobalMemory.getSiteMemory(site.getOrgId(), site.getId());
if (siteMemory != null) {
siteMemory.setSysSite(site);
}
return b;
}
@Transactional
@@ -46,7 +52,6 @@ public class SysSiteService {
return sysSiteMapper.deleteBatchIds(ids);
}
public boolean checkExistSite(Long id) {
List<SysSite> sysSites = selectByOrgId(id);
if (CollectionUtils.isEmpty(sysSites)) {