update
This commit is contained in:
@@ -35,7 +35,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@RestController
|
||||
@Slf4j
|
||||
@RequestMapping("/iot/alarm")
|
||||
public class AlarmController extends BaseController{
|
||||
public class AlarmController extends BaseController {
|
||||
|
||||
|
||||
@Autowired
|
||||
@@ -45,9 +45,9 @@ public class AlarmController extends BaseController{
|
||||
@GetMapping("/list")
|
||||
@ApiOperation("告警分页列表")
|
||||
public TableDataInfo list(AlarmQueryDTO queryDTO) {
|
||||
// startPage();
|
||||
// return alarmService.selectAlarmPage(queryDTO);
|
||||
return alarmService.selectAlarmPage(queryDTO);
|
||||
startPage();
|
||||
|
||||
return getDataTable(alarmService.selectAlarmPage(queryDTO));
|
||||
}
|
||||
|
||||
// @PreAuthorize("@ss.hasPermi('iot:alarm:query')")
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.maibu.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
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.AlarmOrderConfig;
|
||||
import com.maibu.core.controller.BaseController;
|
||||
import com.maibu.core.domain.AjaxResult;
|
||||
import com.maibu.core.page.TableDataInfo;
|
||||
import com.maibu.dto.BaseQueryDTO;
|
||||
import com.maibu.service.impl.AlarmOrderConfigService;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/iot/alarmOrderConfig")
|
||||
public class AlarmOrderConfigController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private AlarmOrderConfigService service;
|
||||
|
||||
@PostMapping("/save")
|
||||
public AjaxResult save(@RequestBody AlarmOrderConfig config) {
|
||||
|
||||
return AjaxResult.success(service.save(config));
|
||||
}
|
||||
|
||||
@PostMapping("/list")
|
||||
public TableDataInfo list(@RequestBody BaseQueryDTO dto) {
|
||||
startPage();
|
||||
return getDataTable(service.list(dto));
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
public AjaxResult delete(@RequestBody List<Long> ids) {
|
||||
return AjaxResult.success(service.delete(ids));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,7 +14,7 @@ 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.dto.BaseQueryDTO;
|
||||
import com.maibu.service.impl.DeviceRunParamService;
|
||||
|
||||
@RestController
|
||||
@@ -31,7 +31,7 @@ public class DeviceRunParamController extends BaseController {
|
||||
}
|
||||
|
||||
@PostMapping("/list")
|
||||
public TableDataInfo list(@RequestBody DeviceRunParamQueryDTO dto) {
|
||||
public TableDataInfo list(@RequestBody BaseQueryDTO dto) {
|
||||
startPage();
|
||||
return getDataTable(service.list(dto));
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ 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;
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.maibu.annotation.Log;
|
||||
import com.maibu.core.business.IOTWorkOrder;
|
||||
import com.maibu.core.business.dto.WorkOrderDispatchDTO;
|
||||
import com.maibu.core.business.dto.WorkOrderQueryDTO;
|
||||
import com.maibu.core.business.dto.WorkOrderStartDTO;
|
||||
import com.maibu.core.controller.BaseController;
|
||||
import com.maibu.core.domain.AjaxResult;
|
||||
import com.maibu.core.page.TableDataInfo;
|
||||
@@ -77,12 +78,11 @@ public class IOTWorkOrderController extends BaseController {
|
||||
return toAjax(workOrderService.dispatchWorkOrder(dispatchDTO));
|
||||
}
|
||||
|
||||
//@PreAuthorize("@ss.hasPermi('iot:workOrder:start')")
|
||||
@Log(title = "工单开始", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/start/{id}")
|
||||
|
||||
@PostMapping("/start")
|
||||
@ApiOperation("开始执行工单")
|
||||
public AjaxResult start(@PathVariable Long id) {
|
||||
return toAjax(workOrderService.startWorkOrder(id));
|
||||
public AjaxResult start(@RequestBody WorkOrderStartDTO dto) {
|
||||
return toAjax(workOrderService.startWorkOrder(dto));
|
||||
}
|
||||
|
||||
// @PreAuthorize("@ss.hasPermi('iot:workOrder:complete')")
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
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.business.OrderModel;
|
||||
import com.maibu.core.controller.BaseController;
|
||||
import com.maibu.core.domain.AjaxResult;
|
||||
import com.maibu.core.page.TableDataInfo;
|
||||
import com.maibu.dto.BaseQueryDTO;
|
||||
import com.maibu.service.impl.OrderModelService;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/iot/orderModel")
|
||||
public class OrderModelController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private OrderModelService service;
|
||||
|
||||
@PostMapping("/save")
|
||||
public AjaxResult save(@RequestBody OrderModel orderModel) {
|
||||
|
||||
return AjaxResult.success(service.save(orderModel));
|
||||
}
|
||||
|
||||
@PostMapping("/list")
|
||||
public TableDataInfo list(@RequestBody BaseQueryDTO dto) {
|
||||
startPage();
|
||||
return getDataTable(service.list(dto));
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
public AjaxResult delete(@RequestBody List<Long> ids) {
|
||||
return AjaxResult.success(service.delete(ids));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,7 +5,8 @@ import com.maibu.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DeviceRunParamQueryDTO extends BaseEntity {
|
||||
public class BaseQueryDTO extends BaseEntity {
|
||||
private Long siteId;
|
||||
private String deviceId;
|
||||
private Long orgId;
|
||||
}
|
||||
@@ -12,4 +12,6 @@ public class ErrorQueryDTO extends BaseEntity {
|
||||
private ErrorSource errorSource;
|
||||
private String errorCode;
|
||||
private ErrorLevel errorLevel;
|
||||
private Long orgId;
|
||||
private Long siteId;
|
||||
}
|
||||
|
||||
@@ -1 +1,36 @@
|
||||
package com.maibu.service;
|
||||
package com.maibu.service;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.maibu.core.business.alarm_center.Alarm;
|
||||
import com.maibu.core.business.dto.AlarmHandleDTO;
|
||||
import com.maibu.core.business.dto.AlarmQueryDTO;
|
||||
|
||||
public interface IAlarmService extends IService<Alarm> {
|
||||
|
||||
List<Alarm> selectAlarmPage(AlarmQueryDTO queryDTO);
|
||||
|
||||
List<Alarm> selectAlarmList(AlarmQueryDTO queryDTO);
|
||||
|
||||
Alarm selectAlarmById(Long id);
|
||||
|
||||
int insertAlarm(Alarm alarm);
|
||||
|
||||
int updateAlarm(Alarm alarm);
|
||||
|
||||
int handleAlarm(AlarmHandleDTO handleDTO);
|
||||
|
||||
int deleteAlarmById(Long id);
|
||||
|
||||
int deleteAlarmByIds(Long[] ids);
|
||||
|
||||
Map<String, Object> getAlarmStatistics();
|
||||
|
||||
|
||||
Map<String, Object> getAlarmStatistics(AlarmQueryDTO queryDTO);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
package com.maibu.service;
|
||||
|
||||
public interface IWebRtcService {
|
||||
|
||||
}
|
||||
@@ -1,14 +1,15 @@
|
||||
package com.maibu.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.maibu.core.business.IOTWorkOrder;
|
||||
import com.maibu.core.business.dto.WorkOrderDispatchDTO;
|
||||
import com.maibu.core.business.dto.WorkOrderQueryDTO;
|
||||
import com.maibu.core.business.dto.WorkOrderStartDTO;
|
||||
import com.maibu.core.page.TableDataInfo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface IWorkOrderService extends IService<IOTWorkOrder> {
|
||||
|
||||
TableDataInfo selectWorkOrderPage(WorkOrderQueryDTO queryDTO);
|
||||
@@ -23,7 +24,7 @@ public interface IWorkOrderService extends IService<IOTWorkOrder> {
|
||||
|
||||
int dispatchWorkOrder(WorkOrderDispatchDTO dispatchDTO);
|
||||
|
||||
int startWorkOrder(Long id);
|
||||
boolean startWorkOrder(WorkOrderStartDTO dto);
|
||||
|
||||
int completeWorkOrder(IOTWorkOrder workOrder);
|
||||
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.maibu.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
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.AlarmOrderConfig;
|
||||
import com.maibu.dto.BaseQueryDTO;
|
||||
import com.maibu.mapper.AlarmOrderConfigMapper;
|
||||
import com.maibu.memory.GlobalMemory;
|
||||
import com.maibu.memory.SiteMemory;
|
||||
|
||||
@Service
|
||||
public class AlarmOrderConfigService {
|
||||
|
||||
@Autowired
|
||||
private AlarmOrderConfigMapper alarmOrderConfigMapper;
|
||||
|
||||
public boolean save(AlarmOrderConfig alarmOrderConfig) {
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(alarmOrderConfig.getOrgId(),
|
||||
alarmOrderConfig.getSiteId());
|
||||
if (siteMemory != null) {
|
||||
siteMemory.saveAlarmOrderConfig(alarmOrderConfig);
|
||||
}
|
||||
return alarmOrderConfigMapper.saveOrUpdate(alarmOrderConfig);
|
||||
}
|
||||
|
||||
public List<AlarmOrderConfig> list(BaseQueryDTO dto) {
|
||||
LambdaQueryWrapper<AlarmOrderConfig> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (dto != null) {
|
||||
if (dto.getSiteId() != null) {
|
||||
queryWrapper.eq(AlarmOrderConfig::getSiteId, dto.getSiteId());
|
||||
}
|
||||
}
|
||||
return alarmOrderConfigMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
public int delete(List<Long> ids) {
|
||||
List<AlarmOrderConfig> alarmOrderConfigs = alarmOrderConfigMapper
|
||||
.selectBatchIds(ids);
|
||||
if (!CollectionUtils.isEmpty(alarmOrderConfigs)) {
|
||||
alarmOrderConfigs.forEach(x -> {
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(x.getOrgId(), x.getSiteId());
|
||||
if (siteMemory != null) {
|
||||
siteMemory.removeAlarmOrderConfig(x.getErrorCode());
|
||||
}
|
||||
});
|
||||
}
|
||||
int i = alarmOrderConfigMapper.deleteBatchIds(ids);
|
||||
return i;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,12 +1,23 @@
|
||||
package com.maibu.service.impl;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.eclipse.paho.client.mqttv3.MqttException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
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.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;
|
||||
@@ -24,18 +35,6 @@ 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;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements IAlarmService {
|
||||
@@ -43,27 +42,23 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
|
||||
@Autowired
|
||||
private DeviceMapper deviceMapper;
|
||||
|
||||
@Autowired
|
||||
private AlarmMapper alarmMapper;
|
||||
|
||||
@Override
|
||||
public TableDataInfo selectAlarmPage(AlarmQueryDTO queryDTO) {
|
||||
validateQueryParams(queryDTO);
|
||||
public List<Alarm> selectAlarmPage(AlarmQueryDTO queryDTO) {
|
||||
// validateQueryParams(queryDTO);
|
||||
|
||||
LambdaQueryWrapper<Alarm> wrapper = buildQueryWrapper(queryDTO);
|
||||
|
||||
Page<Alarm> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize());
|
||||
Page<Alarm> result = baseMapper.selectPage(page, wrapper);
|
||||
|
||||
TableDataInfo tableDataInfo = new TableDataInfo();
|
||||
tableDataInfo.setRows(result.getRecords());
|
||||
tableDataInfo.setTotal(result.getTotal());
|
||||
|
||||
return tableDataInfo;
|
||||
List<Alarm> list = alarmMapper.selectList(wrapper);
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Alarm> selectAlarmList(AlarmQueryDTO queryDTO) {
|
||||
validateQueryParams(queryDTO);
|
||||
LambdaQueryWrapper<Alarm> wrapper = buildQueryWrapper(queryDTO);
|
||||
return baseMapper.selectList(wrapper);
|
||||
return alarmMapper.selectList(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -72,7 +67,7 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
|
||||
|
||||
LambdaQueryWrapper<Alarm> wrapper = buildQueryWrapper(queryDTO);
|
||||
|
||||
List<Alarm> alarms = baseMapper.selectList(wrapper);
|
||||
List<Alarm> alarms = alarmMapper.selectList(wrapper);
|
||||
Map<String, Object> statistics = new HashMap<>();
|
||||
statistics.put("total", alarms.size());
|
||||
statistics.put("pending", alarms.stream().filter(a -> a.getHandleStatus() == 1).count());
|
||||
@@ -172,70 +167,63 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
|
||||
private LambdaQueryWrapper<Alarm> buildQueryWrapper(AlarmQueryDTO queryDTO) {
|
||||
LambdaQueryWrapper<Alarm> wrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
Long userOrgId = loginUser.getOrgId();
|
||||
Long userSiteId = loginUser.getSiteId();
|
||||
// Long userId = SecurityUtils.getUserId();
|
||||
// LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
// Long userOrgId = loginUser.getOrgId();
|
||||
// Long userSiteId = loginUser.getSiteId();
|
||||
|
||||
// 数据权限过滤(核心修复:防止组织管理员越权)
|
||||
if (!SecurityUtils.isAdmin(userId)) {
|
||||
if (queryDTO.getSiteId() != null) {
|
||||
// 修复:组织管理员指定场站查询时,必须同时满足 orgId 匹配
|
||||
String sql = "SELECT 1 FROM iot_device d WHERE d.device_id = iot_alarm.device_id AND d.site_id = {0}";
|
||||
if (userOrgId != null) {
|
||||
sql += " AND d.org_id = " + userOrgId;
|
||||
}
|
||||
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);
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
// if (!SecurityUtils.isAdmin(userId)) {
|
||||
// if (queryDTO.getSiteId() != null) {
|
||||
// // 修复:组织管理员指定场站查询时,必须同时满足 orgId 匹配
|
||||
// String sql = "SELECT 1 FROM iot_device d WHERE d.device_id =
|
||||
// iot_alarm.device_id AND d.site_id = {0}";
|
||||
// if (userOrgId != null) {
|
||||
// sql += " AND d.org_id = " + userOrgId;
|
||||
// }
|
||||
// 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);
|
||||
// } 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);
|
||||
// }
|
||||
// }
|
||||
|
||||
if (queryDTO.getDeviceId() != null) {
|
||||
if (!StringUtils.isEmpty(queryDTO.getAlarmNo())) {
|
||||
wrapper.like(Alarm::getAlarmNo, queryDTO.getAlarmNo());
|
||||
}
|
||||
if (!StringUtils.isEmpty(queryDTO.getDeviceId())) {
|
||||
wrapper.eq(Alarm::getDeviceId, queryDTO.getDeviceId());
|
||||
}
|
||||
if (queryDTO.getSiteId() != null) {
|
||||
wrapper.eq(Alarm::getSiteId, queryDTO.getSiteId());
|
||||
}
|
||||
if (!StringUtils.isEmpty(queryDTO.getDeviceId())) {
|
||||
wrapper.eq(Alarm::getDeviceId, queryDTO.getDeviceId());
|
||||
}
|
||||
if (queryDTO.getAlarmLevel() != null) {
|
||||
wrapper.eq(Alarm::getAlarmLevel, queryDTO.getAlarmLevel());
|
||||
}
|
||||
if (queryDTO.getAlarmType() != null) {
|
||||
wrapper.eq(Alarm::getAlarmType, queryDTO.getAlarmType());
|
||||
}
|
||||
if (queryDTO.getDeviceType() != null) {
|
||||
wrapper.eq(Alarm::getDeviceType, queryDTO.getDeviceType());
|
||||
}
|
||||
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 (StringUtils.isNotEmpty(queryDTO.getKeyword())) {
|
||||
wrapper.and(w -> w.like(Alarm::getAlarmNo, queryDTO.getKeyword())
|
||||
.or()
|
||||
.like(Alarm::getAlarmContent, queryDTO.getKeyword()));
|
||||
}
|
||||
|
||||
wrapper.orderByDesc(Alarm::getAlarmTime);
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Alarm selectAlarmById(Long id) {
|
||||
Alarm alarm = baseMapper.selectById(id);
|
||||
Alarm alarm = alarmMapper.selectById(id);
|
||||
if (alarm == null)
|
||||
throw new ServiceException("告警不存在");
|
||||
|
||||
@@ -255,24 +243,24 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
|
||||
alarm.setTenantId(SecurityUtils.getLoginUser().getOrgId());
|
||||
alarm.setAlarmTime(LocalDateTime.now());
|
||||
alarm.setHandleStatus(1);
|
||||
return baseMapper.insert(alarm);
|
||||
return alarmMapper.insert(alarm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateAlarm(Alarm alarm) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if (!SecurityUtils.isAdmin(userId) && alarm.getId() != null) {
|
||||
Alarm existAlarm = baseMapper.selectById(alarm.getId());
|
||||
Alarm existAlarm = alarmMapper.selectById(alarm.getId());
|
||||
if (existAlarm != null && existAlarm.getDeviceId() != null) {
|
||||
validateDeviceAccess(existAlarm.getDeviceId());
|
||||
}
|
||||
}
|
||||
return baseMapper.updateById(alarm);
|
||||
return alarmMapper.updateById(alarm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int handleAlarm(AlarmHandleDTO handleDTO) {
|
||||
Alarm alarm = baseMapper.selectById(handleDTO.getAlarmId());
|
||||
Alarm alarm = alarmMapper.selectById(handleDTO.getAlarmId());
|
||||
if (alarm == null)
|
||||
throw new ServiceException("告警不存在");
|
||||
|
||||
@@ -292,19 +280,19 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
|
||||
if (handleDTO.getHandleStatus() == 3) {
|
||||
updateAlarm.setRecoverTime(LocalDateTime.now());
|
||||
}
|
||||
return baseMapper.updateById(updateAlarm);
|
||||
return alarmMapper.updateById(updateAlarm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteAlarmById(Long id) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if (!SecurityUtils.isAdmin(userId)) {
|
||||
Alarm alarm = baseMapper.selectById(id);
|
||||
Alarm alarm = alarmMapper.selectById(id);
|
||||
if (alarm != null && alarm.getDeviceId() != null) {
|
||||
validateDeviceAccess(alarm.getDeviceId());
|
||||
}
|
||||
}
|
||||
return baseMapper.deleteById(id);
|
||||
return alarmMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -312,13 +300,13 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if (!SecurityUtils.isAdmin(userId)) {
|
||||
for (Long id : ids) {
|
||||
Alarm alarm = baseMapper.selectById(id);
|
||||
Alarm alarm = alarmMapper.selectById(id);
|
||||
if (alarm != null && alarm.getDeviceId() != null) {
|
||||
validateDeviceAccess(alarm.getDeviceId());
|
||||
}
|
||||
}
|
||||
}
|
||||
return baseMapper.deleteBatchIds(Arrays.asList(ids));
|
||||
return alarmMapper.deleteBatchIds(Arrays.asList(ids));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -341,7 +329,7 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
|
||||
}
|
||||
wrapper.ge(Alarm::getAlarmTime, LocalDateTime.now().minusDays(7));
|
||||
|
||||
List<Alarm> alarms = baseMapper.selectList(wrapper);
|
||||
List<Alarm> alarms = alarmMapper.selectList(wrapper);
|
||||
Map<String, Object> statistics = new HashMap<>();
|
||||
statistics.put("total", alarms.size());
|
||||
statistics.put("pending", alarms.stream().filter(a -> a.getHandleStatus() == 1).count());
|
||||
@@ -372,22 +360,26 @@ public class AlarmServiceImpl extends ServiceImpl<AlarmMapper, Alarm> implements
|
||||
alarm.setDeviceName(alarmMessage.getDeviceName());
|
||||
alarm.setDeviceType(ErrorSource.MOWER);
|
||||
alarm.setAlarmTime(LocalDateTime.now());
|
||||
alarm.setOrgId(alarmMessage.getOrgId());
|
||||
alarm.setSiteId(alarmMessage.getSiteId());
|
||||
alarm.setAlarmTime(LocalDateTime.now());
|
||||
pushErrorMessage(alarmMessage.getDeviceName(), JsonUtils.toJsonString(alarm));
|
||||
list.add(alarm);
|
||||
}
|
||||
baseMapper.insertBatch(list);
|
||||
alarmMapper.saveOrUpdateBatch(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);
|
||||
// List<NettyDevice> controlMasters =
|
||||
// sessionManager.getAllSlaveControl(deviceId);
|
||||
// if (!CollectionUtils.isEmpty(controlMasters)) {
|
||||
// controlMasters.forEach(x -> {
|
||||
// websocketMesDispather.dispather(x.getConnectorId(), dto);
|
||||
// log.info("推送错误信息 device:{},content:{}", deviceId, dto);
|
||||
// });
|
||||
// controlMasters.forEach(x -> {
|
||||
// websocketMesDispather.dispather(x.getConnectorId(), dto);
|
||||
// log.info("推送错误信息 device:{},content:{}", deviceId, dto);
|
||||
// });
|
||||
// }
|
||||
} catch (MqttException e) {
|
||||
log.error("推送错误信息失败 device:{}error:{}", deviceId, e.getMessage());
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.maibu.service.impl;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -10,7 +9,7 @@ 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.dto.BaseQueryDTO;
|
||||
import com.maibu.mapper.DeviceRunParamMapper;
|
||||
import com.maibu.memory.GlobalMemory;
|
||||
import com.maibu.memory.SiteMemory;
|
||||
@@ -29,7 +28,7 @@ public class DeviceRunParamService {
|
||||
return deviceRunParamMapper.saveOrUpdate(deviceRunParam);
|
||||
}
|
||||
|
||||
public List<DeviceRunParam> list(DeviceRunParamQueryDTO dto) {
|
||||
public List<DeviceRunParam> list(BaseQueryDTO dto) {
|
||||
LambdaQueryWrapper<DeviceRunParam> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (dto != null) {
|
||||
if (dto.getSiteId() != null) {
|
||||
@@ -65,3 +64,4 @@ public class DeviceRunParamService {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,11 +5,14 @@ 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.ErrorIdentificationStandard;
|
||||
import com.maibu.dto.ErrorQueryDTO;
|
||||
import com.maibu.mapper.ErrorIdentificationStandardMapper;
|
||||
import com.maibu.memory.GlobalMemory;
|
||||
import com.maibu.memory.SiteMemory;
|
||||
|
||||
@Service
|
||||
public class ErrorIdentificationService {
|
||||
@@ -18,6 +21,12 @@ public class ErrorIdentificationService {
|
||||
private ErrorIdentificationStandardMapper errorIdentificationStandardMapper;
|
||||
|
||||
public boolean save(ErrorIdentificationStandard errorIdentificationStandard) {
|
||||
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(errorIdentificationStandard.getOrgId(),
|
||||
errorIdentificationStandard.getSiteId());
|
||||
if (siteMemory != null) {
|
||||
siteMemory.saveErrorIdentificationStandard(errorIdentificationStandard);
|
||||
}
|
||||
return errorIdentificationStandardMapper.saveOrUpdate(errorIdentificationStandard);
|
||||
}
|
||||
|
||||
@@ -36,11 +45,27 @@ public class ErrorIdentificationService {
|
||||
if (dto.getErrorSource() != null) {
|
||||
queryWrapper.eq(ErrorIdentificationStandard::getErrorSource, dto.getErrorSource());
|
||||
}
|
||||
if (dto.getOrgId() != null) {
|
||||
queryWrapper.eq(ErrorIdentificationStandard::getOrgId, dto.getOrgId());
|
||||
}
|
||||
if (dto.getSiteId() != null) {
|
||||
queryWrapper.eq(ErrorIdentificationStandard::getSiteId, dto.getSiteId());
|
||||
}
|
||||
}
|
||||
return errorIdentificationStandardMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
public int delete(List<Long> ids) {
|
||||
List<ErrorIdentificationStandard> errorIdentificationStandards = errorIdentificationStandardMapper
|
||||
.selectBatchIds(ids);
|
||||
if (!CollectionUtils.isEmpty(errorIdentificationStandards)) {
|
||||
errorIdentificationStandards.forEach(x -> {
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(x.getOrgId(), x.getSiteId());
|
||||
if (siteMemory != null) {
|
||||
siteMemory.removeErrorIdentificationStandard(x);
|
||||
}
|
||||
});
|
||||
}
|
||||
int i = errorIdentificationStandardMapper.deleteBatchIds(ids);
|
||||
return i;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.maibu.service.impl;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
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.OrderModel;
|
||||
import com.maibu.core.business.dto.DeviceTaskCommandDTO;
|
||||
import com.maibu.core.business.dto.uav.FlightTaskCreateDTO;
|
||||
import com.maibu.core.business.inter.mower.MowerCommandDispather;
|
||||
import com.maibu.core.business.inter.uav.UAVCommandDispather;
|
||||
import com.maibu.core.enums.OrderType;
|
||||
import com.maibu.dto.BaseQueryDTO;
|
||||
import com.maibu.mapper.OrderModelMapper;
|
||||
import com.maibu.memory.GlobalMemory;
|
||||
import com.maibu.memory.SiteMemory;
|
||||
|
||||
@Service
|
||||
public class OrderModelService {
|
||||
|
||||
@Autowired
|
||||
private OrderModelMapper orderModelMapper;
|
||||
|
||||
@Autowired
|
||||
private UAVCommandDispather dispather;
|
||||
|
||||
@Autowired
|
||||
private MowerCommandDispather mowerDispather;
|
||||
|
||||
public boolean save(OrderModel orderModel) {
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(orderModel.getOrgId(),
|
||||
orderModel.getSiteId());
|
||||
if (siteMemory != null) {
|
||||
siteMemory.saveOrderModel(orderModel);
|
||||
}
|
||||
return orderModelMapper.saveOrUpdate(orderModel);
|
||||
}
|
||||
|
||||
public List<OrderModel> list(BaseQueryDTO dto) {
|
||||
LambdaQueryWrapper<OrderModel> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (dto != null && dto.getSiteId() != null) {
|
||||
queryWrapper.eq(OrderModel::getSiteId, dto.getSiteId());
|
||||
}
|
||||
return orderModelMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
public OrderModel selectByDeviceId(String deviceId) {
|
||||
LambdaQueryWrapper<OrderModel> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (!StringUtils.isEmpty(deviceId)) {
|
||||
queryWrapper.eq(OrderModel::getDeviceId, deviceId);
|
||||
}
|
||||
return orderModelMapper.selectOne(queryWrapper);
|
||||
}
|
||||
|
||||
public int delete(List<Long> ids) {
|
||||
List<OrderModel> orderModels = orderModelMapper
|
||||
.selectBatchIds(ids);
|
||||
if (!CollectionUtils.isEmpty(orderModels)) {
|
||||
orderModels.forEach(x -> {
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(x.getOrgId(), x.getSiteId());
|
||||
if (siteMemory != null) {
|
||||
siteMemory.removeOrderModel(x.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
int i = orderModelMapper.deleteBatchIds(ids);
|
||||
return i;
|
||||
}
|
||||
|
||||
public void createTask(String deviceId, Long siteId, Long orgId, Long modelId) {
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(orgId, siteId);
|
||||
OrderModel orderModel = siteMemory.getOrderModel(modelId);
|
||||
OrderType orderType = orderModel.getOrderType();
|
||||
// 割草机
|
||||
if (orderType != null && orderType.getType() == 1) {
|
||||
Long routeId = orderModel.getRouteId();
|
||||
DeviceTaskCommandDTO dto = new DeviceTaskCommandDTO();
|
||||
dto.setDeviceId(deviceId);
|
||||
dto.setRouteId(routeId);
|
||||
dto.setOrgId(orgId);
|
||||
dto.setSiteId(siteId);
|
||||
dto.setStartTime(LocalDateTime.now());
|
||||
mowerDispather.dispathDeviceTask(dto);
|
||||
}
|
||||
// 无人机
|
||||
if (orderType != null && orderType.getType() == 2) {
|
||||
String waylineId = orderModel.getWaylineId();
|
||||
FlightTaskCreateDTO dto = new FlightTaskCreateDTO();
|
||||
dto.setWayline_uuid(waylineId);
|
||||
dto.setSn(deviceId);
|
||||
String name = orderType.getValue() + "-"
|
||||
+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
||||
dto.setName(name);
|
||||
dto.setRth_altitude(orderModel.getRthAltitude());
|
||||
dto.setRth_mode(orderModel.getRthMode());
|
||||
dispather.dispathFightTask(dto);
|
||||
}
|
||||
// 其他
|
||||
if (orderType != null && orderType.getType() == 3) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,25 +1,5 @@
|
||||
package com.maibu.service.impl;
|
||||
|
||||
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.maibu.core.business.Device;
|
||||
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;
|
||||
import com.maibu.mapper.IotWorkOrderMapper;
|
||||
import com.maibu.service.IAlarmService;
|
||||
import com.maibu.service.IWorkOrderService;
|
||||
import com.maibu.utils.SecurityUtils;
|
||||
import com.maibu.utils.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Arrays;
|
||||
@@ -27,6 +7,32 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
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.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.IOTWorkOrder;
|
||||
import com.maibu.core.business.OrderModel;
|
||||
import com.maibu.core.business.dto.WorkOrderDispatchDTO;
|
||||
import com.maibu.core.business.dto.WorkOrderQueryDTO;
|
||||
import com.maibu.core.business.dto.WorkOrderStartDTO;
|
||||
import com.maibu.core.domain.model.LoginUser;
|
||||
import com.maibu.core.enums.ErrorLevel;
|
||||
import com.maibu.core.enums.OrderType;
|
||||
import com.maibu.core.page.TableDataInfo;
|
||||
import com.maibu.exception.ServiceException;
|
||||
import com.maibu.mapper.DeviceMapper;
|
||||
import com.maibu.mapper.IotWorkOrderMapper;
|
||||
import com.maibu.mapper.OrderModelMapper;
|
||||
import com.maibu.service.IAlarmService;
|
||||
import com.maibu.service.IWorkOrderService;
|
||||
import com.maibu.utils.SecurityUtils;
|
||||
import com.maibu.utils.StringUtils;
|
||||
|
||||
@Service
|
||||
public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWorkOrder> implements IWorkOrderService {
|
||||
|
||||
@@ -36,6 +42,15 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
@Autowired
|
||||
private IAlarmService alarmService;
|
||||
|
||||
@Autowired
|
||||
private IotWorkOrderMapper iotWorkOrderMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderModelMapper orderModelMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderModelService orderModelService;
|
||||
|
||||
@Override
|
||||
public TableDataInfo selectWorkOrderPage(WorkOrderQueryDTO queryDTO) {
|
||||
validateQueryParams(queryDTO);
|
||||
@@ -75,10 +90,12 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
}
|
||||
|
||||
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();
|
||||
@@ -92,8 +109,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
Long count = deviceMapper.selectCount(
|
||||
new LambdaQueryWrapper<Device>()
|
||||
.eq(Device::getSiteId, siteId)
|
||||
.eq(Device::getOrgId, userOrgId)
|
||||
);
|
||||
.eq(Device::getOrgId, userOrgId));
|
||||
if (count == 0) {
|
||||
throw new ServiceException("无权访问该场站");
|
||||
}
|
||||
@@ -103,16 +119,17 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
}
|
||||
|
||||
private void validateDeviceAccess(Long deviceId) {
|
||||
if (deviceId == null) return;
|
||||
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("设备不存在");
|
||||
@@ -210,7 +227,8 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
@Override
|
||||
public IOTWorkOrder selectWorkOrderById(Long id) {
|
||||
IOTWorkOrder workOrder = baseMapper.selectById(id);
|
||||
if (workOrder == null) throw new ServiceException("工单不存在");
|
||||
if (workOrder == null)
|
||||
throw new ServiceException("工单不存在");
|
||||
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if (!SecurityUtils.isAdmin(userId)) {
|
||||
@@ -245,7 +263,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
@Override
|
||||
public int insertWorkOrder(IOTWorkOrder workOrder) {
|
||||
workOrder.setOrderNo(generateUniqueOrderNo());
|
||||
workOrder.setTenantId(SecurityUtils.getLoginUser().getOrgId());
|
||||
// workOrder.setTenantId(SecurityUtils.getLoginUser().getOrgId());
|
||||
workOrder.setOrgId(SecurityUtils.getLoginUser().getOrgId());
|
||||
workOrder.setCreateTime(LocalDateTime.now());
|
||||
if (workOrder.getOrderStatus() == null) {
|
||||
@@ -254,18 +272,20 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
return baseMapper.insert(workOrder);
|
||||
}
|
||||
|
||||
/* @Override
|
||||
public int updateWorkOrder(IOTWorkOrder workOrder) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if (!SecurityUtils.isAdmin(userId)) {
|
||||
IOTWorkOrder existWorkOrder = baseMapper.selectById(workOrder.getId());
|
||||
if (existWorkOrder != null) {
|
||||
validateWorkOrderAccess(existWorkOrder);
|
||||
}
|
||||
}
|
||||
workOrder.setUpdateTime(LocalDateTime.now());
|
||||
return baseMapper.updateById(workOrder);
|
||||
}*/
|
||||
/*
|
||||
* @Override
|
||||
* public int updateWorkOrder(IOTWorkOrder workOrder) {
|
||||
* Long userId = SecurityUtils.getUserId();
|
||||
* if (!SecurityUtils.isAdmin(userId)) {
|
||||
* IOTWorkOrder existWorkOrder = baseMapper.selectById(workOrder.getId());
|
||||
* if (existWorkOrder != null) {
|
||||
* validateWorkOrderAccess(existWorkOrder);
|
||||
* }
|
||||
* }
|
||||
* workOrder.setUpdateTime(LocalDateTime.now());
|
||||
* return baseMapper.updateById(workOrder);
|
||||
* }
|
||||
*/
|
||||
|
||||
@Override
|
||||
public int updateWorkOrder(IOTWorkOrder workOrder) {
|
||||
@@ -310,11 +330,11 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
return baseMapper.updateById(updateEntity);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int dispatchWorkOrder(WorkOrderDispatchDTO dispatchDTO) {
|
||||
IOTWorkOrder workOrder = baseMapper.selectById(dispatchDTO.getOrderId());
|
||||
if (workOrder == null) throw new ServiceException("工单不存在");
|
||||
if (workOrder == null)
|
||||
throw new ServiceException("工单不存在");
|
||||
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if (!SecurityUtils.isAdmin(userId)) {
|
||||
@@ -337,28 +357,36 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
}
|
||||
|
||||
@Override
|
||||
public int startWorkOrder(Long id) {
|
||||
IOTWorkOrder workOrder = baseMapper.selectById(id);
|
||||
if (workOrder == null) throw new ServiceException("工单不存在");
|
||||
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if (!SecurityUtils.isAdmin(userId)) {
|
||||
validateWorkOrderAccess(workOrder);
|
||||
public boolean startWorkOrder(WorkOrderStartDTO dto) {
|
||||
List<Long> ids = dto.getIds();
|
||||
List<IOTWorkOrder> workOrders = baseMapper.selectBatchIds(ids);
|
||||
if (CollectionUtils.isEmpty(workOrders)) {
|
||||
throw new ServiceException("工单不存在");
|
||||
}
|
||||
|
||||
IOTWorkOrder updateWorkOrder = new IOTWorkOrder();
|
||||
updateWorkOrder.setId(id);
|
||||
updateWorkOrder.setOrderStatus(3);
|
||||
updateWorkOrder.setActualStartTime(LocalDateTime.now());
|
||||
updateWorkOrder.setUpdateTime(LocalDateTime.now());
|
||||
updateWorkOrder.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName());
|
||||
return baseMapper.updateById(updateWorkOrder);
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
String userName = SecurityUtils.getUsername();
|
||||
workOrders.forEach(workOrder -> {
|
||||
workOrder.setOrderStatus(3);
|
||||
workOrder.setActualStartTime(LocalDateTime.now());
|
||||
workOrder.setUpdateTime(LocalDateTime.now());
|
||||
workOrder.setUpdateBy(userName);
|
||||
workOrder.setAssigneeId(userId);
|
||||
workOrder.setAssigneeName(userName);
|
||||
// todo 派发自定义的路径规划任务
|
||||
Long modelId = workOrder.getModelId();
|
||||
if (modelId == null) return;
|
||||
Long siteId = workOrder.getSiteId();
|
||||
Long orgId = workOrder.getOrgId();
|
||||
orderModelService.createTask(dto.getDeviceId(), siteId, orgId, modelId);
|
||||
});
|
||||
return baseMapper.saveOrUpdateBatch(workOrders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int completeWorkOrder(IOTWorkOrder workOrder) {
|
||||
IOTWorkOrder existWorkOrder = baseMapper.selectById(workOrder.getId());
|
||||
if (existWorkOrder == null) throw new ServiceException("工单不存在");
|
||||
if (existWorkOrder == null)
|
||||
throw new ServiceException("工单不存在");
|
||||
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if (!SecurityUtils.isAdmin(userId)) {
|
||||
@@ -379,7 +407,8 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
@Override
|
||||
public int suspendWorkOrder(Long id) {
|
||||
IOTWorkOrder workOrder = baseMapper.selectById(id);
|
||||
if (workOrder == null) throw new ServiceException("工单不存在");
|
||||
if (workOrder == null)
|
||||
throw new ServiceException("工单不存在");
|
||||
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if (!SecurityUtils.isAdmin(userId)) {
|
||||
@@ -452,7 +481,8 @@ 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().equals(ErrorLevel.ERROR)).count());
|
||||
statistics.put("highPriority",
|
||||
workOrders.stream().filter(w -> w.getPriorityLevel().equals(ErrorLevel.ERROR)).count());
|
||||
|
||||
return statistics;
|
||||
}
|
||||
@@ -469,8 +499,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
Device device = deviceMapper.selectOne(
|
||||
new LambdaQueryWrapper<Device>()
|
||||
.eq(Device::getDeviceId, alarm.getDeviceId())
|
||||
.select(Device::getOrgId, Device::getSiteId)
|
||||
);
|
||||
.select(Device::getOrgId, Device::getSiteId));
|
||||
if (device != null) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (!loginUser.getOrgId().equals(device.getOrgId())) {
|
||||
@@ -483,7 +512,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
workOrder.setOrderNo(generateUniqueOrderNo());
|
||||
workOrder.setOrderTitle(alarm.getAlarmTitle());
|
||||
workOrder.setSourceType(7);
|
||||
workOrder.setOrderType(2);
|
||||
workOrder.setOrderType(OrderType.MOWER_ERROR);
|
||||
workOrder.setPriorityLevel(alarm.getAlarmLevel());
|
||||
workOrder.setDeviceId(alarm.getDeviceId());
|
||||
workOrder.setDeviceName(alarm.getDeviceName());
|
||||
@@ -512,10 +541,9 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private String generateOrderNo() {
|
||||
String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
||||
return "WO" + dateStr + String.format("%04d", (int)(Math.random() * 10000));
|
||||
return "WO" + dateStr + String.format("%04d", (int) (Math.random() * 10000));
|
||||
}
|
||||
|
||||
private synchronized String generateUniqueOrderNo() {
|
||||
@@ -537,5 +565,35 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
throw new ServiceException("生成工单号失败,请稍后重试");
|
||||
}
|
||||
|
||||
}
|
||||
// 生成工单的方法
|
||||
public IOTWorkOrder generateWorkOrders(Long siteId, String deviceId, Long orgId, Long modelId) {
|
||||
OrderModel orderModel = orderModelMapper.selectById(modelId);
|
||||
if (orderModel == null) {
|
||||
throw new ServiceException("工单模板不存在");
|
||||
}
|
||||
IOTWorkOrder workOrder = new IOTWorkOrder();
|
||||
workOrder.setOrderNo(generateOrderNo(orderModel.getOrderType().getValue()));
|
||||
workOrder.setOrderTitle(workOrder.getOrderNo());
|
||||
// workOrder.setSourceType(orderModel.ge());
|
||||
workOrder.setOrderType(orderModel.getOrderType());
|
||||
workOrder.setPriorityLevel(orderModel.getErrorLevel());
|
||||
workOrder.setDeviceId(deviceId);
|
||||
workOrder.setSiteId(siteId);
|
||||
workOrder.setOrgId(orgId);
|
||||
workOrder.setOrderStatus(1);
|
||||
workOrder.setCreateTime(LocalDateTime.now());
|
||||
workOrder.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
|
||||
|
||||
return workOrder;
|
||||
}
|
||||
|
||||
private String generateOrderNo(String prefix) {
|
||||
String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
|
||||
return prefix + "-" + dateStr;
|
||||
}
|
||||
|
||||
public boolean saveAll(List<IOTWorkOrder> list) {
|
||||
return iotWorkOrderMapper.saveOrUpdateBatch(list);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.maibu.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.maibu.core.business.Device;
|
||||
import com.maibu.core.domain.entity.SysRole;
|
||||
import com.maibu.core.domain.entity.SysSite;
|
||||
import com.maibu.core.domain.model.LoginUser;
|
||||
import com.maibu.exception.ServiceException;
|
||||
import com.maibu.mapper.SysRegionMapper;
|
||||
import com.maibu.mapper.SysSiteMapper;
|
||||
@@ -14,6 +17,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@@ -25,6 +29,9 @@ public class SysSiteService {
|
||||
@Autowired
|
||||
private SysRegionService sysRegionService;
|
||||
|
||||
@Autowired
|
||||
private ISysRoleService roleService;
|
||||
|
||||
public List<SysSite> list(SysSite site) {
|
||||
LambdaQueryWrapper<SysSite> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (site != null && !StringUtils.isEmpty(site.getSiteName())) {
|
||||
@@ -72,4 +79,25 @@ public class SysSiteService {
|
||||
return sysSiteMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
public List<SysSite> selectByUserId(LoginUser loginUser) {
|
||||
SysRole sysRole = roleService.selectRoleById(loginUser.getRoleId());
|
||||
if (sysRole != null) {
|
||||
String roleKey = sysRole.getRoleKey();
|
||||
LambdaQueryWrapper<SysSite> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (!StringUtils.isEmpty(roleKey)) {
|
||||
if ("manager".equals(roleKey)) {
|
||||
queryWrapper.eq(SysSite::getOrgId, loginUser.getOrgId());
|
||||
} else if ("siteManager".equals(roleKey)) {
|
||||
queryWrapper.eq(SysSite::getId, loginUser.getSiteId());
|
||||
} else if ("admin".equals(roleKey)) {
|
||||
|
||||
} else {
|
||||
queryWrapper.eq(SysSite::getId, loginUser.getSiteId());
|
||||
}
|
||||
return sysSiteMapper.selectList(queryWrapper);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user