Commit 7fee3c235b29209f4891f673f2f30d2f0e8cef68

Authored by 陈杰
1 parent b91baa10
Exists in master

redis

Showing 43 changed files with 1268 additions and 522 deletions   Show diff stats
pom.xml
... ... @@ -15,6 +15,11 @@
15 15  
16 16 <dependencies>
17 17 <dependency>
  18 + <groupId>redis.clients</groupId>
  19 + <artifactId>jedis</artifactId>
  20 + <version>2.9.0</version>
  21 + </dependency>
  22 + <dependency>
18 23 <groupId>org.apache.httpcomponents</groupId>
19 24 <artifactId>httpclient</artifactId>
20 25 <version>4.3</version>
... ...
src/main/java/com/jevon/controller/LearnController.java
... ... @@ -5,6 +5,7 @@ import com.jevon.enums.DimensionalEnums;
5 5 import com.jevon.model.*;
6 6 import com.jevon.service.*;
7 7 import com.jevon.utils.HttpClientUtils;
  8 +import com.jevon.utils.RedisUtils;
8 9 import com.jevon.vo.BaseVo;
9 10 import com.jevon.vo.excel.ExamExcelVo;
10 11 import com.jevon.vo.excel.ScoreExcelVo;
... ... @@ -18,10 +19,8 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
18 19 import org.apache.poi.ss.usermodel.*;
19 20 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
20 21 import org.springframework.beans.factory.annotation.Autowired;
21   -import org.springframework.web.bind.annotation.RequestBody;
22   -import org.springframework.web.bind.annotation.RequestMapping;
23   -import org.springframework.web.bind.annotation.RequestMethod;
24   -import org.springframework.web.bind.annotation.RestController;
  22 +import org.springframework.web.bind.annotation.*;
  23 +import org.springframework.web.multipart.MultipartFile;
25 24  
26 25 import java.io.File;
27 26 import java.io.InputStream;
... ... @@ -61,6 +60,9 @@ public class LearnController {
61 60 @Autowired
62 61 ChapterService chapterService;
63 62  
  63 + @Autowired
  64 + KnowledgeService knowledgeService;
  65 +
64 66 @ApiOperation("获取列表")
65 67 @RequestMapping(value = "getList", method = RequestMethod.POST)
66 68 public List<Analyse> getList(){
... ... @@ -111,6 +113,7 @@ public class LearnController {
111 113 baseVo.setMessage("已经导入");
112 114 baseVo.setSuccess(false);
113 115 }else {
  116 + RedisUtils.flushAll();
114 117 analysisExcel(initAnalyseReqVo);
115 118 }
116 119 return baseVo;
... ... @@ -149,25 +152,27 @@ public class LearnController {
149 152 //获取表头
150 153 } else {
151 154 ExamExcelVo examExcelVo = new ExamExcelVo(sheetRow);
152   - maxScore = maxScore + new Float(examExcelVo.getScore());
153   - AnalyseDetail analyseDetail = new AnalyseDetail();
154   - String questionNumber = null ;
155   - if(StringUtils.isNotBlank(examExcelVo.getQuestionSmallNumber())){
156   - questionNumber = examExcelVo.getQuestionNumber()+"("+examExcelVo.getQuestionSmallNumber()+")";
157   - }else {
158   - questionNumber = examExcelVo.getQuestionNumber() ;
  155 + if(examExcelVo.getScore() != null){
  156 + maxScore = maxScore + new Float(examExcelVo.getScore());
  157 + AnalyseDetail analyseDetail = new AnalyseDetail();
  158 + String questionNumber = null ;
  159 + if(StringUtils.isNotBlank(examExcelVo.getQuestionSmallNumber())){
  160 + questionNumber = examExcelVo.getQuestionNumber()+"("+examExcelVo.getQuestionSmallNumber()+")";
  161 + }else {
  162 + questionNumber = examExcelVo.getQuestionNumber() ;
  163 + }
  164 + analyseDetail.setQuestionNumber(questionNumber);
  165 + analyseDetail.setAnalyseId(analyse.getId());
  166 + analyseDetail.setQuestionType(examExcelVo.getQuestionType());
  167 + analyseDetail.setDifficult(DifficultEnums.getDifficultType(examExcelVo.getDifficult()));
  168 + analyseDetail.setScore(new Double(examExcelVo.getScore()));
  169 + analyseDetail.setCreateTime(date);
  170 + analyseDetails.add(analyseDetail);
  171 + initAnalyseDimensional(analyse,questionNumber,examExcelVo.getScore(),examExcelVo.getKnowledge(),DimensionalEnums.knowledge.getDimensionalType(),analyseDimensionals);
  172 + initAnalyseDimensional(analyse,questionNumber,examExcelVo.getScore(),examExcelVo.getAbility(),DimensionalEnums.ability.getDimensionalType(),analyseDimensionals);
  173 + initAnalyseDimensional(analyse,questionNumber,examExcelVo.getScore(),examExcelVo.getSkill(),DimensionalEnums.skill.getDimensionalType(),analyseDimensionals);
  174 + initAnalyseDimensional(analyse,questionNumber,examExcelVo.getScore(),examExcelVo.getThink(),DimensionalEnums.think.getDimensionalType(),analyseDimensionals);
159 175 }
160   - analyseDetail.setQuestionNumber(questionNumber);
161   - analyseDetail.setAnalyseId(analyse.getId());
162   - analyseDetail.setQuestionType(examExcelVo.getQuestionType());
163   - analyseDetail.setDifficult(DifficultEnums.getDifficultType(examExcelVo.getDifficult()));
164   - analyseDetail.setScore(new Double(examExcelVo.getScore()));
165   - analyseDetail.setCreateTime(date);
166   - analyseDetails.add(analyseDetail);
167   - initAnalyseDimensional(analyse,questionNumber,examExcelVo.getScore(),examExcelVo.getKnowledge(),DimensionalEnums.knowledge.getDimensionalType(),analyseDimensionals);
168   - initAnalyseDimensional(analyse,questionNumber,examExcelVo.getScore(),examExcelVo.getAbility(),DimensionalEnums.ability.getDimensionalType(),analyseDimensionals);
169   - initAnalyseDimensional(analyse,questionNumber,examExcelVo.getScore(),examExcelVo.getSkill(),DimensionalEnums.skill.getDimensionalType(),analyseDimensionals);
170   - initAnalyseDimensional(analyse,questionNumber,examExcelVo.getScore(),examExcelVo.getThink(),DimensionalEnums.think.getDimensionalType(),analyseDimensionals);
171 176 }
172 177 }
173 178 analyseDetailService.insertBatch(analyseDetails);
... ... @@ -175,7 +180,7 @@ public class LearnController {
175 180 analyse.setMaxScore(new Double(maxScore));
176 181 analyseService.update(analyse);
177 182 }catch (Exception e){
178   - System.out.println(e);
  183 + e.printStackTrace();
179 184 }
180 185 }
181 186  
... ... @@ -373,4 +378,50 @@ public class LearnController {
373 378 public List<String> getSchoolName(int analyseId){
374 379 return studentService.selectSchoolNameByAnalyse(analyseId);
375 380 }
  381 +
  382 + @ApiOperation("导入中考数据")
  383 + @RequestMapping(value = "initKnowledge", method = RequestMethod.POST)
  384 + public void initKnowledge(@RequestParam("file") MultipartFile file){
  385 + InputStream fis = null;
  386 + Workbook workBook = null;
  387 + try {
  388 + fis = file.getInputStream();
  389 + String fileName = file.getOriginalFilename();
  390 + if (fileName.endsWith("xls")) {
  391 + workBook = new HSSFWorkbook(fis);
  392 + } else {
  393 + workBook = new XSSFWorkbook(fis);
  394 + }
  395 + List<Knowledge> list = new ArrayList<>();
  396 + for(int number = 0 ; number < workBook.getNumberOfSheets() ; number++) {
  397 + Sheet sheet = workBook.getSheetAt(number);
  398 + Date date = new Date();
  399 + int rows = sheet.getPhysicalNumberOfRows();
  400 + for (int i = 1; i < rows; i++) {
  401 + // 获取第i行数据
  402 + Row sheetRow = sheet.getRow(i);
  403 + if(sheetRow != null){
  404 + Cell cell1 = sheetRow.getCell(0);
  405 + Cell cell2 = sheetRow.getCell(1);
  406 + Cell cell3 = sheetRow.getCell(2);
  407 + Cell cell4 = sheetRow.getCell(3);
  408 + if(cell1 != null){
  409 + Knowledge knowledge = new Knowledge();
  410 + knowledge.setKnowledge(cell1.getStringCellValue());
  411 + knowledge.setDetail(cell2.getStringCellValue());
  412 + cell3.setCellType(CellType.STRING);
  413 + cell4.setCellType(CellType.STRING);
  414 + knowledge.setRate(cell3.getStringCellValue());
  415 + knowledge.setAvg(cell4.getStringCellValue());
  416 + knowledge.setUpdateTime(date);
  417 + list.add(knowledge);
  418 + }
  419 + }
  420 + }
  421 + knowledgeService.insertBatch(list);
  422 + }
  423 + }catch (Exception e){
  424 + e.printStackTrace();
  425 + }
  426 + }
376 427 }
... ...
src/main/java/com/jevon/controller/LearnStatController.java
... ... @@ -4,11 +4,13 @@ import com.jevon.enums.DifficultEnums;
4 4 import com.jevon.enums.DimensionalEnums;
5 5 import com.jevon.model.*;
6 6 import com.jevon.service.*;
  7 +import com.jevon.utils.RedisUtils;
7 8 import com.jevon.vo.rep.SuggestRepVo;
8 9 import com.jevon.vo.req.GetLearnReqVo;
9 10 import com.jevon.vo.school.*;
10 11 import io.swagger.annotations.Api;
11 12 import io.swagger.annotations.ApiOperation;
  13 +import org.apache.poi.ss.formula.functions.T;
12 14 import org.springframework.beans.factory.annotation.Autowired;
13 15 import org.springframework.web.bind.annotation.RequestBody;
14 16 import org.springframework.web.bind.annotation.RequestMapping;
... ... @@ -54,41 +56,49 @@ public class LearnStatController {
54 56 @Autowired
55 57 ChapterService chapterService;
56 58  
  59 + @Autowired
  60 + KnowledgeService knowledgeService ;
  61 +
57 62 @ApiOperation("getForm1_1")
58 63 @RequestMapping(value = "getForm1_1", method = RequestMethod.POST)
59 64 public Form7RepVO getForm1_1(@RequestBody GetLearnReqVo getLearnReqVo){
60 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 102 return form7RepVO;
93 103 }
94 104  
... ... @@ -96,44 +106,49 @@ public class LearnStatController {
96 106 @RequestMapping(value = "getForm2_1_1", method = RequestMethod.POST)
97 107 public Form1RepVO getForm2_1_1(@RequestBody GetLearnReqVo getLearnReqVo){
98 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 152 return form1RepVo;
138 153 }
139 154  
... ... @@ -141,63 +156,68 @@ public class LearnStatController {
141 156 @RequestMapping(value = "getForm2_1_2", method = RequestMethod.POST)
142 157 public Form2RepVO getForm2_1_2(@RequestBody GetLearnReqVo getLearnReqVo){
143 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 221 return repVO;
202 222 }
203 223  
... ... @@ -205,43 +225,48 @@ public class LearnStatController {
205 225 @RequestMapping(value = "getForm2_1_3_2", method = RequestMethod.POST)
206 226 public Form2RepVO getForm2_1_3_2(@RequestBody GetLearnReqVo getLearnReqVo){
207 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 270 return repVO;
246 271 }
247 272  
... ... @@ -285,71 +310,76 @@ public class LearnStatController {
285 310 @RequestMapping(value = "getForm2_2_1", method = RequestMethod.POST)
286 311 public Form3RepVO getForm2_2_1(@RequestBody GetLearnReqVo getLearnReqVo){
287 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 383 return repVO ;
354 384 }
355 385  
... ... @@ -357,47 +387,52 @@ public class LearnStatController {
357 387 @RequestMapping(value = "getForm2_2_2", method = RequestMethod.POST)
358 388 public Form4RepVO getForm2_2_2(@RequestBody GetLearnReqVo getLearnReqVo){
359 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 436 return repVO;
402 437 }
403 438  
... ... @@ -405,91 +440,96 @@ public class LearnStatController {
405 440 @RequestMapping(value = "getForm2_2_3", method = RequestMethod.POST)
406 441 public Form5RepVO getForm2_2_3(@RequestBody GetLearnReqVo getLearnReqVo){
407 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 533 return repVO;
494 534 }
495 535  
... ... @@ -497,65 +537,142 @@ public class LearnStatController {
497 537 @RequestMapping(value = "getForm2_2_4", method = RequestMethod.POST)
498 538 public Form8RepVO getForm2_2_4(@RequestBody GetLearnReqVo getLearnReqVo){
499 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 579 return repVO;
535 580 }
536 581  
537 582 @ApiOperation("getForm3_1")
538 583 @RequestMapping(value = "getForm3_1", method = RequestMethod.POST)
539 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 639 @ApiOperation("getForm3_2")
544 640 @RequestMapping(value = "getForm3_2", method = RequestMethod.POST)
545 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 652 @ApiOperation("getForm3_3")
550 653 @RequestMapping(value = "getForm3_3", method = RequestMethod.POST)
551 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 665 @ApiOperation("getForm3_4")
556 666 @RequestMapping(value = "getForm3_4", method = RequestMethod.POST)
557 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 678 private Form6RepVO initDimensional(GetLearnReqVo getLearnReqVo , int dimensionalType){
... ... @@ -716,97 +833,104 @@ public class LearnStatController {
716 833 @ApiOperation("获取教学改进建议")
717 834 @RequestMapping(value = "getSuggest", method = RequestMethod.POST)
718 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 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 936 private List<String> getErrorRate(int analyseId , String schoolName , int studentSize){
... ... @@ -826,9 +950,9 @@ public class LearnStatController {
826 950  
827 951 private String initSuggest(SuggestRepVo suggestRepVo){
828 952 StringBuffer stringBuffer = new StringBuffer();
829   - stringBuffer.append("本次检测总体情况").append(suggestRepVo.getAssess()).append(",难度系数是")
  953 + stringBuffer.append("本次检测总体情况").append(suggestRepVo.getAssess()).append(",难度系数是0")
830 954 .append(suggestRepVo.getDifficultyDegree()).append(",优秀率是").append(suggestRepVo.getExcellentRate()).append("%。")
831   - .append("对有关知识,总体掌握情况比较好。从考试结果分析,各知识点掌握程度较好,唯");
  955 + .append("对有关知识,总体掌握情况比较好。\n从考试结果分析,各知识点掌握程度较好,唯");
832 956 for (int i = 0; i < suggestRepVo.getMidKnowledgeList().size(); i++) {
833 957 if(i == suggestRepVo.getMidKnowledgeList().size() - 1 ){
834 958 stringBuffer.append(suggestRepVo.getMidKnowledgeList().get(i));
... ... @@ -844,7 +968,7 @@ public class LearnStatController {
844 968 stringBuffer.append(suggestRepVo.getLessKnowledgeList().get(i)).append("、");
845 969 }
846 970 }
847   - stringBuffer.append("几个知识点学生的理解有些问题。探究技能方面:");
  971 + stringBuffer.append("几个知识点学生的理解有些问题。\n探究技能方面:");
848 972 for (int i = 0; i < suggestRepVo.getHighSkillList().size(); i++) {
849 973 if(i == suggestRepVo.getHighSkillList().size() - 1 ){
850 974 stringBuffer.append(suggestRepVo.getHighSkillList().get(i));
... ... @@ -868,7 +992,7 @@ public class LearnStatController {
868 992 stringBuffer.append(suggestRepVo.getLessSkillList().get(i)).append("、");
869 993 }
870 994 }
871   - stringBuffer.append("学生掌握有些问题。学习能力上:");
  995 + stringBuffer.append("学生掌握有些问题。\n学习能力上:");
872 996 for (int i = 0; i < suggestRepVo.getHighAbilityList().size(); i++) {
873 997 if(i == suggestRepVo.getHighAbilityList().size() - 1 ){
874 998 stringBuffer.append(suggestRepVo.getHighAbilityList().get(i));
... ... @@ -900,7 +1024,7 @@ public class LearnStatController {
900 1024 stringBuffer.append(suggestRepVo.getErrorList().get(i)).append("、");
901 1025 }
902 1026 }
903   - stringBuffer.append("错误率大于15%\n后续复习巩固可以从抓好基础、提高能力和注重应用上下功夫。提升");
  1027 + stringBuffer.append("错误率大于15%\n后续复习巩固可以从抓好基础、提高能力和注重应用上下功夫。提升");
904 1028 for (int i = 0; i < suggestRepVo.getLessKnowledgeList().size(); i++) {
905 1029 if(i == suggestRepVo.getLessKnowledgeList().size() - 1 ){
906 1030 stringBuffer.append(suggestRepVo.getLessKnowledgeList().get(i));
... ...
src/main/java/com/jevon/mapper/KnowledgeMapper.java 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +package com.jevon.mapper;
  2 +
  3 +import com.jevon.model.Knowledge;
  4 +
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * @author chen
  9 + * @version 1.0
  10 + * @date 2019/11/4 0004 11:46
  11 + */
  12 +public interface KnowledgeMapper {
  13 +
  14 + int insertBatch(List<Knowledge> list);
  15 +
  16 + Knowledge selectByKnowledge(String knowledge);
  17 +
  18 + List<Knowledge> selectAll();
  19 +}
... ...
src/main/java/com/jevon/model/Analyse.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
3 4 import java.util.Date;
4 5  
5 6 /**
... ... @@ -7,7 +8,7 @@ import java.util.Date;
7 8 * @version 1.0
8 9 * @date 2019/10/18 0018 10:55
9 10 */
10   -public class Analyse {
  11 +public class Analyse implements Serializable {
11 12  
12 13 private int id ;
13 14 private String examName ;
... ...
src/main/java/com/jevon/model/AnalyseDetail.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
3 4 import java.util.Date;
4 5  
5 6 /**
... ... @@ -7,7 +8,7 @@ import java.util.Date;
7 8 * @version 1.0
8 9 * @date 2019/10/18 0018 8:38
9 10 */
10   -public class AnalyseDetail {
  11 +public class AnalyseDetail implements Serializable {
11 12  
12 13 private int id ;
13 14 private int analyseId ;
... ...
src/main/java/com/jevon/model/AnalyseDimensional.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
3 4 import java.util.Date;
4 5  
5 6 /**
... ... @@ -7,7 +8,7 @@ import java.util.Date;
7 8 * @version 1.0
8 9 * @date 2019/10/18 0018 8:42
9 10 */
10   -public class AnalyseDimensional {
  11 +public class AnalyseDimensional implements Serializable {
11 12  
12 13 private int id ;
13 14 private int analyseId ;
... ...
src/main/java/com/jevon/model/Chapter.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
  4 +
3 5 /**
4 6 * @author chen
5 7 * @version 1.0
6 8 * @date 2019/10/24 0024 9:03
7 9 */
8   -public class Chapter {
  10 +public class Chapter implements Serializable {
9 11  
10 12 private int id ;
11 13 private int analyseId ;
... ...
src/main/java/com/jevon/model/ClassCourse.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
3 4 import java.util.Date;
4 5  
5   -public class ClassCourse {
  6 +public class ClassCourse implements Serializable {
6 7 private Integer courseId;
7 8  
8 9 private Integer schoolId;
... ...
src/main/java/com/jevon/model/ClassModel.java
1 1 package com.jevon.model;
2 2  
3   -public class ClassModel {
  3 +import java.io.Serializable;
  4 +
  5 +public class ClassModel implements Serializable {
4 6 private Integer classId;
5 7  
6 8 private Integer schoolId;
... ...
src/main/java/com/jevon/model/Course.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
  4 +
3 5 /**
4 6 * @author chen
5 7 * @version 1.0
6 8 * @date 2019/10/9 0009 9:39
7 9 */
8   -public class Course {
  10 +public class Course implements Serializable {
9 11  
10 12 private int id ;
11 13 private int schoolId ;
... ...
src/main/java/com/jevon/model/Dimensional.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
3 4 import java.util.Date;
4 5  
5 6 /**
... ... @@ -7,7 +8,7 @@ import java.util.Date;
7 8 * @version 1.0
8 9 * @date 2019/10/18 0018 8:37
9 10 */
10   -public class Dimensional {
  11 +public class Dimensional implements Serializable {
11 12  
12 13 private int id ;
13 14 private int dimensionalType ;
... ...
src/main/java/com/jevon/model/JoinClass.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
  4 +
3 5 /**
4 6 * @author chen
5 7 * @version 1.0
6 8 * @date 2019/10/10 0010 8:27
7 9 */
8   -public class JoinClass {
  10 +public class JoinClass implements Serializable {
9 11  
10 12 private int id ;
11 13 private int schoolId ;
... ...
src/main/java/com/jevon/model/Knowledge.java 0 → 100644
... ... @@ -0,0 +1,67 @@
  1 +package com.jevon.model;
  2 +
  3 +import java.io.Serializable;
  4 +import java.util.Date;
  5 +
  6 +/**
  7 + * @author chen
  8 + * @version 1.0
  9 + * @date 2019/11/4 0004 11:45
  10 + */
  11 +public class Knowledge implements Serializable {
  12 +
  13 + private int id ;
  14 + private String knowledge ;
  15 + private String detail ;
  16 + private String rate ;
  17 + private String avg ;
  18 + private Date updateTime ;
  19 +
  20 + public int getId() {
  21 + return id;
  22 + }
  23 +
  24 + public void setId(int id) {
  25 + this.id = id;
  26 + }
  27 +
  28 + public String getKnowledge() {
  29 + return knowledge;
  30 + }
  31 +
  32 + public void setKnowledge(String knowledge) {
  33 + this.knowledge = knowledge;
  34 + }
  35 +
  36 + public String getRate() {
  37 + return rate;
  38 + }
  39 +
  40 + public void setRate(String rate) {
  41 + this.rate = rate;
  42 + }
  43 +
  44 + public String getAvg() {
  45 + return avg;
  46 + }
  47 +
  48 + public void setAvg(String avg) {
  49 + this.avg = avg;
  50 + }
  51 +
  52 + public Date getUpdateTime() {
  53 + return updateTime;
  54 + }
  55 +
  56 + public void setUpdateTime(Date updateTime) {
  57 + this.updateTime = updateTime;
  58 + }
  59 +
  60 + public String getDetail() {
  61 + return detail;
  62 + }
  63 +
  64 + public void setDetail(String detail) {
  65 + this.detail = detail;
  66 + }
  67 +}
... ...
src/main/java/com/jevon/model/League.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
  4 +
3 5 /**
4 6 * @author chen
5 7 * @version 1.0
6 8 * @date 2019/10/22 0022 8:59
7 9 */
8   -public class League {
  10 +public class League implements Serializable {
9 11  
10 12 private int id ;
11 13 private int analyseId ;
... ...
src/main/java/com/jevon/model/Schedule.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
3 4 import java.util.Date;
4 5  
5 6 /**
... ... @@ -7,7 +8,7 @@ import java.util.Date;
7 8 * @version 1.0
8 9 * @date 2019/10/10 0010 11:17
9 10 */
10   -public class Schedule {
  11 +public class Schedule implements Serializable {
11 12 private int id ;
12 13 private String scheduleName ;
13 14 private int schoolId ;
... ...
src/main/java/com/jevon/model/Student.java
... ... @@ -2,6 +2,7 @@ package com.jevon.model;
2 2  
3 3 import com.jevon.vo.excel.ScoreExcelVo;
4 4  
  5 +import java.io.Serializable;
5 6 import java.util.Date;
6 7 import java.util.List;
7 8  
... ... @@ -10,7 +11,7 @@ import java.util.List;
10 11 * @version 1.0
11 12 * @date 2019/10/18 0018 13:38
12 13 */
13   -public class Student {
  14 +public class Student implements Serializable {
14 15  
15 16 private int id ;
16 17 private int openId;
... ...
src/main/java/com/jevon/model/StudentDetail.java
... ... @@ -2,6 +2,7 @@ package com.jevon.model;
2 2  
3 3 import com.jevon.vo.excel.ScoreExcelVo;
4 4  
  5 +import java.io.Serializable;
5 6 import java.util.Date;
6 7 import java.util.List;
7 8  
... ... @@ -10,7 +11,7 @@ import java.util.List;
10 11 * @version 1.0
11 12 * @date 2019/10/18 0018 13:38
12 13 */
13   -public class StudentDetail {
  14 +public class StudentDetail implements Serializable {
14 15  
15 16 private long id ;
16 17 private int openId;
... ...
src/main/java/com/jevon/model/Teacher.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
  4 +
3 5 /**
4 6 * @author chen
5 7 * @version 1.0
6 8 * @date 2019/10/9 0009 13:53
7 9 */
8   -public class Teacher {
  10 +public class Teacher implements Serializable {
9 11  
10 12 private int id ;
11 13 private int schoolId ;
... ...
src/main/java/com/jevon/model/TeacherClass.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
3 4 import java.util.Date;
4 5  
5   -public class TeacherClass {
  6 +public class TeacherClass implements Serializable {
6 7 private Integer tClassId;
7 8  
8 9 private Integer teacherId;
... ...
src/main/java/com/jevon/model/TeacherCourse.java
1 1 package com.jevon.model;
2 2  
  3 +import java.io.Serializable;
3 4 import java.util.Date;
4 5  
5   -public class TeacherCourse {
  6 +public class TeacherCourse implements Serializable {
6 7 private Integer tClassId;
7 8  
8 9 private Integer schoolId;
... ...
src/main/java/com/jevon/service/KnowledgeService.java 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +package com.jevon.service;
  2 +
  3 +import com.jevon.model.Knowledge;
  4 +
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * @author chen
  9 + * @version 1.0
  10 + * @date 2019/11/4 0004 11:51
  11 + */
  12 +public interface KnowledgeService {
  13 +
  14 + int insertBatch(List<Knowledge> list);
  15 +
  16 + Knowledge selectByKnowledge(String knowledge);
  17 +
  18 + List<Knowledge> selectAll();
  19 +}
... ...
src/main/java/com/jevon/service/impl/KnowledgeServiceImpl.java 0 → 100644
... ... @@ -0,0 +1,36 @@
  1 +package com.jevon.service.impl;
  2 +
  3 +import com.jevon.mapper.KnowledgeMapper;
  4 +import com.jevon.model.Knowledge;
  5 +import com.jevon.service.KnowledgeService;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.stereotype.Service;
  8 +
  9 +import java.util.List;
  10 +
  11 +/**
  12 + * @author chen
  13 + * @version 1.0
  14 + * @date 2019/11/4 0004 11:52
  15 + */
  16 +@Service
  17 +public class KnowledgeServiceImpl implements KnowledgeService {
  18 +
  19 + @Autowired
  20 + KnowledgeMapper knowledgeMapper ;
  21 +
  22 + @Override
  23 + public int insertBatch(List<Knowledge> list) {
  24 + return knowledgeMapper.insertBatch(list);
  25 + }
  26 +
  27 + @Override
  28 + public Knowledge selectByKnowledge(String knowledge) {
  29 + return knowledgeMapper.selectByKnowledge(knowledge);
  30 + }
  31 +
  32 + @Override
  33 + public List<Knowledge> selectAll() {
  34 + return knowledgeMapper.selectAll();
  35 + }
  36 +}
... ...
src/main/java/com/jevon/utils/RedisUtils.java 0 → 100644
... ... @@ -0,0 +1,227 @@
  1 +package com.jevon.utils;
  2 +
  3 +import org.springframework.beans.factory.annotation.Value;
  4 +import org.springframework.context.annotation.PropertySource;
  5 +import org.springframework.stereotype.Component;
  6 +import redis.clients.jedis.Jedis;
  7 +import redis.clients.jedis.JedisPool;
  8 +import redis.clients.jedis.JedisPoolConfig;
  9 +
  10 +import javax.annotation.PostConstruct;
  11 +
  12 +/**
  13 + * @author chen
  14 + * @version 1.0
  15 + * @date 2019/11/5 0005 8:51
  16 + */
  17 +@Component
  18 +@PropertySource(value = "classpath:conf.properties")
  19 +public class RedisUtils {
  20 +
  21 +
  22 + @Value("${redis.host}")
  23 + private String host;
  24 + @Value("${redis.port}")
  25 + private int port;
  26 + @Value("${redis.password}")
  27 + private String password;
  28 +
  29 + @PostConstruct
  30 + public void getApiToken() {
  31 + ADDR = this.host ;
  32 + PORT = this.port ;
  33 + AUTH = this.password ;
  34 + }
  35 +
  36 + //Redis服务器IP
  37 + private static String ADDR;
  38 +
  39 + //Redis的端口号
  40 + private static int PORT;
  41 +
  42 + //访问密码
  43 + private static String AUTH;
  44 +
  45 + //可用连接实例的最大数目,默认值为8;
  46 + //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
  47 + private static int MAX_ACTIVE = 1024;
  48 +
  49 + //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
  50 + private static int MAX_IDLE = 200;
  51 +
  52 + //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
  53 + private static int MAX_WAIT = 10000;
  54 +
  55 + private static int TIMEOUT = 10000;
  56 +
  57 + //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
  58 + private static boolean TEST_ON_BORROW = true;
  59 +
  60 + private static JedisPool jedisPool = null;
  61 +
  62 +
  63 + /**
  64 + * 获取Jedis实例
  65 + * @return
  66 + */
  67 + public synchronized static Jedis getJedis() {
  68 +
  69 + try {
  70 + if (jedisPool != null) {
  71 + Jedis resource = jedisPool.getResource();
  72 + return resource;
  73 + } else {
  74 + JedisPoolConfig config = new JedisPoolConfig();
  75 + config.setMaxTotal(MAX_ACTIVE);
  76 + config.setMaxIdle(MAX_IDLE);
  77 + config.setMaxWaitMillis(MAX_WAIT);
  78 + config.setTestOnBorrow(TEST_ON_BORROW);
  79 + jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
  80 + Jedis resource = jedisPool.getResource();
  81 + return resource;
  82 + }
  83 + } catch (Exception e) {
  84 + e.printStackTrace();
  85 + return null;
  86 + }
  87 + }
  88 +
  89 + public static void main(String[] args) {
  90 + RedisUtils.setString("test","test");
  91 + }
  92 + /**
  93 + * 释放jedis资源
  94 + * @param jedis
  95 + */
  96 + public static void returnResource(final Jedis jedis) {
  97 + if (jedis != null) {
  98 + jedisPool.returnResource(jedis);
  99 + }
  100 + }
  101 +
  102 + public static void setString(String key ,String value){
  103 + Jedis jedis = null;
  104 + try {
  105 + jedis = getJedis();
  106 + jedis.set(key,value);
  107 + } catch (Exception e) {
  108 + System.out.println("setString设置redis键值异常:key=" + key + " value=" + value + " cause:" + e.getMessage());
  109 + } finally {
  110 + if(jedis != null)
  111 + {
  112 + jedis.close();
  113 + }
  114 + }
  115 + }
  116 +
  117 + public static void setObject(String key,Object object) {
  118 + Jedis jedis = null;
  119 + try {
  120 + jedis = getJedis();
  121 + byte[] keyb = key.getBytes();
  122 + byte[] vaueb = SerializeUtil.serialize(object);
  123 + jedis.set(key.getBytes(), SerializeUtil.serialize(object));
  124 + } catch (Exception e) {
  125 + e.printStackTrace();
  126 + System.out.println("setString设置redis键值异常:key=" + key + " value=" + object + " cause:" + e.getMessage());
  127 + } finally {
  128 + if(jedis != null)
  129 + {
  130 + jedis.close();
  131 + }
  132 + }
  133 + }
  134 +
  135 + public static void setString(String key ,String value , int expireTime){
  136 + String result = "OK";
  137 + Jedis jedis = null;
  138 + try {
  139 + jedis = getJedis();
  140 + jedis.set(key,value);
  141 + if(result.equals("OK")) {
  142 + jedis.expire(key.getBytes(), expireTime);
  143 + }
  144 + } catch (Exception e) {
  145 + System.out.println("setString设置redis键值异常:key=" + key + " value=" + value + " cause:" + e.getMessage());
  146 + } finally {
  147 + if(jedis != null)
  148 + {
  149 + jedis.close();
  150 + }
  151 + }
  152 + }
  153 +
  154 + public static String getString(String key) {
  155 + Jedis jedis = null;
  156 + try {
  157 + jedis = getJedis();
  158 + String value = jedis.get(key);
  159 + return value;
  160 + } catch (Exception e) {
  161 + System.out.println("getString获取redis键值异常:key=" + key + " cause:" + e.getMessage());
  162 + } finally {
  163 + jedis.close();
  164 + }
  165 + return null;
  166 + }
  167 +
  168 + public static Object getObject(String key) {
  169 + Jedis jedis = null;
  170 + try {
  171 + jedis = getJedis();
  172 + byte[] value = jedis.get(key.getBytes());
  173 + return SerializeUtil. unserialize(value);
  174 + } catch (Exception e) {
  175 + System.out.println("getString获取redis键值异常:key=" + key + " cause:" + e.getMessage());
  176 + } finally {
  177 + jedis.close();
  178 + }
  179 + return null;
  180 + }
  181 +
  182 +
  183 + /**
  184 + * 删除key
  185 + */
  186 + public static Long delkeyObject(String key) {
  187 + Jedis jedis = null;
  188 + try {
  189 + jedis = getJedis();
  190 + return jedis.del(key.getBytes());
  191 + }catch(Exception e) {
  192 + e.printStackTrace();
  193 + return null;
  194 + }finally{
  195 + if(jedis != null)
  196 + {
  197 + jedis.close();
  198 + }
  199 + }
  200 + }
  201 +
  202 + public static Boolean existsObject(String key) {
  203 + Jedis jedis = null;
  204 + try {
  205 + jedis = getJedis();
  206 + return jedis.exists(key);
  207 + }catch(Exception e) {
  208 + e.printStackTrace();
  209 + return false;
  210 + }finally{
  211 + if(jedis != null)
  212 + {
  213 + jedis.close();
  214 + }
  215 + }
  216 + }
  217 +
  218 + public static void flushAll() {
  219 + Jedis jedis = null;
  220 + try {
  221 + jedis = getJedis();
  222 + jedis.flushAll();
  223 + } catch (Exception e) {
  224 + System.out.println("Cache清空失败:" + e);
  225 + }
  226 + }
  227 +}
... ...
src/main/java/com/jevon/utils/SerializeUtil.java 0 → 100644
... ... @@ -0,0 +1,44 @@
  1 +package com.jevon.utils;
  2 +
  3 +import java.io.ByteArrayInputStream;
  4 +import java.io.ByteArrayOutputStream;
  5 +import java.io.ObjectInputStream;
  6 +import java.io.ObjectOutputStream;
  7 +
  8 +/**
  9 + * @author chen
  10 + * @version 1.0
  11 + * @date 2019/11/5 0005 9:06
  12 + */
  13 +public class SerializeUtil {
  14 +
  15 + // 序列化
  16 + public static byte[] serialize(Object object) {
  17 + ObjectOutputStream oos;
  18 + oos = null;
  19 + ByteArrayOutputStream baos = null;
  20 + try {
  21 + baos = new ByteArrayOutputStream();
  22 + oos = new ObjectOutputStream(baos);
  23 + oos.writeObject(object);
  24 + byte[] bytes = baos.toByteArray();
  25 + return bytes;
  26 + } catch (Exception e) {
  27 + e.printStackTrace();
  28 + }
  29 + return null;
  30 + }
  31 +
  32 + // 反序列化
  33 + public static Object unserialize( byte[] bytes) {
  34 + ByteArrayInputStream bais = null;
  35 + try {
  36 + bais = new ByteArrayInputStream(bytes);
  37 + ObjectInputStream ois = new ObjectInputStream(bais);
  38 + return ois.readObject();
  39 + } catch (Exception e) {
  40 +
  41 + }
  42 + return null;
  43 + }
  44 +}
... ...
src/main/java/com/jevon/vo/BaseVo.java
1 1 package com.jevon.vo;
2 2  
3   -public class BaseVo {
  3 +import java.io.Serializable;
  4 +
  5 +public class BaseVo implements Serializable {
4 6  
5 7 private boolean success;
6 8 private String message ;
... ...
src/main/java/com/jevon/vo/school/Form1.java
... ... @@ -3,13 +3,15 @@ package com.jevon.vo.school;
3 3 import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5  
  6 +import java.io.Serializable;
  7 +
6 8 /**
7 9 * @author chen
8 10 * @version 1.0
9 11 * @date 2019/10/18 0018 15:37
10 12 */
11 13 @ApiModel
12   -public class Form1 {
  14 +public class Form1 implements Serializable {
13 15  
14 16 @ApiModelProperty(value="等级")
15 17 private String level ;
... ...
src/main/java/com/jevon/vo/school/Form1RepVO.java
1 1 package com.jevon.vo.school;
2 2  
  3 +import com.jevon.vo.BaseVo;
3 4 import io.swagger.annotations.ApiModel;
4 5 import io.swagger.annotations.ApiModelProperty;
5 6  
  7 +import java.io.Serializable;
6 8 import java.util.List;
7 9 import java.util.Map;
8 10  
... ... @@ -12,7 +14,7 @@ import java.util.Map;
12 14 * @date 2019/10/18 0018 15:46
13 15 */
14 16 @ApiModel
15   -public class Form1RepVO {
  17 +public class Form1RepVO extends BaseVo {
16 18  
17 19 @ApiModelProperty(value="分数段区间")
18 20 private Map<String ,String> map ;
... ...
src/main/java/com/jevon/vo/school/Form2.java
... ... @@ -3,13 +3,15 @@ package com.jevon.vo.school;
3 3 import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5  
  6 +import java.io.Serializable;
  7 +
6 8 /**
7 9 * @author chen
8 10 * @version 1.0
9 11 * @date 2019/10/18 0018 16:10
10 12 */
11 13 @ApiModel
12   -public class Form2 {
  14 +public class Form2 implements Serializable {
13 15  
14 16 @ApiModelProperty(value="名称")
15 17 private String name ;
... ...
src/main/java/com/jevon/vo/school/Form3.java
... ... @@ -3,13 +3,15 @@ package com.jevon.vo.school;
3 3 import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5  
  6 +import java.io.Serializable;
  7 +
6 8 /**
7 9 * @author chen
8 10 * @version 1.0
9 11 * @date 2019/10/21 0021 9:03
10 12 */
11 13 @ApiModel
12   -public class Form3 {
  14 +public class Form3 implements Serializable {
13 15  
14 16 @ApiModelProperty(value="名称")
15 17 private String name ;
... ...
src/main/java/com/jevon/vo/school/Form4.java
... ... @@ -3,13 +3,15 @@ package com.jevon.vo.school;
3 3 import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5  
  6 +import java.io.Serializable;
  7 +
6 8 /**
7 9 * @author chen
8 10 * @version 1.0
9 11 * @date 2019/10/21 0021 9:51
10 12 */
11 13 @ApiModel
12   -public class Form4 {
  14 +public class Form4 implements Serializable {
13 15  
14 16 @ApiModelProperty(value="名称")
15 17 private String name ;
... ...
src/main/java/com/jevon/vo/school/Form5.java
... ... @@ -3,13 +3,15 @@ package com.jevon.vo.school;
3 3 import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5  
  6 +import java.io.Serializable;
  7 +
6 8 /**
7 9 * @author chen
8 10 * @version 1.0
9 11 * @date 2019/10/21 0021 9:59
10 12 */
11 13 @ApiModel
12   -public class Form5 {
  14 +public class Form5 implements Serializable {
13 15 @ApiModelProperty(value="题号")
14 16 private String examNumber ;
15 17 @ApiModelProperty(value="难度")
... ...
src/main/java/com/jevon/vo/school/Form6.java
... ... @@ -3,13 +3,15 @@ package com.jevon.vo.school;
3 3 import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5  
  6 +import java.io.Serializable;
  7 +
6 8 /**
7 9 * @author chen
8 10 * @version 1.0
9 11 * @date 2019/10/21 0021 11:25
10 12 */
11 13 @ApiModel
12   -public class Form6 {
  14 +public class Form6 implements Serializable {
13 15 @ApiModelProperty(value="维度名称")
14 16 private String dimensional ;
15 17 @ApiModelProperty(value="分值")
... ...
src/main/java/com/jevon/vo/school/Form7.java
... ... @@ -3,13 +3,15 @@ package com.jevon.vo.school;
3 3 import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5  
  6 +import java.io.Serializable;
  7 +
6 8 /**
7 9 * @author chen
8 10 * @version 1.0
9 11 * @date 2019/10/21 0021 14:58
10 12 */
11 13 @ApiModel
12   -public class Form7 {
  14 +public class Form7 implements Serializable {
13 15  
14 16 @ApiModelProperty(value = "名称")
15 17 private String name ;
... ...
src/main/java/com/jevon/vo/school/Form7RepVO.java
1 1 package com.jevon.vo.school;
2 2  
3 3 import com.jevon.model.Chapter;
  4 +import com.jevon.vo.BaseVo;
4 5 import io.swagger.annotations.ApiModel;
5 6 import io.swagger.annotations.ApiModelProperty;
6 7  
... ... @@ -12,7 +13,7 @@ import java.util.List;
12 13 * @date 2019/10/24 0024 9:20
13 14 */
14 15 @ApiModel
15   -public class Form7RepVO {
  16 +public class Form7RepVO extends BaseVo {
16 17  
17 18 @ApiModelProperty(value = "举例七年级上册")
18 19 private String examScope ;
... ...
src/main/java/com/jevon/vo/school/Form8.java
... ... @@ -3,13 +3,15 @@ package com.jevon.vo.school;
3 3 import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5  
  6 +import java.io.Serializable;
  7 +
6 8 /**
7 9 * @author chen
8 10 * @version 1.0
9 11 * @date 2019/10/21 0021 15:14
10 12 */
11 13 @ApiModel
12   -public class Form8 {
  14 +public class Form8 implements Serializable {
13 15  
14 16 @ApiModelProperty(value="题目难度")
15 17 private String difficultName ;
... ...
src/main/java/com/jevon/vo/school/Table1.java
... ... @@ -3,13 +3,15 @@ package com.jevon.vo.school;
3 3 import io.swagger.annotations.ApiModel;
4 4 import io.swagger.annotations.ApiModelProperty;
5 5  
  6 +import java.io.Serializable;
  7 +
6 8 /**
7 9 * @author chen
8 10 * @version 1.0
9 11 * @date 2019/10/21 0021 8:34
10 12 */
11 13 @ApiModel
12   -public class Table1 {
  14 +public class Table1 implements Serializable {
13 15 @ApiModelProperty(value="分数段")
14 16 private String score ;
15 17 @ApiModelProperty(value="人数")
... ...
src/main/java/com/jevon/vo/school/Table2.java 0 → 100644
... ... @@ -0,0 +1,55 @@
  1 +package com.jevon.vo.school;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +
  6 +import java.io.Serializable;
  7 +
  8 +/**
  9 + * @author chen
  10 + * @version 1.0
  11 + * @date 2019/11/5 0005 8:27
  12 + */
  13 +@ApiModel
  14 +public class Table2 implements Serializable {
  15 + @ApiModelProperty(value = "知识点")
  16 + private String knowledge ;
  17 + @ApiModelProperty(value = "得分率")
  18 + private Double schoolRate ;
  19 + @ApiModelProperty(value = "考频")
  20 + private String rate ;
  21 + @ApiModelProperty(value = "平均分")
  22 + private String avg ;
  23 +
  24 + public String getKnowledge() {
  25 + return knowledge;
  26 + }
  27 +
  28 + public void setKnowledge(String knowledge) {
  29 + this.knowledge = knowledge;
  30 + }
  31 +
  32 + public Double getSchoolRate() {
  33 + return schoolRate;
  34 + }
  35 +
  36 + public void setSchoolRate(Double schoolRate) {
  37 + this.schoolRate = schoolRate;
  38 + }
  39 +
  40 + public String getRate() {
  41 + return rate;
  42 + }
  43 +
  44 + public void setRate(String rate) {
  45 + this.rate = rate;
  46 + }
  47 +
  48 + public String getAvg() {
  49 + return avg;
  50 + }
  51 +
  52 + public void setAvg(String avg) {
  53 + this.avg = avg;
  54 + }
  55 +}
... ...
src/main/java/com/jevon/vo/school/Table2RepVO.java 0 → 100644
... ... @@ -0,0 +1,23 @@
  1 +package com.jevon.vo.school;
  2 +
  3 +import com.jevon.vo.BaseVo;
  4 +
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * @author chen
  9 + * @version 1.0
  10 + * @date 2019/11/5 0005 8:39
  11 + */
  12 +public class Table2RepVO extends BaseVo {
  13 +
  14 + private List<Table2> data ;
  15 +
  16 + public List<Table2> getData() {
  17 + return data;
  18 + }
  19 +
  20 + public void setData(List<Table2> data) {
  21 + this.data = data;
  22 + }
  23 +}
... ...
src/main/resources/application.yml
... ... @@ -8,7 +8,7 @@ spring:
8 8 url: jdbc:sqlserver://60.190.202.57:14333;database=SmartPaike
9 9 # username: szjxtuser
10 10 # password: RQminVCJota3H1u8bBYH
11   -# url: jdbc:sqlserver://116.62.155.137:33419;database=SmartCampus_java
  11 +# url: jdbc:sqlserver://116.62.241.27:33419;database=SmartCampus_java
12 12 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
13 13 filters: stat
14 14 maxActive: 20
... ... @@ -41,7 +41,5 @@ Logger:
41 41 com.jevon.mapper: info
42 42  
43 43 remoting:
44   - url: http://60.190.202.57:1000
45   - prefixFile: F://wwwroot//smartcampus
46   -# url: http://campus.myjxt.com
47   -# prefixFile: E://wwwhtdocs//SmartCampus
  44 +# url: http://60.190.202.57:1000
  45 + url: http://campus.myjxt.com
... ...
src/main/resources/conf.properties 0 → 100644
... ... @@ -0,0 +1,4 @@
  1 +#redis
  2 +redis.host=121.40.109.21
  3 +redis.port=6379
  4 +redis.password=123456
0 5 \ No newline at end of file
... ...
src/main/resources/logback.xml
... ... @@ -5,7 +5,7 @@
5 5  
6 6     <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
7 7 <!--    <property name="LOG_HOME" value="/opt/web/log/" />-->
8   - <property name="LOG_HOME" value="E://smartCampus_java//log"/>
  8 + <property name="LOG_HOME" value="D://smartCampus_java//log"/>
9 9  
10 10     <!-- 控制台输出 -->
11 11     <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
... ...
src/main/resources/mapping/KnowledgeMapper.xml 0 → 100644
... ... @@ -0,0 +1,29 @@
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3 +<mapper namespace="com.jevon.mapper.KnowledgeMapper" >
  4 + <resultMap id="BaseResultMap" type="com.jevon.model.Knowledge" >
  5 + <id column="id" property="id" jdbcType="INTEGER" />
  6 + <result column="knowledge" property="knowledge" jdbcType="VARCHAR" />
  7 + <result column="detail" property="detail" jdbcType="VARCHAR" />
  8 + <result column="rate" property="rate" jdbcType="VARCHAR" />
  9 + <result column="knowledge_avg" property="avg" jdbcType="VARCHAR" />
  10 + <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
  11 + </resultMap>
  12 +
  13 + <insert id="insertBatch" parameterType="java.util.List">
  14 + insert into sz_learn_knowledge (knowledge,detail, rate,knowledge_avg,update_time)
  15 + values
  16 + <foreach collection="list" item="emp" separator=",">
  17 + (#{emp.knowledge},#{emp.detail},#{emp.rate},#{emp.avg},#{emp.updateTime})
  18 + </foreach>
  19 + </insert>
  20 +
  21 + <select id="selectByKnowledge" parameterType="java.lang.String" resultMap="BaseResultMap">
  22 + select * from sz_learn_knowledge where knowledge = #{knowledge}
  23 + </select>
  24 +
  25 + <select id="selectAll" resultMap="BaseResultMap">
  26 + select * from sz_learn_knowledge
  27 + </select>
  28 +
  29 +</mapper>
0 30 \ No newline at end of file
... ...