fei
2025-09-16 fcc5194c1b671e76cb9054c9a14360139fe3be72
ruoyi-admin/src/main/java/com/ruoyi/web/controller/archive/DocumentMaterialsController.java
@@ -2,23 +2,32 @@
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.util.Collections;
import java.util.List;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import com.drew.imaging.ImageMetadataReader;
import com.drew.metadata.Metadata;
import com.drew.metadata.exif.ExifIFD0Directory;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.text.Convert;
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.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.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;
@@ -26,6 +35,7 @@
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
import static com.ruoyi.common.core.page.TableSupport.PAGE_NUM;
import static com.ruoyi.common.core.page.TableSupport.PAGE_SIZE;
@@ -40,6 +50,9 @@
@RequestMapping("/system/materials")
public class DocumentMaterialsController extends BaseController
{
    @Autowired
    private ServerConfig serverConfig;
    @Autowired
    private IDocumentMaterialsService documentMaterialsService;
@@ -87,7 +100,9 @@
    @PostMapping
    public AjaxResult add(@RequestBody DocumentMaterials documentMaterials)
    {
        return toAjax(documentMaterialsService.insertDocumentMaterials(documentMaterials));
        int res = documentMaterialsService.insertDocumentMaterials(documentMaterials);
        System.out.println(res+"][[[[[[[[[[[[[[[[[[");
        return toAjax(res);
    }
    /**
@@ -113,4 +128,92 @@
    {
        return toAjax(documentMaterialsService.deleteDocumentMaterialsByMaterialIds(materialIds));
    }
    public String getPageSize(double du)
    {
        if(du <= 8699840)
            return "A4";
        else if(du <= 17403188)
            return "A3";
        else if(du <= 34811347)
            return "A2";
        else if(du <= 69622674)
            return "A1";
        else
            return "A0";
    }
    @PostMapping("/upload")
    public AjaxResult uploadFile(MultipartFile file) throws Exception
    {
        // System.out.println("sdfd9999999999999999999999999999999");
        try
        {
            //根据文件名称,然后修改对应数据的url
            String fname = file.getOriginalFilename();
//            System.out.println(fname);
            // 上传文件路径
            String filePath = RuoYiConfig.getUploadPath();
//            System.out.println(filePath);
            // 上传并返回新文件名称
            String fileName = FileUploadUtils.upload(filePath, file);
            String url = serverConfig.getUrl() + fileName;
            AjaxResult ajax = AjaxResult.success();
            //分割文件名
            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信息
            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);
            //计算sizeType
            String sizeType = getPageSize(wid*hei);
            //插入数据库对应的url当中
            documentMaterialsService.updateByPageNumber(nam, sizeType, fileNumber,wid, hei,wdpi, hdpi,  sz, fileName, pname);
//            System.out.println(url);
//            System.out.println(fileName);
            ajax.put("fileName", fileName);
//            System.out.println(FileUtils.getName(fileName));
            ajax.put("newFileName", FileUtils.getName(fileName));
            ajax.put("originalFilename", file.getOriginalFilename());
            return ajax;
        }
        catch (Exception e)
        {
            System.out.println(e);
            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,"档案详细信息导入模板");
    }
}