package com.ruoyi.web.controller.common;
|
|
import com.ruoyi.common.config.RuoYiConfig;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.utils.file.FileUtils;
|
import com.ruoyi.manage.domain.SysFileManage;
|
import com.ruoyi.manage.domain.vo.SysFileManageVO;
|
import com.ruoyi.manage.service.SysFileService;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletResponse;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.core.io.FileSystemResource;
|
import org.springframework.http.MediaType;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.io.File;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 文件管理表 前端控制器
|
* </p>
|
*
|
* @author sunjiawei
|
* @since 2025-05-21
|
*/
|
@RestController
|
@RequestMapping("/dp/sysFile")
|
@Tag(name = "大屏--文件管理")
|
public class SysFileController {
|
@Autowired
|
SysFileService sysFileService;
|
@Autowired
|
RuoYiConfig ruoYiConfig;
|
|
/**
|
* 查询文件管理列表
|
*/
|
@GetMapping("/listAll")
|
@Operation(summary = "查询文件管理列表")
|
public AjaxResult listAll()
|
{
|
return AjaxResult.success(sysFileService.listAll());
|
}
|
|
/**
|
* 单个上传文件
|
*/
|
@PostMapping("/uploadFile")
|
@Operation(summary = "单个上传文件")
|
public AjaxResult uploadFile(MultipartFile file,String name,String type,
|
@RequestParam(value = "remark",required = false) String remark) {
|
SysFileManage sysFileManage = new SysFileManage();
|
sysFileManage.setName(name);
|
sysFileManage.setType(type);
|
sysFileManage.setRemark(remark);
|
try {
|
int res = sysFileService.saveFile(file,sysFileManage);
|
return AjaxResult.success(res);
|
}
|
catch (Exception e)
|
{
|
return AjaxResult.error(e.getMessage());
|
}
|
}
|
|
/**
|
* 批量删除文件
|
*/
|
@PostMapping("/deleteBatch")
|
@Operation(summary = "批量删除文件")
|
public AjaxResult deleteBatch(@RequestBody List<String> ids)
|
{
|
List<String> res = sysFileService.deleteBatch(ids);
|
if(res.size()==0){
|
return AjaxResult.success("删除成功");
|
}
|
return AjaxResult.success(res);
|
}
|
|
@PostMapping("/download")
|
@Operation(summary = "下载文件")
|
public ResponseEntity<FileSystemResource> resourceDownload(String id){
|
try {
|
SysFileManage sysFileManage = sysFileService.getById(id);
|
String filePath = sysFileManage.getFilePath();
|
String name = sysFileManage.getName();
|
String realFilePath = filePath.replaceFirst("/profile",RuoYiConfig.getProfile());
|
String ext = sysFileManage.getExt();
|
if(ext!=null && !ext.isEmpty()){
|
if(ext.equals("json")){
|
realFilePath = filePath.replaceFirst("/profile",ruoYiConfig.getJson());
|
}
|
}
|
String realFileName = name + realFilePath.substring(realFilePath.indexOf("_") + 1);
|
|
File file = new File(realFilePath);
|
if(!file.exists()){
|
return ResponseEntity.notFound().build();
|
}
|
FileSystemResource resource = new FileSystemResource(file);
|
|
return ResponseEntity.ok()
|
.header("Content-Disposition","attachment;filename=" + realFileName)
|
.body(resource);
|
|
}catch (Exception e){
|
e.printStackTrace();
|
return ResponseEntity.status(500).build();
|
}
|
}
|
|
@GetMapping("/getCount")
|
@Operation(summary = "查询总条数")
|
public AjaxResult getCount(){
|
return AjaxResult.success(sysFileService.queryCount());
|
}
|
|
|
/**
|
* 分页查询文件管理列表
|
*/
|
@PostMapping("/getPageList")
|
@Operation(summary = "分页查询文件管理列表")
|
public TableDataInfo getPageList(@Validated @RequestBody SysFileManageVO vo) {
|
List<SysFileManage> list = sysFileService.queryData(vo);
|
return paginate(list, vo.getPageNum(), vo.getPageSize());
|
}
|
|
//对列表进行分页
|
private TableDataInfo paginate(List list, int pageNum, int pageSize) {
|
if (list == null || list.isEmpty()) {
|
return new TableDataInfo(new ArrayList<>(), 0);
|
}
|
int total = list.size();
|
int formIndex = (pageNum - 1) * pageSize;
|
int toIndex = Math.min(formIndex + pageSize, total);
|
if (formIndex >= total) {
|
return new TableDataInfo(new ArrayList<>(), total);
|
}
|
List subList = list.subList(formIndex, toIndex);
|
return new TableDataInfo(subList, total);
|
}
|
|
}
|