qushaowei
2025-06-10 1bf6cb4c0bfc149737afa37a1df1c809b29c6139
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?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.FaultIntervalTimeMapper">
 
    <select id="getEquipmentList"  parameterType="Map" resultType="Map">
        SELECT
            t1.id,
            t1.num,
            t1.name,
            t1.model,
            t1.specification,
            t2.name as departName
        FROM
            mom_eam_equipment t1
        LEFT JOIN mom_base_area t2 ON t1.work_center_id = t2.id
        WHERE
            t1.del_flag = '0'
        <if test="params.useDepartName != null and params.useDepartName != ''">
            and t2.name =#{params.useDepartName}
        </if>
        <if test="params.abc != null and params.abc != ''">
            and t1.equipment_importance_id =#{params.abc}
        </if>
        <if test="params.specificEquipment != null and params.specificEquipment != ''">
            and t1.specific_equipment =#{params.specificEquipment}
        </if>
        <if test="params.equipmentNum != null and params.equipmentNum != ''">
            and t1.num =#{params.equipmentNum}
        </if>
        ORDER BY t2.name ASC
    </select>
 
    <select id="getWorkCenterList"  parameterType="Map" resultType="Map">
        SELECT COUNT
            ( t1.work_center_id ),
            t1.work_center_id as workCenterId,
            t2.name as workCenterName
        FROM
            mom_eam_equipment t1
        LEFT JOIN mom_base_area t2 ON t1.work_center_id = t2.id
        WHERE t2.type = '1' and t1.work_center_id IS NOT NULL
        <if test="params.useDepartName != null and params.useDepartName != ''">
            and t2.name =#{params.useDepartName}
        </if>
        GROUP BY t1.work_center_id,t2.name
    </select>
<!--    <if test="params.abc != null and params.abc != ''">-->
<!--        and t1.equipment_importance_id =#{params.abc}-->
<!--    </if>-->
<!--    <if test="params.specificEquipment != null and params.specificEquipment != ''">-->
<!--        and t1.specific_equipment =#{params.specificEquipment}-->
<!--    </if>-->
 
    <!--            <if test="params.useDepartName == ''">-->
    <!--                and t2.depart_name = '-1'-->
    <!--            </if>-->
 
    <select id="getEquipmentMTBF"  parameterType="Map" resultType="Map">
        SELECT
            COUNT(tt.equipmentId) AS faultNumber,
            tt.totalAvailableTime,
            SUM(tt.faultTime) AS faultTime,
            SUM(tt.repairTime) AS repairTime,
            tt.totalAvailableTime - SUM(tt.faultTime) AS noFaultTime
        FROM(
                SELECT
                    t1.equipment_id AS equipmentId,
                    datediff( HOUR, #{params.startTime}, #{params.endTime} ) + 24 AS totalAvailableTime,
                    datediff( HOUR, isnull( t1.fault_time, GETDATE( ) ), isnull( t2.actual_end_time, GETDATE( ) ) ) AS faultTime,
                    case when t2.create_time is null THEN '0' WHEN t2.create_time is not null THEN datediff( HOUR,t2.create_time, isnull( t2.actual_end_time, GETDATE( ) ) )  end AS repairTime
                FROM
                    mom_eam_equipment_report_repair t1
                LEFT JOIN mom_eam_repair_order t2 ON t2.report_repair_id = t1.id
                WHERE 1=1
                AND SUBSTRING ( CONVERT ( VARCHAR ( 10 ), t1.fault_time, 120 ), 1, 10 ) &gt;= #{params.startTime}
                AND SUBSTRING ( CONVERT ( VARCHAR ( 10 ), t1.fault_time, 120 ), 1, 10 ) &lt;= #{params.endTime}
                AND t1.equipment_id  = #{params.equipmentId}
            ) AS tt
        GROUP BY
            tt.equipmentId,tt.totalAvailableTime
    </select>
<!--    SUM(tt.repairTime) /COUNT(tt.equipmentId) AS averageRepairTime,-->
<!--    SUM(tt.noFaultTime) /(COUNT(tt.equipmentId) + 1) AS averageFaultIntervalTime,-->
<!--    (sum(tt.totalDay) - sum(tt.repairDay))/sum(tt.totalDay) as serviceabilityRate,-->
<!--    (tt.totalAvailableTime - SUM(tt.repairTime))/tt.totalAvailableTime as startRate-->
    <select id="getMTBFTotalAvailableTime"  parameterType="Map" resultType="Map">
        select  datediff( HOUR, #{params.startTime}, #{params.endTime} ) + 24 AS totalAvailableTime
    </select>
 
    <select id="getCenterEquipmentMTBF"  parameterType="Map" resultType="Map">
        SELECT
            COUNT(tt.equipmentNum) AS equipmentNumer,
            sum(tt.equipmentNum) as faultNumber,
            tt.totalAvailableTime * COUNT(tt.equipmentNum) as totalAvailableTime,
            SUM(tt.faultTime) AS faultTime,
            SUM(tt.repairTime) AS repairTime,
            tt.totalAvailableTime * COUNT(tt.equipmentNum) - SUM(tt.faultTime) AS noFaultTime,
            tt.totalDay,
            tt.repairDay
        FROM(
                select COUNT(ss.equipmentNum) as equipmentNum,ss.totalAvailableTime,ss.faultTime,ss.repairTime,ss.noFaultTime,ss.totalDay,ss.repairDay from (
                    SELECT
                        t3.num as equipmentNum,
                        datediff( HOUR, #{params.startTime}, #{params.endTime} ) + 24 AS totalAvailableTime,
                        datediff( HOUR, isnull( t1.fault_time, GETDATE( ) ), isnull( t1.accept_time, GETDATE( ) ) ) AS faultTime,
                        datediff( HOUR, isnull( t2.actual_start_time, GETDATE( ) ), isnull( t2.actual_end_time, GETDATE( ) ) ) AS repairTime,
                        (datediff( HOUR, #{params.startTime}, #{params.endTime}) + 24) - datediff( HOUR, isnull( t1.fault_time, GETDATE( ) ), isnull( t1.accept_time, GETDATE( ) ) ) AS noFaultTime,
                        datediff( DAY, #{params.startTime}, #{params.endTime} )+1 AS totalDay,
                        datediff( DAY, isnull( t1.fault_time, GETDATE( ) ), isnull( t2.actual_end_time, GETDATE( ) ) ) AS repairDay
                    FROM
                        mom_eam_equipment_report_repair t1
                    LEFT JOIN mom_eam_repair_order t2 ON t2.report_repair_id = t1.id
                    left join mom_eam_equipment t3 on t1.equipment_id = t3.id
                    WHERE 1=1
                      AND SUBSTRING ( CONVERT ( VARCHAR ( 10 ), t1.fault_time, 120 ), 1, 10 ) &gt;= #{params.startTime}
                      AND SUBSTRING ( CONVERT ( VARCHAR ( 10 ), t1.fault_time, 120 ), 1, 10 ) &lt;= #{params.endTime}
                      AND t3.work_center_id  = #{params.workCenterId}
                      <if test="params.abc != null and params.abc != ''">
                         and t3.equipment_importance_id =#{params.abc}
                      </if>
                      <if test="params.specificEquipment != null and params.specificEquipment != ''">
                         and t3.specific_equipment =#{params.specificEquipment}
                      </if>
                ) ss group by ss.totalAvailableTime,ss.faultTime,ss.repairTime,ss.noFaultTime,ss.totalDay,ss.repairDay
            ) AS tt
        GROUP BY
            tt.equipmentNum,tt.totalAvailableTime,tt.totalDay,tt.repairDay
    </select>
<!--    SUM(tt.repairTime) /sum(tt.equipmentNum) AS averageRepairTime,-->
<!--    (tt.totalAvailableTime * COUNT(tt.equipmentNum) - SUM(tt.faultTime))/sum(tt.equipmentNum) AS averageFaultIntervalTime,-->
<!--    (tt.totalDay * COUNT(tt.equipmentNum) -tt.repairDay)/ (tt.totalDay * COUNT(tt.equipmentNum)) as serviceabilityRate,-->
<!--    (tt.totalAvailableTime * COUNT(tt.equipmentNum) - SUM(tt.repairTime))/(tt.totalAvailableTime * COUNT(tt.equipmentNum)) as startRate-->
 
    <select id="getCenterMTBFTotalAvailableTime"  parameterType="Map" resultType="Map">
        select  datediff( HOUR, #{params.startTime}, #{params.endTime} ) + 24 AS totalAvailableTime
    </select>
</mapper>