Sfoglia il codice sorgente

作者:张哲
时间:2023/03/21
类型:开发
描述:里程碑(3)知识库接口开发

zizg 2 anni fa
parent
commit
5773106829

+ 1 - 0
src/main/java/com/redxun/knowledge/album/service/AlbumInfoServiceImpl.java

@@ -851,6 +851,7 @@ public class AlbumInfoServiceImpl extends SuperServiceImpl<AlbumInfoMapper, Albu
         QueryWrapper<ActionLog> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("USER_ID", userId);
         queryWrapper.eq("KNOWLEDGE_ID", albumId);
+        queryWrapper.eq("TYPE",2);
         List<ActionLog> actionLogList = actionLogMapper.selectList(queryWrapper);
         if (CollectionUtils.isEmpty(actionLogList)) {
             ActionLog actionLog = new ActionLog();

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

@@ -2,6 +2,8 @@ package com.redxun.knowledge.analysis.controller;
 
 import com.redxun.common.annotation.ClassDefine;
 import com.redxun.common.base.entity.JsonResult;
+import com.redxun.knowledge.analysis.entity.vo.KnowledgeCategoryVo;
+import com.redxun.knowledge.analysis.entity.vo.KnowledgeCompanyVo;
 import com.redxun.knowledge.analysis.entity.vo.SearchParticipleWordCloudVo;
 import com.redxun.knowledge.analysis.entity.vo.SearchVisitHistogramVo;
 import com.redxun.knowledge.analysis.service.AnalysisCommonServiceImpl;
@@ -64,4 +66,35 @@ public class AnalysisCommonController {
         Map<String, Object> result = analysisCommonService.knowledgeTypeAmount();
         return JsonResult.getSuccessResult(result);
     }
+
+    @ApiOperation("知识类型访问量分布")
+    @GetMapping("knowledgeTypeVisitProportion")
+    public JsonResult knowledgeTypeVisitProportion(@RequestParam("type") String type){
+        Map<String, Object> result = analysisCommonService.knowledgeTypeVisitProportion(type);
+        return JsonResult.getSuccessResult(result);
+    }
+
+    @ApiOperation("各一级分类知识创建数量")
+    @GetMapping("level1KnowledgeHistogram")
+    public JsonResult level1KnowledgeHistogram(@RequestParam("type") String type,
+                                               @RequestParam(value = "sort",required = false) String sort){
+        List<KnowledgeCategoryVo> knowledgeCategoryVoList = analysisCommonService.level1KnowledgeHistogram(type,sort);
+        return JsonResult.getSuccessResult(knowledgeCategoryVoList);
+    }
+
+    @ApiOperation("组织创建知识数量")
+    @GetMapping("organizationKnowledges")
+    public JsonResult organizationKnowledges(@RequestParam("type") String type,
+                                             @RequestParam(value = "tops",required = false,defaultValue = "10") Integer tops,
+                                             @RequestParam(value = "sort",required = false) String sort){
+        List<KnowledgeCompanyVo> knowledgeCompanyVoList = analysisCommonService.organizationKnowledges(type, tops, sort);
+        return JsonResult.getSuccessResult(knowledgeCompanyVoList);
+    }
+
+    @ApiOperation("专辑创建总量")
+    @GetMapping("albumAmount")
+    public JsonResult albumAmount(@RequestParam("type") String type){
+        Map<String ,Object> result = analysisCommonService.albumAmount(type);
+        return JsonResult.getSuccessResult(result);
+    }
 }

+ 30 - 0
src/main/java/com/redxun/knowledge/analysis/entity/vo/KnowledgeCategoryVo.java

@@ -0,0 +1,30 @@
+package com.redxun.knowledge.analysis.entity.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 文件名: KnowledgeCategoryVo
+ * 作者: zizg
+ * 时间: 2023/3/20
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+@ApiModel("各一级分类知识创建数量Vo")
+@Data
+public class KnowledgeCategoryVo implements Serializable {
+
+    @ApiModelProperty("标签 一级分类名称")
+    private String label;
+
+    @ApiModelProperty("维基知识数量")
+    private Integer wiki;
+
+    @ApiModelProperty("文档知识数量")
+    private Integer archive;
+}

+ 34 - 0
src/main/java/com/redxun/knowledge/analysis/entity/vo/KnowledgeCompanyVo.java

@@ -0,0 +1,34 @@
+package com.redxun.knowledge.analysis.entity.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 文件名: KnowledgeCompanyVo
+ * 作者: zizg
+ * 时间: 2023/3/21
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+@ApiModel("组织创建知识数量Vo")
+@Data
+public class KnowledgeCompanyVo implements Serializable {
+
+    @ApiModelProperty("公司名称")
+    private String company;
+
+    @ApiModelProperty("知识创建总量")
+    private Integer total;
+
+    @ApiModelProperty("维基知识创建量")
+    private Integer wiki;
+
+    @ApiModelProperty("文档知识创建量")
+    private Integer archive;
+}

+ 2 - 0
src/main/java/com/redxun/knowledge/analysis/entity/vo/LablesVo.java

@@ -1,5 +1,6 @@
 package com.redxun.knowledge.analysis.entity.vo;
 
+import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -15,6 +16,7 @@ import java.util.Map;
  * 修改时间:
  * 修改内容:
  */
+@ApiModel("PC 搜索服务访问量标签取值列表Vo")
 @Data
 public class LablesVo implements Serializable {
 

+ 1 - 1
src/main/java/com/redxun/knowledge/analysis/entity/vo/SearchParticipleWordCloudVo.java

@@ -15,7 +15,7 @@ import java.io.Serializable;
  * 修改时间:
  * 修改内容:
  */
-@ApiModel("高频词Vo")
+@ApiModel("PC 高频词Vo")
 @Data
 public class SearchParticipleWordCloudVo implements Serializable {
 

+ 40 - 0
src/main/java/com/redxun/knowledge/analysis/mapper/AnalysisCommonMapper.java

@@ -2,7 +2,9 @@ package com.redxun.knowledge.analysis.mapper;
 
 
 import com.redxun.knowledge.analysis.entity.vo.SearchParticipleWordCloudVo;
+import io.swagger.annotations.ApiImplicitParams;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -51,4 +53,42 @@ public interface AnalysisCommonMapper {
      * @return
      */
     List<SearchParticipleWordCloudVo> searchParticipleWordCloud(Integer tops);
+
+    /**
+     * 知识类型访问量分布
+     * @param firstDay
+     * @param lastDay
+     * @return
+     */
+    List<Integer> knowledgeTypeVisitProportion(@Param("firstDay") String firstDay,@Param("lastDay") String lastDay);
+
+    /**
+     * 获取全部知识一级分类id集合
+     * @return
+     */
+    List<String> level1Knowledge();
+
+    /**
+     * 获取一级知识分类下的全部知识数量
+     * @param categoryId
+     * @param firstDay
+     * @param lastDay
+     * @return
+     */
+    List<Integer> level1KnowledgeHistogram(@Param("categoryId") String categoryId, @Param("firstDay") String firstDay,@Param("lastDay") String lastDay);
+
+    /**
+     * 获取全部创建过知识的公司Id
+     * @return
+     */
+    List<String> selectCompanyId();
+
+    /**
+     * 获取各个公司创建的知识数量
+     * @param companyId
+     * @param firstDay
+     * @param lastDay
+     * @return
+     */
+    List<Integer> organizationKnowledges(@Param("companyId") String companyId,@Param("firstDay") String firstDay,@Param("lastDay") String lastDay);
 }

+ 198 - 19
src/main/java/com/redxun/knowledge/analysis/service/AnalysisCommonServiceImpl.java

@@ -1,15 +1,14 @@
 package com.redxun.knowledge.analysis.service;
 
+import com.redxun.common.tool.StringUtils;
 import com.redxun.knowledge.analysis.entity.consts.PlatformConst;
-import com.redxun.knowledge.analysis.entity.vo.LablesVo;
-import com.redxun.knowledge.analysis.entity.vo.SearchParticipleWordCloudVo;
-import com.redxun.knowledge.analysis.entity.vo.SearchVisitHistogramVo;
+import com.redxun.knowledge.analysis.entity.vo.*;
 import com.redxun.knowledge.analysis.mapper.AnalysisCommonMapper;
 import com.redxun.knowledge.analysis.mapper.PvLogMapper;
-import com.redxun.knowledge.analysis.mapper.SearchParticipleLogMapper;
+import com.redxun.knowledge.common.UserService;
+import com.redxun.knowledge.mapper.KnowledgeCategoryMapper;
 import com.redxun.knowledge.utils.DateUtils;
 import groovy.util.logging.Slf4j;
-import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -36,8 +35,15 @@ public class AnalysisCommonServiceImpl {
     @Autowired
     private PvLogMapper pvLogMapper;
 
+    @Autowired
+    private KnowledgeCategoryMapper knowledgeCategoryMapper;
+
+    @Autowired
+    private UserService userService;
+
     /**
      * 各模块整体数量统计:知识仓库(知识总数量);知识地图(地图总数量);知识专辑(专辑总数量)
+     *
      * @return
      */
     public Map<String, Object> totalAmount() {
@@ -45,14 +51,15 @@ public class AnalysisCommonServiceImpl {
         Integer knowledgeTotal = analysisCommonMapper.knowledgeTotalAmount();
         Integer mapTotal = analysisCommonMapper.mapTotalAmount();
         Integer albumTotal = analysisCommonMapper.albumTotalAmount();
-        result.put("knowledge",knowledgeTotal);
-        result.put("map",mapTotal);
-        result.put("album",albumTotal);
+        result.put("knowledge", knowledgeTotal);
+        result.put("map", mapTotal);
+        result.put("album", albumTotal);
         return result;
     }
 
     /**
      * 查询各类型(维基、文档)知识数量
+     *
      * @return
      */
     public Map<String, Object> knowledgeTypeAmount() {
@@ -61,14 +68,15 @@ public class AnalysisCommonServiceImpl {
         Integer archiveTotal = analysisCommonMapper.knowledgeTotalByType(1);
         //类型为2(维基知识)
         Integer wikiTotal = analysisCommonMapper.knowledgeTotalByType(2);
-        result.put("archive",archiveTotal);
-        result.put("wiki",wikiTotal);
-        result.put("total",archiveTotal + wikiTotal);
+        result.put("archive", archiveTotal);
+        result.put("wiki", wikiTotal);
+        result.put("total", archiveTotal + wikiTotal);
         return result;
     }
 
     /**
      * 获取搜索服务分词的词云数据
+     *
      * @param tops
      * @return
      */
@@ -80,6 +88,7 @@ public class AnalysisCommonServiceImpl {
 
     /**
      * 获取搜索服务访问量分布柱状图数据,查看一次详情算一次PV
+     *
      * @return
      */
     public SearchVisitHistogramVo searchVisitHistogram() {
@@ -91,7 +100,7 @@ public class AnalysisCommonServiceImpl {
                 DateUtils.format(DateUtils.getLastOfYear(year)));
         //统计每月各个系统的搜索访问量
         List<LablesVo> lablesVoList = new ArrayList<>();
-        for (int i = 1; i <= 12 ; i++) {
+        for (int i = 1; i <= 12; i++) {
             LablesVo lablesVo = new LablesVo();
             List<Map<String, Object>> values = new ArrayList<>();
             lablesVo.setName(i + "月");
@@ -104,16 +113,16 @@ public class AnalysisCommonServiceImpl {
             //根据月份查询各个业务系统访问量
             platformList.forEach(e -> {
                 Map<String, Object> map = new HashMap<>();
-                Integer count = pvLogMapper.selectSearchVisitHistogramByMonth(firstOfMonth,lastOfMonth,e);
-                map.put("legend",e);
-                map.put("value",count);
-                if (sumByMonth == 0){
-                    map.put("percentage",0.0000);
+                Integer count = pvLogMapper.selectSearchVisitHistogramByMonth(firstOfMonth, lastOfMonth, e);
+                map.put("legend", e);
+                map.put("value", count);
+                if (sumByMonth == 0) {
+                    map.put("percentage", 0.0000);
                 } else {
                     double sum = count / (sumByMonth.doubleValue());
                     BigDecimal bd = new BigDecimal(sum);
-                    double f1 = bd.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-                    map.put("percentage",f1);
+                    double f1 = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+                    map.put("percentage", f1);
                 }
                 values.add(map);
             });
@@ -125,4 +134,174 @@ public class AnalysisCommonServiceImpl {
         searchVisitHistogramVo.setLables(lablesVoList);
         return searchVisitHistogramVo;
     }
+
+    /**
+     * 知识类型访问量分布
+     *
+     * @return
+     */
+    public Map<String, Object> knowledgeTypeVisitProportion(String type) {
+        Map<String, Object> map = new HashMap<>();
+        //获取当前年
+        Calendar calendar = Calendar.getInstance();
+        int year = calendar.get(Calendar.YEAR);
+        //查询出结果
+        List<Integer> count = null;
+        if (type.equals("total")) {
+            count = analysisCommonMapper.knowledgeTypeVisitProportion(null, null);
+        } else if (type.equals("year")) {
+            count = analysisCommonMapper.knowledgeTypeVisitProportion(DateUtils.format(DateUtils.getFirstOfYear(year)),
+                    DateUtils.format(DateUtils.getLastOfYear(year)));
+        } 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.knowledgeTypeVisitProportion(firstOfMonth, lastOfMonth);
+        } else {
+            return null;
+        }
+        //文档知识和维基知识查看数量
+        int archive = (int) count.stream().filter(e -> e == 1).count();
+        int wiki = (int) count.stream().filter(e -> e == 2).count();
+        map.put("archive", archive);
+        map.put("wiki", wiki);
+        //计算百分比
+        if (count.size() == 0) {
+            map.put("archivePercentage", 0.00);
+            map.put("wikiPercentage", 0.00);
+        } else {
+            BigDecimal archivebg = new BigDecimal(archive / (double) count.size());
+            double archivedouble = archivebg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+            map.put("archivePercentage", archivedouble);
+            BigDecimal wikibg = new BigDecimal(wiki / (double) count.size());
+            double wikidouble = wikibg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+            map.put("wikiPercentage", wikidouble);
+        }
+        return map;
+    }
+
+    /**
+     * 各一级分类知识创建数量(包含审核中和驳回的数据)
+     *
+     * @param type
+     * @param sort
+     * @return
+     */
+    public List<KnowledgeCategoryVo> level1KnowledgeHistogram(String type, String sort) {
+        //查询全部一级分类
+        List<String> level1KnowledgeIdList = analysisCommonMapper.level1Knowledge();
+        List<KnowledgeCategoryVo> result = level1KnowledgeIdList.parallelStream().map(e -> {
+            //一级分类下知识数量(包含审核中的、驳回的)
+            List<Integer> count = new ArrayList<>();
+            //获取当前年
+            Calendar calendar = Calendar.getInstance();
+            int year = calendar.get(Calendar.YEAR);
+            KnowledgeCategoryVo knowledgeCategoryVo = new KnowledgeCategoryVo();
+            knowledgeCategoryVo.setLabel(knowledgeCategoryMapper.selectById(e).getName());
+            //查询知识分类下创建的知识数量(纬度:年 最近1个月 全部)
+            if (type.equals("total")) {
+                count = analysisCommonMapper.level1KnowledgeHistogram(e, null, null);
+            } else if (type.equals("year")) {
+                count = analysisCommonMapper.level1KnowledgeHistogram(e, DateUtils.format(DateUtils.getFirstOfYear(year)),
+                        DateUtils.format(DateUtils.getLastOfYear(year)));
+            } 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.level1KnowledgeHistogram(e, firstOfMonth, lastOfMonth);
+            }
+            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);
+            return knowledgeCategoryVo;
+        }).collect(Collectors.toList());
+        //排序
+        if (StringUtils.isEmpty(sort)) {
+            result = result.stream().sorted((t1, t2) -> t2.getWiki().compareTo(t1.getWiki())).collect(Collectors.toList());
+        } else {
+            if ("wikiDesc".equals(sort)) {
+                result = result.stream().sorted((t1, t2) -> t2.getWiki().compareTo(t1.getWiki())).collect(Collectors.toList());
+            } else {
+                result = result.stream().sorted((t1, t2) -> t2.getArchive().compareTo(t1.getArchive())).collect(Collectors.toList());
+            }
+        }
+        return result;
+    }
+
+    /**
+     * 组织创建知识数量
+     *
+     * @param type
+     * @param tops
+     * @param sort
+     * @return
+     */
+    public List<KnowledgeCompanyVo> organizationKnowledges(String type, Integer tops, String sort) {
+        //获取全部创建过知识的公司id
+        List<String> knowledgeCompanyIdList = analysisCommonMapper.selectCompanyId();
+        //获取当前年
+        Calendar calendar = Calendar.getInstance();
+        int year = calendar.get(Calendar.YEAR);
+        List<KnowledgeCompanyVo> result = knowledgeCompanyIdList.parallelStream().map(e -> {
+            KnowledgeCompanyVo knowledgeCompanyVo = new KnowledgeCompanyVo();
+            List<Integer> count = new ArrayList<>();
+            if (("total").equals(type)) {
+                count = analysisCommonMapper.organizationKnowledges(e, null, null);
+            } else if ("year".equals(type)) {
+                count = analysisCommonMapper.organizationKnowledges(e, DateUtils.format(DateUtils.getFirstOfYear(year)),
+                        DateUtils.format(DateUtils.getLastOfYear(year)));
+            } 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.organizationKnowledges(e, firstOfMonth, lastOfMonth);
+            }
+            long archive = count.stream().filter(typeKnowledge -> typeKnowledge == 1).count();
+            long wiki = count.stream().filter(typeKnowledge -> typeKnowledge == 2).count();
+            knowledgeCompanyVo.setCompany(userService.findDeptByDeptId(e).getName());
+            knowledgeCompanyVo.setTotal(count.size());
+            knowledgeCompanyVo.setArchive((int) archive);
+            knowledgeCompanyVo.setWiki((int) wiki);
+            return knowledgeCompanyVo;
+        }).collect(Collectors.toList());
+        //排序
+        if (sort != null){
+            switch (sort) {
+                case "totalDesc":
+                    result = result.stream().sorted((t1, t2) -> t2.getTotal().compareTo(t1.getTotal())).collect(Collectors.toList());
+                    break;
+                case "totalAsc":
+                    result = result.stream().sorted(Comparator.comparing(KnowledgeCompanyVo::getTotal)).collect(Collectors.toList());
+                    break;
+                case "archiveDesc":
+                    result = result.stream().sorted((t1, t2) -> t2.getArchive().compareTo(t1.getArchive())).collect(Collectors.toList());
+                    break;
+                case "archiveAsc":
+                    result = result.stream().sorted(Comparator.comparing(KnowledgeCompanyVo::getArchive)).collect(Collectors.toList());
+                    break;
+                case "wikiDesc":
+                    result = result.stream().sorted((t1, t2) -> t2.getWiki().compareTo(t1.getWiki())).collect(Collectors.toList());
+                    break;
+                case "wikiAsc":
+                    result = result.stream().sorted(Comparator.comparing(KnowledgeCompanyVo::getWiki)).collect(Collectors.toList());
+                    break;
+            }
+        } else {
+            result = result.stream().sorted((t1, t2) -> t2.getTotal().compareTo(t1.getTotal())).collect(Collectors.toList());
+        }
+        //获取top10公司数据
+        List<KnowledgeCompanyVo> resultTop = result.stream().limit(tops).collect(Collectors.toList());
+        return resultTop;
+    }
+
+    /**
+     * 专辑创建总量
+     *
+     * @param type
+     * @return
+     */
+    public Map<String, Object> albumAmount(String type) {
+        return null;
+    }
 }

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

@@ -1031,6 +1031,7 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
         QueryWrapper<ActionLog> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("USER_ID",userId);
         queryWrapper.eq("KNOWLEDGE_ID",knowledgeId);
+        queryWrapper.eq("TYPE",1);
         List<ActionLog> actionLogList = actionLogMapper.selectList(queryWrapper);
         if (CollectionUtils.isEmpty(actionLogList)){
             ActionLog actionLog = new ActionLog();

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

@@ -27,6 +27,52 @@
         order by frequency desc
     </select>
 
+    <select id="knowledgeTypeVisitProportion" resultType="int">
+        select SUBSTR( USSD, INSTR( USSD, '-', 1 ) + 1 ) USSD from KM_PV_LOG
+        <where>
+            MODULE = '知识仓库' and SUB_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>
+        </where>
+    </select>
+    
+    <select id="level1Knowledge" resultType="string">
+        select PK_ID
+        from KM_KNOWLEDGE_CATEGORY
+        where PARENT = '0' and IS_DEL = 0
+    </select>
+
+    <select id="level1KnowledgeHistogram" resultType="int">
+        select type
+        from  KM_KNOWLEDGE
+        <where>
+            CATEGORY_ID IN (
+            SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c WHERE c.IS_DEL = 0 START WITH c.PK_ID = #{categoryId} CONNECT BY PRIOR c.PK_ID = c.PARENT and c.IS_DEL = 0
+            ) and IS_DEL = 0
+           <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>
+        </where>
+    </select>
+
+    <select id="selectCompanyId" resultType="string">
+        select distinct COMPANY_ID_ from KM_KNOWLEDGE where IS_DEL = 0
+    </select>
+
+    <select id="organizationKnowledges" resultType="int">
+        select type from KM_KNOWLEDGE
+        <where>
+            IS_DEL = 0 and COMPANY_ID_ = #{companyId}
+            <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>
+        </where>
+    </select>
+
 
 </mapper>