修改查询接口,并对数据进行排序

This commit is contained in:
Cool 2024-03-27 18:00:31 +08:00
parent 7417bfac04
commit 8d695e80b2
2 changed files with 59 additions and 31 deletions

View File

@ -16,6 +16,8 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
@ -64,15 +66,22 @@ public class CenterController {
} }
@GetMapping("/getRateByBatch") @GetMapping("/getRateByBatch")
public Result<JSONObject> getRateByBatch(@RequestParam("batch") Date batch, @RequestParam("level") String level) { public Result<JSONObject> getRateByBatch(@RequestParam("batch") String batch, @RequestParam("level") String level) {
//四六级分开查询 //四六级分开查询
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date;
try {
date= dateFormat.parse(batch);
} catch (ParseException e) {
throw new RuntimeException(e);
}
if (level.equals("cet4")) { if (level.equals("cet4")) {
Cet_4 cet = new Cet_4(); Cet_4 cet = new Cet_4();
cet.setBatch(batch); cet.setBatch(date);
return cet4Service.getRate(cet); return cet4Service.getRate(cet);
} else if (level.equals("cet6")) { } else if (level.equals("cet6")) {
Cet_6 cet = new Cet_6(); Cet_6 cet = new Cet_6();
cet.setBatch(batch); cet.setBatch(date);
return cet6Service.getRate(cet); return cet6Service.getRate(cet);
} else { } else {
return null; return null;
@ -80,7 +89,7 @@ public class CenterController {
} }
//根据batch/college是否为空判断两种查询方式 //根据batch/college是否为空判断两种查询方式
@GetMapping("/getRateByCollege") @PostMapping("/getRateByCollege")
public Result<JSONObject> getRateByCollege(@RequestParam("college") String college, @RequestParam("level") String level) { public Result<JSONObject> getRateByCollege(@RequestParam("college") String college, @RequestParam("level") String level) {
if (level.equals("cet4")) { if (level.equals("cet4")) {
Cet_4 cet = new Cet_4(); Cet_4 cet = new Cet_4();

View File

@ -1,9 +1,7 @@
package org.jeecg.modules.service.impl; package org.jeecg.modules.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
@ -14,9 +12,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.Date;
import java.util.List; import java.text.DecimalFormat;
import java.util.Map; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -31,7 +29,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
Cet_4Mapper cet4Mapper; Cet_4Mapper cet4Mapper;
public Result<JSONObject> getRate(Cet_4 cet) { public Result<JSONObject> getRate(Cet_4 cet) {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
//select count(*) from cet_4 where college ='?' and result>=425 //select count(*) from cet_4 where college ='?' and result>=425
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
//构造查询条件 //构造查询条件
@ -39,13 +37,12 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
//根据学院查人数 //根据学院查人数
queryWrapper.eq(Cet_4::getCollege, cet.getCollege()).ge(Cet_4::getResult, 425); queryWrapper.eq(Cet_4::getCollege, cet.getCollege()).ge(Cet_4::getResult, 425);
List<Cet_4> result = cet4Mapper.selectList(queryWrapper); List<Cet_4> result = cet4Mapper.selectList(queryWrapper);
Map<String, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getCollege)); Map<Date, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getBatch));
for (Map.Entry<String, List<Cet_4>> entry : collect.entrySet()) { for (Map.Entry<Date, List<Cet_4>> entry : collect.entrySet()) {
double sum = (double) getNum(cet); double sum = (double) getNumByCollege(cet, entry.getKey());
double size = entry.getValue().size(); double size = entry.getValue().size();
double passRate = sum / size; double passRate = size / sum;
jsonObject.put(String.valueOf(entry.getKey()), jsonObject.put(String.valueOf(entry.getKey()), passRate);
passRate);
} }
return Result.OK(jsonObject); return Result.OK(jsonObject);
@ -54,31 +51,53 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
//根据批次查人数 //根据批次查人数
queryWrapper.eq(Cet_4::getBatch, cet.getBatch()).ge(Cet_4::getResult, 425); queryWrapper.eq(Cet_4::getBatch, cet.getBatch()).ge(Cet_4::getResult, 425);
List<Cet_4> result = cet4Mapper.selectList(queryWrapper); List<Cet_4> result = cet4Mapper.selectList(queryWrapper);
Map<Date, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getBatch)); //通过批次
for (Map.Entry<Date, List<Cet_4>> entry : collect.entrySet()) { Map<String, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getCollege));
double sum = (double) getNum(cet); for (Map.Entry<String, List<Cet_4>> entry : collect.entrySet()) {
double sum = (double) getNumByBatch(cet, entry.getKey());
double size = entry.getValue().size(); double size = entry.getValue().size();
double passRate = sum / size;
jsonObject.put(String.valueOf(entry.getKey()), double passRate = size / sum;
passRate); // 定义格式化规则保留四位小数
DecimalFormat decimalFormat = new DecimalFormat("#.####");
String rate = decimalFormat.format(passRate);
double res = Double.parseDouble(rate);
jsonObject.put(String.valueOf(entry.getKey()), res);
} }
//对jsonObject的值进行排序
List<Map.Entry<String, Object>> list = new ArrayList<>(jsonObject.entrySet());
Collections.sort(list, (o1, o2) -> (double) o1.getValue() > (double) o2.getValue() ? -1 : 1);
jsonObject.clear();
for (Map.Entry<String, Object> stringObjectEntry : list) {
jsonObject.put(stringObjectEntry.getKey(), stringObjectEntry.getValue());
}
return Result.OK(jsonObject); return Result.OK(jsonObject);
} } else return null;
else return null;
} }
private long getNum(Cet_4 cet) { private long getNumByCollege(Cet_4 cet, Date batch) {
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
if (cet.getCollege() == null) { queryWrapper.eq(Cet_4::getCollege, cet.getCollege()).eq(Cet_4::getBatch, batch);
queryWrapper.eq(Cet_4::getBatch, cet.getBatch());
}
if (cet.getBatch() == null) {
queryWrapper.eq(Cet_4::getCollege, cet.getCollege());
}
return cet4Mapper.selectCount(queryWrapper); return cet4Mapper.selectCount(queryWrapper);
} }
private long getNumByBatch(Cet_4 cet, String college) {
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Cet_4::getBatch, cet.getBatch()).eq(Cet_4::getCollege, college);
return cet4Mapper.selectCount(queryWrapper);
}
} }