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

维保管理/日常保养 保养单导出bug

yang 4 éve
szülő
commit
e658f02120

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

@@ -23,7 +23,6 @@ import cn.com.xwy.boot.web.dto.RestResponse;
 import cn.hutool.core.collection.IterUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.common.base.Splitter;
 import lombok.AllArgsConstructor;
@@ -34,6 +33,7 @@ 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,7 +445,18 @@ public class MaintenanceRecordController {
 
     @PostMapping("export")
     @Validation(fields = {"recordIds"})
-    public RestResponse<?> export(@Val @RequestBody MtRecordRequest mtRecordRequest) {
-        return RestResponse.success(maintenanceRecordService.export(mtRecordRequest));
+    public void export(@Val @RequestBody MtRecordRequest mtRecordRequest,
+                       HttpServletResponse response) {
+
+        if (mtRecordRequest.getRecordIds().split(",").length > 10) {
+            throw Validate.validateException("批量导出保养单最大个数为10!");
+        }
+        try {
+            maintenanceRecordService.export(mtRecordRequest, response);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw Validate.validateException("生成保养文件失败");
+        }
+
     }
 }

+ 22 - 11
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/service/MaintenanceRecordService.java

@@ -22,7 +22,6 @@ 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;
@@ -61,6 +60,8 @@ 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;
@@ -79,6 +80,7 @@ import java.util.stream.Collectors;
 @Service
 @Slf4j
 @AllArgsConstructor
+@SuppressWarnings("all")
 public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMapper, MaintenanceRecord> {
 
 
@@ -508,7 +510,7 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
         MaintenancePlan plan = maintenancePlanService.getOne(oldRecord.getMtPlanId());
         if (ObjectUtil.isEmpty(plan)) {
             rollback();
-            log.info("维保计划ID为:{}",oldRecord.getMtPlanId());
+            log.info("维保计划ID为:{}", oldRecord.getMtPlanId());
             return RestResponse.fail("未找到对应的维保计划!");
         }
         plan.setStatus(Integer.parseInt(CommonEnum.MaintenancePlanStatus.COMPLETE.getCode()));
@@ -951,7 +953,7 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
         return baseMapper.pageByLift(request.getPage(), request);
     }
 
-    public String export(MtRecordRequest mtRecordRequest) {
+    public void export(MtRecordRequest mtRecordRequest, HttpServletResponse response) throws Exception {
         Map<String, String> headerAlias = new LinkedHashMap<>();
         headerAlias.put("projectName", "项目名称");
         headerAlias.put("useCompanyCode", "梯号");
@@ -1035,19 +1037,27 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
                     }
                 }
                 //生成保养单
-                String maintenanceExcelDir = imgDir + "保养单.xlsx";
+                String maintenanceExcelDir = imgDir + "保养单.xls";
                 log.info("生成保养单: {}", maintenanceExcelDir);
                 excelWriter(mtRecordResponse, maintenanceExcelDir);
             }
             //压缩文件夹
             log.info("生成zipFile路径: {}", zip);
             ZipUtil.zip(dir, zip);
-            //上传文件到阿里云,并返回路径给前端
-            String url = AliyunOSS.me().putObject("maintenance/export/zip/" + generateCode + ".zip", readInputStream(new FileInputStream(new File(zip))));
-            return url.replace("-internal", "");
-        } catch (Exception e) {
-            log.error("生成保养文件失败", e);
-            throw Validate.validateException("生成保养文件失败");
+
+
+            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();
+
         } finally {
             FileUtil.del(zipFile);
             FileUtil.del(baseDir);
@@ -1201,7 +1211,8 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
         writer.merge(12 + i, 18 + i, 3, 3, "客户签名", false);
         writer.merge(12 + i, 18 + i, 4, 5, "", false);
         signImg(mtRecordResponse, wb, writer, 12 + i);
-        writer.flush(new FileOutputStream(new File(maintenanceExcelDir)), true).close();
+        writer.flush(new FileOutputStream(new File(maintenanceExcelDir)), true);
+        writer.close();
     }
 
     private void signImg(MtRecordResponse mtRecordResponse, HSSFWorkbook wb, ExcelWriter writer, int row) {