Commit a27a15bc authored by licc's avatar licc

优化查询方案

parent 2c4e31c7
......@@ -113,6 +113,9 @@
<if test="downGrade != null">
and lowest_mark >#{downGrade}
</if>
<if test="type != null">
and type =#{type}
</if>
<if test="volunteerIds != null and volunteerIds.size > 0 ">
and id NOT IN
<foreach collection="volunteerIds" index="index" item="id" separator="," open="(" close=")">
......
......@@ -158,7 +158,7 @@ public class ProfessionServiceImpl extends ServiceImpl<ProfessionMapper, Profess
return SchemeTypeEnums.JUNIOR_COLLEGE_SPORTS.getCode();
}
//type == 4 体育考生
//type == 4 文学编导
if (StudentType.LITERATURE_STUDENT.getCode().equals(type)) {
//获取文学编导本科一批录取规则
AdmissionRule firstRule = admissionRuleMapper.getByType(SchemeTypeEnums.UNDERGRADUATE_LITERATURE.getCode());
......
......@@ -241,17 +241,17 @@ public class SchemeServiceImpl extends ServiceImpl<SchemeMapper, SchemeInfo> imp
list = getVolunteerList(list, totalResult);
}
//6保存用户方案记录、志愿之间的关联关系,扣减查询次数
R<Integer> bool = volunteerManager.saveUserVolunteer(user, list, scoreInfo, queryVo.getBigMajorNames());
if (null != bool && bool.getCode() == 500) {
return R.error("保存方案查询记录失败!");
}
// //6保存用户方案记录、志愿之间的关联关系,扣减查询次数
// R<Integer> bool = volunteerManager.saveUserVolunteer(user, list, scoreInfo, queryVo.getBigMajorNames());
// if (null != bool && bool.getCode() == 500) {
// return R.error("保存方案查询记录失败!");
// }
//排序
list.sort(Comparator.comparing(Volunteer::getLowestMark).reversed());
volunteerVo.setUserId(user.getId());
assert bool != null;
volunteerVo.setRecordId(bool.getData());
// assert bool != null;
// volunteerVo.setRecordId(bool.getData());
volunteerVo.setVolunteers(list);
volunteerVo.setTotal(list.size());
return R.ok(volunteerVo);
......@@ -337,73 +337,39 @@ public class SchemeServiceImpl extends ServiceImpl<SchemeMapper, SchemeInfo> imp
double firstCulture, double secondCulture) {
double cultureMax = firstRule.getCultureMax();
double cultureMin = firstRule.getCultureMin();
double downMark = firstRule.getDownMark();
//考生的分数在本科一批中
List<Volunteer> list = new ArrayList<>();
Map<String, Object> map = new HashMap<>(16);
map.put("classNames", classNames);
map.put("professionNames", professionNames);
if (firstCulture < cultureMax && firstCulture > cultureMin) {
//判断分数是否小于对低分与向下浮动分数之和
double upMark = firstRule.getUpMark();
double upGrade = firstCulture + upMark;
if (firstCulture < cultureMax && firstCulture >= cultureMin) {
double upGrade = firstCulture + firstRule.getUpMark();
double downGrade = firstCulture - firstRule.getDownMark();
map.put("upGrade", upGrade);
map.put("type", SchemeTypeEnums.UNDERGRADUATE_CULTURE.getCode());
double downGrade;
if (firstCulture < cultureMin + downMark) {
downGrade = cultureMin;
map.put("downGrade", downGrade);
list = volunteerMapper.getVolunteerList(map);
//如果数据不满足最大数量,取不限专业重最低分补充
if (list.size() < firstRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, firstRule.getNumber(), upGrade, downGrade);
list.addAll(fillList);
}
} else {
downGrade = firstCulture - firstRule.getDownMark();
map.put("downGrade", downGrade);
list = volunteerMapper.getVolunteerList(map);
if (list.size() < firstRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, firstRule.getNumber(), upGrade, downGrade);
list.addAll(fillList);
}
map.put("downGrade", downGrade);
list = volunteerMapper.getVolunteerList(map);
if (list.size() < firstRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, firstRule.getNumber(), upGrade, downGrade,
SchemeTypeEnums.UNDERGRADUATE_CULTURE.getCode());
list.addAll(fillList);
}
} else {
//考生的分数是在专科一批中
//判断分数是否小于对低分与向下浮动分数之和
double upMark = secondRule.getUpMark();
double upGrade = secondCulture + upMark;
double secondCultureMin = secondRule.getCultureMin();
if (upGrade > secondRule.getCultureMax()) {
upGrade = secondRule.getCultureMax();
}
double upGrade = secondCulture + secondRule.getUpMark();
double downGrade = secondCulture - secondRule.getDownMark();
map.put("upGrade", upGrade);
map.put("type", SchemeTypeEnums.JUNIOR_COLLEGE_MAJOR.getCode());
map.put("downGrade", downGrade);
list = volunteerMapper.getVolunteerList(map);
double downGrade;
if (secondCulture < secondCultureMin + downMark) {
downGrade = secondCultureMin;
map.put("downGrade", downGrade);
list = volunteerMapper.getVolunteerList(map);
//如果数据不满足最大数量,取不限专业最低分补充
if (list.size() < secondRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade);
list.addAll(fillList);
}
} else {
downGrade = secondCulture - secondRule.getDownMark();
map.put("downGrade", downGrade);
list = volunteerMapper.getVolunteerList(map);
//如果数据不满足最大数量,取不限专业最低分补充
if (list.size() < secondRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade);
list.addAll(fillList);
}
//如果数据不满足最大数量,取不限专业最低分补充
if (list.size() < secondRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade,
SchemeTypeEnums.JUNIOR_COLLEGE_MAJOR.getCode());
list.addAll(fillList);
}
}
return list;
......@@ -445,7 +411,8 @@ public class SchemeServiceImpl extends ServiceImpl<SchemeMapper, SchemeInfo> imp
//如果数据不满足最大数量,取不限专业最低分补充
if (list.size() < secondRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, firstRule.getNumber(), upGrade, downGrade);
List<Volunteer> fillList = fillUpVolunteer(list, firstRule.getNumber(), upGrade, downGrade,
SchemeTypeEnums.UNDERGRADUATE_ARTS.getCode());
list.addAll(fillList);
}
return list;
......@@ -473,7 +440,8 @@ public class SchemeServiceImpl extends ServiceImpl<SchemeMapper, SchemeInfo> imp
//如果数据不满足最大数量,取不限专业最低分补充
if (list.size() < secondRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade);
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade,
SchemeTypeEnums.JUNIOR_COLLEGE_ARTS.getCode());
list.addAll(fillList);
}
}
......@@ -516,14 +484,15 @@ public class SchemeServiceImpl extends ServiceImpl<SchemeMapper, SchemeInfo> imp
//如果数据不满足最大数量,取不限专业最低分补充
if (list.size() < secondRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade);
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade,
SchemeTypeEnums.UNDERGRADUATE_LITERATURE.getCode());
list.addAll(fillList);
}
return list;
}
//科类比分 = 本年录取分 -去年录取分 + 考生分数
//科类比分 = 本年录取分 -去年录取分 + 考生分数
double cultureSecond = firstRule.getCurrentYearCulture() - firstRule.getCultureMin() + Double.parseDouble(queryVo.getCultureGrade());
double majorSecond = firstRule.getCurrentYearMajor() - firstRule.getProfessionMin() + Double.parseDouble(queryVo.getMajorGrade());
//计算综合成绩
......@@ -540,7 +509,8 @@ public class SchemeServiceImpl extends ServiceImpl<SchemeMapper, SchemeInfo> imp
//如果数据不满足最大数量,取不限专业最低分补充
if (list.size() < secondRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade);
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade,
SchemeTypeEnums.JUNIOR_COLLEGE_LITERATURE.getCode());
list.addAll(fillList);
}
}
......@@ -581,7 +551,8 @@ public class SchemeServiceImpl extends ServiceImpl<SchemeMapper, SchemeInfo> imp
//如果数据不满足最大数量,取不限专业最低分补充
if (list.size() < secondRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade);
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade,
SchemeTypeEnums.UNDERGRADUATE_SPORTS.getCode());
list.addAll(fillList);
}
return list;
......@@ -602,7 +573,8 @@ public class SchemeServiceImpl extends ServiceImpl<SchemeMapper, SchemeInfo> imp
//如果数据不满足最大数量,取不限专业最低分补充
if (list.size() < secondRule.getNumber()) {
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade);
List<Volunteer> fillList = fillUpVolunteer(list, secondRule.getNumber(), upGrade, downGrade,
SchemeTypeEnums.JUNIOR_COLLEGE_SPORTS.getCode());
list.addAll(fillList);
}
}
......@@ -667,7 +639,7 @@ public class SchemeServiceImpl extends ServiceImpl<SchemeMapper, SchemeInfo> imp
* @param min 最低分
* @return 集合
*/
private List<Volunteer> fillUpVolunteer(List<Volunteer> list, Integer number, double max, double min) {
private List<Volunteer> fillUpVolunteer(List<Volunteer> list, Integer number, double max, double min, Integer type) {
//已存在的志愿ids
List<Integer> volunteerIds = list.stream().map(Volunteer::getId).collect(Collectors.toList());
......@@ -679,6 +651,7 @@ public class SchemeServiceImpl extends ServiceImpl<SchemeMapper, SchemeInfo> imp
map.put("number", totalNumber);
map.put("upGrade", max);
map.put("downGrade", min);
map.put("type", type);
return volunteerMapper.getFillList(map);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment