Преглед изворни кода

fix: 处理订单库存代码被覆盖的问题

luofeiyun пре 1 месец
родитељ
комит
14269c4ea3

+ 12 - 19
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/TradeStockOrderHandler.java

@@ -4,6 +4,7 @@ import com.yc.ship.module.product.api.VoyageApi;
 import com.yc.ship.module.product.api.dto.OrderRoomUseDTO;
 import com.yc.ship.module.product.api.dto.ReduceStockReqDTO;
 import com.yc.ship.module.product.enums.DistributorOrStoreEnum;
+import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRoomModelVO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeVisitorDO;
 import com.yc.ship.module.trade.enums.TradeOrderStatusEnum;
@@ -44,36 +45,28 @@ public class TradeStockOrderHandler implements TradeOrderHandler{
         ReduceStockReqDTO reqDTO = new ReduceStockReqDTO();
         reqDTO.setOrderId(order.getTradeOrderDO().getId());
         reqDTO.setOrderStatus(order.getTradeOrderDO().getOrderStatus());
-        //TODO: 当前默认为分销商,扣分销商库存,门店的后续再完善
-        reqDTO.setType(DistributorOrStoreEnum.DISTRIBUTOR.getValue());
+        reqDTO.setType(DistributorOrStoreEnum.DISTRIBUTOR.getValue());//TODO: 当前默认为分销商,扣分销商库存,门店的后续再完善
         reqDTO.setVoyageId(order.getTradeOrderDO().getVoyageId());
         reqDTO.setDistributorId(Long.valueOf(order.getTradeOrderDO().getSourceId()));
         reqDTO.setStoreId(order.getTradeOrderDO().getStoreId());
         reqDTO.setUseRoomNum(order.getSummary().getUseRoomTotalNum());
-        List<TradeOrderDetailBO> tradeOrderDetailBOList = order.getTradeOrderDetailBOList();
-        List<TradeVisitorDO> tradeDetailDOList = tradeOrderDetailBOList.stream().flatMap(list1 -> {
-            List<TradeVisitorDO> roomNums = list1.getTradeVisitorDOList();
-            if(roomNums != null) {
-                return roomNums.stream();
-            }
-            return Stream.empty();
-        }).collect(Collectors.toList());
+
         List<OrderRoomUseDTO> orderRoomUseDTOList = new ArrayList<>();
-        Map<String, Long> collect = tradeDetailDOList.stream().filter(tradeVisitorDO -> tradeVisitorDO.getRoomId() != null).collect(Collectors.groupingBy(TradeVisitorDO::getRoomId, Collectors.counting()));
-        collect.keySet().forEach(roomId -> {
-            if(StringUtils.isNotBlank(roomId)) {
-                OrderRoomUseDTO orderRoomUseDTO = new OrderRoomUseDTO();
-                orderRoomUseDTO.setRoomId(Long.valueOf(roomId));
-                orderRoomUseDTO.setNum(BigDecimal.valueOf(collect.get(roomId)).divide(new BigDecimal(2)));
-                orderRoomUseDTOList.add(orderRoomUseDTO);
-            }
+        List<TradeOrderRoomModelVO> roomModelList = order.getRoomModelList();
+        roomModelList.stream().forEach(roomModelVO -> {
+            OrderRoomUseDTO orderRoomUseDTO = new OrderRoomUseDTO();
+            orderRoomUseDTO.setRoomId(roomModelVO.getRoomId());
+            orderRoomUseDTO.setNum(BigDecimal.valueOf(roomModelVO.getUseRoomNum()));
+            orderRoomUseDTO.setRoomModelId(roomModelVO.getRoomModelId());
+            orderRoomUseDTO.setFloor(roomModelVO.getFloor());
+            orderRoomUseDTOList.add(orderRoomUseDTO);
         });
         reqDTO.setOrderRoomList(orderRoomUseDTOList);
         Integer orderStatus = reqDTO.getOrderStatus();
         if(Objects.equals(orderStatus, TradeOrderStatusEnum.YD.getStatus())) {
             voyageApi.preReduceStock(reqDTO);
         }else {
-            //TODO:走定单扣库存
+            voyageApi.reduceStock(reqDTO);
         }
     }