forked from liweijie/education
1、课时统计功能调整新增;
2、教学楼序号改为自动填充,无需填写; 3、教学楼检索,教学楼代号下拉选择; 4、课表冲突检查修复
This commit is contained in:
+53
-39
@@ -135,6 +135,10 @@ public class KCBServiceImpl implements KCBService {
|
||||
|
||||
@Override
|
||||
public void exportSemesterGrades(TimetableQuery cond, HttpServletResponse response) {
|
||||
// 成绩表按学员粒度返回且不支持教员过滤,教员账号不能导出
|
||||
if (jwglRoleHelper.isTeacher()) {
|
||||
throw new BusinessException(BasicManagementConstants.FORBIDDEN, "教员账号不能导出学期成绩表");
|
||||
}
|
||||
TimetableQuery filter = prepareFilter(cond);
|
||||
List<SemesterGradeExportVO> list = kcbTimetableMapper.selectSemesterGrades(filter);
|
||||
ExcelUtil<SemesterGradeExportVO> util = new ExcelUtil<>(SemesterGradeExportVO.class);
|
||||
@@ -183,60 +187,70 @@ public class KCBServiceImpl implements KCBService {
|
||||
result.setRq(viewDate.format(DATE_FORMAT));
|
||||
result.setStartDate(start.format(DATE_FORMAT));
|
||||
result.setEndDate(end.format(DATE_FORMAT));
|
||||
// 今日/本周按日期范围取数不锁年度(翻页可跨年),角色限定与组合查询一致
|
||||
TimetableQuery scope = applyRoleScope(new TimetableQuery());
|
||||
result.setList(kcbTimetableMapper.selectLessonTimetable(
|
||||
null, result.getStartDate(), result.getEndDate()));
|
||||
scope, result.getStartDate(), result.getEndDate()));
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色数据范围:学员强制只看本队;教员强制只看本人课程;
|
||||
* 教研室未指定时代号时按本室过滤;其余字段去空白。
|
||||
* <p>今日/本周课表与组合查询共用,不附带年度默认值。</p>
|
||||
*/
|
||||
private TimetableQuery applyRoleScope(TimetableQuery filter) {
|
||||
if (jwglRoleHelper.isStudent()) {
|
||||
filter.setXydbh(jwglRoleHelper.requireStudentTeamId());
|
||||
filter.setXydmc(null);
|
||||
filter.setXybh(null);
|
||||
filter.setJybh(null);
|
||||
filter.setJybhs(null);
|
||||
return filter;
|
||||
}
|
||||
if (StringUtils.isNotEmpty(filter.getXybh())) {
|
||||
filter.setXydbh(resolveTeamByStudent(filter.getXybh().trim()));
|
||||
filter.setXydmc(null);
|
||||
}
|
||||
if (jwglRoleHelper.isTeacher()) {
|
||||
filter.setJybh(jwglRoleHelper.requireTeacherId());
|
||||
filter.setJybhs(null);
|
||||
}
|
||||
if (jwglRoleHelper.isResearchOffice() && StringUtils.isEmpty(filter.getJysdh())) {
|
||||
filter.setJysdh(jwglRoleHelper.requireResearchOfficeId());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(filter.getXydbh())) {
|
||||
filter.setXydbh(filter.getXydbh().trim());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(filter.getXydmc())) {
|
||||
filter.setXydmc(filter.getXydmc().trim());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(filter.getJybh())) {
|
||||
filter.setJybh(filter.getJybh().trim());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(filter.getJsbh())) {
|
||||
filter.setJsbh(filter.getJsbh().trim());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(filter.getJysdh())) {
|
||||
filter.setJysdh(filter.getJysdh().trim());
|
||||
}
|
||||
return filter;
|
||||
}
|
||||
|
||||
/**
|
||||
* 未传年度时按当前学期填充;队别班次名称去空白。
|
||||
* 学员强制只看本人所在学员队课表。
|
||||
*/
|
||||
private TimetableQuery prepareFilter(TimetableQuery cond) {
|
||||
TimetableQuery filter = cond == null ? new TimetableQuery() : cond;
|
||||
if (jwglRoleHelper.isStudent()) {
|
||||
filter.setXydbh(jwglRoleHelper.requireStudentTeamId());
|
||||
filter.setXydmc(null);
|
||||
filter.setXybh(null);
|
||||
filter.setJybh(null);
|
||||
filter.setJybhs(null);
|
||||
} else {
|
||||
if (StringUtils.isNotEmpty(filter.getXybh())) {
|
||||
filter.setXydbh(resolveTeamByStudent(filter.getXybh().trim()));
|
||||
filter.setXydmc(null);
|
||||
}
|
||||
if (jwglRoleHelper.isTeacher()) {
|
||||
filter.setJybh(jwglRoleHelper.requireTeacherId());
|
||||
filter.setJybhs(null);
|
||||
}
|
||||
if (jwglRoleHelper.isResearchOffice() && StringUtils.isEmpty(filter.getJysdh())) {
|
||||
filter.setJysdh(jwglRoleHelper.requireResearchOfficeId());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(filter.getXydbh())) {
|
||||
filter.setXydbh(filter.getXydbh().trim());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(filter.getXydmc())) {
|
||||
filter.setXydmc(filter.getXydmc().trim());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(filter.getJybh())) {
|
||||
filter.setJybh(filter.getJybh().trim());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(filter.getJsbh())) {
|
||||
filter.setJsbh(filter.getJsbh().trim());
|
||||
}
|
||||
if (StringUtils.isNotEmpty(filter.getJysdh())) {
|
||||
filter.setJysdh(filter.getJysdh().trim());
|
||||
}
|
||||
}
|
||||
TimetableQuery filter = applyRoleScope(cond == null ? new TimetableQuery() : cond);
|
||||
if (filter.getNd() != null) {
|
||||
return filter;
|
||||
}
|
||||
SemesterInitializationVO semester = systemInitializationMapper.selectCurrentSemester();
|
||||
if (semester != null && semester.getYear() != null) {
|
||||
filter.setNd(semester.getYear());
|
||||
if (filter.getXqdc() == null) {
|
||||
filter.setXqdc(semester.getSequenceNumber());
|
||||
}
|
||||
// 不默认学期第次:课程-学员队关联的「学期第次」与校历学期序号口径不同,
|
||||
// 年度已是学期代号(如 202603),再叠加序号过滤会查不到任何数据。
|
||||
} else {
|
||||
filter.setNd(LocalDate.now().getYear());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user