添加根据批次查询年级 专业维度 #6

Merged
YuNan merged 1 commits from YuNan/CET-cmd-2.0:dev into dev 2024-10-17 19:18:25 +08:00
1 changed files with 15 additions and 58 deletions

View File

@ -170,7 +170,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
for (Map.Entry<String, Object> stringObjectEntry : list) { for (Map.Entry<String, Object> stringObjectEntry : list) {
jsonObject.put(stringObjectEntry.getKey(), stringObjectEntry.getValue()); jsonObject.put(stringObjectEntry.getKey(), stringObjectEntry.getValue());
} }
JSONObject gradeByBatch = getGradeByBatch(batch,college); JSONObject gradeByBatch = getGradeByBatch(batch, college);
resultData.put("data", jsonObject); resultData.put("data", jsonObject);
resultData.put("gradeData", gradeByBatch); resultData.put("gradeData", gradeByBatch);
System.out.println(resultData); System.out.println(resultData);
@ -556,59 +556,10 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
@Override @Override
public Result<JSONObject> getRateByMajorAndLastestBatch(getRateByMajorAndLastestBatchDto getRateByMajorAndLastestBatchParam) { public Result<JSONObject> getRateByMajorAndLastestBatch(getRateByMajorAndLastestBatchDto getRateByMajorAndLastestBatchParam) {
Date batch = cet4Mapper.lastestDate();
LambdaQueryWrapper<Cet_4> cet4Wrapper = new LambdaQueryWrapper<>();
Date lastestBatch = cet4Mapper.lastestDate();
cet4Wrapper.eq(Cet_4::getCollege, getRateByMajorAndLastestBatchParam.getCollege());
cet4Wrapper.eq(Cet_4::getBatch, lastestBatch);
//根据前端数据是否传major 判断是否添加 sql 条件
if (getRateByMajorAndLastestBatchParam.getMajor() != null && !getRateByMajorAndLastestBatchParam.getMajor().isEmpty()) {
cet4Wrapper.eq(Cet_4::getMajorname, getRateByMajorAndLastestBatchParam.getMajor());
}
long allStudentCount = cet4Mapper.selectCount(cet4Wrapper);
//创建所以年级的list
List<Map<String, Object>> maps = cet4Mapper.selectMaps(cet4Wrapper);
cet4Wrapper.select(Cet_4::getEntrydate).groupBy(Cet_4::getEntrydate);
List<Map<String, Object>> entryDateList = cet4Mapper.selectMaps(cet4Wrapper);
JSONArray ansArray = new JSONArray();
for (Map<String, Object> Date : entryDateList) {
// 统计当前 entryDate 下的通过人数
//所有参加过四级考试的学生
Map<String, Integer> attendMap4 = new HashMap<>();
String currentEntryDate = (String) Date.get("entrydate");
for (Map<String, Object> map : maps) {
String studentEntryDate = (String) map.get("entrydate");
String str = (String) map.get("id");
// 仅处理当前 entryDate 下的学生数据
if (currentEntryDate.equals(studentEntryDate)) {
if ((int) map.get("result") >= 425) {
attendMap4.put(str, 1);
} else {
if (!attendMap4.containsKey(str)) {//排除已经通过的人
attendMap4.put(str, 0);
}
}
}
}
//累计通过的人数
int passNumber = (int) attendMap4.values().stream().filter(value -> value == 1).count();
//每个年级的累计通过率保留三位小数
double passRate = passNumber / (double) allStudentCount;
// passRate = passRate * 100;
//保留三位小数
DecimalFormat df = new DecimalFormat("#.###");
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
json.put("entryDate", currentEntryDate); json.put("data",getGradeByBatch(batch,getRateByMajorAndLastestBatchParam.getCollege(),getRateByMajorAndLastestBatchParam.getMajor()));
json.put("passRate", df.format(passRate)); return Result.ok(json);
ansArray.add(json);
}
JSONObject result = new JSONObject();
result.put("data", ansArray);
return Result.ok(result);
} }
@Override @Override
@ -690,13 +641,13 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
return Result.ok(result); return Result.ok(result);
} }
@Override public JSONObject getGradeByBatch(Date batch, String college, String majorName) {
public JSONObject getGradeByBatch(Date batch,String college) {
//根据批次获取正确的年级 //根据批次获取正确的年级
List<String> trueEntryDate = centerService.getEntryDateByBatch(batch); List<String> trueEntryDate = centerService.getEntryDateByBatch(batch);
LambdaQueryWrapper<Cet_4> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_4> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(!college.equals("全校"),Cet_4::getCollege,college) wrapper.eq(!college.equals("全校"), Cet_4::getCollege, college)
.eq(Cet_4::getBatch, batch); .eq(Cet_4::getBatch, batch)
.eq(majorName != null, Cet_4::getMajorname, majorName);
List<Cet_4> allStudent = list(wrapper); List<Cet_4> allStudent = list(wrapper);
wrapper.ge(Cet_4::getResult, 425); wrapper.ge(Cet_4::getResult, 425);
List<Cet_4> allPassStudent = list(wrapper); List<Cet_4> allPassStudent = list(wrapper);
@ -724,6 +675,12 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
return res; return res;
} }
@Override
public JSONObject getGradeByBatch(Date batch, String college) {
return getGradeByBatch(batch, college, null);
}
//获取全校人数 //获取全校人数
private List<Cet_4> getNumAll(Date batch) { private List<Cet_4> getNumAll(Date batch) {
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();