deason 9 сар өмнө
parent
commit
1966b91402

+ 25 - 18
src/main/java/cn/com/qmth/scancentral/controller/admin/ExamController.java

@@ -1,23 +1,5 @@
 package cn.com.qmth.scancentral.controller.admin;
 
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.annotation.Resource;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.task.AsyncTaskExecutor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.qmth.boot.api.annotation.Aac;
-import com.qmth.boot.api.constant.ApiConstant;
-import com.qmth.boot.core.collection.PageResult;
-import com.qmth.boot.core.concurrent.service.ConcurrentService;
-
 import cn.com.qmth.scancentral.bean.ExamConfigDomain;
 import cn.com.qmth.scancentral.bean.SubjectConfigDomain;
 import cn.com.qmth.scancentral.bean.User;
@@ -31,11 +13,24 @@ import cn.com.qmth.scancentral.vo.ExamConfigVo;
 import cn.com.qmth.scancentral.vo.ExamUploadVo;
 import cn.com.qmth.scancentral.vo.ExamVo;
 import cn.com.qmth.scancentral.vo.SubjectConfigVo;
+import cn.com.qmth.scancentral.vo.examinfo.ExamEdit;
 import cn.com.qmth.scancentral.vo.examinfo.ExamInfoVo;
 import cn.com.qmth.scancentral.vo.examinfo.ExamQuery;
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.core.collection.PageResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import net.sf.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
 
 @RestController
 @Api(tags = "考试接口")
@@ -66,6 +61,17 @@ public class ExamController extends BaseController {
         return examService.pageQuery(query, user);
     }
 
+    @ApiOperation(value = "新建、修改考试")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    public Map<String, Object> save(ExamEdit exam) {
+        exam.setOperateUserId(getAccessUser().getId());
+        Long examId = examService.save(exam);
+        Map<String, Object> result = new HashMap<>();
+        result.put("id", examId);
+        result.put("updateTime", System.currentTimeMillis());
+        return result;
+    }
+
     @ApiOperation(value = "启用/关闭考试")
     @RequestMapping(value = "/toggle", method = RequestMethod.POST)
     public JSONObject enable(@RequestParam Long id, @RequestParam Boolean enable) {
@@ -127,4 +133,5 @@ public class ExamController extends BaseController {
         result.put("updateTime", exam.getUpdateTime());
         return result;
     }
+
 }

+ 1 - 1
src/main/java/cn/com/qmth/scancentral/entity/ExamEntity.java

@@ -14,7 +14,7 @@ public class ExamEntity extends AuditingWithoutIdEntity {
 
     private static final long serialVersionUID = 2232451399940497087L;
 
-    @TableId(type = IdType.INPUT)
+    @TableId(type = IdType.AUTO)
     private Long id;
 
     private String name;

+ 7 - 5
src/main/java/cn/com/qmth/scancentral/service/ExamService.java

@@ -1,10 +1,5 @@
 package cn.com.qmth.scancentral.service;
 
-import java.util.List;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.boot.core.collection.PageResult;
-
 import cn.com.qmth.scancentral.bean.ExamConfigDomain;
 import cn.com.qmth.scancentral.bean.ImportExamDomain;
 import cn.com.qmth.scancentral.bean.User;
@@ -12,10 +7,15 @@ import cn.com.qmth.scancentral.entity.ExamEntity;
 import cn.com.qmth.scancentral.vo.ExamConfigVo;
 import cn.com.qmth.scancentral.vo.ExamVo;
 import cn.com.qmth.scancentral.vo.checkimage.RatioVo;
+import cn.com.qmth.scancentral.vo.examinfo.ExamEdit;
 import cn.com.qmth.scancentral.vo.examinfo.ExamInfoVo;
 import cn.com.qmth.scancentral.vo.examinfo.ExamQuery;
 import cn.com.qmth.scancentral.vo.scanexaminfo.ScanExamInfoVo;
 import cn.com.qmth.scancentral.vo.scanexamlist.ScanExamListVo;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.boot.core.collection.PageResult;
+
+import java.util.List;
 
 public interface ExamService extends IService<ExamEntity> {
 
@@ -23,6 +23,8 @@ public interface ExamService extends IService<ExamEntity> {
 
     List<ExamEntity> listEnable();
 
+    Long save(ExamEdit exam);
+
     ExamInfoVo getExamInfoVo(Long id, User accessUser);
 
     List<ScanExamListVo> getScanExamList();

+ 57 - 0
src/main/java/cn/com/qmth/scancentral/service/impl/ExamServiceImpl.java

@@ -14,12 +14,14 @@ import cn.com.qmth.scancentral.util.PageUtil;
 import cn.com.qmth.scancentral.vo.ExamConfigVo;
 import cn.com.qmth.scancentral.vo.ExamVo;
 import cn.com.qmth.scancentral.vo.checkimage.RatioVo;
+import cn.com.qmth.scancentral.vo.examinfo.ExamEdit;
 import cn.com.qmth.scancentral.vo.examinfo.ExamInfoVo;
 import cn.com.qmth.scancentral.vo.examinfo.ExamQuery;
 import cn.com.qmth.scancentral.vo.scanexaminfo.ScanExamInfoVo;
 import cn.com.qmth.scancentral.vo.scanexamlist.ScanExamListQuery;
 import cn.com.qmth.scancentral.vo.scanexamlist.ScanExamListVo;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -27,6 +29,7 @@ import com.qmth.boot.core.collection.PageResult;
 import com.qmth.boot.core.concurrent.service.ConcurrentService;
 import com.qmth.boot.core.exception.ParameterException;
 import com.qmth.boot.core.security.exception.AuthorizationException;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -87,6 +90,60 @@ public class ExamServiceImpl extends ServiceImpl<ExamDao, ExamEntity> implements
         return list(new LambdaQueryWrapper<ExamEntity>().eq(ExamEntity::getEnable, true));
     }
 
+    @Override
+    public Long save(ExamEdit exam) {
+        if (StringUtils.isBlank(exam.getName())) {
+            throw new ParameterException("考试名称不能为空");
+        }
+        if (StringUtils.length(exam.getName()) > 100) {
+            throw new ParameterException("考试名称限制100字以内");
+        }
+
+        if (exam.getId() != null) {
+            // 修改考试
+            ExamEntity examEntity = this.getById(exam.getId());
+            if (examEntity == null) {
+                throw ParameterExceptions.EXAM_NOT_FOUND;
+            }
+
+            LambdaUpdateWrapper<ExamEntity> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.set(ExamEntity::getUpdateTime, System.currentTimeMillis());
+            updateWrapper.set(ExamEntity::getUpdaterId, exam.getOperateUserId());
+            updateWrapper.set(ExamEntity::getName, exam.getName());
+            updateWrapper.eq(ExamEntity::getId, exam.getId());
+            this.update(updateWrapper);
+
+            return exam.getId();
+        }
+
+        // 新增考试
+        ExamEntity examEntity = new ExamEntity();
+        examEntity.setName(exam.getName());
+        examEntity.setEnable(true);
+        examEntity.setCreatorId(exam.getOperateUserId());
+        examEntity.setUpdaterId(exam.getOperateUserId());
+        examEntity.setCreateTime(System.currentTimeMillis());
+        examEntity.setUpdateTime(System.currentTimeMillis());
+
+        examEntity.setMode(ExamMode.CET);
+        examEntity.setScanByPackage(true);
+        examEntity.setAllowUnexistPaper(false);
+        examEntity.setAnswerFrontCardType(1);
+        examEntity.setEnableSinglePageAnswer(false);
+        examEntity.setEnableUpload(false);
+        examEntity.setEnableSyncVerify(true);
+        examEntity.setImageTransferMode(ImageTransferMode.CET);
+        examEntity.setImageCheckRatio(1d);
+        // examEntity.setPaperTypeBarcodeContent(null);
+        // examEntity.setAbsentBarcodeContent(null);
+        // examEntity.setDataSyncTime(null);
+        // examEntity.setCardSyncTime(null);
+        // examEntity.setExamNumberFillCount(null);
+        this.save(examEntity);
+
+        return examEntity.getId();
+    }
+
     @Override
     public ExamInfoVo getExamInfoVo(Long examId, User accessUser) {
         ExamEntity exam = this.getById(examId);

+ 38 - 0
src/main/java/cn/com/qmth/scancentral/vo/examinfo/ExamEdit.java

@@ -0,0 +1,38 @@
+package cn.com.qmth.scancentral.vo.examinfo;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class ExamEdit {
+
+    private Long id;
+
+    private String name;
+
+    @ApiModelProperty(value = "操作用户ID", hidden = true)
+    private Long operateUserId;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getOperateUserId() {
+        return operateUserId;
+    }
+
+    public void setOperateUserId(Long operateUserId) {
+        this.operateUserId = operateUserId;
+    }
+
+}