Commit 006361a0 zshaohui

1.排序问题修改

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