ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DashboardStatisticsController.java
@@ -126,6 +126,9 @@ } 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); } } 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); } ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserFileMapper.java
New file @@ -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> { } ruoyi-system/src/main/java/com/ruoyi/system/model/UserFile.java
New file @@ -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; } ruoyi-system/src/main/java/com/ruoyi/system/query/DeviceListQuery.java
New file @@ -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; } 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); } ruoyi-system/src/main/java/com/ruoyi/system/service/UserFileService.java
New file @@ -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> { } 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; } } 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); } }); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserFileServiceImpl.java
New file @@ -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 { } ruoyi-system/src/main/java/com/ruoyi/system/vo/DeviceListVo.java
New file @@ -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; } 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") 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> ruoyi-system/src/main/resources/mapper/system/UserFileMapper.xml
New file @@ -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>