IotRyDailyReportMapper.xml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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="cn.iocoder.yudao.module.pms.dal.mysql.iotrydailyreport.IotRyDailyReportMapper">
  4. <!-- 基础结果映射 -->
  5. <resultMap id="BaseResultMap" type="cn.iocoder.yudao.module.pms.dal.dataobject.iotrydailyreport.IotRyDailyReportDO">
  6. <!-- 根据实际字段配置 -->
  7. <id column="id" property="id" />
  8. <result column="dept_id" property="deptId" />
  9. <result column="project_id" property="projectId" />
  10. <result column="task_id" property="taskId" />
  11. <result column="rig_status" property="rigStatus" />
  12. <result column="construction_start_date" property="constructionStartDate" />
  13. <result column="construction_end_date" property="constructionEndDate" />
  14. <result column="relocation_days" property="relocationDays" />
  15. <!-- 其他字段映射 -->
  16. </resultMap>
  17. <select id="selectListGrouped" resultMap="BaseResultMap"
  18. parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotrhdailyreport.vo.IotRhDailyReportPageReqVO">
  19. SELECT t1.*, g.min_start_date
  20. FROM rq_iot_ry_daily_report t1
  21. INNER JOIN (
  22. SELECT
  23. rig_status,
  24. MIN(construction_start_date) as min_start_date
  25. FROM rq_iot_ry_daily_report
  26. <where>
  27. <if test="reqVO.deptId != null">
  28. AND dept_id = #{reqVO.deptId}
  29. </if>
  30. <if test="reqVO.projectId != null">
  31. AND project_id = #{reqVO.projectId}
  32. </if>
  33. <if test="reqVO.taskId != null">
  34. AND task_id = #{reqVO.taskId}
  35. </if>
  36. </where>
  37. GROUP BY rig_status
  38. ) g ON t1.rig_status = g.rig_status
  39. AND t1.construction_start_date = g.min_start_date
  40. WHERE NOT EXISTS (
  41. SELECT 1 FROM rq_iot_ry_daily_report t2
  42. WHERE t2.rig_status = t1.rig_status
  43. AND t2.construction_start_date &lt; t1.construction_start_date
  44. <if test="reqVO.deptId != null">
  45. AND t2.dept_id = #{reqVO.deptId}
  46. </if>
  47. <if test="reqVO.projectId != null">
  48. AND t2.project_id = #{reqVO.projectId}
  49. </if>
  50. <if test="reqVO.taskId != null">
  51. AND t2.task_id = #{reqVO.taskId}
  52. </if>
  53. )
  54. <if test="reqVO.deptId != null">
  55. AND t1.dept_id = #{reqVO.deptId}
  56. </if>
  57. <if test="reqVO.projectId != null">
  58. AND t1.project_id = #{reqVO.projectId}
  59. </if>
  60. <if test="reqVO.taskId != null">
  61. AND t1.task_id = #{reqVO.taskId}
  62. </if>
  63. ORDER BY g.min_start_date ASC
  64. </select>
  65. <select id="latestWellDoneTimes" resultMap="BaseResultMap"
  66. parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreport.vo.IotRyDailyReportPageReqVO">
  67. SELECT r1.dept_id,
  68. r1.task_id,
  69. r1.construction_start_date
  70. FROM rq_iot_ry_daily_report r1
  71. INNER JOIN (
  72. SELECT
  73. dept_id,
  74. MAX(create_time) AS max_create_time
  75. FROM rq_iot_ry_daily_report
  76. WHERE rig_status = 12
  77. GROUP BY dept_id
  78. ) r2 ON r1.dept_id = r2.dept_id AND r1.create_time = r2.max_create_time
  79. WHERE r1.rig_status = 12;
  80. </select>
  81. </mapper>