|
@@ -1,21 +1,32 @@
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
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.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.ExamTaskDetailDto;
|
|
import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailDto;
|
|
|
|
+import com.qmth.distributed.print.business.bean.dto.FieldsDto;
|
|
|
|
+import com.qmth.distributed.print.business.bean.result.ExaminationDetailResult;
|
|
|
|
+import com.qmth.distributed.print.business.bean.result.ExaminationResult;
|
|
|
|
+import com.qmth.distributed.print.business.bean.result.SummarizedDataResult;
|
|
|
|
+import com.qmth.distributed.print.business.entity.BasicExamRule;
|
|
import com.qmth.distributed.print.business.entity.ExamDetail;
|
|
import com.qmth.distributed.print.business.entity.ExamDetail;
|
|
|
|
+import com.qmth.distributed.print.business.entity.ExamDetailCourse;
|
|
import com.qmth.distributed.print.business.entity.ExamPrintPlan;
|
|
import com.qmth.distributed.print.business.entity.ExamPrintPlan;
|
|
import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
|
|
import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
|
|
import com.qmth.distributed.print.business.mapper.ExamDetailMapper;
|
|
import com.qmth.distributed.print.business.mapper.ExamDetailMapper;
|
|
|
|
+import com.qmth.distributed.print.business.service.BasicExamRuleService;
|
|
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.ExamDetailService;
|
|
|
|
+import com.qmth.distributed.print.common.contant.SystemConstant;
|
|
|
|
+import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -32,6 +43,11 @@ import java.util.stream.Collectors;
|
|
public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDetail> implements ExamDetailService {
|
|
public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDetail> implements ExamDetailService {
|
|
@Resource
|
|
@Resource
|
|
private ExamDetailCourseService examDetailCourseService;
|
|
private ExamDetailCourseService examDetailCourseService;
|
|
|
|
+ @Resource
|
|
|
|
+ private BasicExamRuleService basicExamRuleService;
|
|
|
|
+ @Resource
|
|
|
|
+ private ExamDetailMapper examDetailMapper;
|
|
|
|
+
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Override
|
|
@Override
|
|
@@ -68,4 +84,122 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
|
|
public String taskViewPDF(Long id) {
|
|
public String taskViewPDF(Long id) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ @Override
|
|
|
|
+ public List<FieldsDto> findExaminationFields(Long schoolId) {
|
|
|
|
+ BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
|
|
|
|
+ if (basicExamRule == null){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("找不到该学校考务字段信息 + schoolId" + schoolId);
|
|
|
|
+ }
|
|
|
|
+ String requiredFields = basicExamRule.getRequiredFields();
|
|
|
|
+ String extendFields = basicExamRule.getExtendFields();
|
|
|
|
+ // 必选字段
|
|
|
|
+ List<FieldsDto> requiredFieldsList = JSONObject.parseArray(requiredFields,FieldsDto.class);
|
|
|
|
+ if (requiredFieldsList.stream().anyMatch(e -> !e.getEnable())){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("该学校考务字段设置存在必选字段禁用的情况 schoolId = " + schoolId);
|
|
|
|
+ }
|
|
|
|
+ // 扩展字段
|
|
|
|
+ List<FieldsDto> extendFieldsList = JSONObject.parseArray(extendFields,FieldsDto.class);
|
|
|
|
+ List<String> extendCodeList = extendFieldsList.stream().map(FieldsDto::getCode).collect(Collectors.toList());
|
|
|
|
+ if (extendCodeList.stream().anyMatch(e -> requiredFieldsList.stream().map(FieldsDto::getCode).collect(Collectors.toList()).contains(e))){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("该学校考务字段设置存在相同的code schoolId = " + schoolId);
|
|
|
|
+ }
|
|
|
|
+ // 有效的扩展字段
|
|
|
|
+ List<FieldsDto> validExtendList = extendFieldsList.stream().filter(FieldsDto::getEnable).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ // 有效的考务字段
|
|
|
|
+ List<FieldsDto> validExaminationFieldList = new ArrayList<>();
|
|
|
|
+ validExaminationFieldList.addAll(requiredFieldsList);
|
|
|
|
+ validExaminationFieldList.addAll(validExtendList);
|
|
|
|
+ System.out.println("---" + validExaminationFieldList);
|
|
|
|
+
|
|
|
|
+ List<String> fieldsName = validExaminationFieldList.stream().map(FieldsDto::getName).collect(Collectors.toList());
|
|
|
|
+ for (String s : fieldsName) {
|
|
|
|
+ System.out.println(s);
|
|
|
|
+ }
|
|
|
|
+ return validExaminationFieldList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ @Override
|
|
|
|
+ public boolean downLoadExaminationTemplate(Long schoolId) {
|
|
|
|
+ BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
|
|
|
|
+ if (basicExamRule == null){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("找不到该学校考务字段信息 + schoolId" + schoolId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ @Override
|
|
|
|
+ public IPage<ExaminationResult> findExaminationBriefPage(Long schoolId, String printPlanName, String courseCode, String paperNumber, String examPlace, String examRoom, String packageCode, int pageNumber, int pageSize) {
|
|
|
|
+ IPage<ExaminationResult> page = examDetailMapper.findBriefPage(new Page<>(pageNumber,pageSize),schoolId,printPlanName,courseCode,paperNumber,examPlace,examRoom,packageCode);
|
|
|
|
+ List<ExaminationResult> list = page.getRecords();
|
|
|
|
+ for (ExaminationResult examinationResult : list) {
|
|
|
|
+ String examDetailCourseIds = examinationResult.getExamDetailCourseIds();
|
|
|
|
+ if (examDetailCourseIds == null || examDetailCourseIds.length() == 0){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("考务数据确实课程信息");
|
|
|
|
+ }
|
|
|
|
+ String[] arr = examDetailCourseIds.split(",");
|
|
|
|
+
|
|
|
|
+ final String separator = "、";
|
|
|
|
+ String courseNameCodeStr = "";
|
|
|
|
+ String paperNumberStr = "";
|
|
|
|
+ for (String examDetailCourseId : arr) {
|
|
|
|
+ ExamDetailCourse examDetailCourse = examDetailCourseService.getById(examDetailCourseId);
|
|
|
|
+ String code = examDetailCourse.getCourseCode();
|
|
|
|
+ String name = examDetailCourse.getCourseName();
|
|
|
|
+ String number = examDetailCourse.getPaperNumber();
|
|
|
|
+ courseNameCodeStr = courseNameCodeStr + name + "(" + code + ")" + separator;
|
|
|
|
+ paperNumberStr = paperNumberStr + number + separator;
|
|
|
|
+ }
|
|
|
|
+ courseNameCodeStr = courseNameCodeStr.substring(0,courseNameCodeStr.length() - separator.length());
|
|
|
|
+ paperNumberStr = paperNumberStr.substring(0,paperNumberStr.length() - separator.length());
|
|
|
|
+ examinationResult.setCourseNameCode(courseNameCodeStr);
|
|
|
|
+ examinationResult.setPaperNumber(paperNumberStr);
|
|
|
|
+ }
|
|
|
|
+ return page;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ @Override
|
|
|
|
+ public SummarizedDataResult findSummarizedData(Long schoolId, String printPlanName, String courseCode, String paperNumber, String examPlace, String examRoom, String packageCode) {
|
|
|
|
+ IPage<ExaminationResult> page = this.findExaminationBriefPage(schoolId, printPlanName, courseCode, paperNumber, examPlace, examRoom, packageCode, SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE);
|
|
|
|
+ List<ExaminationResult> list = page.getRecords();
|
|
|
|
+ int totalSubjects = 0;
|
|
|
|
+ int packageCount = 0;
|
|
|
|
+ for (ExaminationResult examinationResult : list) {
|
|
|
|
+ int subjects = examinationResult.getTotalSubjects();
|
|
|
|
+ int packages = examinationResult.getCourseNameCode().split("、").length;
|
|
|
|
+ totalSubjects = totalSubjects + subjects;
|
|
|
|
+ packageCount = packageCount + packages;
|
|
|
|
+ }
|
|
|
|
+ SummarizedDataResult summarizedDataResult = new SummarizedDataResult();
|
|
|
|
+ summarizedDataResult.setSchoolId(schoolId);
|
|
|
|
+ summarizedDataResult.setTotalSubjects(totalSubjects);
|
|
|
|
+ summarizedDataResult.setPackageCount(packageCount);
|
|
|
|
+ return summarizedDataResult;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ @Override
|
|
|
|
+ public IPage<ExaminationDetailResult> findExaminationDetail(Long printPlanId, String courseCode, String paperNumber, String examPlace, String examRoom, String studentParam, int pageNumber, int pageSize) {
|
|
|
|
+ return examDetailMapper.findDetailPage(new Page<>(pageNumber,pageSize),printPlanId,courseCode,paperNumber,examPlace,examRoom,studentParam);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ @Override
|
|
|
|
+ public List<String> findExamPlaceDatasource(Long printPlaneId) {
|
|
|
|
+ List<ExamDetail> examDetail = this.list(new QueryWrapper<ExamDetail>().lambda().eq(ExamDetail::getPrintPlanId,printPlaneId));
|
|
|
|
+ return examDetail.stream().map(ExamDetail::getExamPlace).distinct().collect(Collectors.toList());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ @Override
|
|
|
|
+ public List<String> findExamRoomDatasource(Long printPlaneId) {
|
|
|
|
+ List<ExamDetail> examDetail = this.list(new QueryWrapper<ExamDetail>().lambda().eq(ExamDetail::getPrintPlanId,printPlaneId));
|
|
|
|
+ return examDetail.stream().map(ExamDetail::getExamRoom).distinct().collect(Collectors.toList());
|
|
|
|
+ }
|
|
}
|
|
}
|