|
@@ -8,10 +8,8 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
-import com.qmth.distributed.print.business.bean.dto.ExamTaskPrintDto;
|
|
|
|
-import com.qmth.distributed.print.business.bean.dto.TaskPrintClassDto;
|
|
|
|
-import com.qmth.distributed.print.business.bean.dto.TaskPrintExtendFieldsDto;
|
|
|
|
-import com.qmth.distributed.print.business.bean.dto.TaskPrintHouseDto;
|
|
|
|
|
|
+import com.qmth.distributed.print.business.bean.dto.*;
|
|
|
|
+import com.qmth.distributed.print.business.bean.params.ExamTaskPrintParams;
|
|
import com.qmth.distributed.print.business.bean.params.SerialNumberParams;
|
|
import com.qmth.distributed.print.business.bean.params.SerialNumberParams;
|
|
import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.enums.ExamDataSourceEnum;
|
|
import com.qmth.distributed.print.business.enums.ExamDataSourceEnum;
|
|
@@ -19,12 +17,17 @@ import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
|
|
import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
|
|
import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
|
|
import com.qmth.distributed.print.business.mapper.ExamTaskPrintMapper;
|
|
import com.qmth.distributed.print.business.mapper.ExamTaskPrintMapper;
|
|
import com.qmth.distributed.print.business.service.*;
|
|
import com.qmth.distributed.print.business.service.*;
|
|
|
|
+import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.entity.BasicUserCourse;
|
|
import com.qmth.teachcloud.common.entity.BasicUserCourse;
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
|
+import com.qmth.teachcloud.common.entity.TBTask;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
import com.qmth.teachcloud.common.enums.OrgTypeEnum;
|
|
import com.qmth.teachcloud.common.enums.OrgTypeEnum;
|
|
|
|
+import com.qmth.teachcloud.common.enums.TaskStatusEnum;
|
|
|
|
+import com.qmth.teachcloud.common.enums.TaskTypeEnum;
|
|
import com.qmth.teachcloud.common.service.BasicUserCourseService;
|
|
import com.qmth.teachcloud.common.service.BasicUserCourseService;
|
|
|
|
+import com.qmth.teachcloud.common.service.TBTaskService;
|
|
import com.qmth.teachcloud.common.util.ConvertUtil;
|
|
import com.qmth.teachcloud.common.util.ConvertUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -34,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
+import java.io.IOException;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -65,6 +69,12 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
|
|
@Autowired
|
|
@Autowired
|
|
private BasicUserCourseService basicUserCourseService;
|
|
private BasicUserCourseService basicUserCourseService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ TBTaskService tbTaskService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ AsyncCreatePdfTempleteService asyncCreatePdfTempleteService;
|
|
|
|
+
|
|
@Resource
|
|
@Resource
|
|
ConvertUtil convertUtil;
|
|
ConvertUtil convertUtil;
|
|
|
|
|
|
@@ -78,8 +88,19 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
public void remove(Long examTaskPrintId) {
|
|
public void remove(Long examTaskPrintId) {
|
|
- // todo xf删除逻辑校验
|
|
|
|
ExamTaskPrint examTaskPrint = this.getById(examTaskPrintId);
|
|
ExamTaskPrint examTaskPrint = this.getById(examTaskPrintId);
|
|
|
|
+ ExamDetail examDetail = examDetailService.getById(examTaskPrint.getExamDetailId());
|
|
|
|
+ if (!examDetail.getStatus().name().equals(ExamDetailStatusEnum.NEW.name()) &&
|
|
|
|
+ !examDetail.getStatus().name().equals(ExamDetailStatusEnum.READY.name())) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("当前状态不可删除");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<Long> entityId = Arrays.asList(examTaskPrint.getExamDetailId());
|
|
|
|
+ boolean isFinish = tbTaskService.countByPrintPlanIdAndEntityId(examTaskPrint.getSchoolId(), examTaskPrint.getPrintPlanId(), entityId);
|
|
|
|
+ if(!isFinish){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("任务正在生成pdf,不能删除");
|
|
|
|
+ }
|
|
|
|
+
|
|
QueryWrapper<ExamDetailCourse> examDetailCourseQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<ExamDetailCourse> examDetailCourseQueryWrapper = new QueryWrapper<>();
|
|
examDetailCourseQueryWrapper.lambda().eq(ExamDetailCourse::getExamDetailId, examTaskPrint.getExamDetailId());
|
|
examDetailCourseQueryWrapper.lambda().eq(ExamDetailCourse::getExamDetailId, examTaskPrint.getExamDetailId());
|
|
List<ExamDetailCourse> examDetailCourses = examDetailCourseService.list(examDetailCourseQueryWrapper);
|
|
List<ExamDetailCourse> examDetailCourses = examDetailCourseService.list(examDetailCourseQueryWrapper);
|
|
@@ -97,23 +118,29 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
|
|
examDetailService.removeById(examTaskPrint.getExamDetailId());
|
|
examDetailService.removeById(examTaskPrint.getExamDetailId());
|
|
// 删除exam_task_print
|
|
// 删除exam_task_print
|
|
this.removeById(examTaskPrintId);
|
|
this.removeById(examTaskPrintId);
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public ExamTaskPrintDto listTaskPrint(Long printPlanId, String courseCode, String paperNumber, Integer pageNumber, Integer pageSize) {
|
|
|
|
- QueryWrapper<ExamTaskPrint> queryWrapper = new QueryWrapper<>();
|
|
|
|
- queryWrapper.lambda().eq(ExamTaskPrint::getPrintPlanId, printPlanId)
|
|
|
|
- .eq(ExamTaskPrint::getCourseCode, courseCode)
|
|
|
|
- .eq(ExamTaskPrint::getPaperNumber, paperNumber);
|
|
|
|
- Page<ExamTaskPrint> page = new Page<>(pageNumber, pageSize);
|
|
|
|
- IPage<ExamTaskPrint> examTaskPrintIPage = this.baseMapper.selectPage(page, queryWrapper);
|
|
|
|
|
|
+ public ExamTaskPrintDto listTaskPrint(Long printPlanId, String courseCode, String paperNumber) {
|
|
|
|
+ List<ExamTaskPrintDetailDto> examTaskPrintList = this.baseMapper.listByPrintPlanIdAndCourseCodeAndPaperNumber(printPlanId, courseCode, paperNumber);
|
|
ExamTaskPrintDto examTaskPrintDto = new ExamTaskPrintDto();
|
|
ExamTaskPrintDto examTaskPrintDto = new ExamTaskPrintDto();
|
|
- if (examTaskPrintIPage.getRecords().size() > 0) {
|
|
|
|
- examTaskPrintDto.setiPage(examTaskPrintIPage);
|
|
|
|
- List<Long> startTimes = examTaskPrintIPage.getRecords().stream().map(m -> m.getExamStartTime()).distinct().collect(Collectors.toList());
|
|
|
|
- List<Long> endTimes = examTaskPrintIPage.getRecords().stream().map(m -> m.getExamEndTime()).distinct().collect(Collectors.toList());
|
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(examTaskPrintList)) {
|
|
|
|
+ ExamPrintPlan examPrintPlan = examPrintPlanService.getById(printPlanId);
|
|
|
|
+ if (PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus()) || PrintPlanStatusEnum.READY.equals(examPrintPlan.getStatus())) {
|
|
|
|
+ // 是否在任务中
|
|
|
|
+ List<Long> entityIds = examTaskPrintList.stream().map(m -> m.getExamDetailId()).collect(Collectors.toList());
|
|
|
|
+ QueryWrapper<TBTask> tbTaskQueryWrapper = new QueryWrapper<>();
|
|
|
|
+ tbTaskQueryWrapper.lambda().isNotNull(TBTask::getStatus)
|
|
|
|
+ .eq(TBTask::getType, TaskTypeEnum.CREATE_PDF)
|
|
|
|
+ .eq(TBTask::getPrintPlanId, printPlanId)
|
|
|
|
+ .in(TBTask::getEntityId, entityIds);
|
|
|
|
+ examTaskPrintDto.setSubmit(tbTaskService.count(tbTaskQueryWrapper) > 0);
|
|
|
|
+ } else {
|
|
|
|
+ examTaskPrintDto.setSubmit(true);
|
|
|
|
+ }
|
|
|
|
+ examTaskPrintDto.setList(examTaskPrintList);
|
|
|
|
+ List<Long> startTimes = examTaskPrintList.stream().map(m -> m.getExamStartTime()).distinct().collect(Collectors.toList());
|
|
|
|
+ List<Long> endTimes = examTaskPrintList.stream().map(m -> m.getExamEndTime()).distinct().collect(Collectors.toList());
|
|
if (startTimes.size() != 1 || endTimes.size() != 1) {
|
|
if (startTimes.size() != 1 || endTimes.size() != 1) {
|
|
throw ExceptionResultEnum.ERROR.exception("考试时间有误");
|
|
throw ExceptionResultEnum.ERROR.exception("考试时间有误");
|
|
}
|
|
}
|
|
@@ -261,13 +288,13 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- if(Objects.nonNull(examTaskPrintId)){
|
|
|
|
|
|
+ if (Objects.nonNull(examTaskPrintId)) {
|
|
ExamTaskPrint examTaskPrint = this.getById(examTaskPrintId);
|
|
ExamTaskPrint examTaskPrint = this.getById(examTaskPrintId);
|
|
- if(Objects.isNull(examTaskPrint)){
|
|
|
|
|
|
+ if (Objects.isNull(examTaskPrint)) {
|
|
throw ExceptionResultEnum.ERROR.exception("数据不存在");
|
|
throw ExceptionResultEnum.ERROR.exception("数据不存在");
|
|
}
|
|
}
|
|
String classId = examTaskPrint.getClassId();
|
|
String classId = examTaskPrint.getClassId();
|
|
- if(StringUtils.isNotBlank(classId)){
|
|
|
|
|
|
+ if (StringUtils.isNotBlank(classId)) {
|
|
String[] classIds = classId.split(",");
|
|
String[] classIds = classId.split(",");
|
|
for (String id : classIds) {
|
|
for (String id : classIds) {
|
|
stringList.add(id);
|
|
stringList.add(id);
|
|
@@ -275,7 +302,7 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- if(!CollectionUtils.isEmpty(stringList)) {
|
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(stringList)) {
|
|
List<TaskPrintClassDto> taskPrintClassDtos = basicStudentService.listByClass(schoolId, stringList);
|
|
List<TaskPrintClassDto> taskPrintClassDtos = basicStudentService.listByClass(schoolId, stringList);
|
|
return taskPrintClassDtos;
|
|
return taskPrintClassDtos;
|
|
}
|
|
}
|
|
@@ -310,6 +337,22 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public void submitTaskPrint(ExamTaskPrintParams examTaskPrintParams) throws IOException {
|
|
|
|
+ if (Objects.isNull(examTaskPrintParams.getPrintPlanId())) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("印刷计划不能为空");
|
|
|
|
+ }
|
|
|
|
+ List<Long> list = examTaskPrintParams.getList();
|
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("没有可提交数据");
|
|
|
|
+ }
|
|
|
|
+ // 调用生成pdf方法
|
|
|
|
+ for (Long examDetailId : list) {
|
|
|
|
+ Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, examTaskPrintParams.getPrintPlanId(), (SysUser) ServletUtil.getRequestUser(), examDetailId);
|
|
|
|
+ asyncCreatePdfTempleteService.createPdf(map, null);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
private void saveBatchStudent(ExamTaskPrint examTaskPrint, List<String> classIds, Long examDetailCourseId, SysUser sysUser) {
|
|
private void saveBatchStudent(ExamTaskPrint examTaskPrint, List<String> classIds, Long examDetailCourseId, SysUser sysUser) {
|
|
QueryWrapper<BasicStudent> queryWrapper1 = new QueryWrapper<>();
|
|
QueryWrapper<BasicStudent> queryWrapper1 = new QueryWrapper<>();
|
|
queryWrapper1.lambda().eq(BasicStudent::getSchoolId, examTaskPrint.getSchoolId()).in(BasicStudent::getClazz, classIds);
|
|
queryWrapper1.lambda().eq(BasicStudent::getSchoolId, examTaskPrint.getSchoolId()).in(BasicStudent::getClazz, classIds);
|