车间能级提升-智能设备管理系统
baoshiwei
2025-07-02 2f0009c750de4d47a18cce4a5a403fa83ba0c209
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/ReportServiceImpl.java
@@ -1,9 +1,11 @@
package org.dromara.eims.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -318,4 +320,71 @@
        return item;
    }
    @Override
    public TableDataInfo<Map<String, Object>> queryEquEfficiencyList(Map<String, Object> queryParams, PageQuery pageQuery) {
        Integer selectYear = getYearFromParams(queryParams);
        String start = Year.of(selectYear).atDay(1).toString(); // yyyy-MM-dd
        String end = Year.of(selectYear).atDay(Year.of(selectYear).length()).toString();
        List<Map<String, Object>> statList = inspectStMapper.statEquEfficiency(start, end);
        // 组装统计结果
        Map<Integer, Integer> runTimes = new HashMap<>();
        Map<Integer, Integer> faultTimes = new HashMap<>();
        Map<Integer, Integer> totalTimes = new HashMap<>();
        int runTotal = 0, faultTotal = 0, totalTotal = 0;
        for (Map<String, Object> row : statList) {
            int month = Integer.parseInt(row.get("month").toString());
            int run = row.get("runTimes") == null ? 0 : Integer.parseInt(row.get("runTimes").toString());
            int fault = row.get("faultTimes") == null ? 0 : Integer.parseInt(row.get("faultTimes").toString());
            int total = run + fault;
            runTimes.put(month, run);
            faultTimes.put(month, fault);
            totalTimes.put(month, total);
            runTotal += run;
            faultTotal += fault;
            totalTotal += total;
        }
        // 组装返回数据(同前)
        String targetValue = "98.00%";
        List<Map<String, Object>> resultList = new ArrayList<>();
        Map<String, Object> row1 = new LinkedHashMap<>(); // 正常运转时间
        Map<String, Object> row2 = new LinkedHashMap<>(); // 总运转时间
        Map<String, Object> row3 = new LinkedHashMap<>(); // 故障时间
        Map<String, Object> row4 = new LinkedHashMap<>(); // 目标值
        Map<String, Object> row5 = new LinkedHashMap<>(); // 正常运转率(稼动率)
        row1.put("item", "正常运转时间");
        row2.put("item", "总运转时间");
        row3.put("item", "故障时间");
        row4.put("item", "目标值");
        row5.put("item", "正常运转率(稼动率)");
        for (int m = 1; m <= 12; m++) {
            row1.put(m + "月", runTimes.getOrDefault(m, 0));
            row2.put(m + "月", totalTimes.getOrDefault(m, 0));
            row3.put(m + "月", faultTimes.getOrDefault(m, 0));
            row4.put(m + "月", targetValue);
            int run = runTimes.getOrDefault(m, 0);
            int total = totalTimes.getOrDefault(m, 0);
            String eff = total > 0 ? String.format("%.2f%%", run * 100.0 / total) : "-";
            row5.put(m + "月", eff);
        }
        row1.put("total", runTotal);
        row2.put("total", totalTotal);
        row3.put("total", faultTotal);
        row4.put("total", targetValue);
        row5.put("total", totalTotal > 0 ? String.format("%.2f%%", runTotal * 100.0 / totalTotal) : "-");
        resultList.add(row1);
        resultList.add(row2);
        resultList.add(row3);
        resultList.add(row4);
        resultList.add(row5);
        return TableDataInfo.build(resultList);
    }
}