Commit 006361a0 zshaohui

1.排序问题修改

1 个父辈 102bc5b0
......@@ -534,7 +534,7 @@ public class LiteOrderCache {
Barcode subCode = barcode.getSubCodeByBarcode(ri);
if (subCode != null) {
log.info(subCode.getBarcode() + "对应的料箱为:" + barcode.getBarcode() + ",需要进行标记,进行出库,工单为:" + orderNo);
subCode = updateSubCodeAppendData(cacheOrder, orderItem, subCode);
subCode = updateSubCodeAppendData(cacheOrder, orderItem, subCode,subCode.getAmount());
//同时更新barcode和库位信息
barcode.UpdateSubCode(subCode);
......@@ -584,7 +584,14 @@ public class LiteOrderCache {
Barcode subCode = posBarcode.getSubCodeByBarcode(barcode.getBarcode());
if (subCode != null) {
log.info(subCode.getBarcode() + "对应的料箱为:" + posBarcode.getBarcode() + ",需要进行标记,进行出库,工单为:" + orderNo);
subCode = updateSubCodeAppendData(cacheOrder, orderItem, subCode);
int needOutNum = remainNum - assignNum;
if (subCode.getAmount() - needOutNum > 0){
subCode = updateSubCodeAppendData(cacheOrder, orderItem, subCode,needOutNum);
assignNum = assignNum + needOutNum;
} else {
subCode = updateSubCodeAppendData(cacheOrder, orderItem, subCode,subCode.getAmount());
assignNum = assignNum + subCode.getAmount();
}
//同时更新barcode和库位信息
posBarcode.UpdateSubCode(subCode);
barcodeManager.save(subCode);
......@@ -595,7 +602,6 @@ public class LiteOrderCache {
needOutPosId.add(pos.getId());
assignReelCount = assignReelCount + 1;
taskReelCount = taskReelCount + 1;
assignNum = assignNum + subCode.getAmount();
}
}
}
......@@ -627,7 +633,14 @@ public class LiteOrderCache {
Barcode subCode = posBarcode.getSubCodeByMpn(barcode.getMpn());
if (subCode != null) {
log.info(subCode.getBarcode() + "对应的料箱为:" + posBarcode.getBarcode() + ",需要进行标记,进行出库,工单为:" + orderNo);
subCode = updateSubCodeAppendData(cacheOrder, orderItem, subCode);
int needOutNum = remainNum - assignNum;
if (subCode.getAmount() - needOutNum > 0){
subCode = updateSubCodeAppendData(cacheOrder, orderItem, subCode,needOutNum);
assignNum = assignNum + needOutNum;
} else {
subCode = updateSubCodeAppendData(cacheOrder, orderItem, subCode,subCode.getAmount());
assignNum = assignNum + subCode.getAmount();
}
//同时更新barcode和库位信息
posBarcode.UpdateSubCode(subCode);
barcodeManager.save(subCode);
......@@ -638,7 +651,6 @@ public class LiteOrderCache {
needOutPosId.add(pos.getId());
assignReelCount = assignReelCount + 1;
taskReelCount = taskReelCount + 1;
assignNum = assignNum + subCode.getAmount();
}
}
}
......@@ -1164,11 +1176,11 @@ public class LiteOrderCache {
}
private Barcode updateSubCodeAppendData(LiteOrder cacheOrder, LiteOrderItem orderItem, Barcode subCode) {
private Barcode updateSubCodeAppendData(LiteOrder cacheOrder, LiteOrderItem orderItem, Barcode subCode,int needOutNum) {
subCode.updateAppendData("orderItemId", orderItem.getId());
subCode.updateAppendData("orderNo", cacheOrder.getOrderNo());
subCode.updateAppendData("orderId", cacheOrder.getId());
subCode.updateAppendData("awaiting", subCode.getAmount());
subCode.updateAppendData("awaiting", needOutNum);
return subCode;
}
......
......@@ -1350,31 +1350,45 @@ public class TaskService {
}
public List<Barcode> barcodeListByCheckOutType(CHECKOUT_TYPE checkoutType, List<Barcode> barcodeList) {
//按时间进行排序
if (CHECKOUT_TYPE.EXPIRE_FIRST.equals(checkoutType)) {//先过期先出
barcodeList = barcodeList.stream().sorted(Comparator.comparing(Barcode::getExpireDate,Comparator.naturalOrder())
.thenComparing(Barcode::getPutInDate,Comparator.naturalOrder())).collect(Collectors.toList());
} else if (CHECKOUT_TYPE.FIFO.equals(checkoutType)) {//严格的先进先出
barcodeList = barcodeList.stream().sorted(Comparator.comparing(Barcode::getPutInDate,Comparator.naturalOrder())
.thenComparing(Barcode::getUsedCount)).collect(Collectors.toList());
} else if (CHECKOUT_TYPE.USED_FIRST.equals(checkoutType)) {//尾料优先
barcodeList = barcodeList.stream().sorted(Comparator.comparing(Barcode::getAmount)
.thenComparing(Barcode::getPutInDate,Comparator.naturalOrder())).collect(Collectors.toList());
// 处理barcodeList为null的情况
if (barcodeList == null) {
return Collections.emptyList();
}
// 使用Comparator.nullsFirst或nullsLast处理可能的null值
Comparator<Barcode> comparator = null;
if (CHECKOUT_TYPE.EXPIRE_FIRST.equals(checkoutType)) {
// 先过期先出
comparator = Comparator.comparing(Barcode::getExpireDate, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Barcode::getPutInDate, Comparator.nullsFirst(Comparator.naturalOrder()));
} else if (CHECKOUT_TYPE.FIFO.equals(checkoutType)) {
// 严格的先进先出
comparator = Comparator.comparing(Barcode::getPutInDate, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Barcode::getUsedCount);
} else if (CHECKOUT_TYPE.USED_FIRST.equals(checkoutType)) {
// 尾料优先
comparator = Comparator.comparing(Barcode::getAmount, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Barcode::getPutInDate, Comparator.nullsFirst(Comparator.naturalOrder()));
} else if (CHECKOUT_TYPE.PRODUCE_DATE.equals(checkoutType)) {
barcodeList = barcodeList.stream().sorted(Comparator.comparing(Barcode::getProduceDate,Comparator.naturalOrder())
.thenComparing(Barcode::getAmount)
.thenComparing(Barcode::getPutInDate,Comparator.naturalOrder())).collect(Collectors.toList());
comparator = Comparator.comparing(Barcode::getProduceDate, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Barcode::getAmount, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Barcode::getPutInDate, Comparator.nullsFirst(Comparator.naturalOrder()));
} else if (CHECKOUT_TYPE.BATCH_FIRST.equals(checkoutType)) {
barcodeList = barcodeList.stream().sorted(Comparator.comparing(Barcode::getBatch,Comparator.naturalOrder())
.thenComparing(Barcode::getProduceDate,Comparator.naturalOrder())
.thenComparing(Barcode::getAmount)
.thenComparing(Barcode::getPutInDate,Comparator.naturalOrder())).collect(Collectors.toList());
} else {//效率优先
barcodeList = barcodeList.stream().sorted(Comparator.comparing(Barcode::getPutInDate,Comparator.naturalOrder())
.thenComparing(Barcode::getCreateDate))
.collect(Collectors.toList());
}
return barcodeList;
comparator = Comparator.comparing(Barcode::getBatch, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Barcode::getProduceDate, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Barcode::getAmount, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Barcode::getPutInDate, Comparator.nullsFirst(Comparator.naturalOrder()));
} else {
// 效率优先
comparator = Comparator.comparing(Barcode::getPutInDate, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Barcode::getCreateDate, Comparator.nullsFirst(Comparator.naturalOrder()));
}
return barcodeList.stream()
.filter(Objects::nonNull) // 过滤掉可能的null元素
.sorted(comparator)
.collect(Collectors.toList());
}
public void moveTaskToFinished(DataLog task) {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!