fix:批量更新优化
This commit is contained in:
@@ -238,6 +238,12 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
|
||||
if (count>0){
|
||||
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);
|
||||
List ZD_STOR_SET;
|
||||
@@ -260,44 +266,51 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
|
||||
.map(PmDemandDto::getId).collect(Collectors.toList())));
|
||||
}
|
||||
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<InFinishParam> inFinishParams = new ArrayList<>();
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<Structattr>()
|
||||
.eq(Structattr::getSect_code, zdDemand.getTargetHouseCode())
|
||||
.isNotNull(Structattr::getStoragevehicle_code)
|
||||
.last("limit 1"));
|
||||
AddInvParam addInvParam = new AddInvParam();
|
||||
addInvParam.setMaterialCode(zdDemand.getSkuCode());
|
||||
addInvParam.setUnitId("1");
|
||||
addInvParam.setUnitName(zdDemand.getUnit());
|
||||
addInvParam.setPcsn("1");
|
||||
addInvParam.setStoragevehicleCode(structattr.getStoragevehicle_code());
|
||||
addInvParam.setQty(zdDemand.getQty());
|
||||
addInvParam.setStorCode(structattr.getStor_code());
|
||||
addInvParam.setSectCode(structattr.getSect_code());
|
||||
addInvParam.setStructCode(structattr.getStruct_code());
|
||||
addInvParams.add(addInvParam);
|
||||
InFinishParam inFinishParam = new InFinishParam();
|
||||
BeanUtils.copyProperties(addInvParam,inFinishParam);
|
||||
inFinishParam.setRemark("中鼎需求单变动");
|
||||
inFinishParams.add(inFinishParam);
|
||||
List<PmDemandDto> zd = new ArrayList<>();
|
||||
zd.add(zdDemand);
|
||||
for (PmDemandDto zdDemand : demandDtos) {
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<Structattr>()
|
||||
.eq(Structattr::getSect_code, zdDemand.getTargetHouseCode())
|
||||
.isNotNull(Structattr::getStoragevehicle_code)
|
||||
.last("limit 1"));
|
||||
AddInvParam addInvParam = new AddInvParam();
|
||||
addInvParam.setMaterialCode(zdDemand.getSkuCode());
|
||||
addInvParam.setUnitId("1");
|
||||
addInvParam.setUnitName(zdDemand.getUnit());
|
||||
addInvParam.setPcsn("1");
|
||||
addInvParam.setStoragevehicleCode(structattr.getStoragevehicle_code());
|
||||
addInvParam.setQty(zdDemand.getQty());
|
||||
addInvParam.setStorCode(structattr.getStor_code());
|
||||
addInvParam.setSectCode(structattr.getSect_code());
|
||||
addInvParam.setStructCode(structattr.getStruct_code());
|
||||
addInvParam.setRemark("中鼎需求单变动");
|
||||
addInvParams.add(addInvParam);
|
||||
InFinishParam inFinishParam = new InFinishParam();
|
||||
BeanUtils.copyProperties(addInvParam,inFinishParam);
|
||||
inFinishParams.add(inFinishParam);
|
||||
zd.add(zdDemand);
|
||||
}
|
||||
wmsToZDWmdService.syncDemandOrder(zd);
|
||||
try {
|
||||
iStInventoryService.changeInventory(InventoryChangeType.ADD_INV, addInvParams);
|
||||
iStInventoryService.changeInventory(InventoryChangeType.IN_FINISH, inFinishParams);
|
||||
this.update(new LambdaUpdateWrapper<PmDemand>()
|
||||
.set(PmDemand::getStatus,DemandStatus.FINISH.getValue())
|
||||
.in(PmDemand::getId,zdDemands.stream()
|
||||
.in(PmDemand::getId,demandDtos.stream()
|
||||
.map(PmDemandDto::getId).collect(Collectors.toList())));
|
||||
}catch (Exception ex){
|
||||
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())));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user