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())
|
.setFactoryNo(order.getFactoryNo())
|
||||||
.setWarehouseNo(item.getLgort())
|
.setWarehouseNo(item.getLgort())
|
||||||
.setNum(getNoScanOutQty(item))
|
.setNum(getNoScanOutQty(item))
|
||||||
.setBatchNo("")
|
|
||||||
.setBinNo(item.getLgobe())
|
.setBinNo(item.getLgobe())
|
||||||
.setMustScan(noScanningBaseControllerService.cannotOutNoScanning(item.getIdnrk(),order.getFactoryNo(),item.getLgort()))
|
.setMustScan(noScanningBaseControllerService.cannotOutNoScanning(item.getIdnrk(),order.getFactoryNo(),item.getLgort()))
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -231,7 +231,7 @@ public class InCostCenterBackController extends BaseController {
|
||||||
.setFactoryNo(order.getWerks())
|
.setFactoryNo(order.getWerks())
|
||||||
.setWarehouseNo(order.getLgort())
|
.setWarehouseNo(order.getLgort())
|
||||||
.setNum(item.getLeft())
|
.setNum(item.getLeft())
|
||||||
.setBatchNo("")
|
.setBatchNo(serialNumberControllerService.generateSerialNumber(46, 3))
|
||||||
.setBinNo(item.getLgpbe())
|
.setBinNo(item.getLgpbe())
|
||||||
.setMustScan(noScanningBaseControllerService.existsQrCode(item.getMatnr()))
|
.setMustScan(noScanningBaseControllerService.existsQrCode(item.getMatnr()))
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -239,7 +239,7 @@ public class InProduceBackController extends BaseController {
|
||||||
.setFactoryNo(order.getDwerk())
|
.setFactoryNo(order.getDwerk())
|
||||||
.setWarehouseNo(order.getLgort2())
|
.setWarehouseNo(order.getLgort2())
|
||||||
.setNum(item.getSqsl().subtract(item.getNum()))
|
.setNum(item.getSqsl().subtract(item.getNum()))
|
||||||
.setBatchNo("")
|
.setBatchNo(serialNumberControllerService.generateSerialNumber(46, 3))
|
||||||
.setBinNo(item.getLgpbe())
|
.setBinNo(item.getLgpbe())
|
||||||
.setMustScan(noScanningBaseControllerService.existsQrCode(item.getMatnr()))
|
.setMustScan(noScanningBaseControllerService.existsQrCode(item.getMatnr()))
|
||||||
)
|
)
|
||||||
|
|
@ -317,7 +317,10 @@ public class InProduceBackController extends BaseController {
|
||||||
.setLgort(ri.getWarehouseNo())
|
.setLgort(ri.getWarehouseNo())
|
||||||
.setMenge(data.getNum())
|
.setMenge(data.getNum())
|
||||||
.setMenge_T(item.getEnmng())
|
.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())) {
|
if (StrUtil.isNotBlank(data.getSerialNo())) {
|
||||||
input2.put(item.getRspos(), data.getSerialNo());
|
input2.put(item.getRspos(), data.getSerialNo());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -137,9 +137,6 @@ public class InProduceOrderController extends BaseController {
|
||||||
.setCreateBy(UserUtil.getUserName())
|
.setCreateBy(UserUtil.getUserName())
|
||||||
.setCreateTime(LocalDateTime.now());
|
.setCreateTime(LocalDateTime.now());
|
||||||
produceOrderService.save(order);
|
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()
|
WmsInProduceOrderItem parent = new WmsInProduceOrderItem()
|
||||||
.setId(IdUtil.getSnowflakeNextId())
|
.setId(IdUtil.getSnowflakeNextId())
|
||||||
.setOrderId(order.getId())
|
.setOrderId(order.getId())
|
||||||
|
|
@ -151,7 +148,7 @@ public class InProduceOrderController extends BaseController {
|
||||||
.setFactoryNo(request.getPwerk())
|
.setFactoryNo(request.getPwerk())
|
||||||
.setWarehouseNo(request.getLgort())
|
.setWarehouseNo(request.getLgort())
|
||||||
.setOrderNum(request.getPsmng())
|
.setOrderNum(request.getPsmng())
|
||||||
.setBatchNo(date + index)
|
.setBatchNo(genBatchNo())
|
||||||
.setSernr(request.getSernr())
|
.setSernr(request.getSernr())
|
||||||
.setWorkbenchNo(request.getWorkbenchNo())
|
.setWorkbenchNo(request.getWorkbenchNo())
|
||||||
.setModelNo(request.getModelNo());
|
.setModelNo(request.getModelNo());
|
||||||
|
|
@ -219,6 +216,14 @@ public class InProduceOrderController extends BaseController {
|
||||||
return ApiResult.success(order.getId());
|
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 搜索参数
|
* @param request 搜索参数
|
||||||
|
|
@ -441,7 +446,7 @@ public class InProduceOrderController extends BaseController {
|
||||||
.setFactoryNo(item.getFactoryNo())
|
.setFactoryNo(item.getFactoryNo())
|
||||||
.setWarehouseNo(item.getWarehouseNo())
|
.setWarehouseNo(item.getWarehouseNo())
|
||||||
.setNum(item.getNum())
|
.setNum(item.getNum())
|
||||||
.setBatchNo(NoUtil.getBatchNo(item.getBatchNo()))
|
.setBatchNo(genBatchNo())
|
||||||
.setBinNo(item.getBinNos())
|
.setBinNo(item.getBinNos())
|
||||||
.setMustScan(noScanningBaseControllerService.existsQrCode(item.getMaterialNo()))
|
.setMustScan(noScanningBaseControllerService.existsQrCode(item.getMaterialNo()))
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -425,7 +425,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
||||||
.setFactoryNo(order.getDwerk())
|
.setFactoryNo(order.getDwerk())
|
||||||
.setWarehouseNo(order.getLgort2())
|
.setWarehouseNo(order.getLgort2())
|
||||||
.setNum(item.getLeftNum())
|
.setNum(item.getLeftNum())
|
||||||
.setBatchNo("")
|
.setBatchNo(serialNumberControllerService.generateSerialNumber(46, 3))
|
||||||
.setBinNo(item.getLgpbe())
|
.setBinNo(item.getLgpbe())
|
||||||
.setMustScan(noScanningBaseControllerService.existsQrCode(item.getMatnr()))
|
.setMustScan(noScanningBaseControllerService.existsQrCode(item.getMatnr()))
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ public class BasdeSerialNumberControllerService {
|
||||||
maxAttempts = 5, // 最大重试次数(包括第一次调用)
|
maxAttempts = 5, // 最大重试次数(包括第一次调用)
|
||||||
backoff = @Backoff(delay = 1000) // 重试间隔1秒
|
backoff = @Backoff(delay = 1000) // 重试间隔1秒
|
||||||
)
|
)
|
||||||
public String generateSerialNumber(Integer businessType) {
|
public String generateSerialNumber(Integer businessType, Integer suffixLen) {
|
||||||
String currentDate = LocalDate.now().format(DATE_FORMATTER);
|
String currentDate = LocalDate.now().format(DATE_FORMATTER);
|
||||||
|
|
||||||
BasdeSerialNumber serialNumber = basdeSerialNumberService.lambdaQuery()
|
BasdeSerialNumber serialNumber = basdeSerialNumberService.lambdaQuery()
|
||||||
|
|
@ -43,6 +43,15 @@ public class BasdeSerialNumberControllerService {
|
||||||
serialNumber.setCurrentDateStr(currentDate);
|
serialNumber.setCurrentDateStr(currentDate);
|
||||||
basdeSerialNumberService.updateById(serialNumber);
|
basdeSerialNumberService.updateById(serialNumber);
|
||||||
// 格式化为4位数字,不足补零
|
// 格式化为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