实现个人档案下载功能并优化培训申请用户查询
parent
387b746f56
commit
a5e9c8082a
|
|
@ -0,0 +1,21 @@
|
||||||
|
学时证明
|
||||||
|
姓名
|
||||||
|
{{name}}
|
||||||
|
证件类型
|
||||||
|
身份证
|
||||||
|
证件编号
|
||||||
|
{{userIdCard}}
|
||||||
|
培训单位名称
|
||||||
|
{{corpName}}
|
||||||
|
班级名称
|
||||||
|
{{className}}
|
||||||
|
培训日期
|
||||||
|
{{startTime}} 至 {{endTime}}
|
||||||
|
培训类型
|
||||||
|
{{trainTypeName}}
|
||||||
|
视频学习时长
|
||||||
|
{{videoTotalTime}}(包含{{videoCount}}个视频课件)
|
||||||
|
培训单位:(盖章)
|
||||||
|
日期:
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{{examName}}
|
||||||
|
(满分:{{paperExamScore}}分)
|
||||||
|
班级名称:{{className}}
|
||||||
|
{{examRecord_list}}姓名:{{name}}
|
||||||
|
分数:{{examScore}}
|
||||||
|
考试时间:{{examTimeBegin}}
|
||||||
|
签字:
|
||||||
|
([questionTypeName]) [index].[questionDry] (题目分值:[score] 正确答案:[choiceAnswer] 学员答案:[answer])
|
||||||
|
A:[optionA] B:[optionB]
|
||||||
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
学员学习档案
|
||||||
|
|
||||||
|
{{@img}}
|
||||||
|
|
||||||
|
姓 名:{{name}}
|
||||||
|
身份证号:{{userIdCard}}
|
||||||
|
联系电话: {{phone}}
|
||||||
|
班级名称:{{className}}
|
||||||
|
|
||||||
|
培训日期:{{startTime}} 至 {{endTime}}
|
||||||
|
学习方式:线下学习
|
||||||
|
课程形式:录播
|
||||||
|
培训时长:{{trainDurationTime}}
|
||||||
|
培训科目:{{trainSubject}}
|
||||||
|
单位名称: {{corpName}}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
学时证明
|
||||||
|
姓名:{{name}}
|
||||||
|
身份证号:{{userIdCard}}
|
||||||
|
班级名称
|
||||||
|
{{className}}
|
||||||
|
课程名称
|
||||||
|
{{trainSubject}}
|
||||||
|
视频时长
|
||||||
|
{{videoTotalTime}}
|
||||||
|
是否完成
|
||||||
|
{{StateName}}
|
||||||
|
签到人脸验证
|
||||||
|
{{@signFacePicture}}
|
||||||
|
考试人脸验证
|
||||||
|
{{@examSignFacePicture}}
|
||||||
|
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
package com.zcloud.edu.web.training;
|
package com.zcloud.edu.web.training;
|
||||||
|
|
||||||
|
|
||||||
import com.zcloud.edu.api.training.TrainingApplyUserServiceI;
|
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyUserAddCmd;
|
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
|
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyUserUpdateCmd;
|
|
||||||
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
|
|
||||||
import com.alibaba.cola.dto.MultiResponse;
|
import com.alibaba.cola.dto.MultiResponse;
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
import com.alibaba.cola.dto.Response;
|
import com.alibaba.cola.dto.Response;
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
import com.jjb.saas.framework.auth.model.SSOUser;
|
import com.jjb.saas.framework.auth.model.SSOUser;
|
||||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||||
|
import com.zcloud.edu.api.training.TrainingApplyUserServiceI;
|
||||||
|
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
|
||||||
|
import com.zcloud.edu.dto.training.TrainingApplyUserAddCmd;
|
||||||
|
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
|
||||||
|
import com.zcloud.edu.dto.training.TrainingApplyUserPhonePageQry;
|
||||||
|
import com.zcloud.edu.dto.training.TrainingApplyUserUpdateCmd;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
|
@ -38,6 +39,11 @@ public class TrainingApplyUserController {
|
||||||
return trainingApplyUserService.add(cmd);
|
return trainingApplyUserService.add(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("根据手机号和所属相关方查询分页")
|
||||||
|
@PostMapping("/listPageByPhone")
|
||||||
|
public PageResponse<TrainingApplyUserCO> listPageByPhone(@RequestBody TrainingApplyUserPhonePageQry qry) {
|
||||||
|
return trainingApplyUserService.listPageByPhone(qry);
|
||||||
|
}
|
||||||
@ApiOperation("分页")
|
@ApiOperation("分页")
|
||||||
@PostMapping("/list")
|
@PostMapping("/list")
|
||||||
public PageResponse<TrainingApplyUserCO> page(@RequestBody TrainingApplyUserPageQry qry) {
|
public PageResponse<TrainingApplyUserCO> page(@RequestBody TrainingApplyUserPageQry qry) {
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,49 @@
|
||||||
package com.zcloud.edu.command.query.archives;
|
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.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.zcloud.edu.command.convertor.archives.ArchivesPdfFileCoConvertor;
|
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.domain.model.archives.ArchivesPdfFileE;
|
||||||
|
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.ArchivesPdfFilePageQry;
|
||||||
|
import com.zcloud.edu.dto.archives.ArchivesQry;
|
||||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesPdfFileCO;
|
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.data.archives.PersonArchivesDTO;
|
||||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesPdfFileDO;
|
import com.zcloud.edu.persistence.dataobject.archives.ArchivesPdfFileDO;
|
||||||
|
import com.zcloud.edu.persistence.dataobject.study.*;
|
||||||
import com.zcloud.edu.persistence.repository.archives.ArchivesPdfFileRepository;
|
import com.zcloud.edu.persistence.repository.archives.ArchivesPdfFileRepository;
|
||||||
|
import com.zcloud.edu.persistence.repository.study.*;
|
||||||
|
import com.zcloud.gbscommon.utils.DateUtil;
|
||||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||||
|
import com.zcloud.gbscommon.utils.Tools;
|
||||||
|
import com.zcloud.gbscommon.utils.WordToPdfUtil;
|
||||||
|
import com.zcloud.gbscommon.zcloudimgfiles.facade.ZcloudImgFilesFacade;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.apache.commons.beanutils.PropertyUtils;
|
||||||
|
import org.apache.commons.io.output.ByteArrayOutputStream;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.util.ObjectUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.Map;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -26,7 +57,26 @@ import java.util.Map;
|
||||||
public class ArchivesQueryExe {
|
public class ArchivesQueryExe {
|
||||||
private final ArchivesPdfFileRepository archivesPdfFileRepository;
|
private final ArchivesPdfFileRepository archivesPdfFileRepository;
|
||||||
private final ArchivesPdfFileCoConvertor archivesPdfFileCoConvertor;
|
private final ArchivesPdfFileCoConvertor archivesPdfFileCoConvertor;
|
||||||
|
private final StudentRepository studentRepository;
|
||||||
|
private final StudentCoConvertor studentCoConvertor;
|
||||||
|
private final ClassRepository classRepository;
|
||||||
|
private final ClassCurriculumRepository classCurriculumRepository;
|
||||||
|
private final ClassCurriculumChapterRepository classCurriculumChapterRepository;
|
||||||
|
private final StudentSignRepository studentSignRepository;
|
||||||
|
private final StudentExamRecordRepository studentExamRecordRepository;
|
||||||
|
private final StudentExamRecordItemRepository studentExamRecordItemRepository;
|
||||||
|
private final StudentExamRecordItemCoConvertor studentExamRecordItemCoConvertor;
|
||||||
|
|
||||||
|
private static String prefixUrl;
|
||||||
|
// = "https://jpfz.qhdsafety.com/gbsFileTest/";
|
||||||
|
// public static Integer corePoolSize;
|
||||||
|
@Value("${file.url}")
|
||||||
|
public void setPrefixUrl(String prefixUrlProperties) {
|
||||||
|
prefixUrl = prefixUrlProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
@DubboReference
|
||||||
|
private ZcloudImgFilesFacade zcloudImgFilesFacade;
|
||||||
/**
|
/**
|
||||||
* 分页
|
* 分页
|
||||||
*
|
*
|
||||||
|
|
@ -40,18 +90,195 @@ public class ArchivesQueryExe {
|
||||||
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void execte1(){
|
public PersonArchivesDTO downloadPersonArchives(ArchivesQry qry){
|
||||||
System.out.println(1);
|
|
||||||
|
ClassE classE = null;
|
||||||
|
List<ClassCurriculumE> classCurList = new ArrayList<ClassCurriculumE>();
|
||||||
|
List<ClassCurriculumChapterE> classChapterEList = new ArrayList<ClassCurriculumChapterE>();
|
||||||
|
List<StudentSignE> studentSignEList = new ArrayList<StudentSignE>();
|
||||||
|
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
// 学员信息
|
||||||
|
StudentDO studentDO = studentRepository.getById(qry.getStuId());
|
||||||
|
byte[] userIdCardBytes = Base64.getDecoder().decode(studentDO.getUserIdCard());
|
||||||
|
String userIdCardString = new String(userIdCardBytes);
|
||||||
|
studentDO.setUserIdCard(userIdCardString);
|
||||||
|
StudentE studentE = new StudentE();
|
||||||
|
BeanUtils.copyProperties(studentDO, studentE);
|
||||||
|
|
||||||
|
// 班级信息
|
||||||
|
ClassDO classDO = classRepository.getByClassId(studentDO.getClassId());
|
||||||
|
classE = new ClassE();
|
||||||
|
BeanUtils.copyProperties(classDO, classE);
|
||||||
|
|
||||||
|
if (qry.getTypeList().contains(2) || qry.getTypeList().contains(3) || qry.getTypeList().contains(4)) {
|
||||||
|
|
||||||
|
|
||||||
|
params.put("classId", studentDO.getClassId());
|
||||||
|
// 课程信息
|
||||||
|
List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params);
|
||||||
|
classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qry.getTypeList().contains(2)) {
|
||||||
|
// 课件信息
|
||||||
|
List<ClassCurriculumChapterDO> classChapterList = classCurriculumChapterRepository.listVideoByClassId(classE.getClassId());
|
||||||
|
classChapterEList = BeanUtil.copyToList(classChapterList, ClassCurriculumChapterE.class);
|
||||||
|
}
|
||||||
|
if (qry.getTypeList().contains(3)) {
|
||||||
|
// 学员人脸记录
|
||||||
|
StudentDO studentUrl = studentRepository.findFaceUrlByPhone(studentDO.getPhone());
|
||||||
|
studentE.setUserAvatarUrl(studentUrl.getUserAvatarUrl());
|
||||||
|
}
|
||||||
|
if (qry.getTypeList().contains(4)) {
|
||||||
|
// 签到照片
|
||||||
|
params.put("studentId", studentDO.getStudentId());
|
||||||
|
List<StudentSignDO> studentSignList = studentSignRepository.listAllByStudentId(params);
|
||||||
|
studentSignEList = BeanUtil.copyToList(studentSignList, StudentSignE.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
PersonArchivesE personArchivesE = new PersonArchivesE();
|
||||||
|
personArchivesE.initDownload(studentE,
|
||||||
|
classE,
|
||||||
|
classCurList,
|
||||||
|
classChapterEList,
|
||||||
|
studentSignEList);
|
||||||
|
PersonArchivesDTO personArchivesDTO = new PersonArchivesDTO();
|
||||||
|
BeanUtils.copyProperties(personArchivesE, personArchivesDTO);
|
||||||
|
if (qry.getTypeList().contains(5)) {
|
||||||
|
StudentExamRecordDO studentExamRecordDO = studentExamRecordRepository.getInfoByStudentId(studentDO.getStudentId());
|
||||||
|
StudentExamRecordCO studentExamRecordCO = new StudentExamRecordCO();
|
||||||
|
BeanUtils.copyProperties(studentExamRecordDO, studentExamRecordCO);
|
||||||
|
List<StudentExamRecordItemDO> recordList = studentExamRecordItemRepository.listByExamRecordId(studentExamRecordDO.getStudentExamRecordId());
|
||||||
|
List<StudentExamRecordItemCO> recordCoList = studentExamRecordItemCoConvertor.converDOsToCOs(recordList);
|
||||||
|
studentExamRecordCO.setExamRecordItemList(recordCoList);
|
||||||
|
personArchivesDTO.setStudentExamRecord(studentExamRecordCO);
|
||||||
|
}
|
||||||
|
// 新增档案下载记录
|
||||||
|
ArchivesPdfFileE archivesPdfFileE = new ArchivesPdfFileE();
|
||||||
|
archivesPdfFileE.init("student", personArchivesDTO.getStudentId(), 1);
|
||||||
|
ArchivesPdfFileDO archivesPdfFileDO = new ArchivesPdfFileDO();
|
||||||
|
BeanUtils.copyProperties(archivesPdfFileE, archivesPdfFileDO);
|
||||||
|
archivesPdfFileRepository.save(archivesPdfFileDO);
|
||||||
|
personArchivesDTO.setArchivesPdfFileId(archivesPdfFileDO.getId());
|
||||||
|
return personArchivesDTO;
|
||||||
}
|
}
|
||||||
@Async("archivesAsyncExecutor")
|
@Async("archivesAsyncExecutor")
|
||||||
public void execte2(){
|
public void execteGeneratePdf(ArchivesQry qry, PersonArchivesDTO params){
|
||||||
// 5s后执行
|
List<byte[]> byteArrayList = new ArrayList<>();
|
||||||
try {
|
if (qry.getTypeList().contains(2)){
|
||||||
Thread.sleep(5000);
|
byteArrayList.add(execteAttendanceRecord(params));
|
||||||
} catch (InterruptedException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
}
|
||||||
System.out.println(2);
|
if (qry.getTypeList().contains(3)){
|
||||||
|
byteArrayList.add(execteStudentRecord(params));
|
||||||
|
}
|
||||||
|
if (qry.getTypeList().contains(4)){
|
||||||
|
byteArrayList.add(execteStudyRecord(params));
|
||||||
|
}
|
||||||
|
if (qry.getTypeList().contains(5)){
|
||||||
|
byteArrayList.add(execteExamRecord(params));
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
byte[] pdf = WordToPdfUtil.mergeWordToPdf(byteArrayList);
|
||||||
|
String filepath = zcloudImgFilesFacade.saveFile(pdf, params.getName()+"-"+params.getClassName()+"-"+ DateUtil.getSdfTimes()+".pdf","personArchives", params.getClassCorpinfoId());
|
||||||
|
|
||||||
|
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) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public byte[] execteAttendanceRecord(PersonArchivesDTO params){
|
||||||
|
try {
|
||||||
|
Map<String, Object> workItem = PropertyUtils.describe( params);
|
||||||
|
String templatePath = "templates/template/attendance_record.docx";
|
||||||
|
ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem);
|
||||||
|
return outputStream.toByteArray();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] execteStudentRecord(PersonArchivesDTO params){
|
||||||
|
try {
|
||||||
|
Map<String, Object> workItem = PropertyUtils.describe( params);
|
||||||
|
PictureRenderData picture = Pictures.ofUrl(prefixUrl + params.getUserAvatarUrl(), PictureType.JPEG).size(100, 100).create();//网络图片地址
|
||||||
|
workItem.put("img", picture);
|
||||||
|
String templatePath = "templates/template/studentInfo.docx";
|
||||||
|
ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem);
|
||||||
|
return outputStream.toByteArray();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public byte[] execteStudyRecord(PersonArchivesDTO params){
|
||||||
|
try {
|
||||||
|
Map<String, Object> workItem = PropertyUtils.describe( params);
|
||||||
|
if(!ObjectUtils.isEmpty(params.getSignFaceUrl())){
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
String templatePath = "templates/template/studyRecord.docx";
|
||||||
|
ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem);
|
||||||
|
return outputStream.toByteArray();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public byte[] execteExamRecord(PersonArchivesDTO params){
|
||||||
|
try {
|
||||||
|
Map<String, Object> workItem = PropertyUtils.describe( params.getStudentExamRecord());
|
||||||
|
ArrayList<Object> workList = CollUtil.newArrayList();
|
||||||
|
AtomicInteger atomicIndex = new AtomicInteger(1);
|
||||||
|
params.getStudentExamRecord().getExamRecordItemList().forEach(item -> {
|
||||||
|
try {
|
||||||
|
Map<String, Object> itemMap = PropertyUtils.describe( item);
|
||||||
|
int index = atomicIndex.getAndIncrement();
|
||||||
|
itemMap.put("index", index);
|
||||||
|
if(item.getQuestionType() == 1){
|
||||||
|
itemMap.put("questionTypeName", "单选题");
|
||||||
|
} else if(item.getQuestionType() == 2){
|
||||||
|
itemMap.put("questionTypeName", "多选题");
|
||||||
|
}else if(item.getQuestionType() == 3){
|
||||||
|
itemMap.put("questionTypeName", "判断题");
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
// }
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
package com.zcloud.edu.command.query.training;
|
package com.zcloud.edu.command.query.training;
|
||||||
|
|
||||||
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
import com.zcloud.edu.command.convertor.training.TrainingApplyUserCoConvertor;
|
import com.zcloud.edu.command.convertor.training.TrainingApplyUserCoConvertor;
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
|
|
||||||
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
|
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
|
||||||
|
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
|
||||||
|
import com.zcloud.edu.dto.training.TrainingApplyUserPhonePageQry;
|
||||||
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
|
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
|
||||||
import com.zcloud.edu.persistence.repository.training.TrainingApplyUserRepository;
|
import com.zcloud.edu.persistence.repository.training.TrainingApplyUserRepository;
|
||||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
|
@ -38,5 +39,14 @@ public class TrainingApplyUserQueryExe {
|
||||||
List<TrainingApplyUserCO> examCenterCOS = trainingApplyUserCoConvertor.converDOsToCOs(pageResponse.getData());
|
List<TrainingApplyUserCO> examCenterCOS = trainingApplyUserCoConvertor.converDOsToCOs(pageResponse.getData());
|
||||||
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public PageResponse<TrainingApplyUserCO> executeListPageByPhone(TrainingApplyUserPhonePageQry qry) {
|
||||||
|
Map<String,Object> params = PageQueryHelper.toHashMap(qry);
|
||||||
|
PageResponse<TrainingApplyUserDO> pageResponse = trainingApplyUserRepository.listPageByPhone(params);
|
||||||
|
List<TrainingApplyUserCO> examCenterCOS = trainingApplyUserCoConvertor.converDOsToCOs(pageResponse.getData());
|
||||||
|
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.zcloud.edu.command.training.TrainingApplyUserUpdateExe;
|
||||||
import com.zcloud.edu.command.query.training.TrainingApplyUserQueryExe;
|
import com.zcloud.edu.command.query.training.TrainingApplyUserQueryExe;
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyUserAddCmd;
|
import com.zcloud.edu.dto.training.TrainingApplyUserAddCmd;
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
|
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
|
||||||
|
import com.zcloud.edu.dto.training.TrainingApplyUserPhonePageQry;
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyUserUpdateCmd;
|
import com.zcloud.edu.dto.training.TrainingApplyUserUpdateCmd;
|
||||||
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
|
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
|
||||||
|
|
||||||
|
|
@ -34,6 +35,11 @@ public class TrainingApplyUserServiceImpl implements TrainingApplyUserServiceI {
|
||||||
return trainingApplyUserQueryExe.execute(qry);
|
return trainingApplyUserQueryExe.execute(qry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResponse<TrainingApplyUserCO> listPageByPhone(TrainingApplyUserPhonePageQry qry) {
|
||||||
|
return trainingApplyUserQueryExe.executeListPageByPhone(qry);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SingleResponse add(TrainingApplyUserAddCmd cmd) {
|
public SingleResponse add(TrainingApplyUserAddCmd cmd) {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import com.zcloud.edu.dto.archives.ArchivesReviewAddCmd;
|
||||||
import com.zcloud.edu.dto.archives.ArchivesReviewPageQry;
|
import com.zcloud.edu.dto.archives.ArchivesReviewPageQry;
|
||||||
import com.zcloud.edu.dto.archives.ArchivesReviewUpdateCmd;
|
import com.zcloud.edu.dto.archives.ArchivesReviewUpdateCmd;
|
||||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO;
|
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO;
|
||||||
|
import com.zcloud.edu.dto.data.archives.PersonArchivesDTO;
|
||||||
import com.zcloud.gbscommon.utils.Tools;
|
import com.zcloud.gbscommon.utils.Tools;
|
||||||
import com.zcloud.gbscommon.utils.WordToPdfUtil;
|
import com.zcloud.gbscommon.utils.WordToPdfUtil;
|
||||||
import com.zcloud.gbscommon.zcloudimgfiles.facade.ZcloudImgFilesFacade;
|
import com.zcloud.gbscommon.zcloudimgfiles.facade.ZcloudImgFilesFacade;
|
||||||
|
|
@ -26,7 +27,9 @@ import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-app
|
* web-app
|
||||||
|
|
@ -47,19 +50,37 @@ public class ArchivesServiceImpl implements ArchivesServiceI {
|
||||||
// HashMap<String, Object> workItem = new HashMap<>();
|
// HashMap<String, Object> workItem = new HashMap<>();
|
||||||
// workItem.put("qry", "555");
|
// workItem.put("qry", "555");
|
||||||
// String templatePath = "templates/template/category_score_list.docx";
|
// String templatePath = "templates/template/category_score_list.docx";
|
||||||
// try {
|
try {
|
||||||
|
|
||||||
// ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem);
|
// ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem);
|
||||||
|
// workItem.put("qry", "16516851");
|
||||||
|
// ByteArrayOutputStream outputStream1 = Tools.renderTemplate(templatePath, workItem);
|
||||||
|
//
|
||||||
|
// List<byte[]> byteArrayList = new ArrayList<>();
|
||||||
|
// byteArrayList.add(outputStream.toByteArray());
|
||||||
|
// byteArrayList.add(outputStream1.toByteArray());
|
||||||
|
// byte[] pdf = WordToPdfUtil.mergeWordToPdf(byteArrayList);
|
||||||
// byte[] pdfBytes = WordToPdfUtil.convertWordBytesToPdfBytes(outputStream.toByteArray());
|
// byte[] pdfBytes = WordToPdfUtil.convertWordBytesToPdfBytes(outputStream.toByteArray());
|
||||||
// String s = zcloudImgFilesFacade.saveFile(pdfBytes, "clockSign.pdf","clockSign");
|
// String s = zcloudImgFilesFacade.saveFile(pdf, "clockSign11.pdf","clockSign");
|
||||||
|
//
|
||||||
// System.out.println(s);
|
// System.out.println(s);
|
||||||
// archivesQueryExe.downloadPersonArchives();
|
} catch (Exception e) {
|
||||||
archivesQueryExe.execte2();
|
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("下载成功");
|
System.out.println("下载成功");
|
||||||
// } catch (IOException e) {
|
|
||||||
// throw new RuntimeException(e);
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
package com.zcloud.edu.api.training;
|
package com.zcloud.edu.api.training;
|
||||||
|
|
||||||
|
import com.zcloud.edu.dto.clientobject.training.TrainingApplyRecordCO;
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyUserAddCmd;
|
import com.zcloud.edu.dto.training.TrainingApplyUserAddCmd;
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
|
import com.zcloud.edu.dto.training.TrainingApplyUserPageQry;
|
||||||
|
import com.zcloud.edu.dto.training.TrainingApplyUserPhonePageQry;
|
||||||
import com.zcloud.edu.dto.training.TrainingApplyUserUpdateCmd;
|
import com.zcloud.edu.dto.training.TrainingApplyUserUpdateCmd;
|
||||||
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
|
import com.zcloud.edu.dto.clientobject.training.TrainingApplyUserCO;
|
||||||
|
|
||||||
|
|
@ -16,6 +18,8 @@ import com.alibaba.cola.dto.SingleResponse;
|
||||||
public interface TrainingApplyUserServiceI {
|
public interface TrainingApplyUserServiceI {
|
||||||
PageResponse<TrainingApplyUserCO> listPage(TrainingApplyUserPageQry qry);
|
PageResponse<TrainingApplyUserCO> listPage(TrainingApplyUserPageQry qry);
|
||||||
|
|
||||||
|
PageResponse<TrainingApplyUserCO> listPageByPhone(TrainingApplyUserPhonePageQry qry);
|
||||||
|
|
||||||
SingleResponse<TrainingApplyUserCO> add(TrainingApplyUserAddCmd cmd);
|
SingleResponse<TrainingApplyUserCO> add(TrainingApplyUserAddCmd cmd);
|
||||||
|
|
||||||
void edit(TrainingApplyUserUpdateCmd cmd);
|
void edit(TrainingApplyUserUpdateCmd cmd);
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,10 @@ public class ArchivesQry {
|
||||||
* - `le`: 小于等于比较查询
|
* - `le`: 小于等于比较查询
|
||||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||||
*/
|
*/
|
||||||
|
// 档案类型 1-首页 2-学时证明 3-学员学习档案 4-学习记录 5-考卷信息
|
||||||
private List<Integer> typeList;
|
private List<Integer> typeList;
|
||||||
|
private String studentId;
|
||||||
|
private Long stuId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public class ArchivesReviewCO extends ClientObject {
|
||||||
private String corpName;
|
private String corpName;
|
||||||
//编写时间
|
//编写时间
|
||||||
@ApiModelProperty(value = "编写时间")
|
@ApiModelProperty(value = "编写时间")
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime writeDate;
|
private LocalDateTime writeDate;
|
||||||
//教材类型
|
//教材类型
|
||||||
@ApiModelProperty(value = "教材类型")
|
@ApiModelProperty(value = "教材类型")
|
||||||
|
|
@ -52,7 +52,7 @@ public class ArchivesReviewCO extends ClientObject {
|
||||||
private String compere;
|
private String compere;
|
||||||
//会审时间
|
//会审时间
|
||||||
@ApiModelProperty(value = "会审时间")
|
@ApiModelProperty(value = "会审时间")
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime auditDate;
|
private LocalDateTime auditDate;
|
||||||
//会审意见
|
//会审意见
|
||||||
@ApiModelProperty(value = "会审意见")
|
@ApiModelProperty(value = "会审意见")
|
||||||
|
|
@ -89,11 +89,11 @@ public class ArchivesReviewCO extends ClientObject {
|
||||||
private Integer version;
|
private Integer version;
|
||||||
//创建时间
|
//创建时间
|
||||||
@ApiModelProperty(value = "创建时间")
|
@ApiModelProperty(value = "创建时间")
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
//修改时间
|
//修改时间
|
||||||
@ApiModelProperty(value = "修改时间")
|
@ApiModelProperty(value = "修改时间")
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
//创建人id
|
//创建人id
|
||||||
@ApiModelProperty(value = "创建人id")
|
@ApiModelProperty(value = "创建人id")
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,10 @@ public class StudentSignCO extends ClientObject {
|
||||||
@ApiModelProperty(value = "打卡签字路径")
|
@ApiModelProperty(value = "打卡签字路径")
|
||||||
private String signUrl;
|
private String signUrl;
|
||||||
|
|
||||||
|
//学员姓名
|
||||||
|
@ApiModelProperty(value = "学员姓名")
|
||||||
|
private String studentName;
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "培训地点")
|
@ApiModelProperty(value = "培训地点")
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.zcloud.edu.dto.clientobject.training;
|
package com.zcloud.edu.dto.clientobject.training;
|
||||||
|
|
||||||
import com.alibaba.cola.dto.ClientObject;
|
import com.alibaba.cola.dto.ClientObject;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
@ -38,9 +39,48 @@ public class TrainingApplyUserCO extends ClientObject {
|
||||||
//身份证号
|
//身份证号
|
||||||
@ApiModelProperty(value = "身份证号")
|
@ApiModelProperty(value = "身份证号")
|
||||||
private String idCard;
|
private String idCard;
|
||||||
|
|
||||||
//关联项目
|
//关联项目
|
||||||
@ApiModelProperty(value = "关联项目")
|
@ApiModelProperty(value = "关联项目")
|
||||||
private String projectName;
|
private String projectName;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//申请企业id
|
||||||
|
@ApiModelProperty(value = "申请企业id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long applyCorpinfoId;
|
||||||
|
//申请企业名称
|
||||||
|
@ApiModelProperty(value = "申请企业名称")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String applyCorpinfoName;
|
||||||
|
//审批企业id
|
||||||
|
@ApiModelProperty(value = "审批企业id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long approvalCorpinfoId;
|
||||||
|
//审批部门id
|
||||||
|
@ApiModelProperty(value = "审批部门id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long approvalDepartmentId;
|
||||||
|
//审批用户id
|
||||||
|
@ApiModelProperty(value = "审批用户id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long approvalUserId;
|
||||||
|
|
||||||
|
//审批企业id
|
||||||
|
@ApiModelProperty(value = "审批企业名称")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String approvalCorpinfoName;
|
||||||
|
//审批部门id
|
||||||
|
@ApiModelProperty(value = "审批部门名称")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String approvalDepartmentName;
|
||||||
|
//审批用户id
|
||||||
|
@ApiModelProperty(value = "审批用户名称")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String approvalUserName;
|
||||||
|
|
||||||
|
|
||||||
//乐观锁
|
//乐观锁
|
||||||
@ApiModelProperty(value = "乐观锁")
|
@ApiModelProperty(value = "乐观锁")
|
||||||
private Integer version;
|
private Integer version;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.zcloud.edu.dto.data.archives;
|
package com.zcloud.edu.dto.data.archives;
|
||||||
|
|
||||||
|
import com.zcloud.edu.dto.clientobject.study.StudentExamRecordCO;
|
||||||
import com.zcloud.edu.dto.clientobject.study.StudentSignCO;
|
import com.zcloud.edu.dto.clientobject.study.StudentSignCO;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -80,6 +81,9 @@ public class PersonArchivesDTO {
|
||||||
//学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过
|
//学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过
|
||||||
@ApiModelProperty(value = "学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过")
|
@ApiModelProperty(value = "学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过")
|
||||||
private Integer state;
|
private Integer state;
|
||||||
|
//学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过
|
||||||
|
@ApiModelProperty(value = "学员状态翻译")
|
||||||
|
private String stateName;
|
||||||
|
|
||||||
|
|
||||||
//班级名称
|
//班级名称
|
||||||
|
|
@ -109,6 +113,9 @@ public class PersonArchivesDTO {
|
||||||
//机构ID
|
//机构ID
|
||||||
@ApiModelProperty(value = "机构ID")
|
@ApiModelProperty(value = "机构ID")
|
||||||
private Long corpinfoId;
|
private Long corpinfoId;
|
||||||
|
|
||||||
|
//机构名称
|
||||||
|
private String corpName;
|
||||||
//状态:1-未申请 2-待开班 3- 培训中 4-培训结束
|
//状态:1-未申请 2-待开班 3- 培训中 4-培训结束
|
||||||
@ApiModelProperty(value = "状态:1-未申请 2-待开班 3- 培训中 4-培训结束 ")
|
@ApiModelProperty(value = "状态:1-未申请 2-待开班 3- 培训中 4-培训结束 ")
|
||||||
private Integer classState;
|
private Integer classState;
|
||||||
|
|
@ -140,4 +147,9 @@ public class PersonArchivesDTO {
|
||||||
private String examSignFaceUrl;
|
private String examSignFaceUrl;
|
||||||
@ApiModelProperty(value = "签字列表")
|
@ApiModelProperty(value = "签字列表")
|
||||||
private List<StudentSignCO> signList;
|
private List<StudentSignCO> signList;
|
||||||
|
@ApiModelProperty(value = "考试记录")
|
||||||
|
private StudentExamRecordCO studentExamRecord;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "档案pdf文件id")
|
||||||
|
private Long archivesPdfFileId;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.zcloud.edu.dto.training;
|
||||||
|
|
||||||
|
import com.alibaba.cola.dto.PageQuery;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* web-client
|
||||||
|
* @Author makejava
|
||||||
|
* @Date 2026-01-12 15:36:36
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class TrainingApplyUserPhonePageQry extends PageQuery {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询条件操作前缀,支持以下几种数据库查询操作:
|
||||||
|
* - `like`: 模糊匹配查询,对应SQL的LIKE操作符
|
||||||
|
* - `eq`: 等值查询,对应SQL的=操作符
|
||||||
|
* - `gt`: 大于比较查询
|
||||||
|
* - `lt`: 小于比较查询
|
||||||
|
* - `ge`: 大于等于比较查询
|
||||||
|
* - `le`: 小于等于比较查询
|
||||||
|
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||||
|
*/
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "所属相关方(uuid)", name = "eqCorpinfoId", required = false)
|
||||||
|
private String eqCorpinfoId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "手机号" , name = "eqPhone", required = false)
|
||||||
|
private String eqPhone;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
package com.zcloud.edu.domain.model.archives;
|
package com.zcloud.edu.domain.model.archives;
|
||||||
|
|
||||||
import com.jjb.saas.framework.domain.model.BaseE;
|
import com.jjb.saas.framework.domain.model.BaseE;
|
||||||
|
import com.zcloud.gbscommon.utils.Tools;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.springframework.util.ObjectUtils;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
|
@ -57,5 +59,21 @@ public class ArchivesPdfFileE extends BaseE {
|
||||||
private Long createId;
|
private Long createId;
|
||||||
//修改人id
|
//修改人id
|
||||||
private Long updateId;
|
private Long updateId;
|
||||||
|
|
||||||
|
public void init(String tableName, String tableId, Integer type){
|
||||||
|
this.setArchivesPdfFileId(Tools.get32UUID());
|
||||||
|
this.setTableName(tableName);
|
||||||
|
this.setTableId(tableId);
|
||||||
|
this.setType(type);
|
||||||
|
this.setStatus(0);
|
||||||
|
}
|
||||||
|
public void initEdit(Long id, String filePath, Integer status, String errormsg){
|
||||||
|
this.setId(id);
|
||||||
|
this.setFilePath(filePath);
|
||||||
|
this.setStatus(status);
|
||||||
|
if(!ObjectUtils.isEmpty(errormsg)){
|
||||||
|
this.setErrormsg(errormsg.length() > 3000 ? errormsg.substring(0, 3000) : errormsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,9 @@ public class PersonArchivesE extends BaseE {
|
||||||
//机构ID
|
//机构ID
|
||||||
@ApiModelProperty(value = "机构ID")
|
@ApiModelProperty(value = "机构ID")
|
||||||
private Long corpinfoId;
|
private Long corpinfoId;
|
||||||
|
|
||||||
|
//机构名称
|
||||||
|
private String corpName;
|
||||||
//状态:1-未申请 2-待开班 3- 培训中 4-培训结束
|
//状态:1-未申请 2-待开班 3- 培训中 4-培训结束
|
||||||
@ApiModelProperty(value = "状态:1-未申请 2-待开班 3- 培训中 4-培训结束 ")
|
@ApiModelProperty(value = "状态:1-未申请 2-待开班 3- 培训中 4-培训结束 ")
|
||||||
private Integer classState;
|
private Integer classState;
|
||||||
|
|
@ -144,6 +147,9 @@ public class PersonArchivesE extends BaseE {
|
||||||
@ApiModelProperty(value = "考试签到人脸图片路径")
|
@ApiModelProperty(value = "考试签到人脸图片路径")
|
||||||
private String examSignFaceUrl;
|
private String examSignFaceUrl;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "学员状态翻译")
|
||||||
|
private String stateName;
|
||||||
|
|
||||||
public void init(StudentE studentE, ClassE classE, List<ClassCurriculumE> classCurList) {
|
public void init(StudentE studentE, ClassE classE, List<ClassCurriculumE> classCurList) {
|
||||||
BeanUtils.copyProperties(studentE, this);
|
BeanUtils.copyProperties(studentE, this);
|
||||||
setStuId(studentE.getId());
|
setStuId(studentE.getId());
|
||||||
|
|
@ -230,4 +236,62 @@ public class PersonArchivesE extends BaseE {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void initDownload(StudentE studentE,
|
||||||
|
ClassE classE,
|
||||||
|
List<ClassCurriculumE> classCurList,
|
||||||
|
List<ClassCurriculumChapterE> chapterEList,
|
||||||
|
List<StudentSignE> studentSignEList){
|
||||||
|
BeanUtils.copyProperties(studentE, this);
|
||||||
|
setStuId(studentE.getId());
|
||||||
|
if (!ObjectUtils.isEmpty(studentE.getState())){
|
||||||
|
setStateName(studentE.getState() == 1 ? "已完成" : "未完成");
|
||||||
|
}
|
||||||
|
if (classE != null){
|
||||||
|
setClassName(classE.getName());
|
||||||
|
setStartTime(classE.getStartTime());
|
||||||
|
setEndTime(classE.getEndTime());
|
||||||
|
setTeacherId(classE.getTeacherId());
|
||||||
|
setTeacherName(classE.getTeacherName());
|
||||||
|
setTrainType(classE.getTrainType());
|
||||||
|
setTrainTypeName(classE.getTrainTypeName());
|
||||||
|
setTrainingLocation(classE.getTrainingLocation());
|
||||||
|
setCorpinfoId(classE.getCorpinfoId());
|
||||||
|
setClassState(classE.getState());
|
||||||
|
setValidStartTime(classE.getValidStartTime());
|
||||||
|
setValidEndTime(classE.getValidEndTime());
|
||||||
|
setExamination(classE.getExamination());
|
||||||
|
setNumberofexams(classE.getNumberofexams());
|
||||||
|
setCorpName(classE.getCorpName());
|
||||||
|
setTrainDurationTime(DateUtil.getMinuteSub(classE.getStartTime(), classE.getEndTime()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (classCurList != null && classCurList.size() > 0){
|
||||||
|
String trainSubject = classCurList.stream().map(ClassCurriculumE::getCurriculumName).collect(Collectors.joining(","));
|
||||||
|
setTrainSubject(trainSubject);
|
||||||
|
BigDecimal videoTotalTime = classCurList.stream()
|
||||||
|
.map(ClassCurriculumE::getVideoTotalTime) // 假设getBigDecimalField是获取BigDecimal字段的方法
|
||||||
|
.filter(bigDecimal -> bigDecimal != null) // 过滤null值,防止空指针异常
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
setVideoTotalTime(videoTotalTime);
|
||||||
|
}
|
||||||
|
if (chapterEList != null && chapterEList.size() > 0){
|
||||||
|
setVideoCount(chapterEList.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (studentSignEList != null && studentSignEList.size() > 0){
|
||||||
|
for (StudentSignE studentSignE : studentSignEList){
|
||||||
|
if(studentSignE.getType() == 1
|
||||||
|
&& !ObjectUtils.isEmpty(studentSignE.getFaceUrl())
|
||||||
|
&& ObjectUtils.isEmpty(this.getSignFaceUrl()) ){
|
||||||
|
this.setSignFaceUrl(studentSignE.getFaceUrl());
|
||||||
|
}
|
||||||
|
if(studentSignE.getType() == 2
|
||||||
|
&& !ObjectUtils.isEmpty(studentSignE.getFaceUrl())
|
||||||
|
&& ObjectUtils.isEmpty(this.getExamSignFaceUrl()) ){
|
||||||
|
this.setExamSignFaceUrl(studentSignE.getFaceUrl());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -71,8 +71,13 @@ public class StudentSignE extends BaseE {
|
||||||
private Long createId;
|
private Long createId;
|
||||||
//修改人id
|
//修改人id
|
||||||
private Long updateId;
|
private Long updateId;
|
||||||
private String prefixUrl = "https://jpfz.qhdsafety.com/gbsFileTest/";
|
private static String prefixUrl;
|
||||||
|
// = "https://jpfz.qhdsafety.com/gbsFileTest/";
|
||||||
|
// public static Integer corePoolSize;
|
||||||
|
@Value("${file.url}")
|
||||||
|
public void setPrefixUrl(String prefixUrlProperties) {
|
||||||
|
prefixUrl = prefixUrlProperties;
|
||||||
|
}
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private ZcloudImgFilesFacade zcloudImgFilesFacade;
|
private ZcloudImgFilesFacade zcloudImgFilesFacade;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-infrastructure
|
* web-infrastructure
|
||||||
* @Author makejava
|
* @Author makejava
|
||||||
|
|
@ -42,6 +44,43 @@ public class TrainingApplyUserDO extends BaseDO {
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String userName;
|
private String userName;
|
||||||
|
|
||||||
|
//申请企业id
|
||||||
|
@ApiModelProperty(value = "申请企业id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long applyCorpinfoId;
|
||||||
|
//申请企业名称
|
||||||
|
@ApiModelProperty(value = "申请企业名称")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String applyCorpinfoName;
|
||||||
|
//更新时间
|
||||||
|
@ApiModelProperty(value = "更新时间")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
//审批企业id
|
||||||
|
@ApiModelProperty(value = "审批企业id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long approvalCorpinfoId;
|
||||||
|
//审批部门id
|
||||||
|
@ApiModelProperty(value = "审批部门id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long approvalDepartmentId;
|
||||||
|
//审批用户id
|
||||||
|
@ApiModelProperty(value = "审批用户id")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long approvalUserId;
|
||||||
|
|
||||||
|
//审批企业id
|
||||||
|
@ApiModelProperty(value = "审批企业名称")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String approvalCorpinfoName;
|
||||||
|
//审批部门id
|
||||||
|
@ApiModelProperty(value = "审批部门名称")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String approvalDepartmentName;
|
||||||
|
//审批用户id
|
||||||
|
@ApiModelProperty(value = "审批用户名称")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String approvalUserName;
|
||||||
|
|
||||||
public TrainingApplyUserDO(String trainingApplyUserId) {
|
public TrainingApplyUserDO(String trainingApplyUserId) {
|
||||||
this.trainingApplyUserId = trainingApplyUserId;
|
this.trainingApplyUserId = trainingApplyUserId;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ public class StudentDO extends BaseDO {
|
||||||
private String classId;
|
private String classId;
|
||||||
//班级id(雪花)
|
//班级id(雪花)
|
||||||
@ApiModelProperty(value = "班级id(雪花)")
|
@ApiModelProperty(value = "班级id(雪花)")
|
||||||
|
@TableField(exist = false)
|
||||||
private String clzId;
|
private String clzId;
|
||||||
//学员姓名
|
//学员姓名
|
||||||
@ApiModelProperty(value = "学员姓名")
|
@ApiModelProperty(value = "学员姓名")
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.zcloud.edu.persistence.mapper;
|
package com.zcloud.edu.persistence.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.zcloud.edu.persistence.dataobject.TrainingApplyRecordDO;
|
||||||
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
|
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
@ -21,6 +23,8 @@ public interface TrainingApplyUserMapper extends BaseMapper<TrainingApplyUserDO>
|
||||||
*/
|
*/
|
||||||
List<TrainingApplyUserDO> selectByRecordId(@Param("trainingApplyRecordId") String trainingApplyRecordId);
|
List<TrainingApplyUserDO> selectByRecordId(@Param("trainingApplyRecordId") String trainingApplyRecordId);
|
||||||
|
|
||||||
|
IPage<TrainingApplyUserDO> listPageByPhone(IPage<TrainingApplyUserDO> page, @Param("params") Map<String, Object> params);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据手机号集合查询用户信息
|
* 根据手机号集合查询用户信息
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,19 @@
|
||||||
package com.zcloud.edu.persistence.repository.impl;
|
package com.zcloud.edu.persistence.repository.impl;
|
||||||
|
|
||||||
import com.jjb.saas.framework.auth.model.SSOUser;
|
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.utils.AuthContext;
|
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||||
import com.jjb.saas.framework.repository.common.PageHelper;
|
import com.jjb.saas.framework.repository.common.PageHelper;
|
||||||
|
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
|
||||||
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
|
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
|
||||||
import com.zcloud.edu.persistence.mapper.TrainingApplyUserMapper;
|
import com.zcloud.edu.persistence.mapper.TrainingApplyUserMapper;
|
||||||
import com.zcloud.edu.persistence.repository.training.TrainingApplyUserRepository;
|
import com.zcloud.edu.persistence.repository.training.TrainingApplyUserRepository;
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
|
||||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||||
import com.zcloud.gbscommon.utils.Query;
|
import com.zcloud.gbscommon.utils.Query;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
||||||
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
@ -39,6 +37,13 @@ public class TrainingApplyUserRepositoryImpl extends BaseRepositoryImpl<Training
|
||||||
return PageHelper.pageToResponse(result, result.getRecords());
|
return PageHelper.pageToResponse(result, result.getRecords());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResponse<TrainingApplyUserDO> listPageByPhone(Map<String, Object> params) {
|
||||||
|
IPage<TrainingApplyUserDO> iPage = new Query<TrainingApplyUserDO>().getPage(params);
|
||||||
|
IPage<TrainingApplyUserDO> result = trainingApplyUserMapper.listPageByPhone(iPage, params);
|
||||||
|
return PageHelper.pageToResponse(result, result.getRecords());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TrainingApplyUserDO> getByRecordId(String trainingApplyRecordId) {
|
public List<TrainingApplyUserDO> getByRecordId(String trainingApplyRecordId) {
|
||||||
return trainingApplyUserMapper.selectByRecordId(trainingApplyRecordId);
|
return trainingApplyUserMapper.selectByRecordId(trainingApplyRecordId);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.zcloud.edu.persistence.repository.training;
|
package com.zcloud.edu.persistence.repository.training;
|
||||||
|
|
||||||
|
import com.zcloud.edu.persistence.dataobject.TrainingApplyRecordDO;
|
||||||
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
|
import com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO;
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
||||||
|
|
@ -16,6 +17,8 @@ public interface TrainingApplyUserRepository extends BaseRepository<TrainingAppl
|
||||||
|
|
||||||
PageResponse<TrainingApplyUserDO> listPage(Map<String,Object> params);
|
PageResponse<TrainingApplyUserDO> listPage(Map<String,Object> params);
|
||||||
|
|
||||||
|
PageResponse<TrainingApplyUserDO> listPageByPhone(Map<String,Object> params);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据申请记录ID查询申请人员(含姓名、身份证等)
|
* 根据申请记录ID查询申请人员(含姓名、身份证等)
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,28 @@
|
||||||
</if>
|
</if>
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
<select id="listPageByPhone" resultType="com.zcloud.edu.persistence.dataobject.TrainingApplyUserDO">
|
||||||
|
SELECT
|
||||||
|
tau.*,
|
||||||
|
sqco.corp_name apply_corpinfo_name,
|
||||||
|
spco.corp_name approval_corpinfo_name,
|
||||||
|
spdept.name approval_department_name,
|
||||||
|
spuser.name approval_user_name
|
||||||
|
from
|
||||||
|
training_apply_user tau
|
||||||
|
left join training_apply_record tar on tar.training_apply_record_id = tau.training_apply_record_id
|
||||||
|
left join corp_info sqco on sqco.id = tar.apply_corpinfo_id
|
||||||
|
left join corp_info spco on spco.id = tar.approval_corpinfo_id
|
||||||
|
left join department spdept on spdept.id = tar.approval_department_id
|
||||||
|
left join user spuser on spuser.id = tar.approval_user_id
|
||||||
|
<where>
|
||||||
|
and tar.delete_enum = 'false'
|
||||||
|
and tau.delete_enum = 'false'
|
||||||
|
and tau.user_id in (
|
||||||
|
select u.id from user u where u.phone = #{params.eqPhone} and u.delete_enum = 'false' and u.corpinfo_id = #{params.eqCorpinfoId}
|
||||||
|
)
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue