Pārlūkot izejas kodu

1.修改文件上传为异步处理

wangt 1 gadu atpakaļ
vecāks
revīzija
de303bd664

+ 41 - 1
wrdep-biz/src/main/java/com/jiayue/biz/controller/DataRecalculationController.java

@@ -4,13 +4,21 @@ import com.jiayue.biz.service.DataRecalculationService;
 import com.jiayue.common.core.domain.AjaxResult;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.http.entity.ContentType;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
+import java.io.*;
 import java.util.Date;
 
 /**
@@ -29,9 +37,41 @@ public class DataRecalculationController {
 
     @PostMapping("/uploadFileAnalysis")
     public AjaxResult uploadFileAnalysis(@RequestParam("file") MultipartFile file, @RequestParam("equipmentNo") String equipmentNo, @RequestParam("recorderNo") String recorderNo) {
-        return dataRecalculationService.uploadFileAnalysis(file, equipmentNo, recorderNo);
+        MultipartFile file1 = null;
+
+        try {
+            FileUtils.copyInputStreamToFile(file.getInputStream(), new File("../"+file.getOriginalFilename()));
+            file1 = getMultipartFile( new File("../"+file.getOriginalFilename()));
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        MultipartFile finalFile = file1;
+        Thread thread = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                    dataRecalculationService.uploadFileAnalysis(finalFile, equipmentNo, recorderNo);
+            }
+        });
+        thread.start();
+
+        return AjaxResult.success("提交后台处理文件成功");
     }
 
+    public static MultipartFile getMultipartFile(File file) {
+        FileItem item = new DiskFileItemFactory().createItem("file"
+                , MediaType.MULTIPART_FORM_DATA_VALUE
+                , true
+                , file.getName());
+        try (InputStream input = new FileInputStream(file);
+             OutputStream os = item.getOutputStream()) {
+            // 流转移
+            IOUtils.copy(input, os);
+        } catch (Exception e) {
+            throw new IllegalArgumentException("Invalid file: " + e, e);
+        }
+
+        return new CommonsMultipartFile(item);
+    }
     @PostMapping("/dataCheck")
     public AjaxResult dataCheck(@RequestParam("startTime") Long startTime, @RequestParam("endTime") Long endTime, @RequestParam("equipmentNo") String equipmentNo) {
         return dataRecalculationService.dataCheck(new Date(startTime), new Date(endTime), equipmentNo);

+ 1 - 1
wrdep-biz/src/main/java/com/jiayue/biz/service/DataRecalculationService.java

@@ -11,7 +11,7 @@ import java.util.List;
  * @Date 2022-06-23
  */
 public interface DataRecalculationService {
-    AjaxResult uploadFileAnalysis(MultipartFile file, String equipmentId, String recorderNo);
+    void uploadFileAnalysis(MultipartFile file, String equipmentId, String recorderNo);
 
     AjaxResult dataCheck(Date startTime, Date endTime, String equipmentNo);
 

+ 1 - 0
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/AnalysisDataImpl.java

@@ -1253,6 +1253,7 @@ public class AnalysisDataImpl {
      * dat文件解析
      */
     public void parseByDat(File file) {
+        log.info("处理文件 dat文件 :{}",file.getAbsolutePath());
         String dec = "D:\\in" + File.separator;
         String fileName = file.getName();
         File newFile = new File(file.getPath());

+ 10 - 11
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/DataRecalculationImpl.java

@@ -81,7 +81,7 @@ public class DataRecalculationImpl implements DataRecalculationService {
      * @return
      */
     @Override
-    public AjaxResult uploadFileAnalysis(MultipartFile file, String equipmentNo, String recorderNo) {
+    public void uploadFileAnalysis(MultipartFile file, String equipmentNo, String recorderNo) {
         try {
             //D:\\program\\uploadFile\\new
             String path = FileUtil.getFileUploadPath() + File.separator + "new";
@@ -121,13 +121,13 @@ public class DataRecalculationImpl implements DataRecalculationService {
                                 FileUtil.move(file2.getPath(), path);
                                 analysisData.parseByDat(file2);
                             } else {
-                                return AjaxResult.error("请检查数据文件是否正确");
+                                log.error("请检查数据文件是否正确");
                             }
                         }
                         //删除压缩包
                         FileUtils.deleteFile(file1.getPath());
                     }
-                    return AjaxResult.success("上传完成");
+                    log.info("上传完成");
                 }
             }
             //如果不是压缩文件
@@ -141,29 +141,28 @@ public class DataRecalculationImpl implements DataRecalculationService {
                     //如果文件名的后缀为.rld 则转换
                     //调用系统命令转换
                     this.systemCommand(equipmentNo, recorderNo);
-                    return AjaxResult.success("成功");
+                    log.info("成功");
                 } else {
-                    return AjaxResult.error("不是该测风塔的文件");
+                    log.error("不是该测风塔的文件");
                 }
             } else if (originalFilename.contains(".RWD")) {
                 path = "D:\\in\\";
                 file.transferTo(new File(path + File.separator + file.getOriginalFilename()));
                 this.systemCommandRWD();
-                return AjaxResult.success("成功");
+                log.info("成功");
             } else if (originalFilename.contains(".csv")) {
                 analysisData.acousticRadar(MultipartFileToFile(file), equipmentNo);
-                return AjaxResult.success("成功");
+                log.info("成功");
             } else if (originalFilename.contains(".dat")) {
                 path = "D:\\in\\";
                 file.transferTo(new File(path + File.separator + file.getOriginalFilename()));
                 analysisData.parseByDat(MultipartFileToFile(file));
-                return AjaxResult.success("成功");
+                log.info("成功");
             } else {
-                return AjaxResult.error("请检查数据文件是否正确");
+                log.error("请检查数据文件是否正确");
             }
         } catch (Exception ex) {
-            log.error("上传失败" + ex);
-            return AjaxResult.error(ex.getMessage());
+            log.error("上传失败{}" , ex);
         }
 
     }

+ 0 - 1
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/HomePageServiceImpl.java

@@ -26,7 +26,6 @@ import com.jiayue.common.utils.DateUtil;
 import com.jiayue.common.utils.spring.SpringUtils;
 import com.sun.corba.se.spi.ior.ObjectKey;
 import lombok.AllArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;

+ 2 - 1
wrdep-ui/src/views/dataManagement/dataRecalculation/index.vue

@@ -213,7 +213,7 @@
         formData.append("equipmentNo", this.row.equipmentNo)
         formData.append("recorderNo", this.row.recorderNo)
         uploadFileAnalysis(formData).then((response) => {
-          this.$refs.upload.clearFiles()
+
           this.fullscreenLoading = false
           if (response && response.code === 200) {
             this.getAllWindTowerInfo()
@@ -222,6 +222,7 @@
             this.$message.error(response.msg)
           }
         })
+
       },
       checkDataBefore(item) {
         this.dialogVisibleCheckData = true