package com.jevon.controller; import com.jevon.enums.DifficultEnums; import com.jevon.enums.DimensionalEnums; import com.jevon.model.*; import com.jevon.service.*; import com.jevon.vo.req.GetLearnReqVo; import com.jevon.wordDTO.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author chen * @version 1.0 * @date 2019/10/18 0018 15:54 */ @RestController @RequestMapping(value = "/getLearn") @Api(value = "学情分析") public class LearnStatController { @Autowired AnalyseService analyseService; @Autowired DimensionalService dimensionalService; @Autowired AnalyseDimensionalService analyseDimensionalService; @Autowired AnalyseDetailService analyseDetailService; @Autowired StudentDetailService studentDetailService; @Autowired StudentService studentService; @Autowired LeagueService leagueService; @ApiOperation("getForm1_1") @RequestMapping(value = "getForm1_1", method = RequestMethod.POST) public List getForm1_1(@RequestBody GetLearnReqVo getLearnReqVo){ Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); List list = new ArrayList<>(); Form7 form7 = new Form7(); form7.setName(DifficultEnums.easy.getDifficultName()); form7.setPercent(analyseDetailService.selectDifficult(analyse.getId(),DifficultEnums.easy.getDifficultType())/analyse.getMaxScore()*100); list.add(form7); Form7 form = new Form7(); form.setName(DifficultEnums.medium.getDifficultName()); form.setPercent(analyseDetailService.selectDifficult(analyse.getId(),DifficultEnums.medium.getDifficultType())/analyse.getMaxScore()*100); list.add(form); Form7 form2 = new Form7(); form2.setName(DifficultEnums.difficult.getDifficultName()); form2.setPercent(analyseDetailService.selectDifficult(analyse.getId(),DifficultEnums.difficult.getDifficultType())/analyse.getMaxScore()*100); list.add(form2); return list; } @ApiOperation("getForm2_1_1") @RequestMapping(value = "getForm2_1_1", method = RequestMethod.POST) public Form1RepVO getForm2_1_1(@RequestBody GetLearnReqVo getLearnReqVo){ Form1RepVO form1RepVo = new Form1RepVO(); //2.1表 Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); //分数段 Double maxScore = analyse.getMaxScore(); Map segmentMap = new HashMap<>(); segmentMap.put("A(优秀)",maxScore*0.85 + "~" + maxScore+"分"); segmentMap.put("B(良好)",maxScore*0.7 + "~" + (maxScore*0.85-1f)+"分"); segmentMap.put("C(及格)",maxScore*0.7 + "~" + (maxScore*0.7-1f)+"分"); segmentMap.put("D(不及格)",0 + "~" + (maxScore*0.6-1f)+"分"); form1RepVo.setMap(segmentMap); List students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); double sum = new Double(students.size()); int a = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0.85,maxScore+1f); int b = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0.7,(maxScore*0.85)); int c = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0.6,(maxScore*0.7)); int d = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0,(maxScore*0.6)); List form1List = new ArrayList<>(); Form1 formA = new Form1(); formA.setLevel("A"); formA.setNumber(a); formA.setProp(a/sum*100); Form1 formB = new Form1(); formB.setLevel("B"); formB.setNumber(b); formB.setProp(b/sum*100); Form1 formC = new Form1(); formC.setLevel("C"); formC.setNumber(c); formC.setProp(c/sum*100); Form1 formD = new Form1(); formD.setLevel("D"); formD.setNumber(d); formD.setProp(d/sum*100); form1List.add(formA); form1List.add(formB); form1List.add(formC); form1List.add(formD); form1RepVo.setList(form1List); return form1RepVo; } @ApiOperation("getForm2_1_2") @RequestMapping(value = "getForm2_1_2", method = RequestMethod.POST) public Form2RepVO getForm2_1_2(@RequestBody GetLearnReqVo getLearnReqVo){ Form2RepVO repVO = new Form2RepVO(); Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); if(analyse == null){ repVO.setSuccess(false); repVO.setMessage("请先创建考试"); return repVO; } List leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); if(leagues == null){ repVO.setSuccess(false); repVO.setMessage("请先设定区"); return repVO; } List allStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,null); List leagueStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),leagues,null); List students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); //先算高分段的分数 int highNumber = (int) Math.floor(allStudents.size()*0.27); double highScore = allStudents.get(highNumber).getScore(); int lowNumber = allStudents.size()-highNumber; double lowScore = allStudents.get(lowNumber).getScore(); List list = new ArrayList<>(); int highAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,null,highScore,analyse.getMaxScore()+1f); int lowAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,null,0,lowScore); Form2 form2 = new Form2(); form2.setName("区"); form2.setStudentNumber(allStudents.size()); form2.setHighNumber(highAllCount); form2.setLowNumber(lowAllCount); list.add(form2); { int highLeagueCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),leagues,null,highScore,analyse.getMaxScore()+1f); int lowLeagueCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),leagues,null,0,lowScore); Form2 form = new Form2(); form.setName("联盟校"); form.setStudentNumber(leagueStudents.size()); form.setStudentProp(new Double(leagueStudents.size()) / new Double(allStudents.size())); form.setHighNumber(highLeagueCount); form.setLowNumber(lowLeagueCount); form.setHighProp(highLeagueCount/new Double(highAllCount)); form.setLowProp(lowLeagueCount/new Double(lowAllCount)); list.add(form); } { int highCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),highScore,analyse.getMaxScore()+1f); int lowCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),0,lowScore); Form2 form = new Form2(); form.setName(getLearnReqVo.getSchoolName()); form.setStudentNumber(students.size()); form.setStudentProp(new Double(students.size()) / new Double(allStudents.size())); form.setHighNumber(highCount); form.setLowNumber(lowCount); form.setHighProp(highCount/new Double(highAllCount)); form.setLowProp(lowCount/new Double(lowAllCount)); list.add(form); } repVO.setData(list); return repVO; } @ApiOperation("getForm2_1_3_2") @RequestMapping(value = "getForm2_1_3_2", method = RequestMethod.POST) public Form2RepVO getForm2_1_3_2(@RequestBody GetLearnReqVo getLearnReqVo){ Form2RepVO repVO = new Form2RepVO(); Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); if(analyse == null){ repVO.setSuccess(false); repVO.setMessage("请先创建考试"); return repVO; } List allStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); //先算高分段的分数 int highNumber = (int) Math.floor(allStudents.size()*0.27); double highScore = allStudents.get(highNumber).getScore(); int lowNumber = allStudents.size()-highNumber; double lowScore = allStudents.get(lowNumber).getScore(); int highAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),highScore,analyse.getMaxScore()+1f); int lowAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),0,lowScore); List resultList = new ArrayList<>(); Form2 form = new Form2(); form.setName(getLearnReqVo.getSchoolName()); form.setStudentNumber(allStudents.size()); form.setHighNumber(highAllCount); form.setLowNumber(lowAllCount); resultList.add(form); List classNamList = studentService.selectClassNameBySchool(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName()); for(String className : classNamList){ List list = studentService.selectByClassName(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),className); int highCount = studentService.selectCountBySchoolScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),className,highScore,analyse.getMaxScore()+1f); int lowCount = studentService.selectCountBySchoolScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),className,0,lowScore); Form2 form2 = new Form2(); form2.setName(className); form2.setStudentNumber(list.size()); form2.setStudentProp(new Double(list.size()) / new Double(allStudents.size())); form2.setHighNumber(highCount); form2.setLowNumber(lowCount); form2.setHighProp(highCount/new Double(highAllCount)); form2.setLowProp(lowCount/new Double(lowAllCount)); resultList.add(form2); } repVO.setData(resultList); return repVO; } @ApiOperation("getForm2_1_3") @RequestMapping(value = "getForm2_1_3", method = RequestMethod.POST) public List getForm2_1_3(@RequestBody GetLearnReqVo getLearnReqVo){ Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); List list = new ArrayList<>(); list.add(Math.ceil(analyse.getMaxScore())); list.add(Math.ceil(analyse.getMaxScore()*0.95)); list.add(Math.ceil(analyse.getMaxScore()*0.9)); list.add(Math.ceil(analyse.getMaxScore()*0.85)); list.add(Math.ceil(analyse.getMaxScore()*0.8)); list.add(Math.ceil(analyse.getMaxScore()*0.75)); list.add(Math.ceil(analyse.getMaxScore()*0.7)); list.add(Math.ceil(analyse.getMaxScore()*0.65)); list.add(Math.ceil(analyse.getMaxScore()*0.6)); list.add(Math.ceil(analyse.getMaxScore()*0.55)); list.add(Math.ceil(analyse.getMaxScore()*0.5)); list.add(Math.ceil(analyse.getMaxScore()*0.45)); list.add(Math.ceil(analyse.getMaxScore()*0.4)); list.add(Math.ceil(analyse.getMaxScore()*0.35)); list.add(Math.ceil(analyse.getMaxScore()*0.3)); list.add(Math.ceil(analyse.getMaxScore()*0)); List list1 = new ArrayList<>(); for(int i =0 ; i leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); if(leagues == null){ repVO.setSuccess(false); repVO.setMessage("请先设定区"); return repVO; } List list = new ArrayList<>(); List allStudents = studentService.selectBySchoolName(analyse.getId(),null,null); { Form3 form3 = new Form3(); form3.setName("区"); form3.setMaxScore(studentService.selectMaxScore(analyse.getId(),null,null)); form3.setAverage(studentService.selectAvgScore(analyse.getId(),null,null)); form3.setMinScore(studentService.selectMinScore(analyse.getId(),null,null)); int a = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0.85,analyse.getMaxScore()+1); form3.setApercent(a / new Double(allStudents.size()) * 100); int b = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0.7,analyse.getMaxScore()*0.85); form3.setBpercent(b / new Double(allStudents.size()) * 100); int c = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0.6,analyse.getMaxScore()*0.7); form3.setCpercent(c / new Double(allStudents.size()) * 100); int d = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0,analyse.getMaxScore()*0.6); form3.setDpercent(d / new Double(allStudents.size()) * 100); list.add(form3); } { Form3 form = new Form3(); form.setName("联盟校"); List students = studentService.selectBySchoolName(analyse.getId(),leagues,null); form.setMaxScore(studentService.selectMaxScore(analyse.getId(),leagues,null)); form.setAverage(studentService.selectAvgScore(analyse.getId(),leagues,null)); form.setMinScore(studentService.selectMinScore(analyse.getId(),leagues,null)); int a1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0.85,analyse.getMaxScore()+1); form.setApercent(a1 / new Double(students.size()) * 100); int b1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0.7,analyse.getMaxScore()*0.85); form.setBpercent(b1 / new Double(students.size()) * 100); int c1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0.6,analyse.getMaxScore()*0.7); form.setCpercent(c1 / new Double(students.size()) * 100); int d1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0,analyse.getMaxScore()*0.6); form.setDpercent(d1 / new Double(students.size()) * 100); list.add(form); } { Form3 form = new Form3(); form.setName(getLearnReqVo.getSchoolName()); List students = studentService.selectBySchoolName(analyse.getId(),null,getLearnReqVo.getSchoolName()); form.setMaxScore(studentService.selectMaxScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); form.setAverage(studentService.selectAvgScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); form.setMinScore(studentService.selectMinScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); int a1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.85,analyse.getMaxScore()+1); form.setApercent(a1 / new Double(students.size()) * 100); int b1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.7,analyse.getMaxScore()*0.85); form.setBpercent(b1 / new Double(students.size()) * 100); int c1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.6,analyse.getMaxScore()*0.7); form.setCpercent(c1 / new Double(students.size()) * 100); int d1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0,analyse.getMaxScore()*0.6); form.setDpercent(d1 / new Double(students.size()) * 100); list.add(form); } repVO.setData(list); return repVO ; } @ApiOperation("getForm2_2_2") @RequestMapping(value = "getForm2_2_2", method = RequestMethod.POST) public Form4RepVO getForm2_2_2(@RequestBody GetLearnReqVo getLearnReqVo){ Form4RepVO repVO = new Form4RepVO(); Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); if(analyse == null){ repVO.setSuccess(false); repVO.setMessage("请先创建考试"); return repVO; } List leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); if(leagues == null){ repVO.setSuccess(false); repVO.setMessage("请先设定区"); return repVO; } List list = new ArrayList<>(); { Form4 form4 = new Form4(); form4.setName("区"); form4.setModeNumber(studentService.selectModeNumber(analyse.getId(),null,null)); form4.setMedianNumber(studentService.selectMedian(analyse.getId(),null,null)); form4.setStdev(studentService.selectStdev(analyse.getId(),null,null)); form4.setAvgNumber(studentService.selectAvgScore(analyse.getId(),null,null)); list.add(form4); } { Form4 form = new Form4(); form.setName(getLearnReqVo.getSchoolName()); form.setModeNumber(studentService.selectModeNumber(analyse.getId(),leagues,null)); form.setMedianNumber(studentService.selectMedian(analyse.getId(),leagues,null)); form.setStdev(studentService.selectStdev(analyse.getId(),leagues,null)); form.setAvgNumber(studentService.selectAvgScore(analyse.getId(),leagues,null)); list.add(form); } { Form4 form = new Form4(); form.setName(getLearnReqVo.getSchoolName()); form.setModeNumber(studentService.selectModeNumber(analyse.getId(),null,getLearnReqVo.getSchoolName())); form.setMedianNumber(studentService.selectMedian(analyse.getId(),null,getLearnReqVo.getSchoolName())); form.setStdev(studentService.selectStdev(analyse.getId(),null,getLearnReqVo.getSchoolName())); form.setAvgNumber(studentService.selectAvgScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); list.add(form); } repVO.setData(list); return repVO; } @ApiOperation("getForm2_2_3") @RequestMapping(value = "getForm2_2_3", method = RequestMethod.POST) public Form5RepVO getForm2_2_3(@RequestBody GetLearnReqVo getLearnReqVo){ Form5RepVO repVO = new Form5RepVO(); Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); if(analyse == null){ repVO.setSuccess(false); repVO.setMessage("请先创建考试"); return repVO; } List leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); if(leagues == null){ repVO.setSuccess(false); repVO.setMessage("请先设定区"); return repVO; } List allHighStudent = new ArrayList<>(); List allLowStudent = new ArrayList<>(); List allStudents = studentService.selectBySchoolName(analyse.getId(),null,null); int allNumber = (int) Math.floor(allStudents.size()*0.27) ; { //获取区 高分段,低分段学生编号 for (int i = 0; i < allNumber ; i++) { allHighStudent.add(allStudents.get(i).getStudentNumber()); } for(int i =allStudents.size()-allNumber ; i < allStudents.size() ; i++){ allLowStudent.add(allStudents.get(i).getStudentNumber()); } } List leagueHighStudent = new ArrayList<>(); List leagueLowStudent = new ArrayList<>(); List leagueStudents = studentService.selectBySchoolName(analyse.getId(),leagues,null); int leagueNumber = (int) Math.floor(leagueStudents.size()*0.27) ; { //获取联盟校 高分段 低分段 学生编号 for (int i = 0; i < leagueNumber ; i++) { leagueHighStudent.add(leagueStudents.get(i).getStudentNumber()); } for(int i =leagueStudents.size()-leagueNumber ; i < leagueStudents.size() ; i++){ leagueLowStudent.add(leagueStudents.get(i).getStudentNumber()); } } List highStudent = new ArrayList<>(); List lowStudent = new ArrayList<>(); List students = studentService.selectBySchoolName(analyse.getId(),null,getLearnReqVo.getSchoolName()); int number = (int) Math.floor(students.size()*0.27) ; { //获取本校高分段 低分段 学生编号 for (int i = 0; i < number ; i++) { highStudent.add(students.get(i).getStudentNumber()); } for(int i =students.size()-number ; i < students.size() ; i++){ lowStudent.add(students.get(i).getStudentNumber()); } } List list = new ArrayList<>(); List analyseDetails = analyseDetailService.selectByAnalyseId(analyse.getId()); for(AnalyseDetail analyseDetail : analyseDetails){ Form5 from5 = new Form5(); Double allSumScore = studentDetailService.selectSumScore(analyse.getId(),null,null,analyseDetail.getQuestionNumber()); Double leagueSumScore = studentDetailService.selectSumScore(analyse.getId(),leagues,null,analyseDetail.getQuestionNumber()); Double schoolSumScore = studentDetailService.selectSumScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyseDetail.getQuestionNumber()); from5.setExamNumber(analyseDetail.getQuestionNumber()); from5.setScore(analyseDetail.getScore()); from5.setDifficultName(DifficultEnums.getDifficultName(analyseDetail.getDifficult())); from5.setAllRate(allSumScore/new Double(allStudents.size()) / analyseDetail.getScore()); from5.setLeagueRate(leagueSumScore/new Double(leagueStudents.size()) / analyseDetail.getScore()); from5.setSchoolRate(schoolSumScore/new Double(students.size()) / analyseDetail.getScore()); from5.setAllAvg(allSumScore / new Double(allStudents.size())); from5.setLeagueAvg(leagueSumScore / new Double(leagueStudents.size())); from5.setSchoolAvg(schoolSumScore / new Double(students.size())); int allHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allHighStudent); int allLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allLowStudent); int leagueHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allHighStudent); int leagueLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allLowStudent); int high = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),highStudent); int low = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),lowStudent); from5.setAllDist(new Double(allHigh-allLow)/new Double(allNumber)); from5.setLeagueDist(new Double(leagueHigh-leagueLow)/new Double(leagueNumber)); from5.setSchoolDist(new Double(high-low)/new Double(number)); list.add(from5); } repVO.setData(list); return repVO; } @ApiOperation("getForm2_2_4") @RequestMapping(value = "getForm2_2_4", method = RequestMethod.POST) public Form8RepVO getForm2_2_4(@RequestBody GetLearnReqVo getLearnReqVo){ Form8RepVO repVO = new Form8RepVO(); Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); if(analyse == null){ repVO.setSuccess(false); repVO.setMessage("请先创建考试"); return repVO; } List leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); if(leagues == null){ repVO.setSuccess(false); repVO.setMessage("请先设定区"); return repVO; } List list = new ArrayList<>(); List allStudents = studentService.selectBySchoolName(analyse.getId(),null,null); List leagueStudents = studentService.selectBySchoolName(analyse.getId(),leagues,null); List students = studentService.selectBySchoolName(analyse.getId(),null,getLearnReqVo.getSchoolName()); for(DifficultEnums enums : DifficultEnums.values()){ Form8 form8 = new Form8(); form8.setDifficultName(enums.getDifficultName()); form8.setScore(analyseDetailService.selectDifficult(analyse.getId(),enums.getDifficultType())); List analyseDetails = analyseDetailService.selectDifficultDetail(analyse.getId(),enums.getDifficultType()); Double allSumScore = 0d , leagueSumScore = 0d , schoolSumScore = 0d , score = 0d; for(AnalyseDetail analyseDetail : analyseDetails){ allSumScore = allSumScore + studentDetailService.selectSumScore(analyse.getId(),null,null,analyseDetail.getQuestionNumber()); leagueSumScore = leagueSumScore + studentDetailService.selectSumScore(analyse.getId(),leagues,null,analyseDetail.getQuestionNumber()); schoolSumScore = schoolSumScore + studentDetailService.selectSumScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyseDetail.getQuestionNumber()); score = score + analyseDetail.getScore() ; } form8.setAllRate(allSumScore / new Double(allStudents.size()) / score ); form8.setLeagueRate(leagueSumScore / new Double(leagueStudents.size()) / score ); form8.setSchoolRate(schoolSumScore / new Double(students.size()) / score); list.add(form8); } repVO.setData(list); return repVO; } @ApiOperation("getForm3_1") @RequestMapping(value = "getForm3_1", method = RequestMethod.POST) public Form6RepVo getForm3_1(@RequestBody GetLearnReqVo getLearnReqVo){ return initDimensional(getLearnReqVo,DimensionalEnums.knowledge.getDimensionalType()); } @ApiOperation("getForm3_2") @RequestMapping(value = "getForm3_2", method = RequestMethod.POST) public Form6RepVo getForm3_2(@RequestBody GetLearnReqVo getLearnReqVo){ return initDimensional(getLearnReqVo,DimensionalEnums.skill.getDimensionalType()); } @ApiOperation("getForm3_3") @RequestMapping(value = "getForm3_3", method = RequestMethod.POST) public Form6RepVo getForm3_3(@RequestBody GetLearnReqVo getLearnReqVo){ return initDimensional(getLearnReqVo,DimensionalEnums.ability.getDimensionalType()); } @ApiOperation("getForm3_4") @RequestMapping(value = "getForm3_4", method = RequestMethod.POST) public Form6RepVo getForm3_4(@RequestBody GetLearnReqVo getLearnReqVo){ return initDimensional(getLearnReqVo,DimensionalEnums.think.getDimensionalType()); } private Form6RepVo initDimensional(GetLearnReqVo getLearnReqVo , int dimensionalType){ Form6RepVo repVO = new Form6RepVo(); Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); if(analyse == null){ repVO.setSuccess(false); repVO.setMessage("请先创建考试"); return repVO; } List leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); if(leagues == null){ repVO.setSuccess(false); repVO.setMessage("请先设定区"); return repVO; } List allHighStudent = new ArrayList<>(); List allLowStudent = new ArrayList<>(); List allStudents = studentService.selectBySchoolName(analyse.getId(),null,null); int allNumber = (int) Math.floor(allStudents.size()*0.27) ; { //获取区 高分段,低分段学生编号 for (int i = 0; i < allNumber ; i++) { allHighStudent.add(allStudents.get(i).getStudentNumber()); } for(int i =allStudents.size()-allNumber ; i < allStudents.size() ; i++){ allLowStudent.add(allStudents.get(i).getStudentNumber()); } } List leagueHighStudent = new ArrayList<>(); List leagueLowStudent = new ArrayList<>(); List leagueStudents = studentService.selectBySchoolName(analyse.getId(),leagues,null); int leagueNumber = (int) Math.floor(leagueStudents.size()*0.27) ; { //获取联盟校 高分段 低分段 学生编号 for (int i = 0; i < leagueNumber ; i++) { leagueHighStudent.add(leagueStudents.get(i).getStudentNumber()); } for(int i =leagueStudents.size()-leagueNumber ; i < leagueStudents.size() ; i++){ leagueLowStudent.add(leagueStudents.get(i).getStudentNumber()); } } List highStudent = new ArrayList<>(); List lowStudent = new ArrayList<>(); List students = studentService.selectBySchoolName(analyse.getId(),null,getLearnReqVo.getSchoolName()); int number = (int) Math.floor(students.size()*0.27) ; { //获取本校高分段 低分段 学生编号 for (int i = 0; i < number ; i++) { highStudent.add(students.get(i).getStudentNumber()); } for(int i =students.size()-number ; i < students.size() ; i++){ lowStudent.add(students.get(i).getStudentNumber()); } } List list = new ArrayList<>(); List knowledgeList = dimensionalService.selectByAnalyse(analyse.getId(),dimensionalType); for(Dimensional dimensional : knowledgeList){ Form6 form6 = new Form6(); form6.setDimensional(dimensional.getDimensionalName()); List analyseDimensionals = analyseDimensionalService.selectByDimensional(analyse.getId(),dimensional.getId()); Double score = 0d; StringBuffer examNumber = new StringBuffer(); List examNumberList = new ArrayList<>(); for(AnalyseDimensional analyseDimensional :analyseDimensionals){ score = score + analyseDimensional.getScore() ; examNumber.append(analyseDimensional.getQuestionNumber()).append(","); examNumberList.add(analyseDimensional.getQuestionNumber()); } Double allSumScore = studentDetailService.selectSumScore(analyse.getId(),null,null,examNumberList); int allHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,examNumberList,allHighStudent); int allLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,examNumberList,allLowStudent); Double leagueSumScore = studentDetailService.selectSumScore(analyse.getId(),leagues,null,examNumberList); int leagueHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,examNumberList,allHighStudent); int leagueLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,examNumberList,allLowStudent); Double schoolSumScore = studentDetailService.selectSumScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),examNumberList); int high = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,examNumberList,highStudent); int low = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,examNumberList,lowStudent); form6.setScore(score); form6.setAllRate(allSumScore / new Double(allStudents.size()) / score ); form6.setLeagueRate(leagueSumScore / new Double(leagueStudents.size()) / score ); form6.setSchoolRate(schoolSumScore / new Double(students.size()) / score); form6.setAllAvg(allSumScore / new Double(allStudents.size())); form6.setLeagueAvg(leagueSumScore / new Double(leagueStudents.size())); form6.setSchoolAvg(schoolSumScore / new Double(students.size())); form6.setAllDist(new Double(allHigh-allLow) / new Double(allNumber * analyseDimensionals.size())); form6.setLeagueDist(new Double(leagueHigh-leagueLow) / new Double(leagueNumber * analyseDimensionals.size())); form6.setSchoolDist(new Double(high-low) / new Double(number * analyseDimensionals.size())); form6.setExamNumber(examNumber.toString().substring(0,examNumber.toString().length()-1)); list.add(form6); } repVO.setData(list); return repVO; } }