Просмотр исходного кода

修改单一航次库存数据接口和长江行收客情况数据总表接口

jincheng 12 часов назад
Родитель
Сommit
5259c3db69

+ 5 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/report/vo/VoyageStockBoardItemVO.java

@@ -77,4 +77,9 @@ public class VoyageStockBoardItemVO {
     @ExcelProperty("环比")
     private String mom;
 
+    /**
+     * 已上架房间数
+     */
+    private BigDecimal shelfedNum;
+
 }

+ 3 - 3
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/report/impl/OpsDailyServiceImpl.java

@@ -599,9 +599,9 @@ public class OpsDailyServiceImpl implements OpsDailyService {
             int overseas = row.getOverseasCount() != null ? row.getOverseasCount() : 0;
             row.setDomesticOverseasRatio(calcRatio(domestic, overseas));
 
-            // 均价 = 收 / 购票人数
-            if (row.getReceivedAmount() != null && row.getTicketedPassengers() != null && row.getTicketedPassengers() > 0) {
-                row.setAvgPrice(row.getReceivedAmount().divide(
+            // 均价 = 收 / 购票人数
+            if (row.getReceivableAmount() != null && row.getTicketedPassengers() != null && row.getTicketedPassengers() > 0) {
+                row.setAvgPrice(row.getReceivableAmount().divide(
                         BigDecimal.valueOf(row.getTicketedPassengers()), 2, RoundingMode.HALF_UP));
             } else {
                 row.setAvgPrice(BigDecimal.ZERO);

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

@@ -156,19 +156,20 @@ public class VoyageStockBoardServiceImpl implements VoyageStockBoardService {
      */
     private void calculateDerivedFields(List<VoyageStockBoardItemVO> detailList) {
         for (VoyageStockBoardItemVO item : detailList) {
-            BigDecimal shelfedNum = safeDecimal(item.getTotalNum());
+            BigDecimal shelfedNum = safeDecimal(item.getShelfedNum());
+            BigDecimal totalNum = safeDecimal(item.getTotalNum());
             BigDecimal depositLock = safeDecimal(item.getDepositLock());
             BigDecimal nameListLock = safeDecimal(item.getNameListLock());
             BigDecimal leaveRoom = safeDecimal(item.getLeaveRoom());
             BigDecimal cutTotal = safeDecimal(item.getCutTotal());
-            BigDecimal cutLock = safeDecimal(item.getCutLock());
+            // BigDecimal cutLock = safeDecimal(item.getCutLock());
             BigDecimal bookedNum = safeDecimal(item.getBookedNum());
 
             // 锁位总房间 = 定金锁位 + 名单锁位
             BigDecimal lockTotal = depositLock.add(nameListLock);
 
             // 切位剩余房间数 = 切位总房间 - 其中已锁位的房间
-            BigDecimal cutRemain = cutTotal.subtract(cutLock);
+            BigDecimal cutRemain = cutTotal.subtract(depositLock).subtract(nameListLock);
             item.setCutRemain(cutRemain.max(BigDecimal.ZERO));
 
             // 剩余可售 = 已上架房间数 - 留位房间数 - 锁位房间数
@@ -176,11 +177,11 @@ public class VoyageStockBoardServiceImpl implements VoyageStockBoardService {
             item.setRemainingSell(remainingSell);
 
             // 剩余共享 = 已上架房间数 - 留位房间数 - 锁位房间数 - 切位剩余房间数
-            BigDecimal remainingShare = remainingSell.subtract(cutRemain);
+            BigDecimal remainingShare = remainingSell.subtract(item.getCutRemain());
             item.setRemainingShare(remainingShare);
 
             // 已订间数/总数
-            String bookedRatio = bookedNum.stripTrailingZeros().toPlainString() + "/" + shelfedNum.stripTrailingZeros().toPlainString();
+            String bookedRatio = bookedNum.stripTrailingZeros().toPlainString() + "/" + totalNum.stripTrailingZeros().toPlainString();
             item.setBookedRatio(bookedRatio);
         }
     }

+ 5 - 4
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/report/VoyageStockBoardMapper.xml

@@ -8,7 +8,7 @@
             pv.name as voyageName,
             COALESCE(pvs.total_num, 0) as totalStock,
             COALESCE(pvs.book_num, 0) as soldStock,
-            COALESCE(pvs.surplus_num, 0) as remainingStock
+            COALESCE(pvs.can_sell_num, 0) as remainingStock
         FROM product_voyage pv
         LEFT JOIN product_voyage_stock pvs ON pv.id = pvs.voyage_id AND pvs.deleted = 0
         WHERE pv.id = #{voyageId} AND pv.deleted = 0
@@ -22,6 +22,7 @@
             t1.floor,
             COALESCE(t1.total_num, 0) as totalNum,
             COALESCE(t1.book_num, 0) as bookedNum,
+            COALESCE(t1.shelfed_num, 0) as shelfedNum,
             COALESCE(lock_stats.deposit_lock, 0) as depositLock,
             COALESCE(lock_stats.name_list_lock, 0) as nameListLock,
             COALESCE(leave_stats.leave_num, 0) as leaveRoom,
@@ -32,8 +33,8 @@
             SELECT
                 torm.room_model_id,
                 torm.floor,
-                SUM(CASE WHEN torder.is_full_pay IS NULL OR torder.is_full_pay = 0 THEN COALESCE(torm.use_room_num, 0) ELSE 0 END) as deposit_lock,
-                SUM(CASE WHEN torder.is_full_pay = 1 THEN COALESCE(torm.use_room_num, 0) ELSE 0 END) as name_list_lock
+                SUM(CASE WHEN torder.deposi_status = 1  THEN COALESCE(torm.use_room_num, 0) ELSE 0 END) as deposit_lock,
+                SUM(CASE WHEN torder.deposi_status != 1 or torder.deposi_status is null THEN COALESCE(torm.use_room_num, 0) ELSE 0 END) as name_list_lock
             FROM trade_order_room_model torm
             INNER JOIN trade_order torder ON torm.order_id = torder.id AND torder.deleted = 0
             WHERE torder.order_status IN (1, 6)
@@ -60,7 +61,7 @@
                 SUM(COALESCE(num, 0)) as cut_total,
                 SUM(COALESCE(book_num, 0)) as cut_lock
             FROM product_voyage_stock_distribute_new
-            WHERE deleted = 0 AND voyage_id = #{voyageId} AND type = 1
+            WHERE deleted = 0 AND voyage_id = #{voyageId}
             GROUP BY room_model_id, floor
         ) cut_stats ON t1.room_model_id = cut_stats.room_model_id AND (t1.floor = cut_stats.floor OR (t1.floor IS NULL AND cut_stats.floor IS NULL))
         WHERE t1.voyage_id = #{voyageId} AND t1.deleted = 0

+ 18 - 8
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/report/YangtzePassengerSummaryMapper.xml

@@ -15,21 +15,21 @@
         SELECT
             v.id AS voyageId,
             s.name AS shipName,
-            CONCAT(DATE_FORMAT(v.start_time, '%Y-%m-%d'), ' ', CASE WHEN r.direction = 1 THEN '上水' ELSE '下水' END) AS voyageInfo,
-            GREATEST(DATEDIFF(DATE(v.start_time), CURDATE()), 0) AS countdown,
+            CONCAT(DATE_FORMAT(v.boarding_time, '%Y-%m-%d'), ' ', CASE WHEN r.direction = 1 THEN '上水' ELSE '下水' END) AS voyageInfo,
+            GREATEST(DATEDIFF(DATE(v.boarding_time), CURDATE()), 0) AS countdown,
             528 AS capacity,
             COALESCE(room_stats.totalRooms, 0) AS totalRooms,
             COALESCE(room_stats.paidRooms, 0) AS paidRooms,
             COALESCE(room_stats.reservedRooms, 0) AS reservedRooms,
             COALESCE(visitor_stats.totalPassengers, 0) AS totalPassengers,
             COALESCE(visitor_stats.ticketedPassengers, 0) AS ticketedPassengers,
-            COALESCE(estimated_stats.freePassengers, 0) AS freePassengers,
+            COALESCE(free_stats.freePassengers, 0) AS freePassengers,
             COALESCE(estimated_stats.estimatedPassengers, 0) AS estimatedPassengers,
             COALESCE(finance_stats.receivableAmount, 0) AS receivableAmount,
             COALESCE(finance_stats.receivedAmount, 0) AS receivedAmount,
             COALESCE(finance_stats.receivableAmount, 0) - COALESCE(finance_stats.receivedAmount, 0) AS unreceivedAmount,
             CASE WHEN COALESCE(visitor_stats.ticketedPassengers, 0) > 0
-                 THEN ROUND(COALESCE(finance_stats.receivedAmount, 0) / visitor_stats.ticketedPassengers, 2)
+                 THEN ROUND(COALESCE(finance_stats.receivableAmount, 0) / visitor_stats.ticketedPassengers, 2)
                  ELSE 0 END AS avgPrice,
             COALESCE(visitor_stats.adultCount, 0) AS adultCount,
             COALESCE(visitor_stats.childCount, 0) AS childCount,
@@ -73,16 +73,26 @@
         LEFT JOIN (
             SELECT
                 o.voyage_id,
-        CASE WHEN o.order_status = 1 or o.order_status = 14 THEN SUM(COALESCE(tot.adult_total_num, 0) + COALESCE(tot.child_total_num, 0)
+                CASE WHEN o.order_status = 1 or o.order_status = 14 THEN SUM(COALESCE(tot.adult_total_num, 0) + COALESCE(tot.child_total_num, 0)
                     + COALESCE(tot.baby_total_num, 0) + COALESCE(tot.with_total_num, 0)
-                    + COALESCE(tot.leader_total_num, 0)) ELSE 0 END AS estimatedPassengers,
-                sum(IFNULL(tot.free_num, 0)) AS freePassengers
+                    + COALESCE(tot.leader_total_num, 0)) ELSE 0 END AS estimatedPassengers
             FROM trade_order o
             LEFT JOIN trade_order_total tot ON o.id = tot.old_order_id AND tot.deleted = 0
-            WHERE o.deleted = 0 AND o.order_status IN (15, 14, 13, 10, 12, 9, 8, 7, 6, 5, 4, 3, 1, 0)
+        WHERE o.deleted = 0 AND o.order_status IN (15, 14, 13, 10, 12, 9, 8, 7, 6, 5, 4, 3, 1, 0)
             GROUP BY o.voyage_id
         ) estimated_stats ON v.id = estimated_stats.voyage_id
 
+        LEFT JOIN (
+            SELECT
+                o.voyage_id,
+                SUM(CASE WHEN od.name LIKE '免票%' THEN 1 ELSE 0 END) AS freePassengers
+            FROM trade_order o
+            INNER JOIN trade_visitor tv ON o.id = tv.order_id AND tv.deleted = 0
+            LEFT JOIN ota_distributor od ON o.source_id = od.id AND od.deleted = 0
+        WHERE o.deleted = 0 AND o.order_status IN (15, 14, 13, 10, 12, 9, 8, 7, 6, 5, 4, 3, 1, 0)
+            GROUP BY o.voyage_id
+        ) free_stats ON v.id = free_stats.voyage_id
+
         LEFT JOIN (
             SELECT
                 o.voyage_id,