Przeglądaj źródła

新增ai评卷参数表

wangliang 2 miesięcy temu
rodzic
commit
deb4f6093d

+ 3 - 1
distributed-print/install/mysql/upgrade/3.4.5.sql

@@ -59,4 +59,6 @@ CREATE TABLE `mark_ai_question_level` (
 ALTER TABLE `mark_question` ADD COLUMN `person_task` TINYINT(1) NULL DEFAULT 1 COMMENT '是否有人评任务' AFTER `ai_mark`;
 
 -- 2025-04-11
-RENAME TABLE `teachcloud-test`.mark_ai_question_score TO `teachcloud-test`.mark_ai_question_point;
+RENAME TABLE mark_ai_question_score TO mark_ai_question_point;
+
+ALTER TABLE mark_ai_question_param ADD CONSTRAINT mark_ai_question_param_unique UNIQUE KEY (question_id);

+ 101 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkAiQuestionParamController.java

@@ -2,11 +2,30 @@ package com.qmth.distributed.print.api.mark;
 
 
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.api.exception.ApiException;
+import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.mark.bean.ai.MarkAiQuestionParamResult;
+import com.qmth.teachcloud.mark.entity.MarkAiQuestionLevel;
+import com.qmth.teachcloud.mark.entity.MarkAiQuestionParam;
+import com.qmth.teachcloud.mark.entity.MarkAiQuestionPoint;
+import com.qmth.teachcloud.mark.service.MarkAiQuestionLevelService;
+import com.qmth.teachcloud.mark.service.MarkAiQuestionParamService;
+import com.qmth.teachcloud.mark.service.MarkAiQuestionPointService;
+import io.swagger.annotations.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import javax.validation.Valid;
 
 /**
  * <p>
@@ -20,5 +39,84 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_MARK + "/ai_question_param")
 public class MarkAiQuestionParamController {
+    private final static Logger log = LoggerFactory.getLogger(MarkAiQuestionParamController.class);
 
+    @Resource
+    MarkAiQuestionParamService markAiQuestionParamService;
+
+    @Resource
+    MarkAiQuestionPointService markAiQuestionPointService;
+
+    @Resource
+    MarkAiQuestionLevelService markAiQuestionLevelService;
+
+    @ApiOperation(value = "AI评卷参数新增/修改")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "新增", response = EditResult.class)})
+    @Transactional
+    public Result save(@ApiParam(value = "AI评卷参数信息", required = true) @Valid @RequestBody MarkAiQuestionParam markAiQuestionParam, BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        try {
+
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof DuplicateKeyException) {
+                String errorColumn = e.getCause().toString();
+                String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
+                throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
+            } else if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        }
+        return ResultUtil.ok(true);
+    }
+
+    @ApiOperation(value = "AI评卷参数查询")
+    @RequestMapping(value = "/info", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "AI评卷参数查询", response = MarkAiQuestionParamResult.class)})
+    public Result info(@ApiParam(value = "主键", required = true) @RequestParam Long id) {
+        return ResultUtil.ok();
+    }
+
+//    @ApiOperation(value = "AI评卷参数得分点新增/修改")
+//    @RequestMapping(value = "/point/save", method = RequestMethod.POST)
+//    @ApiResponses({@ApiResponse(code = 200, message = "AI评卷参数得分点信息", response = EditResult.class)})
+//    @Transactional
+//    public Result pointSave(@ApiParam(value = "AI评卷参数得分点信息", required = true) @Valid @RequestBody MarkAiQuestionPoint markAiQuestionPoint, BindingResult bindingResult) {
+//        if (bindingResult.hasErrors()) {
+//            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+//        }
+//        return ResultUtil.ok();
+//    }
+//
+//    @ApiOperation(value = "AI评卷参数档次新增/修改")
+//    @RequestMapping(value = "/level/save", method = RequestMethod.POST)
+//    @ApiResponses({@ApiResponse(code = 200, message = "新增/修改成功", response = EditResult.class)})
+//    @Transactional
+//    public Result levelSave(@ApiParam(value = "AI评卷参数档次信息", required = true) @Valid @RequestBody MarkAiQuestionLevel markAiQuestionLevel, BindingResult bindingResult) {
+//        if (bindingResult.hasErrors()) {
+//            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+//        }
+//        return ResultUtil.ok();
+//    }
+//
+//    @ApiOperation(value = "AI评卷参数得分点删除")
+//    @RequestMapping(value = "/point/delete", method = RequestMethod.POST)
+//    @ApiResponses({@ApiResponse(code = 200, message = "得分点删除", response = EditResult.class)})
+//    @Transactional
+//    public Result pointDelete(@ApiParam(value = "主键", required = true) @RequestParam Long pointId) {
+//        return ResultUtil.ok(markAiQuestionPointService.removeById(pointId));
+//    }
+//
+//    @ApiOperation(value = "AI评卷参数档次删除")
+//    @RequestMapping(value = "/level/delete", method = RequestMethod.POST)
+//    @ApiResponses({@ApiResponse(code = 200, message = "档次删除", response = EditResult.class)})
+//    @Transactional
+//    public Result levelDelete(@ApiParam(value = "主键", required = true) @RequestParam Long levelId) {
+//        return ResultUtil.ok(markAiQuestionLevelService.removeById(levelId));
+//    }
 }

+ 3 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FieldUniqueEnum.java

@@ -53,7 +53,9 @@ public enum FieldUniqueEnum {
 
     t_b_version_unique("客户端版本号"),
 
-    exam_card_model_four_unique("题卡课程");
+    exam_card_model_four_unique("题卡课程"),
+
+    mark_ai_question_param_unique("试题题干");
 
     private String title;
 

+ 41 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/ai/MarkAiQuestionParamResult.java

@@ -0,0 +1,41 @@
+package com.qmth.teachcloud.mark.bean.ai;
+
+import com.qmth.teachcloud.mark.entity.MarkAiQuestionLevel;
+import com.qmth.teachcloud.mark.entity.MarkAiQuestionParam;
+import com.qmth.teachcloud.mark.entity.MarkAiQuestionPoint;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: ai评卷参数返回信息
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2025/4/11
+ */
+public class MarkAiQuestionParamResult extends MarkAiQuestionParam implements Serializable {
+
+    @ApiModelProperty(value = "得分点列表")
+    List<MarkAiQuestionPoint> pointList;
+
+    @ApiModelProperty(value = "档次列表")
+    List<MarkAiQuestionLevel> levelList;
+
+    public List<MarkAiQuestionPoint> getPointList() {
+        return pointList;
+    }
+
+    public void setPointList(List<MarkAiQuestionPoint> pointList) {
+        this.pointList = pointList;
+    }
+
+    public List<MarkAiQuestionLevel> getLevelList() {
+        return levelList;
+    }
+
+    public void setLevelList(List<MarkAiQuestionLevel> levelList) {
+        this.levelList = levelList;
+    }
+}

+ 5 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkAiQuestionParam.java

@@ -7,6 +7,7 @@ import com.qmth.teachcloud.mark.enums.AiQuestionParamModeStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
@@ -28,16 +29,20 @@ public class MarkAiQuestionParam extends BaseEntity implements Serializable {
 
     @ApiModelProperty(value = "考试id")
     @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "考试id不能为空")
     private Long examId;
 
     @ApiModelProperty(value = "科目id")
     @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "科目id不能为空")
     private Long courseId;
 
     @ApiModelProperty(value = "试卷类型")
+    @NotNull(message = "试卷类型不能为空")
     private String paperNumber;
 
     @ApiModelProperty(value = "评分模式,SCORE:按得分点,LEVEL:按档次")
+    @NotNull(message = "评分模式不能为空")
     private AiQuestionParamModeStatus mode;
 
     @ApiModelProperty(value = "试题题干")
@@ -46,7 +51,6 @@ public class MarkAiQuestionParam extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "最小分")
     private Double minScore;
 
-
     public Long getQuestionId() {
         return questionId;
     }