Parcourir la source

作者:张哲
时间:2022/12/16
类型:开发
描述:文件通知接口对接&工作和经验分类结果优化

ZizgZh il y a 2 ans
Parent
commit
3c388992eb

+ 17 - 1
src/main/java/com/redxun/knowledge/entity/dao/KnowledgeApprove.java

@@ -10,13 +10,19 @@
  */
 package com.redxun.knowledge.entity.dao;
 
+import com.alibaba.fastjson.annotation.JSONField;
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.redxun.common.base.entity.BaseExtEntity;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.experimental.Accessors;
+import org.apache.ibatis.type.JdbcType;
+import org.springframework.format.annotation.DateTimeFormat;
+
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 
@@ -57,8 +63,18 @@ public class KnowledgeApprove  extends BaseExtEntity<java.lang.String> {
     @TableField(value = "ACTUAL_APPROVER_NAME")
     private String actualApproverName;
     //节点审核时间
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JSONField(
+            format = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss",
+            timezone = "GMT+8"
+    )
     @TableField(value = "APPROVAL_TIME")
-    private java.util.Date approvalTime;
+    private Date approvalTime;
     //审核批次;对应知识表批次,表明是最新一轮审批过程
     @TableField(value = "APPROVAL_BATCH")
     private Integer approvalBatch;

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

@@ -1,6 +1,7 @@
 package com.redxun.knowledge.entity.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.redxun.knowledge.entity.dao.KnowledgeApprove;
 import lombok.Data;
@@ -109,6 +110,34 @@ public class KnowledgeVo {
     // 是否在当前组织架构权限中(0 在 1 不在 没最终通过时返回为null)
     private Integer isOrganizationId;
 
+    //审批人名称;可以是人员或者部门名称
+    private String approverName;
+
+    //节点审核时间
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JSONField(
+            format = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss",
+            timezone = "GMT+8"
+    )
+    private Date approvalTime;
+
     // 其他参数
     private Map<String ,Object> params;
+
+    // 审批结果
+    private Integer result;
+
+    // 知识Id
+    private String knowledgerId;
+
+    // 审批列表Id
+    private String approveId;
+
+    // 排序
+    private Integer sort;
 }

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

@@ -23,7 +23,7 @@ public interface KnowledgeMapper extends BaseDao<Knowledge> {
 
     void deleteKnowledge(String knowledgeId);
 
-    IPage findAllAuditKnowledge(IPage page, @Param("params") Map<String, Object> params, @Param("w") Map<String, Object> order);
+    List<KnowledgeVo> findAllAuditKnowledge(@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);
 

+ 83 - 47
src/main/java/com/redxun/knowledge/service/KnowledgeServiceImpl.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.redxun.common.base.db.BaseDao;
 import com.redxun.common.base.db.BaseService;
 import com.redxun.common.base.db.PageHelper;
@@ -16,18 +18,19 @@ import com.redxun.common.tool.IdGenerator;
 import com.redxun.common.tool.StringUtils;
 import com.redxun.dto.user.OsUserDto;
 import com.redxun.knowledge.common.UserService;
-import com.redxun.knowledge.controller.KnowledgeApproveController;
 import com.redxun.knowledge.entity.dao.*;
 import com.redxun.knowledge.entity.dto.KnowledgeDto;
+import com.redxun.knowledge.entity.vo.KnowledgeApprovalListVo;
 import com.redxun.knowledge.entity.vo.KnowledgeApprovalVo;
 import com.redxun.knowledge.entity.vo.KnowledgeCategoryAdminVo;
 import com.redxun.knowledge.entity.vo.KnowledgeVo;
 import com.redxun.knowledge.mapper.*;
 import com.redxun.knowledge.utils.DeduplicationUtil;
+import com.redxun.knowledge.utils.PageListUtils;
 import com.redxun.search.service.SearchService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -39,6 +42,8 @@ import java.util.stream.Collectors;
  * [业务--知识表]业务服务类
  */
 @Service
+@SuppressWarnings({"all"})
+@Slf4j
 public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Knowledge> implements BaseService<Knowledge> {
 
 
@@ -336,46 +341,48 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
      */
     public IPage findAllAuditKnowledge(QueryFilter filter) {
         Map<String, Object> params = PageHelper.constructParams(filter);
-        //filter.getParams().put("userId",userService.queryLoginUsername());
-        //filter.getParams().put("deptId",userService.queryLoginUserDeptId());
-        // 只查询待节点审核的数据
-        IPage page = knowledgeMapper.findAllAuditKnowledge(filter.getPage(), filter.getParams(), params);
-        List<KnowledgeVo> knowledgeVoList = page.getRecords();
-        // 查询其所属分类信息以及审核表第一节点的审核人信息
-        //KnowledgeVo knowledgeVo = knowledgeVoList.get(0);
-        //
-        //KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = knowledgeCategoryService.findAllParentByCategoryId(knowledgeVo.getCategoryId());
-        //knowledgeVo.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVo);
-        //List<KnowledgeApprove> knowledgerList = knowledgeApproveMapper.selectList(
-        //            new QueryWrapper<KnowledgeApprove>().eq("KNOWLEDGER_ID", knowledgeVo.getPkId()).orderByAsc("SORT"));
-        //knowledgeVo.setApprovalsFirst(knowledgerList.get(0));
-        // 去重,取第一条数据
-        List<KnowledgeVo> knowledgeVoFilterOne = knowledgeVoList.stream().
-                filter(DeduplicationUtil.distinctByKey(KnowledgeVo::getTitles)).collect(Collectors.toList());
-        List<KnowledgeVo> knowledgeVoFilterTwo = new ArrayList<>();
-        knowledgeVoFilterOne.forEach(e -> {
-            // 是当前用户或者当前登录用户的统计部门,可审
-            if (e.getApproverId().equals(userService.queryLoginUsername()) || e.getApproverId().equals(userService.queryLoginUserDeptId())){
-                knowledgeVoFilterTwo.add(e);
+        List<KnowledgeVo> knowledgeVoList = knowledgeMapper.findAllAuditKnowledge(filter.getParams(), params);
+        // 根据知识Id进行数据分组
+        Map<String, List<KnowledgeVo>> result =
+                knowledgeVoList.stream().collect(Collectors.groupingBy(KnowledgeVo::getKnowledgerId));
+        // 结果集
+        List<KnowledgeVo> knowledgeVoArrayList = new ArrayList<>();
+        // 遍历每组的数据
+        Set<Map.Entry<String, List<KnowledgeVo>>> entries = result.entrySet();
+        for (Map.Entry<String, List<KnowledgeVo>> entry : entries) {
+            List<KnowledgeVo> value = entry.getValue();
+            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;
+                }
             }
-        });
-        knowledgeVoFilterTwo.forEach(e -> {
-            KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = knowledgeCategoryService.findAllParentByCategoryId(e.getCategoryId());
+        }
+
+        // 放入知识分类信息
+        List<KnowledgeVo> collect = knowledgeVoArrayList.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);
-            List<KnowledgeApprove> knowledgerList = knowledgeApproveMapper.selectList(
-                    new QueryWrapper<KnowledgeApprove>().eq("KNOWLEDGER_ID", e.getPkId()).isNull("RESULT").orderByAsc("SORT"));
-            e.setApprovalsFirst(knowledgerList.get(0));
         });
-        // 数据大于99条,取前99条数据返回
-        if (page.getSize() > 99){
-            List<KnowledgeVo> recordsPre = knowledgeVoFilterTwo.stream().limit(99).collect(Collectors.toList());
-            page.setRecords(recordsPre);
-            page.setTotal(99);
-        } else {
-            page.setRecords(knowledgeVoFilterTwo);
-            page.setTotal(knowledgeVoFilterTwo.size());
-        }
-        return page;
+
+        // 判断当前登录人是否可以审核每一条知识
+        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);
+        return pages;
     }
 
     /**
@@ -435,17 +442,46 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
      */
     public Integer getAuditKnowledgeSum() {
         List<KnowledgeVo> knowledgeVoList = knowledgeMapper.countAuditKnowledge();
-        List<KnowledgeVo> knowledgeVoFilterOne = knowledgeVoList.stream().filter(DeduplicationUtil.distinctByKey(KnowledgeVo::getTitles)).collect(Collectors.toList());
-        List<KnowledgeVo> knowledgeVoFilterTwo = new ArrayList<>();
-        knowledgeVoFilterOne.forEach(e -> {
-            // 是当前用户或者当前登录用户的统计部门,可审
-            if (e.getApproverId().equals(userService.queryLoginUsername()) || e.getApproverId().equals(userService.queryLoginUserDeptId())){
-                knowledgeVoFilterTwo.add(e);
+        // 根据知识Id进行数据分组
+        Map<String, List<KnowledgeVo>> result =
+                knowledgeVoList.stream().collect(Collectors.groupingBy(KnowledgeVo::getKnowledgerId));
+        // 结果集
+        List<KnowledgeVo> knowledgeVoArrayList = new ArrayList<>();
+        // 遍历每组的数据
+        Set<Map.Entry<String, List<KnowledgeVo>>> entries = result.entrySet();
+        for (Map.Entry<String, List<KnowledgeVo>> entry : entries) {
+            List<KnowledgeVo> value = entry.getValue();
+            for (int i = 0; i < value.size(); i++) {
+                // 判断审批结果是否为null(如果审批结果没有null,证明审批已结束;如果等于0,证明审批没通过)
+                if (value.get(i).getResult() == null) {
+                    if (i != 0) {
+                        // 如果不是第一条数据,取前一条数据的审批时间
+                        Date approvalTime = value.get(i - 1).getApprovalTime();
+                        value.get(i).setApprovalTime(approvalTime);
+                        // 把该记录加到结果集中
+                        knowledgeVoArrayList.add(value.get(i));
+                        break;
+                    }
+                }
             }
-        });
-        return knowledgeVoFilterTwo.size();
+        }
+        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){
+            return 99;
+        } else if (collectResult.size() <= 0){
+            return 0;
+        }else {
+            return collectResult.size();
+        }
     }
 
+    /**
+     * 前台获取登录人上传文件数量
+     * @return
+     */
     public Integer getKnowledgeSum() {
         LambdaQueryWrapper<Knowledge> wrapper = new LambdaQueryWrapper<>();
         String loginUser = userService.queryLoginUser();

+ 10 - 1
src/main/java/com/redxun/knowledge/utils/PageListUtils.java

@@ -5,9 +5,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * 文件名: PageListUtils
+ * 作者: Zizg
+ * 时间: 2023/1/3
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
 public class PageListUtils {
     /**
-     * 分页函数
+     * 分页
      * @param currentPage   当前页数
      * @param pageSize  每一页的数据条数
      * @param list  要进行分页的数据列表

+ 2 - 2
src/main/java/com/redxun/search/service/impl/SearchServiceImpl.java

@@ -87,8 +87,8 @@ public class SearchServiceImpl implements SearchService {
         paramMap.put("documentUrl",documentUrl);
         paramMap.put("downloadUrl",downloadUrl);
         paramMap.put("documentMd5",documentMd5);
-        paramMap.put("uploader",uploaderName);
-        paramMap.put("uploaderId",uploader);
+        paramMap.put("uploaderName",uploaderName);
+        paramMap.put("uploader",uploader);
         paramMap.put("uploaderHead",uploaderHead);
         paramMap.put("remark",remark);
         paramMap.put("needText",needText);

+ 1 - 1
src/main/resources/application.yml

@@ -128,7 +128,7 @@ spring:
     nacos:
       discovery:
         metadata:
-          developer: ray
+          developer: zizg
 #logging:
 #  level:
 #    root: info

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

@@ -75,7 +75,7 @@
             <if test="@rx.Ognl@isNotEmpty(params.endTime)">
                 and ka.CREATE_TIME_ &lt;= TO_DATE(#{params.endTime}, 'YYYY-MM-DD')
             </if>
-            and ka.IS_DEL = 0
+            and k.IS_DEL = 0 and ka.IS_DEL = 0
         </where>
         ORDER BY ka.SORT,ka.CREATE_TIME_ DESC
     </select>

+ 7 - 8
src/main/resources/mapper/knowledge/KnowledgeMapper.xml

@@ -106,7 +106,9 @@
 
     <select id="findAllAuditKnowledge" resultType="com.redxun.knowledge.entity.vo.KnowledgeVo">
         SELECT
-        k.PK_ID,k.CATEGORY_ID,k.TITLES,k.TYPE,k.SUMMARY,k.VIEWS,k.AUTHOR,k.CONTENT,k.ATTACHMENT,ka.APPROVER_ID,
+        k.PK_ID,k.CATEGORY_ID,k.TITLES,k.TYPE,k.SUMMARY,k.VIEWS,k.AUTHOR,k.CONTENT,k.ATTACHMENT,ka.APPROVER_ID,ka.RESULT,ka.sort as sort,
+               ka.PK_ID AS approveId,
+        ka.KNOWLEDGER_ID,ka.ACTUAL_APPROVER,ka.ACTUAL_APPROVER_NAME,ka.APPROVAL_TIME,ka.APPROVER_NAME as approverName,
         k.ATTACHMENT_NAME,k.ATTACHMENT_TYPE,k.APPROVAL_STATUS,k.APPROVAL_BATCH,k.ORGANIZATION_ID,k.IS_DEL,
         k.COMPANY_ID_,k.CREATE_DEP_ID_,k.TENANT_ID_,k.CREATE_BY_,k.CREATE_TIME_,k.UPDATE_BY_,k.UPDATE_TIME_,k.DOCUMENT_ID
         FROM KM_KNOWLEDGE k JOIN KM_KNOWLEDGE_APPROVE ka ON k.PK_ID = ka.KNOWLEDGER_ID
@@ -129,9 +131,7 @@
             <if test="@rx.Ognl@isNotEmpty(params.endTime)">
                 and ka.CREATE_TIME_ &lt;= TO_DATE(#{params.endTime}, 'YYYY-MM-DD')
             </if>
-            and k.IS_DEL = 0 and (APPROVAL_STATUS = 1 OR APPROVAL_STATUS = 3) and
-            <!-- (APPROVER_ID = #{params.userId} or APPROVER_ID = #{params.deptId}) -->
-            RESULT IS NULL
+            and k.IS_DEL = 0 and (APPROVAL_STATUS = 1 OR APPROVAL_STATUS = 3)
         </where>
         ORDER BY ka.CREATE_TIME_ DESC,ka.SORT ASC
     </select>
@@ -164,14 +164,13 @@
 
     <select id="countAuditKnowledge" resultType="com.redxun.knowledge.entity.vo.KnowledgeVo">
         SELECT
-        k.PK_ID,k.CATEGORY_ID,k.TITLES,k.TYPE,k.SUMMARY,k.VIEWS,k.AUTHOR,k.CONTENT,k.ATTACHMENT,ka.APPROVER_ID,
+        k.PK_ID,k.CATEGORY_ID,k.TITLES,k.TYPE,k.SUMMARY,k.VIEWS,k.AUTHOR,k.CONTENT,k.ATTACHMENT,ka.APPROVER_ID,ka.RESULT,ka.sort,
+        ka.KNOWLEDGER_ID,ka.ACTUAL_APPROVER,ka.ACTUAL_APPROVER_NAME,ka.APPROVAL_TIME,
         k.ATTACHMENT_NAME,k.ATTACHMENT_TYPE,k.APPROVAL_STATUS,k.APPROVAL_BATCH,k.ORGANIZATION_ID,k.IS_DEL,
         k.COMPANY_ID_,k.CREATE_DEP_ID_,k.TENANT_ID_,k.CREATE_BY_,k.CREATE_TIME_,k.UPDATE_BY_,k.UPDATE_TIME_,k.DOCUMENT_ID
         FROM KM_KNOWLEDGE k JOIN KM_KNOWLEDGE_APPROVE ka ON k.PK_ID = ka.KNOWLEDGER_ID
         <where>
-             k.IS_DEL = 0 and (APPROVAL_STATUS = 1 OR APPROVAL_STATUS = 3) and
-            <!-- (APPROVER_ID = #{params.userId} or APPROVER_ID = #{params.deptId}) -->
-            RESULT IS NULL
+           k.IS_DEL = 0 and (APPROVAL_STATUS = 1 OR APPROVAL_STATUS = 3)
         </where>
         ORDER BY ka.CREATE_TIME_ DESC,ka.SORT ASC
     </select>