From 9f24ffb87146ef280ec23302be7a715e22171d19 Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Tue, 23 Apr 2024 16:45:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=A6=E9=99=A2=E5=AF=B9=E6=AF=94=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=BE=85=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/controller/CenterController.java | 13 +-- .../jeecg/modules/service/ICet_4Service.java | 2 + .../service/impl/Cet_4ServiceImpl.java | 101 ++++++++++++++---- 3 files changed, 87 insertions(+), 29 deletions(-) diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CenterController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CenterController.java index 7ad40831..6ccfb199 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CenterController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CenterController.java @@ -11,8 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Collections; -import java.util.List; @RestController @RequestMapping("/cet") @@ -66,15 +64,15 @@ public class CenterController { return centerService.getData(college, major, entrydate); } - @PostMapping("/getRateByCollege") - public Result getRateByCollege(@RequestBody JSONObject webData) { + @PostMapping("/getAllRate") + public Result getAllRate(@RequestBody JSONObject webData) { String level= webData.getString("level"); //四六级分开查询 if (level.equals("cet4")) { - return cet4Service.getRateByCollege(webData); + return cet4Service.getAllRate(webData); } else if (level.equals("cet6")) { Cet_6 cet = new Cet_6(); // cet.setBatch(date); @@ -83,7 +81,10 @@ public class CenterController { return null; } } - + @PostMapping("/getRateByCollege") + public Result getRateByCollege(@RequestBody JSONObject webData){ + return cet4Service.getRateByCollege(webData); + } @GetMapping("/getRateByAllBatch") public Result getRateByAllBatch(@RequestParam("college") String college,@RequestParam("major") String major, @RequestParam("level") String level) { diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_4Service.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_4Service.java index 4aec8845..64a1b931 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_4Service.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_4Service.java @@ -17,6 +17,8 @@ public interface ICet_4Service extends IService { Result getRateByBatch(String college, String batchStr); + Result getAllRate(JSONObject webData); + Result getRateByCollege(JSONObject webData); Result getRateByMajor(JSONObject webData); diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java index 4b69d1eb..5700b1cf 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java @@ -149,7 +149,7 @@ public class Cet_4ServiceImpl extends ServiceImpl implements } @Override - public Result getRateByCollege(JSONObject webData) { + public Result getAllRate(JSONObject webData) { JSONArray colleges = webData.getJSONArray("college"); JSONArray entryDateArray = webData.getJSONArray("entrydate"); //获取所有batch @@ -257,33 +257,87 @@ public class Cet_4ServiceImpl extends ServiceImpl implements double passRate2 = Double.parseDouble(json2.getString("passRate")); return passRate1 > passRate2 ? -1 : 1; }); - } else { + } + oneEntryDate.put((String) entryDate, ans); + } + result.put("data", oneEntryDate); + return Result.ok(result); + } - //获取该学院的所有专业 + @Override + public Result getRateByCollege(JSONObject webData){ + + JSONArray colleges = webData.getJSONArray("college"); + JSONArray entryDateArray = webData.getJSONArray("entrydate"); + //获取所有batch + JSONObject batch = centerService.getBatch(); + JSONArray batchsArray = batch.getJSONArray("batches"); + //转换为String数组 + String[] batchs = new String[batchsArray.size()]; + for (int i = 0; i < batchsArray.size(); i++) { + batchs[i] = batchsArray.getJSONObject(i).getString("value"); + } + JSONObject result = new JSONObject(); + JSONObject oneEntryDate = new JSONObject(); + //遍历每个年级 + for (Object entryDate : entryDateArray) { + //根据entrydate转换为入学年份之后的八次list + List batchList = new ArrayList<>(); + for (int i = 0; i < batchs.length; i++) { + if (batchList.size() >= 8) { + break; + } + String value = batchs[i]; + //获取入学年份之后的批次 + if (Integer.parseInt(value.substring(0, 4)) > Integer.parseInt((String) entryDate)) { + batchList.add(value); + } else if (Integer.parseInt(value.substring(0, 4)) == Integer.parseInt((String) entryDate)) { + if (Integer.parseInt(value.substring(5, 7)) > 9) { + batchList.add(value); + } + } + } + + ///学院/专业的全部在籍学生 + long allStudent = 0; + JSONArray ans = new JSONArray(); + + //获取所有学院列表 LambdaQueryWrapper collegeQueryWrapper = new LambdaQueryWrapper<>(); - collegeQueryWrapper.eq(Cet_4::getCollege, colleges.get(0)).select(Cet_4::getMajorname).groupBy(Cet_4::getMajorname); - List majorList = cet4Mapper.selectObjs(collegeQueryWrapper); - //查某个学院的所有专业 + collegeQueryWrapper.select(Cet_4::getCollege).groupBy(Cet_4::getCollege); + List collegeList = cet4Mapper.selectObjs(collegeQueryWrapper); + if (colleges.size() > 1) { + collegeList = colleges; + } + //查某个入学年级的所有学院 LambdaQueryWrapper cet4MajorQW = new LambdaQueryWrapper<>(); - cet4MajorQW.select(Cet4_major::getMajorname).eq(Cet4_major::getCollege, colleges.get(0)).eq(Cet4_major::getEntrydate, entryDate).groupBy(Cet4_major::getMajorname); - //若为转专业的则剔除 - List majorSet = cet4_MajorMapper.selectObjs(cet4MajorQW); -// System.out.println("专业:" + majorList); + cet4MajorQW.select(Cet4_major::getCollege).eq(Cet4_major::getEntrydate, entryDate).groupBy(Cet4_major::getCollege); - //对于每个专业,获取数据 - for (Object majorName : majorList) { - if (majorSet.contains(majorName)) { + //若无该学院则剔除 + List collegeSet = cet4_MajorMapper.selectObjs(cet4MajorQW); + + // 在循环开始之前,获取所有学院的在籍学生数量 + LambdaQueryWrapper allStudentQW = new LambdaQueryWrapper<>(); + allStudentQW.select(Cet4_major::getCollege, Cet4_major::getId).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate); + List> allStudentList = cet4_majorMapper.selectMaps(allStudentQW); + Map allStudentMap = allStudentList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college"), Collectors.counting())); + + // 在循环开始之前,获取所有批次的数据 + LambdaQueryWrapper allBatchQW = new LambdaQueryWrapper<>(); + allBatchQW.select(Cet_4::getCollege, Cet_4::getId, Cet_4::getResult).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList); + List> allBatchList = cet4Mapper.selectMaps(allBatchQW); + Map>> allBatchMap = allBatchList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college"))); + + //对于每个学院,获取数据 + for (Object collegeName : collegeList) { + if (collegeSet.contains(collegeName)) { //所有参加过四级考试的学生 Map attendMap4 = new HashMap<>(); - //获取该专业的在籍学生 - Cet4_majorQW.clear(); - Cet4_majorQW.select(Cet4_major::getId).eq(Cet4_major::getCollege, colleges.get(0)).eq(Cet4_major::getMajorname, majorName).eq(Cet4_major::getEntrydate, entryDate); - allStudent = cet4_majorMapper.selectCount(Cet4_majorQW); + //获取该学院在籍学生数量 + allStudent = allStudentMap.getOrDefault(collegeName, 0L); JSONObject json = new JSONObject(); //一次性获取所有批次的数据 - Cet_4QW.clear(); // 清空查询条件,以便重新设置 - Cet_4QW.eq(Cet_4::getCollege, colleges.get(0)).eq(Cet_4::getMajorname, majorName).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList); - List> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW); + List> Cet_4eEntrydate = allBatchMap.get(collegeName); for (Map map : Cet_4eEntrydate) { String str = (String) map.get("id"); if ((int) map.get("result") >= 425) { @@ -301,18 +355,18 @@ public class Cet_4ServiceImpl extends ServiceImpl implements passRate = passRate * 100; //保留三位小数 DecimalFormat df = new DecimalFormat("#.#"); - json.put("college", majorName); + json.put("college", collegeName); json.put("passRate", df.format(passRate)); -// System.out.println("专业:" + majorName + ",累计通过人数:" + passNumber + ",总人数:" + allStudent + ",通过率:" + df.format(passRate)); +// System.out.println("学院:" + collegeName + ",累计通过人数:" + passNumber + ",总人数:" + allStudent + ", 通过率" + passRate); ans.add(json); } } - } oneEntryDate.put((String) entryDate, ans); } result.put("data", oneEntryDate); return Result.ok(result); + } @Override @@ -331,6 +385,7 @@ public class Cet_4ServiceImpl extends ServiceImpl implements JSONObject ans = new JSONObject(); //遍历每个学院的专业 for (int j = 0; j < collegeMajors.size(); j++) { + System.out.println(collegeMajors.get(j)); //获取该学院专业的所有在籍学生 long allStudent; JSONArray colleges = collegeMajors.getJSONArray(j);