Browse Source

作者:张哲
时间:2023/05/29
类型:需求变更
描述:里程碑(3) 后台人员统计&节点驳回修改

zizg 1 year ago
parent
commit
8f061b47fe

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

@@ -113,7 +113,7 @@ public class AnalysisCommonController {
                                             @RequestParam("organizationId") String organizationId,
                                             @RequestParam(value = "createTime",required = false) String createTime,
                                             @RequestParam(value = "endTime",required = false) String  endTime) {
-        KnowledgeCompanyVo result = analysisCommonService.organizationKnowledge(type, organizationId,createTime,endTime,null);
+        KnowledgeCompanyVo result = analysisCommonService.organizationKnowledge(type, organizationId,createTime,endTime);
         return JsonResult.getSuccessResult(result);
     }
 
@@ -125,7 +125,7 @@ public class AnalysisCommonController {
         if (validResult.hasErrors()) {
             return jsonResult.setMessage("组织Id不能为空");
         }
-        KnowledgeCompanyVo result = analysisCommonService.personKnowledge(personVisitDto);
+        List<KnowledgeCompanyVo> result = analysisCommonService.personKnowledge(personVisitDto);
         return JsonResult.getSuccessResult(result);
     }
 

+ 4 - 2
src/main/java/com/redxun/knowledge/analysis/mapper/AnalysisCommonMapper.java

@@ -105,6 +105,8 @@ public interface AnalysisCommonMapper {
      * @return
      */
     List<KnowledgeDao> organizationVisit(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay,
-                                         @Param("organizationId") String organizationId,
-                                         @Param("personList") List<String> personId);
+                                         @Param("organizationId") String organizationId);
+
+    List<Integer> personKnowledgeValue(@Param("id") String id, @Param("firstDay") String createTime,
+                                       @Param("lastDay")String endTime,@Param("round") Integer round);
 }

+ 81 - 33
src/main/java/com/redxun/knowledge/analysis/service/AnalysisCommonServiceImpl.java

@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.redxun.common.base.entity.QueryData;
 import com.redxun.common.tool.StringUtils;
-import com.redxun.knowledge.analysis.entity.consts.PlatformConst;
 import com.redxun.knowledge.analysis.entity.dao.KnowledgeDao;
 import com.redxun.knowledge.analysis.entity.dto.PersonVisitDto;
 import com.redxun.knowledge.analysis.entity.vo.*;
@@ -15,6 +14,7 @@ import com.redxun.knowledge.utils.DateUtils;
 
 import com.redxun.knowledge.utils.PageListUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -292,30 +292,26 @@ public class AnalysisCommonServiceImpl {
      * @param organizationId
      * @return
      */
-    public KnowledgeCompanyVo organizationKnowledge(String type, String organizationId,String createTime,String endTime,List<String> personId) {
-        //存在人员,统计人员
-        if (!CollectionUtils.isEmpty(personId)){
-            organizationId = null;
-        }
+    public KnowledgeCompanyVo organizationKnowledge(String type, String organizationId, String createTime, String endTime) {
         //开始时间和结束时间都不为空,按照选中时间过滤,忽略type
-        if (!StringUtils.isEmpty(createTime) && !StringUtils.isEmpty(endTime)){
+        if (!StringUtils.isEmpty(createTime) && !StringUtils.isEmpty(endTime)) {
             type = null;
         }
         Calendar calendar = Calendar.getInstance();
         int year = calendar.get(Calendar.YEAR);
         List<KnowledgeDao> count = new ArrayList<>();
         if (("total").equals(type)) {
-            count = analysisCommonMapper.organizationVisit(null, null, organizationId,personId);
+            count = analysisCommonMapper.organizationVisit(null, null, organizationId);
         } else if ("year".equals(type)) {
             count = analysisCommonMapper.organizationVisit(DateUtils.format(DateUtils.getFirstOfYear(year)),
-                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId,personId);
+                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId);
         } else if ("month".equals(type)) {
             int month = calendar.get(Calendar.MONTH);
             String firstOfMonth = DateUtils.getFirstOfMonth(year, month + 1, 15);
             String lastOfMonth = DateUtils.getLastOfMonth(year, month + 1, 15);
-            count = analysisCommonMapper.organizationVisit(firstOfMonth, lastOfMonth, organizationId,personId);
+            count = analysisCommonMapper.organizationVisit(firstOfMonth, lastOfMonth, organizationId);
         } else {
-            count = analysisCommonMapper.organizationVisit(createTime, endTime, organizationId,personId);
+            count = analysisCommonMapper.organizationVisit(createTime, endTime, organizationId);
         }
 
         KnowledgeCompanyVo knowledgeCompanyVo = new KnowledgeCompanyVo();
@@ -328,25 +324,21 @@ public class AnalysisCommonServiceImpl {
             }
         }));
 
-        //人员是空,查部门
-        if (CollectionUtils.isEmpty(personId)) {
-            String deptPath = pvLogMapper.findAllDeptIdByDeptId(organizationId);
-            if (StringUtils.isNotEmpty(deptPath)) {
-                deptPath = deptPath.substring(deptPath.indexOf(".") + 1);
-                String[] split = deptPath.split("\\.");
-                if (split.length > 6) {
-                    String first = Arrays.stream(split).limit(3).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
-                    String end = Arrays.stream(split).skip(split.length - 3).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
-                    knowledgeCompanyVo.setOrganization(first + ">...>" + end);
-                } else {
-                    String organization = Arrays.stream(split).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
-                    knowledgeCompanyVo.setOrganization(organization);
-                }
+
+        String deptPath = pvLogMapper.findAllDeptIdByDeptId(organizationId);
+        if (StringUtils.isNotEmpty(deptPath)) {
+            deptPath = deptPath.substring(deptPath.indexOf(".") + 1);
+            String[] split = deptPath.split("\\.");
+            if (split.length > 6) {
+                String first = Arrays.stream(split).limit(3).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
+                String end = Arrays.stream(split).skip(split.length - 3).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
+                knowledgeCompanyVo.setOrganization(first + ">...>" + end);
+            } else {
+                String organization = Arrays.stream(split).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
+                knowledgeCompanyVo.setOrganization(organization);
             }
-        }else {
-            String fullName = personId.parallelStream().map(e -> userService.queryOsUserDto(e).getFullName()).collect(Collectors.joining(","));
-            knowledgeCompanyVo.setOrganization(fullName);
         }
+
         if (knowledgeCompanyVo.getArchive() == null) {
             knowledgeCompanyVo.setArchive(0);
         }
@@ -362,10 +354,66 @@ public class AnalysisCommonServiceImpl {
      * @param personVisitDto
      * @return
      */
-    public KnowledgeCompanyVo personKnowledge(PersonVisitDto personVisitDto) {
-        //如果组织id不为空,人员id为空情况下,显示组织访问量
-        KnowledgeCompanyVo knowledgeCompanyVo = this.organizationKnowledge(personVisitDto.getType(), personVisitDto.getOrganizationId(),
-                personVisitDto.getCreateTime(), personVisitDto.getEndTime(), personVisitDto.getPersonId());
-        return knowledgeCompanyVo;
+    public List<KnowledgeCompanyVo> personKnowledge(PersonVisitDto personVisitDto) {
+        List<KnowledgeCompanyVo> knowledgeCompanyVoList = new ArrayList<>();
+        //开始时间和结束时间都不为空,按照选中时间过滤,忽略type
+        if (!StringUtils.isEmpty(personVisitDto.getCreateTime()) && !StringUtils.isEmpty(personVisitDto.getEndTime())){
+            personVisitDto.setType(null);
+        }
+        //查询人员
+        if (!CollectionUtils.isEmpty(personVisitDto.getPersonId())){
+            personVisitDto.setOrganizationId(null);
+            knowledgeCompanyVoList = personKnowledgeValue(personVisitDto.getPersonId(),personVisitDto.getType(),personVisitDto.getCreateTime(),personVisitDto.getEndTime(),1);
+        } else {
+            //查询部门
+            String[] split = personVisitDto.getOrganizationId().split(",");
+            List<String> organizationIdList = Arrays.asList(split);
+            knowledgeCompanyVoList = personKnowledgeValue(organizationIdList,personVisitDto.getType(),personVisitDto.getCreateTime(),personVisitDto.getEndTime(),2);
+        }
+        return knowledgeCompanyVoList;
+    }
+
+    /**
+     * 人员创建知识数量赋值
+     * @param list
+     * @return
+     */
+    private List<KnowledgeCompanyVo> personKnowledgeValue(List<String> list,String type,String createTime,String endTime,Integer round){
+
+        List<KnowledgeCompanyVo> result = list.parallelStream().map(e -> {
+            //一级分类下知识数量(包含审核中的、驳回的)
+            List<Integer> count = new ArrayList<>();
+            //获取当前年
+            Calendar calendar = Calendar.getInstance();
+            int year = calendar.get(Calendar.YEAR);
+            KnowledgeCompanyVo knowledgeCategoryVo = new KnowledgeCompanyVo();
+            //查询知识分类下创建的知识数量(纬度:年 最近1个月 全部)
+            if (type.equals("total")) {
+                count = analysisCommonMapper.personKnowledgeValue(e, null, null,round);
+            } else if (type.equals("year")) {
+                count = analysisCommonMapper.personKnowledgeValue(e, DateUtils.format(DateUtils.getFirstOfYear(year)),
+                        DateUtils.format(DateUtils.getLastOfYear(year)),round);
+            } else if (type.equals("month")) {
+                int month = calendar.get(Calendar.MONTH);
+                String firstOfMonth = DateUtils.getFirstOfMonth(year, month + 1, 15);
+                String lastOfMonth = DateUtils.getLastOfMonth(year, month + 1, 15);
+                count = analysisCommonMapper.personKnowledgeValue(e, firstOfMonth, lastOfMonth,round);
+            } else {
+                count = analysisCommonMapper.personKnowledgeValue(e,createTime, endTime, round);
+            }
+            long archive = count.stream().filter(typeKnowledge -> typeKnowledge == 1).count();
+            long wiki = count.stream().filter(typeKnowledge -> typeKnowledge == 2).count();
+            knowledgeCategoryVo.setArchive((int) archive);
+            knowledgeCategoryVo.setWiki((int) wiki);
+            knowledgeCategoryVo.setTotal(knowledgeCategoryVo.getArchive() + knowledgeCategoryVo.getWiki());
+            if (round == 1){
+                knowledgeCategoryVo.setOrganization(userService.queryOsUserDto(e).getFullName());
+            } else {
+                knowledgeCategoryVo.setOrganization(userService.queryOsUserDto(e).getDeptName());
+            }
+            return knowledgeCategoryVo;
+        }).collect(Collectors.toList());
+        return result;
+
     }
 }

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

@@ -205,7 +205,7 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
         KnowledgeApprove knowledgeApproveNext = knowledgeApproveMapper.
                 selectOne(new QueryWrapper<KnowledgeApprove>().eq("SORT", knowledgeApprove.getSort() + 1).eq("KNOWLEDGER_ID", knowledgeApprove.getKnowledgerId()));
         // 如果审核节点不是终审节点且知识未通过,修改知识状态为节点驳回 2
-        if (knowledgeApprove.getIsFinal() == 0 && entity.getResult() == 0) {
+        if (knowledgeApprove.getIsFinal() != 1 && entity.getResult() == 0) {
             Knowledge knowledge = new Knowledge();
             knowledge.setPkId(knowledgeApprove.getKnowledgerId());
             knowledge.setApprovalStatus(2);

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

@@ -104,6 +104,9 @@
             and IS_DEL = 0
         </where>
         ORDER BY
+        <if test="@rx.Ognl@isNotEmpty(params.isNotAudit)">
+            UPDATE_TIME_ DESC,
+        </if>
         <if test="@rx.Ognl@isNotEmpty(w.orderBySql)">
             ${w.orderBySql},
         </if>

+ 23 - 6
src/main/resources/mapper/knowledge/analysis/AnalysisCommonMapper.xml

@@ -98,12 +98,6 @@
             )
             )
             </if>
-            <if test="personList != null and personList.size > 0">
-                CREATE_BY_ IN
-                <foreach collection="personList" item="id" open="(" close=")" separator=",">
-                    #{id}
-                </foreach>
-            </if>
             <if test="firstDay != null and lastDay != null">
                 and TO_CHAR(CREATE_TIME_,'yyyy-mm-dd') &gt;= #{firstDay}
                 and TO_CHAR(CREATE_TIME_,'yyyy-mm-dd') &lt;= #{lastDay}
@@ -113,6 +107,29 @@
         group by TYPE
     </select>
 
+    <select id="personKnowledgeValue" resultType="int">
+        select type
+        from KM_KNOWLEDGE
+        <where>
+            <if test="round == 1">
+                CREATE_BY_ = #{id}
+            </if>
+            <if test="round == 2">
+                CREATE_DEP_ID_ in (
+                select GROUP_ID_ from LEARNING_USER_DEV.OS_GROUP where GROUP_ID_ in(
+                SELECT GROUP_ID_ FROM LEARNING_USER_DEV.OS_GROUP c
+                START WITH c.GROUP_ID_ = #{id} CONNECT BY PRIOR c.GROUP_ID_ = c.PARENT_ID_
+                )
+                )
+            </if>
+            <if test="firstDay != null and lastDay != null">
+                and TO_CHAR(CREATE_TIME_,'yyyy-mm-dd') &gt;= #{firstDay}
+                and TO_CHAR(CREATE_TIME_,'yyyy-mm-dd') &lt;= #{lastDay}
+            </if>
+            and IS_DRAFT = 1
+        </where>
+    </select>
+
 
 </mapper>