Commit 4b0b99365e3959113db7405ca5d063e94107f6ef

Authored by 徐烜
1 parent 2dcf6ac7

浦东公交调度系统-人员停用提示(功能)修正

1、修改home.html,限制显示8条信息,添加下载所有信息文件按钮功能
2、添加MyStringUtils.java,判定字符串是否中文
3、修正vehicleDataSyncController.java,修改下载文件中文名字的问题
src/main/java/com/bsth/controller/schedule/core/legacy/EmployeeConfigInfoController.java
... ... @@ -14,7 +14,11 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
14 14 import org.springframework.web.bind.annotation.*;
15 15  
16 16 import javax.servlet.http.HttpServletRequest;
  17 +import javax.servlet.http.HttpServletResponse;
17 18 import javax.servlet.http.HttpSession;
  19 +import java.io.OutputStream;
  20 +import java.io.PrintWriter;
  21 +import java.net.URLEncoder;
18 22 import java.util.HashMap;
19 23 import java.util.List;
20 24 import java.util.Map;
... ... @@ -71,7 +75,29 @@ public class EmployeeConfigInfoController extends BController<EmployeeConfigInfo
71 75 }
72 76  
73 77 return rtn;
  78 + }
  79 + @GetMapping(value = "/validate_get_destroy_info/download")
  80 + public void exportValidateGetDestroyInfo(
  81 + HttpServletRequest request,
  82 + HttpServletResponse response) throws Exception {
  83 + // 流输出导出文件
  84 + response.setHeader("content-type", "application/octet-stream");
  85 + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("人员配置停用信息.txt", "UTF-8"));
  86 + response.setContentType("application/octet-stream");
  87 +
  88 + try (
  89 + OutputStream os = response.getOutputStream();
  90 + PrintWriter printWriter = new PrintWriter(os);
  91 + ) {
  92 + HttpSession session = request.getSession();
  93 + List<CompanyAuthority> cmyAuths = (List<CompanyAuthority>) session.getAttribute(Constants.COMPANY_AUTHORITYS);
  94 + List<String> infos = this.employeeConfigInfoService.validate_get_destroy_info(cmyAuths);
  95 + for (String info : infos) {
  96 + printWriter.println(info);
  97 + }
  98 + printWriter.flush();
74 99  
  100 + }
75 101 }
76 102  
77 103 @RequestMapping(value = "/validate_jsy_destroy", method = RequestMethod.GET)
... ...
src/main/java/com/bsth/controller/schedule/datasync/VehicleDataSyncController.java
... ... @@ -6,11 +6,13 @@ import com.bsth.controller.schedule.datasync.request.VehicleDataSyncTaskRequest;
6 6 import com.bsth.entity.schedule.datasync.VehicleDataSyncTask;
7 7 import com.bsth.entity.schedule.datasync.VehicleDataSyncTaskTypeEnum;
8 8 import com.bsth.service.schedule.datasync.VehicleDataSyncTaskService;
  9 +import com.bsth.service.schedule.utils.MyStringUtils;
9 10 import org.springframework.beans.factory.annotation.Autowired;
10 11 import org.springframework.web.bind.annotation.*;
11 12  
12 13 import javax.servlet.http.HttpServletResponse;
13 14 import java.io.*;
  15 +import java.net.URLEncoder;
14 16 import java.util.Date;
15 17  
16 18 @RestController
... ... @@ -116,7 +118,12 @@ public class VehicleDataSyncController extends BController&lt;VehicleDataSyncTask,
116 118 private void responseStreamFile(HttpServletResponse response, File file) throws IOException {
117 119 // 流输出导出文件
118 120 response.setHeader("content-type", "application/octet-stream");
119   - response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
  121 + String fileName = file.getName();
  122 + if (MyStringUtils.isContainChinese(fileName)) {
  123 + response.setHeader("Content-Disposition", "attachment; filename*=" + URLEncoder.encode(fileName, "UTF-8"));
  124 + } else {
  125 + response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
  126 + }
120 127 response.setContentType("application/octet-stream");
121 128  
122 129 try (
... ...
src/main/java/com/bsth/service/schedule/utils/MyStringUtils.java 0 → 100644
  1 +package com.bsth.service.schedule.utils;
  2 +
  3 +import org.springframework.util.Assert;
  4 +
  5 +import java.util.regex.Matcher;
  6 +import java.util.regex.Pattern;
  7 +
  8 +/**
  9 + * 字符串工具类。
  10 + */
  11 +public class MyStringUtils {
  12 + /**
  13 + * 字符串是否包含中文
  14 + *
  15 + * @param str 待校验字符串
  16 + * @return true 包含中文字符 false 不包含中文字符
  17 + */
  18 + public static boolean isContainChinese(String str) {
  19 + Assert.hasText(str, "字符串为空!");
  20 +
  21 + Pattern p = Pattern.compile("[\u4E00-\u9FA5|\\!|\\,|\\。|\\(|\\)|\\《|\\》|\\“|\\”|\\?|\\:|\\;|\\【|\\】]");
  22 + Matcher m = p.matcher(str);
  23 + if (m.find()) {
  24 + return true;
  25 + }
  26 + return false;
  27 + }
  28 +}
... ...
src/main/resources/static/pages/home.html
... ... @@ -83,15 +83,25 @@
83 83 success: function(rs) {
84 84 if (rs && rs.status === "SUCCESS") {
85 85 if (rs.data && rs.data.length && rs.data.length > 0) {
  86 + var text = "";
  87 + if (rs.data.length > 8) {
  88 + text = "部分停用信息如下:</br>" + rs.data.slice(0, 8).join("</br>");
  89 + } else {
  90 + text = "所有停用信息如下:</br>" + rs.data.join("</br>");
  91 + }
86 92 swal({
87 93 title: "人员配置停用信息",
88   - text: rs.data.join("</br>"),
  94 + text: text,
89 95 html: true,
90 96 type: "warning",
91 97 showCancelButton: true,
92   - confirmButtonColor: "RED",
93   - confirmButtonText: "是",
94   - cancelButtonText: "取消"
  98 + cancelButtonText: "关闭",
  99 + confirmButtonColor: "#3598dc",
  100 + confirmButtonText: "下载所有停用信息",
  101 + closeOnConfirm: false
  102 +
  103 + }, function() {
  104 + window.location.href = "/eci/validate_get_destroy_info/download";
95 105 });
96 106 }
97 107 }
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/vehicleDataSyncManage/service.js
... ... @@ -49,11 +49,11 @@ angular.module(&#39;ScheduleApp&#39;).factory(
49 49 }
50 50  
51 51 // console.log(headers("Content-Disposition"));
52   - // 获取文件名
  52 + // 获取文件名,后台根据是否还有中文名字,返回filename=ascii编码的文件名 或 filename*=unicode编码的文件名
53 53 var fileName = headers("Content-Disposition").split(";")[1].split("filename=")[1];
54 54 var fileNameUnicode = headers("Content-Disposition").split("filename*=")[1];
55 55 if (fileNameUnicode) {//当存在 filename* 时,取filename* 并进行解码(为了解决中文乱码问题)
56   - fileName = decodeURIComponent(fileNameUnicode.split("''")[1]);
  56 + fileName = decodeURIComponent(fileNameUnicode);
57 57 }
58 58  
59 59 return {fileData : data, fileName: fileName};
... ...
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
... ... @@ -235,11 +235,11 @@ angular.module(&#39;ScheduleApp&#39;).factory(
235 235 }
236 236  
237 237 // console.log(headers("Content-Disposition"));
238   - // 获取文件名
  238 + // 获取文件名,后台根据是否还有中文名字,返回filename=ascii编码的文件名 或 filename*=unicode编码的文件名
239 239 var fileName = headers("Content-Disposition").split(";")[1].split("filename=")[1];
240 240 var fileNameUnicode = headers("Content-Disposition").split("filename*=")[1];
241 241 if (fileNameUnicode) {//当存在 filename* 时,取filename* 并进行解码(为了解决中文乱码问题)
242   - fileName = decodeURIComponent(fileNameUnicode.split("''")[1]);
  242 + fileName = decodeURIComponent(fileNameUnicode);
243 243 }
244 244  
245 245 return {fileData : data, fileName: fileName};
... ...