bug修改

This commit is contained in:
guoshengxiong 2024-06-28 16:21:44 +08:00
parent 8c5b380cf0
commit abcd3f871e
2 changed files with 31 additions and 44 deletions

View File

@ -648,10 +648,10 @@ public class XzRiskPredictionController {
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
// 人员数量 // 人员数量
List<WorkerInfo> list = allWorkerList.stream().filter(a -> enterpriseIds.contains(a.getEnterpriseId())).collect(Collectors.toList()); List<WorkerInfo> list = allWorkerList.stream().filter(a -> enterpriseIds.contains(a.getEnterpriseId())).collect(Collectors.toList());
resultMap.put("total", new BigDecimal(list.size()).divide(new BigDecimal(allWorkerList.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("total", allWorkerList.size() == 0 ? null : new BigDecimal(list.size()).divide(new BigDecimal(allWorkerList.size()), 2, BigDecimal.ROUND_HALF_UP));
// 高龄人员 // 高龄人员
long ageCount = list.stream().filter(l -> StringUtils.isNotBlank(l.getBirthday()) && DateUtil.ageOfNow(l.getBirthday()) >= 50).count(); long ageCount = list.stream().filter(l -> StringUtils.isNotBlank(l.getBirthday()) && DateUtil.ageOfNow(l.getBirthday()) >= 50).count();
resultMap.put("age", new BigDecimal(ageCount).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("age", list.size() == 0 ? null : new BigDecimal(ageCount).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
// 特殊工种人数 // 特殊工种人数
if (workerType != null) { if (workerType != null) {
List<TeamInfo> allTeamInfoList = teamInfoService.list(Wrappers.<TeamInfo>lambdaQuery() List<TeamInfo> allTeamInfoList = teamInfoService.list(Wrappers.<TeamInfo>lambdaQuery()
@ -659,7 +659,7 @@ public class XzRiskPredictionController {
List<TeamInfo> teamInfoList = allTeamInfoList.stream().filter(a -> enterpriseIds.contains(a.getEnterpriseId())).collect(Collectors.toList()); List<TeamInfo> teamInfoList = allTeamInfoList.stream().filter(a -> enterpriseIds.contains(a.getEnterpriseId())).collect(Collectors.toList());
if (teamInfoList.size() > 0) { if (teamInfoList.size() > 0) {
long workerTypeCount = list.stream().filter(l -> teamInfoList.stream().map(t -> t.getId()).collect(Collectors.toList()).contains(l.getTeamId())).count(); long workerTypeCount = list.stream().filter(l -> teamInfoList.stream().map(t -> t.getId()).collect(Collectors.toList()).contains(l.getTeamId())).count();
resultMap.put("workerType", new BigDecimal(workerTypeCount).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("workerType", list.size() == 0 ? null : new BigDecimal(workerTypeCount).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
} else { } else {
resultMap.put("workerType", 0); resultMap.put("workerType", 0);
} }
@ -675,7 +675,7 @@ public class XzRiskPredictionController {
e.getTrainId().toString().equals(record.getId().toString()) && enterpriseIds.contains(e.getEnterpriseId())).collect(Collectors.toList()); e.getTrainId().toString().equals(record.getId().toString()) && enterpriseIds.contains(e.getEnterpriseId())).collect(Collectors.toList());
if (trainRecordList.size() > 0) { if (trainRecordList.size() > 0) {
int pass = trainRecordList.stream().filter(t -> t.getIsPass() == 1).collect(Collectors.toList()).size(); int pass = trainRecordList.stream().filter(t -> t.getIsPass() == 1).collect(Collectors.toList()).size();
record.setPassRadio(new BigDecimal(pass).divide(new BigDecimal(trainRecordList.size()), 2, BigDecimal.ROUND_HALF_UP)); record.setPassRadio(trainRecordList.size() == 0 ? null : new BigDecimal(pass).divide(new BigDecimal(trainRecordList.size()), 2, BigDecimal.ROUND_HALF_UP));
} else { } else {
record.setPassRadio(new BigDecimal(0)); record.setPassRadio(new BigDecimal(0));
} }
@ -683,14 +683,14 @@ public class XzRiskPredictionController {
} }
// 教育培训 // 教育培训
BigDecimal passRadio = examTrainList.stream().map(e -> e.getPassRadio()).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal passRadio = examTrainList.stream().map(e -> e.getPassRadio()).reduce(BigDecimal.ZERO, BigDecimal::add);
resultMap.put("exam", new BigDecimal(1).subtract(passRadio.divide(new BigDecimal(examTrainList.size()), 2, BigDecimal.ROUND_HALF_UP))); resultMap.put("exam", examTrainList.size() == 0 ? null : new BigDecimal(1).subtract(passRadio.divide(new BigDecimal(examTrainList.size()), 2, BigDecimal.ROUND_HALF_UP)));
} else { } else {
resultMap.put("exam", 0); resultMap.put("exam", 0);
} }
// 安全评分 // 安全评分
Double safeScore = list.stream().mapToDouble(e -> e.getSafeScore()).sum(); Double safeScore = list.stream().mapToDouble(e -> e.getSafeScore()).sum();
BigDecimal subtract = new BigDecimal(1).subtract(new BigDecimal(safeScore).divide(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP)); BigDecimal subtract = list.size() == 0 ? null : new BigDecimal(1).subtract(new BigDecimal(safeScore).divide(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
resultMap.put("safe", subtract.setScale(2, BigDecimal.ROUND_HALF_UP)); resultMap.put("safe", subtract == null ? null : subtract.setScale(2, BigDecimal.ROUND_HALF_UP));
// 安全检查隐患 // 安全检查隐患
List<XzSecurityQualityInspectionRecord> xzSecurityQualityInspectionRecords = allXzSecurityQualityInspectionRecords.stream() List<XzSecurityQualityInspectionRecord> xzSecurityQualityInspectionRecords = allXzSecurityQualityInspectionRecords.stream()
.filter(a -> enterpriseIds.contains(a.getEnterpriseId())).collect(Collectors.toList()); .filter(a -> enterpriseIds.contains(a.getEnterpriseId())).collect(Collectors.toList());
@ -704,14 +704,8 @@ public class XzRiskPredictionController {
resultMap.put("enterpriseId", enterpriseInfo.getId()); resultMap.put("enterpriseId", enterpriseInfo.getId());
// 计算面积 // 计算面积
// 计算面积 resultMap.put("area", NumberUtils.percent(PolygonUtil.calRadioArea(1.0, 6, Double.valueOf(1), MapUtils.getDouble(resultMap, "age"),
BigDecimal age = new BigDecimal(resultMap.get("age").toString()); MapUtils.getDouble(resultMap, "exam"), MapUtils.getDouble(resultMap, "safe"), MapUtils.getDouble(resultMap, "workerType"), MapUtils.getDouble(resultMap, "security")), 2));
BigDecimal exam = new BigDecimal(resultMap.get("exam").toString());
BigDecimal safe = new BigDecimal(resultMap.get("safe").toString());
BigDecimal workerType1 = new BigDecimal(resultMap.get("workerType").toString());
BigDecimal security = new BigDecimal(resultMap.get("security").toString());
resultMap.put("area", NumberUtils.percent(PolygonUtil.calRadioArea(1.0, 6, Double.valueOf(1), age.doubleValue(),
exam.doubleValue(), safe.doubleValue(), workerType1.doubleValue(), security.doubleValue()), 2));
resultList.add(resultMap); resultList.add(resultMap);
} }
return Result.success(resultList); return Result.success(resultList);
@ -726,41 +720,37 @@ public class XzRiskPredictionController {
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
String projectSn = MapUtils.getString(param, "projectSn"); String projectSn = MapUtils.getString(param, "projectSn");
// 安全检查隐患 // 安全检查隐患
List<XzSecurityQualityInspectionRecord> xzSecurityQualityInspectionRecords = xzSecurityQualityInspectionRecordService.list(Wrappers.<XzSecurityQualityInspectionRecord>lambdaQuery() List<XzSecurityQualityInspectionRecord> records = xzSecurityQualityInspectionRecordService.list(Wrappers.<XzSecurityQualityInspectionRecord>lambdaQuery()
.eq(XzSecurityQualityInspectionRecord::getRecordType, 1) .eq(XzSecurityQualityInspectionRecord::getRecordType, 1)
.eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn) .eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn)
.ne(XzSecurityQualityInspectionRecord::getStatus, 6)); .ne(XzSecurityQualityInspectionRecord::getStatus, 6));
if (xzSecurityQualityInspectionRecords.size() > 0) { if (records.size() > 0) {
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5).count(); long inspectionCount = records.stream().filter(x -> x.getStatus() != 5).count();
resultMap.put("security", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("security", records.size() == 0 ? null : new BigDecimal(inspectionCount).divide(new BigDecimal(records.size()), 2, BigDecimal.ROUND_HALF_UP));
} else { } else {
resultMap.put("security", 0); resultMap.put("security", 0);
} }
// 安全评分 // 安全评分
List<WorkerInfo> list = workerInfoService.list(Wrappers.<WorkerInfo>lambdaQuery().eq(WorkerInfo::getProjectSn, projectSn).eq(WorkerInfo::getInserviceType, 1)); List<WorkerInfo> list = workerInfoService.list(Wrappers.<WorkerInfo>lambdaQuery().eq(WorkerInfo::getProjectSn, projectSn).eq(WorkerInfo::getInserviceType, 1));
Double safeScore = list.stream().mapToDouble(e -> e.getSafeScore()).sum(); Double safeScore = list.stream().mapToDouble(e -> e.getSafeScore()).sum();
resultMap.put("safe", new BigDecimal(safeScore).divide(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("safe", list.size() == 0 ? null : new BigDecimal(safeScore).divide(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
// 一级二级分险占比 // 一级二级分险占比
if (xzSecurityQualityInspectionRecords.size() > 0) { if (records.size() > 0) {
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getLevel() == 1 || x.getLevel() == 2).count(); long inspectionCount = records.stream().filter(x -> x.getLevel() == 1 || x.getLevel() == 2).count();
resultMap.put("levelRisk", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("levelRisk", new BigDecimal(inspectionCount).divide(new BigDecimal(records.size()), 2, BigDecimal.ROUND_HALF_UP));
} else { } else {
resultMap.put("levelRisk", 0); resultMap.put("levelRisk", 0);
} }
// 超期未关闭 // 超期未关闭
if (xzSecurityQualityInspectionRecords.size() > 0) { if (records.size() > 0) {
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && DateUtil.parseDate(x.getChangeLimitTime()).compareTo(new Date()) < 0).count(); long inspectionCount = records.stream().filter(x -> x.getStatus() != 5 && DateUtil.parseDate(x.getChangeLimitTime()).compareTo(new Date()) < 0).count();
resultMap.put("limitTime", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("limitTime", new BigDecimal(inspectionCount).divide(new BigDecimal(records.size()), 2, BigDecimal.ROUND_HALF_UP));
} else { } else {
resultMap.put("limitTime", 0); resultMap.put("limitTime", 0);
} }
// 计算面积 // 计算面积
BigDecimal security = new BigDecimal(resultMap.get("security").toString()); resultMap.put("area", NumberUtils.percent(PolygonUtil.calRadioArea(1.0, 4, MapUtils.getDouble(resultMap, "security"),
BigDecimal limitTime = new BigDecimal(resultMap.get("limitTime").toString()); MapUtils.getDouble(resultMap, "limitTime"), MapUtils.getDouble(resultMap, "levelRisk"), MapUtils.getDouble(resultMap, "safe")), 2));
BigDecimal levelRisk = new BigDecimal(resultMap.get("levelRisk").toString());
BigDecimal safe = new BigDecimal(resultMap.get("safe").toString());
resultMap.put("area", NumberUtils.percent(PolygonUtil.calRadioArea(1.0, 4, security.doubleValue(),
limitTime.doubleValue(), levelRisk.doubleValue(), safe.doubleValue()), 2));
return Result.success(resultMap); return Result.success(resultMap);
} }
@ -796,9 +786,9 @@ public class XzRiskPredictionController {
List<XzSecurityQualityInspectionRecord> xzSecurityQualityInspectionRecords = allXzSecurityQualityInspectionRecords.stream().filter(x -> enterpriseIds.contains(x.getEnterpriseId())).collect(Collectors.toList()); List<XzSecurityQualityInspectionRecord> xzSecurityQualityInspectionRecords = allXzSecurityQualityInspectionRecords.stream().filter(x -> enterpriseIds.contains(x.getEnterpriseId())).collect(Collectors.toList());
if (xzSecurityQualityInspectionRecords.size() > 0) { if (xzSecurityQualityInspectionRecords.size() > 0) {
resultMap.put("total", new BigDecimal(xzSecurityQualityInspectionRecords.size()).divide(new BigDecimal(allXzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("total", allXzSecurityQualityInspectionRecords.size() == 0 ? null : new BigDecimal(xzSecurityQualityInspectionRecords.size()).divide(new BigDecimal(allXzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP));
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5).count(); long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5).count();
resultMap.put("security", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("security", xzSecurityQualityInspectionRecords.size() == 0 ? null : new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP));
} else { } else {
resultMap.put("security", 0); resultMap.put("security", 0);
resultMap.put("total", 0); resultMap.put("total", 0);
@ -806,30 +796,25 @@ public class XzRiskPredictionController {
// 安全评分 // 安全评分
List<WorkerInfo> list = allWorkerList.stream().filter(a -> enterpriseIds.contains(a.getEnterpriseId())).collect(Collectors.toList()); List<WorkerInfo> list = allWorkerList.stream().filter(a -> enterpriseIds.contains(a.getEnterpriseId())).collect(Collectors.toList());
Double safeScore = list.stream().mapToDouble(e -> e.getSafeScore()).sum(); Double safeScore = list.stream().mapToDouble(e -> e.getSafeScore()).sum();
resultMap.put("safe", new BigDecimal(safeScore).divide(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("safe", list.size() == 0 ? null : new BigDecimal(safeScore).divide(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
// 一级二级分险占比 // 一级二级分险占比
if (xzSecurityQualityInspectionRecords.size() > 0) { if (xzSecurityQualityInspectionRecords.size() > 0) {
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getLevel() == 1 || x.getLevel() == 2).count(); long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getLevel() == 1 || x.getLevel() == 2).count();
resultMap.put("levelRisk", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("levelRisk", xzSecurityQualityInspectionRecords.size() == 0 ? null : new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP));
} else { } else {
resultMap.put("levelRisk", 0); resultMap.put("levelRisk", 0);
} }
// 超期未关闭 // 超期未关闭
if (xzSecurityQualityInspectionRecords.size() > 0) { if (xzSecurityQualityInspectionRecords.size() > 0) {
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && DateUtil.parseDate(x.getChangeLimitTime()).compareTo(new Date()) < 0).count(); long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && DateUtil.parseDate(x.getChangeLimitTime()).compareTo(new Date()) < 0).count();
resultMap.put("limitTime", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP)); resultMap.put("limitTime", xzSecurityQualityInspectionRecords.size() == 0 ? null : new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP));
} else { } else {
resultMap.put("limitTime", 0); resultMap.put("limitTime", 0);
} }
resultMap.put("enterpriseName", enterpriseInfo.getEnterpriseName()); resultMap.put("enterpriseName", enterpriseInfo.getEnterpriseName());
// 计算面积 // 计算面积
BigDecimal security = new BigDecimal(resultMap.get("security").toString()); resultMap.put("area", NumberUtils.percent(PolygonUtil.calRadioArea(1.0, 5, MapUtils.getDouble(resultMap, "security"),
BigDecimal limitTime = new BigDecimal(resultMap.get("limitTime").toString()); MapUtils.getDouble(resultMap, "limitTime"), MapUtils.getDouble(resultMap, "total"), MapUtils.getDouble(resultMap, "levelRisk"), MapUtils.getDouble(resultMap, "safe")), 2));
BigDecimal levelRisk = new BigDecimal(resultMap.get("levelRisk").toString());
BigDecimal safe = new BigDecimal(resultMap.get("safe").toString());
BigDecimal total = new BigDecimal(resultMap.get("total").toString());
resultMap.put("area", NumberUtils.percent(PolygonUtil.calRadioArea(1.0, 5, security.doubleValue(),
limitTime.doubleValue(), total.doubleValue(), levelRisk.doubleValue(), safe.doubleValue()), 2));
resultList.add(resultMap); resultList.add(resultMap);
} }
return Result.success(resultList); return Result.success(resultList);

View File

@ -157,9 +157,11 @@ public class NumberUtils {
* @return * @return
*/ */
public static boolean eq(Double b1, Double b2) { public static boolean eq(Double b1, Double b2) {
//Math.abs(b1 - b2) < 1e-14f
return b1 != null && b2 != null && b1.equals(b2); return b1 != null && b2 != null && b1.equals(b2);
} }
/** /**
* 取余 * 取余
* *