|
|
|
@ -17,10 +17,10 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
|
@Service
|
|
|
|
@ -31,7 +31,7 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
|
|
|
|
|
private final KnowledgeContextService knowledgeContextService;
|
|
|
|
|
|
|
|
|
|
private final KnowledgeBaseInfoService knowledgeBaseInfoService;
|
|
|
|
|
private final KnowledgeInfoService knowledgeInfoService;
|
|
|
|
|
|
|
|
|
|
private final KnowledgeAttachmentService knowledgeAttachmentService;
|
|
|
|
|
|
|
|
|
@ -43,25 +43,36 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public IPage<Knowledge> queryKnowledgePage(Integer status, String title, String publishDeptName, Integer pageNum, Integer pageSize) {
|
|
|
|
|
public IPage<Knowledge> queryKnowledgePage(Integer status,
|
|
|
|
|
String title,
|
|
|
|
|
String publishDeptId,
|
|
|
|
|
String baseId,
|
|
|
|
|
String submittedDeptId,
|
|
|
|
|
LocalDateTime publishDateBegin,
|
|
|
|
|
LocalDateTime publishDateEnd, Integer pageNum, Integer pageSize) {
|
|
|
|
|
String userId = UserUtil.getUser().getId();
|
|
|
|
|
return knowledgeService.queryKnowledgePage(status, title, publishDeptName, userId, pageNum, pageSize);
|
|
|
|
|
return knowledgeService.queryKnowledgePage(status, title, publishDeptId, baseId, submittedDeptId, publishDateBegin, publishDateEnd, userId, pageNum, pageSize);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void saveKnowledge(SaveKnowledgeReqVO reqVO) {
|
|
|
|
|
Assert.notBlank(reqVO.getBaseId(),"应用子库不能为空");
|
|
|
|
|
var context = new KnowledgeContext();
|
|
|
|
|
context.setContext(reqVO.getContent());
|
|
|
|
|
knowledgeContextService.save(context);
|
|
|
|
|
|
|
|
|
|
KnowledgeInfo baseInfo = reqVO.getKnowledgeInfo();
|
|
|
|
|
baseInfo.setContextId(context.getId());
|
|
|
|
|
knowledgeInfoService.save(baseInfo);
|
|
|
|
|
|
|
|
|
|
Knowledge knowledge = new Knowledge();
|
|
|
|
|
|
|
|
|
|
knowledge.setTitle(reqVO.getTitle());
|
|
|
|
|
knowledge.setContentId(context.getId());
|
|
|
|
|
// TODO 这里目前子库设置为空
|
|
|
|
|
knowledge.setBaseId(null);
|
|
|
|
|
knowledge.setPublishDept(reqVO.getPublishDept());
|
|
|
|
|
knowledge.setInfoId(baseInfo.getId());
|
|
|
|
|
knowledge.setBaseId(reqVO.getBaseId());
|
|
|
|
|
knowledge.setPublishDeptId(reqVO.getPublishDeptId());
|
|
|
|
|
// 目前只有人工添加
|
|
|
|
|
knowledge.setKnowledgeFrom(1);
|
|
|
|
|
knowledge.setStatus(reqVO.getOperate() == 1 ? StatusEnum.DRAFT.getStatus() : StatusEnum.WAIT_APPROVAL.getStatus());
|
|
|
|
@ -71,9 +82,7 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
}
|
|
|
|
|
knowledgeService.save(knowledge);
|
|
|
|
|
// 保存知识的基本信息
|
|
|
|
|
KnowledgeBaseInfo baseInfo = reqVO.getKnowledgeBaseInfo();
|
|
|
|
|
baseInfo.setContextId(context.getId());
|
|
|
|
|
knowledgeBaseInfoService.save(baseInfo);
|
|
|
|
|
|
|
|
|
|
// 附件以及URL没添加
|
|
|
|
|
for (String fileId : reqVO.getFileIdList()) {
|
|
|
|
|
KnowledgeAttachment attachment = new KnowledgeAttachment();
|
|
|
|
@ -100,6 +109,7 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void updateKnowledge(ModifyKnowledgeReqVO reqVO) {
|
|
|
|
|
Assert.notBlank(reqVO.getBaseId(),"应用子库不能为空");
|
|
|
|
|
Knowledge knowledge = knowledgeService.getOptById(reqVO.getKnowledgeId()).orElseThrow(() -> new BusinessException("未找到知识"));
|
|
|
|
|
// 首先校验状态,草稿/已撤回/已失效/驳回,才能修改(通过的,要先撤回才能修改)
|
|
|
|
|
Set<Integer> canModifyStatusSet = Set.of(StatusEnum.DRAFT.getStatus(), StatusEnum.RECALL.getStatus(), StatusEnum.INVALID.getStatus(), StatusEnum.REJECT.getStatus());
|
|
|
|
@ -112,8 +122,8 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
|
|
|
|
|
// 然后更新
|
|
|
|
|
knowledge.setTitle(reqVO.getTitle());
|
|
|
|
|
// TODO 这里目前子库设置为空
|
|
|
|
|
knowledge.setPublishDept(reqVO.getPublishDept());
|
|
|
|
|
knowledge.setBaseId(reqVO.getBaseId());
|
|
|
|
|
knowledge.setPublishDeptId(reqVO.getPublishDeptId());
|
|
|
|
|
knowledge.setSubmittedDeptId(reqVO.getSubmittedDeptId());
|
|
|
|
|
knowledge.setStatus(reqVO.getOperate() == 1 ? StatusEnum.DRAFT.getStatus() : StatusEnum.WAIT_APPROVAL.getStatus());
|
|
|
|
|
|
|
|
|
@ -123,20 +133,20 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
}
|
|
|
|
|
knowledgeService.updateById(knowledge);
|
|
|
|
|
// 更新基础信息
|
|
|
|
|
KnowledgeBaseInfo knowledgeBaseInfo = reqVO.getKnowledgeBaseInfo();
|
|
|
|
|
Assert.notBlank(knowledgeBaseInfo.getKnowledgeId(), "知识ID不能为空");
|
|
|
|
|
KnowledgeInfo knowledgeInfo = reqVO.getKnowledgeInfo();
|
|
|
|
|
Assert.notBlank(knowledgeInfo.getKnowledgeId(), "知识ID不能为空");
|
|
|
|
|
// 这里需要用SQL进行更新,不能用封装的updateById,因为前端某些字段可能变为空,用updateById不能让那个想为空的变成空
|
|
|
|
|
knowledgeBaseInfoService.lambdaUpdate()
|
|
|
|
|
.set(KnowledgeBaseInfo::getPolicyType, knowledgeBaseInfo.getPolicyType())
|
|
|
|
|
.set(KnowledgeBaseInfo::getTerritory, knowledgeBaseInfo.getTerritory())
|
|
|
|
|
.set(KnowledgeBaseInfo::getPublishScope, knowledgeBaseInfo.getPublishScope())
|
|
|
|
|
.set(KnowledgeBaseInfo::getKnowledgeTag, knowledgeBaseInfo.getKnowledgeTag())
|
|
|
|
|
.set(KnowledgeBaseInfo::getAutoLoseEffect, knowledgeBaseInfo.getAutoLoseEffect())
|
|
|
|
|
.set(KnowledgeBaseInfo::getExecTimeBegin, knowledgeBaseInfo.getExecTimeBegin())
|
|
|
|
|
.set(KnowledgeBaseInfo::getExecTimeEnd, knowledgeBaseInfo.getExecTimeEnd())
|
|
|
|
|
.set(KnowledgeBaseInfo::getTimeliness, knowledgeBaseInfo.getTimeliness())
|
|
|
|
|
.set(KnowledgeBaseInfo::getPublishDate, knowledgeBaseInfo.getPublishDate())
|
|
|
|
|
.eq(KnowledgeBaseInfo::getKnowledgeId, knowledgeBaseInfo.getKnowledgeId()).update();
|
|
|
|
|
knowledgeInfoService.lambdaUpdate()
|
|
|
|
|
.set(KnowledgeInfo::getPolicyType, knowledgeInfo.getPolicyType())
|
|
|
|
|
.set(KnowledgeInfo::getTerritory, knowledgeInfo.getTerritory())
|
|
|
|
|
.set(KnowledgeInfo::getPublishScope, knowledgeInfo.getPublishScope())
|
|
|
|
|
.set(KnowledgeInfo::getKnowledgeTag, knowledgeInfo.getKnowledgeTag())
|
|
|
|
|
.set(KnowledgeInfo::getAutoLoseEffect, knowledgeInfo.getAutoLoseEffect())
|
|
|
|
|
.set(KnowledgeInfo::getExecTimeBegin, knowledgeInfo.getExecTimeBegin())
|
|
|
|
|
.set(KnowledgeInfo::getExecTimeEnd, knowledgeInfo.getExecTimeEnd())
|
|
|
|
|
.set(KnowledgeInfo::getTimeliness, knowledgeInfo.getTimeliness())
|
|
|
|
|
.set(KnowledgeInfo::getPublishDate, knowledgeInfo.getPublishDate())
|
|
|
|
|
.eq(KnowledgeInfo::getKnowledgeId, knowledgeInfo.getKnowledgeId()).update();
|
|
|
|
|
// 有可能更新附件
|
|
|
|
|
updateKnowledgeFile(reqVO, knowledge);
|
|
|
|
|
// 有可能更新URL
|
|
|
|
@ -211,13 +221,13 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
@Override
|
|
|
|
|
public KnowledgeDetailResVO queryKnowledgeDetail(String knowledgeId) {
|
|
|
|
|
Knowledge knowledge = knowledgeService.getOptById(knowledgeId).orElseThrow(() -> new BusinessException("未找到知识"));
|
|
|
|
|
KnowledgeBaseInfo knowledgeBaseInfo = knowledgeBaseInfoService.lambdaQuery().eq(KnowledgeBaseInfo::getKnowledgeId, knowledgeId).oneOpt().orElse(new KnowledgeBaseInfo());
|
|
|
|
|
KnowledgeInfo knowledgeInfo = knowledgeInfoService.lambdaQuery().eq(KnowledgeInfo::getKnowledgeId, knowledgeId).oneOpt().orElse(new KnowledgeInfo());
|
|
|
|
|
KnowledgeContext knowledgeContext = knowledgeContextService.getOptById(knowledge.getContentId()).orElse(new KnowledgeContext());
|
|
|
|
|
List<KnowledgeLink> knowledgeLinkList = knowledgeLinkService.lambdaQuery().eq(KnowledgeLink::getKnowledgeId, knowledgeId).list();
|
|
|
|
|
List<KnowledgeAttachment> knowledgeAttachmentList = knowledgeAttachmentService.lambdaQuery().eq(KnowledgeAttachment::getKnowledgeId, knowledgeId).list();
|
|
|
|
|
List<String> fileIdList = knowledgeAttachmentList.stream().map(KnowledgeAttachment::getFileId).toList();
|
|
|
|
|
List<FileInfo> fileInfos = fileService.listByFileId(fileIdList);
|
|
|
|
|
return new KnowledgeDetailResVO(knowledge, knowledgeBaseInfo, knowledgeContext, knowledgeLinkList, fileInfos);
|
|
|
|
|
return new KnowledgeDetailResVO(knowledge, knowledgeInfo, knowledgeContext, knowledgeLinkList, fileInfos);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -230,7 +240,7 @@ public class KnowledgeManageServiceImpl implements KnowledgeManageService {
|
|
|
|
|
if (flowRecordService.lambdaQuery().eq(KnowledgeFlowRecord::getKnowledgeId, knowledgeId).count() == 0) {
|
|
|
|
|
// 如果没有走过审批的记录,则可以直接删除
|
|
|
|
|
knowledgeService.removeById(knowledgeId);
|
|
|
|
|
knowledgeBaseInfoService.lambdaUpdate().eq(KnowledgeBaseInfo::getKnowledgeId, knowledgeId).remove();
|
|
|
|
|
knowledgeInfoService.lambdaUpdate().eq(KnowledgeInfo::getKnowledgeId, knowledgeId).remove();
|
|
|
|
|
knowledgeContextService.lambdaUpdate().eq(KnowledgeContext::getId, knowledge.getContentId()).remove();
|
|
|
|
|
// 删除文件
|
|
|
|
|
List<KnowledgeAttachment> list = knowledgeAttachmentService.lambdaQuery().eq(KnowledgeAttachment::getKnowledgeId, knowledgeId).list();
|
|
|
|
|