xiatian 5 éve
szülő
commit
4f20ecec2a

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

@@ -39,67 +39,84 @@ 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) {
-    	if(req.getDataOrigin().equals(DataOrigin.SYNC)&&(req.getExamIds()==null||req.getExamIds().size()==0)) {
-    		throw new StatusException("1000001", "请选择考试");
-    	}
-    	if(req.getDataOrigin().equals(DataOrigin.IMPORT)) {
-    		throw new StatusException("1000002", "暂不支持导入");
-    	}
-    	User user=getAccessUser();
-        return projectService.addProject(req,user.getRootOrgId());
-    }
-    @PostMapping("/update")
-    @ApiOperation(value = "修改项目")
-    public void updateProject(@RequestBody @Valid UpdateProjectReq req) {
-    	User user=getAccessUser();
-        projectService.updateProject(req,user.getRootOrgId());
-    }
-    @PutMapping("/enable")
-    @ApiOperation(value = "启用")
-    public void enable(@RequestParam(required = true)@NotBlank(message = "请选择项目") @ApiParam(value = "项目Id集合") String ids) {
-    	User user=getAccessUser();
-        projectService.updateEnable(ids, true, user.getRootOrgId());
-    }
-    @PutMapping("/disable")
-    @ApiOperation(value = "禁用")
-    public void disable(@RequestParam(required = true)@NotBlank(message = "请选择项目") @ApiParam(value = "项目Id集合") String ids) {
-    	User user=getAccessUser();
-        projectService.updateEnable(ids, false, user.getRootOrgId());
-    }
-    @GetMapping("page/{pageNo}/{pageSize}")
-    @ApiOperation(value = "项目列表分页查询")
-    public PageInfo<ProjectBean> queryPage(@ModelAttribute QueryProjectPageReq req,
-                                        @PathVariable @ApiParam(value = "pageNo = 1,2,3...") Integer pageNo, @PathVariable Integer pageSize) {
-    	User user=getAccessUser();
-    	return projectService.queryPage(req, pageNo, pageSize,user.getRootOrgId());
-    }
-    @PostMapping("/compute/{id}")
-    @ApiOperation(value = "开始计算")
-    public void addReportsCompute(@PathVariable Long id) {
-    	User user=getAccessUser();
-        projectService.addReportsCompute(id, user.getRootOrgId());
-    }
-    @PostMapping("/updateScore")
-    @ApiOperation(value = "修改项目分数")
-    public void updateScore(@RequestBody @Valid UpdateProjectScoreReq req) {
-    	User user=getAccessUser();
-        projectService.updateScore(req,user.getRootOrgId());
-    }
-    
+
+	@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) {
+		if (req.getDataOrigin().equals(DataOrigin.SYNC) && (req.getExamIds() == null || req.getExamIds().size() == 0)) {
+			throw new StatusException("1000001", "请选择考试");
+		}
+		if (req.getDataOrigin().equals(DataOrigin.IMPORT)) {
+			throw new StatusException("1000002", "暂不支持导入");
+		}
+		User user = getAccessUser();
+		return projectService.addProject(req, user.getRootOrgId());
+	}
+
+	@PostMapping("/update")
+	@ApiOperation(value = "修改项目")
+	public void updateProject(@RequestBody @Valid UpdateProjectReq req) {
+		User user = getAccessUser();
+		projectService.updateProject(req, user.getRootOrgId());
+	}
+
+	@PutMapping("/enable")
+	@ApiOperation(value = "启用")
+	public void enable(
+			@RequestParam(required = true) @NotBlank(message = "请选择项目") @ApiParam(value = "项目Id集合") String ids) {
+		User user = getAccessUser();
+		projectService.updateEnable(ids, true, user.getRootOrgId());
+	}
+
+	@PutMapping("/disable")
+	@ApiOperation(value = "禁用")
+	public void disable(
+			@RequestParam(required = true) @NotBlank(message = "请选择项目") @ApiParam(value = "项目Id集合") String ids) {
+		User user = getAccessUser();
+		projectService.updateEnable(ids, false, user.getRootOrgId());
+	}
+
+	@GetMapping("page/{pageNo}/{pageSize}")
+	@ApiOperation(value = "项目列表分页查询")
+	public PageInfo<ProjectBean> queryPage(@ModelAttribute QueryProjectPageReq req,
+			@PathVariable @ApiParam(value = "pageNo = 1,2,3...") Integer pageNo, @PathVariable Integer pageSize) {
+		User user = getAccessUser();
+		return projectService.queryPage(req, pageNo, pageSize, user.getRootOrgId());
+	}
+
+	@PostMapping("/compute/{id}")
+	@ApiOperation(value = "开始计算")
+	public void addReportsCompute(@PathVariable Long id) {
+		User user = getAccessUser();
+		projectService.addReportsCompute(id, user.getRootOrgId());
+	}
+
+	@PostMapping("/updateScore")
+	@ApiOperation(value = "修改项目分数")
+	public void updateScore(@RequestBody @Valid UpdateProjectScoreReq req) {
+		User user = getAccessUser();
+		projectService.updateScore(req, user.getRootOrgId());
+	}
+
+	@GetMapping("{id}")
+	@ApiOperation(value = "查询项目")
+	public ProjectBean getProject(@PathVariable @ApiParam(value = "id") Long id) {
+		User user = getAccessUser();
+		return projectService.getProject(id, user.getRootOrgId());
+	}
 }

+ 3 - 3
examcloud-core-reports-base/src/main/java/cn/com/qmth/examcloud/core/reports/base/bean/ExamOrgMainTopTen.java

@@ -34,7 +34,7 @@ public class ExamOrgMainTopTen {
 	@ApiModelProperty(value = "及格/实考人数比例前十")
 	private List<ExamOrgReportMainBean> passParticipantRatioDesc;
 	@ApiModelProperty(value = "分段人数")
-	private List<PartitionTopTen<ExamOrgReportMainBean>> partition;
+	private List<PartitionTopTen<PartitionDataBean>> partition;
 	public List<ExamOrgReportMainBean> getParticipant() {
 		return participant;
 	}
@@ -71,10 +71,10 @@ public class ExamOrgMainTopTen {
 	public void setPassDesc(List<ExamOrgReportMainBean> passDesc) {
 		this.passDesc = passDesc;
 	}
-	public List<PartitionTopTen<ExamOrgReportMainBean>> getPartition() {
+	public List<PartitionTopTen<PartitionDataBean>> getPartition() {
 		return partition;
 	}
-	public void setPartition(List<PartitionTopTen<ExamOrgReportMainBean>> partition) {
+	public void setPartition(List<PartitionTopTen<PartitionDataBean>> partition) {
 		this.partition = partition;
 	}
 	public List<ExamOrgReportMainBean> getParticipantRatio() {

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

@@ -3,6 +3,10 @@ package cn.com.qmth.examcloud.core.reports.base.bean;
 import io.swagger.annotations.ApiModelProperty;
 
 public class PartitionDataBean {
+	@ApiModelProperty(value = "考试名称")
+	private String examName;
+	@ApiModelProperty(value = "中心名称")
+	private String orgName;
 	@ApiModelProperty(value = "分段人数")
 	private Long count;
 	@ApiModelProperty(value = "分段人数报名占比(%)")
@@ -27,5 +31,17 @@ public class PartitionDataBean {
 	public void setParticipantRatio(Double participantRatio) {
 		this.participantRatio = participantRatio;
 	}
+	public String getExamName() {
+		return examName;
+	}
+	public void setExamName(String examName) {
+		this.examName = examName;
+	}
+	public String getOrgName() {
+		return orgName;
+	}
+	public void setOrgName(String orgName) {
+		this.orgName = orgName;
+	}
 	
 }

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

@@ -30,4 +30,5 @@ public interface ProjectService {
 	public void updateProjectCourseOrgCount(UpdateProjectCourseOrgCountReq req);
 	public List<ExamBean> queryAllExam(Long rootOrgId);
 	public void updateProjectStatusByIds(UpdateProjectStatusByIdsReq req) ;
+	public ProjectBean getProject(Long id,Long rootOrgId);
 }

+ 148 - 134
examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/impl/ExamOrgReportServiceImpl.java

@@ -358,11 +358,11 @@ public class ExamOrgReportServiceImpl implements ExamOrgReportService {
 		}
 	}
 
-	private List<PartitionTopTen<ExamOrgReportMainBean>> getPartitionSort(List<ExamOrgReportMainBean> list) {
-		List<PartitionTopTen<ExamOrgReportMainBean>> ret = new ArrayList<PartitionTopTen<ExamOrgReportMainBean>>();
+	private List<PartitionTopTen<PartitionDataBean>> getPartitionSort(List<ExamOrgReportMainBean> list) {
+		List<PartitionTopTen<PartitionDataBean>> ret = new ArrayList<PartitionTopTen<PartitionDataBean>>();
 		int size = list.get(0).getPartitionData().size();
 		for (int i = 0; i < size; i++) {
-			PartitionTopTen<ExamOrgReportMainBean> pt = new PartitionTopTen<ExamOrgReportMainBean>();
+			PartitionTopTen<PartitionDataBean> pt = new PartitionTopTen<PartitionDataBean>();
 			pt.setCountAsc(getPartitionCountSort(list, i,asc));
 			pt.setCountDesc(getPartitionCountSort(list, i,desc));
 			pt.setSignRatioAsc(getPartitionSignRatioSort(list, i, asc));
@@ -374,7 +374,7 @@ public class ExamOrgReportServiceImpl implements ExamOrgReportService {
 		return ret;
 	}
 
-	private List<ExamOrgReportMainBean> getPartitionCountSort(List<ExamOrgReportMainBean> list, int index,int ascOrDesc) {
+	private List<PartitionDataBean> getPartitionCountSort(List<ExamOrgReportMainBean> list, int index,int ascOrDesc) {
 		List<ExamOrgReportMainBean> ret = new ArrayList<ExamOrgReportMainBean>(list);
 		Collections.sort(ret, new Comparator<ExamOrgReportMainBean>() {
 
@@ -393,13 +393,13 @@ public class ExamOrgReportServiceImpl implements ExamOrgReportService {
 
 		});
 		if (ret.size() > 10) {
-			return ret.subList(0, 10);
+			return of(ret.subList(0, 10),index);
 		} else {
-			return ret;
+			return of(ret,index);
 		}
 	}
 
-	private List<ExamOrgReportMainBean> getPartitionSignRatioSort(List<ExamOrgReportMainBean> list, int index,int ascOrDesc) {
+	private List<PartitionDataBean> getPartitionSignRatioSort(List<ExamOrgReportMainBean> list, int index,int ascOrDesc) {
 		List<ExamOrgReportMainBean> ret = new ArrayList<ExamOrgReportMainBean>(list);
 		Collections.sort(ret, new Comparator<ExamOrgReportMainBean>() {
 
@@ -418,12 +418,13 @@ public class ExamOrgReportServiceImpl implements ExamOrgReportService {
 
 		});
 		if (ret.size() > 10) {
-			return ret.subList(0, 10);
+			return of(ret.subList(0, 10),index);
 		} else {
-			return ret;
+			return of(ret,index);
 		}
 	}
-	private List<ExamOrgReportMainBean> getPartitionParticipantRatioSort(List<ExamOrgReportMainBean> list, int index,int ascOrDesc) {
+	
+	private List<PartitionDataBean> getPartitionParticipantRatioSort(List<ExamOrgReportMainBean> list, int index,int ascOrDesc) {
 		List<ExamOrgReportMainBean> ret = new ArrayList<ExamOrgReportMainBean>(list);
 		Collections.sort(ret, new Comparator<ExamOrgReportMainBean>() {
 
@@ -442,11 +443,24 @@ public class ExamOrgReportServiceImpl implements ExamOrgReportService {
 
 		});
 		if (ret.size() > 10) {
-			return ret.subList(0, 10);
+			return of(ret.subList(0, 10),index);
 		} else {
-			return ret;
+			return of(ret,index);
 		}
 	}
+	private List<PartitionDataBean> of(List<ExamOrgReportMainBean> list, int index) {
+		List<PartitionDataBean> ret = new ArrayList<PartitionDataBean>();
+		for(ExamOrgReportMainBean b:list) {
+			PartitionDataBean pb=new PartitionDataBean();
+			pb.setCount(b.getPartitionData().get(index).getCount());
+			pb.setParticipantRatio(b.getPartitionData().get(index).getParticipantRatio());
+			pb.setSignRatio(b.getPartitionData().get(index).getSignRatio());
+			pb.setOrgName(b.getOrgName());
+			pb.setExamName(b.getExamName());
+			ret.add(pb);
+		}
+		return ret;
+	}
 	@Override
 	public void exportAll(ProjectEntity pe, Long examId, String items, HttpServletResponse response) {
 		Long projectId = pe.getId();
@@ -472,24 +486,24 @@ public class ExamOrgReportServiceImpl implements ExamOrgReportService {
 		fillExamMainSheetdata(sheets,list1, examheader, partitionCount);
 		List<ExamOrgReportMainBean> list2 = getExamOrgMainList(projectId, examId);
 		fillExamOrgMainSheetdata(sheets, list2, header, partitionCount);
-		if (StringUtils.isNotBlank(items)) {
-			String[] itemstr = items.split(",");
-			for (String it : itemstr) {
-				if ("1".equals(it)) {
-					fillParticipantSheetdata(sheets, list2, header,partitionCount);
-				} else if ("2".equals(it)) {
-					fillMissSheetdata(sheets, list2, header, partitionCount);
-				} else if ("3".equals(it)) {
-					fillPassSheetdata(sheets, list2, header, partitionCount);
-				} else if ("4".equals(it)) {
-					fillPassRatioSheetdata(sheets, list2, header, partitionCount);
-				} else if ("5".equals(it)) {
-					fillPartitionSheetdata(sheets, list2, header, partitionCount);
-				} else if ("6".equals(it)) {
-					fillPartitionRatioSheetdata(sheets, list2, header, partitionCount);
-				}
-			}
-		}
+//		if (StringUtils.isNotBlank(items)) {
+//			String[] itemstr = items.split(",");
+//			for (String it : itemstr) {
+//				if ("1".equals(it)) {
+//					fillParticipantSheetdata(sheets, list2, header,partitionCount);
+//				} else if ("2".equals(it)) {
+//					fillMissSheetdata(sheets, list2, header, partitionCount);
+//				} else if ("3".equals(it)) {
+//					fillPassSheetdata(sheets, list2, header, partitionCount);
+//				} else if ("4".equals(it)) {
+//					fillPassRatioSheetdata(sheets, list2, header, partitionCount);
+//				} else if ("5".equals(it)) {
+//					fillPartitionSheetdata(sheets, list2, header, partitionCount);
+//				} else if ("6".equals(it)) {
+//					fillPartitionRatioSheetdata(sheets, list2, header, partitionCount);
+//				}
+//			}
+//		}
 		ExportUtils.exportExcel("考试学习中心分析结果", sheets, response);
 	}
 
@@ -553,108 +567,108 @@ public class ExamOrgReportServiceImpl implements ExamOrgReportService {
 		sheets.add(sheet);
 	}
 
-	private void fillParticipantSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header, int partitionCount) {
-		SheetData sheet1 = new SheetData();
-		sheet1.setHeader(header);
-		sheet1.setName("实考人数前十");
-		fillSheetData(sheets,sheet1, getParticipantSort(list,desc), header.size(), partitionCount);
-		SheetData sheet2 = new SheetData();
-		sheet2.setHeader(header);
-		sheet2.setName("实考人数后十");
-		fillSheetData(sheets,sheet2, getParticipantSort(list,asc), header.size(), partitionCount);
-		SheetData sheet3 = new SheetData();
-		sheet3.setHeader(header);
-		sheet3.setName("实考比例前十");
-		fillSheetData(sheets,sheet3, getParticipantRatioSort(list,desc), header.size(), partitionCount);
-		SheetData sheet4 = new SheetData();
-		sheet4.setHeader(header);
-		sheet4.setName("实考比例后十");
-		fillSheetData(sheets,sheet4, getParticipantRatioSort(list,asc), header.size(), partitionCount);
-	}
-	private void fillMissSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header,int partitionCount) {
-		SheetData sheet1 = new SheetData();
-		sheet1.setHeader(header);
-		sheet1.setName("缺考人数前十");
-		fillSheetData(sheets,sheet1, getMissSort(list,desc), header.size(), partitionCount);
-		SheetData sheet2 = new SheetData();
-		sheet2.setHeader(header);
-		sheet2.setName("缺考人数后十");
-		fillSheetData(sheets,sheet2, getMissSort(list,asc), header.size(), partitionCount);
-		SheetData sheet3 = new SheetData();
-		sheet3.setHeader(header);
-		sheet3.setName("缺考比例前十");
-		fillSheetData(sheets,sheet3, getMissRatioSort(list,desc), header.size(), partitionCount);
-		SheetData sheet4 = new SheetData();
-		sheet4.setHeader(header);
-		sheet4.setName("缺考比例后十");
-		fillSheetData(sheets,sheet4, getMissRatioSort(list,asc), header.size(), partitionCount);
-	}
-	private void fillPassSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header,int partitionCount) {
-		SheetData sheet1 = new SheetData();
-		sheet1.setHeader(header);
-		sheet1.setName("及格人数前十");
-		fillSheetData(sheets,sheet1, getPassSort(list,desc), header.size(), partitionCount);
-		SheetData sheet2 = new SheetData();
-		sheet2.setHeader(header);
-		sheet2.setName("及格人数后十");
-		fillSheetData(sheets,sheet2, getPassSort(list,asc), header.size(), partitionCount);
-	}
-	private void fillPassRatioSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header, int partitionCount) {
-		SheetData sheet1 = new SheetData();
-		sheet1.setHeader(header);
-		sheet1.setName("及格报名人数比例前十");
-		fillSheetData(sheets,sheet1, getPassSignRatioSort(list,desc), header.size(), partitionCount);
-		SheetData sheet2 = new SheetData();
-		sheet2.setHeader(header);
-		sheet2.setName("及格报名人数比例后十");
-		fillSheetData(sheets,sheet2, getPassSignRatioSort(list,asc), header.size(), partitionCount);
-		SheetData sheet3 = new SheetData();
-		sheet3.setHeader(header);
-		sheet3.setName("及格实考人数比例前十");
-		fillSheetData(sheets,sheet3, getPassParticipantRatioSort(list,desc), header.size(), partitionCount);
-		SheetData sheet4 = new SheetData();
-		sheet4.setHeader(header);
-		sheet4.setName("及格实考人数比例后十");
-		fillSheetData(sheets,sheet4, getPassParticipantRatioSort(list,asc), header.size(), partitionCount);
-	}
-	private void fillPartitionSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header, int partitionCount) {
-		for (int i = 1; i <= partitionCount; i++) {
-			SheetData sheet1 = new SheetData();
-			sheet1.setHeader(header);
-			sheet1.setName("分段" + i + "人数前十");
-			fillSheetData(sheets, sheet1, getPartitionCountSort(list, i-1, desc), header.size(), partitionCount);
-		}
-		for (int i = 1; i <= partitionCount; i++) {
-			SheetData sheet1 = new SheetData();
-			sheet1.setHeader(header);
-			sheet1.setName("分段" + i + "人数后十");
-			fillSheetData(sheets, sheet1, getPartitionCountSort(list, i-1, asc), header.size(), partitionCount);
-		}
-	}
-	private void fillPartitionRatioSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header, int partitionCount) {
-		for (int i = 1; i <= partitionCount; i++) {
-			SheetData sheet1 = new SheetData();
-			sheet1.setHeader(header);
-			sheet1.setName("分段" + i + "报名人数比例前十");
-			fillSheetData(sheets, sheet1, getPartitionSignRatioSort(list, i-1, desc), header.size(), partitionCount);
-		}
-		for (int i = 1; i <= partitionCount; i++) {
-			SheetData sheet1 = new SheetData();
-			sheet1.setHeader(header);
-			sheet1.setName("分段" + i + "报名人数比例后十");
-			fillSheetData(sheets, sheet1, getPartitionSignRatioSort(list, i-1, asc), header.size(), partitionCount);
-		}
-		for (int i = 1; i <= partitionCount; i++) {
-			SheetData sheet1 = new SheetData();
-			sheet1.setHeader(header);
-			sheet1.setName("分段" + i + "实考人数比例前十");
-			fillSheetData(sheets, sheet1, getPartitionParticipantRatioSort(list, i-1, desc), header.size(), partitionCount);
-		}
-		for (int i = 1; i <= partitionCount; i++) {
-			SheetData sheet1 = new SheetData();
-			sheet1.setHeader(header);
-			sheet1.setName("分段" + i + "实考人数比例后十");
-			fillSheetData(sheets, sheet1, getPartitionParticipantRatioSort(list, i-1, asc), header.size(), partitionCount);
-		}
-	}
+//	private void fillParticipantSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header, int partitionCount) {
+//		SheetData sheet1 = new SheetData();
+//		sheet1.setHeader(header);
+//		sheet1.setName("实考人数前十");
+//		fillSheetData(sheets,sheet1, getParticipantSort(list,desc), header.size(), partitionCount);
+//		SheetData sheet2 = new SheetData();
+//		sheet2.setHeader(header);
+//		sheet2.setName("实考人数后十");
+//		fillSheetData(sheets,sheet2, getParticipantSort(list,asc), header.size(), partitionCount);
+//		SheetData sheet3 = new SheetData();
+//		sheet3.setHeader(header);
+//		sheet3.setName("实考比例前十");
+//		fillSheetData(sheets,sheet3, getParticipantRatioSort(list,desc), header.size(), partitionCount);
+//		SheetData sheet4 = new SheetData();
+//		sheet4.setHeader(header);
+//		sheet4.setName("实考比例后十");
+//		fillSheetData(sheets,sheet4, getParticipantRatioSort(list,asc), header.size(), partitionCount);
+//	}
+//	private void fillMissSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header,int partitionCount) {
+//		SheetData sheet1 = new SheetData();
+//		sheet1.setHeader(header);
+//		sheet1.setName("缺考人数前十");
+//		fillSheetData(sheets,sheet1, getMissSort(list,desc), header.size(), partitionCount);
+//		SheetData sheet2 = new SheetData();
+//		sheet2.setHeader(header);
+//		sheet2.setName("缺考人数后十");
+//		fillSheetData(sheets,sheet2, getMissSort(list,asc), header.size(), partitionCount);
+//		SheetData sheet3 = new SheetData();
+//		sheet3.setHeader(header);
+//		sheet3.setName("缺考比例前十");
+//		fillSheetData(sheets,sheet3, getMissRatioSort(list,desc), header.size(), partitionCount);
+//		SheetData sheet4 = new SheetData();
+//		sheet4.setHeader(header);
+//		sheet4.setName("缺考比例后十");
+//		fillSheetData(sheets,sheet4, getMissRatioSort(list,asc), header.size(), partitionCount);
+//	}
+//	private void fillPassSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header,int partitionCount) {
+//		SheetData sheet1 = new SheetData();
+//		sheet1.setHeader(header);
+//		sheet1.setName("及格人数前十");
+//		fillSheetData(sheets,sheet1, getPassSort(list,desc), header.size(), partitionCount);
+//		SheetData sheet2 = new SheetData();
+//		sheet2.setHeader(header);
+//		sheet2.setName("及格人数后十");
+//		fillSheetData(sheets,sheet2, getPassSort(list,asc), header.size(), partitionCount);
+//	}
+//	private void fillPassRatioSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header, int partitionCount) {
+//		SheetData sheet1 = new SheetData();
+//		sheet1.setHeader(header);
+//		sheet1.setName("及格报名人数比例前十");
+//		fillSheetData(sheets,sheet1, getPassSignRatioSort(list,desc), header.size(), partitionCount);
+//		SheetData sheet2 = new SheetData();
+//		sheet2.setHeader(header);
+//		sheet2.setName("及格报名人数比例后十");
+//		fillSheetData(sheets,sheet2, getPassSignRatioSort(list,asc), header.size(), partitionCount);
+//		SheetData sheet3 = new SheetData();
+//		sheet3.setHeader(header);
+//		sheet3.setName("及格实考人数比例前十");
+//		fillSheetData(sheets,sheet3, getPassParticipantRatioSort(list,desc), header.size(), partitionCount);
+//		SheetData sheet4 = new SheetData();
+//		sheet4.setHeader(header);
+//		sheet4.setName("及格实考人数比例后十");
+//		fillSheetData(sheets,sheet4, getPassParticipantRatioSort(list,asc), header.size(), partitionCount);
+//	}
+//	private void fillPartitionSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header, int partitionCount) {
+//		for (int i = 1; i <= partitionCount; i++) {
+//			SheetData sheet1 = new SheetData();
+//			sheet1.setHeader(header);
+//			sheet1.setName("分段" + i + "人数前十");
+//			fillSheetData(sheets, sheet1, getPartitionCountSort(list, i-1, desc), header.size(), partitionCount);
+//		}
+//		for (int i = 1; i <= partitionCount; i++) {
+//			SheetData sheet1 = new SheetData();
+//			sheet1.setHeader(header);
+//			sheet1.setName("分段" + i + "人数后十");
+//			fillSheetData(sheets, sheet1, getPartitionCountSort(list, i-1, asc), header.size(), partitionCount);
+//		}
+//	}
+//	private void fillPartitionRatioSheetdata(List<SheetData> sheets, List<ExamOrgReportMainBean> list, List<String> header, int partitionCount) {
+//		for (int i = 1; i <= partitionCount; i++) {
+//			SheetData sheet1 = new SheetData();
+//			sheet1.setHeader(header);
+//			sheet1.setName("分段" + i + "报名人数比例前十");
+//			fillSheetData(sheets, sheet1, getPartitionSignRatioSort(list, i-1, desc), header.size(), partitionCount);
+//		}
+//		for (int i = 1; i <= partitionCount; i++) {
+//			SheetData sheet1 = new SheetData();
+//			sheet1.setHeader(header);
+//			sheet1.setName("分段" + i + "报名人数比例后十");
+//			fillSheetData(sheets, sheet1, getPartitionSignRatioSort(list, i-1, asc), header.size(), partitionCount);
+//		}
+//		for (int i = 1; i <= partitionCount; i++) {
+//			SheetData sheet1 = new SheetData();
+//			sheet1.setHeader(header);
+//			sheet1.setName("分段" + i + "实考人数比例前十");
+//			fillSheetData(sheets, sheet1, getPartitionParticipantRatioSort(list, i-1, desc), header.size(), partitionCount);
+//		}
+//		for (int i = 1; i <= partitionCount; i++) {
+//			SheetData sheet1 = new SheetData();
+//			sheet1.setHeader(header);
+//			sheet1.setName("分段" + i + "实考人数比例后十");
+//			fillSheetData(sheets, sheet1, getPartitionParticipantRatioSort(list, i-1, asc), header.size(), partitionCount);
+//		}
+//	}
 }

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

@@ -398,4 +398,31 @@ public class ProjectServiceImpl implements ProjectService {
 			}
 		}
 	}
+
+	@Override
+	public ProjectBean getProject(Long id, Long rootOrgId) {
+		ProjectEntity pe = GlobalHelper.getEntity(projectRepo, id, ProjectEntity.class);
+		if (pe == null) {
+			throw new StatusException("1000061", "项目不存在");
+		}
+		if (!pe.getRootOrgId().equals(rootOrgId)) {
+			throw new StatusException("1000062", "非法操作");
+		}
+		ProjectBean bean = new ProjectBean();
+		BeanUtils.copyProperties(pe, bean);
+		bean.setAnalyseTypeName(bean.getAnalyseType().getDesc());
+		bean.setDataOriginName(bean.getDataOrigin().getDesc());
+		bean.setReportStatusName(bean.getReportStatus().getDesc());
+		if (StringUtils.isNotBlank(pe.getExamIds())) {
+			List<Long> temList = Arrays.asList(pe.getExamIds().split(",")).stream().map(str -> Long.parseLong(str))
+					.collect(Collectors.toList());
+			bean.setExamIds(temList);
+		}
+		if (StringUtils.isNotBlank(pe.getPartitionDetails())) {
+			List<Double> temList = Arrays.asList(pe.getPartitionDetails().split(",")).stream()
+					.map(str -> Double.parseDouble(str)).collect(Collectors.toList());
+			bean.setPartitionDetails(temList);
+		}
+		return bean;
+	}
 }