fix:批量更新优化

This commit is contained in:
zhangzq
2026-08-03 17:14:39 +08:00
parent 079d066f8f
commit 29149ab39a

View File

@@ -238,6 +238,12 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
if (count>0){ if (count>0){
throw new BadRequestException("下推失败,单据状态不为已分配不能下推"); throw new BadRequestException("下推失败,单据状态不为已分配不能下推");
} }
final int disCount = this.count(new LambdaQueryWrapper<PmDemand>()
.eq(PmDemand::getId, pmDemandDtos.stream().map(PmDemandDto::getId).collect(Collectors.toList()))
.eq(PmDemand::getStatus,DemandStatus.DIS.getValue()));
if (disCount<pmDemandDtos.size()){
throw new BadRequestException("下推失败,单据状态不为已分配不能下推");
}
// 一次性分成两组 // 一次性分成两组
Param zdStorParam = iSysParamService.findByCode(EXTConstant.ZD_STOR_SET); Param zdStorParam = iSysParamService.findByCode(EXTConstant.ZD_STOR_SET);
List ZD_STOR_SET; List ZD_STOR_SET;
@@ -260,44 +266,51 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
.map(PmDemandDto::getId).collect(Collectors.toList()))); .map(PmDemandDto::getId).collect(Collectors.toList())));
} }
if (!CollectionUtils.isEmpty(zdDemands)) { if (!CollectionUtils.isEmpty(zdDemands)) {
for (PmDemandDto zdDemand : zdDemands) { Map<String, List<PmDemandDto>> groupByWorkOrder = zdDemands.stream()
.collect(Collectors.groupingBy(PmDemandDto::getWorkOrder));
//判断是否存在其他工单的数据是则保存
for (String workOrder : groupByWorkOrder.keySet()) {
final List<PmDemandDto> demandDtos = groupByWorkOrder.get(workOrder);
final int orderCount = this.count(new LambdaQueryWrapper<PmDemand>()
.eq(PmDemand::getWork_order, workOrder));
if (orderCount > demandDtos.size()){
throw new BadRequestException("工单"+workOrder+"下推中鼎失败,存在未勾选的单子");
}
List<PmDemandDto> zd = new ArrayList<>();
List<AddInvParam> addInvParams = new ArrayList<>(); List<AddInvParam> addInvParams = new ArrayList<>();
List<InFinishParam> inFinishParams = new ArrayList<>(); List<InFinishParam> inFinishParams = new ArrayList<>();
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<Structattr>() for (PmDemandDto zdDemand : demandDtos) {
.eq(Structattr::getSect_code, zdDemand.getTargetHouseCode()) Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<Structattr>()
.isNotNull(Structattr::getStoragevehicle_code) .eq(Structattr::getSect_code, zdDemand.getTargetHouseCode())
.last("limit 1")); .isNotNull(Structattr::getStoragevehicle_code)
AddInvParam addInvParam = new AddInvParam(); .last("limit 1"));
addInvParam.setMaterialCode(zdDemand.getSkuCode()); AddInvParam addInvParam = new AddInvParam();
addInvParam.setUnitId("1"); addInvParam.setMaterialCode(zdDemand.getSkuCode());
addInvParam.setUnitName(zdDemand.getUnit()); addInvParam.setUnitId("1");
addInvParam.setPcsn("1"); addInvParam.setUnitName(zdDemand.getUnit());
addInvParam.setStoragevehicleCode(structattr.getStoragevehicle_code()); addInvParam.setPcsn("1");
addInvParam.setQty(zdDemand.getQty()); addInvParam.setStoragevehicleCode(structattr.getStoragevehicle_code());
addInvParam.setStorCode(structattr.getStor_code()); addInvParam.setQty(zdDemand.getQty());
addInvParam.setSectCode(structattr.getSect_code()); addInvParam.setStorCode(structattr.getStor_code());
addInvParam.setStructCode(structattr.getStruct_code()); addInvParam.setSectCode(structattr.getSect_code());
addInvParams.add(addInvParam); addInvParam.setStructCode(structattr.getStruct_code());
InFinishParam inFinishParam = new InFinishParam(); addInvParam.setRemark("中鼎需求单变动");
BeanUtils.copyProperties(addInvParam,inFinishParam); addInvParams.add(addInvParam);
inFinishParam.setRemark("中鼎需求单变动"); InFinishParam inFinishParam = new InFinishParam();
inFinishParams.add(inFinishParam); BeanUtils.copyProperties(addInvParam,inFinishParam);
List<PmDemandDto> zd = new ArrayList<>(); inFinishParams.add(inFinishParam);
zd.add(zdDemand); zd.add(zdDemand);
}
wmsToZDWmdService.syncDemandOrder(zd); wmsToZDWmdService.syncDemandOrder(zd);
try { try {
iStInventoryService.changeInventory(InventoryChangeType.ADD_INV, addInvParams); iStInventoryService.changeInventory(InventoryChangeType.ADD_INV, addInvParams);
iStInventoryService.changeInventory(InventoryChangeType.IN_FINISH, inFinishParams); iStInventoryService.changeInventory(InventoryChangeType.IN_FINISH, inFinishParams);
this.update(new LambdaUpdateWrapper<PmDemand>() this.update(new LambdaUpdateWrapper<PmDemand>()
.set(PmDemand::getStatus,DemandStatus.FINISH.getValue()) .set(PmDemand::getStatus,DemandStatus.FINISH.getValue())
.in(PmDemand::getId,zdDemands.stream() .in(PmDemand::getId,demandDtos.stream()
.map(PmDemandDto::getId).collect(Collectors.toList()))); .map(PmDemandDto::getId).collect(Collectors.toList())));
}catch (Exception ex){ }catch (Exception ex){
log.error("回传中鼎成功,WMS库存变动失败"+ex.getMessage()); log.error("回传中鼎成功,WMS库存变动失败"+ex.getMessage());
this.update(new LambdaUpdateWrapper<PmDemand>()
.set(PmDemand::getStatus,DemandStatus.CANCEL.getValue())
.in(PmDemand::getId,zdDemands.stream()
.map(PmDemandDto::getId).collect(Collectors.toList())));
} }
} }
} }