hyingbo
2025-06-19 ce8cb72035593058a572b905bedd327cad579f18
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,-->