| | |
| | | |
| | | |
| | | |
| | | import java.awt.*; |
| | | import java.awt.image.BufferedImage; |
| | | import java.io.ByteArrayInputStream; |
| | | import java.io.*; |
| | | import java.nio.file.Files; |
| | | import java.nio.file.Path; |
| | | import java.nio.file.Paths; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import javax.imageio.ImageIO; |
| | | import javax.servlet.http.HttpServletResponse; |
| | |
| | | import com.ruoyi.common.utils.ServletUtils; |
| | | import com.ruoyi.common.utils.file.FileUploadUtils; |
| | | import com.ruoyi.common.utils.file.FileUtils; |
| | | import com.ruoyi.domain.ArchiveCategory; |
| | | import com.ruoyi.domain.DocumentMaterials; |
| | | import com.ruoyi.domain.vo.DocumentMaterialFileSmallVo; |
| | | import com.ruoyi.framework.config.ServerConfig; |
| | | import com.ruoyi.framework.web.domain.server.Sys; |
| | | import com.ruoyi.service.IDocumentMaterialsService; |
| | | import com.sun.xml.internal.ws.api.addressing.WSEndpointReference; |
| | | import org.apache.commons.imaging.ImageInfo; |
| | | import org.apache.commons.imaging.Imaging; |
| | | import org.springframework.mock.web.MockMultipartFile; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.PutMapping; |
| | | import org.springframework.web.bind.annotation.DeleteMapping; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import com.ruoyi.common.annotation.Log; |
| | | import com.ruoyi.common.core.controller.BaseController; |
| | | import com.ruoyi.common.core.domain.AjaxResult; |
| | |
| | | import static com.ruoyi.common.core.page.TableSupport.PAGE_SIZE; |
| | | |
| | | /** |
| | | * 【请填写功能名称】Controller |
| | | * 【文件材料综合信息】Controller |
| | | * |
| | | * @author ruoyi |
| | | * @date 2025-07-28 |
| | |
| | | private IDocumentMaterialsService documentMaterialsService; |
| | | |
| | | /** |
| | | * 查询【请填写功能名称】列表 |
| | | * 查询【文件材料综合信息】列表 |
| | | */ |
| | | @PreAuthorize("@ss.hasPermi('system:materials:list')") |
| | | @GetMapping("/list") |
| | |
| | | } |
| | | |
| | | /** |
| | | * 导出【请填写功能名称】列表 |
| | | * 导出【文件材料综合信息】列表 |
| | | */ |
| | | @PreAuthorize("@ss.hasPermi('system:materials:export')") |
| | | @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT) |
| | | @Log(title = "【文件材料综合信息】", businessType = BusinessType.EXPORT) |
| | | @PostMapping("/export") |
| | | public void export(HttpServletResponse response, DocumentMaterials documentMaterials) |
| | | { |
| | | List<DocumentMaterials> list = documentMaterialsService.selectDocumentMaterialsList(documentMaterials); |
| | | ExcelUtil<DocumentMaterials> util = new ExcelUtil<DocumentMaterials>(DocumentMaterials.class); |
| | | util.exportExcel(response, list, "【请填写功能名称】数据"); |
| | | util.exportExcel(response, list, "【文件材料综合信息】数据"); |
| | | } |
| | | |
| | | /** |
| | | * 获取【请填写功能名称】详细信息 |
| | | * 获取【文件材料综合信息】详细信息 |
| | | */ |
| | | @PreAuthorize("@ss.hasPermi('system:materials:query')") |
| | | @GetMapping(value = "/{materialId}") |
| | |
| | | } |
| | | |
| | | /** |
| | | * 新增【请填写功能名称】 |
| | | * 新增【文件材料综合信息】 |
| | | */ |
| | | @PreAuthorize("@ss.hasPermi('system:materials:add')") |
| | | @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT) |
| | | @Log(title = "【文件材料综合信息】", businessType = BusinessType.INSERT) |
| | | @PostMapping |
| | | public AjaxResult add(@RequestBody DocumentMaterials documentMaterials) |
| | | { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 修改【请填写功能名称】 |
| | | * 修改【文件材料综合信息】 |
| | | * |
| | | * system:materials:edit |
| | | */ |
| | | @PreAuthorize("@ss.hasPermi('system:materials:edit')") |
| | | @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE) |
| | | @Log(title = "【文件材料综合信息】", businessType = BusinessType.UPDATE) |
| | | @PutMapping |
| | | public AjaxResult edit(@RequestBody DocumentMaterials documentMaterials) |
| | | { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 删除【请填写功能名称】 |
| | | * 删除【文件材料综合信息】 |
| | | */ |
| | | @PreAuthorize("@ss.hasPermi('system:materials:remove')") |
| | | @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE) |
| | | @Log(title = "【文件材料综合信息】", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{materialIds}") |
| | | public AjaxResult remove(@PathVariable String[] materialIds) |
| | | { |
| | |
| | | return "A0"; |
| | | } |
| | | |
| | | @PostMapping("/upload") |
| | | public AjaxResult uploadFile(MultipartFile file) throws Exception |
| | | @PostMapping("/upload/{recordId}") |
| | | public AjaxResult uploadFile(MultipartFile file, @PathVariable Long recordId) throws Exception |
| | | { |
| | | // System.out.println("sdfd9999999999999999999999999999999"); |
| | | try |
| | |
| | | //分割文件名 |
| | | String [] nams = fname.split("\\."); |
| | | Long nam = Long.parseLong(nams[0]); |
| | | //文件名称 |
| | | String pname = nams[1]; |
| | | ajax.put("url", url); |
| | | //拿到图像属性 |
| | | BufferedImage bufferedImage = ImageIO.read(file.getInputStream()); |
| | | int wid = bufferedImage.getWidth(); |
| | | int hei = bufferedImage.getHeight(); |
| | | double sz = Double.parseDouble(String.format("%.2f", file.getSize()*1.0/1024)); |
| | | System.out.println(wid+":"+hei+":"+sz); |
| | | //拿到图像的dpi信息 |
| | | //根据页号拿到案卷的详细信息 |
| | | System.out.println("0-------------"); |
| | | System.out.println(recordId); |
| | | DocumentMaterials doc = documentMaterialsService.selectByPageNumber(nam, Math.toIntExact(recordId)); |
| | | if(doc==null) |
| | | return AjaxResult.error("无对应页号,请检查清楚附件以及对应的输入!"); |
| | | else{ |
| | | if(doc.getSecurityLevel().equals("该页另存")) |
| | | { |
| | | |
| | | ImageInfo info = Imaging.getImageInfo(file.getBytes()); |
| | | //替换为了准备好的图像 |
| | | //读取服务器上的图像 |
| | | // new InputStream(); |
| | | String fp = filePath + "\\glc.jpg"; |
| | | Path path = Paths.get(fp); |
| | | File fil = new File(fp); |
| | | //拿到图像属性 |
| | | BufferedImage bufferedImage = ImageIO.read(Files.newInputStream(path)); |
| | | int wid = bufferedImage.getWidth(); |
| | | int hei = bufferedImage.getHeight(); |
| | | double sz = Double.parseDouble(String.format("%.2f", Files.size(path)*1.0/1024)); |
| | | System.out.println("ddsdsdsd"); |
| | | System.out.println(wid+":"+hei+":"+sz); |
| | | |
| | | //拿到图像的dpi信息 |
| | | |
| | | ImageInfo info = Imaging.getImageInfo(Files.readAllBytes(path)); |
| | | |
| | | |
| | | int wdpi = info.getPhysicalWidthDpi() ; |
| | | int hdpi = info.getPhysicalHeightDpi(); |
| | | System.out.println("DPI: " + info.getPhysicalWidthDpi()); |
| | | //计算fileNumber |
| | | Long fileNumber = documentMaterialsService.getFiNum(nam); |
| | | //计算sizeType |
| | | String sizeType = getPageSize(wid*hei); |
| | | //插入数据库对应的url当中 |
| | | documentMaterialsService.updateByPageNumber(nam, sizeType, fileNumber,wid, hei,wdpi, hdpi, sz, fileName, pname); |
| | | // System.out.println(url); |
| | | int wdpi = info.getPhysicalWidthDpi() ; |
| | | int hdpi = info.getPhysicalHeightDpi(); |
| | | System.out.println("DPI: " + info.getPhysicalWidthDpi()); |
| | | //计算fileNumber |
| | | Long fileNumber = documentMaterialsService.getFiNum(nam,recordId); |
| | | //计算sizeType |
| | | String sizeType = getPageSize(wid*hei); |
| | | |
| | | |
| | | Graphics2D g2d = bufferedImage.createGraphics(); // 获取Graphics2D对象用于绘制 |
| | | g2d.setFont(new Font("Arial", Font.BOLD, 80)); // 设置字体样式和大小 |
| | | g2d.setColor(Color.black); // 设置字体颜色为白色,可根据需要调整颜色和字体样式 |
| | | String pageNumber = doc.getPageNumber()+""; // 页码字符串,可以根据需要修改或动态生成 |
| | | int fontHeight = g2d.getFontMetrics().getHeight(); // 获取字体高度,用于定位文本位置 |
| | | int x = bufferedImage.getWidth() - g2d.getFontMetrics().stringWidth(pageNumber) - 80; // 计算文本X坐标位置,确保在右下角附近 |
| | | int y = bufferedImage.getHeight() - fontHeight / 2 - 100; // 计算文本Y坐标位置,垂直居中显示文本 |
| | | g2d.drawString(pageNumber, x, y); // 在图片上绘制页码文本 |
| | | |
| | | |
| | | System.out.println(pageNumber+"[[[[[[[[[[[[[[["); |
| | | g2d.dispose(); // 释放Graphics2D资源 |
| | | // File outputFile = new File(filePath+"/output_image.jpg"); // 输出文件路径 |
| | | // ImageIO.write(bufferedImage, "jpg", outputFile); // 保 |
| | | //得到BufferedImage对象 |
| | | MultipartFile multipartFile = null; |
| | | try { |
| | | //创建一个ByteArrayOutputStream |
| | | ByteArrayOutputStream os = new ByteArrayOutputStream(); |
| | | //把BufferedImage写入ByteArrayOutputStream |
| | | ImageIO.write(bufferedImage, "jpg", os); |
| | | //ByteArrayOutputStream转成InputStream |
| | | InputStream input = new ByteArrayInputStream(os.toByteArray()); |
| | | //InputStream转成MultipartFile |
| | | multipartFile = new MockMultipartFile(pageNumber, pageNumber+".jpg", "text/plain", input); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | // 上传并返回新文件名称 |
| | | String fileName1 = FileUploadUtils.upload(filePath, multipartFile); |
| | | String url1 = serverConfig.getUrl() + fileName; |
| | | |
| | | |
| | | String us = "/profile/upload/0071.jpg"; |
| | | documentMaterialsService.updateByPageNumber(nam, sizeType, fileNumber,wid, hei,wdpi, hdpi, sz, fileName1, "jpg", recordId); |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | //文件名称 |
| | | String pname = nams[1]; |
| | | ajax.put("url", url); |
| | | //拿到图像属性 |
| | | BufferedImage bufferedImage = ImageIO.read(file.getInputStream()); |
| | | int wid = bufferedImage.getWidth(); |
| | | int hei = bufferedImage.getHeight(); |
| | | double sz = Double.parseDouble(String.format("%.2f", file.getSize()*1.0/1024)); |
| | | System.out.println(wid+":"+hei+":"+sz); |
| | | //拿到图像的dpi信息 |
| | | |
| | | ImageInfo info = Imaging.getImageInfo(file.getBytes()); |
| | | |
| | | |
| | | int wdpi = info.getPhysicalWidthDpi() ; |
| | | int hdpi = info.getPhysicalHeightDpi(); |
| | | System.out.println("DPI: " + info.getPhysicalWidthDpi()); |
| | | //计算fileNumber |
| | | Long fileNumber = documentMaterialsService.getFiNum(nam, recordId); |
| | | //计算sizeType |
| | | String sizeType = getPageSize(wid*hei); |
| | | //插入数据库对应的url当中 |
| | | documentMaterialsService.updateByPageNumber(nam, sizeType, fileNumber,wid, hei,wdpi, hdpi, sz, fileName, pname, recordId); |
| | | // |
| | | } |
| | | } |
| | | System.out.println(url); |
| | | // System.out.println(fileName); |
| | | ajax.put("fileName", fileName); |
| | | // System.out.println(FileUtils.getName(fileName)); |
| | |
| | | return AjaxResult.error(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | |
| | | @Log(title = "档案详细信息记录导入", businessType = BusinessType.IMPORT) |
| | | @PostMapping("/importData") |
| | | public AjaxResult importData(@RequestParam("file") MultipartFile file, @RequestParam("recordId")String recordId) throws Exception |
| | | { |
| | | System.out.println(file); |
| | | return documentMaterialsService.importExcel(file, recordId); |
| | | } |
| | | |
| | | @PostMapping("/model") |
| | | public void getExportModel(HttpServletResponse response){ |
| | | List<DocumentMaterialFileSmallVo> list = Collections.singletonList(new DocumentMaterialFileSmallVo()); |
| | | ExcelUtil<DocumentMaterialFileSmallVo> util = new ExcelUtil<>(DocumentMaterialFileSmallVo.class); |
| | | util.exportExcel(response,list,"档案详细信息导入模板"); |
| | | } |
| | | |
| | | //导出material |
| | | } |