|
|
@ -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) {
|
|
|
|