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<TaskCalendarVo> getHistory15Days(DashboardDto dto) {
|
return dashboardMapper.getHistoryDays(15, dto);
|
}
|
|
@Override
|
public List<TaskCalendarVo> getFuture15Days(DashboardDto dto) {
|
return dashboardMapper.getFutureDays(15, dto);
|
}
|
|
@Override
|
public List<RankingVo> getRanking(DashboardDto dto) {
|
// 合并原始记录排行和报告排行
|
List<RankingVo> originalRanking = dashboardMapper.getOriginalRecordRanking(dto);
|
List<RankingVo> reportRanking = dashboardMapper.getReportRanking(dto);
|
|
Map<Long, RankingVo> 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<RankingVo> 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<String, Object> getInsResult(DashboardDto dto) {
|
Map<String, Object> 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<Map<String, Object>> getVoiceQueue() {
|
return dashboardMapper.getVoiceQueue();
|
}
|
|
}
|