学年
This commit is contained in:
@@ -63,12 +63,12 @@ public class BaseYearTermService implements IBaseYearTermService {
|
|||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
List<BaseYearTerm> yearTermList = getAllYearTerm();
|
List<BaseYearTerm> yearTermList = getAllYearTerm();
|
||||||
if (yearTermList == null || yearTermList.isEmpty()) {
|
if (yearTermList == null || yearTermList.isEmpty()) {
|
||||||
return null;
|
throw new DException("获取学年失败,当前时间不在当学年时间范围");
|
||||||
}
|
}
|
||||||
return yearTermList.stream()
|
return yearTermList.stream()
|
||||||
.filter(s -> s.getYearStartDate().compareTo(now) <= 0 && s.getYearEndDate().compareTo(now) >= 0)
|
.filter(s -> s.getYearStartDate().compareTo(now) <= 0 && s.getYearEndDate().compareTo(now) >= 0)
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElseThrow(() -> new DException("获取学年失败,当前时间不在当学年时间范围"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,13 +7,12 @@ import com.yunhai.bschclassmanage.enums.AcademicStage;
|
|||||||
import com.yunhai.bschclassmanage.enums.NodeType;
|
import com.yunhai.bschclassmanage.enums.NodeType;
|
||||||
import com.yunhai.bschclassmanage.enums.SchType;
|
import com.yunhai.bschclassmanage.enums.SchType;
|
||||||
import com.yunhai.bschclassmanage.model.entityField.EntityFieldNames;
|
import com.yunhai.bschclassmanage.model.entityField.EntityFieldNames;
|
||||||
|
import com.yunhai.bschclassmanage.model.tool.YearTerm;
|
||||||
import com.yunhai.bschclassmanage.model.vo.AcademicStageSchsystemVO;
|
import com.yunhai.bschclassmanage.model.vo.AcademicStageSchsystemVO;
|
||||||
import com.yunhai.bschclassmanage.model.vo.SchSystemVO;
|
import com.yunhai.bschclassmanage.model.vo.SchSystemVO;
|
||||||
import com.yunhai.bschclassmanage.model.vo.SelectIntVO;
|
import com.yunhai.bschclassmanage.model.vo.SelectIntVO;
|
||||||
import com.yunhai.bschclassmanage.model.vo.TreeSelectVO;
|
import com.yunhai.bschclassmanage.model.vo.TreeSelectVO;
|
||||||
import com.yunhai.bschclassmanage.service.IBaseSchsystemService;
|
import com.yunhai.bschclassmanage.service.*;
|
||||||
import com.yunhai.bschclassmanage.service.ISchBinSchsystemService;
|
|
||||||
import com.yunhai.bschclassmanage.service.ISendUserBaseService;
|
|
||||||
import com.yunhai.bschclassmanage.utils.RedisConstants;
|
import com.yunhai.bschclassmanage.utils.RedisConstants;
|
||||||
import com.yunhai.bschclassmanage.utils.RedisUtil;
|
import com.yunhai.bschclassmanage.utils.RedisUtil;
|
||||||
import com.yunhai.platform.utils.exception.DException;
|
import com.yunhai.platform.utils.exception.DException;
|
||||||
@@ -40,6 +39,10 @@ public class SchBinSchsystemService implements ISchBinSchsystemService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ISendUserBaseService sendUserBaseService;
|
private ISendUserBaseService sendUserBaseService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IBaseSchsystemGradeService baseSchsystemGradeService;
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedisUtil redisUtil;
|
private RedisUtil redisUtil;
|
||||||
|
|
||||||
@@ -252,12 +255,13 @@ public class SchBinSchsystemService implements ISchBinSchsystemService {
|
|||||||
//获取学段
|
//获取学段
|
||||||
List<Integer> schsystemIds= getSchBinSchsystemIds(schId);
|
List<Integer> schsystemIds= getSchBinSchsystemIds(schId);
|
||||||
|
|
||||||
//List<BaseSchsystem> baseSchsystems=baseSchsystemService.getSchsystemList().stream().filter(s->schsystemIds.contains(s.getId())).collect(Collectors.toList());
|
|
||||||
|
|
||||||
List<SchBinSchsystem> schBinSchsystemList= getSchBinSchsystemList(schId);
|
List<SchBinSchsystem> schBinSchsystemList= getSchBinSchsystemList(schId);
|
||||||
|
|
||||||
|
Integer stuParentId =stuGroup.getId();
|
||||||
|
Map<Integer,Integer> schsystemIdByAcademicStage=new HashMap<>();
|
||||||
if(newList.size()==1)
|
if(newList.size()==1)
|
||||||
{
|
{
|
||||||
|
schsystemIdByAcademicStage.put(schsystemIds.get(0),stuParentId);
|
||||||
}else if(newList.size()>1)
|
}else if(newList.size()>1)
|
||||||
{
|
{
|
||||||
Integer scort=1;
|
Integer scort=1;
|
||||||
@@ -265,12 +269,43 @@ public class SchBinSchsystemService implements ISchBinSchsystemService {
|
|||||||
String academicStageName= baseSchsystemService.getAcademicStageName(schsystem.getSchSystemId());
|
String academicStageName= baseSchsystemService.getAcademicStageName(schsystem.getSchSystemId());
|
||||||
BoaGroup sectionGroup= sendUserBaseService.addGroup(academicStageName,stuGroup.getId(),scort,NodeType.SECTION,schId);
|
BoaGroup sectionGroup= sendUserBaseService.addGroup(academicStageName,stuGroup.getId(),scort,NodeType.SECTION,schId);
|
||||||
schsystem.setGroupId(sectionGroup.getId());
|
schsystem.setGroupId(sectionGroup.getId());
|
||||||
|
schsystemIdByAcademicStage.put(schsystem.getSchSystemId(),sectionGroup.getId());
|
||||||
scort++;
|
scort++;
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
throw new DException("请选择学制!");
|
throw new DException("请选择学制!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (Integer schsystemId:schsystemIds)
|
||||||
|
{
|
||||||
|
stuParentId=schsystemIdByAcademicStage.get(schsystemId);
|
||||||
|
Set<Integer> years= baseSchsystemGradeService.getNowYearGradeMap(schId,schsystemId).keySet();
|
||||||
|
for (Integer year:years){
|
||||||
|
sendUserBaseService.addGroup(year.toString(),stuParentId,schsystemId,NodeType.GRADE,schId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// if(schsystemIds.size()>1)
|
||||||
|
// {
|
||||||
|
// for (Integer schsystemId:schsystemIds){
|
||||||
|
// String academicStageName= baseSchsystemService.getAcademicStageName(schsystemId);
|
||||||
|
// List<BoaGroup> schAcademicStageList= comSchTreeService.getAcademicStageGroupList(schId);
|
||||||
|
// Optional<BoaGroup> academicStageFirst= schAcademicStageList.stream().filter(s->Objects.equals(s.getName(),academicStageName)).findFirst();
|
||||||
|
// if(!academicStageFirst.isPresent())
|
||||||
|
// {
|
||||||
|
// BoaGroup academicGroup= sendUserBaseService.addGroup(academicStageName,stuGroup.getId(),schsystemId,NodeType.SECTION,schId);
|
||||||
|
// stuParentId=academicGroup.getId();
|
||||||
|
// }else {
|
||||||
|
// stuParentId=academicStageFirst.get().getId();
|
||||||
|
// }
|
||||||
|
// schsystemIdByAcademicStage.put(schsystemId,stuParentId);
|
||||||
|
// }
|
||||||
|
// }else {
|
||||||
|
// schsystemIdByAcademicStage.put(schsystemIds.get(0),stuParentId);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+93
-18
@@ -16,6 +16,7 @@ import com.yunhai.bschclassmanage.utils.UserContext;
|
|||||||
import com.yunhai.bschclassmanage.utils.ValidationUtil;
|
import com.yunhai.bschclassmanage.utils.ValidationUtil;
|
||||||
import com.yunhai.platform.utils.exception.DException;
|
import com.yunhai.platform.utils.exception.DException;
|
||||||
import com.yunhai.platform.utils.exception.ErrorCode;
|
import com.yunhai.platform.utils.exception.ErrorCode;
|
||||||
|
import com.yunhai.platform.utils.model.BoaGroup;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
@@ -63,6 +64,12 @@ public class SchClassImportService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SchClassLogService logService;
|
private SchClassLogService logService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISendUserBaseService sendUserBaseService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IBaseSchsystemService baseSchsystemService;
|
||||||
|
|
||||||
|
|
||||||
public void importClasses(UserContext.UserInfo user, MultipartFile file) {
|
public void importClasses(UserContext.UserInfo user, MultipartFile file) {
|
||||||
List<ErrorExcelColumn> errorMsgArr = new ArrayList<>();
|
List<ErrorExcelColumn> errorMsgArr = new ArrayList<>();
|
||||||
@@ -70,17 +77,41 @@ public class SchClassImportService {
|
|||||||
params.setTitleRows(1);
|
params.setTitleRows(1);
|
||||||
params.setHeadRows(1);
|
params.setHeadRows(1);
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
|
Integer schId = user.getSchId();
|
||||||
|
List<Integer> createdGroupIds = new ArrayList<>();
|
||||||
|
|
||||||
Map<Integer, List<SelectIntVO>> schGradeGroupMap = comSchTreeService.getSchGroupTypeList(user.getSchId(), NodeType.GRADE.getId());
|
BoaGroup stuGroup= comSchTreeService.getStuTree(schId,false);
|
||||||
if (schGradeGroupMap.isEmpty()) {
|
|
||||||
throw new DException("该学制下没有年级组,请先同步年级组数据!");
|
if(stuGroup==null){
|
||||||
|
throw new DException("学生组不存在!");
|
||||||
|
}
|
||||||
|
Integer stuParentId =stuGroup.getId();
|
||||||
|
Map<Integer,Integer> schsystemIdByAcademicStage=new HashMap<>();
|
||||||
|
List<Integer> schsystemIds= schBinSchsystemService.getSchBinSchsystemIds(schId);
|
||||||
|
//创建学段
|
||||||
|
if(schBinSchsystemService.getSchBinSchsystemIds(schId).size()==1)
|
||||||
|
{
|
||||||
|
schsystemIdByAcademicStage.put(schsystemIds.get(0),stuParentId);
|
||||||
|
}else {
|
||||||
|
for (Integer schsystemId:schsystemIds){
|
||||||
|
String academicStageName= baseSchsystemService.getAcademicStageName(schsystemId);
|
||||||
|
List<BoaGroup> schAcademicStageList= comSchTreeService.getAcademicStageGroupList(schId);
|
||||||
|
Optional<BoaGroup> academicStageFirst= schAcademicStageList.stream().filter(s->Objects.equals(s.getName(),academicStageName)).findFirst();
|
||||||
|
if(!academicStageFirst.isPresent())
|
||||||
|
{
|
||||||
|
BoaGroup academicGroup= sendUserBaseService.addGroup(academicStageName,stuGroup.getId(),schsystemId,NodeType.SECTION,schId);
|
||||||
|
createdGroupIds.add(academicGroup.getId());
|
||||||
|
stuParentId=academicGroup.getId();
|
||||||
|
}else {
|
||||||
|
stuParentId=academicStageFirst.get().getId();
|
||||||
|
}
|
||||||
|
schsystemIdByAcademicStage.put(schsystemId,stuParentId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Map<Integer, List<SelectIntVO>> schClassGroupMap = comSchTreeService.getSchGroupTypeList(user.getSchId(), NodeType.CLASS.getId());
|
|
||||||
|
|
||||||
try (InputStream is = file.getInputStream()) {
|
try (InputStream is = file.getInputStream()) {
|
||||||
List<SchTeacher> schTeacherList = schTeacherService.getSchTeacherList(user.getSchId());
|
List<SchTeacher> schTeacherList = schTeacherService.getSchTeacherList(schId);
|
||||||
List<SelectIntVO> gradeList = baseSchsystemGradeService.getGradeSelect(user.getSchId(), null, null);
|
List<SelectIntVO> gradeList = baseSchsystemGradeService.getGradeSelect(schId, null, null);
|
||||||
List<SchClass> schClassList = cacheService.getSchClassCacheList(user.getSchId());
|
List<SchClass> schClassList = cacheService.getSchClassCacheList(schId);
|
||||||
|
|
||||||
List<SchClassExcelColumn> list;
|
List<SchClassExcelColumn> list;
|
||||||
try {
|
try {
|
||||||
@@ -94,7 +125,10 @@ public class SchClassImportService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<SchClass> saveClassList = new ArrayList<>();
|
List<SchClass> saveClassList = new ArrayList<>();
|
||||||
int currentRow = params.getTitleRows() + params.getHeadRows() + 1;
|
Integer currentRow = params.getTitleRows() + params.getHeadRows() + 1;
|
||||||
|
// 同批导入时缓存已创建的年级组/班级组 ID,避免同一 Excel 多行重复推送平台组
|
||||||
|
Map<String, Integer> createdGradeCache = new HashMap<>();
|
||||||
|
Map<String, Integer> createdClassCache = new HashMap<>();
|
||||||
for (SchClassExcelColumn item : list) {
|
for (SchClassExcelColumn item : list) {
|
||||||
SchClass clazz = new SchClass();
|
SchClass clazz = new SchClass();
|
||||||
// 年级
|
// 年级
|
||||||
@@ -110,7 +144,12 @@ public class SchClassImportService {
|
|||||||
clazz.setGradeId(gradeId);
|
clazz.setGradeId(gradeId);
|
||||||
|
|
||||||
Integer schsystemId = baseSchsystemGradeService.getSchsystemIdByGradeId(user.getSchId(), gradeId);
|
Integer schsystemId = baseSchsystemGradeService.getSchsystemIdByGradeId(user.getSchId(), gradeId);
|
||||||
|
|
||||||
Map<Integer, Integer> nowYearGradeMap = baseSchsystemGradeService.getNowYearGradeMap(user.getSchId(), schsystemId);
|
Map<Integer, Integer> nowYearGradeMap = baseSchsystemGradeService.getNowYearGradeMap(user.getSchId(), schsystemId);
|
||||||
|
|
||||||
|
Map<Integer, List<SelectIntVO>> schGradeGroupMap = comSchTreeService.getSchGroupTypeList(schId, NodeType.GRADE.getId());
|
||||||
|
Map<Integer, List<SelectIntVO>> schClassGroupMap = comSchTreeService.getSchGroupTypeList(schId, NodeType.CLASS.getId());
|
||||||
|
|
||||||
List<SelectIntVO> gradeGroupList = schGradeGroupMap.get(schsystemId);
|
List<SelectIntVO> gradeGroupList = schGradeGroupMap.get(schsystemId);
|
||||||
List<SelectIntVO> classGroupList = schClassGroupMap.get(schsystemId);
|
List<SelectIntVO> classGroupList = schClassGroupMap.get(schsystemId);
|
||||||
|
|
||||||
@@ -132,22 +171,47 @@ public class SchClassImportService {
|
|||||||
}
|
}
|
||||||
clazz.setCreateDate(now);
|
clazz.setCreateDate(now);
|
||||||
clazz.setCreateUserId(user.getUserId());
|
clazz.setCreateUserId(user.getUserId());
|
||||||
clazz.setSchId(user.getSchId());
|
clazz.setSchId(schId);
|
||||||
clazz.setSort(sort);
|
clazz.setSort(sort);
|
||||||
String code = year.toString() + String.format("%02d", sort);
|
String code = year.toString() + String.format("%02d", sort);
|
||||||
clazz.setCode(code);
|
clazz.setCode(code);
|
||||||
clazz.setName(clazzName);
|
clazz.setName(clazzName);
|
||||||
clazz.setGraduate(false);
|
clazz.setGraduate(false);
|
||||||
clazz.setEnrollYear(year);
|
clazz.setEnrollYear(year);
|
||||||
clazz.setGroupId(0);
|
|
||||||
clazz.setClassId(0);
|
|
||||||
|
|
||||||
Map<String, Integer> gradeNameToIdMap = gradeGroupList.stream()
|
// 参考 addBaseSchClass:先定位年级组(parentId),缺失则推送平台创建;
|
||||||
.collect(Collectors.toMap(SelectIntVO::getName, SelectIntVO::getId, (a, b) -> a));
|
// 优先查快照,再查本批已创建缓存,避免同一 Excel 多行重复创建同名组
|
||||||
Map<String, Integer> classNameToIdMap = classGroupList.stream()
|
Integer parentId = (gradeGroupList == null) ? null
|
||||||
.collect(Collectors.toMap(SelectIntVO::getName, SelectIntVO::getId, (a, b) -> a));
|
: gradeGroupList.stream()
|
||||||
clazz.setGroupId(gradeNameToIdMap.getOrDefault(year.toString(), 0));
|
.filter(s -> Objects.equals(year.toString(), s.getName()))
|
||||||
clazz.setClassId(classNameToIdMap.getOrDefault(clazz.getCode(), 0));
|
.map(SelectIntVO::getId).findFirst().orElse(null);
|
||||||
|
if (parentId == null) {
|
||||||
|
parentId = createdGradeCache.get(schsystemId + "_" + year);
|
||||||
|
}
|
||||||
|
if (parentId == null || parentId == 0) {
|
||||||
|
BoaGroup gradeGroup = sendUserBaseService.addGroup(year.toString(), schsystemIdByAcademicStage.get(schsystemId), year, NodeType.GRADE, schId);
|
||||||
|
parentId = gradeGroup.getId();
|
||||||
|
createdGroupIds.add(parentId);
|
||||||
|
createdGradeCache.put(schsystemId + "_" + year, parentId);
|
||||||
|
}
|
||||||
|
clazz.setGroupId(parentId);
|
||||||
|
|
||||||
|
// 班级组推送平台,classId 取平台组 ID(与 addBaseSchClass 一致);同理防重复创建
|
||||||
|
Integer existClassId = (classGroupList == null) ? null
|
||||||
|
: classGroupList.stream()
|
||||||
|
.filter(s -> Objects.equals(code, s.getName()))
|
||||||
|
.map(SelectIntVO::getId).findFirst().orElse(null);
|
||||||
|
if (existClassId == null) {
|
||||||
|
existClassId = createdClassCache.get(code);
|
||||||
|
}
|
||||||
|
if (existClassId != null && existClassId > 0) {
|
||||||
|
clazz.setClassId(existClassId);
|
||||||
|
} else {
|
||||||
|
BoaGroup classGroup = sendUserBaseService.addGroup(code, parentId, sort, NodeType.CLASS, schId);
|
||||||
|
clazz.setClassId(classGroup.getId());
|
||||||
|
createdGroupIds.add(classGroup.getId());
|
||||||
|
createdClassCache.put(code, classGroup.getId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clazz.setCname(item.getClazzCName());
|
clazz.setCname(item.getClazzCName());
|
||||||
@@ -205,12 +269,23 @@ public class SchClassImportService {
|
|||||||
} catch (DException e) {
|
} catch (DException e) {
|
||||||
throw e;
|
throw e;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
// 导入失败:回滚已成功推送到平台的班级组/年级组,避免孤儿组
|
||||||
|
for (Integer groupId : createdGroupIds) {
|
||||||
|
try {
|
||||||
|
sendUserBaseService.deleteGroup(groupId, schId);
|
||||||
|
} catch (Exception ignore) {
|
||||||
|
log.error("回滚平台组失败 groupId={}", groupId, ignore);
|
||||||
|
}
|
||||||
|
}
|
||||||
log.error("导入班级时发生系统异常,操作人:" + user.getUserName(), e);
|
log.error("导入班级时发生系统异常,操作人:" + user.getUserName(), e);
|
||||||
throw new DException(ErrorCode.CUSTOM,"导入失败,请联系管理员",null,e);
|
throw new DException(ErrorCode.CUSTOM,"导入失败,请联系管理员",null,e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void importHeightClasses(UserContext.UserInfo user, MultipartFile file) {
|
public void importHeightClasses(UserContext.UserInfo user, MultipartFile file) {
|
||||||
List<ErrorExcelColumn> errorMsgArr = new ArrayList<>();
|
List<ErrorExcelColumn> errorMsgArr = new ArrayList<>();
|
||||||
ImportParams params = new ImportParams();
|
ImportParams params = new ImportParams();
|
||||||
|
|||||||
@@ -146,6 +146,7 @@ public class SchClassInfoService {
|
|||||||
LogContextHolder.setDescription(content);
|
LogContextHolder.setDescription(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ---------- 编辑班级别名 ----------
|
// ---------- 编辑班级别名 ----------
|
||||||
public void editClassName(UserContext.UserInfo user, Integer id, String cname) {
|
public void editClassName(UserContext.UserInfo user, Integer id, String cname) {
|
||||||
Integer schId = user.getSchId();
|
Integer schId = user.getSchId();
|
||||||
|
|||||||
@@ -974,7 +974,7 @@ public class ComSchTreeService implements IComSchTreeService {
|
|||||||
//-------------
|
//-------------
|
||||||
|
|
||||||
public SchSystemTreeVO getClassHistoryTree(Integer schId) {
|
public SchSystemTreeVO getClassHistoryTree(Integer schId) {
|
||||||
if(schBinSchsystemService.getSchType(schId).equals(SchType.BASICEDUCATION.getKey()))
|
if(SchType.BASICEDUCATION.getKey().equals(schBinSchsystemService.getSchType(schId)))
|
||||||
{
|
{
|
||||||
return getGradeClassTreeWithFullName(schId);
|
return getGradeClassTreeWithFullName(schId);
|
||||||
}else {
|
}else {
|
||||||
@@ -1059,7 +1059,8 @@ public class ComSchTreeService implements IComSchTreeService {
|
|||||||
int year = startYear + i;
|
int year = startYear + i;
|
||||||
if (year >= minYear && year <= currentYear) {
|
if (year >= minYear && year <= currentYear) {
|
||||||
// 如果年级列表有该索引,使用名称;否则用默认
|
// 如果年级列表有该索引,使用名称;否则用默认
|
||||||
String name = (i < gradeNameList.size()) ? gradeNameList.get(i) : (i + 1) + "年级";
|
// gradeNameList 按 gradeId 倒序(最高年级在前),而年份从低到高,索引需反向取
|
||||||
|
String name = (i < gradeNameList.size()) ? gradeNameList.get(gradeNameList.size() - 1 - i) : (i + 1) + "年级";
|
||||||
yearToGradeName.put(year, name);
|
yearToGradeName.put(year, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1149,6 +1150,12 @@ public class ComSchTreeService implements IComSchTreeService {
|
|||||||
SchSystemTreeVO root = buildSchoolRoot(schId);
|
SchSystemTreeVO root = buildSchoolRoot(schId);
|
||||||
root.setExpand(true);
|
root.setExpand(true);
|
||||||
|
|
||||||
|
// 高职学制长度(按学校专业最大学制,与 getHigherSchGradeClassTree 保持一致;无则默认3)
|
||||||
|
Integer majorLeng = schDicMajorsRepository.findMaxSchsystemLengBySchId(schId).orElse(0);
|
||||||
|
if (majorLeng == null || majorLeng <= 0) {
|
||||||
|
majorLeng = 3;
|
||||||
|
}
|
||||||
|
|
||||||
// 2. 获取该校所有班级
|
// 2. 获取该校所有班级
|
||||||
List<SchClass> allClasses = schClassService.getSchAllClassCacheList(schId);
|
List<SchClass> allClasses = schClassService.getSchAllClassCacheList(schId);
|
||||||
if (CollectionUtils.isEmpty(allClasses)) {
|
if (CollectionUtils.isEmpty(allClasses)) {
|
||||||
@@ -1175,12 +1182,10 @@ public class ComSchTreeService implements IComSchTreeService {
|
|||||||
for (int year = currentYear; year >= minYear; year--) {
|
for (int year = currentYear; year >= minYear; year--) {
|
||||||
List<SchClass> classList = classByYear.getOrDefault(year, Collections.emptyList());
|
List<SchClass> classList = classByYear.getOrDefault(year, Collections.emptyList());
|
||||||
|
|
||||||
// 计算毕业状态(假设学制3年,可根据实际调整)
|
// 计算毕业状态(按学校高职学制长度,与 getHigherSchGradeClassTree 保持一致)
|
||||||
int graduation = 0;
|
int graduation = 0;
|
||||||
if (year >0) {
|
Integer graduationYear = year + majorLeng;
|
||||||
Integer graduationYear = year + 3; // 3年制
|
graduation = (currentYear >= graduationYear) ? 1 : 0;
|
||||||
graduation = (currentYear >= graduationYear) ? 1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 构建年级节点
|
// 构建年级节点
|
||||||
SchSystemTreeVO gradeNode = new SchSystemTreeVO();
|
SchSystemTreeVO gradeNode = new SchSystemTreeVO();
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
//SendUserBase
|
//SendUserBase
|
||||||
|
|||||||
Reference in New Issue
Block a user