package com.ruoyi.report.service.impl; import com.ruoyi.report.dto.DashboardDto; import com.ruoyi.report.mapper.DashboardMapper; import com.ruoyi.report.service.DashboardService; import com.ruoyi.report.vo.DashboardOverviewVo; import com.ruoyi.report.vo.RankingVo; import com.ruoyi.report.vo.TaskCalendarVo; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.*; /** * 数字化语音看板服务实现 */ @Service @AllArgsConstructor public class DashboardServiceImpl implements DashboardService { private DashboardMapper dashboardMapper; @Override public DashboardOverviewVo getOverview(DashboardDto dto) { DashboardOverviewVo vo = new DashboardOverviewVo(); // 待处理统计 vo.setWaitReceive(dashboardMapper.getWaitReceive()); vo.setWaitInspection(dashboardMapper.getWaitInspection()); vo.setWaitAudit(dashboardMapper.getWaitAudit()); vo.setWaitReport(dashboardMapper.getWaitReport()); // 今日统计 vo.setTodayNewSample(dashboardMapper.getTodayNewSample()); vo.setTodayFinished(dashboardMapper.getTodayFinished()); // 近30天检验结果 vo.setRawMaterialResult(dashboardMapper.getInsResultByDays(30, "1")); vo.setSemiFinishedResult(dashboardMapper.getInsResultByDays(30, "2")); vo.setFinishedProductResult(dashboardMapper.getInsResultByDays(30, "3")); return vo; } @Override public List getHistory15Days(DashboardDto dto) { return dashboardMapper.getHistoryDays(15, dto); } @Override public List getFuture15Days(DashboardDto dto) { return dashboardMapper.getFutureDays(15, dto); } @Override public List getRanking(DashboardDto dto) { // 合并原始记录排行和报告排行 List originalRanking = dashboardMapper.getOriginalRecordRanking(dto); List reportRanking = dashboardMapper.getReportRanking(dto); Map rankingMap = new HashMap<>(); // 处理原始记录排行 for (int i = 0; i < originalRanking.size(); i++) { RankingVo vo = originalRanking.get(i); vo.setRank(i + 1); vo.setFinishCount(vo.getSubmitCount()); rankingMap.put(vo.getUserId(), vo); } // 处理报告排行 for (RankingVo report : reportRanking) { RankingVo existing = rankingMap.get(report.getUserId()); if (existing != null) { existing.setFinishCount(existing.getFinishCount() + report.getSubmitCount()); } else { report.setRank(0); report.setFinishCount(report.getSubmitCount()); rankingMap.put(report.getUserId(), report); } } // 排序并设置排名 List result = new ArrayList<>(rankingMap.values()); result.sort((a, b) -> b.getFinishCount().compareTo(a.getFinishCount())); for (int i = 0; i < result.size(); i++) { result.get(i).setRank(i + 1); } return result.size() > 10 ? result.subList(0, 10) : result; } @Override public Map getInsResult(DashboardDto dto) { Map result = new HashMap<>(); result.put("rawMaterial", dashboardMapper.getInsResultByDays(30, "1")); result.put("semiFinished", dashboardMapper.getInsResultByDays(30, "2")); result.put("finishedProduct", dashboardMapper.getInsResultByDays(30, "3")); return result; } @Override public List> getVoiceQueue() { return dashboardMapper.getVoiceQueue(); } }