From 5026b838a0826dcfa8aef2210df9cbb797ab7e48 Mon Sep 17 00:00:00 2001 From: zhaokai Date: Wed, 11 Mar 2026 15:30:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(archives):=20=E6=B7=BB=E5=8A=A0=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E6=97=B6=E9=95=BF=E6=A0=BC=E5=BC=8F=E5=8C=96=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/template/attendance_record.docx | Bin 13546 -> 12859 bytes .../templates/template/studyRecord.docx | Bin 13558 -> 12773 bytes .../query/archives/ArchivesQueryExe.java | 8 +++-- .../dto/data/archives/PersonArchivesDTO.java | 1 + .../model/archives/PersonArchivesE.java | 28 ++++++++++++++++++ 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/start/src/main/resources/templates/template/attendance_record.docx b/start/src/main/resources/templates/template/attendance_record.docx index b7d0e1377c7621ad3cc7bf1a8bfb98d90f0dac50..8cf126c318a18076471593b4fdae549782124d46 100644 GIT binary patch delta 9086 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 TI~fW#02_e+wtHJy{;>WZlZLM& diff --git a/start/src/main/resources/templates/template/studyRecord.docx b/start/src/main/resources/templates/template/studyRecord.docx index 675a2ff5c37cd73bf7af257e6a73fa0df9a54475..a2acc5953d0a427e106cdd2f33fd1bf7c3d1fd3c 100644 GIT binary patch delta 8983 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

U>z47r~U~C^1!?NS;UV7`N88MQf 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 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 44176df..41bf6e3 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 @@ -54,6 +54,7 @@ import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; import java.io.File; +import java.math.BigDecimal; import java.nio.file.Files; import java.nio.file.Paths; import java.time.format.DateTimeFormatter; @@ -471,6 +472,7 @@ public class ArchivesQueryExe { // // workItem.put("examSignFacePicture", defaultPicture); // } } + BigDecimal videoTotalTime = params.getVideoTotalTime(); String templatePath = "templates/template/studyRecord.docx"; ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); @@ -521,11 +523,11 @@ public class ArchivesQueryExe { workItem.put("className", params.getClassName()); if(!ObjectUtils.isEmpty(params.getStudentExamRecord().getSignUrl())){ // PictureRenderData signPicture = Pictures.ofUrl(fileUrlConfig.getPrefixUrl() + params.getStudentExamRecord().getSignUrl(), PictureType.JPEG).size(50, 15).create();//网络图片地址 - PictureRenderData signPicture = ImageUtil.createWithThumbnailator(fileUrlConfig.getPrefixUrl() + params.getStudentExamRecord(), 50, 15); + PictureRenderData signPicture = ImageUtil.createWithThumbnailator(fileUrlConfig.getPrefixUrl() + params.getStudentExamRecord().getSignUrl(), 50, 15); workItem.put("signPicture", signPicture); } - log.info("考试试卷下载转换前,{}",JSONUtil.toJsonStr(params.getStudentExamRecord())); - log.info("考试试卷下载,{}",JSONUtil.toJsonStr(workItem)); +// log.info("考试试卷下载转换前,{}",JSONUtil.toJsonStr(params.getStudentExamRecord())); +// log.info("考试试卷下载,{}",JSONUtil.toJsonStr(workItem)); String templatePath = "templates/template/exam.docx"; ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); return outputStream.toByteArray(); diff --git a/web-client/src/main/java/com/zcloud/edu/dto/data/archives/PersonArchivesDTO.java b/web-client/src/main/java/com/zcloud/edu/dto/data/archives/PersonArchivesDTO.java index 6a68c60..9e9428f 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/data/archives/PersonArchivesDTO.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/data/archives/PersonArchivesDTO.java @@ -139,6 +139,7 @@ public class PersonArchivesDTO { @ApiModelProperty(value = "视频时长") private BigDecimal videoTotalTime; + private String videoTotalTimeStr; @ApiModelProperty(value = "课件数") private Integer videoCount; diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/PersonArchivesE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/PersonArchivesE.java index 821d6d1..06b31a4 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/PersonArchivesE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/PersonArchivesE.java @@ -140,6 +140,7 @@ public class PersonArchivesE extends BaseE { private String trainSubject; @ApiModelProperty(value = "视频时长") private BigDecimal videoTotalTime; + private String videoTotalTimeStr; @ApiModelProperty(value = "课件数") private Integer videoCount; @ApiModelProperty(value = "打卡签到人脸图片路径") @@ -199,7 +200,32 @@ public class PersonArchivesE extends BaseE { .filter(bigDecimal -> bigDecimal != null) // 过滤null值,防止空指针异常 .reduce(BigDecimal.ZERO, BigDecimal::add); setVideoTotalTime(videoTotalTime); + setVideoTotalTimeStr(getTimeStr(videoTotalTime)); } + + public String getTimeStr(BigDecimal decimal) { + + if (decimal != null) { + long totalSeconds = decimal.longValue(); + long hours = totalSeconds / 3600; + long minutes = (totalSeconds % 3600) / 60; + long seconds = totalSeconds % 60; + + StringBuilder timeText = new StringBuilder(); + if (hours > 0) { + timeText.append(hours).append("小时"); + } + if (minutes > 0) { + timeText.append(minutes).append("分"); + } + if (seconds > 0 || timeText.length() == 0) { + timeText.append(seconds).append("秒"); + } + return timeText.toString(); + } + return ""; + } + public void initStudyRecord(StudentE studentE, ClassE classE, List studentSignEList, List classCurList) { BeanUtils.copyProperties(studentE, this); @@ -226,6 +252,7 @@ public class PersonArchivesE extends BaseE { String trainSubject = classCurList.stream().map(ClassCurriculumE::getCurriculumName).collect(Collectors.joining(",")); setTrainSubject(trainSubject); setVideoTotalTime(videoTotalTime); + setVideoTotalTimeStr(getTimeStr(videoTotalTime)); if (studentSignEList != null && studentSignEList.size() > 0){ for (StudentSignE studentSignE : studentSignEList){ if(studentSignE.getType() == 1 @@ -280,6 +307,7 @@ public class PersonArchivesE extends BaseE { .filter(bigDecimal -> bigDecimal != null) // 过滤null值,防止空指针异常 .reduce(BigDecimal.ZERO, BigDecimal::add); setVideoTotalTime(videoTotalTime); + setVideoTotalTimeStr(getTimeStr(videoTotalTime)); } if (chapterEList != null && chapterEList.size() > 0){ setVideoCount(chapterEList.size());