diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java index 6455101b..a4eee717 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java @@ -47,20 +47,15 @@ public class CenterServiceImpl implements CenterService { LambdaQueryWrapper Cet_4CollegeQW = new LambdaQueryWrapper<>(); Cet_4CollegeQW.select(Cet_4::getCollege) .groupBy(Cet_4::getCollege); - LambdaQueryWrapper Cet_6CollegeQW = new LambdaQueryWrapper<>(); - Cet_6CollegeQW.select(Cet_6::getCollege) - .groupBy(Cet_6::getCollege); List> Cet_4College = cet4Mapper.selectMaps(Cet_4CollegeQW); - List> Cet_6College = cet6Mapper.selectMaps(Cet_6CollegeQW); + // 收集不重复的学院名称 Set collegeSet = new HashSet<>(); for (Map map : Cet_4College) { collegeSet.add(String.valueOf(map.get("college"))); } - for (Map map : Cet_6College) { - collegeSet.add(String.valueOf(map.get("college"))); - } + JSONArray colleges = new JSONArray(); for (String college : collegeSet) { JSONObject collegeObj = new JSONObject(); @@ -88,20 +83,15 @@ public class CenterServiceImpl implements CenterService { LambdaQueryWrapper Cet_4BatchQW = new LambdaQueryWrapper<>(); Cet_4BatchQW.select(Cet_4::getBatch) .groupBy(Cet_4::getBatch); - LambdaQueryWrapper Cet_6BatchQW = new LambdaQueryWrapper<>(); - Cet_6BatchQW.select(Cet_6::getBatch) - .groupBy(Cet_6::getBatch); List> Cet_4Batch = cet4Mapper.selectMaps(Cet_4BatchQW); - List> Cet_6Batch = cet6Mapper.selectMaps(Cet_6BatchQW); + // 收集不重复的批次 - Set batchSet = new HashSet<>(); + Set batchSet = new TreeSet<>(Comparator.naturalOrder()); for (Map map : Cet_4Batch) { batchSet.add(String.valueOf(map.get("batch"))); } - for (Map map : Cet_6Batch) { - batchSet.add(String.valueOf(map.get("batch"))); - } + JSONArray batches = new JSONArray(); for (String batch : batchSet) { JSONObject batchObj = new JSONObject(); @@ -120,10 +110,6 @@ public class CenterServiceImpl implements CenterService { */ @Override public JSONObject getEntrydate() { - // 判断是否存在缓存 ‘getEntrydate’ - if (Boolean.TRUE.equals(redisTemplate.hasKey("getEntrydate"))) { - return (JSONObject) redisTemplate.opsForValue().get("getEntrydate"); - } // 判断是否存在缓存 ‘getEntrydate’ if (Boolean.TRUE.equals(redisTemplate.hasKey("getEntrydate"))) { return (JSONObject) redisTemplate.opsForValue().get("getEntrydate"); @@ -133,20 +119,12 @@ public class CenterServiceImpl implements CenterService { LambdaQueryWrapper Cet_4EntrydateQW = new LambdaQueryWrapper<>(); Cet_4EntrydateQW.select(Cet_4::getEntrydate) .groupBy(Cet_4::getEntrydate); - LambdaQueryWrapper Cet_6EntrydateQW = new LambdaQueryWrapper<>(); - Cet_6EntrydateQW.select(Cet_6::getEntrydate) - .groupBy(Cet_6::getEntrydate); - List> Cet_4Entrydate = cet4Mapper.selectMaps(Cet_4EntrydateQW); - List> Cet_6Entrydate = cet6Mapper.selectMaps(Cet_6EntrydateQW); // 收集不重复的年级 - Set entrydateSet = new HashSet<>(); + Set entrydateSet = new TreeSet<>(Comparator.naturalOrder()); for (Map map : Cet_4Entrydate) { entrydateSet.add(String.valueOf(map.get("entrydate"))); } - for (Map map : Cet_6Entrydate) { - entrydateSet.add(String.valueOf(map.get("entrydate"))); - } JSONArray entrydates = new JSONArray(); for (String entrydate : entrydateSet) { JSONObject entrydateObj = new JSONObject(); @@ -165,11 +143,8 @@ public class CenterServiceImpl implements CenterService { String[] batchs = {"2019-12-01", "2020-09-01", "2020-12-01", "2021-06-01", "2021-12-01", "2022-09-01", "2023-03-01", "2023-06-01", "2023-12-01", "2024-06-01"}; JSONObject result = new JSONObject(); LambdaQueryWrapper Cet_4CollegeQW = new LambdaQueryWrapper<>(); - LambdaQueryWrapper Cet_6CollegeQW = new LambdaQueryWrapper<>(); double[] passNumber4 = new double[10]; //四级新通过人数 double[] attendNumber4 = new double[10]; - double[] passNumber6 = new double[10]; - double[] attendNumber6 = new double[10]; Map entryDataMap = new HashMap<>(); entryDataMap.put("2019", 0); entryDataMap.put("2020", 2); @@ -177,61 +152,42 @@ public class CenterServiceImpl implements CenterService { entryDataMap.put("2022", 6); entryDataMap.put("2023", 8); Map attendMap4 = new HashMap<>(); - Map attendMap6 = new HashMap<>(); long[] mapSize4 = new long[10]; - long[] mapSize6 = new long[10]; + int index4 = 0; for (int i = entryDataMap.get(entryDate); i < batchs.length; i++) { Cet_4CollegeQW.clear(); // 清空查询条件,以便重新设置 - Cet_6CollegeQW.clear(); // 清空查询条件,以便重新设置 Cet_4CollegeQW.eq(Cet_4::getCollege, college).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchs[i]); - Cet_6CollegeQW.eq(Cet_6::getCollege, college).eq(Cet_6::getEntrydate, entryDate).eq(Cet_6::getBatch, batchs[i]); List> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4CollegeQW); - List> Cet_6eEntrydate = cet6Mapper.selectMaps(Cet_6CollegeQW); if (!Cet_4eEntrydate.isEmpty()) { for (Map map : Cet_4eEntrydate) { - if ((int) map.get("result") >= 425) { - attendMap4.put((String) map.get("id"), 1); - } else { - attendMap4.put((String) map.get("id"), 0); + String str = (String) map.get("id"); + if (!map.containsKey(str)) { + if ((int) map.get("result") >= 425) { + attendMap4.put(str, 1); + } else { + attendMap4.put(str, 0); + } } } - mapSize4[i] = attendMap4.values().stream().filter(value -> value == 1).count(); + mapSize4[index4] = attendMap4.values().stream().filter(value -> value == 1).count(); attendNumber4[i] = Cet_4eEntrydate.size(); - passNumber4[i] = i == entryDataMap.get(entryDate) ? mapSize4[i] : mapSize4[i] - mapSize4[i - 1]; - System.out.println("参加人数:" + attendMap4.size() + ",总通过人数:" + mapSize4[i] + ",新通过人数:" + passNumber4[i]); + passNumber4[i] = i == entryDataMap.get(entryDate) ? mapSize4[index4] : mapSize4[index4] - mapSize4[index4 - 1]; + System.out.println("四级参加人数:" + attendMap4.size() + ",总通过人数:" + mapSize4[index4] + ",新通过人数:" + passNumber4[i]); + index4++; } else { // 数据为空,设置为0 attendNumber4[i] = 0; passNumber4[i] = 0; } - if (!Cet_6eEntrydate.isEmpty()) { - for (Map map : Cet_6eEntrydate) { - if ((int) map.get("result") >= 425) { - attendMap6.put((String) map.get("id"), 1); - } else { - attendMap6.put((String) map.get("id"), 0); - } - } - mapSize6[i] = attendMap6.values().stream().filter(value -> value == 1).count(); - attendNumber6[i] = Cet_6eEntrydate.size(); - passNumber6[i] = i == entryDataMap.get(entryDate) ? mapSize6[i] : mapSize6[i] - mapSize6[i - 1]; - System.out.println("参加人数:" + attendMap6.size() + ",总通过人数:" + mapSize6[i] + ",新通过人数:" + passNumber6[i]); - } else { - // 数据为空,设置为0 - attendNumber6[i] = 0; - passNumber6[i] = 0; - } } JSONArray list4 = new JSONArray(); - JSONArray list6 = new JSONArray(); JSONObject ans = new JSONObject(); String[] grade = {"大一", "大二", "大三", "大四"}; int temp = 0; double passSum4 = 0; - double passSum6 = 0; DecimalFormat df = new DecimalFormat("#.###"); for (int i = entryDataMap.get(entryDate); i < batchs.length - 1; i += 2) { - if (attendNumber4[i] != 0 || attendNumber4[i + 1] != 0 && temp < 4) { + if ((attendNumber4[i] != 0 || attendNumber4[i + 1] != 0) && temp < 4) { JSONObject json = new JSONObject(); double attendNumbers = attendNumber4[i] + attendNumber4[i + 1]; double passNumbers = passNumber4[i] + passNumber4[i + 1]; @@ -242,21 +198,10 @@ public class CenterServiceImpl implements CenterService { json.put("passRate", df.format(passSum4 / (double) attendMap4.size()));//累计通过人数/四年参加人数 list4.add(json); } - if (attendNumber6[i] != 0 || attendNumber6[i + 1] != 0 && temp < 4) { - JSONObject json = new JSONObject(); - double attendNumbers = attendNumber6[i] + attendNumber6[i + 1]; - double passNumbers = passNumber6[i] + passNumber6[i + 1]; - passSum6 += passNumbers; - json.put("grade", grade[temp]); - json.put("attendNumber", attendNumbers); - json.put("passNumber", passNumbers); - json.put("passRate", df.format(passSum6 / (double) attendMap6.size())); - list6.add(json); - } temp++; } ans.put("cet4", list4); - ans.put("cet6", list6); + ans.put("total",(double) attendMap4.size()); result.put("data", ans); return Result.ok(result); }