SmartSemesterController.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. package com.template.controller;
  2. import com.baomidou.mybatisplus.core.conditions.Wrapper;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.template.annotation.DESRespondSecret;
  5. import com.template.api.SmartSemesterControllerAPI;
  6. import com.template.common.utils.TimeExchange;
  7. import com.template.common.utils.paramUtils;
  8. import com.template.model.enumModel.eDuties;
  9. import com.template.model.evaluate.teacher.SmartEvaluateTdetail;
  10. import com.template.model.evaluate.teacher.SmartEvaluateTeacher;
  11. import com.template.model.evaluate.teacher.SmartScoreManage;
  12. import com.template.model.pojo.*;
  13. import com.template.model.pojo.SmartSemester;
  14. import com.template.model.result.CommonResult;
  15. import com.template.model.result.PageUtils;
  16. import com.template.model.vo.SemesterVo;
  17. import com.template.model.vo.UserSubjectVo;
  18. import com.template.services.*;
  19. import org.apache.commons.lang3.ObjectUtils;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import org.springframework.validation.BindingResult;
  24. import org.springframework.web.bind.annotation.RequestMapping;
  25. import org.springframework.web.bind.annotation.RestController;
  26. import java.util.ArrayList;
  27. import java.util.Date;
  28. import java.util.List;
  29. import java.util.Optional;
  30. import java.util.stream.Collectors;
  31. /**
  32. * <p>
  33. * 应用管理 前端控制器
  34. * </p>
  35. *
  36. * @author ceshi
  37. * @since 2024-03-07
  38. */
  39. @RestController
  40. //返回参数加密注解
  41. @DESRespondSecret
  42. public class SmartSemesterController implements SmartSemesterControllerAPI {
  43. @Autowired
  44. private SmartSemesterService smartSemesterService;
  45. @Autowired
  46. private SmartScoreManageService smartScoreManageService;
  47. @Autowired
  48. private SmartTeachingService smartTeachingService;
  49. @Autowired
  50. private SmartEvaluateTdetailService smartEvaluateTdetailService;
  51. @Autowired
  52. private SmartEvaluateTeacherService smartEvaluateTeacherService;
  53. @Autowired
  54. private SmartUserService smartUserService;
  55. @Autowired
  56. private SmartClassService smartClassService;
  57. @Autowired
  58. private SmartGradeService smartGradeService;
  59. /**
  60. * 新增学期
  61. *
  62. * @param smartApply 学期数据
  63. * @param bindingResult
  64. * @return
  65. */
  66. @Override
  67. @DESRespondSecret(validated = true)
  68. @Transactional(rollbackFor = {Exception.class})
  69. public CommonResult insertSmartSemester(SmartSemester smartApply, BindingResult bindingResult) throws Exception {
  70. if (bindingResult.hasErrors()) {
  71. String st = paramUtils.getParamError(bindingResult);
  72. return CommonResult.fail(st);
  73. }
  74. Date startTime = smartApply.getStartTime();
  75. Date endTime = smartApply.getEndTime();
  76. SmartSemester semester = smartSemesterService.querySemesterByName(smartApply.getName());
  77. if (semester != null) {
  78. return CommonResult.fail(smartApply.getName() + "学期数据在系统中已存在");
  79. }
  80. //一天里不能是多个学期
  81. List<SmartSemester> list = smartSemesterService.getSemesterTime(TimeExchange.DateToString(startTime, "yyyy-MM-dd HH:mm:ss"), TimeExchange.DateToString(endTime, "yyyy-MM-dd HH:mm:ss"));
  82. if (ObjectUtils.isNotEmpty(list) && list.size() > 0) {
  83. return CommonResult.fail("该时间段已包含其他学期");
  84. }
  85. try {
  86. int result = smartSemesterService.insertSmartSemester(smartApply);
  87. if (result <= 0) {
  88. //return CommonResult.fail("添加失败");
  89. throw new Exception("添加失败!");
  90. }
  91. //region 添加对应的默认教师评分项
  92. List<SmartScoreManage> scoreManages = new ArrayList<>();
  93. //region 德
  94. SmartScoreManage morals = new SmartScoreManage();
  95. morals.setTermId(result);
  96. morals.setTerm(smartApply.getName());
  97. morals.setScoreItem("德");
  98. morals.setParentId(0);
  99. morals.setScoreNum(12.0);
  100. scoreManages.add(morals);
  101. //endregion
  102. //region 能
  103. SmartScoreManage ability = new SmartScoreManage();
  104. ability.setTermId(result);
  105. ability.setTerm(smartApply.getName());
  106. ability.setScoreItem("能");
  107. ability.setParentId(0);
  108. ability.setScoreNum(28.0);
  109. scoreManages.add(ability);
  110. //endregion
  111. //region 勤
  112. SmartScoreManage diligent = new SmartScoreManage();
  113. diligent.setTermId(result);
  114. diligent.setTerm(smartApply.getName());
  115. diligent.setScoreItem("勤");
  116. diligent.setParentId(0);
  117. diligent.setScoreNum(6.0);
  118. scoreManages.add(diligent);
  119. //endregion
  120. //region 绩
  121. SmartScoreManage merit = new SmartScoreManage();
  122. merit.setTermId(result);
  123. merit.setTerm(smartApply.getName());
  124. merit.setScoreItem("绩");
  125. merit.setParentId(0);
  126. merit.setScoreNum(54.0);
  127. scoreManages.add(merit);
  128. //endregion
  129. boolean inserSManages = smartScoreManageService.saveBatch(scoreManages);
  130. if (!inserSManages) {
  131. //return CommonResult.fail("添加失败");
  132. throw new Exception("添加失败!");
  133. }
  134. List<SmartScoreManage> scoreManagesData = smartScoreManageService.queryDatasByTermId(result);
  135. List<SmartScoreManage> scoreManageDetails = new ArrayList<>();
  136. for (SmartScoreManage data : scoreManagesData) {
  137. switch (data.getScoreItem()) {
  138. case "德":
  139. SmartScoreManage one = new SmartScoreManage();
  140. one.setTermId(result);
  141. one.setTerm(smartApply.getName());
  142. one.setScoreItem("为人师表");
  143. one.setParentId(data.getId());
  144. one.setScoreNum(3.0);
  145. scoreManageDetails.add(one);
  146. SmartScoreManage two = new SmartScoreManage();
  147. two.setTermId(result);
  148. two.setTerm(smartApply.getName());
  149. two.setScoreItem("关爱学生");
  150. two.setParentId(data.getId());
  151. two.setScoreNum(3.0);
  152. scoreManageDetails.add(two);
  153. SmartScoreManage three = new SmartScoreManage();
  154. three.setTermId(result);
  155. three.setTerm(smartApply.getName());
  156. three.setScoreItem("爱岗敬业");
  157. three.setParentId(data.getId());
  158. three.setScoreNum(6.0);
  159. scoreManageDetails.add(three);
  160. break;
  161. case "能":
  162. SmartScoreManage none = new SmartScoreManage();
  163. none.setTermId(result);
  164. none.setTerm(smartApply.getName());
  165. none.setScoreItem("基础能力");
  166. none.setParentId(data.getId());
  167. none.setScoreNum(1.0);
  168. scoreManageDetails.add(none);
  169. SmartScoreManage ntwo = new SmartScoreManage();
  170. ntwo.setTermId(result);
  171. ntwo.setTerm(smartApply.getName());
  172. ntwo.setScoreItem("教学能力");
  173. ntwo.setParentId(data.getId());
  174. ntwo.setScoreNum(16.0);
  175. scoreManageDetails.add(ntwo);
  176. SmartScoreManage nthree = new SmartScoreManage();
  177. nthree.setTermId(result);
  178. nthree.setTerm(smartApply.getName());
  179. nthree.setScoreItem("学习能力");
  180. nthree.setParentId(data.getId());
  181. nthree.setScoreNum(7.0);
  182. scoreManageDetails.add(nthree);
  183. SmartScoreManage nfour = new SmartScoreManage();
  184. nfour.setTermId(result);
  185. nfour.setTerm(smartApply.getName());
  186. nfour.setScoreItem("创新能力");
  187. nfour.setParentId(data.getId());
  188. nfour.setScoreNum(4.0);
  189. scoreManageDetails.add(nfour);
  190. break;
  191. case "勤":
  192. SmartScoreManage qone = new SmartScoreManage();
  193. qone.setTermId(result);
  194. qone.setTerm(smartApply.getName());
  195. qone.setScoreItem("考勤");
  196. qone.setParentId(data.getId());
  197. qone.setScoreNum(6.0);
  198. scoreManageDetails.add(qone);
  199. break;
  200. case "绩":
  201. SmartScoreManage jone = new SmartScoreManage();
  202. jone.setTermId(result);
  203. jone.setTerm(smartApply.getName());
  204. jone.setScoreItem("工作量");
  205. jone.setParentId(data.getId());
  206. jone.setScoreNum(8.0);
  207. scoreManageDetails.add(jone);
  208. SmartScoreManage jtwo = new SmartScoreManage();
  209. jtwo.setTermId(result);
  210. jtwo.setTerm(smartApply.getName());
  211. jtwo.setScoreItem("教学成绩");
  212. jtwo.setParentId(data.getId());
  213. jtwo.setScoreNum(30.0);
  214. scoreManageDetails.add(jtwo);
  215. SmartScoreManage jthree = new SmartScoreManage();
  216. jthree.setTermId(result);
  217. jthree.setTerm(smartApply.getName());
  218. jthree.setScoreItem("教研成果");
  219. jthree.setParentId(data.getId());
  220. jthree.setScoreNum(10.0);
  221. scoreManageDetails.add(jthree);
  222. SmartScoreManage jfour = new SmartScoreManage();
  223. jfour.setTermId(result);
  224. jfour.setTerm(smartApply.getName());
  225. jfour.setScoreItem("专业成长");
  226. jfour.setParentId(data.getId());
  227. jfour.setScoreNum(6.0);
  228. scoreManageDetails.add(jfour);
  229. break;
  230. default:
  231. break;
  232. }
  233. }
  234. boolean inserSDetails = smartScoreManageService.saveBatch(scoreManageDetails);
  235. if (!inserSDetails) {
  236. //return CommonResult.fail("添加失败");
  237. throw new Exception("添加失败!");
  238. }
  239. //endregion
  240. //region 获取老师
  241. List<SmartUser> teachings = smartUserService.queryTeachers();
  242. List<SmartClass> classes = smartClassService.list(null);
  243. List<SmartGrade> grades = smartGradeService.list(null);
  244. if (teachings != null && teachings.size() > 0) {
  245. List<SmartEvaluateTeacher> sets = new ArrayList<>();
  246. for (SmartUser usv : teachings) {
  247. if (usv.getName() != null) {
  248. SmartEvaluateTeacher set = new SmartEvaluateTeacher();
  249. set.setCardNo(usv.getCardNo());
  250. set.setName(usv.getName());
  251. set.setUserId(usv.getId());
  252. set.setTermId(smartApply.getId());
  253. set.setTerm(smartApply.getName());
  254. if (usv.getDuties().intValue() == eDuties.ClassTeacher.getValue()) {//班主任才有年级和班级
  255. set.setGradeId(Integer.valueOf(usv.getGrade()));
  256. Optional<SmartGrade> oGrade = grades.stream().filter(e -> e.getId().equals(set.getGradeId())).findFirst();
  257. if (oGrade != null && oGrade.isPresent()) {
  258. set.setGradeName(oGrade.get().getName());
  259. }
  260. set.setClassId(usv.getSchoolClass());
  261. Optional<SmartClass> oClass = classes.stream().filter(e -> e.getId().equals(set.getClassId())).findFirst();
  262. if (oClass != null && oClass.isPresent()) {
  263. set.setClassName(oClass.get().getName());
  264. }
  265. }
  266. set.setTotalScore(0.0);
  267. set.setLowingScore(0.0);
  268. sets.add(set);
  269. }
  270. }
  271. if (sets != null && sets.size() > 0) {
  272. boolean teacherBatch = smartEvaluateTeacherService.saveBatch(sets);
  273. if (!teacherBatch) {
  274. throw new Exception("添加失败!");
  275. }
  276. }
  277. }
  278. //endregion
  279. } catch (Exception e) {
  280. throw new Exception("添加失败!");
  281. }
  282. return CommonResult.ok("添加成功");
  283. }
  284. @Override
  285. @Transactional(rollbackFor = {Exception.class})
  286. public CommonResult pullSemesterTeacher() throws Exception {
  287. List<SmartEvaluateTeacher> insertETeachers = new ArrayList<>();
  288. List<SmartSemester> semesters = smartSemesterService.list(null);
  289. List<SmartEvaluateTeacher> evaluateTeachers = smartEvaluateTeacherService.list(null);
  290. List<SmartUser> teachers = smartUserService.queryTeachers();
  291. List<SmartClass> classes = smartClassService.list(null);
  292. List<SmartGrade> grades = smartGradeService.list(null);
  293. try {
  294. for (SmartUser teacher : teachers) {
  295. for (SmartSemester semester : semesters) {
  296. //<0 : A < B
  297. //=0 : A = B
  298. //>0 : A > B
  299. if (semester.getEndTime().compareTo(teacher.getCreateTime()) >= 0) {//说明在半学期创建的老师
  300. long existCount = evaluateTeachers.stream().filter(e -> e.getUserId().equals(teacher.getId()) && e.getTermId().equals(semester.getId())).count();
  301. if (existCount <= 0) {
  302. SmartEvaluateTeacher set = new SmartEvaluateTeacher();
  303. set.setCardNo(teacher.getCardNo());
  304. set.setName(teacher.getName());
  305. set.setUserId(teacher.getId());
  306. set.setTermId(semester.getId());
  307. set.setTerm(semester.getName());
  308. if (teacher.getDuties().intValue() == eDuties.ClassTeacher.getValue()) {//班主任才有年级和班级
  309. set.setGradeId(Integer.valueOf(teacher.getGrade()));
  310. Optional<SmartGrade> oGrade = grades.stream().filter(e -> e.getId().equals(set.getGradeId())).findFirst();
  311. if (oGrade != null && oGrade.isPresent()) {
  312. set.setGradeName(oGrade.get().getName());
  313. }
  314. set.setClassId(teacher.getSchoolClass());
  315. Optional<SmartClass> oClass = classes.stream().filter(e -> e.getId().equals(set.getClassId())).findFirst();
  316. if (oClass != null && oClass.isPresent()) {
  317. set.setClassName(oClass.get().getName());
  318. }
  319. }
  320. set.setTotalScore(0.0);
  321. set.setLowingScore(0.0);
  322. insertETeachers.add(set);
  323. }
  324. }
  325. }
  326. }
  327. if(insertETeachers != null && insertETeachers.size() > 0){
  328. boolean insertEteacher = smartEvaluateTeacherService.saveBatch(insertETeachers);
  329. if(!insertEteacher){
  330. throw new Exception("更新失败!");
  331. }
  332. }
  333. } catch (Exception e) {
  334. throw new Exception("更新失败!");
  335. }
  336. return CommonResult.ok("更新成功");
  337. }
  338. /**
  339. * 更新学期
  340. *
  341. * @param sa 学期数据
  342. * @param bindingResult
  343. * @return
  344. */
  345. @Override
  346. @DESRespondSecret(validated = true)
  347. public CommonResult updateSmartSemesterById(SmartSemester sa, BindingResult bindingResult) {
  348. if (bindingResult.hasErrors()) {
  349. String st = paramUtils.getParamError(bindingResult);
  350. return CommonResult.fail(st);
  351. }
  352. Date startTime = sa.getStartTime();
  353. Date endTime = sa.getEndTime();
  354. // 一天里不能是多个学期
  355. List<SmartSemester> list = smartSemesterService.getSemesterTime(TimeExchange.DateToString(startTime, "yyyy-MM-dd HH:mm:ss"), TimeExchange.DateToString(endTime, "yyyy-MM-dd HH:mm:ss"));
  356. if (ObjectUtils.isNotEmpty(list) && list.size() > 0) {
  357. return CommonResult.fail("该时间段已包含其他学期");
  358. }
  359. int result = smartSemesterService.updateSmartSemester(sa);
  360. return result > 0 ? CommonResult.ok("修改成功") : CommonResult.fail("修改失败");
  361. }
  362. /**
  363. * 学期分页数据查询
  364. *
  365. * @param currentPage 当前页数
  366. * @param pageCount 一页数据条数
  367. * @param name 查询名称
  368. * @return
  369. */
  370. @Override
  371. @DESRespondSecret(validated = true)
  372. public CommonResult queryPageSmartSemesters(int currentPage, int pageCount, String name) {
  373. PageUtils<SmartSemester> result = smartSemesterService.queryPageSmartSemesters(currentPage, pageCount, name);
  374. return CommonResult.ok(result);
  375. }
  376. @Override
  377. @DESRespondSecret(validated = true)
  378. public CommonResult deleteSmartSemesterById(int id) {
  379. SmartSemester data = smartSemesterService.getSmartById(id);
  380. if (data == null) {
  381. return CommonResult.fail("当前数据不存在,删除失败!");
  382. }
  383. int result = smartSemesterService.deleteSmartSemesterById(id);
  384. if(result <= 0){
  385. return CommonResult.fail("删除失败");
  386. }
  387. //把smart_score_manage 和 smart_evaluate_tdetail 表中的数据删除
  388. smartScoreManageService.deleteSmartScoreManageByTermId(id);
  389. smartEvaluateTdetailService.deleteSmartEvaluateTdetailByTermId(id);
  390. return CommonResult.ok("删除成功");
  391. }
  392. @Override
  393. @DESRespondSecret(validated = true)
  394. public CommonResult getSmartSemester() {
  395. LambdaQueryWrapper<SmartSemester> wrapper = new LambdaQueryWrapper<>();
  396. wrapper.orderByDesc(SmartSemester::getStartTime);
  397. List<SmartSemester> list = smartSemesterService.list(wrapper);
  398. return CommonResult.ok(list);
  399. }
  400. }