工程质量分析

This commit is contained in:
liang.chao 2025-07-24 08:58:42 +08:00
parent 590682dd08
commit 18c589b1fc
4 changed files with 62 additions and 2 deletions

View File

@ -30,4 +30,6 @@ public class ScreenParamDto extends ScreenDto{
private String teamName; private String teamName;
private String projectName;
} }

View File

@ -1,6 +1,10 @@
package com.securitycontrol.entity.screen.vo; package com.securitycontrol.entity.screen.vo;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/** /**
* @Authorliang.chao * @Authorliang.chao
@ -13,5 +17,16 @@ public class ProjectQualityVo {
private String projectAddress; private String projectAddress;
private String contractorName; private String contractorName;
private String qualityLevel; private String qualityLevel;
private String isContract; private String projectManager;
private String team;
private String startTime;
private BigDecimal checkNum;
private BigDecimal passNum;
// 得分
private BigDecimal score;
// 合格率
private String passRate;
// 不合格率
private String noPassRate;
private String unqualifiedItems;
} }

View File

@ -11,8 +11,12 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Optional; import java.util.Optional;
/** /**
@ -55,7 +59,37 @@ public class DataAnalysisServiceImpl implements DataAnalysisService {
public List<ProjectQualityVo> getEngqualityAnalysis(ScreenParamDto dto) { public List<ProjectQualityVo> getEngqualityAnalysis(ScreenParamDto dto) {
List<ProjectQualityVo> list = null; List<ProjectQualityVo> list = null;
try { try {
if (dto.getTypeCode() == 1) {
dto.setProjectName("安徽淮北凌云220kv变电站新建工程");
} else if (dto.getTypeCode() == 2) {
dto.setProjectName("淮北红枫110kV变电站新建工程");
}
list = Optional.ofNullable(mapper.getEngqualityAnalysis(dto)).orElseGet(ArrayList::new); list = Optional.ofNullable(mapper.getEngqualityAnalysis(dto)).orElseGet(ArrayList::new);
for (ProjectQualityVo projectQualityVo : list) {
// 避免除不尽设置精度为 4 位小数四舍五入
BigDecimal result = projectQualityVo.getPassNum().divide(projectQualityVo.getCheckNum(), 4, RoundingMode.HALF_UP);
// 转换为百分制分数乘以 100
BigDecimal score = result.multiply(new BigDecimal("100"));
//保留0位小数变成整数分
BigDecimal integerScore = score.setScale(0, RoundingMode.HALF_UP);
// 转换为百分比格式自动 ×100 并加上 %
NumberFormat percentFormat = NumberFormat.getPercentInstance(Locale.getDefault());
// 最多保留两位小数
percentFormat.setMaximumFractionDigits(2);
String percentage = percentFormat.format(result.doubleValue());
// 合格率
projectQualityVo.setPassRate(percentage);
// 不合格率
BigDecimal failRate = BigDecimal.ONE.subtract(result);
String failRateStr = percentFormat.format(failRate.doubleValue());
projectQualityVo.setNoPassRate(failRateStr);
// 得分
projectQualityVo.setScore(integerScore);
}
} catch (Exception e) { } catch (Exception e) {
log.error(e.toString(),e); log.error(e.toString(),e);
} }

View File

@ -39,7 +39,16 @@
project_address as projectAddress, project_address as projectAddress,
contractor_name as contractorName, contractor_name as contractorName,
case when quality_level = 1 then '初级' when quality_level = 2 then '中级' else '高级' end as qualityLevel, case when quality_level = 1 then '初级' when quality_level = 2 then '中级' else '高级' end as qualityLevel,
case when is_contract = 1 then '是' else '否' end as isContract project_manager as projectManager,
team,
start_time as startTime,
check_num as checkNum,
pass_num as passNum,
unqualified_items as unqualifiedItems
from tb_project_quality from tb_project_quality
where 1 = 1
<if test="projectName != null and projectName != ''">
and projectName = #{projectName}
</if>
</select> </select>
</mapper> </mapper>