|
|
@@ -1308,36 +1308,48 @@
|
|
|
|
|
|
<select id="selectDevStatusBatch" parameterType="java.util.List"
|
|
|
resultType="cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO">
|
|
|
+ WITH dept_with_sg AS (
|
|
|
+ SELECT DISTINCT dept_id
|
|
|
+ FROM rq_iot_device
|
|
|
+ WHERE deleted = 0
|
|
|
+ AND dept_id IN
|
|
|
+ <foreach collection="teams" item="item" open="(" separator="," close=")">
|
|
|
+ #{item.id}
|
|
|
+ </foreach>
|
|
|
+ AND asset_class IN (159, 160, 122, 106, 157, 158, 308, 108, 229)
|
|
|
+ AND device_status = 'sg'
|
|
|
+ )
|
|
|
SELECT dept_id, device_status
|
|
|
FROM (
|
|
|
- SELECT
|
|
|
- dept_id,
|
|
|
- device_status,
|
|
|
- -- 定义设备优先级,和你原有CASE顺序完全一致
|
|
|
- ROW_NUMBER() OVER (
|
|
|
- PARTITION BY dept_id
|
|
|
+ SELECT
|
|
|
+ d.dept_id,
|
|
|
+ d.device_status,
|
|
|
+ ROW_NUMBER() OVER (
|
|
|
+ PARTITION BY d.dept_id
|
|
|
ORDER BY
|
|
|
- CASE asset_class
|
|
|
- WHEN 159 THEN 1 WHEN 160 THEN 1
|
|
|
- WHEN 122 THEN 2
|
|
|
- WHEN 157 THEN 3 WHEN 158 THEN 3
|
|
|
- WHEN 106 THEN 4
|
|
|
- WHEN 308 THEN 5
|
|
|
- WHEN 108 THEN 6
|
|
|
- WHEN 229 THEN 7
|
|
|
- END ASC
|
|
|
- ) AS rn
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE
|
|
|
- deleted = 0
|
|
|
- AND dept_id IN
|
|
|
- <foreach collection="teams" item="item" open="(" separator="," close=")">
|
|
|
- #{item.id}
|
|
|
- </foreach>
|
|
|
- AND asset_class IN (159, 160, 122, 106, 157, 158, 308, 108, 229)
|
|
|
- AND device_status != 'sg'
|
|
|
- ) t
|
|
|
+ CASE d.asset_class
|
|
|
+ WHEN 159 THEN 1 WHEN 160 THEN 1
|
|
|
+ WHEN 122 THEN 2
|
|
|
+ WHEN 157 THEN 3 WHEN 158 THEN 3
|
|
|
+ WHEN 106 THEN 4
|
|
|
+ WHEN 308 THEN 5
|
|
|
+ WHEN 108 THEN 6
|
|
|
+ WHEN 229 THEN 7
|
|
|
+ END ASC
|
|
|
+ ) AS rn
|
|
|
+ FROM rq_iot_device d
|
|
|
+ LEFT JOIN dept_with_sg e ON d.dept_id = e.dept_id
|
|
|
+ WHERE d.deleted = 0
|
|
|
+ AND dept_id IN
|
|
|
+ <foreach collection="teams" item="item" open="(" separator="," close=")">
|
|
|
+ #{item.id}
|
|
|
+ </foreach>
|
|
|
+ AND d.asset_class IN (159, 160, 122, 106, 157, 158, 308, 108, 229)
|
|
|
+ AND d.device_status != 'sg'
|
|
|
+ AND e.dept_id IS NULL
|
|
|
+ ) t
|
|
|
WHERE t.rn = 1;
|
|
|
+
|
|
|
</select>
|
|
|
|
|
|
<select id="isReport" parameterType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO"
|