wangzaijun преди 6 месеца
родител
ревизия
69516651e6

+ 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;
+    }
+
+}

+ 5 - 2
service-base/src/main/java/com/simuwang/base/common/util/ExcelUtil.java

@@ -366,13 +366,15 @@ public class ExcelUtil {
             PageIterator extract = new ObjectExtractor(document).extract();
             Workbook workbook = new XSSFWorkbook();
             Sheet sheet = workbook.createSheet("Sheet1");
+            int preEndRowIndex =0;
             while (extract.hasNext()) {
                 Page next = extract.next();
                 List<technology.tabula.Table> tableList = new SpreadsheetExtractionAlgorithm().extract(next);
                 for (technology.tabula.Table table : tableList) {
                     List<List<RectangularTextContainer>> rows = table.getRows();
-                    for (int rowNum = 0; rowNum < rows.size(); rowNum++) {
-                        Row sheetRow = sheet.createRow(rowNum);
+                    int rowLength = rows.size();
+                    for (int rowNum = 0; rowNum < rowLength; rowNum++) {
+                        Row sheetRow = sheet.createRow(rowNum + preEndRowIndex);
                         List<RectangularTextContainer> textContainerList = rows.get(rowNum);
                         for (int cellNum = 0; cellNum < textContainerList.size(); cellNum++) {
                             Cell cell = sheetRow.createCell(cellNum);
@@ -382,6 +384,7 @@ public class ExcelUtil {
                             }
                         }
                     }
+                    preEndRowIndex = preEndRowIndex + rowLength -1;
                 }
             }
             // 将Excel工作簿写入输出流

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

@@ -0,0 +1,30 @@
+package com.simuwang.base.mapper;
+
+import com.simuwang.base.pojo.dos.EmailFileInfoDO;
+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;
+
+import java.util.Date;
+import java.util.List;
+
+@Mapper
+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);
+
+    void deleteTaskLog(@Param("idList") List<Integer> idList, @Param("userId") Integer userId);
+}

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

@@ -0,0 +1,96 @@
+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;
+
+/**
+ * FileName: EmailTaskInfo
+ * Author:   chenjianhua
+ * Date:     2024/10/8 9:13
+ * Description: ${DESCRIPTION}
+ */
+@Data
+@TableName("email_task_info")
+public class EmailTaskInfoDO {
+    /**
+     * 主键Id
+     */
+    @TableId(value = "id")
+    private Integer id;
+    /**
+     * 任务名称
+     */
+    @TableField(value = "task_name")
+    private String taskName;
+    /**
+     * 任务类型
+     */
+    @TableField(value = "task_type")
+    private Integer taskType;
+    /**
+     * 邮箱地址
+     */
+    @TableField(value = "email")
+    private String email;
+    /**
+     * 开始时间
+     */
+    @TableField(value = "start_time")
+    private Date startTime;
+    /**
+     * 结束时间
+     */
+    @TableField(value = "end_time")
+    private Date endTime;
+    /**
+     * 任务状态,1-运行中,2-结束,-1-异常
+     */
+    @TableField(value = "task_status")
+    private Integer taskStatus;
+    /**
+     * 记录的有效性;1-有效;0-无效;
+     */
+    @TableField(value = "isvalid")
+    private Integer isvalid;
+    /**
+     * 创建者Id;第一次创建时与Creator值相同,修改时与修改人值相同
+     */
+    @TableField(value = "creatorid")
+    private Integer creatorId;
+    /**
+     * 修改者Id;第一次创建时与Creator值相同,修改时与修改人值相同
+     */
+    @TableField(value = "updaterid")
+    private Integer updaterId;
+    /**
+     * 创建时间,默认第一次创建的getdate()时间
+     */
+    @TableField(value = "createtime")
+    private Date createTime;
+    /**
+     * 修改时间;第一次创建时与CreatTime值相同,修改时与修改时间相同
+     */
+    @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;
+}

+ 1 - 1
service-base/src/main/resources/mapper/AssetMapper.xml

@@ -41,7 +41,7 @@
         update PPW_EMAIL.asset set isvalid=0,updatetime=sysdate(),updaterid=#{updaterId}  where fund_id=#{fundId} and price_date=#{priceDate}
     </delete>
     <delete id="batchDeleteAsset">
-        update PPW_EMAIL.asset set isvalid=0,updatetime=sysdate() where fund_id=#{FundId}
+        update PPW_EMAIL.asset set isvalid=0,updatetime=sysdate() where fund_id=#{fundId}
         and price_date in
         <foreach collection="priceDateList" index="index" item="priceDate" separator="," open="(" close=")">
             #{priceDate}

+ 79 - 0
service-base/src/main/resources/mapper/EmailTaskInfoMapper.xml

@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.simuwang.base.mapper.EmailTaskInfoMapper">
+    <resultMap id="BaseResultMap" type="com.simuwang.base.pojo.dos.EmailTaskInfoDO">
+        <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"/>
+        <result column="isvalid" property="isvalid"/>
+        <result column="creatorid" property="creatorId"/>
+        <result column="createtime" property="createTime"/>
+        <result column="updaterid" property="updaterId"/>
+        <result column="updatetime" property="updateTime"/>
+    </resultMap>
+
+
+    <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,task_type, start_time, end_time, task_status,
+                                     isvalid, creatorid, createtime, updaterid, updatetime)
+        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>
+    <delete id="deleteTaskLog">
+        update PPW_EMAIL.email_task_info set isvalid=0,updatetime=sysdate(),updaterid=#{userId} where isvalid=0
+        and id in
+        <foreach collection="idList" index="index" item="id" separator="," open="(" close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <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>

+ 60 - 2
service-daq/src/main/java/com/simuwang/daq/service/EmailParseApiServiceImpl.java

@@ -6,15 +6,20 @@ 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.enums.TaskType;
+import com.simuwang.base.common.util.DateUtils;
 import com.simuwang.base.common.util.EmailUtil;
 import com.simuwang.base.mapper.EmailFileInfoMapper;
 import com.simuwang.base.mapper.EmailParseInfoMapper;
+import com.simuwang.base.mapper.EmailTaskInfoMapper;
 import com.simuwang.base.pojo.dos.EmailFileInfoDO;
 import com.simuwang.base.pojo.dos.EmailParseInfoDO;
+import com.simuwang.base.pojo.dos.EmailTaskInfoDO;
 import com.simuwang.base.pojo.dto.EmailContentInfoDTO;
 import com.simuwang.base.pojo.dto.EmailFundNavDTO;
 import com.simuwang.base.pojo.dto.EmailInfoDTO;
 import com.simuwang.base.pojo.dto.MailboxInfoDTO;
+import com.simuwang.shiro.utils.UserUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -43,18 +48,71 @@ public class EmailParseApiServiceImpl implements EmailParseApiService {
     private final EmailParseInfoMapper emailParseInfoMapper;
     private final EmailFileInfoMapper emailFileInfoMapper;
     private final ThreadPoolTaskExecutor asyncExecutor;
+    private final EmailTaskInfoMapper emailTaskInfoMapper;
 
     public EmailParseApiServiceImpl(EmailParseService emailParseService, EmailParseInfoMapper emailParseInfoMapper,
-                                    EmailFileInfoMapper emailFileInfoMapper, @Qualifier("asyncExecutor") ThreadPoolTaskExecutor asyncExecutor) {
+                                    EmailFileInfoMapper emailFileInfoMapper, @Qualifier("asyncExecutor") ThreadPoolTaskExecutor asyncExecutor, EmailTaskInfoMapper emailTaskInfoMapper) {
         this.emailParseService = emailParseService;
         this.emailParseInfoMapper = emailParseInfoMapper;
         this.emailFileInfoMapper = emailFileInfoMapper;
         this.asyncExecutor = asyncExecutor;
+        this.emailTaskInfoMapper = emailTaskInfoMapper;
     }
 
     @Override
     public void parseEmail(MailboxInfoDTO mailboxInfoDTO, Date startDate, Date endDate) {
-        asyncExecutor.execute(() -> emailParseService.parseEmail(mailboxInfoDTO, startDate, endDate));
+        asyncExecutor.execute(new Runnable() {
+                  @Override
+                  public void run() {
+                      EmailTaskInfoDO emailTaskInfoDO = startEmailTask(mailboxInfoDTO.getAccount(), 1);
+                      try{
+                          emailParseService.parseEmail(mailboxInfoDTO, startDate, endDate);
+                      }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.EMAIL_PARSE.getInfo());
+            emailTaskInfoDO.setTaskType(TaskType.EMAIL_PARSE.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;
     }
 
     @Override

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

@@ -0,0 +1,46 @@
+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.base.pojo.vo.IdListVO;
+import com.simuwang.logging.SystemLog;
+import com.simuwang.manage.service.TaskLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 任务信息管理
+ * 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;
+    }
+    /**
+     * 删除任务列表
+     * @param idListVO
+     * @return
+     */
+    @SystemLog(value = "删除任务列表",type = SystemLog.Type.DELETE)
+    @PostMapping("/delete-task-log")
+    public boolean deleteLog(@RequestBody IdListVO idListVO){
+        taskLogService.deleteTaskLog(idListVO);
+        return true;
+    }
+}

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

@@ -0,0 +1,18 @@
+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;
+import com.simuwang.base.pojo.vo.IdListVO;
+
+/**
+ * FileName: TaskLogService
+ * Author:   chenjianhua
+ * Date:     2024/10/8 14:08
+ * Description: ${DESCRIPTION}
+ */
+public interface TaskLogService {
+    MybatisPage<EmailTaskInfoVO> searchTaskList(TaskPageQuery taskPageQuery);
+
+    void deleteTaskLog(IdListVO idListVO);
+}

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

@@ -0,0 +1,47 @@
+package com.simuwang.manage.service.impl;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.common.util.StringUtil;
+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.base.pojo.vo.IdListVO;
+import com.simuwang.manage.service.TaskLogService;
+import com.simuwang.shiro.utils.UserUtils;
+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(StringUtil.isNotEmpty(taskPageQuery.getEndDate())){
+            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);
+    }
+
+    @Override
+    public void deleteTaskLog(IdListVO idListVO) {
+        emailTaskInfoMapper.deleteTaskLog(idListVO.getIdList(), UserUtils.getLoginUser().getUserId());
+    }
+}

+ 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;
     }
 }