Преглед на файлове

禅道110,修改订单还原库存

lishiqiang преди 3 седмици
родител
ревизия
530358651c

+ 43 - 30
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java

@@ -547,12 +547,18 @@ public class VoyageApiImpl implements VoyageApi {
             VoyageStockDO stockDO = voyageStockMapper.selectById(voyageId);
             //还航次总库存
             BigDecimal totalNum = voyageStockLogDO.getVirtualNum().add(voyageStockLogDO.getRealNum());
-            stockDO.setShareNum(stockDO.getShareNum().add(voyageStockLogDO.getShareNum())); //退回共享库存
-            stockDO.setVirtualNum(stockDO.getVirtualNum().add(voyageStockLogDO.getVirtualNum())); //退回虚拟库存
-            stockDO.setRealTotalNum(stockDO.getRealTotalNum().add(voyageStockLogDO.getRealNum())); //退回真实库存
-            stockDO.setCanSellNum(stockDO.getCanSellNum().add(totalNum)); //退回可售库存
-            stockDO.setBookNum(stockDO.getBookNum().subtract(totalNum)); // 减去已预订数量
-            voyageStockMapper.updateById(stockDO);//更新航次总库存
+            //退回共享库存
+            stockDO.setShareNum(stockDO.getShareNum().add(voyageStockLogDO.getShareNum()));
+            //退回虚拟库存
+            stockDO.setVirtualNum(stockDO.getVirtualNum().add(voyageStockLogDO.getVirtualNum()));
+            //退回真实库存
+            stockDO.setRealTotalNum(stockDO.getRealTotalNum().add(voyageStockLogDO.getRealNum()));
+            //退回可售库存
+            stockDO.setCanSellNum(stockDO.getCanSellNum().add(totalNum));
+            // 减去已预订数量
+            stockDO.setBookNum(stockDO.getBookNum().subtract(totalNum));
+            //更新航次总库存
+            voyageStockMapper.updateById(stockDO);
             //删除航次库存操作记录
             voyageStockLogMapper.deleteById(voyageStockLogDO);
         } else {
@@ -567,7 +573,7 @@ public class VoyageApiImpl implements VoyageApi {
             //退还航次库存详情
             List<VoyageStockDetailDO> stockDetailList = voyageStockDetailMapper.selectListByVoyageId(voyageId);
             Map<String, BigDecimal> realNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), VoyageStockDetailLogDO::getRealNum);
-            Map<String, BigDecimal> VirtualNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), VoyageStockDetailLogDO::getVirtualNum);
+            Map<String, BigDecimal> virtualNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), VoyageStockDetailLogDO::getVirtualNum);
 //            Map<String, BigDecimal> shareNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), VoyageStockDetailLogDO::getShareNum);
             Map<String, BigDecimal> totalNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), item -> item.getRealNum().add(item.getVirtualNum()));
 
@@ -576,20 +582,20 @@ public class VoyageApiImpl implements VoyageApi {
                 item.setBookNum(item.getBookNum().subtract(totalNumMap.get(key)));
                 item.setCanSellNum(item.getCanSellNum().add(totalNumMap.get(key)));
                 item.setRealTotalNum(item.getRealTotalNum().add(realNumMap.get(key)));
-                item.setVirtualNum(item.getVirtualNum().add(VirtualNumMap.get(key)));
+                item.setVirtualNum(item.getVirtualNum().add(virtualNumMap.get(key)));
             });
             voyageStockDetailMapper.updateBatch(stockDetailList);
 
             Integer stockType = detailLogList.get(0).getStockType();
-
-            if (stockType == 2) { //2:还分销商库存
+            //2:还分销商库存
+            if (stockType == 2) {
                 //判断分销商库存是否存在
                 VoyageStockDistributeNewDetailReqVO detailReqVO = new VoyageStockDistributeNewDetailReqVO();
                 detailReqVO.setVoyageId(voyageId);
                 detailReqVO.setType(type);
                 detailReqVO.setObjectId(distributorId);
-                List<VoyageStockDistributeNewRespVO> distributeNewRespVOS = voyageStockDistributeNewService.getDetail(detailReqVO);
-                List<VoyageStockDistributeNewDO> list = BeanUtils.toBean(distributeNewRespVOS, VoyageStockDistributeNewDO.class);
+                List<VoyageStockDistributeNewRespVO> distributeNewRespList = voyageStockDistributeNewService.getDetail(detailReqVO);
+                List<VoyageStockDistributeNewDO> list = BeanUtils.toBean(distributeNewRespList, VoyageStockDistributeNewDO.class);
                 if (list != null && !list.isEmpty()) {
                     list.forEach(item -> {
                         String key = item.getRoomModelId() + "_" + item.getFloor();
@@ -610,7 +616,6 @@ public class VoyageApiImpl implements VoyageApi {
     /**
      * 初定扣分销商库存
      *
-     * @param reqDTO
      */
     private void preReduceStockDistributor(ReduceStockReqDTO reqDTO) {
         //航次库存操作日志
@@ -619,15 +624,20 @@ public class VoyageApiImpl implements VoyageApi {
         List<VoyageStockDetailLogDO> detailLogList = new ArrayList<>();
 
         Integer type = reqDTO.getType();
-        Long voyageId = reqDTO.getVoyageId(); //航次ID
-        Long distributorId = reqDTO.getDistributorId(); //分销商ID
-        Long storeId = reqDTO.getStoreId(); //门店ID
-        BigDecimal totalUseNum = reqDTO.getUseRoomNum(); //总共使用房间数量
+        //航次ID
+        Long voyageId = reqDTO.getVoyageId();
+        //分销商ID
+        Long distributorId = reqDTO.getDistributorId();
+        //门店ID
+        Long storeId = reqDTO.getStoreId();
+        //总共使用房间数量
+        BigDecimal totalUseNum = reqDTO.getUseRoomNum();
         Long orderId = reqDTO.getOrderId();
         Integer orderStatus = reqDTO.getOrderStatus();
 
         voyageStockLogDO.setVoyageId(voyageId);
-        voyageStockLogDO.setType(2);//标识减少
+        //标识减少
+        voyageStockLogDO.setType(2);
         voyageStockLogDO.setOrderId(orderId);
         voyageStockLogDO.setOrderStatus(orderStatus);
         voyageStockLogDO.setOperateType(VoyageStockLogTypeEnum.ORDER_PRE_SUB.getValue());
@@ -649,16 +659,21 @@ public class VoyageApiImpl implements VoyageApi {
         detailReqVO.setVoyageId(voyageId);
         detailReqVO.setType(type);
         detailReqVO.setObjectId(distributorId);
-        detailReqVO.setEnableShare(YesOrNoEnum.NO.getType());//先获取非共享库存(分销商库存)
-        List<VoyageStockDistributeNewRespVO> distributeNewRespVOS = voyageStockDistributeNewService.getDetail(detailReqVO);
-        List<OrderRoomUseDTO> orderRoomList = reqDTO.getOrderRoomList();//订单使用房间详情
+        //先获取非共享库存(分销商库存)
+        detailReqVO.setEnableShare(YesOrNoEnum.NO.getType());
+        List<VoyageStockDistributeNewRespVO> distributeNewRespList = voyageStockDistributeNewService.getDetail(detailReqVO);
+        //订单使用房间详情
+        List<OrderRoomUseDTO> orderRoomList = reqDTO.getOrderRoomList();
         Map<String, BigDecimal> roomModelFloorNumMap = orderRoomList.stream()
                 .collect(Collectors.groupingBy(
                         OrderRoomUseDTO::getKey,
-                        Collectors.mapping(OrderRoomUseDTO::getNum, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)) // 直接使用BigDecimal的reduce操作进行求和
+                        // 直接使用BigDecimal的reduce操作进行求和
+                        Collectors.mapping(OrderRoomUseDTO::getNum, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))
                 ));
-        if (distributeNewRespVOS.isEmpty()) {//分销商未分配库存,扣共享库存
-            voyageStockLogDO.setStockType(1); //1共享库存
+        //分销商未分配库存,扣共享库存
+        if (distributeNewRespList.isEmpty()) {
+            //1共享库存
+            voyageStockLogDO.setStockType(1);
             //判断共享库存是否充足
             if (shareNum.compareTo(totalUseNum) < 0) {
                 throw exception(VOYAGE_SHARE_STOCK_NOT_ENOUGH);
@@ -719,7 +734,6 @@ public class VoyageApiImpl implements VoyageApi {
 
                 detailLogList.add(voyageStockDetailLogDO);
 
-
             });
             voyageStockDetailMapper.updateBatch(stockDetailList);
 
@@ -745,13 +759,12 @@ public class VoyageApiImpl implements VoyageApi {
             voyageStockLogDO.setShareNum(totalUseNum);
             voyageStockMapper.updateById(stockDO);
         } else {
-
-            voyageStockLogDO.setStockType(2); //2分销商库存
-
+            //2分销商库存
+            voyageStockLogDO.setStockType(2);
             //分销商已分配库存,扣自身库存
 
             //判断航次房型楼层库存是否充足
-            distributeNewRespVOS.forEach(item -> {
+            distributeNewRespList.forEach(item -> {
                 BigDecimal canSellNum = item.getNum();
                 BigDecimal useNum = roomModelFloorNumMap.get(item.getRoomModelId() + "_" + item.getFloor());
                 if (useNum == null) {
@@ -763,7 +776,7 @@ public class VoyageApiImpl implements VoyageApi {
             });
             // 扣分销商库存
             // 库存充足,扣库存详情
-            List<VoyageStockDistributeNewDO> list = BeanUtils.toBean(distributeNewRespVOS, VoyageStockDistributeNewDO.class);
+            List<VoyageStockDistributeNewDO> list = BeanUtils.toBean(distributeNewRespList, VoyageStockDistributeNewDO.class);
             list.forEach(item -> {
                 BigDecimal useNum = roomModelFloorNumMap.get(item.getRoomModelId() + "_" + item.getFloor());
                 if (useNum == null) {

+ 23 - 19
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyage/VoyageController.java

@@ -11,7 +11,6 @@ import com.yc.ship.framework.excel.core.util.ExcelUtils;
 import com.yc.ship.module.product.controller.admin.voyage.vo.*;
 import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
 import com.yc.ship.module.product.service.voyage.VoyageService;
-import com.yc.ship.module.resource.api.dto.ResourceRouteRespDTO;
 import com.yc.ship.module.resource.api.route.RouteApi;
 import com.yc.ship.module.resource.api.route.dto.RouteRespDTO;
 import com.yc.ship.module.resource.dal.dataobject.route.ResourceRouteDO;
@@ -35,6 +34,9 @@ import java.util.Map;
 import static com.yc.ship.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static com.yc.ship.framework.common.pojo.CommonResult.success;
 
+/**
+ * @author qsl
+ */
 @Tag(name = "管理后台 - 航次管理")
 @RestController
 @RequestMapping("/product/voyage")
@@ -67,6 +69,7 @@ public class VoyageController {
         voyageService.createVoyageBatch(createReqVO);
         return success(true);
     }
+
     @PutMapping("/update")
     @Operation(summary = "更新航次管理")
     @PreAuthorize("@ss.hasPermission('product:voyage:update')")
@@ -102,17 +105,18 @@ public class VoyageController {
         List<VoyageRespVO> list = page.getList();
         List<Long> shipIds = CollectionUtils.convertList(list, VoyageRespVO::getShipId);
         List<ResourceShipDO> shipList = shipService.getList(shipIds);
-        Map<Long, ResourceShipDO> shipDOMap = CollectionUtils.convertMap(shipList, ResourceShipDO::getId);
+        Map<Long, ResourceShipDO> shipDoMap = CollectionUtils.convertMap(shipList, ResourceShipDO::getId);
 
         List<Long> routeIds = CollectionUtils.convertList(list, VoyageRespVO::getRouteId);
         List<ResourceRouteDO> routeList = routeService.getList(routeIds);
-        Map<Long, ResourceRouteDO> routeDOMap = CollectionUtils.convertMap(routeList, ResourceRouteDO::getId);
-        list.stream().forEach(item -> {
-            MapUtils.findAndThen(shipDOMap, item.getShipId(), shipDO -> item.setShipName(shipDO.getName()));
-            MapUtils.findAndThen(routeDOMap, item.getRouteId(), routeDO -> item.setRouteName(routeDO.getName()));
+        Map<Long, ResourceRouteDO> routeDoMap = CollectionUtils.convertMap(routeList, ResourceRouteDO::getId);
+        list.forEach(item -> {
+            MapUtils.findAndThen(shipDoMap, item.getShipId(), shipDO -> item.setShipName(shipDO.getName()));
+            MapUtils.findAndThen(routeDoMap, item.getRouteId(), routeDO -> item.setRouteName(routeDO.getName()));
         });
         return success(page);
     }
+
     @GetMapping("/list-simple")
     @Operation(summary = "获得资源管理-航次列表")
     public CommonResult<List<VoyageRespVO>> getVoyageListSimple(VoyageReqVO reqVO) {
@@ -131,23 +135,23 @@ public class VoyageController {
     @Operation(summary = "获得资源管理-航次列表-日历")
     public CommonResult<List<VoyageRespVO>> getVoyageListCalendar(VoyageCalendarReqVO reqVO) {
         List<VoyageDO> list = voyageService.getListCalendar(reqVO);
-        List<VoyageRespVO> voyageRespVOS = BeanUtils.toBean(list, VoyageRespVO.class);
+        List<VoyageRespVO> voyageRespList = BeanUtils.toBean(list, VoyageRespVO.class);
 
-        List<Long> shipIds = CollectionUtils.convertList(voyageRespVOS, VoyageRespVO::getShipId);
+        List<Long> shipIds = CollectionUtils.convertList(voyageRespList, VoyageRespVO::getShipId);
         List<ResourceShipDO> shipList = shipService.getList(shipIds);
-        Map<Long, ResourceShipDO> shipDOMap = CollectionUtils.convertMap(shipList, ResourceShipDO::getId);
-
-        List<Long> routeIds = CollectionUtils.convertList(voyageRespVOS, VoyageRespVO::getRouteId);
-        Map<Long, RouteRespDTO> longRouteRespDTOMap = routeApi.queryRoute(routeIds);
-        voyageRespVOS.stream().forEach(item -> {
-            MapUtils.findAndThen(shipDOMap, item.getShipId(), shipDO -> item.setShipName(shipDO.getName()));
-            MapUtils.findAndThen(shipDOMap, item.getShipId(), shipDO -> item.setShortShipName(shipDO.getShortName()));
-            MapUtils.findAndThen(longRouteRespDTOMap, item.getRouteId(), routeRespDTO -> {
+        Map<Long, ResourceShipDO> shipMap = CollectionUtils.convertMap(shipList, ResourceShipDO::getId);
+
+        List<Long> routeIds = CollectionUtils.convertList(voyageRespList, VoyageRespVO::getRouteId);
+        Map<Long, RouteRespDTO> longRouteRespMap = routeApi.queryRoute(routeIds);
+        voyageRespList.forEach(item -> {
+            MapUtils.findAndThen(shipMap, item.getShipId(), shipDO -> item.setShipName(shipDO.getName()));
+            MapUtils.findAndThen(shipMap, item.getShipId(), shipDO -> item.setShortShipName(shipDO.getShortName()));
+            MapUtils.findAndThen(longRouteRespMap, item.getRouteId(), routeRespDTO -> {
                 item.setRouteResp(routeRespDTO);
                 item.setRouteName(routeRespDTO.getName());
             });
         });
-        return success(voyageRespVOS);
+        return success(voyageRespList);
     }
 
     //根据游轮ID获取上架的航次列表
@@ -163,12 +167,12 @@ public class VoyageController {
     @PreAuthorize("@ss.hasPermission('product:voyage:export')")
     @ApiAccessLog(operateType = EXPORT)
     public void exportVoyageExcel(@Valid VoyagePageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
+                                  HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
         List<VoyageDO> list = voyageService.getVoyagePage(pageReqVO).getList();
         // 导出 Excel
         ExcelUtils.write(response, "航次管理.xls", "数据", VoyageRespVO.class,
-                        BeanUtils.toBean(list, VoyageRespVO.class));
+                BeanUtils.toBean(list, VoyageRespVO.class));
     }
 
 }

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderPageReqVO.java

@@ -184,6 +184,9 @@ public class TradeOrderPageReqVO extends PageParam {
     @Schema(description = "航次ID")
     private Long voyageId;
 
+    @Schema(description = "航线")
+    private Long routeId;
+
     @Schema(description = "船ID")
     private Long shipId;
 

+ 1 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderMapper.java

@@ -105,6 +105,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
     TradeOrderDO getOrderByVoucherCode(@Param("voucherCode") String voucherCode);
 
     TradeOrderDO getOrderByExternalOrderNo(@Param("tradeNo") String tradeNo);
+    TradeOrderDO getLastOrderByOrderNo(@Param("orderNo") String orderNo);
 
     List<Map<String, Object>> getOtcOrderByExternalOrderNo(@Param("tradeNo") String tradeNo);
 
@@ -211,8 +212,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
     List<TradeOrderDO> queryOrderById(@Param("orderId")  Long orderId);
     /**
      * 查询订单确认单中入住的房型国家信息
-     * @param id
-     * @return
      */
     List<TradeOrderConfirmationCountryRespVO> selectConfirmationCountry(@Param("orderId") Long orderId);
 }

+ 1 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderService.java

@@ -81,4 +81,5 @@ public interface TradeOrderService {
 
     List<TradeOrderDO> getTradeOrderByExpire(String expiretime);
 
+    TradeOrderDO getLastOrderByOrderNo(String orderNo);
 }

+ 1 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/handler/TradeOrderHandler.java

@@ -94,6 +94,7 @@ public interface TradeOrderHandler {
      * @param order 订单
      */
     default void afterOrderCreate(TradeOrderBO order) {}
+    default void afterOrderModify(TradeOrderBO order) {}
 
     /**
      * 订单取消后

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

@@ -4,10 +4,14 @@ 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.resource.api.room.RoomApi;
 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.TradeOrderRoomModelDO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeVisitorDO;
+import com.yc.ship.module.trade.dal.mysql.order.TradeOrderRoomModelMapper;
 import com.yc.ship.module.trade.enums.TradeOrderStatusEnum;
+import com.yc.ship.module.trade.service.order.TradeOrderService;
 import com.yc.ship.module.trade.service.order.bo.TradeOrderBO;
 import com.yc.ship.module.trade.service.order.bo.TradeOrderDetailBO;
 import lombok.extern.slf4j.Slf4j;
@@ -32,6 +36,12 @@ public class TradeStockOrderHandler implements TradeOrderHandler{
     @Resource
     private VoyageApi voyageApi;
 
+    @Resource
+    private TradeOrderService tradeOrderService;
+
+    @Resource
+    private TradeOrderRoomModelMapper tradeOrderRoomModelMapper;
+
     @Override
     public void beforeOrderCreate(TradeOrderBO order) {
         Integer sellMethod = order.getTradeOrderDO().getSellMethod();
@@ -71,11 +81,56 @@ public class TradeStockOrderHandler implements TradeOrderHandler{
         }
     }
 
+    /***
+     *  修改还原库存
+     */
+    private void reduceBackStock(TradeOrderBO order){
+        ReduceStockReqDTO reqDTO = new ReduceStockReqDTO();
+        TradeOrderDO lastOrder = tradeOrderService.getLastOrderByOrderNo(order.getTradeOrderDO().getOrderNo());
+        if(lastOrder == null){
+            return;
+        }
+        reqDTO.setOrderId(lastOrder.getId());
+        reqDTO.setOrderStatus(order.getTradeOrderDO().getOrderStatus());
+        //TODO: 当前默认为分销商,扣分销商库存,门店的后续再完善
+        reqDTO.setType(DistributorOrStoreEnum.DISTRIBUTOR.getValue());
+        reqDTO.setVoyageId(lastOrder.getVoyageId());
+        reqDTO.setDistributorId(Long.valueOf(order.getTradeOrderDO().getSourceId()));
+        reqDTO.setStoreId(lastOrder.getStoreId());
+        reqDTO.setUseRoomNum(order.getSummary().getUseRoomTotalNum());
+
+        List<OrderRoomUseDTO> orderRoomUseDTOList = new ArrayList<>();
+
+        List<TradeOrderRoomModelDO> roomModelList = tradeOrderRoomModelMapper.selectListByOrderId(lastOrder.getId());
+        roomModelList.forEach(roomModelVO -> {
+            OrderRoomUseDTO orderRoomUseDTO = new OrderRoomUseDTO();
+            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 {
+            voyageApi.cancelReduceStock(reqDTO);
+        }
+    }
+
     @Override
     public void afterOrderCreate(TradeOrderBO order) {
         TradeOrderHandler.super.afterOrderCreate(order);
     }
 
+    @Override
+    public void afterOrderModify(TradeOrderBO order) {
+        Integer sellMethod = order.getTradeOrderDO().getSellMethod();
+        if (sellMethod == 1||sellMethod == 4||sellMethod == 7||sellMethod == 0||sellMethod == 3) {
+            reduceBackStock(order);
+        }
+    }
+
     @Override
     public void afterCancelOrder(TradeOrderDO tradeOrderDO) {
         TradeOrderHandler.super.afterCancelOrder(tradeOrderDO);

+ 11 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java

@@ -1138,7 +1138,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
 
     private void afterOrderModify(TradeOrderBO tradeOrderBO, String content) {
         //执行下单后处理器
-        tradeOrderHandlers.forEach(handler -> handler.afterOrderCreate(tradeOrderBO));
+        tradeOrderHandlers.forEach(handler -> handler.afterOrderModify(tradeOrderBO));
         tradePublishUtils.publishOrderCreateSuccessMsg(tradeOrderBO.getTradeOrderDO().getId().toString());
         //支付倒计时--不超时,有预订单
         Map<String, Object> append = TradeOrderLogUtils.append("result", "订单修改");
@@ -1334,6 +1334,16 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         return tradeOrderMapper.getTradeOrderByExpire(expiretime);
     }
 
+    @Override
+    public TradeOrderDO getLastOrderByOrderNo(String orderNo) {
+        List<TradeOrderDO> list = tradeOrderMapper.queryOrderByLast(orderNo);
+        if(CollUtil.isEmpty(list)){
+            return null;
+        }else{
+            return list.get(0);
+        }
+    }
+
 
     private List<TradeDetailPriceDO> buildTradeDetailPrice(TradeOrderDO tradeOrderDO, List<TradeOrderCreateReqDTO.DetailPrice> tradeDetailPriceList, TradeDetailDO tradeDetailDO) {
         if (ObjectUtils.equalsAny(tradeOrderDO.getSellMethod(), SellMethodEnum.MINI_APP.getType()) && ObjectUtil.equal(tradeDetailDO.getCateType(), ProductTypeEnum.Hotel.getValue())) {

+ 1 - 3
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

@@ -2125,8 +2125,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         BigDecimal realAmount = summary.getRealMoney();
         BigDecimal orderMoney = summary.getOrderMoney();
         Long discountId = summary.getDiscountId();
-        BigDecimal realOrderMoney = summary.getRealOrderMoney();
-        BigDecimal otherMoney = summary.getOtherMoney();
         if (orderMoney != null && realAmount != null && realAmount.compareTo(orderMoney) != 0) {
             shipTradeOrderCreateReqVO.setAmount(orderMoney);
             shipTradeOrderCreateReqVO.setPayAmount(realAmount);
@@ -2311,7 +2309,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         }
 
         tradeOrderRoomModelMapper.deleteByOrderId(orderId);
-        if(list != null && list.size() > 0) {
+        if(!list.isEmpty()) {
             tradeOrderRoomModelMapper.insertBatch(list);
         }
 

+ 6 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

@@ -231,6 +231,9 @@
         <if test="vo.shipId != null and vo.shipId != ''">
             AND td.ship_id = #{vo.shipId}
         </if>
+        <if test="vo.routeId != null and vo.routeId != ''">
+            AND exists (select 1 from product_voyage top where top.id = td.voyage_id and top.route_id = #{vo.routeId})
+        </if>
         <if test="vo.dispatchStatus != null">
             AND td.dispatch_status = #{vo.dispatchStatus}
         </if>
@@ -1615,6 +1618,9 @@
     <select id="getOrderByExternalOrderNo" resultType="com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO">
         select t1.* from trade_order t1 inner join trade_supplier_order t2 on t1.id = t2.order_id where t2.trade_no=#{tradeNo} limit 1
     </select>
+    <select id="getLastOrderByOrderNo" resultType="com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO">
+        select t1.* from trade_order where order_no=#{orderNo} and delete=1 limit 1
+    </select>
 
     <select id="getOtcOrderByExternalOrderNo"  resultType="java.util.Map">
         select t2.* from trade_order t1 inner join trade_supplier_order t2 on t1.id = t2.order_id where t1.order_no=#{tradeNo} limit 1