opt:增加点位库存表启用状态过滤查询

This commit is contained in:
2024-02-02 16:58:33 +08:00
parent 39024a6484
commit 91df60b647
3 changed files with 74 additions and 69 deletions

View File

@@ -102,9 +102,10 @@ public class ZxqTask extends AbstractAcsTask {
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()));
//todo 3.空木箱出库任务中,回调判断装箱区是否存在木箱号对应的子卷,如果存在,就创建搬运任务
//todo 3.刘先源的空木箱出库任务完成状态更新时,判断装箱区是否存在木箱号对应的子卷,如果存在,就创建搬运任务
//4.查询子卷对应的包装关系表,判断装箱位的木箱号是否为子卷对应的木箱号,是,创建搬运任务到装箱位,否,什么都不做
PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService.getOne(new LambdaUpdateWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false);
PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService
.getOne(new LambdaUpdateWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false);
if (pdmBiSubpackagerelation != null) {
//查询目标点位信息
BstIvtPackageinfoivt zxqPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_code, schBaseTask.getPoint_code2()));

View File

@@ -62,7 +62,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@@ -98,71 +98,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private MzhcwTask mzhcwTask;
/**
* 成品子卷到达一楼输送线
*/
@Override
public JSONObject sendProductToFirstFloor(JSONObject whereJson) {
log.info("sendProductToFirstFloor--------------------------" + whereJson.toString());
JSONObject result = new JSONObject();
String task_code1 = whereJson.getString("task_code1");
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(StringUtils.isNotBlank(task_code1), SchBaseTask::getTask_code, task_code1));
if (schBaseTask == null) {
throw new BadRequestException("接口sendProductToFirstFloor任务号为空");
}
// JSONObject whereJson 应该传子卷信息,子卷等级,载具号,任务号,车间号
// 先查询满轴缓存位是否有可用库位,有创建搬运任务
// 任务完成创建空载具补充到输送线桁架任务子卷搬运至待检区或或管制区agv任务
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
// 这个情况是有agv任务在搬去待检区或管制区的路上还没有更新任务状态需要查询是否有这种任务等这个任务更新完后
// 再补发之前创建的输送线到满轴缓存位任务;
//1.查询满轴缓存位是否有空位
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
JSONObject jo = new JSONObject();
//todo 添加任务类型
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
//一楼到输送线任务的目标点为当前位置,为起点
jo.put("point_code1", schBaseTask.getPoint_code2());
//任意一个满轴缓存位为终点
jo.put("point_code2", bstIvtPackageinfoivtList.get(0).getPoint_code());
//获取子卷号
jo.put("vehicle_code", whereJson.getString("container_name1"));
if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) {
jo.put("isSend", true);
mzhcwTask.createTask(jo);
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
return result;
} else {
//满轴缓存位点位
List<BstIvtPackageinfoivt> packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")));
//todo 查找正在搬运到待检区的任务,假设只有一个,现场其实有多个车正在搬运过去
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
//执行中
.eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())
.and(
r -> r.in(SchBaseTask::getPoint_code1, packageinfoivtList)
));
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
List<SchBaseTask> existTaskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
//是否存在已创建的目标点相同的未下发的任务
.eq(SchBaseTask::getPoint_code2, taskList.get(0).getPoint_code1())
.eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode()));
if (CollectionUtils.isEmpty(existTaskList)) {
jo.put("point_code2", taskList.get(0).getPoint_code1());
jo.put("isSend", false);
mzhcwTask.createTask(jo);
}
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
return result;
}
}
/**
* task_id任务标识
* task_code任务编码
@@ -1753,4 +1688,72 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
}
/**
* 成品子卷到达一楼输送线
*/
@Override
public JSONObject sendProductToFirstFloor(JSONObject whereJson) {
log.info("sendProductToFirstFloor--------------------------" + whereJson.toString());
JSONObject result = new JSONObject();
String task_code1 = whereJson.getString("task_code1");
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(StringUtils.isNotBlank(task_code1), SchBaseTask::getTask_code, task_code1));
if (schBaseTask == null) {
throw new BadRequestException("接口sendProductToFirstFloor任务号为空");
}
// JSONObject whereJson 应该传子卷信息,子卷等级,载具号,任务号,车间号
// 先查询满轴缓存位是否有可用库位,有创建搬运任务
// 任务完成创建空载具补充到输送线桁架任务子卷搬运至待检区或或管制区agv任务
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
// 这个情况是有agv任务在搬去待检区或管制区的路上还没有更新任务状态需要查询是否有这种任务等这个任务更新完后
// 再补发之前创建的输送线到满轴缓存位任务;
//1.查询满轴缓存位是否有空位
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
JSONObject jo = new JSONObject();
//todo 添加任务类型
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
//一楼到输送线任务的目标点为当前位置,为起点
jo.put("point_code1", schBaseTask.getPoint_code2());
//任意一个满轴缓存位为终点
jo.put("point_code2", bstIvtPackageinfoivtList.get(0).getPoint_code());
//获取子卷号
jo.put("vehicle_code", whereJson.getString("container_name1"));
if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) {
jo.put("isSend", true);
mzhcwTask.createTask(jo);
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
return result;
} else {
//满轴缓存位点位
List<BstIvtPackageinfoivt> packageinfoivtList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")));
//todo 查找正在搬运到待检区的任务,假设只有一个,现场其实有多个车正在搬运过去
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
//执行中
.eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())
.and(
r -> r.in(SchBaseTask::getPoint_code1, packageinfoivtList)
));
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
List<SchBaseTask> existTaskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
//是否存在已创建的目标点相同的未下发的任务
.eq(SchBaseTask::getPoint_code2, taskList.get(0).getPoint_code1())
.eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode()));
if (CollectionUtils.isEmpty(existTaskList)) {
jo.put("point_code2", taskList.get(0).getPoint_code1());
jo.put("isSend", false);
mzhcwTask.createTask(jo);
}
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
return result;
}
}
}

View File

@@ -1587,7 +1587,8 @@ public class MesToLmsServiceImpl implements MesToLmsService {
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区"))
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
//子卷信息
BstIvtPackageinfoivt containerInfo =
bstIvtPackageinfoivtList.stream().filter(r -> r.getContainer_name().equals(containerName)).collect(Collectors.toList()).get(0);