ReportService.java
5.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package com.ruoyi.service;
import com.ruoyi.driver.domain.Driver;
import com.ruoyi.driver.mapper.DriverMapper;
import com.ruoyi.eexception.domain.EquipmentException;
import com.ruoyi.eexception.mapper.EquipmentExceptionMapper;
import com.ruoyi.in.domain.SignIn;
import com.ruoyi.in.mapper.SignInMapper;
import com.ruoyi.pojo.request.ReportViewRequestVo;
import com.ruoyi.pojo.request.ReportErrorRequestVo;
import com.ruoyi.pojo.response.ReportErrorResponseVo;
import com.ruoyi.pojo.response.ReportSignInResponseVo;
import com.ruoyi.pojo.response.ReportViewResponseVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import static com.ruoyi.common.ErrorTypeProperties.EQUIPMENT_ERROR;
import static com.ruoyi.common.ErrorTypeProperties.SIGN_IN_ERROR;
/**
* @author 20412
*/
@Service
public class ReportService {
@Autowired
private SignInMapper signInMapper;
@Autowired
private EquipmentExceptionMapper exceptionMapper;
@Autowired
private DriverMapper driverMapper;
/**
* 查询报表信息
*/
public List<ReportViewResponseVo> getReportScrollViewTable(ReportViewRequestVo requestVo) {
List<ReportViewResponseVo> reportScrollViewTable = signInMapper.getReportScrollViewTable(requestVo);
return reportScrollViewTable;
}
public List<ReportErrorResponseVo> getErrorReportList(ReportErrorRequestVo request) {
// 获取基础报表信息
List<SignIn> signInList = signInMapper.getSignErrorList(request);
List<EquipmentException> exceptionList = exceptionMapper.getEquipmentErrorList(request);
// 封装到集合返回前端
List<ReportErrorResponseVo> responses = new ArrayList<>();
// 获取对应名称
Set<String> jobCodes = new HashSet<>();
signInList.stream().forEach(item -> {
jobCodes.add(item.getJobCode());
});
exceptionList.stream().forEach(item -> {
jobCodes.add(item.getJobCode());
});
Map<String, String> names = driverMapper.getNameByJobCode(jobCodes).stream().collect(Collectors.toMap(Driver::getJobCode, Driver::getPersonnelName));
if (SIGN_IN_ERROR.equals(request.getErrorType())) {
copyToResponse(names, signInList, responses);
} else if (EQUIPMENT_ERROR.equals(request.getErrorType())) {
copyToResponseByException(names, exceptionList, responses);
} else {
copyToResponse(names, signInList, responses);
copyToResponseByException(names, exceptionList, responses);
}
responses = sortListByCreateTime(responses);
// 清除缓存
jobCodes.clear();
signInList.clear();
exceptionList.clear();
return responses;
}
private List<ReportErrorResponseVo> sortListByCreateTime(List<ReportErrorResponseVo> responses) {
responses = responses.stream().sorted(Comparator.comparing(ReportErrorResponseVo::getCreateTime, Comparator.reverseOrder())).collect(Collectors.toList());
return responses;
}
private void copyToResponseByException(Map<String, String> names, List<EquipmentException> exceptionList, List<ReportErrorResponseVo> responses) {
exceptionList.forEach(item -> {
ReportErrorResponseVo vo = new ReportErrorResponseVo();
vo.setName(names.get(item.getJobCode()));
vo.setImage(item.getImage());
vo.setRemark(item.getRemark());
vo.setCreateTime(item.getCreateTime());
vo.setDeviceId(item.getDeviceId());
vo.setErrorType(EQUIPMENT_ERROR);
responses.add(vo);
});
}
private void copyToResponse(Map<String, String> names, List<SignIn> signInList, List<ReportErrorResponseVo> responses) {
signInList.forEach(item -> {
ReportErrorResponseVo vo = new ReportErrorResponseVo();
vo.setName(names.get(item.getJobCode()));
vo.setImage(item.getImage());
vo.setRemark(item.getRemark());
vo.setCreateTime(item.getCreateTime());
vo.setJobCode(item.getJobCode());
// vo.setDeviceId();
vo.setErrorType(SIGN_IN_ERROR);
responses.add(vo);
});
}
public List<ReportSignInResponseVo> handlerList(List<ReportViewResponseVo> reportScrollViewTable) {
Map<String, ReportSignInResponseVo> responseMapVo = new HashMap<>(30);
for (ReportViewResponseVo originVo : reportScrollViewTable) {
String dayKey = getDateDay(originVo.getCreateTime()) + originVo.getJobCode();
if (Objects.isNull(responseMapVo.get(dayKey))) {
responseMapVo.put(dayKey, new ReportSignInResponseVo(originVo));
} else {
ReportSignInResponseVo responseVo = responseMapVo.get(dayKey);
responseVo.getChildren().add(new ReportSignInResponseVo(originVo));
responseVo.setCount(responseVo.getCount() + 1);
}
}
return new ArrayList<>(responseMapVo.values());
}
public String getDateDay(Date createTime) {
SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");
return simple.format(createTime);
}
}