Quellcode durchsuchen

首页已读未读动态

xda vor 3 Jahren
Ursprung
Commit
95d99d9bae

+ 0 - 2
src/main/java/com/winhc/repal/config/BeanConfig.java

@@ -1,6 +1,5 @@
 package com.winhc.repal.config;
 
-import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
 import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
@@ -12,7 +11,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.data.redis.serializer.StringRedisSerializer;
 import springfox.documentation.builders.ApiInfoBuilder;

+ 5 - 1
src/main/java/com/winhc/repal/enums/RemindEnum.java

@@ -8,9 +8,13 @@ package com.winhc.repal.enums;
 public enum RemindEnum {
 
     /**
+     * 1.风险预警 2.财产线索 3.账款评级 4.逾期提醒
      * 智能提醒类型
      */
-    逾期提醒("OVERDUE"),账款评级("RANK"),财产线索("FINANCE"),风险预警("RISK");
+    风险预警("RISK"),
+    财产线索("FINANCE"),
+    账款评级("RANK"),
+    逾期提醒("OVERDUE");
 
     private String code;
 

+ 18 - 0
src/main/java/com/winhc/repal/model/bo/BookDynamicCountBO.java

@@ -0,0 +1,18 @@
+package com.winhc.repal.model.bo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @Description: BookDynamicCountBO
+ * @Author: xda
+ * @Date: 2022/5/7 15:29
+ */
+@Data
+@ApiModel("账款动态bo")
+public class BookDynamicCountBO {
+
+    private String remindType;
+
+    private Integer totalCount;
+}

+ 2 - 2
src/main/java/com/winhc/repal/model/dto/HomeTypeDTO.java

@@ -13,8 +13,8 @@ import lombok.Data;
 @ApiModel("首页查询dto")
 public class HomeTypeDTO {
 
-    @ApiModelProperty(value = "查询类型。[1]近7天 [2]近30天 [3]全部.默认7天")
-    private Integer queryType = 1;
+    @ApiModelProperty(value = "查询类型。[1]近7天 [2]近30天.默认30天 [3]全部")
+    private Integer queryType = 2;
 
     @ApiModelProperty(value = "账本id")
     private Long repalBookId;

+ 13 - 0
src/main/java/com/winhc/repal/repository/RepalBillMapper.java

@@ -12,6 +12,7 @@ import org.springframework.stereotype.Repository;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @description RepalBill Mapper 接口
@@ -101,4 +102,16 @@ public interface RepalBillMapper extends BaseMapper<RepalBill> {
                                                   @Param("userId") Long userId,
                                                   @Param("groupId") Long groupId,
                                                   @Param("startTime") LocalDate startTime);
+
+
+    /**
+     * 获取账本下所有账款id
+     * @param repalBookId repalBookId
+     * @param userId userId
+     * @return java.util.List<java.lang.Long>
+     * @author xda
+     * @date 2022/5/7 17:06
+     */
+    List<Long> getBillIdListByBookId(@Param("repalBookId") Long repalBookId,
+                                     @Param("userId") Long userId);
 }

+ 18 - 0
src/main/java/com/winhc/repal/repository/RepalRemindHistoryMapper.java

@@ -3,12 +3,14 @@ package com.winhc.repal.repository;
 import com.winhc.repal.entity.RepalRemindHistory;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.winhc.repal.model.bo.BillRemindBO;
+import com.winhc.repal.model.bo.BookDynamicCountBO;
 import com.winhc.repal.model.vo.RemindTypeUnReadCountVO;
 import com.winhc.repal.model.vo.RepalBillRemindUnReadVO;
 import com.winhc.repal.model.vo.RepalRemindCountVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -47,4 +49,20 @@ public interface RepalRemindHistoryMapper extends BaseMapper<RepalRemindHistory>
      */
     List<BillRemindBO> repalRemindHistoryMapper(List<Long> repalBillIdList);
 
+
+    /**
+     * 获取账款动态总数
+     * @param repalBookId repalBookId
+     * @param userId userId
+     * @param startDateTime startDateTime
+     * @param endDateTime endDateTime
+     * @return java.util.List<com.winhc.repal.model.bo.BookDynamicCountBO>
+     * @author xda
+     * @date 2022/5/7 15:40
+     */
+    List<BookDynamicCountBO> getBookDynamicCount(@Param("repalBookId") Long repalBookId,
+                                                 @Param("userId") Long userId,
+                                                 @Param("startDateTime") LocalDateTime startDateTime,
+                                                 @Param("endDateTime") LocalDateTime endDateTime);
+
 }

+ 12 - 0
src/main/java/com/winhc/repal/service/RepalBillService.java

@@ -6,6 +6,8 @@ import com.winhc.repal.entity.RepalBill;
 import com.winhc.repal.model.dto.*;
 import com.winhc.repal.model.vo.*;
 
+import java.util.List;
+
 
 /**
  * @description RepalBill 接口类
@@ -124,4 +126,14 @@ public interface RepalBillService extends IService<RepalBill> {
      * @return
      */
     RepalManageBillDetailVO querManageBillDetail(Long repalBillId);
+
+    /**
+     * 获取账本下所有账款id
+     * @param repalBookId repalBookId
+     * @param userId userId
+     * @return java.util.List<java.lang.Long>
+     * @author xda
+     * @date 2022/5/7 17:05
+     */
+    List<Long> getBillIdListByBookId(Long repalBookId, Long userId);
 }

+ 20 - 0
src/main/java/com/winhc/repal/service/RepalRemindHistoryService.java

@@ -7,11 +7,15 @@ import com.winhc.repal.entity.RepalBillDiagnosis;
 import com.winhc.repal.entity.RepalRemindHistory;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.winhc.repal.model.bo.BillRemindBO;
+import com.winhc.repal.model.bo.BookDynamicCountBO;
 import com.winhc.repal.model.dto.RepalRemindHistoryDTO;
 import com.winhc.repal.model.vo.RepalBillRemindUnReadVO;
 import com.winhc.repal.model.vo.RepalRemindCountVO;
 import com.winhc.repal.model.vo.RepalRemindHistoryVO;
+import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 
@@ -68,4 +72,20 @@ public interface RepalRemindHistoryService extends IService<RepalRemindHistory>
      * @date 2022/4/30 13:38
      */
     Map<Long, List<BillRemindBO>> getRepalBillLastRemind(List<Long> repalBillIdList);
+
+
+    /**
+     * 获取账款动态总数
+     * @param repalBookId repalBookId
+     * @param userId userId
+     * @param startDateTime startDateTime
+     * @param endDateTime endDateTime
+     * @return java.util.List<com.winhc.repal.model.bo.BookDynamicCountBO>
+     * @author xda
+     * @date 2022/5/7 15:39
+     */
+    List<BookDynamicCountBO> getBookDynamicCount(Long repalBookId,
+                                                 Long userId,
+                                                 LocalDateTime startDateTime,
+                                                 LocalDateTime endDateTime);
 }

+ 4 - 0
src/main/java/com/winhc/repal/service/RepalRemindReadInfoService.java

@@ -2,6 +2,7 @@ package com.winhc.repal.service;
 
 import com.winhc.repal.entity.RepalRemindReadInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.winhc.repal.model.bo.BookDynamicCountBO;
 import com.winhc.repal.model.bo.UserBillUnreadInfoBO;
 
 import java.util.List;
@@ -36,4 +37,7 @@ public interface RepalRemindReadInfoService extends IService<RepalRemindReadInfo
      * @date 2022/4/30 10:03
      */
     List<UserBillUnreadInfoBO> getUserBillUnreadInfo(Long userId, List<Long> repalBillIdList);
+
+
+
 }

+ 5 - 0
src/main/java/com/winhc/repal/service/impl/RepalBillServiceImpl.java

@@ -679,4 +679,9 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
         }
         return vo;
     }
+
+    @Override
+    public List<Long> getBillIdListByBookId(Long repalBookId, Long userId) {
+        return repalBillMapper.getBillIdListByBookId(repalBookId, userId);
+    }
 }

+ 50 - 10
src/main/java/com/winhc/repal/service/impl/RepalBookServiceImpl.java

@@ -1,28 +1,36 @@
 package com.winhc.repal.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.winhc.common.enums.CodeMsg;
 import com.winhc.common.exception.CommonException;
 import com.winhc.repal.entity.RepalBook;
+import com.winhc.repal.entity.RepalResponsiblePerson;
 import com.winhc.repal.enums.DeletedStatusEnum;
+import com.winhc.repal.enums.PermissionEnum;
+import com.winhc.repal.model.bo.BookDynamicCountBO;
+import com.winhc.repal.model.bo.UserBillUnreadInfoBO;
 import com.winhc.repal.model.dto.DeleteRepalBookDTO;
 import com.winhc.repal.model.dto.HomeTypeDTO;
 import com.winhc.repal.model.vo.HomeGradeVO;
 import com.winhc.repal.model.vo.RepalBookInfoVO;
 import com.winhc.repal.repository.RepalBookMapper;
-import com.winhc.repal.service.RepalBillService;
-import com.winhc.repal.service.RepalBookService;
-import com.winhc.repal.service.RepalGroupMemberService;
-import com.winhc.repal.service.RepalRolePermissionService;
+import com.winhc.repal.service.*;
+import com.winhc.repal.util.RemindTypeUtil;
 import com.winhc.repal.util.UserContextUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @description RepalBook 接口实现类
@@ -44,6 +52,16 @@ public class RepalBookServiceImpl extends ServiceImpl<RepalBookMapper, RepalBook
     @Autowired
     private RepalGroupMemberService repalGroupMemberService;
 
+    @Autowired
+    private RepalRemindHistoryService repalRemindHistoryService;
+
+    @Autowired
+    private RepalRemindReadInfoService repalRemindReadInfoService;
+
+    @Autowired
+    private RepalResponsiblePersonService repalResponsiblePersonService;
+
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean deleteRepalBook(DeleteRepalBookDTO dto) {
@@ -77,12 +95,34 @@ public class RepalBookServiceImpl extends ServiceImpl<RepalBookMapper, RepalBook
 
     @Override
     public List<List<Integer>> getRepalBookDynamic(HomeTypeDTO dto) {
-
-
-
-
-
-        return new ArrayList<>();
+        List<List<Integer>> resultList = new ArrayList<>();
+        boolean allFlag = repalRolePermissionService.checkUserPermission(UserContextUtil.getUser().getUserId(), PermissionEnum.QUERY_ALL_RECEIVABLE.getCode());
+        // 所有
+        LocalDateTime start = null;
+        LocalDateTime end = null;
+        if (Integer.valueOf(1).equals(dto.getQueryType())) {
+            LocalDate now = LocalDate.now();
+            start = LocalDateTime.of(now.minusDays(7), LocalTime.MIN);
+            end = LocalDateTime.of(now, LocalTime.MAX);
+        }
+        if (Integer.valueOf(2).equals(dto.getQueryType())) {
+            LocalDate now = LocalDate.now();
+            start = LocalDateTime.of(now.minusDays(30), LocalTime.MIN);
+            end = LocalDateTime.of(now, LocalTime.MAX);
+        }
+        List<BookDynamicCountBO> countList = repalRemindHistoryService.getBookDynamicCount(dto.getRepalBookId(), allFlag ? UserContextUtil.getUser().getUserId() : null, start, end);
+        List<Integer> totalCountList = RemindTypeUtil.getCountList(CollUtil.isEmpty(countList) ? null : countList.stream().collect(Collectors.toMap(BookDynamicCountBO::getRemindType, BookDynamicCountBO::getTotalCount)));
+        resultList.add(totalCountList);
+        // 未读, 有可能是账本下所有未读
+        List<Long> billIdList = repalBillService.getBillIdListByBookId(dto.getRepalBookId(), allFlag ? null : UserContextUtil.getUser().getUserId());;
+        List<UserBillUnreadInfoBO> unreadInfoList = repalRemindReadInfoService.getUserBillUnreadInfo(UserContextUtil.getUser().getUserId(), billIdList);
+        resultList.add(new ArrayList<Integer>(){{
+            add(unreadInfoList.stream().mapToInt(UserBillUnreadInfoBO::getUnreadRiskCount).sum());
+            add(unreadInfoList.stream().mapToInt(UserBillUnreadInfoBO::getUnreadFinanceCount).sum());
+            add(unreadInfoList.stream().mapToInt(UserBillUnreadInfoBO::getUnreadRankCount).sum());
+            add(unreadInfoList.stream().mapToInt(UserBillUnreadInfoBO::getUnreadOverdueCount).sum());
+        }});
+        return resultList;
     }
 
     @Override

+ 6 - 0
src/main/java/com/winhc/repal/service/impl/RepalRemindHistoryServiceImpl.java

@@ -17,6 +17,7 @@ import com.winhc.repal.cloud.vo.V8DynamicVO;
 import com.winhc.repal.entity.*;
 import com.winhc.repal.enums.*;
 import com.winhc.repal.model.bo.BillRemindBO;
+import com.winhc.repal.model.bo.BookDynamicCountBO;
 import com.winhc.repal.model.cvt.RepalRemindHistoryConvert;
 import com.winhc.repal.model.dto.RepalRemindHistoryDTO;
 import com.winhc.repal.model.vo.*;
@@ -534,4 +535,9 @@ public class RepalRemindHistoryServiceImpl extends ServiceImpl<RepalRemindHistor
         }
         return remindBOList.stream().collect(Collectors.groupingBy(BillRemindBO::getRepalBillId, Collectors.toList()));
     }
+
+    @Override
+    public List<BookDynamicCountBO> getBookDynamicCount(Long repalBookId, Long userId, LocalDateTime startDateTime, LocalDateTime endDateTime) {
+        return repalRemindHistoryMapper.getBookDynamicCount(repalBookId, userId, startDateTime, endDateTime);
+    }
 }

+ 2 - 0
src/main/java/com/winhc/repal/service/impl/RepalRemindReadInfoServiceImpl.java

@@ -9,6 +9,7 @@ import com.winhc.repal.entity.RepalRemindReadInfo;
 import com.winhc.repal.enums.Dict;
 import com.winhc.repal.enums.RemindEnum;
 import com.winhc.repal.model.bo.BillRemindBO;
+import com.winhc.repal.model.bo.BookDynamicCountBO;
 import com.winhc.repal.model.bo.UserBillUnreadInfoBO;
 import com.winhc.repal.repository.RepalRemindReadInfoMapper;
 import com.winhc.repal.service.RepalRemindHistoryService;
@@ -38,6 +39,7 @@ public class RepalRemindReadInfoServiceImpl extends ServiceImpl<RepalRemindReadI
     private RedisUtil redisUtil;
     private static final String MESSAGE_PRIFIX = "winhc:repal:read_";
 
+
     /**
      * 查询账款已读情况,没数据则插入一条全部已读
      * @param userId

+ 42 - 0
src/main/java/com/winhc/repal/util/RemindTypeUtil.java

@@ -0,0 +1,42 @@
+package com.winhc.repal.util;
+
+import cn.hutool.core.map.MapUtil;
+import com.winhc.repal.enums.RemindEnum;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: RemindTypeUtil
+ * @Author: xda
+ * @Date: 2022/5/7 15:46
+ */
+public class RemindTypeUtil {
+
+    /**
+     * 获取各种动态数量
+     * @param countMap countMap
+     * @return java.util.List<java.lang.Integer>
+     * @author xda
+     * @date 2022/5/7 16:01
+     */
+    public static List<Integer> getCountList (Map<String, Integer> countMap) {
+        List<Integer> list = new ArrayList<Integer>(){{
+            add(0);
+            add(0);
+            add(0);
+            add(0);
+        }};
+        if (MapUtil.isEmpty(countMap)) {
+            return list;
+        }
+        list.set(0, countMap.getOrDefault(RemindEnum.风险预警.getCode(), 0));
+        list.set(1, countMap.getOrDefault(RemindEnum.财产线索.getCode(), 0));
+        list.set(2, countMap.getOrDefault(RemindEnum.账款评级.getCode(), 0));
+        list.set(3, countMap.getOrDefault(RemindEnum.逾期提醒.getCode(), 0));
+        return list;
+    }
+
+
+}

+ 12 - 0
src/main/resources/mapper/RepalBillMapper.xml

@@ -173,4 +173,16 @@
     <select id="getManageBillPage" resultType="com.winhc.repal.model.bo.RepalManageBillPageBO">
 
     </select>
+
+
+    <select id="getBillIdListByBookId" resultType="java.lang.Long">
+        SELECT bill.ID FROM REPAL_BILL AS bill
+        <if test="userId != null">
+        LEFT JOIN REPAL_RESPONSIBLE_PERSON AS rPerson ON bill.ID = rPerson.REPAL_BILL_ID
+        </if>
+        WHERE bill.REPAL_BOOK_ID = #{repalBookId}
+        <if test="userId != null">
+            AND bill.USER_ID = #{userId}
+        </if>
+    </select>
 </mapper>

+ 17 - 0
src/main/resources/mapper/RepalRemindHistoryMapper.xml

@@ -59,4 +59,21 @@
         </foreach>
         GROUP BY tt.REMIND_TYPE, tt.REPAL_BILL_ID) AS t2 ON t2.id = t1.ID
     </select>
+
+
+    <select id="getBookDynamicCount" resultType="com.winhc.repal.model.bo.BookDynamicCountBO">
+        SELECT count(*) AS totalCount, tt.REMIND_TYPE AS remindType FROM REPAL_REMIND_HISTORY AS tt
+        <if test="userId != null">
+        LEFT JOIN REPAL_RESPONSIBLE_PERSON AS rPerson ON rPerson.REPAL_BOOK_ID = #{repalBookId} and rPerson.USER_ID = #{userId}
+        </if>
+        WHERE
+        tt.REPAL_BOOK_ID = #{repalBookId}
+        <if test="startDateTime != null">
+            AND tt.REMIND_TIME >= #{startDate}
+        </if>
+        <if test="endDateTime != null">
+            AND tt.REMIND_TIME <![CDATA[<=]]> #{endDateTime}
+        </if>
+        GROUP BY tt.REMIND_TYPE
+    </select>
 </mapper>