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.utils.RedisUtils; import com.jevon.vo.rep.SuggestRepVo; import com.jevon.vo.req.GetLearnReqVo; import com.jevon.vo.school.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.formula.functions.T; 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.text.DecimalFormat; 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; @Autowired ChapterService chapterService; @Autowired KnowledgeService knowledgeService ; @ApiOperation("getForm1_1") @RequestMapping(value = "getForm1_1", method = RequestMethod.POST) public Form7RepVO getForm1_1(@RequestBody GetLearnReqVo getLearnReqVo){ Form7RepVO form7RepVO = new Form7RepVO(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_1_1")){ form7RepVO = (Form7RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_1_1"); }else { Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); form7RepVO.setExamTime(analyse.getExamTime()); form7RepVO.setMaxScore(analyse.getMaxScore()); form7RepVO.setExamScope(analyse.getExamScope()); form7RepVO.setCourseName(analyse.getCourseName()); List chapters = chapterService.selectByAnalyse(analyse.getId()); for(Chapter chapter : chapters){ chapter.setPercent(chapter.getChapterScore() / analyse.getMaxScore() * 100); } form7RepVO.setList(chapters); List difficultList = new ArrayList<>(); for (DifficultEnums difficultEnums : DifficultEnums.values()){ Form7 form7 = new Form7(); form7.setName(difficultEnums.getDifficultShow()); form7.setPercent(analyseDetailService.selectDifficult(analyse.getId(),difficultEnums.getDifficultType())/analyse.getMaxScore()*100); difficultList.add(form7); } form7RepVO.setDifficultList(difficultList); List typeList = new ArrayList<>(); List list = analyseDetailService.selectQuestionType(analyse.getId()); for(String type : list){ Form7 form7 = new Form7(); form7.setName(type); Double score = analyseDetailService.selectSumType(analyse.getId(),type); form7.setScore(score); form7.setPercent(score / analyse.getMaxScore() * 100); typeList.add(form7); } form7RepVO.setTypeList(typeList); RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_1_1",form7RepVO); } return form7RepVO; } @ApiOperation("getForm2_1_1") @RequestMapping(value = "getForm2_1_1", method = RequestMethod.POST) public Form1RepVO getForm2_1_1(@RequestBody GetLearnReqVo getLearnReqVo){ Form1RepVO form1RepVo = new Form1RepVO(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_1")){ form1RepVo = (Form1RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_1"); }else { //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); RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_1",form1RepVo); } 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(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_2")){ repVO = (Form2RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_2"); }else { 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); RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_2",repVO); } 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(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_3_2")){ repVO = (Form2RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_3_2"); }else { 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); RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_3_2",repVO); } 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); RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_1",repVO); } 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(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_2")){ repVO = (Form4RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_2"); }else { 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("联盟校"); 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); RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_2",repVO); } 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(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_3")){ repVO = (Form5RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_3"); }else { 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); RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_3",repVO); } 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(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_4")){ repVO = (Form8RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_4"); }else { 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); RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_4",repVO); } return repVO; } @ApiOperation("getForm2_2_5") @RequestMapping(value = "getForm2_2_5", method = RequestMethod.POST) public Map getForm2_2_5(@RequestBody GetLearnReqVo getLearnReqVo){ Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); //分数段 Double maxScore = analyse.getMaxScore(); Map segmentMap = new HashMap<>(); segmentMap.put("A",maxScore*0.85); segmentMap.put("B",maxScore*0.7); segmentMap.put("C",maxScore*0.6); segmentMap.put("D",maxScore*0.6); return segmentMap ; } @ApiOperation("getForm3_1") @RequestMapping(value = "getForm3_1", method = RequestMethod.POST) public Form6RepVO getForm3_1(@RequestBody GetLearnReqVo getLearnReqVo){ Form6RepVO form6RepVO = new Form6RepVO(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1")){ form6RepVO = (Form6RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1"); }else { form6RepVO = initDimensional(getLearnReqVo,DimensionalEnums.knowledge.getDimensionalType()) ; RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1",form6RepVO); } return form6RepVO; } @ApiOperation("getForm3_1_1") @RequestMapping(value = "getForm3_1_1", method = RequestMethod.POST) public Table2RepVO getForm3_1_1(@RequestBody GetLearnReqVo getLearnReqVo){ Table2RepVO table2RepVO = new Table2RepVO(); Form6RepVO form6RepVO = new Form6RepVO(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1")){ form6RepVO = (Form6RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1"); }else { form6RepVO = initDimensional(getLearnReqVo,DimensionalEnums.knowledge.getDimensionalType()) ; RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1",form6RepVO); } List knowledges = knowledgeService.selectAll(); List table2List = new ArrayList<>(); for(Knowledge knowledge : knowledges){ Double sumScore = new Double("0"); Double getScore = new Double("0"); String[] detailArray = knowledge.getDetail().split("、"); for(String detail : detailArray){ for(Form6 form6 : form6RepVO.getData()){ if(detail.equals(form6.getDimensional())){ sumScore = sumScore + form6.getScore() ; getScore = getScore + form6.getSchoolRate()*form6.getScore(); } } } if(sumScore > 0){ Table2 table2 = new Table2(); table2.setKnowledge(knowledge.getKnowledge()); table2.setAvg(knowledge.getAvg()); table2.setRate(knowledge.getRate()); table2.setSchoolRate(getScore / sumScore); table2List.add(table2); } } List data = sort(table2List); table2RepVO.setData(data); return table2RepVO; } private List sort(List target){ List course = new ArrayList<>(); if(target.size() > 0){ for(Table2 table2 : target){ if(table2.getSchoolRate() < 0.75 && Double.valueOf(table2.getAvg()) >2){ course.add(table2); } } if(course.size() == 0){ Double avg = new Double("0"); Table2 result = new Table2(); for(Table2 table2 : target){ if(avg < new Double(table2.getAvg())){ avg = new Double(table2.getAvg()) ; result = table2 ; } } course.add(result); } if(course.size() > 5){ course = course.subList(0,5); } for (int i = 0; i < course.size() ; i++) { Table2 temp = new Table2(); for (int j = 0; j < course.size() ; j++) { if(new Double(course.get(i).getAvg()) > new Double(course.get(j).getAvg())){ temp = course.get(j); course.set(j,course.get(i)); course.set(i,temp); } } } } return course; } @ApiOperation("getForm3_2") @RequestMapping(value = "getForm3_2", method = RequestMethod.POST) public Form6RepVO getForm3_2(@RequestBody GetLearnReqVo getLearnReqVo){ Form6RepVO form6RepVO = new Form6RepVO(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_2")){ form6RepVO = (Form6RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_2"); }else { form6RepVO = initDimensional(getLearnReqVo,DimensionalEnums.skill.getDimensionalType()) ; RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_2",form6RepVO); } return form6RepVO; } @ApiOperation("getForm3_3") @RequestMapping(value = "getForm3_3", method = RequestMethod.POST) public Form6RepVO getForm3_3(@RequestBody GetLearnReqVo getLearnReqVo){ Form6RepVO form6RepVO = new Form6RepVO(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_3")){ form6RepVO = (Form6RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_3"); }else { form6RepVO = initDimensional(getLearnReqVo,DimensionalEnums.ability.getDimensionalType()) ; RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_3",form6RepVO); } return form6RepVO; } @ApiOperation("getForm3_4") @RequestMapping(value = "getForm3_4", method = RequestMethod.POST) public Form6RepVO getForm3_4(@RequestBody GetLearnReqVo getLearnReqVo){ Form6RepVO form6RepVO = new Form6RepVO(); if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_4")){ form6RepVO = (Form6RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_4"); }else { form6RepVO = initDimensional(getLearnReqVo,DimensionalEnums.think.getDimensionalType()) ; RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_4",form6RepVO); } return form6RepVO; } 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() ; String questionNumber = analyseDimensional.getQuestionNumber(); if(questionNumber.contains("(")){ questionNumber = questionNumber.split("\\(")[0]; } if(!examNumber.toString().contains(questionNumber)){ examNumber.append(questionNumber).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; } private Form6RepVO initSchoolDimensional(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 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 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.setSchoolRate(schoolSumScore / new Double(students.size()) / score); form6.setSchoolAvg(schoolSumScore / new Double(students.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; } @ApiOperation("获取教学改进建议") @RequestMapping(value = "getSuggest", method = RequestMethod.POST) public String getSuggest(@RequestBody GetLearnReqVo getLearnReqVo){ String suggest = null ; if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_suggest")){ suggest = RedisUtils.getString(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_suggest"); }else { SuggestRepVo suggestRepVo = new SuggestRepVo() ; Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); Double avg = studentService.selectAvgScore(analyse.getId(),null,getLearnReqVo.getSchoolName()) ; DecimalFormat df = new DecimalFormat("#.00"); //得分率 String avgStr = df.format(avg / analyse.getMaxScore()); List students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); int a = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.85,analyse.getMaxScore()+1f); //优秀率 Double apercent = new Double(a) / new Double(students.size()) * 100 ; String aStr = df.format(apercent); String access = ""; if(avg>=80){ if(apercent >= 20){ access = "良好"; }else { access = "相对可以"; } }else if(avg >= 75){ if(apercent >= 35){ access = "很好"; }else if(apercent >= 20){ access = "良好"; }else { access = "相对可以"; } }else if(avg >= 70){ if(apercent >= 20){ access = "良好"; }else { access = "相对可以"; } } else if (avg >= 60) { if(apercent >= 10){ access = "相对可以"; }else { access = "一般"; } }else { access = "暴露出一些问题,试卷偏难,学生掌握不够理想"; } suggestRepVo.setAssess(access); suggestRepVo.setDifficultyDegree(avgStr); suggestRepVo.setExcellentRate(aStr); suggestRepVo.setErrorList(getErrorRate(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),students.size())); Form6RepVO knowledge = initSchoolDimensional(getLearnReqVo,DimensionalEnums.knowledge.getDimensionalType()); List lessKnowledgeList = new ArrayList<>(); //不足50% List midKnowledgeList = new ArrayList<>(); //50-70% for(Form6 form6 :knowledge.getData()){ if(form6.getSchoolRate() < 0.5d){ lessKnowledgeList.add(form6.getDimensional()); }else if(form6.getSchoolRate() < 0.7d){ midKnowledgeList.add(form6.getDimensional()); } } suggestRepVo.setLessKnowledgeList(lessKnowledgeList); suggestRepVo.setMidKnowledgeList(midKnowledgeList); Form6RepVO ability = initSchoolDimensional(getLearnReqVo,DimensionalEnums.ability.getDimensionalType()); List lessAbilityList = new ArrayList<>(); //不足70% List midAbilityList = new ArrayList<>(); //70-80% List highAbilityList = new ArrayList<>(); //大于80% for(Form6 form6 :ability.getData()){ if(form6.getSchoolRate() < 0.7d){ lessAbilityList.add(form6.getDimensional()); }else if(form6.getSchoolRate() < 0.8d){ midAbilityList.add(form6.getDimensional()); }else if(form6.getSchoolRate() >= 0.8d){ highAbilityList.add(form6.getDimensional()); } } suggestRepVo.setLessAbilityList(lessAbilityList); suggestRepVo.setMidAbilityList(midAbilityList); suggestRepVo.setHighAbilityList(highAbilityList); Form6RepVO skill = initSchoolDimensional(getLearnReqVo,DimensionalEnums.skill.getDimensionalType()); List lessSkillList = new ArrayList<>(); //不足70% List midSkillList = new ArrayList<>(); //70-80% List highSkillList = new ArrayList<>(); //大于80% for(Form6 form6 :skill.getData()){ if(form6.getSchoolRate() < 0.7d){ lessSkillList.add(form6.getDimensional()); }else if(form6.getSchoolRate() < 0.8d){ midSkillList.add(form6.getDimensional()); }else if(form6.getSchoolRate() >= 0.8d){ highSkillList.add(form6.getDimensional()); } } suggestRepVo.setLessSkillList(lessSkillList); suggestRepVo.setMidSkillList(midSkillList); suggestRepVo.setHighSkillList(highSkillList); suggest = initSuggest(suggestRepVo); RedisUtils.setString(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_suggest",suggest); } return suggest; } private List getErrorRate(int analyseId , String schoolName , int studentSize){ List errorList = new ArrayList<>(); List analyseDetails = analyseDetailService.selectByAnalyseId(analyseId); double errorNumber = Math.ceil(studentSize * 0.15) ; for(AnalyseDetail analyseDetail :analyseDetails){ if("选择题".equals(analyseDetail.getQuestionType())){ int number = studentDetailService.selectTrueByExamNumber(analyseId,schoolName,analyseDetail.getQuestionNumber()); if(errorNumber < (studentSize-number)){ errorList.add(analyseDetail.getQuestionNumber()); } } } return errorList; } private String initSuggest(SuggestRepVo suggestRepVo){ StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("

本次检测总体情况").append(suggestRepVo.getAssess()).append(",难度系数是0") .append(suggestRepVo.getDifficultyDegree()).append(",优秀率是").append(suggestRepVo.getExcellentRate()).append("%。") .append("对有关知识,总体掌握情况比较好。

从考试结果分析,各知识点掌握程度较好,唯"); for (int i = 0; i < suggestRepVo.getMidKnowledgeList().size(); i++) { if(i == suggestRepVo.getMidKnowledgeList().size() - 1 ){ stringBuffer.append(suggestRepVo.getMidKnowledgeList().get(i)); }else { stringBuffer.append(suggestRepVo.getMidKnowledgeList().get(i)).append("、"); } } stringBuffer.append("几个知识点掌握较弱,"); for (int i = 0; i < suggestRepVo.getLessKnowledgeList().size(); i++) { if(i == suggestRepVo.getLessKnowledgeList().size() - 1 ){ stringBuffer.append(suggestRepVo.getLessKnowledgeList().get(i)); }else { stringBuffer.append(suggestRepVo.getLessKnowledgeList().get(i)).append("、"); } } stringBuffer.append("几个知识点学生的理解有些问题。

探究技能方面:"); for (int i = 0; i < suggestRepVo.getHighSkillList().size(); i++) { if(i == suggestRepVo.getHighSkillList().size() - 1 ){ stringBuffer.append(suggestRepVo.getHighSkillList().get(i)); }else { stringBuffer.append(suggestRepVo.getHighSkillList().get(i)).append("、"); } } stringBuffer.append("掌握的比较好,"); for (int i = 0; i < suggestRepVo.getMidSkillList().size(); i++) { if(i == suggestRepVo.getMidSkillList().size() - 1 ){ stringBuffer.append(suggestRepVo.getMidSkillList().get(i)); }else { stringBuffer.append(suggestRepVo.getMidSkillList().get(i)).append("、"); } } stringBuffer.append("等相对较弱一些,而"); for (int i = 0; i < suggestRepVo.getLessSkillList().size(); i++) { if(i == suggestRepVo.getLessSkillList().size() - 1 ){ stringBuffer.append(suggestRepVo.getLessSkillList().get(i)); }else { stringBuffer.append(suggestRepVo.getLessSkillList().get(i)).append("、"); } } stringBuffer.append("学生掌握有些问题。

学习能力上:"); for (int i = 0; i < suggestRepVo.getHighAbilityList().size(); i++) { if(i == suggestRepVo.getHighAbilityList().size() - 1 ){ stringBuffer.append(suggestRepVo.getHighAbilityList().get(i)); }else { stringBuffer.append(suggestRepVo.getHighAbilityList().get(i)).append("、"); } } stringBuffer.append("掌握较好,"); for (int i = 0; i < suggestRepVo.getMidAbilityList().size(); i++) { if(i == suggestRepVo.getMidAbilityList().size() - 1 ){ stringBuffer.append(suggestRepVo.getMidAbilityList().get(i)); }else { stringBuffer.append(suggestRepVo.getMidAbilityList().get(i)).append("、"); } } stringBuffer.append("等相对较弱一些,"); for (int i = 0; i < suggestRepVo.getLessAbilityList().size(); i++) { if(i == suggestRepVo.getLessAbilityList().size() - 1 ){ stringBuffer.append(suggestRepVo.getLessAbilityList().get(i)); }else { stringBuffer.append(suggestRepVo.getLessAbilityList().get(i)).append("、"); } } stringBuffer.append("学得还欠缺一些。另外,部分学生审题不够清楚、思维有定势,如选择题"); for (int i = 0; i < suggestRepVo.getErrorList().size(); i++) { if(i == suggestRepVo.getErrorList().size() - 1 ){ stringBuffer.append(suggestRepVo.getErrorList().get(i)); }else { stringBuffer.append(suggestRepVo.getErrorList().get(i)).append("、"); } } stringBuffer.append("错误率大于15%。

后续复习巩固可以从抓好基础、提高能力和注重应用上下功夫。提升"); for (int i = 0; i < suggestRepVo.getLessKnowledgeList().size(); i++) { if(i == suggestRepVo.getLessKnowledgeList().size() - 1 ){ stringBuffer.append(suggestRepVo.getLessKnowledgeList().get(i)); }else { stringBuffer.append(suggestRepVo.getLessKnowledgeList().get(i)).append("、"); } } stringBuffer.append("的教学,减少低分面;以思维教学促进学生能力的提高,特别是"); for (int i = 0; i < suggestRepVo.getLessAbilityList().size(); i++) { if(i == suggestRepVo.getLessAbilityList().size() - 1 ){ stringBuffer.append(suggestRepVo.getLessAbilityList().get(i)); }else { stringBuffer.append(suggestRepVo.getLessAbilityList().get(i)).append("、"); } } stringBuffer.append("等方面的能力;重视将知识应用到具体的实践中,尤其是做好试题审题和思路分析的引导,教师自己开发一些新情景的试题。

"); return stringBuffer.toString(); } @ApiOperation("获取教学改进建议") @RequestMapping(value = "getSuggest2", method = RequestMethod.POST) public String getSuggest2(@RequestBody GetLearnReqVo getLearnReqVo){ String suggest = null ; if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_suggest2")){ suggest = RedisUtils.getString(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_suggest2"); }else { SuggestRepVo suggestRepVo = new SuggestRepVo() ; Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); Double avg = studentService.selectAvgScore(analyse.getId(),null,getLearnReqVo.getSchoolName()) ; DecimalFormat df = new DecimalFormat("#.00"); //得分率 String avgStr = df.format(avg / analyse.getMaxScore()); List students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); int a = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.85,analyse.getMaxScore()+1f); //优秀率 Double apercent = new Double(a) / new Double(students.size()) * 100 ; String aStr = df.format(apercent); String access = ""; if(avg>=80){ if(apercent >= 20){ access = "良好"; }else { access = "相对可以"; } }else if(avg >= 75){ if(apercent >= 35){ access = "很好"; }else if(apercent >= 20){ access = "良好"; }else { access = "相对可以"; } }else if(avg >= 70){ if(apercent >= 20){ access = "良好"; }else { access = "相对可以"; } } else if (avg >= 60) { if(apercent >= 10){ access = "相对可以"; }else { access = "一般"; } }else { access = "暴露出一些问题,试卷偏难,学生掌握不够理想"; } suggestRepVo.setAssess(access); suggestRepVo.setDifficultyDegree(avgStr); suggestRepVo.setExcellentRate(aStr); suggestRepVo.setErrorList(getErrorRate(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),students.size())); Form6RepVO knowledge = initSchoolDimensional(getLearnReqVo,DimensionalEnums.knowledge.getDimensionalType()); List lessKnowledgeList = new ArrayList<>(); //不足50% List midKnowledgeList = new ArrayList<>(); //50-70% for(Form6 form6 :knowledge.getData()){ if(form6.getSchoolRate() < 0.5d){ lessKnowledgeList.add(form6.getDimensional()); }else if(form6.getSchoolRate() < 0.7d){ midKnowledgeList.add(form6.getDimensional()); } } suggestRepVo.setLessKnowledgeList(lessKnowledgeList); suggestRepVo.setMidKnowledgeList(midKnowledgeList); Form6RepVO ability = initSchoolDimensional(getLearnReqVo,DimensionalEnums.ability.getDimensionalType()); List lessAbilityList = new ArrayList<>(); //不足70% List midAbilityList = new ArrayList<>(); //70-80% List highAbilityList = new ArrayList<>(); //大于80% for(Form6 form6 :ability.getData()){ if(form6.getSchoolRate() < 0.7d){ lessAbilityList.add(form6.getDimensional()); }else if(form6.getSchoolRate() < 0.8d){ midAbilityList.add(form6.getDimensional()); }else if(form6.getSchoolRate() >= 0.8d){ highAbilityList.add(form6.getDimensional()); } } suggestRepVo.setLessAbilityList(lessAbilityList); suggestRepVo.setMidAbilityList(midAbilityList); suggestRepVo.setHighAbilityList(highAbilityList); Form6RepVO skill = initSchoolDimensional(getLearnReqVo,DimensionalEnums.skill.getDimensionalType()); List lessSkillList = new ArrayList<>(); //不足70% List midSkillList = new ArrayList<>(); //70-80% List highSkillList = new ArrayList<>(); //大于80% for(Form6 form6 :skill.getData()){ if(form6.getSchoolRate() < 0.7d){ lessSkillList.add(form6.getDimensional()); }else if(form6.getSchoolRate() < 0.8d){ midSkillList.add(form6.getDimensional()); }else if(form6.getSchoolRate() >= 0.8d){ highSkillList.add(form6.getDimensional()); } } suggestRepVo.setLessSkillList(lessSkillList); suggestRepVo.setMidSkillList(midSkillList); suggestRepVo.setHighSkillList(highSkillList); suggest = initSuggest2(suggestRepVo); RedisUtils.setString(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_suggest2",suggest); } return suggest; } private String initSuggest2(SuggestRepVo suggestRepVo){ StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("

本次检测总体情况").append(suggestRepVo.getAssess()).append(",难度系数是0") .append(suggestRepVo.getDifficultyDegree()).append(",优秀率是").append(suggestRepVo.getExcellentRate()).append("%。") .append("对有关知识,总体掌握情况比较好。

从考试结果分析,各知识点掌握程度较好,唯......"); stringBuffer.append("

后续复习巩固可以从抓好基础、提高能力和注重应用上下功夫......

"); return stringBuffer.toString(); } }