Переглянути джерело

feature 增加润滑定时任务

xiahan 1 рік тому
батько
коміт
5ed31cb341

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

@@ -133,6 +133,12 @@ public class SaveConstans {
          * 保养检修
          */
         public static final String ACCEPTMAINTAINTASK = "acceptmaintaintask";
+        /**
+         * 润滑任务
+         */
+        public static final String LUBRICATION_TASK = "lubricationTask";
+
+
     }
 
     public static class NotifyTitle {
@@ -198,7 +204,10 @@ public class SaveConstans {
          */
         public static final String ACCEPTANCE_SYSTEM_TITLE = "待验收保养任务";
 
-
+        /**
+         * 保养检修工单提醒标题
+         */
+        public static final String LUBRICATION_TASK_TITLE = "润滑任务提醒";
     }
 
     public static class NotifyContent {
@@ -262,5 +271,9 @@ public class SaveConstans {
          */
         public static final String ACCEPTANCE_SYSTEM_CONTENT = "请及时对已完成保养登记的%s-%s的%s(%s )%s的保养任务进行验收确认,(完成日期:%s,保养负责人:%s,其他保养工程师:%s";
 
+        /**
+         * 润滑任务提醒内容
+         */
+        public static final String LUBRICATION_TASK_CONTENT = "请及时执行【%d-%d】【%s】【%s】的【%s】(【%s 】 )的润滑任务,并及时登记润滑结果,润滑人:【%s】";
     }
 }

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

@@ -2,6 +2,7 @@ package com.rongwei.bscommon.sys.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.EquLubricationPlanDo;
+import com.rongwei.rwcommon.base.R;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.Map;
@@ -33,4 +34,6 @@ public interface EquLubricationPlanService extends IService<EquLubricationPlanDo
      *
      */
     void updateStateByEquId(String equipmentId);
+
+    R timedTask();
 }

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

@@ -1,7 +1,10 @@
 package com.rongwei.bscommon.sys.service;
 
+import com.rongwei.bsentity.domain.EquLubricationTaskManagementDo;
 import com.rongwei.rwcommon.base.R;
 
+import java.util.List;
+
 /**
  * @author shangmi
  * @title EquipmentSendNotifyService
@@ -30,4 +33,11 @@ public interface EquipmentSendNotifyService {
      *
      */
     R maintainVerifyTaskNotify(String id);
+
+    /**
+     * 发送润滑任务消息提醒
+     * @param equLubricationTaskManagementDos
+     * @return
+     */
+    R sendLubricationTaskNotify(List<EquLubricationTaskManagementDo> equLubricationTaskManagementDos);
 }

+ 275 - 12
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquLubricationPlanServiceImpl.java

@@ -3,18 +3,20 @@ package com.rongwei.bscommon.sys.service.impl;
 import cn.afterturn.easypoi.excel.ExcelExportUtil;
 import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.dao.CommonDao;
 import com.rongwei.bscommon.sys.dao.EquLubricationPlanMapperDao;
 import com.rongwei.bscommon.sys.service.EquLubricationPlanDetailService;
 import com.rongwei.bscommon.sys.service.EquLubricationPlanService;
-import com.rongwei.bscommon.sys.utils.CommonUtils;
+import com.rongwei.bscommon.sys.service.EquipmentSendNotifyService;
 import com.rongwei.bscommon.sys.utils.ExceptionUtils;
-import com.rongwei.bsentity.domain.EquLubricationPlanDetailVo;
-import com.rongwei.bsentity.domain.EquLubricationPlanDo;
+import com.rongwei.bsentity.domain.*;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
-import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import com.rongwei.rwcommon.base.BaseDo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -22,10 +24,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.rongwei.safecommon.utils.CXCommonUtils.streamCodeGeneration;
 
 /**
  * <p>
@@ -52,6 +54,57 @@ public class EquLubricationPlanServiceImpl extends ServiceImpl<EquLubricationPla
     @Autowired
     private EquLubricationPlanMapperDao lubricationPlanMapperDao;
 
+    @Autowired
+    private EquLubricationTaskManagementServiceImpl equLubricationTaskManagementService;
+    @Autowired
+    private EquLubricationTaskDetailServiceImpl equLubricationTaskDetailService;
+    @Autowired
+    private EquipmentSendNotifyService equipmentSendNotifyService;
+
+    /**
+     * 启用
+     */
+    public static final String ENABLE = "10";
+    /**
+     * 未润滑
+     */
+    public static final String UNLUBRICATED = "n";
+    /**
+     * 润滑任务状态待完成
+     */
+    public static final String TASK_STATUS_TO_BE_COMPLETED = "10";
+
+    /**
+     * 半年
+     */
+    public static final String HALF_YEAR = "70";
+    /**
+     * 季度
+     */
+    public static final String QUARTER = "60";
+    /**
+     * 每月
+     */
+    public static final String MONTH = "40";
+    /**
+     * 每周
+     */
+    public static final String WEEK = "20";
+    /**
+     * 每季度的第一个月
+     */
+    public static final List<Integer> QUARTER_MONTH = new ArrayList<Integer>() {{
+        add(1);
+        add(4);
+        add(7);
+        add(10);
+    }};
+    public static final List<Integer> HALF_YEAR_MONTH = new ArrayList<Integer>() {{
+        add(1);
+        add(7);
+    }};
+
+
     @Override
     public void wordExportLubrication(Map<String, Object> parameter, HttpServletResponse response) {
         log.info("开始导出润滑明细");
@@ -60,7 +113,7 @@ public class EquLubricationPlanServiceImpl extends ServiceImpl<EquLubricationPla
         try {
             response.setContentType("application/octet-stream");
             // 读取模板文件
-            TemplateExportParams params = new TemplateExportParams("template/润滑明细模板.xls",0);
+            TemplateExportParams params = new TemplateExportParams("template/润滑明细模板.xls", 0);
             Map<String, Object> dataMap = new HashMap<>(16);
             List<Map<String,Object>> dataList = new ArrayList<>();
             for (EquLubricationPlanDetailVo equLubricationPlanDetailVo : planDetailList) {
@@ -96,8 +149,218 @@ public class EquLubricationPlanServiceImpl extends ServiceImpl<EquLubricationPla
     @Override
     public void updateStateByEquId(String equipmentId) {
         LambdaUpdateWrapper<EquLubricationPlanDo> updateWrapper = new LambdaUpdateWrapper<>();
-        updateWrapper.eq(EquLubricationPlanDo::getEquipmentid,equipmentId)
-                .set(EquLubricationPlanDo::getEnablestatus,"20");
-        lubricationPlanMapperDao.update(null,updateWrapper);
+        updateWrapper.eq(EquLubricationPlanDo::getEquipmentid, equipmentId).set(EquLubricationPlanDo::getEnablestatus, "20");
+        lubricationPlanMapperDao.update(null, updateWrapper);
     }
+
+    /**
+     * 润滑计划标准定时任务
+     * 在每月一号和每周的周一执行
+     *
+     * @return
+     */
+    @Override
+    public R timedTask() {
+        Calendar calendar = Calendar.getInstance(); // 获取当前时间的Calendar对象
+        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); // 获取星期几(1表示星期天,2表示星期一,依此类推)
+        // 是否为周一
+        boolean isMonday = dayOfWeek == Calendar.MONDAY;
+        // 当前月份
+        int currentMonth = calendar.get(Calendar.MONTH) + 1;
+        int currentYear = calendar.get(Calendar.YEAR);
+        boolean isFirstDayOfMonth = calendar.getActualMinimum(Calendar.DATE) == calendar.get(Calendar.DATE);
+        // 是否为每月1号
+        // 如果不是周一和每月一号 直接结束
+        if (!isMonday && !isFirstDayOfMonth) {
+            log.error("当前日期不是周一且不是1号");
+            return R.ok();
+        }
+        // 获取计划明细
+        List<EquLubricationPlanDo> planDoList = equLubricationPlanService.list(new LambdaQueryWrapper<EquLubricationPlanDo>()
+                .eq(BaseDo::getDeleted, "0")
+                .eq(EquLubricationPlanDo::getEnablestatus, ENABLE));
+        if (planDoList.isEmpty()) {
+            log.debug("暂无启用的定时任务");
+            return R.ok();
+        }
+        List<String> planIds = planDoList.stream().map(EquLubricationPlanDo::getId).collect(Collectors.toList());
+        // 获取到详细
+        List<EquLubricationPlanDetailDo> detailDoList = equLubricationPlanDetailService.list(new LambdaQueryWrapper<EquLubricationPlanDetailDo>()
+                .eq(BaseDo::getDeleted, "0").eq(EquLubricationPlanDetailDo::getEnablestatus, ENABLE)
+                .in(EquLubricationPlanDetailDo::getMasterid, planIds)
+                .last("and IFNULL(FREQUENCY,'')!=''"));
+        if (detailDoList.isEmpty()) {
+            log.debug("暂无启用的定时任务");
+            return R.ok();
+        }
+        generateTaskData(planDoList, detailDoList, isMonday, isFirstDayOfMonth, currentMonth, currentYear);
+        return R.ok();
+    }
+
+    /**
+     * 生成润滑任务
+     *
+     * @param planDoList        润滑计划
+     * @param detailDoList      润滑计划子表
+     * @param isMonday          是否为周一
+     * @param isFirstDayOfMonth 是否为每月一号
+     * @param currentMonth      当前月份
+     */
+    public void generateTaskData(List<EquLubricationPlanDo> planDoList, List<EquLubricationPlanDetailDo> detailDoList,
+                                 boolean isMonday, boolean isFirstDayOfMonth, int currentMonth, int currentYear) {
+        List<EquLubricationTaskManagementDo> taskList = new ArrayList<>();
+        List<EquLubricationTaskDetailDo> taskDetailList = new ArrayList<>();
+        // FIXME:XH add 2024/1/23 按照要求 统一设备出现润滑部位相同的情况 不做任何处理按照原逻辑生成
+        // 循环计划
+        planDoList.forEach(plan -> {
+            List<EquLubricationPlanDetailDo> detailList = detailDoList.stream().filter(info -> info.getMasterid().equals(plan.getId()))
+                    .filter(info -> checkGenerateData(info, isMonday, isFirstDayOfMonth, currentMonth))
+                    .collect(Collectors.toList());
+            assembleTaskManagementDo(taskList, taskDetailList, plan, detailList, currentMonth, currentYear);
+        });
+        // 数据存表
+        equLubricationTaskManagementService.saveBatch(taskList, 50);
+        equLubricationTaskDetailService.saveBatch(taskDetailList, 50);
+        // 发送消息提醒
+        equipmentSendNotifyService.sendLubricationTaskNotify(taskList);
+    }
+
+    /**
+     * 校验润滑部位是否需要生成 润滑任务
+     *
+     * @param equLubricationPlanDetailDo
+     * @param isMonday                   是否为周一
+     * @param isFirstDayOfMonth          是否为每月一号
+     * @param currentMonth               当前月份
+     * @return
+     */
+    public boolean checkGenerateData(EquLubricationPlanDetailDo equLubricationPlanDetailDo, boolean isMonday,
+                                     boolean isFirstDayOfMonth,
+                                     int currentMonth) {
+        if (equLubricationPlanDetailDo.getNumber() == null || equLubricationPlanDetailDo.getNumber() <= 0) {
+            return false;
+        }
+        // 是否需要生成
+        boolean isGenerate = false;
+        switch (equLubricationPlanDetailDo.getFrequency()) {
+            case HALF_YEAR: // 每半年
+                isGenerate = isFirstDayOfMonth && HALF_YEAR_MONTH.contains(currentMonth);
+                break;
+            case QUARTER: // 每季度
+                isGenerate = isFirstDayOfMonth && QUARTER_MONTH.contains(currentMonth);
+                break;
+            case MONTH: // 每月
+                isGenerate = isFirstDayOfMonth;
+                break;
+            case WEEK: // 每周 只有周一生成
+                isGenerate = isMonday;
+                break;
+            default:
+        }
+        return isGenerate;
+    }
+
+    /**
+     * 生成润滑任务数据
+     *
+     * @param taskList             润滑任务主表
+     * @param taskDetailList       润滑任务子表
+     * @param equLubricationPlanDo 润滑计划
+     * @param detailList           润滑计划明细
+     * @param currentMonth         当前月份
+     * @param currentYear          当前年份
+     */
+    public void assembleTaskManagementDo(List<EquLubricationTaskManagementDo> taskList,
+                                         List<EquLubricationTaskDetailDo> taskDetailList,
+                                         EquLubricationPlanDo equLubricationPlanDo,
+                                         List<EquLubricationPlanDetailDo> detailList,
+                                         int currentMonth,
+                                         int currentYear) {
+        // 获取该计划中次数最大的数据
+        Integer maximumFrequency = detailList.stream().map(EquLubricationPlanDetailDo::getNumber).max(Integer::compareTo).get();
+        // 任务主表实体
+        EquLubricationTaskManagementDo equLubricationTaskManagementDo = null;
+        // 任务子表实体
+        EquLubricationTaskDetailDo equLubricationTaskDetailDo = null;
+        // 需要生成任务的计划明细数据
+        List<EquLubricationPlanDetailDo> filterData;
+        for (int i = 0; i < maximumFrequency; i++) {
+            // 获取计划明细中次数小于当前次数的数据
+            int currentNum = i + 1;
+            filterData = detailList.stream().filter(info -> info.getNumber() >= currentNum).collect(Collectors.toList());
+            // 生成主表数据
+            equLubricationTaskManagementDo = assembleMasterMeterDo(equLubricationTaskManagementDo, equLubricationPlanDo, filterData, currentMonth, currentYear);
+            // 生成子表数据
+            taskDetailList.addAll(assembleSubtableDataDo(equLubricationTaskManagementDo, equLubricationTaskDetailDo, filterData));
+            taskList.add(equLubricationTaskManagementDo);
+        }
+
+    }
+
+
+    /**
+     * 生成润滑任务主表数据
+     *
+     * @return
+     */
+    public EquLubricationTaskManagementDo assembleMasterMeterDo(EquLubricationTaskManagementDo equLubricationTaskManagementDo,
+                                                                EquLubricationPlanDo equLubricationPlanDo,
+                                                                List<EquLubricationPlanDetailDo> equLubricationTaskDetailDos,
+                                                                int currentMonth, int currentYear) {
+        equLubricationTaskManagementDo = new EquLubricationTaskManagementDo();
+        equLubricationTaskManagementDo.setId(SecurityUtil.getUUID());
+        equLubricationTaskManagementDo.setTenantid(equLubricationPlanDo.getTenantid());
+        String taskNumber = streamCodeGeneration("equ_lubrication_task_management_code", "@{date:yyyy}@{serialNumber:#00000}",
+                "date:yyyy", equLubricationPlanDo.getTenantid());
+        equLubricationTaskManagementDo.setTasknumber(taskNumber);
+        equLubricationTaskManagementDo.setYear(currentMonth);
+        equLubricationTaskManagementDo.setMonth(currentYear);
+        equLubricationTaskManagementDo.setBelongfactory(equLubricationPlanDo.getBelongfactory());
+        equLubricationTaskManagementDo.setEquipment(equLubricationPlanDo.getEquipment());
+        equLubricationTaskManagementDo.setEquipmentnumber(equLubricationPlanDo.getEquipmentnumber());
+        equLubricationTaskManagementDo.setLubricator(equLubricationTaskDetailDos.stream()
+                .map(EquLubricationPlanDetailDo::getLubricator).distinct().collect(Collectors.joining(",")));
+//        equLubricationTaskManagementDo.setCompletedate();
+        equLubricationTaskManagementDo.setTaskstatus(TASK_STATUS_TO_BE_COMPLETED);
+        equLubricationTaskManagementDo.setLubricatorid(equLubricationTaskDetailDos.stream().
+                map(EquLubricationPlanDetailDo::getLubricatorid).distinct().collect(Collectors.joining(",")));
+        equLubricationTaskManagementDo.setEquipmentid(equLubricationPlanDo.getEquipmentid());
+        equLubricationTaskManagementDo.setEquipmentworkshopid(equLubricationPlanDo.getEquipmentworkshopid());
+        equLubricationTaskManagementDo.setEquipmentworkshop(equLubricationPlanDo.getEquipmentworkshop());
+        equLubricationTaskManagementDo.setTaskfrequency(equLubricationTaskDetailDos.stream()
+                .map(EquLubricationPlanDetailDo::getFrequency).distinct().collect(Collectors.joining(",")));
+        return equLubricationTaskManagementDo;
+    }
+
+    /**
+     * 生成任务明细表数据
+     *
+     * @param equLubricationTaskManagementDo 任务主表实体
+     * @param equLubricationTaskDetailDo     任务子表实体
+     * @param equLubricationTaskDetailDos    任务计划
+     * @return
+     */
+    public List<EquLubricationTaskDetailDo> assembleSubtableDataDo(EquLubricationTaskManagementDo equLubricationTaskManagementDo,
+                                                                   EquLubricationTaskDetailDo equLubricationTaskDetailDo,
+                                                                   List<EquLubricationPlanDetailDo> equLubricationTaskDetailDos) {
+        List<EquLubricationTaskDetailDo> saveList = new ArrayList<>();
+        for (EquLubricationPlanDetailDo lubricationTaskDetailDo : equLubricationTaskDetailDos) {
+            equLubricationTaskDetailDo = new EquLubricationTaskDetailDo();
+            equLubricationTaskDetailDo.setId(SecurityUtil.getUUID());
+            equLubricationTaskDetailDo.setTenantid(equLubricationTaskManagementDo.getTenantid());
+            equLubricationTaskDetailDo.setMasterid(equLubricationTaskManagementDo.getId());
+            equLubricationTaskDetailDo.setLubricationposition(lubricationTaskDetailDo.getLubricationposition());
+            equLubricationTaskDetailDo.setLubricants(lubricationTaskDetailDo.getLubricants());
+            equLubricationTaskDetailDo.setLubricationamount(lubricationTaskDetailDo.getLubricationamount());
+            equLubricationTaskDetailDo.setFrequency(lubricationTaskDetailDo.getFrequency());
+            equLubricationTaskDetailDo.setLubricatorid(lubricationTaskDetailDo.getLubricatorid());
+            equLubricationTaskDetailDo.setLubricator(lubricationTaskDetailDo.getLubricator());
+            equLubricationTaskDetailDo.setEnablestatus(TASK_STATUS_TO_BE_COMPLETED);
+            equLubricationTaskDetailDo.setIslubricationcompleted(UNLUBRICATED);
+            equLubricationTaskDetailDo.setStandardnumber(lubricationTaskDetailDo.getStandardnumber());
+            saveList.add(equLubricationTaskDetailDo);
+        }
+        return saveList;
+    }
+
 }

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

@@ -4,7 +4,10 @@ import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
 import com.rongwei.bscommon.sys.service.EquMaintenanceTaskService;
 import com.rongwei.bscommon.sys.service.EquipmentSendNotifyService;
+import com.rongwei.bsentity.domain.EquLubricationTaskManagementDo;
 import com.rongwei.bsentity.domain.EquMaintenanceTaskDo;
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
+import com.rongwei.rwadmincommon.system.service.SysDictService;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.safecommon.fegin.CXCommonFeginClient;
 import com.rongwei.safecommon.utils.CXCommonUtils;
@@ -19,12 +22,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static com.rongwei.safecommon.utils.SaveConstans.NotifyContent.ACCEPTANCE_SYSTEM_CONTENT;
-import static com.rongwei.safecommon.utils.SaveConstans.NotifyContent.MAINTAIN_SYSTEM_CONTENT;
-import static com.rongwei.safecommon.utils.SaveConstans.NotifyTitle.ACCEPTANCE_SYSTEM_TITLE;
-import static com.rongwei.safecommon.utils.SaveConstans.NotifyTitle.MAINTAIN_SYSTEM_TITLE;
-import static com.rongwei.safecommon.utils.SaveConstans.NotifyType.ACCEPTMAINTAINTASK;
-import static com.rongwei.safecommon.utils.SaveConstans.NotifyType.MAINTAIN;
+import static com.rongwei.safecommon.utils.SaveConstans.NotifyContent.*;
+import static com.rongwei.safecommon.utils.SaveConstans.NotifyTitle.*;
+import static com.rongwei.safecommon.utils.SaveConstans.NotifyType.*;
 
 /**
  * @author shangmi
@@ -42,6 +42,9 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
     @Autowired
     private CXCommonFeginClient commonFeginClient;
 
+    @Autowired
+    private SysDictService sysDictService;
+
     /**
      * 根据任务ID发送 提醒
      *
@@ -65,43 +68,36 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
 
         // 发送人
         List<String> userId = new ArrayList<>();
-        // 发送内容
-        String context = null;
-        // 发送标题
-        String title = null;
-        if (maintenanceTaskDo.getPrincipalid() != null){
+        if (maintenanceTaskDo.getPrincipalid() != null) {
             userId.addAll(Arrays.asList(maintenanceTaskDo.getPrincipalid().split(",")));
         }
-        if (maintenanceTaskDo.getOtherengineersid() != null){
+        if (maintenanceTaskDo.getOtherengineersid() != null) {
             userId.addAll(Arrays.asList(maintenanceTaskDo.getOtherengineersid().split(",")));
         }
 
-        if (userId.isEmpty()){
-            log.info("id为{}的任务无提醒人",id);
+        if (userId.isEmpty()) {
+            log.info("id为{}的任务无提醒人", id);
             return R.ok();
         }
-        title = MAINTAIN_SYSTEM_TITLE;
-        context = String.format(MAINTAIN_SYSTEM_CONTENT,
-                maintenanceTaskDo.getPlanyear()+"-"+maintenanceTaskDo.getMonth(),
-                maintenanceTaskDo.getWorkshop(),
-                maintenanceTaskDo.getEquipmentname(),
-                maintenanceTaskDo.getEquipmentnumber(),
-                maintenanceTaskDo.getMaintenancesite(),
-                maintenanceTaskDo.getPrincipal(),
-                maintenanceTaskDo.getOtherengineers()
-                );
-
-        JSONArray data = JSONUtil.parseArray( commonFeginClient.list(new HashMap<String, Object>() {{
+        // 发送标题
+        String title = MAINTAIN_SYSTEM_TITLE;
+        // 发送内容
+        String context = String.format(MAINTAIN_SYSTEM_CONTENT, maintenanceTaskDo.getPlanyear() + "-" + maintenanceTaskDo.getMonth(),
+                maintenanceTaskDo.getWorkshop(), maintenanceTaskDo.getEquipmentname(), maintenanceTaskDo.getEquipmentnumber(),
+                maintenanceTaskDo.getMaintenancesite(), maintenanceTaskDo.getPrincipal(), maintenanceTaskDo.getOtherengineers());
+
+        JSONArray data = JSONUtil.parseArray(commonFeginClient.list(new HashMap<String, Object>() {{
             this.put("NOTIFYTYPE", "maintain");
             this.put("ROPTION", id);
         }}).getData());
-        if (!data.isEmpty()){
+
+        if (!data.isEmpty()) {
             List<String> ids = data.stream().map(info -> JSONUtil.parseObj(info).get("id").toString()).collect(Collectors.toList());
             commonFeginClient.delete(ids);
         }
 
-        CXCommonUtils.sendNotify(title,
-                context,null,userId.stream().distinct().collect(Collectors.toList()),maintenanceTaskDo.getId(),MAINTAIN);
+        CXCommonUtils.sendNotify(title, context, null, userId.stream().distinct().collect(Collectors.toList()),
+                maintenanceTaskDo.getId(), MAINTAIN, false);
         return R.ok();
     }
 
@@ -120,40 +116,63 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
 
         // 发送人
         List<String> userId = new ArrayList<>();
-        // 发送内容
-        String context = null;
-        // 发送标题
-        String title = null;
-        if (maintenanceTaskDo.getAcceptorid() != null){
+        if (maintenanceTaskDo.getAcceptorid() != null) {
             userId.addAll(Arrays.asList(maintenanceTaskDo.getAcceptorid().split(",")));
         }
-        if (userId.isEmpty()){
-            log.info("id为{}的任务无提醒人",id);
+        if (userId.isEmpty()) {
+            log.info("id为{}的任务无提醒人", id);
             return R.ok();
         }
-        title = ACCEPTANCE_SYSTEM_TITLE;
-        context = String.format(ACCEPTANCE_SYSTEM_CONTENT,
-                maintenanceTaskDo.getPlanyear()+"-"+maintenanceTaskDo.getMonth(),
-                maintenanceTaskDo.getWorkshop(),
-                maintenanceTaskDo.getEquipmentname(),
-                maintenanceTaskDo.getEquipmentnumber(),
-                maintenanceTaskDo.getMaintenancesite(),
-                maintenanceTaskDo.getTaskendtime(),
-                maintenanceTaskDo.getPrincipal(),
-                maintenanceTaskDo.getOtherengineers()
-        );
-
-        JSONArray data = JSONUtil.parseArray( commonFeginClient.list(new HashMap<String, Object>() {{
+        // 发送内容
+        String title = ACCEPTANCE_SYSTEM_TITLE;
+        // 发送标题
+        String context = String.format(ACCEPTANCE_SYSTEM_CONTENT, maintenanceTaskDo.getPlanyear() + "-" + maintenanceTaskDo.getMonth(),
+                maintenanceTaskDo.getWorkshop(), maintenanceTaskDo.getEquipmentname(), maintenanceTaskDo.getEquipmentnumber(),
+                maintenanceTaskDo.getMaintenancesite(), maintenanceTaskDo.getTaskendtime(), maintenanceTaskDo.getPrincipal(),
+                maintenanceTaskDo.getOtherengineers());
+
+        JSONArray data = JSONUtil.parseArray(commonFeginClient.list(new HashMap<String, Object>() {{
             this.put("NOTIFYTYPE", "acceptmaintaintask");
             this.put("ROPTION", id);
         }}).getData());
-        if (!data.isEmpty()){
+
+        if (!data.isEmpty()) {
             List<String> ids = data.stream().map(info -> JSONUtil.parseObj(info).get("id").toString()).collect(Collectors.toList());
             commonFeginClient.delete(ids);
         }
 
-        CXCommonUtils.sendNotify(title,
-                context,null,userId.stream().distinct().collect(Collectors.toList()),maintenanceTaskDo.getId(),ACCEPTMAINTAINTASK);
+        CXCommonUtils.sendNotify(title, context, null, userId.stream().distinct().collect(Collectors.toList()),
+                maintenanceTaskDo.getId(), ACCEPTMAINTAINTASK, false);
+        return R.ok();
+    }
+
+    /**
+     * 发润滑任务的消息提醒
+     *
+     * @param equLubricationTaskManagementDos
+     * @return
+     */
+    @Override
+    public R sendLubricationTaskNotify(List<EquLubricationTaskManagementDo> equLubricationTaskManagementDos) {
+        if (equLubricationTaskManagementDos == null || equLubricationTaskManagementDos.isEmpty()) {
+            return R.ok();
+        }
+        List<SysDictDo> dictsByType = sysDictService.getDictsByType("lubricationFrequency");
+        // 获取润滑人ID不为空的数据
+        equLubricationTaskManagementDos.stream().filter(info -> StringUtils.isNotBlank(info.getLubricatorid())).forEach(info -> {
+            String taskfrequency = "";
+            if (StringUtils.isNotBlank(info.getTaskfrequency())) {
+                taskfrequency = dictsByType.stream().filter(dictDo -> info.getTaskfrequency().contains(dictDo.getValue()))
+                        .map(SysDictDo::getName).collect(Collectors.joining(","));
+
+            }
+            // 发送消息提醒
+            CXCommonUtils.sendNotify(LUBRICATION_TASK_TITLE,
+                    String.format(LUBRICATION_TASK_CONTENT, info.getYear(), info.getMonth(), taskfrequency,
+                            info.getEquipmentworkshop(),info.getEquipment(), info.getEquipmentnumber(), info.getLubricator()),
+                    null, Arrays.asList(info.getLubricatorid().split(",")), info.getId(), LUBRICATION_TASK, false);
+        });
+        // 发送消息提醒
         return R.ok();
     }
 }

+ 1 - 1
cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquLubricationTaskDetailDo.java

@@ -106,7 +106,7 @@ public class EquLubricationTaskDetailDo extends BaseDo implements Serializable {
     private String islubricationcompleted;
 
     /**
-     * 是否润滑完成
+     * 描述说明
      */
     @TableField("DESCRIPTION")
     private String description;

+ 2 - 0
cx-equipment/cx-equipment-server/src/main/java/com/rongwei/EquipmentBusinessServerApplication.java

@@ -6,12 +6,14 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 @EnableAsync
 @SpringBootApplication
 @EnableDiscoveryClient
 @EnableFeignClients
 @MapperScan("com.rongwei.*.*.dao")
+@EnableScheduling
 public class EquipmentBusinessServerApplication {
 
     public static void main(String[] args) {

+ 11 - 0
cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/EquLubricationPlanController.java

@@ -2,10 +2,13 @@ package com.rongwei.bsserver.sys.controller;
 
 
 import com.rongwei.bscommon.sys.service.EquLubricationPlanService;
+import com.rongwei.rwcommon.base.R;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.Map;
@@ -33,5 +36,13 @@ public class EquLubricationPlanController {
     public void wordExportLubrication(@RequestBody Map<String, Object> parameter, HttpServletResponse response){
         equLubricationPlanService.wordExportLubrication(parameter,response);
     }
+
+
+    @Scheduled(cron = "0 0 7 * * ? ")
+    @PostMapping("/task")
+    public R timedTask() {
+        return equLubricationPlanService.timedTask();
+    }
+
 }