lyh
2025-06-27 218ab860ed4708f6f70a519775c56c9554000fe7
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/FaultIntervalTimeMapper.xml
@@ -18,6 +18,9 @@
        <if test="params.useDepartName != null and params.useDepartName != ''">
            and t2.name =#{params.useDepartName}
        </if>
        <if test="params.useDepartName == '' ">
            and t1.work_center_id is not null
        </if>
        <if test="params.abc != null and params.abc != ''">
            and t1.equipment_importance_id =#{params.abc}
        </if>
@@ -27,7 +30,14 @@
        <if test="params.equipmentNum != null and params.equipmentNum != ''">
            and t1.num =#{params.equipmentNum}
        </if>
        ORDER BY t2.name ASC
<!--        <if test="params.workCenterIds != null">-->
<!--            and t1.work_center_id in-->
<!--            <foreach collection="params.workCenterIds" open="(" separator="," close=")" item="workCenterId">-->
<!--                #{workCenterId}-->
<!--            </foreach>-->
<!--        </if>-->
        ORDER BY t2.name DESC
    </select>
    <select id="getWorkCenterList"  parameterType="Map" resultType="Map">
@@ -57,22 +67,22 @@
    <select id="getEquipmentMTBF"  parameterType="Map" resultType="Map">
        SELECT
            tt.equipmentId,
            COUNT(tt.equipmentId) AS faultNumber,
            tt.totalAvailableTime,
            SUM(tt.faultTime) AS faultTime,
            SUM(tt.repairTime) AS repairTime,
            SUM(tt.noFaultTime) AS noFaultTime,
            sum(tt.totalDay) as totalDay,
            sum(tt.repairDay) as repairDay
            STR(SUM(tt.faultTime), 10, 2) AS faultTime,
            STR(SUM(tt.repairTime), 10, 2) AS repairTime,
            STR(tt.totalAvailableTime - SUM(tt.faultTime), 10, 2) AS noFaultTime,
            STR(case when COUNT(tt.equipmentId) = 0 THEN '0' WHEN  COUNT(tt.equipmentId) > 0 THEN (tt.totalAvailableTime - SUM(tt.faultTime))/COUNT(tt.equipmentId) end, 10, 2) as mtbf,
            STR(case when COUNT(tt.equipmentId) = 0 THEN '0' WHEN  COUNT(tt.equipmentId) > 0 THEN SUM(tt.repairTime)/COUNT(tt.equipmentId) end, 10, 2) as mttr,
            STR((tt.totalAvailableTime - SUM(tt.faultTime))/tt.totalAvailableTime*100, 10, 2) as serviceabilityRate,
            STR(SUM(tt.faultTime)/tt.totalAvailableTime*100, 10, 2) as startRate
        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,
                    datediff( DAY, #{params.startTime}, #{params.endTime} )+1 AS totalDay,
                    datediff( DAY, isnull( t1.fault_time, GETDATE( ) ), isnull( t2.actual_end_time, GETDATE( ) ) ) AS repairDay
                    CAST( DATEDIFF_BIG ( MILLISECOND, isnull( t1.fault_time, GETDATE( ) ), isnull( t2.actual_end_time, (SELECT #{params.endTime}+' '+FORMAT(GETDATE(), 'HH:mm:ss') ) ) ) AS FLOAT ) / 3600000 AS faultTime,
                    case when t2.create_time is null THEN '0' WHEN t2.create_time is not null THEN CAST( DATEDIFF_BIG ( MILLISECOND, t2.create_time, isnull( t2.actual_end_time, (SELECT #{params.endTime}+' '+FORMAT(GETDATE(), 'HH:mm:ss') ) ) ) AS FLOAT ) / 3600000  end AS repairTime
                FROM
                    mom_eam_equipment_report_repair t1
                LEFT JOIN mom_eam_repair_order t2 ON t2.report_repair_id = t1.id
@@ -84,6 +94,7 @@
        GROUP BY
            tt.equipmentId,tt.totalAvailableTime
    </select>
<!--    datediff( HOUR, isnull( t1.fault_time, GETDATE( ) ), isnull( t2.actual_end_time, GETDATE( ) ) ) AS faultTime,-->
<!--    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,-->