From c1a0c94ecd6e357b39e2aa8dbde01a25781e5ac3 Mon Sep 17 00:00:00 2001
From: xiebin <vip_xiaobin810@163.com>
Date: Sat, 17 Jan 2026 15:50:36 +0800
Subject: [PATCH] update-维修计划

---
 drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMaintainPlanMapper.xml |   35 +++++++++++++++++++++++++++++------
 1 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMaintainPlanMapper.xml b/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMaintainPlanMapper.xml
index e6860b8..11d9b1f 100644
--- a/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMaintainPlanMapper.xml
+++ b/drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMaintainPlanMapper.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.sxkj.fw.device.mapper.FwDeviceMaintainPlanMapper">
-
     <!-- 通用查询映射结果 -->
     <resultMap id="fwDeviceMaintainPlanResultMap" type="org.sxkj.fw.device.vo.FwDeviceMaintainPlanVO">
         <result column="id" property="id"/>
@@ -20,6 +19,8 @@
         <result column="purpose" property="purpose"/>
         <result column="charger" property="charger"/>
         <result column="device_create_time" property="createTime"/>
+        <result column="maintain_status" property="maintainStatus"/>
+        <result column="last_maintain_time" property="lastMaintainTime"/>
     </resultMap>
 
     <sql id="deviceFields">
@@ -36,9 +37,30 @@
         b.create_time as device_create_time
     </sql>
 
+    <sql id="maintainStatusCalculation">
+        CASE
+            WHEN (
+                SELECT COUNT(1)
+                FROM ja_fw_device_maintain_record r
+                WHERE r.device_id = a.device_id
+                  AND r.is_deleted = 0
+                  AND r.maintain_time IS NOT NULL
+                  AND (
+                      (a.plan_cycle_type = '1' AND FIND_IN_SET(DATE_FORMAT(r.maintain_time, '%m月%d号'), REPLACE(REPLACE(REPLACE(a.plan_cycle_value, '[', ''), ']', ''), '"', '')) > 0)
+                      OR (a.plan_cycle_type = '2' AND FIND_IN_SET(DATE_FORMAT(r.maintain_time, '%d号'), REPLACE(REPLACE(REPLACE(a.plan_cycle_value, '[', ''), ']', ''), '"', '')) > 0)
+                      OR (a.plan_cycle_type = '3' AND FIND_IN_SET(ELT(DAYOFWEEK(r.maintain_time), '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'), REPLACE(REPLACE(REPLACE(a.plan_cycle_value, '[', ''), ']', ''), '"', '')) > 0)
+                  )
+            ) > 0 THEN '已维护'
+            ELSE '未维护'
+        END AS maintain_status,
+        (SELECT MAX(r.maintain_time) FROM ja_fw_device_maintain_record r WHERE r.device_id = a.device_id AND r.is_deleted = 0) AS last_maintain_time
+
+    </sql>
+
+
     <select id="getFwDeviceMaintainPlanById" resultMap="fwDeviceMaintainPlanResultMap">
         select
-            <include refid="deviceFields"/>,a.*
+        <include refid="deviceFields"/>,a.*
         from
         ja_fw_device_maintain_plan a
         left join ja_fw_device b on (a.device_id = b.id)
@@ -53,9 +75,10 @@
 
     <select id="selectFwDeviceMaintainPlanPage" resultMap="fwDeviceMaintainPlanResultMap">
         select
-            <include refid="deviceFields"/>,a.*
+        <include refid="deviceFields"/>,a.*,
+        <include refid="maintainStatusCalculation"/>
         from
-            ja_fw_device_maintain_plan a
+        ja_fw_device_maintain_plan a
         left join ja_fw_device b on (a.device_id = b.id)
         <where>
             a.is_deleted = 0
@@ -76,7 +99,7 @@
 
 
     <select id="exportFwDeviceMaintainPlan" resultType="org.sxkj.fw.device.excel.FwDeviceMaintainPlanExcel">
-        SELECT * FROM ja_fw_device_maintain_plan ${ew.customSqlSegment}
+        SELECT *
+        FROM ja_fw_device_maintain_plan ${ew.customSqlSegment}
     </select>
-
 </mapper>

--
Gitblit v1.9.3