opt:去除一楼内包间所有任务下发ACS的子卷号

This commit is contained in:
2024-07-06 14:37:23 +08:00
parent fd1961181c
commit b2a1e57417
18 changed files with 92 additions and 93 deletions

View File

@@ -907,10 +907,10 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
.collect(Collectors.toList()); .collect(Collectors.toList());
//任务组id //任务组id
String groupId = deviceCode.substring(deviceCode.lastIndexOf("_") + 1); String groupId = deviceCode.substring(deviceCode.lastIndexOf("_") + 1);
RLock lock = redissonClient.getLock(groupId); // RLock lock = redissonClient.getLock(groupId);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); // boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { // try {
if (tryLock) { // if (tryLock) {
List<SchBaseTask> schBaseTaskList = new ArrayList<>(); List<SchBaseTask> schBaseTaskList = new ArrayList<>();
//确定起点,安装装箱组标识加入任务队列 //确定起点,安装装箱组标识加入任务队列
djqPoints.forEach(r -> { djqPoints.forEach(r -> {
@@ -938,14 +938,14 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
if (CollectionUtils.isNotEmpty(schBaseTaskList)) { if (CollectionUtils.isNotEmpty(schBaseTaskList)) {
taskQueue.addTasksToQueue(groupId, schBaseTaskList); taskQueue.addTasksToQueue(groupId, schBaseTaskList);
} }
} else { // } else {
log.info("待检区->装箱区任务队列正在创建被锁住。"); // log.info("待检区->装箱区任务队列正在创建被锁住。");
} // }
} finally { // } finally {
if (tryLock) { // if (tryLock) {
lock.unlock(); // lock.unlock();
} // }
} // }
} }

View File

@@ -74,9 +74,11 @@ public interface IschBaseTaskService extends IService<SchBaseTask> {
List<SchBaseTask> getTaskByPlanQzzNoAndDevice(String resourceName); List<SchBaseTask> getTaskByPlanQzzNoAndDevice(String resourceName);
List<SchBaseTask> getExistTasks(String taskType, String containerName);
List<SchBaseTask> getExistTasks(String taskType1, String taskType2, String taskType3,String containerName); /**
*校验相同任务类型
*/
List<SchBaseTask> getExistTasks(String taskType1, String taskType2, String taskType3);
} }

View File

@@ -3,10 +3,10 @@ package org.nl.b_lms.sch.task.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper; import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.task.service.IschBaseTaskService;
@@ -17,11 +17,7 @@ import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate; import java.util.*;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.Set;
/** /**
@@ -136,28 +132,18 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
} }
public List<SchBaseTask> getExistTasks(String taskType, String containerName) { public List<SchBaseTask> getExistTasks(String taskType1, String taskType2, String taskType3) {
return this.list(new LambdaUpdateWrapper<SchBaseTask>() LambdaQueryWrapper<SchBaseTask> queryWrapper = new LambdaQueryWrapper<>();
.eq(SchBaseTask::getTask_type, taskType) queryWrapper.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) queryWrapper.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""));
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))); List<String> taskTypes = new ArrayList<>(Arrays.asList(taskType1, taskType2, taskType3));
taskTypes.removeIf(StringUtils::isBlank);
if (!taskTypes.isEmpty()) {
queryWrapper.in(SchBaseTask::getTask_type, taskTypes);
}
return this.list(queryWrapper);
} }
public List<SchBaseTask> getExistTasks(String taskType1, String taskType2, String taskType3, String containerName) {
String startTime = LocalDate.now().atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
return this.list(new LambdaQueryWrapper<SchBaseTask>()
.and(
r -> r.eq(SchBaseTask::getTask_type, taskType1)
.or()
.eq(SchBaseTask::getTask_type, taskType2
).or()
.eq(SchBaseTask::getTask_type, taskType3
))
.eq(SchBaseTask::getVehicle_code, containerName)
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
);
}
} }

View File

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.dao.SchBaseTask;
@@ -73,7 +74,7 @@ public class DjqTask extends AbstractAcsTask {
.task_type(r.getAcs_task_type()) .task_type(r.getAcs_task_type())
.start_device_code(r.getPoint_code1()) .start_device_code(r.getPoint_code1())
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.product_area(r.getProduct_area()) .product_area(r.getProduct_area())
@@ -101,7 +102,9 @@ public class DjqTask extends AbstractAcsTask {
//1.改变起点点位状态,二次分配,取货完成就改起点库存 //1.改变起点点位状态,二次分配,取货完成就改起点库存
//packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); //packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//2.更新库存记录 //2.更新库存记录
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); //管制品重新质检
String ivtStatus = StringUtils.isBlank(schBaseTask.getRequest_param()) ? PackageInfoIvtEnum.IVT_STATUS.code("有子卷") : schBaseTask.getRequest_param();
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", ivtStatus).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
//3.更改任务状态为完成 //3.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//4.清除首次分配目标点位 //4.清除首次分配目标点位

View File

@@ -71,7 +71,7 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
.task_type(r.getAcs_task_type()) .task_type(r.getAcs_task_type())
.start_device_code(r.getPoint_code1()) .start_device_code(r.getPoint_code1())
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.product_area(r.getProduct_area()) .product_area(r.getProduct_area())

View File

@@ -67,7 +67,7 @@ public class GzqTask extends AbstractAcsTask {
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.start_device_code2(r.getPoint_code3()) .start_device_code2(r.getPoint_code3())
.next_device_code2(r.getPoint_code4()) .next_device_code2(r.getPoint_code4())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.product_area(r.getProduct_area()) .product_area(r.getProduct_area())
@@ -99,7 +99,7 @@ public class GzqTask extends AbstractAcsTask {
//2.改变起点点位状态 //2.改变起点点位状态
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//更新库存记录 //更新库存记录
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("管制品")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
//3.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务 //3.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务
// List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>() // List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
// //确定起点未下发 // //确定起点未下发

View File

@@ -71,7 +71,7 @@ public class GzqToKzjhcwTask extends AbstractAcsTask {
.task_type(r.getAcs_task_type()) .task_type(r.getAcs_task_type())
.start_device_code(r.getPoint_code1()) .start_device_code(r.getPoint_code1())
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.product_area(r.getProduct_area()) .product_area(r.getProduct_area())

View File

@@ -95,7 +95,7 @@ public class MzhcwTask extends AbstractAcsTask {
.next_device_code2(r.getPoint_code4()) .next_device_code2(r.getPoint_code4())
//四个点任务与两个点任务类型区分 //四个点任务与两个点任务类型区分
.agv_action_type(r.getVehicle_code2()) .agv_action_type(r.getVehicle_code2())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.product_area(r.getProduct_area()) .product_area(r.getProduct_area())
@@ -130,7 +130,7 @@ public class MzhcwTask extends AbstractAcsTask {
//4.创建空载具到输送线任务,完成后需要创建空载具缓存位->输送线任务 //4.创建空载具到输送线任务,完成后需要创建空载具缓存位->输送线任务
if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))) { if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))) {
//校验任务是否存在 //校验任务是否存在
List<SchBaseTask> existTask = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), schBaseTask.getVehicle_code()); List<SchBaseTask> existTask = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"),null,null);
if (CollectionUtils.isEmpty(existTask)) { if (CollectionUtils.isEmpty(existTask)) {
//如果是输送线->满轴缓存位任务 //如果是输送线->满轴缓存位任务
List<BstIvtPackageinfoivt> kzjPointList = packageinfoivtService List<BstIvtPackageinfoivt> kzjPointList = packageinfoivtService

View File

@@ -65,7 +65,7 @@ public class SendDjqKzjTask extends AbstractAcsTask {
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.start_device_code2(r.getPoint_code3()) .start_device_code2(r.getPoint_code3())
.next_device_code2(r.getPoint_code4()) .next_device_code2(r.getPoint_code4())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.product_area(r.getProduct_area()) .product_area(r.getProduct_area())

View File

@@ -65,7 +65,7 @@ public class SendGzqKzjTask extends AbstractAcsTask {
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.start_device_code2(r.getPoint_code3()) .start_device_code2(r.getPoint_code3())
.next_device_code2(r.getPoint_code4()) .next_device_code2(r.getPoint_code4())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.product_area(r.getProduct_area()) .product_area(r.getProduct_area())

View File

@@ -69,7 +69,7 @@ public class SsxDjwTask extends AbstractAcsTask {
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.start_device_code2(r.getPoint_code3()) .start_device_code2(r.getPoint_code3())
.next_device_code2(r.getPoint_code4()) .next_device_code2(r.getPoint_code4())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.agv_action_type(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")) .agv_action_type(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务"))

View File

@@ -84,7 +84,7 @@ public class ZxDjwTask extends AbstractAcsTask {
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.start_device_code2(r.getPoint_code3()) .start_device_code2(r.getPoint_code3())
.next_device_code2(r.getPoint_code4()) .next_device_code2(r.getPoint_code4())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.agv_action_type(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")) .agv_action_type(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务"))
.interaction_json(JSON.parseObject(r.getRequest_param())) .interaction_json(JSON.parseObject(r.getRequest_param()))
.priority(r.getPriority()) .priority(r.getPriority())

View File

@@ -95,7 +95,7 @@ public class ZxqTask extends AbstractAcsTask {
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.start_device_code2(r.getPoint_code3()) .start_device_code2(r.getPoint_code3())
.next_device_code2(r.getPoint_code4()) .next_device_code2(r.getPoint_code4())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.product_area(r.getProduct_area()) .product_area(r.getProduct_area())

View File

@@ -81,7 +81,7 @@ public class AutoExecuteWaitTask {
if (CollectionUtils.isEmpty(kzjPointList)) { if (CollectionUtils.isEmpty(kzjPointList)) {
return; return;
} }
List<SchBaseTask> existTaskList = taskService.getExistTasks(taskType, task.getVehicle_code()); List<SchBaseTask> existTaskList = taskService.getExistTasks(taskType,null,null);
if (existTaskList.size() > 1) { if (existTaskList.size() > 1) {
throw new BadRequestException("存在多个子卷号相同的任务!"); throw new BadRequestException("存在多个子卷号相同的任务!");
} }
@@ -100,7 +100,7 @@ public class AutoExecuteWaitTask {
return; return;
} }
//校验相同是否存在相同子卷号任务 //校验相同是否存在相同子卷号任务
List<SchBaseTask> existTaskList = taskService.getExistTasks(taskType, task.getVehicle_code()); List<SchBaseTask> existTaskList = taskService.getExistTasks(taskType,null,null);
//如果有就不创建,没有就创建 //如果有就不创建,没有就创建
if (existTaskList.size() > 1) { if (existTaskList.size() > 1) {
throw new BadRequestException("存在多个子卷号相同的任务!"); throw new BadRequestException("存在多个子卷号相同的任务!");

View File

@@ -8,6 +8,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask; import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.enums.PackageInfoIvtEnum;
import org.redisson.api.RLock; import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
@@ -61,6 +62,8 @@ public class AutoSendGzqToDjq {
} }
JSONObject task = new JSONObject(); JSONObject task = new JSONObject();
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("管制区->待检区")); task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("管制区->待检区"));
//区分管制品重新检测为合格品
task.put("request_param", PackageInfoIvtEnum.IVT_STATUS.code("合格品"));
task.put("vehicle_code", gzqPackageinfoivtList.get(0).getContainer_name()); task.put("vehicle_code", gzqPackageinfoivtList.get(0).getContainer_name());
task.put("point_code1", gzqPackageinfoivtList.get(0).getPoint_code()); task.put("point_code1", gzqPackageinfoivtList.get(0).getPoint_code());
task.put("point_code2", djqPackageinfoivtList.get(0).getPoint_code()); task.put("point_code2", djqPackageinfoivtList.get(0).getPoint_code());

View File

@@ -8,7 +8,6 @@ import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask; import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask;
import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.enums.PackageInfoIvtEnum;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -16,7 +15,6 @@ import javax.annotation.Resource;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -49,34 +47,34 @@ public class AutoSendToZxq {
*/ */
@SneakyThrows @SneakyThrows
public void sendDjqToZxq() { public void sendDjqToZxq() {
log.info(THIS_CLASS+"-待检区->装箱区定时任务开始执行扫描。"); log.info(THIS_CLASS + "-待检区->装箱区定时任务开始执行扫描。");
RLock lock = redissonClient.getLock(THIS_CLASS); // RLock lock = redissonClient.getLock(THIS_CLASS);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); // boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { // try {
if (tryLock) { // if (tryLock) {
//装箱区有空位,去待检区消费合格品子卷 //装箱区有空位,去待检区消费合格品子卷
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask( List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(
PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.POINT_STATUS.code("装箱区"),
PackageInfoIvtEnum.IVT_STATUS.code(""), PackageInfoIvtEnum.IVT_STATUS.code(""),
PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), "", ""); PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), "", "");
if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) { if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) {
Map<String, List<String>> ivtList = bstIvtPackageinfoivtList.stream() Map<String, List<String>> ivtList = bstIvtPackageinfoivtList.stream()
.collect(Collectors.groupingBy( .collect(Collectors.groupingBy(
BstIvtPackageinfoivt::getBlock, BstIvtPackageinfoivt::getBlock,
LinkedHashMap::new, LinkedHashMap::new,
Collectors.mapping(BstIvtPackageinfoivt::getPoint_code, Collectors.toList()) Collectors.mapping(BstIvtPackageinfoivt::getPoint_code, Collectors.toList())
)); ));
//taskQueueManager.processTasks(ivtList); //taskQueueManager.processTasks(ivtList);
taskQueue.processTasks(ivtList); taskQueue.processTasks(ivtList);
}
} else {
log.info("满轴->待检区agv自动搬运任务正在创建被锁住。");
}
} finally {
if (tryLock) {
lock.unlock();
}
} }
// } else {
// log.info("满轴->待检区agv自动搬运任务正在创建被锁住。");
// }
// } finally {
// if (tryLock) {
// lock.unlock();
// }
// }
} }
} }

View File

@@ -63,9 +63,11 @@ public class TaskQueue {
private void executeTask(SchBaseTask task, String pointCode) { private void executeTask(SchBaseTask task, String pointCode) {
if (task != null) { if (task != null) {
task.setPoint_code2(pointCode); task.setPoint_code2(pointCode);
log.info("待检区->装箱区agv任务编号为"+task.getTask_code()+",任务状态为:"+task.getTask_status()+"任务开始下发。");
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
taskService.updateById(task); taskService.updateById(task);
zxqTask.immediateNotifyAcs(null); zxqTask.immediateNotifyAcs(null);
log.info("待检区->装箱区agv任务编号为"+task.getTask_code()+",任务状态为:"+task.getTask_status()+"下发完成。");
//同步删除子卷包装关系 //同步删除子卷包装关系
LambdaQueryWrapper<PdmBiSubpackagerelation> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PdmBiSubpackagerelation> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PdmBiSubpackagerelation::getContainer_name, task.getVehicle_code()); queryWrapper.eq(PdmBiSubpackagerelation::getContainer_name, task.getVehicle_code());

View File

@@ -1837,7 +1837,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
} }
} else { } else {
//如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发; //如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
List<SchBaseTask> existTaskList = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"),containerName); List<SchBaseTask> existTaskList = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
//如果有就不创建,没有就创建 //如果有就不创建,没有就创建
if (CollectionUtils.isEmpty(existTaskList)) { if (CollectionUtils.isEmpty(existTaskList)) {
//只确定起点NBJ1002 //只确定起点NBJ1002
@@ -1849,10 +1849,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
jo2.put("task_status", TaskStatusEnum.SURE_START.getCode()); jo2.put("task_status", TaskStatusEnum.SURE_START.getCode());
jo2.put("is_send", false); jo2.put("is_send", false);
mzhcwTask.createTask(jo2); mzhcwTask.createTask(jo2);
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
}else{
log.info("已存在任务编号为:"+existTaskList.get(0).getTask_code()+"未完成的桁架任务,请检查!");
result.put("status", HttpStatus.BAD_REQUEST.value());
result.put("message", "已存在任务编号为:"+existTaskList.get(0).getTask_code()+"未完成的桁架任务,请检查!");
} }
result.put("data", containerName);
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
} }
} else { } else {
log.info("二楼到一楼成品子卷到达一楼输送线任务正在创建被锁住。"); log.info("二楼到一楼成品子卷到达一楼输送线任务正在创建被锁住。");
@@ -1875,13 +1878,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
result.put("data", containerName); result.put("data", containerName);
//如果空载具缓存位确少空载具,创建输送线->满轴缓存位两个点任务 //如果空载具缓存位确少空载具,创建输送线->满轴缓存位两个点任务
List<SchBaseTask> existTaskList1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"),containerName); List<SchBaseTask> existTaskList1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
if (CollectionUtils.isEmpty(existTaskList1)) { if (CollectionUtils.isEmpty(existTaskList1)) {
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
jo.put("is_send", true); jo.put("is_send", true);
mzhcwTask.createTask(jo); mzhcwTask.createTask(jo);
//空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务 //空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务
List<SchBaseTask> existTask1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), containerName); List<SchBaseTask> existTask1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"),null,null);
if (CollectionUtils.isEmpty(existTask1)) { if (CollectionUtils.isEmpty(existTask1)) {
JSONObject jo1 = new JSONObject(); JSONObject jo1 = new JSONObject();
//创建确定终点任务 //创建确定终点任务
@@ -1896,8 +1899,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
result.put("status", HttpStatus.OK.value()); result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!"); result.put("message", "反馈成功!");
} else { } else {
log.info("已存在任务编号为:"+existTaskList1.get(0).getTask_code()+"未完成的桁架任务,请检查!");
result.put("message", "已存在任务编号为:"+existTaskList1.get(0).getTask_code()+"未完成的桁架任务,请检查!");
result.put("status", HttpStatus.BAD_REQUEST.value()); result.put("status", HttpStatus.BAD_REQUEST.value());
result.put("message", "该子卷号:" + containerName + "桁架任务已存在,二楼下一楼存在相同子卷号,请检查!");
} }
return result; return result;
} }
@@ -1906,7 +1910,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
result.put("data", containerName); result.put("data", containerName);
// 创建前先判断是否有已创建相同任务 // 创建前先判断是否有已创建相同任务
List<SchBaseTask> existTaskList1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), containerName); List<SchBaseTask> existTaskList1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
if (CollectionUtils.isEmpty(existTaskList1)) { if (CollectionUtils.isEmpty(existTaskList1)) {
jo.put("point_code3", pointCode3); jo.put("point_code3", pointCode3);
//终点为输送线点位 //终点为输送线点位
@@ -1917,8 +1921,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
result.put("status", HttpStatus.OK.value()); result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!"); result.put("message", "反馈成功!");
} else { } else {
log.info("已存在任务编号为:"+existTaskList1.get(0).getTask_code()+"未完成的桁架任务,请检查!");
result.put("message", "已存在任务编号为:"+existTaskList1.get(0).getTask_code()+"未完成的桁架任务,请检查!");
result.put("status", HttpStatus.BAD_REQUEST.value()); result.put("status", HttpStatus.BAD_REQUEST.value());
result.put("message", "该子卷号:" + containerName + "桁架任务已存在,二楼下一楼存在相同子卷号,请检查!");
} }
return result; return result;
} }