|
|
@@ -1,13 +1,20 @@
|
|
|
package com.yingpaipay.business.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.lang.Dict;
|
|
|
+import cn.hutool.core.util.IdUtil;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.yingpaipay.business.constant.*;
|
|
|
import com.yingpaipay.business.domain.DocumentAuditLog;
|
|
|
import com.yingpaipay.business.domain.Folder;
|
|
|
+import com.yingpaipay.business.domain.Project;
|
|
|
import com.yingpaipay.business.domain.bo.*;
|
|
|
+import com.yingpaipay.business.domain.excel.ProjectExcel;
|
|
|
import com.yingpaipay.business.domain.vo.*;
|
|
|
+import com.yingpaipay.business.enumeration.DocumentStatusEnum;
|
|
|
import com.yingpaipay.business.mapper.DocumentAuditLogMapper;
|
|
|
import com.yingpaipay.common.file.util.PdfUtils;
|
|
|
+import com.yingpaipay.system.domain.SysUserFolders;
|
|
|
+import com.yingpaipay.system.mapper.SysUserFoldersMapper;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
import org.apache.commons.io.FilenameUtils;
|
|
|
import org.dromara.common.core.constant.GlobalConstants;
|
|
|
@@ -16,6 +23,7 @@ import org.dromara.common.core.utils.MapstructUtils;
|
|
|
import org.dromara.common.core.utils.MessageUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.core.utils.file.FileUtils;
|
|
|
+import org.dromara.common.json.utils.JsonUtils;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
@@ -28,10 +36,12 @@ import org.dromara.common.oss.factory.OssFactory;
|
|
|
import org.dromara.common.redis.utils.RedisUtils;
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
import org.dromara.common.tenant.helper.TenantHelper;
|
|
|
+import org.dromara.system.domain.SysUser;
|
|
|
import org.dromara.system.domain.vo.SysOssVo;
|
|
|
import org.dromara.system.service.ISysDictTypeService;
|
|
|
import org.dromara.system.service.ISysOssService;
|
|
|
import org.dromara.system.service.ISysUserService;
|
|
|
+import org.springframework.context.i18n.LocaleContextHolder;
|
|
|
import org.springframework.http.MediaType;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.yingpaipay.business.domain.Document;
|
|
|
@@ -42,6 +52,9 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.io.*;
|
|
|
import java.nio.file.Files;
|
|
|
import java.nio.file.Path;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -59,6 +72,7 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
|
|
|
private final DocumentMapper baseMapper;
|
|
|
private final DocumentAuditLogMapper auditLogMapper;
|
|
|
+ private final SysUserFoldersMapper userFoldersMapper;
|
|
|
|
|
|
private final ISysDictTypeService dictTypeService;
|
|
|
private final ISysOssService ossService;
|
|
|
@@ -105,7 +119,7 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
List<Long> userIds = new ArrayList<>();
|
|
|
Map<Long, String> userMap = new HashMap<>();
|
|
|
documents.forEach(e -> {
|
|
|
- ossIds.add(e.getOssId());
|
|
|
+ ossIds.add(e.getActualDocument());
|
|
|
folderIds.add(e.getFolderId());
|
|
|
userIds.add(e.getSubmitter());
|
|
|
userIds.add(e.getPlanSubmitter());
|
|
|
@@ -114,9 +128,9 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
ossService.queryListByIds(ossIds).forEach(e -> ossMap.put(e.getOssId(), e));
|
|
|
userService.selectUserByIds(userIds).forEach(e -> userMap.put(e.getUserId(), e.getNickName()));
|
|
|
documents.forEach(e -> {
|
|
|
- SysOssVo ossVo = ossMap.get(e.getOssId());
|
|
|
+ SysOssVo ossVo = ossMap.get(e.getActualDocument());
|
|
|
if (ossVo != null) {
|
|
|
- e.setFileName(ossVo.getOriginalName());
|
|
|
+ e.setActualDocumentName(ossVo.getOriginalName());
|
|
|
}
|
|
|
e.setSubmitterName(userMap.get(e.getSubmitter()));
|
|
|
e.setPlanSubmitterName(userMap.get(e.getPlanSubmitter()));
|
|
|
@@ -225,10 +239,11 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
return baseMapper.update(
|
|
|
Wrappers.lambdaUpdate(Document.class)
|
|
|
.eq(Document::getId, bo.getDocumentId())
|
|
|
- .set(Document::getOssId, bo.getOssId())
|
|
|
+ .set(Document::getActualDocument, bo.getOssId())
|
|
|
.set(Document::getSubmitTime, new Date())
|
|
|
.set(Document::getSubmitter, LoginHelper.getUserId())
|
|
|
- .set(Document::getStatus, DocumentStatusConst.UN_AUDIT)
|
|
|
+ .set(Document::getEffectiveDate, bo.getEffectiveDate())
|
|
|
+ .set(Document::getStatus, DocumentStatusEnum.UN_AUDIT.getValue())
|
|
|
) > 0;
|
|
|
}
|
|
|
|
|
|
@@ -241,7 +256,7 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
throw new BusinessException(MessageUtils.message("document.document.audit.documentnotfound"));
|
|
|
}
|
|
|
|
|
|
- if (Objects.equals(bo.getResult(), DocumentStatusConst.UN_FILING)) {
|
|
|
+ if (Objects.equals(bo.getResult(), DocumentStatusEnum.UN_ARCHIEVED.getValue())) {
|
|
|
document.setPassTime(new Date());
|
|
|
}
|
|
|
document.setStatus(bo.getResult());
|
|
|
@@ -288,16 +303,16 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
Map<Long, SysOssVo> ossMap = new HashMap<>();
|
|
|
vos.forEach(e -> {
|
|
|
documentIds.add(e.getDocumentId());
|
|
|
- ossIds.add(e.getOssId());
|
|
|
+ ossIds.add(e.getUploadVersion());
|
|
|
});
|
|
|
ossService.queryListByIds(ossIds).forEach(e -> ossMap.put(e.getOssId(), e));
|
|
|
if (!documentIds.isEmpty()) {
|
|
|
baseMapper.selectByIds(documentIds).forEach(e -> documentMap.put(e.getId(), e));
|
|
|
}
|
|
|
vos.forEach(e -> {
|
|
|
- SysOssVo ossVo = ossMap.get(e.getOssId());
|
|
|
+ SysOssVo ossVo = ossMap.get(e.getUploadVersion());
|
|
|
Document document = documentMap.get(e.getDocumentId());
|
|
|
- e.setOssUrl(Optional.ofNullable(ossVo).map(SysOssVo::getUrl).orElse(null));
|
|
|
+ e.setUploadVersionUrl(Optional.ofNullable(ossVo).map(SysOssVo::getUrl).orElse(null));
|
|
|
e.setDocumentName(Optional.ofNullable(document).map(Document::getName).orElse(null));
|
|
|
});
|
|
|
}
|
|
|
@@ -307,17 +322,17 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
return baseMapper.update(
|
|
|
Wrappers.lambdaUpdate(Document.class)
|
|
|
.eq(Document::getId, bo.getDocumentId())
|
|
|
- .set(Document::getStatus, DocumentStatusConst.FILING)
|
|
|
+ .set(Document::getStatus, DocumentStatusEnum.ARCHIEVED.getValue())
|
|
|
) > 0;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public TableDataInfo<TaskCenterSubmissionListVo> listOnSubmission(TaskCenterSubmissionListBo bo, PageQuery pageQuery) {
|
|
|
- List<Long> projectIds = projectService.queryIdsOnSubmission(bo.getProjectCode(), bo.getProjectName());
|
|
|
+ List<Long> projectIds = projectService.queryIds(bo.getProjectCode(), bo.getProjectName());
|
|
|
if (projectIds.isEmpty()) {
|
|
|
return TableDataInfo.build();
|
|
|
}
|
|
|
- List<Long> folderIds = folderService.selectIdsOnSubmission(bo.getCenterName(), projectIds);
|
|
|
+ List<Long> folderIds = folderService.selectIds(bo.getCenterName(), projectIds);
|
|
|
LambdaQueryWrapper<Document> wrapper = buildSubmissionListWrapper(bo, folderIds);
|
|
|
IPage<Document> page = baseMapper.selectPage(pageQuery.build(), wrapper);
|
|
|
return TableDataInfo.build(page.convert(e -> {
|
|
|
@@ -339,16 +354,16 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
|
|
|
@Override
|
|
|
public TableDataInfo<TaskCenterAuditListVo> listOnAudit(TaskCenterAuditListBo bo, PageQuery pageQuery) {
|
|
|
- List<Long> projectIds = projectService.queryIdsOnSubmission(bo.getProjectCode(), bo.getProjectName());
|
|
|
+ List<Long> projectIds = projectService.queryIds(bo.getProjectCode(), bo.getProjectName());
|
|
|
if (projectIds.isEmpty()) {
|
|
|
return TableDataInfo.build();
|
|
|
}
|
|
|
- List<Long> folderIds = folderService.selectIdsOnSubmission(bo.getCenterName(), projectIds);
|
|
|
+ List<Long> folderIds = folderService.selectIds(bo.getCenterName(), projectIds);
|
|
|
LambdaQueryWrapper<Document> wrapper = buildAuditListWrapper(bo, folderIds);
|
|
|
IPage<Document> page = baseMapper.selectPage(pageQuery.build(), wrapper);
|
|
|
List<Long> ossIds = new ArrayList<>();
|
|
|
Map<Long, SysOssVo> ossMap = new HashMap<>();
|
|
|
- page.getRecords().forEach(e -> ossIds.add(e.getOssId()));
|
|
|
+ page.getRecords().forEach(e -> ossIds.add(e.getActualDocument()));
|
|
|
ossService.queryListByIds(ossIds).forEach(e -> ossMap.put(e.getOssId(), e));
|
|
|
return TableDataInfo.build(page.convert(e -> {
|
|
|
TaskCenterAuditListVo vo = new TaskCenterAuditListVo();
|
|
|
@@ -359,9 +374,9 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
vo.setSubmitter(e.getSubmitter());
|
|
|
vo.setSubmitTime(e.getSubmitTime());
|
|
|
vo.setCreateTime(e.getCreateTime());
|
|
|
- vo.setOssId(e.getOssId());
|
|
|
- vo.setFileName(ossMap.get(e.getOssId()).getOriginalName());
|
|
|
- vo.setOssUrl(ossMap.get(e.getOssId()).getUrl());
|
|
|
+ vo.setActualDocument(e.getActualDocument());
|
|
|
+ vo.setFileName(ossMap.get(e.getActualDocument()).getOriginalName());
|
|
|
+ vo.setActualDocumentUrl(ossMap.get(e.getActualDocument()).getUrl());
|
|
|
vo.setType(e.getType());
|
|
|
vo.setDocumentType(e.getPlanType());
|
|
|
return vo;
|
|
|
@@ -411,12 +426,12 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
}
|
|
|
|
|
|
private String buildRemark(Long ossId) {
|
|
|
- Document document = baseMapper.selectOne(Wrappers.lambdaQuery(Document.class).eq(Document::getOssId, ossId));
|
|
|
+ Document document = baseMapper.selectOne(Wrappers.lambdaQuery(Document.class).eq(Document::getActualDocument, ossId));
|
|
|
// 也有可能直接下载审核版本
|
|
|
if (document == null) {
|
|
|
DocumentAuditLog log = auditLogMapper.selectOne(
|
|
|
Wrappers.lambdaQuery(DocumentAuditLog.class)
|
|
|
- .eq(DocumentAuditLog::getOssId, ossId)
|
|
|
+ .eq(DocumentAuditLog::getUploadVersion, ossId)
|
|
|
);
|
|
|
if (log == null) {
|
|
|
throw new BusinessException(MessageUtils.message("document.document.download.notfound"));
|
|
|
@@ -472,7 +487,7 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
List<Long> folderIdsInDocument = new ArrayList<>();
|
|
|
Map<Long, String> folderMap = new HashMap<>();
|
|
|
page.getRecords().forEach(e -> {
|
|
|
- ossIds.add(e.getOssId());
|
|
|
+ ossIds.add(e.getActualDocument());
|
|
|
folderIdsInDocument.add(e.getFolderId());
|
|
|
});
|
|
|
folderService.listByIds(folderIdsInDocument).forEach(e -> folderMap.put(e.getId(), e.getName()));
|
|
|
@@ -485,8 +500,8 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
vo.setSubmitter(e.getSubmitter());
|
|
|
vo.setSubmitTime(e.getSubmitTime());
|
|
|
vo.setCreateTime(e.getCreateTime());
|
|
|
- vo.setOssId(e.getOssId());
|
|
|
- vo.setOssUrl(ossMap.get(e.getOssId()));
|
|
|
+ vo.setOssId(e.getActualDocument());
|
|
|
+ vo.setOssUrl(ossMap.get(e.getActualDocument()));
|
|
|
vo.setType(e.getType());
|
|
|
vo.setDocumentType(e.getPlanType());
|
|
|
vo.setProjectId(e.getProjectId());
|
|
|
@@ -503,20 +518,20 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
List<Document> documentList = baseMapper.selectList(
|
|
|
Wrappers.lambdaQuery(Document.class)
|
|
|
.eq(Document::getPlanSubmitter, LoginHelper.getUserId())
|
|
|
- .in(Document::getStatus, List.of(DocumentStatusConst.UN_UPLOAD, DocumentStatusConst.UN_AUDIT, DocumentStatusConst.AUDIT_REJECT))
|
|
|
+ .in(Document::getStatus, List.of(DocumentStatusEnum.UN_UPLOAD.getValue(), DocumentStatusEnum.UN_AUDIT.getValue(), DocumentStatusEnum.AUDIT_REJECT.getValue()))
|
|
|
);
|
|
|
vo.setToSubmit(
|
|
|
documentList
|
|
|
.stream()
|
|
|
.filter(e ->
|
|
|
- e.getStatus().equals(DocumentStatusConst.UN_UPLOAD) || e.getStatus().equals(DocumentStatusConst.AUDIT_REJECT)
|
|
|
+ e.getStatus().equals(DocumentStatusEnum.UN_UPLOAD.getValue()) || e.getStatus().equals(DocumentStatusEnum.AUDIT_REJECT.getValue())
|
|
|
).toList().size()
|
|
|
);
|
|
|
vo.setToAudit(
|
|
|
documentList
|
|
|
.stream()
|
|
|
.filter(e ->
|
|
|
- e.getStatus().equals(DocumentStatusConst.UN_AUDIT)
|
|
|
+ e.getStatus().equals(DocumentStatusEnum.UN_AUDIT.getValue())
|
|
|
).toList().size()
|
|
|
);
|
|
|
return vo;
|
|
|
@@ -529,7 +544,7 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
Wrappers.lambdaQuery(Document.class)
|
|
|
.like(StringUtils.isNotBlank(bo.getName()), Document::getName, bo.getName())
|
|
|
.eq(Document::getSubmitter, LoginHelper.getUserId())
|
|
|
- .ne(Document::getStatus, DocumentStatusConst.UN_UPLOAD)
|
|
|
+ .ne(Document::getStatus, DocumentStatusEnum.UN_UPLOAD.getValue())
|
|
|
.orderByDesc(Document::getId)
|
|
|
);
|
|
|
return TableDataInfo.build(page.convert(e -> {
|
|
|
@@ -537,7 +552,7 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
vo.setId(e.getId());
|
|
|
vo.setName(e.getName());
|
|
|
vo.setCreateTime(e.getSubmitTime());
|
|
|
- vo.setOssId(e.getOssId());
|
|
|
+ vo.setOssId(e.getActualDocument());
|
|
|
return vo;
|
|
|
}));
|
|
|
}
|
|
|
@@ -557,7 +572,7 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
vo.setId(e.getId());
|
|
|
vo.setName(e.getName());
|
|
|
vo.setCreateTime(e.getCreateTime());
|
|
|
- vo.setOssId(e.getOssId());
|
|
|
+ vo.setOssId(e.getActualDocument());
|
|
|
vo.setCreateBy(e.getCreateBy());
|
|
|
vo.setSubmitter(e.getSubmitter());
|
|
|
vo.setStatus(e.getStatus());
|
|
|
@@ -571,7 +586,7 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
pageQuery.build(),
|
|
|
Wrappers.lambdaQuery(Document.class)
|
|
|
.eq(Document::getPlanSubmitter, LoginHelper.getUserId())
|
|
|
- .in(Document::getStatus, List.of(DocumentStatusConst.UN_UPLOAD, DocumentStatusConst.AUDIT_REJECT))
|
|
|
+ .in(Document::getStatus, List.of(DocumentStatusEnum.UN_UPLOAD.getValue(), DocumentStatusEnum.AUDIT_REJECT.getValue()))
|
|
|
.like(StringUtils.isNotBlank(bo.getName()), Document::getName, bo.getName())
|
|
|
.orderByDesc(Document::getId)
|
|
|
);
|
|
|
@@ -636,10 +651,11 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
return baseMapper.update(
|
|
|
Wrappers.lambdaUpdate(Document.class)
|
|
|
.eq(Document::getId, bo.getDocumentId())
|
|
|
- .set(Document::getOssId, ossVo.getOssId())
|
|
|
- .set(Document::getStatus, DocumentStatusConst.UN_AUDIT)
|
|
|
+ .set(Document::getActualDocument, ossVo.getOssId())
|
|
|
+ .set(Document::getStatus, DocumentStatusEnum.UN_AUDIT.getValue())
|
|
|
.set(Document::getSubmitter, LoginHelper.getUserId())
|
|
|
.set(Document::getSubmitTime, new Date())
|
|
|
+ .set(Document::getEffectiveDate, bo.getEffectiveDate())
|
|
|
) > 0;
|
|
|
}
|
|
|
|
|
|
@@ -662,7 +678,7 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
|
|
|
byte[] pdfBytes = Base64.getDecoder().decode(cleanBase64);
|
|
|
|
|
|
- Path tempPath = Files.createTempFile("document_", "_" + i + ".pdf");
|
|
|
+ Path tempPath = Files.createTempFile(IdUtil.fastSimpleUUID(), ".pdf");
|
|
|
Files.write(tempPath, pdfBytes);
|
|
|
files.add(tempPath.toFile());
|
|
|
}
|
|
|
@@ -697,8 +713,8 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
Document document = new Document();
|
|
|
document.setFolderId(bo.getFolderId());
|
|
|
document.setName(bo.getFileName());
|
|
|
- document.setStatus(DocumentStatusConst.UN_AUDIT);
|
|
|
- document.setOssId(ossVo.getOssId());
|
|
|
+ document.setStatus(DocumentStatusEnum.UN_AUDIT.getValue());
|
|
|
+ document.setActualDocument(ossVo.getOssId());
|
|
|
document.setNote(bo.getNote());
|
|
|
document.setType(DocumentTypeConst.NOT_PLAN);
|
|
|
document.setSubmitter(LoginHelper.getUserId());
|
|
|
@@ -763,10 +779,11 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
);
|
|
|
for (Document document : documents) {
|
|
|
if (document.getName().equals(bo.getName())) {
|
|
|
- document.setOssId(ossVo.getOssId());
|
|
|
+ document.setActualDocument(ossVo.getOssId());
|
|
|
document.setSubmitter(LoginHelper.getUserId());
|
|
|
document.setSubmitTime(new Date());
|
|
|
- document.setStatus(DocumentStatusConst.UN_AUDIT);
|
|
|
+ document.setStatus(DocumentStatusEnum.UN_AUDIT.getValue());
|
|
|
+ document.setEffectiveDate(bo.getEffectiveDate());
|
|
|
return baseMapper.updateById(document) > 0;
|
|
|
}
|
|
|
}
|
|
|
@@ -774,12 +791,13 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
Document document = new Document();
|
|
|
document.setFolderId(bo.getCenter() != 0L ? bo.getCenter() : bo.getCountry());
|
|
|
document.setName(bo.getName());
|
|
|
- document.setStatus(DocumentStatusConst.UN_AUDIT);
|
|
|
- document.setOssId(ossVo.getOssId());
|
|
|
+ document.setStatus(DocumentStatusEnum.UN_AUDIT.getValue());
|
|
|
+ document.setActualDocument(ossVo.getOssId());
|
|
|
document.setType(DocumentTypeConst.NOT_PLAN);
|
|
|
document.setSubmitter(LoginHelper.getUserId());
|
|
|
document.setSubmitTime(new Date());
|
|
|
document.setProjectId(bo.getProjectId());
|
|
|
+ document.setEffectiveDate(bo.getEffectiveDate());
|
|
|
document.setSpecificationType(bo.getCenter() != 0L ? SpecificationTypeConst.CENTER : SpecificationTypeConst.PROJECT);
|
|
|
document.setTenantId(TenantHelper.getTenantId());
|
|
|
|
|
|
@@ -795,6 +813,207 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public boolean removeTemp(Long documentId) {
|
|
|
+ return baseMapper.deleteById(documentId) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public boolean specify(DocumentSpecifyBo bo) {
|
|
|
+
|
|
|
+ Document originDocument = baseMapper.selectById(bo.getDocumentId());
|
|
|
+
|
|
|
+ if (bo.getMissingDocumentId() != null) {
|
|
|
+ Document document = baseMapper.selectById(bo.getMissingDocumentId());
|
|
|
+ document.setActualDocument(originDocument.getActualDocument());
|
|
|
+ document.setSubmitter(originDocument.getSubmitter());
|
|
|
+ document.setSubmitTime(originDocument.getSubmitTime());
|
|
|
+ document.setStatus(DocumentStatusEnum.UN_AUDIT.getValue());
|
|
|
+ boolean updateFlag = baseMapper.updateById(document) == 0;
|
|
|
+ if (updateFlag) {
|
|
|
+ throw new RuntimeException("修改目标文件失败");
|
|
|
+ }
|
|
|
+ boolean deleteFlag = baseMapper.deleteById(originDocument) == 0;
|
|
|
+ if (deleteFlag) {
|
|
|
+ throw new RuntimeException("删除临时文件失败");
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (bo.getFolderId() == null) {
|
|
|
+ throw new BusinessException(MessageUtils.message("document.document.temp.specify.nowhere"));
|
|
|
+ }
|
|
|
+ originDocument.setFolderId(bo.getFolderId());
|
|
|
+ return baseMapper.updateById(originDocument) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public TableDataInfo<DocumentListOnSpecifyVo> listOnSpecify(DocumentListOnSpecifyBo bo, PageQuery pageQuery) {
|
|
|
+ List<Folder> folders = folderService.queryByProjectIds(List.of(bo.getProjectId()));
|
|
|
+ Map<Long, Folder> folderMap = new HashMap<>();
|
|
|
+ List<Long> folderIds = new ArrayList<>();
|
|
|
+ folders.forEach(e -> {
|
|
|
+ folderIds.add(e.getId());
|
|
|
+ folderMap.put(e.getId(), e);
|
|
|
+ });
|
|
|
+ IPage<Document> page = baseMapper.selectPage(pageQuery.build(), buildSpecifyListWrapper(bo, folderIds));
|
|
|
+ return TableDataInfo.build(page.convert(e -> {
|
|
|
+ DocumentListOnSpecifyVo vo = new DocumentListOnSpecifyVo();
|
|
|
+ vo.setId(e.getId());
|
|
|
+ vo.setName(e.getName());
|
|
|
+ StringBuilder folder = new StringBuilder();
|
|
|
+ long current = e.getFolderId();
|
|
|
+ for (;;) {
|
|
|
+ Folder currentFolder = folderMap.get(current);
|
|
|
+ folder.insert(0, currentFolder.getName()).insert(0, "/");
|
|
|
+ if (currentFolder.getParentId() == null) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ current = currentFolder.getParentId();
|
|
|
+ }
|
|
|
+ vo.setFolder(folder.toString());
|
|
|
+ vo.setStatus(e.getStatus());
|
|
|
+ vo.setDeadline(e.getSubmitDeadline());
|
|
|
+ vo.setPlanSubmitter(e.getPlanSubmitter());
|
|
|
+ vo.setCreateBy(e.getCreateBy());
|
|
|
+ vo.setCreateTime(e.getCreateTime());
|
|
|
+ return vo;
|
|
|
+ }));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ProjectExcel> getListByProjectId(Long projectId) {
|
|
|
+ List<Document> documentList = baseMapper.selectList(
|
|
|
+ Wrappers.lambdaQuery(Document.class)
|
|
|
+ .eq(Document::getProjectId, projectId)
|
|
|
+ );
|
|
|
+ List<Long> ossIds = new ArrayList<>();
|
|
|
+ List<Long> userIds = new ArrayList<>();
|
|
|
+ Map<Long, SysOssVo> ossMap = new HashMap<>();
|
|
|
+ Map<Long, SysUser> userMap = new HashMap<>();
|
|
|
+ Map<String, String> planType = new HashMap<>();
|
|
|
+ documentList.forEach(e -> {
|
|
|
+ ossIds.add(e.getActualDocument());
|
|
|
+ userIds.add(e.getPlanSubmitter());
|
|
|
+ userIds.add(e.getCreateBy());
|
|
|
+ userIds.add(e.getSubmitter());
|
|
|
+ });
|
|
|
+ ossService.queryListByIds(ossIds).forEach(e -> ossMap.put(e.getOssId(), e));
|
|
|
+ userService.selectUserByIds(userIds).forEach(e -> userMap.put(e.getUserId(), e));
|
|
|
+ dictTypeService.selectDictDataByType(DictTypeConst.PLAN_DOCUMENT_TYPE).forEach(e -> planType.put(e.getDictValue(), e.getDictLabel()));
|
|
|
+ Project project = projectService.queryById(projectId);
|
|
|
+ List<Folder> folders = folderService.queryByProjectId(projectId);
|
|
|
+ Map<Long, Folder> folderMap = new HashMap<>();
|
|
|
+ folders.forEach(e -> folderMap.put(e.getId(), e));
|
|
|
+ List<ProjectExcel> list = new ArrayList<>();
|
|
|
+ for (Document document : documentList) {
|
|
|
+ ProjectExcel excel = new ProjectExcel();
|
|
|
+ excel.setId(document.getId());
|
|
|
+ excel.setName(document.getName());
|
|
|
+ excel.setStatus(DocumentStatusEnum.getLabel(document.getStatus()));
|
|
|
+ excel.setActualDocumentName(
|
|
|
+ Optional.ofNullable(document.getActualDocument())
|
|
|
+ .map(ossMap::get)
|
|
|
+ .map(SysOssVo::getOriginalName)
|
|
|
+ .orElse("-")
|
|
|
+ );
|
|
|
+ long currentFolder = document.getFolderId();
|
|
|
+ if (currentFolder != 0L) {
|
|
|
+ for (;;) {
|
|
|
+ Folder folder = folderMap.get(currentFolder);
|
|
|
+ if (folder.getType().equals(FolderTypeConst.CENTER)) {
|
|
|
+ excel.setCenterId(currentFolder);
|
|
|
+ excel.setCenterName(folder.getName());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (folder.getType().equals(FolderTypeConst.NORMAL)) {
|
|
|
+ if (folder.getParentId() != null) {
|
|
|
+ currentFolder = folder.getParentId();
|
|
|
+ continue;
|
|
|
+ } else {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ excel.setCenterName("-");
|
|
|
+ }
|
|
|
+ excel.setPlanSubmitter(
|
|
|
+ Optional.ofNullable(document.getPlanSubmitter())
|
|
|
+ .map(userMap::get)
|
|
|
+ .map(e -> e.getNickName() + "(" + e.getEmail() + ")")
|
|
|
+ .orElse("-")
|
|
|
+ );
|
|
|
+ excel.setDeadline(
|
|
|
+ Optional.ofNullable(document.getSubmitDeadline())
|
|
|
+ .map(Date::toString)
|
|
|
+ .orElse("-")
|
|
|
+ );
|
|
|
+ Date submitTime = Optional.ofNullable(document.getSubmitTime()).orElse(new Date());
|
|
|
+ excel.setDaysOverdue(
|
|
|
+ Optional.ofNullable(document.getSubmitDeadline())
|
|
|
+ .map(deadline -> {
|
|
|
+ LocalDate dueLocalDate = deadline.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ LocalDate submitLocalDate = submitTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ if (!submitLocalDate.isAfter(dueLocalDate)) {
|
|
|
+ return 0L;
|
|
|
+ }
|
|
|
+ return ChronoUnit.DAYS.between(dueLocalDate, submitLocalDate);
|
|
|
+ })
|
|
|
+ .orElse(0L)
|
|
|
+ );
|
|
|
+ excel.setCreateBy(
|
|
|
+ Optional.ofNullable(document.getCreateBy())
|
|
|
+ .map(userMap::get)
|
|
|
+ .map(SysUser::getNickName)
|
|
|
+ .orElse("-")
|
|
|
+ );
|
|
|
+ StringBuilder path = new StringBuilder();
|
|
|
+ if (document.getFolderId() != 0L) {
|
|
|
+ Folder current = folderMap.get(document.getFolderId());
|
|
|
+ for (;;) {
|
|
|
+ path.insert(0, current.getName()).insert(0, "/");
|
|
|
+ if (current.getParentId() == null) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ current = folderMap.get(current.getParentId());
|
|
|
+ }
|
|
|
+ excel.setPath(path.toString());
|
|
|
+ } else {
|
|
|
+ excel.setName("-");
|
|
|
+ }
|
|
|
+ excel.setSubmitTime(
|
|
|
+ Optional.ofNullable(document.getSubmitTime())
|
|
|
+ .map(Date::toString)
|
|
|
+ .orElse("-")
|
|
|
+ );
|
|
|
+ excel.setSubmitter(
|
|
|
+ Optional.ofNullable(document.getSubmitter())
|
|
|
+ .map(userMap::get)
|
|
|
+ .map(SysUser::getNickName)
|
|
|
+ .orElse("-")
|
|
|
+ );
|
|
|
+ excel.setProjectName(project.getName());
|
|
|
+ if (StringUtils.isNotBlank(document.getPlanType())) {
|
|
|
+ Dict label = JsonUtils.parseMap(planType.get(document.getPlanType()));
|
|
|
+ excel.setPlanType(LocaleContextHolder.getLocale().getLanguage().equals("zh") ? label.getStr("zh_CN") : label.getStr("en_US"));
|
|
|
+ }
|
|
|
+ list.add(excel);
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ private LambdaQueryWrapper<Document> buildSpecifyListWrapper(DocumentListOnSpecifyBo bo, List<Long> folderIds) {
|
|
|
+ return Wrappers.lambdaQuery(Document.class)
|
|
|
+ .in(Document::getFolderId, folderIds.isEmpty() ? List.of(-1L) : folderIds)
|
|
|
+ .like(StringUtils.isNotBlank(bo.getName()), Document::getName, bo.getName())
|
|
|
+ .in(Document::getStatus, List.of(DocumentStatusEnum.UN_UPLOAD.getValue(), DocumentStatusEnum.AUDIT_REJECT.getValue()))
|
|
|
+ .orderByDesc(Document::getId);
|
|
|
+ }
|
|
|
+
|
|
|
private void buildFolders(List<Long> selected, Folder folder, Map<Long, List<Folder>> childrenMap) {
|
|
|
selected.add(folder.getId());
|
|
|
List<Folder> childrens = childrenMap.get(folder.getId());
|
|
|
@@ -809,7 +1028,7 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
.like(StringUtils.isNotBlank(bo.getName()), Document::getName, bo.getName())
|
|
|
.eq(Document::getCreateBy, LoginHelper.getUserId())
|
|
|
.in(!folderIds.isEmpty(), Document::getFolderId, folderIds)
|
|
|
- .eq(Document::getStatus, DocumentStatusConst.UN_FILING)
|
|
|
+ .eq(Document::getStatus, DocumentStatusEnum.UN_ARCHIEVED.getValue())
|
|
|
.orderByDesc(Document::getId);
|
|
|
}
|
|
|
|
|
|
@@ -829,9 +1048,9 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
private LambdaQueryWrapper<Document> buildAuditListWrapper(TaskCenterAuditListBo bo, List<Long> folderIds) {
|
|
|
return Wrappers.lambdaQuery(Document.class)
|
|
|
.like(StringUtils.isNotBlank(bo.getName()), Document::getName, bo.getName())
|
|
|
- .eq(Document::getSubmitter, LoginHelper.getUserId())
|
|
|
+ .eq(Document::getCreateBy, LoginHelper.getUserId())
|
|
|
.in(!folderIds.isEmpty(), Document::getFolderId, folderIds)
|
|
|
- .eq(Document::getStatus, DocumentStatusConst.UN_AUDIT)
|
|
|
+ .eq(Document::getStatus, DocumentStatusEnum.UN_AUDIT.getValue())
|
|
|
.orderByDesc(Document::getId);
|
|
|
}
|
|
|
|
|
|
@@ -841,25 +1060,20 @@ public class DocumentServiceImpl implements IDocumentService {
|
|
|
.eq(bo.getStatus() != null, Document::getStatus, bo.getStatus())
|
|
|
.eq(Document::getPlanSubmitter, LoginHelper.getUserId())
|
|
|
.in(!folderIds.isEmpty(), Document::getFolderId, folderIds)
|
|
|
- .in(Document::getStatus, List.of(DocumentStatusConst.UN_UPLOAD, DocumentStatusConst.AUDIT_REJECT))
|
|
|
+ .in(Document::getStatus, List.of(DocumentStatusEnum.UN_UPLOAD.getValue(), DocumentStatusEnum.AUDIT_REJECT.getValue()))
|
|
|
.orderByDesc(Document::getId);
|
|
|
}
|
|
|
|
|
|
private DocumentAuditLog buildLog(Document document, String type, DocumentAuditBo bo) {
|
|
|
DocumentAuditLog log = new DocumentAuditLog();
|
|
|
log.setDocumentId(document.getId());
|
|
|
- log.setOssId(document.getOssId());
|
|
|
+ log.setUploadVersion(document.getActualDocument());
|
|
|
log.setAuditorType(type);
|
|
|
log.setAuditor(LoginHelper.getUserId());
|
|
|
log.setResult(bo.getResult());
|
|
|
log.setRejectReason(bo.getRejectReason());
|
|
|
log.setAuditTime(new Date());
|
|
|
log.setTenantId(TenantHelper.getTenantId());
|
|
|
- log.setCreateDept(LoginHelper.getDeptId());
|
|
|
- log.setCreateBy(LoginHelper.getUserId());
|
|
|
- log.setCreateTime(new Date());
|
|
|
- log.setUpdateBy(LoginHelper.getUserId());
|
|
|
- log.setUpdateTime(new Date());
|
|
|
log.setSubmitter(document.getSubmitter());
|
|
|
return log;
|
|
|
}
|