Просмотр исходного кода

作者:张哲
时间:2023/05/24
类型:需求变更
描述:里程碑(3) 后台人员统计

zizg 1 год назад
Родитель
Сommit
3bb5e0a587
21 измененных файлов с 486 добавлено и 143 удалено
  1. 86 11
      src/main/java/com/redxun/knowledge/analysis/controller/AnalysisCommonController.java
  2. 41 0
      src/main/java/com/redxun/knowledge/analysis/entity/dto/PersonVisitDto.java
  3. 3 1
      src/main/java/com/redxun/knowledge/analysis/mapper/AnalysisAlbumMapper.java
  4. 3 1
      src/main/java/com/redxun/knowledge/analysis/mapper/AnalysisCommonMapper.java
  5. 3 1
      src/main/java/com/redxun/knowledge/analysis/mapper/AnalysisMapMapper.java
  6. 3 1
      src/main/java/com/redxun/knowledge/analysis/mapper/AnalysisSearchMapper.java
  7. 2 1
      src/main/java/com/redxun/knowledge/analysis/mapper/AnalysisSynthesizeMapper.java
  8. 44 15
      src/main/java/com/redxun/knowledge/analysis/service/AnalysisAlbumServiceImpl.java
  9. 45 15
      src/main/java/com/redxun/knowledge/analysis/service/AnalysisCommonServiceImpl.java
  10. 44 15
      src/main/java/com/redxun/knowledge/analysis/service/AnalysisMapServiceImpl.java
  11. 46 14
      src/main/java/com/redxun/knowledge/analysis/service/AnalysisSearchServiceImpl.java
  12. 46 16
      src/main/java/com/redxun/knowledge/analysis/service/AnalysisSynthesizeServiceImpl.java
  13. 7 0
      src/main/java/com/redxun/knowledge/controller/KnowledgeApprovalNodeController.java
  14. 12 0
      src/main/java/com/redxun/knowledge/mapper/KnowledgeApprovalNodeCategoryMapper.java
  15. 11 0
      src/main/java/com/redxun/knowledge/service/KnowledgeApprovalNodeServiceImpl.java
  16. 10 0
      src/main/resources/mapper/knowledge/KnowledgeApprovalNodeCategoryMapper.xml
  17. 18 1
      src/main/resources/mapper/knowledge/analysis/AnalysisAlbumMapper.xml
  18. 10 0
      src/main/resources/mapper/knowledge/analysis/AnalysisCommonMapper.xml
  19. 18 1
      src/main/resources/mapper/knowledge/analysis/AnalysisMapMapper.xml
  20. 8 0
      src/main/resources/mapper/knowledge/analysis/AnalysisSearchMapper.xml
  21. 26 50
      src/main/resources/mapper/knowledge/analysis/AnalysisSynthesizeMapper.xml

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

@@ -7,6 +7,7 @@ import com.redxun.common.base.entity.JsonPageResult;
 import com.redxun.common.base.entity.JsonResult;
 import com.redxun.common.base.entity.QueryData;
 
+import com.redxun.knowledge.analysis.entity.dto.PersonVisitDto;
 import com.redxun.knowledge.analysis.entity.page.MyJsonResult;
 import com.redxun.knowledge.analysis.entity.vo.*;
 import com.redxun.knowledge.analysis.service.*;
@@ -14,8 +15,12 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -104,8 +109,23 @@ public class AnalysisCommonController {
 
     @ApiOperation("组织创建知识数量(新)")
     @GetMapping("organizationKnowledge")
-    public JsonResult organizationKnowledge(@RequestParam("type") String type, @RequestParam("organizationId") String organizationId) {
-        KnowledgeCompanyVo result = analysisCommonService.organizationKnowledge(type, organizationId);
+    public JsonResult organizationKnowledge(@RequestParam(value = "type",required = false) String type,
+                                            @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);
+        return JsonResult.getSuccessResult(result);
+    }
+
+
+    @ApiOperation("人员创建知识数量")
+    @PostMapping("personKnowledge")
+    public JsonResult personKnowledge(@RequestBody @Valid PersonVisitDto personVisitDto,BindingResult validResult) {
+        JsonResult jsonResult = JsonResult.getSuccessResult("");
+        if (validResult.hasErrors()) {
+            return jsonResult.setMessage("组织Id不能为空");
+        }
+        KnowledgeCompanyVo result = analysisCommonService.personKnowledge(personVisitDto);
         return JsonResult.getSuccessResult(result);
     }
 
@@ -143,9 +163,22 @@ public class AnalysisCommonController {
 
     @ApiOperation("组织创建和访问专辑数量(新)")
     @GetMapping("organizationAlbum")
-    public JsonResult organizationAlbum(@RequestParam("type") String type,
-                                        @RequestParam("organizationId") String organizationId) {
-        AlbumCompanyVo result = analysisAlbumService.organizationAlbum(type, organizationId);
+    public JsonResult organizationAlbum(@RequestParam(value = "type",required = false) String type,
+                                        @RequestParam("organizationId") String organizationId,
+                                        @RequestParam(value = "createTime",required = false) String createTime,
+                                        @RequestParam(value = "endTime",required = false) String  endTime) {
+        AlbumCompanyVo result = analysisAlbumService.organizationAlbum(type, organizationId,createTime,endTime,null);
+        return JsonResult.getSuccessResult(result);
+    }
+
+    @ApiOperation("人员创建和访问专辑数量")
+    @PostMapping("personAlbum")
+    public JsonResult personAlbum(@RequestBody @Valid PersonVisitDto personVisitDto,BindingResult validResult) {
+        JsonResult jsonResult = JsonResult.getSuccessResult("");
+        if (validResult.hasErrors()) {
+            return jsonResult.setMessage("组织Id不能为空");
+        }
+        AlbumCompanyVo result = analysisAlbumService.personAlbum(personVisitDto);
         return JsonResult.getSuccessResult(result);
     }
 
@@ -181,8 +214,22 @@ public class AnalysisCommonController {
 
     @ApiOperation("组织创建和访问地图数量(新)")
     @GetMapping("organizationMap")
-    public JsonResult organizationMap(@RequestParam("type") String type, @RequestParam("organizationId") String organizationId) {
-        MapCompanyVo result = analysisMapService.organizationMap(type, organizationId);
+    public JsonResult organizationMap(@RequestParam(value = "type",required = false) String type,
+                                      @RequestParam("organizationId") String organizationId,
+                                      @RequestParam(value = "createTime",required = false) String createTime,
+                                      @RequestParam(value = "endTime",required = false) String  endTime) {
+        MapCompanyVo result = analysisMapService.organizationMap(type, organizationId,createTime,endTime,null);
+        return JsonResult.getSuccessResult(result);
+    }
+
+    @ApiOperation("人员创建和访问地图数量")
+    @PostMapping("personMap")
+    public JsonResult personMap(@RequestBody @Valid PersonVisitDto personVisitDto,BindingResult validResult) {
+        JsonResult jsonResult = JsonResult.getSuccessResult("");
+        if (validResult.hasErrors()) {
+            return jsonResult.setMessage("组织Id不能为空");
+        }
+        MapCompanyVo result = analysisMapService.personMap(personVisitDto);
         return JsonResult.getSuccessResult(result);
     }
 
@@ -205,8 +252,22 @@ public class AnalysisCommonController {
 
     @ApiOperation("组织访问量(新)")
     @GetMapping("organizationSearch")
-    public JsonResult organizationSearch(@RequestParam("type") String type, @RequestParam("organizationId") String organizationId) {
-        OrganizationSearchVo result = analysisSearchService.organizationSearch(type, organizationId);
+    public JsonResult organizationSearch(@RequestParam(value = "type",required = false) String type,
+                                         @RequestParam("organizationId") String organizationId,
+                                         @RequestParam(value = "createTime",required = false) String createTime,
+                                         @RequestParam(value = "endTime",required = false) String  endTime) {
+        OrganizationSearchVo result = analysisSearchService.organizationSearch(type, organizationId,createTime,endTime,null);
+        return JsonResult.getSuccessResult(result);
+    }
+
+    @ApiOperation("人员访问量")
+    @PostMapping("personSearch")
+    public JsonResult personSearch(@RequestBody @Valid PersonVisitDto personVisitDto,BindingResult validResult) {
+        JsonResult jsonResult = JsonResult.getSuccessResult("");
+        if (validResult.hasErrors()) {
+            return jsonResult.setMessage("组织Id不能为空");
+        }
+        OrganizationSearchVo result = analysisSearchService.personSearch(personVisitDto);
         return JsonResult.getSuccessResult(result);
     }
 
@@ -243,8 +304,22 @@ public class AnalysisCommonController {
 
     @ApiOperation("组织访问量(新)")
     @GetMapping("organizationVisit")
-    public JsonResult organizationVisit(@RequestParam("type") String type, @RequestParam("organizationId") String organizationId) {
-        SynthesizeCompanyVo result = analysisSynthesizeService.organizationVisit(type, organizationId);
+    public JsonResult organizationVisit(@RequestParam(value = "type",required = false) String type,
+                                        @RequestParam("organizationId") String organizationId,
+                                        @RequestParam(value = "createTime",required = false) String createTime,
+                                        @RequestParam(value = "endTime",required = false) String  endTime) {
+        SynthesizeCompanyVo result = analysisSynthesizeService.organizationVisit(type, organizationId,createTime,endTime,null);
         return JsonResult.getSuccessResult(result);
     }
+
+    @ApiOperation("人员访问量")
+    @PostMapping("personVisit")
+    public JsonResult personVisit(@RequestBody @Valid PersonVisitDto personVisitDto, BindingResult validResult) {
+        JsonResult jsonResult = JsonResult.getSuccessResult("");
+        if (validResult.hasErrors()) {
+            return jsonResult.setMessage("组织Id不能为空");
+        }
+        SynthesizeCompanyVo result = analysisSynthesizeService.personVisit(personVisitDto);
+        return jsonResult.setData(result);
+    }
 }

+ 41 - 0
src/main/java/com/redxun/knowledge/analysis/entity/dto/PersonVisitDto.java

@@ -0,0 +1,41 @@
+package com.redxun.knowledge.analysis.entity.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 文件名: PersonVisitDto
+ * 作者: zizg
+ * 时间: 2023/5/23
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+@ApiModel("人员访问量")
+@Data
+public class PersonVisitDto implements Serializable {
+
+    @ApiModelProperty("维度 月month 年year 全部total")
+    private String type;
+
+    @NotEmpty(message = "组织Id不能为空")
+    @ApiModelProperty("组织id,只支持选择一个组织")
+    private String organizationId;
+
+    @ApiModelProperty("人员id(数组)")
+    private List<String> personId;
+
+    @ApiModelProperty("开始时间")
+    private String createTime;
+
+    @ApiModelProperty("结束时间")
+    private String endTime;
+
+
+}

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

@@ -75,7 +75,9 @@ public interface AnalysisAlbumMapper {
      * @param organizationId
      * @return
      */
-    AlbumCompanyVo organizationAlbum(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay, @Param("organizationId") String organizationId);
+    AlbumCompanyVo organizationAlbum(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay,
+                                     @Param("organizationId") String organizationId,
+                                     @Param("personList") List<String> personId);
 
     /**
      * 专辑创建总量(按月统计)

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

@@ -104,5 +104,7 @@ public interface AnalysisCommonMapper {
      * @param lastDay
      * @return
      */
-    List<KnowledgeDao> organizationVisit(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay, @Param("organizationId") String organizationId);
+    List<KnowledgeDao> organizationVisit(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay,
+                                         @Param("organizationId") String organizationId,
+                                         @Param("personList") List<String> personId);
 }

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

@@ -69,7 +69,9 @@ public interface AnalysisMapMapper {
      * @param organizationId
      * @return
      */
-    MapCompanyVo organizationMap(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay, @Param("organizationId") String organizationId);
+    MapCompanyVo organizationMap(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay,
+                                 @Param("organizationId") String organizationId,
+                                 @Param("personList") List<String> personId);
 
     /**
      * 地图创建总量(根据月)

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

@@ -49,5 +49,7 @@ public interface AnalysisSearchMapper {
      * @param organizationId
      * @return
      */
-    List<Map<String, Object>> organizationSearch(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay, @Param("organizationId") String organizationId);
+    List<Map<String, Object>> organizationSearch(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay,
+                                                 @Param("organizationId") String organizationId,
+                                                 @Param("personList") List<String> personId);
 }

+ 2 - 1
src/main/java/com/redxun/knowledge/analysis/mapper/AnalysisSynthesizeMapper.java

@@ -1,5 +1,6 @@
 package com.redxun.knowledge.analysis.mapper;
 
+import com.redxun.knowledge.analysis.entity.dto.PersonVisitDto;
 import com.redxun.knowledge.analysis.entity.vo.AlbumDetailVisitsVo;
 import com.redxun.knowledge.analysis.entity.vo.CreateUserViewLabel;
 import com.redxun.knowledge.analysis.entity.vo.SynthesizeCompanyVo;
@@ -66,7 +67,7 @@ public interface AnalysisSynthesizeMapper {
      * @param organizationId
      * @return
      */
-    SynthesizeCompanyVo organizationVisit(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay, @Param("organizationId") String organizationId);
+    SynthesizeCompanyVo organizationVisit(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay, @Param("organizationId") String organizationId,@Param("personList") List<String> personId);
 
     /**
      * 用户访问总量(按月查询)

+ 44 - 15
src/main/java/com/redxun/knowledge/analysis/service/AnalysisAlbumServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.redxun.common.base.entity.QueryData;
 import com.redxun.common.tool.StringUtils;
 import com.redxun.knowledge.album.mapper.AlbumCategoryMapper;
+import com.redxun.knowledge.analysis.entity.dto.PersonVisitDto;
 import com.redxun.knowledge.analysis.entity.vo.*;
 import com.redxun.knowledge.analysis.mapper.AnalysisAlbumMapper;
 import com.redxun.knowledge.analysis.mapper.PvLogMapper;
@@ -14,6 +15,7 @@ import com.redxun.knowledge.utils.PageListUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -217,34 +219,61 @@ public class AnalysisAlbumServiceImpl {
      * @param organizationId
      * @return
      */
-    public AlbumCompanyVo organizationAlbum(String type, String organizationId) {
+    public AlbumCompanyVo organizationAlbum(String type, String organizationId,String createTime,String endTime,List<String> personId) {
+        //存在人员,统计人员
+        if (!CollectionUtils.isEmpty(personId)){
+            organizationId = null;
+        }
+        //开始时间和结束时间都不为空,按照选中时间过滤,忽略type
+        if (!StringUtils.isEmpty(createTime) && !StringUtils.isEmpty(endTime)){
+            type = null;
+        }
         Calendar calendar = Calendar.getInstance();
         int year = calendar.get(Calendar.YEAR);
         AlbumCompanyVo result = new AlbumCompanyVo();
         if ("total".equals(type)) {
-            result = analysisAlbumMapper.organizationAlbum(null, null, organizationId);
+            result = analysisAlbumMapper.organizationAlbum(null, null, organizationId,personId);
         } else if ("year".equals(type)) {
             result = analysisAlbumMapper.organizationAlbum(DateUtils.format(DateUtils.getFirstOfYear(year)),
-                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId);
+                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId,personId);
         } 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);
-            result = analysisAlbumMapper.organizationAlbum(firstOfMonth, lastOfMonth, organizationId);
+            result = analysisAlbumMapper.organizationAlbum(firstOfMonth, lastOfMonth, organizationId,personId);
+        } else {
+            result = analysisAlbumMapper.organizationAlbum(createTime,endTime, organizationId,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(">"));
-                result.setOrganization(first + ">...>" + end);
-            } else {
-                String organization = Arrays.stream(split).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
-                result.setOrganization(organization);
+        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(">"));
+                    result.setOrganization(first + ">...>" + end);
+                } else {
+                    String organization = Arrays.stream(split).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
+                    result.setOrganization(organization);
+                }
             }
+        } else {
+            String fullName = personId.parallelStream().map(e -> userService.queryOsUserDto(e).getFullName()).collect(Collectors.joining(","));
+            result.setOrganization(fullName);
         }
         return result;
     }
+
+    /**
+     * 人员创建和访问专辑数量
+     * @param personVisitDto
+     * @return
+     */
+    public AlbumCompanyVo personAlbum(PersonVisitDto personVisitDto) {
+        //如果组织id不为空,人员id为空情况下,显示组织访问量
+        AlbumCompanyVo albumCompanyVo = this.organizationAlbum(personVisitDto.getType(), personVisitDto.getOrganizationId(),
+                personVisitDto.getCreateTime(), personVisitDto.getEndTime(), personVisitDto.getPersonId());
+        return albumCompanyVo;
+    }
 }

+ 45 - 15
src/main/java/com/redxun/knowledge/analysis/service/AnalysisCommonServiceImpl.java

@@ -6,6 +6,7 @@ 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.*;
 import com.redxun.knowledge.analysis.mapper.AnalysisCommonMapper;
 import com.redxun.knowledge.analysis.mapper.PvLogMapper;
@@ -16,6 +17,7 @@ import com.redxun.knowledge.utils.PageListUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -290,20 +292,30 @@ public class AnalysisCommonServiceImpl {
      * @param organizationId
      * @return
      */
-    public KnowledgeCompanyVo organizationKnowledge(String type, String organizationId) {
+    public KnowledgeCompanyVo organizationKnowledge(String type, String organizationId,String createTime,String endTime,List<String> personId) {
+        //存在人员,统计人员
+        if (!CollectionUtils.isEmpty(personId)){
+            organizationId = null;
+        }
+        //开始时间和结束时间都不为空,按照选中时间过滤,忽略type
+        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);
+            count = analysisCommonMapper.organizationVisit(null, null, organizationId,personId);
         } else if ("year".equals(type)) {
             count = analysisCommonMapper.organizationVisit(DateUtils.format(DateUtils.getFirstOfYear(year)),
-                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId);
+                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId,personId);
         } 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);
+            count = analysisCommonMapper.organizationVisit(firstOfMonth, lastOfMonth, organizationId,personId);
+        } else {
+            count = analysisCommonMapper.organizationVisit(createTime, endTime, organizationId,personId);
         }
 
         KnowledgeCompanyVo knowledgeCompanyVo = new KnowledgeCompanyVo();
@@ -316,18 +328,24 @@ public class AnalysisCommonServiceImpl {
             }
         }));
 
-        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);
+        //人员是空,查部门
+        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);
+                }
             }
+        }else {
+            String fullName = personId.parallelStream().map(e -> userService.queryOsUserDto(e).getFullName()).collect(Collectors.joining(","));
+            knowledgeCompanyVo.setOrganization(fullName);
         }
         if (knowledgeCompanyVo.getArchive() == null) {
             knowledgeCompanyVo.setArchive(0);
@@ -338,4 +356,16 @@ public class AnalysisCommonServiceImpl {
         knowledgeCompanyVo.setTotal(knowledgeCompanyVo.getArchive() + knowledgeCompanyVo.getWiki());
         return knowledgeCompanyVo;
     }
+
+    /**
+     * 人员创建知识数量
+     * @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;
+    }
 }

+ 44 - 15
src/main/java/com/redxun/knowledge/analysis/service/AnalysisMapServiceImpl.java

@@ -3,6 +3,7 @@ package com.redxun.knowledge.analysis.service;
 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.dto.PersonVisitDto;
 import com.redxun.knowledge.analysis.entity.vo.*;
 import com.redxun.knowledge.analysis.mapper.AnalysisMapMapper;
 import com.redxun.knowledge.analysis.mapper.PvLogMapper;
@@ -14,6 +15,7 @@ import com.redxun.knowledge.utils.PageListUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -181,34 +183,61 @@ public class AnalysisMapServiceImpl {
      * @param organizationId
      * @return
      */
-    public MapCompanyVo organizationMap(String type, String organizationId) {
+    public MapCompanyVo organizationMap(String type, String organizationId,String createTime,String endTime,List<String> personId) {
+        //存在人员,统计人员
+        if (!CollectionUtils.isEmpty(personId)){
+            organizationId = null;
+        }
+        //开始时间和结束时间都不为空,按照选中时间过滤,忽略type
+        if (!StringUtils.isEmpty(createTime) && !StringUtils.isEmpty(endTime)){
+            type = null;
+        }
         Calendar calendar = Calendar.getInstance();
         int year = calendar.get(Calendar.YEAR);
         MapCompanyVo result = new MapCompanyVo();
         if ("total".equals(type)) {
-            result = analysisMapMapper.organizationMap(null, null, organizationId);
+            result = analysisMapMapper.organizationMap(null, null, organizationId,personId);
         } else if ("year".equals(type)) {
             result = analysisMapMapper.organizationMap(DateUtils.format(DateUtils.getFirstOfYear(year)),
-                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId);
+                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId,personId);
         } 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);
-            result = analysisMapMapper.organizationMap(firstOfMonth, lastOfMonth, organizationId);
+            result = analysisMapMapper.organizationMap(firstOfMonth, lastOfMonth, organizationId,personId);
+        } else {
+            result = analysisMapMapper.organizationMap(createTime, endTime, organizationId,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(">"));
-                result.setOrganization(first + ">...>" + end);
-            } else {
-                String organization = Arrays.stream(split).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
-                result.setOrganization(organization);
+        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(">"));
+                    result.setOrganization(first + ">...>" + end);
+                } else {
+                    String organization = Arrays.stream(split).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
+                    result.setOrganization(organization);
+                }
             }
+        } else {
+            String fullName = personId.parallelStream().map(e -> userService.queryOsUserDto(e).getFullName()).collect(Collectors.joining(","));
+            result.setOrganization(fullName);
         }
         return result;
     }
+
+    /**
+     * 人员创建和访问地图数量
+     * @param personVisitDto
+     * @return
+     */
+    public MapCompanyVo personMap(PersonVisitDto personVisitDto) {
+        //如果组织id不为空,人员id为空情况下,显示组织访问量
+        MapCompanyVo mapCompanyVo = this.organizationMap(personVisitDto.getType(), personVisitDto.getOrganizationId(),
+                personVisitDto.getCreateTime(), personVisitDto.getEndTime(), personVisitDto.getPersonId());
+        return mapCompanyVo;
+    }
 }

+ 46 - 14
src/main/java/com/redxun/knowledge/analysis/service/AnalysisSearchServiceImpl.java

@@ -4,7 +4,9 @@ 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.ComanyColumnsConst;
+import com.redxun.knowledge.analysis.entity.dto.PersonVisitDto;
 import com.redxun.knowledge.analysis.entity.enums.SystemDetailVisitsEnum;
+import com.redxun.knowledge.analysis.entity.vo.MapCompanyVo;
 import com.redxun.knowledge.analysis.entity.vo.OrganizationSearchVo;
 import com.redxun.knowledge.analysis.entity.vo.SystemCompanyVo;
 import com.redxun.knowledge.analysis.entity.vo.SystemDetailVisitsVo;
@@ -16,6 +18,7 @@ import com.redxun.knowledge.utils.PageListUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -114,34 +117,50 @@ public class AnalysisSearchServiceImpl {
      * @param organizationId
      * @return
      */
-    public OrganizationSearchVo organizationSearch(String type, String organizationId) {
+    public OrganizationSearchVo organizationSearch(String type, String organizationId,String createTime,String endTime,List<String> personId) {
+        //存在人员,统计人员
+        if (!CollectionUtils.isEmpty(personId)){
+            organizationId = null;
+        }
+        //开始时间和结束时间都不为空,按照选中时间过滤,忽略type
+        if (!StringUtils.isEmpty(createTime) && !StringUtils.isEmpty(endTime)){
+            type = null;
+        }
+
         Calendar calendar = Calendar.getInstance();
         int year = calendar.get(Calendar.YEAR);
         OrganizationSearchVo organizationSearchVo = new OrganizationSearchVo();
         List<Map<String, Object>> item = new ArrayList<>();
         if (("total").equals(type)) {
-            item = analysisSearchMapper.organizationSearch(null, null, organizationId);
+            item = analysisSearchMapper.organizationSearch(null, null, organizationId,personId);
         } else if (("year").equals(type)) {
             item = analysisSearchMapper.organizationSearch(DateUtils.format(DateUtils.getFirstOfYear(year)),
-                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId);
+                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId,personId);
         } 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);
-            item = analysisSearchMapper.organizationSearch(firstOfMonth, lastOfMonth, organizationId);
+            item = analysisSearchMapper.organizationSearch(firstOfMonth, lastOfMonth, organizationId,personId);
+        } else {
+            item = analysisSearchMapper.organizationSearch(createTime,endTime, organizationId,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(">"));
-                organizationSearchVo.setOrganization(first + ">...>" + end);
-            } else {
-                String organization = Arrays.stream(split).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
-                organizationSearchVo.setOrganization(organization);
+        if (CollectionUtils.isEmpty(personId)) {
+            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(">"));
+                    organizationSearchVo.setOrganization(first + ">...>" + end);
+                } else {
+                    String organization = Arrays.stream(split).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
+                    organizationSearchVo.setOrganization(organization);
+                }
             }
+        } else {
+            String fullName = personId.parallelStream().map(e -> userService.queryOsUserDto(e).getFullName()).collect(Collectors.joining(","));
+            organizationSearchVo.setOrganization(fullName);
         }
         Optional<BigDecimal> total = item.stream().map(e -> (BigDecimal) e.get("value")).reduce(BigDecimal::add);
         Map<String, Object> map = new HashMap<>();
@@ -151,4 +170,17 @@ public class AnalysisSearchServiceImpl {
         organizationSearchVo.setItem(item);
         return organizationSearchVo;
     }
+
+    /**
+     * 人员访问量
+     * @param personVisitDto
+     * @return
+     */
+    public OrganizationSearchVo personSearch(PersonVisitDto personVisitDto) {
+        //如果组织id不为空,人员id为空情况下,显示组织访问量
+        OrganizationSearchVo organizationSearchVo = this.organizationSearch(personVisitDto.getType(), personVisitDto.getOrganizationId(),
+                personVisitDto.getCreateTime(), personVisitDto.getEndTime(), personVisitDto.getPersonId());
+        return organizationSearchVo;
+
+    }
 }

+ 46 - 16
src/main/java/com/redxun/knowledge/analysis/service/AnalysisSynthesizeServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.redxun.common.base.entity.QueryData;
 import com.redxun.common.tool.StringUtils;
 import com.redxun.feign.org.OsGroupMenuClient;
+import com.redxun.knowledge.analysis.entity.dto.PersonVisitDto;
 import com.redxun.knowledge.analysis.entity.vo.*;
 import com.redxun.knowledge.analysis.mapper.AnalysisSynthesizeMapper;
 import com.redxun.knowledge.analysis.mapper.PvLogMapper;
@@ -13,6 +14,7 @@ import com.redxun.knowledge.utils.PageListUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -204,34 +206,62 @@ public class AnalysisSynthesizeServiceImpl {
      * @param organizationId
      * @return
      */
-    public SynthesizeCompanyVo organizationVisit(String type, String organizationId) {
+    public SynthesizeCompanyVo organizationVisit(String type, String organizationId,String createTime,String endTime,List<String> personId) {
+        //存在人员,统计人员
+        if (!CollectionUtils.isEmpty(personId)){
+            organizationId = null;
+        }
+        //开始时间和结束时间都不为空,按照选中时间过滤,忽略type
+        if (!StringUtils.isEmpty(createTime) && !StringUtils.isEmpty(endTime)){
+            type = null;
+        }
         Calendar calendar = Calendar.getInstance();
         int year = calendar.get(Calendar.YEAR);
-        SynthesizeCompanyVo result = new SynthesizeCompanyVo();
+        SynthesizeCompanyVo result;
         if ("total".equals(type)) {
-            result = analysisSynthesizeMapper.organizationVisit(null, null, organizationId);
+            result = analysisSynthesizeMapper.organizationVisit(null, null, organizationId,personId);
         } else if ("year".equals(type)) {
             result = analysisSynthesizeMapper.organizationVisit(DateUtils.format(DateUtils.getFirstOfYear(year)),
-                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId);
+                    DateUtils.format(DateUtils.getLastOfYear(year)), organizationId,personId);
         } 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);
-            result = analysisSynthesizeMapper.organizationVisit(firstOfMonth, lastOfMonth, organizationId);
+            result = analysisSynthesizeMapper.organizationVisit(firstOfMonth, lastOfMonth, organizationId,personId);
+        } else {
+            result = analysisSynthesizeMapper.organizationVisit(createTime, endTime, organizationId,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(">"));
-                result.setOrganization(first + ">...>" + end);
-            } else {
-                String organization = Arrays.stream(split).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
-                result.setOrganization(organization);
+        //人员是空,查出来一定是部门信息
+        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(">"));
+                    result.setOrganization(first + ">...>" + end);
+                } else {
+                    String organization = Arrays.stream(split).map(e -> userService.findDeptByDeptId(e).getName()).collect(Collectors.joining(">"));
+                    result.setOrganization(organization);
+                }
             }
+        } else {
+            String fullName = personId.parallelStream().map(e -> userService.queryOsUserDto(e).getFullName()).collect(Collectors.joining(","));
+            result.setOrganization(fullName);
         }
         return result;
     }
+
+    /**
+     * 人员访问量
+     * @param personVisitDto
+     * @return
+     */
+    public SynthesizeCompanyVo personVisit(PersonVisitDto personVisitDto) {
+        //如果组织id不为空,人员id为空情况下,显示组织访问量
+        SynthesizeCompanyVo synthesizeCompanyVo  = this.organizationVisit(personVisitDto.getType(), personVisitDto.getOrganizationId(),
+                personVisitDto.getCreateTime(),personVisitDto.getEndTime(),personVisitDto.getPersonId());
+        return synthesizeCompanyVo;
+    }
 }

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

@@ -169,5 +169,12 @@ public class KnowledgeApprovalNodeController extends BaseController<KnowledgeApp
         knowledgeApprovalNodeService.delApprovalNode(pkId);
         return JsonResult.getSuccessResult("删除成功");
     }
+
+    @ApiOperation("查询选过的关联分类id集")
+    @GetMapping("findAllCategorySelected")
+    public JsonResult findAllCategorySelected(@RequestParam(value = "pkId",required = false) String pkId){
+        List<String> idList =  knowledgeApprovalNodeService.findAllCategorySelected(pkId);
+        return JsonResult.getSuccessResult(idList);
+    }
 }
 

+ 12 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeApprovalNodeCategoryMapper.java

@@ -3,6 +3,9 @@ package com.redxun.knowledge.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.redxun.knowledge.entity.dao.KnowledgeApprovalNodeCategory;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 文件名: KnowledgeApprovalNodeCategoryMapper
@@ -15,5 +18,14 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface KnowledgeApprovalNodeCategoryMapper extends BaseMapper<KnowledgeApprovalNodeCategory> {
+
     void deleteByFlowerId(String pkId);
+
+    /**
+     * 查询选过的关联分类id集
+     * @param pkId
+     * @return
+     */
+    List<String> findAllCategorySelected(@Param("pkId") String pkId);
+
 }

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

@@ -260,4 +260,15 @@ public class KnowledgeApprovalNodeServiceImpl extends SuperServiceImpl<Knowledge
         knowledgeApprovalNodeMapper.deleteByFlowerId(pkId);
         knowledgeApprovalNodeCategoryMapper.deleteByFlowerId(pkId);
     }
+
+    /**
+     * 查询选过的关联分类id集
+     * @param pkId
+     * @return
+     */
+    public List<String> findAllCategorySelected(String pkId) {
+        List<String> idList = knowledgeApprovalNodeCategoryMapper.findAllCategorySelected(pkId);
+        List<String> result = idList.stream().filter(e -> !("-2".equals(e))).collect(Collectors.toList());
+        return result;
+    }
 }

+ 10 - 0
src/main/resources/mapper/knowledge/KnowledgeApprovalNodeCategoryMapper.xml

@@ -27,6 +27,16 @@
         where FLOWER_ID = #{flowerId}
     </delete>
 
+    <select id="findAllCategorySelected" resultType="string">
+        select CATEGORY_ID from KM_KNOWLEDGE_APPROVAL_NODE_CATEGORY
+        <where>
+            <if test="pkId != null and pkId != ''">
+                FLOWER_ID != #{pkId}
+            </if>
+            AND IS_DEL = 0
+        </where>
+    </select>
+
 </mapper>
 
 

+ 18 - 1
src/main/resources/mapper/knowledge/analysis/AnalysisAlbumMapper.xml

@@ -124,6 +124,7 @@
         from (select count(*) pv
         from KM_PV_LOG
         <where>
+            <if test="organizationId != null">
             COMPANY_ID in (
             select GROUP_ID_
             from LEARNING_USER_DEV.OS_GROUP
@@ -134,6 +135,13 @@
             CONNECT BY PRIOR c.GROUP_ID_ = c.PARENT_ID_
             )
             )
+            </if>
+            <if test="personList != null and personList.size > 0">
+                USER_ID IN
+                <foreach collection="personList" item="id" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+            </if>
             and MODULE = '知识专辑'
             <if test="firstDay != null and lastDay != null">
                 and TO_CHAR(CREATE_TIME_,'yyyy-mm-dd') &gt;= #{firstDay}
@@ -142,9 +150,18 @@
         </where>
         ),
         (select count(*) album from KM_ALBUM_INFO album
-        <where>CREATE_DEP_ID_
+        <where>
+            <if test="organizationId != null">
+            CREATE_DEP_ID_
             in ( SELECT GROUP_ID_ FROM LEARNING_USER_DEV.OS_GROUP c START WITH c.GROUP_ID_ = #{organizationId} CONNECT
             BY PRIOR c.GROUP_ID_ = c.PARENT_ID_ )
+            </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}

+ 10 - 0
src/main/resources/mapper/knowledge/analysis/AnalysisCommonMapper.xml

@@ -57,6 +57,7 @@
                 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>
 
@@ -89,16 +90,25 @@
         select count(*) as count,TYPE as type
         from KM_KNOWLEDGE
         <where>
+            <if test="organizationId != null">
             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_ = #{organizationId} CONNECT BY PRIOR c.GROUP_ID_ = c.PARENT_ID_
             )
             )
+            </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}
             </if>
+            and IS_DRAFT = 1
         </where>
         group by TYPE
     </select>

+ 18 - 1
src/main/resources/mapper/knowledge/analysis/AnalysisMapMapper.xml

@@ -115,6 +115,7 @@
         from (select count(*) pv
         from KM_PV_LOG
         <where>
+            <if test="organizationId != null">
             COMPANY_ID in (
             select GROUP_ID_
             from LEARNING_USER_DEV.OS_GROUP
@@ -125,6 +126,13 @@
             CONNECT BY PRIOR c.GROUP_ID_ = c.PARENT_ID_
             )
             )
+            </if>
+            <if test="personList != null and personList.size > 0">
+                USER_ID IN
+                <foreach collection="personList" item="id" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+            </if>
             and MODULE = '知识地图'
             <if test="firstDay != null and lastDay != null">
                 and TO_CHAR(CREATE_TIME_,'yyyy-mm-dd') &gt;= #{firstDay}
@@ -133,9 +141,18 @@
         </where>
         ),
         (select count(*) album from KM_MAP album
-        <where>CREATE_DEP_ID_
+        <where>
+            <if test="organizationId != null">
+            CREATE_DEP_ID_
             in ( SELECT GROUP_ID_ FROM LEARNING_USER_DEV.OS_GROUP c START WITH c.GROUP_ID_ = #{organizationId} CONNECT
             BY PRIOR c.GROUP_ID_ = c.PARENT_ID_ )
+            </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}

+ 8 - 0
src/main/resources/mapper/knowledge/analysis/AnalysisSearchMapper.xml

@@ -158,6 +158,7 @@
         select t2.legend name,nvl(t1.value,0) value from (
         select PLATFORM name,count(*) value from KM_PV_LOG
         <where>
+            <if test="organizationId != null">
             COMPANY_ID in (
             select GROUP_ID_
             from LEARNING_USER_DEV.OS_GROUP
@@ -168,6 +169,13 @@
             CONNECT BY PRIOR c.GROUP_ID_ = c.PARENT_ID_
             )
             )
+            </if>
+            <if test="personList != null and personList.size > 0">
+                USER_ID 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}

+ 26 - 50
src/main/resources/mapper/knowledge/analysis/AnalysisSynthesizeMapper.xml

@@ -217,6 +217,27 @@
         </if>
     </select>
 
+    <sql id="organizationWhere">
+        <if test="organizationId != null">
+            COMPANY_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_ = #{organizationId} CONNECT BY PRIOR c.GROUP_ID_ = c.PARENT_ID_
+            )
+            )
+        </if>
+        <if test="personList != null and personList.size > 0">
+            USER_ID 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}
+        </if>
+    </sql>
+
     <select id="organizationVisit" resultType="com.redxun.knowledge.analysis.entity.vo.SynthesizeCompanyVo">
         select
         NVL(total, 0) as total,NVL(knowledge, 0) as knowledge,NVL(map, 0) as
@@ -226,76 +247,31 @@
         (select sum(count(*)) over () total
         from KM_PV_LOG
         <where>
-            COMPANY_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_ = #{organizationId} CONNECT BY PRIOR c.GROUP_ID_ = c.PARENT_ID_
-            )
-            )
-            <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>
+            <include refid="organizationWhere"/> and MODULE != '其他'
         </where>
         ) total,
         (select sum(count(*)) over () knowledge
         from KM_PV_LOG
         <where>
-            COMPANY_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_ = #{organizationId} CONNECT BY PRIOR c.GROUP_ID_ = c.PARENT_ID_
-            )
-            ) and MODULE = '知识仓库'
-            <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>
+            <include refid="organizationWhere"/> and MODULE = '知识仓库'
         </where>
         ) knowledge,
         (select sum(count(*)) over () map
         from KM_PV_LOG
         <where>
-            COMPANY_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_ = #{organizationId} CONNECT BY PRIOR c.GROUP_ID_ = c.PARENT_ID_
-            )
-            ) and MODULE = '知识地图'
-            <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>
+            <include refid="organizationWhere"/> and MODULE = '知识地图'
         </where>
         ) map,
         (select sum(count(*)) over () album
         from KM_PV_LOG
         <where>
-            COMPANY_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_ = #{organizationId} CONNECT BY PRIOR c.GROUP_ID_ = c.PARENT_ID_
-            )
-            ) and MODULE = '知识专辑'
-            <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>
+            <include refid="organizationWhere"/> and MODULE = '知识专辑'
         </where>
         ) album,
         (select sum(count(*)) over () search
         from KM_PV_LOG
         <where>
-            COMPANY_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_ = #{organizationId} CONNECT BY PRIOR c.GROUP_ID_ = c.PARENT_ID_
-            )
-            ) and MODULE = '搜索服务'
-            <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>
+            <include refid="organizationWhere"/> and MODULE = '搜索服务'
         </where>
         ) search
     </select>