|
@@ -1,5 +1,6 @@
|
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -8,21 +9,21 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.qmth.distributed.print.business.bean.BasicExamStudentQuery;
|
|
|
import com.qmth.distributed.print.business.bean.dto.BasicExamStudentDto;
|
|
|
import com.qmth.distributed.print.business.bean.params.BasicExamStudentParam;
|
|
|
+import com.qmth.distributed.print.business.bean.params.TeachCourseSelectParam;
|
|
|
import com.qmth.distributed.print.business.bean.result.BasicExamStudentResult;
|
|
|
+import com.qmth.distributed.print.business.entity.BasicExamRule;
|
|
|
+import com.qmth.distributed.print.business.enums.RequiredFieldsEnum;
|
|
|
import com.qmth.distributed.print.business.mapper.BasicExamStudentMapper;
|
|
|
-import com.qmth.distributed.print.business.service.BasicExamService;
|
|
|
-import com.qmth.distributed.print.business.service.BasicExamStudentService;
|
|
|
-import com.qmth.distributed.print.business.service.BasicTeachClazzService;
|
|
|
+import com.qmth.distributed.print.business.service.*;
|
|
|
import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
|
|
|
+import com.qmth.teachcloud.common.bean.examRule.CodeNameEnableDisabledValue;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.*;
|
|
|
import com.qmth.teachcloud.common.enums.BasicExamStudentStatusEnum;
|
|
|
+import com.qmth.teachcloud.common.enums.EnumResult;
|
|
|
import com.qmth.teachcloud.common.enums.ExamModelEnum;
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
-import com.qmth.teachcloud.common.service.BasicCourseService;
|
|
|
-import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
|
|
|
-import com.qmth.teachcloud.common.service.CommonCacheService;
|
|
|
-import com.qmth.teachcloud.common.service.SysUserService;
|
|
|
+import com.qmth.teachcloud.common.service.*;
|
|
|
import com.qmth.teachcloud.common.util.ConvertUtil;
|
|
|
import com.qmth.teachcloud.common.util.ExcelUtil;
|
|
|
import com.qmth.teachcloud.common.util.RegexUtil;
|
|
@@ -40,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.lang.reflect.Field;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
@@ -60,10 +62,12 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
|
|
|
@Resource
|
|
|
private BasicCourseService basicCourseService;
|
|
|
@Resource
|
|
|
- private BasicTeachClazzService basicTeachClazzService;
|
|
|
+ private BasicExamRuleService basicExamRuleService;
|
|
|
@Resource
|
|
|
private SysUserService sysUserService;
|
|
|
@Resource
|
|
|
+ private SysOrgService sysOrgService;
|
|
|
+ @Resource
|
|
|
private CommonCacheService commonCacheService;
|
|
|
@Resource
|
|
|
private MarkPaperService markPaperService;
|
|
@@ -170,9 +174,18 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
|
|
|
if (ExamModelEnum.MODEL4.equals(basicExam.getExamModel()) && basicExamStudentOld != null) {
|
|
|
markPaperService.deleteByExamIdAndPaperNumber(basicExamStudent.getExamId(), basicExamStudentOld.getPaperNumber(), true);
|
|
|
}
|
|
|
+
|
|
|
+ // 自动创建课程管理数据
|
|
|
+ autoCreateTeachCourse(Arrays.asList(basicExamStudent));
|
|
|
return basicExamStudent.getId();
|
|
|
}
|
|
|
|
|
|
+ private void autoCreateTeachCourse(List<BasicExamStudent> basicExamStudentList) {
|
|
|
+ basicExamStudentList.stream().collect(Collectors.groupingBy(BasicExamStudent::getTeacherId, BasicExamStudent::getCourseId));
|
|
|
+ TeachCourseSelectParam teachCourseSelectParam = new TeachCourseSelectParam();
|
|
|
+ teachCourseSelectParam.setExamId(basicExamStudentL);
|
|
|
+ }
|
|
|
+
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public void buildImportObjects(Map<String, Object> map) {
|
|
@@ -307,9 +320,73 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
|
|
|
basicExamStudent.insertInfo(requestUserId);
|
|
|
}
|
|
|
|
|
|
+ parserRequiredField(basicExamStudent);
|
|
|
return basicExamStudent;
|
|
|
}
|
|
|
|
|
|
+ private void parserRequiredField(BasicExamStudent basicExamStudent) {
|
|
|
+ // 组装requiredFields。extendFields前端传
|
|
|
+ BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(basicExamStudent.getSchoolId());
|
|
|
+ if (basicExamRule == null) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
|
|
|
+ }
|
|
|
+ Map<String, EnumResult> enumResultMap = basicExamRule.getRequiredFieldList().stream().filter(m -> m.getEnable()).collect(Collectors.toMap(EnumResult::getCode, m -> m));
|
|
|
+ List<CodeNameEnableDisabledValue> requiredFields = new ArrayList<>();
|
|
|
+ Field[] declaredFields = basicExamStudent.getClass().getDeclaredFields();
|
|
|
+ try {
|
|
|
+ boolean examDateHasValue = false;
|
|
|
+ for (Field declaredField : declaredFields) {
|
|
|
+ declaredField.setAccessible(true);
|
|
|
+ String fieldName = declaredField.getName();
|
|
|
+ if ("courseId".equals(fieldName)) {
|
|
|
+ BasicCourse basicCourse = basicCourseService.getById(basicExamStudent.getCourseId());
|
|
|
+ if (basicCourse == null) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("课程不存在");
|
|
|
+ }
|
|
|
+ requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.COURSE_CODE.getCode(), RequiredFieldsEnum.COURSE_CODE.getName(), RequiredFieldsEnum.COURSE_CODE.getEnable(), RequiredFieldsEnum.COURSE_CODE.getDisabled(), basicCourse.getCode()));
|
|
|
+ requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.COURSE_NAME.getCode(), RequiredFieldsEnum.COURSE_NAME.getName(), RequiredFieldsEnum.COURSE_NAME.getEnable(), RequiredFieldsEnum.COURSE_NAME.getDisabled(), basicCourse.getName()));
|
|
|
+ SysOrg sysOrg = sysOrgService.getById(basicCourse.getTeachingRoomId());
|
|
|
+ if (sysOrg == null) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("课程开课学院不存在");
|
|
|
+ }
|
|
|
+ requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.TEACHING_ROOM_NAME.getCode(), RequiredFieldsEnum.TEACHING_ROOM_NAME.getName(), RequiredFieldsEnum.TEACHING_ROOM_NAME.getEnable(), RequiredFieldsEnum.TEACHING_ROOM_NAME.getDisabled(), sysOrg.getName()));
|
|
|
+ } else if ("teacherId".equals(fieldName)) {
|
|
|
+ String loginName = null;
|
|
|
+ String realName = null;
|
|
|
+ if (basicExamStudent.getTeacherId() != null) {
|
|
|
+ SysUser sysUser = sysUserService.getById(basicExamStudent.getTeacherId());
|
|
|
+ if (sysUser == null) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("任课老师不存在");
|
|
|
+ }
|
|
|
+ loginName = sysUser.getLoginName();
|
|
|
+ realName = sysUser.getRealName();
|
|
|
+ }
|
|
|
+ requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.TEACHER_CODE.getCode(), RequiredFieldsEnum.TEACHER_CODE.getName(), RequiredFieldsEnum.TEACHER_CODE.getEnable(), RequiredFieldsEnum.TEACHER_CODE.getDisabled(), loginName));
|
|
|
+ requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.TEACHER_NAME.getCode(), RequiredFieldsEnum.TEACHER_NAME.getName(), RequiredFieldsEnum.TEACHER_NAME.getEnable(), RequiredFieldsEnum.TEACHER_NAME.getDisabled(), realName));
|
|
|
+
|
|
|
+ } else if ("examStartTime".equals(fieldName) || "examEndTime".equals(fieldName)) {
|
|
|
+ Long examStartTime = basicExamStudent.getExamStartTime();
|
|
|
+ Long examEndTime = basicExamStudent.getExamEndTime();
|
|
|
+ if (SystemConstant.longNotNull(examStartTime) && SystemConstant.longNotNull(examEndTime) && !examDateHasValue) {
|
|
|
+ Map<String, Object> dateMap = ConvertUtil.analyzeDateAndTime(examStartTime, examEndTime);
|
|
|
+ String date = String.valueOf(dateMap.get("date"));
|
|
|
+ String time = String.valueOf(dateMap.get("time"));
|
|
|
+ requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.EXAM_DATE.getCode(), RequiredFieldsEnum.EXAM_DATE.getName(), RequiredFieldsEnum.EXAM_DATE.getEnable(), RequiredFieldsEnum.EXAM_DATE.getDisabled(), date));
|
|
|
+ requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.EXAM_TIME.getCode(), RequiredFieldsEnum.EXAM_TIME.getName(), RequiredFieldsEnum.EXAM_TIME.getEnable(), RequiredFieldsEnum.EXAM_TIME.getDisabled(), time));
|
|
|
+ examDateHasValue = true;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (enumResultMap.containsKey(fieldName)) {
|
|
|
+ requiredFields.add(new CodeNameEnableDisabledValue(fieldName, enumResultMap.get(fieldName).getName(), enumResultMap.get(fieldName).getEnable(), enumResultMap.get(fieldName).getDisabled(), declaredField.get(basicExamStudent).toString()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ basicExamStudent.setRequiredFields(JSON.toJSONString(requiredFields));
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<BasicExamStudent> listByExamIdAndPaperNumber(Long examId, String paperNumber) {
|
|
|
QueryWrapper<BasicExamStudent> queryWrapper = new QueryWrapper<>();
|