qushaowei
2025-06-13 4b27dd367eae2f24958c6bb857fb6959dcdb7a4a
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,-->