package com.template.controller;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.template.annotation.DESRespondSecret;
import com.template.api.SmartSemesterControllerAPI;
import com.template.common.utils.TimeExchange;
import com.template.common.utils.paramUtils;
import com.template.model.evaluate.teacher.SmartEvaluateTdetail;
import com.template.model.evaluate.teacher.SmartEvaluateTeacher;
import com.template.model.evaluate.teacher.SmartScoreManage;
import com.template.model.pojo.SmartSemester;
import com.template.model.pojo.SmartIdentity;
import com.template.model.pojo.SmartSemester;
import com.template.model.pojo.SmartTeaching;
import com.template.model.result.CommonResult;
import com.template.model.result.PageUtils;
import com.template.model.vo.SemesterVo;
import com.template.model.vo.UserSubjectVo;
import com.template.services.*;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 应用管理 前端控制器
*
*
* @author ceshi
* @since 2024-03-07
*/
@RestController
//返回参数加密注解
@DESRespondSecret
public class SmartSemesterController implements SmartSemesterControllerAPI {
@Autowired
private SmartSemesterService smartSemesterService;
@Autowired
private SmartScoreManageService smartScoreManageService;
@Autowired
private SmartTeachingService smartTeachingService;
@Autowired
private SmartEvaluateTdetailService smartEvaluateTdetailService;
@Autowired
private SmartEvaluateTeacherService smartEvaluateTeacherService;
/**
* 新增学期
*
* @param smartApply 学期数据
* @param bindingResult
* @return
*/
@Override
@DESRespondSecret(validated = true)
@Transactional(rollbackFor = {Exception.class})
public CommonResult insertSmartSemester(SmartSemester smartApply, BindingResult bindingResult) throws Exception {
if (bindingResult.hasErrors()) {
String st = paramUtils.getParamError(bindingResult);
return CommonResult.fail(st);
}
Date startTime = smartApply.getStartTime();
Date endTime = smartApply.getEndTime();
SmartSemester semester = smartSemesterService.querySemesterByName(smartApply.getName());
if (semester != null) {
return CommonResult.fail(smartApply.getName() + "学期数据在系统中已存在");
}
//一天里不能是多个学期
List list = smartSemesterService.getSemesterTime(TimeExchange.DateToString(startTime, "yyyy-MM-dd HH:mm:ss"), TimeExchange.DateToString(endTime, "yyyy-MM-dd HH:mm:ss"));
if (ObjectUtils.isNotEmpty(list) && list.size() > 0) {
return CommonResult.fail("该时间段已包含其他学期");
}
try {
int result = smartSemesterService.insertSmartSemester(smartApply);
if (result <= 0) {
//return CommonResult.fail("添加失败");
throw new Exception("添加失败!");
}
//region 添加对应的默认教师评分项
List scoreManages = new ArrayList<>();
//region 德
SmartScoreManage morals = new SmartScoreManage();
morals.setTermId(result);
morals.setTerm(smartApply.getName());
morals.setScoreItem("德");
morals.setParentId(0);
morals.setScoreNum(12.0);
scoreManages.add(morals);
//endregion
//region 能
SmartScoreManage ability = new SmartScoreManage();
ability.setTermId(result);
ability.setTerm(smartApply.getName());
ability.setScoreItem("能");
ability.setParentId(0);
ability.setScoreNum(28.0);
scoreManages.add(ability);
//endregion
//region 勤
SmartScoreManage diligent = new SmartScoreManage();
diligent.setTermId(result);
diligent.setTerm(smartApply.getName());
diligent.setScoreItem("勤");
diligent.setParentId(0);
diligent.setScoreNum(6.0);
scoreManages.add(diligent);
//endregion
//region 绩
SmartScoreManage merit = new SmartScoreManage();
merit.setTermId(result);
merit.setTerm(smartApply.getName());
merit.setScoreItem("绩");
merit.setParentId(0);
merit.setScoreNum(54.0);
scoreManages.add(merit);
//endregion
boolean inserSManages = smartScoreManageService.saveBatch(scoreManages);
if (!inserSManages) {
//return CommonResult.fail("添加失败");
throw new Exception("添加失败!");
}
List scoreManagesData = smartScoreManageService.queryDatasByTermId(result);
List scoreManageDetails = new ArrayList<>();
for (SmartScoreManage data : scoreManagesData) {
switch (data.getScoreItem()) {
case "德":
SmartScoreManage one = new SmartScoreManage();
one.setTermId(result);
one.setTerm(smartApply.getName());
one.setScoreItem("为人师表");
one.setParentId(data.getId());
one.setScoreNum(3.0);
scoreManageDetails.add(one);
SmartScoreManage two = new SmartScoreManage();
two.setTermId(result);
two.setTerm(smartApply.getName());
two.setScoreItem("关爱学生");
two.setParentId(data.getId());
two.setScoreNum(3.0);
scoreManageDetails.add(two);
SmartScoreManage three = new SmartScoreManage();
three.setTermId(result);
three.setTerm(smartApply.getName());
three.setScoreItem("爱岗敬业");
three.setParentId(data.getId());
three.setScoreNum(6.0);
scoreManageDetails.add(three);
break;
case "能":
SmartScoreManage none = new SmartScoreManage();
none.setTermId(result);
none.setTerm(smartApply.getName());
none.setScoreItem("基础能力");
none.setParentId(data.getId());
none.setScoreNum(1.0);
scoreManageDetails.add(none);
SmartScoreManage ntwo = new SmartScoreManage();
ntwo.setTermId(result);
ntwo.setTerm(smartApply.getName());
ntwo.setScoreItem("教学能力");
ntwo.setParentId(data.getId());
ntwo.setScoreNum(16.0);
scoreManageDetails.add(ntwo);
SmartScoreManage nthree = new SmartScoreManage();
nthree.setTermId(result);
nthree.setTerm(smartApply.getName());
nthree.setScoreItem("学习能力");
nthree.setParentId(data.getId());
nthree.setScoreNum(7.0);
scoreManageDetails.add(nthree);
SmartScoreManage nfour = new SmartScoreManage();
nfour.setTermId(result);
nfour.setTerm(smartApply.getName());
nfour.setScoreItem("创新能力");
nfour.setParentId(data.getId());
nfour.setScoreNum(4.0);
scoreManageDetails.add(nfour);
break;
case "勤":
SmartScoreManage qone = new SmartScoreManage();
qone.setTermId(result);
qone.setTerm(smartApply.getName());
qone.setScoreItem("考勤");
qone.setParentId(data.getId());
qone.setScoreNum(6.0);
scoreManageDetails.add(qone);
break;
case "绩":
SmartScoreManage jone = new SmartScoreManage();
jone.setTermId(result);
jone.setTerm(smartApply.getName());
jone.setScoreItem("工作量");
jone.setParentId(data.getId());
jone.setScoreNum(8.0);
scoreManageDetails.add(jone);
SmartScoreManage jtwo = new SmartScoreManage();
jtwo.setTermId(result);
jtwo.setTerm(smartApply.getName());
jtwo.setScoreItem("教学成绩");
jtwo.setParentId(data.getId());
jtwo.setScoreNum(30.0);
scoreManageDetails.add(jtwo);
SmartScoreManage jthree = new SmartScoreManage();
jthree.setTermId(result);
jthree.setTerm(smartApply.getName());
jthree.setScoreItem("教研成果");
jthree.setParentId(data.getId());
jthree.setScoreNum(10.0);
scoreManageDetails.add(jthree);
SmartScoreManage jfour = new SmartScoreManage();
jfour.setTermId(result);
jfour.setTerm(smartApply.getName());
jfour.setScoreItem("专业成长");
jfour.setParentId(data.getId());
jfour.setScoreNum(6.0);
scoreManageDetails.add(jfour);
break;
default:
break;
}
}
boolean inserSDetails = smartScoreManageService.saveBatch(scoreManageDetails);
if (!inserSDetails) {
//return CommonResult.fail("添加失败");
throw new Exception("添加失败!");
}
//endregion
//region 任课老师赋值
List teachings = smartTeachingService.querySmartTeachings(null);
if (teachings != null && teachings.size() > 0) {
List sets = new ArrayList<>();
for (UserSubjectVo usv : teachings) {
if (usv.getUserName() != null) {
SmartEvaluateTeacher set = new SmartEvaluateTeacher();
set.setCardNo(usv.getCardNo());
set.setName(usv.getUserName());
set.setUserId(usv.getUserId());
set.setGradeId(usv.getGradeId());
set.setGradeName(usv.getGradeName());
set.setTermId(smartApply.getId());
set.setTerm(smartApply.getName());
set.setSubjectId(usv.getSubjectId());
set.setSubject(usv.getSubjectName());
set.setClassId(usv.getClassId());
set.setClassName(usv.getClassName());
set.setTotalScore(0.0);
set.setLowingScore(0.0);
sets.add(set);
}
}
if (sets != null && sets.size() > 0) {
boolean teacherBatch = smartEvaluateTeacherService.saveBatch(sets);
if (!teacherBatch) {
throw new Exception("添加失败!");
}
}
}
//endregion
} catch (Exception e) {
throw new Exception("添加失败!");
}
return CommonResult.ok("添加成功");
}
@Override
@Transactional(rollbackFor = {Exception.class})
public CommonResult testSmartSemester(int id) throws Exception {
SmartSemester smartApply = smartSemesterService.getSmartById(id);
try {
int result = smartApply.getId();
//region 添加对应的默认教师评分项
List scoreManages = new ArrayList<>();
//region 德
SmartScoreManage morals = new SmartScoreManage();
morals.setTermId(result);
morals.setTerm(smartApply.getName());
morals.setScoreItem("德");
morals.setParentId(0);
morals.setScoreNum(12.0);
scoreManages.add(morals);
//endregion
//region 能
SmartScoreManage ability = new SmartScoreManage();
ability.setTermId(result);
ability.setTerm(smartApply.getName());
ability.setScoreItem("能");
ability.setParentId(0);
ability.setScoreNum(28.0);
scoreManages.add(ability);
//endregion
//region 勤
SmartScoreManage diligent = new SmartScoreManage();
diligent.setTermId(result);
diligent.setTerm(smartApply.getName());
diligent.setScoreItem("勤");
diligent.setParentId(0);
diligent.setScoreNum(6.0);
scoreManages.add(diligent);
//endregion
//region 绩
SmartScoreManage merit = new SmartScoreManage();
merit.setTermId(result);
merit.setTerm(smartApply.getName());
merit.setScoreItem("绩");
merit.setParentId(0);
merit.setScoreNum(54.0);
scoreManages.add(merit);
//endregion
boolean inserSManages = smartScoreManageService.saveBatch(scoreManages);
if (!inserSManages) {
//return CommonResult.fail("添加失败");
throw new Exception("添加失败!");
}
List scoreManagesData = smartScoreManageService.queryDatasByTermId(result);
List scoreManageDetails = new ArrayList<>();
for (SmartScoreManage data : scoreManagesData) {
switch (data.getScoreItem()) {
case "德":
SmartScoreManage one = new SmartScoreManage();
one.setTermId(result);
one.setTerm(smartApply.getName());
one.setScoreItem("为人师表");
one.setParentId(data.getId());
one.setScoreNum(3.0);
scoreManageDetails.add(one);
SmartScoreManage two = new SmartScoreManage();
two.setTermId(result);
two.setTerm(smartApply.getName());
two.setScoreItem("关爱学生");
two.setParentId(data.getId());
two.setScoreNum(3.0);
scoreManageDetails.add(two);
SmartScoreManage three = new SmartScoreManage();
three.setTermId(result);
three.setTerm(smartApply.getName());
three.setScoreItem("爱岗敬业");
three.setParentId(data.getId());
three.setScoreNum(6.0);
scoreManageDetails.add(three);
break;
case "能":
SmartScoreManage none = new SmartScoreManage();
none.setTermId(result);
none.setTerm(smartApply.getName());
none.setScoreItem("基础能力");
none.setParentId(data.getId());
none.setScoreNum(1.0);
scoreManageDetails.add(none);
SmartScoreManage ntwo = new SmartScoreManage();
ntwo.setTermId(result);
ntwo.setTerm(smartApply.getName());
ntwo.setScoreItem("教学能力");
ntwo.setParentId(data.getId());
ntwo.setScoreNum(16.0);
scoreManageDetails.add(ntwo);
SmartScoreManage nthree = new SmartScoreManage();
nthree.setTermId(result);
nthree.setTerm(smartApply.getName());
nthree.setScoreItem("学习能力");
nthree.setParentId(data.getId());
nthree.setScoreNum(7.0);
scoreManageDetails.add(nthree);
SmartScoreManage nfour = new SmartScoreManage();
nfour.setTermId(result);
nfour.setTerm(smartApply.getName());
nfour.setScoreItem("创新能力");
nfour.setParentId(data.getId());
nfour.setScoreNum(4.0);
scoreManageDetails.add(nfour);
break;
case "勤":
SmartScoreManage qone = new SmartScoreManage();
qone.setTermId(result);
qone.setTerm(smartApply.getName());
qone.setScoreItem("考勤");
qone.setParentId(data.getId());
qone.setScoreNum(6.0);
scoreManageDetails.add(qone);
break;
case "绩":
SmartScoreManage jone = new SmartScoreManage();
jone.setTermId(result);
jone.setTerm(smartApply.getName());
jone.setScoreItem("工作量");
jone.setParentId(data.getId());
jone.setScoreNum(8.0);
scoreManageDetails.add(jone);
SmartScoreManage jtwo = new SmartScoreManage();
jtwo.setTermId(result);
jtwo.setTerm(smartApply.getName());
jtwo.setScoreItem("教学成绩");
jtwo.setParentId(data.getId());
jtwo.setScoreNum(30.0);
scoreManageDetails.add(jtwo);
SmartScoreManage jthree = new SmartScoreManage();
jthree.setTermId(result);
jthree.setTerm(smartApply.getName());
jthree.setScoreItem("教研成果");
jthree.setParentId(data.getId());
jthree.setScoreNum(10.0);
scoreManageDetails.add(jthree);
SmartScoreManage jfour = new SmartScoreManage();
jfour.setTermId(result);
jfour.setTerm(smartApply.getName());
jfour.setScoreItem("专业成长");
jfour.setParentId(data.getId());
jfour.setScoreNum(6.0);
scoreManageDetails.add(jfour);
break;
default:
break;
}
}
boolean inserSDetails = smartScoreManageService.saveBatch(scoreManageDetails);
if (!inserSDetails) {
//return CommonResult.fail("添加失败");
throw new Exception("添加失败!");
}
//endregion
//region 任课老师赋值
List teachings = smartTeachingService.querySmartTeachings(null);
if (teachings != null && teachings.size() > 0) {
List sets = new ArrayList<>();
for (UserSubjectVo usv : teachings) {
if (usv.getUserName() != null) {
SmartEvaluateTeacher set = new SmartEvaluateTeacher();
set.setCardNo(usv.getCardNo());
set.setName(usv.getUserName());
set.setUserId(usv.getUserId());
set.setGradeId(usv.getGradeId());
set.setGradeName(usv.getGradeName());
set.setTermId(smartApply.getId());
set.setTerm(smartApply.getName());
set.setSubjectId(usv.getSubjectId());
set.setSubject(usv.getSubjectName());
set.setClassId(usv.getClassId());
set.setClassName(usv.getClassName());
set.setTotalScore(0.0);
set.setLowingScore(0.0);
sets.add(set);
}
}
if (sets != null && sets.size() > 0) {
boolean teacherBatch = smartEvaluateTeacherService.saveBatch(sets);
if (!teacherBatch) {
throw new Exception("添加失败!");
}
}
}
//endregion
} catch (Exception e) {
throw new Exception("添加失败!");
}
return CommonResult.ok("添加成功");
}
/**
* 更新学期
*
* @param sa 学期数据
* @param bindingResult
* @return
*/
@Override
@DESRespondSecret(validated = true)
public CommonResult updateSmartSemesterById(SmartSemester sa, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
String st = paramUtils.getParamError(bindingResult);
return CommonResult.fail(st);
}
Date startTime = sa.getStartTime();
Date endTime = sa.getEndTime();
// 一天里不能是多个学期
List list = smartSemesterService.getSemesterTime(TimeExchange.DateToString(startTime,"yyyy-MM-dd HH:mm:ss") , TimeExchange.DateToString(endTime,"yyyy-MM-dd HH:mm:ss"));
if (ObjectUtils.isNotEmpty(list) && list.size() > 0) {
return CommonResult.fail("该时间段已包含其他学期");
}
int result = smartSemesterService.updateSmartSemester(sa);
return result > 0 ? CommonResult.ok("修改成功") : CommonResult.fail("修改失败");
}
/**
* 学期分页数据查询
*
* @param currentPage 当前页数
* @param pageCount 一页数据条数
* @param name 查询名称
* @return
*/
@Override
@DESRespondSecret(validated = true)
public CommonResult queryPageSmartSemesters(int currentPage, int pageCount, String name) {
PageUtils result = smartSemesterService.queryPageSmartSemesters(currentPage, pageCount, name);
return CommonResult.ok(result);
}
@Override
@DESRespondSecret(validated = true)
public CommonResult deleteSmartSemesterById(int id) {
SmartSemester data = smartSemesterService.getSmartById(id);
if (data == null) {
return CommonResult.fail("当前数据不存在,删除失败!");
}
int result = smartSemesterService.deleteSmartSemesterById(id);
return result > 0 ? CommonResult.ok("删除成功") : CommonResult.fail("删除失败");
}
@Override
@DESRespondSecret(validated = true)
public CommonResult getSmartSemester() {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.orderByDesc(SmartSemester::getStartTime);
List list = smartSemesterService.list(wrapper);
return CommonResult.ok(list);
}
}