package com.ruoyi.basic.controller; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.SealConfigExport; import com.ruoyi.basic.pojo.SealConfig; import com.ruoyi.basic.service.SealConfigService; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.exception.base.BaseException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; /** * 印章管理(报告用印) 控制层 */ @Api(tags = "印章管理") @RestController @RequestMapping("/sealConfig") public class SealConfigController { @Resource private SealConfigService sealConfigService; @Value("${file.path}") private String filePath; @ApiOperation(value = "查询印章列表") @GetMapping("/pageSeal") public Result> pageSeal(Page page, SealConfig query) { return Result.success(sealConfigService.pageSeal(page, query)); } @ApiOperation(value = "新增印章") @PostMapping("/addSeal") public Result addSeal(@RequestBody SealConfig seal) { return Result.success(sealConfigService.addSeal(seal)); } @ApiOperation(value = "修改印章") @PostMapping("/updateSeal") public Result updateSeal(@RequestBody SealConfig seal) { return Result.success(sealConfigService.updateSeal(seal)); } @ApiOperation(value = "删除印章") @DeleteMapping("/delSeal") public Result delSeal(Integer id) { return Result.success(sealConfigService.delSeal(id)); } @ApiOperation(value = "启用印章下拉列表(供报告批准选择印章)") @GetMapping("/selectEnabled") public Result selectEnabled() { return Result.success(sealConfigService.selectEnabled()); } @ApiOperation(value = "上传印章图片") @PostMapping("/upload") public Result upload(MultipartFile file) { if (file == null || file.isEmpty()) { throw new BaseException("请选择印章图片"); } String originalName = file.getOriginalFilename() == null ? "" : file.getOriginalFilename(); String suffix = originalName.substring(originalName.lastIndexOf(".") + 1).toLowerCase(); if (!"jpg".equals(suffix) && !"jpeg".equals(suffix) && !"png".equals(suffix)) { throw new BaseException("仅支持 jpg / png 图片"); } String fileName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmssSSS")) + "." + suffix; try { File dir = new File(filePath); if (!dir.exists()) { dir.mkdirs(); } file.transferTo(new File(dir.getPath() + File.separator + fileName)); } catch (IOException e) { throw new BaseException("印章图片上传失败"); } return Result.success(fileName); } @ApiOperation(value = "导出印章") @GetMapping("/exportSeal") public void exportSeal(SealConfig query, HttpServletResponse response) { List list = sealConfigService.listForExport(query); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); String fileName; try { fileName = URLEncoder.encode("印章管理", "UTF-8"); } catch (Exception e) { throw new BaseException("导出失败"); } response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); try { ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()) .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); WriteSheet mainSheet = EasyExcel.writerSheet(0, "印章管理").head(SealConfigExport.class).build(); excelWriter.write(list, mainSheet); excelWriter.finish(); } catch (IOException e) { throw new BaseException("导出失败"); } } }