修改查询接口

This commit is contained in:
Cool 2024-04-02 19:49:12 +08:00
parent d6432f6efc
commit 2275a2a065
3 changed files with 64 additions and 60 deletions

View File

@ -42,6 +42,7 @@ public class CenterController {
public Result<JSONObject> getCollege() { public Result<JSONObject> getCollege() {
return Result.ok(centerService.getCollege()); return Result.ok(centerService.getCollege());
} }
/** /**
* 获取学院专业级联数据 * 获取学院专业级联数据
*/ */
@ -49,6 +50,7 @@ public class CenterController {
public Result<JSONObject> getCollegeMajor() { public Result<JSONObject> getCollegeMajor() {
return centerService.getCollegeMajor(); return centerService.getCollegeMajor();
} }
/** /**
* 统计四级表和六级表中存在的批次 * 统计四级表和六级表中存在的批次
*/ */
@ -62,27 +64,20 @@ public class CenterController {
*/ */
@GetMapping(value = "/getData") @GetMapping(value = "/getData")
// @Cacheable(value = "getData", key = "'getData'+#college+#grade") // @Cacheable(value = "getData", key = "'getData'+#college+#grade")
public Result<JSONObject> getData(@RequestParam("college") String college, @RequestParam("major") String major,@RequestParam("entrydate") String entrydate) { public Result<JSONObject> getData(@RequestParam("college") String college, @RequestParam("major") String major, @RequestParam("entrydate") String entrydate) {
return centerService.getData(college,major,entrydate); return centerService.getData(college, major, entrydate);
} }
@GetMapping("/getRateByBatch") @GetMapping("/getRateByBatch")
public Result<JSONObject> getRateByBatch(@RequestParam("batch") String 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.setBatch(date); return cet4Service.getRateByBatch(batch);
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(date); // cet.setBatch(date);
return cet6Service.getRate(cet); return cet6Service.getRate(cet);
} else { } else {
return null; return null;
@ -94,9 +89,8 @@ public class CenterController {
public Result<JSONObject> getRateByCollege(@RequestParam("college") String college, @RequestParam("level") String level) { public Result<JSONObject> getRateByCollege(@RequestParam("college") String college, @RequestParam("level") String level) {
System.out.println(college + " " + level); System.out.println(college + " " + level);
if (level.equals("cet4")) { if (level.equals("cet4")) {
Cet_4 cet = new Cet_4();
cet.setCollege(college); return cet4Service.getRateByCollege(college);
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.setCollege(college); cet.setCollege(college);

View File

@ -1,14 +1,10 @@
package org.jeecg.modules.service; package org.jeecg.modules.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.Cet_4; import org.jeecg.modules.entity.Cet_4;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.entity.Cet_6;
import java.util.Date;
/** /**
* @Description: cet_4 * @Description: cet_4
@ -17,6 +13,7 @@ import java.util.Date;
* @Version: V1.0 * @Version: V1.0
*/ */
public interface ICet_4Service extends IService<Cet_4> { public interface ICet_4Service extends IService<Cet_4> {
Result<JSONObject> getRate(Cet_4 cet); Result<JSONObject> getRateByCollege(String college);
Result<JSONObject> getRateByBatch(String batchStr);
} }

View File

@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -29,25 +30,25 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
@Autowired @Autowired
Cet_4Mapper cet4Mapper; Cet_4Mapper cet4Mapper;
public Result<JSONObject> getRate(Cet_4 cet) { public Result<JSONObject> getRateByCollege(String college) {
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 (cet.getBatch() == null) {
//根据学院查人数 //根据学院查人数
queryWrapper.eq(Cet_4::getCollege, cet.getCollege()).ge(Cet_4::getResult, 425); queryWrapper.eq(Cet_4::getCollege, college).ge(Cet_4::getResult, 425);
List<Cet_4> result = cet4Mapper.selectList(queryWrapper); List<Cet_4> result = cet4Mapper.selectList(queryWrapper);
// System.out.println(result); // System.out.println(result);
Map<Date, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getBatch)); Map<Date, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getBatch));
for (Map.Entry<Date, List<Cet_4>> entry : collect.entrySet()) { for (Map.Entry<Date, List<Cet_4>> entry : collect.entrySet()) {
double sum = (double) getNumByCollege(cet, entry.getKey()); double sum = (double) getNum(college, entry.getKey());
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);
System.out.println(res); // System.out.println(res);
Date key = entry.getKey(); Date key = entry.getKey();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String format = sdf.format(key); String format = sdf.format(key);
@ -56,54 +57,66 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
return Result.OK(jsonObject); return Result.OK(jsonObject);
} else if (cet.getCollege() == null) {
//根据批次查人数
queryWrapper.eq(Cet_4::getBatch, cet.getBatch()).ge(Cet_4::getResult, 425);
List<Cet_4> result = cet4Mapper.selectList(queryWrapper);
//通过批次
Map<String, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getCollege));
for (Map.Entry<String, List<Cet_4>> entry : collect.entrySet()) {
double sum = (double) getNumByBatch(cet, entry.getKey());
double size = entry.getValue().size(); }
public Result<JSONObject> getRateByBatch(String batchStr){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date batch;
try {
batch= dateFormat.parse(batchStr);
} catch (ParseException e) {
throw new RuntimeException(e);
}
JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
//select count(*) from cet_4 where batch ='?' and result>=425
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
//构造查询条件
double passRate = size / sum; //根据批次查人数
// 定义格式化规则保留四位小数 queryWrapper.eq(Cet_4::getBatch, batch).ge(Cet_4::getResult, 425);
DecimalFormat decimalFormat = new DecimalFormat("#.####"); List<Cet_4> result = cet4Mapper.selectList(queryWrapper);
String rate = decimalFormat.format(passRate); //通过批次
double res = Double.parseDouble(rate); Map<String, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getCollege));
for (Map.Entry<String, List<Cet_4>> entry : collect.entrySet()) {
double sum = (double) getNum(entry.getKey(),batch);
jsonObject.put(String.valueOf(entry.getKey()), res); double size = entry.getValue().size();
double passRate = size / sum;
// 定义格式化规则保留四位小数
DecimalFormat decimalFormat = new DecimalFormat("#.####");
String rate = decimalFormat.format(passRate);
double res = Double.parseDouble(rate);
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());
Collections.sort(list, (o1, o2) -> (double) o1.getValue() > (double) o2.getValue() ? -1 : 1); Collections.sort(list, (o1, o2) -> (double) o1.getValue() > (double) o2.getValue() ? -1 : 1);
jsonObject.clear(); jsonObject.clear();
for (Map.Entry<String, Object> stringObjectEntry : list) { for (Map.Entry<String, Object> stringObjectEntry : list) {
jsonObject.put(stringObjectEntry.getKey(), stringObjectEntry.getValue()); jsonObject.put(stringObjectEntry.getKey(), stringObjectEntry.getValue());
} }
System.out.println(jsonObject); // System.out.println(jsonObject);
return Result.OK(jsonObject); return Result.OK(jsonObject);
} else return null;
} }
private long getNum(String college, Date batch) {
private long getNumByCollege(Cet_4 cet, Date batch) {
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Cet_4::getCollege, cet.getCollege()).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 getNumByBatch(Cet_4 cet, String college) { // private long getNumByBatch(String college,Date batch) {
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Cet_4::getBatch, cet.getBatch()).eq(Cet_4::getCollege, college); // queryWrapper.eq(Cet_4::getBatch,batch).eq(Cet_4::getCollege, college);
return cet4Mapper.selectCount(queryWrapper); // return cet4Mapper.selectCount(queryWrapper);
} // }
} }