From 08ddfad4530a014094c06fe68b8c2d9a0753403a Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Wed, 05 Aug 2026 14:09:29 +0800
Subject: [PATCH] fix(gd): 修复线索事件查询中的SQL语法错误

---
 drone-service/drone-fw/src/main/java/org/sxkj/fw/device/wrapper/FwDeviceWrapper.java |   51 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 46 insertions(+), 5 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 a0a9b44..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
@@ -18,16 +18,18 @@
 
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
-import org.sxkj.fw.device.dto.FwDeviceAndTrackDTO;
 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;
 
 /**
  * 设备表 包装类,返回视图层所需的字段
  *
- * @author Aix
+ * @author aix
  * @since 2026-01-08
  */
 public class FwDeviceWrapper extends BaseEntityWrapper<FwDeviceEntity, FwDeviceVO>  {
@@ -38,12 +40,51 @@
 
 	@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;
 	}
 
-	public FwDeviceEntity entityDTO(FwDeviceDTO dto) {
-		return Objects.requireNonNull(BeanUtil.copy(dto, FwDeviceEntity.class));
+	/**
+	 * 计算维护状态
+	 *
+	 * @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) {
+		return Objects.requireNonNull(BeanUtil.copy(fwDevice, FwDeviceEntity.class));
+	}
 
 }

--
Gitblit v1.9.3