Explorar o código

创新设备-设备处置、维修申请、维修上报设备故障邮件

chenguangyu hai 9 meses
pai
achega
054a91627f
Modificáronse 12 ficheiros con 1036 adicións e 4 borrados
  1. 24 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquMaintenanceOrderDao.java
  2. 35 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquMaintenanceReportDao.java
  3. 21 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquipmentDisposeDao.java
  4. 3 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquMaintenanceOrderService.java
  5. 12 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquMaintenanceReportService.java
  6. 5 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquipmentArchivesService.java
  7. 53 4
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquMaintenanceOrderServiceImpl.java
  8. 73 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquMaintenanceReportServiceImpl.java
  9. 129 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquipmentArchivesServiceImpl.java
  10. 369 0
      cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquDisposalRequestDo.java
  11. 249 0
      cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquMaintenanceReportDo.java
  12. 63 0
      cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/SendEmailController.java

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

@@ -3,6 +3,7 @@ package com.rongwei.bscommon.sys.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwei.bsentity.domain.EquMaintenanceOrderDo;
 import com.rongwei.bsentity.dto.EquMaintenanceOrderSumDTO;
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
@@ -10,6 +11,27 @@ import java.util.Date;
 import java.util.List;
 
 public interface EquMaintenanceOrderDao extends BaseMapper<EquMaintenanceOrderDo> {
+
+    @Select("SELECT\n" +
+            "  DISTINCT\n" +
+            "  u.NAME,\n" +
+            "\tu.EMAIL,\n" +
+            "\tr.NAME AS roleName\n" +
+            "FROM\n" +
+            "\tsys_user u\n" +
+            "LEFT JOIN sys_user_role ur ON u.ID = ur.USERID\n" +
+            "LEFT JOIN sys_role r ON ur.ROLEID = r.ID\n" +
+            "LEFT JOIN sys_user_org uo ON u.ID = uo.USERID\n" +
+            "LEFT JOIN sys_organization org ON uo.ORGID = org.ID\n" +
+            "WHERE \n" +
+            "u.DELETED = 0\n" +
+            "AND ORGID = #{workshopid}\n" +
+            "AND r.NAME = '车间主任' OR r.NAME = '车间维修主管'\n" +
+            "GROUP BY\n" +
+            "  u.EMAIL")
+    List<SysUserDo> selectEmailList( @Param("workshopid") String workshopid);
+
+
     @Select("SELECT\n" +
             "  d.PLANT,d.DEVICETYPE,d.PROBLEMLOCATION,COUNT(d.ID) 'COUNT',\n" +
             "\tGROUP_CONCAT(d.ID  ) 'IDS' \n" +
@@ -54,4 +76,6 @@ public interface EquMaintenanceOrderDao extends BaseMapper<EquMaintenanceOrderDo
 //            "WHERE sr.NAME in('设备部部长','车间维修主管','设备部维修主管') \n")
     List<String> selectRoleList(@Param("roleCodes") List<String> roleCode);
 
+
+
 }

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

@@ -0,0 +1,35 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.EquMaintenanceReportDo;
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.Date;
+import java.util.List;
+
+public interface EquMaintenanceReportDao extends BaseMapper<EquMaintenanceReportDo> {
+
+    @Select("SELECT\n" +
+            "  DISTINCT\n" +
+            "  u.NAME,\n" +
+            "\tu.EMAIL,\n" +
+            "\tr.NAME AS roleName\n" +
+            "FROM\n" +
+            "\tsys_user u\n" +
+            "LEFT JOIN sys_user_role ur ON u.ID = ur.USERID\n" +
+            "LEFT JOIN sys_role r ON ur.ROLEID = r.ID\n" +
+            "LEFT JOIN sys_user_org uo ON u.ID = uo.USERID\n" +
+            "LEFT JOIN sys_organization org ON uo.ORGID = org.ID\n" +
+            "WHERE \n" +
+            "u.DELETED = 0\n" +
+            "AND ORGID = #{workshopid}\n" +
+            "AND r.NAME = '车间主任' OR r.NAME = '车间维修主管' OR r.NAME = '生产计划员'\n" +
+            "GROUP BY\n" +
+            "  u.EMAIL")
+    List<SysUserDo> selectEmailList( @Param("workshopid") String workshopid);
+
+
+
+}

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

@@ -0,0 +1,21 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.EquDisposalRequestDo;
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+public interface EquipmentDisposeDao extends BaseMapper<EquDisposalRequestDo> {
+    @Select({
+            "<script>",
+            "SELECT `NAME`, EMAIL FROM sys_user WHERE DELETED = '0' AND id IN",
+            "<foreach item='item' collection='ids' open='(' separator=',' close=')'>",
+            "#{item}",
+            "</foreach>",
+            "</script>"
+    })
+    List<SysUserDo> selectEmailList(@Param("ids") String[] ids);
+}

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

@@ -3,8 +3,10 @@ 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.rwcommon.base.R;
 
 import java.util.List;
+import java.util.Map;
 
 public interface EquMaintenanceOrderService extends IService<EquMaintenanceOrderDo> {
 
@@ -39,4 +41,5 @@ public interface EquMaintenanceOrderService extends IService<EquMaintenanceOrder
     String generateDeviceRepeatedlyFailsExcel(List<EquMaintenanceOrderSumDTO> list, String noticeId);
 
 
+    R sendEmail(Map<String, Object> myObject);
 }

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

@@ -0,0 +1,12 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.domain.EquMaintenanceReportDo;
+import com.rongwei.rwcommon.base.R;
+
+import java.util.Map;
+
+public interface EquMaintenanceReportService extends IService<EquMaintenanceReportDo> {
+
+    R sendEmail(Map<String, Object> myObject);
+}

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

@@ -3,6 +3,9 @@ package com.rongwei.bscommon.sys.service;
 import com.rongwei.bsentity.dto.EquipmentDisposeDTO;
 import com.rongwei.rwcommon.base.R;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * @author shangmi
  * @title EquipmentArchivesService
@@ -21,4 +24,6 @@ public interface EquipmentArchivesService {
      */
 
     R updateEquipmentData(EquipmentDisposeDTO equipmentDisposeDTO);
+
+    R sendEmail(Map<String, Object> myObject);
 }

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

@@ -2,13 +2,18 @@ package com.rongwei.bscommon.sys.service.impl;
 import cn.hutool.core.io.resource.ClassPathResource;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.dao.EquMaintenanceOrderDao;
+import com.rongwei.bscommon.sys.dao.EquipmentDisposeDao;
 import com.rongwei.bscommon.sys.service.EquMaintenanceOrderService;
 import com.rongwei.bscommon.sys.utils.ExcelUtils;
 import com.rongwei.bsentity.domain.EquMaintenanceOrderDo;
 import com.rongwei.bsentity.dto.EquMaintenanceOrderSumDTO;
 import com.rongwei.bsentity.enums.PlantEnum;
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
 import com.rongwei.rwadmincommon.system.service.SysDictService;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.vo.MailDo;
 import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
+import com.rongwei.safecommon.fegin.CXCommonFeginClient;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
@@ -17,10 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import java.io.InputStream;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.rongwei.safecommon.utils.SaveConstans.DatePattern.DATE_PATTERN_YMD;
@@ -38,6 +40,8 @@ public class EquMaintenanceOrderServiceImpl extends ServiceImpl<EquMaintenanceOr
     @Autowired
     private SysDictService sysDictService;
 
+    @Autowired
+    private CXCommonFeginClient cxCommonFeginClient;
 
     /**
      * 根据故障发生时间自动查询每个工厂近3个月内 (以本月在往前倒推三个月至当前时间)所有 除去 无需维修、已关闭  且  维修对象分类 为 档案设备、工装 的 维修任务记录中,
@@ -143,6 +147,51 @@ public class EquMaintenanceOrderServiceImpl extends ServiceImpl<EquMaintenanceOr
         return "";
     }
 
+    @Override
+    public R sendEmail(Map<String, Object> myObject) {
+        String createusername = (String) myObject.get("CREATEUSERNAME");//申请人
+        String maintenancetime = (String) myObject.get("MAINTENANCETIME");//报修时间
+        String workshop = (String) myObject.get("WORKSHOP");//使用车间
+        String workshopid = (String) myObject.get("WORKSHOPID");//使用车间ID
+        String equipmentname = (String) myObject.get("EQUIPMENTNAME");//工装名称
+        String equipmentnumber = (String) myObject.get("EQUIPMENTNUMBER");//工装编号
+
+        List<SysUserDo> emais = equMaintenanceOrderDao.selectEmailList(workshopid);
+        StringBuilder sb = new StringBuilder();
+        for (SysUserDo user : emais) {
+            // 从 SysUserDo 对象中获取邮件地址,并添加到字符串构建器中
+            String emailAddress = user.getEmail();
+            sb.append(emailAddress).append(",");
+        }
+        // 移除最后一个逗号
+        if (sb.length() > 0) {
+            sb.deleteCharAt(sb.length() - 1);
+        }
+        String[] filteredEmailArray = Arrays.stream(sb.toString().split(","))
+                .map(String::trim) // 去除每个邮件地址的前后空白
+                .filter(email -> !email.isEmpty()) // 过滤掉空字符串
+                .toArray(String[]::new); // 收集为字符串数组
+
+        if (filteredEmailArray.length > 0) {
+            MailDo mailDo = new MailDo();
+            mailDo.setReceiveEmail(filteredEmailArray);
+            mailDo.setNeedTransReceive(false);
+            mailDo.setCcEmail(new String[]{});
+            mailDo.setSubject("维修申请流程审批任务提醒");
+            String content = "尊敬的各位领导," +
+                    "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
+                    createusername + "于 " + maintenancetime +" 对"+workshop+"的"+equipmentname+ "(" + equipmentnumber + ") 的工装进行了保修申请,请各位领导知悉,请及时联系维修工程进行维修" +
+                    "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
+                    "系统登录地址: 把内部的登录地址弄上";
+            mailDo.setContent(content);
+            // 发送邮件
+            R r = cxCommonFeginClient.sendHtmlMail(mailDo);
+        } else {
+            return R.error("汇报对象邮箱不能为空");
+        }
+        return R.ok();
+    }
+
     /**
      * 填充后3页工厂数据
      *

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

@@ -0,0 +1,73 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bscommon.sys.dao.EquMaintenanceReportDao;
+import com.rongwei.bscommon.sys.service.EquMaintenanceReportService;
+import com.rongwei.bsentity.domain.EquMaintenanceReportDo;
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.vo.MailDo;
+import com.rongwei.safecommon.fegin.CXCommonFeginClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+@Slf4j
+public class EquMaintenanceReportServiceImpl extends ServiceImpl<EquMaintenanceReportDao, EquMaintenanceReportDo> implements EquMaintenanceReportService {
+
+    @Autowired
+    private CXCommonFeginClient cxCommonFeginClient;
+    @Autowired
+    private EquMaintenanceReportDao equMaintenanceReportDao;
+
+    @Override
+    public R sendEmail(Map<String, Object> myObject) {
+        String reportueser = (String) myObject.get("REPORTUESER");//上报人
+        String incidenttime = (String) myObject.get("INCIDENTTIME");//申报时间
+        String workshop = (String) myObject.get("WORKSHOP");//使用车间名称
+        String workshopid = (String) myObject.get("WORKSHOPID");//使用车间ID
+        String equipmentname = (String) myObject.get("EQUIPMENTNAME");//设备名称
+        String equipmentnumber = (String) myObject.get("EQUIPMENTNUMBER");//设备编号
+
+
+        List<SysUserDo> emais = equMaintenanceReportDao.selectEmailList(workshopid);
+        StringBuilder sb = new StringBuilder();
+        for (SysUserDo user : emais) {
+            // 从 SysUserDo 对象中获取邮件地址,并添加到字符串构建器中
+            String emailAddress = user.getEmail();
+            sb.append(emailAddress).append(",");
+        }
+        // 移除最后一个逗号
+        if (sb.length() > 0) {
+            sb.deleteCharAt(sb.length() - 1);
+        }
+        String[] filteredEmailArray = Arrays.stream(sb.toString().split(","))
+                .map(String::trim) // 去除每个邮件地址的前后空白
+                .filter(email -> !email.isEmpty()) // 过滤掉空字符串
+                .toArray(String[]::new); // 收集为字符串数组
+
+        if (filteredEmailArray.length > 0) {
+            MailDo mailDo = new MailDo();
+            mailDo.setReceiveEmail(filteredEmailArray);
+            mailDo.setNeedTransReceive(false);
+            mailDo.setCcEmail(new String[]{});
+            mailDo.setSubject("维修上报设备故障流程审批任务提醒");
+            String content = "尊敬的各位领导," +
+                    "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
+                    reportueser + "于 " + incidenttime +" 对"+workshop+"的"+equipmentname+ "(" + equipmentnumber + ") 的设备进行了设备故障上报登记,请各位领导知悉,请车间主管人员及时确认故障是否真实存在,同时请计划人员到设备管理平台子系统中的“维修上报设备故障”模块中对上报的设备故障进行安排时间维修,及时对设备故障进行解决修复,避免设备在生产时出现停机异常。" +
+                    "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
+                    "系统登录地址: 把内部的登录地址弄上";
+            mailDo.setContent(content);
+            // 发送邮件
+            R r = cxCommonFeginClient.sendHtmlMail(mailDo);
+        } else {
+            return R.error("汇报对象邮箱不能为空");
+        }
+        return R.ok();
+    }
+
+
+}

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

@@ -1,14 +1,25 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import com.rongwei.bscommon.sys.dao.EquipmentDisposeDao;
 import com.rongwei.bscommon.sys.service.*;
 import com.rongwei.bscommon.sys.utils.ExceptionUtils;
 import com.rongwei.bsentity.domain.AspCheckItemsAreaDo;
+import com.rongwei.bsentity.domain.EquDisposalRequestDo;
 import com.rongwei.bsentity.dto.EquipmentDisposeDTO;
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
 import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.vo.MailDo;
+import com.rongwei.safecommon.fegin.CXCommonFeginClient;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author shangmi
@@ -41,6 +52,12 @@ public class EquipmentArchivesServiceImpl implements EquipmentArchivesService {
     @Autowired
     private EquipmentSendNotifyService sendNotifyService;
 
+    @Autowired
+    private EquipmentDisposeDao equipmentDisposeDao;
+
+    @Autowired
+    private CXCommonFeginClient cxCommonFeginClient;
+
     /**
      * 更新设备库
      *
@@ -87,4 +104,116 @@ public class EquipmentArchivesServiceImpl implements EquipmentArchivesService {
         }
         return R.ok();
     }
+
+    @Override
+    public R sendEmail(Map<String, Object> myObject) {
+        String type = (String) myObject.get("TYPE");//'1'为发起流程 or 退回重新发起流程、'2'流程中的节点
+        if ("1".equals(type)){
+            String id = (String) myObject.get("FORMID");
+            EquDisposalRequestDo equDisposalRequestDo = equipmentDisposeDao.selectById(id);
+            String mssmanagerid = equDisposalRequestDo.getMssmanagerid();//安全部部长id
+            String workshop = equDisposalRequestDo.getWorkshop();//使用部门名称、车间
+            String equipmentname = equDisposalRequestDo.getEquipmentName();//设备名称
+            String equipmentnumber = equDisposalRequestDo.getEquipmentNumber();//设备编号
+
+            //抄送人 id 数组处理
+            String[] strArray = mssmanagerid.split(",");
+            List<SysUserDo> emais = equipmentDisposeDao.selectEmailList(strArray);
+            StringBuilder sb = new StringBuilder();
+            for (SysUserDo user : emais) {
+                // 从 SysUserDo 对象中获取邮件地址,并添加到字符串构建器中
+                String emailAddress = user.getEmail();
+                sb.append(emailAddress).append(",");
+            }
+            // 移除最后一个逗号
+            if (sb.length() > 0) {
+                sb.deleteCharAt(sb.length() - 1);
+            }
+            String[] filteredEmailArray = Arrays.stream(sb.toString().split(","))
+                    .map(String::trim) // 去除每个邮件地址的前后空白
+                    .filter(email -> !email.isEmpty()) // 过滤掉空字符串
+                    .toArray(String[]::new); // 收集为字符串数组
+
+            if (filteredEmailArray.length > 0) {
+                MailDo mailDo = new MailDo();
+                mailDo.setReceiveEmail(filteredEmailArray);
+                mailDo.setNeedTransReceive(false);
+                mailDo.setCcEmail(new String[]{});
+                mailDo.setSubject("设备处置流程审批任务提醒");
+                String content = "尊敬的各位领导," +
+                        "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
+                        "您有一个" + workshop + "的 " + equipmentname + "(" + equipmentnumber + ") 的设备处置审批任务,请及时到创新智慧工厂平台中的个人工作台中进行任务审批,若是未找到对应审批任务,则为某个领导已审批完成。可在对应APP端或者PC端进行任务审批" +
+                        "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
+                        "系统登录地址: 把内部的登录地址弄上";
+                mailDo.setContent(content);
+                // 发送邮件
+                R r = cxCommonFeginClient.sendHtmlMail(mailDo);
+            } else {
+                return R.error("汇报对象邮箱不能为空");
+            }
+
+        }else if ("2".equals(type)){
+//            逻辑如下: 在流程的每个节点审批通过后 给下个环节的审批人员 发送 邮件提醒的功能
+//            提醒信息: 尊敬的各位领导,您有一个【车间】的【设备名称(设备编号)】的设备处置审批任务,请及时到创新智慧工厂平台中的个人工作台中进行任务审批,若是未找到对应审批任务,则为某个领导已审批完成。可在对应APP端或者PC端进行任务审批
+//            系统登录地址: 把内部的登录地址弄上
+//            需发送邮件的提醒人:取下个环节的对应审批人,然后去重, 之后给这些人员发送邮件,没有邮箱的就不发送
+//            注意:只发邮件,不生成提醒信息。
+            String taskname = (String) myObject.get("taskname");
+            String formId = (String) myObject.get("formId");
+            //根据 formId 在EquipmentDisposeDTO 中获取数据
+            EquDisposalRequestDo equDisposalRequestDo = equipmentDisposeDao.selectById(formId);
+            String workshop = equDisposalRequestDo.getWorkshop();//使用部门名称、车间
+            String equipmentname = equDisposalRequestDo.getEquipmentName();//设备名称
+            String equipmentnumber = equDisposalRequestDo.getEquipmentNumber();//设备编号
+
+            String recipient = "";
+            if ("安全部".equals(taskname)){
+                recipient = equDisposalRequestDo.getMtqmanagerid();
+            } else if ("技质部".equals(taskname)) {
+                recipient = equDisposalRequestDo.getEqumanagerid();
+            } else if ("设备部".equals(taskname)) {
+                recipient = equDisposalRequestDo.getWdmanagerid();
+            } else if ("仓储部".equals(taskname)) {
+                recipient = equDisposalRequestDo.getVicepresidentid();
+            } else if ("副总经理".equals(taskname)) {
+                recipient = equDisposalRequestDo.getGeneralmanagerid();
+            } else if ("总经理".equals(taskname)) {
+                recipient = equDisposalRequestDo.getFinanceofficeid();
+            }
+            String[] strArray = recipient.split(",");
+            List<SysUserDo> emais = equipmentDisposeDao.selectEmailList(strArray);
+            StringBuilder sb = new StringBuilder();
+            for (SysUserDo user : emais) {
+                // 从 SysUserDo 对象中获取邮件地址,并添加到字符串构建器中
+                String emailAddress = user.getEmail();
+                sb.append(emailAddress).append(",");
+            }
+            // 移除最后一个逗号
+            if (sb.length() > 0) {
+                sb.deleteCharAt(sb.length() - 1);
+            }
+            String[] filteredEmailArray = Arrays.stream(sb.toString().split(","))
+                    .map(String::trim) // 去除每个邮件地址的前后空白
+                    .filter(email -> !email.isEmpty()) // 过滤掉空字符串
+                    .toArray(String[]::new); // 收集为字符串数组
+            if (filteredEmailArray.length > 0) {
+                MailDo mailDo = new MailDo();
+                mailDo.setReceiveEmail(filteredEmailArray);
+                mailDo.setNeedTransReceive(false);
+                mailDo.setCcEmail(new String[]{});
+                mailDo.setSubject("设备处置流程审批任务提醒");
+                String content = "尊敬的各位领导," +
+                        "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
+                        "您有一个" + workshop + "的 " + equipmentname + "(" + equipmentnumber + ") 的设备处置审批任务,请及时到创新智慧工厂平台中的个人工作台中进行任务审批,若是未找到对应审批任务,则为某个领导已审批完成。可在对应APP端或者PC端进行任务审批" +
+                        "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
+                        "系统登录地址: 把内部的登录地址弄上";
+                mailDo.setContent(content);
+                // 发送邮件
+                R r = cxCommonFeginClient.sendHtmlMail(mailDo);
+            } else {
+                return R.error("汇报对象邮箱不能为空");
+            }
+        }
+        return R.ok();
+    }
 }

+ 369 - 0
cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquDisposalRequestDo.java

@@ -0,0 +1,369 @@
+package com.rongwei.bsentity.domain;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author  cyn
+ * @create 2024-07-12 09:24
+ */
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("equ_disposal_request")
+public class EquDisposalRequestDo {
+
+	/**
+	 * 主键ID
+	 */
+	private String id;
+
+	/**
+	 * 租户ID
+	 */
+	private String tenantId;
+
+	/**
+	 * 扩展json格式配置
+	 */
+	private String roption;
+
+	/**
+	 * 是否删除Y/N
+	 */
+	private String deleted;
+
+	/**
+	 * 备注
+	 */
+	private String remark;
+
+	/**
+	 * 创建时间
+	 */
+	private Date createDate;
+
+	/**
+	 * 创建用户ID
+	 */
+	private String createUserId;
+
+	/**
+	 * 修改日期
+	 */
+	private Date modifyDate;
+
+	/**
+	 * 修改用户ID
+	 */
+	private String modifyUserId;
+
+	/**
+	 * 创建人
+	 */
+	private String createUserName;
+
+	/**
+	 * 修改人
+	 */
+	private String modifyUserName;
+
+	/**
+	 * 状态
+	 */
+	private String status;
+
+	/**
+	 * 流程ID
+	 */
+	private String processInstId;
+
+	/**
+	 * 设备处置申请单号
+	 */
+	private String disposalRequestNumber;
+
+	/**
+	 * 处置类型
+	 */
+	private String handlingType;
+
+	/**
+	 * 对象分类
+	 */
+	private String objectType;
+
+	/**
+	 * 设备名称
+	 */
+	private String equipmentName;
+
+	/**
+	 * 设备ID
+	 */
+	private String equipmentId;
+
+	/**
+	 * 设备编号
+	 */
+	private String equipmentNumber;
+
+	/**
+	 * 设备分类
+	 */
+	private String equipmentType;
+
+	/**
+	 * 设备位置
+	 */
+	private String area;
+
+	/**
+	 * 使用部门ID
+	 */
+	private String workshopId;
+
+	/**
+	 * 使用部门
+	 */
+	private String workshop;
+
+	/**
+	 * 规格型号
+	 */
+	private String specification;
+
+	/**
+	 * 设备启用时间
+	 */
+	private Date activeTime;
+
+	/**
+	 * 设备运行年限
+	 */
+	private Integer operatingLife;
+
+	/**
+	 * 处置原因
+	 */
+	private String reasonDisposal;
+
+	/**
+	 * 其他处置原因
+	 */
+	private String otherReasonDisposal;
+
+	/**
+	 * 移出工厂
+	 */
+	private String rolloutplantid;
+
+	/**
+	 * 移出部门车间ID
+	 */
+	private String rolloutdeptid;
+
+	/**
+	 * 移出部门车间
+	 */
+	private String rolloutdept;
+
+	/**
+	 * 转出位置
+	 */
+	private String rolloutlocation;
+
+	/**
+	 * 转入工厂
+	 */
+	private String rollinplantid;
+
+	/**
+	 * 转入部门车间ID
+	 */
+	private String rollindeptid;
+
+	/**
+	 * 转入部门车间
+	 */
+	private String rollindept;
+
+	/**
+	 * 转入位置
+	 */
+	private String rollinlocation;
+
+	/**
+	 * 随机技术文件
+	 */
+	private String technicalfile;
+
+	/**
+	 * 申请部门ID
+	 */
+	private String applicationdeptid;
+
+	/**
+	 * 申请部门
+	 */
+	private String applicationdept;
+
+	/**
+	 * 申请人ID
+	 */
+	private String proposerid;
+
+	/**
+	 * 申请人
+	 */
+	private String proposer;
+
+	/**
+	 * 申请时间
+	 */
+	private Date applicationtime;
+
+	/**
+	 * 安全部部长
+	 */
+	private String mssmanagerid;
+
+	/**
+	 * 安全部部长名称
+	 */
+	private String mssmanager;
+
+	/**
+	 * 技质部部长
+	 */
+	private String mtqmanagerid;
+
+	/**
+	 * 技质部部长名称
+	 */
+	private String mtomanager;
+
+	/**
+	 * 设备部部长
+	 */
+	private String equmanagerid;
+
+	/**
+	 * 设备部部长名称
+	 */
+	private String equmanager;
+
+	/**
+	 * 仓储部部长
+	 */
+	private String wdmanagerid;
+
+	/**
+	 * 仓储部部长名称
+	 */
+	private String wdmanager;
+
+	/**
+	 * 副总经理
+	 */
+	private String vicepresidentid;
+
+	/**
+	 * 副总经理名称
+	 */
+	private String vicepresident;
+
+	/**
+	 * 总经理
+	 */
+	private String generalmanagerid;
+
+	/**
+	 * 总经理名称
+	 */
+	private String generalmanager;
+
+	/**
+	 * 财务处部长
+	 */
+	private String financeofficeid;
+
+	/**
+	 * 财务处部长名称
+	 */
+	private String financeoffice;
+
+	/**
+	 * 安全部部长名称审批人
+	 */
+	private String mssmanageraudit;
+
+	/**
+	 * 技质部部长名称审批人
+	 */
+	private String mtomanageraudit;
+
+	/**
+	 * 设备部部长名称审批人
+	 */
+	private String equmanageraudit;
+
+	/**
+	 * 仓储部部长名称审批人
+	 */
+	private String wdmanageraudit;
+
+	/**
+	 * 副总经理名称审批人
+	 */
+	private String vicepresidentaudit;
+
+	/**
+	 * 财务处部长名称审批人
+	 */
+	private String financeofficeaudit;
+
+	/**
+	 * 安全部部长时间
+	 */
+	private Date mssmanagertime;
+
+	/**
+	 * 技质部部长时间
+	 */
+	private Date mtomanagertime;
+
+	/**
+	 * 设备部部长时间
+	 */
+	private Date equmanagertime;
+
+	/**
+	 * 仓储部部长时间
+	 */
+	private Date wdmanagertime;
+
+	/**
+	 * 副总经理时间
+	 */
+	private Date vicepresidenttime;
+
+	/**
+	 * 总经理时间
+	 */
+	private Date generalmanagertime;
+
+	/**
+	 * 财务处部长时间
+	 */
+	private Date financeofficetime;
+
+}

+ 249 - 0
cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquMaintenanceReportDo.java

@@ -0,0 +1,249 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("equ_maintenance_report")
+public class EquMaintenanceReportDo {
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 工厂
+     */
+    private String tenantid;
+
+    /**
+     * 工厂名称
+     */
+    private String plant;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人名称
+     */
+    private String createusername;
+
+    /**
+     * 修改人名称
+     */
+    private String modifyusername;
+
+    /**
+     * 上报编号
+     */
+    private String jobnumber;
+
+    /**
+     * 故障来源
+     */
+    private String faultsource;
+
+    /**
+     * 故障分类
+     */
+    private String faultclassify;
+
+    /**
+     * 维修对象分类
+     */
+    private String maintenanceclassify;
+
+    /**
+     * 设备名称
+     */
+    private String equipmentname;
+
+    /**
+     * 设备ID
+     */
+    private String equipmentid;
+
+    /**
+     * 设备编号
+     */
+    private String equipmentnumber;
+
+    /**
+     * 规格型号
+     */
+    private String specification;
+
+    /**
+     * 区域
+     */
+    private String area;
+
+    /**
+     * 问题发生部位
+     */
+    private String problemlocation;
+
+    /**
+     * 关联维修工单ID
+     */
+    private String relationmaintenanceorderid;
+
+    /**
+     * 维修紧急情况
+     */
+    private String repairurgency;
+
+    /**
+     * 问题上报时间
+     */
+    private Date incidenttime;
+
+    /**
+     * 是否需要停机
+     */
+    private String ishalt;
+
+    /**
+     * 停机时间
+     */
+    private Date halttime;
+
+    /**
+     * 预计维修时长
+     */
+    private BigDecimal repairusingtime;
+
+    /**
+     * 上报状态
+     */
+    private String reportstatus;
+
+    /**
+     * 使用车间ID
+     */
+    private String workshopid;
+
+    /**
+     * 使用车间
+     */
+    private String workshop;
+
+    /**
+     * 工序主管/车间主任ID
+     */
+    private String gxzgid;
+
+    /**
+     * 工序主管/车间主任
+     */
+    private String gxzg;
+
+    /**
+     * 上报人ID
+     */
+    private String reportueserid;
+
+    /**
+     * 上报人
+     */
+    private String reportueser;
+
+    /**
+     * 设备问题
+     */
+    private String faultcondition;
+
+    /**
+     * 故障图
+     */
+    private String equipmentfault;
+
+    /**
+     * 申请部门
+     */
+    private String applicationdept;
+
+    /**
+     * 申请部门ID
+     */
+    private String applicationdeptid;
+
+    /**
+     * 故障发生原因
+     */
+    private String causefailure;
+
+    /**
+     * 计划开始维修时间
+     */
+    private Date planstarttime;
+
+    /**
+     * 计划完成维修时间
+     */
+    private Date planendtime;
+
+    /**
+     * 维修主管ID
+     */
+    private String servicepersionid;
+
+    /**
+     * 维修主管
+     */
+    private String serviceperson;
+
+    /**
+     * 维修工程师ID
+     */
+    private String maintenanceengineerid;
+
+    /**
+     * 维修工程师NAME
+     */
+    private String maintenanceengineername;
+
+
+
+
+}

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

@@ -0,0 +1,63 @@
+package com.rongwei.bsserver.sys.controller;
+
+import com.rongwei.bscommon.sys.service.EquMaintenanceOrderService;
+import com.rongwei.bscommon.sys.service.EquMaintenanceReportService;
+import com.rongwei.bscommon.sys.service.EquipmentArchivesService;
+import com.rongwei.rwcommon.base.R;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("sendEmail")
+@Slf4j
+public class SendEmailController {
+
+
+    @Autowired
+    private EquipmentArchivesService equipmentArchivesService;
+
+    @Autowired
+    private EquMaintenanceOrderService equMaintenanceOrderService;
+
+    @Autowired
+    private EquMaintenanceReportService equMaintenanceReportService;
+
+
+    /**
+     * 设备处置流程邮件提醒
+     * @return
+     */
+    @PostMapping("/EquipmentDisposalEmail")
+    public R deleteValidate(@RequestBody Map<String,Object> myObject){
+            R r = equipmentArchivesService.sendEmail(myObject);
+            return r.ok();
+    }
+
+
+    /**
+     * 维修申请流程邮件提醒
+     * @return
+     */
+    @PostMapping("/EquMaintenanceOrderEmail")
+    public R equMaintenanceOrderEmail(@RequestBody Map<String,Object> myObject){
+        R r = equMaintenanceOrderService.sendEmail(myObject);
+        return r.ok();
+    }
+
+    /**
+     * 维修上报设备故障流程邮件提醒
+     * @return
+     */
+    @PostMapping("/EquMaintenanceReportEmail")
+    public R equMaintenanceReportEmail(@RequestBody Map<String,Object> myObject){
+        R r = equMaintenanceReportService.sendEmail(myObject);
+        return r.ok();
+    }
+}