浏览代码

项目列表

xiatian 5 年之前
父节点
当前提交
cf9bf27993

+ 17 - 1
examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/controller/ProjectController.java

@@ -1,9 +1,12 @@
 package cn.com.qmth.examcloud.core.reports.api.controller;
 
+import java.util.List;
+
 import javax.validation.Valid;
 import javax.validation.constraints.NotBlank;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -24,6 +27,7 @@ import cn.com.qmth.examcloud.core.reports.base.bean.UpdateProjectReq;
 import cn.com.qmth.examcloud.core.reports.base.bean.UpdateProjectScoreReq;
 import cn.com.qmth.examcloud.core.reports.base.enums.DataOrigin;
 import cn.com.qmth.examcloud.core.reports.service.ProjectService;
+import cn.com.qmth.examcloud.examwork.api.bean.ExamBean;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -35,7 +39,19 @@ import io.swagger.annotations.ApiParam;
 public class ProjectController extends ControllerSupport {
 	@Autowired
 	private ProjectService projectService;
-	
+	@ApiOperation(value="查询已结束的考试")
+    @GetMapping(value="/allExam")
+    public List<ExamBean> queryAllExam() {
+        User user=getAccessUser();
+        List<ExamBean> list = projectService.queryAllExam(user.getRootOrgId());
+        return list;
+    }
+    @DeleteMapping("/{id}")
+    @ApiOperation(value = "删除项目")
+    public void delProject(@PathVariable Long id) {
+    	User user=getAccessUser();
+        projectService.delProject(id,user.getRootOrgId());
+    }
     @PostMapping("/add")
     @ApiOperation(value = "新增项目")
     public Long addProject(@RequestBody @Valid AddProjectReq req) {

+ 0 - 1
examcloud-core-reports-base/src/main/java/cn/com/qmth/examcloud/core/reports/base/bean/AddProjectReq.java

@@ -41,7 +41,6 @@ public class AddProjectReq implements JsonSerializable {
 	private DataOrigin dataOrigin;
 
 	// 样本数量
-	@NotNull(message = "样本数量不能为空")
     @ApiModelProperty(value = "样本数量")
 	private Integer sampleCount;
 

+ 2 - 1
examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/ProjectRepo.java

@@ -17,5 +17,6 @@ public interface ProjectRepo extends JpaRepository<ProjectEntity, Long>,
 	@Modifying
 	@Query(value = "update ec_r_project set course_count = ?2,org_count=?3 where id =?1 ", nativeQuery = true)
 	int updateProjectCourseOrgCount(Long id, Integer courseCount, Integer orgCount);
-	
+	@Modifying
+	int deleteByIdAndRootOrgId(Long id, Long rootOrgId);
 }

+ 5 - 0
examcloud-core-reports-service/pom.xml

@@ -32,6 +32,11 @@
             <artifactId>examcloud-global-api</artifactId>
             <version>${examcloud.version}</version>
         </dependency>
+        <dependency>
+            <groupId>cn.com.qmth.examcloud.rpc</groupId>
+            <artifactId>examcloud-core-examwork-api-client</artifactId>
+            <version>${examcloud.version}</version>
+        </dependency>
 	</dependencies>
 
 </project>

+ 5 - 1
examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/ProjectService.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.examcloud.core.reports.service;
 
+import java.util.List;
+
 import cn.com.qmth.examcloud.api.commons.exchange.PageInfo;
 import cn.com.qmth.examcloud.core.reports.api.bean.ProjectInfoBean;
 import cn.com.qmth.examcloud.core.reports.api.request.GetProjectInfoBeanReq;
@@ -11,9 +13,10 @@ import cn.com.qmth.examcloud.core.reports.base.bean.QueryProjectPageReq;
 import cn.com.qmth.examcloud.core.reports.base.bean.UpdateProjectReq;
 import cn.com.qmth.examcloud.core.reports.base.bean.UpdateProjectScoreReq;
 import cn.com.qmth.examcloud.core.reports.dao.entity.ProjectEntity;
+import cn.com.qmth.examcloud.examwork.api.bean.ExamBean;
 
 public interface ProjectService {
-
+	public void delProject(Long id,Long rootOrgId);
 	public Long addProject(AddProjectReq req,Long rootOrgId);
 	public void updateProject(UpdateProjectReq req,Long rootOrgId);
 	public void updateEnable(String ids,Boolean enable,Long rootOrgId);
@@ -24,4 +27,5 @@ public interface ProjectService {
 	public void updateScore(UpdateProjectScoreReq req,Long rootOrgId);
 	public ProjectEntity findProjectById(Long projectId);
 	public void updateProjectCourseOrgCount(UpdateProjectCourseOrgCountReq req);
+	public List<ExamBean> queryAllExam(Long rootOrgId);
 }

+ 71 - 0
examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/impl/ProjectServiceImpl.java

@@ -3,6 +3,7 @@ package cn.com.qmth.examcloud.core.reports.service.impl;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -23,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.google.common.collect.Lists;
 
+import cn.com.qmth.examcloud.api.commons.enums.ExamType;
 import cn.com.qmth.examcloud.api.commons.exchange.PageInfo;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.reports.api.bean.ProjectInfoBean;
@@ -39,7 +41,13 @@ import cn.com.qmth.examcloud.core.reports.base.enums.DataOrigin;
 import cn.com.qmth.examcloud.core.reports.base.enums.ReportStatus;
 import cn.com.qmth.examcloud.core.reports.dao.ProjectRepo;
 import cn.com.qmth.examcloud.core.reports.dao.entity.ProjectEntity;
+import cn.com.qmth.examcloud.core.reports.service.ExamCourseDataReportService;
+import cn.com.qmth.examcloud.core.reports.service.ExamOrgReportService;
 import cn.com.qmth.examcloud.core.reports.service.ProjectService;
+import cn.com.qmth.examcloud.examwork.api.ExamCloudService;
+import cn.com.qmth.examcloud.examwork.api.bean.ExamBean;
+import cn.com.qmth.examcloud.examwork.api.request.GetExamListReq;
+import cn.com.qmth.examcloud.examwork.api.response.GetExamListResp;
 import cn.com.qmth.examcloud.task.api.ReportsComputeCloudService;
 import cn.com.qmth.examcloud.task.api.request.AddReportsComputeReq;
 import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
@@ -47,18 +55,30 @@ import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
 @Service
 public class ProjectServiceImpl implements ProjectService {
 	@Autowired
+    private ExamOrgReportService examOrgReportService;
+	@Autowired
+    private ExamCourseDataReportService examCourseDataReportService;
+	@Autowired
+    private ExamCloudService examCloudService;
+	@Autowired
 	private ProjectRepo projectRepo;
 	@Autowired
 	private ReportsComputeCloudService reportsComputeCloudService;
 	@Transactional
 	@Override
 	public Long addProject(AddProjectReq req, Long rootOrgId) {
+		Date now=new Date();
 		ProjectEntity pe = new ProjectEntity();
 		BeanUtils.copyProperties(req, pe);
+		pe.setCreationTime(now);
+		pe.setUpdateTime(now);
 		pe.setRootOrgId(rootOrgId);
 		pe.setEnable(true);
 		pe.setReportStatus(ReportStatus.NONE);
 		pe.setExamIds(StringUtils.join(req.getExamIds().toArray(), ","));
+		if(pe.getDataOrigin().equals(DataOrigin.SYNC)) {
+			pe.setSampleCount(req.getExamIds().size());
+		}
 		projectRepo.save(pe);
 		return pe.getId();
 	}
@@ -263,6 +283,7 @@ public class ProjectServiceImpl implements ProjectService {
 		if(scores.get(scores.size()-1)>=totalScore) {
 			throw new StatusException("1000041", "最后一个分段分数必须小于满分分数");
 		}
+		pe.setUpdateTime(new Date());
 		pe.setPassScore(passScore);
 		pe.setTotalScore(totalScore);
 		pe.setPartitionCount(scores.size());
@@ -285,4 +306,54 @@ public class ProjectServiceImpl implements ProjectService {
 	public void updateProjectCourseOrgCount(UpdateProjectCourseOrgCountReq req) {
 		projectRepo.updateProjectCourseOrgCount(req.getProjectId(), req.getCourseCount(), req.getOrgCount());
 	}
+	@Override
+	public List<ExamBean> queryAllExam(Long rootOrgId) {
+		Date now=new Date();
+		List<ExamBean> exams=new ArrayList<ExamBean>();
+        //从考务获取启用的考试列表集合信息
+        GetExamListReq getExamListReq = new GetExamListReq();
+        getExamListReq.setEnable(true);//启用的考试列表
+        getExamListReq.setRootOrgId(rootOrgId);
+        for(;;) {
+        	GetExamListResp getExamListResp = examCloudService.getExamList(getExamListReq);
+        	if(getExamListResp.getExamList()==null||getExamListResp.getExamList().size()==0) {
+        		break;
+        	}else {
+        		exams.addAll(getExamListResp.getExamList());
+        		getExamListReq.setStart(getExamListResp.getNext());
+        	}
+        }
+        //按一定条件过滤考试集合
+        exams = exams.stream().filter(exam -> {
+            if (exam.getExamType().equals(ExamType.PRACTICE.toString())) {//练习不创建
+                return false;
+            }
+            if(now.before(exam.getEndTime())) {
+            	return false;
+            }
+            return true;
+        }).collect(Collectors.toList());
+        return exams;
+	}
+
+	@Transactional
+	@Override
+	public void delProject(Long id,Long rootOrgId) {
+		ProjectEntity pe = GlobalHelper.getEntity(projectRepo,id, ProjectEntity.class);
+		if (pe == null) {
+			throw new StatusException("1000041", "项目不存在");
+		}
+		if (!rootOrgId.equals(pe.getRootOrgId())) {
+			throw new StatusException("1000042", "非法操作");
+		}
+		if(pe.getReportStatus().equals(ReportStatus.WAITCOMPUTE)) {
+			throw new StatusException("1000044", "不能删除待计算的项目");
+		}
+		if(pe.getReportStatus().equals(ReportStatus.COMPUTING)) {
+			throw new StatusException("1000045", "不能删除计算中的项目");
+		}
+		examOrgReportService.deleteByProject(id, rootOrgId);
+		examCourseDataReportService.deleteByProject(id, rootOrgId);
+		projectRepo.deleteByIdAndRootOrgId(id,rootOrgId);
+	}
 }