Просмотр исходного кода

设备子系统———大修任务提醒初版

zhoudazhuang 1 год назад
Родитель
Сommit
17305efd65
12 измененных файлов с 276 добавлено и 13 удалено
  1. 14 0
      bs-common/src/main/java/com/rongwei/safecommon/utils/SaveConstans.java
  2. 6 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/CommonDao.java
  3. 19 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquOverhaulPlanningTasksMapperDao.java
  4. 9 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquOverhaulPlanningTasksService.java
  5. 9 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquipmentSendNotifyService.java
  6. 84 8
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquOverhaulPlanningTasksServiceImpl.java
  7. 9 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquipmentSendNotifyServiceImpl.java
  8. 55 0
      cx-equipment/cx-equipment-common/src/main/resources/mybatis/business/CommonDao.xml
  9. 27 0
      cx-equipment/cx-equipment-common/src/main/resources/mybatis/business/EquOverhaulPlanningTasksMapperDao.xml
  10. BIN
      cx-equipment/cx-equipment-common/src/main/resources/template/大修任务超期未完成.xls
  11. 18 0
      cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquOverhaulPlanningTasksVo.java
  12. 26 5
      cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/EquOverhaulPlanningTasksController.java

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

@@ -138,6 +138,10 @@ public class SaveConstans {
          */
         public static final String LUBRICATION_TASK = "lubricationTask";
 
+        /**
+         * 移动端大修任务提醒
+         */
+        public static final String MOBILE_PLANNING_TASK = "mobilePlanningTask";
 
     }
 
@@ -208,6 +212,11 @@ public class SaveConstans {
          * 保养检修工单提醒标题
          */
         public static final String LUBRICATION_TASK_TITLE = "润滑任务提醒";
+
+        /**
+         * 大修任务超期提醒标题
+         */
+        public static final String PLANNING_TASK_TITLE = "大修任务超期提醒";
     }
 
     public static class NotifyContent {
@@ -275,5 +284,10 @@ public class SaveConstans {
          * 润滑任务提醒内容
          */
         public static final String LUBRICATION_TASK_CONTENT = "请及时执行【%d-%d】【%s】【%s】的【%s】(【%s 】 )的润滑任务,并及时登记润滑结果,润滑人:【%s】";
+
+        /**
+         * 大修任务超期提醒内容
+         */
+        public static final String PLANNING_TASK_CONTENT = "【%s】【%s】大修任务有【%s】各大修任务现已超期未完成,请各车间相关负责人及时跟进处理并调促督协尽快完成,具体任务详见附件清单。";
     }
 }

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

@@ -94,4 +94,10 @@ public interface CommonDao {
      */
     @Select("select * from sys_file_item where ID = #{id}")
     SysFileItemDo getFileItemByID(@Param("id") String id);
+
+    /**
+     * 插入附件表数据
+     * @param model
+     */
+    void insertFile(@Param("model") SysFileItemDo model);
 }

+ 19 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquOverhaulPlanningTasksMapperDao.java

@@ -2,6 +2,11 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwei.bsentity.domain.EquOverhaulPlanningTasksDo;
+import com.rongwei.bsentity.domain.EquOverhaulPlanningTasksVo;
+import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +18,18 @@ import com.rongwei.bsentity.domain.EquOverhaulPlanningTasksDo;
  */
 public interface EquOverhaulPlanningTasksMapperDao extends BaseMapper<EquOverhaulPlanningTasksDo> {
 
+    /**
+     * 查询超期各个工厂的任务数量
+     * @return
+     */
+    List<EquOverhaulPlanningTasksVo> selectAllOverdueTaskQuantity();
+
+    /**
+     * 根据各个工厂id查询所有任务数据
+     * @param tenantid
+     * @return
+     */
+    List<EquOverhaulPlanningTasksVo> selectTasksByFactoryId(@Param("tenantId") String tenantid);
+
+
 }

+ 9 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquOverhaulPlanningTasksService.java

@@ -5,6 +5,8 @@ import com.rongwei.bsentity.domain.EquOverhaulPlanningTasksDo;
 import com.rongwei.rwcommon.base.R;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * <p>
  * 设备子系统——大修计划任务 服务类
@@ -21,4 +23,11 @@ public interface EquOverhaulPlanningTasksService extends IService<EquOverhaulPla
      * @return
      */
     R importEquOverhaulPlanningTasks(MultipartFile file);
+
+    /**
+     * 系统每天早上5:00点发送大修任务提醒
+     * @param response
+     * @return
+     */
+    R sendPlanTaskNotify(HttpServletResponse response);
 }

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

@@ -48,4 +48,13 @@ public interface EquipmentSendNotifyService {
      * @return
      */
     R sendLubricationTaskNotifyByIds(Map<String, Object> parameter);
+
+    /**
+     * 大修任务发送消息提醒
+     * @param planyear
+     * @param belongfactory
+     * @param taskquantity
+     * @param fileItemId
+     */
+    void sendPlanningTasksNotify(String planyear, String belongfactory, Integer taskquantity, String fileItemId);
 }

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

@@ -1,32 +1,44 @@
 package com.rongwei.bscommon.sys.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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;
 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.EquWarrantyProviderDo;
+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.vo.SysOrganizationVo;
 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;
 import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 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.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+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;
 
 /**
@@ -44,8 +56,13 @@ public class EquOverhaulPlanningTasksServiceImpl extends ServiceImpl<EquOverhaul
     private EquOverhaulPlanningTasksService equOverhaulPlanningTasksService;
 
     @Autowired
-    private CommonDao commonDao;
+    private EquipmentSendNotifyService equipmentSendNotifyService;
+
+    @Autowired
+    EquOverhaulPlanningTasksMapperDao equOverhaulPlanningTasksMapperDao;
 
+    @Autowired
+    private CommonDao commonDao;
     @Override
     public R importEquOverhaulPlanningTasks(MultipartFile file) {
         try {
@@ -127,4 +144,63 @@ public class EquOverhaulPlanningTasksServiceImpl extends ServiceImpl<EquOverhaul
         }
         return R.ok();
     }
-}
+
+    @Override
+    public R sendPlanTaskNotify(HttpServletResponse response) {
+        // 临时文件夹路径
+        Path tempDir = Paths.get("/upload_files/file_system");
+        List<EquOverhaulPlanningTasksVo> equOverhaulPlanningTasksDos = equOverhaulPlanningTasksMapperDao.selectAllOverdueTaskQuantity();
+        for (EquOverhaulPlanningTasksVo planningTasksVo:equOverhaulPlanningTasksDos){
+            if (planningTasksVo.getTaskquantity()>0){
+                List<EquOverhaulPlanningTasksVo> tasksVos = equOverhaulPlanningTasksMapperDao.selectTasksByFactoryId(planningTasksVo.getTenantid());
+                try {
+                    // 读取模板文件
+                    TemplateExportParams params = new TemplateExportParams("template/大修任务超期未完成.xls",0);
+                    Map<String, Object> dataMap = new HashMap<>(16);
+                    List<Map<String,Object>> dataList = new ArrayList<>();
+                    for (EquOverhaulPlanningTasksVo equLubricationTaskDetailVo : tasksVos) {
+                        dataList.add(JSONObject.parseObject(JSONObject.toJSONString(equLubricationTaskDetailVo), Map.class));
+                    }
+                    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);
+                    }
+                    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());
+                    }catch (Exception e){
+                        ExceptionUtils.printExceptionDetail(e,"发送消息异常");
+                    }
+                }catch (Exception e){
+                    ExceptionUtils.printExceptionDetail(e,"读取模板异常");
+                }
+            }
+        }
+        return R.ok();
+    }
+}

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

@@ -188,5 +188,14 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
         }
         return R.ok();
     }
+
+    @Override
+    public void sendPlanningTasksNotify(String planyear, String belongfactory, Integer taskquantity, String fileItemId) {
+        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);
+    }
 }
 

+ 55 - 0
cx-equipment/cx-equipment-common/src/main/resources/mybatis/business/CommonDao.xml

@@ -56,4 +56,59 @@
         AND DELETED = '0'
     </select>
 
+    <insert id="insertFile">
+        INSERT INTO `sys_file_item` (
+	`ID`,
+	`FILENAME`,
+	`FILESIZE`,
+	`FILETYPE`,
+	`STORAGETYPE`,
+	`FILEFOLDERID`,
+	`RELATIONID`,
+	`PATH`,
+	`FULLPATH`,
+	`URLPATH`,
+	`MD5`,
+	`EXTENDS1`,
+	`EXTENDS2`,
+	`EXTENDS3`,
+	`TENANTID`,
+	`ROPTION`,
+	`DELETED`,
+	`REMARK`,
+	`CREATEDATE`,
+	`CREATEUSERID`,
+	`MODIFYDATE`,
+	`MODIFYUSERID`,
+	`CREATEUSERNAME`,
+	`MODIFYUSERNAME`
+)
+VALUES
+	(
+		#{model.id},
+		#{model.filename},
+		#{model.filesize},
+		#{model.filetype},
+		#{model.storagetype},
+		#{model.filefolderid},
+		#{model.relationid},
+		NULL,
+		#{model.fullpath},
+		#{model.urlpath},
+		NULL,
+		#{model.extends1},
+		NULL,
+		NULL,
+		NULL,
+		NULL,
+		#{model.deleted},
+		NULL,
+		#{model.createdate},
+		#{model.createuserid},
+		#{model.modifydate},
+		#{model.modifyuserid},
+		#{model.createusername},
+	    #{model.modifyusername}
+	)
+    </insert>
 </mapper>

+ 27 - 0
cx-equipment/cx-equipment-common/src/main/resources/mybatis/business/EquOverhaulPlanningTasksMapperDao.xml

@@ -2,4 +2,31 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.rongwei.bscommon.sys.dao.EquOverhaulPlanningTasksMapperDao">
 
+    <select id="selectAllOverdueTaskQuantity" resultType="com.rongwei.bsentity.domain.EquOverhaulPlanningTasksVo">
+        SELECT
+        ID,PLANYEAR,TENANTID,BELONGFACTORY,count(TENANTID) 'TASKQUANTITY'
+        FROM
+        equ_overhaul_planning_tasks
+        WHERE
+        PLANSTARTTIME >= DATE( NOW( ) ) - INTERVAL 1 YEAR
+        AND DATE( NOW( ) ) >= PLANENDTIME
+        AND TASKSTATUS in (10,30,70)
+        AND DELETED = 0
+        GROUP BY TENANTID
+        HAVING count(TENANTID) > 1
+    </select>
+
+    <select id="selectTasksByFactoryId" resultType="com.rongwei.bsentity.domain.EquOverhaulPlanningTasksVo">
+        SELECT
+         *
+        FROM
+        equ_overhaul_planning_tasks
+        WHERE
+        PLANSTARTTIME >= DATE( NOW( ) ) - INTERVAL 1 YEAR
+        AND DATE( NOW( ) ) >= PLANENDTIME
+        AND TASKSTATUS in (10,30,70)
+        AND DELETED = 0
+        <if test="tenantId != null and tenantId != ''"> and TENANTID = #{tenantId}</if>
+    </select>
+
 </mapper>

BIN
cx-equipment/cx-equipment-common/src/main/resources/template/大修任务超期未完成.xls


+ 18 - 0
cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquOverhaulPlanningTasksVo.java

@@ -0,0 +1,18 @@
+package com.rongwei.bsentity.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author zhou
+ */
+@Data
+public class EquOverhaulPlanningTasksVo extends EquOverhaulPlanningTasksDo implements Serializable {
+    /**
+     * 任务数量
+     */
+    private Integer taskquantity;
+
+
+}

+ 26 - 5
cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/EquOverhaulPlanningTasksController.java

@@ -2,19 +2,19 @@ package com.rongwei.bsserver.sys.controller;
 
 
 import com.rongwei.bscommon.sys.service.EquOverhaulPlanningTasksService;
+import com.rongwei.bscommon.sys.utils.ExceptionUtils;
 import com.rongwei.bscommon.sys.utils.FileCheckUtil;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-
+import org.springframework.web.bind.annotation.*;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
 
 /**
  * <p>
@@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletRequest;
  */
 @RestController
 @RequestMapping("/equOverhaulPlanningTasks")
+@Slf4j
 public class EquOverhaulPlanningTasksController {
 
     @Autowired
@@ -50,5 +51,25 @@ public class EquOverhaulPlanningTasksController {
         }
         return equOverhaulPlanningTasksService.importEquOverhaulPlanningTasks(file);
     }
+
+    /**
+     * 系统每天早上5:00点发送大修任务提醒
+     * @return {@link R}
+     * @date 2024/1/18 17:16
+     * @author shangmi
+     *
+     */
+
+    @RequestMapping("/sendPlanTaskNotify")
+    public R sendPlanTaskNotify(@RequestBody Map<String, Object> parameter,HttpServletResponse response){
+        try {
+            log.info("进入接口:/equOverhaulPlanningTasks/sendPlanTaskNotify");
+            return equOverhaulPlanningTasksService.sendPlanTaskNotify(response);
+        }catch (Exception e){
+            ExceptionUtils.printExceptionDetail(e,"系统每天早上5:00点发送大修任务提醒失败,异常为:");
+            log.info(e.getMessage());
+            return R.error(e.getMessage());
+        }
+    };
 }