Browse Source

作者:张哲
时间:2023/05/11
类型:优化
描述:里程碑(1) 审核流程默认节点修改

zizg 2 years ago
parent
commit
120407ea42

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

@@ -151,8 +151,16 @@ public class KnowledgeApprovalNodeController extends BaseController<KnowledgeApp
     @ApiOperation("根据分类查询审核流程")
     @GetMapping("findAllNodesByCategoryId")
     public JsonResult findAllNodesByCategoryId(@RequestParam(value = "categoryId",required = false) String categoryId){
-        List<KnowledgeApprovalNodeVo> result = knowledgeApprovalNodeService.findAllNodesByCategoryId(categoryId);
-        return JsonResult.getSuccessResult(result);
+        JsonResult jsonResult = JsonResult.getSuccessResult("");
+        try {
+            List<KnowledgeApprovalNodeVo> result = knowledgeApprovalNodeService.findAllNodesByCategoryId(categoryId);
+            jsonResult.setData(result);
+        } catch (Exception e) {
+            jsonResult.setMessage(e.getMessage());
+            jsonResult.setSuccess(false);
+        }
+
+        return jsonResult;
     }
 
     @ApiOperation("删除审核流程")

+ 19 - 5
src/main/java/com/redxun/knowledge/controller/KnowledgeController.java

@@ -80,23 +80,37 @@ public class KnowledgeController extends BaseController<Knowledge> {
         if (knowledgeDto.getIsDraft() != null && knowledgeDto.getIsDraft() == 0) {
             jsonResult.setMessage("知识暂存成功!");
         }
-        String pkId = knowledgeService.create(knowledgeDto);
-        jsonResult.setData(pkId);
+        String pkId = null;
+        try {
+            pkId = knowledgeService.create(knowledgeDto);
+            jsonResult.setData(pkId);
+        } catch (Exception e) {
+            jsonResult.setMessage(ExceptionUtil.getExceptionMessage(e));
+            jsonResult.setSuccess(false);
+        }
         return jsonResult;
     }
 
     @ApiOperation(value = "修改知识", httpMethod = "POST")
     @Override
     public JsonResult save(@Validated @ApiParam @RequestBody Knowledge entity, BindingResult validResult) {
-        int update = knowledgeService.update(entity);
+        JsonResult jsonResult = JsonResult.getSuccessResult("");
+        int update = 0;
+        try {
+            update = knowledgeService.update(entity);
+        } catch (Exception e) {
+            jsonResult.setMessage(ExceptionUtil.getExceptionMessage(e));
+            jsonResult.setSuccess(false);
+        }
         if (update == -1) {
             return JsonResult.Success("知识正在审核中,无法修改");
         } else {
             if (entity.getIsDraft() != null && entity.getIsDraft() == 0) {
-                return JsonResult.getSuccessResult("知识暂存成功!");
+                jsonResult.setMessage("知识暂存成功!");
             } else {
-                return JsonResult.getSuccessResult("修改知识成功!");
+                jsonResult.setMessage("修改知识成功!");
             }
+            return jsonResult;
         }
     }
 

+ 7 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeApprovalNodeFlowerMapper.java

@@ -35,4 +35,11 @@ public interface KnowledgeApprovalNodeFlowerMapper extends BaseMapper<KnowledgeA
      * @return
      */
     List<KnowledgeApprovalNodeVo> findAllNodesByCategoryId(@Param("categoryId") String categoryId);
+
+    /**
+     * 查询当前登陆用户的直属领导
+     * @param deptId
+     * @return
+     */
+    List<String> findParentUserIdList(String deptId);
 }

+ 30 - 0
src/main/java/com/redxun/knowledge/service/KnowledgeApprovalNodeServiceImpl.java

@@ -9,6 +9,7 @@ import com.redxun.common.base.db.PageHelper;
 import com.redxun.common.base.search.QueryFilter;
 import com.redxun.common.service.impl.SuperServiceImpl;
 import com.redxun.common.tool.StringUtils;
+import com.redxun.knowledge.common.UserService;
 import com.redxun.knowledge.entity.dao.KnowledgeApprovalNode;
 import com.redxun.knowledge.entity.dao.KnowledgeApprovalNodeCategory;
 import com.redxun.knowledge.entity.dao.KnowledgeApprovalNodeFlower;
@@ -29,8 +30,10 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import javax.xml.bind.annotation.XmlType;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 /**
  * [业务--知识审批节点表]业务服务类
@@ -52,6 +55,9 @@ public class KnowledgeApprovalNodeServiceImpl extends SuperServiceImpl<Knowledge
     @Autowired
     private KnowledgeCategoryMapper knowledgeCategoryMapper;
 
+    @Autowired
+    private UserService userService;
+
     @Override
     public BaseDao<KnowledgeApprovalNode> getRepository() {
         return knowledgeApprovalNodeMapper;
@@ -188,6 +194,7 @@ public class KnowledgeApprovalNodeServiceImpl extends SuperServiceImpl<Knowledge
         if (StringUtils.isEmpty(categoryId)){
             categoryId = "-2";
             result = knowledgeApprovalNodeFlowerMapper.findAllNodesByCategoryId(categoryId);
+            defaultNode(result.get(0));
             return result;
         }
         //输入分类id
@@ -212,9 +219,32 @@ public class KnowledgeApprovalNodeServiceImpl extends SuperServiceImpl<Knowledge
         if (CollectionUtils.isEmpty(result)){
             result = knowledgeApprovalNodeFlowerMapper.findAllNodesByCategoryId("-2");
         }
+        defaultNode(result.get(0));
         return result;
     }
 
+    private void defaultNode(KnowledgeApprovalNodeVo result){
+        if (result.getIsFinal() != -1) {
+            throw new RuntimeException("没找到默认节点");
+        }
+        //处理默认节点
+        String deptId = userService.queryLoginUserDeptId();
+        List<String> parentUserIdList = knowledgeApprovalNodeFlowerMapper.findParentUserIdList(deptId);
+        if (CollectionUtils.isEmpty(parentUserIdList)){
+            result.setApproverId(userService.queryLoginUsername());
+            result.setApproverName(userService.queryLoginFullName());
+        } else {
+            //审核人userId(员工工号)
+            String approverId = parentUserIdList.parallelStream().map(e -> userService.queryLoginUsername()).
+                    collect(Collectors.joining(","));
+            result.setApproverId(approverId);
+            //审核人姓名
+            String approverName = parentUserIdList.parallelStream().map(e -> userService.queryUser(e).getFullName()).
+                    collect(Collectors.joining(","));
+            result.setApproverName(approverName);
+        }
+    }
+
     /**
      * 删除审核流程
      * @param pkId

+ 5 - 6
src/main/java/com/redxun/knowledge/service/KnowledgeApproveServiceImpl.java

@@ -134,17 +134,18 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
         collect.forEach(e -> {
             String userNo = userService.queryLoginUsername();
             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())) {
+            for (String s : deptAuthority) {
+                if (s.contains(e.getApproverId())) {
                     flag = true;
                     break;
                 }
             }
-            if (!e.getApproverId().equals(userNo) && !flag) {
+            String[] split = e.getApproverId().split(",");
+            List<String> approverIdList = Arrays.asList(split);
+            if (!approverIdList.contains(userNo) && !flag) {
                 // 不是该部门的人,不能审核
                 e.setIsAudit(1);
             } else {
@@ -153,8 +154,6 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
         });
         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;
     }
 

+ 10 - 3
src/main/java/com/redxun/knowledge/service/KnowledgeServiceImpl.java

@@ -118,6 +118,9 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
      */
     @Transactional(rollbackFor = Exception.class)
     public String create(KnowledgeDto knowledgeDto) {
+        if (Objects.isNull(knowledgeCategoryMapper.selectById(knowledgeDto.getCategoryId()))){
+            throw new RuntimeException("输入的分类不存在,请重新输入");
+        }
         if (knowledgeDto != null) {
             Knowledge knowledge = new Knowledge();
             knowledge.setPkId(IdGenerator.getIdStr());
@@ -275,8 +278,7 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
             }
         }
         knowledgeVo.setApprovals(approvals);
-
-        if (flag != null && flag == 1 && knowledgeVo.getApprovalStatus() == 5) {
+        if (flag != null && flag == 1 && knowledgeVo.getApprovalStatus() == 5 && knowledge.getCreateBy().equals(userService.queryLoginUser())) {
             // 解析组织架构/职系/职等数据
             Map<String, Object> organizationIdMap = new HashMap<>();
             if (StringUtils.isNotEmpty(knowledge.getOrganizationId())) {
@@ -613,6 +615,9 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
     @Transactional(rollbackFor = Exception.class)
     @Override
     public int update(Knowledge entity) {
+        if (Objects.isNull(knowledgeCategoryMapper.selectById(entity.getCategoryId()))){
+            throw new RuntimeException("输入的分类不存在,请重新输入");
+        }
         Knowledge knowledge = this.get(entity.getPkId());
         // 知识为待节点审核状态和待最终审核状态,修改失败;知识为最终审核通过,修改失败
         if (knowledge.getApprovalStatus() == 3 || knowledge.getApprovalStatus() == 1) {
@@ -1066,7 +1071,9 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
                 }
             }
             // 如果有权限
-            if (e.getApproverId().equals(userNo) || flag) {
+            String[] split = e.getApproverId().split(",");
+            List<String> approverIdList = Arrays.asList(split);
+            if (approverIdList.contains(userNo) || flag) {
                 resultList.add(e);
             }
         });

+ 4 - 0
src/main/resources/mapper/knowledge/KnowledgeApprovalNodeFlowerMapper.xml

@@ -82,6 +82,10 @@
         order by isFinal,node.sort
     </select>
 
+    <select id="findParentUserIdList" resultType="string">
+        select MANAGER_IDS_ from LEARNING_USER_DEV.OS_GROUP WHERE KEY_ = #{deptId} and MANAGER_IDS_ is not null
+    </select>
+
 </mapper>