bug修改
This commit is contained in:
parent
8c5b380cf0
commit
abcd3f871e
@ -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);
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 取余
|
* 取余
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user