Ver Fonte

feat:邮件解析新增处理状态

chenjianhua há 3 semanas atrás
pai
commit
7b742a3d9e

+ 29 - 0
service-base/src/main/java/com/simuwang/base/common/enums/ReviewStatusType.java

@@ -0,0 +1,29 @@
+package com.simuwang.base.common.enums;
+
+import java.util.stream.Stream;
+
+/**
+ * FileName: DistributeType
+ * Author:   chenjianhua
+ * Date:     2024/9/16 13:30
+ * Description: ${DESCRIPTION}
+ */
+public enum ReviewStatusType {
+    //单位分红/拆分比例
+    SUCCESS(1, "无需处理"), FAIL(0, "未处理"), PERSONNEL_REVIEW(2, "人工已处理"), PERSONNEL_NO_REVIEW(3, "暂不处理");
+
+    private final Integer code;
+    private final String info;
+
+    ReviewStatusType(Integer code, String info) {
+        this.code = code;
+        this.info = info;
+    }
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+}

+ 3 - 1
service-base/src/main/java/com/simuwang/base/mapper/daq/EmailParseInfoMapper.java

@@ -17,7 +17,7 @@ public interface EmailParseInfoMapper {
 
     Integer insert(@Param("itemDo") EmailParseInfoDO emailParseInfoDO);
 
-    void updateParseStatus(@Param("id") Integer id, @Param("parseStatus") int parseStatus, @Param("failReason") String failReason);
+    void updateParseStatus(@Param("id") Integer id, @Param("parseStatus") int parseStatus, @Param("failReason") String failReason,@Param("reviewStatus") int reviewStatus);
 
     List<EmailParseInfoDO> searchEmailList(EmailParseQuery emailParseQuery);
 
@@ -40,4 +40,6 @@ public interface EmailParseInfoMapper {
     Long countNoDataByFailReason(@Param("item") DataboardQuery databoardQuery, @Param("errorInfo")String errorInfo);
 
     Long countEmailTotal(@Param("emailType")Integer emailType);
+
+    void updateReviewStatus(@Param("idList")List<Integer> idList, @Param("reviewStatus")Integer reviewStatus,@Param("userId") Integer userId);
 }

+ 0 - 1
service-base/src/main/java/com/simuwang/base/pojo/dos/ChannelResponsibilityInfoDO.java

@@ -1,6 +1,5 @@
 package com.simuwang.base.pojo.dos;
 
-import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 import java.util.Date;

+ 4 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/EmailParseInfoDO.java

@@ -83,6 +83,9 @@ public class EmailParseInfoDO {
     @TableField(value = "updatetime")
     private Date updateTime;
 
+    @TableField(value = "review_status")
+    private Integer reviewStatus;
+
     public EmailParseInfoVO toVO() {
         EmailParseInfoVO vo = new EmailParseInfoVO();
         vo.setEmail(this.email);
@@ -94,6 +97,7 @@ public class EmailParseInfoDO {
         vo.setSenderEmail(this.senderEmail);
         vo.setParseDate(DateUtils.format(this.parseDate,DateUtils.YYYY_MM_DD_HH_MM_SS));
         vo.setId(this.id);
+        vo.setReviewStatus(this.reviewStatus);
         return vo;
     }
 }

+ 12 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/query/EmailParseQuery.java

@@ -59,6 +59,18 @@ public class EmailParseQuery extends PageQuery {
      */
     private String emailEndDate;
 
+    /**
+     * 处理状态
+     */
+    private Integer reviewStatus;
+
+    public Integer getReviewStatus() {
+        return reviewStatus;
+    }
+
+    public void setReviewStatus(Integer reviewStatus) {
+        this.reviewStatus = reviewStatus;
+    }
 
     public String getEmailTitle() {
         return emailTitle;

+ 2 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/EmailParseInfoVO.java

@@ -54,4 +54,6 @@ public class EmailParseInfoVO {
      * 失败原因
      */
     private String failReason;
+
+    private Integer reviewStatus;
 }

+ 19 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/ReviewStatusVO.java

@@ -0,0 +1,19 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * FileName: IdListVO
+ * Author:   chenjianhua
+ * Date:     2024/9/15 16:03
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class ReviewStatusVO {
+
+    private List<Integer> idList;
+
+    private Integer reviewStatus;
+}

+ 21 - 4
service-base/src/main/resources/mapper/daq/EmailParseInfoMapper.xml

@@ -17,20 +17,22 @@
         <result column="updaterid" property="updaterId"/>
         <result column="updatetime" property="updateTime"/>
         <result column="sender_email" property="senderEmail"/>
+        <result column="review_status" property="reviewStatus"/>
     </resultMap>
 
 
     <insert id="insert" parameterType="com.simuwang.base.pojo.dos.EmailParseInfoDO" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
         insert into email_parse_info(email, sender_email, email_date, parse_date, email_title, email_type, parse_status,
-                                     isvalid, creatorid, createtime, updaterid, updatetime)
+                                     isvalid, creatorid, createtime, updaterid, updatetime,review_status)
         values (#{itemDo.email}, #{itemDo.senderEmail}, #{itemDo.emailDate}, #{itemDo.parseDate}, #{itemDo.emailTitle}, #{itemDo.emailType}, #{itemDo.parseStatus},
-                #{itemDo.isvalid}, #{itemDo.creatorId}, #{itemDo.createTime}, #{itemDo.updaterId}, #{itemDo.updateTime})
+                #{itemDo.isvalid}, #{itemDo.creatorId}, #{itemDo.createTime}, #{itemDo.updaterId}, #{itemDo.updateTime},#{item.reviewStatus})
     </insert>
 
     <update id="updateParseStatus">
         update email_parse_info
         set parse_status = #{parseStatus},
-            fail_reason = #{failReason}
+            fail_reason = #{failReason},
+            review_status = #{reviewStatus}
         where isvalid = 1
           and id = #{id}
     </update>
@@ -49,7 +51,8 @@
             epi.createtime,
             epi.updatetime,
             epi.updaterid,
-            epi.sender_email
+            epi.sender_email,
+            epi.review_status
         FROM
             email_parse_info epi
     </sql>
@@ -63,6 +66,9 @@
             <if test="emailType !=null">
                 and epi.email_type = #{emailType}
             </if>
+            <if test="reviewStatus !=null and reviewStatus != ''">
+                and epi.review_status = #{reviewStatus}
+            </if>
             <if test="parseStatus !=null">
                 and epi.parse_status = #{parseStatus}
             </if>
@@ -145,6 +151,17 @@
         where isvalid = 1
           and id = #{id}
     </update>
+    <update id="updateReviewStatus">
+        update email_parse_info
+        set updatetime=now(),
+            review_status = #{reviewStatus},
+            updaterid=#{userId}
+        where isvalid = 1
+          and id in
+        <foreach item="id" collection="idList" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
 
     <select id="queryValuationEmailByFileId" resultType="com.simuwang.base.pojo.dto.EmailInfoDTO">
         select t1.id as id,

+ 12 - 1
service-daq/src/main/java/com/simuwang/daq/service/EmailParseService.java

@@ -9,8 +9,10 @@ import cn.hutool.core.exceptions.ExceptionUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
 import com.simuwang.base.common.conts.*;
+import com.simuwang.base.common.enums.ParseStatus;
 import com.simuwang.base.common.enums.ReportParserFileType;
 import com.simuwang.base.common.enums.ReportType;
+import com.simuwang.base.common.enums.ReviewStatusType;
 import com.simuwang.base.common.exception.ReportParseException;
 import com.simuwang.base.common.util.*;
 import com.simuwang.base.config.DaqProperties;
@@ -298,7 +300,11 @@ public class EmailParseService {
                 failReason = dataList.stream().map(ParseResult::getMsg).collect(Collectors.joining("/"));
             }
         }
-        emailParseInfoMapper.updateParseStatus(emailId, emailParseStatus, failReason);
+        int reviewStatus = ReviewStatusType.FAIL.getCode();
+        if(emailParseStatus == EmailParseStatusConst.SUCCESS){
+            reviewStatus = ReviewStatusType.SUCCESS.getCode();
+        }
+        emailParseInfoMapper.updateParseStatus(emailId, emailParseStatus, failReason,reviewStatus);
     }
 
     private void saveFileManage(Integer fileId,Integer emailType, EmailContentInfoDTO emailContentInfoDTO,List<EmailFundNavDTO> fundNavDTOList, Date parseDate) {
@@ -1004,6 +1010,11 @@ public class EmailParseService {
             emailParseInfoMapper.updateParseTime(emailParseInfoDO.getId(), emailParseInfoDO.getParseDate());
             return emailParseInfoDO.getId();
         }
+        if(EmailParseStatusConst.SUCCESS.equals(emailParseInfoDO.getParseStatus())){
+            emailParseInfoDO.setReviewStatus(ReviewStatusType.SUCCESS.getCode());
+        }else{
+            emailParseInfoDO.setReviewStatus(ReviewStatusType.FAIL.getCode());
+        }
         emailParseInfoMapper.insert(emailParseInfoDO);
         return emailParseInfoDO.getId();
     }

+ 8 - 0
service-manage/src/main/java/com/simuwang/manage/api/email/ParseEmailController.java

@@ -139,4 +139,12 @@ public class ParseEmailController{
         }
         return ResultVo.ok(true);
     }
+
+    @SystemLog(value = "根据邮件ID修改处理状态")
+    @PostMapping("/review-status")
+    public ResultVo reviewStatus(@RequestBody ReviewStatusVO reviewStatusVO){
+        parseEmailService.updateReviewStatus(reviewStatusVO);
+        return ResultVo.ok(true);
+    }
+
 }

+ 2 - 0
service-manage/src/main/java/com/simuwang/manage/service/ParseEmailService.java

@@ -28,4 +28,6 @@ public interface ParseEmailService {
     EmailFileInfoVO getEmailFileById(Integer fileId);
 
     MybatisPage<EmailFundNavCollectionVO> searchEmailDetailById(EmailFileQuery emailFileQuery);
+
+    void updateReviewStatus(ReviewStatusVO reviewStatusVO);
 }

+ 7 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/ParseEmailServiceImpl.java

@@ -10,6 +10,7 @@ import com.simuwang.base.pojo.dto.query.EmailFileQuery;
 import com.simuwang.base.pojo.dto.query.EmailParseQuery;
 import com.simuwang.base.pojo.vo.*;
 import com.simuwang.manage.service.ParseEmailService;
+import com.simuwang.shiro.utils.UserUtils;
 import com.smppw.common.pojo.enums.TimeRange;
 import com.smppw.utils.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -156,4 +157,10 @@ public class ParseEmailServiceImpl implements ParseEmailService {
         Long total = emailFundNavCollectionMapper.countByFileId(emailFileQuery.getFileId(),emailFileQuery.getEmailId());
         return MybatisPage.of(total,result);
     }
+
+    @Override
+    public void updateReviewStatus(ReviewStatusVO reviewStatusVO) {
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        emailParseInfoMapper.updateReviewStatus(reviewStatusVO.getIdList(),reviewStatusVO.getReviewStatus(),userId);
+    }
 }