瀏覽代碼

作者:张哲
时间:2023/06/27
类型:需求变更
描述:正式环境发版

zizg 1 年之前
父節點
當前提交
7034385f08

+ 14 - 0
src/main/java/com/redxun/knowledge/controller/KnowledgeController.java

@@ -16,6 +16,7 @@ import com.redxun.common.utils.ExceptionUtil;
 import com.redxun.knowledge.entity.dao.Knowledge;
 import com.redxun.knowledge.entity.dto.KnowledgeDto;
 import com.redxun.knowledge.entity.dto.TransferAuthorDto;
+import com.redxun.knowledge.entity.dto.TransferKnowledgeCategoryDto;
 import com.redxun.knowledge.entity.validate.AddGroup;
 import com.redxun.knowledge.entity.vo.KnowledgeVo;
 import com.redxun.knowledge.entity.vo.OsUser;
@@ -261,5 +262,18 @@ public class KnowledgeController extends BaseController<Knowledge> {
         jsonResult.setData(strings);
         return jsonResult.setMessage("导入成功");
     }
+
+    @ApiOperation("批量修改分类")
+    @PostMapping("transferCategory")
+    public JsonResult transferCategory(@RequestBody TransferKnowledgeCategoryDto transferKnowledgeCategoryDto){
+        JsonResult jsonResult = JsonResult.Success();
+        try {
+            knowledgeService.transferCategory(transferKnowledgeCategoryDto);
+        } catch (Exception e) {
+            jsonResult.setSuccess(false);
+            return jsonResult.setMessage(e.getMessage());
+        }
+        return jsonResult.setMessage("转移成功!");
+    }
 }
 

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

@@ -55,7 +55,7 @@ public class KnowledgeLabelController extends BaseController<KnowledgeLabel> {
         } catch (Exception e) {
             jsonResult.setSuccess(false);
             this.logger.error(ExceptionUtil.getExceptionMessage(e));
-            jsonResult.setMessage(ExceptionUtil.getExceptionMessage(e));
+            jsonResult.setMessage(e.getMessage());
         }
         return jsonResult;
     }
@@ -80,7 +80,7 @@ public class KnowledgeLabelController extends BaseController<KnowledgeLabel> {
         } catch (Exception e) {
             jsonResult.setSuccess(false);
             this.logger.error(ExceptionUtil.getExceptionMessage(e));
-            jsonResult.setMessage(ExceptionUtil.getExceptionMessage(e));
+            jsonResult.setMessage(e.getMessage());
         }
         return jsonResult;
     }

+ 26 - 0
src/main/java/com/redxun/knowledge/entity/dto/TransferKnowledgeCategoryDto.java

@@ -0,0 +1,26 @@
+package com.redxun.knowledge.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 文件名: TransferKnowledgeCategoryDto
+ * 作者: zizg
+ * 时间: 2023/6/20
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+@Data
+public class TransferKnowledgeCategoryDto implements Serializable {
+
+    @ApiModelProperty("需要转移分类的知识id集合")
+    private List<String> knowledgeIds;
+
+    @ApiModelProperty("转移到的分类id")
+    private String categoryId;
+}

+ 7 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeApprovalNodeFlowerMapper.java

@@ -42,4 +42,11 @@ public interface KnowledgeApprovalNodeFlowerMapper extends BaseMapper<KnowledgeA
      * @return
      */
     String findParentUserIdList(String deptId);
+
+    /**
+     * 查询当前登陆用户的直属上司
+     * @param userNo
+     * @return
+     */
+    String findParentUserId(String userNo);
 }

+ 14 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeCategoryMapper.java

@@ -61,4 +61,18 @@ public interface KnowledgeCategoryMapper extends BaseDao<KnowledgeCategory> {
     List<KnowledgeCategoryAdminVo> getAllKnowledgeCategory();
 
     List<String> selectPath(String pkId);
+
+    /**
+     * 当前id下所有下级id
+     * @param pkId
+     * @return
+     */
+    List<String> selectAllChildren(String pkId);
+
+    /**
+     * 修改集合中元素的父级
+     * @param parent
+     * @param knowledgeCategories
+     */
+    void updateByList(@Param("parent") String parent, @Param("knowledgeCategoryList") List<String> knowledgeCategories);
 }

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

@@ -55,4 +55,10 @@ public interface KnowledgeMapper extends BaseDao<Knowledge> {
 
     List<OsGroup> getByDimIdUserIdRelTypeIdIsMain(@Param("dimId") String dimId, @Param("userId") String userId, @Param("relTypeId") String relTypeId, @Param("isMain") String isMain, @Param("tenantId") String tenantId);
 
+    /**
+     * 批量把知识分类从新赋值
+     * @param knowledgeIds
+     * @param categoryId
+     */
+    void transferCategory(@Param("knowledgeIds") List<String> knowledgeIds, @Param("categoryId") String categoryId);
 }

+ 37 - 22
src/main/java/com/redxun/knowledge/service/KnowledgeApprovalNodeServiceImpl.java

@@ -200,11 +200,11 @@ public class KnowledgeApprovalNodeServiceImpl extends SuperServiceImpl<Knowledge
             result = knowledgeApprovalNodeFlowerMapper.findAllNodesByCategoryId(categoryId);
             defaultNode(result.get(0),userId);
             result.forEach(e -> {
-                KnowledgeAgent knowledgeAgent = hasTager(e);
-                if (Objects.nonNull(knowledgeAgent)) {
-                    e.setApproverId(knowledgeAgent.getTagerNo());
-                    e.setApproverName(userService.queryByUsername(knowledgeAgent.getTagerNo()).getFullName());
-                }
+                //KnowledgeAgent knowledgeAgent = hasTager(e);
+                //if (Objects.nonNull(knowledgeAgent)) {
+                //    e.setApproverId(knowledgeAgent.getTagerNo());
+                //    e.setApproverName(userService.queryByUsername(knowledgeAgent.getTagerNo()).getFullName());
+                //}
                 e.setApproverAndActualName(e.getApproverName());
             });
             return result;
@@ -233,11 +233,11 @@ public class KnowledgeApprovalNodeServiceImpl extends SuperServiceImpl<Knowledge
         }
         defaultNode(result.get(0),userId);
         result.forEach(e -> {
-            KnowledgeAgent knowledgeAgent = hasTager(e);
-            if (Objects.nonNull(knowledgeAgent)) {
-                e.setApproverId(knowledgeAgent.getTagerNo());
-                e.setApproverName(userService.queryByUsername(knowledgeAgent.getTagerNo()).getFullName());
-            }
+            //KnowledgeAgent knowledgeAgent = hasTager(e);
+            //if (Objects.nonNull(knowledgeAgent)) {
+            //    e.setApproverId(knowledgeAgent.getTagerNo());
+            //    e.setApproverName(userService.queryByUsername(knowledgeAgent.getTagerNo()).getFullName());
+            //}
             e.setApproverAndActualName(e.getApproverName());
         });
         return result;
@@ -279,6 +279,7 @@ public class KnowledgeApprovalNodeServiceImpl extends SuperServiceImpl<Knowledge
         }
         //处理默认节点
         String deptId = null;
+        String userNo = userService.queryLoginUsername();
         if (StringUtils.isEmpty(userId)){
             deptId = userService.queryLoginUserDeptId();
         } else {
@@ -292,26 +293,40 @@ public class KnowledgeApprovalNodeServiceImpl extends SuperServiceImpl<Knowledge
             String approverId = parentUserIdList.parallelStream().map(e -> userService.queryOsUserDto(e).getUserNo()).
                     collect(Collectors.joining(","));
 
-            String[] split = approverId.split(",");
-            //处理默认节点有两个领导的情况(默认节点默认在第一位)
-            if (split.length > 1){
-                String approverIdTager = knowledgeAgentService.hasLeaderMore(split);
-                result.setApproverId(approverIdTager);
-            } else {
-                result.setApproverId(approverId);
+            //如果查出来的直属部门领导包含了当前登陆人,去查询该登陆人的直属上司
+            if (approverId.contains(userNo)) {
+                approverId = knowledgeApprovalNodeFlowerMapper.findParentUserId(userNo);
+                if (StringUtils.isEmpty(approverId)){
+                    approverId = userNo;
+                }
             }
+            //String[] split = approverId.split(",");
+            //处理默认节点有两个领导的情况(默认节点默认在第一位)
+            //if (split.length > 1){
+            //    String approverIdTager = knowledgeAgentService.hasLeaderMore(split);
+            //    result.setApproverId(approverIdTager);
+            //} else {
+            result.setApproverId(approverId);
+            //}
             //审核人姓名
-            String approverName = Arrays.asList(result.getApproverId().split(",")).parallelStream().map(e -> userService.queryUser(e).getFullName()).
+            String approverName = Arrays.asList(result.getApproverId().split(",")).parallelStream().map(e -> userService.queryByUsername(e).getFullName()).
                     collect(Collectors.joining(","));
             result.setApproverName(approverName);
         } else {
+            String parentUserId;
             if (StringUtils.isEmpty(userId)){
-                result.setApproverId(userService.queryLoginUsername());
-                result.setApproverName(userService.queryLoginFullName());
+                parentUserId = knowledgeApprovalNodeFlowerMapper.findParentUserId(userService.queryLoginUsername());
+                if (StringUtils.isEmpty(parentUserId)){
+                    parentUserId = userService.queryLoginUsername();
+                }
             } else {
-                result.setApproverId(userService.queryOsUserDto(userId).getUserNo());
-                result.setApproverName(userService.queryUser(userId).getFullName());
+                parentUserId = knowledgeApprovalNodeFlowerMapper.findParentUserId(userService.queryOsUserDto(userId).getUserNo());
+                if (StringUtils.isEmpty(parentUserId)){
+                    parentUserId = userService.queryOsUserDto(userId).getUserNo();
+                }
             }
+            result.setApproverId(parentUserId);
+            result.setApproverName(userService.queryByUsername(parentUserId).getFullName());
         }
         result.setApproverAndActualName(result.getApproverName());
     }

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

@@ -22,17 +22,20 @@ import com.redxun.knowledge.common.MessageService;
 import com.redxun.knowledge.common.UserService;
 import com.redxun.knowledge.entity.dao.Knowledge;
 import com.redxun.knowledge.entity.dao.KnowledgeApprove;
+import com.redxun.knowledge.entity.dto.KnowledgeApproveDto;
 import com.redxun.knowledge.entity.dto.OrganizationDto;
 import com.redxun.knowledge.entity.vo.KnowledgeApprovalListVo;
 import com.redxun.knowledge.entity.vo.KnowledgeCategoryAdminVo;
 import com.redxun.knowledge.mapper.KnowledgeApproveMapper;
 import com.redxun.knowledge.mapper.KnowledgeMapper;
 import com.redxun.knowledge.qywexin.QYWechatUtils;
+import com.redxun.knowledge.utils.ObjectUtil;
 import com.redxun.knowledge.utils.PageListUtils;
 import com.redxun.search.service.SearchService;
 import com.redxun.search.utils.FileInputStreamUtils;
 import com.redxun.search.utils.MD5;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
@@ -112,7 +115,8 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
             List<KnowledgeApprovalListVo> value = entry.getValue();
             for (int i = 0; i < value.size(); i++) {
                 // 如果是最终审核通过,直接放入记录
-                if (value.get(i).getApprovalStatus() == 5 && value.get(i).getIsFinal() == 1) {
+                // && value.get(i).getIsFinal() == 1
+                if (value.get(i).getApprovalStatus() == 5) {
                     knowledgeApprovalListVoList.add(value.get(i));
                     break;
                 }
@@ -233,14 +237,16 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
     @Transactional(rollbackFor = Exception.class)
     @Override
     public int update(KnowledgeApprove entity) {
-        //把最初的审核人记录下来
-        String startApproverId = entity.getApproverId();
+        String userNo = userService.queryLoginUsername();
+        String userId = userService.queryLoginUser();
         // 如果审批结论为null,置位空字符串
         if (StringUtils.isEmpty(entity.getRemark())) {
             entity.setRemark("");
         }
         // 当前记录
         KnowledgeApprove knowledgeApprove = knowledgeApproveMapper.selectByIdAndSort(entity.getPkId(), null,null);
+        //把最初的审核人记录下来
+        String startApproverId = knowledgeApprove.getApproverId();
         // 判断是否重复审核
         if (knowledgeApprove.getResult() != null) {
             return -1;
@@ -251,15 +257,20 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
         if (split.length > 1){
             String approverIdTager = knowledgeAgentService.hasLeaderMore(split);
             knowledgeApprove.setApproverId(approverIdTager);
+            //当前登陆人不在里面,一定为代理人
+            if (!startApproverId.contains(userNo)){
+                entity.setActualApproverName(userService.queryLoginFullName() + "(代" + knowledgeApprove.getApproverName() + ")");
+            }
         }
         boolean hasTager = knowledgeAgentService.hasTager(knowledgeApprove);
         if (hasTager){
             knowledgeApprove.setApproverId(knowledgeApprove.getTagerNo());
+            //有代理人,实际审核人赋值特殊处理
+            entity.setActualApproverName(userService.queryByUsername(knowledgeApprove.getApproverId()).getFullName() + "(代"
+                    + knowledgeApprove.getApproverName() + ")");
         }
 
         // 判断组织架构(权限)是否变更
-        String userNo = userService.queryLoginUsername();
-        String userId = userService.queryLoginUser();
         //部门权限字符串
         List<String> deptAuthority = knowledgeApproveMapper.deptAuthority(userId);
         boolean flag = false;
@@ -300,7 +311,7 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
             sendMessage(createBy, knowledgeEnd.getTitles(), entity.getRemark(), false);
         }
         // 如果审核节点是终审节点且知识通过,修改知识状态为最终通过 5
-        if (knowledgeApprove.getIsFinal() == 1 && entity.getResult() == 1) {
+        if ((knowledgeApprove.getIsFinal() == 1 || knowledgeApproveNext == null) && entity.getResult() == 1) {
             Knowledge knowledge = new Knowledge();
             knowledge.setPkId(knowledgeApprove.getKnowledgerId());
             knowledge.setApprovalStatus(5);

+ 20 - 2
src/main/java/com/redxun/knowledge/service/KnowledgeCategoryServiceImpl.java

@@ -3,7 +3,6 @@ package com.redxun.knowledge.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.redxun.common.base.db.BaseDao;
 import com.redxun.common.base.db.BaseService;
 import com.redxun.common.base.db.PageHelper;
@@ -21,7 +20,6 @@ import com.redxun.knowledge.utils.PageListUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -167,6 +165,9 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
         if (BeanUtil.isEmpty(entity.getPkId())) {
             entity.setPkId(IdGenerator.getIdStr());
         }
+        if (entity.getPkId().equals(entity.getParent())){
+            throw new RuntimeException("添加失败,上级无法选择自己");
+        }
         // 没有parent默认为一级分类
         if (entity.getParent() == null) {
             entity.setParent("0");
@@ -192,6 +193,9 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
         if (knowledgeCategory.getIsSys() == 1) {
             throw new RuntimeException("系统内置节点,无法修改");
         }
+        if (entity.getPkId().equals(entity.getParent())){
+            throw new RuntimeException("修改失败,上级无法选择自己");
+        }
         if (entity.getParent() == null) {
             entity.setParent("0");
         }
@@ -200,6 +204,20 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
                 entity.setSort(0);
             }
         }
+        //同一分支修改
+        //1.1 已当前修改记录为父级的所有子级id
+        List<String> childrenIdList = knowledgeCategoryMapper.selectAllChildren(knowledgeCategory.getPkId());
+        //1.2 如果所有子级id中包含传入的父级(同级向下修改)
+        if(childrenIdList.contains(entity.getParent())){
+            //2.1 记录下没修改前的原父级
+            String parent = knowledgeCategory.getParent();
+            //2.2 把要修改的记录的直属下级的父级变成我的原父级
+            QueryWrapper<KnowledgeCategory> wrapper = new QueryWrapper<>();
+            wrapper.eq("PARENT",knowledgeCategory.getPkId());
+            List<KnowledgeCategory> knowledgeCategories = this.baseMapper.selectList(wrapper);
+            knowledgeCategoryMapper.updateByList(parent,knowledgeCategories.parallelStream().map(KnowledgeCategory::getPkId).collect(Collectors.toList()));
+        }
+        //变更sort
         knowledgeCategoryMapper.insertOrUpdateBySort(entity.getParent(), entity.getSort());
         return this.getRepository().updateById(entity);
     }

+ 16 - 0
src/main/java/com/redxun/knowledge/service/KnowledgeLabelServiceImpl.java

@@ -11,6 +11,8 @@ import com.redxun.common.model.JPaasUser;
 import com.redxun.common.tool.IdGenerator;
 import com.redxun.common.service.impl.SuperServiceImpl;
 import com.redxun.common.tool.StringUtils;
+import com.redxun.knowledge.analysis.entity.vo.SearchParticipleWordCloudVo;
+import com.redxun.knowledge.analysis.service.AnalysisCommonServiceImpl;
 import com.redxun.knowledge.common.UserService;
 import com.redxun.knowledge.entity.dao.Banner;
 import com.redxun.knowledge.entity.dao.Knowledge;
@@ -19,6 +21,7 @@ import com.redxun.knowledge.entity.dao.KnowledgeLabel;
 import com.redxun.knowledge.entity.vo.BannerAdminVo;
 import com.redxun.knowledge.entity.vo.KnowledgeLabelVo;
 import com.redxun.knowledge.mapper.KnowledgeLabelMapper;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -38,6 +41,9 @@ public class KnowledgeLabelServiceImpl extends SuperServiceImpl<KnowledgeLabelMa
     @Resource
     private KnowledgeLabelMapper knowledgeLabelMapper;
 
+    @Autowired
+    private AnalysisCommonServiceImpl analysisCommonService;
+
     @Override
     public BaseDao<KnowledgeLabel> getRepository() {
         return knowledgeLabelMapper;
@@ -55,10 +61,20 @@ public class KnowledgeLabelServiceImpl extends SuperServiceImpl<KnowledgeLabelMa
     public KnowledgeLabel saveOrUpdateTags(String id, String name, Integer sort) {
         KnowledgeLabel knowledgeLabel = new KnowledgeLabel();
         if (StringUtils.isEmpty(id)) {
+            //判断标签名是否重复
+            KnowledgeLabel knowledgeLabelName = this.baseMapper.selectOne(new QueryWrapper<KnowledgeLabel>().eq("name", name));
+            if (ObjectUtils.isNotEmpty(knowledgeLabelName)) {
+                throw new RuntimeException("标签名重复,请重新输入");
+            }
             knowledgeLabel.setPkId(IdGenerator.getIdStr());
             knowledgeLabel.setCreateBy(userService.queryLoginUser());
             knowledgeLabel.setCreateTime(new Date());
         } else {
+            //判断标签名是否重复
+            KnowledgeLabel knowledgeLabelName = this.baseMapper.selectOne(new QueryWrapper<KnowledgeLabel>().eq("name", name).ne("PK_ID",id));
+            if (ObjectUtils.isNotEmpty(knowledgeLabelName)) {
+                throw new RuntimeException("标签名重复,请重新输入");
+            }
             knowledgeLabel.setPkId(id);
             knowledgeLabel.setUpdateBy(userService.queryLoginUser());
             knowledgeLabel.setCreateTime(new Date());

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

@@ -27,6 +27,7 @@ import com.redxun.knowledge.entity.dao.*;
 import com.redxun.knowledge.entity.dto.KnowledgeDto;
 import com.redxun.knowledge.entity.dto.OrganizationDto;
 import com.redxun.knowledge.entity.dto.TransferAuthorDto;
+import com.redxun.knowledge.entity.dto.TransferKnowledgeCategoryDto;
 import com.redxun.knowledge.entity.vo.*;
 import com.redxun.knowledge.map.entity.dao.MapContent;
 import com.redxun.knowledge.map.mapper.MapContentMapper;
@@ -311,7 +312,7 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
                         approvalVo.setApproverAndActualName(approverNameTager);
                     } else {
                         if (knowledgeAgentService.hasTager(approve)){
-                            approvalVo.setApproverName(userService.queryByUsername(approvalVo.getApproverId()).getFullName());
+                            approvalVo.setApproverAndActualName(userService.queryByUsername(approvalVo.getApproverId()).getFullName());
                         } else {
                             approvalVo.setApproverAndActualName(approve.getApproverName());
                         }
@@ -924,4 +925,22 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
         });
         return pkIdList;
     }
+
+    /**
+     * 批量修改分类
+     * @param transferKnowledgeCategoryDto
+     */
+    public void transferCategory(TransferKnowledgeCategoryDto transferKnowledgeCategoryDto) {
+        //需要转移的知识
+        List<String> knowledgeIds = transferKnowledgeCategoryDto.getKnowledgeIds();
+        //准备转移到的分类
+        String categoryId = transferKnowledgeCategoryDto.getCategoryId();
+        //判断知识分类id是否存在
+        KnowledgeCategory knowledgeCategory = knowledgeCategoryMapper.selectById(categoryId);
+        if (Objects.isNull(knowledgeCategory)){
+            throw new RuntimeException("输入的知识分类id不存在");
+        }
+        //转移
+        knowledgeMapper.transferCategory(knowledgeIds,categoryId);
+    }
 }

+ 4 - 0
src/main/resources/mapper/knowledge/KnowledgeApprovalNodeFlowerMapper.xml

@@ -90,6 +90,10 @@
         select MANAGER_IDS_ from LEARNING_USER_DEV.OS_GROUP WHERE KEY_ = #{deptId} and MANAGER_IDS_ is not null
     </select>
 
+    <select id="findParentUserId" resultType="string">
+        select MANAGER_WORK_ID_ from LEARNING_USER_DEV.OS_USER WHERE USER_NO_ = #{userNo} AND MANAGER_WORK_ID_ is not null
+    </select>
+
 </mapper>
 
 

+ 21 - 0
src/main/resources/mapper/knowledge/KnowledgeCategoryMapper.xml

@@ -117,6 +117,27 @@
             START WITH c.PK_ID = #{pkId}
         CONNECT BY PRIOR c.PK_ID = c.PARENT and c.IS_DEL = 0
     </select>
+
+    <select id="selectAllChildren" resultType="string">
+        select PK_ID
+        from KM_KNOWLEDGE_CATEGORY where
+                PARENT IN (
+                SELECT c.PK_ID FROM KM_KNOWLEDGE_CATEGORY c WHERE c.IS_DEL = 0 START WITH c.PK_ID = #{pkId} CONNECT
+            BY PRIOR c.PK_ID = c.PARENT) and IS_DEL = 0
+    </select>
+
+    <update id="updateByList">
+        update KM_KNOWLEDGE_CATEGORY
+        <set>
+           PARENT = #{parent},UPDATE_TIME_ = sysdate
+        </set>
+        <where>
+            PK_ID in
+            <foreach collection="knowledgeCategoryList" item="pkId" separator="," open="(" close=")">
+                 #{pkId}
+            </foreach>
+        </where>
+    </update>
 </mapper>
 
 

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

@@ -327,6 +327,15 @@
 
     </select>
 
+    <update id="transferCategory">
+        update KM_KNOWLEDGE
+        set CATEGORY_ID = #{categoryId},UPDATE_TIME_ = sysdate
+        where PK_ID in
+        <foreach collection="knowledgeIds" open="(" close=")" item="knowledgeId" separator=",">
+            #{knowledgeId}
+        </foreach>
+    </update>
+
 
 </mapper>