From 5667b92cd4e5d736122853b2c060e0d7048d921c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Fri, 12 Jun 2026 15:14:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(serial-number):=20=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E5=BA=8F=E5=88=97=E5=8F=B7=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E6=89=B9=E6=AC=A1=E5=8F=B7=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为generateSerialNumber方法添加suffixLen参数支持可变长度后缀 - 在序列号服务中实现可配置长度的数字补零功能 - 移除组件出库控制器中的空批次号设置 - 在成本中心回退、生产回退和生产订单盈余控制器中实现序列号生成 - 将批次号生成逻辑重构为独立的genBatchNo方法 - 优化流处理中的lambda表达式格式化 - 统一操作类型常量的格式化表示 --- .../controller/ComponentOutboundController.java | 1 - .../controller/InCostCenterBackController.java | 2 +- .../admin/controller/InProduceBackController.java | 9 ++++++--- .../controller/InProduceOrderController.java | 15 ++++++++++----- .../InProduceOrderSurplusController.java | 2 +- .../BasdeSerialNumberControllerService.java | 13 +++++++++++-- 6 files changed, 29 insertions(+), 13 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java index e12eef1f..b1ca729e 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/ComponentOutboundController.java @@ -433,7 +433,6 @@ public class ComponentOutboundController extends BaseController { .setFactoryNo(order.getFactoryNo()) .setWarehouseNo(item.getLgort()) .setNum(getNoScanOutQty(item)) - .setBatchNo("") .setBinNo(item.getLgobe()) .setMustScan(noScanningBaseControllerService.cannotOutNoScanning(item.getIdnrk(),order.getFactoryNo(),item.getLgort())) ) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java index 580b7978..3305e902 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java @@ -231,7 +231,7 @@ public class InCostCenterBackController extends BaseController { .setFactoryNo(order.getWerks()) .setWarehouseNo(order.getLgort()) .setNum(item.getLeft()) - .setBatchNo("") + .setBatchNo(serialNumberControllerService.generateSerialNumber(46, 3)) .setBinNo(item.getLgpbe()) .setMustScan(noScanningBaseControllerService.existsQrCode(item.getMatnr())) ) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceBackController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceBackController.java index 29cb569a..3c686b59 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceBackController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceBackController.java @@ -239,7 +239,7 @@ public class InProduceBackController extends BaseController { .setFactoryNo(order.getDwerk()) .setWarehouseNo(order.getLgort2()) .setNum(item.getSqsl().subtract(item.getNum())) - .setBatchNo("") + .setBatchNo(serialNumberControllerService.generateSerialNumber(46, 3)) .setBinNo(item.getLgpbe()) .setMustScan(noScanningBaseControllerService.existsQrCode(item.getMatnr())) ) @@ -317,7 +317,10 @@ public class InProduceBackController extends BaseController { .setLgort(ri.getWarehouseNo()) .setMenge(data.getNum()) .setMenge_T(item.getEnmng()) - .setMeins(item.getMeins()), (e, i) -> { e.setMenge(e.getMenge().add(i.getMenge())); return e; }); + .setMeins(item.getMeins()), (e, i) -> { + e.setMenge(e.getMenge().add(i.getMenge())); + return e; + }); if (StrUtil.isNotBlank(data.getSerialNo())) { input2.put(item.getRspos(), data.getSerialNo()); } @@ -486,7 +489,7 @@ public class InProduceBackController extends BaseController { ); Map> dmaps = records.stream().collect(Collectors.groupingBy(InMaterialScanRecord::getKey7)); OptRecordDTO optRecordDTO = new OptRecordDTO(); - optRecordDTO.setOperationType((short)1) + optRecordDTO.setOperationType((short) 1) .setOrderId(ticket.getNo()); optRecordService.add(optRecordDTO); Zwm3a11VO vo = sapService.zwm3a11(new Zwm3a11QO() diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java index 2baa1bed..f231eb89 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java @@ -137,9 +137,6 @@ public class InProduceOrderController extends BaseController { .setCreateBy(UserUtil.getUserName()) .setCreateTime(LocalDateTime.now()); produceOrderService.save(order); - String date = DateTimeUtil.format(LocalDate.now(), "yyMMdd"); - stringRedisTemplate.opsForValue().setIfAbsent("index:batchNo:" + date, "0", 24 - LocalDateTime.now().getHour(), TimeUnit.HOURS); - String index = StrUtil.padPre(String.valueOf(stringRedisTemplate.opsForValue().increment("index:batchNo:" + date)), 4, "0"); WmsInProduceOrderItem parent = new WmsInProduceOrderItem() .setId(IdUtil.getSnowflakeNextId()) .setOrderId(order.getId()) @@ -151,7 +148,7 @@ public class InProduceOrderController extends BaseController { .setFactoryNo(request.getPwerk()) .setWarehouseNo(request.getLgort()) .setOrderNum(request.getPsmng()) - .setBatchNo(date + index) + .setBatchNo(genBatchNo()) .setSernr(request.getSernr()) .setWorkbenchNo(request.getWorkbenchNo()) .setModelNo(request.getModelNo()); @@ -219,6 +216,14 @@ public class InProduceOrderController extends BaseController { return ApiResult.success(order.getId()); } + private String genBatchNo() { + String date = DateTimeUtil.format(LocalDate.now(), "yyMMdd"); + stringRedisTemplate.opsForValue() + .setIfAbsent("index:batchNo:" + date, "0", 24 - LocalDateTime.now().getHour(), TimeUnit.HOURS); + String index = StrUtil.padPre(String.valueOf(stringRedisTemplate.opsForValue().increment("index:batchNo:" + date)), 4, "0"); + return date + index; + } + /** * 搜索 * @param request 搜索参数 @@ -441,7 +446,7 @@ public class InProduceOrderController extends BaseController { .setFactoryNo(item.getFactoryNo()) .setWarehouseNo(item.getWarehouseNo()) .setNum(item.getNum()) - .setBatchNo(NoUtil.getBatchNo(item.getBatchNo())) + .setBatchNo(genBatchNo()) .setBinNo(item.getBinNos()) .setMustScan(noScanningBaseControllerService.existsQrCode(item.getMaterialNo())) ) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderSurplusController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderSurplusController.java index fed21977..7dbd0851 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderSurplusController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderSurplusController.java @@ -425,7 +425,7 @@ public class InProduceOrderSurplusController extends BaseController { .setFactoryNo(order.getDwerk()) .setWarehouseNo(order.getLgort2()) .setNum(item.getLeftNum()) - .setBatchNo("") + .setBatchNo(serialNumberControllerService.generateSerialNumber(46, 3)) .setBinNo(item.getLgpbe()) .setMustScan(noScanningBaseControllerService.existsQrCode(item.getMatnr())) ) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BasdeSerialNumberControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BasdeSerialNumberControllerService.java index 2bdf7fb6..30118545 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BasdeSerialNumberControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/BasdeSerialNumberControllerService.java @@ -24,7 +24,7 @@ public class BasdeSerialNumberControllerService { maxAttempts = 5, // 最大重试次数(包括第一次调用) backoff = @Backoff(delay = 1000) // 重试间隔1秒 ) - public String generateSerialNumber(Integer businessType) { + public String generateSerialNumber(Integer businessType, Integer suffixLen) { String currentDate = LocalDate.now().format(DATE_FORMATTER); BasdeSerialNumber serialNumber = basdeSerialNumberService.lambdaQuery() @@ -43,6 +43,15 @@ public class BasdeSerialNumberControllerService { serialNumber.setCurrentDateStr(currentDate); basdeSerialNumberService.updateById(serialNumber); // 格式化为4位数字,不足补零 - return serialNumber.getBusinessPrefixNumber() + currentDate + String.format("%04d", nextSerial); + return serialNumber.getBusinessPrefixNumber() + currentDate + + StrUtil.padPre(String.valueOf(nextSerial), suffixLen, '0'); + } + + @Retryable( + maxAttempts = 5, // 最大重试次数(包括第一次调用) + backoff = @Backoff(delay = 1000) // 重试间隔1秒 + ) + public String generateSerialNumber(Integer businessType) { + return generateSerialNumber(businessType, 4); } }