From e70ac90cf4e5dee45de2953670d6c14e89bf67bb Mon Sep 17 00:00:00 2001 From: zhangyue Date: Mon, 9 Mar 2026 08:59:35 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=AE=80=E5=8C=96=E8=80=83=E8=AF=95?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E7=85=A7=E7=89=87=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../query/archives/ArchivesQueryExe.java | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesQueryExe.java b/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesQueryExe.java index d4b48b2..5975ea5 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesQueryExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesQueryExe.java @@ -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"; From 9be59053f1397b25822d5f4dc04244b90fb9f35d Mon Sep 17 00:00:00 2001 From: zhaokai Date: Mon, 9 Mar 2026 09:07:38 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat(archives):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=A1=A3=E6=A1=88PDF=E6=96=87=E4=BB=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../archives/ArchivesPdfFileQueryExe.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesPdfFileQueryExe.java b/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesPdfFileQueryExe.java index 4807481..02e6556 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesPdfFileQueryExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesPdfFileQueryExe.java @@ -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 execute(ArchivesPdfFilePageQry archivesPdfFilePageQry) { + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + if(StringUtils.isNotEmpty(archivesPdfFilePageQry.getGeCreateTime())){ + //增加上00:00:00 + 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 params = PageQueryHelper.toHashMap(archivesPdfFilePageQry); PageResponse pageResponse = archivesPdfFileRepository.listPage(params); List examCenterCOS = archivesPdfFileCoConvertor.converDOsToCOs(pageResponse.getData()); From 1d0d5f8ff3cd6eff428086deadda0bad4d5a5bec Mon Sep 17 00:00:00 2001 From: zhaokai Date: Mon, 9 Mar 2026 09:45:48 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix(study):=20=E8=A7=A3=E5=86=B3=E7=8F=AD?= =?UTF-8?q?=E7=BA=A7=E8=80=83=E8=AF=95=E8=AF=95=E5=8D=B7=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zcloud/edu/command/query/study/ClassExamPaperQueryExe.java | 3 +++ .../src/main/java/com/zcloud/edu/dto/study/ClassPageQry.java | 1 + 2 files changed, 4 insertions(+) diff --git a/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassExamPaperQueryExe.java b/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassExamPaperQueryExe.java index 8d5394b..2fdfa14 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassExamPaperQueryExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassExamPaperQueryExe.java @@ -79,6 +79,9 @@ public class ClassExamPaperQueryExe { */ public SingleResponse executeGetInfoByClassId(String classId) { ClassExamPaperDO classExamPaperDO = classExamPaperRepository.findByClassId(classId); + if(classExamPaperDO == null){ + return SingleResponse.of(null); + } List questionDOList = questionRepository.getInfoByExamPaperId(classExamPaperDO.getExamPaperId()); List questionCOList = BeanUtil.copyToList(questionDOList, QuestionCO.class); ClassExamPaperCO classExamPaperCO = new ClassExamPaperCO(); diff --git a/web-client/src/main/java/com/zcloud/edu/dto/study/ClassPageQry.java b/web-client/src/main/java/com/zcloud/edu/dto/study/ClassPageQry.java index dc6bee0..9fa9a4f 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/study/ClassPageQry.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/study/ClassPageQry.java @@ -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; From 98ab1cc1a7148eb2d2b2d885af5de93605419f49 Mon Sep 17 00:00:00 2001 From: zhaokai Date: Mon, 9 Mar 2026 09:53:45 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix(study):=20=E4=BF=AE=E5=A4=8D=E7=8F=AD?= =?UTF-8?q?=E7=BA=A7=E8=80=83=E8=AF=95=E4=BA=BA=E6=95=B0=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../query/study/ClassExamPaperQueryExe.java | 18 ++++++++++++++++-- .../clientobject/study/ClassExamPaperCO.java | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassExamPaperQueryExe.java b/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassExamPaperQueryExe.java index 2fdfa14..00d78af 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassExamPaperQueryExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassExamPaperQueryExe.java @@ -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; /** * 分页 @@ -89,8 +95,16 @@ public class ClassExamPaperQueryExe { classExamPaperCO.setQuestionList(questionCOList); //考试人数 - Long count = studentExamRecordRepository.getCountByClassExamPaperId(classExamPaperDO.getClassExamPaperId()); - classExamPaperCO.setClassExamPaperStudentCount( count); + + List stuCountList = studentRepository.countStudentByClass(Arrays.asList(classId)); + //判断当前登录人是否是教师 + + if (stuCountList != null && stuCountList.size() > 0){ + Map stuCountMap = stuCountList.stream().collect(Collectors.toMap(ClassDO::getClassId, classDO -> classDO)); + classExamPaperCO.setClassExamPaperStudentCount( stuCountMap.get(classId).getSignCount()); + } + + return SingleResponse.of(classExamPaperCO); } diff --git a/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/ClassExamPaperCO.java b/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/ClassExamPaperCO.java index b20ab23..32b6e35 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/ClassExamPaperCO.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/ClassExamPaperCO.java @@ -93,6 +93,6 @@ public class ClassExamPaperCO extends ClientObject { private String env; @ApiModelProperty(value = "班级考试人数") - private Long classExamPaperStudentCount; + private Integer classExamPaperStudentCount; }