Selaa lähdekoodia

保养单导出异常

yang 4 vuotta sitten
vanhempi
commit
781c10252b

+ 6 - 9
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/controller/MaintenanceRecordController.java

@@ -33,7 +33,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -445,18 +444,16 @@ public class MaintenanceRecordController {
 
     @PostMapping("export")
     @Validation(fields = {"recordIds"})
-    public void export(@Val @RequestBody MtRecordRequest mtRecordRequest,
-                       HttpServletResponse response) {
+    public RestResponse<?> export(@Val @RequestBody MtRecordRequest mtRecordRequest) {
 
-        if (mtRecordRequest.getRecordIds().split(",").length > 10) {
-            throw Validate.validateException("批量导出保养单最大个数为10!");
-        }
         try {
-            maintenanceRecordService.export(mtRecordRequest, response);
+            if (mtRecordRequest.getRecordIds().split(",").length > 10) {
+                return RestResponse.fail("一次最多导出10份保养单!");
+            }
+            return RestResponse.success(maintenanceRecordService.export(mtRecordRequest));
         } catch (Exception e) {
             e.printStackTrace();
-            throw Validate.validateException("生成保养文件失败");
+            return RestResponse.fail("生成保养文件失败!");
         }
-
     }
 }

+ 5 - 16
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/service/MaintenanceRecordService.java

@@ -22,6 +22,7 @@ import cn.com.ty.lift.business.project.dao.entity.Project;
 import cn.com.ty.lift.business.project.dao.entity.ProjectLiftRelevance;
 import cn.com.ty.lift.business.project.service.ProjectLiftRelevanceService;
 import cn.com.ty.lift.business.project.service.ProjectService;
+import cn.com.ty.lift.common.aliservice.aliyunoss.AliyunOSS;
 import cn.com.ty.lift.common.constants.CommonEnum;
 import cn.com.ty.lift.common.utils.DateUtils;
 import cn.com.ty.lift.common.utils.MapHelper;
@@ -60,8 +61,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.bind.annotation.RequestBody;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.math.BigDecimal;
 import java.net.HttpURLConnection;
@@ -953,7 +952,7 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
         return baseMapper.pageByLift(request.getPage(), request);
     }
 
-    public void export(MtRecordRequest mtRecordRequest, HttpServletResponse response) throws Exception {
+    public String export(MtRecordRequest mtRecordRequest) throws Exception {
         Map<String, String> headerAlias = new LinkedHashMap<>();
         headerAlias.put("projectName", "项目名称");
         headerAlias.put("useCompanyCode", "梯号");
@@ -1045,19 +1044,9 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
             log.info("生成zipFile路径: {}", zip);
             ZipUtil.zip(dir, zip);
 
-
-            response.setContentType("application/zip");
-            ServletOutputStream out = response.getOutputStream();
-            FileInputStream in = new FileInputStream(new File(zip));
-            byte[] buffer = new byte[1024];
-            int len;
-            while ((len = in.read(buffer)) != -1) {
-                out.write(buffer, 0, len);
-            }
-            out.flush();
-            in.close();
-            out.close();
-
+            //上传文件到阿里云,并返回路径给前端
+            String url = AliyunOSS.me().putObject("maintenance/export/zip/" + generateCode + ".zip", readInputStream(new FileInputStream(new File(zip))));
+            return url.replace("-internal", "");
         } finally {
             FileUtil.del(zipFile);
             FileUtil.del(baseDir);