基本功能完成
This commit is contained in:
parent
dba83d453e
commit
810e818201
|
@ -69,10 +69,10 @@ public class CenterController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/getRateByBatch")
|
@GetMapping("/getRateByBatch")
|
||||||
public Result<JSONObject> getRateByBatch(@RequestParam("college") String college, @RequestParam("batch") String batch, @RequestParam("level") String level) {
|
public Result<JSONObject> getRateByBatch(@RequestParam("college") String college, @RequestParam("entrydate") String entrydate, @RequestParam("level") String level) {
|
||||||
//四六级分开查询
|
//四六级分开查询
|
||||||
if (level.equals("cet4")) {
|
if (level.equals("cet4")) {
|
||||||
return cet4Service.getRateByBatch(college,batch);
|
return cet4Service.getRateByBatch(college,entrydate);
|
||||||
} 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);
|
||||||
|
|
|
@ -12,8 +12,11 @@ public class Cet4_major {
|
||||||
private String college;
|
private String college;
|
||||||
private String major_id;
|
private String major_id;
|
||||||
private String majorname;
|
private String majorname;
|
||||||
private String educat;
|
private String class_name;
|
||||||
|
private String educate;
|
||||||
private String entrydate;
|
private String entrydate;
|
||||||
private String campus;
|
private String campus;
|
||||||
|
private String state;
|
||||||
private String level;
|
private String level;
|
||||||
|
private String category;
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,5 +76,9 @@ public class Cet_4 implements Serializable {
|
||||||
@Excel(name = "培养层次", width = 15)
|
@Excel(name = "培养层次", width = 15)
|
||||||
@ApiModelProperty(value = "培养层次")
|
@ApiModelProperty(value = "培养层次")
|
||||||
private String level;
|
private String level;
|
||||||
|
/**在校状态*/
|
||||||
|
@Excel(name = "在校状态", width = 15)
|
||||||
|
@ApiModelProperty(value = "在校状态")
|
||||||
|
private String state;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,4 +70,22 @@ public class Cet_4old {
|
||||||
@Excel(name = "作文成绩", width = 15)
|
@Excel(name = "作文成绩", width = 15)
|
||||||
@ApiModelProperty(value = "作文成绩")
|
@ApiModelProperty(value = "作文成绩")
|
||||||
private Integer writing;
|
private Integer writing;
|
||||||
|
/**
|
||||||
|
* 专业名字
|
||||||
|
*/
|
||||||
|
@Excel(name = "专业名称", width = 15)
|
||||||
|
@ApiModelProperty(value = "专业名称")
|
||||||
|
private String majorname;
|
||||||
|
/**
|
||||||
|
* 培养层次
|
||||||
|
*/
|
||||||
|
@Excel(name = "培养层次", width = 15)
|
||||||
|
@ApiModelProperty(value = "培养层次")
|
||||||
|
private String level;
|
||||||
|
/**
|
||||||
|
* 在校状态
|
||||||
|
*/
|
||||||
|
@Excel(name = "在校状态", width = 15)
|
||||||
|
@ApiModelProperty(value = "在校状态")
|
||||||
|
private String state;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
*/
|
*/
|
||||||
public interface ICet_4Service extends IService<Cet_4> {
|
public interface ICet_4Service extends IService<Cet_4> {
|
||||||
Result<JSONObject> getRateByCollege(String college,String major);
|
Result<JSONObject> getRateByCollege(String college,String major);
|
||||||
Result<JSONObject> getRateByBatch(String college, String batchStr);
|
Result<JSONObject> getRateByBatch(String college, String entrydate);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -184,9 +184,14 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result<JSONObject> getData(String college, String major, String entryDate) {
|
public Result<JSONObject> getData(String college, String major, String entryDate) {
|
||||||
System.out.println(college + "+" + major + "+" + entryDate);
|
|
||||||
//获取所有batch
|
//获取所有batch
|
||||||
String[] batchs = {"2017-12-01", "2018-06-01", "2018-12-01", "2019-06-01", "2019-12-01", "2020-09-01", "2020-12-01", "2021-06-01", "2021-12-01", "2022-09-01", "2023-03-01", "2023-06-01", "2023-12-01", "2024-06-01"};
|
JSONObject batch = getBatch();
|
||||||
|
JSONArray batchsArray = batch.getJSONArray("batches");
|
||||||
|
//转换为String数组
|
||||||
|
String[] batchs = new String[batchsArray.size()];
|
||||||
|
for (int i = 0; i < batchsArray.size(); i++) {
|
||||||
|
batchs[i] = batchsArray.getJSONObject(i).getString("value");
|
||||||
|
}
|
||||||
//根据entrydate转换为入学年份之后的八次list
|
//根据entrydate转换为入学年份之后的八次list
|
||||||
List<String> batchList = new ArrayList<>();
|
List<String> batchList = new ArrayList<>();
|
||||||
for (int i = 0; i < batchs.length; i++) {
|
for (int i = 0; i < batchs.length; i++) {
|
||||||
|
@ -212,25 +217,48 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
|
||||||
int[] attendNumber4 = new int[n];
|
int[] attendNumber4 = new int[n];
|
||||||
//每年新通过的人数
|
//每年新通过的人数
|
||||||
int[] passNew4 = new int[n];
|
int[] passNew4 = new int[n];
|
||||||
|
//全校/学院的全部在籍学生
|
||||||
|
long allStudent = 0;
|
||||||
//每个批次获取数据
|
//每个批次获取数据
|
||||||
LambdaQueryWrapper<Cet_4> Cet_4QW = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<Cet_4> Cet_4QW = new LambdaQueryWrapper<>();
|
||||||
|
//获取全部在籍学生
|
||||||
|
LambdaQueryWrapper<Cet4_major> Cet4_majorQW = new LambdaQueryWrapper<>();
|
||||||
for (int i = 0; i < n; i++) {
|
for (int i = 0; i < n; i++) {
|
||||||
Cet_4QW.clear(); // 清空查询条件,以便重新设置
|
Cet_4QW.clear(); // 清空查询条件,以便重新设置
|
||||||
if (college.equals("全校")) {
|
if (college.equals("全校")) {
|
||||||
Cet_4QW.eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i));
|
Cet_4QW.eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i));
|
||||||
|
//查询该年级的全校在籍学生
|
||||||
|
Cet4_majorQW.clear();
|
||||||
|
Cet4_majorQW.select(Cet4_major::getId).eq(Cet4_major::getEntrydate, entryDate).eq(Cet4_major::getState,"在校");
|
||||||
|
allStudent = cet4_majorMapper.selectCount(Cet4_majorQW);
|
||||||
|
} else if (college.equals("专升本")) {
|
||||||
|
Cet_4QW.eq(Cet_4::getLevel, college).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i));
|
||||||
|
//查询该年级的专升本在籍学生
|
||||||
|
Cet4_majorQW.clear();
|
||||||
|
Cet4_majorQW.select(Cet4_major::getId).eq(Cet4_major::getLevel, college).eq(Cet4_major::getState,"在校").eq(Cet4_major::getEntrydate, entryDate);
|
||||||
|
allStudent = cet4_majorMapper.selectCount(Cet4_majorQW);
|
||||||
} else if (major.equals("")) {
|
} else if (major.equals("")) {
|
||||||
Cet_4QW.eq(Cet_4::getCollege, college).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i));
|
Cet_4QW.eq(Cet_4::getCollege, college).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i));
|
||||||
|
//查询该年级的学院在籍学生
|
||||||
|
Cet4_majorQW.clear();
|
||||||
|
Cet4_majorQW.select(Cet4_major::getId).eq(Cet4_major::getCollege, college).eq(Cet4_major::getState,"在校").eq(Cet4_major::getEntrydate, entryDate);
|
||||||
|
allStudent = cet4_majorMapper.selectCount(Cet4_majorQW);
|
||||||
} else {
|
} else {
|
||||||
|
//查询该年级的学院专业在籍学生
|
||||||
Cet_4QW.eq(Cet_4::getCollege, college).eq(Cet_4::getMajorname, major).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i));
|
Cet_4QW.eq(Cet_4::getCollege, college).eq(Cet_4::getMajorname, major).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i));
|
||||||
|
Cet4_majorQW.clear();
|
||||||
|
Cet4_majorQW.select(Cet4_major::getId).eq(Cet4_major::getCollege, college).eq(Cet4_major::getState,"在校").eq(Cet4_major::getMajorname, major).eq(Cet4_major::getEntrydate, entryDate);
|
||||||
|
allStudent = cet4_majorMapper.selectCount(Cet4_majorQW);
|
||||||
}
|
}
|
||||||
List<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW);
|
List<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW);
|
||||||
|
int pass = 0;
|
||||||
if (!Cet_4eEntrydate.isEmpty()) {
|
if (!Cet_4eEntrydate.isEmpty()) {
|
||||||
for (Map<String, Object> map : Cet_4eEntrydate) {
|
for (Map<String, Object> map : Cet_4eEntrydate) {
|
||||||
String str = (String) map.get("id");
|
String str = (String) map.get("id");
|
||||||
if (!map.containsKey(str)) {
|
if ((int) map.get("result") >= 425) {
|
||||||
if ((int) map.get("result") >= 425) {
|
attendMap4.put(str, 1);
|
||||||
attendMap4.put(str, 1);
|
} else {
|
||||||
} else {
|
if (!attendMap4.containsKey(str)) {//排除已经通过的人
|
||||||
attendMap4.put(str, 0);
|
attendMap4.put(str, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -251,7 +279,7 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
|
||||||
passNew4[i] = 0;
|
passNew4[i] = 0;
|
||||||
}
|
}
|
||||||
//打印
|
//打印
|
||||||
// System.out.println("每个批次参加四级:" + attendNumber4[i] + ", 每个批次新通过:" + passNew4[i] + ", 累计通过:" + passNumber[i] + ", 参加四级:" + attendMap4.size());
|
System.out.println("第" + batchList.get(i) + "个批次参加考试的学生:" + attendNumber4[i] + ", 每个批次新通过:" + passNew4[i] + ", 累计通过:" + passNumber[i] + ", 参加四级:" + allStudent);
|
||||||
}
|
}
|
||||||
//保留三位小数
|
//保留三位小数
|
||||||
DecimalFormat df = new DecimalFormat("#.###");
|
DecimalFormat df = new DecimalFormat("#.###");
|
||||||
|
@ -260,14 +288,27 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
|
||||||
//遍历批次分年级
|
//遍历批次分年级
|
||||||
for (int i = 0; i < n; i += 2) {
|
for (int i = 0; i < n; i += 2) {
|
||||||
JSONObject json = new JSONObject();
|
JSONObject json = new JSONObject();
|
||||||
//每个年级的参加人数
|
//每个年级的参加人数, 每个年级的新通过人数
|
||||||
double attendNumber = attendNumber4[i] + attendNumber4[i + 1];
|
double attendNumber, passNew;
|
||||||
//每个年级的新通过人数
|
|
||||||
double passNew = passNew4[i] + passNew4[i + 1];
|
|
||||||
//每个年级的累计通过率保留三位小数
|
//每个年级的累计通过率保留三位小数
|
||||||
double passRate = passNumber[i + 1] / (double) attendMap4.size();
|
double passRate;
|
||||||
|
//每个年级的批次
|
||||||
|
JSONArray batchsGrade = new JSONArray();
|
||||||
|
// 检查是否到达数组的最后一个元素
|
||||||
|
if (i == n - 1) {
|
||||||
|
attendNumber = attendNumber4[i];
|
||||||
|
passNew = passNew4[i];
|
||||||
|
passRate = passNumber[i] / (double) allStudent;
|
||||||
|
batchsGrade.add(batchList.get(i));
|
||||||
|
} else {
|
||||||
|
attendNumber = attendNumber4[i] + attendNumber4[i + 1];
|
||||||
|
passNew = passNew4[i] + passNew4[i + 1];
|
||||||
|
passRate = passNumber[i + 1] / (double) allStudent;
|
||||||
|
batchsGrade.add(batchList.get(i) + " + " + batchList.get(i + 1));
|
||||||
|
}
|
||||||
//写入json
|
//写入json
|
||||||
json.put("grade", grade[i / 2]);
|
json.put("grade", grade[i / 2]);
|
||||||
|
json.put("batch", batchsGrade);
|
||||||
json.put("attendNumber", attendNumber);
|
json.put("attendNumber", attendNumber);
|
||||||
json.put("passNumber", passNew);
|
json.put("passNumber", passNew);
|
||||||
json.put("passRate", df.format(passRate));
|
json.put("passRate", df.format(passRate));
|
||||||
|
@ -275,12 +316,13 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
|
||||||
}
|
}
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
result.put("cet4", list);
|
result.put("cet4", list);
|
||||||
result.put("total", attendMap4.size());
|
result.put("total", allStudent);
|
||||||
return Result.ok(result);
|
return Result.ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result<JSONObject> getTest() {
|
public Result<JSONObject> getTest() {
|
||||||
|
//将专业表信息写入四级表
|
||||||
//获取所有参加四级学生list
|
//获取所有参加四级学生list
|
||||||
LambdaQueryWrapper<Cet4_major> cet4_majorQW = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<Cet4_major> cet4_majorQW = new LambdaQueryWrapper<>();
|
||||||
List<Cet_4old> list = cet4oldMapper.selectList(null);
|
List<Cet_4old> list = cet4oldMapper.selectList(null);
|
||||||
|
@ -290,7 +332,7 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
|
||||||
|
|
||||||
// 批量查询专业信息
|
// 批量查询专业信息
|
||||||
cet4_majorQW.in(Cet4_major::getId, idList);
|
cet4_majorQW.in(Cet4_major::getId, idList);
|
||||||
cet4_majorQW.select(Cet4_major::getId, Cet4_major::getMajorname, Cet4_major::getLevel);
|
cet4_majorQW.select(Cet4_major::getId, Cet4_major::getMajorname, Cet4_major::getLevel, Cet4_major::getState, Cet4_major::getEntrydate);
|
||||||
List<Map<String, Object>> mapList = cet4_majorMapper.selectMaps(cet4_majorQW);
|
List<Map<String, Object>> mapList = cet4_majorMapper.selectMaps(cet4_majorQW);
|
||||||
|
|
||||||
// 将专业信息写入学生对象
|
// 将专业信息写入学生对象
|
||||||
|
@ -300,6 +342,7 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
|
||||||
));
|
));
|
||||||
int temp = 0;
|
int temp = 0;
|
||||||
List<Cet_4> cet4List = new ArrayList<>();
|
List<Cet_4> cet4List = new ArrayList<>();
|
||||||
|
//以当前所在年级为入学年份
|
||||||
for (Cet_4old cet4old : list) {
|
for (Cet_4old cet4old : list) {
|
||||||
Map<String, Object> map_major = idToMap.get(cet4old.getId());
|
Map<String, Object> map_major = idToMap.get(cet4old.getId());
|
||||||
Cet_4 cet4 = new Cet_4();
|
Cet_4 cet4 = new Cet_4();
|
||||||
|
@ -308,19 +351,20 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
|
||||||
cet4.setCollege(cet4old.getCollege());
|
cet4.setCollege(cet4old.getCollege());
|
||||||
cet4.setResult(cet4old.getResult());
|
cet4.setResult(cet4old.getResult());
|
||||||
cet4.setBatch(cet4old.getBatch());
|
cet4.setBatch(cet4old.getBatch());
|
||||||
cet4.setEntrydate(cet4old.getEntrydate());
|
cet4.setEntrydate((String) map_major.get("entrydate"));
|
||||||
cet4.setListen(cet4old.getListen());
|
cet4.setListen(cet4old.getListen());
|
||||||
cet4.setReading(cet4old.getReading());
|
cet4.setReading(cet4old.getReading());
|
||||||
cet4.setWriting(cet4old.getWriting());
|
cet4.setWriting(cet4old.getWriting());
|
||||||
cet4.setMajorname((String) map_major.get("majorname"));
|
cet4.setMajorname((String) map_major.get("majorname"));
|
||||||
cet4.setLevel((String) map_major.get("level"));
|
cet4.setLevel((String) map_major.get("level"));
|
||||||
|
cet4.setState((String) map_major.get("state"));
|
||||||
cet4List.add(cet4);
|
cet4List.add(cet4);
|
||||||
System.out.println(temp++ + ",id:" + cet4.getId() + " ,majorname:" + cet4.getMajorname() + " ,level:" + cet4.getLevel());
|
System.out.println(temp++ + ",id:" + cet4.getId() + " ,majorname:" + cet4.getMajorname() + " ,level:" + cet4.getLevel() + " ,state:" + cet4.getState());
|
||||||
}
|
}
|
||||||
System.out.println(cet4List.size());
|
System.out.println(cet4List.size());
|
||||||
// 批量更新
|
// 批量更新
|
||||||
try {
|
try {
|
||||||
saveBatch(cet4List, 1000);
|
saveBatch(cet4List, 2000);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
@ -332,23 +376,23 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
|
||||||
|
|
||||||
// @Override
|
// @Override
|
||||||
// public Result<JSONObject> getTest() {
|
// public Result<JSONObject> getTest() {
|
||||||
|
// //去除不在学籍表中的学生
|
||||||
// LambdaQueryWrapper<Cet4_major> Cet4_majorQW = new LambdaQueryWrapper<>();
|
// LambdaQueryWrapper<Cet4_major> Cet4_majorQW = new LambdaQueryWrapper<>();
|
||||||
// Cet4_majorQW.select(Cet4_major::getId);
|
// Cet4_majorQW.select(Cet4_major::getId);
|
||||||
// List<Object> list = cet4_majorMapper.selectObjs(Cet4_majorQW);
|
// List<Object> list = cet4_majorMapper.selectObjs(Cet4_majorQW);
|
||||||
// System.out.println(list.size());//所有符合的学号
|
// System.out.println("所有符合的学号:"+list.size());//所有符合的学号
|
||||||
// LambdaQueryWrapper<Cet_4> Cet_4QW = new LambdaQueryWrapper<>();
|
// LambdaQueryWrapper<Cet_4> Cet_4QW = new LambdaQueryWrapper<>();
|
||||||
// Cet_4QW.select(Cet_4::getId);
|
// Cet_4QW.select(Cet_4::getId);
|
||||||
// List<Object> list1 = cet4Mapper.selectObjs(Cet_4QW);
|
// List<Object> list1 = cet4Mapper.selectObjs(Cet_4QW);
|
||||||
// System.out.println(list1.size());//所有参加过四级考试的学生
|
// System.out.println("所有参加过四级考试的学生:"+list1.size());//所有参加过四级考试的学生
|
||||||
// //删除所有参加过四级考试的学生中不符合的学号
|
// //删除所有参加过四级考试的学生中不符合的学号
|
||||||
// List<Object> notin = new ArrayList<>();
|
// List<Object> notin = new ArrayList<>();
|
||||||
// for (Object obj : list1) {
|
// for (Object obj : list1) {
|
||||||
// if (!list.contains(obj)) {
|
// if (!list.contains(obj)) {
|
||||||
// notin.add(obj);
|
// notin.add(obj);
|
||||||
// System.out.println(obj);
|
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// System.out.println(notin.size());
|
// System.out.println("不符合的学号:"+notin.size());//不符合的学号
|
||||||
// //批量删除list1中notin的学号
|
// //批量删除list1中notin的学号
|
||||||
// Cet_4QW.clear();
|
// Cet_4QW.clear();
|
||||||
// Cet_4QW.in(Cet_4::getId, notin);
|
// Cet_4QW.in(Cet_4::getId, notin);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
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;
|
||||||
|
|
||||||
|
@ -10,12 +11,14 @@ 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.Cet4_majorMapper;
|
||||||
import org.jeecg.modules.mapper.Cet_4Mapper;
|
import org.jeecg.modules.mapper.Cet_4Mapper;
|
||||||
|
import org.jeecg.modules.service.CenterService;
|
||||||
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;
|
||||||
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 javax.annotation.Resource;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
@ -34,9 +37,12 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
Cet_4Mapper cet4Mapper;
|
Cet_4Mapper cet4Mapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
Cet4_majorMapper cet4_MajorMapper;
|
Cet4_majorMapper cet4_MajorMapper;
|
||||||
|
@Resource
|
||||||
|
private CenterService centerService;
|
||||||
|
@Resource
|
||||||
|
private Cet4_majorMapper cet4_majorMapper;
|
||||||
|
|
||||||
public Result<JSONObject> getRateByCollege(String college, String major) {
|
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<>();
|
||||||
|
@ -50,7 +56,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
queryWrapper.orderByAsc(Cet_4::getBatch);
|
queryWrapper.orderByAsc(Cet_4::getBatch);
|
||||||
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,LinkedHashMap::new,Collectors.toList()));
|
Map<Date, List<Cet_4>> collect = result.stream().collect(Collectors.groupingBy(Cet_4::getBatch, LinkedHashMap::new, Collectors.toList()));
|
||||||
|
|
||||||
for (Map.Entry<Date, List<Cet_4>> entry : collect.entrySet()) {
|
for (Map.Entry<Date, List<Cet_4>> entry : collect.entrySet()) {
|
||||||
double sum;
|
double sum;
|
||||||
|
@ -69,75 +75,211 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
String format = sdf.format(key);
|
String format = sdf.format(key);
|
||||||
jsonObject.put(format, res);
|
jsonObject.put(format, res);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result.OK(jsonObject);
|
return Result.OK(jsonObject);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Result<JSONObject> getRateByBatch(String college, String batchStr) {
|
// public Result<JSONObject> getRateByBatch(String college, String entrydate) {
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
// 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<>());
|
||||||
|
//
|
||||||
|
// 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) {
|
||||||
|
//获取所有batch
|
||||||
|
JSONObject batch = centerService.getBatch();
|
||||||
|
JSONArray batchsArray = batch.getJSONArray("batches");
|
||||||
|
//转换为String数组
|
||||||
|
String[] batchs = new String[batchsArray.size()];
|
||||||
|
for (int i = 0; i < batchsArray.size(); i++) {
|
||||||
|
batchs[i] = batchsArray.getJSONObject(i).getString("value");
|
||||||
}
|
}
|
||||||
JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
|
//根据entrydate转换为入学年份之后的八次list
|
||||||
|
List<String> batchList = new ArrayList<>();
|
||||||
LambdaQueryWrapper<Cet_4> queryWrapper = new LambdaQueryWrapper<>();
|
for (int i = 0; i < batchs.length; i++) {
|
||||||
//构造查询条件
|
if (batchList.size() >= 8) {
|
||||||
Map<String, List<Cet_4>> collect = new HashMap<>();
|
break;
|
||||||
//根据批次查人数
|
}
|
||||||
if (college.equals("全校")) {
|
String value = batchs[i];
|
||||||
queryWrapper.eq(Cet_4::getBatch, batch).ge(Cet_4::getResult, 425);
|
//获取入学年份之后的批次
|
||||||
List<Cet_4> result = cet4Mapper.selectList(queryWrapper);
|
if (Integer.parseInt(value.substring(0, 4)) > Integer.parseInt(entryDate)) {
|
||||||
collect = result.stream().collect(Collectors.groupingBy(Cet_4::getCollege));
|
batchList.add(value);
|
||||||
} else {
|
} else if (Integer.parseInt(value.substring(0, 4)) == Integer.parseInt(entryDate)) {
|
||||||
queryWrapper.eq(Cet_4::getCollege, college).eq(Cet_4::getBatch, batch).ge(Cet_4::getResult, 425);
|
if (Integer.parseInt(value.substring(5, 7)) > 9) {
|
||||||
List<Cet_4> result = cet4Mapper.selectList(queryWrapper);
|
batchList.add(value);
|
||||||
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的值进行排序
|
int n = batchList.size();//批次数
|
||||||
List<Map.Entry<String, Object>> list = new ArrayList<>(jsonObject.entrySet());
|
//每个批次获取数据
|
||||||
Collections.sort(list, (o1, o2) -> (double) o1.getValue() > (double) o2.getValue() ? -1 : 1);
|
LambdaQueryWrapper<Cet_4> Cet_4QW = new LambdaQueryWrapper<>();
|
||||||
jsonObject.clear();
|
//获取全部在籍学生
|
||||||
|
LambdaQueryWrapper<Cet4_major> Cet4_majorQW = new LambdaQueryWrapper<>();
|
||||||
|
///学院/专业的全部在籍学生
|
||||||
|
long allStudent = 0;
|
||||||
|
JSONArray ans = new JSONArray();
|
||||||
|
//如果是全校,获取每个学院的数据
|
||||||
|
if (college.equals("全校")) {
|
||||||
|
//获取所有学院列表
|
||||||
|
LambdaQueryWrapper<Cet_4> collegeQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
collegeQueryWrapper.select(Cet_4::getCollege).groupBy(Cet_4::getCollege);
|
||||||
|
List<Object> collegeList = cet4Mapper.selectObjs(collegeQueryWrapper);
|
||||||
|
//查某个入学年级的所有学院
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
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")));
|
||||||
|
|
||||||
for (Map.Entry<String, Object> stringObjectEntry : list) {
|
//对于每个学院,获取数据
|
||||||
jsonObject.put(stringObjectEntry.getKey(), stringObjectEntry.getValue());
|
for (Object collegeName : collegeList) {
|
||||||
|
if (collegeSet.contains(collegeName)) {
|
||||||
|
//所有参加过四级考试的学生
|
||||||
|
Map<String, Integer> attendMap4 = new HashMap<>();
|
||||||
|
//获取该学院在籍学生数量
|
||||||
|
allStudent = allStudentMap.getOrDefault(collegeName, 0L);
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
//一次性获取所有批次的数据
|
||||||
|
List<Map<String, Object>> Cet_4eEntrydate = allBatchMap.get(collegeName);
|
||||||
|
for (Map<String, Object> map : Cet_4eEntrydate) {
|
||||||
|
String str = (String) map.get("id");
|
||||||
|
if ((int) map.get("result") >= 425) {
|
||||||
|
attendMap4.put(str, 1);
|
||||||
|
} else {
|
||||||
|
if (!attendMap4.containsKey(str)) {//排除已经通过的人
|
||||||
|
attendMap4.put(str, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//累计通过的人数
|
||||||
|
int passNumber = (int) attendMap4.values().stream().filter(value -> value == 1).count();
|
||||||
|
//每个年级的累计通过率保留三位小数
|
||||||
|
double passRate = passNumber / (double) allStudent;
|
||||||
|
//保留三位小数
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
//若为转专业的则剔除
|
||||||
|
List<Object> majorSet = cet4_MajorMapper.selectObjs(cet4MajorQW);
|
||||||
|
// System.out.println("专业:" + majorList);
|
||||||
|
|
||||||
|
//对于每个专业,获取数据
|
||||||
|
for (Object majorName : majorList) {
|
||||||
|
if (majorSet.contains(majorName)) {
|
||||||
|
//所有参加过四级考试的学生
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
List<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW);
|
||||||
|
for (Map<String, Object> map : Cet_4eEntrydate) {
|
||||||
|
String str = (String) map.get("id");
|
||||||
|
if ((int) map.get("result") >= 425) {
|
||||||
|
attendMap4.put(str, 1);
|
||||||
|
} else {
|
||||||
|
if (!attendMap4.containsKey(str)) {//排除已经通过的人
|
||||||
|
attendMap4.put(str, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//累计通过的人数
|
||||||
|
int passNumber = (int) attendMap4.values().stream().filter(value -> value == 1).count();
|
||||||
|
//每个年级的累计通过率保留三位小数
|
||||||
|
double passRate = passNumber / (double) allStudent;
|
||||||
|
//保留三位小数
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return Result.OK(jsonObject);
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("data", ans);
|
||||||
|
return Result.ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
private long getNumCollege(String college, Date batch) {
|
private long getNumCollege(String college, Date batch) {
|
||||||
|
|
Loading…
Reference in New Issue