shenzhidan 2026-03-09 10:00:02 +08:00
commit de90557bad
5 changed files with 74 additions and 25 deletions

View File

@ -8,8 +8,13 @@ import com.zcloud.edu.persistence.dataobject.archives.ArchivesPdfFileDO;
import com.zcloud.edu.persistence.repository.archives.ArchivesPdfFileRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import lombok.AllArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
@ -33,6 +38,30 @@ public class ArchivesPdfFileQueryExe {
* @return
*/
public PageResponse<ArchivesPdfFileCO> execute(ArchivesPdfFilePageQry archivesPdfFilePageQry) {
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
if(StringUtils.isNotEmpty(archivesPdfFilePageQry.getGeCreateTime())){
//增加上000000
String dateStr = archivesPdfFilePageQry.getGeCreateTime();
try {
LocalDate date = LocalDate.parse(dateStr, dateFormatter);
LocalDateTime startDateTime = date.atStartOfDay();
archivesPdfFilePageQry.setGeCreateTime(startDateTime.toString().replace('T', ' '));
} catch (Exception e) {
}
}
if(StringUtils.isNotEmpty(archivesPdfFilePageQry.getLeCreateTime())){
//增加上23:59:59
String dateStr = archivesPdfFilePageQry.getLeCreateTime();
try {
LocalDate date = LocalDate.parse(dateStr, dateFormatter);
LocalDateTime endDateTime = date.atTime(LocalTime.MAX);
archivesPdfFilePageQry.setLeCreateTime(endDateTime.toString().replace('T', ' '));
} catch (Exception e) {
}
}
Map<String, Object> params = PageQueryHelper.toHashMap(archivesPdfFilePageQry);
PageResponse<ArchivesPdfFileDO> pageResponse = archivesPdfFileRepository.listPage(params);
List<ArchivesPdfFileCO> examCenterCOS = archivesPdfFileCoConvertor.converDOsToCOs(pageResponse.getData());

View File

@ -272,28 +272,30 @@ public class ArchivesQueryExe {
if (!ObjectUtils.isEmpty(params.getExamSignFlag())) {
String imageUrl = fileUrlConfig.getPrefixUrl() + params.getExamSignFaceUrl();
try (InputStream is = new URL(imageUrl).openStream()) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// Thumbnailator 自动处理 EXIF 方向,并缩放到 100x100保持比例
Thumbnails.of(is)
.keepAspectRatio(true) // 可选:保持比例,避免拉伸
.outputFormat("JPEG")
.toOutputStream(baos);
byte[] imageBytes = baos.toByteArray();
ByteArrayInputStream bis = new ByteArrayInputStream(imageBytes);
PictureRenderData picture = Pictures.ofStream(bis)
.size(100, 100)
.create();
workItem.put("examSignFacePicture", picture);
} catch (Exception e) {
e.printStackTrace();
// 可选:插入默认占位图
// workItem.put("examSignFacePicture", defaultPicture);
}
PictureRenderData examSignFacePicture = Pictures.ofUrl(fileUrlConfig.getPrefixUrl() + params.getExamSignFaceUrl(), PictureType.JPEG).size(100, 100).create();//网络图片地址
workItem.put("examSignFacePicture", examSignFacePicture);
// String imageUrl = fileUrlConfig.getPrefixUrl() + params.getExamSignFaceUrl();
// try (InputStream is = new URL(imageUrl).openStream()) {
// ByteArrayOutputStream baos = new ByteArrayOutputStream();
//
// // Thumbnailator 自动处理 EXIF 方向,并缩放到 100x100保持比例
// Thumbnails.of(is)
// .keepAspectRatio(true) // 可选:保持比例,避免拉伸
// .outputFormat("JPEG")
// .toOutputStream(baos);
//
// byte[] imageBytes = baos.toByteArray();
// ByteArrayInputStream bis = new ByteArrayInputStream(imageBytes);
// PictureRenderData picture = Pictures.ofStream(bis)
// .size(100, 100)
// .create();
//
// workItem.put("examSignFacePicture", picture);
// } catch (Exception e) {
// e.printStackTrace();
// // 可选:插入默认占位图
// // workItem.put("examSignFacePicture", defaultPicture);
// }
}
String templatePath = "templates/template/studyRecord.docx";

View File

@ -2,8 +2,10 @@ package com.zcloud.edu.command.query.study;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.sun.xml.bind.v2.TODO;
import com.zcloud.edu.command.convertor.study.ClassExamPaperCoConvertor;
import com.zcloud.edu.dto.clientobject.resource.QuestionCO;
import com.zcloud.edu.dto.clientobject.study.ClassExamPaperCO;
@ -15,6 +17,7 @@ import com.zcloud.edu.persistence.repository.resource.QuestionRepository;
import com.zcloud.edu.persistence.repository.study.ClassExamPaperRepository;
import com.zcloud.edu.persistence.repository.study.ClassRepository;
import com.zcloud.edu.persistence.repository.study.StudentExamRecordRepository;
import com.zcloud.edu.persistence.repository.study.StudentRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Tools;
import com.zcloud.gbscommon.utils.WordToPdfUtil;
@ -28,9 +31,11 @@ import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
@ -47,6 +52,7 @@ public class ClassExamPaperQueryExe {
private final QuestionRepository questionRepository;
private final ClassRepository classRepository;
private final StudentExamRecordRepository studentExamRecordRepository;
private final StudentRepository studentRepository;
/**
*
@ -79,6 +85,9 @@ public class ClassExamPaperQueryExe {
*/
public SingleResponse<ClassExamPaperCO> executeGetInfoByClassId(String classId) {
ClassExamPaperDO classExamPaperDO = classExamPaperRepository.findByClassId(classId);
if(classExamPaperDO == null){
return SingleResponse.of(null);
}
List<QuestionDO> questionDOList = questionRepository.getInfoByExamPaperId(classExamPaperDO.getExamPaperId());
List<QuestionCO> questionCOList = BeanUtil.copyToList(questionDOList, QuestionCO.class);
ClassExamPaperCO classExamPaperCO = new ClassExamPaperCO();
@ -86,8 +95,16 @@ public class ClassExamPaperQueryExe {
classExamPaperCO.setQuestionList(questionCOList);
//考试人数
Long count = studentExamRecordRepository.getCountByClassExamPaperId(classExamPaperDO.getClassExamPaperId());
classExamPaperCO.setClassExamPaperStudentCount( count);
List<ClassDO> stuCountList = studentRepository.countStudentByClass(Arrays.asList(classId));
//判断当前登录人是否是教师
if (stuCountList != null && stuCountList.size() > 0){
Map<String, ClassDO> stuCountMap = stuCountList.stream().collect(Collectors.toMap(ClassDO::getClassId, classDO -> classDO));
classExamPaperCO.setClassExamPaperStudentCount( stuCountMap.get(classId).getSignCount());
}
return SingleResponse.of(classExamPaperCO);
}

View File

@ -93,6 +93,6 @@ public class ClassExamPaperCO extends ClientObject {
private String env;
@ApiModelProperty(value = "班级考试人数")
private Long classExamPaperStudentCount;
private Integer classExamPaperStudentCount;
}

View File

@ -27,6 +27,7 @@ public class ClassPageQry extends PageQuery {
private String likeName;
private String eqTrainType;
private Integer eqState;
private Integer neState;
private String geStartTime;
private String leStartTime;
private String geEndTime;