FrontUniversitiesController.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516
  1. package com.ruoyi.web.controller.front;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.google.common.collect.Lists;
  4. import com.google.common.collect.Maps;
  5. import com.google.common.collect.Sets;
  6. import com.ruoyi.common.core.controller.BaseController;
  7. import com.ruoyi.common.core.domain.AjaxResult;
  8. import com.ruoyi.common.core.domain.AjaxResult2;
  9. import com.ruoyi.common.core.domain.entity.SysDictData;
  10. import com.ruoyi.common.core.domain.entity.SysUser;
  11. import com.ruoyi.common.core.page.TableDataInfo;
  12. import com.ruoyi.common.utils.SecurityUtils;
  13. import com.ruoyi.common.utils.StringUtils;
  14. import com.ruoyi.common.core.content.VistorContextHolder;
  15. import com.ruoyi.system.service.ISysDictTypeService;
  16. import com.ruoyi.syzy.domain.*;
  17. import com.ruoyi.syzy.dto.UniversitiesCondDTO;
  18. import com.ruoyi.syzy.dto.UniversityDetailDTO;
  19. import com.ruoyi.syzy.service.*;
  20. import com.ruoyi.util.ConstantUtil;
  21. import com.ruoyi.web.domain.Constant;
  22. import com.ruoyi.web.service.CommService;
  23. import com.ruoyi.web.service.VoluntaryService;
  24. import io.swagger.annotations.Api;
  25. import io.swagger.annotations.ApiOperation;
  26. import io.swagger.annotations.ApiParam;
  27. import org.apache.commons.collections.CollectionUtils;
  28. import org.apache.commons.lang3.math.NumberUtils;
  29. import org.apache.commons.lang3.tuple.Pair;
  30. import org.springframework.beans.factory.annotation.Autowired;
  31. import org.springframework.web.bind.annotation.*;
  32. import java.util.*;
  33. import java.util.stream.Collectors;
  34. import java.util.stream.Stream;
  35. @RestController
  36. @Api(tags = "前端-三库-院校库")
  37. @RequestMapping("front/university")
  38. public class FrontUniversitiesController extends BaseController {
  39. @Autowired
  40. private IBBusiWishUniversitiesImageService universitiesImageService;
  41. @Autowired
  42. private IBBusiWishUniversitiesEnrollBrochureService universitiesEnrollBrochureService;
  43. @Autowired
  44. private IBBusiWishUniversitiesService universitiesService;
  45. @Autowired
  46. private IBBusiWishUniversitiesRankingService universitiesRankingService;
  47. @Autowired
  48. public ISysDictTypeService dictTypeService;
  49. @Autowired
  50. private IBCustomerUniversitiesService customerUniversitiesService;
  51. @Autowired
  52. private VoluntaryService voluntaryService;
  53. @Autowired
  54. private IBBusiWishUniversitySubmitMarjorsService wishUniversitySubmitMarjorsService;
  55. @Autowired
  56. private IBBusiWishUniversitySubmitRecruitPlanService wishUniversitySubmitRecruitPlanService;
  57. @Autowired
  58. private CommService commService;
  59. private final Map<String, String> tierDescMap = Maps.newHashMap();
  60. public FrontUniversitiesController() {
  61. tierDescMap.put("1", "文化分280分以上");
  62. tierDescMap.put("2", "文化分270分以上");
  63. tierDescMap.put("3", "文化分260分以上");
  64. tierDescMap.put("4", "文化分250分以上");
  65. tierDescMap.put("5", "文化分240分以上");
  66. tierDescMap.put("6", "文化分230分以上");
  67. }
  68. @GetMapping("filters")
  69. @ApiOperation("00 院校列表数据筛选项")
  70. public AjaxResult filters() {
  71. String entranceType = ConstantUtil.getExamTypeData(VistorContextHolder.getExamType().title());
  72. JSONObject data = new JSONObject(true);
  73. data.put("locations", universitiesService.getLocations(entranceType));
  74. data.put("natureTypes", universitiesService.getNatureTypeCN(entranceType));//办学性质:公办民办
  75. data.put("types", universitiesService.getTypes(entranceType));//院校类别
  76. // data.put("levels", universitiesService.getLevels());
  77. data.put("features", universitiesService.getFeatures(entranceType));//等级
  78. data.put("bxTypes", universitiesService.getBxTypes(entranceType));//双高院校
  79. //竞争力星级
  80. Map<String,String> map = dictTypeService.selectDictDataByType("university_stars")
  81. .stream().collect(Collectors.toMap(t -> t.getDictValue(), SysDictData::getDictLabel));
  82. map.entrySet().stream().sorted(Map.Entry.comparingByKey());
  83. data.put("stars", map);
  84. //梯次
  85. Map<String,String> tierMap = dictTypeService.selectDictDataByType("tier_type")
  86. .stream().collect(Collectors.toMap(t -> t.getDictValue(), SysDictData::getDictLabel));
  87. map.entrySet().stream().sorted(Map.Entry.comparingByKey());
  88. data.put("tiers", tierMap);
  89. return AjaxResult.success(data);
  90. }
  91. @GetMapping("locations")
  92. @ApiOperation("00 院校列表数据筛选项-地域 回传location")
  93. public AjaxResult locations() {
  94. return AjaxResult.success(universitiesService.getLocations(ConstantUtil.getExamTypeData(VistorContextHolder.getExamType().title())));
  95. }
  96. @GetMapping("locations2")
  97. @ApiOperation("00 院校列表数据筛选项-地域 回传location和cityName")
  98. public AjaxResult locations2() {
  99. List<BBusiWishUniversities> list = universitiesService.selectBBusiWishUniversitiesLocations2(ConstantUtil.getExamTypeData(VistorContextHolder.getExamType().title()));
  100. // 按location分组,收集每个location下的cityName
  101. Map<String, Set<String>> locationCityMap = list.stream()
  102. .filter(item -> StringUtils.isNotBlank(item.getLocation()) && StringUtils.isNotBlank(item.getCityName()))
  103. .collect(Collectors.groupingBy(
  104. BBusiWishUniversities::getLocation,
  105. Collectors.mapping(
  106. BBusiWishUniversities::getCityName,
  107. Collectors.toSet()
  108. )
  109. ));
  110. // 构建返回数据
  111. List<Map<String, Object>> result = locationCityMap.entrySet().stream()
  112. .sorted(Map.Entry.comparingByKey())
  113. .map(entry -> {
  114. Map<String, Object> item = Maps.newHashMap();
  115. item.put("location", entry.getKey());
  116. // 将Set转为List并排序
  117. List<String> cityNames = entry.getValue().stream()
  118. .sorted()
  119. .collect(Collectors.toList());
  120. item.put("cityName", cityNames);
  121. return item;
  122. })
  123. .collect(Collectors.toList());
  124. return AjaxResult.success(result);
  125. }
  126. @GetMapping("natureTypes")
  127. @ApiOperation("00 院校列表数据筛选项-主管机构类型 回传natureTypeCN")
  128. public AjaxResult natureTypes() {
  129. return AjaxResult.success(universitiesService.getNatureTypeCN(ConstantUtil.getExamTypeData(VistorContextHolder.getExamType().title())));
  130. }
  131. @GetMapping("types")
  132. @ApiOperation("00 院校列表数据筛选项-院校类型 回传type")
  133. public AjaxResult types() {
  134. return AjaxResult.success(universitiesService.getTypes(ConstantUtil.getExamTypeData(VistorContextHolder.getExamType().title())));
  135. }
  136. @GetMapping("levels")
  137. @ApiOperation("00 院校列表数据筛选项-学历层次 回传level")
  138. public AjaxResult levels() {
  139. return AjaxResult.success(universitiesService.getLevels(ConstantUtil.getExamTypeData(VistorContextHolder.getExamType().title())));
  140. }
  141. @GetMapping("features")
  142. @ApiOperation("00 院校列表数据筛选项-院校类型 回传features")
  143. public AjaxResult features() {
  144. return AjaxResult.success(universitiesService.getFeatures(ConstantUtil.getExamTypeData(VistorContextHolder.getExamType().title())));
  145. }
  146. @GetMapping("listNoToken")
  147. @ApiOperation("01 院校列表")
  148. public TableDataInfo listNoToken(UniversitiesCondDTO cond, @ApiParam(value = "页数", example = "1") @RequestParam Integer pageNum,
  149. @ApiParam(value = "页大小", example = "15") @RequestParam Integer pageSize) {
  150. return getDataTable(getUniversitiesList(cond,null, pageNum, pageSize));
  151. }
  152. @GetMapping("listByTier")
  153. @ApiOperation("01 分级院校列表")
  154. public AjaxResult2<List<JSONObject>> listByTier(UniversitiesCondDTO cond) {
  155. String location = VistorContextHolder.getLocation();
  156. if(StringUtils.isNotBlank(location)){
  157. location = location+",全国";
  158. }
  159. if(StringUtils.isBlank(cond.getTiers())) {
  160. cond.setTiers("1,2,3,4,5,6,7,8");
  161. }
  162. List<JSONObject> tierList = Lists.newArrayList();
  163. List<BBusiWishUniversities> arr = getUniversitiesList(cond,location, -1, 15);
  164. Collections.sort(arr, new Comparator<BBusiWishUniversities>() {
  165. @Override
  166. public int compare(BBusiWishUniversities o1, BBusiWishUniversities o2) {
  167. int iRet;
  168. if(null == o1.getTierRank()) {
  169. if(null != o2.getTierRank()) {
  170. return 1;
  171. }
  172. } else if(null == o2.getTierRank()) {
  173. return -1;
  174. } else if(0 != (iRet = o1.getTierRank().compareTo(o2.getTierRank()))) {
  175. return iRet;
  176. }
  177. return o1.getCode().compareTo(o2.getCode());
  178. }
  179. });
  180. Map<Integer, List<BBusiWishUniversities>> tierMap = arr.stream().filter(t -> null != t.getTier())
  181. .collect(Collectors.groupingBy(BBusiWishUniversities::getTier, Collectors.toList()));
  182. List<SysDictData> tierTypeList = dictTypeService.selectDictDataByType("tier_type");
  183. Set<String> tierSet = Sets.newHashSet(Arrays.asList(cond.getTiers().split(",")));
  184. for(SysDictData dd : tierTypeList) {
  185. if(!tierSet.contains(dd.getDictValue())) {
  186. continue;
  187. }
  188. List<BBusiWishUniversities> uList = tierMap.get(NumberUtils.toInt(dd.getDictValue()));
  189. JSONObject tierUniversities = new JSONObject();
  190. tierUniversities.put("typeName", dd.getDictLabel());
  191. tierUniversities.put("typeValue", dd.getDictValue());
  192. tierUniversities.put("desc", tierDescMap.get(dd.getDictValue()));
  193. tierUniversities.put("list", uList.size() > 10 ? uList.subList(0, 10) : uList);
  194. tierList.add(tierUniversities);
  195. }
  196. return AjaxResult2.success(tierList);
  197. }
  198. @GetMapping("list")
  199. @ApiOperation("01 院校列表")
  200. public TableDataInfo list(UniversitiesCondDTO cond, @ApiParam(value = "页数", example = "1") @RequestParam Integer pageNum,
  201. @ApiParam(value = "页大小", example = "15") @RequestParam Integer pageSize) {
  202. String location = VistorContextHolder.getLocation();
  203. if(StringUtils.isNotBlank(location)){
  204. location = location+",全国";
  205. }
  206. return getDataTable(getUniversitiesList(cond,location, pageNum, pageSize));
  207. }
  208. public List<BBusiWishUniversities> getUniversitiesList(UniversitiesCondDTO cond,String location, Integer pageNum,Integer pageSize){
  209. if (StringUtils.isNumber(cond.getName())) {
  210. cond.setCode(cond.getName());
  211. cond.setName(null);
  212. }
  213. SysUser user = SecurityUtils.getLoginUser().getUser();
  214. cond.setEnrollLocation(user.getLocation());
  215. if (null != pageNum && pageNum >= 0) {
  216. startPage();
  217. }
  218. List<BBusiWishUniversities> arr;
  219. Integer planYear = voluntaryService.getPlanYear(user);
  220. if(Constant.EXAM_TYPE_ZG.equals(user.getExamType().title())) {
  221. //职高对口
  222. arr = universitiesService.selectMajorWishUniversitiesListSimpleByMap2(cond.toCondMap(planYear, user.getExamType().title(), user.getExamMajor(), user.getLocation(),cond.getTiers(),cond.getCityName())); // TODO MF
  223. } else {
  224. arr = universitiesService.selectMajorWishUniversitiesListSimpleByMap(cond.toCondMap(planYear, Constant.EXAM_TYPE_PG, null, user.getLocation(),cond.getTiers(),cond.getCityName()));
  225. }
  226. //处理院校星级竞争力
  227. arr.stream().forEach(t -> {
  228. if(StringUtils.isNotEmpty(t.getStar())){
  229. t.setStar(dictTypeService.getDictDataByType("university_stars",t.getStar()));
  230. }
  231. });
  232. return arr;
  233. }
  234. @GetMapping("detail")
  235. @ApiOperation("02 院校详情")
  236. public AjaxResult detail(@ApiParam("学校code") @RequestParam String code) {
  237. commService.requireVip();
  238. SysUser sysUser = SecurityUtils.getLoginUser().getUser();
  239. UniversityDetailDTO data = universitiesService.detail(code, voluntaryService.getPlanYear(sysUser));
  240. if(StringUtils.isNotEmpty(data.getBaseInfo().getStar())){
  241. data.getBaseInfo().setStar(dictTypeService.getDictDataByType("university_stars",data.getBaseInfo().getStar()));
  242. }
  243. Long universityId = data.getBaseInfo().getId();
  244. BCustomerUniversities cond = new BCustomerUniversities();
  245. cond.setUniversityId(universityId);
  246. cond.setCustomerCode(sysUser.getCode());
  247. cond.setStatus(1L);
  248. List<BCustomerUniversities> list = customerUniversitiesService.selectBCustomerUniversitiesList(cond);
  249. data.getBaseInfo().setCollected(CollectionUtils.isNotEmpty(list));
  250. this.saveUniversitiesClicks(code);
  251. if(Constant.EXAM_TYPE_ZG.equals(sysUser.getExamType().title())) {
  252. Integer examMajor = sysUser.getExamMajor();
  253. BBusiWishUniversitySubmitRecruitPlan planCond = new BBusiWishUniversitySubmitRecruitPlan();
  254. planCond.setUniversityId(universityId);
  255. planCond.setLocation(sysUser.getLocation());
  256. planCond.setLiberalScience(examMajor);
  257. List<UniversityDetailDTO.WishPlan> planList = wishUniversitySubmitRecruitPlanService.selectBBusiWishUniversitySubmitRecruitPlanList(planCond).stream().map(t -> new UniversityDetailDTO.WishPlan(t)).collect(Collectors.toList());
  258. data.setPlanHistories(planList);
  259. BBusiWishUniversitySubmitMarjors submitCond = new BBusiWishUniversitySubmitMarjors();
  260. submitCond.setUniversityId(universityId);
  261. submitCond.setLocation(sysUser.getLocation());
  262. submitCond.setLiberalScience(examMajor);
  263. List<UniversityDetailDTO.WishSubmit> submitList = wishUniversitySubmitMarjorsService.selectBBusiWishUniversitySubmitMarjorsList(submitCond).stream().map(t -> new UniversityDetailDTO.WishSubmit(t)).collect(Collectors.toList());
  264. data.setEnrollHistories(submitList);
  265. } else if(Constant.EXAM_TYPE_PG.equals(sysUser.getExamType().title()) || Constant.EXAM_TYPE_ZZ.equals(sysUser.getExamType().title())) {
  266. Pair<List<UniversityDetailDTO.WishPlan>, List<UniversityDetailDTO.WishSubmit>> pair = voluntaryService.getUniversityHistory(universityId, sysUser.getLocation(), sysUser.getExamType().title());
  267. data.setPlanHistories(pair.getLeft());
  268. data.setEnrollHistories(pair.getRight());
  269. }
  270. return AjaxResult.success(data);
  271. }
  272. /**
  273. * 新接口:20260110
  274. * @param code
  275. * @param title
  276. * @return
  277. */
  278. @GetMapping("getUniversityBaseInfo")
  279. @ApiOperation("112 院校基础信息")
  280. public AjaxResult getUniversityDetail(@ApiParam("学校code") @RequestParam String code) {
  281. commService.requireVip();
  282. SysUser sysUser = SecurityUtils.getLoginUser().getUser();
  283. UniversityDetailDTO data = universitiesService.detail(code, voluntaryService.getPlanYear(sysUser));
  284. if(StringUtils.isNotEmpty(data.getBaseInfo().getStar())){
  285. data.getBaseInfo().setStar(dictTypeService.getDictDataByType("university_stars",data.getBaseInfo().getStar()));
  286. }
  287. Long universityId = data.getBaseInfo().getId();
  288. BCustomerUniversities cond = new BCustomerUniversities();
  289. cond.setUniversityId(universityId);
  290. cond.setCustomerCode(sysUser.getCode());
  291. cond.setStatus(1L);
  292. List<BCustomerUniversities> list = customerUniversitiesService.selectBCustomerUniversitiesList(cond);
  293. data.getBaseInfo().setCollected(CollectionUtils.isNotEmpty(list));
  294. this.saveUniversitiesClicks(code);
  295. return AjaxResult.success(data);
  296. }
  297. /**
  298. * 新接口:20260110
  299. * @param code
  300. * @param title
  301. * @return
  302. */
  303. @GetMapping("getUniversityPlanEnroll")
  304. @ApiOperation("113 院校计划与录取分数")
  305. public AjaxResult getUniversityPlanEnroll(@ApiParam("学校code") @RequestParam String code) {
  306. commService.requireVip();
  307. SysUser sysUser = SecurityUtils.getLoginUser().getUser();
  308. UniversityDetailDTO data = new UniversityDetailDTO();
  309. Long universityId = Long.parseLong(code);
  310. if(Constant.EXAM_TYPE_ZG.equals(sysUser.getExamType().title())) {
  311. Integer examMajor = sysUser.getExamMajor();
  312. BBusiWishUniversitySubmitRecruitPlan planCond = new BBusiWishUniversitySubmitRecruitPlan();
  313. planCond.setUniversityId(universityId);
  314. planCond.setLocation(sysUser.getLocation());
  315. planCond.setLiberalScience(examMajor);
  316. List<UniversityDetailDTO.WishPlan> planList = wishUniversitySubmitRecruitPlanService.selectBBusiWishUniversitySubmitRecruitPlanList(planCond).stream().map(t -> new UniversityDetailDTO.WishPlan(t)).collect(Collectors.toList());
  317. data.setPlanHistories(planList);
  318. BBusiWishUniversitySubmitMarjors submitCond = new BBusiWishUniversitySubmitMarjors();
  319. submitCond.setUniversityId(universityId);
  320. submitCond.setLocation(sysUser.getLocation());
  321. submitCond.setLiberalScience(examMajor);
  322. List<UniversityDetailDTO.WishSubmit> submitList = wishUniversitySubmitMarjorsService.selectBBusiWishUniversitySubmitMarjorsList(submitCond).stream().map(t -> new UniversityDetailDTO.WishSubmit(t)).collect(Collectors.toList());
  323. data.setEnrollHistories(submitList);
  324. } else if(Constant.EXAM_TYPE_PG.equals(sysUser.getExamType().title()) || Constant.EXAM_TYPE_ZZ.equals(sysUser.getExamType().title())) {
  325. Pair<List<UniversityDetailDTO.WishPlan>, List<UniversityDetailDTO.WishSubmit>> pair = voluntaryService.getUniversityHistory(universityId, sysUser.getLocation(), sysUser.getExamType().title());
  326. data.setPlanHistories(pair.getLeft());
  327. data.setEnrollHistories(pair.getRight());
  328. }
  329. return AjaxResult.success(data);
  330. }
  331. @GetMapping("getUniversitiesEnrollBrochure")
  332. @ApiOperation("03 招生简章")
  333. public TableDataInfo getUniversitiesEnrollBrochure(@ApiParam("学校code") @RequestParam String code,
  334. @ApiParam("学校code") String title) {
  335. BBusiWishUniversitiesEnrollBrochure query = new BBusiWishUniversitiesEnrollBrochure();
  336. query.setCollegeCode(code);
  337. query.setTitle(title);
  338. startPage();
  339. List<BBusiWishUniversitiesEnrollBrochure> list = universitiesEnrollBrochureService.selectBBusiWishUniversitiesEnrollBrochureList(query);
  340. return getDataTable(list);
  341. }
  342. @GetMapping("getUniversitiesEnrollBrochureDetail")
  343. @ApiOperation("03-2 招生简章详情")
  344. public AjaxResult getUniversitiesEnrollBrochure(@ApiParam("简章id") @RequestParam Long id) {
  345. return AjaxResult.success(universitiesEnrollBrochureService.selectBBusiWishUniversitiesEnrollBrochureById(id));
  346. }
  347. @PostMapping("saveUniversitiesEnrollBrochureHits")
  348. @ApiOperation("04-2 保存招生简章热度/点击")
  349. public AjaxResult saveUniversitiesEnrollBrochureHits(@ApiParam("ID") @RequestParam Long id){
  350. BBusiWishUniversitiesEnrollBrochure result = universitiesEnrollBrochureService.selectBBusiWishUniversitiesEnrollBrochureById(id);
  351. result.setHits(null==result.getHits()?1:(result.getHits()+1));
  352. universitiesEnrollBrochureService.updateBBusiWishUniversitiesEnrollBrochure(result);
  353. return AjaxResult.success("保存成功");
  354. }
  355. // @PostMapping("saveUniversitiesHits")
  356. // @ApiOperation("04 保存院校热度/点击")
  357. public AjaxResult saveUniversitiesClicks(@ApiParam("学校code") @RequestParam String code) {
  358. BBusiWishUniversities result = universitiesService.selectBBusiWishUniversitiesByCode(code);
  359. if(null==result){
  360. return AjaxResult.error("学校[ "+code+" ]不存在");
  361. }
  362. BBusiWishUniversities update = new BBusiWishUniversities();
  363. update.setId(result.getId());
  364. update.setHits(null==result.getHits()?1:(result.getHits()+1));
  365. universitiesService.updateBBusiWishUniversities(update);
  366. return AjaxResult.success();
  367. }
  368. @GetMapping("getUniversitiesHitsTopCount")
  369. @ApiOperation("05 获取院校热度/点击 Top count")
  370. public AjaxResult getUniversitiesHits(Integer count) {
  371. BBusiWishUniversities exam = new BBusiWishUniversities();
  372. exam.getParams().put("orderBy", "hits desc");
  373. exam.getParams().put("limit", null==count?8:count);
  374. List<BBusiWishUniversities> arr = universitiesService.selectBBusiWishUniversitiesListSimple(exam);
  375. return AjaxResult.success(arr);
  376. }
  377. @GetMapping("getUniversitiesStyle")
  378. @ApiOperation("06 获取院校风采")
  379. public AjaxResult getUniversitiesStyle(@ApiParam("学校code") @RequestParam String code) {
  380. BBusiWishUniversitiesImage query = new BBusiWishUniversitiesImage();
  381. query.setCollegeCode(code);
  382. // query.getParams().put("orderBy", "collegeCode,sort");
  383. List<BBusiWishUniversitiesImage> list = universitiesImageService.selectBBusiWishUniversitiesImageList(query);
  384. return AjaxResult.success(list);
  385. }
  386. @GetMapping("getUniversitiesRankingFilter")
  387. @ApiOperation("07-1 获取院校排名筛选条件")
  388. public AjaxResult getUniversitiesRankingFilter(String type) {
  389. JSONObject result = new JSONObject();
  390. result.put("types",universitiesRankingService.selectBBusiWishUniversitiesRankingTypes());
  391. result.put("years",universitiesRankingService.selectBBusiWishUniversitiesRankingYears(type));
  392. return AjaxResult.success(result);
  393. }
  394. @GetMapping("getUniversitiesRankingFilterYears")
  395. @ApiOperation("07-1-1 获取院校排名筛选条件年份")
  396. public AjaxResult getUniversitiesRankingFilterYears(String type) {
  397. JSONObject result = new JSONObject();
  398. result.put("years",universitiesRankingService.selectBBusiWishUniversitiesRankingYears(type));
  399. return AjaxResult.success(result);
  400. }
  401. @GetMapping("getUniversitiesRanking")
  402. @ApiOperation("07-2 获取院校排名")
  403. public TableDataInfo getUniversitiesRanking(@ApiParam("排名类型") @RequestParam String type,
  404. @ApiParam("年份") @RequestParam Integer year,@ApiParam("学校名称") String collegeName) {
  405. return getUniversitiesRankingList(type, year, collegeName);
  406. }
  407. @GetMapping("getUniversitiesRankingNoToken")
  408. @ApiOperation("07-2 获取院校排名")
  409. public TableDataInfo getUniversitiesRankingNoToken(@ApiParam("排名类型") @RequestParam String type,
  410. @ApiParam("年份") @RequestParam Integer year,@ApiParam("学校名称") String collegeName) {
  411. return getUniversitiesRankingList(type, year, collegeName);
  412. }
  413. private TableDataInfo getUniversitiesRankingList(String type,Integer year,String collegeName){
  414. BBusiWishUniversitiesRanking query = new BBusiWishUniversitiesRanking();
  415. query.setType(type);
  416. query.setYear(year);
  417. if(StringUtils.isNotBlank(collegeName)){
  418. query.setCollegeName(collegeName);
  419. }
  420. // query.getParams().put("orderBy", " ranking");
  421. startPage();
  422. //取到学校数据
  423. List<BBusiWishUniversitiesRanking> list = universitiesRankingService.selectBBusiWishUniversitiesRankingList(query);
  424. return getDataTable(list);
  425. }
  426. @GetMapping("getUniversitiesRankingByTypes")
  427. @ApiOperation("07-3 获取院校排名->APP使用")
  428. public TableDataInfo getUniversitiesRankingByTypes(@ApiParam("排名类型") @RequestParam String type) {
  429. Integer year = universitiesRankingService.selectUniversitiesRankingMaxYearByType(type);
  430. if(null==year){
  431. return getDataTable(new ArrayList<>());
  432. }
  433. BBusiWishUniversitiesRanking query = new BBusiWishUniversitiesRanking();
  434. query.setType(type);
  435. query.setYear(year);
  436. //取到最新一年的学校排名数据
  437. startPage();
  438. List<BBusiWishUniversitiesRanking> list = universitiesRankingService.selectBBusiWishUniversitiesRankingList(query);
  439. List<String> collegeCodes = list.stream().map(t->t.getCollegeCode()).collect(Collectors.toList());
  440. query = new BBusiWishUniversitiesRanking();
  441. query.setType(type);
  442. query.setCollegeCodes(collegeCodes);
  443. query.getParams().put("maxYear", year-1);
  444. query.getParams().put("minYear", year-2);
  445. //取最近两年对应学校的数据
  446. List<BBusiWishUniversitiesRanking> historyList = universitiesRankingService.selectBBusiWishUniversitiesRankingList(query);
  447. Map<String,Integer> yearCodeRankingMap = historyList.stream().collect(Collectors.toMap(e -> (e.getYear()+e.getCollegeCode()),e -> e.getRanking()));
  448. // Map<String, BBusiWishUniversitiesRanking> importMap = historyList.stream().collect(Collectors.toMap(BBusiWishUniversitiesRanking::getCollegeCode, Function.identity()));
  449. //填充过去2年数据
  450. for (BBusiWishUniversitiesRanking ll : list) {
  451. //去年
  452. String key = (ll.getYear() - 1) + ll.getCollegeCode();
  453. if (yearCodeRankingMap.containsKey(key)) {
  454. ll.setLastRanking1(yearCodeRankingMap.get(key));
  455. }
  456. //前年
  457. key = (ll.getYear() - 2) + ll.getCollegeCode();
  458. if (yearCodeRankingMap.containsKey(key)) {
  459. ll.setLastRanking2(yearCodeRankingMap.get(key));
  460. }
  461. }
  462. return getDataTable(list);
  463. }
  464. }