优化分页查询接口

release_1.0.0
liu 10 months ago
parent 8b35fda32d
commit 50008b4786

@ -7,6 +7,7 @@ import com.supervision.knowsub.entity.vo.knowledge.ModifyKnowledgeReqVO;
import com.supervision.knowsub.entity.vo.knowledge.SaveKnowledgeReqVO; import com.supervision.knowsub.entity.vo.knowledge.SaveKnowledgeReqVO;
import com.supervision.knowsub.service.KnowledgeManageService; import com.supervision.knowsub.service.KnowledgeManageService;
import com.supervision.knowsub.model.Knowledge; import com.supervision.knowsub.model.Knowledge;
import com.supervision.knowsub.vo.knowledge.KnowledgePageResVO;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.Parameters;
@ -40,7 +41,7 @@ public class KnowledgeManageController {
@Parameter(name = "pageSize", description = "分页", in = ParameterIn.QUERY) @Parameter(name = "pageSize", description = "分页", in = ParameterIn.QUERY)
}) })
@GetMapping("queryKnowledgePage") @GetMapping("queryKnowledgePage")
public IPage<Knowledge> queryKnowledgePage(@RequestParam(required = false) Integer status, public IPage<KnowledgePageResVO> queryKnowledgePage(@RequestParam(required = false) Integer status,
@RequestParam(required = false) String title, @RequestParam(required = false) String title,
@RequestParam(required = false) String publishDeptId, @RequestParam(required = false) String publishDeptId,
@RequestParam(required = false) String baseId, @RequestParam(required = false) String baseId,
@ -57,7 +58,7 @@ public class KnowledgeManageController {
knowledgeManageService.saveKnowledge(reqVO); knowledgeManageService.saveKnowledge(reqVO);
} }
@Operation(summary = "修改知识库(已撤回才能编辑)") @Operation(summary = "修改知识库(已撤回和草稿状态才能编辑)")
@PostMapping("updateKnowledge") @PostMapping("updateKnowledge")
public void updateKnowledge(@RequestBody ModifyKnowledgeReqVO reqVO) { public void updateKnowledge(@RequestBody ModifyKnowledgeReqVO reqVO) {
Assert.notBlank(reqVO.getKnowledgeId(), "知识ID不能为空"); Assert.notBlank(reqVO.getKnowledgeId(), "知识ID不能为空");

@ -5,6 +5,7 @@ import com.supervision.knowsub.entity.vo.knowledge.KnowledgeDetailResVO;
import com.supervision.knowsub.entity.vo.knowledge.ModifyKnowledgeReqVO; import com.supervision.knowsub.entity.vo.knowledge.ModifyKnowledgeReqVO;
import com.supervision.knowsub.entity.vo.knowledge.SaveKnowledgeReqVO; import com.supervision.knowsub.entity.vo.knowledge.SaveKnowledgeReqVO;
import com.supervision.knowsub.model.Knowledge; import com.supervision.knowsub.model.Knowledge;
import com.supervision.knowsub.vo.knowledge.KnowledgePageResVO;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
@ -12,7 +13,7 @@ import java.time.LocalDateTime;
public interface KnowledgeManageService { public interface KnowledgeManageService {
IPage<Knowledge> queryKnowledgePage(Integer status, IPage<KnowledgePageResVO> queryKnowledgePage(Integer status,
String title, String title,
String publishDeptId, String publishDeptId,
String baseId, String baseId,

@ -1,32 +1,26 @@
package com.supervision.knowsub.service.impl; package com.supervision.knowsub.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.knowsub.domain.UserInfo; import com.supervision.knowsub.domain.UserInfo;
import com.supervision.knowsub.entity.vo.knowledge.KnowledgeDetailResVO; import com.supervision.knowsub.entity.vo.knowledge.*;
import com.supervision.knowsub.entity.vo.knowledge.KnowledgeLinkVO;
import com.supervision.knowsub.entity.vo.knowledge.ModifyKnowledgeReqVO;
import com.supervision.knowsub.entity.vo.knowledge.SaveKnowledgeReqVO;
import com.supervision.knowsub.enums.FlowTypeEnum; import com.supervision.knowsub.enums.FlowTypeEnum;
import com.supervision.knowsub.enums.StatusEnum; import com.supervision.knowsub.enums.StatusEnum;
import com.supervision.knowsub.exception.BusinessException; import com.supervision.knowsub.exception.BusinessException;
import com.supervision.knowsub.model.*; import com.supervision.knowsub.model.*;
import com.supervision.knowsub.service.*; import com.supervision.knowsub.service.*;
import com.supervision.knowsub.util.UserUtil; import com.supervision.knowsub.util.UserUtil;
import com.supervision.knowsub.vo.knowledge.KnowledgePageResVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.*;
import java.util.Objects; import java.util.stream.Collectors;
import java.util.Optional;
import java.util.Set;
@Slf4j @Slf4j
@Service @Service
@ -49,9 +43,13 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
private final KnowledgeFlowService knowledgeFlowService; private final KnowledgeFlowService knowledgeFlowService;
private final SystemDeptService systemDeptService;
private final SystemBaseService systemBaseService;
@Override @Override
public IPage<Knowledge> queryKnowledgePage(Integer status, public IPage<KnowledgePageResVO> queryKnowledgePage(Integer status,
String title, String title,
String publishDeptId, String publishDeptId,
String baseId, String baseId,
@ -59,7 +57,28 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
LocalDateTime publishDateBegin, LocalDateTime publishDateBegin,
LocalDateTime publishDateEnd, Integer pageNum, Integer pageSize) { LocalDateTime publishDateEnd, Integer pageNum, Integer pageSize) {
String userId = UserUtil.getUser().getId(); String userId = UserUtil.getUser().getId();
return knowledgeService.queryKnowledgePage(status, title, publishDeptId, baseId, submittedDeptId, publishDateBegin, publishDateEnd, userId, pageNum, pageSize); IPage<KnowledgePageResVO> knowledgeIPage = knowledgeService.queryKnowledgePage(status, title, publishDeptId, baseId, submittedDeptId, publishDateBegin, publishDateEnd, userId, pageNum, pageSize);
List<KnowledgePageResVO> records = knowledgeIPage.getRecords();
if (CollUtil.isEmpty(records)){
return knowledgeIPage;
}
// 获取所有部门
Set<String> submitDeptSet = records.stream().map(Knowledge::getSubmittedDeptId).collect(Collectors.toSet());
Set<String> publishDeptSet = records.stream().map(Knowledge::getPublishDeptId).collect(Collectors.toSet());
Collection<String> deptIdSet = CollUtil.union(submitDeptSet, publishDeptSet);
Map<String, String> deptMap = systemDeptService.listByIds(deptIdSet).stream().collect(Collectors.toMap(SystemDept::getId, SystemDept::getDeptName));
// 获取所有子库
Set<String> baseIdSet = records.stream().map(Knowledge::getBaseId).collect(Collectors.toSet());
Map<String, String> baseMap = systemBaseService.listByIds(baseIdSet).stream().collect(Collectors.toMap(SystemBase::getId, SystemBase::getBaseName));
List<KnowledgePageResVO> list = records.stream().map(knowledge -> {
KnowledgePageResVO node = BeanUtil.copyProperties(knowledge, KnowledgePageResVO.class);
node.setBaseName(baseMap.getOrDefault(knowledge.getBaseId(), "全部"));
node.setSubmitDeptName(deptMap.getOrDefault(knowledge.getSubmittedDeptId(), "未知部门"));
node.setPublishDeptName(deptMap.getOrDefault(knowledge.getPublishDeptId(), "未知部门"));
return node;
}).toList();
knowledgeIPage.setRecords(list);
return knowledgeIPage;
} }
@Override @Override

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.knowsub.model.Knowledge; import com.supervision.knowsub.model.Knowledge;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.knowsub.vo.knowledge.KnowledgePageResVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -16,7 +17,7 @@ import java.time.LocalDateTime;
*/ */
public interface KnowledgeMapper extends BaseMapper<Knowledge> { public interface KnowledgeMapper extends BaseMapper<Knowledge> {
IPage<Knowledge> queryKnowledgePage(@Param("status") Integer status, IPage<KnowledgePageResVO> queryKnowledgePage(@Param("status") Integer status,
@Param("title") String title, @Param("title") String title,
@Param("publishDeptId") String publishDeptId, @Param("publishDeptId") String publishDeptId,
@Param("baseId") String baseId, @Param("baseId") String baseId,

@ -3,6 +3,7 @@ package com.supervision.knowsub.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.knowsub.model.Knowledge; import com.supervision.knowsub.model.Knowledge;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.knowsub.vo.knowledge.KnowledgePageResVO;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -19,12 +20,12 @@ public interface KnowledgeService extends IService<Knowledge> {
* @param pageSize pageSize * @param pageSize pageSize
* @return IPage<Knowledge> * @return IPage<Knowledge>
*/ */
IPage<Knowledge> queryKnowledgePage(Integer status, IPage<KnowledgePageResVO> queryKnowledgePage(Integer status,
String title, String title,
String publishDeptId, String publishDeptId,
String baseId, String baseId,
String submittedDeptId, String submittedDeptId,
LocalDateTime publishDateBegin, LocalDateTime publishDateBegin,
LocalDateTime publishDateEnd,String userId, Integer pageNum, Integer pageSize); LocalDateTime publishDateEnd, String userId, Integer pageNum, Integer pageSize);
} }

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.knowsub.model.Knowledge; import com.supervision.knowsub.model.Knowledge;
import com.supervision.knowsub.service.KnowledgeService; import com.supervision.knowsub.service.KnowledgeService;
import com.supervision.knowsub.mapper.KnowledgeMapper; import com.supervision.knowsub.mapper.KnowledgeMapper;
import com.supervision.knowsub.vo.knowledge.KnowledgePageResVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -20,7 +21,7 @@ public class KnowledgeServiceImpl extends ServiceImpl<KnowledgeMapper, Knowledge
implements KnowledgeService { implements KnowledgeService {
@Override @Override
public IPage<Knowledge> queryKnowledgePage(Integer status, public IPage<KnowledgePageResVO> queryKnowledgePage(Integer status,
String title, String title,
String publishDeptId, String publishDeptId,
String baseId, String baseId,

@ -0,0 +1,18 @@
package com.supervision.knowsub.vo.knowledge;
import com.supervision.knowsub.model.Knowledge;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class KnowledgePageResVO extends Knowledge {
@Schema(description = "应用子库名称")
private String baseName;
@Schema(description = "报送部门名称")
private String submitDeptName;
@Schema(description = "发文部门名称")
private String publishDeptName;
}

@ -28,7 +28,7 @@
status,submitted_dept_id,create_user_id, status,submitted_dept_id,create_user_id,
create_time,update_user_id,update_time create_time,update_user_id,update_time
</sql> </sql>
<select id="queryKnowledgePage" resultType="com.supervision.knowsub.model.Knowledge"> <select id="queryKnowledgePage" resultType="com.supervision.knowsub.vo.knowledge.KnowledgePageResVO">
select select
t1.* t1.*
from ks_knowledge t1 left join ks_knowledge_info t2 on t1.info_id = t2.id from ks_knowledge t1 left join ks_knowledge_info t2 on t1.info_id = t2.id

Loading…
Cancel
Save