#update
This commit is contained in:
@@ -2,16 +2,14 @@ package com.maibu.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.maibu.core.business.*;
|
||||
import com.maibu.core.business.device.NettyDevice;
|
||||
import com.maibu.core.domain.entity.SysSite;
|
||||
import com.maibu.core.domain.model.LoginUser;
|
||||
import com.maibu.core.enums.DeviceTaskStaus;
|
||||
import com.maibu.dto.DevicePlanStatisticsDTO;
|
||||
import com.maibu.dto.DevicePlanTaskStatisticsDTO;
|
||||
import com.maibu.dto.DeviceTaskQueryDTO;
|
||||
import com.maibu.dto.DeviceWorkStatisticsDTO;
|
||||
import com.maibu.mapper.DeviceMapper;
|
||||
import com.maibu.mapper.DevicePlanMapper;
|
||||
import com.maibu.mapper.DevicePlanTaskMapper;
|
||||
import com.maibu.mapper.WorkRecordMapper;
|
||||
import com.maibu.dto.*;
|
||||
import com.maibu.manager.DeviceSessionManager;
|
||||
import com.maibu.mapper.*;
|
||||
import com.maibu.memory.GlobalMemory;
|
||||
import com.maibu.memory.SiteMemory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -24,6 +22,7 @@ import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -44,14 +43,22 @@ public class DeviceTaskService {
|
||||
private WorkRecordMapper workRecordMapper;
|
||||
|
||||
|
||||
@Autowired
|
||||
private DeviceSessionManager deviceSessionManager;
|
||||
|
||||
@Autowired
|
||||
private SysSiteMapper sysSiteMapper;
|
||||
|
||||
|
||||
public int insertOrUpdate(DevicePlan devicePlan, LoginUser loginUser) {
|
||||
Long id = devicePlan.getId();
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(devicePlan.getOrgId(), devicePlan.getSiteId());
|
||||
if (id != null) {
|
||||
devicePlan.setUpdateBy(loginUser.getUsername());
|
||||
devicePlan.setUpdateTime(LocalDateTime.now());
|
||||
transferDays(devicePlan);
|
||||
int i = devicePlanMapper.updateById(devicePlan);
|
||||
SiteMemory.addDevicePlan(devicePlan);
|
||||
siteMemory.addDevicePlan(devicePlan);
|
||||
return i;
|
||||
} else {
|
||||
devicePlan.setTaskStaus(DeviceTaskStaus.NEW);
|
||||
@@ -59,7 +66,7 @@ public class DeviceTaskService {
|
||||
devicePlan.setCreateBy(loginUser.getUsername());
|
||||
transferDays(devicePlan);
|
||||
int i = devicePlanMapper.insert(devicePlan);
|
||||
SiteMemory.addDevicePlan(devicePlan);
|
||||
siteMemory.addDevicePlan(devicePlan);
|
||||
return i;
|
||||
}
|
||||
}
|
||||
@@ -109,19 +116,44 @@ public class DeviceTaskService {
|
||||
}
|
||||
}
|
||||
|
||||
public List<DevicePlan> getSiteDevicePlan(Long siteId, LocalDate startTime, LocalDate endTime, String deviceId, DeviceTaskStaus taskStaus) {
|
||||
if (siteId != null) {
|
||||
LambdaQueryWrapper<DevicePlan> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(DevicePlan::getSiteId, siteId);
|
||||
if (taskStaus != null) {
|
||||
queryWrapper.eq(DevicePlan::getTaskStaus, taskStaus);
|
||||
}
|
||||
if (!StringUtils.isEmpty(deviceId)) {
|
||||
queryWrapper.eq(DevicePlan::getDeviceId, deviceId);
|
||||
}
|
||||
if (startTime != null && endTime != null) {
|
||||
queryWrapper.between(DevicePlan::getCreateTime, startTime, endTime);
|
||||
}
|
||||
return transferDevicePlanData(devicePlanMapper.selectList(queryWrapper));
|
||||
} else {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
public List<DevicePlan> getDeviceTask(DeviceTaskQueryDTO dto) {
|
||||
if (dto != null) {
|
||||
LambdaQueryWrapper<DevicePlan> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (dto.getUserId() != null) {
|
||||
queryWrapper.eq(DevicePlan::getUserId, dto.getUserId());
|
||||
}
|
||||
if (dto.getDeviceId() != null) {
|
||||
if (!StringUtils.isEmpty(dto.getDeviceId())) {
|
||||
queryWrapper.eq(DevicePlan::getDeviceId, dto.getDeviceId());
|
||||
}
|
||||
if (dto.getTaskStaus() != null) {
|
||||
queryWrapper.eq(DevicePlan::getTaskStaus, dto.getTaskStaus());
|
||||
}
|
||||
if (dto.getPlanName() != null) {
|
||||
if (dto.getOrgId() != null) {
|
||||
queryWrapper.eq(DevicePlan::getOrgId, dto.getOrgId());
|
||||
}
|
||||
if (dto.getSiteId() != null) {
|
||||
queryWrapper.eq(DevicePlan::getSiteId, dto.getSiteId());
|
||||
}
|
||||
if (!StringUtils.isEmpty(dto.getPlanName())) {
|
||||
queryWrapper.like(DevicePlan::getPlanName, dto.getPlanName());
|
||||
}
|
||||
queryWrapper.eq(DevicePlan::getDelFlag, 0);
|
||||
@@ -143,9 +175,9 @@ public class DeviceTaskService {
|
||||
public int delete(Long id) {
|
||||
DevicePlan planTask = devicePlanMapper.selectById(id);
|
||||
if (planTask != null) {
|
||||
planTask.setDelFlag(1);
|
||||
SiteMemory.removeDevicePlan(planTask);
|
||||
return devicePlanMapper.updateById(planTask);
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(planTask.getOrgId(), planTask.getSiteId());
|
||||
siteMemory.removeDevicePlan(planTask);
|
||||
return devicePlanMapper.deleteById(id);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -181,7 +213,7 @@ public class DeviceTaskService {
|
||||
LambdaQueryWrapper<DevicePlan> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.ge(DevicePlan::getCreateTime, monthStart)
|
||||
.le(DevicePlan::getCreateTime, monthEnd)
|
||||
.eq(DevicePlan::getUserId,userId);
|
||||
.eq(DevicePlan::getUserId, userId);
|
||||
List<DevicePlan> devicePlans = transferDevicePlanData(devicePlanMapper.selectList(queryWrapper));
|
||||
if (!CollectionUtils.isEmpty(devicePlans)) {
|
||||
List<LocalDate> dates = getMonthDays();
|
||||
@@ -235,17 +267,17 @@ public class DeviceTaskService {
|
||||
);
|
||||
// 4. 构建 LambdaQueryWrapper 进行范围查询
|
||||
LambdaQueryWrapper<DevicePlan> query = new LambdaQueryWrapper<>();
|
||||
query.eq(DevicePlan::getUserId,userId);
|
||||
query.eq(DevicePlan::getUserId, userId);
|
||||
List<DevicePlan> devicePlans = transferDevicePlanData(devicePlanMapper.selectList(query));
|
||||
if(CollectionUtils.isEmpty(devicePlans)) return new ArrayList<>();
|
||||
if (CollectionUtils.isEmpty(devicePlans)) return new ArrayList<>();
|
||||
List<Long> planIds = devicePlans.stream().map(DevicePlan::getId).collect(Collectors.toList());
|
||||
if(CollectionUtils.isEmpty(planIds)) return new ArrayList<>();
|
||||
if (CollectionUtils.isEmpty(planIds)) return new ArrayList<>();
|
||||
|
||||
LambdaQueryWrapper<DevicePlanTask> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// 核心:筛选 createTime 大于等于起始时间,且小于等于结束时间
|
||||
queryWrapper.ge(DevicePlanTask::getCreateTime, monthStart)
|
||||
.le(DevicePlanTask::getCreateTime, monthEnd)
|
||||
.in(DevicePlanTask::getPlanId,planIds);
|
||||
.in(DevicePlanTask::getPlanId, planIds);
|
||||
List<DevicePlanTask> devicePlanTasks = transferDeviceTaskData(devicePlanTaskMapper.selectList(queryWrapper));
|
||||
if (!CollectionUtils.isEmpty(devicePlanTasks)) {
|
||||
List<LocalDate> dates = getMonthDays();
|
||||
@@ -275,7 +307,7 @@ public class DeviceTaskService {
|
||||
.eq(DevicePlanTask::getTaskStaus, DeviceTaskStaus.EXECUTING);
|
||||
List<DevicePlanTask> devicePlanTasks = devicePlanTaskMapper.selectList(queryWrapper);
|
||||
Long routId = CollectionUtils.isEmpty(devicePlanTasks) ? null : devicePlanTasks.get(0).getRouteId();
|
||||
return routId == null ? null : workRecordMapper.selectWorkRecordById(routId);
|
||||
return routId == null ? null : workRecordMapper.selectById(routId);
|
||||
}
|
||||
|
||||
|
||||
@@ -304,22 +336,56 @@ public class DeviceTaskService {
|
||||
|
||||
public List<DevicePlanTask> deviceTaskPool(DeviceTaskQueryDTO dto) {
|
||||
List<DevicePlanTask> list = new ArrayList<>();
|
||||
SiteMemory.devicePlanTaskPrepareMap.values().forEach(list::addAll);
|
||||
list.addAll(SiteMemory.devicePlanTaskExecuteMap.values());
|
||||
if (dto != null) {
|
||||
if (dto.getTaskStaus() != null) {
|
||||
list = list.stream().filter(x -> x.getTaskStaus().equals(dto.getTaskStaus())).collect(Collectors.toList());
|
||||
}
|
||||
if (!StringUtils.isEmpty(dto.getDeviceId())) {
|
||||
list = list.stream().filter(x -> x.getDeviceId().equals(dto.getDeviceId())).collect(Collectors.toList());
|
||||
}
|
||||
if (dto.getPlanId() != null) {
|
||||
list = list.stream().filter(x -> x.getPlanId().equals(dto.getPlanId())).collect(Collectors.toList());
|
||||
if (dto.getOrgId() == null) {
|
||||
SysSite site = sysSiteMapper.selectById(dto.getSiteId());
|
||||
if (site != null) {
|
||||
dto.setOrgId(site.getOrgId());
|
||||
}
|
||||
}
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(dto.getOrgId(), dto.getSiteId());
|
||||
siteMemory.devicePlanTaskPrepareMap.values().forEach(list::addAll);
|
||||
list.addAll(SiteMemory.devicePlanTaskExecuteMap.values());
|
||||
if (dto.getTaskStaus() != null) {
|
||||
list = list.stream().filter(x -> x.getTaskStaus().equals(dto.getTaskStaus())).collect(Collectors.toList());
|
||||
}
|
||||
if (!StringUtils.isEmpty(dto.getDeviceId())) {
|
||||
list = list.stream().filter(x -> x.getDeviceId().equals(dto.getDeviceId())).collect(Collectors.toList());
|
||||
}
|
||||
if (dto.getPlanId() != null) {
|
||||
list = list.stream().filter(x -> x.getPlanId().equals(dto.getPlanId())).collect(Collectors.toList());
|
||||
}
|
||||
if (dto.getSiteId() != null) {
|
||||
list = list.stream().filter(x -> x.getSiteId().equals(dto.getSiteId())).collect(Collectors.toList());
|
||||
}
|
||||
if (dto.getOrgId() != null) {
|
||||
list = list.stream().filter(x -> x.getOrgId().equals(dto.getOrgId())).collect(Collectors.toList());
|
||||
}
|
||||
if (!StringUtils.isEmpty(dto.getDeviceId())) {
|
||||
list = list.stream().filter(x -> x.getDeviceId().equals(dto.getDeviceId())).collect(Collectors.toList());
|
||||
}
|
||||
return transferDeviceTaskData(list);
|
||||
}
|
||||
|
||||
public List<DevicePlanTask> getSiteDeviceTaskHistory(DeviceTaskQueryDTO dto) {
|
||||
LambdaQueryWrapper<DevicePlanTask> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (dto.getSiteId() != null) {
|
||||
queryWrapper.eq(DevicePlanTask::getSiteId, dto.getSiteId());
|
||||
}
|
||||
if (dto.getOrgId() != null) {
|
||||
queryWrapper.eq(DevicePlanTask::getOrgId, dto.getOrgId());
|
||||
}
|
||||
if (dto.getTaskStaus() != null) {
|
||||
queryWrapper.eq(DevicePlanTask::getTaskStaus, dto.getTaskStaus());
|
||||
}
|
||||
if (dto.getPlanId() != null) {
|
||||
queryWrapper.eq(DevicePlanTask::getPlanId, dto.getPlanId());
|
||||
}
|
||||
if (!StringUtils.isEmpty(dto.getDeviceId())) {
|
||||
queryWrapper.eq(DevicePlanTask::getDeviceId, dto.getDeviceId());
|
||||
}
|
||||
return transferDeviceTaskData(devicePlanTaskMapper.selectList(queryWrapper));
|
||||
}
|
||||
|
||||
|
||||
public List<DevicePlan> transferDevicePlanData(List<DevicePlan> list) {
|
||||
if (CollectionUtils.isEmpty(list)) return list;
|
||||
@@ -339,4 +405,95 @@ public class DeviceTaskService {
|
||||
return list;
|
||||
}
|
||||
|
||||
public boolean createDeviceTask(DeviceTaskCommandDTO dto, String username) {
|
||||
DevicePlanTask task = new DevicePlanTask();
|
||||
task.setOrgId(dto.getOrgId());
|
||||
task.setSiteId(dto.getSiteId());
|
||||
task.setTaskStaus(DeviceTaskStaus.NEW);
|
||||
task.setDeviceId(dto.getDeviceId());
|
||||
task.setCreateBy(username);
|
||||
task.setCreateTime(LocalDateTime.now());
|
||||
task.setRouteId(dto.getRouteId());
|
||||
task.setStartTime(dto.getStartTime());
|
||||
boolean result = devicePlanTaskMapper.saveOrUpdate(task);
|
||||
if (dto.getOrgId() == null) {
|
||||
SysSite site = sysSiteMapper.selectById(dto.getSiteId());
|
||||
if (site != null) {
|
||||
dto.setOrgId(site.getOrgId());
|
||||
}
|
||||
}
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(task.getOrgId(), task.getSiteId());
|
||||
siteMemory.addDevicePlanPrepare(task);
|
||||
return result;
|
||||
}
|
||||
|
||||
public boolean cancelTask(DeviceTaskCommandDTO dto, String username) {
|
||||
if (!StringUtils.isEmpty(dto.getDeviceId())) {
|
||||
NettyDevice device = deviceSessionManager.getDevice(dto.getDeviceId());
|
||||
if (device != null) {
|
||||
return device.cancelTask();
|
||||
}
|
||||
} else {
|
||||
Long taskId = dto.getTaskId();
|
||||
Long siteId = dto.getSiteId();
|
||||
Long orgId = dto.getOrgId();
|
||||
DevicePlanTask devicePlanTask = devicePlanTaskMapper.selectById(taskId);
|
||||
if (devicePlanTask != null) {
|
||||
devicePlanTask.setUpdateTime(LocalDateTime.now());
|
||||
devicePlanTask.setTaskStaus(DeviceTaskStaus.CANCELED);
|
||||
devicePlanTask.setUpdateBy(username);
|
||||
devicePlanTaskMapper.saveOrUpdate(devicePlanTask);
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(orgId, siteId);
|
||||
siteMemory.removeDevicePlanPrepare(devicePlanTask);
|
||||
siteMemory.removeDevicePlanExecute(devicePlanTask.getDeviceId());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//todo 完善
|
||||
public boolean pauseTask(DeviceTaskCommandDTO dto, String username) {
|
||||
if (!StringUtils.isEmpty(dto.getDeviceId())) {
|
||||
NettyDevice device = deviceSessionManager.getDevice(dto.getDeviceId());
|
||||
if (device != null) {
|
||||
return device.pauseTask();
|
||||
}
|
||||
} else {
|
||||
Long taskId = dto.getTaskId();
|
||||
DevicePlanTask devicePlanTask = devicePlanTaskMapper.selectById(taskId);
|
||||
if (devicePlanTask != null) {
|
||||
devicePlanTask.setUpdateTime(LocalDateTime.now());
|
||||
devicePlanTask.setTaskStaus(DeviceTaskStaus.PAUSE);
|
||||
devicePlanTask.setUpdateBy(username);
|
||||
devicePlanTaskMapper.saveOrUpdate(devicePlanTask);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//todo 完善
|
||||
public boolean recoveryTask(DeviceTaskCommandDTO dto, String username) {
|
||||
if (!StringUtils.isEmpty(dto.getDeviceId())) {
|
||||
NettyDevice device = deviceSessionManager.getDevice(dto.getDeviceId());
|
||||
if (device != null) {
|
||||
return device.recoveryTask();
|
||||
}
|
||||
} else {
|
||||
Long taskId = dto.getTaskId();
|
||||
Long siteId = dto.getSiteId();
|
||||
Long orgId = dto.getOrgId();
|
||||
DevicePlanTask devicePlanTask = devicePlanTaskMapper.selectById(taskId);
|
||||
SiteMemory siteMemory = GlobalMemory.getSiteMemory(orgId, siteId);
|
||||
DevicePlanTask executeTask = siteMemory.getDeviceExecuteTask(devicePlanTask.getDeviceId());
|
||||
if (Objects.equals(devicePlanTask.getId(), executeTask.getId())) {
|
||||
devicePlanTask.setUpdateTime(LocalDateTime.now());
|
||||
devicePlanTask.setTaskStaus(DeviceTaskStaus.EXECUTING);
|
||||
devicePlanTask.setUpdateBy(username);
|
||||
devicePlanTaskMapper.saveOrUpdate(devicePlanTask);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user