优化对比多学院接口

This commit is contained in:
xbx 2024-04-23 23:18:15 +08:00
parent 9f24ffb871
commit 2ee73def1c
1 changed files with 49 additions and 64 deletions

View File

@ -279,43 +279,33 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
} }
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
JSONObject oneEntryDate = new JSONObject(); JSONObject oneEntryDate = new JSONObject();
//遍历每个学院
for (Object collegeName : colleges) {
JSONArray ans = new JSONArray();
//遍历每个年级 //遍历每个年级
for (Object entryDate : entryDateArray) { for (Object entryDate : entryDateArray) {
//根据entrydate转换为入学年份之后的八次list //根据entrydate转换为入学年份之后的八次list
List<String> batchList = new ArrayList<>(); List<String> batchList = new ArrayList<>();
for (int i = 0; i < batchs.length; i++) { for (String s : batchs) {
if (batchList.size() >= 8) { if (batchList.size() >= 8) {
break; break;
} }
String value = batchs[i];
//获取入学年份之后的批次 //获取入学年份之后的批次
if (Integer.parseInt(value.substring(0, 4)) > Integer.parseInt((String) entryDate)) { if (Integer.parseInt(s.substring(0, 4)) > Integer.parseInt((String) entryDate)) {
batchList.add(value); batchList.add(s);
} else if (Integer.parseInt(value.substring(0, 4)) == Integer.parseInt((String) entryDate)) { } else if (Integer.parseInt(s.substring(0, 4)) == Integer.parseInt((String) entryDate)) {
if (Integer.parseInt(value.substring(5, 7)) > 9) { if (Integer.parseInt(s.substring(5, 7)) > 9) {
batchList.add(value); batchList.add(s);
} }
} }
} }
//学院/专业的全部在籍学生
///学院/专业的全部在籍学生 long allStudent;
long allStudent = 0;
JSONArray ans = new JSONArray();
//获取所有学院列表
LambdaQueryWrapper<Cet_4> collegeQueryWrapper = new LambdaQueryWrapper<>();
collegeQueryWrapper.select(Cet_4::getCollege).groupBy(Cet_4::getCollege);
List<Object> collegeList = cet4Mapper.selectObjs(collegeQueryWrapper);
if (colleges.size() > 1) {
collegeList = colleges;
}
//查某个入学年级的所有学院 //查某个入学年级的所有学院
LambdaQueryWrapper<Cet4_major> cet4MajorQW = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet4_major> cet4MajorQW = new LambdaQueryWrapper<>();
cet4MajorQW.select(Cet4_major::getCollege).eq(Cet4_major::getEntrydate, entryDate).groupBy(Cet4_major::getCollege); cet4MajorQW.select(Cet4_major::getCollege).eq(Cet4_major::getEntrydate, entryDate).groupBy(Cet4_major::getCollege);
//若无该学院则剔除 //若无该学院则剔除
List<Object> collegeSet = cet4_MajorMapper.selectObjs(cet4MajorQW); List<Object> collegeSet = cet4_MajorMapper.selectObjs(cet4MajorQW);
// 在循环开始之前获取所有学院的在籍学生数量 // 在循环开始之前获取所有学院的在籍学生数量
LambdaQueryWrapper<Cet4_major> allStudentQW = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet4_major> allStudentQW = new LambdaQueryWrapper<>();
allStudentQW.select(Cet4_major::getCollege, Cet4_major::getId).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate); allStudentQW.select(Cet4_major::getCollege, Cet4_major::getId).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate);
@ -327,9 +317,6 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
allBatchQW.select(Cet_4::getCollege, Cet_4::getId, Cet_4::getResult).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList); allBatchQW.select(Cet_4::getCollege, Cet_4::getId, Cet_4::getResult).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList);
List<Map<String, Object>> allBatchList = cet4Mapper.selectMaps(allBatchQW); List<Map<String, Object>> allBatchList = cet4Mapper.selectMaps(allBatchQW);
Map<String, List<Map<String, Object>>> allBatchMap = allBatchList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college"))); Map<String, List<Map<String, Object>>> allBatchMap = allBatchList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college")));
//对于每个学院获取数据
for (Object collegeName : collegeList) {
if (collegeSet.contains(collegeName)) { if (collegeSet.contains(collegeName)) {
//所有参加过四级考试的学生 //所有参加过四级考试的学生
Map<String, Integer> attendMap4 = new HashMap<>(); Map<String, Integer> attendMap4 = new HashMap<>();
@ -355,18 +342,16 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
passRate = passRate * 100; passRate = passRate * 100;
//保留三位小数 //保留三位小数
DecimalFormat df = new DecimalFormat("#.#"); DecimalFormat df = new DecimalFormat("#.#");
json.put("college", collegeName); json.put("entrydate", entryDate);
json.put("passRate", df.format(passRate)); json.put("passRate", df.format(passRate));
// System.out.println("学院:" + collegeName + ",累计通过人数:" + passNumber + ",总人数:" + allStudent + ", 通过率" + passRate); // System.out.println("学院:" + collegeName + ",累计通过人数:" + passNumber + ",总人数:" + allStudent + ", 通过率" + passRate);
ans.add(json); ans.add(json);
} }
} }
oneEntryDate.put((String) entryDate, ans); oneEntryDate.put((String) collegeName, ans);
} }
result.put("data", oneEntryDate); result.put("data", oneEntryDate);
return Result.ok(result); return Result.ok(result);
} }
@Override @Override