|
@@ -1804,6 +1804,7 @@ public class StorageBillPrintServiceImpl extends ServiceImpl<StorageBillPrintMap
|
|
|
|
|
|
int delta = currentCount;
|
|
|
|
|
|
+ // 已打印记录时计算增量
|
|
|
if (alreadyPrinted) {
|
|
|
int previousCount = existingPrints.stream()
|
|
|
.mapToInt(print -> {
|
|
@@ -1863,18 +1864,17 @@ public class StorageBillPrintServiceImpl extends ServiceImpl<StorageBillPrintMap
|
|
|
int availableCount = vehicles.size();
|
|
|
int processCount = Math.min(fetchCount, availableCount);
|
|
|
|
|
|
- if (processCount == 0) {
|
|
|
+ // 堆垛处理(如果有可用垛位)
|
|
|
+ if (processCount > 0) {
|
|
|
+ List<StackingAndLoadingVehicles> selected = new ArrayList<>(vehicles.subList(0, processCount));
|
|
|
+ vehicles.subList(0, processCount).clear();
|
|
|
+
|
|
|
+ handleStackDepartCommon(billetHotsend, selected, addDTO, billetHotsendTypeConfig, storageBill);
|
|
|
+ } else {
|
|
|
skippedHeatNos.add(heatNo + "(可用垛位不足)");
|
|
|
- continue;
|
|
|
}
|
|
|
|
|
|
- List<StackingAndLoadingVehicles> selected = new ArrayList<>(vehicles.subList(0, processCount));
|
|
|
- vehicles.subList(0, processCount).clear();
|
|
|
-
|
|
|
- // 执行堆垛处理
|
|
|
- handleStackDepartCommon(billetHotsend, selected, addDTO, billetHotsendTypeConfig, storageBill);
|
|
|
-
|
|
|
- // 查询原始记录
|
|
|
+ // ========== 不论是否堆垛成功,统一处理 stackLength 扣减 ==========
|
|
|
LambdaQueryWrapper<BilletOriginalProductRecord> recordWrapper = new LambdaQueryWrapper<>();
|
|
|
recordWrapper.eq(BilletOriginalProductRecord::getHeatNo, heatNo)
|
|
|
.eq(BilletOriginalProductRecord::getCcmNo, addDTO.getCcmNo())
|
|
@@ -1883,18 +1883,17 @@ public class StorageBillPrintServiceImpl extends ServiceImpl<StorageBillPrintMap
|
|
|
|
|
|
BilletOriginalProductRecord originalRecord = billetOriginalProductRecordService.getOne(recordWrapper);
|
|
|
|
|
|
- // 只有 shift 和 shiftGroup 与 redis 中一致时才处理
|
|
|
if (originalRecord != null
|
|
|
&& StringUtils.equals(shift, originalRecord.getShift())
|
|
|
&& StringUtils.equals(shiftGroup, originalRecord.getShiftGroup())
|
|
|
&& isSameDay(originalRecord.getCreateTime(), new Date())) {
|
|
|
|
|
|
- // 扣减 stackLength 中支数
|
|
|
- if (StringUtils.isNotBlank(originalRecord.getStackLength())) {
|
|
|
+ if (fetchCount > 0 && StringUtils.isNotBlank(originalRecord.getStackLength())) {
|
|
|
try {
|
|
|
- List<Map<String, Object>> stackList = JSON.parseObject(originalRecord.getStackLength(),
|
|
|
- new TypeReference<List<Map<String, Object>>>() {
|
|
|
- });
|
|
|
+ List<Map<String, Object>> stackList = JSON.parseObject(
|
|
|
+ originalRecord.getStackLength(),
|
|
|
+ new TypeReference<List<Map<String, Object>>>() {}
|
|
|
+ );
|
|
|
|
|
|
for (Map<String, Object> item : stackList) {
|
|
|
Integer length = Integer.parseInt(item.get("stackingLength").toString());
|
|
@@ -1922,6 +1921,7 @@ public class StorageBillPrintServiceImpl extends ServiceImpl<StorageBillPrintMap
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
result.put("success", "堆垛保存完成");
|
|
|
if (!skippedHeatNos.isEmpty()) {
|
|
|
result.put("skipped", skippedHeatNos);
|