diff --git a/openeulerSever/src/main/java/com/huawei/it/euler/ddd/service/software/SoftwareApplicationService.java b/openeulerSever/src/main/java/com/huawei/it/euler/ddd/service/software/SoftwareApplicationService.java index 148112d1..3845e03a 100644 --- a/openeulerSever/src/main/java/com/huawei/it/euler/ddd/service/software/SoftwareApplicationService.java +++ b/openeulerSever/src/main/java/com/huawei/it/euler/ddd/service/software/SoftwareApplicationService.java @@ -4,6 +4,7 @@ package com.huawei.it.euler.ddd.service.software; +import cn.hutool.core.date.DateUtil; import com.huawei.it.euler.ddd.domain.account.UserInfo; import com.huawei.it.euler.ddd.domain.notice.NoticeMessage; import com.huawei.it.euler.ddd.domain.notice.NoticeMessageRepository; @@ -19,8 +20,11 @@ import com.huawei.it.euler.mapper.RoleMapper; import com.huawei.it.euler.mapper.SoftwareMapper; import com.huawei.it.euler.model.entity.Software; +import com.huawei.it.euler.model.entity.SoftwareQuery; +import com.huawei.it.euler.model.enumeration.NodeEnum; import com.huawei.it.euler.model.enumeration.RoleEnum; import com.huawei.it.euler.model.vo.RoleVo; +import com.huawei.it.euler.model.vo.SoftwareVo; import com.huawei.it.euler.util.ExcelUtils; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; @@ -74,27 +78,47 @@ public class SoftwareApplicationService { * @throws IOException IO异常 */ public void exportStatistics(SoftwareStatisticsQuery query, HttpServletResponse response, UserInfo loginUser) throws IOException { + List exportData = new ArrayList<>(); + SoftwareQuery softwareQuery = new SoftwareQuery(); Set dateScopeSet = roleMapper.findRoleInfoByUserId(Integer.valueOf(loginUser.getUuid())) .stream().map(RoleVo::getDataScope).filter(Objects::nonNull).collect(Collectors.toSet()); if (!dateScopeSet.isEmpty() && !dateScopeSet.contains(ALL_PERMISSION)) { - query.setTestOrgIdList(dateScopeSet.stream().toList()); + List list = dateScopeSet.stream().toList(); + List filter = query.getTestOrgIdList().stream().filter(list::contains).toList(); + if (filter.isEmpty()){ + excelUtils.exportSoftWareStatistics(exportData, response); + return; + } + softwareQuery.setTestOrgId(filter); + } else { + softwareQuery.setTestOrgId(query.getTestOrgIdList()); } - List statistics = mapper.statistics(query); - statistics = statistics.stream().peek(softwareStatistics -> { - softwareStatistics.setProductType(Dimension.getProductType(softwareStatistics.getProductType())); - DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDateTime datePeriod = LocalDateTime.parse(softwareStatistics.getDatePeriod(), dateTimeFormatter); - DateTimeFormatter yearMonthFormatter = DateTimeFormatter.ofPattern("yyyy-MM"); - softwareStatistics.setDatePeriod(datePeriod.format(yearMonthFormatter)); + softwareQuery.setBeginCertificationTime(query.getBeginDate()); + softwareQuery.setEndCertificationTime(query.getEndDate()); + List statusId = new ArrayList<>(); + statusId.add(NodeEnum.FINISHED.getId()); + softwareQuery.setStatusId(statusId); + Long count = mapper.countSoftwareList(softwareQuery); + List softwareList = mapper.getSoftwareList(0, Math.toIntExact(count), softwareQuery); + List statistics = softwareList.stream().map(softwareVo -> { + SoftwareStatistics softwareStatistics = new SoftwareStatistics(); + softwareStatistics.setProductType(Dimension.getProductType(softwareVo.getProductType())); + softwareStatistics.setTestOrganization(softwareVo.getTestOrganization()); + softwareStatistics.setDatePeriod(DateUtil.format(softwareVo.getCertificationTime(), "yyyy-MM")); + return softwareStatistics; }).toList(); if (query.getProductTypeList() != null && !query.getProductTypeList().isEmpty()) { statistics = statistics.stream().filter(item -> query.getProductTypeList().contains(item.getProductType())).toList(); } + if (statistics.isEmpty()){ + excelUtils.exportSoftWareStatistics(exportData, response); + return; + } + Map>>> collect = statistics.stream().collect(Collectors.groupingBy(SoftwareStatistics::getTestOrganization, Collectors.groupingBy(SoftwareStatistics::getProductType, Collectors.groupingBy(SoftwareStatistics::getDatePeriod)))); - List exportData = new ArrayList<>(); collect.forEach((testOrg, productMap) -> productMap.forEach((product, dateMap) -> dateMap.forEach((date, dataList) -> { SoftwareStatistics softwareStatistics = new SoftwareStatistics(); softwareStatistics.setTestOrganization(testOrg); diff --git a/openeulerSever/src/main/java/com/huawei/it/euler/ddd/service/software/cqe/SoftwareStatisticsQuery.java b/openeulerSever/src/main/java/com/huawei/it/euler/ddd/service/software/cqe/SoftwareStatisticsQuery.java index 855c5213..882d3b8e 100644 --- a/openeulerSever/src/main/java/com/huawei/it/euler/ddd/service/software/cqe/SoftwareStatisticsQuery.java +++ b/openeulerSever/src/main/java/com/huawei/it/euler/ddd/service/software/cqe/SoftwareStatisticsQuery.java @@ -10,6 +10,7 @@ import jakarta.validation.constraints.NotNull; import lombok.Data; +import java.util.Date; import java.util.List; /** @@ -33,14 +34,14 @@ public class SoftwareStatisticsQuery { */ @Schema(description = "时间筛选:开始日期") @JsonFormat(pattern = "yyyy-MM-dd") - private String beginDate; + private Date beginDate; /** * 统计区间:截止日期 */ @Schema(description = "时间筛选对象:截止日期") @JsonFormat(pattern = "yyyy-MM-dd") - private String endDate; + private Date endDate; /** * 测评机构 diff --git a/openeulerSever/src/main/java/com/huawei/it/euler/mapper/SoftwareMapper.java b/openeulerSever/src/main/java/com/huawei/it/euler/mapper/SoftwareMapper.java index 5ba13433..3da676d8 100644 --- a/openeulerSever/src/main/java/com/huawei/it/euler/mapper/SoftwareMapper.java +++ b/openeulerSever/src/main/java/com/huawei/it/euler/mapper/SoftwareMapper.java @@ -6,8 +6,6 @@ import java.util.List; -import com.huawei.it.euler.ddd.domain.software.SoftwareStatistics; -import com.huawei.it.euler.ddd.service.software.cqe.SoftwareStatisticsQuery; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -212,6 +210,4 @@ IPage getAuditRecordsListPage(@Param("softwareId") Integer softw * @return softwareId */ Integer deleteSoftware(Integer id); - - List statistics(SoftwareStatisticsQuery query); } diff --git a/openeulerSever/src/main/resources/mapper/SoftwareMapper.xml b/openeulerSever/src/main/resources/mapper/SoftwareMapper.xml index e91e090a..fed02cea 100644 --- a/openeulerSever/src/main/resources/mapper/SoftwareMapper.xml +++ b/openeulerSever/src/main/resources/mapper/SoftwareMapper.xml @@ -87,12 +87,6 @@ - - - - - - id, company_id, company_name, product_name, product_function_desc, usage_scenes_desc, product_version, os_name, os_version, init_os_name, init_os_version, hashrate_platform, server_type, product_type, test_organization,test_org_id, status, update_time, application_time, @@ -520,39 +514,4 @@ set delete_flag = 1 where id = #{id} - - - - - delete_flag = 0 - AND `status` = 9 - - and DATE_FORMAT(certification_time,'%Y-%m-%d') >= DATE_FORMAT(#{beginDate},'%Y-%m-%d') - - - and DATE_FORMAT(certification_time,'%Y-%m-%d') <= DATE_FORMAT(#{endDate},'%Y-%m-%d') - - - and test_org_id in - - #{item} - - - - \ No newline at end of file