| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="cn.iocoder.yudao.module.pms.dal.mysql.iotrhdailyreport.IotRhDailyReportMapper">
- <!-- 基础结果映射 -->
- <resultMap id="BaseResultMap" type="cn.iocoder.yudao.module.pms.dal.dataobject.iotrhdailyreport.IotRhDailyReportDO">
- <!-- 根据实际字段配置 -->
- <id column="id" property="id" />
- <result column="dept_id" property="deptId" />
- <result column="project_id" property="projectId" />
- <result column="task_id" property="taskId" />
- <result column="construction_status" property="constructionStatus" />
- <result column="construction_start_date" property="constructionStartDate" />
- <result column="construction_end_date" property="constructionEndDate" />
- <result column="relocation_days" property="relocationDays" />
- <!-- 其他字段映射 -->
- <result column="project_classification" property="projectClassification" />
- <result column="transit_time" property="transitTime" />
- <result column="daily_gas_injection" property="dailyGasInjection" />
- <result column="daily_water_injection" property="dailyWaterInjection" />
- <result column="daily_inject_gas_time" property="dailyInjectGasTime" />
- <result column="daily_inject_water_time" property="dailyInjectWaterTime" />
- <result column="daily_power_usage" property="dailyPowerUsage" />
- <!-- 其他字段映射 -->
- <result column="non_production_time" property="nonProductionTime" />
- <result column="npt_reason" property="nptReason" />
- <result column="production_status" property="productionStatus" />
- <result column="next_plan" property="nextPlan" />
- <result column="total_water_injection" property="totalWaterInjection" />
- <result column="personnel" property="personnel" />
- <result column="total_gas_injection" property="totalGasInjection" />
- <!-- 其他字段映射 -->
- <result column="cumulative_completion" property="cumulativeCompletion" />
- <result column="remark" property="remark" />
- <result column="status" property="status" />
- <result column="creator" property="creator" />
- <result column="create_time" property="createTime" />
- <result column="updater" property="updater" />
- <result column="update_time" property="updateTime" />
- </resultMap>
- <!-- 使用窗口函数实现分组查询 -->
- <select id="selectListGroupedBack" resultMap="BaseResultMap"
- parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotrhdailyreport.vo.IotRhDailyReportPageReqVO">
- WITH rq_iot_rh_daily_report AS (
- SELECT
- *,
- ROW_NUMBER() OVER (
- PARTITION BY construction_status
- ORDER BY construction_start_date
- ) as row_num,
- MIN(construction_start_date) OVER (
- PARTITION BY construction_status
- ) as min_start_date
- FROM rq_iot_rh_daily_report
- <where>
- <if test="reqVO.deptId != null">
- AND dept_id = #{reqVO.deptId}
- </if>
- <if test="reqVO.projectId != null">
- AND project_id = #{reqVO.projectId}
- </if>
- <if test="reqVO.taskId != null">
- AND task_id = #{reqVO.taskId}
- </if>
- </where>
- )
- SELECT *
- FROM rq_iot_rh_daily_report
- WHERE row_num = 1
- ORDER BY min_start_date ASC
- </select>
- <select id="selectYearTotalGas" parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotrhdailyreport.vo.IotRhDailyReportPageReqVO"
- resultType="cn.iocoder.yudao.module.pms.controller.admin.stat.vo.YearTotalGas">
- SELECT
- DATE_FORMAT(create_time, '%Y-%m') AS month,
- SUM(IFNULL(daily_gas_injection, 0)) AS total_gas
- FROM
- rq_iot_rh_daily_report a
- WHERE
- a.create_time >= DATE_SUB(NOW(), INTERVAL 1 YEAR)
- GROUP BY
- month
- ORDER BY
- month ASC;
- </select>
- <select id="selectListGrouped" resultMap="BaseResultMap"
- parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotrhdailyreport.vo.IotRhDailyReportPageReqVO">
- SELECT t1.*, g.min_start_date
- FROM rq_iot_rh_daily_report t1
- INNER JOIN (
- SELECT
- construction_status,
- MIN(construction_start_date) as min_start_date
- FROM rq_iot_rh_daily_report
- <where>
- <if test="reqVO.deptId != null">
- AND dept_id = #{reqVO.deptId}
- </if>
- <if test="reqVO.projectId != null">
- AND project_id = #{reqVO.projectId}
- </if>
- <if test="reqVO.taskId != null">
- AND task_id = #{reqVO.taskId}
- </if>
- </where>
- GROUP BY construction_status
- ) g ON t1.construction_status = g.construction_status
- AND t1.construction_start_date = g.min_start_date
- WHERE NOT EXISTS (
- SELECT 1 FROM rq_iot_rh_daily_report t2
- WHERE t2.construction_status = t1.construction_status
- AND t2.construction_start_date < t1.construction_start_date
- <if test="reqVO.deptId != null">
- AND t2.dept_id = #{reqVO.deptId}
- </if>
- <if test="reqVO.projectId != null">
- AND t2.project_id = #{reqVO.projectId}
- </if>
- <if test="reqVO.taskId != null">
- AND t2.task_id = #{reqVO.taskId}
- </if>
- )
- <if test="reqVO.deptId != null">
- AND t1.dept_id = #{reqVO.deptId}
- </if>
- <if test="reqVO.projectId != null">
- AND t1.project_id = #{reqVO.projectId}
- </if>
- <if test="reqVO.taskId != null">
- AND t1.task_id = #{reqVO.taskId}
- </if>
- ORDER BY g.min_start_date ASC
- </select>
- <select id="relocationDays" resultMap="BaseResultMap"
- parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotrhdailyreport.vo.IotRhDailyReportPageReqVO">
- SELECT
- dept_id,
- DATEDIFF(
- MIN(CASE WHEN construction_status = 'sg' THEN construction_start_date END),
- MIN(CASE WHEN construction_status = 'dq' THEN construction_start_date END)
- ) AS relocation_days
- FROM rq_iot_rh_daily_report
- WHERE construction_status IN ('dq', 'sg')
- AND deleted = 0
- GROUP BY dept_id;
- </select>
- <select id="rhDailyReports" resultMap="BaseResultMap"
- parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotrhdailyreport.vo.IotRhDailyReportPageReqVO">
- SELECT
- rdr.*
- FROM
- rq_iot_rh_daily_report rdr
- INNER JOIN system_dept d ON d.id = rdr.dept_id
- LEFT JOIN system_dept pd ON pd.id = d.parent_id
- WHERE
- rdr.deleted = 0
- AND rdr.dept_id IS NOT NULL
- <if test="deptIds != null and deptIds.size > 0">
- AND rdr.dept_id IN
- <foreach collection="deptIds" index="index" item="key" open="(" separator="," close=")">
- #{key}
- </foreach>
- </if>
- <if test="projectIds != null and projectIds.size > 0">
- AND rdr.project_id IN
- <foreach collection="projectIds" index="index" item="key" open="(" separator="," close=")">
- #{key}
- </foreach>
- </if>
- <if test="taskIds != null and taskIds.size > 0">
- AND rdr.task_id IN
- <foreach collection="taskIds" index="index" item="key" open="(" separator="," close=")">
- #{key}
- </foreach>
- </if>
- <if test="reqVO.createTime != null and reqVO.createTime.length > 0">
- <!-- 处理“开始时间”(数组第1位,如 createTime[0] = 2024-01-01 00:00:00) -->
- <if test="reqVO.createTime[0] != null">
- AND rdr.create_time >= #{reqVO.createTime[0]}
- </if>
- <!-- 处理“结束时间”(数组第2位,如 createTime[1] = 2024-01-31 23:59:59) -->
- <if test="reqVO.createTime.length > 1 and reqVO.createTime[1] != null">
- AND rdr.create_time <= #{reqVO.createTime[1]}
- </if>
- </if>
- ORDER BY
- DATE(rdr.create_time) DESC,
- COALESCE(pd.sort, 999999) ASC,
- d.sort ASC;
- </select>
- <!-- 瑞恒日报汇总统计 -->
- <select id="rhReportStatistics" resultMap="BaseResultMap"
- parameterType="cn.iocoder.yudao.module.pms.controller.admin.iotrhdailyreport.vo.IotRhDailyReportPageReqVO">
- SELECT
- *
- FROM
- rq_iot_rh_daily_report rdr
- INNER JOIN system_dept d ON d.id = rdr.dept_id
- WHERE
- rdr.deleted = 0
- AND rdr.dept_id IS NOT NULL
- <if test="deptIds != null and deptIds.size > 0">
- AND rdr.dept_id IN
- <foreach collection="deptIds" index="index" item="key" open="(" separator="," close=")">
- #{key}
- </foreach>
- </if>
- <if test="projectIds != null and projectIds.size > 0">
- AND rdr.project_id IN
- <foreach collection="projectIds" index="index" item="key" open="(" separator="," close=")">
- #{key}
- </foreach>
- </if>
- <if test="taskIds != null and taskIds.size > 0">
- AND rdr.task_id IN
- <foreach collection="taskIds" index="index" item="key" open="(" separator="," close=")">
- #{key}
- </foreach>
- </if>
- <if test="reqVO.createTime != null and reqVO.createTime.length > 0">
- <!-- 处理“开始时间”(数组第1位,如 createTime[0] = 2024-01-01 00:00:00) -->
- <if test="reqVO.createTime[0] != null">
- AND rdr.create_time >= #{reqVO.createTime[0]}
- </if>
- <!-- 处理“结束时间”(数组第2位,如 createTime[1] = 2024-01-31 23:59:59) -->
- <if test="reqVO.createTime.length > 1 and reqVO.createTime[1] != null">
- AND rdr.create_time <= #{reqVO.createTime[1]}
- </if>
- </if>
- </select>
- </mapper>
|