【bug】直接发货增加超额校验

pull/3/head
zengchenxi 9 months ago
parent 707536f990
commit a039fd30ca

@ -62,6 +62,10 @@ public class DeliverOrderServiceImpl implements DeliverOrderService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Long createDeliverOrder(DeliverOrderSaveReqVO createReqVO) { public Long createDeliverOrder(DeliverOrderSaveReqVO createReqVO) {
// 超额校验
overageDeliverValidate(createReqVO.getSaleOrderIds(), createReqVO.getDeliverOrderSubs());
// 插入 // 插入
DeliverOrderDO deliverOrder = BeanUtils.toBean(createReqVO, DeliverOrderDO.class); DeliverOrderDO deliverOrder = BeanUtils.toBean(createReqVO, DeliverOrderDO.class);
// 月度流水号 // 月度流水号
@ -100,15 +104,31 @@ public class DeliverOrderServiceImpl implements DeliverOrderService {
if(!oldDO.canOperate(operateTypeEnum)){ if(!oldDO.canOperate(operateTypeEnum)){
throw exception(INVALID_OPERATE); throw exception(INVALID_OPERATE);
} }
// 校验数据 不容许超额发货 // 超额校验
if(operateTypeEnum == OperateTypeEnum.DELIVER){ overageDeliverValidate(updateReqVO.getSaleOrderIds(), updateReqVO.getDeliverOrderSubs());
List<DeliverOrderSubDO> thisTimeSubs = updateReqVO.getDeliverOrderSubs();
// 更新
DeliverOrderDO updateObj = BeanUtils.toBean(updateReqVO, DeliverOrderDO.class);
updateObj.setDeliverStatus(DeliverOrderStatusEnum.valueOf(updateReqVO.getActive()).getCode());
deliverOrderMapper.updateById(updateObj);
updateReqVO.setDeliverStatus(updateObj.getDeliverStatus());
// 更新子表
updateDeliverOrderSubList(updateReqVO.getId(), updateReqVO.getDeliverOrderSubs(), updateReqVO.getDeliverOrderOtherSubs());
if(updateObj.getDeliverStatus().intValue() == DeliverOrderStatusEnum.DELIVER.getCode()) {
crossOrderManager.refreshProjectOrderDeliverStatus(updateReqVO.getSaleOrderIds().split(","));
crossOrderManager.generateStockOutOrder(updateReqVO);
}
}
private void overageDeliverValidate(String saleOrderIds, List<DeliverOrderSubDO> thisTimeSubs) {
List<DeliverOrderSubDO> thisTimeRelaSubList = thisTimeSubs.stream().filter(deliverOrderSubDO -> deliverOrderSubDO.getSaleOrderSubId() != null).collect(Collectors.toList()); List<DeliverOrderSubDO> thisTimeRelaSubList = thisTimeSubs.stream().filter(deliverOrderSubDO -> deliverOrderSubDO.getSaleOrderSubId() != null).collect(Collectors.toList());
if(!thisTimeRelaSubList.isEmpty()){ if(!thisTimeRelaSubList.isEmpty()){
// 锁定订单 // 锁定订单
LambdaQueryWrapper<ProjectOrderDO> projectQuery = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ProjectOrderDO> projectQuery = new LambdaQueryWrapper<>();
projectQuery.in(ProjectOrderDO::getId, updateReqVO.getSaleOrderIds().split(",")).last("FOR UPDATE"); projectQuery.in(ProjectOrderDO::getId, saleOrderIds.split(",")).last("FOR UPDATE");
List<ProjectOrderDO> projectOrderDOList = projectOrderMapper.selectList(projectQuery); List<ProjectOrderDO> projectOrderDOList = projectOrderMapper.selectList(projectQuery);
// 状态判断 已发货不容许操作 // 状态判断 已发货不容许操作
@ -146,22 +166,6 @@ public class DeliverOrderServiceImpl implements DeliverOrderService {
} }
} }
// 更新
DeliverOrderDO updateObj = BeanUtils.toBean(updateReqVO, DeliverOrderDO.class);
updateObj.setDeliverStatus(DeliverOrderStatusEnum.valueOf(updateReqVO.getActive()).getCode());
deliverOrderMapper.updateById(updateObj);
updateReqVO.setDeliverStatus(updateObj.getDeliverStatus());
// 更新子表
updateDeliverOrderSubList(updateReqVO.getId(), updateReqVO.getDeliverOrderSubs(), updateReqVO.getDeliverOrderOtherSubs());
if(updateObj.getDeliverStatus().intValue() == DeliverOrderStatusEnum.DELIVER.getCode()) {
crossOrderManager.refreshProjectOrderDeliverStatus(updateReqVO.getSaleOrderIds().split(","));
crossOrderManager.generateStockOutOrder(updateReqVO);
}
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void deleteDeliverOrder(Long id) { public void deleteDeliverOrder(Long id) {

Loading…
Cancel
Save