Browse Source

作者:张哲
时间:2022/12/9
类型:开发
描述:知识审核

ZizgZh 2 years ago
parent
commit
e1d1afa941

+ 8 - 1
src/main/java/com/redxun/knowledge/controller/KnowledgeApproveController.java

@@ -18,12 +18,15 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 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.Date;
+
 @Slf4j
 @RestController
 @RequestMapping("/api-knowledge/knowledge/knowledgeApprove")
@@ -66,7 +69,11 @@ public class KnowledgeApproveController extends BaseController<KnowledgeApprove>
     @ApiOperation(value = "知识审核")
     @PostMapping("knowledgeApproveById")
     public JsonResult knowledgeApproveById(@RequestBody KnowledgeApproveDto knowledgeApproveDto){
-        return null;
+        KnowledgeApprove knowledgeApprove = new KnowledgeApprove();
+        knowledgeApprove.setApprovalTime(new Date());
+        BeanUtils.copyProperties(knowledgeApproveDto,knowledgeApprove);
+        knowledgeApproveService.update(knowledgeApprove);
+        return JsonResult.Success("审核成功");
     }
 
 

+ 2 - 16
src/main/java/com/redxun/knowledge/entity/dto/KnowledgeApproveDto.java

@@ -22,31 +22,17 @@ import javax.validation.constraints.NotBlank;
  */
 @Setter
 @Getter
-public class KnowledgeApproveDto extends BaseExtEntity<String> {
+public class KnowledgeApproveDto {
 
     //主键
-    @NotBlank(message = "审核记录Id不能为空")
+    // @NotBlank(message = "审核记录Id不能为空")
     private String pkId;
     //审批结论;0-不通过 1-通过
     private Integer result;
-    //审批人ID;节点预设人员或者部门ID
-    private String approverId;
-    //审批人名称;可以是人员或者部门名称
-    private String approverName;
     //实际审批人ID;可以是人员ID或者部门下内部人员ID
     private String actualApprover;
     //实际审批人名称;可以是人员名称或者部门下内部人员名称
     private String actualApproverName;
     //审批意见
     private String remark;
-
-    @Override
-    public String getPkId() {
-        return null;
-    }
-
-    @Override
-    public void setPkId(String pkId) {
-
-    }
 }

+ 3 - 0
src/main/java/com/redxun/knowledge/entity/vo/KnowledgeApprovalListVo.java

@@ -67,6 +67,9 @@ public class KnowledgeApprovalListVo {
     //审批结论;0-不通过 1-通过
     private Integer result;
 
+    //是否最终审核节点;0-不是 1-是
+    private Integer isFinal;
+
     //审批人名称
     private String approverName;
 

+ 5 - 0
src/main/java/com/redxun/knowledge/entity/vo/KnowledgeVo.java

@@ -80,6 +80,11 @@ public class KnowledgeVo {
     // 审批状态 1-待节点审核 2-节点驳回 3-待最终审核 4-最终驳回 5-最终通过
     private Integer approvalStatus;
 
+    // 创建人
+    private String createBy;
+    // 操作人
+    private String updateBy;
+
     // 流程节点
     private List<KnowledgeApprovalVo> approvals;
 

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

@@ -2,10 +2,12 @@ package com.redxun.knowledge.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.redxun.knowledge.entity.dao.KnowledgeApprove;
+import com.redxun.knowledge.entity.vo.KnowledgeApprovalListVo;
 import org.apache.ibatis.annotations.Mapper;
 import com.redxun.common.base.db.BaseDao;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -17,5 +19,5 @@ public interface KnowledgeApproveMapper extends BaseDao<KnowledgeApprove> {
     // 根据知识id删除对应的审批记录
     void deleteByKnowledgeId(String knowledgeId);
 
-    IPage findAllKnowledgeApprove(IPage page, @Param("params") Map<String, Object> params, @Param("w") Map<String, Object> order);
+    List<KnowledgeApprovalListVo> findAllKnowledgeApprove(@Param("params") Map<String, Object> params, @Param("w") Map<String, Object> order);
 }

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

@@ -23,4 +23,7 @@ public interface KnowledgeMapper extends BaseDao<Knowledge> {
     IPage findAllAuditKnowledge(IPage page, @Param("params") Map<String, Object> params, @Param("w") Map<String, Object> order);
 
     IPage getAllKnowledgeByCategoryId(IPage page, @Param("params") Map<String, Object> params, @Param("w") Map<String, Object> order);
+
+    // 修改知识审核状态
+    void updateApprovalStatus(@Param("knowledgeId") String knowledgeId,@Param("status") Integer status);
 }

+ 56 - 7
src/main/java/com/redxun/knowledge/service/KnowledgeApproveServiceImpl.java

@@ -7,10 +7,12 @@ import com.redxun.common.base.db.BaseService;
 import com.redxun.common.base.db.PageHelper;
 import com.redxun.common.base.search.QueryFilter;
 import com.redxun.common.service.impl.SuperServiceImpl;
+import com.redxun.knowledge.entity.dao.Knowledge;
 import com.redxun.knowledge.entity.dao.KnowledgeApprove;
 import com.redxun.knowledge.entity.vo.KnowledgeApprovalListVo;
 import com.redxun.knowledge.entity.vo.KnowledgeCategoryAdminVo;
 import com.redxun.knowledge.mapper.KnowledgeApproveMapper;
+import com.redxun.knowledge.mapper.KnowledgeMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -30,6 +32,9 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
     @Autowired
     private KnowledgeCategoryServiceImpl knowledgeCategoryService;
 
+    @Autowired
+    private KnowledgeMapper knowledgeMapper;
+
     @Override
     public BaseDao<KnowledgeApprove> getRepository() {
         return knowledgeApproveMapper;
@@ -42,12 +47,12 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
      */
     public IPage findAllKnowledgeApprove(QueryFilter filter) {
         Map<String, Object> params = PageHelper.constructParams(filter);
-        IPage page = knowledgeApproveMapper.findAllKnowledgeApprove(filter.getPage(), filter.getParams(), params);
+        List<KnowledgeApprovalListVo> allKnowledgeApprove = knowledgeApproveMapper.findAllKnowledgeApprove(filter.getParams(), params);
         // 查询出全部记录
-        List<KnowledgeApprovalListVo> knowledgeApprovalListVos = page.getRecords();
+        // List<KnowledgeApprovalListVo> knowledgeApprovalListVos = page.getRecords();
         // 根据知识Id进行数据分组
         Map<String, List<KnowledgeApprovalListVo>> result =
-                knowledgeApprovalListVos.stream().collect(Collectors.groupingBy(KnowledgeApprovalListVo::getKnowledgerId));
+                allKnowledgeApprove.stream().collect(Collectors.groupingBy(KnowledgeApprovalListVo::getKnowledgerId));
         // 结果集
         List<KnowledgeApprovalListVo> knowledgeApprovalListVoList = new ArrayList<>();
         // 遍历每组的数据
@@ -55,6 +60,11 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
         for (Map.Entry<String, List<KnowledgeApprovalListVo>> entry : entries) {
             List<KnowledgeApprovalListVo> value = entry.getValue();
             for (int i = 0; i < value.size(); i++) {
+                // 如果是最终审核通过,直接放入记录
+                if (value.get(i).getApprovalStatus() == 5 && value.get(i).getIsFinal() == 1){
+                    knowledgeApprovalListVoList.add(value.get(i));
+                    break;
+                }
                 // 判断审批结果是否为null(如果审批结果没有null,证明审批已结束;如果等于0,证明审批没通过)
                 if (value.get(i).getResult() == null || value.get(i).getResult() == 0) {
                     if (i != 0) {
@@ -64,19 +74,58 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
                     }
                     // 把该记录加到结果集中
                     knowledgeApprovalListVoList.add(value.get(i));
+                    // 如果节点为终审节点,审核状态为3(待最终审核)
+                    if (value.get(i).getIsFinal() == 1 && value.get(i).getApprovalStatus() != 5){
+                        knowledgeMapper.updateApprovalStatus(value.get(i).getKnowledgerId(),3);
+                    }
                     break;
                 }
             }
         }
         // 放入知识分类信息
-        knowledgeApprovalListVoList.forEach(e -> {
+        List<KnowledgeApprovalListVo> collect = knowledgeApprovalListVoList.stream().
+                sorted((t1, t2) -> t2.getCreateTime().compareTo(t1.getCreateTime())).collect(Collectors.toList());
+        collect.forEach(e -> {
             String categoryId = e.getCategoryId();
             KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = knowledgeCategoryService.findAllParentByCategoryId(categoryId);
             e.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVo);
         });
         // 重新组装分页数据
-        page.setRecords(knowledgeApprovalListVoList);
-        page.setTotal(knowledgeApprovalListVoList.size());
-        return page;
+        IPage pages = filter.getPage();
+        pages.setRecords(collect);
+        pages.setTotal(collect.size());
+        return pages;
+    }
+
+    /**
+     * 知识审核
+     * @param entity
+     * @return
+     */
+    @Override
+    public int update(KnowledgeApprove entity) {
+        KnowledgeApprove knowledgeApprove = knowledgeApproveMapper.selectById(entity.getPkId());
+        // 如果审核节点不是终审节点且知识未通过,修改知识状态为节点驳回 2
+        if (knowledgeApprove.getIsFinal() == 0 && entity.getResult() == 0){
+            Knowledge knowledge = new Knowledge();
+            knowledge.setPkId(knowledgeApprove.getKnowledgerId());
+            knowledge.setApprovalStatus(2);
+            knowledgeMapper.updateById(knowledge);
+        }
+        // 如果审核节点是终审节点且知识未通过,修改知识状态为最终驳回 4
+        if (knowledgeApprove.getIsFinal() == 1 && entity.getResult() == 0){
+            Knowledge knowledge = new Knowledge();
+            knowledge.setPkId(knowledgeApprove.getKnowledgerId());
+            knowledge.setApprovalStatus(4);
+            knowledgeMapper.updateById(knowledge);
+        }
+        // 如果审核节点是终审节点且知识通过,修改知识状态为最终通过 5
+        if (knowledgeApprove.getIsFinal() == 1 && entity.getResult() == 1){
+            Knowledge knowledge = new Knowledge();
+            knowledge.setPkId(knowledgeApprove.getKnowledgerId());
+            knowledge.setApprovalStatus(5);
+            knowledgeMapper.updateById(knowledge);
+        }
+        return this.getRepository().updateById(entity);
     }
 }

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

@@ -52,7 +52,7 @@
 
     <select id="findAllKnowledgeApprove" resultType="com.redxun.knowledge.entity.vo.KnowledgeApprovalListVo">
         SELECT ka.PK_ID,ka.KNOWLEDGER_ID,k.TITLES,k.TYPE,k.CATEGORY_ID,k.AUTHOR,
-        ka.CREATE_TIME_,k.APPROVAL_STATUS,ka.CREATE_BY_,ka.RESULT,ka.APPROVER_NAME,ka.APPROVAL_TIME
+        ka.CREATE_TIME_,k.APPROVAL_STATUS,ka.CREATE_BY_,ka.RESULT,ka.APPROVER_NAME,ka.APPROVAL_TIME,ka.IS_FINAL
         from KM_KNOWLEDGE_APPROVE  ka
         JOIN KM_KNOWLEDGE k
         on ka.KNOWLEDGER_ID = k.PK_ID

+ 6 - 0
src/main/resources/mapper/knowledge/KnowledgeMapper.xml

@@ -138,6 +138,12 @@
         CREATE_TIME_ DESC
     </select>
 
+    <update id="updateApprovalStatus">
+        UPDATE KM_KNOWLEDGE
+        SET APPROVAL_STATUS = #{status}
+        WHERE PK_ID = #{knowledgeId}
+    </update>
+
 
 </mapper>