OpsDailyMapper.xml 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.yc.ship.module.trade.dal.mysql.report.OpsDailyMapper">
  4. <!-- 查询省际度假游轮经营情况日报(不分页) -->
  5. <select id="selectCruiseOpsDailyList"
  6. parameterType="com.yc.ship.module.trade.controller.admin.report.vo.CruiseOpsDailyReqVO"
  7. resultType="com.yc.ship.module.trade.controller.admin.report.vo.CruiseOpsDailyRespVO">
  8. SELECT
  9. DATE_FORMAT(v.start_time, '%Y-%m') AS `month`,
  10. DATE_FORMAT(v.start_time, '%Y-%m-%d') AS `date`,
  11. s.name AS ship,
  12. r.name AS route,
  13. v.name AS voyageNo,
  14. s.capacity AS passengerCapacity,
  15. COALESCE(tv.passengerCount, 0) AS passengerCount,
  16. COALESCE(rr.totalRooms, 0) AS totalRooms,
  17. CAST(COALESCE(SUM(rm.usedRooms), 0) AS SIGNED) AS usedRooms,
  18. COALESCE(inc.ticketIncome, 0) AS ticketIncome,
  19. 0 AS secondIncome
  20. FROM product_voyage v
  21. INNER JOIN resource_ship s
  22. ON v.ship_id = s.id AND s.deleted = 0
  23. INNER JOIN resource_route r
  24. ON v.route_id = r.id AND r.deleted = 0
  25. INNER JOIN (
  26. SELECT id, voyage_id, pay_status, real_pay_amount
  27. FROM trade_order
  28. WHERE deleted = 0 AND order_status in (15, 14, 13, 10, 12, 9, 8, 7, 6, 5, 4, 3, 1, 0)
  29. ) o ON v.id = o.voyage_id
  30. LEFT JOIN (
  31. SELECT order_id, SUM(use_room_num) AS usedRooms
  32. FROM trade_order_room_model
  33. WHERE deleted = 0
  34. GROUP BY order_id
  35. ) rm ON o.id = rm.order_id
  36. LEFT JOIN (
  37. SELECT order_id, COUNT(id) AS passengerCount
  38. FROM trade_visitor
  39. WHERE deleted = 0
  40. GROUP BY order_id
  41. ) tv ON o.id = tv.order_id
  42. LEFT JOIN (
  43. SELECT
  44. o.id AS order_id,
  45. SUM(CASE WHEN o.pay_status = 1 THEN p.pay_amount ELSE o.real_pay_amount END) AS ticketIncome
  46. FROM trade_order o
  47. LEFT JOIN trade_order_pay p
  48. ON o.pay_status = 1 AND p.order_id = o.id AND p.deleted = 0 AND p.pay_status = 1
  49. WHERE o.deleted = 0 AND o.order_status in (15, 14, 13, 10, 12, 9, 8, 7, 6, 5, 4, 3, 1, 0)
  50. GROUP BY o.id
  51. ) inc ON o.id = inc.order_id
  52. LEFT JOIN (
  53. SELECT ship_id, COUNT(*) AS totalRooms
  54. FROM resource_room
  55. WHERE deleted = 0
  56. GROUP BY ship_id
  57. ) rr ON v.ship_id = rr.ship_id
  58. WHERE v.deleted = 0
  59. <if test="startDate != null and startDate != ''">
  60. AND v.start_time &gt;= #{startDate}
  61. </if>
  62. <if test="endDate != null and endDate != ''">
  63. AND v.start_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
  64. </if>
  65. GROUP BY v.id
  66. ORDER BY v.start_time ASC, s.name ASC, v.name ASC
  67. </select>
  68. </mapper>