xiongzhu 5 yıl önce
ebeveyn
işleme
c54e0bdcd4

+ 8 - 8
src/main/java/com/izouma/wenlvju/service/RateService.java

@@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.nio.file.Paths;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -70,7 +71,7 @@ public class RateService {
         rateRepo.save(rate);
     }
 
-    public void export(HttpServletResponse response, Rate rate) {
+    public String export(Rate rate) {
         Map<String, Object> dataMap = new HashMap<>();
         try {
             //单位
@@ -109,18 +110,17 @@ public class RateService {
 
             configuration.setDefaultEncoding("utf-8");
 
-            configuration.setDirectoryForTemplateLoading(new File(Paths.get(System.getProperty("user.dir"), "src", "main", "resources", "templates")
+            configuration.setDirectoryForTemplateLoading(new File(Paths
+                    .get(System.getProperty("user.dir"), "src", "main", "resources", "templates")
                     .toString()));//指定ftl所在目录,根据自己的改
-            response.setContentType("application/msword");
             String fileName = DateTimeFormatter.ofPattern("yyyyMMdd").format(LocalDate.now());
-            response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".doc");
-            response.setCharacterEncoding("utf-8");
-            PrintWriter out = response.getWriter();
+            StringWriter writer = new StringWriter();
             Template template = configuration.getTemplate("RateTemplate.ftl", "utf-8");//以utf-8的编码读取ftl文件
-            template.process(dataMap, out);
-            out.close();
+            template.process(dataMap, writer);
+            return writer.toString();
         } catch (Exception e) {
             e.printStackTrace();
+            throw new BusinessException(e.getMessage());
         }
     }
 }

+ 5 - 5
src/main/java/com/izouma/wenlvju/web/RateController.java

@@ -52,7 +52,8 @@ public class RateController extends BaseController {
             return rateRepo.save(orig);
         }
         String year = String.valueOf(LocalDate.now().getYear());
-        List<Rate> rate = rateRepo.findAllByOrganizationIdAndYearAndStatusNot(record.getOrganizationId(), year, RateStatus.CANCEL);
+        List<Rate> rate = rateRepo
+                .findAllByOrganizationIdAndYearAndStatusNot(record.getOrganizationId(), year, RateStatus.CANCEL);
         if (CollUtil.isNotEmpty(rate)) {
             throw new BusinessException("已申请");
         }
@@ -131,11 +132,10 @@ public class RateController extends BaseController {
         rateService.addExpert(id, userId);
     }
 
-    @GetMapping("/export/{id}")
-    @ResponseBody
-    public void export(HttpServletResponse response, @PathVariable Long id) {
+    @GetMapping(value = "/export/{id}", produces = "application/msword;charset=utf-8")
+    public String export(@PathVariable Long id) {
         Rate rate = rateRepo.findById(id).orElseThrow(new BusinessException("无申请"));
-        rateService.export(response, rate);
+        return rateService.export(rate);
 //        return "ok";
     }
 

+ 1 - 1
src/main/vue/src/views/organization/RateOrganizerList.vue

@@ -153,7 +153,7 @@ export default {
                     const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
                     const link = document.createElement('a');
                     link.href = downloadUrl;
-                    link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
+                    link.setAttribute('download', '申请材料.doc');
                     document.body.appendChild(link);
                     link.click();
                     link.remove();