package com.jevon.controller; import com.jevon.model.Analyse; import com.jevon.model.AnalyseDetail; import com.jevon.model.Student; import com.jevon.service.*; import com.jevon.vo.BaseVo; import com.jevon.vo.req.GetLearnReqVo; import com.jevon.wordDTO.second.*; 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; @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(),getLearnReqVo.getSchoolName()); double sum = new Double(students.size()); int a = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),maxScore*0.85,maxScore+1f); int b = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),maxScore*0.7,(maxScore*0.85)); int c = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),maxScore*0.6,(maxScore*0.7)); int d = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),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 List getForm2_1_2(@RequestBody GetLearnReqVo getLearnReqVo){ Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); List allStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null); List students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),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,highScore,analyse.getMaxScore()+1f); int lowAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,0,lowScore); int highCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),highScore,analyse.getMaxScore()+1f); int lowCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),0,lowScore); List list = new ArrayList<>(); Form2 form = new Form2(); form.setName("联盟校"); form.setStudentNumber(allStudents.size()); form.setHighNumber(highAllCount); form.setLowNumber(lowAllCount); list.add(form); Form2 form2 = new Form2(); form2.setName(getLearnReqVo.getSchoolName()); form2.setStudentNumber(students.size()); form2.setHighNumber(highCount); form2.setLowNumber(lowCount); form2.setHighProp(highCount/new Double(highAllCount)); form2.setLowProp(lowCount/new Double(lowAllCount)); list.add(form2); return list; } @ApiOperation("getForm2_1_3_2") @RequestMapping(value = "getForm2_1_3_2", method = RequestMethod.POST) public List getForm2_1_3_2(@RequestBody GetLearnReqVo getLearnReqVo){ Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); List allStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),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(),getLearnReqVo.getSchoolName(),highScore,analyse.getMaxScore()+1f); int lowAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),0,lowScore); List resultList = new ArrayList<>(); Form2 form = new Form2(); form.setName("联盟校"); 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.setHighNumber(highCount); form2.setLowNumber(lowCount); form2.setHighProp(highCount/new Double(highAllCount)); form2.setLowProp(lowCount/new Double(lowAllCount)); resultList.add(form2); } return resultList; } @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 getForm2_2_1(@RequestBody GetLearnReqVo getLearnReqVo){ Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); List list = new ArrayList<>(); Form3 form3 = new Form3(); form3.setName("联盟校"); List allStudents = studentService.selectBySchoolName(analyse.getId(),null); form3.setMaxScore(studentService.selectMaxScore(analyse.getId(),null)); form3.setAverage(studentService.selectAvgScore(analyse.getId(),null)); form3.setMinScore(studentService.selectMinScore(analyse.getId(),null)); int a = studentService.selectCountByScore(analyse.getId(),null,analyse.getMaxScore()*0.85,analyse.getMaxScore()+1); form3.setApercent(a / new Double(allStudents.size()) * 100); int b = studentService.selectCountByScore(analyse.getId(),null,analyse.getMaxScore()*0.7,analyse.getMaxScore()*0.85); form3.setBpercent(b / new Double(allStudents.size()) * 100); int c = studentService.selectCountByScore(analyse.getId(),null,analyse.getMaxScore()*0.6,analyse.getMaxScore()*0.7); form3.setCpercent(c / new Double(allStudents.size()) * 100); int d = studentService.selectCountByScore(analyse.getId(),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(),getLearnReqVo.getSchoolName()); form.setMaxScore(studentService.selectMaxScore(analyse.getId(),getLearnReqVo.getSchoolName())); form.setAverage(studentService.selectAvgScore(analyse.getId(),getLearnReqVo.getSchoolName())); form.setMinScore(studentService.selectMinScore(analyse.getId(),getLearnReqVo.getSchoolName())); int a1 = studentService.selectCountByScore(analyse.getId(),getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.85,analyse.getMaxScore()+1); form.setApercent(a1 / new Double(students.size()) * 100); int b1 = studentService.selectCountByScore(analyse.getId(),getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.7,analyse.getMaxScore()*0.85); form.setBpercent(b1 / new Double(students.size()) * 100); int c1 = studentService.selectCountByScore(analyse.getId(),getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.6,analyse.getMaxScore()*0.7); form.setCpercent(c1 / new Double(students.size()) * 100); int d1 = studentService.selectCountByScore(analyse.getId(),getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0,analyse.getMaxScore()*0.6); form.setDpercent(d1 / new Double(students.size()) * 100); list.add(form); return list ; } @ApiOperation("getForm2_2_2") @RequestMapping(value = "getForm2_2_2", method = RequestMethod.POST) public List getForm2_2_2(@RequestBody GetLearnReqVo getLearnReqVo){ Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); List list = new ArrayList<>(); Form4 form4 = new Form4(); form4.setName("联盟校"); form4.setModeNumber(studentService.selectModeNumber(analyse.getId(),null)); form4.setMedianNumber(studentService.selectMedian(analyse.getId(),null)); form4.setStdev(studentService.selectStdev(analyse.getId(),null)); form4.setAvgNumber(studentService.selectAvgScore(analyse.getId(),null)); list.add(form4); Form4 form = new Form4(); form.setName(getLearnReqVo.getSchoolName()); form.setModeNumber(studentService.selectModeNumber(analyse.getId(),getLearnReqVo.getSchoolName())); form.setMedianNumber(studentService.selectMedian(analyse.getId(),getLearnReqVo.getSchoolName())); form.setStdev(studentService.selectStdev(analyse.getId(),getLearnReqVo.getSchoolName())); form.setAvgNumber(studentService.selectAvgScore(analyse.getId(),getLearnReqVo.getSchoolName())); list.add(form); return list; } @ApiOperation("getForm2_2_3") @RequestMapping(value = "getForm2_2_3", method = RequestMethod.POST) public List getForm2_2_3(@RequestBody GetLearnReqVo getLearnReqVo){ List list = new ArrayList<>(); Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); List allStudents = studentService.selectBySchoolName(analyse.getId(),null); int allNumber = (int) Math.floor(allStudents.size()*0.27) ; List allHighStudent = new ArrayList<>(); List allLowStudent = new ArrayList<>(); 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 students = studentService.selectBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); int number = (int) Math.floor(students.size()*0.27) ; List highStudent = new ArrayList<>(); List lowStudent = new ArrayList<>(); 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 analyseDetails = analyseDetailService.selectByAnalyseId(analyse.getId()); for(AnalyseDetail analyseDetail : analyseDetails){ From5 from5 = new From5(); Double allSumScore = studentDetailService.selectSumScore(analyse.getId(),null,analyseDetail.getQuestionNumber()); Double schoolSumScore = studentDetailService.selectSumScore(analyse.getId(),getLearnReqVo.getSchoolName(),analyseDetail.getQuestionNumber()); from5.setExamNumber(analyseDetail.getQuestionNumber()); from5.setScore(analyseDetail.getScore()); from5.setAllRate(allSumScore/new Double(allStudents.size()) / analyseDetail.getScore()); from5.setSchoolRate(schoolSumScore/new Double(students.size()) / analyseDetail.getScore()); from5.setAllAvg(allSumScore / new Double(allStudents.size())); from5.setSchoolAvg(schoolSumScore / new Double(students.size())); int allHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),null ,analyseDetail.getQuestionNumber(),allHighStudent,analyseDetail.getScore()); int allLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),null ,analyseDetail.getQuestionNumber(),allLowStudent,analyseDetail.getScore()); int high = studentDetailService.selectTrueByExamNumber(analyse.getId(),getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),highStudent,analyseDetail.getScore()); int low = studentDetailService.selectTrueByExamNumber(analyse.getId(),getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),lowStudent,analyseDetail.getScore()); from5.setAllDist(new Double(allHigh-allLow)/new Double(allNumber)); from5.setSchoolDist(new Double(high-low)/new Double(number)); list.add(from5); } return list; } }