Procházet zdrojové kódy

fix: 订单合计功能,未完

luofeiyun před 5 dny
rodič
revize
5c2ff9605a
13 změnil soubory, kde provedl 321 přidání a 43 odebrání
  1. 6 3
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/notify/NotifyController.java
  2. 7 7
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/OrderTotalRespVO.java
  3. 5 3
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/OrderTotalRoomModelVO.java
  4. 13 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/OrderWithLeaderStatVO.java
  5. 6 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderMapper.java
  6. 8 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderRoomModelMapper.java
  7. 5 4
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeVisitorMapper.java
  8. 1 1
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/insurance/InsuranceServiceImpl.java
  9. 38 25
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java
  10. 6 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/utils/InsuranceUtil.java
  11. 8 0
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml
  12. 205 0
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderRoomModelMapper.xml
  13. 13 0
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeVisitorMapper.xml

+ 6 - 3
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/notify/NotifyController.java

@@ -25,9 +25,12 @@ public class NotifyController {
     private NotifyService notifyService;
 
     @PostMapping("/insurance")
-    public String insuranceNotify(@RequestBody NotifyInsuranceReqVO reqVO) {
-        log.info("收到保险通知:{}", JSONObject.toJSONString(reqVO));
-        notifyService.notifyInsurance(reqVO);
+    public String insuranceNotify(JSONObject reqVO) {
+        log.info("收到保险通知:{}", reqVO.toJSONString());
+        JSONObject query = reqVO.getJSONObject("query");
+        String req = query.getString("req");
+        NotifyInsuranceReqVO notifyInsuranceReqVO = JSONObject.parseObject(req, NotifyInsuranceReqVO.class);
+        notifyService.notifyInsurance(notifyInsuranceReqVO);
         return "SUCCESS";
     }
 }

+ 7 - 7
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/OrderTotalRespVO.java

@@ -130,25 +130,25 @@ public class OrderTotalRespVO {
     private BigDecimal totalNotPayRoomNum;
 
     @Schema(description = "拼男数")
-    private BigDecimal halfManNum;
+    private Integer halfManNum;
 
     @Schema(description = "拼女数")
-    private BigDecimal halfWomenNum;
+    private Integer halfWomenNum;
 
     @Schema(description = "总拼数")
-    private BigDecimal totalHalfNum;
+    private Integer totalHalfNum;
 
     @Schema(description = "陪同男数")
-    private BigDecimal withManNum;
+    private Integer withManNum;
 
     @Schema(description = "陪同女数")
-    private BigDecimal withWomenNum;
+    private Integer withWomenNum;
 
     @Schema(description = "领队男数")
-    private BigDecimal leaderManNum;
+    private Integer leaderManNum;
 
     @Schema(description = "领队女数")
-    private BigDecimal leaderWomenNum;
+    private Integer leaderWomenNum;
 
     @Schema(description = "房型信息")
     private List<OrderTotalRoomModelVO> roomModelList;

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

@@ -19,13 +19,15 @@ public class OrderTotalRoomModelVO {
     private String roomModelName;
 
     @Schema(description = "楼层", example = "")
-    private Integer floor;
+    private String floor;
 
-    @Schema(description = "成人单间", example = "")
+    @Schema(description = "成人拼房数", example = "")
+    private Integer adultShareNum;
+    @Schema(description = "成人数", example = "")
     private Integer adultTakeNum;
     @Schema(description = "成人加床", example = "")
     private Integer adultPlusNum;
-    @Schema(description = "成人拼房数", example = "")
+    @Schema(description = "成人单间", example = "")
     private Integer adultAloneNum;
 
     @Schema(description = "儿童不占床", example = "")

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

@@ -0,0 +1,13 @@
+package com.yc.ship.module.trade.controller.admin.order.vo.order;
+
+import lombok.Data;
+
+@Data
+public class OrderWithLeaderStatVO {
+
+    private String type;
+
+    private String gender;
+
+    private Integer num;
+}

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

@@ -215,4 +215,10 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
      * @return
      */
     List<AppMyItineraryVO> selectMyItinerary(@Param("memberId") Long memberId, @Param("status") Integer status);
+    /**
+     * 统计另外的订单合计
+     * @param orderId
+     * @return
+     */
+    OrderTotalRespVO selectTotal1ByOrderIds(@Param("orderIds") List<Long> orderIds);
 }

+ 8 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderRoomModelMapper.java

@@ -4,6 +4,7 @@ import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
 import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.OrderShareVO;
+import com.yc.ship.module.trade.controller.admin.order.vo.order.OrderTotalRoomModelVO;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppRoomDescVO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderCountryDO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderRoomModelDO;
@@ -42,6 +43,13 @@ public interface TradeOrderRoomModelMapper extends BaseMapperX<TradeOrderRoomMod
      * @return
      */
     List<OrderShareVO> selectOrderShareStatsByOrderIds(@Param("orderIds") List<Long> orderIds);
+    List<OrderShareVO> selectOrderShareStatsByOrderIds1(@Param("orderIds") List<Long> orderIds);
 
     List<AppRoomDescVO> selectRoomDesc(List<Long> orderIds);
+    /**
+     * 统计订单房型数据
+     * @param orderIds
+     * @return
+     */
+    List<OrderTotalRoomModelVO> selectOrderRoomModelStatsByOrderIds(@Param("orderIds") List<Long> orderIds);
 }

+ 5 - 4
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeVisitorMapper.java

@@ -5,10 +5,7 @@ import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
 import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
 import com.yc.ship.module.product.api.dto.OrderRoomUseDTO;
-import com.yc.ship.module.trade.controller.admin.order.vo.order.TouristExportVisitorVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderPageReqVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderRespExcelVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeVisitorRespVO;
+import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppPersonDescVO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeVisitorDO;
 import com.yc.ship.module.trade.service.order.bo.TradeVisitorBO;
@@ -88,4 +85,8 @@ public interface TradeVisitorMapper extends BaseMapperX<TradeVisitorDO> {
     List<TouristExportVisitorVO> selectTouristExportVisitor(@Param("vo") TradeOrderPageReqVO reqVO);
 
     List<AppPersonDescVO> selectPersonDesc(@Param("orderIds") List<Long> orderIds);
+    /**
+     * 获取订单陪同和领队男女统计
+     */
+    List<OrderWithLeaderStatVO> selectWithLeaderStatsByOrderIds(@Param("orderIds") List<Long> orderIds);
 }

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/insurance/InsuranceServiceImpl.java

@@ -294,7 +294,7 @@ public class InsuranceServiceImpl implements InsuranceService {
     @Transactional
     public void handleInsuranceQuery(BigDecimal amount, String policyNo, Long orderId, String status) {
         InsuranceDO insuranceDO = insuranceMapper.selectByOrderId(orderId);
-        insuranceDO.setAmount(amount);
+        insuranceDO.setPremium(amount);
         insuranceDO.setPolicyNo(policyNo);
         Integer insuranceStatus = InsuranceStatusEnum.INSURE.getValue();
         if("SUCCESS".equals(status)) {

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

@@ -671,33 +671,46 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             return null;
         }
         OrderTotalRespVO totalMap = tradeOrderMapper.selectTotalByOrderIds(orderIds);
-        //TODO[临时应对]  查询这些订单的游客信息, 按人员名单里的人员类型来区分总量
-        List<TradeVisitorDO> visitorDOList = tradeVisitorMapper.selectList(new LambdaQueryWrapperX<TradeVisitorDO>().in(TradeVisitorDO::getOrderId, orderIds));
-        int adultTotalNum = 0; // 成人
-        int childTotalNum = 0; // 儿童
-        int babyTotalNum = 0; // 婴儿
-        int withTotalNum = 0; // 陪同
-        int leaderTotalNum = 0; // 领队
-        if(visitorDOList != null) {
-            for(TradeVisitorDO v : visitorDOList) {
-                if("full".equals(v.getType()) || "adultTake".equals(v.getType()) || "adultPlus".equals(v.getType())) {
-                    adultTotalNum ++;
-                } else if("half".equals(v.getType()) || "childTake".equals(v.getType()) || "childNonTake".equals(v.getType())|| "childPlus".equals(v.getType())) {
-                    childTotalNum ++;
-                } else if("free".equals(v.getType())|| "babyTake".equals(v.getType()) || "babyNonTake".equals(v.getType()) || "babyPlus".equals(v.getType())) {
-                    babyTotalNum ++;
-                } else if("car_yd".equals(v.getType()) || "with".equals(v.getType())) {
-                    withTotalNum ++;
-                } else if("leader".equals(v.getType())) {
-                    leaderTotalNum ++;
+        OrderTotalRespVO totalMap1 = tradeOrderMapper.selectTotal1ByOrderIds(orderIds);
+        totalMap.setDeposi(totalMap1.getDeposi());
+        totalMap.setDamaged(totalMap1.getDamaged());
+        totalMap.setSupplementAmount(totalMap1.getSupplementAmount());
+        //设置拼房信息
+        List<OrderShareVO> orderShareVOS = tradeOrderRoomModelMapper.selectOrderShareStatsByOrderIds1(orderIds);
+        AtomicReference<Integer> totalShareNum = new AtomicReference<>(0);
+        orderShareVOS.stream().forEach(orderShareVO -> {
+            totalShareNum.updateAndGet(v -> v + orderShareVO.getNum());
+            if("男".equals(orderShareVO.getGender())) {
+                totalMap.setHalfManNum(orderShareVO.getNum());
+            }else {
+                totalMap.setHalfWomenNum(orderShareVO.getNum());
+            }
+        });
+        totalMap.setTotalHalfNum(totalShareNum.get());
+        // 陪同领队男女统计
+        List<OrderWithLeaderStatVO> withLeaderStatVOS = tradeVisitorMapper.selectWithLeaderStatsByOrderIds(orderIds);
+        withLeaderStatVOS.stream().forEach(orderWithLeaderStatVO -> {
+            if("leader".equals(orderWithLeaderStatVO.getType())) {
+                if("男".equals(orderWithLeaderStatVO.getGender())) {
+                    totalMap.setLeaderManNum(orderWithLeaderStatVO.getNum());
+                }else if("女".equals(orderWithLeaderStatVO.getGender())) {
+                    totalMap.setLeaderWomenNum(orderWithLeaderStatVO.getNum());
+                }
+            }else if("with".equals(orderWithLeaderStatVO.getType())){
+                if("男".equals(orderWithLeaderStatVO.getGender())) {
+                    totalMap.setWithManNum(orderWithLeaderStatVO.getNum());
+                }else if("女".equals(orderWithLeaderStatVO.getGender())) {
+                    totalMap.setWithWomenNum(orderWithLeaderStatVO.getNum());
                 }
             }
-        }
-        totalMap.setAdultTotalNum(adultTotalNum);
-        totalMap.setChildTotalNum(childTotalNum);
-        totalMap.setBabyTotalNum(babyTotalNum);
-        totalMap.setWithTotalNum(withTotalNum);
-        totalMap.setLeaderTotalNum(leaderTotalNum);
+        });
+
+        //查询房型信息
+        List<OrderTotalRoomModelVO> roomModelList = tradeOrderRoomModelMapper.selectOrderRoomModelStatsByOrderIds(orderIds);
+        totalMap.setRoomModelList(roomModelList);
+
+
+
         //TODO: 待完善 订单合计
         return totalMap;
     }

+ 6 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/utils/InsuranceUtil.java

@@ -269,4 +269,10 @@ public class InsuranceUtil {
             return CommonResult.error(500, "发送查询请求失败: " + e.getMessage());
         }
     }
+
+    public static void main(String[] args) {
+        InsuranceUtil insuranceUtil = new InsuranceUtil();
+        CommonResult commonResult = insuranceUtil.queryInsurance("tys-20260725-YC-10");
+        System.out.println(commonResult);
+    }
 }

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

@@ -2482,5 +2482,13 @@
           </if>
         order by t2.boarding_time asc
     </select>
+    <select id="selectTotal1ByOrderIds"
+            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.OrderTotalRespVO">
+        select sum(deposi) deposi, sum(damaged) damaged, sum(supplement_amount) supplement_amount from trade_order
+        where 1=1 and id in
+        <foreach collection="orderIds" item="item" separator=","  open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
 </mapper>
 

+ 205 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderRoomModelMapper.xml

@@ -29,6 +29,19 @@
         </foreach>
         GROUP BY t1.order_id,t2.gender
     </select>
+    <select id="selectOrderShareStatsByOrderIds1"
+            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.OrderShareVO">
+        select if(t2.gender=0,'女','男') gender,count(t2.id) num
+        from trade_order_room_model t1
+        LEFT JOIN trade_visitor t2
+        on t1.room_index_id = t2.room_index_id
+        where t1.use_room_num = 0.5 and t1.deleted = 0 and t2.deleted = 0
+        and t1.order_id in
+        <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="index">
+            #{item}
+        </foreach>
+        GROUP BY t2.gender
+    </select>
     <select id="selectRoomDesc" resultType="com.yc.ship.module.trade.controller.app.otc.vo.AppRoomDescVO">
         SELECT
             t1.order_id,
@@ -44,6 +57,198 @@
                 LEFT JOIN resource_room_model t2 ON t1.room_model_id = t2.id
                 LEFT JOIN resource_room t3 ON t1.room_id = t2.id
     </select>
+    <select id="selectOrderRoomModelStatsByOrderIds"
+            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.OrderTotalRoomModelVO">
+        SELECT
+            a1.room_model_id,
+            a10.name room_model_name,
+        CONCAT(a1.floor,'F') floor,
+            ifnull(a11.adultTakeNum,0) adultTakeNum,
+        ifnull(a5.adultShareNum,0) adultShareNum,
+        ifnull(a2.adultAloneNum,0) adultAloneNum,
+        ifnull(a3.adultPlusNum,0) adultPlusNum,
+        ifnull(a3.childNonTakeNum,0) childNonTakeNum,
+        ifnull(a3.childTakeNum,0) childTakeNum,
+        ifnull(a3.childPlusNum,0) childPlusNum,
+        ifnull(a3.babyNonTakeNum,0) babyNonTakeNum,
+        ifnull(a4.totalNum,0) totalNum,
+        ifnull(a6.leaveRoomNum,0) leaveRoomNum,
+        ifnull(a7.lockRoomNum,0) lockRoomNum,
+        ifnull(a8.shareNum,0) shareNum,
+        ifnull(a9.distributorNum,0) distributorNum
+        FROM
+            ( SELECT room_model_id, floor FROM trade_order_room_model WHERE deleted = 0 and order_id in
+              <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="index">
+                  #{item}
+              </foreach>
+            GROUP BY room_model_id, floor ) a1
+                LEFT JOIN (
+                SELECT
+                    room_model_id,
+                    floor,
+                    sum( adult_take_num ) adultAloneNum
+                FROM
+                    trade_order_room_model
+                WHERE
+                    deleted = 0
+                  AND use_room_num = 1
+                  AND adult_take_num = 1
+                and order_id in
+                <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="index">
+                    #{item}
+                </foreach>
+                GROUP BY
+                    room_model_id,
+                    floor
+            ) a2 ON a1.room_model_id = a2.room_model_id
+                AND a1.floor = a2.floor
+                LEFT JOIN (
+                SELECT
+                    room_model_id,
+                    floor,
+                    sum( adult_plus_num ) adultPlusNum,
+                    sum( child_non_take_num ) childNonTakeNum,
+                    sum( child_take_num ) childTakeNum,
+                    sum( child_plus_num ) childPlusNum,
+                    sum( baby_non_take_num ) babyNonTakeNum
+                FROM
+                    trade_order_room_model
+                WHERE
+                    deleted = 0
+                and order_id in
+                <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="index">
+                    #{item}
+                </foreach>
+                GROUP BY
+                    room_model_id,
+                    floor
+            ) a3 ON a1.room_model_id = a3.room_model_id
+                AND a1.floor = a3.floor
+                LEFT JOIN (
+                SELECT
+                    room_model_id,
+                    floor,
+                    sum( adult_take_num + adult_plus_num + child_non_take_num + child_take_num + child_plus_num + baby_non_take_num ) totalNum
+                FROM
+                    trade_order_room_model
+                WHERE
+                    deleted = 0
+                and order_id in
+                <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="index">
+                    #{item}
+                </foreach>
+                GROUP BY
+                    room_model_id,
+                    floor
+            ) a4 ON a1.room_model_id = a4.room_model_id
+                AND a1.floor = a4.floor
+                LEFT JOIN ( SELECT room_model_id, floor, sum( adult_take_num ) adultShareNum
+                FROM trade_order_room_model
+                WHERE deleted = 0 AND use_room_num = 0.5
+                and order_id in
+                <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="index">
+                    #{item}
+                </foreach>
+                GROUP BY room_model_id, floor ) a5 ON a1.room_model_id = a5.room_model_id and a1.floor = a5.floor
+                LEFT JOIN (
+                SELECT
+                room_model_id,
+                floor,
+                sum( adult_take_num ) adultTakeNum
+                FROM
+                trade_order_room_model
+                WHERE
+                deleted = 0
+                AND use_room_num = 1
+                and adult_take_num > 1
+                AND order_id IN
+                <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="index">
+                    #{item}
+                </foreach>
+                GROUP BY
+                room_model_id,
+                floor
+                ) a11 ON a1.room_model_id = a11.room_model_id
+                AND a1.floor = a11.floor
+                LEFT JOIN (
+                SELECT
+                    room_model_id,
+                    floor,
+                    sum( use_room_num ) leaveRoomNum
+                FROM
+                    trade_order_room_model
+                WHERE
+                order_id IN ( SELECT id FROM trade_order WHERE order_status = 14 AND deleted = 0 )
+                and order_id in
+                <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="index">
+                    #{item}
+                </foreach>
+                AND deleted = 0
+                GROUP BY
+                    room_model_id,
+                    floor
+            ) a6 ON a1.room_model_id = a6.room_model_id
+                AND a1.floor = a6.floor
+                LEFT JOIN (
+                SELECT
+                    room_model_id,
+                    floor,
+                    sum( use_room_num ) lockRoomNum
+                FROM
+                    trade_order_room_model
+                WHERE
+                        order_id IN ( SELECT id FROM trade_order WHERE order_status IN ( 1, 6 ) AND deleted = 0 )
+                  AND deleted = 0
+                and order_id in
+                <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="index">
+                    #{item}
+                </foreach>
+                GROUP BY
+                    room_model_id,
+                    floor
+            ) a7 ON a1.room_model_id = a7.room_model_id
+                AND a1.floor = a7.floor
+                LEFT JOIN (
+                SELECT
+                    room_model_id,
+                    floor,
+                    sum( real_num + virtual_num ) shareNum
+                FROM
+                    product_voyage_stock_detail_log
+                WHERE
+                    deleted = 0 and (real_num>0 or virtual_num > 0)
+                  AND stock_type = 1
+                and order_id in
+                <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="index">
+                    #{item}
+                </foreach>
+                GROUP BY
+                    room_model_id,
+                    floor
+            ) a8 ON a1.room_model_id = a8.room_model_id
+                AND a1.floor = a8.floor
+                LEFT JOIN (
+                SELECT
+                    room_model_id,
+                    floor,
+                    sum( real_num + virtual_num ) distributorNum
+                FROM
+                    product_voyage_stock_detail_log
+                WHERE
+                    deleted = 0
+                  AND stock_type = 2  and (real_num>0 or virtual_num > 0)
+                and order_id in
+                <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="index">
+                    #{item}
+                </foreach>
+                GROUP BY
+                    room_model_id,
+                    floor
+            ) a9 ON a1.room_model_id = a9.room_model_id
+                AND a1.floor = a9.floor
+                LEFT JOIN resource_room_model a10 on a1.room_model_id = a10.id
+        ORDER BY a1.room_model_id asc,a1.floor asc
+    </select>
 
 
 </mapper>

+ 13 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeVisitorMapper.xml

@@ -334,4 +334,17 @@
         </foreach>
         GROUP BY order_id
     </select>
+    <select id="selectWithLeaderStatsByOrderIds"
+            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.OrderWithLeaderStatVO">
+        select
+        type,
+        if(gender=0,'女','男') gender,
+        count(1) num
+        from trade_visitor
+        where deleted = 0 and (type = 'with' or type = 'leader') and order_id in
+        <foreach item="item" collection="orderIds" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        GROUP BY type, gender
+    </select>
 </mapper>