zhangshuling 1 هفته پیش
والد
کامیت
07baeb09db

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

@@ -13,35 +13,35 @@
     -->
     <sql id="selectYangtzePassengerSummary">
         SELECT
-            v.id AS voyageId,
-            s.name AS shipName,
-            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,
-            v.remark AS remark,
-            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(free_stats.ticketedPassengers, 0) AS ticketedPassengers,
-            COALESCE(free_stats.freePassengers, 0) AS freePassengers,
-            COALESCE(room_stats.reservedRooms, 0) * 2 + COALESCE(visitor_stats.totalPassengers, 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(free_stats.ticketedPassengers, 0) > 0
-                 THEN ROUND(COALESCE(finance_stats.receivableAmount, 0) / free_stats.ticketedPassengers, 2)
-                 ELSE 0 END AS avgPrice,
-            COALESCE(visitor_stats.adultCount, 0) AS adultCount,
-            COALESCE(visitor_stats.childCount, 0) AS childCount,
-            COALESCE(visitor_stats.infantCount, 0) AS infantCount,
-            COALESCE(visitor_stats.companionLeaderCount, 0) AS companionLeaderCount,
-            COALESCE(team_stats.groupCount, 0) AS groupCount,
-            COALESCE(team_stats.individualCount, 0) AS individualCount,
-            COALESCE(nationality_stats.domesticCount, 0) AS domesticCount,
-            COALESCE(nationality_stats.overseasCount, 0) AS overseasCount,
-            COALESCE(product_stats.upgradeFloorCount, 0) AS upgradeFloorCount,
-            COALESCE(product_stats.suiteDiscountCount, 0) AS suiteDiscountCount
+        v.id AS voyageId,
+        s.name AS shipName,
+        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,
+        v.remark AS remark,
+        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(free_stats.ticketedPassengers, 0) AS ticketedPassengers,
+        COALESCE(free_stats.freePassengers, 0) AS freePassengers,
+        COALESCE(room_stats.reservedRooms, 0) * 2 + COALESCE(visitor_stats.totalPassengers, 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(free_stats.ticketedPassengers, 0) > 0
+        THEN ROUND(COALESCE(finance_stats.receivableAmount, 0) / free_stats.ticketedPassengers, 2)
+        ELSE 0 END AS avgPrice,
+        COALESCE(visitor_stats.adultCount, 0) AS adultCount,
+        COALESCE(visitor_stats.childCount, 0) AS childCount,
+        COALESCE(visitor_stats.infantCount, 0) AS infantCount,
+        COALESCE(visitor_stats.companionLeaderCount, 0) AS companionLeaderCount,
+        COALESCE(team_stats.groupCount, 0) AS groupCount,
+        COALESCE(team_stats.individualCount, 0) AS individualCount,
+        COALESCE(nationality_stats.domesticCount, 0) AS domesticCount,
+        COALESCE(nationality_stats.overseasCount, 0) AS overseasCount,
+        COALESCE(product_stats.upgradeFloorCount, 0) AS upgradeFloorCount,
+        COALESCE(product_stats.suiteDiscountCount, 0) AS suiteDiscountCount
         FROM product_voyage v
         INNER JOIN resource_ship s ON v.ship_id = s.id AND s.deleted = 0
         INNER JOIN resource_route r ON v.route_id = r.id AND r.deleted = 0
@@ -61,100 +61,100 @@
         ) room_stats ON v.id = room_stats.voyage_id
 
         LEFT JOIN (
-            SELECT
-                o.voyage_id,
-                COUNT(tv.id) AS totalPassengers,
-                SUM(CASE WHEN o.order_status IN (6) THEN 1 ELSE 0 END) AS ticketedPassengers1,
-                SUM(CASE WHEN tv.type IN ('adultTake', 'adultPlus') THEN 1 ELSE 0 END) AS adultCount,
-                SUM(CASE WHEN tv.type IN ('childTake', 'childPlus', 'childNonTake') THEN 1 ELSE 0 END) AS childCount,
-                SUM(CASE WHEN tv.type IN ('babyTake', 'babyPlus', 'babyNonTake') THEN 1 ELSE 0 END) AS infantCount,
-                SUM(CASE WHEN tv.type IN ('with', 'leader') THEN 1 ELSE 0 END) AS companionLeaderCount
-            FROM trade_order o
-            INNER JOIN trade_visitor tv ON o.id = tv.order_id AND tv.deleted = 0
+        SELECT
+        o.voyage_id,
+        COUNT(tv.id) AS totalPassengers,
+        SUM(CASE WHEN o.order_status IN (6) THEN 1 ELSE 0 END) AS ticketedPassengers1,
+        SUM(CASE WHEN tv.type IN ('adultTake', 'adultPlus') THEN 1 ELSE 0 END) AS adultCount,
+        SUM(CASE WHEN tv.type IN ('childTake', 'childPlus', 'childNonTake') THEN 1 ELSE 0 END) AS childCount,
+        SUM(CASE WHEN tv.type IN ('babyTake', 'babyPlus', 'babyNonTake') THEN 1 ELSE 0 END) AS infantCount,
+        SUM(CASE WHEN tv.type IN ('with', 'leader') THEN 1 ELSE 0 END) AS companionLeaderCount
+        FROM trade_order o
+        INNER JOIN trade_visitor tv ON o.id = tv.order_id AND tv.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
+        GROUP BY o.voyage_id
         ) visitor_stats ON v.id = visitor_stats.voyage_id
 
         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)
-                    + COALESCE(tot.baby_total_num, 0) + COALESCE(tot.with_total_num, 0)
-                    + COALESCE(tot.leader_total_num, 0)) ELSE 0 END AS estimatedPassengers1
-            FROM trade_order o
-            LEFT JOIN trade_order_total tot ON o.id = tot.old_order_id AND tot.deleted = 0
+        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)
+        + COALESCE(tot.baby_total_num, 0) + COALESCE(tot.with_total_num, 0)
+        + COALESCE(tot.leader_total_num, 0)) ELSE 0 END AS estimatedPassengers1
+        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)
-            GROUP BY o.voyage_id
+        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,
-                 SUM(CASE WHEN od.name LIKE '免票%' THEN 0 ELSE 1 END) AS ticketedPassengers,
-                SUM(CASE WHEN (o.order_status = 1 or o.order_status = 14) and tv.type IN ('babyTake','babyPlus','babyNonTake','leader','with','childTake','childPlus','childNonTake','adultPlus', 'adultTake') THEN 1 ELSE 0 END) AS estimatedPassengers
+        SELECT
+        o.voyage_id,
+        SUM(CASE WHEN od.name LIKE '免票%' THEN 1 ELSE 0 END) AS freePassengers,
+        SUM(CASE WHEN od.name LIKE '免票%' THEN 0 ELSE 1 END) AS ticketedPassengers,
+        SUM(CASE WHEN (o.order_status = 1 or o.order_status = 14) and tv.type IN ('babyTake','babyPlus','babyNonTake','leader','with','childTake','childPlus','childNonTake','adultPlus', 'adultTake') THEN 1 ELSE 0 END) AS estimatedPassengers
         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
+        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
+        GROUP BY o.voyage_id
         ) free_stats ON v.id = free_stats.voyage_id
 
         LEFT JOIN (
-            SELECT
-                o.voyage_id,
-                SUM(o.pay_amount) AS receivableAmount,
-                SUM(CASE WHEN o.pay_status = 1 THEN COALESCE(p.pay_amount, o.real_pay_amount)
-                         ELSE COALESCE(o.real_pay_amount, 0) END) AS receivedAmount
-            FROM trade_order o
-            LEFT JOIN (
-                SELECT order_id, SUM(pay_amount) AS pay_amount
-                FROM trade_order_pay
-                WHERE deleted = 0 AND pay_status = 1
-                GROUP BY order_id
-            ) p ON o.pay_status = 1 AND p.order_id = o.id
-            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
+        SELECT
+        o.voyage_id,
+        SUM(o.pay_amount) AS receivableAmount,
+        SUM(CASE WHEN o.pay_status = 1 THEN COALESCE(p.pay_amount, o.real_pay_amount)
+        ELSE COALESCE(o.real_pay_amount, 0) END) AS receivedAmount
+        FROM trade_order o
+        LEFT JOIN (
+        SELECT order_id, SUM(pay_amount) AS pay_amount
+        FROM trade_order_pay
+        WHERE deleted = 0 AND pay_status = 1
+        GROUP BY order_id
+        ) p ON o.pay_status = 1 AND p.order_id = o.id
+        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
         ) finance_stats ON v.id = finance_stats.voyage_id
 
         LEFT JOIN (
-            SELECT
-                o.voyage_id,
-                SUM(CASE WHEN visitor_cnt.cnt >= 10 THEN visitor_cnt.cnt ELSE 0 END) AS groupCount,
-                SUM(CASE WHEN visitor_cnt.cnt &lt; 10 THEN visitor_cnt.cnt ELSE 0 END) AS individualCount
-            FROM trade_order o
-            INNER JOIN (
-                SELECT order_id, COUNT(id) AS cnt
-                FROM trade_visitor
-                WHERE deleted = 0
-                GROUP BY order_id
-            ) visitor_cnt ON o.id = visitor_cnt.order_id
-            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
+        SELECT
+        o.voyage_id,
+        SUM(CASE WHEN visitor_cnt.cnt >= 10 THEN visitor_cnt.cnt ELSE 0 END) AS groupCount,
+        SUM(CASE WHEN visitor_cnt.cnt &lt; 10 THEN visitor_cnt.cnt ELSE 0 END) AS individualCount
+        FROM trade_order o
+        INNER JOIN (
+        SELECT order_id, COUNT(id) AS cnt
+        FROM trade_visitor
+        WHERE deleted = 0
+        GROUP BY order_id
+        ) visitor_cnt ON o.id = visitor_cnt.order_id
+        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
         ) team_stats ON v.id = team_stats.voyage_id
 
         LEFT JOIN (
-            SELECT
-                o.voyage_id,
-                SUM(CASE WHEN tv.nationality = '1' OR tv.nationality IS NULL OR tv.nationality = '' THEN 1 ELSE 0 END) AS domesticCount,
-                SUM(CASE WHEN tv.nationality != '1' AND tv.nationality IS NOT NULL AND tv.nationality != '' THEN 1 ELSE 0 END) AS overseasCount
-            FROM trade_order o
-            INNER JOIN trade_visitor tv ON o.id = tv.order_id AND tv.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
+        SELECT
+        o.voyage_id,
+        SUM(CASE WHEN tv.nationality = '1' OR tv.nationality IS NULL OR tv.nationality = '' THEN 1 ELSE 0 END) AS domesticCount,
+        SUM(CASE WHEN tv.nationality != '1' AND tv.nationality IS NOT NULL AND tv.nationality != '' THEN 1 ELSE 0 END) AS overseasCount
+        FROM trade_order o
+        INNER JOIN trade_visitor tv ON o.id = tv.order_id AND tv.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
         ) nationality_stats ON v.id = nationality_stats.voyage_id
 
         LEFT JOIN (
-            SELECT
-                o.voyage_id,
-                COUNT(DISTINCT CASE WHEN td.product_id IN (2007974975358070785, 2012077983546568706, 2012078139826335745) THEN td.id END) AS upgradeFloorCount,
-                COUNT(DISTINCT CASE WHEN td.product_id = 2013782764375310338 THEN td.id END) AS suiteDiscountCount
-            FROM trade_detail td
-            INNER JOIN trade_order o ON o.id = td.order_id AND o.deleted = 0
-            WHERE td.deleted = 0
-              AND o.order_status IN (14, 13, 6, 1)
-              AND td.product_id IN (2007974975358070785, 2012077983546568706, 2012078139826335745, 2013782764375310338)
-            GROUP BY o.voyage_id
+        SELECT
+        o.voyage_id,
+        COUNT(DISTINCT CASE WHEN td.product_id IN (2007974975358070785, 2012077983546568706, 2012078139826335745) THEN td.id END) AS upgradeFloorCount,
+        COUNT(DISTINCT CASE WHEN td.product_id = 2013782764375310338 THEN td.id END) AS suiteDiscountCount
+        FROM trade_detail td
+        INNER JOIN trade_order o ON o.id = td.order_id AND o.deleted = 0
+        WHERE td.deleted = 0
+        AND o.order_status IN (14, 13, 6, 1)
+        AND td.product_id IN (2007974975358070785, 2012077983546568706, 2012078139826335745, 2013782764375310338)
+        GROUP BY o.voyage_id
         ) product_stats ON v.id = product_stats.voyage_id
 
         WHERE v.deleted = 0