fix:增加二次分配任务完成情况校验

This commit is contained in:
2024-07-11 09:39:11 +08:00
parent 8884ef7c59
commit 52cc5d7dfd

View File

@@ -6,6 +6,7 @@ import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.tasks.first_floor_area.DjqToKzjhcwTask;
import org.nl.b_lms.sch.tasks.first_floor_area.GzqToKzjhcwTask;
@@ -15,8 +16,6 @@ import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -34,6 +33,8 @@ public class AutoSendVehicleToKzj {
private DjqToKzjhcwTask djqToKzjhcwTask;
@Resource
private GzqToKzjhcwTask gzqToKzjhcwTask;
@Resource
private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper;
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
@@ -85,41 +86,17 @@ public class AutoSendVehicleToKzj {
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock) {
//存在空载具缓存位无空载具的点位
List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), null, PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
if (CollectionUtils.isEmpty(kzjIvtList)) {
return;
}
JSONObject task = new JSONObject();
String pointCode1 = null;
String pointCode2;
boolean hasEmptyVehicle;
//判断有空载具
List<BstIvtPackageinfoivt> vehicleList = kzjIvtList.stream()
.filter(n -> n.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("空载具")))
.sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq))
.collect(Collectors.toList());
//判断空载具点位外层是否有空载具
if (CollectionUtils.isNotEmpty(vehicleList)) {
BigDecimal sortSeq = vehicleList.get(0).getSort_seq();
hasEmptyVehicle = kzjIvtList.stream()
.noneMatch(r -> r.getSort_seq().compareTo(sortSeq) < 0 &&
r.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("空载具")));
//有阻挡
if (!hasEmptyVehicle) {
List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), null, PackageInfoIvtEnum.TASK_POINT_TYPE.code("空载具放货"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"));
if (CollectionUtils.isNotEmpty(kzjIvtList)) {
pointCode2 = kzjIvtList.get(0).getPoint_code();
if (pointCode2 == null) {
return;
} else {
List<BstIvtPackageinfoivt> pointCodeList = kzjIvtList.stream()
.filter(r -> r.getSort_seq().compareTo(sortSeq) < 0)
.sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq).reversed())
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(pointCodeList)) {
return;
}
pointCode2 = pointCodeList.get(0).getPoint_code();
}
} else {
pointCode2 = kzjIvtList.get(0).getPoint_code();
return;
}
//待检区有空载具且过滤未完成任务
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), "");