Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

Althars123 2 лет назад
Родитель
Сommit
cda7ab3519
18 измененных файлов с 1376 добавлено и 377 удалено
  1. 143 6
      sdjk-admin/src/main/java/com/miaxis/app/controller/question/QuestionInfoController.java
  2. 64 342
      sdjk-service/src/main/java/com/miaxis/question/domain/QuestionInfo.java
  3. 190 0
      sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoDTO.java
  4. 64 0
      sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoFlDTO.java
  5. 27 0
      sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoFreeDTO.java
  6. 39 0
      sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoSortDTO.java
  7. 30 0
      sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoSortUpateDTO.java
  8. 44 0
      sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoTestDTO.java
  9. 42 2
      sdjk-service/src/main/java/com/miaxis/question/mapper/QuestionInfoMapper.java
  10. 34 5
      sdjk-service/src/main/java/com/miaxis/question/service/IQuestionInfoService.java
  11. 194 7
      sdjk-service/src/main/java/com/miaxis/question/service/impl/QuestionInfoServiceImpl.java
  12. 29 0
      sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoDfVO.java
  13. 29 0
      sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoExcelTypeVo.java
  14. 52 0
      sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoExcelVo.java
  15. 29 0
      sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoFlVO.java
  16. 29 0
      sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoJxVO.java
  17. 29 0
      sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoSxVO.java
  18. 308 15
      sdjk-service/src/main/resources/mapper/question/QuestionInfoMapper.xml

+ 143 - 6
sdjk-admin/src/main/java/com/miaxis/app/controller/question/QuestionInfoController.java

@@ -5,7 +5,14 @@ import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.page.ResponsePageInfo;
 import com.miaxis.question.domain.QuestionInfo;
+import com.miaxis.question.dto.QuestionInfoDTO;
+import com.miaxis.question.dto.QuestionInfoFlDTO;
+import com.miaxis.question.dto.QuestionInfoTestDTO;
 import com.miaxis.question.service.IQuestionInfoService;
+import com.miaxis.question.vo.QuestionInfoDfVO;
+import com.miaxis.question.vo.QuestionInfoFlVO;
+import com.miaxis.question.vo.QuestionInfoJxVO;
+import com.miaxis.question.vo.QuestionInfoSxVO;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -16,12 +23,12 @@ import java.util.List;
  * 【题库】Controller
  *
  * @author miaxis
- * @date 2021-10-12
+ * @date 2021-10-20
  */
 @RestController
 @RequestMapping(Constants.STUDENT_PREFIX+"/question/info")
-@Api(tags={"【app-题库】"})
-public class QuestionInfoController extends BaseController{
+@Api(tags={"【H5-题库】"})
+public class QuestionInfoController extends BaseController {
     @Autowired
     private IQuestionInfoService questionInfoService;
 
@@ -34,13 +41,23 @@ public class QuestionInfoController extends BaseController{
             @ApiImplicitParam(name = "pageNum",value = "当前页码" ,dataType = "int", paramType = "query", required = false),
             @ApiImplicitParam(name = "pageSize",value = "每页数据量" , dataType = "int", paramType = "query", required = false),
     })
-    public ResponsePageInfo<QuestionInfo> list(@ModelAttribute QuestionInfo questionInfo){
+    public ResponsePageInfo<QuestionInfo> list(@ModelAttribute QuestionInfoDTO questionInfoDTO){
         startPage();
-        List<QuestionInfo> list = questionInfoService.selectQuestionInfoList(questionInfo);
+        List<QuestionInfo> list = questionInfoService.selectQuestionInfoList(questionInfoDTO);
         return toResponsePageInfo(list);
     }
 
-
+//    /**
+//     * 导出题库列表
+//     */
+//    @Log(title = "题库", businessType = BusinessTypeEnum.EXPORT)
+//    @GetMapping("/export")
+//    @ApiOperation("导出题库列表Excel")
+//    public Response<String> export(@ModelAttribute QuestionInfo questionInfo){
+//        List<QuestionInfo> list = questionInfoService.selectQuestionInfoList(questionInfo);
+//        ExcelUtil<QuestionInfo> util = new ExcelUtil<QuestionInfo>(QuestionInfo.class);
+//        return util.exportExcel(list, "info");
+//    }
 
     /**
      * 获取题库详细信息
@@ -54,6 +71,126 @@ public class QuestionInfoController extends BaseController{
         return Response.success(questionInfoService.getById(id));
     }
 
+    /**
+     * 获取题库详细信息多个题库
+     */
+    @GetMapping(value = "/getQuestionInfoByIds")
+    @ApiOperation("获取题库详细信息批量取题")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "ids",value = "题目ids" ,dataType = "List", required = true)})
+    public ResponsePageInfo<QuestionInfo> getQuestionInfoByIds(Long[] ids){
+        List<QuestionInfo> list = questionInfoService.selectQuestionInfoListByIds(ids);
+        return toResponsePageInfo(list);
+    }
+
 
+    /**
+     * 新增题库
+     */
+//    @PreAuthorize("@ss.hasPermi('qustion:info:add')")
+//    @Log(title = "题库", businessType = BusinessTypeEnum.INSERT)
+//    @PostMapping
+//    @ApiOperation("新增题库")
+//    public Response<Integer> add(@RequestBody QuestionInfo questionInfo){
+//        return toResponse(questionInfoService.save(questionInfo) ? 1 : 0);
+//    }
 
+    /**
+     * 修改题库
+     */
+//    @PreAuthorize("@ss.hasPermi('qustion:info:edit')")
+//    @Log(title = "题库", businessType = BusinessTypeEnum.UPDATE)
+//    @PutMapping
+//    @ApiOperation("修改题库")
+//    public Response<Integer> edit(@RequestBody QuestionInfo questionInfo){
+//        return toResponse(questionInfoService.updateById(questionInfo) ? 1 : 0);
+//    }
+
+    /**
+     * 删除题库
+     */
+//    @PreAuthorize("@ss.hasPermi('qustion:info:remove')")
+//    @Log(title = "题库", businessType = BusinessTypeEnum.DELETE)
+//	@DeleteMapping("/{ids}")
+//    @ApiOperation("删除题库")
+//    public  Response<Integer> remove(
+//            @ApiParam(name = "ids", value = "题库ids参数", required = true)
+//            @PathVariable Long[] ids
+//    ){
+//        return toResponse(questionInfoService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
+//    }
+
+
+    /**
+     * 获取精选分类
+     */
+    @GetMapping(value = "/selectJxQuestionInfo")
+    @ApiOperation("获取精选题分类")
+    public Response<List<QuestionInfoJxVO>> selectJxQuestionInfo(@ModelAttribute QuestionInfoFlDTO questionInfoFlDTO) {
+        return Response.success(questionInfoService.selectJxQuestionInfo(questionInfoFlDTO));
+    }
+
+
+    /**
+     * 获取地方分类
+     */
+    @GetMapping(value = "/selectDfQuestionInfo")
+    @ApiOperation("获取地方题分类")
+    public Response<List<QuestionInfoDfVO>> selectDfQuestionInfo(@ModelAttribute QuestionInfoFlDTO questionInfoFlDTO) {
+        return Response.success(questionInfoService.selectDfQuestionInfo(questionInfoFlDTO));
+    }
+
+    /**
+     * 获取分类专题分类
+     */
+    @GetMapping(value = "/selectFlQuestionInfo")
+    @ApiOperation("获取分类专题分类")
+    public Response<List<QuestionInfoFlVO>> selectFlQuestionInfo(@ModelAttribute QuestionInfoFlDTO questionInfoFlDTO) {
+        return Response.success(questionInfoService.selectFlQuestionInfo(questionInfoFlDTO));
+    }
+
+    /**
+     * 获取顺序练习分类
+     */
+    @GetMapping(value = "/selectSxQuestionInfo")
+    @ApiOperation("获取顺序练习分类")
+    public Response<List<QuestionInfoSxVO>> selectSxQuestionInfo(@ModelAttribute QuestionInfoFlDTO questionInfoFlDTO) {
+
+
+        return Response.success(questionInfoService.selectSxQuestionInfo(questionInfoFlDTO));
+    }
+
+
+    /**
+     * 查询题库列表(非会员)
+     */
+    @GetMapping("/normalList")
+    @ApiOperation("查询题库列表(非会员)")
+    public ResponsePageInfo<QuestionInfo> normalList(@ModelAttribute QuestionInfoDTO questionInfoDTO){
+        List<QuestionInfo> list = questionInfoService.selectNormalQuestionInfoList(questionInfoDTO);
+        return toResponsePageInfo(list);
+    }
+
+
+    /**
+     * 查询模拟考试题库
+     */
+    @GetMapping("/selectTestQuestionInfo")
+    @ApiOperation("查询模拟考试题库")
+    public ResponsePageInfo<QuestionInfo> selectTestQuestionInfo(@ModelAttribute QuestionInfoTestDTO questionInfoTestDTO){
+        List<QuestionInfo> list = questionInfoService.selectTestQuestionInfo(questionInfoTestDTO);
+        return toResponsePageInfo(list);
+    }
+
+
+    /**
+     * 查询免费题库
+     */
+    @GetMapping("/selectFreeQuestionInfo")
+    @ApiOperation("查询免费题库")
+    public ResponsePageInfo<QuestionInfo> selectFreeQuestionInfo(){
+        List<QuestionInfo> list = questionInfoService.selectFreeQuestionInfo();
+        return toResponsePageInfo(list);
+    }
 }
+

+ 64 - 342
sdjk-service/src/main/java/com/miaxis/question/domain/QuestionInfo.java

@@ -1,27 +1,24 @@
 package com.miaxis.question.domain;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.miaxis.common.annotation.Excel;
-import com.miaxis.common.core.domain.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
+import com.miaxis.common.annotation.Excel;
 import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
 /**
  * 题库对象 question_info
  *
  * @author miaxis
- * @date 2021-10-12
+ * @date 2021-10-20
  */
 @Data
 @TableName("question_info")
 @ApiModel(value = "QuestionInfo", description = "题库对象 question_info")
-public class QuestionInfo extends BaseBusinessEntity{
+public class QuestionInfo extends BaseBusinessEntity {
     private static final long serialVersionUID = 1L;
 
     /**  主键 */
@@ -29,6 +26,13 @@ public class QuestionInfo extends BaseBusinessEntity{
     @ApiModelProperty(value = " 主键")
     private Long id;
 
+    /** 一点通ID */
+    @Excel(name = "一点通ID")
+    @TableField("id_ydt")
+    @ApiModelProperty(value = "一点通ID")
+    private Long idYdt;
+
+
     /** 在所有题目中的序号 */
     @Excel(name = "在所有题目中的序号")
     @TableField("number")
@@ -125,52 +129,28 @@ public class QuestionInfo extends BaseBusinessEntity{
     @ApiModelProperty(value = "读题+答案语音URL")
     private String explainjsmp3;
 
-    /** 是否是科目一题目 */
-    @Excel(name = "是否是科目一题目")
-    @TableField("subject_1")
-    @ApiModelProperty(value = "是否是科目一题目")
-    private String subject1;
-
-    /** 是否是科目二题目 */
-    @Excel(name = "是否是科目二题目")
-    @TableField("subject_2")
-    @ApiModelProperty(value = "是否是科目二题目")
-    private String subject2;
-
-    /** 是否是科目三题目 */
-    @Excel(name = "是否是科目三题目")
-    @TableField("subject_3")
-    @ApiModelProperty(value = "是否是科目三题目")
-    private String subject3;
-
-    /** 是否是科目四题目 */
-    @Excel(name = "是否是科目四题目")
-    @TableField("subject_4")
-    @ApiModelProperty(value = "是否是科目四题目")
-    private String subject4;
-
-    /** 是否是C1\C2\C3驾驶证题目 */
-    @Excel(name = "是否是C1,C2,C3驾驶证题目")
+    /** 是否是C1,C2,C3驾驶证题目 */
+    @Excel(name = "是否是C1,C2,C3驾驶证题目")
     @TableField("lice_car")
-    @ApiModelProperty(value = "是否是C1,C2,C3驾驶证题目")
+    @ApiModelProperty(value = "是否是C1,C2,C3驾驶证题目")
     private String liceCar;
 
     /** 是否是A1\A3\B1驾驶证题目 */
-    @Excel(name = "是否是A1,A3,B1驾驶证题目")
+    @Excel(name = "是否是A1,A3,B1驾驶证题目")
     @TableField("lice_bus")
-    @ApiModelProperty(value = "是否是A1,A3,B1驾驶证题目")
+    @ApiModelProperty(value = "是否是A1,A3,B1驾驶证题目")
     private String liceBus;
 
     /** 是否是A2\B2驾驶证题目 */
-    @Excel(name = "是否是A2B2驾驶证题目")
+    @Excel(name = "是否是A2,B2驾驶证题目")
     @TableField("lice_truck")
-    @ApiModelProperty(value = "是否是A2B2驾驶证题目")
+    @ApiModelProperty(value = "是否是A2,B2驾驶证题目")
     private String liceTruck;
 
     /** 是否是D\E\F驾驶证题目 */
-    @Excel(name = "是否是D,E,F驾驶证题目")
+    @Excel(name = "是否是D,E,F驾驶证题目")
     @TableField("lice_moto")
-    @ApiModelProperty(value = "是否是D,E,F驾驶证题目")
+    @ApiModelProperty(value = "是否是D,E,F驾驶证题目")
     private String liceMoto;
 
     /** 顺序练习分类(包含科一到科四) */
@@ -197,17 +177,6 @@ public class QuestionInfo extends BaseBusinessEntity{
     @ApiModelProperty(value = "精选题(包含科一到科四)")
     private String excellIssue;
 
-    /** 是否是仿真考试题目 */
-    @Excel(name = "是否是仿真考试题目")
-    @TableField("copy_issue")
-    @ApiModelProperty(value = "是否是仿真考试题目")
-    private String copyIssue;
-
-    /** 是否是真实考场模拟题目 */
-    @Excel(name = "是否是真实考场模拟题目")
-    @TableField("mock_issue")
-    @ApiModelProperty(value = "是否是真实考场模拟题目")
-    private String mockIssue;
 
     /** 题目在顺序练习中所属的模块名称 */
     @Excel(name = "题目在顺序练习中所属的模块名称")
@@ -233,292 +202,45 @@ public class QuestionInfo extends BaseBusinessEntity{
     @ApiModelProperty(value = "题目在分类中所属的模块名称")
     private String classIssueName;
 
-    public void setId(Long id){
-        this.id = id;
-    }
-
-    public Long getId(){
-        return id;
-    }
-    public void setNumber(Long number){
-        this.number = number;
-    }
-
-    public Long getNumber(){
-        return number;
-    }
-    public void setAnswer(String answer){
-        this.answer = answer;
-    }
-
-    public String getAnswer(){
-        return answer;
-    }
-    public void setAnswerkeyword(String answerkeyword){
-        this.answerkeyword = answerkeyword;
-    }
-
-    public String getAnswerkeyword(){
-        return answerkeyword;
-    }
-    public void setExplainGif(String explainGif){
-        this.explainGif = explainGif;
-    }
-
-    public String getExplainGif(){
-        return explainGif;
-    }
-    public void setExplainJq(String explainJq){
-        this.explainJq = explainJq;
-    }
-
-    public String getExplainJq(){
-        return explainJq;
-    }
-    public void setExplainJs(String explainJs){
-        this.explainJs = explainJs;
-    }
-
-    public String getExplainJs(){
-        return explainJs;
-    }
-    public void setExplainMp3(String explainMp3){
-        this.explainMp3 = explainMp3;
-    }
-
-    public String getExplainMp3(){
-        return explainMp3;
-    }
-    public void setImage(String image){
-        this.image = image;
-    }
-
-    public String getImage(){
-        return image;
-    }
-    public void setImageYdt(String imageYdt){
-        this.imageYdt = imageYdt;
-    }
-
-    public String getImageYdt(){
-        return imageYdt;
-    }
-    public void setIssue(String issue){
-        this.issue = issue;
-    }
-
-    public String getIssue(){
-        return issue;
-    }
-    public void setOpts(String opts){
-        this.opts = opts;
-    }
-
-    public String getOpts(){
-        return opts;
-    }
-    public void setSkillkeyword(String skillkeyword){
-        this.skillkeyword = skillkeyword;
-    }
-
-    public String getSkillkeyword(){
-        return skillkeyword;
-    }
-    public void setTitlekeyword(String titlekeyword){
-        this.titlekeyword = titlekeyword;
-    }
-
-    public String getTitlekeyword(){
-        return titlekeyword;
-    }
-    public void setIssuemp3(String issuemp3){
-        this.issuemp3 = issuemp3;
-    }
-
-    public String getIssuemp3(){
-        return issuemp3;
-    }
-    public void setAnswermp3(String answermp3){
-        this.answermp3 = answermp3;
-    }
-
-    public String getAnswermp3(){
-        return answermp3;
-    }
-    public void setExplainjsmp3(String explainjsmp3){
-        this.explainjsmp3 = explainjsmp3;
-    }
-
-    public String getExplainjsmp3(){
-        return explainjsmp3;
-    }
-    public void setSubject1(String subject1){
-        this.subject1 = subject1;
-    }
-
-    public String getSubject1(){
-        return subject1;
-    }
-    public void setSubject2(String subject2){
-        this.subject2 = subject2;
-    }
-
-    public String getSubject2(){
-        return subject2;
-    }
-    public void setSubject3(String subject3){
-        this.subject3 = subject3;
-    }
-
-    public String getSubject3(){
-        return subject3;
-    }
-    public void setSubject4(String subject4){
-        this.subject4 = subject4;
-    }
-
-    public String getSubject4(){
-        return subject4;
-    }
-    public void setLiceCar(String liceCar){
-        this.liceCar = liceCar;
-    }
-
-    public String getLiceCar(){
-        return liceCar;
-    }
-    public void setLiceBus(String liceBus){
-        this.liceBus = liceBus;
-    }
-
-    public String getLiceBus(){
-        return liceBus;
-    }
-    public void setLiceTruck(String liceTruck){
-        this.liceTruck = liceTruck;
-    }
-
-    public String getLiceTruck(){
-        return liceTruck;
-    }
-    public void setLiceMoto(String liceMoto){
-        this.liceMoto = liceMoto;
-    }
-
-    public String getLiceMoto(){
-        return liceMoto;
-    }
-    public void setSequeIssue(String sequeIssue){
-        this.sequeIssue = sequeIssue;
-    }
-
-    public String getSequeIssue(){
-        return sequeIssue;
-    }
-    public void setClassIssue(String classIssue){
-        this.classIssue = classIssue;
-    }
-
-    public String getClassIssue(){
-        return classIssue;
-    }
-    public void setPlaceIssue(String placeIssue){
-        this.placeIssue = placeIssue;
-    }
-
-    public String getPlaceIssue(){
-        return placeIssue;
-    }
-    public void setExcellIssue(String excellIssue){
-        this.excellIssue = excellIssue;
-    }
-
-    public String getExcellIssue(){
-        return excellIssue;
-    }
-    public void setCopyIssue(String copyIssue){
-        this.copyIssue = copyIssue;
-    }
-
-    public String getCopyIssue(){
-        return copyIssue;
-    }
-    public void setMockIssue(String mockIssue){
-        this.mockIssue = mockIssue;
-    }
-
-    public String getMockIssue(){
-        return mockIssue;
-    }
-    public void setSequeIssueName(String sequeIssueName){
-        this.sequeIssueName = sequeIssueName;
-    }
-
-    public String getSequeIssueName(){
-        return sequeIssueName;
-    }
-    public void setPlaceIssueName(String placeIssueName){
-        this.placeIssueName = placeIssueName;
-    }
-
-    public String getPlaceIssueName(){
-        return placeIssueName;
-    }
-    public void setExcellIssueName(String excellIssueName){
-        this.excellIssueName = excellIssueName;
-    }
-
-    public String getExcellIssueName(){
-        return excellIssueName;
-    }
-    public void setClassIssueName(String classIssueName){
-        this.classIssueName = classIssueName;
-    }
-
-    public String getClassIssueName(){
-        return classIssueName;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("number", getNumber())
-            .append("answer", getAnswer())
-            .append("answerkeyword", getAnswerkeyword())
-            .append("explainGif", getExplainGif())
-            .append("explainJq", getExplainJq())
-            .append("explainJs", getExplainJs())
-            .append("explainMp3", getExplainMp3())
-            .append("image", getImage())
-            .append("imageYdt", getImageYdt())
-            .append("issue", getIssue())
-            .append("opts", getOpts())
-            .append("skillkeyword", getSkillkeyword())
-            .append("titlekeyword", getTitlekeyword())
-            .append("issuemp3", getIssuemp3())
-            .append("answermp3", getAnswermp3())
-            .append("explainjsmp3", getExplainjsmp3())
-            .append("subject1", getSubject1())
-            .append("subject2", getSubject2())
-            .append("subject3", getSubject3())
-            .append("subject4", getSubject4())
-            .append("liceCar", getLiceCar())
-            .append("liceBus", getLiceBus())
-            .append("liceTruck", getLiceTruck())
-            .append("liceMoto", getLiceMoto())
-            .append("sequeIssue", getSequeIssue())
-            .append("classIssue", getClassIssue())
-            .append("placeIssue", getPlaceIssue())
-            .append("excellIssue", getExcellIssue())
-            .append("copyIssue", getCopyIssue())
-            .append("mockIssue", getMockIssue())
-            .append("sequeIssueName", getSequeIssueName())
-            .append("placeIssueName", getPlaceIssueName())
-            .append("excellIssueName", getExcellIssueName())
-            .append("classIssueName", getClassIssueName())
-            .append("createTime", getCreateTime())
-            .append("updateTime", getUpdateTime())
-            .toString();
-    }
+
+    /** 题目类型 */
+    @Excel(name = "题目类型")
+    @TableField("question_type")
+    @ApiModelProperty(value = "题目类型 1判断,2选择,3多选")
+    private Integer questionType;
+
+
+    /** 题目类型 */
+    @Excel(name = "题目类型")
+    @TableField("question_type")
+    @ApiModelProperty(value = "题目类型 1判断,2选择,3多选")
+    private Integer subject;
+
+    /** 分类练习排序字段 */
+    @Excel(name = "分类练习排序字段")
+    @TableField("class_sort")
+    @ApiModelProperty(value = "分类练习排序字段")
+    private Integer classSort;
+
+    /** 精选考题排序字段 */
+    @Excel(name = "精选考题排序字段")
+    @TableField("excell_sort")
+    @ApiModelProperty(value = "精选考题排序字段")
+    private Integer excellSort;
+
+
+    /** 顺序练习排序字段 */
+    @Excel(name = "顺序练习排序字段")
+    @TableField("seque_sort")
+    @ApiModelProperty(value = "顺序练习排序字段")
+    private Integer sequeSort;
+
+
+    /** 地方专题排序字段 */
+    @Excel(name = "地方专题排序字段")
+    @TableField("place_sort")
+    @ApiModelProperty(value = "地方专题排序字段")
+    private Integer placeSort;
+
+
 }

+ 190 - 0
sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoDTO.java

@@ -0,0 +1,190 @@
+package com.miaxis.question.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 题库对象 question_info
+ *
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+@TableName("question_info")
+@ApiModel(value = "QuestionInfo", description = "题库对象 question_info")
+public class QuestionInfoDTO extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**  主键 */
+    @ApiModelProperty(value = " 主键")
+    private Long id;
+
+    /** 在所有题目中的序号 */
+    @ApiModelProperty(value = "在所有题目中的序号")
+    private Long number;
+
+    /** 正确答案 */
+    @ApiModelProperty(value = "正确答案")
+    private String answer;
+
+    /** 答案关键词 */
+    @ApiModelProperty(value = "答案关键词")
+    private String answerkeyword;
+
+    /** 技巧讲解图片URL */
+    @ApiModelProperty(value = "技巧讲解图片URL")
+    private String explainGif;
+
+    /** 技巧讲解说明 */
+    @ApiModelProperty(value = "技巧讲解说明")
+    private String explainJq;
+
+    /** 官方解释 */
+    @ApiModelProperty(value = "官方解释")
+    private String explainJs;
+
+    /** 技巧讲解语音URL */
+    @ApiModelProperty(value = "技巧讲解语音URL")
+    private String explainMp3;
+
+    /** 题目图片URL */
+    @ApiModelProperty(value = "题目图片URL")
+    private String image;
+
+    /** 题目图片URL2 */
+    @ApiModelProperty(value = "题目图片URL2")
+    private String imageYdt;
+
+    /** 题目 */
+    @ApiModelProperty(value = "题目")
+    private String issue;
+
+    /** 答案选项 */
+    @ApiModelProperty(value = "答案选项")
+    private String opts;
+
+    /** 答题技巧关键词 */
+    @ApiModelProperty(value = "答题技巧关键词")
+    private String skillkeyword;
+
+    /** 题目关键词 */
+    @ApiModelProperty(value = "题目关键词")
+    private String titlekeyword;
+
+    /** 读题语音URL */
+    @ApiModelProperty(value = "读题语音URL")
+    private String issuemp3;
+
+    /** 答案语音URL */
+    @ApiModelProperty(value = "答案语音URL")
+    private String answermp3;
+
+    /** 读题+答案语音URL */
+    @ApiModelProperty(value = "读题+答案语音URL")
+    private String explainjsmp3;
+
+
+    /** 是否是C1,C2,C3驾驶证题目 */
+    @ApiModelProperty(value = "是否是C1,C2,C3驾驶证题目")
+    private String liceCar;
+
+    /** 是否是A1\A3\B1驾驶证题目 */
+    @ApiModelProperty(value = "是否是A1,A3,B1驾驶证题目")
+    private String liceBus;
+
+    /** 是否是A2\B2驾驶证题目 */
+    @ApiModelProperty(value = "是否是A2,B2驾驶证题目")
+    private String liceTruck;
+
+    /** 是否是D\E\F驾驶证题目 */
+    @ApiModelProperty(value = "是否是D,E,F驾驶证题目")
+    private String liceMoto;
+
+    /** 顺序练习分类(包含科一到科四) */
+    @ApiModelProperty(value = "顺序练习分类 0否 1是")
+    private String sequeIssue;
+
+    /** 分类练习(包含科一到科四) */
+    @ApiModelProperty(value = "分类练习 0否 1是")
+    private String classIssue;
+
+    /** 地方专题(包含科一到科四) */
+    @ApiModelProperty(value = "地方专题 0否 1是")
+    private String placeIssue;
+
+    /** 精选题(包含科一到科四) */
+    @ApiModelProperty(value = "精选题 0否 1是")
+    private String excellIssue;
+
+    /** 是否是仿真考试题目 */
+    @ApiModelProperty(value = "是否是仿真考试题目")
+    private String copyIssue;
+
+    /** 是否是真实考场模拟题目 */
+    @ApiModelProperty(value = "是否是真实考场模拟题目")
+    private String mockIssue;
+
+    /** 题目在顺序练习中所属的模块名称 */
+    @ApiModelProperty(value = "题目在顺序练习中所属的模块名称")
+    private String sequeIssueName;
+
+    /** 题目在地方专题中所属的模块名称 */
+    @ApiModelProperty(value = "题目在地方专题中所属的模块名称")
+    private String placeIssueName;
+
+    /** 题目在精选中所属的模块名称 */
+    @ApiModelProperty(value = "题目在精选中所属的模块名称")
+    private String excellIssueName;
+
+    /** 题目在分类中所属的模块名称 */
+    @ApiModelProperty(value = "题目在分类中所属的模块名称")
+    private String classIssueName;
+
+    /** 是否随机 */
+    @ApiModelProperty(value = "是否随机")
+    private String isRand;
+
+
+    /** 题目类型 */
+    @ApiModelProperty(value = "题目类型 1判断,2选择,3多选")
+    private Integer questionType;
+
+
+    /** 科目 */
+    @ApiModelProperty(value = "科目")
+    private Integer subject;
+
+//    /** 分类练习排序字段 */
+//    @ApiModelProperty(value = "分类练习排序字段")
+//    private Integer classSort;
+//
+//    /** 精选考题排序字段 */
+//    @ApiModelProperty(value = "精选考题排序字段")
+//    private Integer excellSort;
+//
+//
+//    /** 顺序练习排序字段 */
+//    @ApiModelProperty(value = "顺序练习排序字段")
+//    private Integer sequeSort;
+//
+//
+//    /** 地方专题排序字段 */
+//    @ApiModelProperty(value = "地方专题排序字段")
+//    private Integer placeSort;
+
+    /** 排序字段  1:分类练习:class_sort;2:精选考题:excell_sort;3:顺序练习:seque_sort;4:地方专题:place_sort;*/
+    @ApiModelProperty(value = "1:分类练习;2:精选考题;3:顺序练习;4:地方专题;")
+    private Integer sort;
+
+    /**
+     * 1:分类练习:class_sort;2:精选考题:excell_sort;3:顺序练习:seque_sort;4:地方专题:place_sort;
+     */
+    @ApiModelProperty(value = "分类字段名",hidden = true)
+    private String sortName;
+
+
+
+}

+ 64 - 0
sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoFlDTO.java

@@ -0,0 +1,64 @@
+package com.miaxis.question.dto;
+
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+@ApiModel(value = "QuestionInfoFlDTO", description = "返回精选分类")
+public class QuestionInfoFlDTO extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+
+
+    /** 是否是C1,C2,C3驾驶证题目 */
+    @ApiModelProperty(value = "是否是C1,C2,C3驾驶证题目 1:是 2:否")
+    private String liceCar;
+
+    /** 是否是A1\A3\B1驾驶证题目 */
+    @ApiModelProperty(value = "是否是A1,A3,B1驾驶证题目 1:是 2:否")
+    private String liceBus;
+
+    /** 是否是A2\B2驾驶证题目 */
+    @ApiModelProperty(value = "是否是A2,B2驾驶证题目 1:是 2:否")
+    private String liceTruck;
+
+    /** 是否是D\E\F驾驶证题目 */
+    @ApiModelProperty(value = "是否是D,E,F驾驶证题目 1:是 2:否")
+    private String liceMoto;
+
+    /** 科目 */
+    @ApiModelProperty(value = "科目")
+    private Integer subject;
+
+    /** 模块名称 */
+    @ApiModelProperty(value = "模块名称(模糊查询)")
+    private String excellIssueName;
+
+    /** 分类练习排序字段 */
+    @ApiModelProperty(value = "分类练习排序字段")
+    private Integer classSort;
+
+    /** 精选考题排序字段 */
+    @ApiModelProperty(value = "精选考题排序字段")
+    private Integer excellSort;
+
+
+    /** 顺序练习排序字段 */
+    @ApiModelProperty(value = "顺序练习排序字段")
+    private Integer sequeSort;
+
+
+    /** 地方专题排序字段 */
+    @ApiModelProperty(value = "地方专题排序字段")
+    private Integer placeSort;
+
+
+
+}

+ 27 - 0
sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoFreeDTO.java

@@ -0,0 +1,27 @@
+package com.miaxis.question.dto;
+
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 地方题选分类返回对象
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+@ApiModel(value = "QuestionInfoTestDTO", description = "模拟考试输入对象")
+public class QuestionInfoFreeDTO extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(hidden = true)
+    private Integer questionType;
+
+    @ApiModelProperty(hidden = true)
+    private Integer num;
+
+    @ApiModelProperty(value = "科目")
+    private Integer subject;
+}

+ 39 - 0
sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoSortDTO.java

@@ -0,0 +1,39 @@
+package com.miaxis.question.dto;
+
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 题库对象 question_info
+ *
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+public class QuestionInfoSortDTO extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    /**  主键 */
+    @ApiModelProperty(value = "科目")
+    private String subject;
+
+    @ApiModelProperty(value = "类型参数: 1--按分类专题分类,2--按精选专题分类,3--按地方专题分类,4--按顺序练习分类")
+    private Integer  issueTypeValue;
+
+    /** 正确答案 */
+    @ApiModelProperty(value = "分类id值")
+    private String issueValue;
+
+    @ApiModelProperty(value = "分类字段名",hidden = true)
+    private String issueTypeParmName;
+
+    @ApiModelProperty(value = "排序字段名",hidden = true)
+    private String sortName;
+
+    @ApiModelProperty(value = "题目名称")
+    private String issue;
+
+
+}

+ 30 - 0
sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoSortUpateDTO.java

@@ -0,0 +1,30 @@
+package com.miaxis.question.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 题库对象 question_info
+ *
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+public class QuestionInfoSortUpateDTO {
+    private static final long serialVersionUID = 1L;
+    /**  主键 */
+    @ApiModelProperty(value = "题目id")
+    private Long id;
+
+    /** 在所有题目中的序号 */
+    @ApiModelProperty(value = "类型参数: 1--按分类专题分类,2--按精选专题分类,3--按地方专题分类,4--按顺序练习分类")
+    private Integer  issueTypeValue;
+
+    /** 正确答案 */
+    @ApiModelProperty(value = "排序")
+    private String sort;
+
+    @ApiModelProperty(value = "排序字段名",hidden = true)
+    private String sortName;
+
+}

+ 44 - 0
sdjk-service/src/main/java/com/miaxis/question/dto/QuestionInfoTestDTO.java

@@ -0,0 +1,44 @@
+package com.miaxis.question.dto;
+
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 地方题选分类返回对象
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+@ApiModel(value = "QuestionInfoTestDTO", description = "模拟考试输入对象")
+public class QuestionInfoTestDTO extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "科目")
+    private Integer subject;
+
+    @ApiModelProperty(value = "是否小车 1:是 否:空")
+    private String liceCar;
+
+    @ApiModelProperty(value = "是否客车 1:是 否:空")
+    private String liceBus;
+
+    @ApiModelProperty(value = "是否货车 1:是 否:空")
+    private String liceTruck;
+
+    @ApiModelProperty(value = "是否摩托车 1:是 否:空")
+    private String liceMoto;
+
+    @ApiModelProperty(hidden = true)
+    private String excellIssueName;
+
+
+    @ApiModelProperty(hidden = true)
+    private Integer questionType;
+
+    @ApiModelProperty(hidden = true)
+    private Integer num;
+
+}

+ 42 - 2
sdjk-service/src/main/java/com/miaxis/question/mapper/QuestionInfoMapper.java

@@ -3,6 +3,8 @@ package com.miaxis.question.mapper;
 import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.miaxis.question.domain.QuestionInfo;
+import com.miaxis.question.dto.*;
+import com.miaxis.question.vo.*;
 
 /**
  * 题库Mapper接口
@@ -14,9 +16,47 @@ public interface QuestionInfoMapper extends BaseMapper<QuestionInfo> {
     /**
      * 查询题库列表
      *
-     * @param questionInfo 题库
+     * @param
      * @return 题库集合
      */
-    public List<QuestionInfo> selectQuestionInfoList(QuestionInfo questionInfo);
+    List<QuestionInfo> selectQuestionInfoList(QuestionInfoDTO questionInfoDTO);
+
+    List<QuestionInfo> selectQuestionInfoListIds(Long[] ids);
+
+    List<QuestionInfoJxVO> selectJxQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO);
+
+    List<QuestionInfoSxVO> selectSxQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO);
+
+    List<QuestionInfoDfVO> selectDfQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO);
+
+    List<QuestionInfoFlVO> selectFlQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO);
+
+    List<QuestionInfo> selectNormalQuestionInfoList(QuestionInfoDTO questionInfoDTO);
+
+    List<QuestionInfoExcelTypeVo> selectIssueType1(int subject);
+
+    List<QuestionInfoExcelVo> selecQuestionInfoExcel1(String issueType);
+
+    List<QuestionInfoExcelTypeVo> selectIssueType2(int subject);
+
+    List<QuestionInfoExcelVo> selecQuestionInfoExcel2(String issueType);
+
+    List<QuestionInfoExcelTypeVo> selectIssueType3(int subject);
+
+    List<QuestionInfoExcelVo> selecQuestionInfoExcel3(String issueType);
+
+    List<QuestionInfoExcelTypeVo> selectIssueType4(int subject);
+
+    List<QuestionInfoExcelVo> selecQuestionInfoExcel4(String issueType);
+
+    List<QuestionInfoExcelVo> selectQuestionInfoSortList(QuestionInfoSortDTO questionInfoSortDTO);
+
+    void updateSortById(QuestionInfoSortUpateDTO dto);
+
+    List<QuestionInfo> selectTestQuestionInfoList(QuestionInfoTestDTO questionInfoTestDTO);
+
+    List<QuestionInfo> selectFreeQuestionInfoList(QuestionInfoFreeDTO freeDTO);
+
+    List<QuestionInfo> selectQuestionInfoListByYdtIds(Long[] ids);
 
 }

+ 34 - 5
sdjk-service/src/main/java/com/miaxis/question/service/IQuestionInfoService.java

@@ -1,21 +1,50 @@
 package com.miaxis.question.service;
 
-import java.util.List;
-import com.miaxis.question.domain.QuestionInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.question.domain.QuestionInfo;
+import com.miaxis.question.dto.*;
+import com.miaxis.question.vo.*;
+
+import java.util.List;
 
 /**
  * 题库Service接口
  *
  * @author miaxis
- * @date 2021-10-12
+ * @date 2021-10-20
  */
 public interface IQuestionInfoService extends IService<QuestionInfo>{
     /**
      * 查询题库列表
      *
-     * @param questionInfo 题库
+     * @param
      * @return 题库集合
      */
-    public List<QuestionInfo> selectQuestionInfoList(QuestionInfo questionInfo);
+    List<QuestionInfo> selectQuestionInfoList(QuestionInfoDTO questionInfoDTO);
+
+    List<QuestionInfo> selectQuestionInfoListByIds(Long[] ids);
+
+    List<QuestionInfoJxVO> selectJxQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO);
+
+    List<QuestionInfoDfVO> selectDfQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO);
+
+    List<QuestionInfoFlVO> selectFlQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO);
+
+    List<QuestionInfo> selectNormalQuestionInfoList(QuestionInfoDTO questionInfoDTO);
+
+    List<QuestionInfoSxVO> selectSxQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO);
+
+    List<QuestionInfoExcelVo> selectQuestionInfoSortList(QuestionInfoSortDTO questionInfoSortDTO);
+
+    void updateSortById(QuestionInfoSortUpateDTO dto);
+
+    List<QuestionInfoExcelTypeVo> getIssueTypes(int issueTypeValue, Integer typeValue);
+
+    List<QuestionInfo> selectTestQuestionInfo(QuestionInfoTestDTO questionInfoTestDTO);
+
+    List<QuestionInfo> selectFreeQuestionInfo();
+
+    List<QuestionInfo> selectQuestionInfoListByYdtIds(Long[] ids);
+
 }
+

+ 194 - 7
sdjk-service/src/main/java/com/miaxis/question/service/impl/QuestionInfoServiceImpl.java

@@ -2,12 +2,11 @@ package com.miaxis.question.service.impl;
 
 import java.util.List;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.miaxis.common.utils.DateUtils;
+import com.miaxis.common.exception.CustomException;
+import com.miaxis.question.dto.*;
+import com.miaxis.question.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.apache.commons.lang3.StringUtils;
 import com.miaxis.question.mapper.QuestionInfoMapper;
 import com.miaxis.question.domain.QuestionInfo;
 import com.miaxis.question.service.IQuestionInfoService;
@@ -26,11 +25,199 @@ public class QuestionInfoServiceImpl extends ServiceImpl<QuestionInfoMapper, Que
     /**
      * 查询题库列表
      *
-     * @param questionInfo 题库
+     * @param
      * @return 题库
      */
     @Override
-    public List<QuestionInfo> selectQuestionInfoList(QuestionInfo questionInfo){
-        return questionInfoMapper.selectQuestionInfoList(questionInfo);
+    public List<QuestionInfo> selectQuestionInfoList(QuestionInfoDTO questionInfoDTO){
+
+        //1:分类练习:class_sort;2:精选考题:excell_sort;3:地方专题:place_sort;4:顺序练习:seque_sort;
+        Integer sort = questionInfoDTO.getSort();
+        if(sort!=null) {
+            switch (sort){
+                case 1:
+                    questionInfoDTO.setSortName("class_sort");
+                    break;
+                case 2:
+                    questionInfoDTO.setSortName("excell_sort");
+                    break;
+                case 3:
+                    questionInfoDTO.setSortName("place_sort");
+                    break;
+                case 4:
+                    questionInfoDTO.setSortName("seque_sort");
+                    break;
+                default:
+                    throw new CustomException("请正常输入sort字段");
+            }
+        }
+        return questionInfoMapper.selectQuestionInfoList(questionInfoDTO);
+    }
+
+    @Override
+    public List<QuestionInfo> selectQuestionInfoListByIds(Long[] ids) {
+        return questionInfoMapper.selectQuestionInfoListIds(ids);
+    }
+
+    @Override
+    public List<QuestionInfo> selectQuestionInfoListByYdtIds(Long[] ids) {
+        return questionInfoMapper.selectQuestionInfoListByYdtIds(ids);
+    }
+
+    @Override
+    public List<QuestionInfoJxVO> selectJxQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO) {
+        return questionInfoMapper.selectJxQuestionInfo(questionInfoFlDTO);
+    }
+
+    @Override
+    public List<QuestionInfoDfVO> selectDfQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO) {
+        return questionInfoMapper.selectDfQuestionInfo(questionInfoFlDTO);
+    }
+
+    @Override
+    public List<QuestionInfoFlVO> selectFlQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO) {
+        return questionInfoMapper.selectFlQuestionInfo(questionInfoFlDTO);
+    }
+
+    @Override
+    public List<QuestionInfo> selectNormalQuestionInfoList(QuestionInfoDTO questionInfoDTO) {
+        return questionInfoMapper.selectNormalQuestionInfoList(questionInfoDTO);
+    }
+
+    @Override
+    public List<QuestionInfoSxVO> selectSxQuestionInfo(QuestionInfoFlDTO questionInfoFlDTO) {
+        return questionInfoMapper.selectSxQuestionInfo(questionInfoFlDTO);
+    }
+
+    @Override
+    public List<QuestionInfoExcelVo> selectQuestionInfoSortList(QuestionInfoSortDTO questionInfoSortDTO) {
+        return questionInfoMapper.selectQuestionInfoSortList(questionInfoSortDTO);
+    }
+
+    @Override
+    public void updateSortById(QuestionInfoSortUpateDTO dto) {
+        questionInfoMapper.updateSortById(dto);
+    }
+
+    @Override
+    public List<QuestionInfoExcelTypeVo> getIssueTypes(int issueTypeValue, Integer subject) {
+        if (issueTypeValue == 1){
+            return questionInfoMapper.selectIssueType1(subject);
+        }
+        if (issueTypeValue == 2){
+            return questionInfoMapper.selectIssueType2(subject);
+        }
+        if (issueTypeValue == 3){
+            return questionInfoMapper.selectIssueType3(subject);
+        }
+        if (issueTypeValue == 4){
+            return questionInfoMapper.selectIssueType4(subject);
+        }
+        return null;
+
+
+
+    }
+
+    @Override
+    public List<QuestionInfo> selectTestQuestionInfo(QuestionInfoTestDTO questionInfoTestDTO) {
+
+
+        if("1".equals(questionInfoTestDTO.getLiceMoto())) {
+            if(questionInfoTestDTO.getSubject()==1){
+                questionInfoTestDTO.setQuestionType(1);
+                questionInfoTestDTO.setNum(20);
+                List<QuestionInfo> list1 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+                questionInfoTestDTO.setQuestionType(2);
+                questionInfoTestDTO.setNum(30);
+                List<QuestionInfo> list2 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+                list1.addAll(list2);
+                return list1;
+            } else if (questionInfoTestDTO.getSubject()==4) {
+                questionInfoTestDTO.setQuestionType(1);
+                questionInfoTestDTO.setNum(20);
+                List<QuestionInfo> list1 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+                questionInfoTestDTO.setQuestionType(2);
+                questionInfoTestDTO.setNum(20);
+                List<QuestionInfo> list2 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+                questionInfoTestDTO.setQuestionType(3);
+                questionInfoTestDTO.setNum(10);
+                List<QuestionInfo> list3 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+                list1.addAll(list2);
+                list1.addAll(list3);
+                return list1;
+            }
+        } else {
+            if(questionInfoTestDTO.getSubject()==1){
+                //旧判断20题
+                questionInfoTestDTO.setQuestionType(1);
+                questionInfoTestDTO.setNum(20);
+                questionInfoTestDTO.setExcellIssueName("必");
+                List<QuestionInfo> list1 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+                //新判断20题
+                questionInfoTestDTO.setQuestionType(1);
+                questionInfoTestDTO.setNum(20);
+                questionInfoTestDTO.setExcellIssueName("新");
+                List<QuestionInfo> list2 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+                //旧选择50题
+                questionInfoTestDTO.setQuestionType(2);
+                questionInfoTestDTO.setNum(50);
+                questionInfoTestDTO.setExcellIssueName("必");
+                List<QuestionInfo> list3 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+                //新选择10题
+                questionInfoTestDTO.setQuestionType(2);
+                questionInfoTestDTO.setNum(10);
+                questionInfoTestDTO.setExcellIssueName("新");
+                List<QuestionInfo> list4 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+
+                list1.addAll(list2);
+                list1.addAll(list3);
+                list1.addAll(list4);
+                return list1;
+            } else if (questionInfoTestDTO.getSubject()==4) {
+                questionInfoTestDTO.setQuestionType(1);
+                questionInfoTestDTO.setNum(20);
+                questionInfoTestDTO.setExcellIssueName("必");
+                List<QuestionInfo> list1 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+
+                questionInfoTestDTO.setQuestionType(1);
+                questionInfoTestDTO.setNum(10);
+                questionInfoTestDTO.setExcellIssueName("新");
+                List<QuestionInfo> list2 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+
+                questionInfoTestDTO.setQuestionType(2);
+                questionInfoTestDTO.setNum(10);
+                questionInfoTestDTO.setExcellIssueName("必");
+                List<QuestionInfo> list3 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+
+                questionInfoTestDTO.setQuestionType(3);
+                questionInfoTestDTO.setNum(10);
+                questionInfoTestDTO.setExcellIssueName("必");
+                List<QuestionInfo> list4 = questionInfoMapper.selectTestQuestionInfoList(questionInfoTestDTO);
+                list1.addAll(list2);
+                list1.addAll(list3);
+                list1.addAll(list4);
+                return list1;
+            }
+        }
+        return null;
+    }
+
+
+    @Override
+    public List<QuestionInfo> selectFreeQuestionInfo() {
+        QuestionInfoFreeDTO freeDTO =  new QuestionInfoFreeDTO();
+        freeDTO.setNum(10);
+        freeDTO.setQuestionType(1);
+        freeDTO.setSubject(1);
+        List<QuestionInfo> list1 = questionInfoMapper.selectFreeQuestionInfoList(freeDTO);
+        freeDTO.setQuestionType(2);
+        List<QuestionInfo> list2 = questionInfoMapper.selectFreeQuestionInfoList(freeDTO);
+        freeDTO.setSubject(4);
+        freeDTO.setQuestionType(3);
+        List<QuestionInfo> list3 = questionInfoMapper.selectFreeQuestionInfoList(freeDTO);
+        list1.addAll(list2);
+        list1.addAll(list3);
+        return list1;
     }
 }

+ 29 - 0
sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoDfVO.java

@@ -0,0 +1,29 @@
+package com.miaxis.question.vo;
+
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 地方题选分类返回对象
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+@ApiModel(value = "QuestionInfoDfVO", description = "地方题选分类返回对象")
+public class QuestionInfoDfVO extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "地方题(包含科一到科四)")
+    private String placeIssue;
+
+    /** 题目在地方中所属的模块名称 */
+    @ApiModelProperty(value = "题目在地方中所属的模块名称")
+    private String placeIssueName;
+
+
+
+
+}

+ 29 - 0
sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoExcelTypeVo.java

@@ -0,0 +1,29 @@
+package com.miaxis.question.vo;
+
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 分类专题分类返回对象
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+@ApiModel(value = "QuestionInfoExcelVo", description = "分类专题分类返回对象")
+public class QuestionInfoExcelTypeVo extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "分类题(包含科一到科四)")
+    private String  title;
+
+    /** 题目在地方中所属的模块名称 */
+    @ApiModelProperty(value = "题目在分类中所属的模块名称")
+    private String typeId;
+
+
+
+
+}

+ 52 - 0
sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoExcelVo.java

@@ -0,0 +1,52 @@
+package com.miaxis.question.vo;
+
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 分类专题分类返回对象
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+@ApiModel(value = "QuestionInfoExcelVo", description = "")
+public class QuestionInfoExcelVo extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty("题目id")
+    private long id;
+
+    @ApiModelProperty("快通id")
+    private long idKt;
+
+    @ApiModelProperty("一点通id")
+    private long idYdt;
+
+    @ApiModelProperty("在所有题目中的序号")
+    private Integer number;
+
+    @ApiModelProperty("题目图片URL")
+    private String image;
+    @ApiModelProperty("题目")
+    private String issue;
+
+    @ApiModelProperty("精选模块名称")
+    private String excellIssueName;
+    @ApiModelProperty("地方专题模块名称")
+    private String placeIssueName;
+    @ApiModelProperty("分类模块名称")
+    private String classIssueName;
+    @ApiModelProperty("顺序联系模块名称")
+    private String sequeIssueName;
+    @ApiModelProperty("题目类型 1判断题 2选择题 3多选")
+    private String questionType;
+    @ApiModelProperty("排序")
+    private Integer sort;
+
+
+
+
+}

+ 29 - 0
sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoFlVO.java

@@ -0,0 +1,29 @@
+package com.miaxis.question.vo;
+
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 分类专题分类返回对象
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+@ApiModel(value = "QuestionInfoDfVO", description = "分类专题分类返回对象")
+public class QuestionInfoFlVO extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "分类题(包含科一到科四)")
+    private String classIssue;
+
+    /** 题目在地方中所属的模块名称 */
+    @ApiModelProperty(value = "题目在分类中所属的模块名称")
+    private String classIssueName;
+
+
+
+
+}

+ 29 - 0
sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoJxVO.java

@@ -0,0 +1,29 @@
+package com.miaxis.question.vo;
+
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 精选选分类返回对象
+ *
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+@ApiModel(value = "QuestionInfoJxVO", description = "题库分类查询对象")
+public class QuestionInfoJxVO extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "精选题(包含科一到科四)")
+    private String excellIssue;
+
+    @ApiModelProperty(value = "题目在精选中所属的模块名称")
+    private String excellIssueName;
+
+
+
+
+}

+ 29 - 0
sdjk-service/src/main/java/com/miaxis/question/vo/QuestionInfoSxVO.java

@@ -0,0 +1,29 @@
+package com.miaxis.question.vo;
+
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 精选选分类返回对象
+ *
+ * @author miaxis
+ * @date 2021-10-20
+ */
+@Data
+@ApiModel(value = "QuestionInfoJxVO", description = "题库分类查询对象")
+public class QuestionInfoSxVO extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "精选题(包含科一到科四)")
+    private String sequeIssue;
+
+    @ApiModelProperty(value = "题目在精选中所属的模块名称")
+    private String sequeIssueName;
+
+
+
+
+}

+ 308 - 15
sdjk-service/src/main/resources/mapper/question/QuestionInfoMapper.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.miaxis.question.mapper.QuestionInfoMapper">
 
     <resultMap type="QuestionInfo" id="QuestionInfoResult">
@@ -22,10 +22,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="issuemp3"    column="issuemp3"    />
         <result property="answermp3"    column="answermp3"    />
         <result property="explainjsmp3"    column="explainjsmp3"    />
-        <result property="subject1"    column="subject_1"    />
-        <result property="subject2"    column="subject_2"    />
-        <result property="subject3"    column="subject_3"    />
-        <result property="subject4"    column="subject_4"    />
         <result property="liceCar"    column="lice_car"    />
         <result property="liceBus"    column="lice_bus"    />
         <result property="liceTruck"    column="lice_truck"    />
@@ -34,21 +30,65 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="classIssue"    column="class_issue"    />
         <result property="placeIssue"    column="place_issue"    />
         <result property="excellIssue"    column="excell_issue"    />
-        <result property="copyIssue"    column="copy_issue"    />
-        <result property="mockIssue"    column="mock_issue"    />
         <result property="sequeIssueName"    column="seque_issue_name"    />
         <result property="placeIssueName"    column="place_issue_name"    />
         <result property="excellIssueName"    column="excell_issue_name"    />
         <result property="classIssueName"    column="class_issue_name"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateTime"    column="update_time"    />
+        <result property="subject"    column="subject"    />
+        <result property="classSort"    column="class_sort"    />
+        <result property="excellSort"    column="excell_sort"    />
+        <result property="sequeSort"    column="seque_sort"    />
+        <result property="placeSort"    column="place_sort"    />
+
+
     </resultMap>
 
     <sql id="selectQuestionInfoVo">
         select * from question_info
     </sql>
 
-    <select id="selectQuestionInfoList" parameterType="QuestionInfo" resultMap="QuestionInfoResult">
+    <select id="selectQuestionInfoList" parameterType="QuestionInfoDTO" resultMap="QuestionInfoResult">
+        <include refid="selectQuestionInfoVo"/>
+        <where>
+            <if test="number != null "> and number = #{number}</if>
+            <if test="answer != null  and answer != ''"> and answer = #{answer}</if>
+            <if test="answerkeyword != null  and answerkeyword != ''"> and answerkeyword = #{answerkeyword}</if>
+            <if test="explainGif != null  and explainGif != ''"> and explain_gif = #{explainGif}</if>
+            <if test="explainJq != null  and explainJq != ''"> and explain_jq = #{explainJq}</if>
+            <if test="explainJs != null  and explainJs != ''"> and explain_js = #{explainJs}</if>
+            <if test="explainMp3 != null  and explainMp3 != ''"> and explain_mp3 = #{explainMp3}</if>
+            <if test="image != null  and image != ''"> and image = #{image}</if>
+            <if test="imageYdt != null  and imageYdt != ''"> and image_ydt = #{imageYdt}</if>
+            <if test="issue != null  and issue != ''"> and issue = #{issue}</if>
+            <if test="opts != null  and opts != ''"> and opts = #{opts}</if>
+            <if test="skillkeyword != null  and skillkeyword != ''"> and skillkeyword = #{skillkeyword}</if>
+            <if test="titlekeyword != null  and titlekeyword != ''"> and titlekeyword = #{titlekeyword}</if>
+            <if test="issuemp3 != null  and issuemp3 != ''"> and issuemp3 = #{issuemp3}</if>
+            <if test="answermp3 != null  and answermp3 != ''"> and answermp3 = #{answermp3}</if>
+            <if test="explainjsmp3 != null  and explainjsmp3 != ''"> and explainjsmp3 = #{explainjsmp3}</if>
+            <if test="liceCar != null  and liceCar != ''"> and lice_car = #{liceCar}</if>
+            <if test="liceBus != null  and liceBus != ''"> and lice_bus = #{liceBus}</if>
+            <if test="liceTruck != null  and liceTruck != ''"> and lice_truck = #{liceTruck}</if>
+            <if test="liceMoto != null  and liceMoto != ''"> and lice_moto = #{liceMoto}</if>
+            <if test="sequeIssue != null  and sequeIssue != ''"> and seque_issue = #{sequeIssue}</if>
+            <if test="classIssue != null  and classIssue != ''"> and class_issue = #{classIssue}</if>
+            <if test="placeIssue != null  and placeIssue != ''"> and place_issue = #{placeIssue}</if>
+            <if test="excellIssue != null  and excellIssue != ''"> and excell_issue = #{excellIssue}</if>
+            <if test="sequeIssueName != null  and sequeIssueName != ''"> and seque_issue_name like concat('%', #{sequeIssueName}, '%')</if>
+            <if test="placeIssueName != null  and placeIssueName != ''"> and place_issue_name like concat('%', #{placeIssueName}, '%')</if>
+            <if test="excellIssueName != null  and excellIssueName != ''"> and excell_issue_name like concat('%', #{excellIssueName}, '%')</if>
+            <if test="questionType != null "> and question_type = #{questionType}</if>
+            <if test="subject != null  and subject != ''"> and subject = #{subject}</if>
+        </where>
+
+        <if test="isRand!=null and isRand!=''"> order by rand() </if>
+        <if test="isRand==null or isRand=='' and  sort!=null and sort!='' "> order by IFNULL(${sortName},10000) </if>
+    </select>
+
+
+    <select id="selectNormalQuestionInfoList" parameterType="QuestionInfoDTO" resultMap="QuestionInfoResult">
         <include refid="selectQuestionInfoVo"/>
         <where>
             <if test="number != null "> and number = #{number}</if>
@@ -67,10 +107,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="issuemp3 != null  and issuemp3 != ''"> and issuemp3 = #{issuemp3}</if>
             <if test="answermp3 != null  and answermp3 != ''"> and answermp3 = #{answermp3}</if>
             <if test="explainjsmp3 != null  and explainjsmp3 != ''"> and explainjsmp3 = #{explainjsmp3}</if>
-            <if test="subject1 != null  and subject1 != ''"> and subject_1 = #{subject1}</if>
-            <if test="subject2 != null  and subject2 != ''"> and subject_2 = #{subject2}</if>
-            <if test="subject3 != null  and subject3 != ''"> and subject_3 = #{subject3}</if>
-            <if test="subject4 != null  and subject4 != ''"> and subject_4 = #{subject4}</if>
             <if test="liceCar != null  and liceCar != ''"> and lice_car = #{liceCar}</if>
             <if test="liceBus != null  and liceBus != ''"> and lice_bus = #{liceBus}</if>
             <if test="liceTruck != null  and liceTruck != ''"> and lice_truck = #{liceTruck}</if>
@@ -79,13 +115,270 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="classIssue != null  and classIssue != ''"> and class_issue = #{classIssue}</if>
             <if test="placeIssue != null  and placeIssue != ''"> and place_issue = #{placeIssue}</if>
             <if test="excellIssue != null  and excellIssue != ''"> and excell_issue = #{excellIssue}</if>
-            <if test="copyIssue != null  and copyIssue != ''"> and copy_issue = #{copyIssue}</if>
-            <if test="mockIssue != null  and mockIssue != ''"> and mock_issue = #{mockIssue}</if>
             <if test="sequeIssueName != null  and sequeIssueName != ''"> and seque_issue_name like concat('%', #{sequeIssueName}, '%')</if>
             <if test="placeIssueName != null  and placeIssueName != ''"> and place_issue_name like concat('%', #{placeIssueName}, '%')</if>
             <if test="excellIssueName != null  and excellIssueName != ''"> and excell_issue_name like concat('%', #{excellIssueName}, '%')</if>
             <if test="classIssueName != null  and classIssueName != ''"> and class_issue_name like concat('%', #{classIssueName}, '%')</if>
+            <if test="questionType != null "> and question_type = #{questionType}</if>
+        </where>
+        limit 0,50
+    </select>
+
+
+
+
+    <select id="selectQuestionInfoListIds" parameterType="Long" resultMap="QuestionInfoResult">
+        <include refid="selectQuestionInfoVo"/>
+        <where>
+            and id in
+            <foreach collection="array" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+
+        </where>
+    </select>
+
+    <select id="selectJxQuestionInfo"  resultType="com.miaxis.question.vo.QuestionInfoJxVO">
+        SELECT
+        DISTINCT case WHEN excell_issue_name is null then '地方专题' else excell_issue_name end as "excell_issue_name",
+        excell_issue
+        FROM question_info
+        <where>
+            <if test="excellIssueName != null  and excellIssueName != ''"> and excell_issue_name like concat('%',#{excellIssueName},'%')</if>
+            <if test="subject != null  and subject != ''"> and subject = #{subject}</if>
+            <if test="liceCar != null  and liceCar != ''"> and lice_car = #{liceCar} </if>
+            <if test="liceBus != null  and liceBus != ''"> and lice_bus = #{liceBus}</if>
+            <if test="liceTruck != null  and liceTruck != ''"> and lice_truck = #{liceTruck}</if>
+            <if test="liceMoto != null  and liceMoto != ''"> and lice_moto = #{liceMoto}</if>
+        </where>
+        ORDER BY
+        excell_issue + 0 ASC
+    </select>
+
+
+    <select id="selectDfQuestionInfo"  resultType="com.miaxis.question.vo.QuestionInfoDfVO">
+        SELECT
+        DISTINCT
+        case WHEN place_issue_name is null then '地方专题' else place_issue_name end as "place_issue_name",
+        place_issue
+        FROM question_info
+        <where>
+            <if test="subject != null  and subject != ''"> and subject = #{subject}</if>
+            <if test="liceCar != null  and liceCar != ''"> and lice_car = #{liceCar} </if>
+            <if test="liceBus != null  and liceBus != ''"> and lice_bus = #{liceBus}</if>
+            <if test="liceTruck != null  and liceTruck != ''"> and lice_truck = #{liceTruck}</if>
+            <if test="liceMoto != null  and liceMoto != ''"> and lice_moto = #{liceMoto}</if>
+        </where>
+        ORDER BY
+        place_issue + 0 ASC
+    </select>
+
+
+    <select id="selectFlQuestionInfo"  resultType="com.miaxis.question.vo.QuestionInfoFlVO">
+        SELECT
+        DISTINCT
+        case WHEN class_issue_name is null then '地方专题' else class_issue_name end as "class_issue_name",
+        class_issue
+        FROM question_info
+        <where>
+            <if test="subject != null  and subject != ''"> and subject = #{subject}</if>
+            <if test="liceCar != null  and liceCar != ''"> and lice_car = #{liceCar} </if>
+            <if test="liceBus != null  and liceBus != ''"> and lice_bus = #{liceBus}</if>
+            <if test="liceTruck != null  and liceTruck != ''"> and lice_truck = #{liceTruck}</if>
+            <if test="liceMoto != null  and liceMoto != ''"> and lice_moto = #{liceMoto}</if>
+        </where>
+        ORDER BY
+        class_issue + 0 ASC
+    </select>
+
+
+    <select id="selectSxQuestionInfo"  resultType="com.miaxis.question.vo.QuestionInfoSxVO">
+        SELECT
+        DISTINCT
+        case WHEN seque_issue_name is null then '地方专题' else seque_issue_name end as "seque_issue_name",
+        seque_issue
+        FROM question_info
+        <where>
+            <if test="subject != null  and subject != ''"> and subject = #{subject}</if>
+            <if test="liceCar != null  and liceCar != ''"> and lice_car = #{liceCar} </if>
+            <if test="liceBus != null  and liceBus != ''"> and lice_bus = #{liceBus}</if>
+            <if test="liceTruck != null  and liceTruck != ''"> and lice_truck = #{liceTruck}</if>
+            <if test="liceMoto != null  and liceMoto != ''"> and lice_moto = #{liceMoto}</if>
         </where>
+        ORDER BY
+        seque_issue + 0 ASC
+    </select>
+
+    <select id="selectIssueType1"  resultType="com.miaxis.question.vo.QuestionInfoExcelTypeVo">
+        SELECT
+            DISTINCT case WHEN class_issue_name is null then '地方专题' else class_issue_name end as title,
+                     class_issue  as type_id
+        FROM
+            question_info
+        WHERE
+            subject = #{subject}
+          AND lice_car = 1 and
+            class_issue_name is not null
+        ORDER BY
+            class_issue + 0 ASC
+    </select>
+
+
+    <select id="selecQuestionInfoExcel1"  resultType="com.miaxis.question.vo.QuestionInfoExcelVo">
+        SELECT id,
+            number,
+            issue,
+            image,
+            excell_issue_name,
+            class_issue_name,
+            place_issue_name,
+            seque_issue_name,
+            question_type  FROM question_info WHERE class_issue = #{typeId} and subject_1 =1 and lice_car = 1
+    </select>
+
+    <select id="selectIssueType2"  resultType="com.miaxis.question.vo.QuestionInfoExcelTypeVo">
+        SELECT
+            DISTINCT case WHEN excell_issue_name is null then '地方专题' else excell_issue_name end as title,
+                     excell_issue as type_id
+        FROM
+            question_info
+        WHERE
+            subject = #{subject}
+          AND lice_car = 1 and
+            excell_issue_name is not null
+        ORDER BY
+            excell_issue + 0 ASC
+    </select>
+
+
+    <select id="selecQuestionInfoExcel2"  resultType="com.miaxis.question.vo.QuestionInfoExcelVo">
+        SELECT id,
+            number,
+            issue,
+            image,
+            excell_issue_name,
+            class_issue_name,
+            place_issue_name,
+            seque_issue_name,
+            question_type  FROM question_info WHERE excell_issue = #{typeId} and subject_1 =1 and lice_car = 1
+    </select>
+
+
+    <select id="selectIssueType3"  resultType="com.miaxis.question.vo.QuestionInfoExcelTypeVo">
+        SELECT
+            DISTINCT case WHEN place_issue_name is null then '地方专题' else place_issue_name end as title,
+                     place_issue as type_id
+        FROM
+            question_info
+        WHERE
+            subject = #{subject}
+          AND lice_car = 1 and
+            place_issue_name is not null
+        ORDER BY
+            place_issue + 0 ASC
+    </select>
+
+
+    <select id="selecQuestionInfoExcel3"  resultType="com.miaxis.question.vo.QuestionInfoExcelVo">
+        SELECT id,
+            number,
+            issue,
+            image,
+            excell_issue_name,
+            class_issue_name,
+            place_issue_name,
+            seque_issue_name,
+            question_type  FROM question_info WHERE  place_issue  = #{typeId} and subject_1 =1 and lice_car = 1
+    </select>
+
+
+    <select id="selectIssueType4"  resultType="com.miaxis.question.vo.QuestionInfoExcelTypeVo">
+        SELECT
+            DISTINCT case WHEN seque_issue_name is null then '地方专题' else seque_issue_name end as title,
+                     seque_issue as type_id
+        FROM
+            question_info
+        WHERE
+            subject = #{subject}
+          AND lice_car = 1 and
+            seque_issue_name is not null
+        ORDER BY
+            seque_issue + 0 ASC
     </select>
 
+
+    <select id="selecQuestionInfoExcel4"  resultType="com.miaxis.question.vo.QuestionInfoExcelVo">
+        SELECT id,
+               id_ydt,
+            number,
+            issue,
+            image,
+            excell_issue_name,
+            class_issue_name,
+            place_issue_name,
+            seque_issue_name,
+            question_type  FROM question_info WHERE  seque_issue  = #{typeId} and subject_1 =1 and lice_car = 1
+    </select>
+
+
+    <select id="selectQuestionInfoSortList"  resultType="com.miaxis.question.vo.QuestionInfoExcelVo">
+        SELECT id,
+        id_ydt,
+        number,
+        issue,
+        image,
+        excell_issue_name,
+        class_issue_name,
+        place_issue_name,
+        seque_issue_name,
+        ${sortName} as sort,
+        question_type  FROM question_info WHERE  ${issueTypeParmName}  = #{issueValue} and subject =#{subject} and lice_car = 1
+        <if test="issue != null  and issue != ''"> and issue like concat('%', #{issue}, '%')</if>
+        order by  IFNULL(${sortName},100000)
+    </select>
+
+    <select id="updateSortById"  >
+        update question_info set ${sortName} = #{sort} WHERE  id = #{id}
+    </select>
+
+
+    <select id="selectTestQuestionInfoList"   resultMap="QuestionInfoResult">
+        select * from question_info
+        <where>
+            <if test="liceMoto == null or liceMoto == ''"> and excell_issue_name like concat('%',#{excellIssueName},'%')  </if>
+            <if test="subject != null"> and subject = #{subject}</if>
+            <if test="questionType != null"> and question_type = #{questionType}</if>
+            <if test="liceCar != null  and liceCar != ''"> and lice_car = #{liceCar} </if>
+            <if test="liceBus != null  and liceBus != ''"> and lice_bus = #{liceBus}</if>
+            <if test="liceTruck != null  and liceTruck != ''"> and lice_truck = #{liceTruck}</if>
+            <if test="liceMoto != null  and liceMoto != ''"> and lice_moto = #{liceMoto}</if>
+        </where>
+        ORDER BY rand() limit 0,${num}
+    </select>
+
+
+    <select id="selectFreeQuestionInfoList"   resultMap="QuestionInfoResult">
+        select * from question_info
+        <where>
+            and excell_issue_name like '%选学%'
+            and lice_car = 1
+            <if test="subject != null"> and subject = #{subject}</if>
+            <if test="questionType != null"> and question_type = #{questionType}</if>
+        </where>
+        ORDER BY id limit 0,${num}
+    </select>
+
+
+    <select id="selectQuestionInfoListByYdtIds" parameterType="Long" resultMap="QuestionInfoResult">
+        <include refid="selectQuestionInfoVo"/>
+        <where>
+            and id_ydt in
+            <foreach collection="array" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+
+        </where>
+    </select>
+
+
 </mapper>