新增根据专业查询接口
This commit is contained in:
parent
ffdc0848b1
commit
324cb24be3
|
@ -104,6 +104,10 @@ public class CenterController {
|
||||||
return cet4Service.getRateByBatch(college,batch);
|
return cet4Service.getRateByBatch(college,batch);
|
||||||
}else return null;
|
}else return null;
|
||||||
}
|
}
|
||||||
|
@PostMapping("/getRateByMajor")
|
||||||
|
public Result<JSONObject> getRateByMajor(@RequestBody JSONObject webData){
|
||||||
|
return cet4Service.getRateByMajor(webData);
|
||||||
|
}
|
||||||
@GetMapping("/getTest")
|
@GetMapping("/getTest")
|
||||||
public Result<JSONObject> getTest() {
|
public Result<JSONObject> getTest() {
|
||||||
return centerService.getTest();
|
return centerService.getTest();
|
||||||
|
|
|
@ -19,4 +19,5 @@ public interface ICet_4Service extends IService<Cet_4> {
|
||||||
|
|
||||||
Result<JSONObject> getRateByCollege(JSONObject webData);
|
Result<JSONObject> getRateByCollege(JSONObject webData);
|
||||||
|
|
||||||
|
Result<JSONObject> getRateByMajor(JSONObject webData);
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,9 +151,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
@Override
|
@Override
|
||||||
public Result<JSONObject> getRateByCollege(JSONObject webData) {
|
public Result<JSONObject> getRateByCollege(JSONObject webData) {
|
||||||
JSONArray colleges = webData.getJSONArray("college");
|
JSONArray colleges = webData.getJSONArray("college");
|
||||||
|
|
||||||
JSONArray entryDateArray = webData.getJSONArray("entrydate");
|
JSONArray entryDateArray = webData.getJSONArray("entrydate");
|
||||||
|
|
||||||
//获取所有batch
|
//获取所有batch
|
||||||
JSONObject batch = centerService.getBatch();
|
JSONObject batch = centerService.getBatch();
|
||||||
JSONArray batchsArray = batch.getJSONArray("batches");
|
JSONArray batchsArray = batch.getJSONArray("batches");
|
||||||
|
@ -164,9 +162,8 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
}
|
}
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
JSONObject oneEntryDate = new JSONObject();
|
JSONObject oneEntryDate = new JSONObject();
|
||||||
|
//遍历每个年级
|
||||||
for (Object entryDate : entryDateArray) {
|
for (Object entryDate : entryDateArray) {
|
||||||
|
|
||||||
//根据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++) {
|
||||||
|
@ -183,7 +180,6 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int n = batchList.size();//批次数
|
|
||||||
//每个批次获取数据
|
//每个批次获取数据
|
||||||
LambdaQueryWrapper<Cet_4> Cet_4QW = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<Cet_4> Cet_4QW = new LambdaQueryWrapper<>();
|
||||||
//获取全部在籍学生
|
//获取全部在籍学生
|
||||||
|
@ -319,6 +315,84 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
return Result.ok(result);
|
return Result.ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result<JSONObject> getRateByMajor(JSONObject webData) {
|
||||||
|
//通过学院和专业获取数据
|
||||||
|
JSONArray colleges = webData.getJSONArray("college");
|
||||||
|
JSONArray majors = webData.getJSONArray("major");
|
||||||
|
JSONArray entryDateArray = webData.getJSONArray("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 ans = new JSONObject();
|
||||||
|
//遍历每个学院的专业
|
||||||
|
for (int j = 0; j < colleges.size(); j++) {
|
||||||
|
//获取该学院专业的所有在籍学生
|
||||||
|
long allStudent = 0;
|
||||||
|
JSONArray majorAns = new JSONArray();
|
||||||
|
//遍历每个年级
|
||||||
|
for (Object entryDate : entryDateArray) {
|
||||||
|
//根据entrydate转换为入学年份之后的八次list
|
||||||
|
List<String> batchList = new ArrayList<>();
|
||||||
|
for (String s : batchs) {
|
||||||
|
if (batchList.size() >= 8) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
String value = s;
|
||||||
|
//获取入学年份之后的批次
|
||||||
|
if (Integer.parseInt(value.substring(0, 4)) > Integer.parseInt((String) entryDate)) {
|
||||||
|
batchList.add(value);
|
||||||
|
} else if (Integer.parseInt(value.substring(0, 4)) == Integer.parseInt((String) entryDate)) {
|
||||||
|
if (Integer.parseInt(value.substring(5, 7)) > 9) {
|
||||||
|
batchList.add(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//每个批次获取数据
|
||||||
|
LambdaQueryWrapper<Cet_4> Cet_4QW = new LambdaQueryWrapper<>();
|
||||||
|
//获取全部在籍学生
|
||||||
|
LambdaQueryWrapper<Cet4_major> Cet4_majorQW = new LambdaQueryWrapper<>();
|
||||||
|
Cet4_majorQW.eq(Cet4_major::getCollege, colleges.get(j)).eq(Cet4_major::getMajorname, majors.get(j)).eq(Cet4_major::getEntrydate, entryDate);
|
||||||
|
allStudent = cet4_majorMapper.selectCount(Cet4_majorQW);
|
||||||
|
//所有参加过四级考试的学生
|
||||||
|
Map<String, Integer> attendMap4 = new HashMap<>();
|
||||||
|
//一次性获取所有批次的数据
|
||||||
|
Cet_4QW.eq(Cet_4::getCollege, colleges.get(j)).eq(Cet_4::getMajorname, majors.get(j)).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;
|
||||||
|
passRate = passRate * 100;
|
||||||
|
//保留三位小数
|
||||||
|
DecimalFormat df = new DecimalFormat("#.#");
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
json.put("entryDate", entryDate);
|
||||||
|
json.put("passRate", df.format(passRate));
|
||||||
|
majorAns.add(json);
|
||||||
|
}
|
||||||
|
ans.put((String) majors.get(j), majorAns);
|
||||||
|
}
|
||||||
|
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) {
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue