Forráskód Böngészése

报表计算任务

xiatian 6 éve
szülő
commit
e62fb70102

+ 42 - 0
examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/provider/ProjectCloudServiceProvider.java

@@ -0,0 +1,42 @@
+package cn.com.qmth.examcloud.core.reports.api.provider;
+
+import org.examcloud.core.reports.api.ProjectCloudService;
+import org.examcloud.core.reports.api.request.UpdateProjectStatusReq;
+import org.examcloud.core.reports.api.response.UpdateProjectStatusResp;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.com.qmth.examcloud.commons.exception.StatusException;
+import cn.com.qmth.examcloud.core.reports.service.ProjectService;
+import cn.com.qmth.examcloud.web.support.ControllerSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@RestController
+@Api(tags = "项目接口")
+@RequestMapping("${$rmp.cloud.reports}"+"project")
+public class ProjectCloudServiceProvider extends ControllerSupport implements ProjectCloudService {
+
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 7840494213770095239L;
+	@Autowired
+	private ProjectService projectService;
+
+	@ApiOperation(value = "批量保存")
+    @PostMapping("/updateStatus")
+	@Override
+	public UpdateProjectStatusResp updateProjectStatus(@RequestBody UpdateProjectStatusReq req) {
+		if(req.getProjectId()==null) {
+			throw new StatusException("1000001", "projectId不能为空");
+		}
+		projectService.updateProjectStatus(req);
+		return new UpdateProjectStatusResp();
+	}
+
+}

+ 20 - 2
examcloud-core-reports-base/src/main/java/cn/com/qmth/examcloud/core/reports/base/enums/AnalyseType.java

@@ -1,6 +1,24 @@
 package cn.com.qmth.examcloud.core.reports.base.enums;
 
 public enum AnalyseType {
-	SINGLE,//单项分析
-	TREND;//趋势分析
+	SINGLE("单项分析"), TREND("单项分析");
+	// ===========================================================================
+
+	/**
+	 * 描述
+	 */
+	private String desc;
+
+	/**
+	 * 构造函数
+	 *
+	 * @param desc
+	 */
+	private AnalyseType(String desc) {
+		this.desc = desc;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
 }

+ 20 - 2
examcloud-core-reports-base/src/main/java/cn/com/qmth/examcloud/core/reports/base/enums/DataOrigin.java

@@ -1,6 +1,24 @@
 package cn.com.qmth.examcloud.core.reports.base.enums;
 
 public enum DataOrigin {
-	SYNC,//同步
-	IMPORT;//导入
+	SYNC("同步"), IMPORT("导入");
+	// ===========================================================================
+
+	/**
+	 * 描述
+	 */
+	private String desc;
+
+	/**
+	 * 构造函数
+	 *
+	 * @param desc
+	 */
+	private DataOrigin(String desc) {
+		this.desc = desc;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
 }

+ 24 - 4
examcloud-core-reports-base/src/main/java/cn/com/qmth/examcloud/core/reports/base/enums/ReportStatus.java

@@ -1,9 +1,29 @@
 package cn.com.qmth.examcloud.core.reports.base.enums;
 
 public enum ReportStatus {
-	NONE,//未计算
-	COMPUTING,//计算中
-	SUCCESS,//计算成功
-	FAIL//计算失败
+	NONE(" 未计算"),
+	COMPUTING("计算中"), 
+	SUCCESS("计算成功"),
+	FAIL("计算失败"),
+	STOP("计算终止")
 	;
+	// ===========================================================================
+
+	/**
+	 * 描述
+	 */
+	private String desc;
+
+	/**
+	 * 构造函数
+	 *
+	 * @param desc
+	 */
+	private ReportStatus(String desc) {
+		this.desc = desc;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
 }

+ 3 - 0
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 org.examcloud.core.reports.api.request.UpdateProjectStatusReq;
+
 import cn.com.qmth.examcloud.api.commons.exchange.PageInfo;
 import cn.com.qmth.examcloud.core.reports.base.bean.AddProjectReq;
 import cn.com.qmth.examcloud.core.reports.base.bean.ProjectBean;
@@ -12,4 +14,5 @@ public interface ProjectService {
 	public void updateProject(UpdateProjectReq req,Long rootOrgId);
 	public void updateEnable(String ids,Boolean enable,Long rootOrgId);
 	public PageInfo<ProjectBean> queryPage(QueryProjectPageReq req,Integer pageNo,Integer pageSize,Long rootOrgId);
+	public void updateProjectStatus(UpdateProjectStatusReq req) ;
 }

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

@@ -8,6 +8,7 @@ import java.util.stream.Collectors;
 import javax.persistence.criteria.Predicate;
 
 import org.apache.commons.lang3.StringUtils;
+import org.examcloud.core.reports.api.request.UpdateProjectStatusReq;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -41,8 +42,8 @@ public class ProjectServiceImpl implements ProjectService {
 
 	@Transactional
 	@Override
-	public Long addProject(AddProjectReq req,Long rootOrgId) {
-		ProjectEntity pe=new ProjectEntity();
+	public Long addProject(AddProjectReq req, Long rootOrgId) {
+		ProjectEntity pe = new ProjectEntity();
 		BeanUtils.copyProperties(req, pe);
 		pe.setRootOrgId(rootOrgId);
 		pe.setEnable(true);
@@ -54,25 +55,27 @@ public class ProjectServiceImpl implements ProjectService {
 
 	@Transactional
 	@Override
-	public void updateProject(UpdateProjectReq req,Long rootOrgId) {
+	public void updateProject(UpdateProjectReq req, Long rootOrgId) {
 		ProjectEntity pe = GlobalHelper.getEntity(projectRepo, req.getId(), ProjectEntity.class);
-		if(pe==null) {
+		if (pe == null) {
 			throw new StatusException("1000001", "项目不存在");
 		}
-		if(!rootOrgId.equals(pe.getRootOrgId())) {
+		if (!rootOrgId.equals(pe.getRootOrgId())) {
 			throw new StatusException("1000002", "RootOrgId不一致");
 		}
 		pe.setName(req.getName());
 		pe.setRemarks(req.getRemarks());
 		projectRepo.save(pe);
 	}
+
 	@Transactional
 	@Override
-	public void updateEnable(String ids, Boolean enable,Long rootOrgId) {
+	public void updateEnable(String ids, Boolean enable, Long rootOrgId) {
 		List<Long> idList = Arrays.asList(ids.split(",")).stream().map(str -> Long.parseLong(str))
-                .collect(Collectors.toList());
+				.collect(Collectors.toList());
 		projectRepo.updateEnable(idList, rootOrgId, enable);
 	}
+
 	private String toSqlSearchPattern(String column) {
 		if (StringUtils.isBlank(column)) {
 			return "%";
@@ -82,12 +85,13 @@ public class ProjectServiceImpl implements ProjectService {
 			return column;
 		}
 	}
+
 	@Override
-	public PageInfo<ProjectBean> queryPage(QueryProjectPageReq req, Integer pageNo, Integer pageSize,Long rootOrgId) {
-		Long id=req.getId();
-		String name=req.getName();
-		AnalyseType analyseType=req.getAnalyseType();
-		DataOrigin dataOrigin=req.getDataOrigin();
+	public PageInfo<ProjectBean> queryPage(QueryProjectPageReq req, Integer pageNo, Integer pageSize, Long rootOrgId) {
+		Long id = req.getId();
+		String name = req.getName();
+		AnalyseType analyseType = req.getAnalyseType();
+		DataOrigin dataOrigin = req.getDataOrigin();
 		Specification<ProjectEntity> specification = (root, query, cb) -> {
 			List<Predicate> predicates = new ArrayList<>();
 			predicates.add(cb.equal(root.get("rootOrgId"), rootOrgId));
@@ -108,8 +112,7 @@ public class ProjectServiceImpl implements ProjectService {
 			return cb.and(predicates.toArray(new Predicate[predicates.size()]));
 		};
 
-		PageRequest pageRequest = PageRequest.of(pageNo-1, pageSize,
-				new Sort(Direction.DESC, "id"));
+		PageRequest pageRequest = PageRequest.of(pageNo - 1, pageSize, new Sort(Direction.DESC, "id"));
 
 		Page<ProjectEntity> projects = projectRepo.findAll(specification, pageRequest);
 
@@ -118,55 +121,43 @@ public class ProjectServiceImpl implements ProjectService {
 		for (ProjectEntity cur : projects) {
 			ProjectBean bean = new ProjectBean();
 			BeanUtils.copyProperties(cur, bean);
-			bean.setAnalyseTypeName(getAnalyseTypeName(bean.getAnalyseType()));
-			bean.setDataOriginName(getDataOriginName(bean.getDataOrigin()));
-			bean.setReportStatusName(getReportStatusName(bean.getReportStatus()));
-			if(StringUtils.isNotBlank(cur.getExamIds())) {
+			bean.setAnalyseTypeName(bean.getAnalyseType().getDesc());
+			bean.setDataOriginName(bean.getDataOrigin().getDesc());
+			bean.setReportStatusName(bean.getReportStatus().getDesc());
+			if (StringUtils.isNotBlank(cur.getExamIds())) {
 				List<Long> temList = Arrays.asList(cur.getExamIds().split(",")).stream().map(str -> Long.parseLong(str))
-		                .collect(Collectors.toList());
+						.collect(Collectors.toList());
 				bean.setExamIds(temList);
 			}
-			if(StringUtils.isNotBlank(cur.getPartitionDetails())) {
-				List<Double> temList = Arrays.asList(cur.getPartitionDetails().split(",")).stream().map(str -> Double.parseDouble(str))
-		                .collect(Collectors.toList());
+			if (StringUtils.isNotBlank(cur.getPartitionDetails())) {
+				List<Double> temList = Arrays.asList(cur.getPartitionDetails().split(",")).stream()
+						.map(str -> Double.parseDouble(str)).collect(Collectors.toList());
 				bean.setPartitionDetails(temList);
 			}
 			ret.add(bean);
 		}
 		return new PageInfo<ProjectBean>(projects, ret);
 	}
-	private String getAnalyseTypeName(AnalyseType e) {
-		if(e.equals(AnalyseType.SINGLE)) {
-			return "单项分析";
-		}
-		if(e.equals(AnalyseType.TREND)) {
-			return "趋势分析";
-		}
-		return "";
-	}
-	private String getDataOriginName(DataOrigin e) {
-		if(e.equals(DataOrigin.SYNC)) {
-			return "同步";
-		}
-		if(e.equals(DataOrigin.IMPORT)) {
-			return "导入";
-		}
-		return "";
-	}
-	private String getReportStatusName(ReportStatus e) {
-		if(e.equals(ReportStatus.NONE)) {
-			return "未计算";
-		}
-		if(e.equals(ReportStatus.COMPUTING)) {
-			return "计算中";
-		}
-		if(e.equals(ReportStatus.SUCCESS)) {
-			return "计算成功";
+
+	@Transactional
+	@Override
+	public void updateProjectStatus(UpdateProjectStatusReq req) {
+		Long id = req.getProjectId();
+		ProjectEntity pe = GlobalHelper.getEntity(projectRepo, id, ProjectEntity.class);
+		if (pe == null) {
+			throw new StatusException("1000003", "项目不存在");
 		}
-		if(e.equals(ReportStatus.FAIL)) {
-			return "计算失败";
+		if(req.getStatus()==2) {
+			pe.setReportStatus(ReportStatus.COMPUTING);
+		}else if(req.getStatus()==3) {
+			pe.setReportStatus(ReportStatus.SUCCESS);
+		}else if(req.getStatus()==4) {
+			pe.setReportStatus(ReportStatus.FAIL);
+		}else if(req.getStatus()==5) {
+			pe.setReportStatus(ReportStatus.STOP);
+		}else {
+			throw new StatusException("1000004", "无效的Status");
 		}
-		return "";
+		projectRepo.save(pe);
 	}
-
 }