Parcourir la source

自动评分调整

ouyj il y a 3 mois
Parent
commit
782daf884f

+ 37 - 0
ygtx-common/src/main/java/com/ygtx/common/utils/DateUtils.java

@@ -8,6 +8,7 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
+import java.util.Calendar;
 import java.util.Date;
 import org.apache.commons.lang3.time.DateFormatUtils;
 
@@ -195,4 +196,40 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
         return Date.from(zdt.toInstant());
     }
+
+    /**
+     * 计算两个日期之间的天数差异,按日期变化计算(只要日期过了一天就算一天)
+     *
+     * @param date1 较大的日期(通常是当前日期)
+     * @param date2 较小的日期
+     * @return 日期之间的天数差异
+     */
+    public static int calculateDateDifference(Date date1, Date date2) {
+        if (date1 == null || date2 == null) {
+            return 0;
+        }
+
+        Calendar cal1 = Calendar.getInstance();
+        cal1.setTime(date1);
+
+        Calendar cal2 = Calendar.getInstance();
+        cal2.setTime(date2);
+
+        // 将时分秒和毫秒设为0,只比较日期部分
+        cal1.set(Calendar.HOUR_OF_DAY, 0);
+        cal1.set(Calendar.MINUTE, 0);
+        cal1.set(Calendar.SECOND, 0);
+        cal1.set(Calendar.MILLISECOND, 0);
+
+        cal2.set(Calendar.HOUR_OF_DAY, 0);
+        cal2.set(Calendar.MINUTE, 0);
+        cal2.set(Calendar.SECOND, 0);
+        cal2.set(Calendar.MILLISECOND, 0);
+
+        // 计算两个日期之间的毫秒差
+        long diffInMillis = cal1.getTimeInMillis() - cal2.getTimeInMillis();
+
+        // 计算天数差异
+        return (int) (diffInMillis / (1000 * 60 * 60 * 24));
+    }
 }

+ 3 - 1
ygtx-gxt/src/main/java/com/ygtx/gxt/task/EquipmentSafeOperationRewardTask.java

@@ -151,7 +151,7 @@ public class EquipmentSafeOperationRewardTask {
         }
 
         // 计算安全运行天数
-        int daysBetween = DateUtils.differentDaysByMillisecond(DateUtils.getNowDate(), processedData.latestRestartTime);
+        int daysBetween = DateUtils.calculateDateDifference(DateUtils.getNowDate(), processedData.latestRestartTime);
         if (daysBetween <= 0) {
             log.debug("设备 {} 安全运行天数为 {} 天,无需奖励", equipment.getEquipmentCode(), daysBetween);
             return;
@@ -673,4 +673,6 @@ public class EquipmentSafeOperationRewardTask {
         GxtRepairOrder relatedRepairOrder; // 相关的维修工单
         GxtWorkOrder relatedWorkOrder;    // 相关的维保工单
     }
+    
+
 }