PaperBasicInfo
parent
c68ccbe003
commit
c0e3b02026
|
|
@ -93,6 +93,18 @@ public class PaperController {
|
|||
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文件流,浏览器直接访问即触发下载
|
||||
*
|
||||
|
|
|
|||
|
|
@ -78,11 +78,6 @@ public class ClassManagementDTO {
|
|||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
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);
|
||||
|
||||
/**
|
||||
* 根据试卷id查询试卷基本信息(不含试题列表)
|
||||
*
|
||||
* @param paperId 试卷id
|
||||
* @return 试卷基础信息
|
||||
*/
|
||||
PaperBasicInfoVO paperBasicInfo(Long paperId);
|
||||
|
||||
/**
|
||||
* 将试卷考试信息渲染为PDF字节数组(用于试卷下载)
|
||||
*
|
||||
|
|
|
|||
|
|
@ -159,7 +159,6 @@ public class ClassManagementServiceImpl extends ServiceImpl<ClassManagementMappe
|
|||
public Boolean bindPaper(ClassManagementDTO dto) {
|
||||
return this.lambdaUpdate()
|
||||
.set(ClassManagementDO::getPaperId, dto.getPaperId())
|
||||
.set(ClassManagementDO::getPaperType, dto.getPaperType())
|
||||
.set(ClassManagementDO::getExamMinutes, dto.getExamMinutes())
|
||||
.set(ClassManagementDO::getUpdateTime, LocalDateTime.now())
|
||||
.eq(ClassManagementDO::getId, dto.getId())
|
||||
|
|
|
|||
|
|
@ -358,6 +358,18 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
|
|||
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分组回填
|
||||
*
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import io.swagger.annotations.Api;
|
|||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
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.OrgPersonnelDeptCountCO;
|
||||
import org.qinan.safetyeval.client.co.OrgPersonnelImportResultCO;
|
||||
|
|
@ -60,6 +61,12 @@ public class OrgPersonnelController {
|
|||
return orgPersonnelApi.page(query);
|
||||
}
|
||||
|
||||
@ApiOperation("班级选择人员分页查询")
|
||||
@GetMapping("/classSelect/page")
|
||||
public PageResponse<ClassSelectPersonnelCO> classSelectPage(@Validated ClassSelectPersonnelPageQuery query) {
|
||||
return orgPersonnelApi.classSelectPage(query);
|
||||
}
|
||||
|
||||
@ApiOperation("资质备案人员分页查询")
|
||||
@GetMapping("/filing/page")
|
||||
public PageResponse<QualFilingPersonnelInfoCO> filingPage(@Validated OrgFilingPersonnelPageQuery query) {
|
||||
|
|
|
|||
|
|
@ -259,6 +259,14 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
|
|||
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
|
||||
public PageResponse<QualFilingPersonnelInfoCO> filingPage(OrgFilingPersonnelPageQuery query) {
|
||||
query.setOrgId(ThreadLocalUserInfoAdapter.getOrgId());
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
package org.qinan.safetyeval.client.api;
|
||||
|
||||
import org.qinan.safetyeval.client.co.OrgPersonnelCO;
|
||||
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.co.*;
|
||||
import org.qinan.safetyeval.client.dto.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
|
|
@ -27,6 +24,14 @@ public interface OrgPersonnelApi {
|
|||
|
||||
PageResponse<OrgPersonnelCO> page(OrgPersonnelPageQuery query);
|
||||
|
||||
/**
|
||||
* 班级选择人员分页查询(支持学员名称、参训单位、部门筛选,排除人员id集合 not in)。
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @return 可选人员分页结果
|
||||
*/
|
||||
PageResponse<ClassSelectPersonnelCO> classSelectPage(ClassSelectPersonnelPageQuery query);
|
||||
|
||||
PageResponse<QualFilingPersonnelInfoCO> filingPage(OrgFilingPersonnelPageQuery query);
|
||||
|
||||
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 org.apache.ibatis.annotations.Mapper;
|
||||
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.QualFilingPersonnelInfoCO;
|
||||
import org.qinan.safetyeval.client.dto.ClassSelectPersonnelPageQuery;
|
||||
import org.qinan.safetyeval.client.dto.OrgFilingPersonnelPageQuery;
|
||||
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO;
|
||||
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDeptCountDO;
|
||||
|
|
@ -50,4 +52,14 @@ public interface OrgPersonnelMapper extends BaseMapper<OrgPersonnelDO> {
|
|||
*/
|
||||
IPage<QualFilingPersonnelInfoCO> filingPage(Page<QualFilingPersonnelInfoCO> page,
|
||||
@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
|
||||
</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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue