From 324cb24be34967f4027f7f259090cff178245ac9 Mon Sep 17 00:00:00 2001 From: xbx <1827135378@qq.com> Date: Mon, 22 Apr 2024 17:01:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A0=B9=E6=8D=AE=E4=B8=93?= =?UTF-8?q?=E4=B8=9A=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/controller/CenterController.java | 4 + .../jeecg/modules/service/ICet_4Service.java | 1 + .../service/impl/Cet_4ServiceImpl.java | 84 +++++++++++++++++-- 3 files changed, 84 insertions(+), 5 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 d80c1176..7ad40831 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 @@ -104,6 +104,10 @@ public class CenterController { return cet4Service.getRateByBatch(college,batch); }else return null; } + @PostMapping("/getRateByMajor") + public Result getRateByMajor(@RequestBody JSONObject webData){ + return cet4Service.getRateByMajor(webData); + } @GetMapping("/getTest") public Result getTest() { return centerService.getTest(); 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 ac2d072a..4aec8845 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 @@ -19,4 +19,5 @@ public interface ICet_4Service extends IService { 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 8d008550..21ef3ae6 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 @@ -151,9 +151,7 @@ public class Cet_4ServiceImpl extends ServiceImpl implements @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"); @@ -164,9 +162,8 @@ public class Cet_4ServiceImpl extends ServiceImpl implements } 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++) { @@ -183,7 +180,6 @@ public class Cet_4ServiceImpl extends ServiceImpl implements } } } - int n = batchList.size();//批次数 //每个批次获取数据 LambdaQueryWrapper Cet_4QW = new LambdaQueryWrapper<>(); //获取全部在籍学生 @@ -319,6 +315,84 @@ public class Cet_4ServiceImpl extends ServiceImpl implements return Result.ok(result); } + @Override + public Result getRateByMajor(JSONObject webData) { + //通过学院和专业获取数据 + JSONArray colleges = webData.getJSONArray("college"); + JSONArray majors = webData.getJSONArray("major"); + 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 ans = new JSONObject(); + //遍历每个学院的专业 + for (int j = 0; j < colleges.size(); j++) { + //获取该学院专业的所有在籍学生 + long allStudent = 0; + JSONArray majorAns = new JSONArray(); + //遍历每个年级 + for (Object entryDate : entryDateArray) { + //根据entrydate转换为入学年份之后的八次list + List batchList = new ArrayList<>(); + for (String s : batchs) { + if (batchList.size() >= 8) { + break; + } + String value = s; + //获取入学年份之后的批次 + 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); + } + } + } + //每个批次获取数据 + LambdaQueryWrapper Cet_4QW = new LambdaQueryWrapper<>(); + //获取全部在籍学生 + LambdaQueryWrapper Cet4_majorQW = new LambdaQueryWrapper<>(); + Cet4_majorQW.eq(Cet4_major::getCollege, colleges.get(j)).eq(Cet4_major::getMajorname, majors.get(j)).eq(Cet4_major::getEntrydate, entryDate); + allStudent = cet4_majorMapper.selectCount(Cet4_majorQW); + //所有参加过四级考试的学生 + Map attendMap4 = new HashMap<>(); + //一次性获取所有批次的数据 + Cet_4QW.eq(Cet_4::getCollege, colleges.get(j)).eq(Cet_4::getMajorname, majors.get(j)).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList); + List> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW); + for (Map map : Cet_4eEntrydate) { + String str = (String) map.get("id"); + 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) allStudent; + passRate = passRate * 100; + //保留三位小数 + DecimalFormat df = new DecimalFormat("#.#"); + JSONObject json = new JSONObject(); + json.put("entryDate", entryDate); + json.put("passRate", df.format(passRate)); + majorAns.add(json); + } + ans.put((String) majors.get(j), majorAns); + } + JSONObject result = new JSONObject(); + result.put("data", ans); + return Result.ok(result); + } + private long getNumCollege(String college, Date batch) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Cet_4::getCollege, college).eq(Cet_4::getBatch, batch);