SmartEvaluateStudentController2.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. package com.template.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.template.annotation.DESRespondSecret;
  5. import com.template.annotation.PassToken;
  6. import com.template.api.SmartEvaluateStudentControlle2API;
  7. import com.template.common.utils.UUIDUtil;
  8. import com.template.model.evaluate.student.*;
  9. import com.template.model.pojo.SmartExamtype;
  10. import com.template.model.pojo.SmartGrade;
  11. import com.template.model.pojo.SmartScore;
  12. import com.template.model.result.CommonResult;
  13. import com.template.model.result.PageUtils;
  14. import com.template.services.*;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.web.bind.annotation.RestController;
  18. import java.math.BigDecimal;
  19. import java.util.*;
  20. import java.util.stream.Collectors;
  21. @RestController
  22. //返回参数加密注解
  23. @DESRespondSecret
  24. public class SmartEvaluateStudentController2 implements SmartEvaluateStudentControlle2API {
  25. @Autowired
  26. public SmartSubjectManageService smartSubjectManageService;
  27. @Autowired
  28. public SmartSubjectRuleService smartSubjectRuleService;
  29. @Autowired
  30. public SmartEvaluateStudentService smartEvaluateStudentService;
  31. @Autowired
  32. public SmartEvaluateSdetailService smartEvaluateSdetailService;
  33. @Autowired
  34. public SmartSubjectTemplateService smartSubjectTemplateService;
  35. @Autowired
  36. public SmartTemplateRuleService smartTemplateRuleService;
  37. @Autowired
  38. public SmartExamtypeService smartExamtypeService;
  39. @Autowired
  40. public SmartScoreService smartScoreService;
  41. @Autowired
  42. public SmartGradeService smartGradeService;
  43. /**
  44. * ==============================第二版============================
  45. **/
  46. @PassToken
  47. public CommonResult addSmartSubjectTemplate(JSONObject jsonObject) {
  48. SmartTemplateRuleList smartTemplateRuleList = null;
  49. try {
  50. smartTemplateRuleList = JSONObject.parseObject(jsonObject.toString(), SmartTemplateRuleList.class);
  51. } catch (Exception e) {
  52. return CommonResult.errorMsg("参数格式错误");
  53. }
  54. SmartSubjectTemplate smartSubjectTemplate = smartTemplateRuleList.getSmartSubjectTemplate();
  55. QueryWrapper<SmartSubjectTemplate> queryWrapper1 = new QueryWrapper<>();
  56. queryWrapper1.eq("grade_id", smartSubjectTemplate.getGradeId());
  57. queryWrapper1.eq("term_id", smartSubjectTemplate.getTermId());
  58. // queryWrapper1.eq("exam_type", smartSubjectTemplate.getExamType());
  59. List<SmartSubjectTemplate> listc = smartSubjectTemplateService.list(queryWrapper1);
  60. if (!listc.isEmpty()) {
  61. return CommonResult.fail("该评分项已存在");
  62. }
  63. List<SmartTemplateRule> ruleList = smartTemplateRuleList.getRuleList();
  64. List<String> levels = ruleList.stream().map(SmartTemplateRule::getLevel).collect(Collectors.toList());
  65. Set<String> levelSet = new HashSet<>(levels);
  66. if (levels.size() != levelSet.size()) {
  67. return CommonResult.fail("存在重复等级");
  68. }
  69. int insertTemplate = smartSubjectTemplateService.insertSmartSubjectTemplate(smartSubjectTemplate);
  70. if (insertTemplate <= 0) {
  71. return CommonResult.fail("操作失败");
  72. }
  73. List<SmartTemplateRule> rules = new ArrayList<>();
  74. for (int i = 0; i < ruleList.size(); i++) {
  75. SmartTemplateRule rule = ruleList.get(i);
  76. rule.setTemplateId(insertTemplate);
  77. rules.add(rule);
  78. }
  79. boolean insertRuleBatch = smartTemplateRuleService.saveBatch(rules);
  80. if (!insertRuleBatch) {
  81. return CommonResult.fail("操作失败");
  82. }
  83. List<Integer> examTypes = new ArrayList<>();
  84. for (SmartTermTemplate stt : smartSubjectTemplate.getExamTypes()) {
  85. examTypes.add(stt.getId());
  86. }
  87. List<SmartScore> scores = smartScoreService.querySmartScoresByex(smartSubjectTemplate.getTermId(), smartSubjectTemplate.getGradeId(), examTypes);
  88. List<Integer> userIds = scores.stream().map(SmartScore::getUserId).distinct().collect(Collectors.toList());
  89. List<SmartEvaluateStudent> insertStudents = new ArrayList<>();
  90. for (Integer userId : userIds) {
  91. SmartEvaluateStudent ses = new SmartEvaluateStudent();
  92. ses.setTermId(smartSubjectTemplate.getTermId());
  93. ses.setTerm(smartSubjectTemplate.getTerm());
  94. ses.setUserId(userId);
  95. List<SmartScore> userScores = scores.stream().filter(e -> e.getUserId().equals(userId)).collect(Collectors.toList());
  96. if (userScores != null && userScores.size() > 0) {
  97. ses.setGradeName(userScores.get(0).getGrade());
  98. ses.setGradeId(userScores.get(0).getGradeId());
  99. ses.setClassId(userScores.get(0).getSchoolClassId());
  100. ses.setClassName(userScores.get(0).getSchoolClass());
  101. ses.setCardNo(userScores.get(0).getCardNo());
  102. ses.setName(userScores.get(0).getName());
  103. BigDecimal totalScoreNum = new BigDecimal(0.0);
  104. Integer scoreNum = 0;
  105. for (SmartScore us : userScores) {
  106. totalScoreNum = totalScoreNum.add(new BigDecimal(us.getScore()));
  107. scoreNum++;
  108. }
  109. ses.setScoreNum(totalScoreNum.doubleValue());
  110. ses.setSubjectNum(scoreNum);
  111. }
  112. insertStudents.add(ses);
  113. }
  114. if(insertStudents != null && insertStudents.size() > 0){
  115. boolean insertBatch = smartEvaluateStudentService.saveBatch(insertStudents);
  116. if(!insertBatch){
  117. return CommonResult.fail("操作失败");
  118. }
  119. }
  120. return CommonResult.ok("操作成功");
  121. }
  122. @PassToken
  123. public CommonResult updateSmartSubjectTemplate(JSONObject jsonObject) {
  124. SmartTemplateRuleList smartTemplateRuleList = null;
  125. try {
  126. smartTemplateRuleList = JSONObject.parseObject(jsonObject.toString(), SmartTemplateRuleList.class);
  127. } catch (Exception e) {
  128. return CommonResult.errorMsg("参数格式错误");
  129. }
  130. SmartSubjectTemplate smartSubjectTemplate = smartTemplateRuleList.getSmartSubjectTemplate();
  131. QueryWrapper<SmartSubjectTemplate> queryWrapper1 = new QueryWrapper<>();
  132. queryWrapper1.eq("grade_id", smartSubjectTemplate.getGrade());
  133. queryWrapper1.eq("term_id", smartSubjectTemplate.getTerm());
  134. // queryWrapper1.eq("exam_type", smartSubjectTemplate.getExamType());
  135. List<SmartSubjectTemplate> listc = smartSubjectTemplateService.list(queryWrapper1);
  136. if (!listc.isEmpty() && !Objects.equals(listc.get(0).getId(), smartSubjectTemplate.getId())) {
  137. return CommonResult.fail("该评分项已存在");
  138. }
  139. SmartSubjectTemplate st = smartSubjectTemplateService.getSmartSubjectTemplateById(smartSubjectTemplate.getId());
  140. if (st == null) {
  141. return CommonResult.fail("未找到该评分项");
  142. }
  143. QueryWrapper<SmartEvaluateStudent> queryWrapper2 = new QueryWrapper<>();
  144. queryWrapper2.eq("grade_id", smartSubjectTemplate.getGradeId());
  145. queryWrapper2.eq("term_id", smartSubjectTemplate.getTermId());
  146. // queryWrapper2.eq("exam_type", smartSubjectTemplate.getExamType());
  147. queryWrapper2.isNotNull("score_level");
  148. List<SmartEvaluateStudent> evaluateData = smartEvaluateStudentService.getSmartEvaluateStudentByKey(queryWrapper2);
  149. if (!evaluateData.isEmpty()) {
  150. return CommonResult.fail("该评分项已评测,不可修改");
  151. }
  152. List<SmartTemplateRule> ruleList = smartTemplateRuleList.getRuleList();
  153. List<String> levels = ruleList.stream().map(SmartTemplateRule::getLevel).collect(Collectors.toList());
  154. Set<String> levelSet = new HashSet<>(levels);
  155. if (levels.size() != levelSet.size()) {
  156. return CommonResult.fail("存在重复等级");
  157. }
  158. smartTemplateRuleService.deleteSmartTemplateRuleBytId(smartSubjectTemplate.getId());
  159. List<SmartTemplateRule> rules = new ArrayList<>();
  160. for (int i = 0; i < ruleList.size(); i++) {
  161. SmartTemplateRule rule = ruleList.get(i);
  162. rule.setTemplateId(smartSubjectTemplate.getId());
  163. rules.add(rule);
  164. }
  165. if(rules != null && rules.size() > 0){
  166. boolean insertBatch = smartTemplateRuleService.saveBatch(rules);
  167. if(!insertBatch){
  168. return CommonResult.fail("修改失败");
  169. }
  170. }
  171. int insert = smartSubjectTemplateService.updateSmartSubjectTemplate(smartSubjectTemplate);
  172. if(insert <= 0){
  173. return CommonResult.fail("修改失败");
  174. }
  175. //region 学生综合评价
  176. List<Integer> examTypes = new ArrayList<>();
  177. for (SmartTermTemplate stt : smartSubjectTemplate.getExamTypes()) {
  178. examTypes.add(stt.getId());
  179. }
  180. List<SmartScore> scores = smartScoreService.querySmartScoresByex(smartSubjectTemplate.getTermId(), smartSubjectTemplate.getGradeId(), examTypes);
  181. List<Integer> userIds = scores.stream().map(SmartScore::getUserId).distinct().collect(Collectors.toList());
  182. List<SmartEvaluateStudent> students = smartEvaluateStudentService.getEvaluateStudents(userIds, smartSubjectTemplate.getTermId());
  183. List<SmartEvaluateStudent> updateStudents = new ArrayList<>();
  184. List<SmartEvaluateStudent> insertStudents = new ArrayList<>();
  185. for (Integer userId : userIds) {
  186. List<SmartScore> userScores = scores.stream().filter(e -> e.getUserId().equals(userId)).collect(Collectors.toList());
  187. BigDecimal totalScoreNum = new BigDecimal(0.0);
  188. Integer scoreNum = 0;
  189. if (userScores != null && userScores.size() > 0) {
  190. Optional<SmartEvaluateStudent> oStudent = students.stream().filter(e -> e.getTermId().equals(smartSubjectTemplate.getTermId()) && e.getUserId().equals(userId)).findFirst();
  191. for (SmartScore us : userScores) {
  192. totalScoreNum = totalScoreNum.add(new BigDecimal(us.getScore()));
  193. scoreNum++;
  194. }
  195. if (oStudent != null && oStudent.isPresent()) {
  196. oStudent.get().setScoreNum(totalScoreNum.doubleValue());
  197. oStudent.get().setSubjectNum(scoreNum);
  198. updateStudents.add(oStudent.get());
  199. } else {
  200. Optional<SmartScore> oSmartScore = scores.stream().filter(e -> e.getSemesterId().equals(smartSubjectTemplate.getTermId()) && e.getUserId().equals(userId)).findFirst();
  201. SmartEvaluateStudent ses = new SmartEvaluateStudent();
  202. ses.setTermId(smartSubjectTemplate.getTermId());
  203. ses.setUserId(userId);
  204. if (oSmartScore != null && oSmartScore.isPresent()) {
  205. ses.setTerm(oSmartScore.get().getSemester());
  206. ses.setGradeName(oSmartScore.get().getGrade());
  207. ses.setGradeId(oSmartScore.get().getGradeId());
  208. ses.setClassId(oSmartScore.get().getSchoolClassId());
  209. ses.setClassName(oSmartScore.get().getSchoolClass());
  210. ses.setCardNo(oSmartScore.get().getCardNo());
  211. ses.setName(oSmartScore.get().getName());
  212. }
  213. ses.setScoreNum(totalScoreNum.doubleValue());
  214. ses.setSubjectNum(scoreNum);
  215. insertStudents.add(ses);
  216. }
  217. }
  218. }
  219. if (insertStudents != null && insertStudents.size() > 0) {
  220. boolean insertBatch = smartEvaluateStudentService.saveBatch(insertStudents);
  221. if (!insertBatch) {
  222. return CommonResult.fail("修改失败");
  223. }
  224. }
  225. if (updateStudents != null && updateStudents.size() > 0) {
  226. boolean updateBatch = smartEvaluateStudentService.updateBatchById(updateStudents);
  227. if (!updateBatch) {
  228. return CommonResult.fail("修改失败");
  229. }
  230. }
  231. //endregion
  232. return CommonResult.ok("修改成功");
  233. }
  234. @PassToken
  235. public CommonResult delSmartSubjectTemplate(Integer id) {
  236. if (id == null) {
  237. return CommonResult.fail("请传入ID");
  238. }
  239. SmartSubjectTemplate smartSubjectTemplate = smartSubjectTemplateService.getSmartSubjectTemplateById(id);
  240. if (smartSubjectTemplate == null) {
  241. return CommonResult.fail("该评分项不存在");
  242. }
  243. QueryWrapper<SmartEvaluateStudent> queryWrapper1 = new QueryWrapper<>();
  244. queryWrapper1.eq("grade_id", smartSubjectTemplate.getGradeId());
  245. queryWrapper1.eq("term_id", smartSubjectTemplate.getTermId());
  246. // queryWrapper1.eq("exam_type", smartSubjectTemplate.getExamType());
  247. queryWrapper1.isNotNull("score_level");
  248. List<SmartEvaluateStudent> evaluateData = smartEvaluateStudentService.getSmartEvaluateStudentByKey(queryWrapper1);
  249. if (!evaluateData.isEmpty()) {
  250. return CommonResult.fail("该评分项已评测,不可删除");
  251. }
  252. int listc = smartTemplateRuleService.deleteSmartTemplateRuleBytId(smartSubjectTemplate.getId());
  253. smartSubjectTemplateService.deleteSmartSubjectTemplateById(id);
  254. return CommonResult.ok("操作成功");
  255. }
  256. @PassToken
  257. @DESRespondSecret(validated = false)
  258. public CommonResult queryTemplatePage(Integer currentPage, Integer pageCount) {
  259. QueryWrapper<SmartSubjectTemplate> queryWrapper1 = new QueryWrapper<>();
  260. queryWrapper1.orderByDesc("id");
  261. PageUtils<SmartSubjectTemplate> list = smartSubjectTemplateService.queryPageSmartSubjectTemplate(currentPage, pageCount, queryWrapper1);
  262. List<SmartExamtype> examtypes = smartExamtypeService.list(null);
  263. if (list.getList() != null && list.getList().size() > 0) {
  264. for (SmartSubjectTemplate data : list.getList()) {
  265. List<SmartTermTemplate> examTypeDatas = new ArrayList<>();
  266. List<String> names = new ArrayList<>();
  267. List<String> examTypes = Arrays.asList(data.getExamType().split(","));
  268. if (examtypes != null && examtypes.size() > 0) {
  269. for (String examType : examTypes) {
  270. Optional<SmartExamtype> oExamtype = examtypes.stream().filter(e -> String.valueOf(e.getId()).equals(examType)).findFirst();
  271. if (oExamtype != null && oExamtype.isPresent()) {
  272. names.add(oExamtype.get().getName());
  273. SmartTermTemplate examTypeData = new SmartTermTemplate();
  274. examTypeData.setId(oExamtype.get().getId());
  275. examTypeData.setName(oExamtype.get().getName());
  276. examTypeDatas.add(examTypeData);
  277. }
  278. }
  279. }
  280. if (names != null && names.size() > 0) {
  281. data.setExamType(StringUtils.join(names, ","));
  282. }
  283. data.setExamTypes(examTypeDatas);
  284. }
  285. }
  286. return CommonResult.ok(list);
  287. }
  288. @PassToken
  289. @DESRespondSecret(validated = false)
  290. public CommonResult queryTemplateRulePage(Integer id) {
  291. QueryWrapper<SmartTemplateRule> queryWrapper1 = new QueryWrapper<>();
  292. queryWrapper1.eq("template_id", id);
  293. queryWrapper1.orderByDesc("id");
  294. List<SmartTemplateRule> list = smartTemplateRuleService.getSmartTemplateRuleByKey(queryWrapper1);
  295. return CommonResult.ok(list);
  296. }
  297. @PassToken
  298. public CommonResult evaluateScore(Integer id, String scoreComment) {
  299. if (id == null) {
  300. return CommonResult.fail("请传入ID");
  301. }
  302. SmartEvaluateStudent evaluateStudent = smartEvaluateStudentService.getSmartEvaluateStudentById(id);
  303. if (evaluateStudent == null) {
  304. return CommonResult.fail("该条记录已删除");
  305. }
  306. evaluateStudent.setScoreComment(scoreComment);
  307. smartEvaluateStudentService.updateSmartEvaluateStudent(evaluateStudent);
  308. return CommonResult.ok("评价成功");
  309. }
  310. @PassToken
  311. public CommonResult queryEvaluateStudent(SmartEvaluateStudent smartEvaluateStudent, Integer currentPage, Integer pageCount) {
  312. QueryWrapper<SmartEvaluateStudent> queryWrapper1 = new QueryWrapper<>();
  313. if (smartEvaluateStudent.getName() != null && !smartEvaluateStudent.getName().trim().equals("")) {
  314. queryWrapper1.and(qw -> qw.like("name", smartEvaluateStudent.getName()).or().like("card_no", smartEvaluateStudent.getName()));
  315. }
  316. if (smartEvaluateStudent.getTerm() != null && !smartEvaluateStudent.getTerm().trim().equals("")) {
  317. queryWrapper1.like("term", smartEvaluateStudent.getTerm());
  318. }
  319. if (smartEvaluateStudent.getGradeName() != null && !smartEvaluateStudent.getGradeName().trim().equals("")) {
  320. queryWrapper1.eq("grade_name", smartEvaluateStudent.getGradeName());
  321. }
  322. if (smartEvaluateStudent.getClassName() != null && !smartEvaluateStudent.getClassName().trim().equals("")) {
  323. queryWrapper1.eq("class_name", smartEvaluateStudent.getClassName());
  324. }
  325. if (smartEvaluateStudent.getScoreLevel() != null && !smartEvaluateStudent.getScoreLevel().trim().equals("")) {
  326. queryWrapper1.eq("score_level", smartEvaluateStudent.getClassName());
  327. }
  328. queryWrapper1.orderByDesc("id");
  329. PageUtils<SmartEvaluateStudent> list = smartEvaluateStudentService.queryPageSmartEvaluateStudent(currentPage, pageCount, queryWrapper1);
  330. return CommonResult.ok(list);
  331. }
  332. }