Browse Source

改动过的

huanglizhi 1 year ago
parent
commit
17a17c9729

+ 4 - 0
module-erp/src/main/java/com/hys/app/controller/erp/use/ScanCodeController.java

@@ -21,6 +21,7 @@ import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 企业 API
@@ -73,6 +74,9 @@ public class ScanCodeController {
             val.add(skuRedisDO.getSku());
             redisTemplate.opsForHash().put(skuRedisDO.getSendOrderId(),skuRedisDO.getItemId(),val);
         }
+        // 设置Hash键的过期时间
+        redisTemplate.expire(skuRedisDO.getSendOrderId(), 5, TimeUnit.DAYS);
+
         Map entries = redisTemplate.opsForHash().entries(skuRedisDO.getSendOrderId());
         return entries;
     }

+ 36 - 12
module-erp/src/main/java/com/hys/app/service/erp/impl/OrderManagerImpl.java

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