浏览代码

设备子系统———大修任务超期提醒发送人,以及上传附件目录修改

zhoudazhuang 1 年之前
父节点
当前提交
375db37e53

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

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

+ 1 - 1
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/CommonDao.java

@@ -106,7 +106,7 @@ public interface CommonDao {
      * @param
      * @return
      */
-    @Select("SELECT su.ID -- ,sr.NAME\n" +
+    @Select("SELECT su.ID\n" +
             "FROM sys_role sr \n" +
             "LEFT JOIN sys_user_role sur ON sr.ID = sur.ROLEID and sur.DELETED = 0 \n" +
             "LEFT JOIN sys_user su ON sur.USERID = su.ID and su.DELETED = 0 \n" +

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

@@ -56,8 +56,9 @@ public interface EquipmentSendNotifyService {
      * @param belongfactory
      * @param taskquantity
      * @param fileItemId
+     * @param userId
      */
-    void sendPlanningTasksNotify(String planyear, String belongfactory, Integer taskquantity, String fileItemId);
+    void sendPlanningTasksNotify(String planyear, String belongfactory, Integer taskquantity, String fileItemId,List<String> userId);
 
     void equScrapAuditNotify(EquipmentDisposeDTO equipmentDisposeDTO);
 

+ 21 - 41
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquOverhaulPlanningTasksServiceImpl.java

@@ -2,7 +2,6 @@ package com.rongwei.bscommon.sys.service.impl;
 
 import cn.afterturn.easypoi.excel.ExcelExportUtil;
 import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
-import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.dao.CommonDao;
@@ -10,10 +9,8 @@ import com.rongwei.bscommon.sys.dao.EquOverhaulPlanningTasksMapperDao;
 import com.rongwei.bscommon.sys.service.EquOverhaulPlanningTasksService;
 import com.rongwei.bscommon.sys.service.EquipmentSendNotifyService;
 import com.rongwei.bscommon.sys.utils.*;
-import com.rongwei.bsentity.domain.EquLubricationTaskDetailVo;
 import com.rongwei.bsentity.domain.EquOverhaulPlanningTasksDo;
 import com.rongwei.bsentity.domain.EquOverhaulPlanningTasksVo;
-import com.rongwei.rwadmincommon.system.domain.SysConfigFilesDo;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.service.SysDictService;
 import com.rongwei.rwadmincommon.system.vo.SysOrganizationVo;
@@ -21,8 +18,6 @@ import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
-import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
-import com.rongwei.safecommon.utils.CXCommonUtils;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -33,14 +28,12 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.attribute.BasicFileAttributes;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static com.rongwei.safecommon.utils.SaveConstans.FileName.PLANNING_TASK_FILE_NAME;
 
 /**
  * <p>
@@ -152,8 +145,6 @@ public class EquOverhaulPlanningTasksServiceImpl extends ServiceImpl<EquOverhaul
 
     @Override
     public R sendPlanTaskNotify(HttpServletResponse response) {
-        // 临时文件夹路径
-        Path tempDir = Paths.get("/upload_files/file_system");
         List<SysDictDo> taskByType = sysDictService.getDictsByType("task_state");
         List<SysDictDo> ynByType = sysDictService.getDictsByType("srm_yn");
         List<EquOverhaulPlanningTasksVo> equOverhaulPlanningTasksDos = equOverhaulPlanningTasksMapperDao.selectAllOverdueTaskQuantity();
@@ -165,7 +156,13 @@ public class EquOverhaulPlanningTasksServiceImpl extends ServiceImpl<EquOverhaul
                     TemplateExportParams params = new TemplateExportParams("template/大修任务超期未完成.xls",0);
                     Map<String, Object> dataMap = new HashMap<>(16);
                     List<Map<String,Object>> dataList = new ArrayList<>();
+                    List<String> workShopUserIds = new ArrayList<>();
+                    // 发送人
+                    List<String> userId = new ArrayList<>();
                     for (EquOverhaulPlanningTasksVo equLubricationTaskDetailVo : tasksVos) {
+                        if (StringUtils.isNotBlank(equLubricationTaskDetailVo.getEquipmentworkshopid())){
+                            workShopUserIds.add("'"+equLubricationTaskDetailVo.getEquipmentworkshopid()+"'");
+                        }
                         String taskStatus = "";
                         if (org.apache.commons.lang.StringUtils.isNotBlank(equLubricationTaskDetailVo.getTaskstatus())) {
                             taskStatus = taskByType.stream().filter(dictDo -> equLubricationTaskDetailVo.getTaskstatus().contains(dictDo.getValue()))
@@ -190,36 +187,19 @@ public class EquOverhaulPlanningTasksServiceImpl extends ServiceImpl<EquOverhaul
                     }
                     dataMap.put("list",dataList);
                     Workbook workbook = ExcelExportUtil.exportExcel(params,dataMap);
-                    // 生成临时文件路径并写入 Word 文档
-                    Path tempFile = Files.createTempFile(tempDir, "附件", ".xls");
-                    try (FileOutputStream outputStream = new FileOutputStream(tempFile.toString())) {
-                        workbook.write(outputStream);
+                    //3数据填充生成文件
+                    String fileItemId = ExcelUtils.workBookCommonUpload(workbook,  PLANNING_TASK_FILE_NAME.split("\\.")[0], "."+ PLANNING_TASK_FILE_NAME.split("\\.")[1]);
+                    List<String> useDeptRoleUserIds = commonDao.getRoleUserIds("'车间主任','车间维修主管'","so.id in ("+ workShopUserIds.stream().distinct().collect(Collectors.joining(","))+")");
+                    List<String> factoryRoleUserIds = commonDao.getRoleUserIds("'设备部部门长','设备部维修主管'", "(so.FULLPID like '," + planningTasksVo.getTenantid() + "%' or so.ID='" + planningTasksVo.getTenantid() + "')");
+                    if (useDeptRoleUserIds.size() > 0 && factoryRoleUserIds.size() > 0) {
+                        userId = Stream.of(useDeptRoleUserIds, factoryRoleUserIds).flatMap(Collection::stream).distinct().collect(Collectors.toList());
+                    } else if (useDeptRoleUserIds.size() == 0) {
+                        userId = factoryRoleUserIds;
+                    } else {
+                        userId = useDeptRoleUserIds.stream().distinct().collect(Collectors.toList());
                     }
-                    BasicFileAttributes attributes = Files.readAttributes(tempFile, BasicFileAttributes.class);
-                    long sizeInBytes = attributes.size();
-                    System.out.println("xls文件已保存在 " + tempFile.toString());
-                    String tempFilePath = tempFile.toString();
-                    SysFileItemDo sysFileItemDo = new SysFileItemDo();
-                    sysFileItemDo.setId(SecurityUtil.getUUID());
-                    sysFileItemDo.setFilename("大修任务超期未完成");
-                    //文件大小
-                    sysFileItemDo.setFilesize(sizeInBytes);
-                    sysFileItemDo.setFiletype("xls");
-                    sysFileItemDo.setStoragetype("1");
-                    sysFileItemDo.setRelationid(planningTasksVo.getId());
-                    sysFileItemDo.setFullpath(tempFilePath);
-                    sysFileItemDo.setUrlpath(tempFilePath);
-                    sysFileItemDo.setExtends1("files");
-                    sysFileItemDo.setDeleted("0");
-                    sysFileItemDo.setCreatedate(DateUtil.date());
-                    sysFileItemDo.setCreateuserid("7144ec7b69484007a07f2542cc1d90c7");
-                    sysFileItemDo.setModifydate(DateUtil.date());
-                    sysFileItemDo.setModifyuserid("7144ec7b69484007a07f2542cc1d90c7");
-                    sysFileItemDo.setCreateusername("系统大修任务超期提醒");
-                    sysFileItemDo.setModifyusername("系统大修任务超期提醒");
-                    commonDao.insertFile(sysFileItemDo);
                     try {
-                        equipmentSendNotifyService.sendPlanningTasksNotify(planningTasksVo.getPlanyear(),planningTasksVo.getBelongfactory(),planningTasksVo.getTaskquantity(),sysFileItemDo.getId());
+                        equipmentSendNotifyService.sendPlanningTasksNotify(planningTasksVo.getPlanyear(),planningTasksVo.getBelongfactory(),planningTasksVo.getTaskquantity(), fileItemId,userId);
                     }catch (Exception e){
                         ExceptionUtils.printExceptionDetail(e,"发送消息异常");
                     }
@@ -230,4 +210,4 @@ public class EquOverhaulPlanningTasksServiceImpl extends ServiceImpl<EquOverhaul
         }
         return R.ok();
     }
-}
+}

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

@@ -200,12 +200,12 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
     }
 
     @Override
-    public void sendPlanningTasksNotify(String planyear, String belongfactory, Integer taskquantity, String fileItemId) {
+    public void sendPlanningTasksNotify(String planyear, String belongfactory, Integer taskquantity, String fileItemId,List<String> userId) {
         CXCommonUtils.deleteSendNotify("mobilePlanningTask", fileItemId);
         // 发送消息提醒
         CXCommonUtils.sendNotify(PLANNING_TASK_TITLE,
                 String.format(PLANNING_TASK_CONTENT, planyear, belongfactory, taskquantity),
-                null, Arrays.asList("7144ec7b69484007a07f2542cc1d90c7".split(",")), fileItemId, MOBILE_PLANNING_TASK, true);
+                null, userId.stream().distinct().collect(Collectors.toList()), fileItemId, MOBILE_PLANNING_TASK, true);
     }
 
     @Override

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

@@ -7,6 +7,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellType;
 import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -71,6 +72,38 @@ public class ExcelUtils {
         return id;
     }
 
+    /**
+     * 调用接口生成文件
+     * @param workbook
+     * @param fileName
+     * @return
+     */
+    public static  String workBookCommonUpload(Workbook workbook, String fileName, String suffix){
+        String id="";
+        try {
+            // 创建临时文件
+            File tempFile = File.createTempFile(fileName, suffix);
+            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);
+            //文件上传只需将参数中的键指定(默认file),值设为文件对象即可,对于使用者来说,文件上传与普通表单提交并无区别
+            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");
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return id;
+    }
+