|
@@ -1183,21 +1183,19 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
* 获取散点图值
|
|
* 获取散点图值
|
|
*
|
|
*
|
|
* @param scatterYMap
|
|
* @param scatterYMap
|
|
|
|
+ * @param studentCode
|
|
* @param reportExamStudentTargetDto
|
|
* @param reportExamStudentTargetDto
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- public Map<Long, ConcurrentMap<String, Integer>> getScatterValue(Map<Long, ConcurrentMap<String, Integer>> scatterYMap, ReportExamStudentTargetDto reportExamStudentTargetDto) {
|
|
|
|
- ConcurrentMap<String, Integer> map = null;
|
|
|
|
|
|
+ public Map<Long, ConcurrentMap<String, String>> getScatterValue(Map<Long, ConcurrentMap<String, String>> scatterYMap, String studentCode, ReportExamStudentTargetDto reportExamStudentTargetDto) {
|
|
|
|
+ ConcurrentMap<String, String> map = null;
|
|
if (!scatterYMap.containsKey(reportExamStudentTargetDto.getTargetId())) {
|
|
if (!scatterYMap.containsKey(reportExamStudentTargetDto.getTargetId())) {
|
|
map = new ConcurrentHashMap<>();
|
|
map = new ConcurrentHashMap<>();
|
|
- map.put(reportExamStudentTargetDto.getMatrixDegree().toString(), 1);
|
|
|
|
|
|
+ map.put(studentCode, reportExamStudentTargetDto.getMatrixDegree().toString());
|
|
} else {
|
|
} else {
|
|
map = scatterYMap.get(reportExamStudentTargetDto.getTargetId());
|
|
map = scatterYMap.get(reportExamStudentTargetDto.getTargetId());
|
|
if (!map.containsKey(reportExamStudentTargetDto.getMatrixDegree().toString())) {
|
|
if (!map.containsKey(reportExamStudentTargetDto.getMatrixDegree().toString())) {
|
|
- map.put(reportExamStudentTargetDto.getMatrixDegree().toString(), 1);
|
|
|
|
- } else {
|
|
|
|
- Integer value = map.get(reportExamStudentTargetDto.getMatrixDegree().toString());
|
|
|
|
- map.put(reportExamStudentTargetDto.getMatrixDegree().toString(), ++value);
|
|
|
|
|
|
+ map.put(studentCode, reportExamStudentTargetDto.getMatrixDegree().toString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scatterYMap.put(reportExamStudentTargetDto.getTargetId(), map);
|
|
scatterYMap.put(reportExamStudentTargetDto.getTargetId(), map);
|
|
@@ -1211,11 +1209,11 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public LinkedMultiValueMap<Long, Map<String, String>> getFinalScatterValue(Map<Long, ConcurrentMap<String, Integer>> scatterYMap) {
|
|
|
|
|
|
+ public LinkedMultiValueMap<Long, Map<String, String>> getFinalScatterValue(Map<Long, ConcurrentMap<String, String>> scatterYMap) {
|
|
LinkedMultiValueMap<Long, Map<String, String>> finalScatterYMap = new LinkedMultiValueMap<>();
|
|
LinkedMultiValueMap<Long, Map<String, String>> finalScatterYMap = new LinkedMultiValueMap<>();
|
|
- for (Map.Entry<Long, ConcurrentMap<String, Integer>> entry : scatterYMap.entrySet()) {
|
|
|
|
- ConcurrentMap<String, Integer> concurrentMap = entry.getValue();
|
|
|
|
- for (Map.Entry<String, Integer> entry1 : concurrentMap.entrySet()) {
|
|
|
|
|
|
+ for (Map.Entry<Long, ConcurrentMap<String, String>> entry : scatterYMap.entrySet()) {
|
|
|
|
+ ConcurrentMap<String, String> concurrentMap = entry.getValue();
|
|
|
|
+ for (Map.Entry<String, String> entry1 : concurrentMap.entrySet()) {
|
|
Map<String, String> mapNew = new HashMap<>();
|
|
Map<String, String> mapNew = new HashMap<>();
|
|
mapNew.put(entry1.getKey(), entry1.getValue().toString());
|
|
mapNew.put(entry1.getKey(), entry1.getValue().toString());
|
|
finalScatterYMap.add(entry.getKey(), mapNew);
|
|
finalScatterYMap.add(entry.getKey(), mapNew);
|
|
@@ -1421,7 +1419,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
trExamStudentNewList.remove(trExamStudentNewList.size() - 1);
|
|
trExamStudentNewList.remove(trExamStudentNewList.size() - 1);
|
|
|
|
|
|
BigDecimal targetAvgScore = new BigDecimal(trExamStudentNewList.stream().mapToDouble(s -> s.getScore().doubleValue()).sum()).divide(new BigDecimal(trExamStudentNewList.size()), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal targetAvgScore = new BigDecimal(trExamStudentNewList.stream().mapToDouble(s -> s.getScore().doubleValue()).sum()).divide(new BigDecimal(trExamStudentNewList.size()), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
- Map<Long, ConcurrentMap<String, Integer>> scatterYMap = new LinkedHashMap<>();
|
|
|
|
|
|
+ Map<Long, ConcurrentMap<String, String>> scatterYMap = new LinkedHashMap<>();
|
|
for (int i = 0; i < trExamStudentList.size(); i++) {
|
|
for (int i = 0; i < trExamStudentList.size(); i++) {
|
|
TRExamStudent trExamStudent = trExamStudentList.get(i);
|
|
TRExamStudent trExamStudent = trExamStudentList.get(i);
|
|
RowRenderData examStudent_row = new RowRenderData();
|
|
RowRenderData examStudent_row = new RowRenderData();
|
|
@@ -1453,7 +1451,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
if (!Objects.equals(trExamStudent.getName(), "平均分")
|
|
if (!Objects.equals(trExamStudent.getName(), "平均分")
|
|
&& !Objects.equals(trExamStudent.getName(), "各课程目标平均分")
|
|
&& !Objects.equals(trExamStudent.getName(), "各课程目标平均分")
|
|
&& Objects.nonNull(matrixDegree)) {
|
|
&& Objects.nonNull(matrixDegree)) {
|
|
- trBasicInfoService.getScatterValue(scatterYMap, reportExamStudentTargetDto);
|
|
|
|
|
|
+ trBasicInfoService.getScatterValue(scatterYMap, trExamStudent.getStudentCode(), reportExamStudentTargetDto);
|
|
}
|
|
}
|
|
BigDecimal scoreSum = new BigDecimal(0);
|
|
BigDecimal scoreSum = new BigDecimal(0);
|
|
ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = reportExamStudentTargetDto.getUsualScore();
|
|
ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = reportExamStudentTargetDto.getUsualScore();
|
|
@@ -1730,10 +1728,12 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
protected ChartMultiSeriesRenderData buildScatterMap(List<Map<String, String>> list, CourseTargetWebDto courseTargetWebDto) {
|
|
protected ChartMultiSeriesRenderData buildScatterMap(List<Map<String, String>> list, CourseTargetWebDto courseTargetWebDto) {
|
|
List<String> valueXList = new ArrayList<>();
|
|
List<String> valueXList = new ArrayList<>();
|
|
List<Number> titleYList = new ArrayList<>();
|
|
List<Number> titleYList = new ArrayList<>();
|
|
|
|
+ int index = 1;
|
|
for (Map<String, String> m : list) {
|
|
for (Map<String, String> m : list) {
|
|
for (Map.Entry<String, String> entry : m.entrySet()) {
|
|
for (Map.Entry<String, String> entry : m.entrySet()) {
|
|
- valueXList.add(entry.getValue());
|
|
|
|
- titleYList.add(Double.parseDouble(entry.getKey()));
|
|
|
|
|
|
+ valueXList.add(index + "");
|
|
|
|
+ titleYList.add(Double.parseDouble(entry.getValue()));
|
|
|
|
+ ++index;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ChartMultiSeriesRenderData scatterMap = Charts.ofMultiSeries(courseTargetWebDto.getTargetName(), valueXList.toArray(new String[valueXList.size()]))
|
|
ChartMultiSeriesRenderData scatterMap = Charts.ofMultiSeries(courseTargetWebDto.getTargetName(), valueXList.toArray(new String[valueXList.size()]))
|