|
@@ -97,6 +97,21 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void edit(OrderDTO orderDTO) {
|
|
|
+ //修改把原先订单所有的东西都置空在新增
|
|
|
+ orderSendManager.remove(new LambdaQueryWrapper<OrderSendDO>().eq(OrderSendDO::getOrderId,orderDTO.getId()));
|
|
|
+
|
|
|
+ List<LockedStockDetailDO> list = lockedStockDetailManager.list(new LambdaQueryWrapper<LockedStockDetailDO>().eq(LockedStockDetailDO::getOrderId, orderDTO.getId()));
|
|
|
+ lockedStockDetailManager.remove(new LambdaQueryWrapper<LockedStockDetailDO>().eq(LockedStockDetailDO::getOrderId,orderDTO.getId()));
|
|
|
+ List<StockDTO> arrayList = new ArrayList<>();
|
|
|
+ list.forEach(item ->{
|
|
|
+ StockDTO dto = new StockDTO();
|
|
|
+ dto.setId(item.getProductStockId());
|
|
|
+ dto.setNum(-item.getLockedNum());
|
|
|
+ arrayList.add(dto);
|
|
|
+ });
|
|
|
+ productStockManager.updateLockedStock(arrayList);
|
|
|
+
|
|
|
+
|
|
|
if (OrderTypeEnum.TO_C.equals(orderDTO.getType())) {
|
|
|
if (ObjectUtil.isNull(orderDTO.getStartTime())) {
|
|
|
throw new ServiceException("租用时间不能为空");
|
|
@@ -167,9 +182,8 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
|
|
|
throw new ServiceException("该订单已确认");
|
|
|
}
|
|
|
List<OrderItemDO> dos = orderItemManager.list(new LambdaQueryWrapper<OrderItemDO>().eq(OrderItemDO::getOrderId, id));
|
|
|
-
|
|
|
Set<Long> set = dos.stream().map(OrderItemDO::getWarehouseId).collect(Collectors.toSet());
|
|
|
- orderSendManager.remove(new LambdaQueryWrapper<OrderSendDO>().eq(OrderSendDO::getOrderId,id));
|
|
|
+
|
|
|
for (Long warehouseId : set) {
|
|
|
//如果允许负库存 把所有不够库存的做成一个发货单打上标记,剩下的做成一个发货单
|
|
|
List<OrderItemDO> collect = dos.stream().filter(item -> item.getWarehouseId().equals(warehouseId)).collect(Collectors.toList());
|
|
@@ -221,7 +235,7 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
|
|
|
detailDO.setLockedTime(new Date());
|
|
|
detailDOS.add(detailDO);
|
|
|
}
|
|
|
- lockedStockDetailManager.remove(new LambdaQueryWrapper<LockedStockDetailDO>().eq(LockedStockDetailDO::getOrderId,id));
|
|
|
+
|
|
|
lockedStockDetailManager.saveBatch(detailDOS);
|
|
|
productStockManager.updateLockedStock(arrayList);
|
|
|
aDo.setStatus(SaleOrderStatusEnum.TO_BE_SEND);
|
|
@@ -316,15 +330,25 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
|
|
|
arrayList.add(dto);
|
|
|
}
|
|
|
//更爱可用库存实际库存冻结库存
|
|
|
- productStockManager.updateActualStock(arrayList, null);
|
|
|
- productStockManager.updateLockedStock(arrayList);
|
|
|
- //更改在途库存
|
|
|
- if (OrderTypeEnum.TO_C.equals(aDo.getOrderType())) {
|
|
|
- //如果是出租商品增加在途库存
|
|
|
- arrayList.forEach(item -> item.setNum(-item.getNum()));
|
|
|
- productStockManager.updateTransitStock(arrayList);
|
|
|
+ List<ProductStockDO> list1 = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>().in(ProductStockDO::getId,arrayList.stream().map(StockDTO::getId).collect(Collectors.toList())));
|
|
|
+ for (ProductStockDO stockDO : list1) {
|
|
|
+ StockDTO dto = arrayList.stream().filter(item -> item.getId().equals(stockDO.getId())).findFirst().get();
|
|
|
+ stockDO.setActualStock(stockDO.getActualStock()+dto.getNum());
|
|
|
+ stockDO.setLockedStock(stockDO.getLockedStock()+dto.getNum());
|
|
|
+ stockDO.setUsableStock(stockDO.getActualStock()-stockDO.getLockedStock());
|
|
|
+ if (OrderTypeEnum.TO_C.equals(aDo.getOrderType())) {
|
|
|
+ stockDO.setTransitStock(-dto.getNum());
|
|
|
+ }
|
|
|
}
|
|
|
- productStockManager.updateBatchById(stockDOList);
|
|
|
+ productStockManager.updateBatchById(list1);
|
|
|
+// productStockManager.updateActualStock(arrayList, null);
|
|
|
+// productStockManager.updateLockedStock(arrayList);
|
|
|
+// //更改在途库存
|
|
|
+// if (OrderTypeEnum.TO_C.equals(aDo.getOrderType())) {
|
|
|
+// //如果是出租商品增加在途库存
|
|
|
+// arrayList.forEach(item -> item.setNum(-item.getNum()));
|
|
|
+// productStockManager.updateTransitStock(arrayList);
|
|
|
+// }
|
|
|
//生成出库单
|
|
|
WarehouseOutDO outDO = new WarehouseOutDO();
|
|
|
if (OrderTypeEnum.TO_C.equals(orderDO.getType())) {
|
|
@@ -426,7 +450,7 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
|
|
|
//更改订单状态
|
|
|
orderDO.setStatus(SaleOrderStatusEnum.SENDING);
|
|
|
updateById(orderDO);
|
|
|
- redisTemplate.delete(sendOrderId);
|
|
|
+ redisTemplate.delete(sendOrderId.toString());
|
|
|
}
|
|
|
|
|
|
@Override
|