四级可视化分析1.1
This commit is contained in:
parent
810e818201
commit
f0c12f5926
|
@ -3,7 +3,6 @@ package org.jeecg.modules.controller;
|
|||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.modules.entity.Cet_4;
|
||||
import org.jeecg.modules.entity.Cet_6;
|
||||
import org.jeecg.modules.service.CenterService;
|
||||
import org.jeecg.modules.service.ICet_4Service;
|
||||
|
@ -12,9 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/cet")
|
||||
|
@ -68,11 +66,15 @@ public class CenterController {
|
|||
return centerService.getData(college, major, entrydate);
|
||||
}
|
||||
|
||||
@GetMapping("/getRateByBatch")
|
||||
public Result<JSONObject> getRateByBatch(@RequestParam("college") String college, @RequestParam("entrydate") String entrydate, @RequestParam("level") String level) {
|
||||
@PostMapping("/getRateByCollege")
|
||||
public Result<JSONObject> getRateByCollege(@RequestBody JSONObject webData) {
|
||||
String level= webData.getString("level");
|
||||
|
||||
//四六级分开查询
|
||||
|
||||
if (level.equals("cet4")) {
|
||||
return cet4Service.getRateByBatch(college,entrydate);
|
||||
|
||||
return cet4Service.getRateByCollege(webData);
|
||||
} else if (level.equals("cet6")) {
|
||||
Cet_6 cet = new Cet_6();
|
||||
// cet.setBatch(date);
|
||||
|
@ -81,13 +83,13 @@ public class CenterController {
|
|||
return null;
|
||||
}
|
||||
}
|
||||
//根据batch/college是否为空判断两种查询方式
|
||||
|
||||
@GetMapping("/getRateByCollege")
|
||||
public Result<JSONObject> getRateByCollege(@RequestParam("college") String college,@RequestParam("major") String major, @RequestParam("level") String level) {
|
||||
|
||||
@GetMapping("/getRateByAllBatch")
|
||||
public Result<JSONObject> getRateByAllBatch(@RequestParam("college") String college,@RequestParam("major") String major, @RequestParam("level") String level) {
|
||||
// System.out.println(college + " " + level);
|
||||
if (level.equals("cet4")) {
|
||||
return cet4Service.getRateByCollege(college,major);
|
||||
return cet4Service.getRateByAllBatch(college,major);
|
||||
} else if (level.equals("cet6")) {
|
||||
Cet_6 cet = new Cet_6();
|
||||
cet.setCollege(college);
|
||||
|
@ -96,7 +98,12 @@ public class CenterController {
|
|||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping("/getRateByBatch")
|
||||
public Result<JSONObject> getRateByBatch(@RequestParam("batch")String batch, @RequestParam("college") String college, @RequestParam("level")String level){
|
||||
if (level.equals("cet4")){
|
||||
return cet4Service.getRateByBatch(college,batch);
|
||||
}else return null;
|
||||
}
|
||||
@GetMapping("/getTest")
|
||||
public Result<JSONObject> getTest() {
|
||||
return centerService.getTest();
|
||||
|
|
|
@ -13,7 +13,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||
* @Version: V1.0
|
||||
*/
|
||||
public interface ICet_4Service extends IService<Cet_4> {
|
||||
Result<JSONObject> getRateByCollege(String college,String major);
|
||||
Result<JSONObject> getRateByBatch(String college, String entrydate);
|
||||
Result<JSONObject> getRateByAllBatch(String college, String major);
|
||||
|
||||
Result<JSONObject> getRateByBatch(String college, String batchStr);
|
||||
|
||||
Result<JSONObject> getRateByCollege(JSONObject webData);
|
||||
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONObject;
|
|||
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.modules.entity.Cet4_major;
|
||||
import org.jeecg.modules.entity.Cet_4;
|
||||
|
@ -42,7 +41,8 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
|||
@Resource
|
||||
private Cet4_majorMapper cet4_majorMapper;
|
||||
|
||||
public Result<JSONObject> getRateByCollege(String college, String major) {
|
||||
@Override
|
||||
public Result<JSONObject> getRateByAllBatch(String college, String major) {
|
||||
JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
|
||||
//select count(*) from cet_4 where college ='?' and result>=425
|
||||
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
@ -67,7 +67,8 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
|||
}
|
||||
double size = entry.getValue().size();
|
||||
double passRate = size / sum;
|
||||
DecimalFormat decimalFormat = new DecimalFormat("#.####");
|
||||
passRate = passRate * 100;
|
||||
DecimalFormat decimalFormat = new DecimalFormat("#.#");
|
||||
String rate = decimalFormat.format(passRate);
|
||||
double res = Double.parseDouble(rate);
|
||||
Date key = entry.getKey();
|
||||
|
@ -78,70 +79,80 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
|||
return Result.OK(jsonObject);
|
||||
}
|
||||
|
||||
// public Result<JSONObject> getRateByBatch(String college, String entrydate) {
|
||||
// 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<>());
|
||||
//
|
||||
// LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// //构造查询条件
|
||||
// Map<String, List<Cet_4>> collect = new HashMap<>();
|
||||
// //根据批次查人数
|
||||
// if (college.equals("全校")) {
|
||||
// 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));
|
||||
// for (Map.Entry<String, List<Cet_4>> entry : collect.entrySet()) {
|
||||
// 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 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的值进行排序
|
||||
// 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);
|
||||
// }
|
||||
public Result<JSONObject> getRateByBatch(String college, String entryDate) {
|
||||
@Override
|
||||
public Result<JSONObject> getRateByBatch(String college, 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<>());
|
||||
|
||||
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
|
||||
//构造查询条件
|
||||
Map<String, List<Cet_4>> collect;
|
||||
//根据批次查人数
|
||||
if (college.equals("全校")) {
|
||||
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));
|
||||
for (Map.Entry<String, List<Cet_4>> entry : collect.entrySet()) {
|
||||
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 passRate = size / sum*100;
|
||||
// 定义格式化规则,保留四位小数
|
||||
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());
|
||||
System.out.println(list);
|
||||
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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<JSONObject> getRateByCollege(JSONObject webData) {
|
||||
JSONArray colleges = webData.getJSONArray("college");
|
||||
|
||||
String entryDate = webData.getString("entrydate");
|
||||
//获取所有batch
|
||||
JSONObject batch = centerService.getBatch();
|
||||
JSONArray batchsArray = batch.getJSONArray("batches");
|
||||
|
@ -173,26 +184,33 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
|||
LambdaQueryWrapper<Cet4_major> Cet4_majorQW = new LambdaQueryWrapper<>();
|
||||
///学院/专业的全部在籍学生
|
||||
long allStudent = 0;
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray ans = new JSONArray();
|
||||
//如果是全校,获取每个学院的数据
|
||||
if (college.equals("全校")) {
|
||||
if (colleges.size() > 1 || colleges.get(0).equals("全校")) {
|
||||
//获取所有学院列表
|
||||
LambdaQueryWrapper<Cet_4> collegeQueryWrapper = new LambdaQueryWrapper<>();
|
||||
collegeQueryWrapper.select(Cet_4::getCollege).groupBy(Cet_4::getCollege);
|
||||
List<Object> collegeList = cet4Mapper.selectObjs(collegeQueryWrapper);
|
||||
if (colleges.size() > 1) {
|
||||
collegeList = colleges;
|
||||
}
|
||||
//查某个入学年级的所有学院
|
||||
LambdaQueryWrapper<Cet4_major> cet4MajorQW = new LambdaQueryWrapper<>();
|
||||
cet4MajorQW.select(Cet4_major::getCollege).eq(Cet4_major::getEntrydate, entryDate).groupBy(Cet4_major::getCollege);
|
||||
|
||||
//若无该学院则剔除
|
||||
List<Object> collegeSet = cet4_MajorMapper.selectObjs(cet4MajorQW);
|
||||
|
||||
// 在循环开始之前,获取所有学院的在籍学生数量
|
||||
LambdaQueryWrapper<Cet4_major> allStudentQW = new LambdaQueryWrapper<>();
|
||||
allStudentQW.select(Cet4_major::getCollege, Cet4_major::getId).eq(Cet4_major::getState,"在校").eq(Cet4_major::getEntrydate, entryDate);
|
||||
allStudentQW.select(Cet4_major::getCollege, Cet4_major::getId).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate);
|
||||
List<Map<String, Object>> allStudentList = cet4_majorMapper.selectMaps(allStudentQW);
|
||||
Map<String, Long> allStudentMap = allStudentList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college"), Collectors.counting()));
|
||||
|
||||
// 在循环开始之前,获取所有批次的数据
|
||||
LambdaQueryWrapper<Cet_4> allBatchQW = new LambdaQueryWrapper<>();
|
||||
allBatchQW.select(Cet_4::getCollege,Cet_4::getId,Cet_4::getResult).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList);
|
||||
allBatchQW.select(Cet_4::getCollege, Cet_4::getId, Cet_4::getResult).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList);
|
||||
List<Map<String, Object>> allBatchList = cet4Mapper.selectMaps(allBatchQW);
|
||||
Map<String, List<Map<String, Object>>> allBatchMap = allBatchList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college")));
|
||||
|
||||
|
@ -220,22 +238,25 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
|||
int passNumber = (int) attendMap4.values().stream().filter(value -> value == 1).count();
|
||||
//每个年级的累计通过率保留三位小数
|
||||
double passRate = passNumber / (double) allStudent;
|
||||
passRate = passRate * 100;
|
||||
//保留三位小数
|
||||
DecimalFormat df = new DecimalFormat("#.###");
|
||||
DecimalFormat df = new DecimalFormat("#.#");
|
||||
json.put("college", collegeName);
|
||||
json.put("passRate", df.format(passRate));
|
||||
// System.out.println("学院:" + collegeName + ",累计通过人数:" + passNumber + ",总人数:" + allStudent + ", 通过率" + passRate);
|
||||
ans.add(json);
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
//获取该学院的所有专业
|
||||
LambdaQueryWrapper<Cet_4> collegeQueryWrapper = new LambdaQueryWrapper<>();
|
||||
collegeQueryWrapper.eq(Cet_4::getCollege, college).select(Cet_4::getMajorname).groupBy(Cet_4::getMajorname);
|
||||
collegeQueryWrapper.eq(Cet_4::getCollege, colleges.get(0)).select(Cet_4::getMajorname).groupBy(Cet_4::getMajorname);
|
||||
List<Object> majorList = cet4Mapper.selectObjs(collegeQueryWrapper);
|
||||
//查某个学院的所有专业
|
||||
LambdaQueryWrapper<Cet4_major> cet4MajorQW = new LambdaQueryWrapper<>();
|
||||
cet4MajorQW.select(Cet4_major::getMajorname).eq(Cet4_major::getCollege, college).eq(Cet4_major::getEntrydate, entryDate).groupBy(Cet4_major::getMajorname);
|
||||
cet4MajorQW.select(Cet4_major::getMajorname).eq(Cet4_major::getCollege, colleges.get(0)).eq(Cet4_major::getEntrydate, entryDate).groupBy(Cet4_major::getMajorname);
|
||||
//若为转专业的则剔除
|
||||
List<Object> majorSet = cet4_MajorMapper.selectObjs(cet4MajorQW);
|
||||
// System.out.println("专业:" + majorList);
|
||||
|
@ -247,12 +268,12 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
|||
Map<String, Integer> attendMap4 = new HashMap<>();
|
||||
//获取该专业的在籍学生
|
||||
Cet4_majorQW.clear();
|
||||
Cet4_majorQW.select(Cet4_major::getId).eq(Cet4_major::getCollege, college).eq(Cet4_major::getMajorname, majorName).eq(Cet4_major::getEntrydate, entryDate);
|
||||
Cet4_majorQW.select(Cet4_major::getId).eq(Cet4_major::getCollege, colleges.get(0)).eq(Cet4_major::getMajorname, majorName).eq(Cet4_major::getEntrydate, entryDate);
|
||||
allStudent = cet4_majorMapper.selectCount(Cet4_majorQW);
|
||||
JSONObject json = new JSONObject();
|
||||
//一次性获取所有批次的数据
|
||||
Cet_4QW.clear(); // 清空查询条件,以便重新设置
|
||||
Cet_4QW.eq(Cet_4::getCollege, college).eq(Cet_4::getMajorname, majorName).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList);
|
||||
Cet_4QW.eq(Cet_4::getCollege, colleges.get(0)).eq(Cet_4::getMajorname, majorName).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList);
|
||||
List<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW);
|
||||
for (Map<String, Object> map : Cet_4eEntrydate) {
|
||||
String str = (String) map.get("id");
|
||||
|
@ -268,17 +289,19 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
|||
int passNumber = (int) attendMap4.values().stream().filter(value -> value == 1).count();
|
||||
//每个年级的累计通过率保留三位小数
|
||||
double passRate = passNumber / (double) allStudent;
|
||||
passRate = passRate * 100;
|
||||
//保留三位小数
|
||||
DecimalFormat df = new DecimalFormat("#.###");
|
||||
DecimalFormat df = new DecimalFormat("#.#");
|
||||
json.put("college", majorName);
|
||||
json.put("passRate", df.format(passRate));
|
||||
// System.out.println("专业:" + majorName + ",累计通过人数:" + passNumber + ",总人数:" + allStudent + ",通过率:" + df.format(passRate));
|
||||
ans.add(json);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("data", ans);
|
||||
|
||||
return Result.ok(result);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue