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 52ef876e..ea51ecd3 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 @@ -10,6 +10,7 @@ import org.jeecg.modules.service.CenterService; import org.springframework.cache.annotation.Cacheable; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -29,4 +30,13 @@ public class CenterController { public Result getGradeAndCollege() { return centerService.getGradeAndCollege(); } + + /** + * 依据学院和年级获取四级和六级通过数据 + */ + @GetMapping(value = "/getData") +// @Cacheable(value = "getData", key = "'getData'+#college+#grade") + public Result getData(@RequestParam String college, @RequestParam String entrydate) { + return centerService.getData(college,entrydate); + } } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CenterService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CenterService.java index 2fd8cac2..5f3fd92e 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CenterService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/CenterService.java @@ -11,4 +11,5 @@ import org.jeecg.common.api.vo.Result; */ public interface CenterService { Result getGradeAndCollege(); + Result getData(String college, String entryDate); } 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 575b499b..cb00568d 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 @@ -12,10 +12,8 @@ import org.jeecg.modules.service.CenterService; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.text.DecimalFormat; +import java.util.*; /** * @Description: cet_4 @@ -87,4 +85,105 @@ public class CenterServiceImpl implements CenterService { result.put("entrydates", entrydates); return Result.ok(result); } -} + + @Override + public Result getData(String college, String entryDate) { + 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); + entryDataMap.put("2021", 4); + 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]; + 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); + } + } + mapSize4[i] = 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]); + } 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) { + JSONObject json = new JSONObject(); + double attendNumbers = attendNumber4[i] + attendNumber4[i + 1]; + double passNumbers = passNumber4[i] + passNumber4[i + 1]; + passSum4 += passNumbers; + json.put("grade", grade[temp]); + json.put("attendNumber", attendNumbers); + json.put("passNumber", passNumbers); + 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); + result.put("data", ans); + return Result.ok(result); + } +} \ No newline at end of file