新增为三个批次
This commit is contained in:
parent
c25fa2a9f0
commit
2d11a335d7
|
@ -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,31 +675,51 @@ 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();
|
||||||
LambdaQueryWrapper<Cet_4> queryWrapper = Wrappers.lambdaQuery(Cet_4.class)
|
getMaxBatches.select("DISTINCT batch").orderByDesc("batch").last("LIMIT 3");
|
||||||
.eq(!Objects.equals(college, "全校"),Cet_4::getCollege, college)
|
List<Date> latestBatches = listObjs(getMaxBatches, obj -> (Date) obj);
|
||||||
.eq(!major.isEmpty(), Cet_4::getMajorname, major)
|
|
||||||
.eq(Cet_4::getBatch, batch);
|
JSONObject aggregatedResult = new JSONObject();
|
||||||
List<Cet_4> list = list(queryWrapper);
|
JSONArray batchResults = new JSONArray();
|
||||||
//设置要查询的范围端
|
|
||||||
List<int[]> ranges = Arrays.asList(
|
for (Date batch : latestBatches) {
|
||||||
new int[]{0, 400},
|
LambdaQueryWrapper<Cet_4> queryWrapper = Wrappers.lambdaQuery(Cet_4.class)
|
||||||
new int[]{400, 425},
|
.eq(!Objects.equals(college, "全校"), Cet_4::getCollege, college)
|
||||||
new int[]{425, 450},
|
.eq(!major.isEmpty(), Cet_4::getMajorname, major)
|
||||||
new int[]{450, 475},
|
.eq(Cet_4::getBatch, batch);
|
||||||
new int[]{475, 750}
|
List<Cet_4> list = list(queryWrapper);
|
||||||
);
|
|
||||||
JSONObject rateByLastBatch = getRateByBatchRanges(list, ranges);
|
// Define ranges for analysis
|
||||||
JSONObject scoreRateByLastBatch = getScoreRateByLastBatch(list);
|
List<int[]> ranges = Arrays.asList(
|
||||||
JSONObject result = new JSONObject();
|
new int[]{0, 400},
|
||||||
result.put("rateByBatch", rateByLastBatch);
|
new int[]{400, 425},
|
||||||
result.put("scoreByBatch", scoreRateByLastBatch);
|
new int[]{425, 450},
|
||||||
return Result.ok(result);
|
new int[]{450, 475},
|
||||||
|
new int[]{475, 750}
|
||||||
|
);
|
||||||
|
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -731,20 +751,20 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
//听力阅读等各个模块占比
|
//听力阅读等各个模块占比
|
||||||
public JSONObject getScoreRateByLastBatch(List<Cet_4> list) {
|
public JSONObject getScoreRateByLastBatch(List<Cet_4> list) {
|
||||||
int total = list.size();
|
int total = list.size();
|
||||||
int listen=0;
|
int listen = 0;
|
||||||
int read=0;
|
int read = 0;
|
||||||
int write=0;
|
int write = 0;
|
||||||
//求平均数
|
//求平均数
|
||||||
for (Cet_4 cet_4 : list) {
|
for (Cet_4 cet_4 : list) {
|
||||||
listen+=cet_4.getListen();
|
listen += cet_4.getListen();
|
||||||
read+=cet_4.getReading();
|
read += cet_4.getReading();
|
||||||
write+=cet_4.getWriting();
|
write += cet_4.getWriting();
|
||||||
}
|
}
|
||||||
DecimalFormat df = new DecimalFormat("#.##");
|
DecimalFormat df = new DecimalFormat("#.##");
|
||||||
JSONObject jsonObject=new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
jsonObject.put("listen",df.format(listen/(double)total));
|
jsonObject.put("listen", df.format(listen / (double) total));
|
||||||
jsonObject.put("read",df.format(read/(double)total));
|
jsonObject.put("read", df.format(read / (double) total));
|
||||||
jsonObject.put("write",df.format(write/(double)total));
|
jsonObject.put("write", df.format(write / (double) total));
|
||||||
return jsonObject;
|
return jsonObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue