Przeglądaj źródła

异常设备统计接口

lipenghui 3 dni temu
rodzic
commit
e8658549fb

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportRespVO.java

@@ -105,4 +105,6 @@ public class IotFailureReportRespVO {
     private String approvalName;
 
     private String failureType;
+
+    private Long failureNum;
 }

+ 13 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotReportFailureController.java

@@ -2,8 +2,10 @@ package cn.iocoder.yudao.module.pms.controller.admin.stat;
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.failure.IotFailureReportMapper;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
@@ -16,8 +18,10 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.security.PermitAll;
 import javax.validation.Valid;
+import java.util.List;
 import java.util.Objects;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 @Tag(name = "报表故障上报接口")
 @RestController
@@ -57,7 +61,7 @@ public class IotReportFailureController {
     }
 
     @GetMapping("/page")
-    public CommonResult<PageResult<IotFailureReportDO>> getFailureReportPage(@Valid IotFailureReportPageReqVO iotFailureReportPageReqVO) {
+    public CommonResult<List<IotFailureReportRespVO>> getFailureReportPage(@Valid IotFailureReportPageReqVO iotFailureReportPageReqVO) {
         Set<Long> ids;
         String companyCode;
         if (Objects.isNull(iotFailureReportPageReqVO.getDeptId())){
@@ -69,6 +73,13 @@ public class IotReportFailureController {
             ids.add(iotFailureReportPageReqVO.getDeptId());
         }
         PageResult<IotFailureReportDO> iotFailureReportDOPageResult = iotFailureReportMapper.selectPage(iotFailureReportPageReqVO, ids);
-        return CommonResult.success(iotFailureReportDOPageResult);
+        List<IotFailureReportDO> list = iotFailureReportDOPageResult.getList();
+        List<IotFailureReportRespVO> collect = iotFailureReportDOPageResult.getList().stream().map(e -> {
+            IotFailureReportRespVO bean = BeanUtils.toBean(e, IotFailureReportRespVO.class);
+            long count = list.stream().filter(f -> f.getDeviceId().equals(e.getDeviceId())).count();
+            bean.setFailureNum(count);
+            return bean;
+        }).collect(Collectors.toList());
+        return CommonResult.success(collect);
     }
 }

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotDeviceSimple.java

@@ -8,4 +8,5 @@ public class IotDeviceSimple {
     private String deviceCode;
     private String deviceName;
     private Long orderCount;
+    private Long deptId;
 }

+ 18 - 16
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotInspectOrderDetailMapper.xml

@@ -142,21 +142,23 @@
 
 
     <select id="getExceptionDevicePage" resultType="cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSimple">
-        select device_id, device_code, device_name,count(order_id) AS orderCount from rq_iot_inspect_order_device a
-        <where>
-            <if test="reqVO.createTime[0] != null">
-                AND a.create_time &gt;= #{reqVO.createTime[0]}
-            </if>
-            <if test="reqVO.createTime.length > 1 and reqVO.createTime[1] != null">
-                AND a.create_time &lt;= #{reqVO.createTime[1]}
-            </if>
-            <if test="reqVO.deptIds != null and reqVO.deptIds.size &gt; 0">
-                AND a.dept_id IN
-                <foreach collection="reqVO.deptIds" index="index" item="key" open="(" separator="," close=")">
-                    #{key}
-                </foreach>
-            </if>
-        </where>
-        group by device_id
+        select b.device_code as deviceCode, b.device_name as deviceName, a.orderCount,a.dept_id as deptId, from (select device_id,count(distinct order_id) as orderCount from rq_iot_inspect_order_detail c
+            where c.if_normal = false
+            <where>
+                <if test="reqVO.createTime[0] != null">
+                    AND a.create_time &gt;= #{reqVO.createTime[0]}
+                </if>
+                <if test="reqVO.createTime.length > 1 and reqVO.createTime[1] != null">
+                    AND a.create_time &lt;= #{reqVO.createTime[1]}
+                </if>
+                <if test="reqVO.deptIds != null and reqVO.deptIds.size &gt; 0">
+                    AND a.dept_id IN
+                    <foreach collection="reqVO.deptIds" index="index" item="key" open="(" separator="," close=")">
+                        #{key}
+                    </foreach>
+                </if>
+            </where>
+            group by device_id)a
+        left join rq_iot_device b on a.device_id=b.id
     </select>
 </mapper>