新增成绩分析页面
This commit is contained in:
parent
d5c7172fed
commit
f23a1dd5dd
|
@ -176,6 +176,10 @@ public class Cet_4Controller extends JeecgController<Cet_4, ICet_4Service> {
|
||||||
public Result<JSONObject> loadImportDataList() {
|
public Result<JSONObject> loadImportDataList() {
|
||||||
return cet_4Service.loadImportDataList();
|
return cet_4Service.loadImportDataList();
|
||||||
}
|
}
|
||||||
|
@RequestMapping("analyze")
|
||||||
|
public Result<JSONObject> analyze(@RequestBody JSONObject webData) {
|
||||||
|
return cet_4Service.getAnalyze(webData);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,4 +43,7 @@ public interface ICet_4Service extends IService<Cet_4> {
|
||||||
Result<JSONObject> loadImportDataList();
|
Result<JSONObject> loadImportDataList();
|
||||||
|
|
||||||
List<JSONObject> getJsonObjects(List<Map<String, Object>> list);
|
List<JSONObject> getJsonObjects(List<Map<String, Object>> list);
|
||||||
|
|
||||||
|
Result<JSONObject> getAnalyze(JSONObject webData);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,9 +3,9 @@ package org.jeecg.modules.service.impl;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
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;
|
||||||
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
import org.jeecg.modules.dto.getRateByEntryDateDto;
|
import org.jeecg.modules.dto.getRateByEntryDateDto;
|
||||||
|
@ -23,10 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
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;
|
||||||
|
@ -125,7 +122,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
queryWrapper.ge(Cet_4::getResult, 425);
|
queryWrapper.ge(Cet_4::getResult, 425);
|
||||||
List<Cet_4> passedList = cet4Mapper.selectList(queryWrapper);
|
List<Cet_4> passedList = cet4Mapper.selectList(queryWrapper);
|
||||||
passedList = passedList.stream().filter(e -> trueEntryDate.contains(e.getEntrydate())).collect(Collectors.toList());
|
passedList = passedList.stream().filter(e -> trueEntryDate.contains(e.getEntrydate())).collect(Collectors.toList());
|
||||||
if(college.equals("全校")){
|
if (college.equals("全校")) {
|
||||||
collect = passedList.stream().collect(Collectors.groupingBy(Cet_4::getCollege));
|
collect = passedList.stream().collect(Collectors.groupingBy(Cet_4::getCollege));
|
||||||
} else {
|
} else {
|
||||||
collect = passedList.stream()
|
collect = passedList.stream()
|
||||||
|
@ -142,11 +139,11 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
String rate = decimalFormat.format(passRateSum);
|
String rate = decimalFormat.format(passRateSum);
|
||||||
double res;
|
double res;
|
||||||
try {
|
try {
|
||||||
res= Double.parseDouble(rate);
|
res = Double.parseDouble(rate);
|
||||||
|
|
||||||
}catch (NumberFormatException e){
|
} catch (NumberFormatException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
res=0;
|
res = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
// double res = Double.parseDouble(rate);
|
// double res = Double.parseDouble(rate);
|
||||||
|
@ -187,7 +184,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
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());
|
||||||
}
|
}
|
||||||
JSONObject gradeByBatch = getGradeByBatch(batch,college);
|
JSONObject gradeByBatch = getGradeByBatch(batch, college);
|
||||||
resultData.put("data", jsonObject);
|
resultData.put("data", jsonObject);
|
||||||
resultData.put("gradeData", gradeByBatch);
|
resultData.put("gradeData", gradeByBatch);
|
||||||
System.out.println(resultData);
|
System.out.println(resultData);
|
||||||
|
@ -662,7 +659,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public List<JSONObject> getJsonObjects(List<Map<String, Object>> list) {
|
public List<JSONObject> getJsonObjects(List<Map<String, Object>> list) {
|
||||||
List<JSONObject> res = new ArrayList<>();
|
List<JSONObject> res = new ArrayList<>();
|
||||||
for (Map<String, Object> map : list) {
|
for (Map<String, Object> map : list) {
|
||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
@ -674,6 +671,61 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result<JSONObject> getAnalyze(JSONObject webData) {
|
||||||
|
String college = webData.getString("college");
|
||||||
|
String major = webData.getString("major");
|
||||||
|
//只返回最新批次的数据
|
||||||
|
QueryWrapper<Cet_4> getMaxBatch = Wrappers.query();
|
||||||
|
getMaxBatch
|
||||||
|
.select("MAX(batch) as batch");
|
||||||
|
Cet_4 maxBatch = getOne(getMaxBatch);
|
||||||
|
Date batch = maxBatch.getBatch();
|
||||||
|
LambdaQueryWrapper<Cet_4> queryWrapper = Wrappers.lambdaQuery(Cet_4.class)
|
||||||
|
.eq(!Objects.equals(college, "全校"),Cet_4::getCollege, college)
|
||||||
|
.eq(!major.isEmpty(), Cet_4::getMajorname, major)
|
||||||
|
.eq(Cet_4::getBatch, batch);
|
||||||
|
List<Cet_4> list = list(queryWrapper);
|
||||||
|
JSONObject rateByLastBatch = getRateByLastBatch(list);
|
||||||
|
JSONObject scoreRateByLastBatch = getScoreRateByLastBatch(list);
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("rateByBatch", rateByLastBatch);
|
||||||
|
result.put("scoreByBatch", scoreRateByLastBatch);
|
||||||
|
return Result.ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
//400-425占比
|
||||||
|
public JSONObject getRateByLastBatch(List<Cet_4> list) {
|
||||||
|
int total = list.size();
|
||||||
|
int count = (int) list.stream().filter(e -> e.getResult() >= 400 && e.getResult() < 425).count();
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
double rate = count / (double) total;
|
||||||
|
rate=rate*100;
|
||||||
|
DecimalFormat df = new DecimalFormat("#.##");
|
||||||
|
jsonObject.put("rate", df.format(rate));
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
//听力阅读等各个模块占比
|
||||||
|
public JSONObject getScoreRateByLastBatch(List<Cet_4> list) {
|
||||||
|
int total = list.size();
|
||||||
|
int listen=0;
|
||||||
|
int read=0;
|
||||||
|
int write=0;
|
||||||
|
//求平均数
|
||||||
|
for (Cet_4 cet_4 : list) {
|
||||||
|
listen+=cet_4.getListen();
|
||||||
|
read+=cet_4.getReading();
|
||||||
|
write+=cet_4.getWriting();
|
||||||
|
}
|
||||||
|
DecimalFormat df = new DecimalFormat("#.##");
|
||||||
|
JSONObject jsonObject=new JSONObject();
|
||||||
|
jsonObject.put("listen",df.format(listen/(double)total));
|
||||||
|
jsonObject.put("read",df.format(read/(double)total));
|
||||||
|
jsonObject.put("write",df.format(write/(double)total));
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 依据学生id和姓名获取四级数据
|
* 依据学生id和姓名获取四级数据
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue