优化分页查询接口

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.service.KnowledgeManageService;
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.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
@ -40,14 +41,14 @@ public class KnowledgeManageController {
@Parameter(name = "pageSize", description = "分页", in = ParameterIn.QUERY)
})
@GetMapping("queryKnowledgePage")
public IPage<Knowledge> queryKnowledgePage(@RequestParam(required = false) Integer status,
@RequestParam(required = false) String title,
@RequestParam(required = false) String publishDeptId,
@RequestParam(required = false) String baseId,
@RequestParam(required = false) String submittedDeptId,
@RequestParam(required = false)LocalDateTime publishDateBegin,
@RequestParam(required = false)LocalDateTime publishDateEnd,
Integer pageNum, Integer pageSize) {
public IPage<KnowledgePageResVO> queryKnowledgePage(@RequestParam(required = false) Integer status,
@RequestParam(required = false) String title,
@RequestParam(required = false) String publishDeptId,
@RequestParam(required = false) String baseId,
@RequestParam(required = false) String submittedDeptId,
@RequestParam(required = false)LocalDateTime publishDateBegin,
@RequestParam(required = false)LocalDateTime publishDateEnd,
Integer pageNum, Integer pageSize) {
return knowledgeManageService.queryKnowledgePage(status, title, publishDeptId, baseId, submittedDeptId, publishDateBegin, publishDateEnd, pageNum, pageSize);
}
@ -57,7 +58,7 @@ public class KnowledgeManageController {
knowledgeManageService.saveKnowledge(reqVO);
}
@Operation(summary = "修改知识库(已撤回才能编辑)")
@Operation(summary = "修改知识库(已撤回和草稿状态才能编辑)")
@PostMapping("updateKnowledge")
public void updateKnowledge(@RequestBody ModifyKnowledgeReqVO reqVO) {
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.SaveKnowledgeReqVO;
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.RequestParam;
@ -12,14 +13,14 @@ import java.time.LocalDateTime;
public interface KnowledgeManageService {
IPage<Knowledge> queryKnowledgePage(Integer status,
String title,
String publishDeptId,
String baseId,
String submittedDeptId,
LocalDateTime publishDateBegin,
LocalDateTime publishDateEnd,
Integer pageNum, Integer pageSize);
IPage<KnowledgePageResVO> queryKnowledgePage(Integer status,
String title,
String publishDeptId,
String baseId,
String submittedDeptId,
LocalDateTime publishDateBegin,
LocalDateTime publishDateEnd,
Integer pageNum, Integer pageSize);
void saveKnowledge(SaveKnowledgeReqVO reqVO);

@ -1,32 +1,26 @@
package com.supervision.knowsub.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
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.supervision.knowsub.domain.UserInfo;
import com.supervision.knowsub.entity.vo.knowledge.KnowledgeDetailResVO;
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.entity.vo.knowledge.*;
import com.supervision.knowsub.enums.FlowTypeEnum;
import com.supervision.knowsub.enums.StatusEnum;
import com.supervision.knowsub.exception.BusinessException;
import com.supervision.knowsub.model.*;
import com.supervision.knowsub.service.*;
import com.supervision.knowsub.util.UserUtil;
import com.supervision.knowsub.vo.knowledge.KnowledgePageResVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
@ -49,9 +43,13 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
private final KnowledgeFlowService knowledgeFlowService;
private final SystemDeptService systemDeptService;
private final SystemBaseService systemBaseService;
@Override
public IPage<Knowledge> queryKnowledgePage(Integer status,
public IPage<KnowledgePageResVO> queryKnowledgePage(Integer status,
String title,
String publishDeptId,
String baseId,
@ -59,7 +57,28 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
LocalDateTime publishDateBegin,
LocalDateTime publishDateEnd, Integer pageNum, Integer pageSize) {
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

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

@ -3,6 +3,7 @@ package com.supervision.knowsub.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.knowsub.model.Knowledge;
import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.knowsub.vo.knowledge.KnowledgePageResVO;
import java.time.LocalDateTime;
@ -19,12 +20,12 @@ public interface KnowledgeService extends IService<Knowledge> {
* @param pageSize pageSize
* @return IPage<Knowledge>
*/
IPage<Knowledge> queryKnowledgePage(Integer status,
String title,
String publishDeptId,
String baseId,
String submittedDeptId,
LocalDateTime publishDateBegin,
LocalDateTime publishDateEnd,String userId, Integer pageNum, Integer pageSize);
IPage<KnowledgePageResVO> queryKnowledgePage(Integer status,
String title,
String publishDeptId,
String baseId,
String submittedDeptId,
LocalDateTime publishDateBegin,
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.service.KnowledgeService;
import com.supervision.knowsub.mapper.KnowledgeMapper;
import com.supervision.knowsub.vo.knowledge.KnowledgePageResVO;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@ -20,13 +21,13 @@ public class KnowledgeServiceImpl extends ServiceImpl<KnowledgeMapper, Knowledge
implements KnowledgeService {
@Override
public IPage<Knowledge> queryKnowledgePage(Integer status,
String title,
String publishDeptId,
String baseId,
String submittedDeptId,
LocalDateTime publishDateBegin,
LocalDateTime publishDateEnd, String userId, Integer pageNum, Integer pageSize) {
public IPage<KnowledgePageResVO> queryKnowledgePage(Integer status,
String title,
String publishDeptId,
String baseId,
String submittedDeptId,
LocalDateTime publishDateBegin,
LocalDateTime publishDateEnd, String userId, Integer pageNum, Integer pageSize) {
return this.baseMapper.queryKnowledgePage(status, title, publishDeptId, baseId, submittedDeptId, publishDateBegin, publishDateEnd, userId, new Page<>(pageNum, pageSize));
}
}

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

Loading…
Cancel
Save