Procházet zdrojové kódy

feat: 任务日志运行增加任务类型字段开发

chenjianhua před 6 měsíci
rodič
revize
daf0efba43

+ 0 - 12
service-base/src/main/java/com/simuwang/base/common/conts/TaskConst.java

@@ -1,12 +0,0 @@
-package com.simuwang.base.common.conts;
-
-/**
- * FileName: ExcelConst
- * Author:   chenjianhua
- * Date:     2024/9/16 12:56
- * Description: ${DESCRIPTION}
- */
-public class TaskConst {
-    public final static String EMAIL_TASK = "邮件解析任务";
-
-}

+ 25 - 0
service-base/src/main/java/com/simuwang/base/common/enums/TaskType.java

@@ -0,0 +1,25 @@
+package com.simuwang.base.common.enums;
+
+import lombok.Getter;
+
+/**
+ * FileName: ExcelConst
+ * Author:   chenjianhua
+ * Date:     2024/9/16 12:56
+ * Description: ${DESCRIPTION}
+ */
+@Getter
+public enum TaskType {
+    EMAIL_PARSE(1, "邮件解析"),
+    DELETION_COMPUTE(2, "缺失计算"),
+    DELETION_NOTIFICATIONS(3, "缺失明细通知");
+
+    private final int type;
+    private final String info;
+
+    TaskType(int type, String label) {
+        this.type = type;
+        this.info = label;
+    }
+
+}

+ 7 - 0
service-base/src/main/java/com/simuwang/base/mapper/EmailTaskInfoMapper.java

@@ -5,6 +5,7 @@ import com.simuwang.base.pojo.dos.EmailParseDetailDO;
 import com.simuwang.base.pojo.dos.EmailTaskInfoDO;
 import com.simuwang.base.pojo.dto.query.EmailFileQuery;
 import com.simuwang.base.pojo.dto.query.FundFilePageQuery;
+import com.simuwang.base.pojo.dto.query.TaskPageQuery;
 import com.simuwang.base.pojo.vo.FundFileInfoVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -18,4 +19,10 @@ public interface EmailTaskInfoMapper {
     Integer insert(@Param("itemDo") EmailTaskInfoDO emailTaskInfoDO);
 
     void updateTaskStatus(@Param("email") String email, @Param("startTime")Date startDate, @Param("endTime")Date endDate,@Param("taskStatus")Integer taskStatus);
+
+    List<EmailTaskInfoDO> searchTaskList(TaskPageQuery taskPageQuery);
+
+    long countTaskList(TaskPageQuery taskPageQuery);
+
+    void updateTaskStatusById(EmailTaskInfoDO emailTaskInfoDO);
 }

+ 22 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/EmailTaskInfoDO.java

@@ -3,6 +3,8 @@ package com.simuwang.base.pojo.dos;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.pojo.vo.EmailTaskInfoVO;
 import lombok.Data;
 
 import java.util.Date;
@@ -27,6 +29,11 @@ public class EmailTaskInfoDO {
     @TableField(value = "task_name")
     private String taskName;
     /**
+     * 任务类型
+     */
+    @TableField(value = "task_type")
+    private Integer taskType;
+    /**
      * 邮箱地址
      */
     @TableField(value = "email")
@@ -71,4 +78,19 @@ public class EmailTaskInfoDO {
      */
     @TableField(value = "updatetime")
     private Date updateTime;
+
+    public EmailTaskInfoVO toVO() {
+        EmailTaskInfoVO vo = new EmailTaskInfoVO();
+        vo.setId(this.id);
+        vo.setEmail(this.email);
+        vo.setIsvalid(this.isvalid);
+        vo.setTaskName(this.taskName);
+        vo.setTaskType(this.taskType);
+        vo.setTaskStatus(this.taskStatus);
+        vo.setStartTime(DateUtils.format(this.startTime,DateUtils.YYYY_MM_DD_HH_MM_SS));
+        vo.setEndTime(DateUtils.format(this.endTime,DateUtils.YYYY_MM_DD_HH_MM_SS));
+        vo.setUpdateTime(DateUtils.format(this.updateTime,DateUtils.YYYY_MM_DD_HH_MM_SS));
+        vo.setCreateTime(DateUtils.format(this.createTime,DateUtils.YYYY_MM_DD_HH_MM_SS));
+        return vo;
+    }
 }

+ 61 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/query/TaskPageQuery.java

@@ -0,0 +1,61 @@
+package com.simuwang.base.pojo.dto.query;
+
+import com.simuwang.base.common.support.query.PageQuery;
+
+/**
+ * FileName: LogPageQuery
+ * Author:   chenjianhua
+ * Date:     2024/9/28 21:03
+ * Description: ${DESCRIPTION}
+ */
+public class TaskPageQuery extends PageQuery {
+
+    /**
+     * 邮箱地址
+     */
+    private String email;
+    /**
+     * 任务类型,1-邮件解析,2-缺失计算,3-缺失明细通知
+     */
+    private Integer taskType;
+    /**
+     * 任务开始时间
+     */
+    private String startDate;
+    /**
+     * 任务结束时间
+     */
+    private String endDate;
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(String startDate) {
+        this.startDate = startDate;
+    }
+
+    public String getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+
+    public Integer getTaskType() {
+        return taskType;
+    }
+
+    public void setTaskType(Integer taskType) {
+        this.taskType = taskType;
+    }
+}

+ 58 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/EmailTaskInfoVO.java

@@ -0,0 +1,58 @@
+package com.simuwang.base.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * FileName: EmailTaskInfo
+ * Author:   chenjianhua
+ * Date:     2024/10/8 9:13
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class EmailTaskInfoVO {
+    /**
+     * 主键Id
+     */
+    private Integer id;
+    /**
+     * 任务名称
+     */
+    private String taskName;
+    /**
+     * 任务类型
+     */
+    private Integer taskType;
+    /**
+     * 邮箱地址
+     */
+    private String email;
+    /**
+     * 开始时间
+     */
+    private String startTime;
+    /**
+     * 结束时间
+     */
+    private String endTime;
+    /**
+     * 任务状态,1-运行中,2-结束,-1-异常
+     */
+    private Integer taskStatus;
+    /**
+     * 记录的有效性;1-有效;0-无效;
+     */
+    private Integer isvalid;
+    /**
+     * 创建时间,默认第一次创建的getdate()时间
+     */
+    private String createTime;
+    /**
+     * 修改时间;第一次创建时与CreatTime值相同,修改时与修改时间相同
+     */
+    private String updateTime;
+}

+ 45 - 2
service-base/src/main/resources/mapper/EmailTaskInfoMapper.xml

@@ -5,6 +5,7 @@
         <id column="id" property="id"/>
         <result column="email" property="email"/>
         <result column="task_name" property="taskName"/>
+        <result column="task_type" property="taskType"/>
         <result column="start_time" property="startTime" />
         <result column="end_time" property="endTime" />
         <result column="task_status" property="taskStatus"/>
@@ -17,13 +18,55 @@
 
 
     <insert id="insert" parameterType="com.simuwang.base.pojo.dos.EmailTaskInfoDO" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
-        insert into PPW_EMAIL.email_task_info(email, task_name, start_time, end_time, task_status,
+        insert into PPW_EMAIL.email_task_info(email, task_name,task_type, start_time, end_time, task_status,
                                      isvalid, creatorid, createtime, updaterid, updatetime)
-        values (#{itemDo.email}, #{itemDo.taskName}, #{itemDo.startTime}, #{itemDo.endTime}, #{itemDo.taskStatus},
+        values (#{itemDo.email}, #{itemDo.taskName}, #{itemDo.taskType}, #{itemDo.startTime}, #{itemDo.endTime}, #{itemDo.taskStatus},
                 #{itemDo.isvalid}, #{itemDo.creatorId}, #{itemDo.createTime}, #{itemDo.updaterId}, #{itemDo.updateTime})
     </insert>
     <update id="updateTaskStatus">
         update PPW_EMAIL.email_task_info set task_status=#{taskStatus},updatetime=sysdate() where email=#{email} and start_time=#{startTime} and end_time=#{endTime}
     </update>
+    <update id="updateTaskStatusById">
+        update PPW_EMAIL.email_task_info set task_status=#{taskStatus},updatetime=#{updateTime},end_time=#{endTime} where id=#{id}
+    </update>
+    <select id="searchTaskList" resultMap="BaseResultMap"
+            parameterType="com.simuwang.base.pojo.dto.query.TaskPageQuery">
+        select id,email, task_name,task_type, start_time, end_time, task_status,
+               isvalid, creatorid, createtime, updaterid, updatetime
+        from PPW_EMAIL.email_task_info
+        where isvalid=1
+        <if test="email != null and email !=''">
+            and email like concat('%',#{email},'%')
+        </if>
+        <if test="startDate != null and startDate !=''">
+            and updatetime >= #{startDate}
+        </if>
+        <if test="taskType != null">
+            and task_type = #{taskType}
+        </if>
+        <if test="endDate != null and endDate !=''">
+            and updatetime <![CDATA[ <= ]]> #{endDate}
+        </if>
+        order by updatetime desc
+        limit #{offset},#{pageSize}
+    </select>
+    <select id="countTaskList" resultType="java.lang.Long"
+            parameterType="com.simuwang.base.pojo.dto.query.TaskPageQuery">
+        select count(1)
+        from PPW_EMAIL.email_task_info
+        where isvalid=1
+        <if test="email != null and email !=''">
+            and email like concat('%',#{email},'%')
+        </if>
+        <if test="startDate != null and startDate !=''">
+            and updatetime >= #{startDate}
+        </if>
+        <if test="endDate != null and endDate !=''">
+            and updatetime <![CDATA[ <= ]]> #{endDate}
+        </if>
+        <if test="taskType != null">
+            and task_type = #{taskType}
+        </if>
+    </select>
 
 </mapper>

+ 18 - 12
service-daq/src/main/java/com/simuwang/daq/service/EmailParseApiServiceImpl.java

@@ -6,7 +6,7 @@ import cn.hutool.core.exceptions.ExceptionUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
 import com.simuwang.base.common.conts.DateConst;
-import com.simuwang.base.common.conts.TaskConst;
+import com.simuwang.base.common.enums.TaskType;
 import com.simuwang.base.common.util.DateUtils;
 import com.simuwang.base.common.util.EmailUtil;
 import com.simuwang.base.mapper.EmailFileInfoMapper;
@@ -64,37 +64,42 @@ public class EmailParseApiServiceImpl implements EmailParseApiService {
         asyncExecutor.execute(new Runnable() {
                   @Override
                   public void run() {
-                      startEmailTask(mailboxInfoDTO, startDate, endDate,1);
+                      EmailTaskInfoDO emailTaskInfoDO = startEmailTask(mailboxInfoDTO.getAccount(), 1);
                       try{
                           emailParseService.parseEmail(mailboxInfoDTO, startDate, endDate);
                       }catch (Exception e){
                           log.error(e.getMessage(),e);
-                          endEmailTask(mailboxInfoDTO,startDate,endDate,-1);
+                          endEmailTask(emailTaskInfoDO.getId(),-1);
                           return;
                       }
-                      endEmailTask(mailboxInfoDTO,startDate,endDate,2);
+                      endEmailTask(emailTaskInfoDO.getId(),2);
                   }
               }
         );
     }
 
-    private void endEmailTask(MailboxInfoDTO mailboxInfoDTO, Date startDate, Date endDate,Integer taskStatus) {
+    private void endEmailTask(Integer id,Integer taskStatus) {
         try{
-            emailTaskInfoMapper.updateTaskStatus(mailboxInfoDTO.getAccount(),startDate,endDate,taskStatus);
+            EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
+            emailTaskInfoDO.setId(id);
+            emailTaskInfoDO.setTaskStatus(taskStatus);
+            emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
+            emailTaskInfoDO.setEndTime(DateUtils.getNowDate());
+            emailTaskInfoMapper.updateTaskStatusById(emailTaskInfoDO);
         }catch (Exception e){
             log.error(e.getMessage());
         }
     }
 
-    private void startEmailTask(MailboxInfoDTO mailboxInfoDTO, Date startDate, Date endDate,Integer taskStatus) {
+    private EmailTaskInfoDO startEmailTask(String email,Integer taskStatus) {
+        EmailTaskInfoDO  emailTaskInfoDO = new EmailTaskInfoDO();
         try{
-            EmailTaskInfoDO  emailTaskInfoDO = new EmailTaskInfoDO();
-            emailTaskInfoDO.setTaskName(TaskConst.EMAIL_TASK);
+            emailTaskInfoDO.setTaskName(TaskType.EMAIL_PARSE.getInfo());
+            emailTaskInfoDO.setTaskType(TaskType.EMAIL_PARSE.getType());
             emailTaskInfoDO.setTaskStatus(taskStatus);
-            emailTaskInfoDO.setStartTime(startDate);
-            emailTaskInfoDO.setEndTime(endDate);
+            emailTaskInfoDO.setStartTime(DateUtils.getNowDate());
             emailTaskInfoDO.setIsvalid(1);
-            emailTaskInfoDO.setEmail(mailboxInfoDTO.getAccount());
+            emailTaskInfoDO.setEmail(email);
             emailTaskInfoDO.setCreateTime(DateUtils.getNowDate());
             emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
             try{
@@ -107,6 +112,7 @@ public class EmailParseApiServiceImpl implements EmailParseApiService {
         }catch (Exception e){
             log.error(e.getMessage());
         }
+        return emailTaskInfoDO;
     }
 
     @Override

+ 37 - 0
service-manage/src/main/java/com/simuwang/manage/api/log/TaskLogController.java

@@ -0,0 +1,37 @@
+package com.simuwang.manage.api.log;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.query.TaskPageQuery;
+import com.simuwang.base.pojo.vo.EmailTaskInfoVO;
+import com.simuwang.logging.SystemLog;
+import com.simuwang.manage.service.TaskLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 任务信息管理
+ * Author:   chenjianhua
+ * Date:     2024/10/8 14:06
+ * Description: ${DESCRIPTION}
+ */
+@SystemLog("任务信息管理")
+@RestController
+@RequestMapping("/v1/task")
+public class TaskLogController {
+    @Autowired
+    private TaskLogService taskLogService;
+    /**
+     * 日志查询列表
+     * @param taskPageQuery
+     * @return
+     */
+    @SystemLog(value = "查询任务列表")
+    @GetMapping("/search-task-list")
+    public MybatisPage<EmailTaskInfoVO> searchTaskList(TaskPageQuery taskPageQuery){
+        MybatisPage<EmailTaskInfoVO> result = taskLogService.searchTaskList(taskPageQuery);
+        return result;
+    }
+
+}

+ 15 - 0
service-manage/src/main/java/com/simuwang/manage/service/TaskLogService.java

@@ -0,0 +1,15 @@
+package com.simuwang.manage.service;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.query.TaskPageQuery;
+import com.simuwang.base.pojo.vo.EmailTaskInfoVO;
+
+/**
+ * FileName: TaskLogService
+ * Author:   chenjianhua
+ * Date:     2024/10/8 14:08
+ * Description: ${DESCRIPTION}
+ */
+public interface TaskLogService {
+    MybatisPage<EmailTaskInfoVO> searchTaskList(TaskPageQuery taskPageQuery);
+}

+ 39 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/TaskLogServiceImpl.java

@@ -0,0 +1,39 @@
+package com.simuwang.manage.service.impl;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.mapper.EmailTaskInfoMapper;
+import com.simuwang.base.pojo.dos.EmailTaskInfoDO;
+import com.simuwang.base.pojo.dto.query.TaskPageQuery;
+import com.simuwang.base.pojo.vo.EmailTaskInfoVO;
+import com.simuwang.manage.service.TaskLogService;
+import com.smppw.utils.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * FileName: TaskLogServiceImpl
+ * Author:   chenjianhua
+ * Date:     2024/10/8 14:08
+ * Description: ${DESCRIPTION}
+ */
+@Service
+public class TaskLogServiceImpl implements TaskLogService {
+
+    @Autowired
+    private EmailTaskInfoMapper emailTaskInfoMapper;
+
+    @Override
+    public MybatisPage<EmailTaskInfoVO> searchTaskList(TaskPageQuery taskPageQuery) {
+        if(taskPageQuery.getEndDate() != null){
+            taskPageQuery.setEndDate(DateUtil.getAroundDate(DateUtils.parse(taskPageQuery.getEndDate(),DateUtils.YYYY_MM_DD),1));
+        }
+        List<EmailTaskInfoDO> emailTaskInfoDOList = emailTaskInfoMapper.searchTaskList(taskPageQuery);
+        List<EmailTaskInfoVO> emailTaskInfoVOList = emailTaskInfoDOList.stream().map(EmailTaskInfoDO::toVO).collect(Collectors.toList());
+        long total = emailTaskInfoMapper.countTaskList(taskPageQuery);
+        return MybatisPage.of(total,emailTaskInfoVOList);
+    }
+}

+ 56 - 5
service-manage/src/main/java/com/simuwang/manage/task/FundDeletionTask.java

@@ -4,12 +4,18 @@ import cn.hutool.core.date.DateUtil;
 import com.simuwang.base.common.enums.DeletionType;
 import com.simuwang.base.common.enums.DistributeType;
 import com.simuwang.base.common.enums.Frequency;
+import com.simuwang.base.common.enums.TaskType;
 import com.simuwang.base.common.util.DateUtils;
 import com.simuwang.base.common.util.StringUtil;
 import com.simuwang.base.mapper.*;
 import com.simuwang.base.pojo.dos.*;
 import com.simuwang.base.pojo.dto.DeletionDownParam;
+import com.simuwang.base.pojo.dto.MailboxInfoDTO;
+import com.simuwang.daq.service.EmailParseApiServiceImpl;
 import com.simuwang.manage.service.DeletionService;
+import com.simuwang.shiro.utils.UserUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -28,19 +34,64 @@ import java.util.stream.Collectors;
 //@EnableScheduling
 @Component
 public class FundDeletionTask {
-
+    private static final Logger log = LoggerFactory.getLogger(FundDeletionTask.class);
     @Autowired
     private NavMapper navMapper;
     @Autowired
     private DeletionService deletionService;
+    @Autowired
+    private EmailTaskInfoMapper emailTaskInfoMapper;
 //    @Scheduled(cron = "0 0 5,12,19 * * ?")
     public void computeDeletion(){
+        EmailTaskInfoDO emailTaskInfoDO = startEmailTask(null, 1);
         List<String> fundIdList = navMapper.getAllFundId();
-        for(String fundId : fundIdList){
-            DeletionDownParam deletionDownParam = new DeletionDownParam();
-            deletionDownParam.setFundId(fundId);
-            deletionService.computeDeletion(deletionDownParam);
+        try{
+            for(String fundId : fundIdList){
+                DeletionDownParam deletionDownParam = new DeletionDownParam();
+                deletionDownParam.setFundId(fundId);
+                deletionService.computeDeletion(deletionDownParam);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            endEmailTask(emailTaskInfoDO.getId(),-1);
+            return;
+        }
+        endEmailTask(emailTaskInfoDO.getId(),2);
+    }
+    private void endEmailTask(Integer id, Integer taskStatus) {
+        try{
+            EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
+            emailTaskInfoDO.setId(id);
+            emailTaskInfoDO.setTaskStatus(taskStatus);
+            emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
+            emailTaskInfoDO.setEndTime(DateUtils.getNowDate());
+            emailTaskInfoMapper.updateTaskStatusById(emailTaskInfoDO);
+        }catch (Exception e){
+            log.error(e.getMessage());
         }
     }
 
+    private EmailTaskInfoDO startEmailTask(String email,Integer taskStatus) {
+        EmailTaskInfoDO  emailTaskInfoDO = new EmailTaskInfoDO();
+        try{
+            emailTaskInfoDO.setTaskName(TaskType.DELETION_COMPUTE.getInfo());
+            emailTaskInfoDO.setTaskType(TaskType.DELETION_COMPUTE.getType());
+            emailTaskInfoDO.setTaskStatus(taskStatus);
+            emailTaskInfoDO.setStartTime(DateUtils.getNowDate());
+            emailTaskInfoDO.setIsvalid(1);
+            emailTaskInfoDO.setEmail(email);
+            emailTaskInfoDO.setCreateTime(DateUtils.getNowDate());
+            emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
+            try{
+                emailTaskInfoDO.setCreatorId(UserUtils.getLoginUser().getUserId());
+                emailTaskInfoDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
+            }catch (Exception e){
+
+            }
+            emailTaskInfoMapper.insert(emailTaskInfoDO);
+        }catch (Exception e){
+            log.error(e.getMessage());
+        }
+        return emailTaskInfoDO;
+    }
 }

+ 62 - 13
service-manage/src/main/java/com/simuwang/manage/task/SendCompanyEmailTask.java

@@ -1,8 +1,15 @@
 package com.simuwang.manage.task;
 
+import com.simuwang.base.common.enums.TaskType;
+import com.simuwang.base.common.util.DateUtils;
 import com.simuwang.base.mapper.CompanyEmailConfigMapper;
+import com.simuwang.base.mapper.EmailTaskInfoMapper;
 import com.simuwang.base.pojo.dos.CompanyEmailConfigDO;
+import com.simuwang.base.pojo.dos.EmailTaskInfoDO;
 import com.simuwang.manage.service.CompanyEmailConfigService;
+import com.simuwang.shiro.utils.UserUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -18,27 +25,69 @@ import java.util.stream.Collectors;
  * Date:     2024/9/20 22:45
  * Description: ${DESCRIPTION}
  */
-//@EnableScheduling
 @Component
 public class SendCompanyEmailTask {
-
-
+    private static final Logger log = LoggerFactory.getLogger(SendCompanyEmailTask.class);
     @Autowired
     private CompanyEmailConfigMapper companyEmailConfigMapper;
-
     @Autowired
     private CompanyEmailConfigService companyEmailConfigService;
-//    @Scheduled(cron = "0 09 15 * * ?")
+    @Autowired
+    private EmailTaskInfoMapper emailTaskInfoMapper;
     public void sendEmail(){
-        List<CompanyEmailConfigDO> configDOList = companyEmailConfigMapper.getAllCompanyConfig();
-        Map<String,List<CompanyEmailConfigDO>> companyListMap = configDOList.stream().collect(Collectors.groupingBy(e -> e.getCompanyId()));
-        for(String companyId : companyListMap.keySet()){
-            List<CompanyEmailConfigDO> configDOS = companyListMap.get(companyId);
-            StringBuffer emails = new StringBuffer();
-            for(CompanyEmailConfigDO configDO : configDOS){
-                emails.append(configDO.getEmail()).append(";");
+        EmailTaskInfoDO emailTaskInfoDO = startEmailTask(null, 1);
+        try{
+            List<CompanyEmailConfigDO> configDOList = companyEmailConfigMapper.getAllCompanyConfig();
+            Map<String,List<CompanyEmailConfigDO>> companyListMap = configDOList.stream().collect(Collectors.groupingBy(e -> e.getCompanyId()));
+            for(String companyId : companyListMap.keySet()){
+                List<CompanyEmailConfigDO> configDOS = companyListMap.get(companyId);
+                StringBuffer emails = new StringBuffer();
+                for(CompanyEmailConfigDO configDO : configDOS){
+                    emails.append(configDO.getEmail()).append(";");
+                }
+                companyEmailConfigService.sendEmail(companyId,emails.toString());
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            endEmailTask(emailTaskInfoDO.getId(),-1);
+            return;
+        }
+        endEmailTask(emailTaskInfoDO.getId(),2);
+    }
+    private void endEmailTask(Integer id, Integer taskStatus) {
+        try{
+            EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
+            emailTaskInfoDO.setId(id);
+            emailTaskInfoDO.setTaskStatus(taskStatus);
+            emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
+            emailTaskInfoDO.setEndTime(DateUtils.getNowDate());
+            emailTaskInfoMapper.updateTaskStatusById(emailTaskInfoDO);
+        }catch (Exception e){
+            log.error(e.getMessage());
+        }
+    }
+
+    private EmailTaskInfoDO startEmailTask(String email,Integer taskStatus) {
+        EmailTaskInfoDO  emailTaskInfoDO = new EmailTaskInfoDO();
+        try{
+            emailTaskInfoDO.setTaskName(TaskType.DELETION_NOTIFICATIONS.getInfo());
+            emailTaskInfoDO.setTaskType(TaskType.DELETION_NOTIFICATIONS.getType());
+            emailTaskInfoDO.setTaskStatus(taskStatus);
+            emailTaskInfoDO.setStartTime(DateUtils.getNowDate());
+            emailTaskInfoDO.setIsvalid(1);
+            emailTaskInfoDO.setEmail(email);
+            emailTaskInfoDO.setCreateTime(DateUtils.getNowDate());
+            emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
+            try{
+                emailTaskInfoDO.setCreatorId(UserUtils.getLoginUser().getUserId());
+                emailTaskInfoDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
+            }catch (Exception e){
+
             }
-            companyEmailConfigService.sendEmail(companyId,emails.toString());
+            emailTaskInfoMapper.insert(emailTaskInfoDO);
+        }catch (Exception e){
+            log.error(e.getMessage());
         }
+        return emailTaskInfoDO;
     }
 }