user paper exam

dev-tmp1
luotaiqian 2026-08-25 09:24:55 +08:00
parent b452797eb2
commit 397c04e154
9 changed files with 121 additions and 6 deletions

View File

@ -11,6 +11,7 @@ import org.qinan.cedu.service.PaperService;
import org.qinan.cedu.service.QuestionService; import org.qinan.cedu.service.QuestionService;
import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -43,6 +44,8 @@ public class PaperController {
@ApiOperation("机构分页查询试卷") @ApiOperation("机构分页查询试卷")
@GetMapping("/org/page") @GetMapping("/org/page")
public PageResponse<PaperPageVO> orgPage(@Validated PaperOrgPageQueryDTO query) { public PageResponse<PaperPageVO> orgPage(@Validated PaperOrgPageQueryDTO query) {
// 设置机构id
query.setOrgId(ThreadLocalUserInfoAdapter.getOrgId());
IPage<PaperPageVO> page = paperService.pageQueryByOrg(query); IPage<PaperPageVO> page = paperService.pageQueryByOrg(query);
return PageResponse.of(page.getRecords(), page.getTotal()); return PageResponse.of(page.getRecords(), page.getTotal());
} }

View File

@ -1,6 +1,7 @@
package org.qinan.cedu.controller; package org.qinan.cedu.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.auth.utils.AuthContext;
import io.swagger.annotations.Api; 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;
@ -31,6 +32,7 @@ public class PaperExamQuestionUserController {
@ApiOperation("分页查询用户试卷试题") @ApiOperation("分页查询用户试卷试题")
@GetMapping("/page") @GetMapping("/page")
public PageResponse<PaperExamQuestionUserVO> page(PaperExamQuestionUserPageQueryDTO query) { public PageResponse<PaperExamQuestionUserVO> page(PaperExamQuestionUserPageQueryDTO query) {
query.setUserId(AuthContext.getUserId());
IPage<PaperExamQuestionUserVO> page = paperExamQuestionUserService.pageQuery(query); IPage<PaperExamQuestionUserVO> page = paperExamQuestionUserService.pageQuery(query);
return PageResponse.of(page.getRecords(), page.getTotal()); return PageResponse.of(page.getRecords(), page.getTotal());
} }

View File

@ -5,17 +5,14 @@ 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 lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.qinan.cedu.model.dto.PaperCoursewarePageQueryDTO; import org.qinan.cedu.model.dto.*;
import org.qinan.cedu.model.dto.QuestionAddDTO;
import org.qinan.cedu.model.dto.QuestionBatchDeleteDTO;
import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO;
import org.qinan.cedu.model.dto.QuestionUpdateDTO;
import org.qinan.cedu.model.vo.QuestionCoursewareVO; import org.qinan.cedu.model.vo.QuestionCoursewareVO;
import org.qinan.cedu.model.vo.QuestionTypeCountVO; import org.qinan.cedu.model.vo.QuestionTypeCountVO;
import org.qinan.cedu.model.vo.QuestionVO; import org.qinan.cedu.model.vo.QuestionVO;
import org.qinan.cedu.service.QuestionService; import org.qinan.cedu.service.QuestionService;
import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -86,4 +83,15 @@ public class QuestionController {
return PageResponse.of(page.getRecords(), page.getTotal()); return PageResponse.of(page.getRecords(), page.getTotal());
} }
/**
*
*/
@ApiOperation("分页试题信息,根据机构查询")
@GetMapping("/page/org")
public PageResponse<QuestionCoursewareVO> pageOrg(QuestionOrgPageQueryDTO query) {
query.setOrgId(ThreadLocalUserInfoAdapter.getOrgId());
IPage<QuestionCoursewareVO> page = questionService.pageOrg(query);
return PageResponse.of(page.getRecords(), page.getTotal());
}
} }

View File

@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.qinan.cedu.model.dto.PaperCoursewarePageQueryDTO; import org.qinan.cedu.model.dto.PaperCoursewarePageQueryDTO;
import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO; import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO;
import org.qinan.cedu.model.dto.QuestionOrgPageQueryDTO;
import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO; import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO;
import org.qinan.cedu.model.entity.QuestionDO; import org.qinan.cedu.model.entity.QuestionDO;
import org.qinan.cedu.model.vo.*; import org.qinan.cedu.model.vo.*;
@ -90,4 +91,14 @@ public interface QuestionMapper extends BaseMapper<QuestionDO> {
*/ */
IPage<QuestionCoursewareVO> pageCourseware(Page<PaperQuestionVO> page IPage<QuestionCoursewareVO> pageCourseware(Page<PaperQuestionVO> page
,@Param("qry") PaperCoursewarePageQueryDTO query); ,@Param("qry") PaperCoursewarePageQueryDTO query);
/**
*
*
* @param page
* @param query idid
* @return
*/
IPage<QuestionCoursewareVO> pageOrg(Page<PaperQuestionVO> page
,@Param("qry") QuestionOrgPageQueryDTO query);
} }

View File

@ -4,8 +4,12 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.qinan.cedu.enums.PaperTypeEnum;
import org.qinan.cedu.model.query.BasePageQuery;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.time.LocalDate;
/** /**
* *
@ -13,7 +17,21 @@ import javax.validation.constraints.NotNull;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value = "PaperOrgPageQueryDTO", description = "试卷机构分页查询请求") @ApiModel(value = "PaperOrgPageQueryDTO", description = "试卷机构分页查询请求")
public class PaperOrgPageQueryDTO extends PaperPageQueryDTO { public class PaperOrgPageQueryDTO extends BasePageQuery {
@ApiModelProperty("试卷名称(模糊)")
private String paperName;
@ApiModelProperty(PaperTypeEnum.REMARKS)
private String paperType;
@ApiModelProperty("创建时间-开始yyyy-MM-dd含当天")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private LocalDate createTimeStart;
@ApiModelProperty("创建时间-结束yyyy-MM-dd含当天")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private LocalDate createTimeEnd;
@ApiModelProperty(value = "机构id", required = true) @ApiModelProperty(value = "机构id", required = true)
@NotNull(message = "机构id不能为空") @NotNull(message = "机构id不能为空")

View File

@ -0,0 +1,32 @@
package org.qinan.cedu.model.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.qinan.cedu.enums.QuestionTypeEnum;
import org.qinan.cedu.model.query.BasePageQuery;
import javax.validation.constraints.NotNull;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "QuestionOrgPageQueryDTO", description = "试题机构分页查询请求")
public class QuestionOrgPageQueryDTO extends BasePageQuery {
@ApiModelProperty(value = "机构id", required = true)
@NotNull(message = "机构id不能为空")
private Long orgId;
@ApiModelProperty("课件id可选不传查机构下全部课件")
private Long coursewareManagementId;
@ApiModelProperty(QuestionTypeEnum.REMARKS)
private String questionType;
@ApiModelProperty("题干name")
private String title;
}

View File

@ -108,6 +108,14 @@ public interface QuestionService extends IService<QuestionDO> {
*/ */
IPage<QuestionCoursewareVO> pageCourseware(PaperCoursewarePageQueryDTO query); IPage<QuestionCoursewareVO> pageCourseware(PaperCoursewarePageQueryDTO query);
/**
*
*
* @param query query
* @return QuestionCoursewareVO
*/
IPage<QuestionCoursewareVO> pageOrg(QuestionOrgPageQueryDTO query);
/** /**
* *
* *

View File

@ -252,6 +252,11 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, QuestionDO>
return this.baseMapper.pageCourseware(new Page<>(query.getCurrent(), query.getSize()), query); return this.baseMapper.pageCourseware(new Page<>(query.getCurrent(), query.getSize()), query);
} }
@Override
public IPage<QuestionCoursewareVO> pageOrg(QuestionOrgPageQueryDTO query) {
return this.baseMapper.pageOrg(new Page<>(query.getCurrent(), query.getSize()), query);
}
@Override @Override
public void addQuestion(QuestionAddDTO dto) { public void addQuestion(QuestionAddDTO dto) {
QuestionDO question = questionConvertor.convertAddDtoToE(dto); QuestionDO question = questionConvertor.convertAddDtoToE(dto);

View File

@ -114,4 +114,32 @@
</if> </if>
ORDER BY q.id DESC ORDER BY q.id DESC
</select> </select>
<select id="pageOrg" resultType="org.qinan.cedu.model.vo.QuestionCoursewareVO">
SELECT q.id
, q.title
, q.score
, q.answer_question_option_ids
, q.analysis
, q.question_type
, q.tag_type
, q.answer
, cm.courseware_name
, q.courseware_management_id
FROM question q
JOIN courseware_management cm ON cm.id = q.courseware_management_id
WHERE q.org_id = #{qry.orgId}
AND q.delete_enum = 'false'
AND cm.delete_enum = 'false'
<if test="qry.coursewareManagementId != null">
AND cm.id = #{qry.coursewareManagementId}
</if>
<if test="qry.title != null and qry.title != ''">
AND q.title LIKE CONCAT('%', #{qry.title}, '%')
</if>
<if test="qry.questionType != null and qry.questionType != ''">
AND q.question_type = #{qry.questionType}
</if>
ORDER BY q.id DESC
</select>
</mapper> </mapper>