吉安感知网项目-后端
linwei
2026-01-17 f799d1ec5a439003baf2ec6d7a5919718cfdcc14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?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"/>
        <result column="device_id" property="deviceId"/>
        <result column="plan_cycle_type" property="planCycleType"/>
        <result column="plan_cycle_value" property="planCycleValue"
                typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
        <result column="device_name" property="deviceName"/>
        <result column="device_type" property="deviceType"/>
        <result column="device_att" property="deviceAtt"/>
        <result column="device_model" property="deviceModel"/>
        <result column="belong_dept" property="belongDept"/>
        <result column="device_specification" property="deviceSpecification"/>
        <result column="manufacturer" property="manufacturer"/>
        <result column="source" property="source"/>
        <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">
        b.device_name,
        b.device_type,
        b.device_att,
        b.device_model,
        b.belong_dept,
        b.device_specification,
        b.manufacturer,
        b.source,
        b.purpose,
        b.charger,
        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.*
        from
        ja_fw_device_maintain_plan a
        left join ja_fw_device b on (a.device_id = b.id)
        <where>
            a.is_deleted = 0
            <if test="id != null and id != ''">
                and a.id = #{id}
            </if>
        </where>
        limit 1
    </select>
 
    <select id="selectFwDeviceMaintainPlanPage" resultMap="fwDeviceMaintainPlanResultMap">
        select
        <include refid="deviceFields"/>,a.*,
        <include refid="maintainStatusCalculation"/>
        from
        ja_fw_device_maintain_plan a
        left join ja_fw_device b on (a.device_id = b.id)
        <where>
            a.is_deleted = 0
            <if test="param2.deviceId != null and param2.deviceId != ''">
                and device_id = #{param2.deviceId}
            </if>
            <if test="param2.deviceName != null and param2.deviceName != ''">
                and device_name like concat('%',#{param2.deviceName},'%')
            </if>
            <if test="param2.deviceType != null and param2.deviceType != ''">
                and device_type = #{param2.deviceType}
            </if>
            <if test="param2.belongDept != null and param2.belongDept != ''">
                and belong_dept = #{param2.belongDept}
            </if>
        </where>
    </select>
 
 
    <select id="exportFwDeviceMaintainPlan" resultType="org.sxkj.fw.device.excel.FwDeviceMaintainPlanExcel">
        SELECT *
        FROM ja_fw_device_maintain_plan ${ew.customSqlSegment}
    </select>
</mapper>