Skip to content

Commit

Permalink
1.remove sql and deal in code
Browse files Browse the repository at this point in the history
  • Loading branch information
ssignik committed Jan 2, 2025
1 parent 99cb978 commit 930dae6
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -74,27 +78,47 @@ public class SoftwareApplicationService {
* @throws IOException IO异常
*/
public void exportStatistics(SoftwareStatisticsQuery query, HttpServletResponse response, UserInfo loginUser) throws IOException {
List<SoftwareStatistics> exportData = new ArrayList<>();
SoftwareQuery softwareQuery = new SoftwareQuery();
Set<Integer> 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<Integer> list = dateScopeSet.stream().toList();
List<Integer> 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<SoftwareStatistics> 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<Integer> statusId = new ArrayList<>();
statusId.add(NodeEnum.FINISHED.getId());
softwareQuery.setStatusId(statusId);
Long count = mapper.countSoftwareList(softwareQuery);
List<SoftwareVo> softwareList = mapper.getSoftwareList(0, Math.toIntExact(count), softwareQuery);
List<SoftwareStatistics> 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<String, Map<String, Map<String, List<SoftwareStatistics>>>> collect = statistics.stream().collect(Collectors.groupingBy(SoftwareStatistics::getTestOrganization,
Collectors.groupingBy(SoftwareStatistics::getProductType,
Collectors.groupingBy(SoftwareStatistics::getDatePeriod))));
List<SoftwareStatistics> exportData = new ArrayList<>();
collect.forEach((testOrg, productMap) -> productMap.forEach((product, dateMap) -> dateMap.forEach((date, dataList) -> {
SoftwareStatistics softwareStatistics = new SoftwareStatistics();
softwareStatistics.setTestOrganization(testOrg);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
Expand All @@ -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;

/**
* 测评机构
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -212,6 +210,4 @@ IPage<AuditRecordsVo> getAuditRecordsListPage(@Param("softwareId") Integer softw
* @return softwareId
*/
Integer deleteSoftware(Integer id);

List<SoftwareStatistics> statistics(SoftwareStatisticsQuery query);
}
41 changes: 0 additions & 41 deletions openeulerSever/src/main/resources/mapper/SoftwareMapper.xml
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,6 @@
<result column="transferred_comments" property="transferredComments"/>
</resultMap>

<resultMap id="SoftwareStatisticsMap" type="com.huawei.it.euler.ddd.domain.software.SoftwareStatistics">
<result column="certification_time" property="datePeriod"/>
<result column="test_organization" property="testOrganization"/>
<result column="product_type" property="productType"/>
</resultMap>

<sql id="baseFields">
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,
Expand Down Expand Up @@ -520,39 +514,4 @@
set delete_flag = 1
where id = #{id}
</delete>

<select id="statistics" parameterType="com.huawei.it.euler.ddd.service.software.cqe.SoftwareStatisticsQuery" resultMap="SoftwareStatisticsMap">
SELECT
product_type,
certification_time,
test_organization
FROM
software_t
<include refid="whereStatistics"/>
GROUP BY
product_type,
certification_time,
test_organization
ORDER BY
test_organization,
certification_time;
</select>
<sql id="whereStatistics">
<where>
delete_flag = 0
AND `status` = 9
<if test="beginDate != null">
and DATE_FORMAT(certification_time,'%Y-%m-%d') &gt;= DATE_FORMAT(#{beginDate},'%Y-%m-%d')
</if>
<if test="endDate != null">
and DATE_FORMAT(certification_time,'%Y-%m-%d') &lt;= DATE_FORMAT(#{endDate},'%Y-%m-%d')
</if>
<if test="testOrgIdList != null and testOrgIdList.size() > 0">
and test_org_id in
<foreach collection="testOrgIdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
</sql>
</mapper>

0 comments on commit 930dae6

Please sign in to comment.