|
@@ -1,37 +1,37 @@
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
|
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
-import com.qmth.distributed.print.business.bean.dto.ExamDetailCourseFieldsDto;
|
|
|
|
-import com.qmth.distributed.print.business.bean.examRule.CodeName;
|
|
|
|
-import com.qmth.distributed.print.business.bean.examRule.CodeNameEnableValue;
|
|
|
|
import com.qmth.distributed.print.business.bean.params.SingleExamStudentAddParam;
|
|
import com.qmth.distributed.print.business.bean.params.SingleExamStudentAddParam;
|
|
|
|
+import com.qmth.distributed.print.business.entity.ExamDetail;
|
|
import com.qmth.distributed.print.business.entity.ExamDetailCourse;
|
|
import com.qmth.distributed.print.business.entity.ExamDetailCourse;
|
|
import com.qmth.distributed.print.business.entity.ExamStudent;
|
|
import com.qmth.distributed.print.business.entity.ExamStudent;
|
|
import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
|
|
import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
|
|
import com.qmth.distributed.print.business.enums.ExamStatusEnum;
|
|
import com.qmth.distributed.print.business.enums.ExamStatusEnum;
|
|
import com.qmth.distributed.print.business.mapper.ExamDetailCourseMapper;
|
|
import com.qmth.distributed.print.business.mapper.ExamDetailCourseMapper;
|
|
import com.qmth.distributed.print.business.service.ExamDetailCourseService;
|
|
import com.qmth.distributed.print.business.service.ExamDetailCourseService;
|
|
|
|
+import com.qmth.distributed.print.business.service.ExamDetailService;
|
|
import com.qmth.distributed.print.business.service.ExamStudentService;
|
|
import com.qmth.distributed.print.business.service.ExamStudentService;
|
|
import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
|
|
import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.entity.BasicCourse;
|
|
import com.qmth.teachcloud.common.entity.BasicCourse;
|
|
-import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
|
+import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
|
+import com.qmth.teachcloud.mark.entity.MarkPaper;
|
|
|
|
+import com.qmth.teachcloud.mark.entity.MarkStudent;
|
|
|
|
+import com.qmth.teachcloud.mark.service.MarkPaperService;
|
|
|
|
+import com.qmth.teachcloud.mark.service.MarkStudentService;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
-import java.lang.reflect.Field;
|
|
|
|
-import java.util.ArrayList;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
-import java.util.Set;
|
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
@@ -46,6 +46,12 @@ public class ExamDetailCourseServiceImpl extends ServiceImpl<ExamDetailCourseMap
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
private ExamStudentService examStudentService;
|
|
private ExamStudentService examStudentService;
|
|
|
|
+ @Resource
|
|
|
|
+ private ExamDetailService examDetailService;
|
|
|
|
+ @Resource
|
|
|
|
+ private MarkStudentService markStudentService;
|
|
|
|
+ @Resource
|
|
|
|
+ private MarkPaperService markPaperService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public List<Map<String, Object>> listClientByExamDetailIdAndStatus(Long examDetailId) {
|
|
public List<Map<String, Object>> listClientByExamDetailIdAndStatus(Long examDetailId) {
|
|
@@ -106,91 +112,108 @@ public class ExamDetailCourseServiceImpl extends ServiceImpl<ExamDetailCourseMap
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<ExamDetailCourseFieldsDto> listExamDetailPaperNumber(Long examDetailId) {
|
|
|
|
- Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
|
|
|
+ public List<JSONObject> listExamDetailPaperNumber(Long examDetailId) {
|
|
QueryWrapper<ExamDetailCourse> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<ExamDetailCourse> queryWrapper = new QueryWrapper<>();
|
|
- queryWrapper.lambda().eq(ExamDetailCourse::getSchoolId, schoolId)
|
|
|
|
- .eq(ExamDetailCourse::getExamDetailId, examDetailId)
|
|
|
|
|
|
+ queryWrapper.lambda().eq(ExamDetailCourse::getExamDetailId, examDetailId)
|
|
.orderByAsc(ExamDetailCourse::getCourseCode);
|
|
.orderByAsc(ExamDetailCourse::getCourseCode);
|
|
List<ExamDetailCourse> examDetailCourseList = this.list(queryWrapper);
|
|
List<ExamDetailCourse> examDetailCourseList = this.list(queryWrapper);
|
|
- List<ExamDetailCourseFieldsDto> examDetailCourseFieldsDtoList = new ArrayList<>();
|
|
|
|
|
|
+ List<JSONObject> jsonObjectList = new ArrayList<>();
|
|
if (CollectionUtils.isNotEmpty(examDetailCourseList)) {
|
|
if (CollectionUtils.isNotEmpty(examDetailCourseList)) {
|
|
for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
|
|
for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
|
|
- ExamDetailCourseFieldsDto examDetailCourseFieldsDto = new ExamDetailCourseFieldsDto();
|
|
|
|
- examDetailCourseFieldsDto.setExamDetailCourse(examDetailCourse);
|
|
|
|
- // 查询一条考生数据,拿到使用的必填字段和扩展字段
|
|
|
|
- ExamStudent examStudent = examStudentService.listByExamDetailCourseIdLimit1(schoolId, examDetailCourse.getId());
|
|
|
|
- List<CodeName> requireds = new ArrayList<>();
|
|
|
|
- List<CodeName> extendes = new ArrayList<>();
|
|
|
|
- if (examStudent != null) {
|
|
|
|
- List<CodeNameEnableValue> studentRequiredFieldList = JSON.parseArray(examStudent.getRequiredFields(), CodeNameEnableValue.class);
|
|
|
|
- if (CollectionUtils.isNotEmpty(studentRequiredFieldList)) {
|
|
|
|
- requireds = studentRequiredFieldList.stream().map(m -> {
|
|
|
|
- CodeName codeName = new CodeName();
|
|
|
|
- codeName.setCode(m.getCode());
|
|
|
|
- codeName.setName(m.getName());
|
|
|
|
- return codeName;
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
- }
|
|
|
|
- List<CodeNameEnableValue> studentExtendFieldList = JSON.parseArray(examStudent.getExtendFields(), CodeNameEnableValue.class);
|
|
|
|
- if (CollectionUtils.isNotEmpty(studentExtendFieldList)) {
|
|
|
|
- extendes = studentExtendFieldList.stream().map(m -> {
|
|
|
|
- CodeName codeName = new CodeName();
|
|
|
|
- codeName.setCode(m.getCode());
|
|
|
|
- codeName.setName(m.getName());
|
|
|
|
- return codeName;
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
- }
|
|
|
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
|
+ jsonObject.put("examDetailCourseId", String.valueOf(examDetailCourse.getId()));
|
|
|
|
+ jsonObject.put("courseCode", examDetailCourse.getCourseCode());
|
|
|
|
+ jsonObject.put("courseName", examDetailCourse.getCourseName());
|
|
|
|
+ List<String> paperTypes = new ArrayList<>();
|
|
|
|
+ if (StringUtils.isNotBlank(examDetailCourse.getPaperType())) {
|
|
|
|
+ paperTypes = Arrays.asList(examDetailCourse.getPaperType().split(","));
|
|
|
|
+
|
|
}
|
|
}
|
|
- examDetailCourseFieldsDto.setRequiredFields(requireds);
|
|
|
|
- examDetailCourseFieldsDto.setExtendFields(extendes);
|
|
|
|
- examDetailCourseFieldsDtoList.add(examDetailCourseFieldsDto);
|
|
|
|
|
|
+ jsonObject.put("paperTypes", paperTypes);
|
|
|
|
+ jsonObjectList.add(jsonObject);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return examDetailCourseFieldsDtoList;
|
|
|
|
|
|
+ return jsonObjectList;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Transactional
|
|
@Override
|
|
@Override
|
|
public boolean addExamStudent(SingleExamStudentAddParam singleExamStudentAddParam) {
|
|
public boolean addExamStudent(SingleExamStudentAddParam singleExamStudentAddParam) {
|
|
- Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
|
- SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
|
|
|
+ ExamDetailCourse examDetailCourse = this.getById(singleExamStudentAddParam.getExamDetailCourseId());
|
|
|
|
+ if (examDetailCourse == null) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("考场科目数据不存在");
|
|
|
|
+ }
|
|
|
|
+ ExamDetail examDetail = examDetailService.getById(examDetailCourse.getExamDetailId());
|
|
|
|
+ if (examDetail == null) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("考场数据不存在");
|
|
|
|
+ }
|
|
|
|
+ int count = examStudentService.countByExamDetailCourseIdAndStudentCode(examDetailCourse.getId(), singleExamStudentAddParam.getStudentCode());
|
|
|
|
+ if (count > 0) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("考号在本考场已存在");
|
|
|
|
+ }
|
|
|
|
+ MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
|
|
|
|
+ if (markPaper != null && MarkPaperStatus.FINISH.equals(markPaper.getStatus())) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("已结束阅卷,不能新增考生");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 保存exam_student
|
|
|
|
+ Long id = SystemConstant.getDbUuid();
|
|
ExamStudent examStudent = new ExamStudent();
|
|
ExamStudent examStudent = new ExamStudent();
|
|
|
|
+ examStudent.setId(id);
|
|
|
|
+ examStudent.setSchoolId(examDetail.getSchoolId());
|
|
|
|
+ examStudent.setExamDetailCourseId(examDetailCourse.getId());
|
|
|
|
+ examStudent.setStudentCode(singleExamStudentAddParam.getStudentCode());
|
|
|
|
+ examStudent.setStudentName(singleExamStudentAddParam.getStudentName());
|
|
|
|
+ examStudent.setExamId(examDetail.getExamId());
|
|
|
|
+ examStudent.setPaperNumber(examDetailCourse.getPaperNumber());
|
|
|
|
+ examStudent.setCoursePaperId(examDetailCourse.getCoursePaperId());
|
|
|
|
+ examStudent.setPaperType(singleExamStudentAddParam.getPaperType());
|
|
|
|
+ examStudent.setCollegeName(singleExamStudentAddParam.getCollege());
|
|
|
|
+ examStudent.setClazzName(singleExamStudentAddParam.getClassName());
|
|
|
|
+ examStudent.setCanDelete(true);
|
|
|
|
+ examStudentService.save(examStudent);
|
|
|
|
|
|
- try {
|
|
|
|
- Field[] examinationImportDtoFields = examStudent.getClass().getDeclaredFields();
|
|
|
|
- for (CodeNameEnableValue requiredField : singleExamStudentAddParam.getRequiredFields()) {
|
|
|
|
- for (Field examinationImportDtoField : examinationImportDtoFields) {
|
|
|
|
- if(!examinationImportDtoField.getName().equals(requiredField.getCode())){
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- examinationImportDtoField.setAccessible(true);
|
|
|
|
- examinationImportDtoField.set(requiredField.getCode(), requiredField.getValue());
|
|
|
|
|
|
+ // 打印完成,则推送到阅卷考生库
|
|
|
|
+ if (ExamDetailStatusEnum.FINISH.equals(examDetail.getStatus())) {
|
|
|
|
+ // 保存mark_student
|
|
|
|
+ MarkStudent markStudent = new MarkStudent(id, examDetail.getExamId(), examDetailCourse.getCourseCode(),
|
|
|
|
+ examDetailCourse.getCourseName(), examDetailCourse.getPaperNumber(),
|
|
|
|
+ examDetailCourse.getCoursePaperId(), singleExamStudentAddParam.getPaperType(),
|
|
|
|
+ singleExamStudentAddParam.getStudentCode(), singleExamStudentAddParam.getStudentName(),
|
|
|
|
+ examDetail.getPackageCode(), examDetail.getExamPlace(), examDetail.getExamRoom(),
|
|
|
|
+ singleExamStudentAddParam.getCollege(), singleExamStudentAddParam.getClassName());
|
|
|
|
+ if (markStudent.getSecretNumber() == null) {
|
|
|
|
+ markStudent.randomSecretNumber();
|
|
|
|
+ while (markStudentService.countByExamIdAndSecretNumber(markStudent.getExamId(), markStudent.getSecretNumber()) > 0) {
|
|
|
|
+ markStudent.randomSecretNumber();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- } catch (IllegalAccessException e) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("必选字段赋值失败");
|
|
|
|
|
|
+ markStudentService.save(markStudent);
|
|
}
|
|
}
|
|
-
|
|
|
|
- examStudent.setId(SystemConstant.getDbUuid());
|
|
|
|
- examStudent.setSchoolId(schoolId);
|
|
|
|
- examStudent.setExamId(singleExamStudentAddParam.getExamId());
|
|
|
|
- examStudent.setExamDetailCourseId(singleExamStudentAddParam.getExamDetailCourse().getId());
|
|
|
|
- examStudent.setPaperNumber(singleExamStudentAddParam.getExamDetailCourse().getPaperNumber());
|
|
|
|
- examStudent.setCoursePaperId(singleExamStudentAddParam.getExamDetailCourse().getCoursePaperId());
|
|
|
|
- examStudent.setExtendFields(JSON.toJSONString(singleExamStudentAddParam.getExtendFields()));
|
|
|
|
- examStudent.setCreateId(sysUser.getId());
|
|
|
|
- examStudent.setCreateTime(System.currentTimeMillis());
|
|
|
|
- examStudentService.save(examStudent);
|
|
|
|
-
|
|
|
|
- // todo 往exam_student表插入扫描数据
|
|
|
|
- return false;
|
|
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
|
- public List<ExamDetailCourse> listByExamDetailIds(List<Long> edIds) {
|
|
|
|
- QueryWrapper<ExamDetailCourse> wrapper = new QueryWrapper<>();
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public List<ExamDetailCourse> listByExamDetailIds(List<Long> edIds) {
|
|
|
|
+ QueryWrapper<ExamDetailCourse> wrapper = new QueryWrapper<>();
|
|
LambdaQueryWrapper<ExamDetailCourse> lw = wrapper.lambda();
|
|
LambdaQueryWrapper<ExamDetailCourse> lw = wrapper.lambda();
|
|
lw.in(ExamDetailCourse::getExamDetailId, edIds);
|
|
lw.in(ExamDetailCourse::getExamDetailId, edIds);
|
|
- return this.list(wrapper);
|
|
|
|
- }
|
|
|
|
|
|
+ return this.list(wrapper);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional
|
|
|
|
+ @Override
|
|
|
|
+ public boolean deleteExamStudent(Long id) {
|
|
|
|
+ ExamStudent examStudent = examStudentService.getById(id);
|
|
|
|
+ if (examStudent == null || !examStudent.getCanDelete()) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("考生不能删除");
|
|
|
|
+ }
|
|
|
|
+ MarkStudent markStudent = markStudentService.getById(id);
|
|
|
|
+ if (markStudent.getUpload()) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("考生题卡已扫描,不能删除");
|
|
|
|
+ }
|
|
|
|
+ examStudentService.removeById(id);
|
|
|
|
+ markStudentService.removeById(id);
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
}
|
|
}
|