生产订单入库过账时,如果是清点件,则使用主物料信息过账

This commit is contained in:
曹鹏飞 2025-11-13 18:17:07 +08:00
parent e9da850ec3
commit 6d3c1b388b
2 changed files with 37 additions and 16 deletions

View File

@ -353,7 +353,6 @@ public class InProduceOrderController extends BaseController {
}
List<String> materialNos = new ArrayList<>();
List<InMaterialScanRecord> records = new ArrayList<>();
List<Zwm00Mb107QO> input1 = new ArrayList<>();
datas.forEach(it -> {
BigDecimal num = BigDecimal.ZERO;
InProduceOrderReceiveMaterialQO materialQO = request.getItems().stream().filter(q -> StrUtil.equals(q.getMaterialNo(), it.getMaterialNo())).findFirst().orElse(null);
@ -382,20 +381,6 @@ public class InProduceOrderController extends BaseController {
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
if (!order.getList()) {
Zwm00Mb107QO q = input1.stream().filter(ip -> StrUtil.equals(ip.getCHARG(), content.getBatchNo())).findFirst()
.orElseGet(() -> {
Zwm00Mb107QO qo = new Zwm00Mb107QO()
.setPWERK(it.getFactoryNo())
.setPSMNG(BigDecimal.ZERO)
.setAMEIN(it.getUnit())
.setLGORT(it.getWarehouseNo())
.setCHARG(content.getBatchNo());
input1.add(qo);
return qo;
});
q.setPSMNG(q.getPSMNG().add(content.getNum()));
}
}
if (num.compareTo(it.getNum()) != 0) {
materialNos.add(it.getMaterialNo());
@ -410,6 +395,37 @@ public class InProduceOrderController extends BaseController {
});
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(materialNos))
.throwMessage("以下物料的扫码数量与收货数量不一致:" + StrUtil.join(",", materialNos));
List<Zwm00Mb107QO> input1;
List<String> sernrs;
if (order.getList()) {
input1 = list.stream()
.filter(it -> Objects.equals(it.getParentId(), 0L))
.map(it -> new Zwm00Mb107QO()
.setPWERK(it.getFactoryNo())
.setPSMNG(it.getNum())
.setAMEIN(it.getUnit())
.setLGORT(it.getWarehouseNo())
.setCHARG(it.getBatchNo()))
.toList();
sernrs = list.stream()
.filter(it -> Objects.equals(it.getParentId(), 0L))
.map(InProduceOrderItemVO::getSernr)
.toList();
} else {
input1 = records.stream().collect(Collectors.groupingBy(InMaterialScanRecord::getBatchNo))
.entrySet()
.stream()
.map(kv -> new Zwm00Mb107QO()
.setPWERK(kv.getValue().get(0).getFactoryNo())
.setPSMNG(kv.getValue().stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
.setAMEIN(kv.getValue().get(0).getUnit())
.setLGORT(kv.getValue().get(0).getWarehouseNo())
.setCHARG(kv.getKey()))
.toList();
sernrs = records.stream()
.map(InMaterialScanRecord::getSerialNo)
.toList();
}
inventoryService.in(input1.stream().map(it -> new InventoryDTO()
.setMaterialNo(request.getItems().get(0).getMaterialNo())
.setNum(it.getPSMNG())
@ -419,7 +435,7 @@ public class InProduceOrderController extends BaseController {
);
inMaterialScanRecordRespository.saveAll(records);
//同步入库信息到SAP
Zwm00Mb107DTO dto = sapService.zwm00_mb107(order.getOrderNo(), UserUtil.getUserName(), input1, null);
Zwm00Mb107DTO dto = sapService.zwm00_mb107(order.getOrderNo(), UserUtil.getUserName(), input1, sernrs);
order.setMblnr(dto.getE_MBLNR());
order.setMjahr(dto.getE_MJAHR());
order.setState((short) 1);

View File

@ -60,4 +60,9 @@ public class InProduceOrderItemVO {
* 批次号
*/
private String batchNo;
/**
* 序列号
*/
private String sernr;
}