소스 검색

Merge remote-tracking branch 'origin/master'

future 3 년 전
부모
커밋
d43473e029
34개의 변경된 파일540개의 추가작업 그리고 206개의 파일을 삭제
  1. 1 0
      platform-common/src/main/java/com/platform/common/model/UserInfo.java
  2. 1 1
      platform-dao/src/main/java/com/platform/dao/dto/check/CheckStandardDTO.java
  3. 0 60
      platform-dao/src/main/java/com/platform/dao/dto/part/PartInfoDTO.java
  4. 6 0
      platform-dao/src/main/java/com/platform/dao/dto/sqarepartmanage/SparePartInfoDTO.java
  5. 2 0
      platform-dao/src/main/java/com/platform/dao/dto/upms/SysUserDTO.java
  6. 2 0
      platform-dao/src/main/java/com/platform/dao/dto/upms/UserInfoDTO.java
  7. 15 0
      platform-dao/src/main/java/com/platform/dao/dto/workplace/WorkplaceBacklogDTO.java
  8. 0 67
      platform-dao/src/main/java/com/platform/dao/entity/part/PartInfo.java
  9. 7 0
      platform-dao/src/main/java/com/platform/dao/entity/sqarepartmanage/SparePartInfo.java
  10. 2 0
      platform-dao/src/main/java/com/platform/dao/entity/upms/SysUser.java
  11. 2 2
      platform-dao/src/main/java/com/platform/dao/enums/SysFileTypeEnum.java
  12. 2 1
      platform-dao/src/main/java/com/platform/dao/mapper/check/CheckStandardMapper.java
  13. 2 0
      platform-dao/src/main/java/com/platform/dao/vo/SysUserVO.java
  14. 6 1
      platform-dao/src/main/java/com/platform/dao/vo/query/check/CheckStandardVO.java
  15. 5 3
      platform-dao/src/main/resources/mapper/check/CheckStandardMapper.xml
  16. 4 26
      platform-dao/src/main/resources/mapper/part/PartInfoMapper.xml
  17. 26 1
      platform-rest/src/main/java/com/platform/rest/controller/check/CheckStandardController.java
  18. 12 0
      platform-rest/src/main/java/com/platform/rest/controller/part/PartInfoController.java
  19. 12 0
      platform-rest/src/main/java/com/platform/rest/controller/sb/SbModelSpareBomController.java
  20. 10 0
      platform-rest/src/main/resources/application-dev.yml
  21. 11 0
      platform-rest/src/main/resources/application-prod.yml
  22. 11 0
      platform-rest/src/main/resources/application-test.yml
  23. 37 0
      platform-rest/src/test/java/com/test/SendEmailTest.java
  24. 5 0
      platform-service/pom.xml
  25. 9 0
      platform-service/src/main/java/com/platform/service/check/CheckStandardService.java
  26. 66 5
      platform-service/src/main/java/com/platform/service/check/impl/CheckStandardServiceImpl.java
  27. 3 1
      platform-service/src/main/java/com/platform/service/event/EventConfiguration.java
  28. 13 0
      platform-service/src/main/java/com/platform/service/event/EventListenerBean.java
  29. 4 0
      platform-service/src/main/java/com/platform/service/event/WorkplaceBacklogEvent.java
  30. 36 0
      platform-service/src/main/java/com/platform/service/mail/MailService.java
  31. 121 0
      platform-service/src/main/java/com/platform/service/mail/MailServiceImpl.java
  32. 32 22
      platform-service/src/main/java/com/platform/service/repair/impl/RepairApplicationFormServiceImpl.java
  33. 71 12
      platform-service/src/main/java/com/platform/service/sqarepartmanage/impl/SparePartInfoServiceImpl.java
  34. 4 4
      platform-service/src/main/java/com/platform/service/work/impl/WorkStandardServiceImpl.java

+ 1 - 0
platform-common/src/main/java/com/platform/common/model/UserInfo.java

@@ -170,4 +170,5 @@ public class UserInfo implements Serializable {
     private BigDecimal auditDelayPeriod;
 
     private Boolean workFlag;
+    private String email;
 }

+ 1 - 1
platform-dao/src/main/java/com/platform/dao/dto/check/CheckStandardDTO.java

@@ -139,7 +139,7 @@ public class CheckStandardDTO extends BaseDTO implements Serializable {
     /**
      * 标准参数
      */
-    private List<CheckStandardParamDTO> paramList;
+    /*private List<CheckStandardParamDTO> paramList;*/
 
 
 }

+ 0 - 60
platform-dao/src/main/java/com/platform/dao/dto/part/PartInfoDTO.java

@@ -48,71 +48,11 @@ public class PartInfoDTO extends BaseDTO implements Serializable {
      */
     private Integer level;
 
-    /**
-     * 生产商
-     */
-    private String producerId;
-
-    /**
-     * 设备来源方式
-     */
-    private Integer sourceType;
-
-    /**
-     * 来源设备id
-     */
-    private String sourceSbId;
-
     /**
      * 所属设备id
      */
     private String sbId;
 
-    /**
-     * 计量单位
-     */
-    private Integer unit;
-
-    /**
-     * 规格型号
-     */
-    private String guigeId;
-
-    /**
-     * 购置日期
-     */
-    private LocalDate buyDate;
-
-    /**
-     * 投用日期
-     */
-    private LocalDate startDate;
-
-    /**
-     * 下次检定日期
-     */
-    private LocalDate nextCheckDate;
-
-    /**
-     * 保修截至日期
-     */
-    private LocalDate guaranteeDate;
-
-    /**
-     * 预计工作年限
-     */
-    private Double workYear;
-
-    /**
-     * 预计报废日期
-     */
-    private LocalDate retirementDate;
-
-    /**
-     * 设备图片
-     */
-    private String sbImage;
-
     /**
      * 状态
      */

+ 6 - 0
platform-dao/src/main/java/com/platform/dao/dto/sqarepartmanage/SparePartInfoDTO.java

@@ -2,6 +2,7 @@ package com.platform.dao.dto.sqarepartmanage;
 
 import com.platform.common.bean.BaseDTO;
 import com.platform.common.validation.group.UpdateGroup;
+import com.platform.dao.entity.upms.SysFile;
 import com.platform.office.annotation.Excel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -217,4 +218,9 @@ public class SparePartInfoDTO extends BaseDTO implements Serializable {
     @Transient
     private String modelId;
 
+    /**
+     * 报修图片
+     */
+    private List<SysFile> applicationFileList;
+
 }

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/dto/upms/SysUserDTO.java

@@ -232,4 +232,6 @@ public class SysUserDTO extends BaseDTO implements Serializable {
     private BigDecimal auditDelayPeriod;
 
     private Boolean workFlag;
+
+    private String email;
 }

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/dto/upms/UserInfoDTO.java

@@ -220,4 +220,6 @@ public class UserInfoDTO implements Serializable {
 
     private Boolean workFlag;
 
+    private String email;
+
 }

+ 15 - 0
platform-dao/src/main/java/com/platform/dao/dto/workplace/WorkplaceBacklogDTO.java

@@ -95,6 +95,11 @@ public class WorkplaceBacklogDTO extends BaseDTO implements Serializable {
      */
     private List<String> userIds;
 
+    /**
+     * 接收人
+     */
+    private List<String> emails;
+
 
     public WorkplaceBacklogDTO() {
     }
@@ -107,4 +112,14 @@ public class WorkplaceBacklogDTO extends BaseDTO implements Serializable {
         this.otherId = otherId;
         this.userIds = userIds;
     }
+
+    public WorkplaceBacklogDTO(Integer type, Integer detailType, String targetId, String content, String otherId, List<String> userIds, List<String> emails) {
+        this.detailType = detailType;
+        this.type = type;
+        this.targetId = targetId;
+        this.content = content;
+        this.otherId = otherId;
+        this.userIds = userIds;
+        this.emails = emails;
+    }
 }

+ 0 - 67
platform-dao/src/main/java/com/platform/dao/entity/part/PartInfo.java

@@ -41,62 +41,10 @@ public class PartInfo implements Serializable {
      * 设备等级
      */
     private Integer level;
-    /**
-     * 生产商
-     */
-    private String producerId;
-    /**
-     * 设备来源方式
-     */
-    private Integer sourceType;
-    /**
-     * 来源设备id
-     */
-    private String sourceSbId;
     /**
      * 所属设备id
      */
     private String sbId;
-    /**
-     * 计量单位
-     */
-    private Integer unit;
-    /**
-     * 规格型号
-     */
-    private String guigeId;
-    /**
-     * 购置日期
-     */
-    private LocalDate buyDate;
-    /**
-     * 投用日期
-     */
-    private LocalDate startDate;
-    /**
-     * 下次检定日期
-     */
-    private LocalDate nextCheckDate;
-    /**
-     * 保修截至日期
-     */
-    private LocalDate guaranteeDate;
-    /**
-     * 预计工作年限
-     */
-    private Double workYear;
-    /**
-     * 预计报废日期
-     */
-    private LocalDate retirementDate;
-    /**
-     * 设备图片
-     */
-    private String sbImage;
-    /**
-     * 状态
-     */
-    private Integer status;
     /**
      * 备注
      */
@@ -133,26 +81,11 @@ public class PartInfo implements Serializable {
      */
     @Transient
     private String sbName;
-    /**
-     * 来源设备
-     */
-    @Transient
-    private String sourceSbName;
     /**
      * 部件类型
      */
     @Transient
     private String typeName;
-    /**
-     * 规格
-     */
-    @Transient
-    private String guigeName;
-    /**
-     * 生产商名称
-     */
-    @Transient
-    private String producerName;
     /**
      * 数据权限
      */

+ 7 - 0
platform-dao/src/main/java/com/platform/dao/entity/sqarepartmanage/SparePartInfo.java

@@ -1,5 +1,6 @@
 package com.platform.dao.entity.sqarepartmanage;
 
+import com.platform.dao.entity.upms.SysFile;
 import lombok.Data;
 
 import javax.persistence.Id;
@@ -8,6 +9,8 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDate;
+import java.util.List;
+
 import com.platform.common.bean.DataScope;
 import lombok.experimental.Accessors;
 
@@ -204,6 +207,10 @@ public class SparePartInfo implements Serializable{
      * 英文名称
      */
     private String englishName;
+    /**
+     * 报修图片
+     */
+    private List<SysFile> applicationFileList;
     /**
      * 助记码
      */

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/entity/upms/SysUser.java

@@ -203,6 +203,8 @@ public class SysUser implements Serializable {
 
     private Boolean workFlag;
 
+    private String email;
+
     /**
      * 数据权限
      */

+ 2 - 2
platform-dao/src/main/java/com/platform/dao/enums/SysFileTypeEnum.java

@@ -24,8 +24,8 @@ public enum SysFileTypeEnum {
     SB_IMG(4, "设备图片"),
     REPAIR_APPLICATION_IMGS(11, "维修-报修图片"),
     REPAIR_REPAIR_IMGS(12, "维修-维修图片"),
-    REPAIR_CHECK_IMGS(13, "维修-验收图片");
-
+    REPAIR_CHECK_IMGS(13, "维修-验收图片"),
+    SPARE_IMGS(14, "备件图片");
     private Integer value;
     private final String description;
 }

+ 2 - 1
platform-dao/src/main/java/com/platform/dao/mapper/check/CheckStandardMapper.java

@@ -22,7 +22,7 @@ public interface CheckStandardMapper extends MyMapper<CheckStandard> {
      * @param dto
      * @return
      */
-    List<CheckStandard> selectList(CheckStandardDTO dto);
+    List<CheckStandardVO> selectList(CheckStandardDTO dto);
 
     /**
      * 查询型号对应的点检标准
@@ -37,4 +37,5 @@ public interface CheckStandardMapper extends MyMapper<CheckStandard> {
      * @return
      */
     List<CheckStandardVO> selectProjectStandardList(String projectId);
+
 }

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/vo/SysUserVO.java

@@ -180,4 +180,6 @@ public class SysUserVO implements Serializable {
     private BigDecimal auditDelayPeriod;
 
     private Boolean workFlag;
+
+    private String email;
 }

+ 6 - 1
platform-dao/src/main/java/com/platform/dao/vo/query/check/CheckStandardVO.java

@@ -68,9 +68,14 @@ public class CheckStandardVO extends BaseVO implements Serializable{
      */
     private Integer enable;
     /**
-     * 设备部位
+     * 设备部位Id
      */
     private String part;
+
+    /**
+     * 设备部位名称
+     */
+    private String partName;
     /**
      * 要求
      */

+ 5 - 3
platform-dao/src/main/resources/mapper/check/CheckStandardMapper.xml

@@ -110,10 +110,12 @@
             and checkstandard.name like concat('%',#{keyword},'%')
         </if>
     </sql>
-    <select id="selectList" parameterType="com.platform.dao.dto.check.CheckStandardDTO" resultType="com.platform.dao.vo.query.check.CheckStandardVO">
-        select checkstandard.*
-        from t_check_standard as checkstandard
+    <select id="selectList" parameterType="com.platform.dao.dto.check.CheckStandardDTO"
+            resultType="com.platform.dao.vo.query.check.CheckStandardVO">
+        select checkstandard.*, partInfo.name as partName
+        from t_check_standard as checkstandard, t_part_info partInfo
         <where>
+            checkstandard.part = partInfo.id
             <include refid="List_Condition"/>
         </where>
     </select>

+ 4 - 26
platform-dao/src/main/resources/mapper/part/PartInfoMapper.xml

@@ -7,45 +7,21 @@
         <result column="name" jdbcType="VARCHAR" property="name"/>
         <result column="type_id" jdbcType="VARCHAR" property="typeId"/>
         <result column="level" jdbcType="SMALLINT" property="level"/>
-        <result column="producer_id" jdbcType="VARCHAR" property="producerId"/>
-        <result column="source_type" jdbcType="SMALLINT" property="sourceType"/>
-        <result column="source_sb_id" jdbcType="VARCHAR" property="sourceSbId"/>
         <result column="sb_id" jdbcType="VARCHAR" property="sbId"/>
-        <result column="unit" jdbcType="SMALLINT" property="unit"/>
-        <result column="guige_id" jdbcType="VARCHAR" property="guigeId"/>
-        <result column="buy_date" jdbcType="DATE" property="buyDate"/>
-        <result column="start_date" jdbcType="DATE" property="startDate"/>
-        <result column="next_check_date" jdbcType="DATE" property="nextCheckDate"/>
-        <result column="guarantee_date" jdbcType="DATE" property="guaranteeDate"/>
-        <result column="work_year" jdbcType="DOUBLE" property="workYear"/>
-        <result column="retirement_date" jdbcType="DATE" property="retirementDate"/>
-        <result column="sb_image" jdbcType="VARCHAR" property="sbImage"/>
         <result column="status" jdbcType="SMALLINT" property="status"/>
         <result column="remark" jdbcType="VARCHAR" property="remark"/>
         <result column="created_user_id" jdbcType="VARCHAR" property="createdUserId"/>
         <result column="update_user_id" jdbcType="VARCHAR" property="updateUserId"/>
         <result column="created_time" jdbcType="TIMESTAMP" property="createdTime"/>
         <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
-        <association column="created_user_id" javaType="string" property="createdUserName"
-                     select="com.platform.dao.mapper.upms.SysUserMapper.selectUserNameById"/>
-        <association column="update_user_id" javaType="string" property="updateUserName"
-                     select="com.platform.dao.mapper.upms.SysUserMapper.selectUserNameById"/>
         <association column="type_id" javaType="string" property="typeName"
                      select="com.platform.dao.mapper.part.PartTypeMapper.selectNameById"/>
-        <association column="producer_id" javaType="string" property="producerName"
-                     select="com.platform.dao.mapper.firm.FirmProducerMapper.selectNameById"/>
         <association column="sb_id" javaType="string" property="sbName"
                      select="com.platform.dao.mapper.sb.SbInfoMapper.selectNameById"/>
-        <association column="guige_id" javaType="string" property="guigeName"
-                     select="com.platform.dao.mapper.sb.SbGuigeMapper.selectNameById"/>
-        <association column="source_sb_id" javaType="string" property="sourceSbName"
-                     select="com.platform.dao.mapper.sb.SbInfoMapper.selectNameById"/>
     </resultMap>
 
     <sql id="Base_Column_List">
-        id, no, name, type_id, level, producer_id, source_type, source_sb_id, sb_id, unit,
-    guige_id, buy_date, start_date, next_check_date, guarantee_date, work_year, retirement_date,
-    sb_image, status, remark, created_user_id, update_user_id, created_time, update_time
+        id, no, name, type_id, level, sb_id, remark, created_time, update_time
     </sql>
 
     <select id="selectPageList" parameterType="com.platform.dao.dto.part.PartInfoDTO" resultMap="BaseResultMap">
@@ -54,8 +30,10 @@
         from t_part_info
         <where>
             <if test="keyword != null and keyword != ''">
-                ( name like concat('%',#{keyword},'%') or
+                (
+                name like concat('%',#{keyword},'%') or
                 no like concat('%',#{keyword},'%')
+            )
             </if>
             <if test="sbId != null and sbId != ''">
                 and sb_id = #{sbId}

+ 26 - 1
platform-rest/src/main/java/com/platform/rest/controller/check/CheckStandardController.java

@@ -1,6 +1,7 @@
 package com.platform.rest.controller.check;
 
 import com.platform.common.util.R;
+import com.platform.dao.dto.check.CheckJobDTO;
 import com.platform.dao.dto.check.CheckStandardDTO;
 import com.platform.dao.entity.check.CheckStandard;
 import com.platform.service.check.CheckStandardService;
@@ -80,6 +81,30 @@ public class CheckStandardController {
       return new R<>();
   }
 
+    /**
+     * 通过标准直接生成任务
+     *
+     * @param id 点检标准DTO
+     * @return R
+     */
+    @SysLog("修改点检标准")
+    @PutMapping("generate/{id}")
+    public R generate(@PathVariable("id") String id) {
+        checkStandardService.generate(id);
+        return new R<>();
+    }
+
+    /**
+     * 任务数量
+     *
+     * @param checkStandardDTO 点检任务DTO
+     * @return R
+     */
+    @GetMapping("/num")
+    public R getNum(CheckStandardDTO checkStandardDTO) {
+        return new R<>(checkStandardService.getCountByDTO(checkStandardDTO));
+    }
+
   /**
    * 通过id删除一条记录
    *
@@ -129,7 +154,7 @@ public class CheckStandardController {
    */
   @GetMapping("")
   public R query(CheckStandardDTO checkStandardDTO) {
-      return new R<>(checkStandardService.getModelListByDTO(checkStandardDTO));
+      return new R<>(checkStandardService.selectList(checkStandardDTO));
   }
 
   /**

+ 12 - 0
platform-rest/src/main/java/com/platform/rest/controller/part/PartInfoController.java

@@ -5,6 +5,7 @@ import com.platform.common.util.BeanConverterUtil;
 import com.platform.common.util.R;
 import com.platform.common.validation.group.AddGroup;
 import com.platform.common.validation.group.UpdateGroup;
+import com.platform.dao.dto.check.CheckJobDTO;
 import com.platform.dao.dto.part.PartInfoDTO;
 import com.platform.dao.entity.part.PartInfo;
 import com.platform.dao.util.ExcelUtil;
@@ -123,6 +124,17 @@ public class PartInfoController {
         return new R<>(partInfoService.getModelListByDTO(partInfoDTO));
     }
 
+    /**
+     * 部位数量
+     *
+     * @param partInfoDTO
+     * @return R
+     */
+    @GetMapping("/num")
+    public R getNum(PartInfoDTO partInfoDTO) {
+        return new R<>(partInfoService.getCountByDTO(partInfoDTO));
+    }
+
     /**
      * 部件信息导出
      *

+ 12 - 0
platform-rest/src/main/java/com/platform/rest/controller/sb/SbModelSpareBomController.java

@@ -10,6 +10,7 @@ import com.platform.common.validation.group.AddGroup;
 import com.platform.common.validation.group.UpdateGroup;
 import com.platform.dao.dto.lubricationmanage.LubricationPlanStandardRelationDTO;
 import com.platform.dao.dto.sb.SbModelSpareBomDTO;
+import com.platform.dao.dto.sqarepartmanage.SparePartInfoDTO;
 import com.platform.dao.entity.lubricationmanage.LubricationPlanStandardRelation;
 import com.platform.dao.entity.sb.SbModel;
 import com.platform.dao.entity.sb.SbModelSpareBom;
@@ -60,6 +61,17 @@ public class SbModelSpareBomController {
       return new R<>(sbModelSpareBomService.getModelById(id));
   }
 
+    /**
+     * 数量
+     *
+     * @param sbModelSpareBomDTO
+     * @return R
+     */
+    @GetMapping("/num")
+    public R getNum(SbModelSpareBomDTO sbModelSpareBomDTO) {
+        return new R<>(sbModelSpareBomService.getCountByDTO(sbModelSpareBomDTO));
+    }
+
   /**
    * 新增记录
    *

+ 10 - 0
platform-rest/src/main/resources/application-dev.yml

@@ -51,6 +51,16 @@ spring:
     multipart:
       maxFileSize: "100MB"
       maxRequestSize: "1000MB"
+  mail:
+    host: smtp.exmail.qq.com #发送邮件服务器
+    username: chenyh@tuzhiall.com #发送邮件的邮箱地址
+    password:  Chenyuehu521 #客户端授权码,不是邮箱密码,这个在qq邮箱设置里面自动生成的
+    properties.mail.smtp.port: 465 #端口号465或587
+    from: chenyh@tuzhiall.com # 发送邮件的地址,和上面username一致
+    properties.mail.smtp.starttls.enable: true
+    properties.mail.smtp.starttls.required: true
+    properties.mail.smtp.ssl.enable: true
+    default-encoding: utf-8
 # 直接放行URL
 ignore:
   urls:

+ 11 - 0
platform-rest/src/main/resources/application-prod.yml

@@ -36,12 +36,23 @@ spring:
     multipart:
       maxFileSize: "100MB"
       maxRequestSize: "1000MB"
+  mail:
+    host: smtp.exmail.qq.com #发送邮件服务器
+    username: chenyh@tuzhiall.com #发送邮件的邮箱地址
+    password:  Chenyuehu521 #客户端授权码,不是邮箱密码,这个在qq邮箱设置里面自动生成的
+    properties.mail.smtp.port: 465 #端口号465或587
+    from: chenyh@tuzhiall.com # 发送邮件的地址,和上面username一致
+    properties.mail.smtp.starttls.enable: true
+    properties.mail.smtp.starttls.required: true
+    properties.mail.smtp.ssl.enable: true
+    default-encoding: utf-8
 # 直接放行URL
 ignore:
   urls:
     - /upms/logs/**
     - /operate/**
     - /users/**
+    - /users/work/**
     - /druid/**
     - /app-versions/**
     - /verify/**

+ 11 - 0
platform-rest/src/main/resources/application-test.yml

@@ -31,12 +31,23 @@ spring:
     multipart:
       maxFileSize: "100MB"
       maxRequestSize: "1000MB"
+  mail:
+    host: smtp.exmail.qq.com #发送邮件服务器
+    username: chenyh@tuzhiall.com #发送邮件的邮箱地址
+    password:  Chenyuehu521 #客户端授权码,不是邮箱密码,这个在qq邮箱设置里面自动生成的
+    properties.mail.smtp.port: 465 #端口号465或587
+    from: chenyh@tuzhiall.com # 发送邮件的地址,和上面username一致
+    properties.mail.smtp.starttls.enable: true
+    properties.mail.smtp.starttls.required: true
+    properties.mail.smtp.ssl.enable: true
+    default-encoding: utf-8
 # 直接放行URL
 ignore:
   urls:
     - /upms/logs/**
     - /operate/**
     - /users/**
+    - /users/work/**
     - /druid/**
     - /app-versions/**
     - /verify/**

+ 37 - 0
platform-rest/src/test/java/com/test/SendEmailTest.java

@@ -0,0 +1,37 @@
+package com.test;
+
+import com.platform.rest.RestApplication;
+import com.platform.service.mail.MailService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @Description ${DESCRIPTION}
+ * @Author chenyuehu
+ * @Date 2021/4/7
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = RestApplication.class)
+public class SendEmailTest {
+    /**
+     * 注入发送邮件的接口
+     */
+    @Autowired
+    private MailService mailService;
+
+    /**
+     * 测试发送文本邮件
+     */
+    @Test
+    public void sendmail() {
+        mailService.sendSimpleMail("229477831@qq.com","主题:你好普通邮件","内容:第一封邮件");
+    }
+
+    @Test
+    public void sendmailHtml(){
+        mailService.sendHtmlMail("229477831@qq.com","主题:你好html邮件","<h1>内容:第一封html邮件</h1>");
+    }
+}

+ 5 - 0
platform-service/pom.xml

@@ -72,6 +72,11 @@
             <version>1.3.1</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-mail</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 9 - 0
platform-service/src/main/java/com/platform/service/check/CheckStandardService.java

@@ -30,7 +30,16 @@ public interface CheckStandardService extends IBaseService<CheckStandard, CheckS
     */
     int batchDelete(List<String> ids);
 
+    List<CheckStandardVO> selectList( CheckStandardDTO record);
+
     List<CheckStandardVO> selectCheckstandardListByModelId(String modelId);
 
     List<CheckStandardVO> selectProjectStandardList(String projectId);
+
+    /**
+     * 生成某一個保养标准的保养任务
+     *
+     * @param id
+     */
+    public void generate(String id);
 }

+ 66 - 5
platform-service/src/main/java/com/platform/service/check/impl/CheckStandardServiceImpl.java

@@ -1,16 +1,21 @@
 package com.platform.service.check.impl;
 import com.platform.common.bean.AbstractPageResultBean;
 import com.github.pagehelper.PageHelper;
+import com.platform.common.util.DateUtils;
 import com.platform.common.util.IdGeneratorUtils;
 import com.platform.dao.bean.MyPage;
 import com.platform.dao.dto.check.CheckStandardDTO;
 import com.platform.dao.dto.check.CheckStandardParamDTO;
+import com.platform.dao.entity.check.CheckJob;
 import com.platform.dao.entity.check.CheckProjectStandardRelation;
 import com.platform.dao.entity.check.CheckStandard;
 import com.platform.dao.entity.check.CheckStandardParam;
 import com.platform.dao.entity.maintain.MaintainProjectStandardRelation;
 import com.platform.dao.entity.maintain.MaintainStandardParam;
 import com.platform.dao.entity.sqarepartmanage.SparePartInfo;
+import com.platform.dao.enums.CheckJobStatusEnum;
+import com.platform.dao.enums.CheckPlanPeriodTypeEnum;
+import com.platform.dao.mapper.check.CheckJobMapper;
 import com.platform.dao.mapper.check.CheckProjectStandardRelationMapper;
 import com.platform.dao.mapper.check.CheckStandardMapper;
 import com.platform.dao.mapper.check.CheckStandardParamMapper;
@@ -25,6 +30,10 @@ import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
 import lombok.AllArgsConstructor;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.temporal.ChronoUnit;
 import java.util.List;
 
 /**
@@ -39,7 +48,7 @@ public class CheckStandardServiceImpl extends BaseServiceImpl<CheckStandardMappe
     private CheckStandardParamService paramService;
     private CheckProjectStandardRelationMapper relationMapper;
     private CheckStandardParamMapper paramMapper;
-
+    private CheckJobMapper checkJobMapper;
     @Override
     public boolean cascadingDeleteByKey(String id) {
         int result = mapper.deleteByPrimaryKey(id);
@@ -74,6 +83,11 @@ public class CheckStandardServiceImpl extends BaseServiceImpl<CheckStandardMappe
         return mapper.selectProjectStandardList(projectId);
     }
 
+    @Override
+    public List<CheckStandardVO> selectList( CheckStandardDTO record) {
+        return mapper.selectList(record);
+    }
+
     @Override
     public AbstractPageResultBean<CheckStandard> selectPageInfo(CheckStandardDTO record, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
@@ -91,11 +105,11 @@ public class CheckStandardServiceImpl extends BaseServiceImpl<CheckStandardMappe
         model.setNo(IdGeneratorUtils.getCheckStandardNo(++count));
         CheckStandard checkStandard = super.saveModelByDTO(model);
         // 保存参数
-        List<CheckStandardParamDTO> paramList = model.getParamList();
+       /* List<CheckStandardParamDTO> paramList = model.getParamList();
         paramList.forEach(item -> {
             item.setStandardId(checkStandard.getId());
         });
-        paramService.saveModelListByDTO(paramList);
+        paramService.saveModelListByDTO(paramList);*/
         return checkStandard;
     }
 
@@ -108,11 +122,11 @@ public class CheckStandardServiceImpl extends BaseServiceImpl<CheckStandardMappe
         weekend.weekendCriteria().andEqualTo(CheckStandardParam::getStandardId, model.getId());
         paramMapper.deleteByExample(weekend);
         // 保存参数
-        List<CheckStandardParamDTO> paramList = model.getParamList();
+  /*      List<CheckStandardParamDTO> paramList = model.getParamList();
         paramList.forEach(item -> {
             item.setStandardId(model.getId());
         });
-        paramService.saveModelListByDTO(paramList);
+        paramService.saveModelListByDTO(paramList);*/
     }
 
     @Override
@@ -124,4 +138,51 @@ public class CheckStandardServiceImpl extends BaseServiceImpl<CheckStandardMappe
         checkStandard.setParamList(paramList);
         return checkStandard;
     }
+
+
+    @Override
+    public void generate(String id) {
+        LocalDateTime currentDate = LocalDateTime.now();
+        CheckStandard standard = super.getModelById(id);
+        CheckJob checkJob = new CheckJob();
+        checkJob.setSbId(standard.getSbId());
+        checkJob.setStatus(CheckJobStatusEnum.NOT_EXECUTE.getValue());
+        // 计算计划开始时间和结束时间
+        calcTime(checkJob, currentDate, standard);
+        checkJob.setCreatedTime(currentDate);
+        checkJob.setUpdateTime(currentDate);
+        checkJob.setUpdateUserId(standard.getCheckUserId());
+        checkJob.setCheckUserId(standard.getCheckUserId());
+        checkJob.setId(IdGeneratorUtils.getObjectId());
+        checkJob.setPartId(standard.getPart());
+        checkJob.setStandardId(standard.getId());
+        checkJob.setType(standard.getType());
+        checkJob.setRequirement(standard.getRequirement());
+        checkJob.setRemark(standard.getRemark());
+        checkJob.setName(standard.getName());
+        checkJobMapper.insert(checkJob);
+    }
+
+    private void calcTime(CheckJob checkJob, LocalDateTime currentDate, CheckStandard checkStandard) {
+        LocalDate endDate = null;
+        checkJob.setStartTime(currentDate);
+        if (CheckPlanPeriodTypeEnum.DAY.getValue().equals(checkStandard.getPeriodType())) {
+            endDate = DateUtils.plus(currentDate.toLocalDate(), checkStandard.getPeriod(), ChronoUnit.DAYS);
+        }
+        if (CheckPlanPeriodTypeEnum.WEEK.getValue().equals(checkStandard.getPeriodType())) {
+            endDate = DateUtils.plus(currentDate.toLocalDate(), checkStandard.getPeriod() * 7, ChronoUnit.DAYS);
+        }
+        if (CheckPlanPeriodTypeEnum.MONTH.getValue().equals(checkStandard.getPeriodType())) {
+            endDate = DateUtils.plus(currentDate.toLocalDate(), checkStandard.getPeriod(), ChronoUnit.MONTHS);
+        }
+        if (CheckPlanPeriodTypeEnum.SEASON.getValue().equals(checkStandard.getPeriodType())) {
+            endDate = DateUtils.plus(currentDate.toLocalDate(), checkStandard.getPeriod() * 3, ChronoUnit.MONTHS);
+        }
+        if (CheckPlanPeriodTypeEnum.YEAR.getValue().equals(checkStandard.getPeriodType())) {
+            endDate = DateUtils.plus(currentDate.toLocalDate(), checkStandard.getPeriod(), ChronoUnit.YEARS);
+        }
+        endDate = DateUtils.plus(endDate, -1, ChronoUnit.DAYS);
+        checkJob.setEndTime(LocalDateTime.of(endDate, LocalTime.of(18, 0)));
+
+    }
 }

+ 3 - 1
platform-service/src/main/java/com/platform/service/event/EventConfiguration.java

@@ -2,6 +2,7 @@ package com.platform.service.event;
 
 import com.platform.dao.mapper.workplace.WorkplaceBacklogMapper;
 import com.platform.dao.mapper.workplace.WorkplaceBacklogUserMapper;
+import com.platform.service.mail.MailService;
 import lombok.AllArgsConstructor;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
 import org.springframework.context.annotation.Bean;
@@ -23,10 +24,11 @@ public class EventConfiguration {
     private final WorkplaceBacklogMapper workplaceBacklogMapper;
 
     private final WorkplaceBacklogUserMapper workplaceBacklogUserMapper;
+    private final MailService mailService;
 
     @Bean
     public EventListenerBean eventListenerBean() {
-        return new EventListenerBean(workplaceBacklogMapper, workplaceBacklogUserMapper);
+        return new EventListenerBean(workplaceBacklogMapper, workplaceBacklogUserMapper, mailService);
     }
 
 }

+ 13 - 0
platform-service/src/main/java/com/platform/service/event/EventListenerBean.java

@@ -1,14 +1,17 @@
 package com.platform.service.event;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.platform.common.util.BeanConverterUtil;
 import com.platform.common.util.IdGeneratorUtils;
 import com.platform.common.util.ListUtils;
+import com.platform.common.util.StringUtils;
 import com.platform.dao.dto.workplace.WorkplaceBacklogDTO;
 import com.platform.dao.entity.workplace.WorkplaceBacklog;
 import com.platform.dao.entity.workplace.WorkplaceBacklogUser;
 import com.platform.dao.enums.WorkplaceBacklogStatusEnum;
 import com.platform.dao.mapper.workplace.WorkplaceBacklogMapper;
 import com.platform.dao.mapper.workplace.WorkplaceBacklogUserMapper;
+import com.platform.service.mail.MailService;
 import com.platform.service.wechat.model.request.template.WechatTemplateRequest;
 import com.platform.service.wechat.service.WeChatConnectService;
 import lombok.AllArgsConstructor;
@@ -36,6 +39,8 @@ public class EventListenerBean {
 
     private final WorkplaceBacklogUserMapper workplaceBacklogUserMapper;
 
+    private final MailService mailService;
+
     @Async
     @Order
     @EventListener(WorkplaceBacklogEvent.class)
@@ -52,6 +57,14 @@ public class EventListenerBean {
         List<WorkplaceBacklogUser> backlogUsers = userIds.stream().map(userId ->
                 new WorkplaceBacklogUser(IdGeneratorUtils.getObjectId(), userId, backlog.getId(), now)).collect(Collectors.toList());
         workplaceBacklogUserMapper.insertListforComplex(backlogUsers);
+        List<String> mails = model.getEmails();
+        if (CollectionUtil.isNotEmpty(mails)) {
+            mails.forEach(item -> {
+                if (StringUtils.isNotEmpty(item)) {
+                    mailService.sendSimpleMail(item, model.getContent(), model.getContent());
+                }
+            });
+        }
     }
 
     @Async

+ 4 - 0
platform-service/src/main/java/com/platform/service/event/WorkplaceBacklogEvent.java

@@ -21,4 +21,8 @@ public class WorkplaceBacklogEvent extends ApplicationEvent {
         super(new WorkplaceBacklogDTO(type, detailType, targetId, content, otherId, userIds));
     }
 
+    public WorkplaceBacklogEvent(Integer type, Integer detailType, String targetId, String content, String otherId, List<String> userIds, List<String> mails) {
+        super(new WorkplaceBacklogDTO(type, detailType, targetId, content, otherId, userIds, mails));
+    }
+
 }

+ 36 - 0
platform-service/src/main/java/com/platform/service/mail/MailService.java

@@ -0,0 +1,36 @@
+package com.platform.service.mail;
+
+/**
+ * @Description 邮件服务器
+ * @Author chenyuehu
+ * @Date 2021/4/7
+ * @Version Copyright (c) 2019,北京乾元坤和科技有限公司 All rights reserved.
+ */
+public interface MailService {
+    /**
+     * 发送文本邮件
+     * @param to 收件人
+     * @param subject 主题
+     * @param content 内容
+     */
+    void sendSimpleMail(String to, String subject, String content);
+
+    /**
+     * 发送HTML邮件
+     * @param to 收件人
+     * @param subject 主题
+     * @param content 内容
+     */
+    public void sendHtmlMail(String to, String subject, String content);
+
+
+
+    /**
+     * 发送带附件的邮件
+     * @param to 收件人
+     * @param subject 主题
+     * @param content 内容
+     * @param filePath 附件
+     */
+    public void sendAttachmentsMail(String to, String subject, String content, String filePath);
+}

+ 121 - 0
platform-service/src/main/java/com/platform/service/mail/MailServiceImpl.java

@@ -0,0 +1,121 @@
+package com.platform.service.mail;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.stereotype.Service;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.io.File;
+
+/**
+ * @Description ${DESCRIPTION}
+ * @Author chenyuehu
+ * @Date 2021/4/7
+ * @Version Copyright (c) 2020,安徽图知天下大数据科技有限公司 All rights reserved.
+ */
+@Slf4j
+@Service("mailService")
+public class MailServiceImpl implements MailService {
+    /**
+     * Spring Boot 提供了一个发送邮件的简单抽象,使用的是下面这个接口,这里直接注入即可使用
+     */
+    @Autowired
+    private JavaMailSender mailSender;
+
+    /**
+     * 配置文件中我的qq邮箱
+     */
+    @Value("${spring.mail.from}")
+    private String from;
+
+    /**
+     * 简单文本邮件
+     *
+     * @param to      收件人
+     * @param subject 主题
+     * @param content 内容
+     */
+    @Override
+    public void sendSimpleMail(String to, String subject, String content) {
+        //创建SimpleMailMessage对象
+        SimpleMailMessage message = new SimpleMailMessage();
+        //邮件发送人
+        message.setFrom(from);
+        //邮件接收人
+        message.setTo(to);
+        //邮件主题
+        message.setSubject(subject);
+        //邮件内容
+        message.setText(content);
+        //发送邮件
+        mailSender.send(message);
+    }
+
+    /**
+     * html邮件
+     *
+     * @param to      收件人
+     * @param subject 主题
+     * @param content 内容
+     */
+    @Override
+    public void sendHtmlMail(String to, String subject, String content) {
+        //获取MimeMessage对象
+        MimeMessage message = mailSender.createMimeMessage();
+        MimeMessageHelper messageHelper;
+        try {
+            messageHelper = new MimeMessageHelper(message, true);
+            //邮件发送人
+            messageHelper.setFrom(from);
+            //邮件接收人
+            messageHelper.setTo(subject);
+            //邮件主题
+            message.setSubject(subject);
+            //邮件内容,html格式
+            messageHelper.setText(content, true);
+            //发送
+            mailSender.send(message);
+            //日志信息
+            log.info("邮件已经发送。");
+        } catch (MessagingException e) {
+            log.error("发送邮件时发生异常!", e);
+        }
+    }
+
+    /**
+     * 带附件的邮件
+     *
+     * @param to       收件人
+     * @param subject  主题
+     * @param content  内容
+     * @param filePath 附件
+     */
+    @Override
+    public void sendAttachmentsMail(String to, String subject, String content, String filePath) {
+        MimeMessage message = mailSender.createMimeMessage();
+        try {
+            MimeMessageHelper helper = new MimeMessageHelper(message, true);
+            helper.setFrom(from);
+            helper.setTo(to);
+            helper.setSubject(subject);
+            helper.setText(content, true);
+
+            FileSystemResource file = new FileSystemResource(new File(filePath));
+            String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
+            helper.addAttachment(fileName, file);
+            mailSender.send(message);
+            //日志信息
+            log.info("邮件已经发送。");
+        } catch (MessagingException e) {
+            log.error("发送邮件时发生异常!", e);
+        }
+
+
+    }
+}

+ 32 - 22
platform-service/src/main/java/com/platform/service/repair/impl/RepairApplicationFormServiceImpl.java

@@ -53,6 +53,7 @@ import javax.annotation.Resource;
 import java.lang.reflect.Array;
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.List;
@@ -138,7 +139,6 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
         RepairApplicationForm model = mapper.selectById(id);
         RepairApplicationFormVO vo = new RepairApplicationFormVO();
         BeanUtil.copyProperties(model, vo);
-
         Weekend<SysFile> weekend = new Weekend<>(SysFile.class);
         weekend.weekendCriteria().andEqualTo(SysFile::getTargetId, vo.getId());
         List<SysFile> sysFiles = sysFileMapper.selectByExample(weekend);
@@ -213,14 +213,20 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
         RepairApplicationForm form = super.saveModelHaveCreateInfo(model);
 
         List<SysUser> users = sysUserService.getRepairUser(new SysUserDTO());
-        List<String> userIds = users.stream().filter(item -> item.getWorkFlag()).map(item -> item.getUserId()).collect(Collectors.toList());
-        if (CollectionUtil.isEmpty(userIds)) {
-            userIds = users.stream().filter(item -> item.getIdentityType().equals(SysUserIdentityType.WXZG.getValue())).map(item -> item.getUserId()).collect(Collectors.toList());
+        List<SysUser> filterUsers = users.stream().filter(item -> item.getWorkFlag()).collect(Collectors.toList());
+        if (CollectionUtil.isEmpty(filterUsers)) {
+            filterUsers = users.stream().filter(item -> item.getIdentityType().equals(SysUserIdentityType.WXZG.getValue())).collect(Collectors.toList());
         }
+        List<String> userIds = new ArrayList<>();
+        List<String> mails = new ArrayList<>();
+        filterUsers.forEach(item -> {
+            userIds.add(item.getUserId());
+            mails.add(item.getEmail());
+        });
         // 通过给当天值班维修人员
         SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.REPAIR.getValue(), WorkplaceBacklogDetailTypeEnum.REPAIR_APPLICATION.getValue(),
-                model.getId(), MessageTemplateUtil.getRepairApplicationForReceive(model.getId()),
-                model.getId(), userIds));
+                model.getId(), MessageTemplateUtil.getRepairApplicationForReceive(model.getNo()),
+                model.getId(), userIds, mails));
         return form;
     }
 
@@ -287,7 +293,7 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
         super.modModelByPrimaryKey(applicationForm);
 
         SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.RECEIVE.getValue(), WorkplaceBacklogDetailTypeEnum.REPAIR_RECEIVE.getValue(),
-                applicationForm.getId(), MessageTemplateUtil.getReceive(applicationForm.getId()),
+                applicationForm.getId(), MessageTemplateUtil.getReceive(applicationForm.getNo()),
                 applicationForm.getId(), ListUtils.newArrayList(applicationForm.getUserId())));
     }
 
@@ -329,9 +335,10 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
         applicationForm.setUpdateTime(LocalDateTime.now());
         super.modModelByPrimaryKey(applicationForm);
 
+        SysUser repairUser = userMapper.selectByPrimaryKey(model.getRepairUserId());
         SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.REPAIR.getValue(), WorkplaceBacklogDetailTypeEnum.REPAIR_DISPATCH.getValue(),
-                applicationForm.getId(), MessageTemplateUtil.getRepairDispatch(applicationForm.getId()),
-                applicationForm.getId(), ListUtils.newArrayList(model.getRepairUserId())));
+                applicationForm.getId(), MessageTemplateUtil.getRepairDispatch(applicationForm.getNo()),
+                applicationForm.getId(), ListUtils.newArrayList(model.getRepairUserId()), ListUtils.newArrayList(repairUser.getEmail())));
     }
 
     @Override
@@ -383,9 +390,10 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
         } else {
             super.modModelByPrimaryKey(applicationForm);
             // 发送通知给主管,主管是验收人,他收到通知,进行调拨给使用人员
+            SysUser checkUser = userMapper.selectByPrimaryKey(applicationForm.getCheckUserId());
             SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.REPAIR.getValue(), WorkplaceBacklogDetailTypeEnum.REPAIR_FINISH.getValue(),
-                    applicationForm.getId(), MessageTemplateUtil.getRepairCheck(applicationForm.getId()),
-                    applicationForm.getId(), ListUtils.newArrayList(applicationForm.getCheckUserId())));
+                    applicationForm.getId(), MessageTemplateUtil.getRepairCheck(applicationForm.getNo()),
+                    applicationForm.getId(), ListUtils.newArrayList(applicationForm.getCheckUserId()), ListUtils.newArrayList(checkUser.getEmail())));
         }
     }
 
@@ -405,9 +413,10 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
         info.setStatus(SbInfoStatusEnum.IN_USE.getValue());
         sbInfoService.modModelByPrimaryKey(info);
 
+        SysUser noticeUser = userMapper.selectByPrimaryKey(applicationForm.getRepairUserId());
         SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.REPAIR.getValue(), WorkplaceBacklogDetailTypeEnum.REPAIR_OK.getValue(),
-                applicationForm.getId(), MessageTemplateUtil.getRepairOk(applicationForm.getId()),
-                applicationForm.getId(), ListUtils.newArrayList(applicationForm.getRepairUserId())));
+                applicationForm.getId(), MessageTemplateUtil.getRepairOk(applicationForm.getNo()),
+                applicationForm.getId(), ListUtils.newArrayList(applicationForm.getRepairUserId()), ListUtils.newArrayList(noticeUser.getEmail())));
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -420,9 +429,10 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
         applicationForm.setUpdateTime(LocalDateTime.now());
         super.modModelByPrimaryKey(applicationForm);
 
+        SysUser noticeUser = userMapper.selectByPrimaryKey(applicationForm.getRepairUserId());
         SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.REPAIR.getValue(), WorkplaceBacklogDetailTypeEnum.REPAIR_BACK.getValue(),
-                dto.getId(), MessageTemplateUtil.getRepairBack(applicationForm.getId()),
-                applicationForm.getId(), ListUtils.newArrayList(applicationForm.getRepairUserId())));
+                dto.getId(), MessageTemplateUtil.getRepairBack(applicationForm.getNo()),
+                applicationForm.getId(), ListUtils.newArrayList(applicationForm.getRepairUserId()), ListUtils.newArrayList(noticeUser.getEmail())));
     }
 
     @Override
@@ -451,9 +461,10 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
                 update.setRepairUserId(repairManager.getUserId());
                 update.setStatus(RepairApplicationFormStatusEnum.ALLOCATED.getValue());
                 mapper.updateByPrimaryKeySelective(update);
+
                 SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.REPAIR.getValue(), WorkplaceBacklogDetailTypeEnum.REPAIR_APPLICATION.getValue(),
-                        item.getId(), MessageTemplateUtil.getRepairApplicationForReceive(item.getId()),
-                        item.getId(), Arrays.asList(repairManager.getUserId())));
+                        item.getId(), MessageTemplateUtil.getRepairApplicationForReceive(item.getNo()),
+                        item.getId(), Arrays.asList(repairManager.getUserId()), Arrays.asList(repairManager.getEmail())));
             });
         }
     }
@@ -497,11 +508,10 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
     private void sendOverTimeNotice(List<SysUser> users, List<RepairApplicationForm> tasks) {
         if (CollectionUtil.isNotEmpty(users) && CollectionUtil.isNotEmpty(tasks)) {
             List<String> userIds = users.stream().map(item -> item.getUserId()).collect(Collectors.toList());
-            tasks.forEach(item -> {
-                SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.REPAIR_NOT_FINISH.getValue(), WorkplaceBacklogDetailTypeEnum.REPAIR_APPLICATION.getValue(),
-                        item.getId(), MessageTemplateUtil.getRepairApplicationForNotFinishNotic(item.getId(), 3),
-                        item.getId(), userIds));
-            });
+            List<String> mails = users.stream().map(item -> item.getEmail()).collect(Collectors.toList());
+            tasks.forEach(item -> SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.REPAIR_NOT_FINISH.getValue(), WorkplaceBacklogDetailTypeEnum.REPAIR_APPLICATION.getValue(),
+                    item.getId(), MessageTemplateUtil.getRepairApplicationForNotFinishNotic(item.getNo(), 3),
+                    item.getId(), userIds, mails)));
         }
     }
 

+ 71 - 12
platform-service/src/main/java/com/platform/service/sqarepartmanage/impl/SparePartInfoServiceImpl.java

@@ -1,14 +1,15 @@
 package com.platform.service.sqarepartmanage.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import com.github.pagehelper.PageHelper;
 import com.platform.common.bean.AbstractPageResultBean;
 import com.platform.common.constant.CommonConstants;
 import com.platform.common.exception.BusinessException;
-import com.platform.common.util.BeanConverterUtil;
-import com.platform.common.util.IdGeneratorUtils;
-import com.platform.common.util.StringUtils;
+import com.platform.common.model.UserInfo;
+import com.platform.common.util.*;
 import com.platform.dao.bean.MyPage;
+import com.platform.dao.dto.repair.RepairApplicationFormDTO;
 import com.platform.dao.dto.sb.SbInfoDTO;
 import com.platform.dao.dto.sqarepartmanage.SparePartInfoDTO;
 import com.platform.dao.entity.sb.SbInfo;
@@ -18,12 +19,15 @@ import com.platform.dao.entity.sqarepartmanage.SparePartInfo;
 import com.platform.dao.entity.sqarepartmanage.SpareType;
 import com.platform.dao.entity.store.SpareStore;
 import com.platform.dao.entity.upms.SysDept;
+import com.platform.dao.entity.upms.SysFile;
 import com.platform.dao.entity.upms.SysUser;
+import com.platform.dao.enums.SysFileTypeEnum;
 import com.platform.dao.mapper.sb.SbModelMapper;
 import com.platform.dao.mapper.sb.SbModelSpareBomMapper;
 import com.platform.dao.mapper.sqarepartmanage.SparePartInfoMapper;
 import com.platform.dao.mapper.sqarepartmanage.SpareTypeMapper;
 import com.platform.dao.mapper.store.SpareStoreMapper;
+import com.platform.dao.mapper.upms.SysFileMapper;
 import com.platform.dao.util.CustomExcelImportUtil;
 import com.platform.dao.vo.query.sparepartmanage.SparePartInfoVO;
 import com.platform.dao.vo.sb.SbInfoVO;
@@ -62,6 +66,7 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
     private final SbModelSpareBomMapper sbModelSpareBomMapper;
     private final SpareStoreMapper spareStoreMapper;
     private final Environment environment;
+    private final SysFileMapper sysFileMapper;
     @Override
     public int batchDelete(List<String> ids) {
 
@@ -232,6 +237,17 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
                 model.setChildNo(type.getNo());
             }
         }
+        Weekend<SysFile> weekendFile = new Weekend<>(SysFile.class);
+        weekendFile.weekendCriteria().andEqualTo(SysFile::getTargetId, model.getId());
+        List<SysFile> sysFiles = sysFileMapper.selectByExample(weekendFile);
+        List<SysFile> s = ListUtils.newArrayList();
+        List<SysFile> applicationFileList = ListUtils.newArrayList();
+        sysFiles.forEach(item -> {
+            if (item.getType().equals(SysFileTypeEnum.SPARE_IMGS.getValue())) {
+                applicationFileList.add(item);
+            }
+        });
+        model.setApplicationFileList(applicationFileList);
         return model;
     }
 
@@ -241,10 +257,16 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
         // 设置备件的统一编号
         SpareType parentType = spareTypeMapper.selectByPrimaryKey(model.getParentTypeId());
         SpareType middleType = spareTypeMapper.selectByPrimaryKey(model.getMiddleTypeId());
-        String parentTypeNo = parentType.getNo();
-        String middleTypeNo = middleType.getNo();
-        model.setParentNo(parentTypeNo);
-        model.setMiddleNo(middleTypeNo);
+        String parentTypeNo = "";
+        String middleTypeNo = "";
+        if(parentType !=null){
+            parentTypeNo = parentType.getNo();
+            model.setParentNo(parentTypeNo);
+        }
+        if(middleType != null){
+            middleTypeNo = middleType.getNo();
+            model.setMiddleNo(middleTypeNo);
+        }
         String nameNo = model.getNameNo();
         String ggNo = model.getGgNo();
         String childTypeNo = null;
@@ -264,12 +286,12 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
             }
         }
 
-        Weekend<SparePartInfo> weekend = new Weekend<>(SparePartInfo.class);
+       /* Weekend<SparePartInfo> weekend = new Weekend<>(SparePartInfo.class);
         weekend.weekendCriteria().andEqualTo(SparePartInfo::getUniteNo, model.getUniteNo());
         int checkInfo = mapper.selectCountByExample(weekend);
         if(checkInfo > 0){
             throw new BusinessException("编码已存在,请重新设置名称编码或者规格编码," + model.getUniteNo());
-        }
+        }*/
         model.setId(IdGeneratorUtils.getObjectId());
         // 保存二维码
         String path = CommonConstants.RESOURCE_PREFIX + "/png/" + DateUtil.formatDate(new Date()) + "/" + IdGeneratorUtils.getObjectId() + "/";
@@ -278,6 +300,25 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
         String codePath = path + model.getId() + ".png";
         model.setQrCode(codePath);
         CodeFileUtils.uploadFileECode(model.getId(), rootPath, filePath, model.getId() + ".png");
+
+        UserInfo userInfo = SecurityUtils.getUserInfo();
+        LocalDateTime time = LocalDateTime.now();
+        // 如果由sbId,则要创建bom
+        if(StringUtils.isNotBlank(model.getSbId())){
+            SbModelSpareBom bom = new SbModelSpareBom();
+            bom.setId(IdGeneratorUtils.getObjectId());
+            bom.setSpareId(model.getId());
+            bom.setNum(new BigDecimal(1));
+            bom.setCreatedTime(time);
+            bom.setCreatedUserId(userInfo.getUserId());
+            bom.setPeriod(1);
+            bom.setPeriodType(1);
+            bom.setSbId(model.getSbId());
+            bom.setUpdateTime(time);
+            bom.setUpdateUserId(userInfo.getUserId());
+            sbModelSpareBomMapper.insert(bom);
+        }
+        this.saveFile(model);
         return super.saveModelHaveCreateInfo(model);
     }
 
@@ -317,15 +358,33 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
             }
         }
 
-        Weekend<SparePartInfo> weekend = new Weekend<>(SparePartInfo.class);
+       /* Weekend<SparePartInfo> weekend = new Weekend<>(SparePartInfo.class);
         weekend.weekendCriteria().andEqualTo(SparePartInfo::getUniteNo, model.getUniteNo());
         SparePartInfo checkInfo = mapper.selectOneByExample(weekend);
         if(checkInfo != null && !checkInfo.getId().equals(model.getId())){
             throw new BusinessException("编码已存在,请重新设置名称编码或者规格编码," + model.getUniteNo());
-        }
+        }*/
+        this.saveFile(model);
         super.modModelByDTO(model);
     }
-
+    private void saveFile(SparePartInfoDTO model) {
+        Weekend<SysFile> weekend = new Weekend<>(SysFile.class);
+        weekend.weekendCriteria().andEqualTo(SysFile::getTargetId, model.getId());
+        sysFileMapper.deleteByExample(weekend);
+        List<SysFile> applicationFileList = model.getApplicationFileList();
+        List<SysFile> list = ListUtils.newArrayList();
+        if (CollectionUtil.isNotEmpty(applicationFileList)) {
+            applicationFileList.forEach(item -> {
+                item.setType(SysFileTypeEnum.SPARE_IMGS.getValue());
+                item.setId(IdGeneratorUtils.getObjectId());
+                item.setTargetId(model.getId());
+                list.add(item);
+            });
+        }
+        if (CollectionUtil.isNotEmpty(list)) {
+            sysFileMapper.insertListforComplex(list);
+        }
+    }
     /**
      * 导入备件基础信息
      *

+ 4 - 4
platform-service/src/main/java/com/platform/service/work/impl/WorkStandardServiceImpl.java

@@ -82,11 +82,11 @@ public class WorkStandardServiceImpl extends BaseServiceImpl<WorkStandardMapper,
         model.setNo(IdGeneratorUtils.getCheckStandardNo(++count));
         WorkStandard checkStandard = super.saveModelByDTO(model);
         // 保存参数
-        List<CheckStandardParamDTO> paramList = model.getParamList();
+        /*List<CheckStandardParamDTO> paramList = model.getParamList();
         paramList.forEach(item -> {
             item.setStandardId(checkStandard.getId());
         });
-        paramService.saveModelListByDTO(paramList);
+        paramService.saveModelListByDTO(paramList);*/
         return checkStandard;
     }
 
@@ -99,11 +99,11 @@ public class WorkStandardServiceImpl extends BaseServiceImpl<WorkStandardMapper,
         weekend.weekendCriteria().andEqualTo(WorkStandardParam::getStandardId, model.getId());
         paramMapper.deleteByExample(weekend);
         // 保存参数
-        List<CheckStandardParamDTO> paramList = model.getParamList();
+/*        List<CheckStandardParamDTO> paramList = model.getParamList();
         paramList.forEach(item -> {
             item.setStandardId(model.getId());
         });
-        paramService.saveModelListByDTO(paramList);
+        paramService.saveModelListByDTO(paramList);*/
     }
 
     @Override