diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/InspectionFileController.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/InspectionFileController.java index 779a87d5..52b63465 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/InspectionFileController.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/InspectionFileController.java @@ -72,9 +72,7 @@ public class InspectionFileController extends BaseController { } } - List 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)); } diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/InspectionFileRecordController.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/InspectionFileRecordController.java new file mode 100644 index 00000000..a68038ec --- /dev/null +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/controller/InspectionFileRecordController.java @@ -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 list = inspectionFileRecordService.list(Wrappers.lambdaQuery(InspectionFileRecord.class) + .eq(InspectionFileRecord::getFileId, id) + .orderBy(true, true, InspectionFileRecord::getCreateTime)); + + return CommonResult.success(list); + } +} diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionFileRecord.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionFileRecord.java new file mode 100644 index 00000000..a202da93 --- /dev/null +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionFileRecord.java @@ -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; +} diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/mapper/InspectionFileRecordMapper.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/mapper/InspectionFileRecordMapper.java new file mode 100644 index 00000000..1a9115cc --- /dev/null +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/mapper/InspectionFileRecordMapper.java @@ -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 { +} diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/IInspectionFileService.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/IInspectionFileService.java index 3366c749..c050548b 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/IInspectionFileService.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/IInspectionFileService.java @@ -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 { * @param inspectionFile * @return */ - List selectInspectionFileListByPermissio(InspectionFile inspectionFile, Long userId); + Set selectInspectionFileListByPermissio(InspectionFile inspectionFile, Long userId); } diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/InspectionFileRecordService.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/InspectionFileRecordService.java new file mode 100644 index 00000000..564e5e9a --- /dev/null +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/InspectionFileRecordService.java @@ -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 { +} diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionFileRecordServiceImpl.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionFileRecordServiceImpl.java new file mode 100644 index 00000000..b7f96e40 --- /dev/null +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionFileRecordServiceImpl.java @@ -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 implements InspectionFileRecordService { +} diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionFileServiceImpl.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionFileServiceImpl.java index aea4dfe4..f20b2da5 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionFileServiceImpl.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/service/impl/InspectionFileServiceImpl.java @@ -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 queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(WarnMessage::getType, "file").eq(WarnMessage::getObjectId, inspectionFile.getId()); @@ -143,6 +151,23 @@ public class InspectionFileServiceImpl extends ServiceImpl 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 selectInspectionFileListByPermissio(InspectionFile inspectionFile, Long userId) { - List resultFiles = new ArrayList<>(); + @Override + public Set selectInspectionFileListByPermissio(InspectionFile inspectionFile, Long userId) { + Set resultFiles = new HashSet<>(); // 1. 获取用户有权限的所有文件 List accessibleFileIds = inspectionFileUserService @@ -295,7 +321,13 @@ public class InspectionFileServiceImpl extends ServiceImpl fileCache = this.list().stream() + // 1. 查询所有文件信息,确保只查询必要的字段,并通过索引优化文件名的like查询 + List 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 fileCache = fileList.stream() .collect(Collectors.toMap(InspectionFile::getId, file -> file)); // 3. 判断是否传递了fatherId参数(即点击了文件夹) @@ -323,20 +355,25 @@ public class InspectionFileServiceImpl extends ServiceImpl collect = resultFiles.stream().distinct().collect(Collectors.toList()); +// List 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 getFilesInFolder(Long folderId, List accessibleFileIds, Map fileCache) { List filesInFolder = new ArrayList<>(); // 获取该文件夹下的所有子文件 - List folderFiles = this.list(new LambdaQueryWrapper() - .eq(InspectionFile::getFatherId, folderId)); +// List folderFiles = this.list(new LambdaQueryWrapper() +// .eq(InspectionFile::getFatherId, folderId)); + + // 直接从 fileCache 过滤出当前 folderId 直接包含的子文件 + List 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 accessibleFileIds, Map fileCache) { // 获取文件夹内的所有子文件 - List subFiles = this.list(new LambdaQueryWrapper() - .eq(InspectionFile::getFatherId, folderFile.getId())); +// List subFiles = this.list(new LambdaQueryWrapper() +// .eq(InspectionFile::getFatherId, folderFile.getId())); + + List subFiles = fileCache.values().stream() + .filter(file -> folderFile.getId().equals(file.getFatherId())) + .collect(Collectors.toList()); // 如果文件夹下有文件且其中一个文件有权限,则返回true for (InspectionFile subFile : subFiles) { diff --git a/dl-module-inspection/src/main/resources/mapper/inspection/InspectionFileRecordMapper.xml b/dl-module-inspection/src/main/resources/mapper/inspection/InspectionFileRecordMapper.xml new file mode 100644 index 00000000..410b02db --- /dev/null +++ b/dl-module-inspection/src/main/resources/mapper/inspection/InspectionFileRecordMapper.xml @@ -0,0 +1,6 @@ + + + +