|
|
@@ -335,7 +335,13 @@ public class EquipmentSafeOperationRewardTask {
|
|
|
BigDecimal currentRepairTotal = (userScore.getRepairTotalScore() != null) ?
|
|
|
userScore.getRepairTotalScore() : BigDecimal.ZERO;
|
|
|
|
|
|
- BigDecimal newRepairScore = currentRepairTotal.add(rewardScore);
|
|
|
+ // 对奖励分数进行精度处理:保留6位小数
|
|
|
+ BigDecimal processedReward = rewardScore;
|
|
|
+ if (rewardScore.scale() > 6) {
|
|
|
+ processedReward = rewardScore.setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal newRepairScore = currentRepairTotal.add(processedReward);
|
|
|
userScore.setRepairTotalScore(newRepairScore);
|
|
|
|
|
|
// 更新最终评分
|
|
|
@@ -358,20 +364,25 @@ public class EquipmentSafeOperationRewardTask {
|
|
|
newUserScore.setNickName(person.getNickName());
|
|
|
newUserScore.setMonthPeriod(monthScore.getMonthPeriod());
|
|
|
|
|
|
+ // 对奖励分数进行精度处理:保留6位小数
|
|
|
+ BigDecimal processedReward = rewardScore;
|
|
|
+ if (rewardScore.scale() > 6) {
|
|
|
+ processedReward = rewardScore.setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+
|
|
|
// 设置维修工单得分
|
|
|
- BigDecimal repairScore = rewardScore;
|
|
|
- newUserScore.setRepairTotalScore(rewardScore);
|
|
|
+ newUserScore.setRepairTotalScore(processedReward);
|
|
|
|
|
|
// 维保得分默认为0
|
|
|
newUserScore.setMaintenanceTotalScore(BigDecimal.ZERO);
|
|
|
- newUserScore.setFinalScore(rewardScore);
|
|
|
+ newUserScore.setFinalScore(processedReward);
|
|
|
newUserScore.setStatus(0);
|
|
|
newUserScore.setCreateBy(SecurityUtils.getLoginUser().getUser().getUserName());
|
|
|
newUserScore.setCreateTime(new Date());
|
|
|
// 插入新记录
|
|
|
userScoreService.insertGxtUserScore(newUserScore);
|
|
|
|
|
|
- log.debug("创建用户 {} 月度统计得分: {}", person.getNickName(), repairScore);
|
|
|
+ log.debug("创建用户 {} 月度统计得分: {}", person.getNickName(), processedReward);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -413,7 +424,13 @@ public class EquipmentSafeOperationRewardTask {
|
|
|
BigDecimal currentMaintenanceTotal = (userScore.getMaintenanceTotalScore() != null) ?
|
|
|
userScore.getMaintenanceTotalScore() : BigDecimal.ZERO;
|
|
|
|
|
|
- BigDecimal newMaintenanceScore = currentMaintenanceTotal.add(rewardScore);
|
|
|
+ // 对奖励分数进行精度处理:保留6位小数
|
|
|
+ BigDecimal processedReward = rewardScore;
|
|
|
+ if (rewardScore.scale() > 6) {
|
|
|
+ processedReward = rewardScore.setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal newMaintenanceScore = currentMaintenanceTotal.add(processedReward);
|
|
|
userScore.setMaintenanceTotalScore(newMaintenanceScore);
|
|
|
|
|
|
// 更新最终评分
|
|
|
@@ -436,20 +453,25 @@ public class EquipmentSafeOperationRewardTask {
|
|
|
newUserScore.setNickName(person.getNickName());
|
|
|
newUserScore.setMonthPeriod(monthScore.getMonthPeriod());
|
|
|
|
|
|
+ // 对奖励分数进行精度处理:保留6位小数
|
|
|
+ BigDecimal processedReward = rewardScore;
|
|
|
+ if (rewardScore.scale() > 6) {
|
|
|
+ processedReward = rewardScore.setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+
|
|
|
// 设置维保工单得分
|
|
|
- BigDecimal maintenanceScore = rewardScore;
|
|
|
- newUserScore.setMaintenanceTotalScore(maintenanceScore);
|
|
|
+ newUserScore.setMaintenanceTotalScore(processedReward);
|
|
|
|
|
|
// 维修得分默认为0
|
|
|
newUserScore.setRepairTotalScore(BigDecimal.ZERO);
|
|
|
- newUserScore.setFinalScore(maintenanceScore);
|
|
|
+ newUserScore.setFinalScore(processedReward);
|
|
|
newUserScore.setStatus(0);
|
|
|
newUserScore.setCreateBy(SecurityUtils.getLoginUser().getUser().getUserName());
|
|
|
newUserScore.setCreateTime(new Date());
|
|
|
// 插入新记录
|
|
|
userScoreService.insertGxtUserScore(newUserScore);
|
|
|
|
|
|
- log.debug("创建用户 {} 月度统计得分: {}", person.getNickName(), maintenanceScore);
|
|
|
+ log.debug("创建用户 {} 月度统计得分: {}", person.getNickName(), processedReward);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -874,7 +896,13 @@ public class EquipmentSafeOperationRewardTask {
|
|
|
BigDecimal currentRepairTotal = (userScore.getRepairTotalScore() != null) ?
|
|
|
userScore.getRepairTotalScore() : BigDecimal.ZERO;
|
|
|
|
|
|
- BigDecimal newRepairScore = currentRepairTotal.add(deductionScore);
|
|
|
+ // 对扣分进行精度处理:保留6位小数
|
|
|
+ BigDecimal processedDeduction = deductionScore;
|
|
|
+ if (deductionScore.scale() > 6) {
|
|
|
+ processedDeduction = deductionScore.setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal newRepairScore = currentRepairTotal.add(processedDeduction);
|
|
|
userScore.setRepairTotalScore(newRepairScore);
|
|
|
|
|
|
// 更新最终评分
|
|
|
@@ -897,20 +925,25 @@ public class EquipmentSafeOperationRewardTask {
|
|
|
newUserScore.setNickName(person.getNickName());
|
|
|
newUserScore.setMonthPeriod(monthScore.getMonthPeriod());
|
|
|
|
|
|
+ // 对扣分进行精度处理:保留6位小数
|
|
|
+ BigDecimal processedDeduction = deductionScore;
|
|
|
+ if (deductionScore.scale() > 6) {
|
|
|
+ processedDeduction = deductionScore.setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+
|
|
|
// 设置维修工单得分
|
|
|
- BigDecimal repairScore = deductionScore;
|
|
|
- newUserScore.setRepairTotalScore(repairScore);
|
|
|
+ newUserScore.setRepairTotalScore(processedDeduction);
|
|
|
|
|
|
// 维保得分默认为0
|
|
|
newUserScore.setMaintenanceTotalScore(BigDecimal.ZERO);
|
|
|
- newUserScore.setFinalScore(deductionScore);
|
|
|
+ newUserScore.setFinalScore(processedDeduction);
|
|
|
newUserScore.setStatus(0);
|
|
|
newUserScore.setCreateBy(SecurityUtils.getLoginUser().getUser().getUserName());
|
|
|
newUserScore.setCreateTime(new Date());
|
|
|
// 插入新记录
|
|
|
userScoreService.insertGxtUserScore(newUserScore);
|
|
|
|
|
|
- log.debug("创建用户 {} 月度统计得分: {}", person.getNickName(), repairScore);
|
|
|
+ log.debug("创建用户 {} 月度统计得分: {}", person.getNickName(), processedDeduction);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -952,7 +985,13 @@ public class EquipmentSafeOperationRewardTask {
|
|
|
BigDecimal currentMaintenanceTotal = (userScore.getMaintenanceTotalScore() != null) ?
|
|
|
userScore.getMaintenanceTotalScore() : BigDecimal.ZERO;
|
|
|
|
|
|
- BigDecimal newMaintenanceScore = currentMaintenanceTotal.add(deductionScore);
|
|
|
+ // 对扣分进行精度处理:保留6位小数
|
|
|
+ BigDecimal processedDeduction = deductionScore;
|
|
|
+ if (deductionScore.scale() > 6) {
|
|
|
+ processedDeduction = deductionScore.setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal newMaintenanceScore = currentMaintenanceTotal.add(processedDeduction);
|
|
|
userScore.setMaintenanceTotalScore(newMaintenanceScore);
|
|
|
|
|
|
// 更新最终评分
|
|
|
@@ -975,20 +1014,25 @@ public class EquipmentSafeOperationRewardTask {
|
|
|
newUserScore.setNickName(person.getNickName());
|
|
|
newUserScore.setMonthPeriod(monthScore.getMonthPeriod());
|
|
|
|
|
|
+ // 对扣分进行精度处理:保留6位小数
|
|
|
+ BigDecimal processedDeduction = deductionScore;
|
|
|
+ if (deductionScore.scale() > 6) {
|
|
|
+ processedDeduction = deductionScore.setScale(6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+
|
|
|
// 设置维保工单得分
|
|
|
- BigDecimal maintenanceScore = deductionScore;
|
|
|
- newUserScore.setMaintenanceTotalScore(maintenanceScore);
|
|
|
+ newUserScore.setMaintenanceTotalScore(processedDeduction);
|
|
|
|
|
|
// 维修得分默认为0
|
|
|
newUserScore.setRepairTotalScore(BigDecimal.ZERO);
|
|
|
- newUserScore.setFinalScore(deductionScore);
|
|
|
+ newUserScore.setFinalScore(processedDeduction);
|
|
|
newUserScore.setStatus(0);
|
|
|
newUserScore.setCreateBy(SecurityUtils.getLoginUser().getUser().getUserName());
|
|
|
newUserScore.setCreateTime(new Date());
|
|
|
// 插入新记录
|
|
|
userScoreService.insertGxtUserScore(newUserScore);
|
|
|
|
|
|
- log.debug("创建用户 {} 月度统计得分: {}", person.getNickName(), maintenanceScore);
|
|
|
+ log.debug("创建用户 {} 月度统计得分: {}", person.getNickName(), processedDeduction);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1230,15 +1274,25 @@ public class EquipmentSafeOperationRewardTask {
|
|
|
repairOrder.setOverStopStatus(1);
|
|
|
repairOrderService.updateGxtRepairOrder(repairOrder);
|
|
|
log.info("待结单维修工单 {} overStopStatus 从 0 更新为 1", repairOrder.getWorkOrderProjectNo());
|
|
|
- //overStopStatus = 1;
|
|
|
- return;
|
|
|
+ overStopStatus = 1;
|
|
|
+ //return;
|
|
|
}
|
|
|
// 获取奖励配置和扣分分数(公共逻辑)
|
|
|
BigDecimal deductionScore = getDeductionScore(repairOrder, stopDays);
|
|
|
if (deductionScore == null) {
|
|
|
return; // 没有找到合适的扣分配置或分数无效
|
|
|
}
|
|
|
- if (overStopStatus == 2) {
|
|
|
+ if (overStopStatus == 1) {
|
|
|
+ // 当维修工单 overStopStatus 为 1 时,表示已超停但没有真实工作人员,使用虚拟扣分
|
|
|
+ // 虚拟扣分过程实现:只添加明细记录,不实际更新人员得分
|
|
|
+ log.debug("待结单维修工单 {} overStopStatus 为 1,使用虚拟扣分", repairOrder.getWorkOrderProjectNo());
|
|
|
+
|
|
|
+ // 创建虚拟负责人进行扣分记录
|
|
|
+ List<GxtRepairOrderPerson> virtualPersons = createVirtualLeaderPerson(repairOrder);
|
|
|
+
|
|
|
+ // 添加虚拟扣分明细记录(状态为 1,表示挂起)
|
|
|
+ addOrderScoreDetailsForStopScoreRepairNotCompllete(repairOrder, virtualPersons, deductionScore, 3); // 3 代表停机扣分
|
|
|
+ } else if (overStopStatus == 2) {
|
|
|
// 当维修工单 overStopStatus 为 2 时,代表有真正的工作人员,进行真实扣分
|
|
|
log.debug("待结单维修工单 {} overStopStatus 为 2,已填写工作人员", repairOrder.getWorkOrderProjectNo());
|
|
|
|
|
|
@@ -1277,17 +1331,7 @@ public class EquipmentSafeOperationRewardTask {
|
|
|
// 更新月度统计数据
|
|
|
updateMonthlyScoreDataForStopScore(repairOrder, perPersonDeduction, currentTime);
|
|
|
|
|
|
- }/* else if (overStopStatus == 1) {
|
|
|
- // 当维修工单 overStopStatus 为 1 时,表示已超停但没有真实工作人员,使用虚拟扣分
|
|
|
- // 虚拟扣分过程实现:只添加明细记录,不实际更新人员得分
|
|
|
- log.debug("待结单维修工单 {} overStopStatus 为 1,使用虚拟扣分", repairOrder.getWorkOrderProjectNo());
|
|
|
-
|
|
|
- // 创建虚拟负责人进行扣分记录
|
|
|
- List<GxtRepairOrderPerson> virtualPersons = createVirtualLeaderPerson(repairOrder);
|
|
|
-
|
|
|
- // 添加虚拟扣分明细记录(状态为 1,表示挂起)
|
|
|
- addOrderScoreDetailsForStopScoreRepairNotCompllete(repairOrder, virtualPersons, deductionScore, 3); // 3 代表停机扣分
|
|
|
- }*/
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|