检测文件更新

This commit is contained in:
许允枞 2025-02-08 16:14:34 +08:00
parent b906a00f1a
commit 0ec1c7b804
9 changed files with 202 additions and 22 deletions

View File

@ -72,9 +72,7 @@ public class InspectionFileController extends BaseController {
}
}
List<InspectionFile> list = inspectionFileService.selectInspectionFileListByPermissio(inspectionFile, getLoginUser().getId());
return success(list);
return success(inspectionFileService.selectInspectionFileListByPermissio(inspectionFile, getLoginUser().getId()));
}
/**
@ -110,11 +108,9 @@ public class InspectionFileController extends BaseController {
*/
@PostMapping("/edit")
public CommonResult edit(@RequestBody InspectionFile inspectionFile) throws Exception {
ShopMallPartners partners = partnerService.shopInfo();
InspectionFile file = inspectionFileService.selectInspectionFileById(inspectionFile.getId());
if (!partners.getPartnerId().equals(file.getPartnerId())) {
return null;
}
// if (!partners.getPartnerId().equals(file.getPartnerId())) {
// return null;
// }
return toAjax(inspectionFileService.updateInspectionFile(inspectionFile));
}

View File

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.inspection.controller;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.core.controller.BaseController;
import cn.iocoder.yudao.module.inspection.entity.InspectionFileRecord;
import cn.iocoder.yudao.module.inspection.service.InspectionFileRecordService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Description: 文档记录
* @Author: 86187
* @Date: 2025/02/08 13:53
* @Version: 1.0
*/
@RestController
@RequestMapping("/admin-api/system/fileRecord")
public class InspectionFileRecordController extends BaseController {
@Autowired
private InspectionFileRecordService inspectionFileRecordService;
/**
* 根据文件id查询修改记录
* @param id
* @return
*/
@GetMapping("/get/{id}")
public CommonResult<?> getByFileId(@PathVariable Long id) {
List<InspectionFileRecord> list = inspectionFileRecordService.list(Wrappers.lambdaQuery(InspectionFileRecord.class)
.eq(InspectionFileRecord::getFileId, id)
.orderBy(true, true, InspectionFileRecord::getCreateTime));
return CommonResult.success(list);
}
}

View File

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.inspection.entity;
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.Date;
/**
* @Description: 检测文档记录表
* @Author: 86187
* @Date: 2025/02/08 11:39
* @Version: 1.0
*/
@Data
public class InspectionFileRecord extends TenantBaseDO {
/**
* 主键id
*/
private Long id;
/**
* 文件id
*/
private Long fileId;
/**
* 文件路径
*/
private String filePath;
/**
* 文件类型
*/
private String type;
/**
* 文件名称
*/
private String fileName;
/**
* 预警时间
*/
private Date warnTime;
}

View File

@ -0,0 +1,15 @@
package cn.iocoder.yudao.module.inspection.mapper;
import cn.iocoder.yudao.module.inspection.entity.InspectionFileRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @Description: 检测文档记录表
* @Author: 86187
* @Date: 2025/02/08 11:43
* @Version: 1.0
*/
@Mapper
public interface InspectionFileRecordMapper extends BaseMapper<InspectionFileRecord> {
}

View File

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* inspectionFileService接口
@ -106,5 +107,5 @@ public interface IInspectionFileService extends IService<InspectionFile> {
* @param inspectionFile
* @return
*/
List<InspectionFile> selectInspectionFileListByPermissio(InspectionFile inspectionFile, Long userId);
Set<InspectionFile> selectInspectionFileListByPermissio(InspectionFile inspectionFile, Long userId);
}

View File

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.inspection.service;
import cn.iocoder.yudao.module.inspection.entity.InspectionFileRecord;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 检测文档记录表
* @Author: 86187
* @Date: 2025/02/08 11:42
* @Version: 1.0
*/
public interface InspectionFileRecordService extends IService<InspectionFileRecord> {
}

View File

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.inspection.service.impl;
import cn.iocoder.yudao.module.inspection.entity.InspectionEquInfo;
import cn.iocoder.yudao.module.inspection.entity.InspectionFileRecord;
import cn.iocoder.yudao.module.inspection.mapper.InspectionEquInfoMapper;
import cn.iocoder.yudao.module.inspection.mapper.InspectionFileRecordMapper;
import cn.iocoder.yudao.module.inspection.service.InspectionFileRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* @Description: 检测文档记录表
* @Author: 86187
* @Date: 2025/02/08 11:42
* @Version: 1.0
*/
@Service
public class InspectionFileRecordServiceImpl extends ServiceImpl<InspectionFileRecordMapper, InspectionFileRecord> implements InspectionFileRecordService {
}

View File

@ -1,15 +1,18 @@
package cn.iocoder.yudao.module.inspection.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.inspection.entity.InspectionFile;
import cn.iocoder.yudao.module.inspection.entity.InspectionFileRecord;
import cn.iocoder.yudao.module.inspection.entity.InspectionFileUser;
import cn.iocoder.yudao.module.inspection.entity.WarnMessage;
import cn.iocoder.yudao.module.inspection.mapper.InspectionFileMapper;
import cn.iocoder.yudao.module.inspection.service.IInspectionFileService;
import cn.iocoder.yudao.module.inspection.service.IWarnMessageService;
import cn.iocoder.yudao.module.inspection.service.InspectionFileRecordService;
import cn.iocoder.yudao.module.inspection.service.InspectionFileUserService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -18,6 +21,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
@ -36,6 +40,9 @@ public class InspectionFileServiceImpl extends ServiceImpl<InspectionFileMapper,
@Autowired
private InspectionFileUserService inspectionFileUserService;
@Autowired
private InspectionFileRecordService fileRecordService;
/**
* 查询inspectionFile
*
@ -123,6 +130,7 @@ public class InspectionFileServiceImpl extends ServiceImpl<InspectionFileMapper,
* @return 结果
*/
@Override
@Transactional
public int updateInspectionFile(InspectionFile inspectionFile) {
LambdaQueryWrapper<WarnMessage> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(WarnMessage::getType, "file").eq(WarnMessage::getObjectId, inspectionFile.getId());
@ -143,6 +151,23 @@ public class InspectionFileServiceImpl extends ServiceImpl<InspectionFileMapper,
warnMessage.setWarnTime(inspectionFile.getWarnTime());
messageService.save(warnMessage);
}
InspectionFile file = this.selectInspectionFileById(inspectionFile.getId());
if ((ObjectUtil.isNotEmpty(inspectionFile.getFilePath()) && !file.getFilePath().equals(inspectionFile.getFilePath()))
|| ObjectUtil.isNotEmpty(inspectionFile.getFileName()) && !file.getFileName().equals(inspectionFile.getFileName())
|| ObjectUtil.isNotEmpty(inspectionFile.getWarnTime()) && !file.getWarnTime().equals(inspectionFile.getWarnTime())) {
//查询出之前的文件路径
InspectionFileRecord inspectionFileRecord = new InspectionFileRecord();
inspectionFileRecord.setFileId(file.getId());
inspectionFileRecord.setFileName(file.getFileName());
inspectionFileRecord.setFilePath(file.getFilePath());
inspectionFileRecord.setType(file.getType());
inspectionFileRecord.setWarnTime(file.getWarnTime());
//保存记录
fileRecordService.save(inspectionFileRecord);
}
return baseMapper.updateById(inspectionFile);
}
@ -200,7 +225,7 @@ public class InspectionFileServiceImpl extends ServiceImpl<InspectionFileMapper,
LambdaQueryWrapper<InspectionFile> queryWrapper = new LambdaQueryWrapper<>();
if (ObjectUtil.isNotEmpty(inspectionFile.getFatherId())) {
queryWrapper.eq(InspectionFile::getFatherId, inspectionFile.getFatherId());
}else {
} else {
queryWrapper.isNull(InspectionFile::getFatherId);
}
queryWrapper.orderByAsc(InspectionFile::getType);
@ -208,8 +233,8 @@ public class InspectionFileServiceImpl extends ServiceImpl<InspectionFileMapper,
if (ObjectUtil.isNotEmpty(inspectionFile.getFileName())) {
queryWrapper.like(InspectionFile::getFileName, inspectionFile.getFileName());
}
// 直接调用 MyBatis-Plus page 方法进行分页查询
return this.list(queryWrapper); // 返回符合条件的分页查询结果
queryWrapper.orderBy(false, false, InspectionFile::getCreateTime);
return this.list(queryWrapper);
}
/**
@ -278,8 +303,9 @@ public class InspectionFileServiceImpl extends ServiceImpl<InspectionFileMapper,
return null;
}
public List<InspectionFile> selectInspectionFileListByPermissio(InspectionFile inspectionFile, Long userId) {
List<InspectionFile> resultFiles = new ArrayList<>();
@Override
public Set<InspectionFile> selectInspectionFileListByPermissio(InspectionFile inspectionFile, Long userId) {
Set<InspectionFile> resultFiles = new HashSet<>();
// 1. 获取用户有权限的所有文件
List<Long> accessibleFileIds = inspectionFileUserService
@ -295,7 +321,13 @@ public class InspectionFileServiceImpl extends ServiceImpl<InspectionFileMapper,
}
// 2. 获取所有文件及文件夹信息避免多次查询数据库
Map<Long, InspectionFile> fileCache = this.list().stream()
// 1. 查询所有文件信息确保只查询必要的字段并通过索引优化文件名的like查询
List<InspectionFile> fileList = this.list(Wrappers.lambdaQuery(InspectionFile.class)
.select(InspectionFile::getId, InspectionFile::getFileName, InspectionFile::getFatherId, InspectionFile::getFilePath, InspectionFile::getType) // 仅查询必要字段
.like(ObjectUtil.isNotEmpty(inspectionFile.getFileName()), InspectionFile::getFileName, inspectionFile.getFileName())
.orderBy(false, false, InspectionFile::getCreateTime));
Map<Long, InspectionFile> fileCache = fileList.stream()
.collect(Collectors.toMap(InspectionFile::getId, file -> file));
// 3. 判断是否传递了fatherId参数即点击了文件夹
@ -323,20 +355,25 @@ public class InspectionFileServiceImpl extends ServiceImpl<InspectionFileMapper,
}
// 去重操作优化查询时已经进行了判断可以删除重复文件
List<InspectionFile> collect = resultFiles.stream().distinct().collect(Collectors.toList());
// List<InspectionFile> collect = resultFiles.stream().distinct().collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(inspectionFile.getFileName())) {
//模糊匹配对应名称
collect = collect.stream().filter(file -> file.getFileName().contains(inspectionFile.getFileName())).collect(Collectors.toList());
resultFiles = resultFiles.stream().filter(file -> file.getFileName().contains(inspectionFile.getFileName())).collect(Collectors.toSet());
}
return collect;
return resultFiles;
}
// 获取文件夹内的所有文件包括子文件夹的内容
private List<InspectionFile> getFilesInFolder(Long folderId, List<Long> accessibleFileIds, Map<Long, InspectionFile> fileCache) {
List<InspectionFile> filesInFolder = new ArrayList<>();
// 获取该文件夹下的所有子文件
List<InspectionFile> folderFiles = this.list(new LambdaQueryWrapper<InspectionFile>()
.eq(InspectionFile::getFatherId, folderId));
// List<InspectionFile> folderFiles = this.list(new LambdaQueryWrapper<InspectionFile>()
// .eq(InspectionFile::getFatherId, folderId));
// 直接从 fileCache 过滤出当前 folderId 直接包含的子文件
List<InspectionFile> folderFiles = fileCache.values().stream()
.filter(file -> folderId.equals(file.getFatherId()))
.collect(Collectors.toList());
for (InspectionFile folderFile : folderFiles) {
// 默认检查当前文件是否有权限
@ -367,8 +404,12 @@ public class InspectionFileServiceImpl extends ServiceImpl<InspectionFileMapper,
// 检查当前文件夹下是否有权限的子文件或子文件夹
private boolean hasAccessToSubFiles(InspectionFile folderFile, List<Long> accessibleFileIds, Map<Long, InspectionFile> fileCache) {
// 获取文件夹内的所有子文件
List<InspectionFile> subFiles = this.list(new LambdaQueryWrapper<InspectionFile>()
.eq(InspectionFile::getFatherId, folderFile.getId()));
// List<InspectionFile> subFiles = this.list(new LambdaQueryWrapper<InspectionFile>()
// .eq(InspectionFile::getFatherId, folderFile.getId()));
List<InspectionFile> subFiles = fileCache.values().stream()
.filter(file -> folderFile.getId().equals(file.getFatherId()))
.collect(Collectors.toList());
// 如果文件夹下有文件且其中一个文件有权限则返回true
for (InspectionFile subFile : subFiles) {

View File

@ -0,0 +1,6 @@
<?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.inspection.mapper.InspectionFileRecordMapper">
</mapper>