deason 6 år sedan
förälder
incheckning
e4e048bfb3

+ 5 - 5
examcloud-core-print-dao/src/main/java/cn/com/qmth/examcloud/core/print/enums/QuesStructType.java

@@ -18,7 +18,7 @@ public enum QuesStructType {
     private Long id;
     private String title;
     private boolean objective;//是否是客观题
-    private boolean combline;//是否是组合题
+    private boolean combine;//是否是组合题
 
     public static QuesStructType getByName(String name) {
         if (name == null) {
@@ -32,11 +32,11 @@ public enum QuesStructType {
         return null;
     }
 
-    QuesStructType(Long id, String title, boolean objective, boolean combline) {
+    QuesStructType(Long id, String title, boolean objective, boolean combine) {
         this.id = id;
         this.title = title;
         this.objective = objective;
-        this.combline = combline;
+        this.combine = combine;
     }
 
     public Long getId() {
@@ -51,8 +51,8 @@ public enum QuesStructType {
         return objective;
     }
 
-    public boolean isCombline() {
-        return combline;
+    public boolean isCombine() {
+        return combine;
     }
 
 }

+ 20 - 18
examcloud-core-print-provider/src/main/java/cn/com/qmth/examcloud/core/print/api/controller/ExamStructureController.java

@@ -12,48 +12,50 @@ import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 
 /**
- * 导出结构设置信息相关接口(前端)
+ * 考试结构相关接口
  *
- * @author weiwenhai
- * @since 2018.10.31
+ * @author: weiwenhai
+ * @since: 2018.10.30
+ * @author: fengdesheng
+ * @update: 2018/11/22
  */
 @RestController
-@Api(tags = "导出结构设置信息相关接口")
+@Api(tags = "考试结构相关接口")
 @RequestMapping("${$rmp.ctrl.print}/examStructure")
 public class ExamStructureController extends ControllerSupport {
     @Autowired
     private ExamStructureService examStructureService;
 
     @PostMapping("/list")
-    @ApiOperation(value = "查询导出结构设置信息(分页)")
+    @ApiOperation(value = "获取考试结构信息列表(分页)")
     public Page<ExamStructureInfo> getExamStructureList(@RequestBody ExamStructureQuery query) {
         return examStructureService.getExamStructureList(query);
     }
 
-    @PostMapping("/findOne")
-    @ApiOperation(value = "根据机构ID和考试ID查询")
-    public ExamStructureInfo getExamStructure(@RequestBody ExamStructureQuery query) {
-        return examStructureService.getExamStructure(query);
+    @PostMapping("/{orgId}/{examId}")
+    @ApiOperation(value = "获取某个考试结构信息")
+    public ExamStructureInfo getExamStructure(@PathVariable Long orgId, @PathVariable Long examId) {
+        return examStructureService.getExamStructure(orgId, examId);
     }
 
     @PostMapping("/save")
-    @ApiOperation(value = "保存导出结构设置信息")
+    @ApiOperation(value = "保存某个考试结构信息")
     public Result saveExamStructure(@RequestBody ExamStructureInfo info) {
         examStructureService.saveExamStructure(info);
         return Result.success();
     }
 
-    @PostMapping("/delete/{ids}")
-    @ApiOperation(value = "删除导出结构设置信息")
-    public Result deleteExamStructure(@PathVariable Long[] ids) {
-        examStructureService.deleteExamStructure(ids);
+    @PostMapping("/clone")
+    @ApiOperation(value = "复用某个考试结构信息")
+    public Result cloneExamStructure(@RequestBody ExamStructureInfo info) {
+        examStructureService.cloneExamStructure(info);
         return Result.success();
     }
 
-    @PostMapping("/copy")
-    @ApiOperation(value = "复制导出结构设置信息")
-    public Result copyExamStructure(@RequestBody ExamStructureInfo info) {
-        examStructureService.copyExamStructure(info);
+    @PostMapping("/delete/{ids}")
+    @ApiOperation(value = "删除某个考试结构信息")
+    public Result deleteExamStructure(@PathVariable Long[] ids) {
+        examStructureService.deleteExamStructure(ids);
         return Result.success();
     }
 

+ 2 - 2
examcloud-core-print-provider/src/main/java/cn/com/qmth/examcloud/core/print/api/controller/ProjectBackupSettingController.java

@@ -19,13 +19,13 @@ import org.springframework.web.bind.annotation.*;
 import static cn.com.qmth.examcloud.core.print.common.Result.success;
 
 /**
- * 项目备份设置相关接口
+ * 印刷项目-备份设置相关接口
  *
  * @author: fengdesheng
  * @since: 2018/10/26
  */
 @RestController
-@Api(tags = "项目备份设置相关接口")
+@Api(tags = "印刷项目-备份设置相关接口")
 @RequestMapping("${$rmp.ctrl.print}/project/backup/setting")
 public class ProjectBackupSettingController extends ControllerSupport {
     @Autowired

+ 2 - 2
examcloud-core-print-provider/src/main/java/cn/com/qmth/examcloud/core/print/api/controller/ProjectOtherSettingController.java

@@ -21,13 +21,13 @@ import java.util.List;
 import static cn.com.qmth.examcloud.core.print.common.Result.success;
 
 /**
- * 项目其它事项设置相关接口
+ * 印刷项目-其它事项设置相关接口
  *
  * @author: fengdesheng
  * @since: 2018/10/26
  */
 @RestController
-@Api(tags = "项目其它事项设置相关接口")
+@Api(tags = "印刷项目-其它事项设置相关接口")
 @RequestMapping("${$rmp.ctrl.print}/project/other/setting")
 public class ProjectOtherSettingController extends ControllerSupport {
     @Autowired

+ 10 - 10
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/ExamStructureService.java

@@ -12,22 +12,22 @@ import cn.com.qmth.examcloud.core.print.service.bean.examstructure.ExamStructure
 import org.springframework.data.domain.Page;
 
 /**
+ * @author: weiwenhai
+ * @since: 2018.10.30
  * @author: fengdesheng
- * @since: 2018/10/22
- * @update: weiwenhai
- * @date: 2018.10.30
+ * @update: 2018/11/22
  */
 public interface ExamStructureService {
 
     /**
-     * 查询考试结构信息列表(分页)
+     * 获取考试结构信息列表(分页)
      */
     Page<ExamStructureInfo> getExamStructureList(ExamStructureQuery query);
 
     /**
-     * 查询某个考试结构信息
+     * 获取某个考试结构信息
      */
-    ExamStructureInfo getExamStructure(ExamStructureQuery query);
+    ExamStructureInfo getExamStructure(Long orgId, Long examId);
 
     /**
      * 保存某个考试结构信息
@@ -35,9 +35,9 @@ public interface ExamStructureService {
     void saveExamStructure(ExamStructureInfo info);
 
     /**
-     * 校验考试试卷结构
+     * 复用某个考试结构信息
      */
-    void checkExamStructure(Long orgId, Long examId, String paperId);
+    void cloneExamStructure(ExamStructureInfo info);
 
     /**
      * 删除某个考试结构信息
@@ -45,9 +45,9 @@ public interface ExamStructureService {
     void deleteExamStructure(Long[] ids);
 
     /**
-     * 复用结构信息
+     * 校验某个考试试卷结构信息
      */
-    void copyExamStructure(ExamStructureInfo info);
+    void checkExamStructure(Long orgId, Long examId, String paperId);
 
     /**
      * 同步更新学校名称信息

+ 0 - 4
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/bean/examstructure/ExamStructureConvert.java

@@ -20,10 +20,6 @@ import org.springframework.data.domain.Pageable;
 import java.util.List;
 import java.util.stream.Collectors;
 
-/**
- * @author weiwenhai
- * @since 2018.10.30
- */
 public class ExamStructureConvert {
 
     public static ExamStructure of(ExamStructureInfo info) {

+ 0 - 5
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/bean/examstructure/ExamStructureInfo.java

@@ -10,13 +10,8 @@ package cn.com.qmth.examcloud.core.print.service.bean.examstructure;
 import cn.com.qmth.examcloud.commons.web.cloud.api.JsonSerializable;
 import cn.com.qmth.examcloud.core.print.entity.ExamQuestionStructure;
 
-/**
- * @author weiwenhai
- * @since 2018.10.30
- */
 public class ExamStructureInfo implements JsonSerializable {
     private static final long serialVersionUID = 1L;
-
     private Long id;
 
     /**

+ 1 - 5
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/bean/examstructure/ExamStructureQuery.java

@@ -10,14 +10,10 @@ package cn.com.qmth.examcloud.core.print.service.bean.examstructure;
 import cn.com.qmth.examcloud.commons.web.cloud.api.JsonSerializable;
 import cn.com.qmth.examcloud.core.print.common.PageQuery;
 
-/**
- * @author weiwenhai
- * @since 2018.10.30
- */
 public class ExamStructureQuery extends PageQuery implements JsonSerializable {
     private static final long serialVersionUID = 1;
     /**
-     * 机构ID
+     * 学校机构ID
      */
     private Long orgId;
     /**

+ 57 - 58
examcloud-core-print-service/src/main/java/cn/com/qmth/examcloud/core/print/service/impl/ExamStructureServiceImpl.java

@@ -12,7 +12,6 @@ import cn.com.qmth.examcloud.core.print.common.jpa.OrderBuilder;
 import cn.com.qmth.examcloud.core.print.common.jpa.SearchBuilder;
 import cn.com.qmth.examcloud.core.print.common.jpa.SpecUtils;
 import cn.com.qmth.examcloud.core.print.common.utils.Check;
-import cn.com.qmth.examcloud.core.print.common.utils.JsonMapper;
 import cn.com.qmth.examcloud.core.print.entity.ExamQuestionStructure;
 import cn.com.qmth.examcloud.core.print.entity.ExamStructure;
 import cn.com.qmth.examcloud.core.print.enums.ExamType;
@@ -34,10 +33,10 @@ import org.springframework.stereotype.Service;
 import static cn.com.qmth.examcloud.core.print.common.Constants.PRT_CODE_500;
 
 /**
+ * @author: weiwenhai
+ * @since: 2018.10.30
  * @author: fengdesheng
- * @since: 2018/10/17
- * @update: weiwenhai
- * @date: 2018.10.30
+ * @update: 2018/11/22
  */
 @Service
 public class ExamStructureServiceImpl implements ExamStructureService {
@@ -50,10 +49,11 @@ public class ExamStructureServiceImpl implements ExamStructureService {
     @Override
     public Page<ExamStructureInfo> getExamStructureList(ExamStructureQuery query) {
         Check.isNull(query, "查询参数不能为空!");
-        Check.isEmpty(query.getOrgId(), "学校ID不能为空!");
         //查询条件
         SearchBuilder searches = new SearchBuilder();
-        searches.eq("orgId", query.getOrgId());
+        if (query.getOrgId() != null) {
+            searches.eq("orgId", query.getOrgId());
+        }
         if (query.getExamId() != null) {
             searches.eq("examId", query.getExamId());
         }
@@ -67,11 +67,10 @@ public class ExamStructureServiceImpl implements ExamStructureService {
     }
 
     @Override
-    public ExamStructureInfo getExamStructure(ExamStructureQuery query) {
-        Check.isNull(query, "查询参数不能为空!");
-        Check.isEmpty(query.getOrgId(), "学校ID不能为空!");
-        Check.isEmpty(query.getExamId(), "考试ID不能为空!");
-        ExamStructure entity = examStructureRepository.findByOrgIdAndExamId(query.getOrgId(), query.getExamId());
+    public ExamStructureInfo getExamStructure(Long orgId, Long examId) {
+        Check.isEmpty(orgId, "学校ID不能为空!");
+        Check.isEmpty(examId, "考试ID不能为空!");
+        ExamStructure entity = examStructureRepository.findByOrgIdAndExamId(orgId, examId);
         if (entity == null) {
             return null;
         }
@@ -96,6 +95,52 @@ public class ExamStructureServiceImpl implements ExamStructureService {
         examStructureRepository.save(entity);
     }
 
+    @Override
+    public void cloneExamStructure(ExamStructureInfo info) {
+        //数据校验
+        Check.isNull(info.getOrgId(), "原学校ID不能为空!");
+        Check.isNull(info.getExamId(), "原考试ID不能为空!");
+        Check.isNull(info.getNewOrgId(), "新学校ID不能为空!");
+        Check.isBlank(info.getNewOrgName(), "新学校名称不能为空!");
+        Check.isNull(info.getExamId(), "新考试ID不能为空!");
+        Check.isBlank(info.getNewExamName(), "新考试名称不能为空!");
+
+        ExamStructure newStructure = examStructureRepository.findByOrgIdAndExamId(info.getNewOrgId(), info.getNewExamId());
+        if (newStructure != null) {
+            throw new StatusException(PRT_CODE_500, "新学校考试下已有结构信息,不可复用!");
+        }
+
+        ExamStructure oldStructure = examStructureRepository.findByOrgIdAndExamId(info.getOrgId(), info.getExamId());
+        if (oldStructure == null) {
+            throw new StatusException(PRT_CODE_500, "原结构信息不存在!");
+        }
+
+        newStructure = new ExamStructure();
+        newStructure.setId(null);
+        newStructure.setOrgId(info.getNewOrgId());
+        newStructure.setOrgName(info.getNewOrgName());
+        newStructure.setExamId(info.getNewExamId());
+        newStructure.setExamName(info.getNewExamName());
+        newStructure.setExamType(oldStructure.getExamType());
+        newStructure.setStruct(oldStructure.getStruct());
+        examStructureRepository.save(newStructure);
+    }
+
+    @Override
+    public void deleteExamStructure(Long[] ids) {
+        if (ids == null || ids.length == 0) {
+            return;
+        }
+        for (Long id : ids) {
+            try {
+                examStructureRepository.delete(id);
+            } catch (Exception e) {
+                // ignore: record not exist
+                log.warn(e.getMessage());
+            }
+        }
+    }
+
     @Override
     public void checkExamStructure(Long orgId, Long examId, String paperId) {
         Check.isNull(orgId, "学校ID不能为空!");
@@ -108,7 +153,7 @@ public class ExamStructureServiceImpl implements ExamStructureService {
         }
 
         //考试结构设置的客观题数量
-        ExamQuestionStructure questionStructure = new JsonMapper().fromJson(entity.getStruct(), ExamQuestionStructure.class);
+        //ExamQuestionStructure questionStructure = new JsonMapper().fromJson(entity.getStruct(), ExamQuestionStructure.class);
 
         //校验考试结构中的单选题数量
         /*long singleChoiceSize = objectiveQuestionStructureRepository.countByExamIdAndPaperIdAndQuestionType(examId, paperId, QuesStructType.SINGLE_ANSWER_QUESTION.name());
@@ -129,52 +174,6 @@ public class ExamStructureServiceImpl implements ExamStructureService {
         }*/
     }
 
-    @Override
-    public void deleteExamStructure(Long[] ids) {
-        if (ids == null || ids.length == 0) {
-            return;
-        }
-        for (Long id : ids) {
-            try {
-                examStructureRepository.delete(id);
-            } catch (Exception e) {
-                // ignore: record not exist
-                log.warn(e.getMessage());
-            }
-        }
-    }
-
-    @Override
-    public void copyExamStructure(ExamStructureInfo info) {
-        //数据校验
-        Check.isNull(info.getOrgId(), "原学校ID不能为空!");
-        Check.isNull(info.getExamId(), "原考试ID不能为空!");
-        Check.isNull(info.getNewOrgId(), "新学校ID不能为空!");
-        Check.isBlank(info.getNewOrgName(), "新学校名称不能为空!");
-        Check.isNull(info.getExamId(), "新考试ID不能为空!");
-        Check.isBlank(info.getNewExamName(), "新考试名称不能为空!");
-
-        ExamStructure newStructure = examStructureRepository.findByOrgIdAndExamId(info.getNewOrgId(), info.getNewExamId());
-        if (newStructure != null) {
-            throw new StatusException(PRT_CODE_500, "新学校考试下已有结构信息,不可复用!");
-        }
-
-        ExamStructure oldStructure = examStructureRepository.findByOrgIdAndExamId(info.getOrgId(), info.getExamId());
-        if (oldStructure == null) {
-            throw new StatusException(PRT_CODE_500, "原结构信息不存在!");
-        }
-
-        newStructure = new ExamStructure();
-        newStructure.setId(null);
-        newStructure.setOrgId(info.getNewOrgId());
-        newStructure.setOrgName(info.getNewOrgName());
-        newStructure.setExamId(info.getNewExamId());
-        newStructure.setExamName(info.getNewExamName());
-        newStructure.setExamType(oldStructure.getExamType());
-        newStructure.setStruct(oldStructure.getStruct());
-        examStructureRepository.save(newStructure);
-    }
-
     @Override
     public void syncOrgNameByOrgId(Long orgId, String orgName) {
         if (orgId == null || StringUtils.isBlank(orgName)) {

+ 2 - 2
examcloud-core-print-starter/src/main/resources/security-exclusions.conf

@@ -46,7 +46,7 @@
 [${$rmp.ctrl.print}/project/template][/{id}][POST]
 
 [${$rmp.ctrl.print}/examStructure][/list][POST]
+[${$rmp.ctrl.print}/examStructure][/{orgId}/{examId}][POST]
 [${$rmp.ctrl.print}/examStructure][/save][POST]
-[${$rmp.ctrl.print}/examStructure][/findOne][POST]
-[${$rmp.ctrl.print}/examStructure][/copy][POST]
+[${$rmp.ctrl.print}/examStructure][/clone][POST]
 [${$rmp.ctrl.print}/examStructure][/delete/{ids}][POST]