|
@@ -1,5 +1,6 @@
|
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
@@ -17,6 +18,7 @@ import com.qmth.distributed.print.business.enums.ExamStatusEnum;
|
|
|
import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
|
|
|
import com.qmth.distributed.print.business.mapper.ExamTaskMapper;
|
|
|
import com.qmth.distributed.print.business.service.*;
|
|
|
+import com.qmth.distributed.print.business.util.ConvertUtil;
|
|
|
import com.qmth.distributed.print.business.util.ExcelUtil;
|
|
|
import com.qmth.distributed.print.business.util.ServletUtil;
|
|
|
import com.qmth.distributed.print.business.util.excel.ExcelError;
|
|
@@ -83,6 +85,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
@Autowired
|
|
|
private ExamPrintPlanService examPrintPlanService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ConvertUtil convertUtil;
|
|
|
+
|
|
|
@Override
|
|
|
public List<ExamTask> listByCourseCode(Long schoolId, String code) {
|
|
|
QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
|
|
@@ -178,7 +183,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
if (examTask.getEnable()) {
|
|
|
updateWrapper.lambda().set(ExamTask::getEnable, examTask.getEnable()) // 修改启用状态
|
|
|
.set(ExamTask::getReviewStatus, null) // 清空审核状态
|
|
|
- .set(ExamTask::getStatus, ExamStatusEnum.STAGE) // 更新为命题中
|
|
|
+ .set(ExamTask::getStatus, task.getStatus().equals(ExamStatusEnum.NEW) || task.getStatus().equals(ExamStatusEnum.READY) ? task.getStatus() : ExamStatusEnum.STAGE) // 更新为命题中
|
|
|
.eq(ExamTask::getId, examTask.getId());
|
|
|
} else {
|
|
|
updateWrapper.lambda().set(ExamTask::getEnable, examTask.getEnable()).eq(ExamTask::getId, examTask.getId());
|
|
@@ -197,16 +202,18 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
examTask.setSchoolId(schoolId);
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
|
|
|
- if(StringUtils.isNotBlank(examTask.getPaperNumber())){
|
|
|
+ if (StringUtils.isNotBlank(examTask.getPaperNumber())) {
|
|
|
QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
|
|
|
taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTask.getPaperNumber());
|
|
|
ExamTask task = this.getOne(taskQueryWrapper);
|
|
|
- if(task != null){
|
|
|
+ if (task != null) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("试卷编号已存在");
|
|
|
}
|
|
|
} else {
|
|
|
- // todo paperNumber生成问题, 必填字段校验
|
|
|
-
|
|
|
+ // 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
|
|
|
+ String date = DateUtil.today().replace("-","");
|
|
|
+ String paperNumber = convertUtil.getIncre(date, "paperNumber", 5);
|
|
|
+ examTask.setPaperNumber(paperNumber);
|
|
|
}
|
|
|
|
|
|
QueryWrapper<BasicExamRule> queryWrapper = new QueryWrapper<>();
|
|
@@ -256,10 +263,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
} else if (!userImportDto.getCourseName().equals(course.getName())) {
|
|
|
excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]与系统中不匹配"));
|
|
|
}
|
|
|
-
|
|
|
- if (StringUtils.isBlank(userImportDto.getPaperNumber())) {
|
|
|
- excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[试卷编号]必填"));
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
if (excelErrorTemp.size() > 0) {
|
|
@@ -282,6 +285,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
ExamTaskImportDto examTaskImportDto = new ExamTaskImportDto();
|
|
|
examTaskImportDto.setBatchNo(batchNo);
|
|
|
List<ExamTaskDto> tasks = new ArrayList<>();
|
|
|
+ Set<String> paperNumbers = new HashSet<>();
|
|
|
+ // 错误信息
|
|
|
+ StringJoiner stringJoiner = new StringJoiner(";");
|
|
|
for (int i = 0; i < finalList.size(); i++) {
|
|
|
LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
|
|
|
List<Object> examTaskTempList = excelMap.get(i);
|
|
@@ -296,6 +302,25 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
//保存
|
|
|
examTaskTempService.save(examTaskTemp);
|
|
|
|
|
|
+ if (StringUtils.isNotBlank(examTaskTemp.getPaperNumber())) {
|
|
|
+ if(paperNumbers.contains(examTaskTemp.getPaperNumber())){
|
|
|
+ // 试卷编号在文件内重复,跳过
|
|
|
+ String error = examTaskTemp.getPaperNumber()+"文件中重复";
|
|
|
+ stringJoiner.add(error);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
|
|
|
+ taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTaskTemp.getPaperNumber());
|
|
|
+ ExamTask task1 = this.getOne(taskQueryWrapper);
|
|
|
+ if (task1 != null) {
|
|
|
+ // 试卷编号已存在,直接跳过
|
|
|
+ String error = examTaskTemp.getPaperNumber()+"已存在";
|
|
|
+ stringJoiner.add(error);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ paperNumbers.add(examTaskTemp.getPaperNumber());
|
|
|
+ }
|
|
|
+
|
|
|
ExamTaskDto examTaskDto = new ExamTaskDto();
|
|
|
examTaskDto.setCourseCode(examTaskTemp.getCourseCode());
|
|
|
examTaskDto.setCourseName(examTaskTemp.getCourseName());
|
|
@@ -317,6 +342,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
tasks.add(examTaskDto);
|
|
|
}
|
|
|
}
|
|
|
+ // 设置重复信息,页面做二次校验
|
|
|
+ examTaskImportDto.setErrorMsg(stringJoiner.toString());
|
|
|
examTaskImportDto.setTasks(tasks);
|
|
|
return examTaskImportDto;
|
|
|
}
|
|
@@ -337,17 +364,46 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
QueryWrapper<ExamTaskTemp> queryWrapper = new QueryWrapper<>();
|
|
|
queryWrapper.lambda().eq(ExamTaskTemp::getBatchNo, task.getBatchNo());
|
|
|
List<ExamTaskTemp> examTaskTemps = examTaskTempService.list(queryWrapper);
|
|
|
+
|
|
|
+ QueryWrapper<BasicExamRule> examQueryWrapper = new QueryWrapper<>();
|
|
|
+ examQueryWrapper.lambda().eq(BasicExamRule::getSchoolId, schoolId);
|
|
|
+ BasicExamRule basicExamRule = basicExamRuleService.getOne(examQueryWrapper);
|
|
|
+ if (basicExamRule == null) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
|
|
|
+ }
|
|
|
+
|
|
|
if (examTaskTemps.isEmpty()) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("没有可保存数据");
|
|
|
}
|
|
|
List<ExamTask> list = new ArrayList<>();
|
|
|
+ Set<String> paperNumbers = new HashSet<>();
|
|
|
for (ExamTaskTemp examTaskTemp : examTaskTemps) {
|
|
|
ExamTask examTask = new ExamTask();
|
|
|
examTask.setSchoolId(task.getSchoolId());
|
|
|
examTask.setCourseCode(examTaskTemp.getCourseCode());
|
|
|
examTask.setCourseName(examTaskTemp.getCourseName());
|
|
|
examTask.setSpecialty(examTaskTemp.getSpecialty());
|
|
|
- // todo paperNumber自动生成。校验paperNumber是否重复
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(examTaskTemp.getPaperNumber())) {
|
|
|
+ if(paperNumbers.contains(examTaskTemp.getPaperNumber())){
|
|
|
+ // 试卷编号在文件内重复,跳过
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
|
|
|
+ taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTaskTemp.getPaperNumber());
|
|
|
+ ExamTask task1 = this.getOne(taskQueryWrapper);
|
|
|
+ if (task1 != null) {
|
|
|
+// throw ExceptionResultEnum.ERROR.exception("试卷编号已存在");
|
|
|
+ // 试卷编号已存在,直接跳过
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ paperNumbers.add(examTaskTemp.getPaperNumber());
|
|
|
+ } else {
|
|
|
+ // 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
|
|
|
+ String date = DateUtil.today().replace("-","");
|
|
|
+ String paperNumber = convertUtil.getIncre(date, "paperNumber", 5);
|
|
|
+ examTask.setPaperNumber(paperNumber);
|
|
|
+ }
|
|
|
examTask.setPaperNumber(examTaskTemp.getPaperNumber());
|
|
|
examTask.setStartTime(task.getStartTime());
|
|
|
examTask.setEndTime(task.getEndTime());
|
|
@@ -356,18 +412,30 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
examTask.setBatchNo(task.getBatchNo());
|
|
|
examTask.setCreateId(sysUser.getId());
|
|
|
examTask.setCreateTime(System.currentTimeMillis());
|
|
|
- String userId = task.getUsers().stream().map(m -> {
|
|
|
- if (examTaskTemp.getCourseCode().equals(m.get("courseCode"))) {
|
|
|
+ /*String userId = task.getUsers().stream().map(m -> {
|
|
|
+ if (examTaskTemp.getCourseCode().equals(m.get("courseCode")) && examTaskTemp.getPaperNumber().equals(m.get("paperNumber"))) {
|
|
|
return m.get("userId");
|
|
|
}
|
|
|
return "";
|
|
|
- }).findFirst().get();
|
|
|
+ }).findFirst().get();*/
|
|
|
+ String userId = null;
|
|
|
+ String specialty = null;
|
|
|
+ for (Map<String, String> user : task.getUsers()) {
|
|
|
+ String ucourseCode = user.get("courseCode");
|
|
|
+ String upaperNumber = user.get("paperNumber");
|
|
|
+ if(examTaskTemp.getCourseCode().equals(ucourseCode) && examTaskTemp.getPaperNumber().equals(upaperNumber)){
|
|
|
+ userId = user.get("userId");
|
|
|
+ specialty = user.get("specialty");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ examTask.setSpecialty(specialty);
|
|
|
if (StringUtils.isNotBlank(userId)) {
|
|
|
examTask.setUserId(Long.valueOf(userId));
|
|
|
examTask.setStatus(ExamStatusEnum.READY);
|
|
|
} else {
|
|
|
examTask.setStatus(ExamStatusEnum.NEW);
|
|
|
}
|
|
|
+ examTask.setReview(basicExamRule.getReview());
|
|
|
list.add(examTask);
|
|
|
}
|
|
|
return this.saveBatch(list);
|
|
@@ -377,9 +445,10 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
public IPage<ExamTaskDto> listTaskApply(String auditStatus, String reviewStatus, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, Integer pageNumber, Integer pageSize) {
|
|
|
Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
+ Set<Long> orgIds = commonService.listSubOrgIds();
|
|
|
Page<ExamTaskDto> page = new Page<>(pageNumber, pageSize);
|
|
|
String[] strings = new String[]{ExamStatusEnum.NEW.name(), ExamStatusEnum.SUBMIT.name(), ExamStatusEnum.FINISH.name()};
|
|
|
- IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listTaskApply(page, schoolId, auditStatus, reviewStatus, cardRuleId, courseCode, paperNumber, startTime, endTime, strings, sysUser.getId());
|
|
|
+ IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listTaskApply(page, schoolId, auditStatus, reviewStatus, cardRuleId, courseCode, paperNumber, startTime, endTime, strings, sysUser.getId(), orgIds);
|
|
|
return examTaskDtoIPage;
|
|
|
}
|
|
|
|
|
@@ -418,7 +487,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
statusEnum = ExamStatusEnum.FINISH;
|
|
|
// 校验是否可以提交打印状态
|
|
|
ExamTask examTask = this.getById(taskReviewLog.getExamTaskId());
|
|
|
- commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(),sysUser);
|
|
|
+ commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
|
|
|
} else {
|
|
|
statusEnum = ExamStatusEnum.STAGE;
|
|
|
}
|
|
@@ -488,7 +557,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
RelatePaperDto relatePaperDto = new RelatePaperDto();
|
|
|
// 抽取一次
|
|
|
String paperTypes;
|
|
|
- if (DrawRuleEnum.ONE.equals(drawRule)){
|
|
|
+ if (DrawRuleEnum.ONE.equals(drawRule)) {
|
|
|
// 未曝光类型
|
|
|
paperTypes = examTaskDetail.getUnexposedPaperType();
|
|
|
} else {
|
|
@@ -527,7 +596,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
|
|
|
// 校验题卡是否提交
|
|
|
ExamCard examCard = examCardService.getById(examTaskDetail.getCardId());
|
|
|
- if(!ExamCardStatusEnum.SUBMIT.name().equals(examCard.getStatus().name())){
|
|
|
+ if (!ExamCardStatusEnum.SUBMIT.name().equals(examCard.getStatus().name())) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("请先提交题卡");
|
|
|
}
|
|
|
}
|
|
@@ -537,7 +606,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
if (examTask.getStatus().name().equals(ExamStatusEnum.SUBMIT.name()) && !examTask.getReview()) {
|
|
|
examTask.setStatus(ExamStatusEnum.FINISH);
|
|
|
// 校验是否可以提交打印状态
|
|
|
- commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(),(SysUser) ServletUtil.getRequestUser());
|
|
|
+ commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
|
|
|
}
|
|
|
|
|
|
UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
|