Kaynağa Gözat

Merge branch 'main' of http://47.98.207.247:3000/lsq/ship-ota-server

lishiqiang 2 hafta önce
ebeveyn
işleme
72ae7c8b4a

+ 1 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/OrderJzDetailController.java

@@ -224,6 +224,7 @@ public class OrderJzDetailController {
       OrderJzDetailExportVO vo = new OrderJzDetailExportVO();
       vo.setIndex(i + 1);
       vo.setOrderNo(detail.getOrderNo());
+      vo.setSourceName(detail.getSourceName());
       vo.setName(detail.getName());
       vo.setIdCard(detail.getIdCard());
       vo.setPhone(detail.getPhone());

+ 19 - 18
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailExportVO.java

@@ -13,56 +13,57 @@ public class OrderJzDetailExportVO {
 
     @ExcelProperty(value = "订单编号", index = 1)
     private String orderNo;
-
-    @ExcelProperty(value = "站点", index = 2)
+    @ExcelProperty(value = "代理商", index = 2)
+    private String sourceName;
+    @ExcelProperty(value = "站点", index = 3)
     private String address;
 
-    @ExcelProperty(value = "接站时间", index = 3)
+    @ExcelProperty(value = "接站时间", index = 4)
     private String arriveTime;
 
-    @ExcelProperty(value = "姓名", index = 4)
+    @ExcelProperty(value = "姓名", index = 5)
     private String name;
 
-    @ExcelProperty(value = "证件号", index = 5)
+    @ExcelProperty(value = "证件号", index = 6)
     private String idCard;
 
-    @ExcelProperty(value = "联系电话", index = 6)
+    @ExcelProperty(value = "联系电话", index = 7)
     private String phone;
 
-    @ExcelProperty(value = "房型", index = 7)
+    @ExcelProperty(value = "房型", index = 8)
     private String roomModelName;
 
-    @ExcelProperty(value = "车次/航班号", index = 8)
+    @ExcelProperty(value = "车次/航班号", index = 9)
     private String remark;
 
-    @ExcelProperty(value = "核销时间", index = 9)
+    @ExcelProperty(value = "核销时间", index = 10)
     private String signTime;
 
-    @ExcelProperty(value = "分车号", index = 10)
+    @ExcelProperty(value = "分车号", index = 11)
     private String dispatchNo;
 
-    @ExcelProperty(value = "分车组团号", index = 11)
+    @ExcelProperty(value = "分车组团号", index = 12)
     private String groupNo;
 
-    @ExcelProperty(value = "车牌号", index = 12)
+    @ExcelProperty(value = "车牌号", index = 13)
     private String busNumber;
 
-    @ExcelProperty(value = "司机姓名", index = 13)
+    @ExcelProperty(value = "司机姓名", index = 14)
     private String driverName;
 
-    @ExcelProperty(value = "司机联系电话", index = 14)
+    @ExcelProperty(value = "司机联系电话", index = 15)
     private String driverPhone;
 
-    @ExcelProperty(value = "接站人员", index = 15)
+    @ExcelProperty(value = "接站人员", index = 16)
     private String receiverName;
 
-    @ExcelProperty(value = "接站人电话", index = 16)
+    @ExcelProperty(value = "接站人电话", index = 17)
     private String receiverPhone;
 
-    @ExcelProperty(value = "分车情况", index = 17)
+    @ExcelProperty(value = "分车情况", index = 18)
     private String dispatchRemark;
 
-    @ExcelProperty(value = "预约情况", index = 18)
+    @ExcelProperty(value = "预约情况", index = 19)
     private String reservationInfo;
 
 }

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

@@ -72,6 +72,9 @@ public class OrderJzDetailRespVO {
     @Schema(description = "订单编号")
     private String orderNo;
 
+    @Schema(description = "代理商")
+    private String sourceName;
+
     @Schema(description = "分车号")
     private String dispatchNo;
 

+ 5 - 7
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/report/KanbanBoardController.java

@@ -9,9 +9,7 @@ import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
@@ -230,9 +228,9 @@ public class KanbanBoardController {
      * @param reqVO 查询条件
      * @return 航次数据情况汇总(多航次合并为一个结果)
      */
-    @GetMapping("/voyageDataSummary")
+    @PostMapping("/voyageDataSummary")
     @Operation(summary = "查询航次数据情况汇总")
-    public CommonResult<VoyageDataSummaryRespVO> getVoyageDataSummary(@Valid VoyageDataSummaryReqVO reqVO) {
+    public CommonResult<VoyageDataSummaryRespVO> getVoyageDataSummary(@RequestBody @Valid VoyageDataSummaryReqVO reqVO) {
         VoyageDataSummaryRespVO vo = voyageStockBoardService.getVoyageDataSummary(reqVO);
         return success(vo);
     }
@@ -244,10 +242,10 @@ public class KanbanBoardController {
      * @param response HTTP响应
      * @throws IOException IO异常
      */
-    @GetMapping("/voyageDataSummary/export-excel")
+    @PostMapping("/voyageDataSummary/export-excel")
     @Operation(summary = "导出航次数据情况汇总 Excel")
     @ApiAccessLog(operateType = EXPORT)
-    public void exportVoyageDataSummaryExcel(@Valid VoyageDataSummaryReqVO reqVO,
+    public void exportVoyageDataSummaryExcel(@RequestBody @Valid VoyageDataSummaryReqVO reqVO,
                                               HttpServletResponse response) throws IOException {
         voyageStockBoardService.exportVoyageDataSummaryExcel(reqVO, response);
     }

+ 4 - 4
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/report/vo/VisitorSourceDashboardReqVO.java

@@ -3,7 +3,7 @@ package com.yc.ship.module.trade.controller.admin.report.vo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-import javax.validation.constraints.NotNull;
+import javax.validation.constraints.NotEmpty;
 import java.util.List;
 
 /**
@@ -13,9 +13,9 @@ import java.util.List;
 @Data
 public class VisitorSourceDashboardReqVO {
 
-    @Schema(description = "游轮ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "游轮ID不能为空")
-    private Long shipId;
+    @Schema(description = "游轮ID列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,2,3]")
+    @NotEmpty(message = "游轮ID列表不能为空")
+    private List<Long> shipIds;
 
     @Schema(description = "航次ID列表", example = "[1,2,3]")
     private List<Long> voyageIds;

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/orderjzdetail/OrderJzDetailDO.java

@@ -143,4 +143,7 @@ public class OrderJzDetailDO extends BaseDO {
     @TableField(exist = false)
     private String dispatchRemark;
 
+    @TableField(exist = false)
+    private String sourceName;
+
 }

+ 2 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/report/VoyageStockBoardMapper.java

@@ -48,7 +48,7 @@ public interface VoyageStockBoardMapper {
      * @param voyageIds 航次ID列表
      * @return 游客列表(含证件类型、证件号、国籍及国籍名称)
      */
-    List<TradeVisitorDO> selectVisitorListForSourceDashboard(@Param("shipId") Long shipId, @Param("voyageIds") List<Long> voyageIds);
+    List<TradeVisitorDO> selectVisitorListForSourceDashboard(@Param("shipId") Long shipId, @Param("voyageIds") List<Long> voyageIds, @Param("distributorId") Long distributorId);
 
     /**
      * 查询游客年龄段分析看板所需的游客年龄列表
@@ -57,7 +57,7 @@ public interface VoyageStockBoardMapper {
      * @param voyageIds 航次ID列表
      * @return 游客年龄列表
      */
-    List<Integer> selectVisitorAgeListForAgeDashboard(@Param("shipId") Long shipId, @Param("voyageIds") List<Long> voyageIds);
+    List<Integer> selectVisitorAgeListForAgeDashboard(@Param("shipId") Long shipId, @Param("voyageIds") List<Long> voyageIds, @Param("distributorId") Long distributorId);
 
     /**
      * 查询所有航次库存分页

+ 26 - 10
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/report/impl/VoyageStockBoardServiceImpl.java

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.excel.core.util.ExcelUtils;
+import com.yc.ship.framework.security.core.util.SecurityFrameworkUtils;
 import com.yc.ship.module.resource.api.ship.dto.RoomModelFloorNumDTO;
 import com.yc.ship.module.resource.dal.mysql.room.ResourceRoomMapper;
 import com.yc.ship.module.trade.controller.admin.report.vo.*;
@@ -676,15 +677,22 @@ public class VoyageStockBoardServiceImpl implements VoyageStockBoardService {
 
     @Override
     public VisitorSourceDashboardRespVO getVisitorSourceDashboard(VisitorSourceDashboardReqVO reqVO) {
-        // 1. 查询游客列表
-        List<TradeVisitorDO> visitorList = voyageStockBoardMapper.selectVisitorListForSourceDashboard(
-                reqVO.getShipId(), reqVO.getVoyageIds());
-        if (CollUtil.isEmpty(visitorList)) {
+        // 1. 查询游客列表(多游轮汇总)
+        List<TradeVisitorDO> allVisitorList = new ArrayList<>();
+        Long distributorId = SecurityFrameworkUtils.getLoginDistributorId();
+        for (Long shipId : reqVO.getShipIds()) {
+            List<TradeVisitorDO> visitorList = voyageStockBoardMapper.selectVisitorListForSourceDashboard(
+                    shipId, reqVO.getVoyageIds(), distributorId);
+            if (CollUtil.isNotEmpty(visitorList)) {
+                allVisitorList.addAll(visitorList);
+            }
+        }
+        if (CollUtil.isEmpty(allVisitorList)) {
             return buildEmptyResp();
         }
 
         // 2. 分类统计
-        return analyzeVisitorSource(visitorList);
+        return analyzeVisitorSource(allVisitorList);
     }
 
     @Override
@@ -949,17 +957,25 @@ public class VoyageStockBoardServiceImpl implements VoyageStockBoardService {
 
     @Override
     public VisitorAgeDashboardRespVO getVisitorAgeDashboard(VisitorSourceDashboardReqVO reqVO) {
-        // 1. 查询游客年龄列表
-        List<Integer> ageList = voyageStockBoardMapper.selectVisitorAgeListForAgeDashboard(
-                reqVO.getShipId(), reqVO.getVoyageIds());
-        if (CollUtil.isEmpty(ageList)) {
+        // 1. 查询游客年龄列表(多游轮汇总)
+        List<Integer> allAgeList = new ArrayList<>();
+        Long distributorId = SecurityFrameworkUtils.getLoginDistributorId();
+        for (Long shipId : reqVO.getShipIds()) {
+            List<Integer> ageList = voyageStockBoardMapper.selectVisitorAgeListForAgeDashboard(
+                    shipId, reqVO.getVoyageIds(), distributorId);
+            if (CollUtil.isNotEmpty(ageList)) {
+                allAgeList.addAll(ageList);
+            }
+        }
+        if (CollUtil.isEmpty(allAgeList)) {
             return buildEmptyAgeResp();
         }
 
         // 2. 年龄段分组统计
-        return analyzeVisitorAge(ageList);
+        return analyzeVisitorAge(allAgeList);
     }
 
+
     @Override
     public void exportVisitorAgeDashboardExcel(VisitorSourceDashboardReqVO reqVO, HttpServletResponse response) throws IOException {
         VisitorAgeDashboardRespVO data = getVisitorAgeDashboard(reqVO);

+ 3 - 2
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/orderjzdetail/OrderJzDetailMapper.xml

@@ -11,7 +11,8 @@
     <select id="selectPage2"
             resultType="com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO">
         select distinct d.* , r.direction , rm.name as room_model_name,
-        SUBSTRING_INDEX(o.order_no, '-', -1) as orderNo, dj.dispatch_no as dispatchNo, dj.group_no as groupNo,
+        o.order_no as orderNo, dj.dispatch_no as dispatchNo, dj.group_no as groupNo,
+        o.source_name as sourceName,
         dj.bus_number as busNumber, dj.driver_name as driverName, dj.driver_phone as driverPhone,
         dj.receiver_name as receiverName, dj.receiver_phone as receiverPhone, d.sign_remark as dispatchRemark
         from trade_order_jz_detail d
@@ -52,7 +53,7 @@
     <select id="selectVisitorExportList"
             resultType="com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO">
         select distinct d.* , r.direction , rm.name as room_model_name,
-        SUBSTRING_INDEX(o.order_no, '-', -1) as orderNo, dj.dispatch_no as dispatchNo, dj.group_no as groupNo, dj.bus_number as busNumber,dj.driver_name as driverName,dj.driver_phone as driverPhone,dj.receiver_name as receiverName,dj.receiver_phone as receiverPhone,d.sign_remark as dispatchRemark
+        o.order_no as orderNo,o.source_name as sourceName, dj.dispatch_no as dispatchNo, dj.group_no as groupNo, dj.bus_number as busNumber,dj.driver_name as driverName,dj.driver_phone as driverPhone,dj.receiver_name as receiverName,dj.receiver_phone as receiverPhone,d.sign_remark as dispatchRemark
         from trade_order_jz_detail d
         inner join trade_order_jz oz on d.jz_id = oz.id
         inner join trade_order o on o.deleted = 0 and o.id = oz.order_id

+ 9 - 2
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/report/VoyageStockBoardMapper.xml

@@ -122,6 +122,9 @@
                 #{item}
             </foreach>
         </if>
+        <if test="distributorId != null">
+            AND tor.source_id = #{distributorId}
+        </if>
     </select>
 
     <select id="selectVisitorAgeListForAgeDashboard" resultType="java.lang.Integer">
@@ -140,6 +143,9 @@
                 #{item}
             </foreach>
         </if>
+        <if test="distributorId != null">
+            AND tor.source_id = #{distributorId}
+        </if>
     </select>
 
     <select id="selectAllVoyageStockPage"
@@ -400,10 +406,11 @@
     <select id="selectVoyageDataSummaryRoomList" resultType="java.util.HashMap">
         SELECT
             tor.voyage_id as voyageId,
-            torm.room_model_name as roomModelName,
+            rrm.short_name as roomModelName,
             SUM(COALESCE(torm.use_room_num, 0)) as roomNum
         FROM trade_order_room_model torm
         INNER JOIN trade_order tor ON torm.order_id = tor.id AND tor.deleted = 0
+        INNER JOIN resource_room_model rrm ON torm.room_model_id = rrm.id
         WHERE torm.deleted = 0
         AND tor.order_status IN (15, 14, 13, 10, 12, 9, 8, 7, 6, 5, 4, 3, 1, 0)
         AND torm.room_model_name IS NOT NULL
@@ -417,7 +424,7 @@
                 #{item}
             </foreach>
         </if>
-        GROUP BY tor.voyage_id, torm.room_model_name
+        GROUP BY tor.voyage_id, rrm.short_name
         ORDER BY SUM(COALESCE(torm.use_room_num, 0)) DESC
     </select>