diff --git a/Dockerfile b/Dockerfile index cc1e449..53e4db9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,33 @@ +#FROM jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/pub/jdk:1.8.0_202 +# +#ENV TZ=Asia/Shanghai +#RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +# +#COPY ./start/target/start.jar /opt/app.jar +# +# +#ENTRYPOINT ["java", "-jar", "/opt/app.jar"] + + + FROM jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/pub/jdk:1.8.0_202 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +# === 修复 CentOS 8 EOL 问题:切换到 vault 归档源 === +RUN sed -i 's|mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-*.repo && \ + sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo + +# 安装字体工具 +RUN yum install -y fontconfig mkfontdir && \ + yum clean all + +# 安装宋体 +RUN mkdir -p /usr/share/fonts/chinese +COPY fonts/simsun.ttc /usr/share/fonts/chinese/ +RUN chmod 644 /usr/share/fonts/chinese/simsun.ttc && \ + fc-cache -fv + COPY ./start/target/start.jar /opt/app.jar - - ENTRYPOINT ["java", "-jar", "/opt/app.jar"] diff --git a/fonts/simsun.ttc b/fonts/simsun.ttc new file mode 100644 index 0000000..4cbcb71 Binary files /dev/null and b/fonts/simsun.ttc differ diff --git a/start/src/main/resources/templates/template/class_exam_result.docx b/start/src/main/resources/templates/template/class_exam_result.docx new file mode 100644 index 0000000..86611c3 --- /dev/null +++ b/start/src/main/resources/templates/template/class_exam_result.docx @@ -0,0 +1,39 @@ + 学员考核成绩统计表 +班级名称:{{className}} + 公司名称 + {{corpName}} + 培训时间 + 班级名称 + {{startTime}} 至 {{endTime}} + {{className}} + 应参加培训人数 + 实际参加培训人数 + {{studentCount}} + {{signCount}} + 合格学员名单 + {{pass_work_list}}序号 + 姓名 + 身份证 + 手机号 + 性别 + 结业考试成绩 + [index] + [name] + [userIdCard] + [phone] + [sex] + [stateName] + 未合格学员名单 + {{fail_work_list}}序号 + 姓名 + 身份证 + 手机号 + 性别 + 结业考试成绩 + [index] + [name] + [userIdCard] + [phone] + [sex] + [stateName] + diff --git a/start/src/main/resources/templates/template/class_paper.docx b/start/src/main/resources/templates/template/class_paper.docx new file mode 100644 index 0000000..7bcfebb --- /dev/null +++ b/start/src/main/resources/templates/template/class_paper.docx @@ -0,0 +1,6 @@ + {{examName}} + (满分:{{examScore}}分) +{{question_list}} +([questionTypeName]) [index].[questionDry] (题目分值:[score] 正确答案:[choiceAnswer] 学员答案:[answer]) +[optionsText] + diff --git a/start/src/main/resources/templates/template/exam.docx b/start/src/main/resources/templates/template/exam.docx index 63e34dd..58550a9 100644 --- a/start/src/main/resources/templates/template/exam.docx +++ b/start/src/main/resources/templates/template/exam.docx @@ -5,6 +5,7 @@ 分数:{{examScore}} 考试时间:{{examTimeBegin}} 签字: +{{@signPicture}} ([questionTypeName]) [index].[questionDry] (题目分值:[score] 正确答案:[choiceAnswer] 学员答案:[answer]) -A:[optionA] B:[optionB] +[optionsText] diff --git a/start/src/main/resources/templates/template/homepage.docx b/start/src/main/resources/templates/template/homepage.docx new file mode 100644 index 0000000..ab6a6d1 --- /dev/null +++ b/start/src/main/resources/templates/template/homepage.docx @@ -0,0 +1,16 @@ + + + + + + 人员安全培训档案 + + + + + + + 姓 名:{{name}} + 身份证号:{{userIdCard}} + 建档日期:{{endTime}} + 单位名称(公章): diff --git a/start/src/main/resources/templates/template/jc.docx b/start/src/main/resources/templates/template/jc.docx new file mode 100644 index 0000000..f1f0531 --- /dev/null +++ b/start/src/main/resources/templates/template/jc.docx @@ -0,0 +1,5 @@ + 安全培训教材或课2程讲义 + {{curriculumName}}教材讲义{{chapter_list}} +[index].[name] + 课件描述:[coursewareIntroduce] + diff --git a/start/src/main/resources/templates/template/jc2.docx b/start/src/main/resources/templates/template/jc2.docx new file mode 100644 index 0000000..12db05a --- /dev/null +++ b/start/src/main/resources/templates/template/jc2.docx @@ -0,0 +1,5 @@ + 安全培训教材或课程讲义 + {{curriculumName}}教材讲义{{chapter_list}} +[index].[name] +[chapter] + diff --git a/start/src/main/resources/templates/template/picture_data.docx b/start/src/main/resources/templates/template/picture_data.docx new file mode 100644 index 0000000..b5b97bb --- /dev/null +++ b/start/src/main/resources/templates/template/picture_data.docx @@ -0,0 +1,18 @@ + 培训影像资料 + 班级名称:{{className}} + {{sign_list}}序号 + 学员姓名 + 身份证号 + 手机 + 头像 + 签到照片 + 考试照片 + [index] + [studentName] + [userIdCard] + [phone] + [@facePicture] + [@signPicture] + [@examPicture] + 备注:仅限用于线上学习证明材料,其他使用无效 + diff --git a/start/src/main/resources/templates/template/review.docx b/start/src/main/resources/templates/template/review.docx new file mode 100644 index 0000000..3b8a90a --- /dev/null +++ b/start/src/main/resources/templates/template/review.docx @@ -0,0 +1,29 @@ + 生产经营单位安全培训教材会审表 + 教材名称 +{{curriculumName}} + 出版书号 +{{bookNum}} + 编写单位 +{{corpName}} + 编写时间 +{{writeDate}} + 教材类型 +{{materialType}} + 会审地点 +{{address}} + 主持人 +{{compere}} + 会审时间 +{{auditDate}} + 安全培训教材会审情况 + {{record_list}}审查人员 + 工作部门 + 职务/职称 + 审查意见 + [reviewUser] + [department] + [duties] + [checkOpinion] + 会审意见 +{{reviewOpinions}} + diff --git a/start/src/main/resources/templates/template/sign.docx b/start/src/main/resources/templates/template/sign.docx new file mode 100644 index 0000000..4d41798 --- /dev/null +++ b/start/src/main/resources/templates/template/sign.docx @@ -0,0 +1,19 @@ + 安全培训教育记录及签字表 + 日期 + {{startTime}}至{{endTime}} + 培训地点 +{{trainingLocation}} + 人数 + {{studentCount}} + 培训教师 +{{teacherName}} +培训内容 +{{trainSubject}} + 受培训人 + {{sign_list}}序号 + 姓名 + 签字 + [index] + [studentName] + [@picture] + diff --git a/web-adapter/src/main/java/com/zcloud/edu/web/archives/ArchivesController.java b/web-adapter/src/main/java/com/zcloud/edu/web/archives/ArchivesController.java index c0001cc..50959be 100644 --- a/web-adapter/src/main/java/com/zcloud/edu/web/archives/ArchivesController.java +++ b/web-adapter/src/main/java/com/zcloud/edu/web/archives/ArchivesController.java @@ -1,6 +1,7 @@ package com.zcloud.edu.web.archives; import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.SingleResponse; import com.jjb.saas.framework.auth.model.SSOUser; import com.jjb.saas.framework.auth.utils.AuthContext; @@ -72,9 +73,15 @@ public class ArchivesController { } @ApiOperation("下载一人一档") @PostMapping("/downloadPersonArchives") - public SingleResponse downloadPersonArchives(@RequestBody ArchivesQry qry) { + public Response downloadPersonArchives(@RequestBody ArchivesQry qry) { archivesService.downloadPersonArchives(qry); - return null; + return Response.buildSuccess(); + } + @ApiOperation("下载一期一档") + @PostMapping("/downloadClassArchives") + public Response downloadClassArchives(@RequestBody ArchivesQry qry) { + archivesService.downloadClassArchives(qry); + return Response.buildSuccess(); } diff --git a/web-app/pom.xml b/web-app/pom.xml index 3fe7e99..97c82ff 100644 --- a/web-app/pom.xml +++ b/web-app/pom.xml @@ -22,5 +22,9 @@ web-infrastructure + + net.coobird + thumbnailator + 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 d1bc804..dc89d91 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 @@ -2,36 +2,43 @@ package com.zcloud.edu.command.query.archives; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.io.unit.DataUnit; import com.alibaba.cola.dto.PageResponse; -import com.alibaba.cola.dto.SingleResponse; import com.deepoove.poi.data.PictureRenderData; import com.deepoove.poi.data.PictureType; import com.deepoove.poi.data.Pictures; +import com.jjb.saas.framework.auth.model.SSOUser; +import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.edu.command.convertor.archives.ArchivesPdfFileCoConvertor; -import com.zcloud.edu.command.convertor.study.StudentCoConvertor; -import com.zcloud.edu.command.convertor.study.StudentExamRecordCoConvertor; -import com.zcloud.edu.command.convertor.study.StudentExamRecordItemCoConvertor; +import com.zcloud.edu.command.convertor.archives.ArchivesReviewCoConvertor; +import com.zcloud.edu.command.convertor.archives.ArchivesReviewRecordCoConvertor; +import com.zcloud.edu.command.convertor.study.*; import com.zcloud.edu.domain.model.archives.ArchivesPdfFileE; +import com.zcloud.edu.domain.model.archives.ClassArchivesE; import com.zcloud.edu.domain.model.archives.PersonArchivesE; import com.zcloud.edu.domain.model.study.*; import com.zcloud.edu.dto.archives.ArchivesPdfFilePageQry; import com.zcloud.edu.dto.archives.ArchivesQry; import com.zcloud.edu.dto.clientobject.archives.ArchivesPdfFileCO; -import com.zcloud.edu.dto.clientobject.study.StudentExamRecordCO; -import com.zcloud.edu.dto.clientobject.study.StudentExamRecordItemCO; +import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO; +import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewRecordCO; +import com.zcloud.edu.dto.clientobject.resource.QuestionCO; +import com.zcloud.edu.dto.clientobject.study.*; +import com.zcloud.edu.dto.data.archives.ClassArchivesDTO; import com.zcloud.edu.dto.data.archives.PersonArchivesDTO; +import com.zcloud.edu.persistence.dataobject.QuestionDO; import com.zcloud.edu.persistence.dataobject.archives.ArchivesPdfFileDO; +import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewDO; +import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewRecordDO; import com.zcloud.edu.persistence.dataobject.study.*; import com.zcloud.edu.persistence.repository.archives.ArchivesPdfFileRepository; +import com.zcloud.edu.persistence.repository.archives.ArchivesReviewRecordRepository; +import com.zcloud.edu.persistence.repository.archives.ArchivesReviewRepository; +import com.zcloud.edu.persistence.repository.resource.QuestionRepository; import com.zcloud.edu.persistence.repository.study.*; -import com.zcloud.gbscommon.utils.DateUtil; -import com.zcloud.gbscommon.utils.PageQueryHelper; -import com.zcloud.gbscommon.utils.Tools; -import com.zcloud.gbscommon.utils.WordToPdfUtil; +import com.zcloud.gbscommon.utils.*; import com.zcloud.gbscommon.zcloudimgfiles.facade.ZcloudImgFilesFacade; -import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; +import net.coobird.thumbnailator.Thumbnails; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.io.output.ByteArrayOutputStream; import org.apache.dubbo.config.annotation.DubboReference; @@ -41,9 +48,15 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; -import java.lang.reflect.InvocationTargetException; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.InputStream; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; /** @@ -66,12 +79,23 @@ public class ArchivesQueryExe { private final StudentExamRecordRepository studentExamRecordRepository; private final StudentExamRecordItemRepository studentExamRecordItemRepository; private final StudentExamRecordItemCoConvertor studentExamRecordItemCoConvertor; + private final ArchivesReviewRepository archivesReviewRepository; + private final ArchivesReviewRecordRepository archivesReviewRecordRepository; + private final ArchivesReviewCoConvertor archivesReviewCoConvertor; + private final ArchivesReviewRecordCoConvertor archivesReviewRecordCoConvertor; + private final ClassCurriculumChapterCoConvertor classCurriculumChapterCoConvertor; + private final ClassCurriculumCoConvertor classCurriculumCoConvertor; + private final ClassExamPaperRepository classExamPaperRepository; + private final QuestionRepository questionRepository; + private final StudentSignCoConvertor studentSignCoConvertor; + private static String prefixUrl; // = "https://jpfz.qhdsafety.com/gbsFileTest/"; // public static Integer corePoolSize; @Value("${file.url}") public void setPrefixUrl(String prefixUrlProperties) { + System.out.println("prefixUrlProperties-----"+prefixUrlProperties); prefixUrl = prefixUrlProperties; } @@ -156,7 +180,7 @@ public class ArchivesQueryExe { } // 新增档案下载记录 ArchivesPdfFileE archivesPdfFileE = new ArchivesPdfFileE(); - archivesPdfFileE.init("student", personArchivesDTO.getStudentId(), 1); + archivesPdfFileE.init("student", personArchivesDTO.getStudentId(), 1, AuthContext.getTenantId(), personArchivesDTO.getName()+"-"+personArchivesDTO.getClassName()); ArchivesPdfFileDO archivesPdfFileDO = new ArchivesPdfFileDO(); BeanUtils.copyProperties(archivesPdfFileE, archivesPdfFileDO); archivesPdfFileRepository.save(archivesPdfFileDO); @@ -166,29 +190,50 @@ public class ArchivesQueryExe { @Async("archivesAsyncExecutor") public void execteGeneratePdf(ArchivesQry qry, PersonArchivesDTO params){ List byteArrayList = new ArrayList<>(); + if (qry.getTypeList().contains(1)){ + byteArrayList.add(execteHomepage(params)); + System.out.println("1-------------------------------------------------------------"); + } if (qry.getTypeList().contains(2)){ byteArrayList.add(execteAttendanceRecord(params)); + System.out.println("2------------------------------------------------------------"); } if (qry.getTypeList().contains(3)){ byteArrayList.add(execteStudentRecord(params)); + System.out.println("3-------------------------------------------------------------"); } if (qry.getTypeList().contains(4)){ byteArrayList.add(execteStudyRecord(params)); + System.out.println("4-------------------------------------------------------------"); } if (qry.getTypeList().contains(5)){ byteArrayList.add(execteExamRecord(params)); + System.out.println("5-------------------------------------------------------------"); } try { byte[] pdf = WordToPdfUtil.mergeWordToPdf(byteArrayList); String filepath = zcloudImgFilesFacade.saveFile(pdf, params.getName()+"-"+params.getClassName()+"-"+ DateUtil.getSdfTimes()+".pdf","personArchives", params.getClassCorpinfoId()); + System.out.println(filepath+"filepath-------------------------------------------------------------"); ArchivesPdfFileE archivesPdfFileE = new ArchivesPdfFileE(); archivesPdfFileE.initEdit(params.getArchivesPdfFileId(), filepath, 1, null); ArchivesPdfFileDO archivesPdfFileDO = new ArchivesPdfFileDO(); BeanUtils.copyProperties(archivesPdfFileE, archivesPdfFileDO); -// archivesPdfFileRepository.updateById(archivesPdfFileDO); + System.out.println(archivesPdfFileDO.toString()); + archivesPdfFileRepository.updateById(archivesPdfFileDO); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public byte[] execteHomepage(PersonArchivesDTO params){ + try { + Map workItem = PropertyUtils.describe( params); + String templatePath = "templates/template/homepage.docx"; + ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); + return outputStream.toByteArray(); } catch (Exception e) { throw new RuntimeException(e); } @@ -208,7 +253,9 @@ public class ArchivesQueryExe { public byte[] execteStudentRecord(PersonArchivesDTO params){ try { Map workItem = PropertyUtils.describe( params); - PictureRenderData picture = Pictures.ofUrl(prefixUrl + params.getUserAvatarUrl(), PictureType.JPEG).size(100, 100).create();//网络图片地址 + String url = "https://jpfz.qhdsafety.com/gbsFileTest/"; + System.out.println("prefixUrl-----"+prefixUrl); + PictureRenderData picture = Pictures.ofUrl(url + params.getUserAvatarUrl(), PictureType.JPEG).size(100, 100).create();//网络图片地址 workItem.put("img", picture); String templatePath = "templates/template/studentInfo.docx"; ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); @@ -227,10 +274,37 @@ public class ArchivesQueryExe { PictureRenderData signFacePicture = Pictures.ofUrl(prefixUrl + params.getSignFaceUrl(), PictureType.JPEG).size(100, 100).create();//网络图片地址 workItem.put("signFacePicture", signFacePicture); } - if(!ObjectUtils.isEmpty(params.getExamSignFlag())){ - PictureRenderData examSignFacePicture = Pictures.ofUrl(prefixUrl + params.getExamSignFaceUrl(), PictureType.JPEG).size(100, 100).create();//网络图片地址 - workItem.put("examSignFacePicture", examSignFacePicture); +// if(!ObjectUtils.isEmpty(params.getExamSignFlag())){ +// PictureRenderData examSignFacePicture = Pictures.ofUrl(prefixUrl + params.getExamSignFaceUrl(), PictureType.JPEG).size(100, 100).create();//网络图片地址 +// workItem.put("examSignFacePicture", examSignFacePicture); +// } + + + if (!ObjectUtils.isEmpty(params.getExamSignFlag())) { + String imageUrl = prefixUrl + 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"; ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); return outputStream.toByteArray(); @@ -248,30 +322,38 @@ public class ArchivesQueryExe { Map itemMap = PropertyUtils.describe( item); int index = atomicIndex.getAndIncrement(); itemMap.put("index", index); + String optionsText = null; if(item.getQuestionType() == 1){ itemMap.put("questionTypeName", "单选题"); + optionsText = "A:" + item.getOptionA() + "\n" + + "B:" + item.getOptionB() + "\n" + + "C:" + item.getOptionC() + "\n" + + "D:" + item.getOptionD(); } else if(item.getQuestionType() == 2){ itemMap.put("questionTypeName", "多选题"); + optionsText = "A:" + item.getOptionA() + "\n" + + "B:" + item.getOptionB() + "\n" + + "C:" + item.getOptionC() + "\n" + + "D:" + item.getOptionD(); }else if(item.getQuestionType() == 3){ itemMap.put("questionTypeName", "判断题"); + optionsText = "A:" + item.getOptionA() + " B:" + item.getOptionB(); } + itemMap.put("optionsText", optionsText); workList.add(itemMap); } catch (Exception e) { throw new RuntimeException(e); } }); workItem.put("examRecord_list", workList); -// if(!ObjectUtils.isEmpty(params.getStudentExamRecord().getSignUrl())){ -// PictureRenderData signPicture = Pictures.ofUrl(prefixUrl + params.getStudentExamRecord().getSignUrl(), PictureType.JPEG).size(100, 100).create();//网络图片地址 -// workItem.put("signPicture", signPicture); -// } -// if(!ObjectUtils.isEmpty(params.getExamSignFlag())){ -// PictureRenderData examSignFacePicture = Pictures.ofUrl(prefixUrl + params.getExamSignFaceUrl(), PictureType.JPEG).size(100, 100).create();//网络图片地址 -// workItem.put("examSignFacePicture", examSignFacePicture); -// } + workItem.put("name", params.getName()); + workItem.put("className", params.getClassName()); + if(!ObjectUtils.isEmpty(params.getStudentExamRecord().getSignUrl())){ + PictureRenderData signPicture = Pictures.ofUrl(prefixUrl + params.getStudentExamRecord().getSignUrl(), PictureType.JPEG).size(50, 15).create();//网络图片地址 + workItem.put("signPicture", signPicture); + } String templatePath = "templates/template/exam.docx"; ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); - System.out.println("5555555555555"); return outputStream.toByteArray(); } catch (Exception e) { throw new RuntimeException(e); @@ -280,5 +362,487 @@ public class ArchivesQueryExe { + + + public ClassArchivesDTO downloadClassArchives(ArchivesQry qry){ + HashMap params = new HashMap(); + params.put("classId", qry.getClassId()); + List reviewCOList = new ArrayList<>(); + List curriculumList = new ArrayList<>(); + List signList = new ArrayList<>(); + List classCurList = new ArrayList<>(); + ClassExamPaperCO classExamPaperCO = new ClassExamPaperCO(); + + List passStudentList = new ArrayList(); + List failStudentList = new ArrayList(); + Long stuCount = 0L; + ClassDO classDO = classRepository.getByClassId(qry.getClassId()); + ClassE classE = new ClassE(); + BeanUtils.copyProperties(classDO, classE); + // 教材会审表 + if (qry.getTypeList().contains(1)){ + // 查询所有教材会审表 + List reviewList = archivesReviewRepository.listAll(params); + String reviewIds = reviewList.stream() + .map(ArchivesReviewDO::getArchivesReviewId) + .filter(archivesReviewId -> archivesReviewId != null && !archivesReviewId.trim().isEmpty()) // 非 null 且非空(可选 trim) + .collect(Collectors.joining(",")); + reviewCOList = archivesReviewCoConvertor.converDOsToCOs(reviewList); + // 查询子表 + params.put("inArchivesReviewId", reviewIds); + List reviewRecordList = archivesReviewRecordRepository.listAll(params); + if(reviewRecordList != null && reviewRecordList.size() > 0){ + List reviewRecordCOList = archivesReviewRecordCoConvertor.converDOsToCOs(reviewRecordList); + // 子表放到主表下 + Map> reviewRecordCOMap = reviewRecordCOList.stream().collect(Collectors.groupingBy(ArchivesReviewRecordCO::getArchivesReviewId)); + reviewCOList.forEach(reviewCO -> { + reviewCO.setArchivesReviewRecordList(reviewRecordCOMap.get(reviewCO.getArchivesReviewId())); + }); + } + } + + // 安全培训教材或课程讲义 + if (qry.getTypeList().contains(2)){ + params.put("eqClassId", qry.getClassId()); + List curList = classCurriculumRepository.listAll(params); + List classCurriculumIds = curList.stream().map(ClassCurriculumDO::getClassCurriculumId).collect(Collectors.toList()); + List chapterList = classCurriculumChapterRepository.listByClassCurriculumIds(classCurriculumIds); + List chapterCoList = classCurriculumChapterCoConvertor.converDOsToCOs(chapterList); + List resultList = Tools.buildEntityTree(chapterCoList, "classCurriculumChapterId", "parentId", "childCurriculumChapterCOList", "0"); + + Map> chapterMap = resultList.stream().collect(Collectors.groupingBy(ClassCurriculumChapterCO::getClassCurriculumId)); + curriculumList = classCurriculumCoConvertor.converDOsToCOs(curList); + curriculumList.stream().forEach(bean -> { + bean.setCurriculumChapterCOList(chapterMap.get(bean.getClassCurriculumId())); + }); + } + if (qry.getTypeList().contains(3) || qry.getTypeList().contains(4) || qry.getTypeList().contains(6)){ + + // 查询学员数量 + List stuList = studentRepository.listAll(params); + stuCount = Long.valueOf(stuList.size()); + List stuCOList = BeanUtil.copyToList(stuList, StudentCO.class); + // 获取通过和未通过学员 + stuCOList.forEach(stu -> { + if (stu.getState() == 0){ + failStudentList.add(stu); + } + if (stu.getState() == 1){ + passStudentList.add(stu); + } + }); + + // 学员签到 + List studentSignList = studentSignRepository.listAllByStudent(params); + signList = studentSignCoConvertor.converDOsToCOs(studentSignList); + + if(qry.getTypeList().contains(3)){ + // 课程信息 + List curEList = classCurriculumRepository.listAll(params); + classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class); + } + + } +// if (qry.getTypeList().contains(4)){ +// +// ClassDO classDO = classRepository.getByClassId(qry.getClassId()); +// ClassE classE = new ClassE(); +// BeanUtils.copyProperties(classDO, classE); +// List studentSignList = studentSignRepository.listAllByStudent(params); +// classArchivesDTO.setSignList(BeanUtil.copyToList(studentSignList, StudentSignCO.class)); +// } + if(qry.getTypeList().contains(5)){ + ClassExamPaperDO classExamPaperDO = classExamPaperRepository.findByClassId(qry.getClassId()); + List questionDOList = questionRepository.getInfoByExamPaperId(classExamPaperDO.getExamPaperId()); + List questionCOList = BeanUtil.copyToList(questionDOList, QuestionCO.class); + + BeanUtils.copyProperties(classExamPaperDO, classExamPaperCO); + classExamPaperCO.setQuestionList(questionCOList); + } + ClassArchivesDTO classArchivesDTO = new ClassArchivesDTO(); + ClassArchivesE classArchivesE = new ClassArchivesE(); + classArchivesE.initArchives(classE, stuCount, classCurList, signList.size()); + BeanUtils.copyProperties(classArchivesE, classArchivesDTO); + + classArchivesDTO.setPassStudentList(passStudentList); + classArchivesDTO.setFailStudentList(failStudentList); + classArchivesDTO.setClassPaper(classExamPaperCO); + SSOUser ssoUser = AuthContext.getCurrentUser(); + classArchivesDTO.setCorpinfoId(ssoUser.getTenantId()); + classArchivesDTO.setArchivesReviewList(reviewCOList); + + // 新增档案下载记录 + ArchivesPdfFileE archivesPdfFileE = new ArchivesPdfFileE(); + archivesPdfFileE.init("class", classArchivesDTO.getClassId(), 2, AuthContext.getTenantId(), classArchivesDTO.getClassName()); + ArchivesPdfFileDO archivesPdfFileDO = new ArchivesPdfFileDO(); + BeanUtils.copyProperties(archivesPdfFileE, archivesPdfFileDO); + archivesPdfFileRepository.save(archivesPdfFileDO); + classArchivesDTO.setArchivesPdfFileId(archivesPdfFileDO.getId()); + return classArchivesDTO; + } + + + @Async("archivesAsyncExecutor") + public void execteClassGeneratePdf(ArchivesQry qry, ClassArchivesDTO params) { + + String tempDir = System.getProperty("java.io.tmpdir"); + List stringList = new ArrayList<>(); + try { + if (qry.getTypeList().contains(1)){ + String zipString = execteReview(params); + stringList.add(new File(zipString)); + } + if (qry.getTypeList().contains(2)){ + String zipString = execteClassCurriculum(params); + stringList.add(new File(zipString)); + } + if (qry.getTypeList().contains(3)){ + byte[] word = execteSign(params); + List byteArrayList = new ArrayList<>(); + byteArrayList.add(word); + byte[] pdf = WordToPdfUtil.mergeWordToPdf(byteArrayList); + Files.write(Paths.get(tempDir+"aaa/"+params.getClassName()+"-签字表-"+DateUtil.getSdfTimes()+".pdf"), pdf); + stringList.add(new File(tempDir+"aaa/"+params.getClassName()+"-签字表-"+DateUtil.getSdfTimes()+".pdf")); + } + if (qry.getTypeList().contains(4)){ + byte[] word = exectePicture(params); + List byteArrayList = new ArrayList<>(); + byteArrayList.add(word); + byte[] pdf = WordToPdfUtil.mergeWordToPdf(byteArrayList); + Files.write(Paths.get(tempDir+"aaa/"+params.getClassName()+"-影像资料-"+DateUtil.getSdfTimes()+".pdf"), pdf); + stringList.add(new File(tempDir+"aaa/"+params.getClassName()+"-影像资料-"+DateUtil.getSdfTimes()+".pdf")); + } + if (qry.getTypeList().contains(5)){ + byte[] word = execteClassPaper(params); + List byteArrayList = new ArrayList<>(); + byteArrayList.add(word); + byte[] pdf = WordToPdfUtil.mergeWordToPdf(byteArrayList); + Files.write(Paths.get(tempDir+"aaa/"+params.getClassName()+"-试卷-"+DateUtil.getSdfTimes()+".pdf"), pdf); + stringList.add(new File(tempDir+"aaa/"+params.getClassName()+"-试卷-"+DateUtil.getSdfTimes()+".pdf")); + } + if (qry.getTypeList().contains(6)){ + byte[] word = execteClassExamResult(params); + List byteArrayList = new ArrayList<>(); + byteArrayList.add(word); + byte[] pdf = WordToPdfUtil.mergeWordToPdf(byteArrayList); + Files.write(Paths.get(tempDir+"aaa/"+params.getClassName()+"-学员考核成绩统计表-"+DateUtil.getSdfTimes()+".pdf"), pdf); + stringList.add(new File(tempDir+"aaa/"+params.getClassName()+"-学员考核成绩统计表-"+DateUtil.getSdfTimes()+".pdf")); + } + FileZip.zipList(tempDir+"aaa/"+params.getClassName()+"-"+ DateUtil.getSdfTimes()+"zipzip.zip",stringList ); + File file = new File(tempDir+"aaa/"+params.getClassName()+"-"+ DateUtil.getSdfTimes()+"zipzip.zip"); + byte[] bytes = Files.readAllBytes(file.toPath()); + String filepath = zcloudImgFilesFacade.saveFile(bytes, params.getClassName()+"-"+ DateUtil.getSdfTimes()+"zipzip.zip","classArchives", params.getCorpinfoId()); + ArchivesPdfFileE archivesPdfFileE = new ArchivesPdfFileE(); + archivesPdfFileE.initEdit(params.getArchivesPdfFileId(), filepath, 1, null); + ArchivesPdfFileDO archivesPdfFileDO = new ArchivesPdfFileDO(); + BeanUtils.copyProperties(archivesPdfFileE, archivesPdfFileDO); + archivesPdfFileRepository.updateById(archivesPdfFileDO); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } finally { +// FileUtil.delFile(); + } + } + + /** + * 教材会审表 + * @param params + * @return + */ + public String execteReview(ClassArchivesDTO params){ + try { + if (params.getArchivesReviewList() != null && params.getArchivesReviewList().size() > 0){ + String tempDir = System.getProperty("java.io.tmpdir"); + Map byteArrayMap = new HashMap<>(); + for (ArchivesReviewCO item : params.getArchivesReviewList()){ + byte[] word = execteReviewInfo(item); + List byteArrayList = new ArrayList<>(); + byteArrayList.add(word); + byte[] pdf = WordToPdfUtil.mergeWordToPdf(byteArrayList); +// String filepath = zcloudImgFilesFacade.saveFile(pdf, item.getCurriculumName()+"-教材会审表-"+ DateUtil.getSdfTimes()+".pdf","classArchives", params.getCorpinfoId()); + byteArrayMap.put(item.getCurriculumName()+"-教材会审表-"+ DateUtil.getSdfTimes()+".pdf", pdf); + } + + FileZip.writeByteArraysToZip(tempDir+"aaa/"+params.getClassName()+"-教材会审表-"+DateUtil.getSdfTimes()+".zip", byteArrayMap); + return tempDir+"aaa/"+params.getClassName()+"-教材会审表-"+DateUtil.getSdfTimes()+".zip"; + } + } catch (Exception e) { + throw new RuntimeException(e); + } + return null; + } + + + + + public byte[] execteReviewInfo(ArchivesReviewCO params) throws Exception { + Map workItem = PropertyUtils.describe(params); + ArrayList workList = CollUtil.newArrayList(); + String templatePath = "templates/template/review.docx"; + if (params.getArchivesReviewRecordList() != null && params.getArchivesReviewRecordList().size() > 0){ + for (ArchivesReviewRecordCO item : params.getArchivesReviewRecordList()){ + Map itemMap = PropertyUtils.describe(item); + workList.add(itemMap); + } + } + workItem.put("record_list", workList); + ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); + return outputStream.toByteArray(); + } + + + + + + /** + * 安全培训教材或课程讲义 + * @param params + * @return + */ + public String execteClassCurriculum(ClassArchivesDTO params){ + try { + if (params.getClassCurriculumList() != null && params.getClassCurriculumList().size() > 0){ + String tempDir = System.getProperty("java.io.tmpdir"); + Map byteArrayMap = new HashMap<>(); + for (ClassCurriculumCO item : params.getClassCurriculumList()){ + byte[] word = execteClassCurriculumInfo(item); + List byteArrayList = new ArrayList<>(); + byteArrayList.add(word); + byte[] pdf = WordToPdfUtil.mergeWordToPdf(byteArrayList); +// String filepath = zcloudImgFilesFacade.saveFile(pdf, item.getCurriculumName()+"-教材会审表-"+ DateUtil.getSdfTimes()+".pdf","classArchives", params.getCorpinfoId()); + byteArrayMap.put(item.getCurriculumName()+"-安全培训教材或课程讲义-"+ DateUtil.getSdfTimes()+".pdf", pdf); + } + + FileZip.writeByteArraysToZip(tempDir+"aaa/"+params.getClassName()+"-安全培训教材或课程讲义-"+DateUtil.getSdfTimes()+".zip", byteArrayMap); + return tempDir+"aaa/"+params.getClassName()+"-安全培训教材或课程讲义-"+DateUtil.getSdfTimes()+".zip"; + } + } catch (Exception e) { + throw new RuntimeException(e); + } + return null; + } + + + public byte[] execteClassCurriculumInfo(ClassCurriculumCO params) throws Exception { + String templatePath = "templates/template/jc.docx"; + if (params.getCatalogueLevel() == 2){ + templatePath = "templates/template/jc2.docx"; + } + Map workItem = PropertyUtils.describe(params); + ArrayList workList = CollUtil.newArrayList(); + if (params.getCurriculumChapterCOList() != null && params.getCurriculumChapterCOList().size() > 0){ + AtomicInteger atomicIndex = new AtomicInteger(1); + for (ClassCurriculumChapterCO item : params.getCurriculumChapterCOList()){ + Map itemMap = PropertyUtils.describe(item); + workList.add(itemMap); + int index = atomicIndex.getAndIncrement(); + itemMap.put("index", index); + if (params.getCatalogueLevel() == 2){ + String chapter = ""; + AtomicInteger childAtomicIndex = new AtomicInteger(1); + for (ClassCurriculumChapterCO child : item.getChildCurriculumChapterCOList()){ + chapter += "\t"+childAtomicIndex.getAndIncrement()+"."+child.getName()+"\n" + + "\t"+"\t"+"课件描述:"+ child.getCoursewareIntroduce()+"\n"; + } + itemMap.put("chapter", chapter); + } + } + } + workItem.put("chapter_list", workList); + ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); + return outputStream.toByteArray(); + } + + + + + + /** + * 签字表 + * @param params + * @return + */ + public byte[] execteSign(ClassArchivesDTO params){ + try { + Map workItem = PropertyUtils.describe( params); + String url = "https://jpfz.qhdsafety.com/gbsFileTest/"; +// String url = "http://192.168.20.240:9787/mnt/"; + ArrayList workList = CollUtil.newArrayList(); + if (params.getSignList() != null && params.getSignList().size() > 0){ + AtomicInteger atomicIndex = new AtomicInteger(1); + for (StudentSignCO item : params.getSignList()){ + Map itemMap = PropertyUtils.describe(item); + PictureRenderData picture = Pictures.ofUrl(url + item.getSignUrl(), PictureType.JPEG).size(100, 100).create();//网络图片地址 + itemMap.put("picture", picture); + int index = atomicIndex.getAndIncrement(); + itemMap.put("index", index); + workList.add(itemMap); + } + } + workItem.put("sign_list", workList); + String templatePath = "templates/template/sign.docx"; + ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); + return outputStream.toByteArray(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + /** + * 影响资料 + * @param params + * @return + */ + public byte[] exectePicture(ClassArchivesDTO params){ + try { + Map workItem = PropertyUtils.describe( params); +// String url = "https://jpfz.qhdsafety.com/gbsFileTest/"; + String url = "http://192.168.20.240:9787/mnt/"; + ArrayList workList = CollUtil.newArrayList(); + if (params.getSignList() != null && params.getSignList().size() > 0){ + AtomicInteger atomicIndex = new AtomicInteger(1); + for (StudentSignCO item : params.getSignList()){ + byte[] userIdCardBytes = Base64.getDecoder().decode(item.getUserIdCard()); + String userIdCardString = new String(userIdCardBytes); + item.setUserIdCard(userIdCardString); + Map itemMap = PropertyUtils.describe(item); + if(!ObjectUtils.isEmpty(item.getSignFaceUrl())){ + PictureRenderData signPicture = Pictures.ofUrl(url + item.getSignFaceUrl(), PictureType.JPEG).size(50, 50).create();//网络图片地址 + itemMap.put("signPicture", signPicture); + } + if(!ObjectUtils.isEmpty(item.getExamFaceUrl())){ + PictureRenderData examPicture = Pictures.ofUrl(url + item.getExamFaceUrl(), PictureType.JPEG).size(50, 50).create();//网络图片地址 + itemMap.put("examPicture", examPicture); + } + if(!ObjectUtils.isEmpty(item.getExamFaceUrl())){ + PictureRenderData facePicture = Pictures.ofUrl(url + item.getUserAvatarUrl(), PictureType.JPEG).size(50, 50).create();//网络图片地址 + itemMap.put("facePicture", facePicture); + } + int index = atomicIndex.getAndIncrement(); + itemMap.put("index", index); + workList.add(itemMap); + } + } + workItem.put("sign_list", workList); + String templatePath = "templates/template/picture_data.docx"; + ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); + return outputStream.toByteArray(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + + /** + * 试卷 + * @param params + * @return + */ + public byte[] execteClassPaper(ClassArchivesDTO params){ + try { + Map workItem = PropertyUtils.describe( params.getClassPaper()); + ArrayList workList = CollUtil.newArrayList(); + AtomicInteger atomicIndex = new AtomicInteger(1); + params.getClassPaper().getQuestionList().forEach(item -> { + try { + Map itemMap = PropertyUtils.describe( item); + int index = atomicIndex.getAndIncrement(); + itemMap.put("index", index); + String optionsText = null; + if(item.getQuestionType() == 1){ + itemMap.put("questionTypeName", "单选题"); + optionsText = "A:" + item.getOptionA() + "\n" + + "B:" + item.getOptionB() + "\n" + + "C:" + item.getOptionC() + "\n" + + "D:" + item.getOptionD(); + } else if(item.getQuestionType() == 2){ + itemMap.put("questionTypeName", "多选题"); + optionsText = "A:" + item.getOptionA() + "\n" + + "B:" + item.getOptionB() + "\n" + + "C:" + item.getOptionC() + "\n" + + "D:" + item.getOptionD(); + }else if(item.getQuestionType() == 3){ + itemMap.put("questionTypeName", "判断题"); + optionsText = "A:" + item.getOptionA() + " B:" + item.getOptionB(); + } + itemMap.put("optionsText", optionsText); + workList.add(itemMap); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + workItem.put("question_list", workList); + workItem.put("className", params.getClassName()); + String templatePath = "templates/template/class_paper.docx"; + ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); + return outputStream.toByteArray(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + + /** + * 学员考核成绩统计表 + * @param params + * @return + */ + public byte[] execteClassExamResult(ClassArchivesDTO params){ + try { + Map workItem = PropertyUtils.describe( params); + ArrayList passWorkList = initWorkList(params.getPassStudentList()); + ArrayList failWorkList = initWorkList(params.getFailStudentList()); + + workItem.put("pass_work_list", passWorkList); + workItem.put("fail_work_list", failWorkList); + String templatePath = "templates/template/class_exam_result.docx"; + ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); + return outputStream.toByteArray(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + private ArrayList initWorkList(List studentCOList){ + ArrayList workList = CollUtil.newArrayList(); + AtomicInteger atomicIndex = new AtomicInteger(1); + studentCOList.forEach(item -> { + try { + Map itemMap = PropertyUtils.describe(item); + itemMap.put("stateName", !ObjectUtils.isEmpty(item.getState()) && item.getState() == 1 ? "通过" : "未通过"); + if (!ObjectUtils.isEmpty(item.getUserIdCard())){ + byte[] userIdCardBytes = Base64.getDecoder().decode(item.getUserIdCard()); + String userIdCardString = new String(userIdCardBytes); + itemMap.put("userIdCard", userIdCardString); + itemMap.put("sex", getGender(userIdCardString)); + } + int index = atomicIndex.getAndIncrement(); + itemMap.put("index", index); + workList.add(itemMap); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + return workList; + } + + public static String getGender(String userIdCardString) { + if (userIdCardString == null || userIdCardString.length() != 18) { + throw new IllegalArgumentException("身份证号码必须为18位"); + } + + // 获取第17位字符(索引16) + char genderChar = userIdCardString.charAt(16); + + // 转为数字 + int genderNum = Character.getNumericValue(genderChar); + + if (genderNum % 2 == 0) { + return "女"; + } else { + return "男"; + } + } } diff --git a/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesReviewQueryExe.java b/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesReviewQueryExe.java index d3b0943..5f74750 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesReviewQueryExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesReviewQueryExe.java @@ -7,6 +7,7 @@ import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.edu.command.convertor.archives.ArchivesReviewCoConvertor; import com.zcloud.edu.command.convertor.archives.ArchivesReviewRecordCoConvertor; import com.zcloud.edu.domain.model.archives.ArchivesReviewE; +import com.zcloud.edu.dto.archives.ArchivesQry; import com.zcloud.edu.dto.archives.ArchivesReviewPageQry; import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO; import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewRecordCO; diff --git a/web-app/src/main/java/com/zcloud/edu/command/query/study/StudentQueryExe.java b/web-app/src/main/java/com/zcloud/edu/command/query/study/StudentQueryExe.java index 4119205..7f0e4ee 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/query/study/StudentQueryExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/query/study/StudentQueryExe.java @@ -109,7 +109,6 @@ public class StudentQueryExe { PersonArchivesE personArchivesE = new PersonArchivesE(); personArchivesE.init(studentE, classE, classCurList); - PersonArchivesDTO personArchivesDTO = new PersonArchivesDTO(); BeanUtils.copyProperties(personArchivesE, personArchivesDTO); diff --git a/web-app/src/main/java/com/zcloud/edu/command/study/StudentExamRecordAddExe.java b/web-app/src/main/java/com/zcloud/edu/command/study/StudentExamRecordAddExe.java index f46d011..b48ca26 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/study/StudentExamRecordAddExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/study/StudentExamRecordAddExe.java @@ -15,10 +15,7 @@ import com.zcloud.edu.persistence.dataobject.study.ClassDO; import com.zcloud.edu.persistence.dataobject.study.ClassExamPaperDO; import com.zcloud.edu.persistence.dataobject.study.StudentExamRecordDO; import com.zcloud.edu.persistence.dataobject.study.StudentExamRecordItemDO; -import com.zcloud.edu.persistence.repository.study.ClassExamPaperRepository; -import com.zcloud.edu.persistence.repository.study.ClassRepository; -import com.zcloud.edu.persistence.repository.study.StudentExamRecordItemRepository; -import com.zcloud.edu.persistence.repository.study.StudentExamRecordRepository; +import com.zcloud.edu.persistence.repository.study.*; import io.swagger.models.auth.In; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; @@ -26,7 +23,9 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** @@ -43,6 +42,7 @@ public class StudentExamRecordAddExe { private final StudentExamRecordItemRepository studentExamRecordItemRepository; private final StudentExamRecordRepository studentExamRecordRepository; private final ClassRepository classRepository; + private final StudentRepository studentRepository; @Transactional(rollbackFor = Exception.class) public SingleResponse execute(StudentExamRecordAddCmd cmd) { ClassDO classDO = classRepository.getByClassId(cmd.getClassId()); @@ -63,6 +63,12 @@ public class StudentExamRecordAddExe { try { res = studentExamRecordGateway.add(studentExamRecordE); studentExamRecordItemRepository.saveBatch(BeanUtil.copyToList(queList, StudentExamRecordItemDO.class)); + if (studentExamRecordE.getResult() == 1){ + Map params = new HashMap<>(); + params.put("state",1); + params.put("studentId", studentExamRecordE.getStudentId()); + studentRepository.updateStudent(params); + } } catch (Exception e) { throw new RuntimeException(e); } diff --git a/web-app/src/main/java/com/zcloud/edu/service/archives/ArchivesServiceImpl.java b/web-app/src/main/java/com/zcloud/edu/service/archives/ArchivesServiceImpl.java index 5a5bbff..1685a93 100644 --- a/web-app/src/main/java/com/zcloud/edu/service/archives/ArchivesServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/edu/service/archives/ArchivesServiceImpl.java @@ -15,6 +15,7 @@ import com.zcloud.edu.dto.archives.ArchivesReviewAddCmd; import com.zcloud.edu.dto.archives.ArchivesReviewPageQry; import com.zcloud.edu.dto.archives.ArchivesReviewUpdateCmd; import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO; +import com.zcloud.edu.dto.data.archives.ClassArchivesDTO; import com.zcloud.edu.dto.data.archives.PersonArchivesDTO; import com.zcloud.gbscommon.utils.Tools; import com.zcloud.gbscommon.utils.WordToPdfUtil; @@ -47,41 +48,18 @@ public class ArchivesServiceImpl implements ArchivesServiceI { @Override public void downloadPersonArchives(ArchivesQry qry) { -// HashMap workItem = new HashMap<>(); -// workItem.put("qry", "555"); -// String templatePath = "templates/template/category_score_list.docx"; - try { - -// ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem); -// workItem.put("qry", "16516851"); -// ByteArrayOutputStream outputStream1 = Tools.renderTemplate(templatePath, workItem); -// -// List byteArrayList = new ArrayList<>(); -// byteArrayList.add(outputStream.toByteArray()); -// byteArrayList.add(outputStream1.toByteArray()); -// byte[] pdf = WordToPdfUtil.mergeWordToPdf(byteArrayList); -// byte[] pdfBytes = WordToPdfUtil.convertWordBytesToPdfBytes(outputStream.toByteArray()); -// String s = zcloudImgFilesFacade.saveFile(pdf, "clockSign11.pdf","clockSign"); -// -// System.out.println(s); - } catch (Exception e) { - throw new RuntimeException(e); - } PersonArchivesDTO personArchivesDTO = archivesQueryExe.downloadPersonArchives(qry); - - // 首页 -// archivesQueryExe.execteHomePage(personArchivesDTO); - // 查询学时证明 archivesQueryExe.execteGeneratePdf(qry,personArchivesDTO); - // 查询学习档案 -// archivesQueryExe.execteStudyArchives(personArchivesDTO); - // 查询学习记录 -// archivesQueryExe.execteStudyRecord(personArchivesDTO); - // 查询考试记录 -// archivesQueryExe.execteStudentExamRecord(personArchivesDTO); System.out.println("下载成功"); } + + @Override + public void downloadClassArchives(ArchivesQry qry) { + ClassArchivesDTO classArchivesDTO = archivesQueryExe.downloadClassArchives(qry); + archivesQueryExe.execteClassGeneratePdf(qry,classArchivesDTO); + System.out.println("下载成功"); + } } diff --git a/web-client/src/main/java/com/zcloud/edu/api/archives/ArchivesServiceI.java b/web-client/src/main/java/com/zcloud/edu/api/archives/ArchivesServiceI.java index e4b04f3..88df469 100644 --- a/web-client/src/main/java/com/zcloud/edu/api/archives/ArchivesServiceI.java +++ b/web-client/src/main/java/com/zcloud/edu/api/archives/ArchivesServiceI.java @@ -16,5 +16,6 @@ import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO; */ public interface ArchivesServiceI { void downloadPersonArchives(ArchivesQry qry); + void downloadClassArchives(ArchivesQry qry); } diff --git a/web-client/src/main/java/com/zcloud/edu/dto/archives/ArchivesPdfFilePageQry.java b/web-client/src/main/java/com/zcloud/edu/dto/archives/ArchivesPdfFilePageQry.java index 7520d9c..e695642 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/archives/ArchivesPdfFilePageQry.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/archives/ArchivesPdfFilePageQry.java @@ -3,6 +3,8 @@ package com.zcloud.edu.dto.archives; import com.alibaba.cola.dto.PageQuery; import lombok.Data; +import java.time.LocalDateTime; + /** * web-client @@ -24,5 +26,9 @@ public class ArchivesPdfFilePageQry extends PageQuery { * - `ne`: 不等比较查询,对应SQL的!=操作符 */ private String likeArchivesPdfFileId; + private String likeName; + private Integer eqType; + private String geCreateTime; + private String leCreateTime; } diff --git a/web-client/src/main/java/com/zcloud/edu/dto/archives/ArchivesQry.java b/web-client/src/main/java/com/zcloud/edu/dto/archives/ArchivesQry.java index 9c663b2..f11bc72 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/archives/ArchivesQry.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/archives/ArchivesQry.java @@ -28,6 +28,7 @@ public class ArchivesQry { private List typeList; private String studentId; private Long stuId; + private String classId; } diff --git a/web-client/src/main/java/com/zcloud/edu/dto/clientobject/archives/ArchivesPdfFileCO.java b/web-client/src/main/java/com/zcloud/edu/dto/clientobject/archives/ArchivesPdfFileCO.java index e407317..0984658 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/clientobject/archives/ArchivesPdfFileCO.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/clientobject/archives/ArchivesPdfFileCO.java @@ -22,12 +22,19 @@ public class ArchivesPdfFileCO extends ClientObject { //业务id @ApiModelProperty(value = "业务id") private String archivesPdfFileId; + //下载档案描述 + @ApiModelProperty(value = "下载档案描述") + private String name; //关联表名称 @ApiModelProperty(value = "关联表名称") private String tableName; //关联表id @ApiModelProperty(value = "关联表id") private String tableId; + + // 企业id + @ApiModelProperty(value = "企业id") + private Long corpinfoId; //文件路径 @ApiModelProperty(value = "文件路径") private String filePath; diff --git a/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/StudentSignCO.java b/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/StudentSignCO.java index dbfa278..14efa14 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/StudentSignCO.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/clientobject/study/StudentSignCO.java @@ -37,10 +37,26 @@ public class StudentSignCO extends ClientObject { @ApiModelProperty(value = "签到人脸路径") private String faceUrl; + //签到人脸路径 + @ApiModelProperty(value = "打卡签到人脸路径") + @TableField(exist = false) + private String signFaceUrl; + //签到人脸路径 + @ApiModelProperty(value = "考试签到人脸路径") + @TableField(exist = false) + private String examFaceUrl; + @ApiModelProperty(value = "身份证号") + @TableField(exist = false) + private String userIdCard; + @ApiModelProperty(value = "手机号") + @TableField(exist = false) + private String phone; //打卡签字路径 @ApiModelProperty(value = "打卡签字路径") private String signUrl; - + @ApiModelProperty(value = "人脸图片") + @TableField(exist = false) + private String userAvatarUrl; //学员姓名 @ApiModelProperty(value = "学员姓名") private String studentName; diff --git a/web-client/src/main/java/com/zcloud/edu/dto/data/archives/ClassArchivesDTO.java b/web-client/src/main/java/com/zcloud/edu/dto/data/archives/ClassArchivesDTO.java index 8bf8b91..18f1de5 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/data/archives/ClassArchivesDTO.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/data/archives/ClassArchivesDTO.java @@ -1,5 +1,8 @@ package com.zcloud.edu.dto.data.archives; +import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO; +import com.zcloud.edu.dto.clientobject.study.ClassCurriculumCO; +import com.zcloud.edu.dto.clientobject.study.ClassExamPaperCO; import com.zcloud.edu.dto.clientobject.study.StudentCO; import com.zcloud.edu.dto.clientobject.study.StudentSignCO; import io.swagger.annotations.ApiModelProperty; @@ -94,4 +97,16 @@ public class ClassArchivesDTO { private List passStudentList; @ApiModelProperty(value = "不合格学员列表") private List failStudentList; + + + @ApiModelProperty(value = "教材会审表") + private List archivesReviewList; + @ApiModelProperty(value = "安全培训教材或课程讲义") + private List classCurriculumList; + + @ApiModelProperty(value = "教材pdf文件id") + private Long archivesPdfFileId; + + @ApiModelProperty(value = "班级试卷") + private ClassExamPaperCO classPaper; } diff --git a/web-client/src/main/java/com/zcloud/edu/dto/study/ClassCurriculumAddCmd.java b/web-client/src/main/java/com/zcloud/edu/dto/study/ClassCurriculumAddCmd.java index d2ecd9a..d7e803e 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/study/ClassCurriculumAddCmd.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/study/ClassCurriculumAddCmd.java @@ -45,7 +45,7 @@ public class ClassCurriculumAddCmd extends Command { //目录级别 1-一级目录 2-二级目录 @ApiModelProperty(value = "目录级别 1-一级目录 2-二级目录") - @NotNull(message = "课程总时长不能为空") + @NotNull(message = "目录级别不能为空") private Integer catalogueLevel; diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/ArchivesPdfFileE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/ArchivesPdfFileE.java index cdc7642..8534f55 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/ArchivesPdfFileE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/ArchivesPdfFileE.java @@ -19,6 +19,8 @@ public class ArchivesPdfFileE extends BaseE { private Long id; //业务id private String archivesPdfFileId; + //下载档案描述 + private String name; //关联表名称 private String tableName; //关联表id @@ -35,6 +37,8 @@ public class ArchivesPdfFileE extends BaseE { private String methodName; //参数 private String param; + // 企业id + private Long corpinfoId; //环境 private String env; //删除标识true false @@ -60,11 +64,13 @@ public class ArchivesPdfFileE extends BaseE { //修改人id private Long updateId; - public void init(String tableName, String tableId, Integer type){ + public void init(String tableName, String tableId, Integer type, Long corpinfoId, String name){ this.setArchivesPdfFileId(Tools.get32UUID()); this.setTableName(tableName); this.setTableId(tableId); this.setType(type); + this.setCorpinfoId(corpinfoId); + this.setName(name); this.setStatus(0); } public void initEdit(Long id, String filePath, Integer status, String errormsg){ diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/ClassArchivesE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/ClassArchivesE.java index 6e41030..1f49a05 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/ClassArchivesE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/archives/ClassArchivesE.java @@ -92,7 +92,7 @@ public class ClassArchivesE extends BaseE { public void initClassSign(ClassE classE, Long studentCount, List classCurList) { BeanUtils.copyProperties(classE, this); String trainSubject = classCurList.stream().map(ClassCurriculumE::getCurriculumName).collect(Collectors.joining(",")); - + setClassName(classE.getName()); setTrainSubject(trainSubject); setStudentCount(studentCount); setClzId(classE.getId()); @@ -106,5 +106,18 @@ public class ClassArchivesE extends BaseE { setSignCount(Long.valueOf(signCount)); setClzId(classE.getId()); } + public void initArchives(ClassE classE, Long studentCount, + List classCurList, + Integer signCount) { + BeanUtils.copyProperties(classE, this); + if (classCurList != null && classCurList.size() > 0){ + String trainSubject = classCurList.stream().map(ClassCurriculumE::getCurriculumName).collect(Collectors.joining(",")); + setTrainSubject(trainSubject); + } + setClassName(classE.getName()); + + setStudentCount(studentCount); + setClzId(classE.getId()); + } } 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 c343ba1..9bc6dec 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 @@ -152,6 +152,7 @@ public class PersonArchivesE extends BaseE { public void init(StudentE studentE, ClassE classE, List classCurList) { BeanUtils.copyProperties(studentE, this); + setCorpName(classE.getCorpName()); setStuId(studentE.getId()); setClassName(classE.getName()); setStartTime(classE.getStartTime()); @@ -175,6 +176,7 @@ public class PersonArchivesE extends BaseE { public void initAttendanceRecord(StudentE studentE, ClassE classE, List chapterEList, List classCurList) { BeanUtils.copyProperties(studentE, this); setStuId(studentE.getId()); + setCorpName(classE.getCorpName()); setClassName(classE.getName()); setStartTime(classE.getStartTime()); setEndTime(classE.getEndTime()); @@ -198,6 +200,8 @@ public class PersonArchivesE extends BaseE { } public void initStudyRecord(StudentE studentE, ClassE classE, List studentSignEList, List classCurList) { BeanUtils.copyProperties(studentE, this); + + setCorpName(classE.getCorpName()); setStuId(studentE.getId()); setClassName(classE.getName()); setStartTime(classE.getStartTime()); diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumE.java index b37d568..aa7c283 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/study/ClassCurriculumE.java @@ -89,11 +89,13 @@ public class ClassCurriculumE extends BaseE { public void initBatchAdd(List curList, List chapterList, String classId){ Map map = new HashMap(); for (ClassCurriculumE cur : curList){ + cur.setId( null); cur.setClassCurriculumId(Tools.get32UUID()); cur.setClassId(classId); map.put(cur.getCurriculumId(), cur.getClassCurriculumId()); } chapterList.stream().forEach(chapter -> { + chapter.setId(null); chapter.setClassCurriculumId(map.get(chapter.getCurriculumId())); chapter.setClassId(classId); chapter.setClassCurriculumChapterId(Tools.get32UUID()); diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/study/StudentExamRecordE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/study/StudentExamRecordE.java index a9124e6..a18d53d 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/study/StudentExamRecordE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/study/StudentExamRecordE.java @@ -91,8 +91,12 @@ public class StudentExamRecordE extends BaseE { .sorted() .mapToObj(c -> String.valueOf((char) c)) .collect(Collectors.joining()); + System.out.println(choiceAnswer.equals(que.getAnswer())); if (choiceAnswer.equals(que.getAnswer())){ + System.out.println(examScore+"---begin"); + System.out.println(que.getScore()+"---que.getScore()"); examScore = examScore.add(que.getScore()); + System.out.println(examScore+"---end"); examQuestionRight++; } } diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/study/StudentSignE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/study/StudentSignE.java index fe86539..7d06058 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/study/StudentSignE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/study/StudentSignE.java @@ -76,13 +76,17 @@ public class StudentSignE extends BaseE { // public static Integer corePoolSize; @Value("${file.url}") public void setPrefixUrl(String prefixUrlProperties) { + + System.out.println("prefixUrlProperties-----"+prefixUrlProperties); prefixUrl = prefixUrlProperties; } @DubboReference private ZcloudImgFilesFacade zcloudImgFilesFacade; public void compareFace(String templateFaceUrl, String faceUrl) throws Exception { - String templateFace = Base64Util.urlToBase64(prefixUrl + templateFaceUrl); + + System.out.println("prefixUrl-----"+prefixUrl); + String templateFace = Base64Util.urlToBase64("https://jpfz.qhdsafety.com/gbsFileTest/" + templateFaceUrl); String confidence = FaceUtil.compareFace(templateFace, faceUrl); if (Double.valueOf(confidence) < 75) { diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/archives/ArchivesPdfFileDO.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/archives/ArchivesPdfFileDO.java index f58eea2..7c826a6 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/archives/ArchivesPdfFileDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/archives/ArchivesPdfFileDO.java @@ -24,9 +24,16 @@ public class ArchivesPdfFileDO extends BaseDO { //关联表名称 @ApiModelProperty(value = "关联表名称") private String tableName; + //下载档案描述 + @ApiModelProperty(value = "下载档案描述") + private String name; //关联表id @ApiModelProperty(value = "关联表id") private String tableId; + + // 企业id + @ApiModelProperty(value = "企业id") + private Long corpinfoId; //文件路径 @ApiModelProperty(value = "文件路径") private String filePath; diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/study/StudentSignDO.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/study/StudentSignDO.java index e1b3299..67b5e3d 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/study/StudentSignDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/dataobject/study/StudentSignDO.java @@ -45,11 +45,29 @@ public class StudentSignDO extends BaseDO { //签到人脸路径 @ApiModelProperty(value = "签到人脸路径") private String faceUrl; - + //签到人脸路径 + @ApiModelProperty(value = "打卡签到人脸路径") + @TableField(exist = false) + private String signFaceUrl; + //签到人脸路径 + @ApiModelProperty(value = "考试签到人脸路径") + @TableField(exist = false) + private String examFaceUrl; + @ApiModelProperty(value = "身份证号") + @TableField(exist = false) + private String userIdCard; + @ApiModelProperty(value = "手机号") + @TableField(exist = false) + private String phone; //打卡签字路径 @ApiModelProperty(value = "打卡签字路径") + @TableField(exist = false) private String signUrl; + @ApiModelProperty(value = "人脸图片") + @TableField(exist = false) + private String userAvatarUrl; + //签到类型 1-打卡签到 2-考试签到 @ApiModelProperty(value = "签到类型 1-打卡签到 2-考试签到") private Integer type; diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/archives/ArchivesReviewMapper.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/archives/ArchivesReviewMapper.java index c091567..8b0448c 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/archives/ArchivesReviewMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/archives/ArchivesReviewMapper.java @@ -8,6 +8,9 @@ import com.zcloud.edu.persistence.dataobject.study.ClassDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; +import java.util.Map; + /** * web-infrastructure * @@ -19,5 +22,7 @@ public interface ArchivesReviewMapper extends BaseMapper { IPage listPage(IPage page, @Param("ew") QueryWrapper queryWrapper, String menuPerms); ArchivesReviewDO getInfoById(@Param("id") Long id); + + List listAll(@Param("params") Map params); } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/StudentSignMapper.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/StudentSignMapper.java index 3f3e78e..57a73fe 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/StudentSignMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/StudentSignMapper.java @@ -17,5 +17,6 @@ import java.util.Map; @Mapper public interface StudentSignMapper extends BaseMapper { List listAll(@Param("params") Map params); + List listAllByStudent(@Param("params") Map params); } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/archives/ArchivesReviewRecordRepository.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/archives/ArchivesReviewRecordRepository.java index f9e38b9..39af732 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/archives/ArchivesReviewRecordRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/archives/ArchivesReviewRecordRepository.java @@ -17,5 +17,6 @@ public interface ArchivesReviewRecordRepository extends BaseRepository listPage(Map params); List listByReviewId(String reviewId); + List listAll(Map params); } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/archives/ArchivesReviewRepository.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/archives/ArchivesReviewRepository.java index 4a0ed4c..943e3f0 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/archives/ArchivesReviewRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/archives/ArchivesReviewRepository.java @@ -4,6 +4,7 @@ import com.alibaba.cola.dto.PageResponse; import com.jjb.saas.framework.repository.repo.BaseRepository; import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewDO; +import java.util.List; import java.util.Map; /** @@ -16,5 +17,7 @@ public interface ArchivesReviewRepository extends BaseRepository listPage(Map params); ArchivesReviewDO getInfoById(Long id); + + List listAll(Map params); } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesPdfFileRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesPdfFileRepositoryImpl.java index 9303a18..0ece7d1 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesPdfFileRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesPdfFileRepositoryImpl.java @@ -3,6 +3,8 @@ package com.zcloud.edu.persistence.repository.impl.archives; import com.alibaba.cola.dto.PageResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jjb.saas.framework.auth.model.SSOUser; +import com.jjb.saas.framework.auth.utils.AuthContext; import com.jjb.saas.framework.repository.common.PageHelper; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import com.zcloud.edu.persistence.dataobject.archives.ArchivesPdfFileDO; @@ -31,6 +33,8 @@ public class ArchivesPdfFileRepositoryImpl extends BaseRepositoryImpl iPage = new Query().getPage(params); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params); + SSOUser ssoUser = AuthContext.getCurrentUser(); + queryWrapper.eq("corpinfo_id", ssoUser.getTenantId()); queryWrapper.orderByDesc("create_time"); IPage result = archivesPdfFileMapper.selectPage(iPage, queryWrapper); return PageHelper.pageToResponse(result, result.getRecords()); diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesReviewRecordRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesReviewRecordRepositoryImpl.java index 640cadd..6e81655 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesReviewRecordRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesReviewRecordRepositoryImpl.java @@ -45,5 +45,14 @@ public class ArchivesReviewRecordRepositoryImpl extends BaseRepositoryImpl listAll(Map params) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params); + queryWrapper.orderByDesc("create_time"); + queryWrapper.eq("delete_enum", "FALSE"); + return archivesReviewRecordMapper.selectList(queryWrapper); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesReviewRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesReviewRepositoryImpl.java index d71a1ad..f8ff826 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesReviewRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/archives/ArchivesReviewRepositoryImpl.java @@ -13,6 +13,7 @@ import com.zcloud.gbscommon.utils.Query; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; /** @@ -41,5 +42,10 @@ public class ArchivesReviewRepositoryImpl extends BaseRepositoryImpl listAll(Map params) { + return archivesReviewMapper.listAll(params); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/StudentSignRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/StudentSignRepositoryImpl.java index 5a1d324..23e2e30 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/StudentSignRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/StudentSignRepositoryImpl.java @@ -54,6 +54,10 @@ public class StudentSignRepositoryImpl extends BaseRepositoryImpl listAll(Map params) { return studentSignMapper.listAll(params); } + @Override + public List listAllByStudent(Map params) { + return studentSignMapper.listAllByStudent(params); + } @Override public List listAllByStudentId(Map params) { diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/StudentSignRepository.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/StudentSignRepository.java index 5d182cc..9c01238 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/StudentSignRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/StudentSignRepository.java @@ -21,6 +21,8 @@ public interface StudentSignRepository extends BaseRepository { List listAll(Map params); + List listAllByStudent(Map params); + List listAllByStudentId(Map params); Integer countByClassId(String classId); diff --git a/web-infrastructure/src/main/resources/mapper/archives/ArchivesReviewMapper.xml b/web-infrastructure/src/main/resources/mapper/archives/ArchivesReviewMapper.xml index a45a984..68cdc92 100644 --- a/web-infrastructure/src/main/resources/mapper/archives/ArchivesReviewMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/archives/ArchivesReviewMapper.xml @@ -11,8 +11,8 @@ ar.* FROM class_curriculum cc - LEFT JOIN archives_review ar ON cc.class_curriculum_id = ar.class_curriculum_id and ar.delete_enum = 'FALSE' - ${ew.customSqlSegment} + LEFT JOIN archives_review ar ON cc.class_curriculum_id = ar.class_curriculum_id and ar.delete_enum = 'FALSE' + ${ew.customSqlSegment} + + diff --git a/web-infrastructure/src/main/resources/mapper/study/StudentExamRecordMapper.xml b/web-infrastructure/src/main/resources/mapper/study/StudentExamRecordMapper.xml index d75ef0b..a976d28 100644 --- a/web-infrastructure/src/main/resources/mapper/study/StudentExamRecordMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/study/StudentExamRecordMapper.xml @@ -21,10 +21,15 @@ er.exam_question_wrong, er.exam_score, er.result, - ss.sign_url + ss.sign_url, + ep.exam_name, + ep.exam_score paper_exam_score, + ep.pass_score, + ep.exam_time FROM student_exam_record er left join student_sign ss on ss.student_sign_id = er.student_sign_id + left join class_exam_paper ep on er.class_exam_paper_id = ep.class_exam_paper_id er.delete_enum = 'FALSE' and er.student_id = #{studentId} diff --git a/web-infrastructure/src/main/resources/mapper/study/StudentMapper.xml b/web-infrastructure/src/main/resources/mapper/study/StudentMapper.xml index 3b60466..351789d 100644 --- a/web-infrastructure/src/main/resources/mapper/study/StudentMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/study/StudentMapper.xml @@ -116,6 +116,9 @@ ,exam_sign_flag = #{params.examSignFlag} + + ,state = #{params.state} + where student_id = #{params.studentId} diff --git a/web-infrastructure/src/main/resources/mapper/study/StudentSignMapper.xml b/web-infrastructure/src/main/resources/mapper/study/StudentSignMapper.xml index d6bc1ad..24ec7c6 100644 --- a/web-infrastructure/src/main/resources/mapper/study/StudentSignMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/study/StudentSignMapper.xml @@ -31,6 +31,42 @@ +