综合导入逻辑修改
This commit is contained in:
@@ -3,21 +3,22 @@ package com.srs.comprehensive.mapper;
|
||||
import java.util.List;
|
||||
|
||||
import com.srs.comprehensive.domain.SrsCeScore;
|
||||
import com.srs.comprehensive.domain.SrsStudent;
|
||||
import com.srs.comprehensive.domain.Vo.SrsCeScoreStudentStuYear;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 综合评价Mapper接口
|
||||
*
|
||||
*
|
||||
* @author srs
|
||||
* @date 2023-06-28
|
||||
*/
|
||||
@Mapper
|
||||
public interface SrsCeScoreMapper
|
||||
{
|
||||
public interface SrsCeScoreMapper {
|
||||
/**
|
||||
* 查询综合评价
|
||||
*
|
||||
*
|
||||
* @param id 综合评价主键
|
||||
* @return 综合评价
|
||||
*/
|
||||
@@ -25,16 +26,17 @@ public interface SrsCeScoreMapper
|
||||
|
||||
/**
|
||||
* 查询综合评价列表
|
||||
*
|
||||
*
|
||||
* @param srsCeScore 综合评价
|
||||
* @return 综合评价集合
|
||||
*/
|
||||
public List<SrsCeScore> selectSrsCeScoreList(SrsCeScore srsCeScore);
|
||||
|
||||
public List<SrsCeScore> selectSrsCeScoreListS(SrsCeScore srsCeScore);
|
||||
|
||||
/**
|
||||
* 新增综合评价
|
||||
*
|
||||
*
|
||||
* @param srsCeScore 综合评价
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -42,15 +44,17 @@ public interface SrsCeScoreMapper
|
||||
|
||||
/**
|
||||
* 修改综合评价
|
||||
*
|
||||
*
|
||||
* @param srsCeScore 综合评价
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateSrsCeScore(SrsCeScore srsCeScore);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 删除综合评价
|
||||
*
|
||||
*
|
||||
* @param id 综合评价主键
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -58,14 +62,15 @@ public interface SrsCeScoreMapper
|
||||
|
||||
/**
|
||||
* 批量删除综合评价
|
||||
*
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSrsCeScoreByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
*综合评价连表查询
|
||||
* 综合评价连表查询
|
||||
*
|
||||
* @return 结果
|
||||
*/
|
||||
List<SrsCeScoreStudentStuYear> SrsCeScoreStudentStuYear(SrsCeScore srsCeScore);
|
||||
|
||||
@@ -36,7 +36,8 @@ public interface SrsStudentMapper extends EasyBaseMapper<SrsStudent>
|
||||
|
||||
public List<StuCount> countParkStu();
|
||||
|
||||
|
||||
// 根据多个班级ID查询学生
|
||||
List<SrsStudent> selectSrsStudentByClassIds(@Param("classIds") List<Long> classIds);
|
||||
public List<StuCount> countLakeGradeStu();
|
||||
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ import static com.srs.common.utils.SecurityUtils.getUsername;
|
||||
|
||||
/**
|
||||
* 综合评价Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author srs
|
||||
* @date 2023-06-28
|
||||
*/
|
||||
@@ -54,7 +54,7 @@ public class SrsCeScoreServiceImpl implements ISrsCeScoreService
|
||||
|
||||
/**
|
||||
* 查询综合评价
|
||||
*
|
||||
*
|
||||
* @param id 综合评价主键
|
||||
* @return 综合评价
|
||||
*/
|
||||
@@ -66,7 +66,7 @@ public class SrsCeScoreServiceImpl implements ISrsCeScoreService
|
||||
|
||||
/**
|
||||
* 查询综合评价列表
|
||||
*
|
||||
*
|
||||
* @param srsCeScore 综合评价
|
||||
* @return 综合评价
|
||||
*/
|
||||
@@ -78,7 +78,7 @@ public class SrsCeScoreServiceImpl implements ISrsCeScoreService
|
||||
|
||||
/**
|
||||
* 新增综合评价
|
||||
*
|
||||
*
|
||||
* @param srsCeScore 综合评价
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -91,7 +91,7 @@ public class SrsCeScoreServiceImpl implements ISrsCeScoreService
|
||||
|
||||
/**
|
||||
* 修改综合评价
|
||||
*
|
||||
*
|
||||
* @param srsCeScore 综合评价
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -104,7 +104,7 @@ public class SrsCeScoreServiceImpl implements ISrsCeScoreService
|
||||
|
||||
/**
|
||||
* 批量删除综合评价
|
||||
*
|
||||
*
|
||||
* @param ids 需要删除的综合评价主键
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -116,7 +116,7 @@ public class SrsCeScoreServiceImpl implements ISrsCeScoreService
|
||||
|
||||
/**
|
||||
* 删除综合评价信息
|
||||
*
|
||||
*
|
||||
* @param id 综合评价主键
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -147,76 +147,99 @@ public class SrsCeScoreServiceImpl implements ISrsCeScoreService
|
||||
student.setStuNo(student.getStuNo().trim());
|
||||
return student;
|
||||
})
|
||||
.collect(Collectors.toList());//清空前后空格
|
||||
int number=0;
|
||||
StringBuilder error= new StringBuilder();
|
||||
//查询辅导员
|
||||
.collect(Collectors.toList());
|
||||
|
||||
int number = 0;
|
||||
StringBuilder error = new StringBuilder();
|
||||
|
||||
// 查询辅导员
|
||||
CphTeacher cphTeacher = cphTeacherMapper.searchTeacherByTno(getUsername());
|
||||
SysUser sysUser = sysUserMapper.selectUserByUserName(getUsername());
|
||||
|
||||
if (!Objects.equals(sysUser.getUserName(), "admin")) {
|
||||
List<SrsStudent> srsStudentList = new ArrayList<>();//辅导员所带的学生
|
||||
//查询班级
|
||||
List<SrsStudent> srsStudentList = new ArrayList<>();
|
||||
// 查询班级
|
||||
SrsClass srsClass = new SrsClass();
|
||||
srsClass.setTeacherId(cphTeacher.getTeacherId());
|
||||
List<SrsClass> srsClasses = srsClassMapper.selectSrsClassListTeacherId(srsClass);//班级
|
||||
//查询辅导员所带的班级学生
|
||||
for (SrsClass scs : srsClasses) {
|
||||
SrsStudent srsStudent = new SrsStudent();
|
||||
srsStudent.setClassId(scs.getClassId());
|
||||
// srsStudent.setStatus("01");
|
||||
//根据班级id查询学生
|
||||
List<SrsStudent> srsStudentList1 = srsStudentMapper.selectSrsStudentList(srsStudent);
|
||||
srsStudentList.addAll(srsStudentList1);
|
||||
List<SrsClass> srsClasses = srsClassMapper.selectSrsClassListTeacherId(srsClass);
|
||||
|
||||
// 查询辅导员所带的班级学生 - 优化为批量查询
|
||||
if (!srsClasses.isEmpty()) {
|
||||
List<Long> classIds = srsClasses.stream()
|
||||
.map(SrsClass::getClassId)
|
||||
.collect(Collectors.toList());
|
||||
srsStudentList = srsStudentMapper.selectSrsStudentByClassIds(classIds);
|
||||
}
|
||||
|
||||
// 验证学生是否属于当前辅导员
|
||||
for (SrsCeScoreStudent scss : srsCeScoreStudents) {
|
||||
if (scss.getCeScore().compareTo(new BigDecimal(100))>0){
|
||||
if (scss.getCeScore().compareTo(new BigDecimal(100)) > 0) {
|
||||
scss.setCeScore(new BigDecimal(100));
|
||||
}
|
||||
int i = 0;
|
||||
for (SrsStudent ssd : srsStudentList) {
|
||||
if (Objects.equals(scss.getStuNo(), ssd.getStuNo())) {
|
||||
i = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == 0) {
|
||||
|
||||
boolean isValidStudent = srsStudentList.stream()
|
||||
.anyMatch(student -> Objects.equals(scss.getStuNo(), student.getStuNo()));
|
||||
|
||||
if (!isValidStudent) {
|
||||
error.append(scss.getStuNo()).append(",");
|
||||
}
|
||||
}
|
||||
|
||||
if (!error.toString().equals("")) {
|
||||
throw new RuntimeException("表中的学号:" + error + "不是所带的学生,请删除后再尝试导入!");
|
||||
}
|
||||
}
|
||||
//TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//标记为回滚状态
|
||||
for (SrsCeScoreStudent i:srsCeScoreStudents){
|
||||
//综合评价成绩
|
||||
SrsCeScore srsCeScore1 = new SrsCeScore();//综合评价
|
||||
SrsStudent srsStudent = srsStudentMapper.selectSrsStudentByStuNo(i.getStuNo());//查询学生信息
|
||||
srsCeScore1.setStuId(srsStudent.getStuId());//学生id
|
||||
srsCeScore1.setStuYearId(i.getStuYearId());//学年id
|
||||
List<SrsCeScore> srsCeScores = srsCeScoreMapper.selectSrsCeScoreListS(srsCeScore1);//查询综合评价表重复
|
||||
srsCeScore1.setCeScore(i.getCeScore());
|
||||
srsCeScore1.setStuNo(i.getStuNo());
|
||||
if (srsCeScores.size()==0){//判断综合评价表有没有重复的值
|
||||
srsCeScore1.setCreateBy(getUsername());
|
||||
srsCeScore1.setCreateTime(DateUtils.getNowDate());
|
||||
srsCeScoreMapper.insertSrsCeScore(srsCeScore1);//没有则添加
|
||||
//ifSrsAdd(srsAddRecord,srsAddRecords);
|
||||
number++;
|
||||
continue;
|
||||
}
|
||||
srsCeScore1.setUpdateBy(getUsername());
|
||||
srsCeScore1.setUpdateTime(DateUtils.getNowDate());
|
||||
srsCeScore1.setId(srsCeScores.get(0).getId());
|
||||
srsCeScoreMapper.updateSrsCeScore(srsCeScore1);//有则修改
|
||||
//ifSrsAdd(srsAddRecord,srsAddRecords);
|
||||
number++;
|
||||
|
||||
// 分批处理数据,减少事务持有时间
|
||||
int batchSize = 50; // 批处理大小
|
||||
for (int i = 0; i < srsCeScoreStudents.size(); i += batchSize) {
|
||||
int endIndex = Math.min(i + batchSize, srsCeScoreStudents.size());
|
||||
List<SrsCeScoreStudent> batch = srsCeScoreStudents.subList(i, endIndex);
|
||||
|
||||
// 在新的事务中处理每批数据
|
||||
number += processBatch(batch);
|
||||
}
|
||||
TransactionAspectSupport.currentTransactionStatus().flush();//手动提交事务
|
||||
//cphTotalScoreMapper.testFor(id);
|
||||
cphTestForService.testMethod(Math.toIntExact(srsCeScoreStudents.get(0).getStuYearId()));
|
||||
|
||||
// 处理完成后调用测试方法
|
||||
// if (!srsCeScoreStudents.isEmpty()) {
|
||||
// cphTestForService.testMethod(Math.toIntExact(srsCeScoreStudents.get(0).getStuYearId()));
|
||||
// }
|
||||
|
||||
return number;
|
||||
}
|
||||
|
||||
// 新增批处理方法
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int processBatch(List<SrsCeScoreStudent> batch) {
|
||||
int count = 0;
|
||||
|
||||
for (SrsCeScoreStudent i : batch) {
|
||||
// 综合评价成绩
|
||||
SrsCeScore srsCeScore1 = new SrsCeScore();
|
||||
SrsStudent srsStudent = srsStudentMapper.selectSrsStudentByStuNo(i.getStuNo());
|
||||
srsCeScore1.setStuId(srsStudent.getStuId());
|
||||
srsCeScore1.setStuYearId(i.getStuYearId());
|
||||
|
||||
List<SrsCeScore> srsCeScores = srsCeScoreMapper.selectSrsCeScoreListS(srsCeScore1);
|
||||
srsCeScore1.setCeScore(i.getCeScore());
|
||||
srsCeScore1.setStuNo(i.getStuNo());
|
||||
|
||||
if (srsCeScores.isEmpty()) {
|
||||
srsCeScore1.setCreateBy(getUsername());
|
||||
srsCeScore1.setCreateTime(DateUtils.getNowDate());
|
||||
srsCeScoreMapper.insertSrsCeScore(srsCeScore1);
|
||||
} else {
|
||||
srsCeScore1.setUpdateBy(getUsername());
|
||||
srsCeScore1.setUpdateTime(DateUtils.getNowDate());
|
||||
srsCeScore1.setId(srsCeScores.get(0).getId());
|
||||
srsCeScoreMapper.updateSrsCeScore(srsCeScore1);
|
||||
}
|
||||
count++;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
private void ifSrsAdd(SrsAddRecord srsAddRecord, List<SrsAddRecord> srsAddRecords){
|
||||
if (srsAddRecords.size()==0){
|
||||
//添加
|
||||
|
||||
Reference in New Issue
Block a user