|  | @@ -4,11 +4,13 @@ import com.jevon.enums.DifficultEnums; |  | @@ -4,11 +4,13 @@ import com.jevon.enums.DifficultEnums; | 
| 4 | import com.jevon.enums.DimensionalEnums; | 4 | import com.jevon.enums.DimensionalEnums; | 
| 5 | import com.jevon.model.*; | 5 | import com.jevon.model.*; | 
| 6 | import com.jevon.service.*; | 6 | import com.jevon.service.*; | 
|  |  | 7 | +import com.jevon.utils.RedisUtils; | 
| 7 | import com.jevon.vo.rep.SuggestRepVo; | 8 | import com.jevon.vo.rep.SuggestRepVo; | 
| 8 | import com.jevon.vo.req.GetLearnReqVo; | 9 | import com.jevon.vo.req.GetLearnReqVo; | 
| 9 | import com.jevon.vo.school.*; | 10 | import com.jevon.vo.school.*; | 
| 10 | import io.swagger.annotations.Api; | 11 | import io.swagger.annotations.Api; | 
| 11 | import io.swagger.annotations.ApiOperation; | 12 | import io.swagger.annotations.ApiOperation; | 
|  |  | 13 | +import org.apache.poi.ss.formula.functions.T; | 
| 12 | import org.springframework.beans.factory.annotation.Autowired; | 14 | import org.springframework.beans.factory.annotation.Autowired; | 
| 13 | import org.springframework.web.bind.annotation.RequestBody; | 15 | import org.springframework.web.bind.annotation.RequestBody; | 
| 14 | import org.springframework.web.bind.annotation.RequestMapping; | 16 | import org.springframework.web.bind.annotation.RequestMapping; | 
|  | @@ -54,41 +56,49 @@ public class LearnStatController { |  | @@ -54,41 +56,49 @@ public class LearnStatController { | 
| 54 | @Autowired | 56 | @Autowired | 
| 55 | ChapterService chapterService; | 57 | ChapterService chapterService; | 
| 56 |  | 58 |  | 
|  |  | 59 | +    @Autowired | 
|  |  | 60 | +    KnowledgeService knowledgeService ; | 
|  |  | 61 | + | 
| 57 | @ApiOperation("getForm1_1") | 62 | @ApiOperation("getForm1_1") | 
| 58 | @RequestMapping(value = "getForm1_1", method = RequestMethod.POST) | 63 | @RequestMapping(value = "getForm1_1", method = RequestMethod.POST) | 
| 59 | public Form7RepVO getForm1_1(@RequestBody GetLearnReqVo getLearnReqVo){ | 64 | public Form7RepVO getForm1_1(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 60 | Form7RepVO form7RepVO = new Form7RepVO(); | 65 | Form7RepVO form7RepVO = new Form7RepVO(); | 
| 61 | -        Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); |  |  | 
| 62 | -        form7RepVO.setExamTime(analyse.getExamTime()); |  |  | 
| 63 | -        form7RepVO.setMaxScore(analyse.getMaxScore()); |  |  | 
| 64 | -        form7RepVO.setExamScope(analyse.getExamScope()); |  |  | 
| 65 | -        form7RepVO.setCourseName(analyse.getCourseName()); |  |  | 
| 66 | - |  |  | 
| 67 | -        List<Chapter> chapters = chapterService.selectByAnalyse(analyse.getId()); |  |  | 
| 68 | -        for(Chapter chapter : chapters){ |  |  | 
| 69 | -            chapter.setPercent(chapter.getChapterScore() / analyse.getMaxScore() * 100); |  |  | 
| 70 | -        } |  |  | 
| 71 | -        form7RepVO.setList(chapters); |  |  | 
| 72 | -        List<Form7> difficultList = new ArrayList<>(); |  |  | 
| 73 | -        for (DifficultEnums difficultEnums : DifficultEnums.values()){ |  |  | 
| 74 | -            Form7 form7 = new Form7(); |  |  | 
| 75 | -            form7.setName(difficultEnums.getDifficultShow()); |  |  | 
| 76 | -            form7.setPercent(analyseDetailService.selectDifficult(analyse.getId(),difficultEnums.getDifficultType())/analyse.getMaxScore()*100); |  |  | 
| 77 | -            difficultList.add(form7); |  |  | 
| 78 | -        } |  |  | 
| 79 | -        form7RepVO.setDifficultList(difficultList); |  |  | 
| 80 | - |  |  | 
| 81 | -        List<Form7> typeList = new ArrayList<>(); |  |  | 
| 82 | -        List<String> list = analyseDetailService.selectQuestionType(analyse.getId()); |  |  | 
| 83 | -        for(String type : list){ |  |  | 
| 84 | -            Form7 form7 = new Form7(); |  |  | 
| 85 | -            form7.setName(type); |  |  | 
| 86 | -            Double score = analyseDetailService.selectSumType(analyse.getId(),type); |  |  | 
| 87 | -            form7.setScore(score); |  |  | 
| 88 | -            form7.setPercent(score / analyse.getMaxScore() * 100); |  |  | 
| 89 | -            typeList.add(form7); |  |  | 
| 90 | -        } |  |  | 
| 91 | -        form7RepVO.setTypeList(typeList); | 66 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_1_1")){ | 
|  |  | 67 | +            form7RepVO = (Form7RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_1_1"); | 
|  |  | 68 | +        }else { | 
|  |  | 69 | +            Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); | 
|  |  | 70 | +            form7RepVO.setExamTime(analyse.getExamTime()); | 
|  |  | 71 | +            form7RepVO.setMaxScore(analyse.getMaxScore()); | 
|  |  | 72 | +            form7RepVO.setExamScope(analyse.getExamScope()); | 
|  |  | 73 | +            form7RepVO.setCourseName(analyse.getCourseName()); | 
|  |  | 74 | + | 
|  |  | 75 | +            List<Chapter> chapters = chapterService.selectByAnalyse(analyse.getId()); | 
|  |  | 76 | +            for(Chapter chapter : chapters){ | 
|  |  | 77 | +                chapter.setPercent(chapter.getChapterScore() / analyse.getMaxScore() * 100); | 
|  |  | 78 | +            } | 
|  |  | 79 | +            form7RepVO.setList(chapters); | 
|  |  | 80 | +            List<Form7> difficultList = new ArrayList<>(); | 
|  |  | 81 | +            for (DifficultEnums difficultEnums : DifficultEnums.values()){ | 
|  |  | 82 | +                Form7 form7 = new Form7(); | 
|  |  | 83 | +                form7.setName(difficultEnums.getDifficultShow()); | 
|  |  | 84 | +                form7.setPercent(analyseDetailService.selectDifficult(analyse.getId(),difficultEnums.getDifficultType())/analyse.getMaxScore()*100); | 
|  |  | 85 | +                difficultList.add(form7); | 
|  |  | 86 | +            } | 
|  |  | 87 | +            form7RepVO.setDifficultList(difficultList); | 
|  |  | 88 | + | 
|  |  | 89 | +            List<Form7> typeList = new ArrayList<>(); | 
|  |  | 90 | +            List<String> list = analyseDetailService.selectQuestionType(analyse.getId()); | 
|  |  | 91 | +            for(String type : list){ | 
|  |  | 92 | +                Form7 form7 = new Form7(); | 
|  |  | 93 | +                form7.setName(type); | 
|  |  | 94 | +                Double score = analyseDetailService.selectSumType(analyse.getId(),type); | 
|  |  | 95 | +                form7.setScore(score); | 
|  |  | 96 | +                form7.setPercent(score / analyse.getMaxScore() * 100); | 
|  |  | 97 | +                typeList.add(form7); | 
|  |  | 98 | +            } | 
|  |  | 99 | +            form7RepVO.setTypeList(typeList); | 
|  |  | 100 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_1_1",form7RepVO); | 
|  |  | 101 | +        } | 
| 92 | return form7RepVO; | 102 | return form7RepVO; | 
| 93 | } | 103 | } | 
| 94 |  | 104 |  | 
|  | @@ -96,44 +106,49 @@ public class LearnStatController { |  | @@ -96,44 +106,49 @@ public class LearnStatController { | 
| 96 | @RequestMapping(value = "getForm2_1_1", method = RequestMethod.POST) | 106 | @RequestMapping(value = "getForm2_1_1", method = RequestMethod.POST) | 
| 97 | public Form1RepVO getForm2_1_1(@RequestBody GetLearnReqVo getLearnReqVo){ | 107 | public Form1RepVO getForm2_1_1(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 98 | Form1RepVO form1RepVo = new Form1RepVO(); | 108 | Form1RepVO form1RepVo = new Form1RepVO(); | 
| 99 | -        //2.1表 |  |  | 
| 100 | -        Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); |  |  | 
| 101 | -        //分数段 |  |  | 
| 102 | -        Double maxScore = analyse.getMaxScore(); |  |  | 
| 103 | -        Map<String,String> segmentMap = new HashMap<>(); |  |  | 
| 104 | -        segmentMap.put("A(优秀)",maxScore*0.85 + "~" + maxScore+"分"); |  |  | 
| 105 | -        segmentMap.put("B(良好)",maxScore*0.7 + "~" + (maxScore*0.85-1f)+"分"); |  |  | 
| 106 | -        segmentMap.put("C(及格)",maxScore*0.7 + "~" + (maxScore*0.7-1f)+"分"); |  |  | 
| 107 | -        segmentMap.put("D(不及格)",0 + "~" + (maxScore*0.6-1f)+"分"); |  |  | 
| 108 | -        form1RepVo.setMap(segmentMap); |  |  | 
| 109 | -        List<Student> students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); |  |  | 
| 110 | -        double sum = new Double(students.size()); |  |  | 
| 111 | -        int a = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0.85,maxScore+1f); |  |  | 
| 112 | -        int b = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0.7,(maxScore*0.85)); |  |  | 
| 113 | -        int c = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0.6,(maxScore*0.7)); |  |  | 
| 114 | -        int d = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0,(maxScore*0.6)); |  |  | 
| 115 | -        List<Form1> form1List = new ArrayList<>(); |  |  | 
| 116 | -        Form1 formA = new Form1(); |  |  | 
| 117 | -        formA.setLevel("A"); |  |  | 
| 118 | -        formA.setNumber(a); |  |  | 
| 119 | -        formA.setProp(a/sum*100); |  |  | 
| 120 | -        Form1 formB = new Form1(); |  |  | 
| 121 | -        formB.setLevel("B"); |  |  | 
| 122 | -        formB.setNumber(b); |  |  | 
| 123 | -        formB.setProp(b/sum*100); |  |  | 
| 124 | -        Form1 formC = new Form1(); |  |  | 
| 125 | -        formC.setLevel("C"); |  |  | 
| 126 | -        formC.setNumber(c); |  |  | 
| 127 | -        formC.setProp(c/sum*100); |  |  | 
| 128 | -        Form1 formD = new Form1(); |  |  | 
| 129 | -        formD.setLevel("D"); |  |  | 
| 130 | -        formD.setNumber(d); |  |  | 
| 131 | -        formD.setProp(d/sum*100); |  |  | 
| 132 | -        form1List.add(formA); |  |  | 
| 133 | -        form1List.add(formB); |  |  | 
| 134 | -        form1List.add(formC); |  |  | 
| 135 | -        form1List.add(formD); |  |  | 
| 136 | -        form1RepVo.setList(form1List); | 109 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_1")){ | 
|  |  | 110 | +            form1RepVo = (Form1RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_1"); | 
|  |  | 111 | +        }else { | 
|  |  | 112 | +            //2.1表 | 
|  |  | 113 | +            Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); | 
|  |  | 114 | +            //分数段 | 
|  |  | 115 | +            Double maxScore = analyse.getMaxScore(); | 
|  |  | 116 | +            Map<String,String> segmentMap = new HashMap<>(); | 
|  |  | 117 | +            segmentMap.put("A(优秀)",maxScore*0.85 + "~" + maxScore+"分"); | 
|  |  | 118 | +            segmentMap.put("B(良好)",maxScore*0.7 + "~" + (maxScore*0.85-1f)+"分"); | 
|  |  | 119 | +            segmentMap.put("C(及格)",maxScore*0.7 + "~" + (maxScore*0.7-1f)+"分"); | 
|  |  | 120 | +            segmentMap.put("D(不及格)",0 + "~" + (maxScore*0.6-1f)+"分"); | 
|  |  | 121 | +            form1RepVo.setMap(segmentMap); | 
|  |  | 122 | +            List<Student> students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); | 
|  |  | 123 | +            double sum = new Double(students.size()); | 
|  |  | 124 | +            int a = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0.85,maxScore+1f); | 
|  |  | 125 | +            int b = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0.7,(maxScore*0.85)); | 
|  |  | 126 | +            int c = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0.6,(maxScore*0.7)); | 
|  |  | 127 | +            int d = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),maxScore*0,(maxScore*0.6)); | 
|  |  | 128 | +            List<Form1> form1List = new ArrayList<>(); | 
|  |  | 129 | +            Form1 formA = new Form1(); | 
|  |  | 130 | +            formA.setLevel("A"); | 
|  |  | 131 | +            formA.setNumber(a); | 
|  |  | 132 | +            formA.setProp(a/sum*100); | 
|  |  | 133 | +            Form1 formB = new Form1(); | 
|  |  | 134 | +            formB.setLevel("B"); | 
|  |  | 135 | +            formB.setNumber(b); | 
|  |  | 136 | +            formB.setProp(b/sum*100); | 
|  |  | 137 | +            Form1 formC = new Form1(); | 
|  |  | 138 | +            formC.setLevel("C"); | 
|  |  | 139 | +            formC.setNumber(c); | 
|  |  | 140 | +            formC.setProp(c/sum*100); | 
|  |  | 141 | +            Form1 formD = new Form1(); | 
|  |  | 142 | +            formD.setLevel("D"); | 
|  |  | 143 | +            formD.setNumber(d); | 
|  |  | 144 | +            formD.setProp(d/sum*100); | 
|  |  | 145 | +            form1List.add(formA); | 
|  |  | 146 | +            form1List.add(formB); | 
|  |  | 147 | +            form1List.add(formC); | 
|  |  | 148 | +            form1List.add(formD); | 
|  |  | 149 | +            form1RepVo.setList(form1List); | 
|  |  | 150 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_1",form1RepVo); | 
|  |  | 151 | +        } | 
| 137 | return form1RepVo; | 152 | return form1RepVo; | 
| 138 | } | 153 | } | 
| 139 |  | 154 |  | 
|  | @@ -141,63 +156,68 @@ public class LearnStatController { |  | @@ -141,63 +156,68 @@ public class LearnStatController { | 
| 141 | @RequestMapping(value = "getForm2_1_2", method = RequestMethod.POST) | 156 | @RequestMapping(value = "getForm2_1_2", method = RequestMethod.POST) | 
| 142 | public Form2RepVO getForm2_1_2(@RequestBody GetLearnReqVo getLearnReqVo){ | 157 | public Form2RepVO getForm2_1_2(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 143 | Form2RepVO repVO = new Form2RepVO(); | 158 | Form2RepVO repVO = new Form2RepVO(); | 
| 144 | -        Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); |  |  | 
| 145 | -        if(analyse == null){ |  |  | 
| 146 | -            repVO.setSuccess(false); |  |  | 
| 147 | -            repVO.setMessage("请先创建考试"); |  |  | 
| 148 | -            return  repVO; |  |  | 
| 149 | -        } |  |  | 
| 150 | -        List<String> leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); |  |  | 
| 151 | -        if(leagues == null){ |  |  | 
| 152 | -            repVO.setSuccess(false); |  |  | 
| 153 | -            repVO.setMessage("请先设定联盟校"); |  |  | 
| 154 | -            return  repVO; |  |  | 
| 155 | -        } |  |  | 
| 156 | -        List<Student> allStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,null); |  |  | 
| 157 | -        List<Student> leagueStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),leagues,null); |  |  | 
| 158 | -        List<Student> students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); |  |  | 
| 159 | -        //先算高分段的分数 |  |  | 
| 160 | -        int highNumber = (int) Math.floor(allStudents.size()*0.27); |  |  | 
| 161 | -        double highScore = allStudents.get(highNumber).getScore(); |  |  | 
| 162 | -        int lowNumber = allStudents.size()-highNumber; |  |  | 
| 163 | -        double lowScore = allStudents.get(lowNumber).getScore(); |  |  | 
| 164 | -        List<Form2> list = new ArrayList<>(); |  |  | 
| 165 | - |  |  | 
| 166 | -        int highAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,null,highScore,analyse.getMaxScore()+1f); |  |  | 
| 167 | -        int lowAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,null,0,lowScore); |  |  | 
| 168 | -        Form2 form2 = new Form2(); |  |  | 
| 169 | -        form2.setName("区"); |  |  | 
| 170 | -        form2.setStudentNumber(allStudents.size()); |  |  | 
| 171 | -        form2.setHighNumber(highAllCount); |  |  | 
| 172 | -        form2.setLowNumber(lowAllCount); |  |  | 
| 173 | -        list.add(form2); |  |  | 
| 174 | -        { |  |  | 
| 175 | -            int highLeagueCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),leagues,null,highScore,analyse.getMaxScore()+1f); |  |  | 
| 176 | -            int lowLeagueCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),leagues,null,0,lowScore); |  |  | 
| 177 | -            Form2 form = new Form2(); |  |  | 
| 178 | -            form.setName("联盟校"); |  |  | 
| 179 | -            form.setStudentNumber(leagueStudents.size()); |  |  | 
| 180 | -            form.setStudentProp(new Double(leagueStudents.size()) / new Double(allStudents.size())); |  |  | 
| 181 | -            form.setHighNumber(highLeagueCount); |  |  | 
| 182 | -            form.setLowNumber(lowLeagueCount); |  |  | 
| 183 | -            form.setHighProp(highLeagueCount/new Double(highAllCount)); |  |  | 
| 184 | -            form.setLowProp(lowLeagueCount/new Double(lowAllCount)); |  |  | 
| 185 | -            list.add(form); |  |  | 
| 186 | -        } |  |  | 
| 187 | -        { |  |  | 
| 188 | -            int highCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),highScore,analyse.getMaxScore()+1f); |  |  | 
| 189 | -            int lowCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),0,lowScore); |  |  | 
| 190 | -            Form2 form = new Form2(); |  |  | 
| 191 | -            form.setName(getLearnReqVo.getSchoolName()); |  |  | 
| 192 | -            form.setStudentNumber(students.size()); |  |  | 
| 193 | -            form.setStudentProp(new Double(students.size()) / new Double(allStudents.size())); |  |  | 
| 194 | -            form.setHighNumber(highCount); |  |  | 
| 195 | -            form.setLowNumber(lowCount); |  |  | 
| 196 | -            form.setHighProp(highCount/new Double(highAllCount)); |  |  | 
| 197 | -            form.setLowProp(lowCount/new Double(lowAllCount)); |  |  | 
| 198 | -            list.add(form); | 159 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_2")){ | 
|  |  | 160 | +            repVO = (Form2RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_2"); | 
|  |  | 161 | +        }else { | 
|  |  | 162 | +            Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); | 
|  |  | 163 | +            if(analyse == null){ | 
|  |  | 164 | +                repVO.setSuccess(false); | 
|  |  | 165 | +                repVO.setMessage("请先创建考试"); | 
|  |  | 166 | +                return  repVO; | 
|  |  | 167 | +            } | 
|  |  | 168 | +            List<String> leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); | 
|  |  | 169 | +            if(leagues == null){ | 
|  |  | 170 | +                repVO.setSuccess(false); | 
|  |  | 171 | +                repVO.setMessage("请先设定联盟校"); | 
|  |  | 172 | +                return  repVO; | 
|  |  | 173 | +            } | 
|  |  | 174 | +            List<Student> allStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,null); | 
|  |  | 175 | +            List<Student> leagueStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),leagues,null); | 
|  |  | 176 | +            List<Student> students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); | 
|  |  | 177 | +            //先算高分段的分数 | 
|  |  | 178 | +            int highNumber = (int) Math.floor(allStudents.size()*0.27); | 
|  |  | 179 | +            double highScore = allStudents.get(highNumber).getScore(); | 
|  |  | 180 | +            int lowNumber = allStudents.size()-highNumber; | 
|  |  | 181 | +            double lowScore = allStudents.get(lowNumber).getScore(); | 
|  |  | 182 | +            List<Form2> list = new ArrayList<>(); | 
|  |  | 183 | + | 
|  |  | 184 | +            int highAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,null,highScore,analyse.getMaxScore()+1f); | 
|  |  | 185 | +            int lowAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,null,0,lowScore); | 
|  |  | 186 | +            Form2 form2 = new Form2(); | 
|  |  | 187 | +            form2.setName("区"); | 
|  |  | 188 | +            form2.setStudentNumber(allStudents.size()); | 
|  |  | 189 | +            form2.setHighNumber(highAllCount); | 
|  |  | 190 | +            form2.setLowNumber(lowAllCount); | 
|  |  | 191 | +            list.add(form2); | 
|  |  | 192 | +            { | 
|  |  | 193 | +                int highLeagueCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),leagues,null,highScore,analyse.getMaxScore()+1f); | 
|  |  | 194 | +                int lowLeagueCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),leagues,null,0,lowScore); | 
|  |  | 195 | +                Form2 form = new Form2(); | 
|  |  | 196 | +                form.setName("联盟校"); | 
|  |  | 197 | +                form.setStudentNumber(leagueStudents.size()); | 
|  |  | 198 | +                form.setStudentProp(new Double(leagueStudents.size()) / new Double(allStudents.size())); | 
|  |  | 199 | +                form.setHighNumber(highLeagueCount); | 
|  |  | 200 | +                form.setLowNumber(lowLeagueCount); | 
|  |  | 201 | +                form.setHighProp(highLeagueCount/new Double(highAllCount)); | 
|  |  | 202 | +                form.setLowProp(lowLeagueCount/new Double(lowAllCount)); | 
|  |  | 203 | +                list.add(form); | 
|  |  | 204 | +            } | 
|  |  | 205 | +            { | 
|  |  | 206 | +                int highCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),highScore,analyse.getMaxScore()+1f); | 
|  |  | 207 | +                int lowCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),0,lowScore); | 
|  |  | 208 | +                Form2 form = new Form2(); | 
|  |  | 209 | +                form.setName(getLearnReqVo.getSchoolName()); | 
|  |  | 210 | +                form.setStudentNumber(students.size()); | 
|  |  | 211 | +                form.setStudentProp(new Double(students.size()) / new Double(allStudents.size())); | 
|  |  | 212 | +                form.setHighNumber(highCount); | 
|  |  | 213 | +                form.setLowNumber(lowCount); | 
|  |  | 214 | +                form.setHighProp(highCount/new Double(highAllCount)); | 
|  |  | 215 | +                form.setLowProp(lowCount/new Double(lowAllCount)); | 
|  |  | 216 | +                list.add(form); | 
|  |  | 217 | +            } | 
|  |  | 218 | +            repVO.setData(list); | 
|  |  | 219 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_2",repVO); | 
| 199 | } | 220 | } | 
| 200 | -        repVO.setData(list); |  |  | 
| 201 | return repVO; | 221 | return repVO; | 
| 202 | } | 222 | } | 
| 203 |  | 223 |  | 
|  | @@ -205,43 +225,48 @@ public class LearnStatController { |  | @@ -205,43 +225,48 @@ public class LearnStatController { | 
| 205 | @RequestMapping(value = "getForm2_1_3_2", method = RequestMethod.POST) | 225 | @RequestMapping(value = "getForm2_1_3_2", method = RequestMethod.POST) | 
| 206 | public Form2RepVO getForm2_1_3_2(@RequestBody GetLearnReqVo getLearnReqVo){ | 226 | public Form2RepVO getForm2_1_3_2(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 207 | Form2RepVO repVO = new Form2RepVO(); | 227 | Form2RepVO repVO = new Form2RepVO(); | 
| 208 | -        Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); |  |  | 
| 209 | -        if(analyse == null){ |  |  | 
| 210 | -            repVO.setSuccess(false); |  |  | 
| 211 | -            repVO.setMessage("请先创建考试"); |  |  | 
| 212 | -            return  repVO; | 228 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_3_2")){ | 
|  |  | 229 | +            repVO = (Form2RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_3_2"); | 
|  |  | 230 | +        }else { | 
|  |  | 231 | +            Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); | 
|  |  | 232 | +            if(analyse == null){ | 
|  |  | 233 | +                repVO.setSuccess(false); | 
|  |  | 234 | +                repVO.setMessage("请先创建考试"); | 
|  |  | 235 | +                return  repVO; | 
|  |  | 236 | +            } | 
|  |  | 237 | +            List<Student> allStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); | 
|  |  | 238 | +            //先算高分段的分数 | 
|  |  | 239 | +            int highNumber = (int) Math.floor(allStudents.size()*0.27); | 
|  |  | 240 | +            double highScore = allStudents.get(highNumber).getScore(); | 
|  |  | 241 | +            int lowNumber = allStudents.size()-highNumber; | 
|  |  | 242 | +            double lowScore = allStudents.get(lowNumber).getScore(); | 
|  |  | 243 | +            int highAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),highScore,analyse.getMaxScore()+1f); | 
|  |  | 244 | +            int lowAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),0,lowScore); | 
|  |  | 245 | +            List<Form2> resultList = new ArrayList<>(); | 
|  |  | 246 | +            Form2 form = new Form2(); | 
|  |  | 247 | +            form.setName(getLearnReqVo.getSchoolName()); | 
|  |  | 248 | +            form.setStudentNumber(allStudents.size()); | 
|  |  | 249 | +            form.setHighNumber(highAllCount); | 
|  |  | 250 | +            form.setLowNumber(lowAllCount); | 
|  |  | 251 | +            resultList.add(form); | 
|  |  | 252 | +            List<String> classNamList = studentService.selectClassNameBySchool(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName()); | 
|  |  | 253 | +            for(String className : classNamList){ | 
|  |  | 254 | +                List<Student> list = studentService.selectByClassName(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),className); | 
|  |  | 255 | +                int highCount = studentService.selectCountBySchoolScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),className,highScore,analyse.getMaxScore()+1f); | 
|  |  | 256 | +                int lowCount = studentService.selectCountBySchoolScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),className,0,lowScore); | 
|  |  | 257 | +                Form2 form2 = new Form2(); | 
|  |  | 258 | +                form2.setName(className); | 
|  |  | 259 | +                form2.setStudentNumber(list.size()); | 
|  |  | 260 | +                form2.setStudentProp(new Double(list.size()) / new Double(allStudents.size())); | 
|  |  | 261 | +                form2.setHighNumber(highCount); | 
|  |  | 262 | +                form2.setLowNumber(lowCount); | 
|  |  | 263 | +                form2.setHighProp(highCount/new Double(highAllCount)); | 
|  |  | 264 | +                form2.setLowProp(lowCount/new Double(lowAllCount)); | 
|  |  | 265 | +                resultList.add(form2); | 
|  |  | 266 | +            } | 
|  |  | 267 | +            repVO.setData(resultList); | 
|  |  | 268 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_1_3_2",repVO); | 
| 213 | } | 269 | } | 
| 214 | -        List<Student> allStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); |  |  | 
| 215 | -        //先算高分段的分数 |  |  | 
| 216 | -        int highNumber = (int) Math.floor(allStudents.size()*0.27); |  |  | 
| 217 | -        double highScore = allStudents.get(highNumber).getScore(); |  |  | 
| 218 | -        int lowNumber = allStudents.size()-highNumber; |  |  | 
| 219 | -        double lowScore = allStudents.get(lowNumber).getScore(); |  |  | 
| 220 | -        int highAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),highScore,analyse.getMaxScore()+1f); |  |  | 
| 221 | -        int lowAllCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),0,lowScore); |  |  | 
| 222 | -        List<Form2> resultList = new ArrayList<>(); |  |  | 
| 223 | -        Form2 form = new Form2(); |  |  | 
| 224 | -        form.setName(getLearnReqVo.getSchoolName()); |  |  | 
| 225 | -        form.setStudentNumber(allStudents.size()); |  |  | 
| 226 | -        form.setHighNumber(highAllCount); |  |  | 
| 227 | -        form.setLowNumber(lowAllCount); |  |  | 
| 228 | -        resultList.add(form); |  |  | 
| 229 | -        List<String> classNamList = studentService.selectClassNameBySchool(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName()); |  |  | 
| 230 | -        for(String className : classNamList){ |  |  | 
| 231 | -            List<Student> list = studentService.selectByClassName(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),className); |  |  | 
| 232 | -            int highCount = studentService.selectCountBySchoolScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),className,highScore,analyse.getMaxScore()+1f); |  |  | 
| 233 | -            int lowCount = studentService.selectCountBySchoolScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),className,0,lowScore); |  |  | 
| 234 | -            Form2 form2 = new Form2(); |  |  | 
| 235 | -            form2.setName(className); |  |  | 
| 236 | -            form2.setStudentNumber(list.size()); |  |  | 
| 237 | -            form2.setStudentProp(new Double(list.size()) / new Double(allStudents.size())); |  |  | 
| 238 | -            form2.setHighNumber(highCount); |  |  | 
| 239 | -            form2.setLowNumber(lowCount); |  |  | 
| 240 | -            form2.setHighProp(highCount/new Double(highAllCount)); |  |  | 
| 241 | -            form2.setLowProp(lowCount/new Double(lowAllCount)); |  |  | 
| 242 | -            resultList.add(form2); |  |  | 
| 243 | -        } |  |  | 
| 244 | -        repVO.setData(resultList); |  |  | 
| 245 | return repVO; | 270 | return repVO; | 
| 246 | } | 271 | } | 
| 247 |  | 272 |  | 
|  | @@ -285,71 +310,76 @@ public class LearnStatController { |  | @@ -285,71 +310,76 @@ public class LearnStatController { | 
| 285 | @RequestMapping(value = "getForm2_2_1", method = RequestMethod.POST) | 310 | @RequestMapping(value = "getForm2_2_1", method = RequestMethod.POST) | 
| 286 | public Form3RepVO getForm2_2_1(@RequestBody GetLearnReqVo getLearnReqVo){ | 311 | public Form3RepVO getForm2_2_1(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 287 | Form3RepVO repVO = new Form3RepVO(); | 312 | Form3RepVO repVO = new Form3RepVO(); | 
| 288 | -        Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); |  |  | 
| 289 | -        if(analyse == null){ |  |  | 
| 290 | -            repVO.setSuccess(false); |  |  | 
| 291 | -            repVO.setMessage("请先创建考试"); |  |  | 
| 292 | -            return  repVO; |  |  | 
| 293 | -        } |  |  | 
| 294 | -        List<String> leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); |  |  | 
| 295 | -        if(leagues == null){ |  |  | 
| 296 | -            repVO.setSuccess(false); |  |  | 
| 297 | -            repVO.setMessage("请先设定联盟校"); |  |  | 
| 298 | -            return  repVO; |  |  | 
| 299 | -        } |  |  | 
| 300 | -        List<Form3> list = new ArrayList<>(); |  |  | 
| 301 | -        List<Student> allStudents = studentService.selectBySchoolName(analyse.getId(),null,null); |  |  | 
| 302 | -        { |  |  | 
| 303 | -            Form3 form3 = new Form3(); |  |  | 
| 304 | -            form3.setName("区"); |  |  | 
| 305 | -            form3.setMaxScore(studentService.selectMaxScore(analyse.getId(),null,null)); |  |  | 
| 306 | -            form3.setAverage(studentService.selectAvgScore(analyse.getId(),null,null)); |  |  | 
| 307 | -            form3.setMinScore(studentService.selectMinScore(analyse.getId(),null,null)); |  |  | 
| 308 | -            int a = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0.85,analyse.getMaxScore()+1); |  |  | 
| 309 | -            form3.setApercent(a / new Double(allStudents.size()) * 100); |  |  | 
| 310 | -            int b = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0.7,analyse.getMaxScore()*0.85); |  |  | 
| 311 | -            form3.setBpercent(b / new Double(allStudents.size()) * 100); |  |  | 
| 312 | -            int c = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0.6,analyse.getMaxScore()*0.7); |  |  | 
| 313 | -            form3.setCpercent(c / new Double(allStudents.size()) * 100); |  |  | 
| 314 | -            int d = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0,analyse.getMaxScore()*0.6); |  |  | 
| 315 | -            form3.setDpercent(d / new Double(allStudents.size()) * 100); |  |  | 
| 316 | -            list.add(form3); |  |  | 
| 317 | -        } |  |  | 
| 318 | -        { |  |  | 
| 319 | -            Form3 form = new Form3(); |  |  | 
| 320 | -            form.setName("联盟校"); |  |  | 
| 321 | -            List<Student> students = studentService.selectBySchoolName(analyse.getId(),leagues,null); |  |  | 
| 322 | -            form.setMaxScore(studentService.selectMaxScore(analyse.getId(),leagues,null)); |  |  | 
| 323 | -            form.setAverage(studentService.selectAvgScore(analyse.getId(),leagues,null)); |  |  | 
| 324 | -            form.setMinScore(studentService.selectMinScore(analyse.getId(),leagues,null)); |  |  | 
| 325 | -            int a1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0.85,analyse.getMaxScore()+1); |  |  | 
| 326 | -            form.setApercent(a1 / new Double(students.size()) * 100); |  |  | 
| 327 | -            int b1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0.7,analyse.getMaxScore()*0.85); |  |  | 
| 328 | -            form.setBpercent(b1 / new Double(students.size()) * 100); |  |  | 
| 329 | -            int c1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0.6,analyse.getMaxScore()*0.7); |  |  | 
| 330 | -            form.setCpercent(c1 / new Double(students.size()) * 100); |  |  | 
| 331 | -            int d1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0,analyse.getMaxScore()*0.6); |  |  | 
| 332 | -            form.setDpercent(d1 / new Double(students.size()) * 100); |  |  | 
| 333 | -            list.add(form); |  |  | 
| 334 | -        } |  |  | 
| 335 | -        { |  |  | 
| 336 | -            Form3 form = new Form3(); |  |  | 
| 337 | -            form.setName(getLearnReqVo.getSchoolName()); |  |  | 
| 338 | -            List<Student> students = studentService.selectBySchoolName(analyse.getId(),null,getLearnReqVo.getSchoolName()); |  |  | 
| 339 | -            form.setMaxScore(studentService.selectMaxScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); |  |  | 
| 340 | -            form.setAverage(studentService.selectAvgScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); |  |  | 
| 341 | -            form.setMinScore(studentService.selectMinScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); |  |  | 
| 342 | -            int a1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.85,analyse.getMaxScore()+1); |  |  | 
| 343 | -            form.setApercent(a1 / new Double(students.size()) * 100); |  |  | 
| 344 | -            int b1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.7,analyse.getMaxScore()*0.85); |  |  | 
| 345 | -            form.setBpercent(b1 / new Double(students.size()) * 100); |  |  | 
| 346 | -            int c1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.6,analyse.getMaxScore()*0.7); |  |  | 
| 347 | -            form.setCpercent(c1 / new Double(students.size()) * 100); |  |  | 
| 348 | -            int d1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0,analyse.getMaxScore()*0.6); |  |  | 
| 349 | -            form.setDpercent(d1 / new Double(students.size()) * 100); |  |  | 
| 350 | -            list.add(form); | 313 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_1")){ | 
|  |  | 314 | +            repVO = (Form3RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_1"); | 
|  |  | 315 | +        }else { | 
|  |  | 316 | +            Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); | 
|  |  | 317 | +            if(analyse == null){ | 
|  |  | 318 | +                repVO.setSuccess(false); | 
|  |  | 319 | +                repVO.setMessage("请先创建考试"); | 
|  |  | 320 | +                return  repVO; | 
|  |  | 321 | +            } | 
|  |  | 322 | +            List<String> leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); | 
|  |  | 323 | +            if(leagues == null){ | 
|  |  | 324 | +                repVO.setSuccess(false); | 
|  |  | 325 | +                repVO.setMessage("请先设定联盟校"); | 
|  |  | 326 | +                return  repVO; | 
|  |  | 327 | +            } | 
|  |  | 328 | +            List<Form3> list = new ArrayList<>(); | 
|  |  | 329 | +            List<Student> allStudents = studentService.selectBySchoolName(analyse.getId(),null,null); | 
|  |  | 330 | +            { | 
|  |  | 331 | +                Form3 form3 = new Form3(); | 
|  |  | 332 | +                form3.setName("区"); | 
|  |  | 333 | +                form3.setMaxScore(studentService.selectMaxScore(analyse.getId(),null,null)); | 
|  |  | 334 | +                form3.setAverage(studentService.selectAvgScore(analyse.getId(),null,null)); | 
|  |  | 335 | +                form3.setMinScore(studentService.selectMinScore(analyse.getId(),null,null)); | 
|  |  | 336 | +                int a = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0.85,analyse.getMaxScore()+1); | 
|  |  | 337 | +                form3.setApercent(a / new Double(allStudents.size()) * 100); | 
|  |  | 338 | +                int b = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0.7,analyse.getMaxScore()*0.85); | 
|  |  | 339 | +                form3.setBpercent(b / new Double(allStudents.size()) * 100); | 
|  |  | 340 | +                int c = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0.6,analyse.getMaxScore()*0.7); | 
|  |  | 341 | +                form3.setCpercent(c / new Double(allStudents.size()) * 100); | 
|  |  | 342 | +                int d = studentService.selectCountByScore(analyse.getId(),null,null,analyse.getMaxScore()*0,analyse.getMaxScore()*0.6); | 
|  |  | 343 | +                form3.setDpercent(d / new Double(allStudents.size()) * 100); | 
|  |  | 344 | +                list.add(form3); | 
|  |  | 345 | +            } | 
|  |  | 346 | +            { | 
|  |  | 347 | +                Form3 form = new Form3(); | 
|  |  | 348 | +                form.setName("联盟校"); | 
|  |  | 349 | +                List<Student> students = studentService.selectBySchoolName(analyse.getId(),leagues,null); | 
|  |  | 350 | +                form.setMaxScore(studentService.selectMaxScore(analyse.getId(),leagues,null)); | 
|  |  | 351 | +                form.setAverage(studentService.selectAvgScore(analyse.getId(),leagues,null)); | 
|  |  | 352 | +                form.setMinScore(studentService.selectMinScore(analyse.getId(),leagues,null)); | 
|  |  | 353 | +                int a1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0.85,analyse.getMaxScore()+1); | 
|  |  | 354 | +                form.setApercent(a1 / new Double(students.size()) * 100); | 
|  |  | 355 | +                int b1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0.7,analyse.getMaxScore()*0.85); | 
|  |  | 356 | +                form.setBpercent(b1 / new Double(students.size()) * 100); | 
|  |  | 357 | +                int c1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0.6,analyse.getMaxScore()*0.7); | 
|  |  | 358 | +                form.setCpercent(c1 / new Double(students.size()) * 100); | 
|  |  | 359 | +                int d1 = studentService.selectCountByScore(analyse.getId(),leagues,null,analyse.getMaxScore()*0,analyse.getMaxScore()*0.6); | 
|  |  | 360 | +                form.setDpercent(d1 / new Double(students.size()) * 100); | 
|  |  | 361 | +                list.add(form); | 
|  |  | 362 | +            } | 
|  |  | 363 | +            { | 
|  |  | 364 | +                Form3 form = new Form3(); | 
|  |  | 365 | +                form.setName(getLearnReqVo.getSchoolName()); | 
|  |  | 366 | +                List<Student> students = studentService.selectBySchoolName(analyse.getId(),null,getLearnReqVo.getSchoolName()); | 
|  |  | 367 | +                form.setMaxScore(studentService.selectMaxScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); | 
|  |  | 368 | +                form.setAverage(studentService.selectAvgScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); | 
|  |  | 369 | +                form.setMinScore(studentService.selectMinScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); | 
|  |  | 370 | +                int a1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.85,analyse.getMaxScore()+1); | 
|  |  | 371 | +                form.setApercent(a1 / new Double(students.size()) * 100); | 
|  |  | 372 | +                int b1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.7,analyse.getMaxScore()*0.85); | 
|  |  | 373 | +                form.setBpercent(b1 / new Double(students.size()) * 100); | 
|  |  | 374 | +                int c1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.6,analyse.getMaxScore()*0.7); | 
|  |  | 375 | +                form.setCpercent(c1 / new Double(students.size()) * 100); | 
|  |  | 376 | +                int d1 = studentService.selectCountByScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0,analyse.getMaxScore()*0.6); | 
|  |  | 377 | +                form.setDpercent(d1 / new Double(students.size()) * 100); | 
|  |  | 378 | +                list.add(form); | 
|  |  | 379 | +            } | 
|  |  | 380 | +            repVO.setData(list); | 
|  |  | 381 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_1",repVO); | 
| 351 | } | 382 | } | 
| 352 | -        repVO.setData(list); |  |  | 
| 353 | return repVO ; | 383 | return repVO ; | 
| 354 | } | 384 | } | 
| 355 |  | 385 |  | 
|  | @@ -357,47 +387,52 @@ public class LearnStatController { |  | @@ -357,47 +387,52 @@ public class LearnStatController { | 
| 357 | @RequestMapping(value = "getForm2_2_2", method = RequestMethod.POST) | 387 | @RequestMapping(value = "getForm2_2_2", method = RequestMethod.POST) | 
| 358 | public Form4RepVO getForm2_2_2(@RequestBody GetLearnReqVo getLearnReqVo){ | 388 | public Form4RepVO getForm2_2_2(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 359 | Form4RepVO repVO = new Form4RepVO(); | 389 | Form4RepVO repVO = new Form4RepVO(); | 
| 360 | -        Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); |  |  | 
| 361 | -        if(analyse == null){ |  |  | 
| 362 | -            repVO.setSuccess(false); |  |  | 
| 363 | -            repVO.setMessage("请先创建考试"); |  |  | 
| 364 | -            return  repVO; |  |  | 
| 365 | -        } |  |  | 
| 366 | -        List<String> leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); |  |  | 
| 367 | -        if(leagues == null){ |  |  | 
| 368 | -            repVO.setSuccess(false); |  |  | 
| 369 | -            repVO.setMessage("请先设定联盟校"); |  |  | 
| 370 | -            return  repVO; |  |  | 
| 371 | -        } |  |  | 
| 372 | -        List<Form4> list = new ArrayList<>(); |  |  | 
| 373 | -        { |  |  | 
| 374 | -            Form4 form4 = new Form4(); |  |  | 
| 375 | -            form4.setName("区"); |  |  | 
| 376 | -            form4.setModeNumber(studentService.selectModeNumber(analyse.getId(),null,null)); |  |  | 
| 377 | -            form4.setMedianNumber(studentService.selectMedian(analyse.getId(),null,null)); |  |  | 
| 378 | -            form4.setStdev(studentService.selectStdev(analyse.getId(),null,null)); |  |  | 
| 379 | -            form4.setAvgNumber(studentService.selectAvgScore(analyse.getId(),null,null)); |  |  | 
| 380 | -            list.add(form4); |  |  | 
| 381 | -        } |  |  | 
| 382 | -        { |  |  | 
| 383 | -            Form4 form = new Form4(); |  |  | 
| 384 | -            form.setName(getLearnReqVo.getSchoolName()); |  |  | 
| 385 | -            form.setModeNumber(studentService.selectModeNumber(analyse.getId(),leagues,null)); |  |  | 
| 386 | -            form.setMedianNumber(studentService.selectMedian(analyse.getId(),leagues,null)); |  |  | 
| 387 | -            form.setStdev(studentService.selectStdev(analyse.getId(),leagues,null)); |  |  | 
| 388 | -            form.setAvgNumber(studentService.selectAvgScore(analyse.getId(),leagues,null)); |  |  | 
| 389 | -            list.add(form); |  |  | 
| 390 | -        } |  |  | 
| 391 | -        { |  |  | 
| 392 | -            Form4 form = new Form4(); |  |  | 
| 393 | -            form.setName(getLearnReqVo.getSchoolName()); |  |  | 
| 394 | -            form.setModeNumber(studentService.selectModeNumber(analyse.getId(),null,getLearnReqVo.getSchoolName())); |  |  | 
| 395 | -            form.setMedianNumber(studentService.selectMedian(analyse.getId(),null,getLearnReqVo.getSchoolName())); |  |  | 
| 396 | -            form.setStdev(studentService.selectStdev(analyse.getId(),null,getLearnReqVo.getSchoolName())); |  |  | 
| 397 | -            form.setAvgNumber(studentService.selectAvgScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); |  |  | 
| 398 | -            list.add(form); | 390 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_2")){ | 
|  |  | 391 | +            repVO = (Form4RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_2"); | 
|  |  | 392 | +        }else { | 
|  |  | 393 | +            Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); | 
|  |  | 394 | +            if(analyse == null){ | 
|  |  | 395 | +                repVO.setSuccess(false); | 
|  |  | 396 | +                repVO.setMessage("请先创建考试"); | 
|  |  | 397 | +                return  repVO; | 
|  |  | 398 | +            } | 
|  |  | 399 | +            List<String> leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); | 
|  |  | 400 | +            if(leagues == null){ | 
|  |  | 401 | +                repVO.setSuccess(false); | 
|  |  | 402 | +                repVO.setMessage("请先设定联盟校"); | 
|  |  | 403 | +                return  repVO; | 
|  |  | 404 | +            } | 
|  |  | 405 | +            List<Form4> list = new ArrayList<>(); | 
|  |  | 406 | +            { | 
|  |  | 407 | +                Form4 form4 = new Form4(); | 
|  |  | 408 | +                form4.setName("区"); | 
|  |  | 409 | +                form4.setModeNumber(studentService.selectModeNumber(analyse.getId(),null,null)); | 
|  |  | 410 | +                form4.setMedianNumber(studentService.selectMedian(analyse.getId(),null,null)); | 
|  |  | 411 | +                form4.setStdev(studentService.selectStdev(analyse.getId(),null,null)); | 
|  |  | 412 | +                form4.setAvgNumber(studentService.selectAvgScore(analyse.getId(),null,null)); | 
|  |  | 413 | +                list.add(form4); | 
|  |  | 414 | +            } | 
|  |  | 415 | +            { | 
|  |  | 416 | +                Form4 form = new Form4(); | 
|  |  | 417 | +                form.setName(getLearnReqVo.getSchoolName()); | 
|  |  | 418 | +                form.setModeNumber(studentService.selectModeNumber(analyse.getId(),leagues,null)); | 
|  |  | 419 | +                form.setMedianNumber(studentService.selectMedian(analyse.getId(),leagues,null)); | 
|  |  | 420 | +                form.setStdev(studentService.selectStdev(analyse.getId(),leagues,null)); | 
|  |  | 421 | +                form.setAvgNumber(studentService.selectAvgScore(analyse.getId(),leagues,null)); | 
|  |  | 422 | +                list.add(form); | 
|  |  | 423 | +            } | 
|  |  | 424 | +            { | 
|  |  | 425 | +                Form4 form = new Form4(); | 
|  |  | 426 | +                form.setName(getLearnReqVo.getSchoolName()); | 
|  |  | 427 | +                form.setModeNumber(studentService.selectModeNumber(analyse.getId(),null,getLearnReqVo.getSchoolName())); | 
|  |  | 428 | +                form.setMedianNumber(studentService.selectMedian(analyse.getId(),null,getLearnReqVo.getSchoolName())); | 
|  |  | 429 | +                form.setStdev(studentService.selectStdev(analyse.getId(),null,getLearnReqVo.getSchoolName())); | 
|  |  | 430 | +                form.setAvgNumber(studentService.selectAvgScore(analyse.getId(),null,getLearnReqVo.getSchoolName())); | 
|  |  | 431 | +                list.add(form); | 
|  |  | 432 | +            } | 
|  |  | 433 | +            repVO.setData(list); | 
|  |  | 434 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_2",repVO); | 
| 399 | } | 435 | } | 
| 400 | -        repVO.setData(list); |  |  | 
| 401 | return repVO; | 436 | return repVO; | 
| 402 | } | 437 | } | 
| 403 |  | 438 |  | 
|  | @@ -405,91 +440,96 @@ public class LearnStatController { |  | @@ -405,91 +440,96 @@ public class LearnStatController { | 
| 405 | @RequestMapping(value = "getForm2_2_3", method = RequestMethod.POST) | 440 | @RequestMapping(value = "getForm2_2_3", method = RequestMethod.POST) | 
| 406 | public Form5RepVO getForm2_2_3(@RequestBody GetLearnReqVo getLearnReqVo){ | 441 | public Form5RepVO getForm2_2_3(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 407 | Form5RepVO repVO = new Form5RepVO(); | 442 | Form5RepVO repVO = new Form5RepVO(); | 
| 408 | -        Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); |  |  | 
| 409 | -        if(analyse == null){ |  |  | 
| 410 | -            repVO.setSuccess(false); |  |  | 
| 411 | -            repVO.setMessage("请先创建考试"); |  |  | 
| 412 | -            return  repVO; |  |  | 
| 413 | -        } |  |  | 
| 414 | -        List<String> leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); |  |  | 
| 415 | -        if(leagues == null){ |  |  | 
| 416 | -            repVO.setSuccess(false); |  |  | 
| 417 | -            repVO.setMessage("请先设定联盟校"); |  |  | 
| 418 | -            return  repVO; |  |  | 
| 419 | -        } |  |  | 
| 420 | -        List<String> allHighStudent = new ArrayList<>(); |  |  | 
| 421 | -        List<String> allLowStudent = new ArrayList<>(); |  |  | 
| 422 | -        List<Student> allStudents = studentService.selectBySchoolName(analyse.getId(),null,null); |  |  | 
| 423 | -        int allNumber = (int) Math.floor(allStudents.size()*0.27) ; |  |  | 
| 424 | -        { |  |  | 
| 425 | -            //获取区 高分段,低分段学生编号 |  |  | 
| 426 | -            for (int i = 0; i < allNumber ; i++) { |  |  | 
| 427 | -                allHighStudent.add(allStudents.get(i).getStudentNumber()); |  |  | 
| 428 | -            } |  |  | 
| 429 | -            for(int i =allStudents.size()-allNumber ; i < allStudents.size() ; i++){ |  |  | 
| 430 | -                allLowStudent.add(allStudents.get(i).getStudentNumber()); | 443 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_3")){ | 
|  |  | 444 | +            repVO = (Form5RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_3"); | 
|  |  | 445 | +        }else { | 
|  |  | 446 | +            Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); | 
|  |  | 447 | +            if(analyse == null){ | 
|  |  | 448 | +                repVO.setSuccess(false); | 
|  |  | 449 | +                repVO.setMessage("请先创建考试"); | 
|  |  | 450 | +                return  repVO; | 
| 431 | } | 451 | } | 
| 432 | -        } |  |  | 
| 433 | -        List<String> leagueHighStudent = new ArrayList<>(); |  |  | 
| 434 | -        List<String> leagueLowStudent = new ArrayList<>(); |  |  | 
| 435 | -        List<Student> leagueStudents = studentService.selectBySchoolName(analyse.getId(),leagues,null); |  |  | 
| 436 | -        int leagueNumber = (int) Math.floor(leagueStudents.size()*0.27) ; |  |  | 
| 437 | -        { |  |  | 
| 438 | -            //获取联盟校 高分段 低分段 学生编号 |  |  | 
| 439 | -            for (int i = 0; i < leagueNumber ; i++) { |  |  | 
| 440 | -                leagueHighStudent.add(leagueStudents.get(i).getStudentNumber()); | 452 | +            List<String> leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); | 
|  |  | 453 | +            if(leagues == null){ | 
|  |  | 454 | +                repVO.setSuccess(false); | 
|  |  | 455 | +                repVO.setMessage("请先设定联盟校"); | 
|  |  | 456 | +                return  repVO; | 
| 441 | } | 457 | } | 
| 442 | -            for(int i =leagueStudents.size()-leagueNumber ; i < leagueStudents.size() ; i++){ |  |  | 
| 443 | -                leagueLowStudent.add(leagueStudents.get(i).getStudentNumber()); | 458 | +            List<String> allHighStudent = new ArrayList<>(); | 
|  |  | 459 | +            List<String> allLowStudent = new ArrayList<>(); | 
|  |  | 460 | +            List<Student> allStudents = studentService.selectBySchoolName(analyse.getId(),null,null); | 
|  |  | 461 | +            int allNumber = (int) Math.floor(allStudents.size()*0.27) ; | 
|  |  | 462 | +            { | 
|  |  | 463 | +                //获取区 高分段,低分段学生编号 | 
|  |  | 464 | +                for (int i = 0; i < allNumber ; i++) { | 
|  |  | 465 | +                    allHighStudent.add(allStudents.get(i).getStudentNumber()); | 
|  |  | 466 | +                } | 
|  |  | 467 | +                for(int i =allStudents.size()-allNumber ; i < allStudents.size() ; i++){ | 
|  |  | 468 | +                    allLowStudent.add(allStudents.get(i).getStudentNumber()); | 
|  |  | 469 | +                } | 
| 444 | } | 470 | } | 
| 445 | -        } |  |  | 
| 446 | -        List<String> highStudent = new ArrayList<>(); |  |  | 
| 447 | -        List<String> lowStudent = new ArrayList<>(); |  |  | 
| 448 | -        List<Student> students = studentService.selectBySchoolName(analyse.getId(),null,getLearnReqVo.getSchoolName()); |  |  | 
| 449 | -        int number = (int) Math.floor(students.size()*0.27) ; |  |  | 
| 450 | -        { |  |  | 
| 451 | -            //获取本校高分段 低分段 学生编号 |  |  | 
| 452 | -            for (int i = 0; i < number ; i++) { |  |  | 
| 453 | -                highStudent.add(students.get(i).getStudentNumber()); | 471 | +            List<String> leagueHighStudent = new ArrayList<>(); | 
|  |  | 472 | +            List<String> leagueLowStudent = new ArrayList<>(); | 
|  |  | 473 | +            List<Student> leagueStudents = studentService.selectBySchoolName(analyse.getId(),leagues,null); | 
|  |  | 474 | +            int leagueNumber = (int) Math.floor(leagueStudents.size()*0.27) ; | 
|  |  | 475 | +            { | 
|  |  | 476 | +                //获取联盟校 高分段 低分段 学生编号 | 
|  |  | 477 | +                for (int i = 0; i < leagueNumber ; i++) { | 
|  |  | 478 | +                    leagueHighStudent.add(leagueStudents.get(i).getStudentNumber()); | 
|  |  | 479 | +                } | 
|  |  | 480 | +                for(int i =leagueStudents.size()-leagueNumber ; i < leagueStudents.size() ; i++){ | 
|  |  | 481 | +                    leagueLowStudent.add(leagueStudents.get(i).getStudentNumber()); | 
|  |  | 482 | +                } | 
| 454 | } | 483 | } | 
| 455 | -            for(int i =students.size()-number ; i < students.size() ; i++){ |  |  | 
| 456 | -                lowStudent.add(students.get(i).getStudentNumber()); | 484 | +            List<String> highStudent = new ArrayList<>(); | 
|  |  | 485 | +            List<String> lowStudent = new ArrayList<>(); | 
|  |  | 486 | +            List<Student> students = studentService.selectBySchoolName(analyse.getId(),null,getLearnReqVo.getSchoolName()); | 
|  |  | 487 | +            int number = (int) Math.floor(students.size()*0.27) ; | 
|  |  | 488 | +            { | 
|  |  | 489 | +                //获取本校高分段 低分段 学生编号 | 
|  |  | 490 | +                for (int i = 0; i < number ; i++) { | 
|  |  | 491 | +                    highStudent.add(students.get(i).getStudentNumber()); | 
|  |  | 492 | +                } | 
|  |  | 493 | +                for(int i =students.size()-number ; i < students.size() ; i++){ | 
|  |  | 494 | +                    lowStudent.add(students.get(i).getStudentNumber()); | 
|  |  | 495 | +                } | 
| 457 | } | 496 | } | 
| 458 | -        } |  |  | 
| 459 |  | 497 |  | 
| 460 | -        List<Form5> list = new ArrayList<>(); | 498 | +            List<Form5> list = new ArrayList<>(); | 
| 461 |  | 499 |  | 
| 462 | -        List<AnalyseDetail> analyseDetails = analyseDetailService.selectByAnalyseId(analyse.getId()); |  |  | 
| 463 | -        for(AnalyseDetail analyseDetail : analyseDetails){ |  |  | 
| 464 | -            Form5 from5 = new Form5(); |  |  | 
| 465 | -            Double allSumScore = studentDetailService.selectSumScore(analyse.getId(),null,null,analyseDetail.getQuestionNumber()); |  |  | 
| 466 | -            Double leagueSumScore = studentDetailService.selectSumScore(analyse.getId(),leagues,null,analyseDetail.getQuestionNumber()); |  |  | 
| 467 | -            Double schoolSumScore = studentDetailService.selectSumScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyseDetail.getQuestionNumber()); |  |  | 
| 468 | -            from5.setExamNumber(analyseDetail.getQuestionNumber()); |  |  | 
| 469 | -            from5.setScore(analyseDetail.getScore()); |  |  | 
| 470 | -            from5.setDifficultName(DifficultEnums.getDifficultName(analyseDetail.getDifficult())); |  |  | 
| 471 | -            from5.setAllRate(allSumScore/new Double(allStudents.size()) / analyseDetail.getScore()); |  |  | 
| 472 | -            from5.setLeagueRate(leagueSumScore/new Double(leagueStudents.size()) / analyseDetail.getScore()); |  |  | 
| 473 | -            from5.setSchoolRate(schoolSumScore/new Double(students.size()) / analyseDetail.getScore()); | 500 | +            List<AnalyseDetail> analyseDetails = analyseDetailService.selectByAnalyseId(analyse.getId()); | 
|  |  | 501 | +            for(AnalyseDetail analyseDetail : analyseDetails){ | 
|  |  | 502 | +                Form5 from5 = new Form5(); | 
|  |  | 503 | +                Double allSumScore = studentDetailService.selectSumScore(analyse.getId(),null,null,analyseDetail.getQuestionNumber()); | 
|  |  | 504 | +                Double leagueSumScore = studentDetailService.selectSumScore(analyse.getId(),leagues,null,analyseDetail.getQuestionNumber()); | 
|  |  | 505 | +                Double schoolSumScore = studentDetailService.selectSumScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyseDetail.getQuestionNumber()); | 
|  |  | 506 | +                from5.setExamNumber(analyseDetail.getQuestionNumber()); | 
|  |  | 507 | +                from5.setScore(analyseDetail.getScore()); | 
|  |  | 508 | +                from5.setDifficultName(DifficultEnums.getDifficultName(analyseDetail.getDifficult())); | 
|  |  | 509 | +                from5.setAllRate(allSumScore/new Double(allStudents.size()) / analyseDetail.getScore()); | 
|  |  | 510 | +                from5.setLeagueRate(leagueSumScore/new Double(leagueStudents.size()) / analyseDetail.getScore()); | 
|  |  | 511 | +                from5.setSchoolRate(schoolSumScore/new Double(students.size()) / analyseDetail.getScore()); | 
| 474 |  | 512 |  | 
| 475 | -            from5.setAllAvg(allSumScore / new Double(allStudents.size())); |  |  | 
| 476 | -            from5.setLeagueAvg(leagueSumScore / new Double(leagueStudents.size())); |  |  | 
| 477 | -            from5.setSchoolAvg(schoolSumScore / new Double(students.size())); | 513 | +                from5.setAllAvg(allSumScore / new Double(allStudents.size())); | 
|  |  | 514 | +                from5.setLeagueAvg(leagueSumScore / new Double(leagueStudents.size())); | 
|  |  | 515 | +                from5.setSchoolAvg(schoolSumScore / new Double(students.size())); | 
| 478 |  | 516 |  | 
| 479 | -            int allHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allHighStudent); |  |  | 
| 480 | -            int allLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allLowStudent); | 517 | +                int allHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allHighStudent); | 
|  |  | 518 | +                int allLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allLowStudent); | 
| 481 |  | 519 |  | 
| 482 | -            int leagueHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allHighStudent); |  |  | 
| 483 | -            int leagueLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allLowStudent); | 520 | +                int leagueHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allHighStudent); | 
|  |  | 521 | +                int leagueLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allLowStudent); | 
| 484 |  | 522 |  | 
| 485 | -            int high = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),highStudent); |  |  | 
| 486 | -            int low = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),lowStudent); |  |  | 
| 487 | -            from5.setAllDist(new Double(allHigh-allLow)/new Double(allNumber)); |  |  | 
| 488 | -            from5.setLeagueDist(new Double(leagueHigh-leagueLow)/new Double(leagueNumber)); |  |  | 
| 489 | -            from5.setSchoolDist(new Double(high-low)/new Double(number)); |  |  | 
| 490 | -            list.add(from5); | 523 | +                int high = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),highStudent); | 
|  |  | 524 | +                int low = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),lowStudent); | 
|  |  | 525 | +                from5.setAllDist(new Double(allHigh-allLow)/new Double(allNumber)); | 
|  |  | 526 | +                from5.setLeagueDist(new Double(leagueHigh-leagueLow)/new Double(leagueNumber)); | 
|  |  | 527 | +                from5.setSchoolDist(new Double(high-low)/new Double(number)); | 
|  |  | 528 | +                list.add(from5); | 
|  |  | 529 | +            } | 
|  |  | 530 | +            repVO.setData(list); | 
|  |  | 531 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_3",repVO); | 
| 491 | } | 532 | } | 
| 492 | -        repVO.setData(list); |  |  | 
| 493 | return repVO; | 533 | return repVO; | 
| 494 | } | 534 | } | 
| 495 |  | 535 |  | 
|  | @@ -497,65 +537,142 @@ public class LearnStatController { |  | @@ -497,65 +537,142 @@ public class LearnStatController { | 
| 497 | @RequestMapping(value = "getForm2_2_4", method = RequestMethod.POST) | 537 | @RequestMapping(value = "getForm2_2_4", method = RequestMethod.POST) | 
| 498 | public Form8RepVO getForm2_2_4(@RequestBody GetLearnReqVo getLearnReqVo){ | 538 | public Form8RepVO getForm2_2_4(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 499 | Form8RepVO repVO = new Form8RepVO(); | 539 | Form8RepVO repVO = new Form8RepVO(); | 
| 500 | -        Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); |  |  | 
| 501 | -        if(analyse == null){ |  |  | 
| 502 | -            repVO.setSuccess(false); |  |  | 
| 503 | -            repVO.setMessage("请先创建考试"); |  |  | 
| 504 | -            return  repVO; |  |  | 
| 505 | -        } |  |  | 
| 506 | -        List<String> leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); |  |  | 
| 507 | -        if(leagues == null){ |  |  | 
| 508 | -            repVO.setSuccess(false); |  |  | 
| 509 | -            repVO.setMessage("请先设定联盟校"); |  |  | 
| 510 | -            return  repVO; |  |  | 
| 511 | -        } |  |  | 
| 512 | -        List<Form8> list = new ArrayList<>(); |  |  | 
| 513 | -        List<Student> allStudents = studentService.selectBySchoolName(analyse.getId(),null,null); |  |  | 
| 514 | -        List<Student> leagueStudents = studentService.selectBySchoolName(analyse.getId(),leagues,null); |  |  | 
| 515 | -        List<Student> students = studentService.selectBySchoolName(analyse.getId(),null,getLearnReqVo.getSchoolName()); |  |  | 
| 516 | -        for(DifficultEnums enums : DifficultEnums.values()){ |  |  | 
| 517 | -            Form8 form8 = new Form8(); |  |  | 
| 518 | -            form8.setDifficultName(enums.getDifficultName()); |  |  | 
| 519 | -            form8.setScore(analyseDetailService.selectDifficult(analyse.getId(),enums.getDifficultType())); |  |  | 
| 520 | -            List<AnalyseDetail> analyseDetails = analyseDetailService.selectDifficultDetail(analyse.getId(),enums.getDifficultType()); |  |  | 
| 521 | -            Double allSumScore = 0d , leagueSumScore = 0d , schoolSumScore = 0d , score = 0d; |  |  | 
| 522 | -            for(AnalyseDetail analyseDetail : analyseDetails){ |  |  | 
| 523 | -                allSumScore = allSumScore + studentDetailService.selectSumScore(analyse.getId(),null,null,analyseDetail.getQuestionNumber()); |  |  | 
| 524 | -                leagueSumScore = leagueSumScore + studentDetailService.selectSumScore(analyse.getId(),leagues,null,analyseDetail.getQuestionNumber()); |  |  | 
| 525 | -                schoolSumScore = schoolSumScore + studentDetailService.selectSumScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyseDetail.getQuestionNumber()); |  |  | 
| 526 | -                score = score + analyseDetail.getScore() ; | 540 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_4")){ | 
|  |  | 541 | +            repVO = (Form8RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_4"); | 
|  |  | 542 | +        }else { | 
|  |  | 543 | +            Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); | 
|  |  | 544 | +            if(analyse == null){ | 
|  |  | 545 | +                repVO.setSuccess(false); | 
|  |  | 546 | +                repVO.setMessage("请先创建考试"); | 
|  |  | 547 | +                return  repVO; | 
|  |  | 548 | +            } | 
|  |  | 549 | +            List<String> leagues = leagueService.getLeagueBySchoolName(analyse.getId(),getLearnReqVo.getSchoolName()); | 
|  |  | 550 | +            if(leagues == null){ | 
|  |  | 551 | +                repVO.setSuccess(false); | 
|  |  | 552 | +                repVO.setMessage("请先设定联盟校"); | 
|  |  | 553 | +                return  repVO; | 
| 527 | } | 554 | } | 
| 528 | -            form8.setAllRate(allSumScore / new Double(allStudents.size()) / score ); |  |  | 
| 529 | -            form8.setLeagueRate(leagueSumScore / new Double(leagueStudents.size()) / score ); |  |  | 
| 530 | -            form8.setSchoolRate(schoolSumScore / new Double(students.size()) / score); |  |  | 
| 531 | -            list.add(form8); | 555 | +            List<Form8> list = new ArrayList<>(); | 
|  |  | 556 | +            List<Student> allStudents = studentService.selectBySchoolName(analyse.getId(),null,null); | 
|  |  | 557 | +            List<Student> leagueStudents = studentService.selectBySchoolName(analyse.getId(),leagues,null); | 
|  |  | 558 | +            List<Student> students = studentService.selectBySchoolName(analyse.getId(),null,getLearnReqVo.getSchoolName()); | 
|  |  | 559 | +            for(DifficultEnums enums : DifficultEnums.values()){ | 
|  |  | 560 | +                Form8 form8 = new Form8(); | 
|  |  | 561 | +                form8.setDifficultName(enums.getDifficultName()); | 
|  |  | 562 | +                form8.setScore(analyseDetailService.selectDifficult(analyse.getId(),enums.getDifficultType())); | 
|  |  | 563 | +                List<AnalyseDetail> analyseDetails = analyseDetailService.selectDifficultDetail(analyse.getId(),enums.getDifficultType()); | 
|  |  | 564 | +                Double allSumScore = 0d , leagueSumScore = 0d , schoolSumScore = 0d , score = 0d; | 
|  |  | 565 | +                for(AnalyseDetail analyseDetail : analyseDetails){ | 
|  |  | 566 | +                    allSumScore = allSumScore + studentDetailService.selectSumScore(analyse.getId(),null,null,analyseDetail.getQuestionNumber()); | 
|  |  | 567 | +                    leagueSumScore = leagueSumScore + studentDetailService.selectSumScore(analyse.getId(),leagues,null,analyseDetail.getQuestionNumber()); | 
|  |  | 568 | +                    schoolSumScore = schoolSumScore + studentDetailService.selectSumScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyseDetail.getQuestionNumber()); | 
|  |  | 569 | +                    score = score + analyseDetail.getScore() ; | 
|  |  | 570 | +                } | 
|  |  | 571 | +                form8.setAllRate(allSumScore / new Double(allStudents.size()) / score ); | 
|  |  | 572 | +                form8.setLeagueRate(leagueSumScore / new Double(leagueStudents.size()) / score ); | 
|  |  | 573 | +                form8.setSchoolRate(schoolSumScore / new Double(students.size()) / score); | 
|  |  | 574 | +                list.add(form8); | 
|  |  | 575 | +            } | 
|  |  | 576 | +            repVO.setData(list); | 
|  |  | 577 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_2_2_4",repVO); | 
| 532 | } | 578 | } | 
| 533 | -        repVO.setData(list); |  |  | 
| 534 | return repVO; | 579 | return repVO; | 
| 535 | } | 580 | } | 
| 536 |  | 581 |  | 
| 537 | @ApiOperation("getForm3_1") | 582 | @ApiOperation("getForm3_1") | 
| 538 | @RequestMapping(value = "getForm3_1", method = RequestMethod.POST) | 583 | @RequestMapping(value = "getForm3_1", method = RequestMethod.POST) | 
| 539 | public Form6RepVO getForm3_1(@RequestBody GetLearnReqVo getLearnReqVo){ | 584 | public Form6RepVO getForm3_1(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 540 | -        return initDimensional(getLearnReqVo,DimensionalEnums.knowledge.getDimensionalType()); | 585 | +        Form6RepVO form6RepVO = new Form6RepVO(); | 
|  |  | 586 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1")){ | 
|  |  | 587 | +            form6RepVO = (Form6RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1"); | 
|  |  | 588 | +        }else { | 
|  |  | 589 | +            form6RepVO = initDimensional(getLearnReqVo,DimensionalEnums.knowledge.getDimensionalType()) ; | 
|  |  | 590 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1",form6RepVO); | 
|  |  | 591 | +        } | 
|  |  | 592 | +        return form6RepVO; | 
|  |  | 593 | +    } | 
|  |  | 594 | + | 
|  |  | 595 | +    @ApiOperation("getForm3_1_1") | 
|  |  | 596 | +    @RequestMapping(value = "getForm3_1_1", method = RequestMethod.POST) | 
|  |  | 597 | +    public Table2RepVO getForm3_1_1(@RequestBody GetLearnReqVo getLearnReqVo){ | 
|  |  | 598 | +        Table2RepVO table2RepVO = new Table2RepVO(); | 
|  |  | 599 | +        Form6RepVO form6RepVO = new Form6RepVO(); | 
|  |  | 600 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1")){ | 
|  |  | 601 | +            form6RepVO = (Form6RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1"); | 
|  |  | 602 | +        }else { | 
|  |  | 603 | +            form6RepVO = initDimensional(getLearnReqVo,DimensionalEnums.knowledge.getDimensionalType()) ; | 
|  |  | 604 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_1",form6RepVO); | 
|  |  | 605 | +        } | 
|  |  | 606 | +        List<Knowledge> knowledges = knowledgeService.selectAll(); | 
|  |  | 607 | +        List<Table2> table2List = new ArrayList<>(); | 
|  |  | 608 | +        for(Knowledge knowledge : knowledges){ | 
|  |  | 609 | +            Double sumScore = new Double("0"); | 
|  |  | 610 | +            Double getScore = new Double("0"); | 
|  |  | 611 | +            String[] detailArray = knowledge.getDetail().split("、"); | 
|  |  | 612 | +            for(String detail : detailArray){ | 
|  |  | 613 | +                for(Form6 form6 : form6RepVO.getData()){ | 
|  |  | 614 | +                    if(detail.equals(form6.getDimensional())){ | 
|  |  | 615 | +                        sumScore = sumScore + form6.getScore() ; | 
|  |  | 616 | +                        getScore = getScore + form6.getSchoolRate(); | 
|  |  | 617 | +                    } | 
|  |  | 618 | +                } | 
|  |  | 619 | +            } | 
|  |  | 620 | +            if(sumScore > 0){ | 
|  |  | 621 | +                Table2 table2 = new Table2(); | 
|  |  | 622 | +                table2.setKnowledge(knowledge.getKnowledge()); | 
|  |  | 623 | +                table2.setAvg(knowledge.getAvg()); | 
|  |  | 624 | +                table2.setRate(knowledge.getRate()); | 
|  |  | 625 | +                table2.setSchoolRate(getScore / sumScore); | 
|  |  | 626 | +                table2List.add(table2); | 
|  |  | 627 | +            } | 
|  |  | 628 | +        } | 
|  |  | 629 | +        List<Table2> data = new ArrayList<>(); | 
|  |  | 630 | +        for(Table2 table2 : table2List){ | 
|  |  | 631 | +            if(table2.getSchoolRate() < 0.75 && Double.valueOf(table2.getAvg()) >2){ | 
|  |  | 632 | +                data.add(table2); | 
|  |  | 633 | +            } | 
|  |  | 634 | +        } | 
|  |  | 635 | +        table2RepVO.setData(data); | 
|  |  | 636 | +        return table2RepVO; | 
| 541 | } | 637 | } | 
| 542 |  | 638 |  | 
| 543 | @ApiOperation("getForm3_2") | 639 | @ApiOperation("getForm3_2") | 
| 544 | @RequestMapping(value = "getForm3_2", method = RequestMethod.POST) | 640 | @RequestMapping(value = "getForm3_2", method = RequestMethod.POST) | 
| 545 | public Form6RepVO getForm3_2(@RequestBody GetLearnReqVo getLearnReqVo){ | 641 | public Form6RepVO getForm3_2(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 546 | -        return initDimensional(getLearnReqVo,DimensionalEnums.skill.getDimensionalType()); | 642 | +        Form6RepVO form6RepVO = new Form6RepVO(); | 
|  |  | 643 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_2")){ | 
|  |  | 644 | +            form6RepVO = (Form6RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_2"); | 
|  |  | 645 | +        }else { | 
|  |  | 646 | +            form6RepVO = initDimensional(getLearnReqVo,DimensionalEnums.skill.getDimensionalType()) ; | 
|  |  | 647 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_2",form6RepVO); | 
|  |  | 648 | +        } | 
|  |  | 649 | +        return form6RepVO; | 
| 547 | } | 650 | } | 
| 548 |  | 651 |  | 
| 549 | @ApiOperation("getForm3_3") | 652 | @ApiOperation("getForm3_3") | 
| 550 | @RequestMapping(value = "getForm3_3", method = RequestMethod.POST) | 653 | @RequestMapping(value = "getForm3_3", method = RequestMethod.POST) | 
| 551 | public Form6RepVO getForm3_3(@RequestBody GetLearnReqVo getLearnReqVo){ | 654 | public Form6RepVO getForm3_3(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 552 | -        return initDimensional(getLearnReqVo,DimensionalEnums.ability.getDimensionalType()); | 655 | +        Form6RepVO form6RepVO = new Form6RepVO(); | 
|  |  | 656 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_3")){ | 
|  |  | 657 | +            form6RepVO = (Form6RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_3"); | 
|  |  | 658 | +        }else { | 
|  |  | 659 | +            form6RepVO = initDimensional(getLearnReqVo,DimensionalEnums.ability.getDimensionalType()) ; | 
|  |  | 660 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_3",form6RepVO); | 
|  |  | 661 | +        } | 
|  |  | 662 | +        return form6RepVO; | 
| 553 | } | 663 | } | 
| 554 |  | 664 |  | 
| 555 | @ApiOperation("getForm3_4") | 665 | @ApiOperation("getForm3_4") | 
| 556 | @RequestMapping(value = "getForm3_4", method = RequestMethod.POST) | 666 | @RequestMapping(value = "getForm3_4", method = RequestMethod.POST) | 
| 557 | public Form6RepVO getForm3_4(@RequestBody GetLearnReqVo getLearnReqVo){ | 667 | public Form6RepVO getForm3_4(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 558 | -        return initDimensional(getLearnReqVo,DimensionalEnums.think.getDimensionalType()); | 668 | +        Form6RepVO form6RepVO = new Form6RepVO(); | 
|  |  | 669 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_4")){ | 
|  |  | 670 | +            form6RepVO = (Form6RepVO) RedisUtils.getObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_4"); | 
|  |  | 671 | +        }else { | 
|  |  | 672 | +            form6RepVO = initDimensional(getLearnReqVo,DimensionalEnums.think.getDimensionalType()) ; | 
|  |  | 673 | +            RedisUtils.setObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_3_4",form6RepVO); | 
|  |  | 674 | +        } | 
|  |  | 675 | +        return form6RepVO; | 
| 559 | } | 676 | } | 
| 560 |  | 677 |  | 
| 561 | private Form6RepVO initDimensional(GetLearnReqVo getLearnReqVo , int dimensionalType){ | 678 | private Form6RepVO initDimensional(GetLearnReqVo getLearnReqVo , int dimensionalType){ | 
|  | @@ -716,97 +833,104 @@ public class LearnStatController { |  | @@ -716,97 +833,104 @@ public class LearnStatController { | 
| 716 | @ApiOperation("获取教学改进建议") | 833 | @ApiOperation("获取教学改进建议") | 
| 717 | @RequestMapping(value = "getSuggest", method = RequestMethod.POST) | 834 | @RequestMapping(value = "getSuggest", method = RequestMethod.POST) | 
| 718 | public String getSuggest(@RequestBody GetLearnReqVo getLearnReqVo){ | 835 | public String getSuggest(@RequestBody GetLearnReqVo getLearnReqVo){ | 
| 719 | -        SuggestRepVo suggestRepVo = new SuggestRepVo() ; |  |  | 
| 720 | -        Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); |  |  | 
| 721 | -        Double avg = studentService.selectAvgScore(analyse.getId(),null,getLearnReqVo.getSchoolName()) ; |  |  | 
| 722 | -        DecimalFormat df = new DecimalFormat("#.00"); |  |  | 
| 723 | -        //得分率 |  |  | 
| 724 | -        String avgStr = df.format(avg / analyse.getMaxScore()); |  |  | 
| 725 | - |  |  | 
| 726 | -        List<Student> students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); |  |  | 
| 727 | -        int a = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.85,analyse.getMaxScore()+1f); |  |  | 
| 728 | -        //优秀率 |  |  | 
| 729 | -        Double apercent = new Double(a) / new Double(students.size()) * 100 ; |  |  | 
| 730 | -        String aStr = df.format(apercent); |  |  | 
| 731 | -        String access = ""; |  |  | 
| 732 | -        if(avg>=80){ |  |  | 
| 733 | -            if(apercent >= 20){ |  |  | 
| 734 | -                access = "良好"; | 836 | +        String suggest = null ; | 
|  |  | 837 | +        if(RedisUtils.existsObject(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_suggest")){ | 
|  |  | 838 | +            suggest = RedisUtils.getString(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_suggest"); | 
|  |  | 839 | +        }else { | 
|  |  | 840 | +            SuggestRepVo suggestRepVo = new SuggestRepVo() ; | 
|  |  | 841 | +            Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId()); | 
|  |  | 842 | +            Double avg = studentService.selectAvgScore(analyse.getId(),null,getLearnReqVo.getSchoolName()) ; | 
|  |  | 843 | +            DecimalFormat df = new DecimalFormat("#.00"); | 
|  |  | 844 | +            //得分率 | 
|  |  | 845 | +            String avgStr = df.format(avg / analyse.getMaxScore()); | 
|  |  | 846 | + | 
|  |  | 847 | +            List<Student> students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName()); | 
|  |  | 848 | +            int a = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),null,getLearnReqVo.getSchoolName(),analyse.getMaxScore()*0.85,analyse.getMaxScore()+1f); | 
|  |  | 849 | +            //优秀率 | 
|  |  | 850 | +            Double apercent = new Double(a) / new Double(students.size()) * 100 ; | 
|  |  | 851 | +            String aStr = df.format(apercent); | 
|  |  | 852 | +            String access = ""; | 
|  |  | 853 | +            if(avg>=80){ | 
|  |  | 854 | +                if(apercent >= 20){ | 
|  |  | 855 | +                    access = "良好"; | 
|  |  | 856 | +                }else { | 
|  |  | 857 | +                    access = "相对可以"; | 
|  |  | 858 | +                } | 
|  |  | 859 | +            }else if(avg >= 75){ | 
|  |  | 860 | +                if(apercent >= 35){ | 
|  |  | 861 | +                    access = "很好"; | 
|  |  | 862 | +                }else if(apercent >= 20){ | 
|  |  | 863 | +                    access = "良好"; | 
|  |  | 864 | +                }else { | 
|  |  | 865 | +                    access = "相对可以"; | 
|  |  | 866 | +                } | 
|  |  | 867 | +            }else if(avg >= 70){ | 
|  |  | 868 | +                if(apercent >= 20){ | 
|  |  | 869 | +                    access = "良好"; | 
|  |  | 870 | +                }else { | 
|  |  | 871 | +                    access = "相对可以"; | 
|  |  | 872 | +                } | 
|  |  | 873 | +            } else if (avg >= 60) { | 
|  |  | 874 | +                if(apercent >= 10){ | 
|  |  | 875 | +                    access = "相对可以"; | 
|  |  | 876 | +                }else { | 
|  |  | 877 | +                    access = "一般"; | 
|  |  | 878 | +                } | 
| 735 | }else { | 879 | }else { | 
| 736 | -                access = "相对可以"; | 880 | +                access = "暴露出一些问题,试卷偏难,学生掌握不够理想"; | 
| 737 | } | 881 | } | 
| 738 | -        }else if(avg >= 75){ |  |  | 
| 739 | -            if(apercent >= 35){ |  |  | 
| 740 | -                access = "很好"; |  |  | 
| 741 | -            }else if(apercent >= 20){ |  |  | 
| 742 | -                access = "良好"; |  |  | 
| 743 | -            }else { |  |  | 
| 744 | -                access = "相对可以"; | 882 | +            suggestRepVo.setAssess(access); | 
|  |  | 883 | +            suggestRepVo.setDifficultyDegree(avgStr); | 
|  |  | 884 | +            suggestRepVo.setExcellentRate(aStr); | 
|  |  | 885 | +            suggestRepVo.setErrorList(getErrorRate(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),students.size())); | 
|  |  | 886 | +            Form6RepVO knowledge = initSchoolDimensional(getLearnReqVo,DimensionalEnums.knowledge.getDimensionalType()); | 
|  |  | 887 | +            List<String> lessKnowledgeList = new ArrayList<>(); //不足50% | 
|  |  | 888 | +            List<String> midKnowledgeList = new ArrayList<>(); //50-70% | 
|  |  | 889 | +            for(Form6 form6 :knowledge.getData()){ | 
|  |  | 890 | +                if(form6.getSchoolRate() < 0.5d){ | 
|  |  | 891 | +                    lessKnowledgeList.add(form6.getDimensional()); | 
|  |  | 892 | +                }else if(form6.getSchoolRate() < 0.7d){ | 
|  |  | 893 | +                    midKnowledgeList.add(form6.getDimensional()); | 
|  |  | 894 | +                } | 
| 745 | } | 895 | } | 
| 746 | -        }else if(avg >= 70){ |  |  | 
| 747 | -            if(apercent >= 20){ |  |  | 
| 748 | -                access = "良好"; |  |  | 
| 749 | -            }else { |  |  | 
| 750 | -                access = "相对可以"; | 896 | +            suggestRepVo.setLessKnowledgeList(lessKnowledgeList); | 
|  |  | 897 | +            suggestRepVo.setMidKnowledgeList(midKnowledgeList); | 
|  |  | 898 | +            Form6RepVO ability = initSchoolDimensional(getLearnReqVo,DimensionalEnums.ability.getDimensionalType()); | 
|  |  | 899 | +            List<String> lessAbilityList = new ArrayList<>(); //不足70% | 
|  |  | 900 | +            List<String> midAbilityList = new ArrayList<>(); //70-80% | 
|  |  | 901 | +            List<String> highAbilityList = new ArrayList<>(); //大于80% | 
|  |  | 902 | +            for(Form6 form6 :ability.getData()){ | 
|  |  | 903 | +                if(form6.getSchoolRate() < 0.7d){ | 
|  |  | 904 | +                    lessAbilityList.add(form6.getDimensional()); | 
|  |  | 905 | +                }else if(form6.getSchoolRate() < 0.8d){ | 
|  |  | 906 | +                    midAbilityList.add(form6.getDimensional()); | 
|  |  | 907 | +                }else if(form6.getSchoolRate() >= 0.8d){ | 
|  |  | 908 | +                    highAbilityList.add(form6.getDimensional()); | 
|  |  | 909 | +                } | 
| 751 | } | 910 | } | 
| 752 | -        } else if (avg >= 60) { |  |  | 
| 753 | -            if(apercent >= 10){ |  |  | 
| 754 | -                access = "相对可以"; |  |  | 
| 755 | -            }else { |  |  | 
| 756 | -                access = "一般"; | 911 | +            suggestRepVo.setLessAbilityList(lessAbilityList); | 
|  |  | 912 | +            suggestRepVo.setMidAbilityList(midAbilityList); | 
|  |  | 913 | +            suggestRepVo.setHighAbilityList(highAbilityList); | 
|  |  | 914 | +            Form6RepVO skill = initSchoolDimensional(getLearnReqVo,DimensionalEnums.skill.getDimensionalType()); | 
|  |  | 915 | +            List<String> lessSkillList = new ArrayList<>(); //不足70% | 
|  |  | 916 | +            List<String> midSkillList = new ArrayList<>(); //70-80% | 
|  |  | 917 | +            List<String> highSkillList = new ArrayList<>(); //大于80% | 
|  |  | 918 | +            for(Form6 form6 :skill.getData()){ | 
|  |  | 919 | +                if(form6.getSchoolRate() < 0.7d){ | 
|  |  | 920 | +                    lessSkillList.add(form6.getDimensional()); | 
|  |  | 921 | +                }else if(form6.getSchoolRate() < 0.8d){ | 
|  |  | 922 | +                    midSkillList.add(form6.getDimensional()); | 
|  |  | 923 | +                }else if(form6.getSchoolRate() >= 0.8d){ | 
|  |  | 924 | +                    highSkillList.add(form6.getDimensional()); | 
|  |  | 925 | +                } | 
| 757 | } | 926 | } | 
| 758 | -        }else { |  |  | 
| 759 | -            access = "暴露出一些问题,试卷偏难,学生掌握不够理想"; |  |  | 
| 760 | -        } |  |  | 
| 761 | -        suggestRepVo.setAssess(access); |  |  | 
| 762 | -        suggestRepVo.setDifficultyDegree(avgStr); |  |  | 
| 763 | -        suggestRepVo.setExcellentRate(aStr); |  |  | 
| 764 | -        suggestRepVo.setErrorList(getErrorRate(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),students.size())); |  |  | 
| 765 | -        Form6RepVO knowledge = initSchoolDimensional(getLearnReqVo,DimensionalEnums.knowledge.getDimensionalType()); |  |  | 
| 766 | -        List<String> lessKnowledgeList = new ArrayList<>(); //不足50% |  |  | 
| 767 | -        List<String> midKnowledgeList = new ArrayList<>(); //50-70% |  |  | 
| 768 | -        for(Form6 form6 :knowledge.getData()){ |  |  | 
| 769 | -            if(form6.getSchoolRate() < 0.5d){ |  |  | 
| 770 | -                lessKnowledgeList.add(form6.getDimensional()); |  |  | 
| 771 | -            }else if(form6.getSchoolRate() < 0.7d){ |  |  | 
| 772 | -                midKnowledgeList.add(form6.getDimensional()); |  |  | 
| 773 | -            } |  |  | 
| 774 | -        } |  |  | 
| 775 | -        suggestRepVo.setLessKnowledgeList(lessKnowledgeList); |  |  | 
| 776 | -        suggestRepVo.setMidKnowledgeList(midKnowledgeList); |  |  | 
| 777 | -        Form6RepVO ability = initSchoolDimensional(getLearnReqVo,DimensionalEnums.ability.getDimensionalType()); |  |  | 
| 778 | -        List<String> lessAbilityList = new ArrayList<>(); //不足70% |  |  | 
| 779 | -        List<String> midAbilityList = new ArrayList<>(); //70-80% |  |  | 
| 780 | -        List<String> highAbilityList = new ArrayList<>(); //大于80% |  |  | 
| 781 | -        for(Form6 form6 :ability.getData()){ |  |  | 
| 782 | -            if(form6.getSchoolRate() < 0.7d){ |  |  | 
| 783 | -                lessAbilityList.add(form6.getDimensional()); |  |  | 
| 784 | -            }else if(form6.getSchoolRate() < 0.8d){ |  |  | 
| 785 | -                midAbilityList.add(form6.getDimensional()); |  |  | 
| 786 | -            }else if(form6.getSchoolRate() >= 0.8d){ |  |  | 
| 787 | -                highAbilityList.add(form6.getDimensional()); |  |  | 
| 788 | -            } |  |  | 
| 789 | -        } |  |  | 
| 790 | -        suggestRepVo.setLessAbilityList(lessAbilityList); |  |  | 
| 791 | -        suggestRepVo.setMidAbilityList(midAbilityList); |  |  | 
| 792 | -        suggestRepVo.setHighAbilityList(highAbilityList); |  |  | 
| 793 | -        Form6RepVO skill = initSchoolDimensional(getLearnReqVo,DimensionalEnums.skill.getDimensionalType()); |  |  | 
| 794 | -        List<String> lessSkillList = new ArrayList<>(); //不足70% |  |  | 
| 795 | -        List<String> midSkillList = new ArrayList<>(); //70-80% |  |  | 
| 796 | -        List<String> highSkillList = new ArrayList<>(); //大于80% |  |  | 
| 797 | -        for(Form6 form6 :skill.getData()){ |  |  | 
| 798 | -            if(form6.getSchoolRate() < 0.7d){ |  |  | 
| 799 | -                lessSkillList.add(form6.getDimensional()); |  |  | 
| 800 | -            }else if(form6.getSchoolRate() < 0.8d){ |  |  | 
| 801 | -                midSkillList.add(form6.getDimensional()); |  |  | 
| 802 | -            }else if(form6.getSchoolRate() >= 0.8d){ |  |  | 
| 803 | -                highSkillList.add(form6.getDimensional()); |  |  | 
| 804 | -            } |  |  | 
| 805 | -        } |  |  | 
| 806 | -        suggestRepVo.setLessSkillList(lessSkillList); |  |  | 
| 807 | -        suggestRepVo.setMidSkillList(midSkillList); |  |  | 
| 808 | -        suggestRepVo.setHighSkillList(highSkillList); |  |  | 
| 809 | -        return initSuggest(suggestRepVo); | 927 | +            suggestRepVo.setLessSkillList(lessSkillList); | 
|  |  | 928 | +            suggestRepVo.setMidSkillList(midSkillList); | 
|  |  | 929 | +            suggestRepVo.setHighSkillList(highSkillList); | 
|  |  | 930 | +            suggest = initSuggest(suggestRepVo); | 
|  |  | 931 | +            RedisUtils.setString(getLearnReqVo.getAnalyseId()+"_"+getLearnReqVo.getSchoolName()+"_suggest",suggest); | 
|  |  | 932 | +        } | 
|  |  | 933 | +        return suggest; | 
| 810 | } | 934 | } | 
| 811 |  | 935 |  | 
| 812 | private List<String> getErrorRate(int analyseId , String schoolName , int studentSize){ | 936 | private List<String> getErrorRate(int analyseId , String schoolName , int studentSize){ | 
|  | @@ -826,9 +950,9 @@ public class LearnStatController { |  | @@ -826,9 +950,9 @@ public class LearnStatController { | 
| 826 |  | 950 |  | 
| 827 | private String initSuggest(SuggestRepVo suggestRepVo){ | 951 | private String initSuggest(SuggestRepVo suggestRepVo){ | 
| 828 | StringBuffer stringBuffer = new StringBuffer(); | 952 | StringBuffer stringBuffer = new StringBuffer(); | 
| 829 | -        stringBuffer.append("本次检测总体情况").append(suggestRepVo.getAssess()).append(",难度系数是") | 953 | +        stringBuffer.append("本次检测总体情况").append(suggestRepVo.getAssess()).append(",难度系数是0") | 
| 830 | .append(suggestRepVo.getDifficultyDegree()).append(",优秀率是").append(suggestRepVo.getExcellentRate()).append("%。") | 954 | .append(suggestRepVo.getDifficultyDegree()).append(",优秀率是").append(suggestRepVo.getExcellentRate()).append("%。") | 
| 831 | -                .append("对有关知识,总体掌握情况比较好。从考试结果分析,各知识点掌握程度较好,唯"); | 955 | +                .append("对有关知识,总体掌握情况比较好。\n从考试结果分析,各知识点掌握程度较好,唯"); | 
| 832 | for (int i = 0; i < suggestRepVo.getMidKnowledgeList().size(); i++) { | 956 | for (int i = 0; i < suggestRepVo.getMidKnowledgeList().size(); i++) { | 
| 833 | if(i == suggestRepVo.getMidKnowledgeList().size() - 1 ){ | 957 | if(i == suggestRepVo.getMidKnowledgeList().size() - 1 ){ | 
| 834 | stringBuffer.append(suggestRepVo.getMidKnowledgeList().get(i)); | 958 | stringBuffer.append(suggestRepVo.getMidKnowledgeList().get(i)); | 
|  | @@ -844,7 +968,7 @@ public class LearnStatController { |  | @@ -844,7 +968,7 @@ public class LearnStatController { | 
| 844 | stringBuffer.append(suggestRepVo.getLessKnowledgeList().get(i)).append("、"); | 968 | stringBuffer.append(suggestRepVo.getLessKnowledgeList().get(i)).append("、"); | 
| 845 | } | 969 | } | 
| 846 | } | 970 | } | 
| 847 | -        stringBuffer.append("几个知识点学生的理解有些问题。探究技能方面:"); | 971 | +        stringBuffer.append("几个知识点学生的理解有些问题。\n探究技能方面:"); | 
| 848 | for (int i = 0; i < suggestRepVo.getHighSkillList().size(); i++) { | 972 | for (int i = 0; i < suggestRepVo.getHighSkillList().size(); i++) { | 
| 849 | if(i == suggestRepVo.getHighSkillList().size() - 1 ){ | 973 | if(i == suggestRepVo.getHighSkillList().size() - 1 ){ | 
| 850 | stringBuffer.append(suggestRepVo.getHighSkillList().get(i)); | 974 | stringBuffer.append(suggestRepVo.getHighSkillList().get(i)); | 
|  | @@ -868,7 +992,7 @@ public class LearnStatController { |  | @@ -868,7 +992,7 @@ public class LearnStatController { | 
| 868 | stringBuffer.append(suggestRepVo.getLessSkillList().get(i)).append("、"); | 992 | stringBuffer.append(suggestRepVo.getLessSkillList().get(i)).append("、"); | 
| 869 | } | 993 | } | 
| 870 | } | 994 | } | 
| 871 | -        stringBuffer.append("学生掌握有些问题。学习能力上:"); | 995 | +        stringBuffer.append("学生掌握有些问题。\n学习能力上:"); | 
| 872 | for (int i = 0; i < suggestRepVo.getHighAbilityList().size(); i++) { | 996 | for (int i = 0; i < suggestRepVo.getHighAbilityList().size(); i++) { | 
| 873 | if(i == suggestRepVo.getHighAbilityList().size() - 1 ){ | 997 | if(i == suggestRepVo.getHighAbilityList().size() - 1 ){ | 
| 874 | stringBuffer.append(suggestRepVo.getHighAbilityList().get(i)); | 998 | stringBuffer.append(suggestRepVo.getHighAbilityList().get(i)); | 
|  | @@ -900,7 +1024,7 @@ public class LearnStatController { |  | @@ -900,7 +1024,7 @@ public class LearnStatController { | 
| 900 | stringBuffer.append(suggestRepVo.getErrorList().get(i)).append("、"); | 1024 | stringBuffer.append(suggestRepVo.getErrorList().get(i)).append("、"); | 
| 901 | } | 1025 | } | 
| 902 | } | 1026 | } | 
| 903 | -        stringBuffer.append("错误率大于15%\n后续复习巩固可以从抓好基础、提高能力和注重应用上下功夫。提升"); | 1027 | +        stringBuffer.append("错误率大于15%。\n后续复习巩固可以从抓好基础、提高能力和注重应用上下功夫。提升"); | 
| 904 | for (int i = 0; i < suggestRepVo.getLessKnowledgeList().size(); i++) { | 1028 | for (int i = 0; i < suggestRepVo.getLessKnowledgeList().size(); i++) { | 
| 905 | if(i == suggestRepVo.getLessKnowledgeList().size() - 1 ){ | 1029 | if(i == suggestRepVo.getLessKnowledgeList().size() - 1 ){ | 
| 906 | stringBuffer.append(suggestRepVo.getLessKnowledgeList().get(i)); | 1030 | stringBuffer.append(suggestRepVo.getLessKnowledgeList().get(i)); |