This commit is contained in:
psh
2024-06-18 14:08:14 +08:00
parent 56b83f9532
commit c2576e1e30
5 changed files with 144 additions and 132 deletions

View File

@@ -117,7 +117,7 @@ public class GHCMLTask extends AbstractTask {
task.setGroup_id(setGroupPlate(jsonObject));
// 设置等待点并修改创建成功状态
// task.setNext_wait_point(point.getPoint_code());
task.setPoint_code2(point.getPoint_code());
task.setPoint_code2("DDD");
task.setTask_status(TaskStatus.CREATED.getCode());
task.setRemark("");
TaskUtils.setUpdateByAcs(task);
@@ -126,10 +126,6 @@ public class GHCMLTask extends AbstractTask {
PointUtils.setUpdateByAcs(point);
pointService.updateById(point);
//任务创建后锁住起点
startPoint.setIng_task_code(task.getTask_code());
pointService.updateById(startPoint);
}
/**
@@ -152,6 +148,10 @@ public class GHCMLTask extends AbstractTask {
.eq(SchBasePoint::getRow_num, sameMaterialPoints.getRow_num())
.eq(SchBasePoint::getIs_used, true)
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
// 当前执行的任务为空或者NULL有数据表示锁住
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, ""))
.orderByAsc(SchBasePoint::getCol_num), false);
if (ObjectUtil.isNotEmpty(point)) {
return point;
@@ -299,54 +299,61 @@ public class GHCMLTask extends AbstractTask {
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("任务:[" + task_id + "]不存在!");
}
String waitPoint = task.getNext_wait_point();
if (ObjectUtil.isEmpty(waitPoint)) {
throw new BadRequestException("找不到任务:[" + task_id + "]等待点!");
}
if (ObjectUtil.isNotEmpty(task.getPoint_code2())) {
throw new BadRequestException("任务:[" + task_id + "]已请求过!");
}
SchBasePoint waitPointObj = pointService.getById(waitPoint);
SchBasePoint result;
// 找到这排对应的准确货位,
// hint: 需要考虑前后空,中间有货的情况,有货之后的即使是空也不能放。
// 寻找有货的数据
List<SchBasePoint> points = pointService.list(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code, waitPointObj.getRegion_code())
.eq(SchBasePoint::getRow_num, waitPointObj.getRow_num())
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
.eq(SchBasePoint::getIs_used, true)
.orderByDesc(SchBasePoint::getIn_order_seq));
if (points.size() > 0) {
SchBasePoint basePoint = points.get(0);
// 找到物料位置的下一个位置
result = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code, waitPointObj.getRegion_code())
.eq(SchBasePoint::getRow_num, waitPointObj.getRow_num())
.eq(SchBasePoint::getCol_num, basePoint.getCol_num() - 1)
// 当前执行的任务为空或者NULL有数据表示锁住
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, ""))
.eq(SchBasePoint::getIs_used, true));
if (ObjectUtil.isEmpty(result)) {
throw new BadRequestException("点位错误");
}
} else {
// 空的话代表这排是新的一排,找个位置就行
points = pointService.list(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code, waitPointObj.getRegion_code())
.eq(SchBasePoint::getRow_num, waitPointObj.getRow_num())
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
// 当前执行的任务为空或者NULL有数据表示锁住
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
.or()
.eq(SchBasePoint::getIng_task_code, ""))
.eq(SchBasePoint::getIs_used, true)
.orderByAsc(SchBasePoint::getIn_order_seq));
// 获取第一条
result = points.get(0);
// String waitPoint = task.getNext_wait_point();
// if (ObjectUtil.isEmpty(waitPoint)) {
// throw new BadRequestException("找不到任务:[" + task_id + "]等待点!");
// }
if (!"DDD".equals(task.getPoint_code2())) {
log.info("任务号{}已请求过二次分配,直接返回已分配地址{}",task_id,task.getPoint_code2());
return task.getPoint_code2();
}
// SchBasePoint waitPointObj = pointService.getById(waitPoint);
// SchBasePoint result;
// // 找到这排对应的准确货位,
// // hint: 需要考虑前后空,中间有货的情况,有货之后的即使是空也不能放。
// // 寻找有货的数据
// List<SchBasePoint> points = pointService.list(new LambdaQueryWrapper<SchBasePoint>()
// .eq(SchBasePoint::getRegion_code, waitPointObj.getRegion_code())
// .eq(SchBasePoint::getRow_num, waitPointObj.getRow_num())
// .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
// .eq(SchBasePoint::getIs_used, true)
// .orderByDesc(SchBasePoint::getIn_order_seq));
// if (points.size() > 0) {
// SchBasePoint basePoint = points.get(0);
// // 找到物料位置的下一个位置
// result = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
// .eq(SchBasePoint::getRegion_code, waitPointObj.getRegion_code())
// .eq(SchBasePoint::getRow_num, waitPointObj.getRow_num())
// .eq(SchBasePoint::getCol_num, basePoint.getCol_num() - 1)
// // 当前执行的任务为空或者NULL有数据表示锁住
// .and(la -> la.isNull(SchBasePoint::getIng_task_code)
// .or()
// .eq(SchBasePoint::getIng_task_code, ""))
// .eq(SchBasePoint::getIs_used, true));
// if (ObjectUtil.isEmpty(result)) {
// throw new BadRequestException("点位错误");
// }
// } else {
// // 空的话代表这排是新的一排,找个位置就行
// points = pointService.list(new LambdaQueryWrapper<SchBasePoint>()
// .eq(SchBasePoint::getRegion_code, waitPointObj.getRegion_code())
// .eq(SchBasePoint::getRow_num, waitPointObj.getRow_num())
// .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
// // 当前执行的任务为空或者NULL有数据表示锁住
// .and(la -> la.isNull(SchBasePoint::getIng_task_code)
// .or()
// .eq(SchBasePoint::getIng_task_code, ""))
// .eq(SchBasePoint::getIs_used, true)
// .orderByAsc(SchBasePoint::getIn_order_seq));
// // 获取第一条
// result = points.get(0);
// }
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
List<String> nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(","))
.collect(Collectors.toList());
JSONObject jsonObject = JSONObject.parseObject(task.getRequest_param());
SchBasePoint result = findNextPoint(nextRegionStr, jsonObject);
// 锁住货位点
PointUtils.setUpdateByAcs(result);
result.setIng_task_code(task.getTask_code());