Procházet zdrojové kódy

作者:张哲
时间:2023/03/02
类型:优化
描述:里程碑(2)优化点评审核列表响应慢问题

ZizgZh před 2 roky
rodič
revize
e4f8cf009d

+ 76 - 60
src/main/java/com/redxun/knowledge/album/service/AlbumYelpApproveServiceImpl.java

@@ -90,101 +90,117 @@ public class AlbumYelpApproveServiceImpl extends SuperServiceImpl<AlbumYelpAppro
         Map<String, List<AlbumYelpApprove>> albumApproveMap = albumYelpApproveList.stream().
                 collect(Collectors.groupingBy(AlbumYelpApprove::getYelpId));
         // 返回结果集
-        List<AlbumYelpApproveListVo> albumApproveListVos = new ArrayList<>();
+        List<AlbumYelpApprove> albumYelpApproves = new ArrayList<>();
         // 遍历每组的数据
         Set<Map.Entry<String, List<AlbumYelpApprove>>> entries = albumApproveMap.entrySet();
         for (Map.Entry<String, List<AlbumYelpApprove>> entry : entries) {
             List<AlbumYelpApprove> value = entry.getValue();
             for (int i = 0; i < value.size(); i++) {
-                //给结果集赋值
-                AlbumYelpApproveListVo albumApproveListVo = new AlbumYelpApproveListVo();
-                albumApproveListVo.setPkId(value.get(i).getYelpId());
-                albumApproveListVo.setContent(value.get(i).getAlbumYelp().getContent());
-                albumApproveListVo.setAlbumName(value.get(i).getAlbumInfo().getName());
-                String categoryId = value.get(i).getAlbumInfo().getCategoryId();
-                AlbumCategory albumCategory = albumCategoryMapper.selectById(categoryId);
-                if (albumCategory.getGrade() == 1) {
-                    albumApproveListVo.setCategoryName(albumCategory.getName());
-                } else {
-                    AlbumCategory albumCategoryParent = albumCategoryMapper.
-                            selectOne(new LambdaQueryWrapper<AlbumCategory>().eq(AlbumCategory::getPkId, albumCategory.getParent()));
-                    albumApproveListVo.setCategoryName(albumCategoryParent.getName() + "|" + albumCategory.getName());
-                }
-                albumApproveListVo.setCreateName(userService.queryOsUserDto(value.get(i).getCreateBy()).getFullName());
-                albumApproveListVo.setCreateTime(value.get(i).getCreateTime());
-                albumApproveListVo.setApprovalStateName(AlbumVersionApproveEnum.getMessage(value.get(i).getAlbumYelp().getApprovalState()));
-                //用于权限判断
-                albumApproveListVo.setApproverId(value.get(i).getApproverId());
-                albumApproveListVo.setApprovalState(value.get(i).getAlbumYelp().getApprovalState());
-                //动作标记
-                String userId = userService.queryLoginUser();
-                String deptId = userService.queryLoginUserDeptId();
-                Integer count = albumApprovalNodeMapper.selectAllByDeptId(deptId, albumApproveListVo.getApproverId());
-                List<String> actionFlag = new ArrayList<>();
-                if ((userId.equals(albumApproveListVo.getApproverId()) || count > 0)
-                        && (value.get(i).getAlbumYelp().getApprovalState() == 1 || value.get(i).getAlbumYelp().getApprovalState() == 2)) {
-                    actionFlag.add("approve");
-                } else {
-                    actionFlag.add("view");
-                }
-                albumApproveListVo.setActionFlag(actionFlag);
                 // 如果是最终审核通过,直接放入记录
                 if (value.get(i).getAlbumYelp().getApprovalState() == 5 && value.get(i).getIsFinal() == 1) {
-                    albumApproveListVo.setApproverId(value.get(i).getApproverId());
-                    //实际审核人姓名和实际审核人审核时间
-                    albumApproveListVo.setPreviousApproverName(value.get(i).getActualApproverName());
-                    albumApproveListVo.setPreviousApproverTime(value.get(i).getApprovalTime());
-                    albumApproveListVos.add(albumApproveListVo);
+                    albumYelpApproves.add(value.get(i));
                     break;
                 }
                 // 判断审批结果是否为null(如果审批结果没有null,证明审批已结束;如果等于0,证明审批没通过)
                 if (value.get(i).getResult() == null || value.get(i).getResult() == 0) {
-                    if (i != 0) {
-                        // 如果不是第一条数据,取前一条数据的实际审核人姓名
-                        String actualApproverName = value.get(i - 1).getActualApproverName();
-                        albumApproveListVo.setPreviousApproverName(actualApproverName);
-                        // 如果不是第一条数据,取前一条数据的审批时间
-                        Date approvalTime = value.get(i - 1).getApprovalTime();
-                        albumApproveListVo.setPreviousApproverTime(approvalTime);
-                    } else {
-                        String actualApproverName = value.get(i).getActualApproverName();
-                        albumApproveListVo.setPreviousApproverName(actualApproverName);
-                        Date approvalTime = value.get(i).getApprovalTime();
-                        albumApproveListVo.setPreviousApproverTime(approvalTime);
-                    }
                     // 把该记录加到结果集中
-                    albumApproveListVos.add(albumApproveListVo);
+                    albumYelpApproves.add(value.get(i));
                     break;
                 }
             }
         }
         if ("1".equals(type)) {
-            List<AlbumYelpApproveListVo> result = albumApproveListVos.stream().
+            List<AlbumYelpApprove> result = albumYelpApproves.stream().
                     sorted((t1, t2) -> t2.getCreateTime().compareTo(t1.getCreateTime())).collect(Collectors.toList());
             Page pageResult = PageListUtils.getPages(queryFilter.getPage().getCurrent(), queryFilter.getPage().getSize(), result);
+            List<AlbumYelpApprove> records = pageResult.getRecords();
+            List<AlbumYelpApproveListVo> collect = records.stream().map(this::paramsPackage).collect(Collectors.toList());
+            pageResult.setRecords(collect);
             return pageResult;
         } else {
             //获取当前登录人的userId和deptId
             String userId = userService.queryLoginUser();
             String deptId = userService.queryLoginUserDeptId();
 
-            List<AlbumYelpApproveListVo> albumApproveListVoUser = new ArrayList<>();
+            List<AlbumYelpApprove> albumApproveListVoUser = new ArrayList<>();
             //根据部门Id获取子部门信息
             //过滤数据
-            albumApproveListVos.forEach(albumApproveListVo -> {
-                Integer count = albumApprovalNodeMapper.selectAllByDeptId(deptId, albumApproveListVo.getApproverId());
-                if ((userId.equals(albumApproveListVo.getApproverId()) || count > 0) &&
-                        (albumApproveListVo.getApprovalState() == 1 || albumApproveListVo.getApprovalState() == 2)) {
-                    albumApproveListVoUser.add(albumApproveListVo);
+            albumYelpApproves.forEach(albumYelpApprove -> {
+                Integer count = albumApprovalNodeMapper.selectAllByDeptId(deptId, albumYelpApprove.getApproverId());
+                if ((userId.equals(albumYelpApprove.getApproverId()) || count > 0) &&
+                        (albumYelpApprove.getAlbumYelp().getApprovalState() == 1 || albumYelpApprove.getAlbumYelp().getApprovalState() == 2)) {
+                    albumApproveListVoUser.add(albumYelpApprove);
                 }
             });
-            List<AlbumYelpApproveListVo> result = albumApproveListVoUser.stream().
+            List<AlbumYelpApprove> result = albumApproveListVoUser.stream().
                     sorted((t1, t2) -> t2.getCreateTime().compareTo(t1.getCreateTime())).collect(Collectors.toList());
             Page pageResult = PageListUtils.getPages(queryFilter.getPage().getCurrent(), queryFilter.getPage().getSize(), result);
+            List<AlbumYelpApprove> records = pageResult.getRecords();
+            List<AlbumYelpApproveListVo> collect = records.stream().map(this::paramsPackage).collect(Collectors.toList());
+            pageResult.setRecords(collect);
             return pageResult;
         }
     }
 
+
+    private AlbumYelpApproveListVo paramsPackage(AlbumYelpApprove albumYelpApprove){
+        AlbumYelpApproveListVo albumApproveListVo = new AlbumYelpApproveListVo();
+        albumApproveListVo.setPkId(albumYelpApprove.getYelpId());
+        albumApproveListVo.setContent(albumYelpApprove.getAlbumYelp().getContent());
+        albumApproveListVo.setAlbumName(albumYelpApprove.getAlbumInfo().getName());
+        String categoryId = albumYelpApprove.getAlbumInfo().getCategoryId();
+        AlbumCategory albumCategory = albumCategoryMapper.selectById(categoryId);
+        if (albumCategory.getGrade() == 1) {
+            albumApproveListVo.setCategoryName(albumCategory.getName());
+        } else {
+            AlbumCategory albumCategoryParent = albumCategoryMapper.
+                    selectOne(new LambdaQueryWrapper<AlbumCategory>().eq(AlbumCategory::getPkId, albumCategory.getParent()));
+            albumApproveListVo.setCategoryName(albumCategoryParent.getName() + "|" + albumCategory.getName());
+        }
+        albumApproveListVo.setCreateName(userService.queryOsUserDto(albumYelpApprove.getCreateBy()).getFullName());
+        albumApproveListVo.setCreateTime(albumYelpApprove.getCreateTime());
+        albumApproveListVo.setApprovalStateName(AlbumVersionApproveEnum.getMessage(albumYelpApprove.getAlbumYelp().getApprovalState()));
+        //用于权限判断
+        albumApproveListVo.setApproverId(albumYelpApprove.getApproverId());
+        albumApproveListVo.setApprovalState(albumYelpApprove.getAlbumYelp().getApprovalState());
+        //动作标记
+        String userId = userService.queryLoginUser();
+        String deptId = userService.queryLoginUserDeptId();
+        Integer count = albumApprovalNodeMapper.selectAllByDeptId(deptId, albumApproveListVo.getApproverId());
+        List<String> actionFlag = new ArrayList<>();
+        if ((userId.equals(albumApproveListVo.getApproverId()) || count > 0)
+                && (albumYelpApprove.getAlbumYelp().getApprovalState() == 1 || albumYelpApprove.getAlbumYelp().getApprovalState() == 2)) {
+            actionFlag.add("approve");
+        } else {
+            actionFlag.add("view");
+        }
+        albumApproveListVo.setActionFlag(actionFlag);
+        // 如果是最终审核通过(赋值实际审核人和审核时间)
+        if (albumYelpApprove.getAlbumYelp().getApprovalState() == 5 || albumYelpApprove.getAlbumYelp().getApprovalState() == 4
+                || albumYelpApprove.getAlbumYelp().getApprovalState() == 3) {
+            String actualApproverName = albumYelpApprove.getActualApproverName();
+            albumApproveListVo.setPreviousApproverName(actualApproverName);
+            Date approvalTime = albumYelpApprove.getApprovalTime();
+            albumApproveListVo.setPreviousApproverTime(approvalTime);
+        } else {
+            //取前一条记录实际审核人和审核时间
+            QueryWrapper<AlbumYelpApprove> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("YELP_ID",albumYelpApprove.getYelpId());
+            queryWrapper.eq("ALBUM_ID",albumYelpApprove.getAlbumId());
+            queryWrapper.eq("SORT",albumYelpApprove.getSort() - 1);
+            queryWrapper.orderByAsc("SORT");
+            AlbumYelpApprove albumYelpApproveBySort = albumYelpApproveMapper.selectOne(queryWrapper);
+            if (albumYelpApproveBySort != null){
+                String actualApproverName = albumYelpApproveBySort.getActualApproverName();
+                albumApproveListVo.setPreviousApproverName(actualApproverName);
+                Date approvalTime = albumYelpApproveBySort.getApprovalTime();
+                albumApproveListVo.setPreviousApproverTime(approvalTime);
+            }
+        }
+        return albumApproveListVo;
+
+    }
+
     /**
      * 对知识专辑点评进行审核(快速审核和批量审核)
      *