Explorar el Código

巡检统计分页

lipenghui hace 6 días
padre
commit
2273e50914

+ 3 - 8
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderController.java

@@ -338,7 +338,7 @@ public class IotInspectOrderController {
     @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
     public CommonResult<PageResult<IotInspectOrderRespVO>> getIotInspectOrderPageReport(@Valid IotInspectOrderPageReqVO pageReqVO) {
         PageResult<IotInspectOrderDO> pageResult = iotInspectOrderService.getIotInspectOrderPage(pageReqVO);
-        List<IotDeviceDO> iotDeviceDOS = iotDeviceMapper.selectList();
+//        List<IotDeviceDO> iotDeviceDOS = iotDeviceMapper.selectList();
         List<IotInspectOrderRespVO> collect = pageResult.getList().stream().map(e -> {
             IotInspectOrderRespVO iotInspectOrderRespVO = new IotInspectOrderRespVO();
             BeanUtils.copyProperties(e, iotInspectOrderRespVO);
@@ -368,13 +368,8 @@ public class IotInspectOrderController {
                     }
                 }
             }
-            StringBuilder stringBuilder = new StringBuilder();
-            iotInspectOrderDetailMapper.selectList("order_id", e.getId()).stream().map(IotInspectOrderDetailDO::getDeviceId).collect(Collectors.toSet()).forEach(f ->{
-                iotDeviceDOS.stream().filter(g -> g.getId().equals(f)).findFirst().ifPresent(g -> {
-                    stringBuilder.append(g.getDeviceCode()).append("|").append(g.getDeviceName()).append(";");
-                });
-            });
-            iotInspectOrderRespVO.setDeviceInfo(stringBuilder.toString());
+            String deviceInfo = iotInspectOrderDeviceMapper.getDeviceInfo(e.getId());
+            iotInspectOrderRespVO.setDeviceInfo(deviceInfo);
             return iotInspectOrderRespVO;
         }).collect(Collectors.toList());
         return success(new PageResult<>(collect, pageResult.getTotal()));

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/inspect/IotInspectOrderDeviceMapper.java

@@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.device.IotInspectOrderDevicePageReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDeviceDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 巡检工单设备 Mapper
@@ -28,4 +29,5 @@ public interface IotInspectOrderDeviceMapper extends BaseMapperX<IotInspectOrder
                 .orderByDesc(IotInspectOrderDeviceDO::getId));
     }
 
+    String getDeviceInfo(@Param("orderId") Long orderId);
 }

+ 30 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotInspectOrderDeviceMapper.xml

@@ -0,0 +1,30 @@
+<?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.rq.dal.mysql.iotinspectorderdevice.IotInspectOrderDeviceMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+    <select id="getDeviceInfo" parameterType="java.lang.Long"
+            resultType="java.lang.String">
+        SELECT
+            main.id AS order_id,  -- 显式返回工单ID,便于核对
+            GROUP_CONCAT(
+                DISTINCT CONCAT(
+            IFNULL(detail.device_code, ''),  -- 空编码替换为空白
+            '|',
+            IFNULL(detail.device_name, '')   -- 空名称替换为空白
+        )
+        SEPARATOR ';'
+    ) AS device_info
+        FROM
+            rq_iot_inspect_order main
+                LEFT JOIN rq_iot_inspect_order_device detail
+                          ON main.id = detail.order_id
+        WHERE main.id = #{orderId}
+        GROUP BY main.id;
+    </select>
+</mapper>