SmartEvaluateStudentController2.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  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. smartTemplateRuleService.saveBatch(rules);
  167. }
  168. smartSubjectTemplateService.updateSmartSubjectTemplate(smartSubjectTemplate);
  169. return CommonResult.ok("操作成功");
  170. }
  171. @PassToken
  172. public CommonResult delSmartSubjectTemplate(Integer id) {
  173. if (id == null) {
  174. return CommonResult.fail("请传入ID");
  175. }
  176. SmartSubjectTemplate smartSubjectTemplate = smartSubjectTemplateService.getSmartSubjectTemplateById(id);
  177. if (smartSubjectTemplate == null) {
  178. return CommonResult.fail("该评分项不存在");
  179. }
  180. QueryWrapper<SmartEvaluateStudent> queryWrapper1 = new QueryWrapper<>();
  181. queryWrapper1.eq("grade_id", smartSubjectTemplate.getGradeId());
  182. queryWrapper1.eq("term_id", smartSubjectTemplate.getTermId());
  183. // queryWrapper1.eq("exam_type", smartSubjectTemplate.getExamType());
  184. queryWrapper1.isNotNull("score_level");
  185. List<SmartEvaluateStudent> evaluateData = smartEvaluateStudentService.getSmartEvaluateStudentByKey(queryWrapper1);
  186. if (!evaluateData.isEmpty()) {
  187. return CommonResult.fail("该评分项已评测,不可删除");
  188. }
  189. int listc = smartTemplateRuleService.deleteSmartTemplateRuleBytId(smartSubjectTemplate.getId());
  190. smartSubjectTemplateService.deleteSmartSubjectTemplateById(id);
  191. return CommonResult.ok("操作成功");
  192. }
  193. @PassToken
  194. @DESRespondSecret(validated = false)
  195. public CommonResult queryTemplatePage(Integer currentPage, Integer pageCount) {
  196. QueryWrapper<SmartSubjectTemplate> queryWrapper1 = new QueryWrapper<>();
  197. queryWrapper1.orderByDesc("id");
  198. PageUtils<SmartSubjectTemplate> list = smartSubjectTemplateService.queryPageSmartSubjectTemplate(currentPage, pageCount, queryWrapper1);
  199. List<SmartExamtype> examtypes = smartExamtypeService.list(null);
  200. if (list.getList() != null && list.getList().size() > 0) {
  201. for (SmartSubjectTemplate data : list.getList()) {
  202. List<SmartTermTemplate> examTypeDatas = new ArrayList<>();
  203. List<String> names = new ArrayList<>();
  204. List<String> examTypes = Arrays.asList(data.getExamType().split(","));
  205. if (examtypes != null && examtypes.size() > 0) {
  206. for (String examType : examTypes) {
  207. Optional<SmartExamtype> oExamtype = examtypes.stream().filter(e -> String.valueOf(e.getId()).equals(examType)).findFirst();
  208. if (oExamtype != null && oExamtype.isPresent()) {
  209. names.add(oExamtype.get().getName());
  210. SmartTermTemplate examTypeData = new SmartTermTemplate();
  211. examTypeData.setId(oExamtype.get().getId());
  212. examTypeData.setName(oExamtype.get().getName());
  213. examTypeDatas.add(examTypeData);
  214. }
  215. }
  216. }
  217. if (names != null && names.size() > 0) {
  218. data.setExamType(StringUtils.join(names, ","));
  219. }
  220. data.setExamTypes(examTypeDatas);
  221. }
  222. }
  223. return CommonResult.ok(list);
  224. }
  225. @PassToken
  226. @DESRespondSecret(validated = false)
  227. public CommonResult queryTemplateRulePage(Integer id) {
  228. QueryWrapper<SmartTemplateRule> queryWrapper1 = new QueryWrapper<>();
  229. queryWrapper1.eq("template_id", id);
  230. queryWrapper1.orderByDesc("id");
  231. List<SmartTemplateRule> list = smartTemplateRuleService.getSmartTemplateRuleByKey(queryWrapper1);
  232. return CommonResult.ok(list);
  233. }
  234. @PassToken
  235. public CommonResult evaluateScore(Integer id, String scoreComment) {
  236. if (id == null) {
  237. return CommonResult.fail("请传入ID");
  238. }
  239. SmartEvaluateStudent evaluateStudent = smartEvaluateStudentService.getSmartEvaluateStudentById(id);
  240. if (evaluateStudent == null) {
  241. return CommonResult.fail("该条记录已删除");
  242. }
  243. evaluateStudent.setScoreComment(scoreComment);
  244. smartEvaluateStudentService.updateSmartEvaluateStudent(evaluateStudent);
  245. return CommonResult.ok("评价成功");
  246. }
  247. @PassToken
  248. public CommonResult queryEvaluateStudent(SmartEvaluateStudent smartEvaluateStudent, Integer currentPage, Integer pageCount) {
  249. QueryWrapper<SmartEvaluateStudent> queryWrapper1 = new QueryWrapper<>();
  250. if (smartEvaluateStudent.getName() != null && !smartEvaluateStudent.getName().trim().equals("")) {
  251. queryWrapper1.and(qw -> qw.like("name", smartEvaluateStudent.getName()).or().like("card_no", smartEvaluateStudent.getName()));
  252. }
  253. if (smartEvaluateStudent.getTerm() != null && !smartEvaluateStudent.getTerm().trim().equals("")) {
  254. queryWrapper1.like("term", smartEvaluateStudent.getTerm());
  255. }
  256. if (smartEvaluateStudent.getGradeName() != null && !smartEvaluateStudent.getGradeName().trim().equals("")) {
  257. queryWrapper1.eq("grade_name", smartEvaluateStudent.getGradeName());
  258. }
  259. if (smartEvaluateStudent.getClassName() != null && !smartEvaluateStudent.getClassName().trim().equals("")) {
  260. queryWrapper1.eq("class_name", smartEvaluateStudent.getClassName());
  261. }
  262. if (smartEvaluateStudent.getScoreLevel() != null && !smartEvaluateStudent.getScoreLevel().trim().equals("")) {
  263. queryWrapper1.eq("score_level", smartEvaluateStudent.getClassName());
  264. }
  265. queryWrapper1.orderByDesc("id");
  266. PageUtils<SmartEvaluateStudent> list = smartEvaluateStudentService.queryPageSmartEvaluateStudent(currentPage, pageCount, queryWrapper1);
  267. return CommonResult.ok(list);
  268. }
  269. }