新增一人一档下载功能并优化考试记录查询
parent
aa06fcb829
commit
387b746f56
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<License>
|
||||||
|
<Data>
|
||||||
|
<Products>
|
||||||
|
<Product>Aspose.Total for Java</Product>
|
||||||
|
<Product>Aspose.Words for Java</Product>
|
||||||
|
</Products>
|
||||||
|
<EditionType>Enterprise</EditionType>
|
||||||
|
<SubscriptionExpiry>20991231</SubscriptionExpiry>
|
||||||
|
<LicenseExpiry>20991231</LicenseExpiry>
|
||||||
|
<SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
|
||||||
|
</Data>
|
||||||
|
<Signature>
|
||||||
|
sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=
|
||||||
|
</Signature>
|
||||||
|
</License>
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
自评得分汇总表
|
||||||
|
{{category_list}}考评类目
|
||||||
|
标准分
|
||||||
|
实得分
|
||||||
|
扣分
|
||||||
|
空项分
|
||||||
|
[category]
|
||||||
|
[total_score]
|
||||||
|
[score]
|
||||||
|
[deduction_score]
|
||||||
|
[is_ignore_score]
|
||||||
|
合 计
|
||||||
|
{{total_score}}
|
||||||
|
{{score}}
|
||||||
|
{{deduction_score}}
|
||||||
|
{{is_ignore_score}}
|
||||||
|
评审分小计
|
||||||
|
总分
|
||||||
|
{{total_score}}
|
||||||
|
空项分
|
||||||
|
{{is_ignore_score}}
|
||||||
|
应得分
|
||||||
|
{{should_score}}
|
||||||
|
实得分
|
||||||
|
{{score}}
|
||||||
|
按百分制换算后得分
|
||||||
|
{{hundred_mark_score}}
|
||||||
|
等级
|
||||||
|
三级
|
||||||
|
自评组成员签字:
|
||||||
|
{{qry}}
|
||||||
|
|
||||||
|
|
||||||
|
年 月 日
|
||||||
|
|
||||||
|
|
@ -4,8 +4,10 @@ import com.alibaba.cola.dto.PageResponse;
|
||||||
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.archives.ArchivesServiceI;
|
||||||
import com.zcloud.edu.api.study.ClassServiceI;
|
import com.zcloud.edu.api.study.ClassServiceI;
|
||||||
import com.zcloud.edu.api.study.StudentServiceI;
|
import com.zcloud.edu.api.study.StudentServiceI;
|
||||||
|
import com.zcloud.edu.dto.archives.ArchivesQry;
|
||||||
import com.zcloud.edu.dto.archives.ClassArchivesQry;
|
import com.zcloud.edu.dto.archives.ClassArchivesQry;
|
||||||
import com.zcloud.edu.dto.clientobject.study.ClassCO;
|
import com.zcloud.edu.dto.clientobject.study.ClassCO;
|
||||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||||
|
|
@ -31,6 +33,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||||
public class ArchivesController {
|
public class ArchivesController {
|
||||||
private final ClassServiceI classService;
|
private final ClassServiceI classService;
|
||||||
private final StudentServiceI studentService;
|
private final StudentServiceI studentService;
|
||||||
|
private final ArchivesServiceI archivesService;
|
||||||
|
|
||||||
@ApiOperation("分页")
|
@ApiOperation("分页")
|
||||||
@PostMapping("/list")
|
@PostMapping("/list")
|
||||||
|
|
@ -67,5 +70,12 @@ public class ArchivesController {
|
||||||
public SingleResponse<ClassArchivesDTO> getClassExamResult(@RequestBody ClassArchivesQry qry) {
|
public SingleResponse<ClassArchivesDTO> getClassExamResult(@RequestBody ClassArchivesQry qry) {
|
||||||
return studentService.getClassExamResult(qry);
|
return studentService.getClassExamResult(qry);
|
||||||
}
|
}
|
||||||
|
@ApiOperation("下载一人一档")
|
||||||
|
@PostMapping("/downloadPersonArchives")
|
||||||
|
public SingleResponse<ClassArchivesDTO> downloadPersonArchives(@RequestBody ArchivesQry qry) {
|
||||||
|
archivesService.downloadPersonArchives(qry);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import com.zcloud.edu.dto.archives.ArchivesReviewRecordAddCmd;
|
||||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordPageQry;
|
import com.zcloud.edu.dto.archives.ArchivesReviewRecordPageQry;
|
||||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordUpdateCmd;
|
import com.zcloud.edu.dto.archives.ArchivesReviewRecordUpdateCmd;
|
||||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewRecordCO;
|
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewRecordCO;
|
||||||
|
import com.zcloud.gbscommon.utils.Tools;
|
||||||
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;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
package com.zcloud.edu.command.query.archives;
|
||||||
|
|
||||||
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
|
import com.zcloud.edu.command.convertor.archives.ArchivesPdfFileCoConvertor;
|
||||||
|
import com.zcloud.edu.dto.archives.ArchivesPdfFilePageQry;
|
||||||
|
import com.zcloud.edu.dto.clientobject.archives.ArchivesPdfFileCO;
|
||||||
|
import com.zcloud.edu.persistence.dataobject.archives.ArchivesPdfFileDO;
|
||||||
|
import com.zcloud.edu.persistence.repository.archives.ArchivesPdfFileRepository;
|
||||||
|
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* web-app
|
||||||
|
*
|
||||||
|
* @Author zhangyue
|
||||||
|
* @Date 2026-02-02 10:32:42
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ArchivesQueryExe {
|
||||||
|
private final ArchivesPdfFileRepository archivesPdfFileRepository;
|
||||||
|
private final ArchivesPdfFileCoConvertor archivesPdfFileCoConvertor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页
|
||||||
|
*
|
||||||
|
* @param archivesPdfFilePageQry
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public PageResponse<ArchivesPdfFileCO> execute(ArchivesPdfFilePageQry archivesPdfFilePageQry) {
|
||||||
|
Map<String, Object> params = PageQueryHelper.toHashMap(archivesPdfFilePageQry);
|
||||||
|
PageResponse<ArchivesPdfFileDO> pageResponse = archivesPdfFileRepository.listPage(params);
|
||||||
|
List<ArchivesPdfFileCO> examCenterCOS = archivesPdfFileCoConvertor.converDOsToCOs(pageResponse.getData());
|
||||||
|
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void execte1(){
|
||||||
|
System.out.println(1);
|
||||||
|
}
|
||||||
|
@Async("archivesAsyncExecutor")
|
||||||
|
public void execte2(){
|
||||||
|
// 5s后执行
|
||||||
|
try {
|
||||||
|
Thread.sleep(5000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
System.out.println(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
package com.zcloud.edu.service.archives;
|
||||||
|
|
||||||
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
|
import com.zcloud.edu.api.archives.ArchivesReviewServiceI;
|
||||||
|
import com.zcloud.edu.api.archives.ArchivesServiceI;
|
||||||
|
import com.zcloud.edu.command.archives.ArchivesReviewAddExe;
|
||||||
|
import com.zcloud.edu.command.archives.ArchivesReviewRemoveExe;
|
||||||
|
import com.zcloud.edu.command.archives.ArchivesReviewUpdateExe;
|
||||||
|
import com.zcloud.edu.command.query.archives.ArchivesPdfFileQueryExe;
|
||||||
|
import com.zcloud.edu.command.query.archives.ArchivesQueryExe;
|
||||||
|
import com.zcloud.edu.command.query.archives.ArchivesReviewQueryExe;
|
||||||
|
import com.zcloud.edu.dto.archives.ArchivesQry;
|
||||||
|
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.gbscommon.utils.Tools;
|
||||||
|
import com.zcloud.gbscommon.utils.WordToPdfUtil;
|
||||||
|
import com.zcloud.gbscommon.zcloudimgfiles.facade.ZcloudImgFilesFacade;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.apache.commons.io.output.ByteArrayOutputStream;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* web-app
|
||||||
|
*
|
||||||
|
* @Author zhangyue
|
||||||
|
* @Date 2026-01-26 10:59:35
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ArchivesServiceImpl implements ArchivesServiceI {
|
||||||
|
@DubboReference
|
||||||
|
private ZcloudImgFilesFacade zcloudImgFilesFacade;
|
||||||
|
|
||||||
|
private final ArchivesQueryExe archivesQueryExe;
|
||||||
|
@Override
|
||||||
|
public void downloadPersonArchives(ArchivesQry qry) {
|
||||||
|
|
||||||
|
// HashMap<String, Object> workItem = new HashMap<>();
|
||||||
|
// workItem.put("qry", "555");
|
||||||
|
// String templatePath = "templates/template/category_score_list.docx";
|
||||||
|
// try {
|
||||||
|
|
||||||
|
// ByteArrayOutputStream outputStream = Tools.renderTemplate(templatePath, workItem);
|
||||||
|
// byte[] pdfBytes = WordToPdfUtil.convertWordBytesToPdfBytes(outputStream.toByteArray());
|
||||||
|
// String s = zcloudImgFilesFacade.saveFile(pdfBytes, "clockSign.pdf","clockSign");
|
||||||
|
|
||||||
|
// System.out.println(s);
|
||||||
|
// archivesQueryExe.downloadPersonArchives();
|
||||||
|
archivesQueryExe.execte2();
|
||||||
|
System.out.println("下载成功");
|
||||||
|
// } catch (IOException e) {
|
||||||
|
// throw new RuntimeException(e);
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.zcloud.edu.api.archives;
|
||||||
|
|
||||||
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
|
import com.zcloud.edu.dto.archives.ArchivesQry;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* web-client
|
||||||
|
*
|
||||||
|
* @Author zhangyue
|
||||||
|
* @Date 2026-01-26 10:59:35
|
||||||
|
*/
|
||||||
|
public interface ArchivesServiceI {
|
||||||
|
void downloadPersonArchives(ArchivesQry qry);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package com.zcloud.edu.dto.archives;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* web-client
|
||||||
|
*
|
||||||
|
* @Author zhangyue
|
||||||
|
* @Date 2026-01-13 14:18:12
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ArchivesQry {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询条件操作前缀,支持以下几种数据库查询操作:
|
||||||
|
* - `like`: 模糊匹配查询,对应SQL的LIKE操作符
|
||||||
|
* - `eq`: 等值查询,对应SQL的=操作符
|
||||||
|
* - `gt`: 大于比较查询
|
||||||
|
* - `lt`: 小于比较查询
|
||||||
|
* - `ge`: 大于等于比较查询
|
||||||
|
* - `le`: 小于等于比较查询
|
||||||
|
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||||
|
*/
|
||||||
|
private List<Integer> typeList;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.zcloud.edu.dto.clientobject.study;
|
package com.zcloud.edu.dto.clientobject.study;
|
||||||
|
|
||||||
import com.alibaba.cola.dto.ClientObject;
|
import com.alibaba.cola.dto.ClientObject;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -71,6 +72,24 @@ public class StudentExamRecordCO extends ClientObject {
|
||||||
@ApiModelProperty(value = "剩余考试次数")
|
@ApiModelProperty(value = "剩余考试次数")
|
||||||
private Integer surplusExamNum;
|
private Integer surplusExamNum;
|
||||||
|
|
||||||
|
//试卷名称
|
||||||
|
@ApiModelProperty(value = "试卷名称")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String examName;
|
||||||
|
//试卷总分数
|
||||||
|
@ApiModelProperty(value = "试卷总分数")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private BigDecimal paperExamScore;
|
||||||
|
//合格分数
|
||||||
|
@ApiModelProperty(value = "合格分数")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private BigDecimal passScore;
|
||||||
|
//考试时长(分钟)
|
||||||
|
@ApiModelProperty(value = "考试时长(分钟)")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Integer examTime;
|
||||||
|
|
||||||
|
|
||||||
//环境
|
//环境
|
||||||
@ApiModelProperty(value = "环境")
|
@ApiModelProperty(value = "环境")
|
||||||
private String env;
|
private String env;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.zcloud.edu.dto.clientobject.study;
|
package com.zcloud.edu.dto.clientobject.study;
|
||||||
|
|
||||||
import com.alibaba.cola.dto.ClientObject;
|
import com.alibaba.cola.dto.ClientObject;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -40,8 +41,12 @@ public class StudentSignCO extends ClientObject {
|
||||||
@ApiModelProperty(value = "打卡签字路径")
|
@ApiModelProperty(value = "打卡签字路径")
|
||||||
private String signUrl;
|
private String signUrl;
|
||||||
|
|
||||||
//签到类型 1-打卡签到 2-人脸签到
|
|
||||||
@ApiModelProperty(value = "签到类型 1-打卡签到 2-人脸签到")
|
@ApiModelProperty(value = "培训地点")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String trainingLocation;
|
||||||
|
//签到类型 1-打卡签到 2-考试签到
|
||||||
|
@ApiModelProperty(value = "签到类型 1-打卡签到 2-考试签到")
|
||||||
private Integer type;
|
private Integer type;
|
||||||
//环境
|
//环境
|
||||||
@ApiModelProperty(value = "环境")
|
@ApiModelProperty(value = "环境")
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,8 @@ public class StudentSignAddCmd extends Command {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "签到类型 1-打卡签到 2-人脸签到", name = "type", required = true)
|
@ApiModelProperty(value = "签到类型 1-打卡签到 2-考试签到", name = "type", required = true)
|
||||||
@NotNull(message = "签到类型 1-打卡签到 2-人脸签到不能为空")
|
@NotNull(message = "签到类型 1-打卡签到 2-考试签到不能为空")
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
@ApiModelProperty(value = "手机号", name = "phone", required = true)
|
@ApiModelProperty(value = "手机号", name = "phone", required = true)
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public class StudentSignUpdateCmd extends Command {
|
||||||
private String faceUrl;
|
private String faceUrl;
|
||||||
@ApiModelProperty(value = "签字路径", name = "signUrl", required = true)
|
@ApiModelProperty(value = "签字路径", name = "signUrl", required = true)
|
||||||
private String signUrl;
|
private String signUrl;
|
||||||
@ApiModelProperty(value = "签到类型 1-打卡签到 2-人脸签到", name = "type", required = true)
|
@ApiModelProperty(value = "签到类型 1-打卡签到 2-考试签到", name = "type", required = true)
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ public class StudentSignE extends BaseE {
|
||||||
private String faceUrl;
|
private String faceUrl;
|
||||||
//打卡签字路径
|
//打卡签字路径
|
||||||
private String signUrl;
|
private String signUrl;
|
||||||
//签到类型 1-打卡签到 2-人脸签到
|
//签到类型 1-打卡签到 2-考试签到
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
private String phone;
|
private String phone;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
package com.zcloud.edu.config;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
|
|
||||||
|
import java.util.concurrent.Executor;
|
||||||
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
|
/**
|
||||||
|
* @author zhangyue
|
||||||
|
* @date 2026/2/2 17:24
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class ArchivesAsyncConfig {
|
||||||
|
|
||||||
|
|
||||||
|
public static Integer maxPoolSize;
|
||||||
|
public static Integer corePoolSize;
|
||||||
|
public static Integer queueCapacity;
|
||||||
|
public static String namePrefix;
|
||||||
|
public static Integer keepAliveSeconds;
|
||||||
|
|
||||||
|
@Value("${archives.async.pool.maxPoolSize}")
|
||||||
|
public void setMaxPoolSize(Integer maxPoolSizeProperties) {
|
||||||
|
maxPoolSize = maxPoolSizeProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${archives.async.pool.corePoolSize}")
|
||||||
|
public void setCorePoolSize(Integer corePoolSizeProperties) {
|
||||||
|
corePoolSize = corePoolSizeProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${archives.async.pool.queueCapacity}")
|
||||||
|
public void setQueueCapacity(Integer queueCapacityProperties) {
|
||||||
|
queueCapacity = queueCapacityProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${archives.async.pool.namePrefix}")
|
||||||
|
public void setNamePrefix(String namePrefixProperties) {
|
||||||
|
namePrefix = namePrefixProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Value("${archives.async.pool.keepAliveSeconds}")
|
||||||
|
public void setKeepAliveSeconds(Integer keepAliveSecondsProperties) {
|
||||||
|
keepAliveSeconds = keepAliveSecondsProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean()
|
||||||
|
public Executor archivesAsyncExecutor() {
|
||||||
|
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
||||||
|
//最大线程数
|
||||||
|
executor.setMaxPoolSize(maxPoolSize);
|
||||||
|
//核心线程数
|
||||||
|
executor.setCorePoolSize(corePoolSize);
|
||||||
|
//任务队列的大小
|
||||||
|
executor.setQueueCapacity(queueCapacity);
|
||||||
|
//线程前缀名
|
||||||
|
executor.setThreadNamePrefix(namePrefix);
|
||||||
|
//线程存活时间
|
||||||
|
executor.setKeepAliveSeconds(keepAliveSeconds);
|
||||||
|
/**
|
||||||
|
* 拒绝处理策略
|
||||||
|
* CallerRunsPolicy():交由调用方线程运行,比如 main 线程。
|
||||||
|
* AbortPolicy():直接抛出异常。
|
||||||
|
* DiscardPolicy():直接丢弃。
|
||||||
|
* DiscardOldestPolicy():丢弃队列中最老的任务。
|
||||||
|
*/
|
||||||
|
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
|
||||||
|
// 初始化
|
||||||
|
executor.initialize();
|
||||||
|
return executor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -50,8 +50,8 @@ public class StudentSignDO extends BaseDO {
|
||||||
@ApiModelProperty(value = "打卡签字路径")
|
@ApiModelProperty(value = "打卡签字路径")
|
||||||
private String signUrl;
|
private String signUrl;
|
||||||
|
|
||||||
//签到类型 1-打卡签到 2-人脸签到
|
//签到类型 1-打卡签到 2-考试签到
|
||||||
@ApiModelProperty(value = "签到类型 1-打卡签到 2-人脸签到")
|
@ApiModelProperty(value = "签到类型 1-打卡签到 2-考试签到")
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
@ApiModelProperty(value = "签到时间")
|
@ApiModelProperty(value = "签到时间")
|
||||||
|
|
|
||||||
|
|
@ -32,9 +32,9 @@ public class StudentExamRecordRepositoryImpl extends BaseRepositoryImpl<StudentE
|
||||||
public PageResponse<StudentExamRecordDO> listPage(Map<String, Object> params) {
|
public PageResponse<StudentExamRecordDO> listPage(Map<String, Object> params) {
|
||||||
IPage<StudentExamRecordDO> iPage = new Query<StudentExamRecordDO>().getPage(params);
|
IPage<StudentExamRecordDO> iPage = new Query<StudentExamRecordDO>().getPage(params);
|
||||||
QueryWrapper<StudentExamRecordDO> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<StudentExamRecordDO> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
|
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params, "er.");
|
||||||
queryWrapper.orderByDesc("create_time");
|
queryWrapper.orderByDesc("er.create_time");
|
||||||
IPage<StudentExamRecordDO> result = studentExamRecordMapper.selectPage(iPage, queryWrapper);
|
IPage<StudentExamRecordDO> result = studentExamRecordMapper.listPage(iPage, queryWrapper,null);
|
||||||
return PageHelper.pageToResponse(result, result.getRecords());
|
return PageHelper.pageToResponse(result, result.getRecords());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,26 +36,31 @@
|
||||||
|
|
||||||
<select id="getInfoById" resultType="com.zcloud.edu.persistence.dataobject.study.StudentExamRecordDO">
|
<select id="getInfoById" resultType="com.zcloud.edu.persistence.dataobject.study.StudentExamRecordDO">
|
||||||
SELECT
|
SELECT
|
||||||
er.id,
|
er.id,
|
||||||
er.student_exam_record_id,
|
er.student_exam_record_id,
|
||||||
er.user_id,
|
er.user_id,
|
||||||
er.student_id,
|
er.student_id,
|
||||||
er.class_id,
|
er.class_id,
|
||||||
er.corpinfo_id,
|
er.corpinfo_id,
|
||||||
er.student_sign_id,
|
er.student_sign_id,
|
||||||
er.class_exam_paper_id,
|
er.class_exam_paper_id,
|
||||||
er.exam_paper_id,
|
er.exam_paper_id,
|
||||||
er.exam_time_begin,
|
er.exam_time_begin,
|
||||||
er.exam_time_end,
|
er.exam_time_end,
|
||||||
er.exam_question_num,
|
er.exam_question_num,
|
||||||
er.exam_question_right,
|
er.exam_question_right,
|
||||||
er.exam_question_wrong,
|
er.exam_question_wrong,
|
||||||
er.exam_score,
|
er.exam_score,
|
||||||
er.result,
|
er.result,
|
||||||
ss.sign_url
|
ss.sign_url,
|
||||||
|
ep.exam_name,
|
||||||
|
ep.exam_score paper_exam_score,
|
||||||
|
ep.pass_score,
|
||||||
|
ep.exam_time
|
||||||
FROM
|
FROM
|
||||||
student_exam_record er
|
student_exam_record er
|
||||||
left join student_sign ss on ss.student_sign_id = er.student_sign_id
|
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
|
||||||
<where>
|
<where>
|
||||||
er.delete_enum = 'FALSE'
|
er.delete_enum = 'FALSE'
|
||||||
and er.id = #{id}
|
and er.id = #{id}
|
||||||
|
|
@ -77,7 +82,7 @@
|
||||||
SELECT
|
SELECT
|
||||||
er.*,
|
er.*,
|
||||||
ep.exam_name,
|
ep.exam_name,
|
||||||
ep.paper_exam_score,
|
ep.exam_score paper_exam_score,
|
||||||
ep.pass_score,
|
ep.pass_score,
|
||||||
ep.exam_time
|
ep.exam_time
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -124,24 +124,22 @@
|
||||||
|
|
||||||
<select id="countStudentByCorpId" resultType="com.zcloud.edu.persistence.dataobject.study.StudentDO">
|
<select id="countStudentByCorpId" resultType="com.zcloud.edu.persistence.dataobject.study.StudentDO">
|
||||||
select
|
select
|
||||||
count(DISTINCT s.phone) student_count,
|
u.corpinfo_id,
|
||||||
s.class_corpinfo_id
|
count(DISTINCT u.username) student_count
|
||||||
from
|
from
|
||||||
student s
|
user u
|
||||||
left join class c on c.class_id = s.class_id
|
left join training_user tu on tu.phone = u.username
|
||||||
<where>
|
where u.delete_enum = 'FALSE'
|
||||||
s.delete_enum = 'FALSE'
|
AND u.employment_flag = '1'
|
||||||
and c.delete_enum = 'FALSE'
|
and tu.start_time <= now()
|
||||||
and c.state != 1
|
and tu.end_time >= now()
|
||||||
<if test="params.corpinfoIds != null and params.corpinfoIds.size > 0">
|
<if test="params.corpinfoIds != null and params.corpinfoIds.size() > 0">
|
||||||
s.class_corpinfo_id in
|
AND u.corpinfo_id in
|
||||||
<foreach item="item" collection="params.corpinfoIds" separator="," open="(" close=")">
|
<foreach collection="params.corpinfoIds" item="corpinfoId" separator="," open="(" close=")">
|
||||||
#{item}
|
#{corpinfoId}
|
||||||
</foreach>
|
</foreach>
|
||||||
</if>
|
</if>
|
||||||
</where>
|
GROUP BY u.corpinfo_id
|
||||||
group by
|
|
||||||
s.class_corpinfo_id
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue