|
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.google.common.collect.Lists;
|
|
import com.google.common.collect.Lists;
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.Gson;
|
|
import com.qmth.distributed.print.business.bean.dto.*;
|
|
import com.qmth.distributed.print.business.bean.dto.*;
|
|
|
|
+import com.qmth.distributed.print.business.bean.dto.ApprovalForm.*;
|
|
import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
|
|
import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
|
|
import com.qmth.distributed.print.business.bean.result.WorkResult;
|
|
import com.qmth.distributed.print.business.bean.result.WorkResult;
|
|
import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.entity.*;
|
|
@@ -143,6 +144,15 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
@Resource
|
|
@Resource
|
|
RedisUtil redisUtil;
|
|
RedisUtil redisUtil;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ SysOrgService sysOrgService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ ExamPrintPlanService examPrintPlanService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ BasicClazzService basicClazzService;
|
|
|
|
+
|
|
@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<>();
|
|
@@ -1500,6 +1510,122 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
return examTaskMapper.findFlowIdToNotMySelf(currentUserId);
|
|
return examTaskMapper.findFlowIdToNotMySelf(currentUserId);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public ExamTaskApprovalFormDto findExamTaskApprovalForm(Long examTaskId) {
|
|
|
|
+// Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
|
+ // 1.basicInfo 部分
|
|
|
|
+ ExamTask examTask = this.getById(examTaskId);
|
|
|
|
+ if (Objects.isNull(examTask)){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("命题任务不存在");
|
|
|
|
+ }
|
|
|
|
+ String paperNumber = examTask.getPaperNumber();
|
|
|
|
+ String paperName = examTask.getPaperName();
|
|
|
|
+ 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)){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("找不到教研室");
|
|
|
|
+ }
|
|
|
|
+ String teachingRoomName = teachingRoom.getName();
|
|
|
|
+ Long examStartTime = null;
|
|
|
|
+ Long examEndTime = null;
|
|
|
|
+ // 流程id
|
|
|
|
+ Long flowId = examTask.getFlowId();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 3.ApprovalInfo部分
|
|
|
|
+ List<ApprovalInfo> approvalInfoList = new ArrayList<>();
|
|
|
|
+ ApprovalInfo second = examTaskReviewLogService.findOnePassBySetUp(flowId,2);
|
|
|
|
+ if (Objects.isNull(second)){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到主任级审核记录");
|
|
|
|
+ }
|
|
|
|
+ ApprovalInfo third = examTaskReviewLogService.findOnePassBySetUp(flowId,3);
|
|
|
|
+ if (Objects.isNull(third)){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到院长级审核记录");
|
|
|
|
+ }
|
|
|
|
+ second.setRemark("通过," + second.getRemark());
|
|
|
|
+ third.setRemark("通过," + third.getRemark());
|
|
|
|
+ approvalInfoList.add(second);
|
|
|
|
+ approvalInfoList.add(third);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // ---- 组装Dto
|
|
|
|
+ ExamTaskApprovalFormDto examTaskApprovalFormDto = new ExamTaskApprovalFormDto();
|
|
|
|
+ BasicInfo basicInfo = new BasicInfo();
|
|
|
|
+ basicInfo.setTeachingRoomId(teachingRoomId);
|
|
|
|
+ basicInfo.setTeachingRoomName(teachingRoomName);
|
|
|
|
+ basicInfo.setPaperName(paperName);
|
|
|
|
+ basicInfo.setPaperNumber(paperNumber);
|
|
|
|
+ basicInfo.setTeacherName(examTask.getTeacherName());
|
|
|
|
+ basicInfo.setExamStartTime(examStartTime);
|
|
|
|
+ basicInfo.setExamEndTime(examEndTime);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ examTaskApprovalFormDto.setBasicInfo(basicInfo);
|
|
|
|
+ examTaskApprovalFormDto.setExamRoomInfoList(examRoomInfoList);
|
|
|
|
+ examTaskApprovalFormDto.setApprovalInfoList(approvalInfoList);
|
|
|
|
+
|
|
|
|
+ return examTaskApprovalFormDto;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 简单校验提交参数
|
|
* 简单校验提交参数
|
|
*
|
|
*
|