新增为三个批次

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
public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements ICet_4Service {
@Autowired
@Resource
Cet_4Mapper cet4Mapper;
@Autowired
@Resource
Cet4_majorMapper cet4_MajorMapper;
@Resource
private CenterService centerService;
@ -675,18 +675,26 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
public Result<JSONObject> getAnalyze(JSONObject webData) {
String college = webData.getString("college");
String major = webData.getString("major");
//只返回最新批次的数据
QueryWrapper<Cet_4> getMaxBatch = Wrappers.query();
getMaxBatch
.select("MAX(batch) as batch");
Cet_4 maxBatch = getOne(getMaxBatch);
Date batch = maxBatch.getBatch();
// 检查是否有缓存
if (redisTemplate.opsForValue().get("getAnalyze" + college + major) != null) {
return Result.ok((JSONObject) redisTemplate.opsForValue().get("getAnalyze" + college + major));
}
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)
.eq(!Objects.equals(college, "全校"), Cet_4::getCollege, college)
.eq(!major.isEmpty(), Cet_4::getMajorname, major)
.eq(Cet_4::getBatch, batch);
List<Cet_4> list = list(queryWrapper);
//设置要查询的范围端
// Define ranges for analysis
List<int[]> ranges = Arrays.asList(
new int[]{0, 400},
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[]{475, 750}
);
JSONObject rateByLastBatch = getRateByBatchRanges(list, ranges);
JSONObject scoreRateByLastBatch = getScoreRateByLastBatch(list);
JSONObject result = new JSONObject();
result.put("rateByBatch", rateByLastBatch);
result.put("scoreByBatch", scoreRateByLastBatch);
return Result.ok(result);
JSONObject rateByBatch = getRateByBatchRanges(list, ranges);
JSONObject scoreRateByBatch = getScoreRateByLastBatch(list);
JSONObject batchResult = new JSONObject();
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);
}