新增为三个批次

This commit is contained in:
Xubx 2025-05-08 15:14:36 +08:00
parent c25fa2a9f0
commit 2d11a335d7
1 changed files with 57 additions and 37 deletions

View File

@ -38,9 +38,9 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements ICet_4Service { public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements ICet_4Service {
@Autowired @Resource
Cet_4Mapper cet4Mapper; Cet_4Mapper cet4Mapper;
@Autowired @Resource
Cet4_majorMapper cet4_MajorMapper; Cet4_majorMapper cet4_MajorMapper;
@Resource @Resource
private CenterService centerService; private CenterService centerService;
@ -675,18 +675,26 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
public Result<JSONObject> getAnalyze(JSONObject webData) { public Result<JSONObject> getAnalyze(JSONObject webData) {
String college = webData.getString("college"); String college = webData.getString("college");
String major = webData.getString("major"); String major = webData.getString("major");
//只返回最新批次的数据 // 检查是否有缓存
QueryWrapper<Cet_4> getMaxBatch = Wrappers.query(); if (redisTemplate.opsForValue().get("getAnalyze" + college + major) != null) {
getMaxBatch return Result.ok((JSONObject) redisTemplate.opsForValue().get("getAnalyze" + college + major));
.select("MAX(batch) as batch"); }
Cet_4 maxBatch = getOne(getMaxBatch);
Date batch = maxBatch.getBatch(); QueryWrapper<Cet_4> getMaxBatches = Wrappers.query();
getMaxBatches.select("DISTINCT batch").orderByDesc("batch").last("LIMIT 3");
List<Date> latestBatches = listObjs(getMaxBatches, obj -> (Date) obj);
JSONObject aggregatedResult = new JSONObject();
JSONArray batchResults = new JSONArray();
for (Date batch : latestBatches) {
LambdaQueryWrapper<Cet_4> queryWrapper = Wrappers.lambdaQuery(Cet_4.class) LambdaQueryWrapper<Cet_4> queryWrapper = Wrappers.lambdaQuery(Cet_4.class)
.eq(!Objects.equals(college, "全校"), Cet_4::getCollege, college) .eq(!Objects.equals(college, "全校"), Cet_4::getCollege, college)
.eq(!major.isEmpty(), Cet_4::getMajorname, major) .eq(!major.isEmpty(), Cet_4::getMajorname, major)
.eq(Cet_4::getBatch, batch); .eq(Cet_4::getBatch, batch);
List<Cet_4> list = list(queryWrapper); List<Cet_4> list = list(queryWrapper);
//设置要查询的范围端
// Define ranges for analysis
List<int[]> ranges = Arrays.asList( List<int[]> ranges = Arrays.asList(
new int[]{0, 400}, new int[]{0, 400},
new int[]{400, 425}, new int[]{400, 425},
@ -694,12 +702,24 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
new int[]{450, 475}, new int[]{450, 475},
new int[]{475, 750} new int[]{475, 750}
); );
JSONObject rateByLastBatch = getRateByBatchRanges(list, ranges);
JSONObject scoreRateByLastBatch = getScoreRateByLastBatch(list); JSONObject rateByBatch = getRateByBatchRanges(list, ranges);
JSONObject result = new JSONObject(); JSONObject scoreRateByBatch = getScoreRateByLastBatch(list);
result.put("rateByBatch", rateByLastBatch);
result.put("scoreByBatch", scoreRateByLastBatch); JSONObject batchResult = new JSONObject();
return Result.ok(result); batchResult.put("batch", batch);
batchResult.put("rateByBatch", rateByBatch);
batchResult.put("scoreByBatch", scoreRateByBatch);
batchResults.add(batchResult);
}
aggregatedResult.put("data", batchResults);
// 缓存
redisTemplate.opsForValue().set("getAnalyze" + college + major, aggregatedResult);
return Result.ok(aggregatedResult);
} }