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.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.web.bind.annotation.RestController;
  17. import java.util.HashSet;
  18. import java.util.List;
  19. import java.util.Objects;
  20. import java.util.Set;
  21. import java.util.stream.Collectors;
  22. @RestController
  23. //返回参数加密注解
  24. @DESRespondSecret
  25. public class SmartEvaluateStudentController2 implements SmartEvaluateStudentControlle2API {
  26. @Autowired
  27. public SmartSubjectManageService smartSubjectManageService;
  28. @Autowired
  29. public SmartSubjectRuleService smartSubjectRuleService;
  30. @Autowired
  31. public SmartEvaluateStudentService smartEvaluateStudentService;
  32. @Autowired
  33. public SmartEvaluateSdetailService smartEvaluateSdetailService;
  34. @Autowired
  35. public SmartSubjectTemplateService smartSubjectTemplateService;
  36. @Autowired
  37. public SmartTemplateRuleService smartTemplateRuleService;
  38. @Autowired
  39. public SmartExamtypeService smartExamtypeService;
  40. @Autowired
  41. public SmartScoreService smartScoreService;
  42. @Autowired
  43. public SmartGradeService smartGradeService;
  44. /** ==============================第二版============================ **/
  45. @PassToken
  46. public CommonResult addSmartSubjectTemplate(JSONObject jsonObject) {
  47. SmartTemplateRuleList smartTemplateRuleList = null;
  48. try {
  49. smartTemplateRuleList = JSONObject.parseObject(jsonObject.toString(), SmartTemplateRuleList.class);
  50. } catch (Exception e) {
  51. return CommonResult.errorMsg("参数格式错误");
  52. }
  53. SmartSubjectTemplate smartSubjectTemplate = smartTemplateRuleList.getSmartSubjectTemplate();
  54. QueryWrapper<SmartSubjectTemplate> queryWrapper1 = new QueryWrapper<>();
  55. queryWrapper1.eq("deleted", 0);
  56. queryWrapper1.eq("grade", smartSubjectTemplate.getGrade());
  57. queryWrapper1.eq("term", smartSubjectTemplate.getTerm());
  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. smartSubjectTemplate.setDeleted(0);
  70. smartSubjectTemplateService.insertSmartSubjectTemplate(smartSubjectTemplate);
  71. for (int i = 0; i < ruleList.size(); i++) {
  72. SmartTemplateRule rule = ruleList.get(i);
  73. rule.setTemplateId(smartSubjectTemplate.getId());
  74. rule.setDeleted(0);
  75. smartTemplateRuleService.insertSmartTemplateRule(rule);
  76. }
  77. return CommonResult.ok("操作成功");
  78. }
  79. @PassToken
  80. public CommonResult updateSmartSubjectTemplate(JSONObject jsonObject) {
  81. SmartTemplateRuleList smartTemplateRuleList = null;
  82. try {
  83. smartTemplateRuleList = JSONObject.parseObject(jsonObject.toString(), SmartTemplateRuleList.class);
  84. } catch (Exception e) {
  85. return CommonResult.errorMsg("参数格式错误");
  86. }
  87. SmartSubjectTemplate smartSubjectTemplate = smartTemplateRuleList.getSmartSubjectTemplate();
  88. QueryWrapper<SmartSubjectTemplate> queryWrapper1 = new QueryWrapper<>();
  89. queryWrapper1.eq("deleted", 0);
  90. queryWrapper1.eq("grade", smartSubjectTemplate.getGrade());
  91. queryWrapper1.eq("term", smartSubjectTemplate.getTerm());
  92. // queryWrapper1.eq("exam_type", smartSubjectTemplate.getExamType());
  93. List<SmartSubjectTemplate> listc = smartSubjectTemplateService.list(queryWrapper1);
  94. if (!listc.isEmpty() && !Objects.equals(listc.get(0).getId(), smartSubjectTemplate.getId())){
  95. return CommonResult.fail("该评分项已存在");
  96. }
  97. SmartSubjectTemplate st = smartSubjectTemplateService.getSmartSubjectTemplateById(smartSubjectTemplate.getId());
  98. if (st==null){
  99. return CommonResult.fail("未找到该评分项");
  100. }
  101. QueryWrapper<SmartEvaluateStudent> queryWrapper2 = new QueryWrapper<>();
  102. queryWrapper2.eq("deleted", 0);
  103. queryWrapper2.eq("grade_name", smartSubjectTemplate.getGrade());
  104. queryWrapper2.eq("term", smartSubjectTemplate.getTerm());
  105. // queryWrapper2.eq("exam_type", smartSubjectTemplate.getExamType());
  106. queryWrapper2.isNotNull("score_level");
  107. List<SmartEvaluateStudent> evaluateData = smartEvaluateStudentService.getSmartEvaluateStudentByKey(queryWrapper2);
  108. if (!evaluateData.isEmpty()){
  109. return CommonResult.fail("该评分项已评测,不可修改");
  110. }
  111. List<SmartTemplateRule> ruleList = smartTemplateRuleList.getRuleList();
  112. List<String> levels = ruleList.stream().filter(e->e.getDeleted().equals(0)).map(SmartTemplateRule::getLevel).collect(Collectors.toList());
  113. Set<String> levelSet = new HashSet<>(levels);
  114. if (levels.size() != levelSet.size()) {
  115. return CommonResult.fail("存在重复等级");
  116. }
  117. for (int i = 0; i < ruleList.size(); i++) {
  118. SmartTemplateRule rule = ruleList.get(i);
  119. if (rule.getId()==null){
  120. rule.setId((int) UUIDUtil.generateID());
  121. }
  122. rule.setTemplateId(smartSubjectTemplate.getId());
  123. SmartTemplateRule ruleListc = smartTemplateRuleService.getSmartTemplateRuleById(rule.getId());
  124. if (ruleListc==null){
  125. smartTemplateRuleService.insertSmartTemplateRule(rule);
  126. } else {
  127. smartTemplateRuleService.updateSmartTemplateRule(rule);
  128. }
  129. }
  130. smartSubjectTemplate.setDeleted(0);
  131. smartSubjectTemplateService.updateSmartSubjectTemplate(smartSubjectTemplate);
  132. return CommonResult.ok("操作成功");
  133. }
  134. @PassToken
  135. public CommonResult delSmartSubjectTemplate(Integer id) {
  136. if (id==null){
  137. return CommonResult.fail("请传入ID");
  138. }
  139. SmartSubjectTemplate smartSubjectTemplate = smartSubjectTemplateService.getSmartSubjectTemplateById(id);
  140. if (smartSubjectTemplate==null){
  141. return CommonResult.fail("该评分项不存在");
  142. }
  143. QueryWrapper<SmartEvaluateStudent> queryWrapper1 = new QueryWrapper<>();
  144. queryWrapper1.eq("deleted", 0);
  145. queryWrapper1.eq("grade_name", smartSubjectTemplate.getGrade());
  146. queryWrapper1.eq("term", smartSubjectTemplate.getTerm());
  147. // queryWrapper1.eq("exam_type", smartSubjectTemplate.getExamType());
  148. queryWrapper1.isNotNull("score_level");
  149. List<SmartEvaluateStudent> evaluateData = smartEvaluateStudentService.getSmartEvaluateStudentByKey(queryWrapper1);
  150. if (!evaluateData.isEmpty()){
  151. return CommonResult.fail("该评分项已评测,不可删除");
  152. }
  153. QueryWrapper<SmartTemplateRule> queryWrapper2 = new QueryWrapper<>();
  154. queryWrapper2.eq("deleted", 0);
  155. queryWrapper2.eq("template_id", smartSubjectTemplate.getId());
  156. List<SmartTemplateRule> listc = smartTemplateRuleService.getSmartTemplateRuleByKey(queryWrapper2);
  157. if (!listc.isEmpty()){
  158. SmartTemplateRule sr = new SmartTemplateRule();
  159. sr.setDeleted(1);
  160. smartTemplateRuleService.update(sr, queryWrapper2);
  161. }
  162. smartSubjectTemplateService.deleteSmartSubjectTemplateById(id);
  163. return CommonResult.ok("操作成功");
  164. }
  165. @PassToken
  166. @DESRespondSecret(validated = false)
  167. public CommonResult queryTemplatePage(Integer currentPage, Integer pageCount) {
  168. QueryWrapper<SmartSubjectTemplate> queryWrapper1 = new QueryWrapper<>();
  169. queryWrapper1.eq("deleted", 0);
  170. queryWrapper1.orderByDesc("id");
  171. PageUtils<SmartSubjectTemplate> list = smartSubjectTemplateService.queryPageSmartSubjectTemplate(currentPage, pageCount, queryWrapper1);
  172. return CommonResult.ok(list);
  173. }
  174. @PassToken
  175. @DESRespondSecret(validated = false)
  176. public CommonResult queryTemplateRulePage(Integer id) {
  177. QueryWrapper<SmartTemplateRule> queryWrapper1 = new QueryWrapper<>();
  178. queryWrapper1.eq("deleted", 0);
  179. queryWrapper1.eq("template_id", id);
  180. queryWrapper1.orderByDesc("id");
  181. List<SmartTemplateRule> list = smartTemplateRuleService.getSmartTemplateRuleByKey(queryWrapper1);
  182. return CommonResult.ok(list);
  183. }
  184. @PassToken
  185. public CommonResult evaluateScore(Integer id, String scoreComment) {
  186. if (id==null) {
  187. return CommonResult.fail("请传入ID");
  188. }
  189. SmartEvaluateStudent evaluateStudent = smartEvaluateStudentService.getSmartEvaluateStudentById(id);
  190. if (evaluateStudent==null){
  191. return CommonResult.fail("该条记录已删除");
  192. }
  193. QueryWrapper<SmartSubjectTemplate> queryWrapper1 = new QueryWrapper<>();
  194. queryWrapper1.eq("deleted", 0);
  195. queryWrapper1.eq("grade", evaluateStudent.getGradeName());
  196. queryWrapper1.eq("term", evaluateStudent.getTerm());
  197. List<SmartSubjectTemplate> templateList = smartSubjectTemplateService.getSmartSubjectTemplateByKey(queryWrapper1);
  198. if (templateList.isEmpty()){
  199. return CommonResult.fail("未查询到相关评价模板");
  200. }
  201. SmartSubjectTemplate template = templateList.get(0);
  202. String[] examType = template.getExamType().split(",");
  203. QueryWrapper<SmartGrade> queryWrapper2 = new QueryWrapper<>();
  204. queryWrapper2.eq("deleted", 0);
  205. queryWrapper2.eq("name", template.getGrade());
  206. SmartGrade smartGrade = smartGradeService.getOne(queryWrapper2);
  207. Double totalScore = 0.00;
  208. int k = 0;
  209. for (int i = 0; i < examType.length; i++) {
  210. QueryWrapper<SmartExamtype> queryWrapper3 = new QueryWrapper<>();
  211. queryWrapper3.eq("deleted", 0);
  212. queryWrapper3.eq("grade_id",smartGrade.getId());
  213. queryWrapper3.eq("name", examType[i]);
  214. SmartExamtype smartExamtype = smartExamtypeService.getOne(queryWrapper3);
  215. if (smartExamtype.getIsExam()==0){
  216. return CommonResult.fail(smartGrade.getName()+"-"+smartExamtype.getName()+"不支持综评!");
  217. }
  218. QueryWrapper<SmartScore> queryWrapper4 = new QueryWrapper<>();
  219. queryWrapper4.eq("deleted", 0);
  220. queryWrapper4.eq("semester", template.getTerm());
  221. queryWrapper4.eq("grade", template.getGrade());
  222. queryWrapper4.eq("exam_type", smartExamtype.getId());
  223. queryWrapper4.eq("card_no", evaluateStudent.getCardNo());
  224. List<SmartScore> scoreList = smartScoreService.list(queryWrapper4);
  225. if (scoreList.isEmpty()){
  226. return CommonResult.fail("未查询到"+evaluateStudent.getName()+"-"+template.getTerm()+"-"+smartExamtype.getName()+"考试成绩");
  227. }
  228. for (int j = 0; j < scoreList.size(); j++) {
  229. totalScore+=scoreList.get(j).getScore();
  230. k++;
  231. }
  232. }
  233. Double avgScore = totalScore/k;
  234. QueryWrapper<SmartTemplateRule> queryWrapper5 = new QueryWrapper<>();
  235. queryWrapper5.eq("deleted", 0);
  236. queryWrapper5.eq("template_id", template.getId());
  237. List<SmartTemplateRule> ruleList = smartTemplateRuleService.getSmartTemplateRuleByKey(queryWrapper5);
  238. if (ruleList.isEmpty()){
  239. return CommonResult.fail("未配置评分规则");
  240. }
  241. String scoreLevel = "";
  242. for (int j = 0; j < ruleList.size(); j++) {
  243. String[] range = ruleList.get(j).getScoreRange().split("-");
  244. double min = Double.parseDouble(range[0]);
  245. double max = Double.parseDouble(range[1]);
  246. if (avgScore >= min && avgScore <= max) {
  247. scoreLevel = ruleList.get(j).getLevel();
  248. break;
  249. }
  250. }
  251. evaluateStudent.setScoreNum(avgScore);
  252. evaluateStudent.setScoreLevel(scoreLevel);
  253. evaluateStudent.setScoreComment(scoreComment);
  254. smartEvaluateStudentService.updateSmartEvaluateStudent(evaluateStudent);
  255. return CommonResult.ok();
  256. }
  257. @PassToken
  258. public CommonResult queryEvaluateStudent(SmartEvaluateStudent smartEvaluateStudent, Integer currentPage, Integer pageCount) {
  259. QueryWrapper<SmartEvaluateStudent> queryWrapper1 = new QueryWrapper<>();
  260. queryWrapper1.eq("deleted", 0);
  261. if (smartEvaluateStudent.getName() != null && !smartEvaluateStudent.getName().trim().equals("")) {
  262. queryWrapper1.and(qw -> qw.like("name", smartEvaluateStudent.getName()).or().like("card_no", smartEvaluateStudent.getName()));
  263. }
  264. if (smartEvaluateStudent.getTerm() != null && !smartEvaluateStudent.getTerm().trim().equals("")) {
  265. queryWrapper1.like("term", smartEvaluateStudent.getTerm());
  266. }
  267. if (smartEvaluateStudent.getGradeName() != null && !smartEvaluateStudent.getGradeName().trim().equals("")) {
  268. queryWrapper1.eq("grade_name", smartEvaluateStudent.getGradeName());
  269. }
  270. if (smartEvaluateStudent.getClassName() != null && !smartEvaluateStudent.getClassName().trim().equals("")) {
  271. queryWrapper1.eq("class_name", smartEvaluateStudent.getClassName());
  272. }
  273. if (smartEvaluateStudent.getScoreLevel() != null && !smartEvaluateStudent.getScoreLevel().trim().equals("")) {
  274. queryWrapper1.eq("score_level", smartEvaluateStudent.getClassName());
  275. }
  276. queryWrapper1.orderByDesc("id");
  277. PageUtils<SmartEvaluateStudent> list = smartEvaluateStudentService.queryPageSmartEvaluateStudent(currentPage, pageCount, queryWrapper1);
  278. return CommonResult.ok(list);
  279. }
  280. }