From f94782b7302f761799c1a0fbc155bed2d4dc504f Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 15 一月 2026 18:22:43 +0800
Subject: [PATCH] 大屏项目接口

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RecordServiceImpl.java           |   11 ++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserFileServiceImpl.java         |   21 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserFileMapper.java                    |   17 +++
 ruoyi-system/src/main/java/com/ruoyi/system/model/UserFile.java                           |   51 ++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceUsageServiceImpl.java      |   26 +++++
 ruoyi-system/src/main/resources/mapper/system/UserFileMapper.xml                          |   19 +++
 ruoyi-system/src/main/java/com/ruoyi/system/service/UserFileService.java                  |   17 +++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/DeviceListVo.java                          |   35 +++++++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceUsageMapper.java                 |    9 +
 ruoyi-system/src/main/java/com/ruoyi/system/query/DeviceListQuery.java                    |   29 +++++
 ruoyi-system/src/main/resources/mapper/system/DeviceUsageMapper.xml                       |   25 +++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java             |   16 ++
 ruoyi-system/src/main/java/com/ruoyi/system/service/DeviceUsageService.java               |    6 +
 ruoyi-system/src/main/java/com/ruoyi/system/vo/HiddenDangerListVo.java                    |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DashboardStatisticsController.java |    3 
 15 files changed, 285 insertions(+), 4 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DashboardStatisticsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DashboardStatisticsController.java
index 5a86225..1791d8d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DashboardStatisticsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DashboardStatisticsController.java
@@ -126,6 +126,9 @@
     }
 
 
+    
+
+
 
 
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java
index 61d0f7b..8860bb0 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ProjectController.java
@@ -7,12 +7,10 @@
 import com.ruoyi.system.dto.EditHiddenDangerResponsiblePersonDto;
 import com.ruoyi.system.model.*;
 import com.ruoyi.system.model.Record;
+import com.ruoyi.system.query.DeviceListQuery;
 import com.ruoyi.system.query.HiddenDangerListQuery;
 import com.ruoyi.system.service.*;
-import com.ruoyi.system.vo.HiddenDangerListVo;
-import com.ruoyi.system.vo.HiddenDangerVo;
-import com.ruoyi.system.vo.ProblemVo;
-import com.ruoyi.system.vo.ProjectVo;
+import com.ruoyi.system.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.var;
@@ -126,4 +124,14 @@
         return R.ok(record);
     }
 
+
+
+    @ApiOperation(value = "获取设备列表",response = DeviceListVo.class)
+    @PostMapping("/getDeviceList")
+    public R<Page<DeviceListVo>> getDeviceList(@RequestBody @Valid DeviceListQuery query) {
+        Page<DeviceListVo> page = new Page<>(query.getPageNum(), query.getPageSize());
+        List<DeviceListVo> list = deviceUsageService.getDeviceList(page,query);
+        page.setRecords(list);
+        return R.ok(page);
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceUsageMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceUsageMapper.java
index 9a7bbc2..2393b8a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceUsageMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceUsageMapper.java
@@ -2,9 +2,14 @@
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.system.model.DeviceUsage;
+import com.ruoyi.system.model.Record;
+import com.ruoyi.system.query.DeviceListQuery;
+import com.ruoyi.system.vo.DeviceListVo;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -19,4 +24,8 @@
 
     List<String> getDeviceUsageList(@Param("id") Integer id);
 
+    List<DeviceListVo> getDeviceList(@Param("page") Page<DeviceListVo> page, @Param("query") DeviceListQuery query);
+
+
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserFileMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserFileMapper.java
new file mode 100644
index 0000000..8ef8e5f
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserFileMapper.java
@@ -0,0 +1,17 @@
+package com.ruoyi.system.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.system.model.UserFile;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2026-01-15
+ */
+public interface UserFileMapper extends BaseMapper<UserFile> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/UserFile.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/UserFile.java
new file mode 100644
index 0000000..72d892e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/UserFile.java
@@ -0,0 +1,51 @@
+package com.ruoyi.system.model;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author administrator
+ * @since 2026-01-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("user_file")
+public class UserFile extends Model<UserFile> {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    @TableField("create_time")
+    private Date createTime;
+    private Boolean deleted;
+    private String name;
+    @TableField("update_time")
+    private Date updateTime;
+    @TableField("content_type")
+    private String contentType;
+    private String extension;
+    @TableField("origin_file_name")
+    private String originFileName;
+    private Long size;
+    @TableField("creator_id")
+    private Integer creatorId;
+
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/DeviceListQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/DeviceListQuery.java
new file mode 100644
index 0000000..9ba58bf
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/DeviceListQuery.java
@@ -0,0 +1,29 @@
+package com.ruoyi.system.query;
+
+import com.ruoyi.common.core.domain.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel("大屏设备列表查询query")
+public class DeviceListQuery extends BasePage {
+
+    @ApiModelProperty("项目id")
+    @NotNull(message = "项目id不能为空")
+    private Integer projectId;
+
+    @ApiModelProperty("设备类型")
+    private Integer type;
+
+    @ApiModelProperty("开始时间")
+    private String startTime;
+
+    @ApiModelProperty("结束时间")
+    private String endTime;
+
+    @ApiModelProperty("内容")
+    private String content;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/DeviceUsageService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/DeviceUsageService.java
index 32a44e0..0e0f7e0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/DeviceUsageService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/DeviceUsageService.java
@@ -1,9 +1,13 @@
 package com.ruoyi.system.service;
 
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.system.model.DeviceUsage;
+import com.ruoyi.system.query.DeviceListQuery;
+import com.ruoyi.system.vo.DeviceListVo;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -18,4 +22,6 @@
 
     List<String> getDeviceUsageList(Integer id);
 
+    List<DeviceListVo> getDeviceList(Page<DeviceListVo> page, @Valid DeviceListQuery query);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/UserFileService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/UserFileService.java
new file mode 100644
index 0000000..17b6a26
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/UserFileService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.system.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.system.model.UserFile;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2026-01-15
+ */
+public interface UserFileService extends IService<UserFile> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceUsageServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceUsageServiceImpl.java
index 2cb261a..dafccf6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceUsageServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceUsageServiceImpl.java
@@ -1,13 +1,22 @@
 package com.ruoyi.system.service.impl;
 
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.system.mapper.DeviceUsageMapper;
 import com.ruoyi.system.model.DeviceUsage;
+import com.ruoyi.system.model.Record;
+import com.ruoyi.system.query.DeviceListQuery;
 import com.ruoyi.system.service.DeviceUsageService;
+import com.ruoyi.system.vo.DeviceListVo;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.YearMonth;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -24,4 +33,21 @@
     public List<String> getDeviceUsageList(Integer id) {
         return this.baseMapper.getDeviceUsageList(id);
     }
+
+    @Override
+    public List<DeviceListVo> getDeviceList(Page<DeviceListVo> page, DeviceListQuery query) {
+        List<DeviceListVo> deviceList = this.baseMapper.getDeviceList(page, query);
+        for (DeviceListVo deviceListVo : deviceList) {
+            LocalDateTime checkTime = deviceListVo.getCheckTime();
+            // 判断checkTime是否是本月的时间
+            if (checkTime != null && YearMonth.from(checkTime).equals(YearMonth.now())) {
+                deviceListVo.setCheckResult("已检查");
+            }else {
+                deviceListVo.setCheckResult("未检查");
+            }
+        }
+        return deviceList;
+    }
+
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RecordServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RecordServiceImpl.java
index 891e9b4..278922e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RecordServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RecordServiceImpl.java
@@ -8,10 +8,12 @@
 import com.ruoyi.system.mapper.RecordMapper;
 import com.ruoyi.system.model.Record;
 import com.ruoyi.system.model.RecordImage;
+import com.ruoyi.system.model.UserFile;
 import com.ruoyi.system.query.HiddenDangerListQuery;
 import com.ruoyi.system.service.RecordImageService;
 import com.ruoyi.system.service.RecordService;
 import com.ruoyi.system.service.TaskService;
+import com.ruoyi.system.service.UserFileService;
 import com.ruoyi.system.vo.HiddenDangerListVo;
 import com.ruoyi.system.vo.ProblemVo;
 import java.util.Map;
@@ -37,6 +39,8 @@
     @Autowired
     private RecordImageService recordImageService;
 
+    @Autowired
+    private UserFileService userFileService;
 
 
 
@@ -52,6 +56,13 @@
             list.forEach(vo -> {
                 List<RecordImage> collect = recordImages.stream().filter(recordImage -> recordImage.getRecordId().equals(vo.getId())).collect(Collectors.toList());
                 vo.setFileNum(collect.size());
+                if(!collect.isEmpty()){
+                    List<Integer> fileIds = collect.stream().map(RecordImage::getUserFileId).collect(Collectors.toList());
+                    List<UserFile> userFiles = userFileService.listByIds(fileIds);
+                    vo.setUserFiles(userFiles);
+
+                }
+
             });
         }
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserFileServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserFileServiceImpl.java
new file mode 100644
index 0000000..4d05c2b
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserFileServiceImpl.java
@@ -0,0 +1,21 @@
+package com.ruoyi.system.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.mapper.UserFileMapper;
+import com.ruoyi.system.model.UserFile;
+import com.ruoyi.system.service.UserFileService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2026-01-15
+ */
+@Service
+public class UserFileServiceImpl extends ServiceImpl<UserFileMapper, UserFile> implements UserFileService {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/DeviceListVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/DeviceListVo.java
new file mode 100644
index 0000000..c120c83
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/DeviceListVo.java
@@ -0,0 +1,35 @@
+package com.ruoyi.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel("大屏设备列表信息Vo")
+public class DeviceListVo {
+
+    private Integer id;
+
+    @ApiModelProperty("设备类型")
+    private Integer type;
+
+    @ApiModelProperty("设备编号")
+    private String name;
+
+    @ApiModelProperty("设备出厂日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("单位信息")
+    private String properties;
+
+    @ApiModelProperty("检查情况")
+    private String checkResult;
+
+    @ApiModelProperty("检查时间")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDateTime checkTime;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/HiddenDangerListVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/HiddenDangerListVo.java
index bd1f71c..f9999d0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/HiddenDangerListVo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/HiddenDangerListVo.java
@@ -1,11 +1,13 @@
 package com.ruoyi.system.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.system.model.UserFile;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Data
 @ApiModel("隐患列表")
@@ -45,6 +47,8 @@
     @ApiModelProperty("图片数量")
     private Integer fileNum;
 
+    @ApiModelProperty("图片信息")
+    private List<UserFile> userFiles;
 
     @ApiModelProperty("检查时间")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
diff --git a/ruoyi-system/src/main/resources/mapper/system/DeviceUsageMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DeviceUsageMapper.xml
index 05fcc9f..33c49a1 100644
--- a/ruoyi-system/src/main/resources/mapper/system/DeviceUsageMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/DeviceUsageMapper.xml
@@ -20,5 +20,30 @@
         left join device t2 on t1.device_id = t2.id
         where t1.project_id =#{id}
     </select>
+    <select id="getDeviceList" resultType="com.ruoyi.system.vo.DeviceListVo">
+
+        select t1.id, t1.name, t1.create_time, t1.properties,   t1.type, latest.record_time as checkTime
+        from device t1
+                 left join device_usage t2 on t1.id = t2.device_id
+                 left join (
+                     select device_id, max(create_time) as record_time
+                     from record
+                     group by device_id
+                 ) latest on t1.id = latest.device_id
+        where t2.project_id = #{query.projectId} and t2.deleted = 0
+        <if test="query.type != null">
+            and t1.type = #{query.type}
+        </if>
+        <if test="query.content!= null and query.content!=''">
+            and t1.name like CONCAT('%', #{query.content}, '%')
+        </if>
+        <if test="query.startTime != null and query.startTime != ''">
+            and latest.record_time >= #{query.startTime}
+        </if>
+        <if test="query.endTime != null and query.endTime != ''">
+            and   #{query.endTime} >=latest.record_time
+        </if>
+        order by latest.record_time desc
+    </select>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/UserFileMapper.xml b/ruoyi-system/src/main/resources/mapper/system/UserFileMapper.xml
new file mode 100644
index 0000000..743677e
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/UserFileMapper.xml
@@ -0,0 +1,19 @@
+<?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="com.ruoyi.system.mapper.UserFileMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.system.model.UserFile">
+        <id column="id" property="id" />
+        <result column="create_time" property="createTime" />
+        <result column="deleted" property="deleted" />
+        <result column="name" property="name" />
+        <result column="update_time" property="updateTime" />
+        <result column="content_type" property="contentType" />
+        <result column="extension" property="extension" />
+        <result column="origin_file_name" property="originFileName" />
+        <result column="size" property="size" />
+        <result column="creator_id" property="creatorId" />
+    </resultMap>
+
+</mapper>

--
Gitblit v1.7.1