Sfoglia il codice sorgente

消息提醒附件关联业务字段传入消息id,消息表备注传入附件名称+id 拼接字段

huangpeng 1 anno fa
parent
commit
31ccd052cf

+ 1 - 1
bs-common/src/main/java/com/rongwei/safecommon/utils/SaveConstans.java

@@ -408,7 +408,7 @@ public class SaveConstans {
         /**
          * 设备部位重复故障问题 生成excel名称
          */
-        public static final String DEVICE_REPEATEDLY_FAILS_FILE_NAME = "设备部位重复故障问题.xls";
+        public static final String DEVICE_REPEATEDLY_FAILS_FILE_NAME = "设备部位重复故障问题";
 
         /**
          * 大修任务超期未完成 生成excel名称

+ 2 - 2
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquMaintenanceOrderService.java

@@ -3,7 +3,6 @@ package com.rongwei.bscommon.sys.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.EquMaintenanceOrderDo;
 import com.rongwei.bsentity.dto.EquMaintenanceOrderSumDTO;
-import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
 
 import java.util.List;
 
@@ -34,7 +33,8 @@ public interface EquMaintenanceOrderService extends IService<EquMaintenanceOrder
      * 维修单excel 生成
      *
      * @param list
+     * @param noticeId
      * @return
      */
-    SysFileItemDo generateDeviceRepeatedlyFailsExcel(List<EquMaintenanceOrderSumDTO> list);
+    String generateDeviceRepeatedlyFailsExcel(List<EquMaintenanceOrderSumDTO> list, String noticeId);
 }

+ 8 - 6
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquMaintenanceOrderServiceImpl.java

@@ -13,7 +13,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import java.io.InputStream;
@@ -22,9 +21,11 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import static com.rongwei.safecommon.utils.SaveConstans.DatePattern.DATE_PATTERN_YMD;
+import static com.rongwei.safecommon.utils.SaveConstans.FileName.DEVICE_REPEATEDLY_FAILS_FILE_NAME;
+import static com.rongwei.safecommon.utils.SaveConstans.FileSuffix.XLSX;
 import static com.rongwei.safecommon.utils.SaveConstans.TemplatePath.DEVICE_REPEATEDLY_FAILS_TEMPLATE_NAME;
 
 @Service
@@ -89,13 +90,14 @@ public class EquMaintenanceOrderServiceImpl extends ServiceImpl<EquMaintenanceOr
      * 生成 备部位重复故障问题 excel 记录
      *
      * @param
+     * @param noticeId
      * @return
      */
     @Override
-    public SysFileItemDo generateDeviceRepeatedlyFailsExcel(List<EquMaintenanceOrderSumDTO> list) {
+    public String generateDeviceRepeatedlyFailsExcel(List<EquMaintenanceOrderSumDTO> list, String noticeId) {
 
         SysFileItemDo fileItemDo=null;
-
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_PATTERN_YMD);
         try {
             //1.获取模板
             ClassPathResource classPathResource = new ClassPathResource(DEVICE_REPEATEDLY_FAILS_TEMPLATE_NAME);
@@ -132,13 +134,13 @@ public class EquMaintenanceOrderServiceImpl extends ServiceImpl<EquMaintenanceOr
             fillPlantData(listMap.get(PlantEnum.CXLB.getId()), sheet3);
             //3数据填充生成文件
           //  String id = ExcelUtils.feginCommonUpload(workbook, DEVICE_REPEATEDLY_FAILS_FILE_NAME);
-             fileItemDo = ExcelUtils.feginCommonUpload(workbook);
+            return ExcelUtils.feginCommonUpload(workbook,noticeId,DEVICE_REPEATEDLY_FAILS_FILE_NAME + simpleDateFormat.format(new Date()) + XLSX );
 
         } catch (Exception e) {
             log.error("生成设备部位重复故障excel 失败:{}",e.getMessage());
 
         }
-        return fileItemDo;
+        return "";
     }
 
     /**

+ 22 - 20
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquipmentSendNotifyServiceImpl.java

@@ -326,29 +326,23 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
             log.info("记录为空,则不生成附件,也不生成提醒信息");
             return R.ok();
         }
-        //2.生成excel 文件,返回文件信息
-        SysFileItemDo fileItem = equMaintenanceOrderService.generateDeviceRepeatedlyFailsExcel(list);
+        //消息提醒id
+        String noticeId = SecurityUtil.getUUID();
+        //生成附件返回对象
+        String fileNameAndId = equMaintenanceOrderService.generateDeviceRepeatedlyFailsExcel(list, noticeId);
 
         //3.消息提醒
-           // 3.1发送人  取车间维修主管、设备部部长、设备部维修主管 角色中所有人员
+        // 3.1发送人  取车间维修主管、设备部部长、设备部维修主管 角色中所有人员
         List<String> userId = equMaintenanceOrderService.selectRoleList();
         if (userId.isEmpty()) {
             log.info("车间维修主管、设备部部长、设备部维修主管角色无提醒人");
             return R.ok();
         }
-        //3.2发送消息
-        String id = SecurityUtil.getUUID();
-        //附件关联业务字段存入消息主键
-        fileItem.setRelationid(id);
-        fileItem.setFilename(DEVICE_REPEATEDLY_FAILS_FILE_NAME);
-
-        //消息提醒的remark 存放附件的名称+id
-        String remark = fileItem.getFilename()+"-;-"+fileItem.getId();
-        CXCommonUtils.sendNotify(id,DEVICE_REPEATEDLY_FAILS_TITLE, DEVICE_REPEATEDLY_FAILS_CONTEXT, remark, userId.stream().distinct().collect(Collectors.toList()),
+
+        CXCommonUtils.sendNotify(noticeId, DEVICE_REPEATEDLY_FAILS_TITLE, DEVICE_REPEATEDLY_FAILS_CONTEXT, fileNameAndId, userId.stream().distinct().collect(Collectors.toList()),
                 null, DEVICE_REPEATEDLY_FAILS_NOTICETYPE, true);
 
-        //4.修改附件
-        sysFileItemService.updateById(fileItem);
+
         return R.ok();
     }
 
@@ -419,16 +413,20 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
             byte[] byteArray = byteArrayOutputStream.toByteArray();
 
             MultipartFile multipartFile = new MockMultipartFile("file", newDate+"-保养/润滑跨月未完成.xlsx"  , "application/vnd.ms-excel", byteArray);
-            R upload = CXCommonUtils.upload(multipartFile);
+
+            //消息提醒id
+            String noticeId = SecurityUtil.getUUID();
+
+            R upload = CXCommonUtils.upload(multipartFile,noticeId);
             String fileItemId = "";
             if ("200".equals(upload.getCode())){
                 JSONObject jsonObject = JSONUtil.parseObj(upload.getData());
                 // Map<String,String> map = (Map<String, String>) JSON.parse(upload.getData().toString());
-                fileItemId =jsonObject.get("id").toString();
+                fileItemId =jsonObject.get("filename").toString() + "-;-" + jsonObject.get("id").toString();;
             }
 
 
-            CXCommonUtils.sendNotify(PREVIOUS_UNFINISHED_TASK_TITLE, context,plantId , userIdList.stream().distinct().collect(Collectors.toList()),
+            CXCommonUtils.sendNotify(noticeId,PREVIOUS_UNFINISHED_TASK_TITLE, context,plantId , userIdList.stream().distinct().collect(Collectors.toList()),
                     fileItemId, PREVIOUS_UNFINISHED_TASK, true);
         }
 
@@ -494,13 +492,17 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
             byte[] byteArray = byteArrayOutputStream.toByteArray();
 
             MultipartFile multipartFile = new MockMultipartFile("file", newDate+"-保养/润滑月末未完成.xlsx"  , "application/vnd.ms-excel", byteArray);
-            R upload = CXCommonUtils.upload(multipartFile);
+
+            //消息提醒id
+            String noticeId = SecurityUtil.getUUID();
+
+            R upload = CXCommonUtils.upload(multipartFile,noticeId);
             String fileItemId = "";
             if ("200".equals(upload.getCode())){
                 JSONObject jsonObject = JSONUtil.parseObj(upload.getData());
-                fileItemId =jsonObject.get("id").toString();
+                fileItemId =jsonObject.get("filename").toString() + "-;-" + jsonObject.get("id").toString();;
             }
-            CXCommonUtils.sendNotify(END_UNFINISHED_TASK_TITLE, context, plantId, userIdList.stream().distinct().collect(Collectors.toList()),
+            CXCommonUtils.sendNotify(noticeId,END_UNFINISHED_TASK_TITLE, context, plantId, userIdList.stream().distinct().collect(Collectors.toList()),
                     fileItemId, END_UNFINISHED_TASK, true);
         }
 

+ 25 - 21
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/utils/ExcelUtils.java

@@ -1,10 +1,11 @@
 package com.rongwei.bscommon.sys.utils;
 
+import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.rongwei.rwcommon.base.R;
-import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
 import com.rongwei.safecommon.utils.CXCommonUtils;
+import com.rongwei.safecommon.utils.SaveConstans;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellType;
@@ -14,6 +15,7 @@ import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.*;
+import java.nio.file.Files;
 import java.util.Map;
 
 /**
@@ -42,38 +44,40 @@ public class ExcelUtils {
 
 
     /**
-     * 调用接口生成文件
+     * 生成附件返回附件信息
+     *
      * @param workbook
-
+     * @param noticeId
+     * @param originalFilename
      * @return
      */
-    public static  SysFileItemDo feginCommonUpload(HSSFWorkbook workbook){
+    public static String feginCommonUpload(HSSFWorkbook workbook, String noticeId, String originalFilename){
 
-        SysFileItemDo fileItemDo =null;
+        String returnStr =null;
         try {
-            // 创建临时文件
-            File tempFile = File.createTempFile("tempFile",".xls");
-
+            // 1. 将workbook保存为临时文件
+            File tempFile = File.createTempFile("workbook", ".xlsx");
+            try (FileOutputStream fos = new FileOutputStream(tempFile)) {
+                workbook.write(fos);
+            }
+            // 2. 读取临时文件的内容并将其转换为byte[] byteArray
+            byte[] byteArray = Files.readAllBytes(tempFile.toPath());
             tempFile.deleteOnExit();
-            //数据写入临时文件中
-            FileOutputStream outputStream = new FileOutputStream(tempFile);
-            workbook.write(outputStream);
-            outputStream.close();
-            // 获取临时文件的InputStream
-            InputStream inputStream = new FileInputStream(tempFile);
-            // 使用临时文件创建一个 MultipartFile 实例
-            MultipartFile multipartFile = new MockMultipartFile("file", tempFile.getName() , "application/vnd.ms-excel", inputStream);
+
+            MultipartFile multipartFile = new MockMultipartFile("file",
+                    originalFilename,
+                    SaveConstans.ContentType.XLSX, byteArray);
             //文件上传只需将参数中的键指定(默认file),值设为文件对象即可,对于使用者来说,文件上传与普通表单提交并无区别
-            R upload = CXCommonUtils.upload(multipartFile);
+            R upload = CXCommonUtils.upload(multipartFile,noticeId);
             if (upload.getCode().equals("200")){
-                 fileItemDo = JSONUtil.toBean(upload.getData().toString(), SysFileItemDo.class);
-
+                JSONObject jsonObject = JSONUtil.parseObj(upload.getData());
+                returnStr = jsonObject.get("filename").toString() + "-;-" + jsonObject.get("id").toString();
             }
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
 
-        return  fileItemDo;
+        return  returnStr;
     }
 
     /**
@@ -97,7 +101,7 @@ public class ExcelUtils {
             // 使用临时文件创建一个 MultipartFile 实例
             MultipartFile multipartFile = new MockMultipartFile("file", tempFile.getName() , "application/vnd.ms-excel", inputStream);
             //文件上传只需将参数中的键指定(默认file),值设为文件对象即可,对于使用者来说,文件上传与普通表单提交并无区别
-            R upload = CXCommonUtils.upload(multipartFile);
+            R upload = CXCommonUtils.upload(multipartFile,"");
             if (upload.getCode().equals("200")){
                 Map<String,String> map = (Map<String, String>) JSON.parse(upload.getData().toString());
                 id =map.get("id");

BIN
cx-equipment/cx-equipment-common/src/main/resources/template/设备部位重复故障问题.xls