소스 검색

考试创建和更新

WANG 6 년 전
부모
커밋
1872c8ac4e

+ 5 - 4
examcloud-core-examwork-api-provider/src/main/java/cn/com/qmth/examcloud/core/examwork/api/controller/ExamController.java

@@ -43,6 +43,7 @@ import cn.com.qmth.examcloud.commons.base.helpers.DynamicEnum;
 import cn.com.qmth.examcloud.commons.base.helpers.DynamicEnumManager;
 import cn.com.qmth.examcloud.commons.base.util.JsonUtil;
 import cn.com.qmth.examcloud.commons.base.util.RegExpUtil;
+import cn.com.qmth.examcloud.commons.web.enums.DataExecutionStatus;
 import cn.com.qmth.examcloud.commons.web.helpers.page.PageInfo;
 import cn.com.qmth.examcloud.commons.web.redis.RedisClient;
 import cn.com.qmth.examcloud.commons.web.security.bean.User;
@@ -486,7 +487,7 @@ public class ExamController extends ControllerSupport {
 	@ApiOperation(value = "新增考试批次", notes = "新增")
 	@PostMapping()
 	public ExamEntity addExam(@RequestBody ExamDomain domain) {
-		return saveExam(domain);
+		return saveExam(domain, DataExecutionStatus.CREATION);
 	}
 
 	/**
@@ -499,7 +500,7 @@ public class ExamController extends ControllerSupport {
 	@ApiOperation(value = "更新考试批次", notes = "更新")
 	@PutMapping()
 	public ExamEntity updateExam(@RequestBody ExamDomain domain) {
-		return saveExam(domain);
+		return saveExam(domain, DataExecutionStatus.UPDATE);
 	}
 
 	/**
@@ -509,7 +510,7 @@ public class ExamController extends ControllerSupport {
 	 * @param domain
 	 * @return
 	 */
-	private ExamEntity saveExam(ExamDomain domain) {
+	private ExamEntity saveExam(ExamDomain domain, DataExecutionStatus es) {
 		trim(domain, false);
 
 		User accessUser = getAccessUser();
@@ -532,7 +533,7 @@ public class ExamController extends ControllerSupport {
 		}
 		examInfo.setProperties(properties);
 
-		ExamEntity saved = examService.saveExam(examInfo);
+		ExamEntity saved = examService.saveExam(examInfo, es);
 
 		return saved;
 	}

+ 3 - 2
examcloud-core-examwork-api-provider/src/main/java/cn/com/qmth/examcloud/core/examwork/api/provider/ExamCloudServiceProvider.java

@@ -28,6 +28,7 @@ import com.google.common.collect.Lists;
 import cn.com.qmth.examcloud.commons.base.exception.StatusException;
 import cn.com.qmth.examcloud.commons.base.helpers.DynamicEnum;
 import cn.com.qmth.examcloud.commons.base.helpers.DynamicEnumManager;
+import cn.com.qmth.examcloud.commons.web.enums.DataExecutionStatus;
 import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
 import cn.com.qmth.examcloud.core.examwork.base.enums.ExamProperty;
 import cn.com.qmth.examcloud.core.examwork.dao.ExamCourseRelationRepo;
@@ -92,7 +93,7 @@ public class ExamCloudServiceProvider extends ControllerSupport implements ExamC
 	@Autowired
 	ExamCourseRelationRepo examCourseRelationRepo;
 
-	@ApiOperation(value = "新增考试批次", notes = "新增")
+	@ApiOperation(value = "保存考试批次", notes = "保存")
 	@PostMapping("saveExam")
 	@Override
 	public SaveExamResp saveExam(@RequestBody SaveExamReq req) {
@@ -120,7 +121,7 @@ public class ExamCloudServiceProvider extends ControllerSupport implements ExamC
 		Map<String, String> properties = req.getProperties();
 		examInfo.setProperties(properties);
 
-		ExamEntity saved = examService.saveExam(examInfo);
+		ExamEntity saved = examService.saveExam(examInfo, DataExecutionStatus.CREATION_OR_UPDATE);
 
 		SaveExamResp resp = new SaveExamResp();
 		resp.setExamId(saved.getId());

+ 2 - 1
examcloud-core-examwork-service/src/main/java/cn/com/qmth/examcloud/core/examwork/service/ExamService.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.examcloud.core.examwork.service;
 
+import cn.com.qmth.examcloud.commons.web.enums.DataExecutionStatus;
 import cn.com.qmth.examcloud.core.examwork.dao.entity.ExamEntity;
 import cn.com.qmth.examcloud.core.examwork.dao.entity.ExamOrgSettingsEntity;
 import cn.com.qmth.examcloud.core.examwork.service.bean.ExamInfo;
@@ -21,7 +22,7 @@ public interface ExamService {
 	 * @param examInfo
 	 * @return
 	 */
-	ExamEntity saveExam(ExamInfo examInfo);
+	ExamEntity saveExam(ExamInfo examInfo, DataExecutionStatus es);
 
 	/**
 	 * 保存考试机构设置

+ 52 - 7
examcloud-core-examwork-service/src/main/java/cn/com/qmth/examcloud/core/examwork/service/impl/ExamServiceImpl.java

@@ -13,6 +13,7 @@ import com.google.common.collect.Maps;
 import cn.com.qmth.examcloud.commons.base.exception.StatusException;
 import cn.com.qmth.examcloud.commons.base.helpers.DynamicEnum;
 import cn.com.qmth.examcloud.commons.base.helpers.DynamicEnumManager;
+import cn.com.qmth.examcloud.commons.web.enums.DataExecutionStatus;
 import cn.com.qmth.examcloud.core.basic.api.OrgCloudService;
 import cn.com.qmth.examcloud.core.basic.api.bean.OrgBean;
 import cn.com.qmth.examcloud.core.basic.api.request.GetOrgReq;
@@ -87,7 +88,7 @@ public class ExamServiceImpl implements ExamService {
 	 * qmth.examcloud.core.examwork.service.bean.ExamInfo)
 	 */
 	@Override
-	public ExamEntity saveExam(ExamInfo examInfo) {
+	public ExamEntity saveExam(ExamInfo examInfo, DataExecutionStatus es) {
 
 		if (null == examInfo.getExamType()) {
 			throw new StatusException("E-001005", "考试类型为空");
@@ -109,15 +110,59 @@ public class ExamServiceImpl implements ExamService {
 		Map<String, String> properties = examInfo.getProperties();
 		Map<DynamicEnum, String> map = checkAndGetExamProperties(properties);
 
-		ExamEntity exam = examRepo.findByNameAndRootOrgId(examInfo.getName(),
-				examInfo.getRootOrgId());
-		if (null != exam) {
-			if (!exam.getId().equals(examInfo.getId())) {
-				throw new StatusException("E-001001", "考试名称已存在");
+		ExamEntity exam = null;
+
+		DataExecutionStatus realStatus = null;
+		// 更新
+		if (es.equals(DataExecutionStatus.UPDATE)) {
+			if (null != examInfo.getId()) {
+				exam = examRepo.findOne(examInfo.getId());
+				if (null == exam) {
+					throw new StatusException("E-002001", "id is wrong");
+				}
+			} else {
+				exam = examRepo.findByNameAndRootOrgId(examInfo.getName(), examInfo.getRootOrgId());
+				if (null == exam) {
+					throw new StatusException("E-002002", "name is wrong");
+				}
+			}
+			if (!exam.getRootOrgId().equals(examInfo.getRootOrgId())) {
+				throw new StatusException("E-002003", "rootOrgId is wrong");
+			}
+			realStatus = DataExecutionStatus.UPDATE;
+		} else if (es.equals(DataExecutionStatus.CREATION)) {
+			if (null != examInfo.getId()) {
+				throw new StatusException("E-002004", "id is needless");
+			}
+			ExamEntity tempExam = examRepo.findByNameAndRootOrgId(examInfo.getName(),
+					examInfo.getRootOrgId());
+			if (null != tempExam) {
+				throw new StatusException("E-002005", "考试名称已存在");
 			}
-		} else {
 			exam = new ExamEntity();
 			exam.setEnable(true);
+			realStatus = DataExecutionStatus.CREATION;
+		} else if (es.equals(DataExecutionStatus.CREATION_OR_UPDATE)) {
+			if (null != examInfo.getId()) {
+				throw new StatusException("E-002006", "id is needless");
+			}
+			exam = examRepo.findByNameAndRootOrgId(examInfo.getName(), examInfo.getRootOrgId());
+			if (null == exam) {
+				exam = new ExamEntity();
+				exam.setEnable(true);
+				realStatus = DataExecutionStatus.CREATION;
+			} else {
+				realStatus = DataExecutionStatus.UPDATE;
+			}
+		}
+
+		if (realStatus.equals(DataExecutionStatus.CREATION)) {
+			if (null == examInfo.getBeginTime()) {
+				throw new StatusException("E-002006", "beginTime is null");
+			}
+			if (null == examInfo.getEndTime()) {
+				throw new StatusException("E-002006", "endTime is null");
+			}
 		}
 
 		exam.setExamType(examInfo.getExamType());