Jelajahi Sumber

处理报警故障空值

王波 20 jam lalu
induk
melakukan
6e65948137

+ 36 - 1
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/EarlyWarning/EarlyWarningReliableService.java

@@ -17,6 +17,7 @@ import com.gyee.runeconomy.service.auto.ITurbineInfoDayService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.lang.reflect.Field;
 import java.time.LocalDate;
 import java.time.YearMonth;
 import java.time.format.DateTimeFormatter;
@@ -223,6 +224,7 @@ public class EarlyWarningReliableService {
                     .filter(iss -> !secondSortedIssues.contains(iss) && !firstSortedIssues.contains(iss))  // 排除已经设置为 "是" 的数据
                     .forEach(iss -> iss.setReliabilityIssue("否"));
 
+            fillEmptyFields(IssuesList);
             // 调用 saveBatch 保存数据
             boolean b = reliabilityIssuesService.saveBatch(IssuesList);
             System.out.println("可靠性问题运行结束");
@@ -292,5 +294,38 @@ public class EarlyWarningReliableService {
                 break;
         }
     }
-
+    public void fillEmptyFields(List<ReliabilityIssues> issuesList) {
+        if (issuesList == null) return;
+
+        for (ReliabilityIssues issue : issuesList) {
+            // 获取ReliabilityIssues类的所有字段
+            Field[] fields = ReliabilityIssues.class.getDeclaredFields();
+
+            for (Field field : fields) {
+                // 检查字段类型是否为String
+                if (field.getType() == String.class) {
+                    try {
+                        // 设置可访问性,以防字段是private的
+                        field.setAccessible(true);
+
+                        // 获取当前值
+                        String value = (String) field.get(issue);
+
+                        // 如果值为null或空字符串
+                        if (value == null || value.trim().isEmpty()) {
+                            // 根据字段名结尾决定填充值
+                            if (field.getName().toLowerCase().endsWith("type")) {
+                                field.set(issue, "无");
+                            } else if (field.getName().endsWith("Hours")) {
+                                field.set(issue, "0"); // 数据库是varchar,所以存为字符串"0"
+                            }
+                        }
+                    } catch (IllegalAccessException e) {
+                        // 处理异常或记录日志
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }
+    }
 }