Browse Source

修改连续运行得分、扣分

ouyj 3 months ago
parent
commit
27855b9324

+ 33 - 27
ygtx-gxt/src/main/java/com/ygtx/gxt/task/EquipmentSafeOperationRewardTask.java

@@ -85,12 +85,14 @@ public class EquipmentSafeOperationRewardTask {
 
             int processedCount = 0;
             for (GxtEquipment equipment : equipments) {
-                try {
-                    processEquipmentSafeOperationReward(equipment);
-                    processedCount++;
-                } catch (Exception e) {
-                    log.error("处理设备 {} 连续安全运行奖励时发生异常", equipment.getEquipmentCode(), e);
-                }
+                //if(equipment.getEquipmentId() == 59L){
+                    try {
+                        processEquipmentSafeOperationReward(equipment);
+                        processedCount++;
+                    } catch (Exception e) {
+                        log.error("处理设备 {} 连续安全运行奖励时发生异常", equipment.getEquipmentCode(), e);
+                    }
+                //}
             }
 
             log.info("设备连续安全运行奖励任务执行完成,共处理 {} 个设备", processedCount);
@@ -116,7 +118,7 @@ public class EquipmentSafeOperationRewardTask {
 
         // 第一次查询:查询workOrderStatus不等于invalid的工单,按restartTime降序排序
         List<GxtRepairOrder> archivedRepairOrders = repairOrderService.selectGxtRepairOrderByDeviceIdWithCondition(
-                equipment.getEquipmentId(), "invalid", true, "restartTime", MAX_ORDERS_PER_QUERY, true);
+                equipment.getEquipmentId(), "invalid", true, "restartTime", MAX_ORDERS_PER_QUERY, false);
 
         List<GxtWorkOrder> archivedWorkOrders = workOrderService.selectGxtWorkOrderByDeviceIdWithCondition(
                 equipment.getEquipmentId(), "invalid", true, "restartTime", MAX_ORDERS_PER_QUERY);
@@ -168,16 +170,18 @@ public class EquipmentSafeOperationRewardTask {
                 if (applicableDeduction != null) {
                     // 使用预处理的数据进行扣分处理
                     if (processedData.relatedRepairOrder != null) {
-                        // 如果对应的工单是GxtRepairOrder,则获取的是downtimeScore的值
-                        BigDecimal deductionScore = applicableDeduction.getDowntimeScore();
-                        if (deductionScore != null && deductionScore.compareTo(BigDecimal.ZERO) < 0) { // 确保是负数
-                            log.info("设备 {} 停运 {} 天,扣减维修工单 {} 停机分值 {}", 
-                                equipment.getEquipmentCode(), daysSinceFailure, processedData.relatedRepairOrder.getWorkOrderProjectNo(), deductionScore);
-                            
-                            // 对相关工单人员进行扣分操作
-                            updatePersonStopScoreForRepairOrder(processedData.relatedRepairOrder, deductionScore);
-                            // 更新月度统计数据
-                            updateMonthlyScoreDataForStopScore(processedData.relatedRepairOrder, deductionScore);
+                        if(!"2".equals(processedData.relatedRepairOrder.getRepairMethod())){
+                            // 如果对应的工单是GxtRepairOrder,则获取的是downtimeScore的值
+                            BigDecimal deductionScore = applicableDeduction.getDowntimeScore();
+                            if (deductionScore != null && deductionScore.compareTo(BigDecimal.ZERO) < 0) { // 确保是负数
+                                log.info("设备 {} 停运 {} 天,扣减维修工单 {} 停机分值 {}",
+                                        equipment.getEquipmentCode(), daysSinceFailure, processedData.relatedRepairOrder.getWorkOrderProjectNo(), deductionScore);
+
+                                // 对相关工单人员进行扣分操作
+                                updatePersonStopScoreForRepairOrder(processedData.relatedRepairOrder, deductionScore);
+                                // 更新月度统计数据
+                                updateMonthlyScoreDataForStopScore(processedData.relatedRepairOrder, deductionScore);
+                            }
                         }
                     } else if (processedData.relatedWorkOrder != null) {
                         // 如果对应的工单是GxtWorkOrder,则获取的是downtimeScore的值
@@ -227,16 +231,18 @@ public class EquipmentSafeOperationRewardTask {
 
             // 使用预处理的数据进行奖励处理
             if (processedData.relatedRepairOrder != null) {
-                // 如果对应的工单是GxtRepairOrder,则获取的是unplannedMaintenanceScore的值
-                BigDecimal rewardScore = applicableReward.getUnplannedMaintenanceScore();
-                if (rewardScore != null && rewardScore.compareTo(BigDecimal.ZERO) > 0) {
-                    log.info("设备 {} 安全运行 {} 天,奖励维修工单 {} 维修奖励分值 {}", 
-                        equipment.getEquipmentCode(), daysBetween, processedData.relatedRepairOrder.getWorkOrderProjectNo(), rewardScore);
-                    
-                    // 然后在获取这个工单所对应的人员数据,对这些人员进行加分操作
-                    updatePersonRunScoreForRepairOrder(processedData.relatedRepairOrder, rewardScore);
-                    // 更新月度统计数据
-                    updateMonthlyScoreDataForRunScore(processedData.relatedRepairOrder, rewardScore);
+                if(!"2".equals(processedData.relatedRepairOrder.getRepairMethod())){
+                    // 如果对应的工单是GxtRepairOrder,则获取的是unplannedMaintenanceScore的值
+                    BigDecimal rewardScore = applicableReward.getUnplannedMaintenanceScore();
+                    if (rewardScore != null && rewardScore.compareTo(BigDecimal.ZERO) > 0) {
+                        log.info("设备 {} 安全运行 {} 天,奖励维修工单 {} 维修奖励分值 {}",
+                                equipment.getEquipmentCode(), daysBetween, processedData.relatedRepairOrder.getWorkOrderProjectNo(), rewardScore);
+
+                        // 然后在获取这个工单所对应的人员数据,对这些人员进行加分操作
+                        updatePersonRunScoreForRepairOrder(processedData.relatedRepairOrder, rewardScore);
+                        // 更新月度统计数据
+                        updateMonthlyScoreDataForRunScore(processedData.relatedRepairOrder, rewardScore);
+                    }
                 }
             } else if (processedData.relatedWorkOrder != null) {
                 // 如果对应的工单是GxtWorkOrder,则获取的是plannedMaintenanceScore的值