From 442f8cf748c2191213ed93ccdd2633ac4f02e038 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Wed, 08 Jul 2026 10:50:59 +0800
Subject: [PATCH] feat(device): 添加设备使用年限和维护状态功能
---
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/wrapper/FwDeviceWrapper.java | 45 ++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 44 insertions(+), 1 deletions(-)
diff --git a/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/wrapper/FwDeviceWrapper.java b/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/wrapper/FwDeviceWrapper.java
index 5d98514..979d4ed 100644
--- a/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/wrapper/FwDeviceWrapper.java
+++ b/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/wrapper/FwDeviceWrapper.java
@@ -21,6 +21,9 @@
import org.sxkj.fw.device.dto.FwDeviceDTO;
import org.sxkj.fw.device.entity.FwDeviceEntity;
import org.sxkj.fw.device.vo.FwDeviceVO;
+
+import java.util.Calendar;
+import java.util.Date;
import java.util.Objects;
/**
@@ -37,7 +40,47 @@
@Override
public FwDeviceVO entityVO(FwDeviceEntity fwDevice) {
- return Objects.requireNonNull(BeanUtil.copy(fwDevice, FwDeviceVO.class));
+ FwDeviceVO vo = Objects.requireNonNull(BeanUtil.copy(fwDevice, FwDeviceVO.class));
+ // 计算维护状态
+ vo.setMaintenanceStatus(calculateMaintenanceStatus(fwDevice.getUseDate(), fwDevice.getServiceLife()));
+ return vo;
+ }
+
+ /**
+ * 计算维护状态
+ *
+ * @param useDate 使用日期
+ * @param serviceLife 使用年限(单位:年)
+ * @return 维护状态:0-否,1-是(一个月内要到使用年限或已过期)
+ */
+ private Integer calculateMaintenanceStatus(Date useDate, Integer serviceLife) {
+ // 1. 参数校验:如果使用日期或使用年限为空,返回0
+ if (useDate == null || serviceLife == null || serviceLife <= 0) {
+ return 0;
+ }
+
+ // 2. 计算到期日期:使用日期 + 使用年限
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(useDate);
+ calendar.add(Calendar.YEAR, serviceLife);
+ Date expiryDate = calendar.getTime();
+
+ // 3. 计算当前日期
+ Date currentDate = new Date();
+
+ // 4. 如果当前日期已经超过到期日期,返回1(已过期)
+ if (currentDate.after(expiryDate)) {
+ return 1;
+ }
+
+ // 5. 计算距离到期日期的时间差(毫秒)
+ long diffInMillis = expiryDate.getTime() - currentDate.getTime();
+
+ // 6. 一个月的毫秒数(按30天计算)
+ long oneMonthInMillis = 30L * 24 * 60 * 60 * 1000;
+
+ // 7. 如果距离到期日期在一个月内,返回1;否则返回0
+ return diffInMillis <= oneMonthInMillis ? 1 : 0;
}
public FwDeviceEntity entityDTO(FwDeviceDTO fwDevice) {
--
Gitblit v1.9.3