瀏覽代碼

作者:张哲
时间:2023/01/19
类型:优化
描述:里程碑(1)Bug修复

ZizgZh 2 年之前
父節點
當前提交
0b44a3b3da

+ 2 - 2
src/main/java/com/redxun/knowledge/controller/KnowledgeApprovalNodeController.java

@@ -65,10 +65,10 @@ public class KnowledgeApprovalNodeController extends BaseController<KnowledgeApp
         // 批量添加数据
         List<KnowledgeApprovalNode> knowledgeApprovalNodeList = knowledgeApprovalNodeDto
                 .parallelStream()
-                .filter(e -> !("1".equals(e.getIsFinal())))
                 .map(e -> {
             KnowledgeApprovalNode knowledgeApprovalNode = new KnowledgeApprovalNode();
-            BeanUtils.copyProperties(e, knowledgeApprovalNode);
+                    BeanUtils.copyProperties(e, knowledgeApprovalNode);
+                    knowledgeApprovalNode.setIsFinal(Integer.parseInt(e.getIsFinal()));
             return knowledgeApprovalNode;
         }).collect(Collectors.toList());
         knowledgeApprovalNodeService.saveBatch(knowledgeApprovalNodeList);

+ 28 - 2
src/main/java/com/redxun/knowledge/controller/KnowledgeApproveController.java

@@ -19,13 +19,17 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.owasp.esapi.util.CollectionsUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -80,7 +84,13 @@ public class KnowledgeApproveController extends BaseController<KnowledgeApprove>
         knowledgeApproveDto.setActualApprover(userService.queryLoginUsername());
         knowledgeApproveDto.setActualApproverName(userService.queryLoginFullName());
         BeanUtils.copyProperties(knowledgeApproveDto,knowledgeApprove);
-        knowledgeApproveService.update(knowledgeApprove);
+        int update = knowledgeApproveService.update(knowledgeApprove);
+        if (update == -1){
+            return JsonResult.Success("该知识已被他人审核,审核失败");
+        }
+        if (update == -2){
+            return JsonResult.Success("审核权限已被修改,审核失败");
+        }
         return JsonResult.Success("审核成功");
     }
 
@@ -97,7 +107,23 @@ public class KnowledgeApproveController extends BaseController<KnowledgeApprove>
             knowledgeApprove.setApprovalTime(new Date());
             return knowledgeApprove;
         }).collect(Collectors.toList());
-        knowledgeApproveList.forEach(e -> knowledgeApproveService.update(e));
+        List<String> result1 = new ArrayList<>();
+        List<String> result2 = new ArrayList<>();
+        knowledgeApproveList.forEach(e -> {
+            int update = knowledgeApproveService.update(e);
+            if (update == -1){
+                result1.add(e.getPkId());
+            }
+            if (update == -2){
+                result2.add(e.getPkId());
+            }
+        });
+        if (!CollectionUtils.isEmpty(result1)){
+            return JsonResult.Success(result1.toString() + "知识已被他人审核,审核失败");
+        }
+        if (!CollectionUtils.isEmpty(result2)){
+            return JsonResult.Success(result2.toString() + "审核权限已被修改,审核失败");
+        }
         return JsonResult.Success("批量审核成功");
     }
 

+ 3 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeApproveMapper.java

@@ -21,4 +21,7 @@ public interface KnowledgeApproveMapper extends BaseDao<KnowledgeApprove> {
     void deleteByKnowledgeId(String knowledgeId);
 
     List<KnowledgeApprovalListVo> findAllKnowledgeApprove(@Param("params") Map<String, Object> params, @Param("w") Map<String, Object> order);
+
+    List<String> deptAuthority(String userId);
+
 }

+ 4 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeMapper.java

@@ -1,5 +1,6 @@
 package com.redxun.knowledge.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.redxun.knowledge.entity.dao.Knowledge;
 import com.redxun.knowledge.entity.vo.KnowledgeApprovalVo;
@@ -35,4 +36,7 @@ public interface KnowledgeMapper extends BaseDao<Knowledge> {
 
     // 增加浏览量
     void updateViewsById(String pkId);
+
+    // 查看全部已通过的维基知识
+    List<Knowledge> findAllWiki(String categoryId);
 }

+ 3 - 0
src/main/java/com/redxun/knowledge/service/BannerServiceImpl.java

@@ -146,6 +146,9 @@ public class BannerServiceImpl extends SuperServiceImpl<BannerMapper, Banner> im
                 bannerMapper.insertOrUpdateBySort(entity.getSort());
             }
         }
+        if (entity.getKnowledgeId() == null){
+            entity.setKnowledgeId("");
+        }
         return this.getRepository().updateById(entity);
     }
 

+ 34 - 2
src/main/java/com/redxun/knowledge/service/KnowledgeApproveServiceImpl.java

@@ -130,14 +130,26 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
         // 判断当前登录人是否可以审核每一条知识
         collect.forEach(e -> {
             String userNo = userService.queryLoginUsername();
-            String deptId = userService.queryLoginUserDeptId();
-            if(!e.getApproverId().equals(userNo) && !e.getApproverId().equals(deptId)){
+            String userId = userService.queryLoginUser();
+            // String deptId = userService.queryLoginUserDeptId();
+            //部门权限字符串
+            List<String> deptAuthority = knowledgeApproveMapper.deptAuthority(userId);
+            boolean flag = false;
+            for (int i = 0; i < deptAuthority.size(); i++) {
+                if (deptAuthority.get(i).contains(e.getApproverId())){
+                    flag = true;
+                    break;
+                }
+            }
+            if(!e.getApproverId().equals(userNo) && !flag){
                 // 不是该部门的人,不能审核
                 e.setIsAudit(1);
             } else {
                 e.setIsAudit(0);
             }
         });
+        long count = collect.stream().filter(e -> e.getIsAudit() == 0).count();
+        log.info("该用户可审核记录 -> {}",count);
         // 重新组装分页数据
         Page pages = PageListUtils.getPages(filter.getPage().getCurrent(), filter.getPage().getSize(), collect);
         return pages;
@@ -157,6 +169,26 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
         }
         // 当前记录
         KnowledgeApprove knowledgeApprove = knowledgeApproveMapper.selectById(entity.getPkId());
+        // 判断是否重复审核
+        if (knowledgeApprove.getResult() != null){
+            return -1;
+        }
+        // 判断组织架构(权限)是否变更
+        String userNo = userService.queryLoginUsername();
+        String userId = userService.queryLoginUser();
+        //部门权限字符串
+        List<String> deptAuthority = knowledgeApproveMapper.deptAuthority(userId);
+        boolean flag = false;
+        for (int i = 0; i < deptAuthority.size(); i++) {
+            if (deptAuthority.get(i).contains(knowledgeApprove.getApproverId())){
+                flag = true;
+                break;
+            }
+        }
+        if(!knowledgeApprove.getApproverId().equals(userNo) && !flag){
+            // 不是该部门的人,不能审核
+            return -2;
+        }
         // 当前记录的下一条记录
         KnowledgeApprove knowledgeApproveNext = knowledgeApproveMapper.
                 selectOne(new QueryWrapper<KnowledgeApprove>().eq("SORT", knowledgeApprove.getSort() + 1).eq("KNOWLEDGER_ID",knowledgeApprove.getKnowledgerId()));

+ 7 - 1
src/main/java/com/redxun/knowledge/service/KnowledgeCategoryServiceImpl.java

@@ -265,7 +265,13 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
     // 查询孩子节点(递归)
     public List<KnowledgeCategoryAdminVo> findChildrens(KnowledgeCategoryAdminVo knowledgeCategoryAdminVo){
         List<KnowledgeCategoryAdminVo> knowledgeCategorieChild = knowledgeCategoryMapper.selectKnowledgeCategoryByParent(knowledgeCategoryAdminVo.getPkId());
-        List<KnowledgeCategoryAdminVo> knowledgeCategories = knowledgeCategorieChild.stream().sorted(Comparator.comparingInt(KnowledgeCategoryAdminVo::getSort)).collect(Collectors.toList());
+        List<KnowledgeCategoryAdminVo> knowledgeCategories = knowledgeCategorieChild.stream().
+                sorted(Comparator.comparingInt(KnowledgeCategoryAdminVo::getSort)).
+                map(e -> {
+                    e.setOperatorName(userService.queryUser(e.getUpdateBy()).getFullName());
+                    return e;
+                }).
+                collect(Collectors.toList());
         knowledgeCategoryAdminVo.setChildren(knowledgeCategories);
         knowledgeCategories.forEach(e -> {
             e.setLevel(knowledgeCategoryAdminVo.getLevel() + 1);

+ 436 - 27
src/main/java/com/redxun/knowledge/service/KnowledgeServiceImpl.java

@@ -83,6 +83,9 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
     @Autowired
     private MessageService messageService;
 
+    @Autowired
+    private KnowledgeApproveServiceImpl knowledgeApproveService;
+
 
 
     @Override
@@ -94,11 +97,7 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
      * 查询全部维基知识
      */
     public List<Knowledge> findAllWiki(String categoryId) {
-        QueryWrapper<Knowledge> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("CATEGORY_ID", categoryId);
-        queryWrapper.eq("TYPE", 2);
-        queryWrapper.eq("APPROVAL_STATUS",5);
-        List<Knowledge> knowledgeWikiList = knowledgeMapper.selectList(queryWrapper);
+        List<Knowledge> knowledgeWikiList = knowledgeMapper.findAllWiki(categoryId);
         return knowledgeWikiList;
     }
 
@@ -252,7 +251,17 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
             OsUserDto osUserDto = userService.queryOsUserDto(userService.queryLoginUser());
             String sequenceCode = osUserDto.getSequenceCode();
             String slyGrade = osUserDto.getSlyGrade();
-            String deptId = osUserDto.getDeptId();
+            List<String> deptAuthority = knowledgeApproveMapper.deptAuthority(userService.queryLoginUser());
+            boolean flags = false;
+            if (StringUtils.isNotEmpty((String)organizationIdMap.get("organizationId"))){
+                for (int i = 0; i < deptAuthority.size(); i++) {
+                    if (deptAuthority.get(i).contains((String)organizationIdMap.get("organizationId"))){
+                        flags = true;
+                        break;
+                    }
+                }
+            }
+            //String deptId = osUserDto.getDeptId();
             // 如果知识最终审核通过,判断组织架构/职系/职等是否符合(前台判断)
             if (knowledge.getOrganizationId() == null){
                 addCountViews(osUserDto.getUserId(),pkId);
@@ -270,7 +279,7 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
                 if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") == null &&
                         organizationIdMap.get("gradeLevelId") == null){
                     // 比较当前用户的组织架构是否符合条件
-                    if (deptId.equals(organizationIdMap.get("organizationId"))){
+                    if (flags){
                         // 符合条件,增加点击量
                         knowledgeVo.setIsOrganizationId(0);
                         addCountViews(osUserDto.getUserId(),pkId);
@@ -317,7 +326,7 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
                 // 如果职等为空,组织架构id,职系不为空
                 if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") != null &&
                         organizationIdMap.get("gradeLevelId") == null){
-                    if (deptId.equals(organizationIdMap.get("organizationId")) && sequenceCode.equals(organizationIdMap.get("gradeId"))){
+                    if (flags && sequenceCode.equals(organizationIdMap.get("gradeId"))){
                         // 符合条件,增加点击量
                         knowledgeVo.setIsOrganizationId(0);
                         addCountViews(osUserDto.getUserId(),pkId);
@@ -332,7 +341,7 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
                 // 如果职系为空,组织架构id,职等不为空
                 if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") == null &&
                         organizationIdMap.get("gradeLevelId") != null){
-                    if (deptId.equals(organizationIdMap.get("organizationId")) && slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                    if (flags && slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
                         // 符合条件,增加点击量
                         knowledgeVo.setIsOrganizationId(0);
                         addCountViews(osUserDto.getUserId(),pkId);
@@ -362,7 +371,7 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
                 // 如果组织架构id,职系,职等都不为空
                 if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") != null &&
                         organizationIdMap.get("gradeLevelId") != null){
-                    if (deptId.equals(organizationIdMap.get("organizationId")) &&
+                    if (flags &&
                             sequenceCode.equals(organizationIdMap.get("gradeId")) &&
                             slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
                         knowledgeVo.setIsOrganizationId(0);
@@ -395,6 +404,130 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
             e.setOperatorName(userService.queryUser(e.getUpdateBy()).getFullName());
             Map<String, Object> map = userService.querySexAndPhoto(e.getCreateBy());
             e.setParams(map);
+
+            // 解析组织架构/职系/职等数据
+            Map<String, Object> organizationIdMap = new HashMap<>();
+            if (StringUtils.isNotEmpty(e.getOrganizationId())){
+                List<Map> mapList = JSON.parseArray(e.getOrganizationId(), Map.class);
+                for (int i = 0; i < mapList.size(); i++) {
+                    Map maps = mapList.get(i);
+                    maps.forEach((k,v) -> organizationIdMap.put((String) k,v));
+                }
+            }
+            // 获取当前登录人的组织架构/职系/职等数据
+            OsUserDto osUserDto = userService.queryOsUserDto(userService.queryLoginUser());
+            String sequenceCode = osUserDto.getSequenceCode();
+            String slyGrade = osUserDto.getSlyGrade();
+            List<String> deptAuthority = knowledgeApproveMapper.deptAuthority(userService.queryLoginUser());
+            boolean flags = false;
+            if (StringUtils.isNotEmpty((String)organizationIdMap.get("organizationId"))){
+                for (int i = 0; i < deptAuthority.size(); i++) {
+                    if (deptAuthority.get(i).contains((String)organizationIdMap.get("organizationId"))){
+                        flags = true;
+                        break;
+                    }
+                }
+            }
+            // 如果知识最终审核通过,判断组织架构/职系/职等是否符合(前台判断)
+            if (e.getOrganizationId() == null){
+                e.setIsOrganizationId(0);
+            } else {
+                // 如果职系,职等,组织架构id全部为空
+                if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") == null &&
+                        organizationIdMap.get("gradeLevelId") == null){
+                    // 符合条件,增加点击量
+                    e.setIsOrganizationId(0);
+                }
+                // 如果职系,职等为空,组织架构id不为空
+                if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") == null &&
+                        organizationIdMap.get("gradeLevelId") == null){
+                    // 比较当前用户的组织架构是否符合条件
+                    if (flags){
+                        // 符合条件,增加点击量
+                        e.setIsOrganizationId(0);
+                    } else {
+                        // 没有权限(不增加点击量)
+                        e.setIsOrganizationId(1);
+                    }
+                }
+
+                // 如果组织架构id,职等为空,职系不为空
+                if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") != null &&
+                        organizationIdMap.get("gradeLevelId") == null){
+                    // 比较当前用户的职系是否符合条件
+                    if (sequenceCode.equals(organizationIdMap.get("gradeId"))){
+                        // 符合条件,增加点击量
+                        e.setIsOrganizationId(0);
+                    } else {
+                        // 没有权限(不增加点击量)
+                        e.setIsOrganizationId(1);
+                    }
+                }
+
+                // 如果组织架构id,职系为空,职等不为空
+                if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") == null &&
+                        organizationIdMap.get("gradeLevelId") != null){
+                    // 比较当前用户的职系是否符合条件
+                    if (slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                        // 符合条件,增加点击量
+                        e.setIsOrganizationId(0);
+                    } else {
+                        // 没有权限(不增加点击量)
+                        e.setIsOrganizationId(1);
+                    }
+                }
+
+                // 如果职等为空,组织架构id,职系不为空
+                if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") != null &&
+                        organizationIdMap.get("gradeLevelId") == null){
+                    if (flags && sequenceCode.equals(organizationIdMap.get("gradeId"))){
+                        // 符合条件,增加点击量
+                        e.setIsOrganizationId(0);
+                    } else {
+                        // 没有权限(不增加点击量)
+                        e.setIsOrganizationId(1);
+                    }
+                }
+
+                // 如果职系为空,组织架构id,职等不为空
+                if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") == null &&
+                        organizationIdMap.get("gradeLevelId") != null){
+                    if (flags && slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                        // 符合条件,增加点击量
+                        e.setIsOrganizationId(0);
+                    } else {
+                        // 没有权限(不增加点击量)
+                        e.setIsOrganizationId(1);
+                    }
+                }
+
+                // 如果组织架构id为空,职系,职等不为空
+                if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") != null &&
+                        organizationIdMap.get("gradeLevelId") != null){
+                    if (sequenceCode.equals(organizationIdMap.get("gradeId")) && slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                        // 符合条件,增加点击量
+                        e.setIsOrganizationId(0);
+                    } else {
+                        // 没有权限(不增加点击量)
+                        e.setIsOrganizationId(1);
+                    }
+                }
+
+                // 如果组织架构id,职系,职等都不为空
+                if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") != null &&
+                        organizationIdMap.get("gradeLevelId") != null){
+                    if (flags &&
+                            sequenceCode.equals(organizationIdMap.get("gradeId")) &&
+                            slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                        e.setIsOrganizationId(0);
+                        // 符合条件,增加点击量
+                    } else {
+                        // 没有权限(不增加点击量)
+                        e.setIsOrganizationId(1);
+                    }
+                }
+            }
+
         });
         return page;
     }
@@ -503,6 +636,8 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
             }
         }
 
+        //结果集
+        List<KnowledgeVo> resultList = new ArrayList<>();
         // 放入知识分类信息
         List<KnowledgeVo> collect = knowledgeVoArrayList.stream().
                 sorted((t1, t2) -> t2.getCreateTime().compareTo(t1.getCreateTime())).collect(Collectors.toList());
@@ -510,14 +645,24 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
             String categoryId = e.getCategoryId();
             KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = knowledgeCategoryService.findAllParentByCategoryId(categoryId);
             e.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVo);
+            // 判断当前登录人是否可以审核每一条知识
+            String userNo = userService.queryLoginUsername();
+            String userId = userService.queryLoginUser();
+            //部门权限字符串
+            List<String> deptAuthority = knowledgeApproveMapper.deptAuthority(userId);
+            boolean flag = false;
+            for (int i = 0; i < deptAuthority.size(); i++) {
+                if (deptAuthority.get(i).contains(e.getApproverId())){
+                    flag = true;
+                    break;
+                }
+            }
+            // 如果有权限
+            if(e.getApproverId().equals(userNo) || flag){
+                resultList.add(e);
+            }
         });
-
-        // 判断当前登录人是否可以审核每一条知识
-        String userNo = userService.queryLoginUsername();
-        String deptId = userService.queryLoginUserDeptId();
-        List<KnowledgeVo> collectResult = collect.stream().
-                filter(e -> e.getApproverId().equals(userNo) || e.getApproverId().equals(deptId)).collect(Collectors.toList());
-        Page pages = PageListUtils.getPages(filter.getPage().getCurrent(), filter.getPage().getSize(), collectResult);
+        Page pages = PageListUtils.getPages(filter.getPage().getCurrent(), filter.getPage().getSize(), resultList);
         return pages;
     }
 
@@ -541,6 +686,129 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
                 g.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVos);
                 Map<String, Object> maps = userService.querySexAndPhoto(g.getCreateBy());
                 g.setParams(maps);
+                // 解析组织架构/职系/职等数据
+                Map<String, Object> organizationIdMap = new HashMap<>();
+                if (StringUtils.isNotEmpty(g.getOrganizationId())){
+                    List<Map> mapList = JSON.parseArray(g.getOrganizationId(), Map.class);
+                    for (int i = 0; i < mapList.size(); i++) {
+                        Map mapLists = mapList.get(i);
+                        mapLists.forEach((k,v) -> organizationIdMap.put((String) k,v));
+                    }
+                }
+                // 获取当前登录人的组织架构/职系/职等数据
+                OsUserDto osUserDto = userService.queryOsUserDto(userService.queryLoginUser());
+                String sequenceCode = osUserDto.getSequenceCode();
+                String slyGrade = osUserDto.getSlyGrade();
+                List<String> deptAuthority = knowledgeApproveMapper.deptAuthority(userService.queryLoginUser());
+                boolean flags = false;
+                if (StringUtils.isNotEmpty((String)organizationIdMap.get("organizationId"))){
+                    for (int i = 0; i < deptAuthority.size(); i++) {
+                        if (deptAuthority.get(i).contains((String)organizationIdMap.get("organizationId"))){
+                            flags = true;
+                            break;
+                        }
+                    }
+                }
+                // 如果知识最终审核通过,判断组织架构/职系/职等是否符合(前台判断)
+                if (g.getOrganizationId() == null){
+                    g.setIsOrganizationId(0);
+                } else {
+                    // 如果职系,职等,组织架构id全部为空
+                    if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") == null &&
+                            organizationIdMap.get("gradeLevelId") == null){
+                        // 符合条件,增加点击量
+                        g.setIsOrganizationId(0);
+                    }
+                    // 如果职系,职等为空,组织架构id不为空
+                    if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") == null &&
+                            organizationIdMap.get("gradeLevelId") == null){
+                        // 比较当前用户的组织架构是否符合条件
+                        if (flags){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果组织架构id,职等为空,职系不为空
+                    if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") != null &&
+                            organizationIdMap.get("gradeLevelId") == null){
+                        // 比较当前用户的职系是否符合条件
+                        if (sequenceCode.equals(organizationIdMap.get("gradeId"))){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果组织架构id,职系为空,职等不为空
+                    if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") == null &&
+                            organizationIdMap.get("gradeLevelId") != null){
+                        // 比较当前用户的职系是否符合条件
+                        if (slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果职等为空,组织架构id,职系不为空
+                    if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") != null &&
+                            organizationIdMap.get("gradeLevelId") == null){
+                        if (flags && sequenceCode.equals(organizationIdMap.get("gradeId"))){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果职系为空,组织架构id,职等不为空
+                    if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") == null &&
+                            organizationIdMap.get("gradeLevelId") != null){
+                        if (flags && slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果组织架构id为空,职系,职等不为空
+                    if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") != null &&
+                            organizationIdMap.get("gradeLevelId") != null){
+                        if (sequenceCode.equals(organizationIdMap.get("gradeId")) && slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果组织架构id,职系,职等都不为空
+                    if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") != null &&
+                            organizationIdMap.get("gradeLevelId") != null){
+                        if (flags &&
+                                sequenceCode.equals(organizationIdMap.get("gradeId")) &&
+                                slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                            g.setIsOrganizationId(0);
+                            // 符合条件,增加点击量
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+                }
+
             });
             return page;
         } else {
@@ -554,6 +822,128 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
                 g.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVos);
                 Map<String, Object> maps = userService.querySexAndPhoto(g.getCreateBy());
                 g.setParams(maps);
+                // 解析组织架构/职系/职等数据
+                Map<String, Object> organizationIdMap = new HashMap<>();
+                if (StringUtils.isNotEmpty(g.getOrganizationId())){
+                    List<Map> mapList = JSON.parseArray(g.getOrganizationId(), Map.class);
+                    for (int i = 0; i < mapList.size(); i++) {
+                        Map mapLists = mapList.get(i);
+                        mapLists.forEach((k,v) -> organizationIdMap.put((String) k,v));
+                    }
+                }
+                // 获取当前登录人的组织架构/职系/职等数据
+                OsUserDto osUserDto = userService.queryOsUserDto(userService.queryLoginUser());
+                String sequenceCode = osUserDto.getSequenceCode();
+                String slyGrade = osUserDto.getSlyGrade();
+                List<String> deptAuthority = knowledgeApproveMapper.deptAuthority(userService.queryLoginUser());
+                boolean flags = false;
+                if (StringUtils.isNotEmpty((String)organizationIdMap.get("organizationId"))){
+                    for (int i = 0; i < deptAuthority.size(); i++) {
+                        if (deptAuthority.get(i).contains((String)organizationIdMap.get("organizationId"))){
+                            flags = true;
+                            break;
+                        }
+                    }
+                }
+                // 如果知识最终审核通过,判断组织架构/职系/职等是否符合(前台判断)
+                if (g.getOrganizationId() == null){
+                    g.setIsOrganizationId(0);
+                } else {
+                    // 如果职系,职等,组织架构id全部为空
+                    if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") == null &&
+                            organizationIdMap.get("gradeLevelId") == null){
+                        // 符合条件,增加点击量
+                        g.setIsOrganizationId(0);
+                    }
+                    // 如果职系,职等为空,组织架构id不为空
+                    if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") == null &&
+                            organizationIdMap.get("gradeLevelId") == null){
+                        // 比较当前用户的组织架构是否符合条件
+                        if (flags){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果组织架构id,职等为空,职系不为空
+                    if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") != null &&
+                            organizationIdMap.get("gradeLevelId") == null){
+                        // 比较当前用户的职系是否符合条件
+                        if (sequenceCode.equals(organizationIdMap.get("gradeId"))){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果组织架构id,职系为空,职等不为空
+                    if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") == null &&
+                            organizationIdMap.get("gradeLevelId") != null){
+                        // 比较当前用户的职系是否符合条件
+                        if (slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果职等为空,组织架构id,职系不为空
+                    if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") != null &&
+                            organizationIdMap.get("gradeLevelId") == null){
+                        if (flags && sequenceCode.equals(organizationIdMap.get("gradeId"))){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果职系为空,组织架构id,职等不为空
+                    if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") == null &&
+                            organizationIdMap.get("gradeLevelId") != null){
+                        if (flags && slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果组织架构id为空,职系,职等不为空
+                    if (organizationIdMap.get("organizationId") == null && organizationIdMap.get("gradeId") != null &&
+                            organizationIdMap.get("gradeLevelId") != null){
+                        if (sequenceCode.equals(organizationIdMap.get("gradeId")) && slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                            // 符合条件,增加点击量
+                            g.setIsOrganizationId(0);
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+
+                    // 如果组织架构id,职系,职等都不为空
+                    if (organizationIdMap.get("organizationId") != null && organizationIdMap.get("gradeId") != null &&
+                            organizationIdMap.get("gradeLevelId") != null){
+                        if (flags &&
+                                sequenceCode.equals(organizationIdMap.get("gradeId")) &&
+                                slyGrade.equals(organizationIdMap.get("gradeLevelId"))){
+                            g.setIsOrganizationId(0);
+                            // 符合条件,增加点击量
+                        } else {
+                            // 没有权限(不增加点击量)
+                            g.setIsOrganizationId(1);
+                        }
+                    }
+                }
             });
             return page;
         }
@@ -577,27 +967,46 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
             for (int i = 0; i < value.size(); i++) {
                 // 判断审批结果是否为null(如果审批结果没有null,证明审批已结束;如果等于0,证明审批没通过)
                 if (value.get(i).getResult() == null) {
+                    value.get(i).setApprovalsFirst(knowledgeApproveMapper.selectById(value.get(i).getApproveId()));
                     if (i != 0) {
                         // 如果不是第一条数据,取前一条数据的审批时间
                         Date approvalTime = value.get(i - 1).getApprovalTime();
                         value.get(i).setApprovalTime(approvalTime);
-                        // 把该记录加到结果集中
-                        knowledgeVoArrayList.add(value.get(i));
-                        break;
                     }
+                    // 把该记录加到结果集中
+                    knowledgeVoArrayList.add(value.get(i));
+                    break;
                 }
             }
         }
-        String userNo = userService.queryLoginUsername();
-        String deptId = userService.queryLoginUserDeptId();
-        List<KnowledgeVo> collectResult = knowledgeVoArrayList.stream().
-                filter(e -> e.getApproverId().equals(userNo) || e.getApproverId().equals(deptId)).collect(Collectors.toList());
-        if (collectResult.size() >= 99){
+
+        //结果集
+        List<KnowledgeVo> resultList = new ArrayList<>();
+        // 放入知识分类信息
+        knowledgeVoArrayList.forEach(e -> {
+            // 判断当前登录人是否可以审核每一条知识
+            String userNo = userService.queryLoginUsername();
+            String userId = userService.queryLoginUser();
+            //部门权限字符串
+            List<String> deptAuthority = knowledgeApproveMapper.deptAuthority(userId);
+            boolean flag = false;
+            for (int i = 0; i < deptAuthority.size(); i++) {
+                if (deptAuthority.get(i).contains(e.getApproverId())){
+                    flag = true;
+                    break;
+                }
+            }
+            // 如果有权限
+            if(e.getApproverId().equals(userNo) || flag){
+                resultList.add(e);
+            }
+        });
+        if (resultList.size() >= 99){
             return 99;
-        } else if (collectResult.size() <= 0){
+        } else if (resultList.size() <= 0){
             return 0;
         }else {
-            return collectResult.size();
+            return resultList.size();
         }
     }
 

+ 0 - 1
src/main/resources/mapper/knowledge/KnowledgeApprovalNodeMapper.xml

@@ -66,7 +66,6 @@
     <delete id="deleteKnowledgeApprovalNode">
         UPDATE KM_KNOWLEDGE_APPROVAL_NODE
         SET IS_DEL = 1,UPDATE_TIME_ = sysdate
-        WHERE IS_FINAL != 1
     </delete>
 </mapper>
 

+ 11 - 1
src/main/resources/mapper/knowledge/KnowledgeApproveMapper.xml

@@ -62,7 +62,7 @@
             </if>
             <if test="@rx.Ognl@isNotEmpty(params.categoryId)">
                 and k.CATEGORY_ID IN (
-                SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c START WITH c.PK_ID = #{params.categoryId} CONNECT BY PRIOR c.PK_ID = c.PARENT
+                SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c WHERE c.IS_DEL = 0 START WITH c.PK_ID = #{params.categoryId} CONNECT BY PRIOR c.PK_ID = c.PARENT and c.IS_DEL = 0
                 )
             </if>
             <if test="@rx.Ognl@isNotEmpty(params.type)">
@@ -94,6 +94,16 @@
         where KNOWLEDGER_ID = #{knowledgeId}
     </update>
 
+    <select id="deptAuthority" resultType="string">
+        SELECT
+            PATH_
+        FROM
+            LEARNING_USER_DEV.OS_GROUP
+        WHERE
+                GROUP_ID_ IN
+                ( SELECT PARTY1_ FROM LEARNING_USER_DEV.os_rel_inst WHERE PARTY2_ = #{userId} AND DIM1_ = '1' )
+    </select>
+
 </mapper>
 
 

+ 13 - 3
src/main/resources/mapper/knowledge/KnowledgeMapper.xml

@@ -69,7 +69,7 @@
             </if>
             <if test="@rx.Ognl@isNotEmpty(params.categoryId)">
                 and CATEGORY_ID IN (
-                SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c START WITH c.PK_ID = #{params.categoryId} CONNECT BY PRIOR c.PK_ID = c.PARENT
+                SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c WHERE c.IS_DEL = 0 START WITH c.PK_ID = #{params.categoryId} CONNECT BY PRIOR c.PK_ID = c.PARENT and c.IS_DEL = 0
                 )
             </if>
             <if test="@rx.Ognl@isNotEmpty(params.type)">
@@ -124,7 +124,7 @@
             </if>
             <if test="@rx.Ognl@isNotEmpty(params.categoryId)">
                 k.CATEGORY_ID IN (
-                SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c START WITH c.PK_ID = #{params.categoryId} CONNECT BY PRIOR c.PK_ID = c.PARENT
+                SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c WHERE c.IS_DEL = 0 START WITH c.PK_ID = #{params.categoryId} CONNECT BY PRIOR c.PK_ID = c.PARENT and c.IS_DEL = 0
                 )
             </if>
             <if test="@rx.Ognl@isNotEmpty(params.type)">
@@ -154,7 +154,7 @@
         KM_KNOWLEDGE k
         WHERE
         k.CATEGORY_ID IN (
-        SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c START WITH c.PK_ID = #{params.categoryId} CONNECT BY PRIOR c.PK_ID = c.PARENT
+        SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c WHERE c.IS_DEL = 0 START WITH c.PK_ID = #{params.categoryId} CONNECT BY PRIOR c.PK_ID = c.PARENT and c.IS_DEL = 0
         ) and k.APPROVAL_STATUS = 5
         ORDER BY VIEWS DESC
     </select>
@@ -219,6 +219,16 @@ INSERT INTO KM_KNOWLEDGE(
         END;
     </insert>
 
+    <select id="findAllWiki" resultType="com.redxun.knowledge.entity.dao.Knowledge">
+        select
+         <include refid="COLUMNS"/>
+        from KM_KNOWLEDGE k
+        where APPROVAL_STATUS = 5 AND IS_DEL = 0 AND TYPE = 2
+          AND k.CATEGORY_ID IN (
+        SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c WHERE c.IS_DEL = 0 START WITH c.PK_ID = #{categoryId} CONNECT BY PRIOR c.PK_ID = c.PARENT and c.IS_DEL = 0
+        )
+    </select>
+
 
 </mapper>