fix:装箱区空载具搬运逻辑

This commit is contained in:
zhouz
2026-05-06 15:30:35 +08:00
parent bf1ee590fb
commit 094d78ae45

View File

@@ -38,7 +38,7 @@ import java.util.stream.Collectors;
@Slf4j
@Component
@RequiredArgsConstructor
public class AutoSendVehicleToKzj extends Prun{
public class AutoSendVehicleToKzj extends Prun {
private final String THIS_CLASS = AutoSendVehicleToKzj.class.getName();
@Resource
@@ -63,7 +63,7 @@ public class AutoSendVehicleToKzj extends Prun{
try {
this.toKzjHcw();
this.sendVehicleToDjqOrGzq(IOSEnum.IS_NOTANDYES.code(""), null);
}catch (Exception ex){
} catch (Exception ex) {
log.error(ex.getMessage());
}
}
@@ -82,65 +82,63 @@ public class AutoSendVehicleToKzj extends Prun{
log.info("待检区或管制区->空载具缓存位补空任务正在创建被锁住。");
return;
}
List<String> taskTypes = new ArrayList(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)")));
List<SchBaseTask> existTask = this.taskService.getExistTasks(taskTypes);
if (existTask.size() <= 1) {
List<BstIvtPackageinfoivt> empPoints = this.packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code(""));
List<BstIvtPackageinfoivt> vehiclePoints = this.packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("待检"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
//如果待检区没有可用的空载具
if (CollectionUtils.isEmpty(vehiclePoints)){
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
List<String> taskTypes = new ArrayList(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)")));
List<SchBaseTask> existTask = this.taskService.getExistTasks(taskTypes);
if (existTask.size() <= 1) {
List<BstIvtPackageinfoivt> empPoints = this.packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code(""));
List<BstIvtPackageinfoivt> vehiclePoints = this.packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("装箱"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
//如果待检区没有可用的空载具
if (CollectionUtils.isEmpty(vehiclePoints)) {
/*List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
.eq(SchBaseTask::getTask_type, "010909"));
if (ObjectUtils.isEmpty(taskList)){
vehiclePoints = packageinfoivtService
.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
}
}
if (!CollectionUtils.isEmpty(empPoints) && !CollectionUtils.isEmpty(vehiclePoints) && existTask.size() < empPoints.size()) {
//增加空洞判断
//车 04 05 06
//☒☒口 ☒口☒ ☒口口:
if (existTask.size()==0 && empPoints.size() > 1 && vehiclePoints.size() > 1) {
for (int i = 0; i < 2; i++) {
BstIvtPackageinfoivt disPoint = empPoints.get(i);
int count = packageinfoivtService.count(new QueryWrapper<BstIvtPackageinfoivt>()
.lt("sort_seq", disPoint.getSort_seq())
.eq("point_status", PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
.eq("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")));
if (count>0){
log.warn("当前点位存在空洞的情况"+disPoint.getPoint_code());
return;
}
JSONObject task = new JSONObject();
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"));
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配"));
task.put("point_code1", vehiclePoints.get(i).getPoint_code());
task.put("point_code2", this.packageinfoivtService.getWaitPoint(disPoint.getBlock(), disPoint.getWait_point_type()));
task.put("point_code3", disPoint.getPoint_code());
this.djqToKzjhcwTask.createTask(task);
}
}else {
BstIvtPackageinfoivt disPoint = empPoints.get(0);
.eq(SchBaseTask::getTask_type, "010909"));*/
vehiclePoints = packageinfoivtService
.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
}
if (!CollectionUtils.isEmpty(empPoints) && !CollectionUtils.isEmpty(vehiclePoints) && existTask.size() < empPoints.size()) {
//增加空洞判断
//车 04 05 06
//☒☒口 ☒口☒ ☒口口:
if (existTask.size() == 0 && empPoints.size() > 1 && vehiclePoints.size() > 1) {
for (int i = 0; i < 2; i++) {
BstIvtPackageinfoivt disPoint = empPoints.get(i);
int count = packageinfoivtService.count(new QueryWrapper<BstIvtPackageinfoivt>()
.lt("sort_seq", disPoint.getSort_seq())
.eq("point_status", PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
.eq("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")));
if (count>0){
log.warn("当前点位存在空洞的情况"+disPoint.getPoint_code());
if (count > 0) {
log.warn("当前点位存在空洞的情况" + disPoint.getPoint_code());
return;
}
JSONObject task = new JSONObject();
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"));
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配"));
task.put("point_code1", vehiclePoints.get(0).getPoint_code());
task.put("point_code1", vehiclePoints.get(i).getPoint_code());
task.put("point_code2", this.packageinfoivtService.getWaitPoint(disPoint.getBlock(), disPoint.getWait_point_type()));
task.put("point_code3", disPoint.getPoint_code());
this.djqToKzjhcwTask.createTask(task);
}
} else {
BstIvtPackageinfoivt disPoint = empPoints.get(0);
int count = packageinfoivtService.count(new QueryWrapper<BstIvtPackageinfoivt>()
.lt("sort_seq", disPoint.getSort_seq())
.eq("point_status", PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
.eq("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")));
if (count > 0) {
log.warn("当前点位存在空洞的情况" + disPoint.getPoint_code());
return;
}
JSONObject task = new JSONObject();
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"));
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配"));
task.put("point_code1", vehiclePoints.get(0).getPoint_code());
task.put("point_code2", this.packageinfoivtService.getWaitPoint(disPoint.getBlock(), disPoint.getWait_point_type()));
task.put("point_code3", disPoint.getPoint_code());
this.djqToKzjhcwTask.createTask(task);
}
}
}
} finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
@@ -196,8 +194,8 @@ public class AutoSendVehicleToKzj extends Prun{
task.put("point_code2", djqEmpList.get(0).getPoint_code());
try {
sendDjqKzjTask.createTask(task);
}catch (Exception ex){
log.error(THIS_CLASS+"任务创建失败"+ex.getMessage());
} catch (Exception ex) {
log.error(THIS_CLASS + "任务创建失败" + ex.getMessage());
}
} else {
@@ -211,8 +209,6 @@ public class AutoSendVehicleToKzj extends Prun{
}
private void getPointCode(JSONObject task, String taskType) {
List<BstIvtPackageinfoivt> packageList;
if (taskType.equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"))) {