sinake
2 天以前 d6e936e3dcb645658fa7e0c3e02c1daa30bfeb68
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
@@ -3,18 +3,23 @@
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.framework.config.ServerConfig;
import io.swagger.annotations.ApiOperation;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
import org.apache.coyote.AbstractProtocol;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -23,6 +28,7 @@
import javax.management.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.lang.management.ManagementFactory;
import java.util.Set;
@@ -72,19 +78,39 @@
    @PostMapping("/common/upload")
    public AjaxResult uploadFile(MultipartFile file) throws Exception {
        int tomcatPort1 = getTomcatPort();
        log.info("tomcatPort1的值为: {}", tomcatPort1);
        //这个省人民是8099,所以直接写死
        int tomcatPort = 8099;
        try {
            // 上传文件路径
            String filePath = RuoYiConfig.getUploadPath();
            //判断文件是否存在
            String filename = file.getOriginalFilename().trim();
            String felinamePath = FileUploadUtils.extractFilename(file);
//            String pathFileName = FileUploadUtils.getPathFileName(filePath, s);
            for (int i=1;i<500;i++) {
                File file1 = new File(filePath + "/" + felinamePath);
                boolean exists = file1.exists();
                if (exists) {
                    int index = filename.lastIndexOf(".");
                    String startStr = filename.substring(0, index);
                    String endStr = filename.substring(index, filename.length());
                    String newFilename = startStr + "-" + i + endStr; // your new filename
                    felinamePath = DateUtils.datePath() + "/" + newFilename;
                    String contentType = file.getContentType();
                    byte[] bytes = file.getBytes();
                    file = new MockMultipartFile(newFilename, newFilename, contentType, bytes);
                }else{
                    break;
                }
            }
            // 上传并返回新文件名称
            String fileName = FileUploadUtils.upload(filePath, file);
            String url1 = serverConfig.getUrl();
            log.info("url1的值old :{}", url1);
            //这里的8032不是tomcat的,所以要转成tomcat的
            url1 = url1.replace("8032", "8099");
            if (url1.contains("8032")) {
                //这里的8032不是tomcat的,所以要转成tomcat的
                url1 = url1.replace("8032", "8032/prod-api");
            }
            log.info("url1的值new :{}", url1);
            String url = url1 + fileName;
            AjaxResult ajax = AjaxResult.success();
@@ -96,6 +122,27 @@
        }
    }
//    private static void parseUTF(int[] bits) {
//        int index = 0;//这个指针指向每一行循环时列下标的位置,下一行开始时重新置位0
//        int count = 0;
//        ;//这个变量记录每个UTF-8字符的字节数,至少1字节
//        for (int j = ; j < bits.length; ) {
//            //循环每一行数组数据-从头去读--先读这个字符是几个字节组成的
//            // 然后按utf-8的编码格式组合字符串,转换为字符即可
//            if (bits[j] == 1) {
//                count++;
//                index++;
//            } else {
//                index++;//这一位是1后面跟的那一个o
//                //不为1,则说明已经解析完字节数,count里面存的如果是@表示是单字节数据
//                //如果不是o则表示是多字节数据
//                String str = "";
//            }
//        }
//    }
//
//}
    /**
     * 本地资源通用下载
@@ -138,4 +185,21 @@
        }
        return 0;
    }
    @ApiOperation("pdf识别")
    @GetMapping("/common/pdfBox")
    public String pdfBox(String filePath) throws Exception {
        try (PDDocument document = PDDocument.load(new File(filePath))) {
            PDFTextStripper stripper = new PDFTextStripper();
            stripper.setSortByPosition(true); // 按页面排版顺序输出文字,发票必须开这个
            // 发票代码
            String codeReg = "发票代码[::](\\d{10,12})";
            // 发票号码
            String noReg = "发票号码[::](\\d{8})";
            // 价税合计
            String amountReg = "价税合计.*?¥([0-9.]+)";
            String text=stripper.getText(document);
            return text;
        }
    }
}