qushaowei
2025-06-17 68b6b248be403bfd684472a4a4876e5d35101e71
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
106
107
108
109
110
111
112
113
114
115
116
<?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.jeecg.modules.eam.mapper.MtbfMapper">
 
 
    <select id="getMTBF"  parameterType="Map" resultType="Map">
        select
        isnull(qqq.equipmentId,ttt.id) as equipmentId,
        isnull(qqq.equipmentNum,ttt.num) as equipmentNum,
        isnull(qqq.equipmentName,ttt.name) as equipmentName,
        isnull(qqq.equipmentModel,ttt.model) as equipmentModel,
        isnull(qqq.workCenterName,ttt1.name) as workCenterName,
        isnull(qqq.faultNumber,0) as faultNumber,
        isnull(qqq.totalAvailableTime,(datediff( HOUR, #{params.faultStartTime}, #{params.faultEndTime} ) + 24)) as totalAvailableTime,
        isnull(qqq.faultTime,0) as faultTime,
        isnull(qqq.repairTime,0) as repairTime,
        isnull(qqq.noFaultTime,(datediff( HOUR, #{params.faultStartTime}, #{params.faultEndTime} ) + 24)) as noFaultTime,
        isnull(qqq.mtbf,0) as mtbf,
        isnull(qqq.mttr,0) as mttr,
        isnull(qqq.serviceabilityRate,STR( ( 1 * 100 ), 10, 2 ) + '%') as serviceabilityRate,
        isnull(qqq.startRate,STR( ( 0 * 100 ), 10, 2 ) + '%') as startRate
        from mom_eam_equipment ttt
        left join mom_base_area ttt1 ON ttt.work_center_id = ttt1.id
        left join (
        SELECT
        tt.equipmentId,
        tt.equipmentNum,
        tt.equipmentName,
        tt.equipmentModel,
        tt.workCenterName,
        COUNT ( tt.equipmentId ) AS faultNumber,
        SUM ( totalAvailableTime ) AS totalAvailableTime,
        SUM ( faultTime ) AS faultTime,
        SUM ( repairTime ) AS repairTime,
        SUM ( noFaultTime ) AS noFaultTime,
        SUM ( noFaultTime ) / COUNT ( tt.equipmentId ) AS mtbf,
        SUM ( repairTime ) / COUNT ( tt.equipmentId ) AS mttr,
        STR((SUM ( noFaultTime ) / SUM ( totalAvailableTime ) * 100), 10, 2) + '%' AS serviceabilityRate,
        STR((SUM ( faultTime ) / SUM ( totalAvailableTime ) * 100), 10, 2)+ '%' AS startRate
        FROM
        (
        SELECT
        t1.report_repair_num AS reportRepairNum,
        t1.equipment_id AS equipmentId,
        t2.num AS equipmentNum,
        t2.name AS equipmentName,
        t2.model AS equipmentModel,
        t3.name AS workCenterName,
        SUM ( t1.total_available_time ) AS totalAvailableTime,
        SUM ( t1.fault_time ) AS faultTime,
        SUM ( t1.repair_time ) AS repairTime,
        SUM ( t1.no_fault_time ) AS noFaultTime
        FROM
        mom_eam_mtbf t1
        LEFT JOIN mom_eam_equipment t2 ON t1.equipment_id = t2.id
        LEFT JOIN mom_base_area t3 ON t2.work_center_id = t3.id
        where 1=1
        <if test="params.equipmentNum != null and params.equipmentNum != ''">
            and t2.num like concat('%',#{params.equipmentNum},'%')
        </if>
        <if test="params.workCenterId != null and params.workCenterId != ''">
            and t3.id = #{params.workCenterId}
        </if>
        <if test="params.equipmentImportanceId != null and params.equipmentImportanceId != ''">
            and t2.equipment_importance_id = #{params.equipmentImportanceId}
        </if>
        <if test="params.specificEquipment != null and params.specificEquipment != ''">
            and t2.specific_equipment = #{params.specificEquipment}
        </if>
        AND SUBSTRING ( CONVERT ( VARCHAR ( 10 ), t1.fault_data, 120 ), 1, 10 ) &gt;= #{params.faultStartTime}
        AND SUBSTRING ( CONVERT ( VARCHAR ( 10 ), t1.fault_data, 120 ), 1, 10 ) &lt;= #{params.faultEndTime}
        GROUP BY
        t1.report_repair_num,
        t1.equipment_id,
        t2.num,
        t2.name,
        t2.model,
        t3.name
        ) tt
        GROUP BY
        tt.equipmentId,
        tt.equipmentNum,
        tt.equipmentName,
        tt.equipmentModel,
        tt.workCenterName) qqq on ttt.id = qqq.equipmentId
        where 1= 1 and ttt.work_center_id is not null
        <if test="params.equipmentNum != null and params.equipmentNum != ''">
            and ttt.num like concat('%',#{params.equipmentNum},'%')
        </if>
        <if test="params.workCenterId != null and params.workCenterId != ''">
            and ttt1.id = #{params.workCenterId}
        </if>
        <if test="params.equipmentImportanceId != null and params.equipmentImportanceId != ''">
            and ttt.equipment_importance_id = #{params.equipmentImportanceId}
        </if>
        <if test="params.specificEquipment != null and params.specificEquipment != ''">
            and ttt.specific_equipment = #{params.specificEquipment}
        </if>
    </select>
 
 
    <select id="getReportRepairTimeList" resultType="org.jeecg.modules.eam.vo.MtbfVo">
        SELECT
            t1.num AS reportRepairNum,
            t1.status,
            t1.equipment_id AS equipmentId,
            t1.fault_time AS faultStartTime,
            t2.create_time AS repairStartTime,
            t2.actual_end_time AS repairEndTime
        FROM
            mom_eam_equipment_report_repair t1
        LEFT JOIN mom_eam_repair_order t2 ON t2.report_repair_id = t1.id
        WHERE t1.status IN ( '1', '2', '4' )
        AND ( SUBSTRING ( CONVERT ( VARCHAR ( 10 ), t2.actual_end_time, 120 ), 1, 10 ) = #{yesterday} OR t1.status != '4' )
    </select>
</mapper>