feat(serial-number): 扩展序列号生成功能并优化批次号管理
- 为generateSerialNumber方法添加suffixLen参数支持可变长度后缀 - 在序列号服务中实现可配置长度的数字补零功能 - 移除组件出库控制器中的空批次号设置 - 在成本中心回退、生产回退和生产订单盈余控制器中实现序列号生成 - 将批次号生成逻辑重构为独立的genBatchNo方法 - 优化流处理中的lambda表达式格式化 - 统一操作类型常量的格式化表示
This commit is contained in:
parent
30741347d7
commit
5667b92cd4
|
|
@ -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()))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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()))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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<String, List<InMaterialScanRecord>> 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()
|
||||
|
|
|
|||
|
|
@ -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()))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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()))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue