Lius
2025-03-05 e65c0249b66ffd1a4f96752a0f4a86f4f2e01314
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml
@@ -8,7 +8,7 @@
            t2.equipment_id equipmentId,
            t2.equipment_name equipmentName,
            t2.equipment_type equipmentType,
            t1.the_date,
            t1.the_date theDate,
            t1.process_long processLong,
            t1.process_long / 86400 utilizationRate,
            CASE
@@ -25,12 +25,28 @@
        WHERE
            t1.the_date <= #{ vo.endTime }
            AND t1.the_date >= #{ vo.startTime }
        <if test="vo.equipmentType != null and vo.equipmentType != '' ">
            AND t2.equipment_type = #{ vo.equipmentType }
        </if>
        <if test="vo.driveType != null and vo.driveType != '' ">
            AND t2.drive_type = #{ vo.driveType }
        </if>
        <if test="vo.deviceLevel != null and vo.deviceLevel != '' ">
            AND t2.device_level = #{vo.deviceLevel}
        </if>
        <if test="vo.deviceCategory != null and vo.deviceCategory != '' ">
            AND t2.device_category = #{vo.deviceCategory}
        </if>
        <if test="vo.deviceImportanceLevel != null and vo.deviceImportanceLevel != '' ">
            AND t2.device_importance_level = #{vo.deviceImportanceLevel}
        </if>
        <if test="vo.equipmentIdList != null and vo.equipmentIdList.size() > 0 ">
            AND t2.equipment_id IN
            <foreach collection="vo.equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                #{ id }
            </foreach>
        </if>
        AND t2.device_abnormal_status = 1
        ORDER BY t1.the_date
    </select>
@@ -40,7 +56,7 @@
            t2.equipment_id equipmentId,
            t2.equipment_name equipmentName,
            t2.equipment_type equipmentType,
            t1.the_date,
            t1.the_date theDate,
            t1.process_long processLong,
            CASE
                WHEN t1.open_long > 0 THEN
@@ -60,12 +76,138 @@
        WHERE
            t1.the_date &lt;= #{ vo.endTime }
            AND t1.the_date &gt;= #{ vo.startTime }
        <if test="vo.equipmentType != null and vo.equipmentType != '' ">
            AND t2.equipment_type = #{ vo.equipmentType }
        </if>
        <if test="vo.driveType != null and vo.driveType != '' ">
            AND t2.drive_type = #{ vo.driveType }
        </if>
        <if test="vo.deviceLevel != null and vo.deviceLevel != '' ">
            AND t2.device_level = #{vo.deviceLevel}
        </if>
        <if test="vo.deviceCategory != null and vo.deviceCategory != '' ">
            AND t2.device_category = #{vo.deviceCategory}
        </if>
        <if test="vo.deviceImportanceLevel != null and vo.deviceImportanceLevel != '' ">
            AND t2.device_importance_level = #{vo.deviceImportanceLevel}
        </if>
        <if test="vo.equipmentIdList != null and vo.equipmentIdList.size() > 0 ">
            AND t2.equipment_id IN
            <foreach collection="vo.equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                #{ id }
            </foreach>
        </if>
        AND t2.device_abnormal_status = 1
        ORDER BY t1.the_date
    </select>
    <!--得到所有班次数据之和-->
    <select id="efficiencyShiftSumList" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalShiftInfo">
        SELECT
            t2.equipment_id equipmentId,
            t2.equipment_name equipmentName,
            t2.equipment_type equipmentType,
            t1.the_date theDate,
            t1.shift_id shiftId,
            t1.shift_sub_id shiftSubId,
            SUM ( t1.process_long ) processLong,
            SUM ( t1.open_long ) openLong,
            SUM ( t1.wait_long ) waitLong,
            SUM ( t1.close_long ) closeLong,
            sum ( t1.total_long ) totalLong
        FROM
            mdc_equipment t2
            LEFT JOIN mdc_equipment_statistical_shift_info t1 ON t1.equipment_id = t2.equipment_id
        <where>
            AND t1.the_date &lt;= #{ vo.endTime }
            AND t1.the_date &gt;= #{ vo.startTime }
            <if test="vo.equipmentIdList != null and vo.equipmentIdList.size() > 0 ">
                AND t2.equipment_id IN
                <foreach collection="vo.equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                    #{ id }
                </foreach>
            </if>
            <if test="vo.shiftId != null and vo.shiftId != ''">
                AND t1.shift_id = #{ vo.shiftId }
            </if>
            <if test="vo.shiftSubId != null and vo.shiftSubId != ''">
                AND t1.shift_sub_id = #{ vo.shiftSubId }
            </if>
            <if test="vo.equipmentType != null and vo.equipmentType != '' ">
                AND t2.equipment_type = #{ vo.equipmentType }
            </if>
            <if test="vo.driveType != null and vo.driveType != '' ">
                AND t2.drive_type = #{ vo.driveType }
            </if>
            <if test="vo.deviceLevel != null and vo.deviceLevel != '' ">
                AND t2.device_level = #{vo.deviceLevel}
            </if>
            <if test="vo.deviceCategory != null and vo.deviceCategory != '' ">
                AND t2.device_category = #{vo.deviceCategory}
            </if>
            <if test="vo.deviceImportanceLevel != null and vo.deviceImportanceLevel != '' ">
                AND t2.device_importance_level = #{vo.deviceImportanceLevel}
            </if>
            AND t2.device_abnormal_status = 1
        </where>
        GROUP BY
            t2.equipment_id,
            t2.equipment_name,
            t2.equipment_type,
            t1.the_date,
            t1.shift_id,
            t1.shift_sub_id
        ORDER BY
            t1.the_date
    </select>
    <!--查询原始数据-->
    <select id="comparativeAnalysis" resultType="org.jeecg.modules.mdc.dto.MdcComAnaDto">
        SELECT
            mesi.equipment_id equipmentId,
            SUM ( mesi.open_long ) openLong,
            SUM ( mesi.close_long ) closeLong,
            SUM ( mesi.wait_long ) waitLong,
            SUM ( mesi.process_long ) processLong
        FROM
            mdc_equipment_statistical_info mesi
            LEFT JOIN mdc_equipment me ON mesi.equipment_id = me.equipment_id
        <where>
            <if test="vo.equipmentIdList != null and vo.equipmentIdList.size() > 0 ">
                AND mesi.equipment_id IN
                <foreach collection="vo.equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
                    #{ id }
                </foreach>
            </if>
            <if test="vo.driveType != null and vo.driveType != null">
                AND me.drive_type = #{ vo.driveType }
            </if>
            <if test="vo.equipmentType != null and vo.equipmentType != '' ">
                AND me.equipment_type = #{ vo.equipmentType }
            </if>
            <if test="vo.deviceLevel != null and vo.deviceLevel != '' ">
                AND me.device_level = #{vo.deviceLevel}
            </if>
            <if test="vo.deviceCategory != null and vo.deviceCategory != '' ">
                AND me.device_category = #{vo.deviceCategory}
            </if>
            <if test="vo.deviceImportanceLevel != null and vo.deviceImportanceLevel != '' ">
                AND me.device_importance_level = #{vo.deviceImportanceLevel}
            </if>
            AND mesi.the_date BETWEEN #{ vo.startTime } AND #{ vo.endTime }
        </where>
        GROUP BY
            mesi.equipment_id
    </select>
    <select id="getEfficiencyRate" resultType="java.math.BigDecimal">
        SELECT
            process_long
        FROM
            mdc_equipment_statistical_info
        WHERE
            equipment_id = #{ equipmentId } AND the_date &gt;= #{ date }
        ORDER BY the_date ASC
    </select>
</mapper>