|
|
@@ -119,4 +119,157 @@
|
|
|
|
|
|
group by status
|
|
|
</select>
|
|
|
+ <select id="getAllOrder" parameterType="cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO"
|
|
|
+ resultType="cn.iocoder.yudao.module.pms.controller.admin.stat.vo.OrderVo">
|
|
|
+select * from (
|
|
|
+ select a.id,'维修工单' as type, a.create_time as createTime,
|
|
|
+ CASE
|
|
|
+ WHEN a.status = 'todo' THEN '未完成'
|
|
|
+ WHEN a.status = 'finished' THEN '已完成'
|
|
|
+ WHEN a.status = 'ignore' THEN '忽略'
|
|
|
+ ELSE '' -- 兼容其他未知状态值
|
|
|
+ END AS status,concat(a.device_code,'|',a.device_name) as device, a.dept_id as deptId,
|
|
|
+ CASE
|
|
|
+ WHEN d.type = 1 THEN COALESCE(d.`name`, '')
|
|
|
+ WHEN d.type = 2 THEN COALESCE(p1.`name`, '')
|
|
|
+ WHEN d.type = 3 THEN COALESCE(p2.`name`, '')
|
|
|
+ ELSE ''
|
|
|
+ END AS company,
|
|
|
+ -- 按type规则填充project字段
|
|
|
+ CASE
|
|
|
+ WHEN d.type = 2 THEN COALESCE(d.`name`, '')
|
|
|
+ WHEN d.type = 3 THEN COALESCE(p1.`name`, '')
|
|
|
+ ELSE ''
|
|
|
+ END AS project,
|
|
|
+ -- 按type规则填充deptName字段(仅type=3时有值)
|
|
|
+ CASE
|
|
|
+ WHEN d.type = 3 THEN COALESCE(d.`name`, '')
|
|
|
+ ELSE ''
|
|
|
+ END AS deptName
|
|
|
+ from rq_iot_maintain a
|
|
|
+ -- 左关联当前部门(避免主表数据丢失)
|
|
|
+ LEFT JOIN system_dept d ON a.dept_id = d.id
|
|
|
+ -- 左关联父级部门(type=2/3时用)
|
|
|
+ LEFT JOIN system_dept p1 ON d.parent_id = p1.id
|
|
|
+ -- 左关联祖父级部门(type=3时用)
|
|
|
+ LEFT JOIN system_dept p2 ON p1.parent_id = p2.id
|
|
|
+ <where>
|
|
|
+ <if test="reqVO.createTime[0] != null">
|
|
|
+ AND a.create_time >= #{reqVO.createTime[0]}
|
|
|
+ </if>
|
|
|
+ <if test="reqVO.createTime.length > 1 and reqVO.createTime[1] != null">
|
|
|
+ AND a.create_time <= #{reqVO.createTime[1]}
|
|
|
+ </if>
|
|
|
+ <if test="reqVO.deptIds != null and reqVO.deptIds.size > 0">
|
|
|
+ AND a.dept_id IN
|
|
|
+ <foreach collection="reqVO.deptIds" index="index" item="key" open="(" separator="," close=")">
|
|
|
+ #{key}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ UNION ALL
|
|
|
+ select b.id,'巡检工单' as type, b.create_time as createTime,
|
|
|
+ CASE
|
|
|
+ WHEN b.status = 'todo' THEN '未完成'
|
|
|
+ WHEN b.status = 'finished' THEN '已完成'
|
|
|
+ WHEN b.status = 'ignore' THEN '忽略'
|
|
|
+ ELSE '' -- 兼容其他未知状态值
|
|
|
+ END AS status, '' as device,b.dept_id as deptId,
|
|
|
+ CASE
|
|
|
+ WHEN d.type = 1 THEN COALESCE(d.`name`, '')
|
|
|
+ WHEN d.type = 2 THEN COALESCE(p1.`name`, '')
|
|
|
+ WHEN d.type = 3 THEN COALESCE(p2.`name`, '')
|
|
|
+ ELSE ''
|
|
|
+ END AS company,
|
|
|
+ -- 按type规则填充project字段
|
|
|
+ CASE
|
|
|
+ WHEN d.type = 2 THEN COALESCE(d.`name`, '')
|
|
|
+ WHEN d.type = 3 THEN COALESCE(p1.`name`, '')
|
|
|
+ ELSE ''
|
|
|
+ END AS project,
|
|
|
+ -- 按type规则填充deptName字段(仅type=3时有值)
|
|
|
+ CASE
|
|
|
+ WHEN d.type = 3 THEN COALESCE(d.`name`, '')
|
|
|
+ ELSE ''
|
|
|
+ END AS deptName
|
|
|
+ from rq_iot_inspect_order b
|
|
|
+ -- 左关联当前部门(避免主表数据丢失)
|
|
|
+ LEFT JOIN system_dept d ON b.dept_id = d.id
|
|
|
+ -- 左关联父级部门(type=2/3时用)
|
|
|
+ LEFT JOIN system_dept p1 ON d.parent_id = p1.id
|
|
|
+ -- 左关联祖父级部门(type=3时用)
|
|
|
+ LEFT JOIN system_dept p2 ON p1.parent_id = p2.id
|
|
|
+ <where>
|
|
|
+ <if test="reqVO.createTime[0] != null">
|
|
|
+ AND b.create_time >= #{reqVO.createTime[0]}
|
|
|
+ </if>
|
|
|
+ <if test="reqVO.createTime.length > 1 and reqVO.createTime[1] != null">
|
|
|
+ AND b.create_time <= #{reqVO.createTime[1]}
|
|
|
+ </if>
|
|
|
+ <if test="reqVO.deptIds != null and reqVO.deptIds.size > 0">
|
|
|
+ AND b.dept_id IN
|
|
|
+ <foreach collection="reqVO.deptIds" index="index" item="key" open="(" separator="," close=")">
|
|
|
+ #{key}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ union all
|
|
|
+ SELECT
|
|
|
+ c.id,
|
|
|
+ '运行记录' AS type,
|
|
|
+ c.create_time AS createTime,
|
|
|
+ -- 核心优化:status 数值转中文描述
|
|
|
+ CASE
|
|
|
+ WHEN c.order_status = 0 THEN '未完成'
|
|
|
+ WHEN c.order_status = 1 THEN '已完成'
|
|
|
+ WHEN c.order_status = 2 THEN '填写中'
|
|
|
+ ELSE '' -- 兼容其他未知状态值
|
|
|
+ END AS status,
|
|
|
+ '' AS device,
|
|
|
+ c.dept_id AS deptId,
|
|
|
+ -- 按type规则填充company字段
|
|
|
+ CASE
|
|
|
+ WHEN d.type = 1 THEN COALESCE(d.`name`, '')
|
|
|
+ WHEN d.type = 2 THEN COALESCE(p1.`name`, '')
|
|
|
+ WHEN d.type = 3 THEN COALESCE(p2.`name`, '')
|
|
|
+ ELSE ''
|
|
|
+ END AS company,
|
|
|
+ -- 按type规则填充project字段
|
|
|
+ CASE
|
|
|
+ WHEN d.type = 2 THEN COALESCE(d.`name`, '')
|
|
|
+ WHEN d.type = 3 THEN COALESCE(p1.`name`, '')
|
|
|
+ ELSE ''
|
|
|
+ END AS project,
|
|
|
+ -- 按type规则填充deptName字段(仅type=3时有值)
|
|
|
+ CASE
|
|
|
+ WHEN d.type = 3 THEN COALESCE(d.`name`, '')
|
|
|
+ ELSE ''
|
|
|
+ END AS deptName
|
|
|
+ FROM rq_iot_opeation_fill_order c
|
|
|
+ -- 左关联当前部门(避免主表数据丢失)
|
|
|
+ LEFT JOIN system_dept d ON c.dept_id = d.id
|
|
|
+ -- 左关联父级部门(type=2/3时用)
|
|
|
+ LEFT JOIN system_dept p1 ON d.parent_id = p1.id
|
|
|
+ -- 左关联祖父级部门(type=3时用)
|
|
|
+ LEFT JOIN system_dept p2 ON p1.parent_id = p2.id
|
|
|
+ <where>
|
|
|
+ <if test="reqVO.createTime[0] != null">
|
|
|
+ AND c.create_time >= #{reqVO.createTime[0]}
|
|
|
+ </if>
|
|
|
+ <if test="reqVO.createTime.length > 1 and reqVO.createTime[1] != null">
|
|
|
+ AND c.create_time <= #{reqVO.createTime[1]}
|
|
|
+ </if>
|
|
|
+ <if test="reqVO.deptIds != null and reqVO.deptIds.size > 0">
|
|
|
+ AND c.dept_id IN
|
|
|
+ <foreach collection="reqVO.deptIds" index="index" item="key" open="(" separator="," close=")">
|
|
|
+ #{key}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ </where>) fin
|
|
|
+ <where>
|
|
|
+ <if test="reqVO.type != null">
|
|
|
+ AND fin.type= #{reqVO.type}
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ </select>
|
|
|
</mapper>
|