qushaowei
2024-07-25 a7ecb4b14c2e5a56f425f46decc9c203580edd35
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
<?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 in ('0','1','2')
        </if>
    </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.abc != null and params.abc != ''">
            and t1.equipment_importance_id =#{params.abc}
        </if>
        <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.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,
            SUM(tt.noFaultTime) AS noFaultTime,
            SUM(tt.repairTime) /COUNT(tt.equipmentId) AS averageRepairTime,
            SUM(tt.noFaultTime) /COUNT(tt.equipmentId) AS averageFaultIntervalTime
        FROM(
                SELECT
                    t1.equipment_id AS equipmentId,
                    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
                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>
 
    <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.workCenterId) AS faultNumber,
            tt.totalAvailableTime * COUNT(tt.workCenterId) as totalAvailableTime,
            SUM(tt.faultTime) * COUNT(tt.workCenterId) AS faultTime,
            SUM(tt.repairTime) * COUNT(tt.workCenterId) AS repairTime,
            SUM(tt.noFaultTime) * COUNT(tt.workCenterId) AS noFaultTime,
            SUM(tt.repairTime) /COUNT(tt.workCenterId) * COUNT(tt.workCenterId) AS averageRepairTime,
            SUM(tt.noFaultTime) /COUNT(tt.workCenterId) * COUNT(tt.workCenterId) AS averageFaultIntervalTime
        FROM(
                SELECT
                    t3.work_center_id as workCenterId,
                    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
                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}
            ) AS tt
        GROUP BY
            tt.workCenterId,tt.totalAvailableTime
    </select>
 
    <select id="getCenterMTBFTotalAvailableTime"  parameterType="Map" resultType="Map">
        select  datediff( HOUR, #{params.startTime}, #{params.endTime} ) + 24 AS totalAvailableTime
    </select>
</mapper>