加入专业

This commit is contained in:
xbx 2024-04-03 14:31:56 +08:00
parent 2275a2a065
commit dc4f87f63d
3 changed files with 79 additions and 46 deletions

View File

@ -69,12 +69,10 @@ public class CenterController {
} }
@GetMapping("/getRateByBatch") @GetMapping("/getRateByBatch")
public Result<JSONObject> getRateByBatch(@RequestParam("batch") String batch, @RequestParam("level") String level) { public Result<JSONObject> getRateByBatch(@RequestParam("college") String college, @RequestParam("batch") String batch, @RequestParam("level") String level) {
//四六级分开查询 //四六级分开查询
if (level.equals("cet4")) { if (level.equals("cet4")) {
return cet4Service.getRateByBatch(college,batch);
return cet4Service.getRateByBatch(batch);
} else if (level.equals("cet6")) { } else if (level.equals("cet6")) {
Cet_6 cet = new Cet_6(); Cet_6 cet = new Cet_6();
// cet.setBatch(date); // cet.setBatch(date);
@ -86,11 +84,10 @@ public class CenterController {
//根据batch/college是否为空判断两种查询方式 //根据batch/college是否为空判断两种查询方式
@GetMapping("/getRateByCollege") @GetMapping("/getRateByCollege")
public Result<JSONObject> getRateByCollege(@RequestParam("college") String college, @RequestParam("level") String level) { public Result<JSONObject> getRateByCollege(@RequestParam("college") String college,@RequestParam("major") String major, @RequestParam("level") String level) {
System.out.println(college + " " + level); // System.out.println(college + " " + level);
if (level.equals("cet4")) { if (level.equals("cet4")) {
return cet4Service.getRateByCollege(college,major);
return cet4Service.getRateByCollege(college);
} else if (level.equals("cet6")) { } else if (level.equals("cet6")) {
Cet_6 cet = new Cet_6(); Cet_6 cet = new Cet_6();
cet.setCollege(college); cet.setCollege(college);

View File

@ -13,7 +13,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @Version: V1.0 * @Version: V1.0
*/ */
public interface ICet_4Service extends IService<Cet_4> { public interface ICet_4Service extends IService<Cet_4> {
Result<JSONObject> getRateByCollege(String college); Result<JSONObject> getRateByCollege(String college,String major);
Result<JSONObject> getRateByBatch(String batchStr); Result<JSONObject> getRateByBatch(String college, String batchStr);
} }

View File

@ -4,8 +4,11 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.checkerframework.checker.units.qual.A;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.Cet4_major;
import org.jeecg.modules.entity.Cet_4; import org.jeecg.modules.entity.Cet_4;
import org.jeecg.modules.mapper.Cet4_majorMapper;
import org.jeecg.modules.mapper.Cet_4Mapper; import org.jeecg.modules.mapper.Cet_4Mapper;
import org.jeecg.modules.service.ICet_4Service; import org.jeecg.modules.service.ICet_4Service;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -29,68 +32,97 @@ import java.util.stream.Collectors;
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 @Autowired
Cet_4Mapper cet4Mapper; Cet_4Mapper cet4Mapper;
@Autowired
Cet4_majorMapper cet4_MajorMapper;
public Result<JSONObject> getRateByCollege(String college) { public Result<JSONObject> getRateByCollege(String college, String major) {
System.out.println(college + " " + major);
JSONObject jsonObject = new JSONObject(new LinkedHashMap<>()); 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<>();
//构造查询条件 //构造查询条件
//根据学院查人数
//根据学院查人数 if (major.equals("")) {
queryWrapper.eq(Cet_4::getCollege, college).ge(Cet_4::getResult, 425); queryWrapper.eq(Cet_4::getCollege, college).ge(Cet_4::getResult, 425);
List<Cet_4> result = cet4Mapper.selectList(queryWrapper); } else {
// System.out.println(result); queryWrapper.eq(Cet_4::getCollege, college).eq(Cet_4::getMajorname, major).ge(Cet_4::getResult, 425);
Map<Date, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getBatch)); }
for (Map.Entry<Date, List<Cet_4>> entry : collect.entrySet()) { List<Cet_4> result = cet4Mapper.selectList(queryWrapper);
double sum = (double) getNum(college, entry.getKey()); Map<Date, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getBatch));
double size = entry.getValue().size(); for (Map.Entry<Date, List<Cet_4>> entry : collect.entrySet()) {
double passRate = size / sum; double sum;
DecimalFormat decimalFormat = new DecimalFormat("#.####"); if (major.equals("")) {
String rate = decimalFormat.format(passRate); sum = (double) getNumCollege(college, entry.getKey());
double res = Double.parseDouble(rate); } else {
// System.out.println(res); sum = (double) getNumMajor(major, entry.getKey());
Date key = entry.getKey();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String format = sdf.format(key);
jsonObject.put(format, res);
} }
double size = entry.getValue().size();
double passRate = size / sum;
DecimalFormat decimalFormat = new DecimalFormat("#.####");
String rate = decimalFormat.format(passRate);
double res = Double.parseDouble(rate);
Date key = entry.getKey();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String format = sdf.format(key);
jsonObject.put(format, res);
}
return Result.OK(jsonObject); return Result.OK(jsonObject);
} }
public Result<JSONObject> getRateByBatch(String batchStr){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); public Result<JSONObject> getRateByBatch(String college, String batchStr) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date batch; Date batch;
try { try {
batch= dateFormat.parse(batchStr); batch = dateFormat.parse(batchStr);
} catch (ParseException e) { } catch (ParseException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
JSONObject jsonObject = new JSONObject(new LinkedHashMap<>()); JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
//select count(*) from cet_4 where batch ='?' and result>=425
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
//构造查询条件 //构造查询条件
Map<String, List<Cet_4>> collect = new HashMap<>();
//根据批次查人数 //根据批次查人数
queryWrapper.eq(Cet_4::getBatch, batch).ge(Cet_4::getResult, 425); if (college.equals("全校")) {
List<Cet_4> result = cet4Mapper.selectList(queryWrapper); queryWrapper.eq(Cet_4::getBatch, batch).ge(Cet_4::getResult, 425);
List<Cet_4> result = cet4Mapper.selectList(queryWrapper);
collect = result.stream().collect(Collectors.groupingBy(Cet_4::getCollege));
} else {
queryWrapper.eq(Cet_4::getCollege, college).eq(Cet_4::getBatch, batch).ge(Cet_4::getResult, 425);
List<Cet_4> result = cet4Mapper.selectList(queryWrapper);
collect = result.stream().collect(Collectors.groupingBy(Cet_4::getMajorname));
}
// System.out.println(collect);
// List<Cet_4> result = cet4Mapper.selectList(queryWrapper);
//通过批次 //通过批次
Map<String, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getCollege)); // Map<String, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getCollege));
for (Map.Entry<String, List<Cet_4>> entry : collect.entrySet()) { for (Map.Entry<String, List<Cet_4>> entry : collect.entrySet()) {
double sum = (double) getNum(entry.getKey(),batch); double sum;
if (college.equals("全校")) {
sum = (double) getNumCollege(entry.getKey(), batch);
} else {
//查某个学院的所有专业
LambdaQueryWrapper<Cet4_major> cet4MajorQW = new LambdaQueryWrapper<>();
cet4MajorQW.select(Cet4_major::getMajorname).eq(Cet4_major::getCollege, college).groupBy(Cet4_major::getMajorname);
//若为转专业的则剔除
List<Object> majorList = cet4_MajorMapper.selectObjs(cet4MajorQW);
System.out.println(majorList);
if (majorList.contains(entry.getKey())) {
sum = (double) getNumMajor(entry.getKey(), batch);
} else {
continue;
}
}
double size = entry.getValue().size(); double size = entry.getValue().size();
double passRate = size / sum; double passRate = size / sum;
// 定义格式化规则保留四位小数 // 定义格式化规则保留四位小数
DecimalFormat decimalFormat = new DecimalFormat("#.####"); DecimalFormat decimalFormat = new DecimalFormat("#.####");
String rate = decimalFormat.format(passRate); String rate = decimalFormat.format(passRate);
double res = Double.parseDouble(rate); double res = Double.parseDouble(rate);
jsonObject.put(String.valueOf(entry.getKey()), res); jsonObject.put(String.valueOf(entry.getKey()), res);
} }
//对jsonObject的值进行排序 //对jsonObject的值进行排序
List<Map.Entry<String, Object>> list = new ArrayList<>(jsonObject.entrySet()); List<Map.Entry<String, Object>> list = new ArrayList<>(jsonObject.entrySet());
@ -101,18 +133,22 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
jsonObject.put(stringObjectEntry.getKey(), stringObjectEntry.getValue()); jsonObject.put(stringObjectEntry.getKey(), stringObjectEntry.getValue());
} }
// System.out.println(jsonObject);
return Result.OK(jsonObject); return Result.OK(jsonObject);
} }
private long getNum(String college, Date batch) { private long getNumCollege(String college, Date batch) {
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Cet_4::getCollege, college).eq(Cet_4::getBatch, batch); queryWrapper.eq(Cet_4::getCollege, college).eq(Cet_4::getBatch, batch);
return cet4Mapper.selectCount(queryWrapper); return cet4Mapper.selectCount(queryWrapper);
} }
private long getNumMajor(String major, Date batch) {
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Cet_4::getMajorname, major).eq(Cet_4::getBatch, batch);
return cet4Mapper.selectCount(queryWrapper);
}
// private long getNumByBatch(String college,Date batch) { // private long getNumByBatch(String college,Date batch) {
// LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(Cet_4::getBatch,batch).eq(Cet_4::getCollege, college); // queryWrapper.eq(Cet_4::getBatch,batch).eq(Cet_4::getCollege, college);