|
@@ -10,6 +10,7 @@ import com.google.common.collect.Lists;
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.Gson;
|
|
import com.qmth.distributed.print.business.bean.dto.ApprovalForm.*;
|
|
import com.qmth.distributed.print.business.bean.dto.ApprovalForm.*;
|
|
import com.qmth.distributed.print.business.bean.dto.*;
|
|
import com.qmth.distributed.print.business.bean.dto.*;
|
|
|
|
+import com.qmth.distributed.print.business.bean.dto.ExamObject.ExamObjectDto;
|
|
import com.qmth.distributed.print.business.bean.params.ExamDetailList;
|
|
import com.qmth.distributed.print.business.bean.params.ExamDetailList;
|
|
import com.qmth.distributed.print.business.bean.params.ExamDetailParams;
|
|
import com.qmth.distributed.print.business.bean.params.ExamDetailParams;
|
|
import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
|
|
import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
|
|
@@ -156,6 +157,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
@Resource
|
|
@Resource
|
|
FileStoreUtil fileStoreUtil;
|
|
FileStoreUtil fileStoreUtil;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ ExamTaskService examTaskService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public List<ExamTask> listByCourseCode(Long schoolId, String code) {
|
|
public List<ExamTask> listByCourseCode(Long schoolId, String code) {
|
|
QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
|
|
@@ -1330,7 +1334,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
throw ExceptionResultEnum.ERROR.exception("客服制卡方式,不能切换");
|
|
throw ExceptionResultEnum.ERROR.exception("客服制卡方式,不能切换");
|
|
}
|
|
}
|
|
|
|
|
|
- if (MakeMethodEnum.SELF.equals(examCard.getMakeMethod())) {
|
|
|
|
|
|
+ // 删除自建题卡
|
|
|
|
+ if (!MakeMethodEnum.SELECT.name().equals(examTaskDetail.getMakeMethod())) {
|
|
UpdateWrapper<ExamCardDetail> updateWrapper = new UpdateWrapper<>();
|
|
UpdateWrapper<ExamCardDetail> updateWrapper = new UpdateWrapper<>();
|
|
updateWrapper.lambda().eq(ExamCardDetail::getCardId, examTaskDetail.getCardId());
|
|
updateWrapper.lambda().eq(ExamCardDetail::getCardId, examTaskDetail.getCardId());
|
|
examCardDetailService.remove(updateWrapper);
|
|
examCardDetailService.remove(updateWrapper);
|
|
@@ -1368,7 +1373,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
this.removeById(examTaskId);
|
|
this.removeById(examTaskId);
|
|
ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTaskId);
|
|
ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTaskId);
|
|
if (examTaskDetail != null) {
|
|
if (examTaskDetail != null) {
|
|
- if (examTaskDetail.getCardId() != null) {
|
|
|
|
|
|
+ if (examTaskDetail.getCardId() != null && !MakeMethodEnum.SELECT.name().equals(examTaskDetail.getMakeMethod())) {
|
|
examCardService.removeById(examTaskDetail.getCardId());
|
|
examCardService.removeById(examTaskDetail.getCardId());
|
|
UpdateWrapper<ExamCardDetail> examCardDetailUpdateWrapper = new UpdateWrapper<>();
|
|
UpdateWrapper<ExamCardDetail> examCardDetailUpdateWrapper = new UpdateWrapper<>();
|
|
examCardDetailUpdateWrapper.lambda().eq(ExamCardDetail::getCardId, examTaskDetail.getCardId());
|
|
examCardDetailUpdateWrapper.lambda().eq(ExamCardDetail::getCardId, examTaskDetail.getCardId());
|
|
@@ -1675,100 +1680,47 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
// Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
// Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
// 1.basicInfo 部分
|
|
// 1.basicInfo 部分
|
|
ExamTask examTask = this.getById(examTaskId);
|
|
ExamTask examTask = this.getById(examTaskId);
|
|
- if (Objects.isNull(examTask)){
|
|
|
|
|
|
+ if (Objects.isNull(examTask)) {
|
|
throw ExceptionResultEnum.ERROR.exception("命题任务不存在");
|
|
throw ExceptionResultEnum.ERROR.exception("命题任务不存在");
|
|
}
|
|
}
|
|
String paperNumber = examTask.getPaperNumber();
|
|
String paperNumber = examTask.getPaperNumber();
|
|
String paperName = examTask.getPaperName();
|
|
String paperName = examTask.getPaperName();
|
|
Long teachingRoomId = examTask.getTeachingRoomId();
|
|
Long teachingRoomId = examTask.getTeachingRoomId();
|
|
- SysOrg teachingRoom = sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda().eq(SysOrg::getId,teachingRoomId).eq(SysOrg::getType,OrgTypeEnum.TEACHING_ROOM));
|
|
|
|
- if (Objects.isNull(teachingRoom)){
|
|
|
|
|
|
+ SysOrg teachingRoom = sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda().eq(SysOrg::getId, teachingRoomId).eq(SysOrg::getType, OrgTypeEnum.TEACHING_ROOM));
|
|
|
|
+ if (Objects.isNull(teachingRoom)) {
|
|
throw ExceptionResultEnum.ERROR.exception("找不到教研室");
|
|
throw ExceptionResultEnum.ERROR.exception("找不到教研室");
|
|
}
|
|
}
|
|
String teachingRoomName = teachingRoom.getName();
|
|
String teachingRoomName = teachingRoom.getName();
|
|
- Long examStartTime = null;
|
|
|
|
- Long examEndTime = null;
|
|
|
|
// 流程id
|
|
// 流程id
|
|
Long flowId = examTask.getFlowId();
|
|
Long flowId = examTask.getFlowId();
|
|
|
|
|
|
// 2.ExamRoomInfo 部分
|
|
// 2.ExamRoomInfo 部分
|
|
- List<ExamRoomInfo> examRoomInfoList = new ArrayList<>();
|
|
|
|
- List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(paperNumber);
|
|
|
|
- if (examPackageDetailDatasource.size() > 0){
|
|
|
|
- Set<Long> examDetailIdSet = examPackageDetailDatasource.stream().map(ExamPackageDetail::getExamDetailId).collect(Collectors.toSet());
|
|
|
|
- for (Long examDetailId : examDetailIdSet) {
|
|
|
|
- // 一个考场下
|
|
|
|
- // 班级
|
|
|
|
- String classNames = "";
|
|
|
|
- int studentCount = 0;
|
|
|
|
- String printCount = "";
|
|
|
|
-
|
|
|
|
- List<ExamPackageDetail> examPackageDetailCell = examPackageDetailDatasource.stream()
|
|
|
|
- .filter(e -> examDetailId.equals(e.getExamDetailId()))
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- List<BackupMethodEnum> backupMethodEnums = examPackageDetailCell.stream().map(ExamPackageDetail::getBackupMethod).distinct().collect(Collectors.toList());
|
|
|
|
- if (backupMethodEnums.size() != 1 && backupMethodEnums.get(0) != BackupMethodEnum.ROOM){
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("印刷计划试卷备份方式必须按考场");
|
|
|
|
- }
|
|
|
|
- List<Integer> backupCountList = examPackageDetailCell.stream().map(ExamPackageDetail::getBackupCount).distinct().collect(Collectors.toList());
|
|
|
|
- if (backupCountList.size() != 1){
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("印刷计划试卷备份数量异常");
|
|
|
|
- }
|
|
|
|
- // 试卷该考场备份数量
|
|
|
|
- Integer backupCount = backupCountList.get(0);
|
|
|
|
- // 班级主键','隔开
|
|
|
|
- String clazzIds = "";
|
|
|
|
- final String separator = ",";
|
|
|
|
- for (ExamPackageDetail examPackageDetail : examPackageDetailCell) {
|
|
|
|
- // 处理考试开始结束时间
|
|
|
|
- Long cellStartTime = examPackageDetail.getExamStartTime();
|
|
|
|
- Long cellEndTime = examPackageDetail.getExamEndTime();
|
|
|
|
- if (examStartTime == null || cellStartTime < examStartTime){
|
|
|
|
- examStartTime = cellStartTime;
|
|
|
|
- }
|
|
|
|
- if (examEndTime == null || cellEndTime > examEndTime){
|
|
|
|
- examEndTime = cellEndTime;
|
|
|
|
- }
|
|
|
|
- // 处理班级和数量
|
|
|
|
- Integer studentCellCount = examPackageDetail.getExamDetailCourseTotalSubjects();
|
|
|
|
- String clazzIdCell = examPackageDetail.getClazzIds();
|
|
|
|
- studentCount = studentCount + studentCellCount;
|
|
|
|
- clazzIds = clazzIds + clazzIdCell + separator;
|
|
|
|
- }
|
|
|
|
- clazzIds = clazzIds.substring(0,clazzIds.length() - separator.length());
|
|
|
|
- classNames = basicClazzService.findClazzNamesByClazzIds(clazzIds,separator);
|
|
|
|
- printCount = studentCount + " + " + backupCount;
|
|
|
|
-
|
|
|
|
- // 组装examRoom
|
|
|
|
- ExamRoomInfo examRoomInfo = new ExamRoomInfo();
|
|
|
|
- examRoomInfo.setClazzNames(classNames);
|
|
|
|
- examRoomInfo.setStudentCount(studentCount);
|
|
|
|
- examRoomInfo.setPrintCount(printCount);
|
|
|
|
- examRoomInfoList.add(examRoomInfo);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ List<PrintPlanStatusEnum> printPlanStatusEnumList = new ArrayList<>();
|
|
|
|
+ printPlanStatusEnumList.add(PrintPlanStatusEnum.PRINTING);
|
|
|
|
+ printPlanStatusEnumList.add(PrintPlanStatusEnum.PRINT_FINISH);
|
|
|
|
+ List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(paperNumber,printPlanStatusEnumList);
|
|
|
|
+ ExamObjectDto examObjectDto = this.buildExamObjectDtoByPackageDatasource(examPackageDetailDatasource);
|
|
|
|
|
|
// 3.ApprovalInfo部分
|
|
// 3.ApprovalInfo部分
|
|
List<ApprovalInfo> approvalInfoList = new ArrayList<>();
|
|
List<ApprovalInfo> approvalInfoList = new ArrayList<>();
|
|
- ApprovalInfo second = examTaskReviewLogService.findOnePassBySetUp(flowId,2);
|
|
|
|
- if (Objects.isNull(second)){
|
|
|
|
|
|
+ ApprovalInfo second = examTaskReviewLogService.findOnePassBySetUp(flowId, 2);
|
|
|
|
+ if (Objects.isNull(second)) {
|
|
throw ExceptionResultEnum.ERROR.exception("未找到主任级审核记录");
|
|
throw ExceptionResultEnum.ERROR.exception("未找到主任级审核记录");
|
|
}
|
|
}
|
|
- ApprovalInfo third = examTaskReviewLogService.findOnePassBySetUp(flowId,3);
|
|
|
|
- if (Objects.isNull(third)){
|
|
|
|
|
|
+ ApprovalInfo third = examTaskReviewLogService.findOnePassBySetUp(flowId, 3);
|
|
|
|
+ if (Objects.isNull(third)) {
|
|
throw ExceptionResultEnum.ERROR.exception("未找到院长级审核记录");
|
|
throw ExceptionResultEnum.ERROR.exception("未找到院长级审核记录");
|
|
}
|
|
}
|
|
String secondRemark = second.getRemark();
|
|
String secondRemark = second.getRemark();
|
|
- if (SystemConstant.strNotNull(secondRemark)){
|
|
|
|
|
|
+ if (SystemConstant.strNotNull(secondRemark)) {
|
|
secondRemark = "通过," + secondRemark;
|
|
secondRemark = "通过," + secondRemark;
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
secondRemark = "通过";
|
|
secondRemark = "通过";
|
|
}
|
|
}
|
|
String thirdRemark = third.getRemark();
|
|
String thirdRemark = third.getRemark();
|
|
- if (SystemConstant.strNotNull(thirdRemark)){
|
|
|
|
|
|
+ if (SystemConstant.strNotNull(thirdRemark)) {
|
|
thirdRemark = "通过," + thirdRemark;
|
|
thirdRemark = "通过," + thirdRemark;
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
thirdRemark = "通过";
|
|
thirdRemark = "通过";
|
|
}
|
|
}
|
|
second.setRemark(secondRemark);
|
|
second.setRemark(secondRemark);
|
|
@@ -1785,12 +1737,12 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
basicInfo.setPaperName(paperName);
|
|
basicInfo.setPaperName(paperName);
|
|
basicInfo.setPaperNumber(paperNumber);
|
|
basicInfo.setPaperNumber(paperNumber);
|
|
basicInfo.setTeacherName(examTask.getTeacherName());
|
|
basicInfo.setTeacherName(examTask.getTeacherName());
|
|
- basicInfo.setExamStartTime(examStartTime);
|
|
|
|
- basicInfo.setExamEndTime(examEndTime);
|
|
|
|
|
|
+ basicInfo.setExamStartTime(examObjectDto.getExamStartTime());
|
|
|
|
+ basicInfo.setExamEndTime(examObjectDto.getExamEndTime());
|
|
|
|
|
|
|
|
|
|
examTaskApprovalFormDto.setBasicInfo(basicInfo);
|
|
examTaskApprovalFormDto.setBasicInfo(basicInfo);
|
|
- examTaskApprovalFormDto.setExamRoomInfoList(examRoomInfoList);
|
|
|
|
|
|
+ examTaskApprovalFormDto.setExamRoomInfoList(examObjectDto.getExamRoomInfoList());
|
|
examTaskApprovalFormDto.setApprovalInfoList(approvalInfoList);
|
|
examTaskApprovalFormDto.setApprovalInfoList(approvalInfoList);
|
|
|
|
|
|
return examTaskApprovalFormDto;
|
|
return examTaskApprovalFormDto;
|
|
@@ -1798,9 +1750,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
|
|
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
- public void findExamTaskApprovalPdf(HttpServletResponse response,Long examTaskId, String htmlContext) throws Exception {
|
|
|
|
|
|
+ public void findExamTaskApprovalPdf(HttpServletResponse response, Long examTaskId, String htmlContext) throws Exception {
|
|
ExamTask examTask = this.getById(examTaskId);
|
|
ExamTask examTask = this.getById(examTaskId);
|
|
- if (Objects.isNull(examTask)){
|
|
|
|
|
|
+ if (Objects.isNull(examTask)) {
|
|
throw ExceptionResultEnum.ERROR.exception("未找到命题任务");
|
|
throw ExceptionResultEnum.ERROR.exception("未找到命题任务");
|
|
}
|
|
}
|
|
String fileName = examTask.getPaperNumber() + "审批表";
|
|
String fileName = examTask.getPaperNumber() + "审批表";
|
|
@@ -1823,7 +1775,26 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
} else {
|
|
} else {
|
|
inputStream = new FileInputStream(new File(pdfPath));
|
|
inputStream = new FileInputStream(new File(pdfPath));
|
|
}
|
|
}
|
|
- ConvertUtil.outputFile(response,inputStream,fileName + SystemConstant.PDF_PREFIX);
|
|
|
|
|
|
+ ConvertUtil.outputFile(response, inputStream, fileName + SystemConstant.PDF_PREFIX);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional
|
|
|
|
+ @Override
|
|
|
|
+ public ExamObjectDto findExamObjectDtoByPaperNumber(String paperNumber) {
|
|
|
|
+ Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
|
+ List<PrintPlanStatusEnum> printPlanStatusEnumList = new ArrayList<>();
|
|
|
|
+ printPlanStatusEnumList.add(PrintPlanStatusEnum.NEW);
|
|
|
|
+ printPlanStatusEnumList.add(PrintPlanStatusEnum.READY);
|
|
|
|
+ List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(paperNumber,printPlanStatusEnumList);
|
|
|
|
+ ExamObjectDto examObjectDto = this.buildExamObjectDtoByPackageDatasource(examPackageDetailDatasource);
|
|
|
|
+
|
|
|
|
+ ExamTask examTask = examTaskService.getOne(new QueryWrapper<ExamTask>().lambda().eq(ExamTask::getPaperNumber,paperNumber).eq(ExamTask::getSchoolId,schoolId));
|
|
|
|
+ if (Objects.isNull(examTask)){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到命题任务");
|
|
|
|
+ }
|
|
|
|
+ examObjectDto.setPaperName(examTask.getPaperName());
|
|
|
|
+ examObjectDto.setPaperNumber(examTask.getPaperNumber());
|
|
|
|
+ return examObjectDto;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1869,4 +1840,72 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private ExamObjectDto buildExamObjectDtoByPackageDatasource(List<ExamPackageDetail> examPackageDetailDatasource){
|
|
|
|
+ Long examStartTime = null;
|
|
|
|
+ Long examEndTime = null;
|
|
|
|
+ int printTotalCount = 0;
|
|
|
|
+ List<ExamRoomInfo> examRoomInfoList = new ArrayList<>();
|
|
|
|
+ if (examPackageDetailDatasource.size() > 0){
|
|
|
|
+ Set<Long> examDetailIdSet = examPackageDetailDatasource.stream().map(ExamPackageDetail::getExamDetailId).collect(Collectors.toSet());
|
|
|
|
+ for (Long examDetailId : examDetailIdSet) {
|
|
|
|
+ // 一个考场下
|
|
|
|
+ // 班级
|
|
|
|
+ String classNames = "";
|
|
|
|
+ int studentCount = 0;
|
|
|
|
+ String printCount = "";
|
|
|
|
+
|
|
|
|
+ List<ExamPackageDetail> examPackageDetailCell = examPackageDetailDatasource.stream()
|
|
|
|
+ .filter(e -> examDetailId.equals(e.getExamDetailId()))
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ List<BackupMethodEnum> backupMethodEnums = examPackageDetailCell.stream().map(ExamPackageDetail::getBackupMethod).distinct().collect(Collectors.toList());
|
|
|
|
+ if (backupMethodEnums.size() != 1 && backupMethodEnums.get(0) != BackupMethodEnum.ROOM){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("印刷计划试卷备份方式必须按考场");
|
|
|
|
+ }
|
|
|
|
+ List<Integer> backupCountList = examPackageDetailCell.stream().map(ExamPackageDetail::getBackupCount).distinct().collect(Collectors.toList());
|
|
|
|
+ if (backupCountList.size() != 1){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("印刷计划试卷备份数量异常");
|
|
|
|
+ }
|
|
|
|
+ // 试卷该考场备份数量
|
|
|
|
+ Integer backupCount = backupCountList.get(0);
|
|
|
|
+ // 班级主键','隔开
|
|
|
|
+ String clazzIds = "";
|
|
|
|
+ final String separator = ",";
|
|
|
|
+ for (ExamPackageDetail examPackageDetail : examPackageDetailCell) {
|
|
|
|
+ // 处理考试开始结束时间
|
|
|
|
+ Long cellStartTime = examPackageDetail.getExamStartTime();
|
|
|
|
+ Long cellEndTime = examPackageDetail.getExamEndTime();
|
|
|
|
+ if (examStartTime == null || cellStartTime < examStartTime){
|
|
|
|
+ examStartTime = cellStartTime;
|
|
|
|
+ }
|
|
|
|
+ if (examEndTime == null || cellEndTime > examEndTime){
|
|
|
|
+ examEndTime = cellEndTime;
|
|
|
|
+ }
|
|
|
|
+ // 处理班级和数量
|
|
|
|
+ Integer studentCellCount = examPackageDetail.getExamDetailCourseTotalSubjects();
|
|
|
|
+ String clazzIdCell = examPackageDetail.getClazzIds();
|
|
|
|
+ studentCount = studentCount + studentCellCount;
|
|
|
|
+ clazzIds = clazzIds + clazzIdCell + separator;
|
|
|
|
+ }
|
|
|
|
+ clazzIds = clazzIds.substring(0,clazzIds.length() - separator.length());
|
|
|
|
+ classNames = basicClazzService.findClazzNamesByClazzIds(clazzIds,separator);
|
|
|
|
+ printCount = studentCount + " + " + backupCount;
|
|
|
|
+ printTotalCount = printTotalCount + studentCount + backupCount;
|
|
|
|
+
|
|
|
|
+ // 组装examRoom
|
|
|
|
+ ExamRoomInfo examRoomInfo = new ExamRoomInfo();
|
|
|
|
+ examRoomInfo.setClazzNames(classNames);
|
|
|
|
+ examRoomInfo.setStudentCount(studentCount);
|
|
|
|
+ examRoomInfo.setPrintCount(printCount);
|
|
|
|
+ examRoomInfoList.add(examRoomInfo);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ ExamObjectDto examObjectDto = new ExamObjectDto();
|
|
|
|
+ examObjectDto.setExamEndTime(examEndTime);
|
|
|
|
+ examObjectDto.setExamStartTime(examStartTime);
|
|
|
|
+ examObjectDto.setExamRoomInfoList(examRoomInfoList);
|
|
|
|
+ examObjectDto.setPrintTotalCount(printTotalCount);
|
|
|
|
+ return examObjectDto;
|
|
|
|
+ }
|
|
}
|
|
}
|