hyingbo
2025-05-30 5d4112fa1bbd47dc6e7b9c0d239e34b020776924
添加文件上传下载功能
已添加5个文件
267 ■■■■■ 文件已修改
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/DocInfoController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/FileDocInfo.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DocInfoMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IDocInfoService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/DocInfoServiceImpl.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/DocInfoController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package org.jeecg.modules.system.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.modules.system.entity.FileDocInfo;
import org.jeecg.modules.system.service.IDocInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Slf4j
@Api(tags = "文档表")
@RestController
@RequestMapping("/nc/doc")
public class DocInfoController extends JeecgController<FileDocInfo, IDocInfoService> {
    @Autowired
    private IDocInfoService docInfoService;
    /**
     * åˆ†é¡µåˆ—表查询
     * @param docInfo
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    public Result<IPage<FileDocInfo>> queryPageList(FileDocInfo docInfo,
                                                    @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                                    @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                                    HttpServletRequest req) {
        Result<IPage<FileDocInfo>> result = new Result<IPage<FileDocInfo>>();
        QueryWrapper<FileDocInfo> queryWrapper = QueryGenerator.initQueryWrapper(docInfo, req.getParameterMap());
        Page<FileDocInfo> page = new Page<FileDocInfo>(pageNo, pageSize);
        IPage<FileDocInfo> pageList = docInfoService.page(page, queryWrapper);
        result.setSuccess(true);
        result.setResult(pageList);
        return result;
    }
    @AutoLog(value = "文档表-导入文档进口")
    @ApiOperation(value = "文档表-导入文档进口", notes = "文档表-导入文档进口")
    @PostMapping("/add")
    public Result<?> addDocInfo(@RequestParam("file") MultipartFile file) {
        boolean b = docInfoService.addDocInfo(file);
        if(!b)
            return Result.error("操作失败!");
        return Result.ok("操作成功!");
    }
    @AutoLog(value = "文档表-删除文档信息")
    @ApiOperation(value = "文档表-删除文档信息", notes = "文档表-删除文档信息")
    @DeleteMapping("/delete")
    public Result<?> deleteDocInfo(@RequestParam("id") String id) {
        boolean b = docInfoService.deleteDocInfo(id);
        if(!b)
            return Result.error("操作失败!");
        return Result.ok("操作成功!");
    }
    @AutoLog(value = "文件表-文档下载")
    @ApiOperation(value = "文件表-文档下载", notes = "文件表-文档下载")
    @GetMapping("/download")
    public Result<?> downloadDocFile(@RequestParam("id") String id, HttpServletResponse response) {
        return docInfoService.downloadDocFile(response, id);
    }
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/FileDocInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package org.jeecg.modules.system.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.util.Date;
/**
 * @Description: æ–‡æ¡£
 * @author clown
 */
@Data
@NoArgsConstructor
@TableName(value = "file_doc_info")
public class FileDocInfo {
    @TableId(value = "id")
    private String id;
    /**文件名称*/
    @Excel(name = "文件名称", width = 15)
    @ApiModelProperty(value = "文件名称")
    private String fileName;
    /**文件加密后的名称*/
    @Excel(name = "文件加密后的名称", width = 15)
    @ApiModelProperty(value = "文件加密后的名称")
    private String fileEncodeName;
    /**文件路径*/
    @Excel(name = "文件路径", width = 15)
    @ApiModelProperty(value = "文件路径")
    private String filePath;
    /**文件大小*/
    @Excel(name = "文件大小", width = 15)
    @ApiModelProperty(value = "文件大小")
    private Long fileSize;
    /**文件后缀*/
    @Excel(name = "文件后缀", width = 15)
    @ApiModelProperty(value = "文件后缀")
    private String fileSuffix;
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;
    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date updateTime;
    @TableField(value = "create_by",fill = FieldFill.INSERT)
    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
    private String createBy;
    @TableField(value = "update_by", fill = FieldFill.UPDATE)
    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
    private String updateBy;
    @JsonIgnore
    @TableLogic
    @TableField(value = "delete_flag", select = false)
    private Integer deleteFlag = 0;
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DocInfoMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package org.jeecg.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.system.entity.FileDocInfo;
public interface DocInfoMapper  extends BaseMapper<FileDocInfo> {
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IDocInfoService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package org.jeecg.modules.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.system.entity.FileDocInfo;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface IDocInfoService extends IService<FileDocInfo> {
    /**
     * å¯¼å…¥æ–‡æ¡£è¿›å£
     * @param file
     * @return
     */
    boolean addDocInfo(MultipartFile file);
    /**
     * åˆ é™¤æ–‡æ¡£ä¿¡æ¯
     * @param id
     * @return
     */
    boolean deleteDocInfo(String id);
    /**
     * æ–‡æ¡£ä¸‹è½½
     * @param response
     * @param id
     * @return
     */
    Result<?> downloadDocFile(HttpServletResponse response, String id);
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/DocInfoServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
package org.jeecg.modules.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.vo.FileUploadResult;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.exception.ExceptionCast;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.util.FileUtil;
import org.jeecg.modules.system.entity.FileDocInfo;
import org.jeecg.modules.system.mapper.DocInfoMapper;
import org.jeecg.modules.system.service.IDocInfoService;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@Service
public class DocInfoServiceImpl extends ServiceImpl<DocInfoMapper, FileDocInfo> implements IDocInfoService {
    @Override
    public boolean addDocInfo(MultipartFile file) {
        if (file == null || file.isEmpty()) {
            throw new JeecgBootException("非法参数");
        }
        FileUploadResult fileUploadResult = FileUtil.uploadFile(file);
        if(fileUploadResult == null)
            throw new JeecgBootException("文档导入失败");
        String fileName = FileUtil.getFilenameNonSuffix(file.getOriginalFilename());
        List<FileDocInfo> fileDocInfoList = this.list(new LambdaQueryWrapper<FileDocInfo>().eq(FileDocInfo::getFileName, fileName));
        if (CollectionUtils.isNotEmpty(fileDocInfoList))
            throw new JeecgBootException("该文档已存在");
        FileDocInfo docInfo = new FileDocInfo();
        String docId = IdWorker.getIdStr();
        docInfo.setId(docId);
        docInfo.setFileName(fileUploadResult.getFileName());
        docInfo.setFilePath(fileUploadResult.getFilePath());
        docInfo.setFileEncodeName(fileUploadResult.getFileEncodeName());
        docInfo.setFileSize(fileUploadResult.getFileSize());
        docInfo.setFileSuffix(fileUploadResult.getFileSuffix());
        return super.save(docInfo);
    }
    @Override
    public boolean deleteDocInfo(String id) {
        if(StringUtils.isBlank(id))
            throw new JeecgBootException("非法参数");
        FileDocInfo en = super.getById(id);
        if(en == null)
            throw new JeecgBootException("未查询到文件信息");
        FileUtil.deleteFile(en.getFilePath(), en.getFileName());
        return super.removeById(id);
    }
    @Override
    public Result<?> downloadDocFile(HttpServletResponse response, String id) {
        if(!StringUtils.isBlank(id))
            throw new JeecgBootException("非法参数");
        FileDocInfo en = super.getById(id);
        if(en == null)
            throw new JeecgBootException("未查询到文件信息");
        String fileName;
        if(StringUtils.isNotBlank(en.getFileSuffix())) {
            fileName = en.getFileName() + "." + en.getFileSuffix();
        }else {
            fileName = en.getFileName();
        }
        FileUtil.downLoadFile(response, en.getFileEncodeName(), en.getFilePath(), fileName);
        return null;
    }
}