Commit a27a15bc authored by licc's avatar licc

优化查询方案

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