|
@@ -340,7 +340,7 @@ public class BasicDatasourceController {
|
|
|
|
|
|
String courseCode = moduleConfigDto.getCourseCode();
|
|
|
String courseName = basicCourseService.getOne(new QueryWrapper<BasicCourse>().lambda()
|
|
|
- .eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getCode, courseCode))
|
|
|
+ .eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getCode, courseCode))
|
|
|
.getName();
|
|
|
|
|
|
|
|
@@ -425,7 +425,7 @@ public class BasicDatasourceController {
|
|
|
|
|
|
String courseCode = dimensionDto.getCourseCode();
|
|
|
String courseName = basicCourseService.getOne(new QueryWrapper<BasicCourse>().lambda()
|
|
|
- .eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getCode, courseCode))
|
|
|
+ .eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getCode, courseCode))
|
|
|
.getName();
|
|
|
|
|
|
if (tbExamCourseService.verifyExamCourseCantRun(examId, schoolId, courseCode, courseName)) {
|
|
@@ -729,36 +729,38 @@ public class BasicDatasourceController {
|
|
|
tbExamRecordList.add(tbExamRecord);
|
|
|
|
|
|
// TODO: 2021/6/4 构建考生-详细作答记录表(全批次删除并新增)
|
|
|
- // 构建考生作答明细表(t_b_answer)
|
|
|
+ // 构建考生作答明细表(t_b_answer)正常考生才记录
|
|
|
// 客观题(选择)
|
|
|
- for (Map<Object, Object> objectObjectMap : objectiveScoreDetailList) {
|
|
|
- Long answerId = SystemConstant.getDbUuid();
|
|
|
- TBAnswer tbAnswer = new TBAnswer();
|
|
|
- tbAnswer.setId(answerId);
|
|
|
- tbAnswer.setExamRecordId(examRecordId);
|
|
|
- tbAnswer.setNumberType(NumberTypeEnum.OBJECTIVE.getValue());
|
|
|
- String cloudMainNumber = String.valueOf(objectObjectMap.get(ExamCloudDataEnum.MAIN_NUMBER.getName()));
|
|
|
- String cloudSubNumber = String.valueOf(objectObjectMap.get(ExamCloudDataEnum.SUB_NUMBER.getName()));
|
|
|
- tbAnswer.setMainNumber(cloudMainNumber);
|
|
|
- tbAnswer.setSubNumber(cloudSubNumber);
|
|
|
- tbAnswer.setScore(BigDecimal.valueOf(Double.parseDouble(String.valueOf(objectObjectMap.get(ExamCloudDataEnum.SCORE.getName())))));
|
|
|
- tbAnswer.setAnswer(String.valueOf(objectObjectMap.get(ExamCloudDataEnum.ANSWER.getName())));
|
|
|
- tbAnswerList.add(tbAnswer);
|
|
|
- }
|
|
|
- // 主观题
|
|
|
- for (Map<Object, Object> objectObjectMap : subjectiveScoreDetailList) {
|
|
|
- Long answerId = SystemConstant.getDbUuid();
|
|
|
- TBAnswer tbAnswer = new TBAnswer();
|
|
|
- tbAnswer.setId(answerId);
|
|
|
- tbAnswer.setExamRecordId(examRecordId);
|
|
|
- tbAnswer.setNumberType(NumberTypeEnum.SUBJECTIVE.getValue());
|
|
|
- String cloudMainNumber = String.valueOf(objectObjectMap.get(ExamCloudDataEnum.MAIN_NUMBER.getName()));
|
|
|
- String cloudSubNumber = String.valueOf(objectObjectMap.get(ExamCloudDataEnum.SUB_NUMBER.getName()));
|
|
|
- tbAnswer.setMainNumber(cloudMainNumber);
|
|
|
- tbAnswer.setSubNumber(cloudSubNumber);
|
|
|
- tbAnswer.setScore(BigDecimal.valueOf(Double.parseDouble(String.valueOf(objectObjectMap.get(ExamCloudDataEnum.SCORE.getName())))));
|
|
|
- tbAnswer.setAnswer(String.valueOf(objectObjectMap.get(ExamCloudDataEnum.ANSWER.getName())));
|
|
|
- tbAnswerList.add(tbAnswer);
|
|
|
+ if (status == 1) {
|
|
|
+ for (Map<Object, Object> objectObjectMap : objectiveScoreDetailList) {
|
|
|
+ Long answerId = SystemConstant.getDbUuid();
|
|
|
+ TBAnswer tbAnswer = new TBAnswer();
|
|
|
+ tbAnswer.setId(answerId);
|
|
|
+ tbAnswer.setExamRecordId(examRecordId);
|
|
|
+ tbAnswer.setNumberType(NumberTypeEnum.OBJECTIVE.getValue());
|
|
|
+ String cloudMainNumber = String.valueOf(objectObjectMap.get(ExamCloudDataEnum.MAIN_NUMBER.getName()));
|
|
|
+ String cloudSubNumber = String.valueOf(objectObjectMap.get(ExamCloudDataEnum.SUB_NUMBER.getName()));
|
|
|
+ tbAnswer.setMainNumber(cloudMainNumber);
|
|
|
+ tbAnswer.setSubNumber(cloudSubNumber);
|
|
|
+ tbAnswer.setScore(BigDecimal.valueOf(Double.parseDouble(String.valueOf(objectObjectMap.get(ExamCloudDataEnum.SCORE.getName())))));
|
|
|
+ tbAnswer.setAnswer(String.valueOf(objectObjectMap.get(ExamCloudDataEnum.ANSWER.getName())));
|
|
|
+ tbAnswerList.add(tbAnswer);
|
|
|
+ }
|
|
|
+ // 主观题
|
|
|
+ for (Map<Object, Object> objectObjectMap : subjectiveScoreDetailList) {
|
|
|
+ Long answerId = SystemConstant.getDbUuid();
|
|
|
+ TBAnswer tbAnswer = new TBAnswer();
|
|
|
+ tbAnswer.setId(answerId);
|
|
|
+ tbAnswer.setExamRecordId(examRecordId);
|
|
|
+ tbAnswer.setNumberType(NumberTypeEnum.SUBJECTIVE.getValue());
|
|
|
+ String cloudMainNumber = String.valueOf(objectObjectMap.get(ExamCloudDataEnum.MAIN_NUMBER.getName()));
|
|
|
+ String cloudSubNumber = String.valueOf(objectObjectMap.get(ExamCloudDataEnum.SUB_NUMBER.getName()));
|
|
|
+ tbAnswer.setMainNumber(cloudMainNumber);
|
|
|
+ tbAnswer.setSubNumber(cloudSubNumber);
|
|
|
+ tbAnswer.setScore(BigDecimal.valueOf(Double.parseDouble(String.valueOf(objectObjectMap.get(ExamCloudDataEnum.SCORE.getName())))));
|
|
|
+ tbAnswer.setAnswer(String.valueOf(objectObjectMap.get(ExamCloudDataEnum.ANSWER.getName())));
|
|
|
+ tbAnswerList.add(tbAnswer);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1064,9 +1066,9 @@ public class BasicDatasourceController {
|
|
|
.eq(TBExamination::getExamId, SystemConstant.convertIdToLong(examId))
|
|
|
.eq(TBExamination::getSchoolId, SystemConstant.convertIdToLong(schoolId))
|
|
|
.eq(TBExamination::getExaminationCourseCode, tbExamCourseService.getOne(new QueryWrapper<TBExamCourse>().lambda()
|
|
|
- .eq(TBExamCourse::getExamId, examId)
|
|
|
- .eq(TBExamCourse::getCourseCode, courseCode)
|
|
|
- .eq(TBExamCourse::getSchoolId, schoolId))
|
|
|
+ .eq(TBExamCourse::getExamId, examId)
|
|
|
+ .eq(TBExamCourse::getCourseCode, courseCode)
|
|
|
+ .eq(TBExamCourse::getSchoolId, schoolId))
|
|
|
.getExaminationCourseCode())
|
|
|
.eq(TBExamination::getCourseName, courseName)
|
|
|
.ne(TBExamination::getStudyType, "普通"));
|
|
@@ -1364,6 +1366,80 @@ public class BasicDatasourceController {
|
|
|
return ResultUtil.ok();
|
|
|
}
|
|
|
|
|
|
+ @ApiOperation(value = "特殊科目赋分检查")
|
|
|
+ @RequestMapping(value = "/special/assignCheck", method = RequestMethod.POST)
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
|
|
|
+ @Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
|
|
|
+ public Result assignCheck(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file, @RequestParam Long examId, @RequestParam Long schoolId,
|
|
|
+ @ApiParam(value = "该Excel中包含多科目赋分时,各科目编号用','隔开", required = true) @RequestParam String courseCodeS) throws IOException, NoSuchFieldException {
|
|
|
+
|
|
|
+ int count = 0;
|
|
|
+ List<AssignCheckDto> result = new ArrayList<>();
|
|
|
+ List<String> courseCodeList = Arrays.asList(courseCodeS.split(","));
|
|
|
+ // 数据同步操作
|
|
|
+ // 获取当前课程下所有学生考试成绩记录
|
|
|
+ List<BasicExamRecordDto> basicExamRecordDtoDatasource = tbExamRecordService.findByExamIdAndCourseCodeS(examId, courseCodeList);
|
|
|
+ Set<TAExamCourseRecord> taExamCourseRecordDatasource = new HashSet<>();
|
|
|
+ for (String s : courseCodeList) {
|
|
|
+ taExamCourseRecordDatasource.addAll(taExamCourseRecordService.list(new QueryWrapper<TAExamCourseRecord>()
|
|
|
+ .lambda().eq(TAExamCourseRecord::getExamId,examId).eq(TAExamCourseRecord::getCourseCode,s)));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(AssignCheckDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
|
|
|
+ if (finalExcelErrorList.size() > 0) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(finalExcelErrorList));
|
|
|
+ }
|
|
|
+ return finalExcelList;
|
|
|
+ });
|
|
|
+
|
|
|
+ //保存到数据库
|
|
|
+ if (Objects.nonNull(finalList) && finalList.size() > 0) {
|
|
|
+ for (int i = 0; i < finalList.size(); i++) {
|
|
|
+ LinkedMultiValueMap<Integer, Object> map = finalList.get(i);
|
|
|
+ List<Object> assignCheckList = map.get(i);
|
|
|
+ for (int y = 0; y < Objects.requireNonNull(assignCheckList).size(); y++) {
|
|
|
+ if (assignCheckList.get(y) instanceof AssignCheckDto) {
|
|
|
+ AssignCheckDto assignCheckDto = (AssignCheckDto) assignCheckList.get(y);
|
|
|
+ Long assExamId = Long.parseLong(assignCheckDto.getExamId());
|
|
|
+ if (!examId.equals(assExamId)) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("excel考试数据异常");
|
|
|
+ }
|
|
|
+ String assCourseCodeS = assignCheckDto.getPaperCodeS();
|
|
|
+ String assStudentCode = assignCheckDto.getStudentCode();
|
|
|
+ String assAssignScore = assignCheckDto.getAssignScore();
|
|
|
+ String assStudentName = assignCheckDto.getStudentName();
|
|
|
+ String[] courseCodeArr = assCourseCodeS.split(",");
|
|
|
+ for (String s : courseCodeArr) {
|
|
|
+ List<TAExamCourseRecord> taExamCourseRecordList = taExamCourseRecordDatasource.stream()
|
|
|
+ .filter(e -> assExamId.equals(e.getExamId()) && s.equals(e.getCourseCode()) && assStudentCode.equals(e.getStudentCode()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (taExamCourseRecordList.size() != 1) {
|
|
|
+ if (taExamCourseRecordList.size() < 1) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ System.out.println("-----------------------");
|
|
|
+ System.out.println(JSON.toJSONString(taExamCourseRecordList));
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("赋分异常,考生记录分析表数据异常");
|
|
|
+ }
|
|
|
+ TAExamCourseRecord taExamCourseRecord = taExamCourseRecordList.get(0);
|
|
|
+ TBStudent tbStudent = tbStudentService.getById(taExamCourseRecord.getStudentId());
|
|
|
+ if (!assStudentName.equals(tbStudent.getName())){
|
|
|
+ result.add(assignCheckDto);
|
|
|
+ }else {
|
|
|
+ count ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ System.out.println(JSON.toJSONString(result));
|
|
|
+
|
|
|
+ return ResultUtil.ok(result.size() == 0 ? count : result);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 更新或新增专业信息
|
|
@@ -1446,15 +1522,21 @@ public class BasicDatasourceController {
|
|
|
* @param tbSchoolTeacherDtoList 基础教师数据源
|
|
|
*/
|
|
|
private void saveTeacherInfo(List<TBSchoolTeacherDto> tbSchoolTeacherDtoList) {
|
|
|
+ Map<String,String> checkMap = new HashMap<>();
|
|
|
for (TBSchoolTeacherDto tbSchoolTeacherDto : tbSchoolTeacherDtoList) {
|
|
|
+ if (checkMap.containsKey(tbSchoolTeacherDto.getTeacherCode())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
SysUser old = sysUserService.getOne(new QueryWrapper<SysUser>().lambda()
|
|
|
.eq(SysUser::getSchoolId, tbSchoolTeacherDto.getSchoolId())
|
|
|
.eq(SysUser::getLoginName, tbSchoolTeacherDto.getTeacherCode())
|
|
|
.eq(SysUser::getRealName, tbSchoolTeacherDto.getTeacherName()));
|
|
|
+ checkMap.put(tbSchoolTeacherDto.getTeacherCode(),tbSchoolTeacherDto.getTeacherName());
|
|
|
Long id = 0L;
|
|
|
if (Objects.nonNull(old)) {
|
|
|
id = old.getId();
|
|
|
}
|
|
|
+
|
|
|
SysRole teacherRole = sysRoleService.list(new QueryWrapper<SysRole>().lambda().eq(SysRole::getType, RoleTypeEnum.TEACHER)).get(0);
|
|
|
List<Long> roleIds = new ArrayList<>();
|
|
|
roleIds.add(teacherRole.getId());
|