Browse Source

`文件上传接口fix`

wenhongquan 1 year ago
parent
commit
5c7ca56d33

+ 2 - 2
ruoyi-admin/src/main/resources/application.yml

@@ -71,9 +71,9 @@ spring:
   servlet:
     multipart:
       # 单个文件大小
-      max-file-size: 10MB
+      max-file-size: 100MB
       # 设置总上传的文件大小
-      max-request-size: 20MB
+      max-request-size: 1800MB
   mvc:
     format:
       date-time: yyyy-MM-dd HH:mm:ss

+ 34 - 4
ruoyi-modules/ruoyi-filemanager/src/main/java/org/dromara/filemanager/controller/TblArchivesController.java

@@ -1,10 +1,17 @@
 package org.dromara.filemanager.controller;
 
+import java.util.Arrays;
 import java.util.List;
 
+import cn.hutool.core.util.StrUtil;
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
+import org.dromara.filemanager.domain.bo.TblArchivesFileBo;
+import org.dromara.filemanager.domain.vo.TblArchivesFileVo;
+import org.dromara.filemanager.service.ITblArchivesFileService;
+import org.dromara.system.domain.SysOss;
+import org.dromara.system.domain.vo.SysOssVo;
 import org.dromara.system.service.ISysOssService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
@@ -36,6 +43,8 @@ public class TblArchivesController extends BaseController {
 
     private final ITblArchivesService tblArchivesService;
 
+    private final ITblArchivesFileService   tblArchivesFileService;
+
 
     private final ISysOssService sysOssService;
 
@@ -108,12 +117,33 @@ public class TblArchivesController extends BaseController {
         return toAjax(tblArchivesService.deleteWithValidByIds(List.of(ids), true));
     }
 
+    /**
+     * 查询电子档案文件列表
+     *
+     * @param id 主键
+     */
     @GetMapping("/{id}/files")
-    public R<Void> files(@PathVariable Long id) {
-
-//        sysOssService.queryPageList()
+    public R<List<SysOssVo>> files(@PathVariable Long id) {
+        TblArchivesFileBo bo = new TblArchivesFileBo();
+        bo.setArchiveId(id);
+        List<TblArchivesFileVo> afiles =  tblArchivesFileService.queryList(bo);
+        List<SysOssVo> files =  sysOssService.listByIds(afiles.stream().map(t->t.getOssFileId()).toList());
+        return R.ok(files);
+    }
 
-//        return toAjax(tblArchivesService.updateByBo(bo));
+    @PutMapping("/save/{id}/{fileids}")
+    public R<Void> savefiles(@PathVariable Long id,@PathVariable String fileids) {
+        if(!StrUtil.isEmptyIfStr(fileids)){
+          List<TblArchivesFileBo> fileBoList =  Arrays.stream(fileids.split(",")).map(t->{
+                TblArchivesFileBo bo = new TblArchivesFileBo();
+                bo.setArchiveId(id);
+                bo.setOssFileId(Long.parseLong(t));
+                return bo;
+            }).toList();
+          tblArchivesFileService.insertBatch(fileBoList);
+        }else{
+            return R.fail("缺少文件!");
+        }
         return R.ok();
     }
 }

+ 1 - 0
ruoyi-modules/ruoyi-filemanager/src/main/java/org/dromara/filemanager/mapper/TblArchivesFileMapper.java

@@ -12,4 +12,5 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
  */
 public interface TblArchivesFileMapper extends BaseMapperPlus<TblArchivesFile, TblArchivesFileVo> {
 
+    void delUnUsedFils();
 }

+ 6 - 0
ruoyi-modules/ruoyi-filemanager/src/main/java/org/dromara/filemanager/service/ITblArchivesFileService.java

@@ -37,6 +37,10 @@ public interface ITblArchivesFileService {
      */
     Boolean insertByBo(TblArchivesFileBo bo);
 
+
+    Boolean insertBatch(List<TblArchivesFileBo> bo);
+
+
     /**
      * 修改项目文件
      */
@@ -46,4 +50,6 @@ public interface ITblArchivesFileService {
      * 校验并批量删除项目文件信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    Boolean deleteUnusedFiles();
 }

+ 19 - 0
ruoyi-modules/ruoyi-filemanager/src/main/java/org/dromara/filemanager/service/impl/TblArchivesFileServiceImpl.java

@@ -15,6 +15,7 @@ import org.dromara.filemanager.domain.TblArchivesFile;
 import org.dromara.filemanager.mapper.TblArchivesFileMapper;
 import org.dromara.filemanager.service.ITblArchivesFileService;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -80,6 +81,18 @@ public class TblArchivesFileServiceImpl implements ITblArchivesFileService {
         return flag;
     }
 
+    @Override
+    public Boolean insertBatch(List<TblArchivesFileBo> bos) {
+        List<TblArchivesFile> files = new ArrayList<>();
+        for (TblArchivesFileBo bo : bos) {
+            TblArchivesFile add = MapstructUtils.convert(bo, TblArchivesFile.class);
+            validEntityBeforeSave(add);
+            files.add(add);
+        }
+        boolean flag = baseMapper.insertBatch(files);
+        return flag;
+    }
+
     /**
      * 修改项目文件
      */
@@ -107,4 +120,10 @@ public class TblArchivesFileServiceImpl implements ITblArchivesFileService {
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
+    @Override
+    public Boolean deleteUnusedFiles() {
+
+        return null;
+    }
 }

+ 17 - 0
ruoyi-modules/ruoyi-filemanager/src/main/java/org/dromara/filemanager/service/impl/TblArchivesServiceImpl.java

@@ -1,5 +1,6 @@
 package org.dromara.filemanager.service.impl;
 
+import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.StrUtil;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
+import org.dromara.filemanager.mapper.TblArchivesFileMapper;
 import org.springframework.stereotype.Service;
 import org.dromara.filemanager.domain.bo.TblArchivesBo;
 import org.dromara.filemanager.domain.vo.TblArchivesVo;
@@ -19,6 +21,8 @@ import org.dromara.filemanager.service.ITblArchivesService;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
 
 /**
  * 电子档案Service业务层处理
@@ -32,6 +36,8 @@ public class TblArchivesServiceImpl implements ITblArchivesService {
 
     private final TblArchivesMapper baseMapper;
 
+    private final TblArchivesFileMapper fileMapper;
+
     /**
      * 查询电子档案
      */
@@ -45,6 +51,17 @@ public class TblArchivesServiceImpl implements ITblArchivesService {
      */
     @Override
     public TableDataInfo<TblArchivesVo> queryPageList(TblArchivesBo bo, PageQuery pageQuery) {
+
+        //删除多余的文件关系
+        try {
+            ThreadUtil.execAsync(
+                () -> {
+                    fileMapper.delUnUsedFils();
+                }
+            );
+
+        }catch (Exception e){}
+
         LambdaQueryWrapper<TblArchives> lqw = buildQueryWrapper(bo);
         Page<TblArchivesVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         return TableDataInfo.build(result);

+ 8 - 0
ruoyi-modules/ruoyi-filemanager/src/main/resources/mapper/filemanager/TblArchivesFileMapper.xml

@@ -3,5 +3,13 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.filemanager.mapper.TblArchivesFileMapper">
+    <delete id="delUnUsedFils" >
+        DELETE
+        FROM
+            tbl_archives_file
+        WHERE
+            archive_id NOT IN ( SELECT id FROM tbl_archives )
+           OR oss_file_id NOT IN ( SELECT oss_id FROM sys_oss )
+    </delete>
 
 </mapper>

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java

@@ -11,6 +11,7 @@ import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.system.domain.bo.SysOssBo;
+import org.dromara.system.domain.vo.SysOssFilesVo;
 import org.dromara.system.domain.vo.SysOssUploadVo;
 import org.dromara.system.domain.vo.SysOssVo;
 import org.dromara.system.service.ISysOssService;
@@ -48,6 +49,11 @@ public class SysOssController extends BaseController {
         return ossService.queryPageList(bo, pageQuery);
     }
 
+    @GetMapping("/allArchivesFileList")
+    public TableDataInfo<SysOssFilesVo> listfile(@Validated(QueryGroup.class) SysOssBo bo, PageQuery pageQuery) {
+        return ossService.queryPageFileList(bo,pageQuery);
+    }
+
     /**
      * 查询OSS对象基于id串
      *
@@ -105,4 +111,5 @@ public class SysOssController extends BaseController {
         return toAjax(ossService.deleteWithValidByIds(List.of(ossIds), true));
     }
 
+
 }

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysOssBo.java

@@ -48,4 +48,6 @@ public class SysOssBo extends BaseEntity {
 
     private Long size;
 
+    private String qiuquan;
+
 }

+ 28 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssFilesVo.java

@@ -0,0 +1,28 @@
+package org.dromara.system.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import org.dromara.system.domain.SysDept;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 部门视图对象 sys_dept
+ *
+ * @author Michelle.Chung
+ */
+@Data
+@AutoMapper(target = SysOssFilesVo.class)
+public class SysOssFilesVo extends SysOssVo {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+    private Long archiveId;
+
+}

+ 9 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssMapper.java

@@ -1,13 +1,22 @@
 package org.dromara.system.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.poi.ss.formula.functions.T;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 import org.dromara.system.domain.SysOss;
+import org.dromara.system.domain.bo.SysOssBo;
+import org.dromara.system.domain.vo.SysOssFilesVo;
 import org.dromara.system.domain.vo.SysOssVo;
 
+import java.util.List;
+
 /**
  * 文件上传 数据层
  *
  * @author Lion Li
  */
 public interface SysOssMapper extends BaseMapperPlus<SysOss, SysOssVo> {
+
+    Page<SysOssFilesVo> selectFiles(SysOssBo sysOss, IPage<T> page);
 }

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java

@@ -3,6 +3,7 @@ package org.dromara.system.service;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.system.domain.bo.SysOssBo;
+import org.dromara.system.domain.vo.SysOssFilesVo;
 import org.dromara.system.domain.vo.SysOssVo;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.web.multipart.MultipartFile;
@@ -33,4 +34,5 @@ public interface ISysOssService {
 
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
+    TableDataInfo<SysOssFilesVo> queryPageFileList(SysOssBo sysOss,PageQuery pageQuery);
 }

+ 12 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java

@@ -22,6 +22,7 @@ import org.dromara.common.oss.enumd.AccessPolicyType;
 import org.dromara.common.oss.factory.OssFactory;
 import org.dromara.system.domain.SysOss;
 import org.dromara.system.domain.bo.SysOssBo;
+import org.dromara.system.domain.vo.SysOssFilesVo;
 import org.dromara.system.domain.vo.SysOssVo;
 import org.dromara.system.mapper.SysOssMapper;
 import org.dromara.system.service.ISysOssService;
@@ -185,6 +186,14 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
         return baseMapper.deleteBatchIds(ids) > 0;
     }
 
+    @Override
+    public TableDataInfo<SysOssFilesVo> queryPageFileList(SysOssBo sysOss, PageQuery pageQuery) {
+        Page<SysOssFilesVo> result= baseMapper.selectFiles(sysOss,pageQuery.build());
+        List<SysOssFilesVo> filterResult = StreamUtils.toList(result.getRecords(), this::matchingFileUrl);
+        result.setRecords(filterResult);
+        return TableDataInfo.build(result);
+    }
+
     /**
      * 匹配Url
      *
@@ -199,4 +208,7 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
         }
         return oss;
     }
+    private SysOssFilesVo matchingFileUrl(SysOssFilesVo oss) {
+        return (SysOssFilesVo)this.matchingUrl(oss);
+    }
 }

+ 14 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOssMapper.xml

@@ -2,4 +2,18 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.system.mapper.SysOssMapper">
 
+    <resultMap type="org.dromara.system.domain.vo.SysOssFilesVo" id="SysOssFilesResult">
+    </resultMap>
+    <select id="selectFiles" resultMap="SysOssFilesResult" parameterType="org.dromara.system.domain.bo.SysOssBo">
+        select a.*,b.archive_id from sys_oss a,tbl_archives_file b where a.oss_id = b.oss_file_id
+         and b.archive_id in (select id from tbl_archives)
+        <if test="sysOss.originalName != null and sysOss.originalName != ''">
+            and a.original_name like concat('%', #{sysOss.originalName}, '%')
+        </if>
+        <if test="sysOss.qiuquan != null and sysOss.qiuquan != ''">
+            and b.archive_id in (select id from tbl_archives where qiuquan like concat('%', #{sysOss.qiuquan}, '%'))
+        </if>
+
+    </select>
+
 </mapper>