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; /** *

* 文件管理表 前端控制器 *

* * @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 ids) { List res = sysFileService.deleteBatch(ids); if(res.size()==0){ return AjaxResult.success("删除成功"); } return AjaxResult.success(res); } @PostMapping("/download") @Operation(summary = "下载文件") public ResponseEntity 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 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); } }