PaperBasicInfo
parent
c68ccbe003
commit
c0e3b02026
|
|
@ -93,6 +93,18 @@ public class PaperController {
|
||||||
return SingleResponse.success(pageInfo);
|
return SingleResponse.success(pageInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据试卷id查询试卷基本信息(不含试题列表)
|
||||||
|
*
|
||||||
|
* @param paperId 试卷id
|
||||||
|
* @return 试卷基础信息
|
||||||
|
*/
|
||||||
|
@ApiOperation("试卷基本信息查询")
|
||||||
|
@GetMapping("/paper/basic/info")
|
||||||
|
public SingleResponse<PaperBasicInfoVO> paperBasicInfo(@RequestParam("paperId") @ApiParam(value = "试卷id", required = true) Long paperId) {
|
||||||
|
return SingleResponse.success(paperService.paperBasicInfo(paperId));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下载试卷PDF:查询试卷考试信息(同paperExamInfo)后渲染为PDF文件流,浏览器直接访问即触发下载
|
* 下载试卷PDF:查询试卷考试信息(同paperExamInfo)后渲染为PDF文件流,浏览器直接访问即触发下载
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -78,11 +78,6 @@ public class ClassManagementDTO {
|
||||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime delayTime;
|
private LocalDateTime delayTime;
|
||||||
|
|
||||||
/**
|
|
||||||
* 试卷类型(如:1自动生成试卷、2平台组卷等)
|
|
||||||
*/
|
|
||||||
@ApiModelProperty("试卷类型(如:1自动生成试卷、2平台组卷等)")
|
|
||||||
private Integer paperType;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 考试时长(分)
|
* 考试时长(分)
|
||||||
|
|
|
||||||
|
|
@ -108,6 +108,14 @@ public interface PaperService extends IService<PaperDO> {
|
||||||
*/
|
*/
|
||||||
PaperExamInfoVO paperExamInfo(Long paperId);
|
PaperExamInfoVO paperExamInfo(Long paperId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据试卷id查询试卷基本信息(不含试题列表)
|
||||||
|
*
|
||||||
|
* @param paperId 试卷id
|
||||||
|
* @return 试卷基础信息
|
||||||
|
*/
|
||||||
|
PaperBasicInfoVO paperBasicInfo(Long paperId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将试卷考试信息渲染为PDF字节数组(用于试卷下载)
|
* 将试卷考试信息渲染为PDF字节数组(用于试卷下载)
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,6 @@ public class ClassManagementServiceImpl extends ServiceImpl<ClassManagementMappe
|
||||||
public Boolean bindPaper(ClassManagementDTO dto) {
|
public Boolean bindPaper(ClassManagementDTO dto) {
|
||||||
return this.lambdaUpdate()
|
return this.lambdaUpdate()
|
||||||
.set(ClassManagementDO::getPaperId, dto.getPaperId())
|
.set(ClassManagementDO::getPaperId, dto.getPaperId())
|
||||||
.set(ClassManagementDO::getPaperType, dto.getPaperType())
|
|
||||||
.set(ClassManagementDO::getExamMinutes, dto.getExamMinutes())
|
.set(ClassManagementDO::getExamMinutes, dto.getExamMinutes())
|
||||||
.set(ClassManagementDO::getUpdateTime, LocalDateTime.now())
|
.set(ClassManagementDO::getUpdateTime, LocalDateTime.now())
|
||||||
.eq(ClassManagementDO::getId, dto.getId())
|
.eq(ClassManagementDO::getId, dto.getId())
|
||||||
|
|
|
||||||
|
|
@ -358,6 +358,18 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
|
||||||
return examInfoVO;
|
return examInfoVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PaperBasicInfoVO paperBasicInfo(Long paperId) {
|
||||||
|
PaperDO paper = this.lambdaQuery()
|
||||||
|
.eq(PaperDO::getId, paperId)
|
||||||
|
.eq(PaperDO::getDeleteEnum, DeleteEnum.FALSE.getCode())
|
||||||
|
.one();
|
||||||
|
if (paper == null) {
|
||||||
|
throw new IllegalArgumentException("试卷不存在");
|
||||||
|
}
|
||||||
|
return paperConvertor.convertEToBasicVo(paper);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量填充试题选项:一次查询所有试题的选项后按试题id分组回填
|
* 批量填充试题选项:一次查询所有试题的选项后按试题id分组回填
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import io.swagger.annotations.ApiParam;
|
import io.swagger.annotations.ApiParam;
|
||||||
import org.qinan.safetyeval.client.api.OrgPersonnelApi;
|
import org.qinan.safetyeval.client.api.OrgPersonnelApi;
|
||||||
|
import org.qinan.safetyeval.client.co.ClassSelectPersonnelCO;
|
||||||
import org.qinan.safetyeval.client.co.OrgPersonnelCO;
|
import org.qinan.safetyeval.client.co.OrgPersonnelCO;
|
||||||
import org.qinan.safetyeval.client.co.OrgPersonnelDeptCountCO;
|
import org.qinan.safetyeval.client.co.OrgPersonnelDeptCountCO;
|
||||||
import org.qinan.safetyeval.client.co.OrgPersonnelImportResultCO;
|
import org.qinan.safetyeval.client.co.OrgPersonnelImportResultCO;
|
||||||
|
|
@ -60,6 +61,12 @@ public class OrgPersonnelController {
|
||||||
return orgPersonnelApi.page(query);
|
return orgPersonnelApi.page(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("班级选择人员分页查询")
|
||||||
|
@GetMapping("/classSelect/page")
|
||||||
|
public PageResponse<ClassSelectPersonnelCO> classSelectPage(@Validated ClassSelectPersonnelPageQuery query) {
|
||||||
|
return orgPersonnelApi.classSelectPage(query);
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("资质备案人员分页查询")
|
@ApiOperation("资质备案人员分页查询")
|
||||||
@GetMapping("/filing/page")
|
@GetMapping("/filing/page")
|
||||||
public PageResponse<QualFilingPersonnelInfoCO> filingPage(@Validated OrgFilingPersonnelPageQuery query) {
|
public PageResponse<QualFilingPersonnelInfoCO> filingPage(@Validated OrgFilingPersonnelPageQuery query) {
|
||||||
|
|
|
||||||
|
|
@ -259,6 +259,14 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
|
||||||
return PageResponse.of(records, pageResult.getTotal());
|
return PageResponse.of(records, pageResult.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResponse<ClassSelectPersonnelCO> classSelectPage(ClassSelectPersonnelPageQuery query) {
|
||||||
|
// 直连 infrastructure 层 Mapper,跳过 domain,由 XML 直接返回 CO,无需转换
|
||||||
|
Page<ClassSelectPersonnelCO> page = new Page<>(query.getCurrent(), query.getSize());
|
||||||
|
IPage<ClassSelectPersonnelCO> result = orgPersonnelMapper.classSelectPage(page, query);
|
||||||
|
return PageResponse.of(result.getRecords(), result.getTotal());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResponse<QualFilingPersonnelInfoCO> filingPage(OrgFilingPersonnelPageQuery query) {
|
public PageResponse<QualFilingPersonnelInfoCO> filingPage(OrgFilingPersonnelPageQuery query) {
|
||||||
query.setOrgId(ThreadLocalUserInfoAdapter.getOrgId());
|
query.setOrgId(ThreadLocalUserInfoAdapter.getOrgId());
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
package org.qinan.safetyeval.client.api;
|
package org.qinan.safetyeval.client.api;
|
||||||
|
|
||||||
import org.qinan.safetyeval.client.co.OrgPersonnelCO;
|
import org.qinan.safetyeval.client.co.*;
|
||||||
import org.qinan.safetyeval.client.co.OrgPersonnelDeptCountCO;
|
|
||||||
import org.qinan.safetyeval.client.co.OrgPersonnelImportResultCO;
|
|
||||||
import org.qinan.safetyeval.client.co.QualFilingPersonnelInfoCO;
|
|
||||||
import org.qinan.safetyeval.client.dto.*;
|
import org.qinan.safetyeval.client.dto.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
|
@ -27,6 +24,14 @@ public interface OrgPersonnelApi {
|
||||||
|
|
||||||
PageResponse<OrgPersonnelCO> page(OrgPersonnelPageQuery query);
|
PageResponse<OrgPersonnelCO> page(OrgPersonnelPageQuery query);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 班级选择人员分页查询(支持学员名称、参训单位、部门筛选,排除人员id集合 not in)。
|
||||||
|
*
|
||||||
|
* @param query 查询条件
|
||||||
|
* @return 可选人员分页结果
|
||||||
|
*/
|
||||||
|
PageResponse<ClassSelectPersonnelCO> classSelectPage(ClassSelectPersonnelPageQuery query);
|
||||||
|
|
||||||
PageResponse<QualFilingPersonnelInfoCO> filingPage(OrgFilingPersonnelPageQuery query);
|
PageResponse<QualFilingPersonnelInfoCO> filingPage(OrgFilingPersonnelPageQuery query);
|
||||||
|
|
||||||
SingleResponse<Void> resetPassword(Long id, String resetPassword);
|
SingleResponse<Void> resetPassword(Long id, String resetPassword);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package org.qinan.safetyeval.client.co;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 班级选择人员CO(Client Object)
|
||||||
|
*
|
||||||
|
* @author safety-eval
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ClassSelectPersonnelCO {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "主键ID")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "用户姓名")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "账号")
|
||||||
|
private String account;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "身份证号")
|
||||||
|
private String idCardNo;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "参训单位名称")
|
||||||
|
private String unitName;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "部门ID")
|
||||||
|
private Long deptId;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
package org.qinan.safetyeval.client.dto;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 班级选择人员分页查询参数
|
||||||
|
*
|
||||||
|
* @author safety-eval
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class ClassSelectPersonnelPageQuery extends BasePageQuery {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "学员名称(模糊)")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "参训单位id")
|
||||||
|
private Long orgId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "部门id")
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "需排除的人员id集合(如已加入班级的人员,不为空时 not in)")
|
||||||
|
private List<Long> excludePersonnelIds;
|
||||||
|
}
|
||||||
|
|
@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.qinan.safetyeval.client.co.ClassSelectPersonnelCO;
|
||||||
import org.qinan.safetyeval.client.co.IndustryProfessionalPersonCo;
|
import org.qinan.safetyeval.client.co.IndustryProfessionalPersonCo;
|
||||||
import org.qinan.safetyeval.client.co.QualFilingPersonnelInfoCO;
|
import org.qinan.safetyeval.client.co.QualFilingPersonnelInfoCO;
|
||||||
|
import org.qinan.safetyeval.client.dto.ClassSelectPersonnelPageQuery;
|
||||||
import org.qinan.safetyeval.client.dto.OrgFilingPersonnelPageQuery;
|
import org.qinan.safetyeval.client.dto.OrgFilingPersonnelPageQuery;
|
||||||
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO;
|
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO;
|
||||||
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDeptCountDO;
|
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDeptCountDO;
|
||||||
|
|
@ -50,4 +52,14 @@ public interface OrgPersonnelMapper extends BaseMapper<OrgPersonnelDO> {
|
||||||
*/
|
*/
|
||||||
IPage<QualFilingPersonnelInfoCO> filingPage(Page<QualFilingPersonnelInfoCO> page,
|
IPage<QualFilingPersonnelInfoCO> filingPage(Page<QualFilingPersonnelInfoCO> page,
|
||||||
@Param("query") OrgFilingPersonnelPageQuery query);
|
@Param("query") OrgFilingPersonnelPageQuery query);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 班级选择人员分页查询(关联单位、部门信息),由 XML 直接返回 CO,无需转换。
|
||||||
|
*
|
||||||
|
* @param page 分页参数
|
||||||
|
* @param query 查询条件(学员名称、参训单位、部门、排除人员id集合)
|
||||||
|
* @return 可选人员分页结果
|
||||||
|
*/
|
||||||
|
IPage<ClassSelectPersonnelCO> classSelectPage(Page<ClassSelectPersonnelCO> page,
|
||||||
|
@Param("query") ClassSelectPersonnelPageQuery query);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -110,4 +110,31 @@
|
||||||
ORDER BY p.id DESC
|
ORDER BY p.id DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 班级选择人员分页查询,直接返回 CO -->
|
||||||
|
<select id="classSelectPage" resultType="org.qinan.safetyeval.client.co.ClassSelectPersonnelCO">
|
||||||
|
SELECT op.id, op.user_name, op.account, op.id_card_no, oi.unit_name, op.dept_id
|
||||||
|
FROM org_personnel op
|
||||||
|
JOIN org_info oi ON op.org_id = oi.id AND oi.delete_enum = 'false'
|
||||||
|
JOIN org_department od ON od.id = op.dept_id AND od.delete_enum = 'false'
|
||||||
|
<where>
|
||||||
|
op.delete_enum = 'false'
|
||||||
|
<if test="query.userName != null and query.userName != ''">
|
||||||
|
AND op.user_name LIKE CONCAT('%', #{query.userName}, '%')
|
||||||
|
</if>
|
||||||
|
<if test="query.orgId != null">
|
||||||
|
AND op.org_id = #{query.orgId}
|
||||||
|
</if>
|
||||||
|
<if test="query.deptId != null">
|
||||||
|
AND op.dept_id = #{query.deptId}
|
||||||
|
</if>
|
||||||
|
<if test="query.excludePersonnelIds != null and query.excludePersonnelIds.size() > 0">
|
||||||
|
AND op.id NOT IN
|
||||||
|
<foreach collection="query.excludePersonnelIds" item="pid" open="(" separator="," close=")">
|
||||||
|
#{pid}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY op.id DESC
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue