|
|
@@ -1308,106 +1308,36 @@
|
|
|
|
|
|
<select id="selectDevStatusBatch" parameterType="java.util.List"
|
|
|
resultType="cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO">
|
|
|
- SELECT
|
|
|
- dept_id,
|
|
|
- device_status
|
|
|
- FROM (
|
|
|
- SELECT
|
|
|
- d.dept_id,
|
|
|
- -- 原有优先级判断逻辑,不变
|
|
|
- CASE
|
|
|
- WHEN EXISTS (
|
|
|
- SELECT 1
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE dept_id = d.dept_id
|
|
|
- AND asset_class IN (159, 160)
|
|
|
- AND deleted = 0
|
|
|
- ) THEN (
|
|
|
- SELECT device_status
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE dept_id = d.dept_id
|
|
|
- AND asset_class IN (159, 160)
|
|
|
- AND deleted = 0
|
|
|
- AND device_status != 'sg'
|
|
|
- LIMIT 1
|
|
|
- )
|
|
|
- WHEN EXISTS (
|
|
|
- SELECT 1
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE dept_id = d.dept_id
|
|
|
- AND asset_class = 122
|
|
|
- AND deleted = 0
|
|
|
- ) THEN (
|
|
|
- SELECT device_status
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE dept_id = d.dept_id
|
|
|
- AND asset_class = 122
|
|
|
- AND deleted = 0
|
|
|
- AND device_status != 'sg'
|
|
|
- LIMIT 1
|
|
|
- )
|
|
|
- WHEN EXISTS (
|
|
|
- SELECT 1
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE dept_id = d.dept_id
|
|
|
- AND asset_class IN (157, 158)
|
|
|
- AND deleted = 0
|
|
|
- ) THEN (
|
|
|
- SELECT device_status
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE dept_id = d.dept_id
|
|
|
- AND asset_class IN (157, 158)
|
|
|
- AND deleted = 0
|
|
|
- AND device_status != 'sg'
|
|
|
- LIMIT 1
|
|
|
- )
|
|
|
- WHEN EXISTS (
|
|
|
- SELECT 1
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE dept_id = d.dept_id
|
|
|
- AND asset_class = 106
|
|
|
- AND deleted = 0
|
|
|
- ) THEN (
|
|
|
- SELECT device_status
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE dept_id = d.dept_id
|
|
|
- AND asset_class = 106
|
|
|
- AND deleted = 0
|
|
|
- AND device_status != 'sg'
|
|
|
- LIMIT 1
|
|
|
- )
|
|
|
- WHEN EXISTS (
|
|
|
- SELECT 1
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE dept_id = d.dept_id
|
|
|
- AND asset_class = 308
|
|
|
- AND deleted = 0
|
|
|
- ) THEN (
|
|
|
- SELECT device_status
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE dept_id = d.dept_id
|
|
|
- AND asset_class = 308
|
|
|
- AND deleted = 0
|
|
|
- AND device_status != 'sg'
|
|
|
- LIMIT 1
|
|
|
- )
|
|
|
- ELSE NULL
|
|
|
- END AS device_status
|
|
|
+ SELECT dept_id, device_status
|
|
|
FROM (
|
|
|
- SELECT DISTINCT dept_id
|
|
|
- FROM rq_iot_device
|
|
|
- WHERE 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 deleted = 0
|
|
|
- ) AS d
|
|
|
- ) AS temp
|
|
|
- -- 核心过滤:仅保留设备状态非NULL的记录,状态为NULL则不返回整条记录
|
|
|
- WHERE temp.device_status IS NOT NULL -- 确保每个部门只返回1条记录(若多个设备,取任意1条)
|
|
|
- -- 可选:如需指定返回某条设备(如最新/最早),可加排序:
|
|
|
- -- ORDER BY create_time DESC -- 按创建时间倒序(取最新)
|
|
|
+ SELECT
|
|
|
+ dept_id,
|
|
|
+ device_status,
|
|
|
+ -- 定义设备优先级,和你原有CASE顺序完全一致
|
|
|
+ ROW_NUMBER() OVER (
|
|
|
+ PARTITION BY 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
|
|
|
+ WHERE t.rn = 1;
|
|
|
</select>
|
|
|
|
|
|
<select id="isReport" parameterType="cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO"
|