Parcourir la source

LY 调度会议 附件乱码

ly il y a 1 an
Parent
commit
5846c1b9be

+ 11 - 7
master/src/main/java/com/ruoyi/common/sendEmail/IMailServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeUtility;
 import java.io.File;
 import java.io.UnsupportedEncodingException;
 import java.util.Base64;
@@ -211,18 +212,21 @@ public class IMailServiceImpl implements IMailService {
             String fileName = filePath.substring(filePath.lastIndexOf("/") + 1);
             logger.info("fileName::::::::::" + fileName);
             // 使用UTF-8编码将文件名转换为字节数组
-            byte[] fileNameBytes = fileName.getBytes("UTF-8");
+//            byte[] fileNameBytes = fileName.getBytes("UTF-8");
+//
+//            // 对字节数组进行Base64编码
+//            String base64FileName = Base64.getEncoder().encodeToString(fileNameBytes);
+//
+//            // 构造Base64编码后的附件名
+//            String encodedAttachmentName = "=?UTF-8?B?" + base64FileName + "?=";
 
-            // 对字节数组进行Base64编码
-            String base64FileName = Base64.getEncoder().encodeToString(fileNameBytes);
-
-            // 构造Base64编码后的附件名
-            String encodedAttachmentName = "=?UTF-8?B?" + base64FileName + "?=";
+            String encodedAttachmentName =  MimeUtility.encodeWord(fileName, "GB18030", "B");;
 
             System.out.println("原始附件名: " + fileName);
-            System.out.println("Base64编码后的附件名: " + encodedAttachmentName);
+            System.out.println("编码后的附件名: " + encodedAttachmentName);
 
             helper.addAttachment(encodedAttachmentName, file);
+
             mailSender.send(message);
             //日志信息
             logger.info("邮件已经发送。");

+ 77 - 77
master/src/main/java/com/ruoyi/common/utils/export/JxlsView.java

@@ -1,77 +1,77 @@
-package com.ruoyi.common.utils.export;
-
-import org.jxls.common.Context;
-import org.jxls.util.JxlsHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.servlet.view.AbstractView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map;
-
-/**
- * Created by xk on 2017/12/4 0004.
- */
-public class JxlsView extends AbstractView {
-    private static Logger log = LoggerFactory.getLogger(JxlsView.class);
-
-    private JxlsTemplate template;
-
-    private Object data;
-    private Object sheetdata;
-
-    public JxlsView() {
-        this.setContentType("application/vnd.ms-excel");
-    }
-
-    public JxlsView(JxlsTemplate template, Object data) {
-        this();
-        this.template = template;
-        this.data = data;
-    }
-
-    public JxlsView(JxlsTemplate template, Object data, Object sheetdata) {
-        this();
-        this.template = template;
-        this.data = data;
-        this.sheetdata = sheetdata;
-    }
-
-    protected boolean generatesDownloadContent() {
-        return true;
-    }
-
-    protected final void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
-        response.setContentType("application/vnd.ms-excel;charset=utf-8");
-//        response.setHeader("Content-Disposition", "attachment;filename="
-//                + EncodeTools.encodeFileNameByBrowser(template.getName(), request));
-        response.setHeader("Content-Disposition", "attachment;filename=" + new String(template.getName().getBytes("UTF-8"), "iso-8859-1"));
-
-        InputStream is = null;
-        try {
-            is = Thread.currentThread().getContextClassLoader().getResourceAsStream(template.getPath());
-//            is = JxlsView.class.getResourceAsStream(template.getPath());
-            Context context = new Context();
-            context.putVar("data", data);
-            context.putVar("sheetNames", sheetdata);
-            logger.info("data" + data);
-            logger.info("is" + is);
-            logger.info("getOutputStream" + response.getOutputStream());
-            JxlsHelper.getInstance().processTemplate(is, response.getOutputStream(), context);
-        } catch (Exception e) {
-            log.error("导出失败", e);
-        } finally {
-            if (is != null) {
-                try {
-                    is.close();
-                } catch (IOException e) {
-                    log.error("is关闭失败", e);
-                }
-            }
-        }
-
-    }
-}
+//package com.ruoyi.common.utils.export;
+//
+//import org.jxls.common.Context;
+//import org.jxls.util.JxlsHelper;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.web.servlet.view.AbstractView;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.IOException;
+//import java.io.InputStream;
+//import java.util.Map;
+//
+///**
+// * Created by xk on 2017/12/4 0004.
+// */
+//public class JxlsView extends AbstractView {
+//    private static Logger log = LoggerFactory.getLogger(JxlsView.class);
+//
+//    private JxlsTemplate template;
+//
+//    private Object data;
+//    private Object sheetdata;
+//
+//    public JxlsView() {
+//        this.setContentType("application/vnd.ms-excel");
+//    }
+//
+//    public JxlsView(JxlsTemplate template, Object data) {
+//        this();
+//        this.template = template;
+//        this.data = data;
+//    }
+//
+//    public JxlsView(JxlsTemplate template, Object data, Object sheetdata) {
+//        this();
+//        this.template = template;
+//        this.data = data;
+//        this.sheetdata = sheetdata;
+//    }
+//
+//    protected boolean generatesDownloadContent() {
+//        return true;
+//    }
+//
+//    protected final void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
+//        response.setContentType("application/vnd.ms-excel;charset=utf-8");
+////        response.setHeader("Content-Disposition", "attachment;filename="
+////                + EncodeTools.encodeFileNameByBrowser(template.getName(), request));
+//        response.setHeader("Content-Disposition", "attachment;filename=" + new String(template.getName().getBytes("UTF-8"), "iso-8859-1"));
+//
+//        InputStream is = null;
+//        try {
+//            is = Thread.currentThread().getContextClassLoader().getResourceAsStream(template.getPath());
+////            is = JxlsView.class.getResourceAsStream(template.getPath());
+//            Context context = new Context();
+//            context.putVar("data", data);
+//            context.putVar("sheetNames", sheetdata);
+//            logger.info("data" + data);
+//            logger.info("is" + is);
+//            logger.info("getOutputStream" + response.getOutputStream());
+//            JxlsHelper.getInstance().processTemplate(is, response.getOutputStream(), context);
+//        } catch (Exception e) {
+//            log.error("导出失败", e);
+//        } finally {
+//            if (is != null) {
+//                try {
+//                    is.close();
+//                } catch (IOException e) {
+//                    log.error("is关闭失败", e);
+//                }
+//            }
+//        }
+//
+//    }
+//}

+ 13 - 14
master/src/main/java/com/ruoyi/project/document/controller/TPlantproglistController.java

@@ -9,7 +9,6 @@ import com.alibaba.fastjson.JSON;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.ServletUtils;
 import com.ruoyi.common.utils.export.JxlsTemplateEnum;
-import com.ruoyi.common.utils.export.JxlsView;
 import com.ruoyi.common.utils.file.ExcelUtils;
 import com.ruoyi.common.utils.file.FileUploadUtils;
 import com.ruoyi.framework.config.RuoYiConfig;
@@ -374,17 +373,17 @@ public class TPlantproglistController extends BaseController
      * @param response
      * @throws IOException
      */
-    @RequestMapping("/download/exportDevList")
-    public ModelAndView exportList(@RequestParam Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) throws ParseException {
-        logger.info(JSON.toJSONString(params));
-        String id = (String) params.get("ids");
-        int devType = Integer.parseInt((String) params.get("devType"));
-        String[] ids = id.split(",");
-        logger.info("ids" + ids);
-        int downloadType = Integer.parseInt((String) params.get("downloadType"));
-        logger.info("downloadType" + downloadType);
-        List<Object> list = new ArrayList<>();
-
-        return new ModelAndView(new JxlsView(JxlsTemplateEnum.DEV_CC_UPDATE, list));
-    }
+//    @RequestMapping("/download/exportDevList")
+//    public ModelAndView exportList(@RequestParam Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) throws ParseException {
+//        logger.info(JSON.toJSONString(params));
+//        String id = (String) params.get("ids");
+//        int devType = Integer.parseInt((String) params.get("devType"));
+//        String[] ids = id.split(",");
+//        logger.info("ids" + ids);
+//        int downloadType = Integer.parseInt((String) params.get("downloadType"));
+//        logger.info("downloadType" + downloadType);
+//        List<Object> list = new ArrayList<>();
+//
+//        return new ModelAndView(new JxlsView(JxlsTemplateEnum.DEV_CC_UPDATE, list));
+//    }
 }

+ 1 - 0
master/src/main/java/com/ruoyi/project/plant/controller/TMtdDailyController.java

@@ -303,6 +303,7 @@ public class TMtdDailyController extends BaseController
         emailCc = emailCcList.toArray(new String[emailCcList.size()]);
         logger.info("发送人:" + email.toString());
         logger.info("抄送人:" + emailCc.toString());
+        logger.info("文件地址:" + filePath);
         try {
             mailService.sendAttachmentsMail(email, "CPMS:您有一条"+ formattedDate+"装置调度会议信息", html, emailCc,filePath);
         }catch (Exception e) {

+ 1 - 1
master/src/main/java/com/ruoyi/project/sems/controller/TSpecdevYlgdController.java

@@ -375,7 +375,7 @@ public class TSpecdevYlgdController extends BaseController {
         for (TSpecdevYlgd t : list
         ) {
             executorService.execute(() -> {
-                //续票列表 -- 业务模块
+                // -- 业务模块
                 failNum.getAndIncrement();
                 try {
                     t.setApproveStatus(22l);