Forráskód Böngészése

试验附件上传时转成pdf

lvy 2 hónapja
szülő
commit
b1698f2b42

+ 21 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/TrialMaterialMobilization.java

@@ -125,6 +125,13 @@ public class TrialMaterialMobilization extends BaseEntity {
     @Length(max = 255, message = "生产合格证最大长度255个字符")
     private String productionCertificate;
 
+    /**
+     * 生产合格证pdf url
+     */
+    @ApiModelProperty(value = "生产合格证 pdf url")
+    @Length(max = 255, message = "生产合格证pdf url最大长度255个字符")
+    private String productionCertificatePdfUrl;
+
     /**
      * 厂家质检报告
      */
@@ -132,6 +139,13 @@ public class TrialMaterialMobilization extends BaseEntity {
     @Length(max = 255, message = "厂家质检报告最大长度255个字符")
     private String qualityInspectionReport;
 
+    /**
+     * 厂家质检报告 pdf url
+     */
+    @ApiModelProperty(value = "厂家质检报告 pdf url")
+    @Length(max = 255, message = "厂家质检报告 pdf url最大长度255个字符")
+    private String qualityInspectionReportPdfUrl;
+
     /**
      * 其他附件
      */
@@ -139,6 +153,13 @@ public class TrialMaterialMobilization extends BaseEntity {
     @Length(max = 255, message = "其他附件最大长度255个字符")
     private String otherAccessories;
 
+    /**
+     * 其他附件 pdf url
+     */
+    @ApiModelProperty(value = "其他附件 pdf url")
+    @Length(max = 255, message = "其他附件 pdf url最大长度255个字符")
+    private String otherAccessoriesPdfUrl;
+
     /**
      * 排序
      */

+ 40 - 7
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialMaterialMobilizationServiceImpl.java

@@ -11,6 +11,10 @@ import com.lowagie.text.pdf.BaseFont;
 import com.lowagie.text.pdf.PdfPTable;
 import com.lowagie.text.pdf.PdfWriter;
 import lombok.AllArgsConstructor;
+import org.apache.commons.fileupload.disk.DiskFileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateUtils;
 import org.springblade.business.dto.TrialMaterialMobilizationDTO;
@@ -35,24 +39,25 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.core.tool.utils.*;
 import org.springblade.resource.entity.Attach;
+import org.springblade.resource.feign.CommonFileClient;
 import org.springblade.resource.feign.NewIOSSClient;
+import org.springblade.resource.vo.NewBladeFile;
 import org.springblade.system.entity.Dict;
 import org.springblade.system.feign.IDictClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
+import org.springframework.http.MediaType;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
+import java.io.*;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -66,6 +71,7 @@ public class TrialMaterialMobilizationServiceImpl extends BaseServiceImpl<TrialM
     private final TrialSamplingRecordMapper trialSamplingRecordMapper;
     private final NewIOSSClient newIOSSClient;
     private final JdbcTemplate jdbcTemplate;
+    private final CommonFileClient commonFileClient;
 
     @Override
     public boolean mobilizationVerification(String number, String id, String contractId) {
@@ -410,21 +416,48 @@ public class TrialMaterialMobilizationServiceImpl extends BaseServiceImpl<TrialM
 
     @Override
     public boolean uploadFile(String id, Integer type, String url) {
+        String pdfUrl = "";
+        try {
+            NewBladeFile bladeFile =  null;
+            InputStream is = CommonUtil.getOSSInputStream(url);
+            String fileName = url.substring(url.lastIndexOf("/") + 1);
+            MultipartFile files = new MockMultipartFile("file", fileName, "text/plain", org.apache.poi.util.IOUtils.toByteArray(is));
+            // 根据url后缀检测文件类型
+            String extension = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
+            if (extension.equals("xlsx") || extension.equals("xls")) {
+                bladeFile = this.commonFileClient.excelToPdf(files);
+            } else if (extension.equals("jpg") || extension.equals("png") ||  extension.equals("jpeg")) {
+                bladeFile = this.commonFileClient.pngOrJpgToPdf(files);
+            } else if (extension.equals("docx") || extension.equals("doc")) {
+                bladeFile = this.commonFileClient.wordToPdf(files);
+            } else if (extension.equals("pdf")) {
+                pdfUrl = url;
+            }
+            if (bladeFile != null) {
+                pdfUrl = bladeFile.getPdfUrl();
+            }
+        } catch (IOException e) {
+            log.error("上传文件失败", e);
+        }
+
         if (type == 1) {
             this.update(Wrappers.<TrialMaterialMobilization>lambdaUpdate()
                     .set(TrialMaterialMobilization::getProductionCertificate, url)
+                    .set(TrialMaterialMobilization::getProductionCertificatePdfUrl, pdfUrl)
                     .eq(TrialMaterialMobilization::getId, id));
             return true;
         }
         if (type == 2) {
             this.update(Wrappers.<TrialMaterialMobilization>lambdaUpdate()
                     .set(TrialMaterialMobilization::getQualityInspectionReport, url)
+                    .set(TrialMaterialMobilization::getQualityInspectionReportPdfUrl, pdfUrl)
                     .eq(TrialMaterialMobilization::getId, id));
             return true;
         }
         if (type == 3) {
             this.update(Wrappers.<TrialMaterialMobilization>lambdaUpdate()
                     .set(TrialMaterialMobilization::getOtherAccessories, url)
+                    .set(TrialMaterialMobilization::getOtherAccessoriesPdfUrl, pdfUrl)
                     .eq(TrialMaterialMobilization::getId, id));
             return true;
         }