fix(wms): apportionQty是打印的包数,materialQty是每包的物料数量

- 修改打印检查逻辑,从检查剩余数量改为检查是否已经打印过
- 调整打印数量设置,确保按包数打印而不是按物料数量
- 优化变量命名,提高代码可读性
master
zangch@mesnac.com 4 months ago
parent c94d198b14
commit fe7766ea3c

@ -218,10 +218,10 @@ public class WmsInstockDetailServiceImpl implements IWmsInstockDetailService {
throw new ServiceException("入库单-物料不存在");
}
// 检查是否已经打印过
BigDecimal printed = detail.getPrintedNum() != null ? detail.getPrintedNum() : BigDecimal.ZERO;
BigDecimal remaining = detail.getInstockQty().subtract(printed);
if (remaining.compareTo(BigDecimal.ONE) < 0) {// 剩余数量小于1时无法打印
throw new ServiceException("无剩余数量可打印");
if (printed.compareTo(BigDecimal.ZERO) > 0) {
throw new ServiceException("该入库单已经打印过,不允许重复打印");
}
int splitInt = bo.getSplitPackageCount() != null ? bo.getSplitPackageCount() : 1;
BigDecimal split = BigDecimal.valueOf(splitInt);
@ -255,13 +255,13 @@ public class WmsInstockDetailServiceImpl implements IWmsInstockDetailService {
String order = baseOrder + String.format("%03d", i);
String batchCode = generateBatchCode(bo, bo.getBatchCode(), order);
BigDecimal currentPackageQty = BigDecimal.valueOf(packageQtyList.get(i - 1));
BigDecimal currentPackageQty = BigDecimal.valueOf(packageQtyList.get(i - 1)); // 当前包的物料数量
WmsInstockPrint print = new WmsInstockPrint();
BeanUtils.copyProperties(bo, print);
print.setBatchCode(batchCode);
print.setApportionQty(currentPackageQty);
print.setMaterialQty(1L); // 每个包打印1份
print.setApportionQty(BigDecimal.ONE); // 打印的包数1包
print.setMaterialQty(currentPackageQty.longValue()); // 每包的物料数量
print.setInboundStatus("0"); // 入库状态(0-待入库,1-已入库,2-入库中)
print.setCreateBy(LoginHelper.getUsername());
print.setCreateTime(new Date());
@ -282,13 +282,13 @@ public class WmsInstockDetailServiceImpl implements IWmsInstockDetailService {
WmsInstockPrint print = new WmsInstockPrint();
BeanUtils.copyProperties(bo, print);
print.setBatchCode(batchCode);
print.setApportionQty(remaining);
print.setMaterialQty(copies.longValue()); // 转换为Long
print.setApportionQty(copies); // 打印的包数(打印份数)
print.setMaterialQty(detail.getInstockQty().longValue()); // 每包的物料数量(全部入库数量)
print.setInboundStatus("0");//入库状态(0-待入库,1-已入库,2-入库中)
wmsInstockPrintService.insertWmsInstockPrint(print);
totalPackaged = remaining;
totalPackaged = detail.getInstockQty(); // 全部入库数量都被打印
}
// 更新 printedNum

Loading…
Cancel
Save