Browse Source

履职base64图片上传

gaoxiong 2 năm trước cách đây
mục cha
commit
72b9b731e3

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java

@@ -161,6 +161,8 @@ public class ResumptionServiceImpl implements ResumptionService {
                 data.setPlanId(sysResumption.getPlanId());
                 data.setSubmitBy(SecurityUtils.getLoginUser().getUserid());
                 data.setSubmitName(SecurityUtils.getUsername());
+                data.setRequired(point.getRequired());
+                data.setPointScan(point.getPointScan());
                 if (taskDetailVo.getSubType() == 2) {
                     if (point.getDataStatus() == 1) {
                         data.setDataStatus(2);
@@ -368,6 +370,7 @@ public class ResumptionServiceImpl implements ResumptionService {
             pointVo.setPointId(vo.getPointId());
             pointVo.setResRemark(vo.getResRemark());
             pointVo.setRequired(vo.getRequired());
+            pointVo.setPointScan(vo.getPointScan());
             if (vo.getResValue() == null) {
                 pointVo.setResValue(0);
             } else {

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionPointVo.java

@@ -52,6 +52,10 @@ public class ResumptionPointVo {
      */
     private Integer required;
     /**
+     * 是否扫描NFC 1扫描,0不扫描
+     */
+    private  Integer pointScan;
+    /**
      * 图片
      */
     private List<AppResumptionDataRemarkimg> imgs;

+ 18 - 0
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/controller/SysFileController.java

@@ -1,9 +1,12 @@
 package com.xunmei.file.controller;
 
+import cn.hutool.Hutool;
+import cn.hutool.core.codec.Base64;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.utils.file.FileUtils;
 import com.xunmei.file.service.ISysFileService;
 import com.xunmei.file.utils.DesUtil;
+import com.xunmei.file.vo.FileBase64Vo;
 import com.xunmei.system.api.domain.SysFile;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
@@ -86,6 +89,21 @@ public class SysFileController {
         }
     }
 
+    @PostMapping("/uploadBase64")
+    public R<SysFile> uploadFile(@RequestBody FileBase64Vo file) {
+        try {
+            String url = sysFileService.uploadFileBase64(file);
+            SysFile sysFile = new SysFile();
+            sysFile.setName(FileUtils.getName(url));
+            url = prefix + url;
+            sysFile.setUrl(url);
+            return R.ok(sysFile);
+        } catch (Exception e) {
+            log.error("上传文件失败", e);
+            return R.fail(e.getMessage());
+        }
+    }
+
 
     @PostMapping("/downloadFile")
     public void downloadFile(HttpServletResponse response, @RequestBody SysFile sysFile) {

+ 9 - 0
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/service/ISysFileService.java

@@ -1,5 +1,6 @@
 package com.xunmei.file.service;
 
+import com.xunmei.file.vo.FileBase64Vo;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -49,4 +50,12 @@ public interface ISysFileService
     void getFileStream(String path, HttpServletResponse response);
 
     String generateDrillPdf(Map<String, Object> data)throws Exception;
+
+    /**
+     * base64转换为指定类型文件,并返回后端路径
+     * @param file
+     * @return
+     * @throws Exception
+     */
+    String uploadFileBase64(FileBase64Vo file)throws Exception;
 }

+ 10 - 4
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/service/LocalSysFileServiceImpl.java

@@ -1,5 +1,7 @@
 package com.xunmei.file.service;
 
+import cn.hutool.Hutool;
+import cn.hutool.core.codec.Base64;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.lowagie.text.Document;
@@ -11,6 +13,7 @@ import com.xunmei.common.core.utils.uuid.UUID;
 import com.xunmei.file.utils.FileDownUtils;
 import com.xunmei.file.utils.FileUploadUtils;
 import com.xunmei.file.utils.PdfUtil;
+import com.xunmei.file.vo.FileBase64Vo;
 import com.xunmei.file.vo.ItextPdfTableVo;
 import com.xunmei.file.vo.PdfFilePathVo;
 import org.apache.commons.lang3.StringUtils;
@@ -26,10 +29,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
+import java.io.*;
 import java.net.URLDecoder;
 import java.nio.charset.StandardCharsets;
 import java.util.Date;
@@ -210,4 +210,10 @@ public class LocalSysFileServiceImpl implements ISysFileService {
         return this.prefix + pathVo.getRelativePath();
 
     }
+
+    @Override
+    public String uploadFileBase64(FileBase64Vo file) throws Exception {
+        String filePath = FileUploadUtils.uploadBase64(localFilePath, file);
+        return filePath;
+    }
 }

+ 29 - 1
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/utils/FileUploadUtils.java

@@ -1,5 +1,9 @@
 package com.xunmei.file.utils;
 
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.file.FileNameUtil;
+import cn.hutool.core.lang.UUID;
 import com.xunmei.common.core.exception.file.FileException;
 import com.xunmei.common.core.exception.file.FileNameLengthLimitExceededException;
 import com.xunmei.common.core.exception.file.FileSizeLimitExceededException;
@@ -10,6 +14,7 @@ import com.xunmei.common.core.utils.file.FileTypeUtils;
 import com.xunmei.common.core.utils.file.MimeTypeUtils;
 import com.xunmei.common.core.utils.uuid.Seq;
 import com.xunmei.file.controller.SysFileController;
+import com.xunmei.file.vo.FileBase64Vo;
 import org.apache.commons.io.FilenameUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -111,6 +116,20 @@ public class FileUploadUtils
         return getPathFileName(fileName);
     }
 
+    public static final String uploadBase64(String baseDir, FileBase64Vo file)
+            throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
+            InvalidExtensionException{
+
+        byte[] decode = Base64.decode(file.getContent());
+        String fileName = extractFilename(file.getExtension());
+        File absoluteFile = getAbsoluteFile(baseDir, fileName);
+        FileUtil.writeBytes(decode,absoluteFile);
+        return getPathFileName(fileName);
+    }
+
+
+
+
     /**
      * 编码文件名
      */
@@ -119,7 +138,16 @@ public class FileUploadUtils
         return StringUtils.format("{}/{}.{}", DateUtils.datePath(), Seq.getId(Seq.uploadSeqType), FileTypeUtils.getExtension(file));
     }
 
-    private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
+    /**
+     * 编码文件名
+     */
+    public static final String extractFilename(String fileLast)
+    {
+        return StringUtils.format("{}/{}.{}", DateUtils.datePath(), Seq.getId(Seq.uploadSeqType), fileLast);
+    }
+
+
+    public static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
     {
         File desc = new File(uploadDir + File.separator + fileName);
         log.info("当前上传文件地址:{}",desc.getAbsolutePath());

+ 27 - 0
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/vo/FileBase64Vo.java

@@ -0,0 +1,27 @@
+package com.xunmei.file.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author gaoxiong
+ * @Title: base64文件上传
+ * @Package vo
+ * @Description:
+ * @date 2023/10/2510:44
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class FileBase64Vo {
+    /**
+     * 文件格式
+     */
+    private String extension;
+
+    /**
+     * 文件base64内容
+     */
+    private String content;
+}