From 2c3ad3ce17fe9dd63fdbea2fb0339e86d431ed66 Mon Sep 17 00:00:00 2001 From: chenwenjian Date: Sat, 8 Feb 2025 18:44:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-3300):=20=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ChangeRecordServiceImpl.java | 83 +++++++++++++++---- 1 file changed, 68 insertions(+), 15 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index df170b5c..b5966a79 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -8,6 +8,7 @@ import cn.axzo.basics.common.constant.enums.OrganizationalNodeTypeEnum; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.NumberUtil; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; +import cn.axzo.basics.report.api.ReportServiceSDK; import cn.axzo.basics.report.api.sheet.SheetWrapper; import cn.axzo.foundation.page.PageResp; import cn.axzo.framework.domain.ServiceException; @@ -53,6 +54,7 @@ import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation; import cn.axzo.nanopart.visa.server.dto.VisaAddLogContext; import cn.axzo.nanopart.visa.server.dto.VisaBillDto; import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto; +import cn.axzo.nanopart.visa.server.dto.VisaExportDto; import cn.axzo.nanopart.visa.server.dto.VisaLogParam; import cn.axzo.nanopart.visa.server.mapper.ChangeRecordDao; import cn.axzo.nanopart.visa.server.rpc.ApolloConstructionAreaGateway; @@ -104,6 +106,7 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; +import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -165,8 +168,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl fields = req.getFields(); + // 默认导出全部字段 + if (CollectionUtils.isEmpty(fields)) { + fields = Arrays.asList(VisaChangeFieldEnum.values()); + } // Set permissionVisaIdSet = this.fetchPermissionVisaIdSet(filter); List changeRecordList = Lists.newArrayList(); @@ -819,16 +827,55 @@ public class ChangeRecordServiceImpl extends ServiceImpl projectInfoMapById; + Map initiatorMap; + if (fields.contains(VisaChangeFieldEnum.RELATION_PROJECT)) { + List projectIdList = changeRecordList.stream().map(ChangeRecord::getRelationProject).collect(Collectors.toList()); + projectInfoMapById = getProjectInfoMapById(projectIdList); + } else { + projectInfoMapById = Collections.emptyMap(); + } + // 发起人 + if (fields.contains(VisaChangeFieldEnum.CREATE_BY)) { + List initiatorPersonIdList = changeRecordList.stream().map(ChangeRecord::getCreateBy).distinct().collect(Collectors.toList()); + // Map + initiatorMap = getPersonBriefInfoMap(changeRecordList.get(0).getRelationWorkspaceId(), initiatorPersonIdList); + } else { + initiatorMap = Collections.emptyMap(); + } + + List data = changeRecordList.stream() + .map(item -> VisaExportDto.builder() + .no(item.getNo()) + .type(item.getType().getDesc()) + .status(item.getStatus().getDesc()) + .topic(item.getTopic()) + .relationProject(CollUtil.isNotEmpty(projectInfoMapById) ? projectInfoMapById.getOrDefault(item.getRelationProject(), "") : "") + .happenTime(item.getHappenTime()) + .amountChange(item.getAmountChange()) + .approvalCompleteTime(Objects.equals(VisaStatusEnum.COMPLETED, item.getStatus()) ? item.getApprovalCompleteTime() : null) + .initiator(CollUtil.isNotEmpty(initiatorMap) ? initiatorMap.getOrDefault(item.getCreateBy(), OrgNodeUserBriefInfoResp.builder().build()).getRealName() : "") + .build()) + .collect(Collectors.toList()); + /*导出文excel并上传至云*/ String scene = "visa"; String fileName = String.format("变更签证单%s", DateUtil.format(new Date(), "yyyyMMddHHmmss")); - SheetWrapper sheetWrapper = new SheetWrapper(); - sheetWrapper.setTitle("变更签证单"); -// sheetWrapper -// reportServiceSDK.asyncUploadReportPsw(scene, fileName, null, false, ); + String sheetName = "变更签证表"; + String headerName = "变更签证单"; + SheetWrapper sheetWrapper = SheetWrapper.builder() + .title(headerName) + .sheetName(sheetName) + .includeColumnFieldNames(fields.stream() + .map(VisaChangeFieldEnum::getDesc) + .collect(Collectors.toList())) + .sourceData(data) + .build(); + reportServiceSDK.asyncUploadReportPsw(scene, fileName, null, false, sheetWrapper); } private LambdaQueryChainWrapper getFilter(VisaChangePageSearchReq filter, Set permissionVisaIdSet) { @@ -918,10 +965,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl projectIdList = records.stream().map(ChangeRecord::getRelationProject).distinct().collect(Collectors.toList()); - List projectBriefByIds = visaProjectApiGateway.getProjectBriefByIds(projectIdList); - AssertUtil.notEmpty(projectBriefByIds, "工程信息获取失败"); - // Map - Map projectIdNameMap = projectBriefByIds.stream().collect(Collectors.toMap(ProjectBriefResp::getId, ProjectBriefResp::getName)); + Map projectIdNameMap = getProjectInfoMapById(projectIdList); /*获取变更单发起人*/ List visaIdList = records.stream().map(ChangeRecord::getId).distinct().collect(Collectors.toList()); @@ -931,7 +975,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl initiatorPersonIdList = visaIdInitiatorMap.values().stream().map(ChangeRecordConfirm::getPersonId).distinct().collect(Collectors.toList()); - // Map + // Map Map initiatorMap = getPersonBriefInfoMap(records.get(0).getRelationWorkspaceId(), initiatorPersonIdList); AssertUtil.isTrue(CollUtil.isNotEmpty(initiatorMap), "发起人信息获取失败"); @@ -966,6 +1010,15 @@ public class ChangeRecordServiceImpl extends ServiceImpl getProjectInfoMapById(List projectIdList) { + List projectBriefByIds = visaProjectApiGateway.getProjectBriefByIds(projectIdList); + if (CollectionUtils.isEmpty(projectBriefByIds)) { + return Collections.emptyMap(); + } + // Map + return projectBriefByIds.stream().collect(Collectors.toMap(ProjectBriefResp::getId, ProjectBriefResp::getName)); + } + private Map getInitiatorMapByVisaId(List visaIdList) { VisaConfirmDto visaConfirmDto = VisaConfirmDto.builder() .bizType(VisaConfirmBizTypeEnum.CREATE) @@ -980,17 +1033,17 @@ public class ChangeRecordServiceImpl extends ServiceImpl