Commit 94e3820a144a05569b04ff4df200c30b5ba0e866
1 parent
a923e3fe
Exists in
master
四维诊断
Showing
6 changed files
with
100 additions
and
32 deletions
Show diff stats
src/main/java/com/jevon/controller/LearnController.java
... | ... | @@ -173,8 +173,9 @@ public class LearnController { |
173 | 173 | int dimensionalId = 0 ; |
174 | 174 | if(result == null || result.getId() == 0){ |
175 | 175 | dimensional.setCreateTime(new Date()); |
176 | - dimensionalId = dimensionalService.insert(dimensional); | |
177 | - }else { | |
176 | + dimensionalService.insert(dimensional); | |
177 | + dimensionalId = dimensional.getId(); | |
178 | + }else{ | |
178 | 179 | dimensionalId = result.getId(); |
179 | 180 | } |
180 | 181 | AnalyseDimensional analyseDimensional = new AnalyseDimensional(); |
... | ... | @@ -200,6 +201,11 @@ public class LearnController { |
200 | 201 | private void analysisScoreExcel(InitAnalyseReqVo initAnalyseReqVo){ |
201 | 202 | try{ |
202 | 203 | Analyse analyse = analyseService.selectById(initAnalyseReqVo.getAnalyseId()); |
204 | + List<AnalyseDetail> analyseDetails = analyseDetailService.selectByAnalyseId(analyse.getId()); | |
205 | + Map<String , Double> scoreMap = new HashMap<>(); | |
206 | + for(AnalyseDetail analyseDetail : analyseDetails){ | |
207 | + scoreMap.put(analyseDetail.getQuestionNumber(),analyseDetail.getScore()); | |
208 | + } | |
203 | 209 | String fileUrl = initAnalyseReqVo.getUrl(); |
204 | 210 | File excelFile = new File(fileUrl); |
205 | 211 | // 获得工作簿 |
... | ... | @@ -218,6 +224,7 @@ public class LearnController { |
218 | 224 | Date date = new Date(); |
219 | 225 | int rows = sheet.getPhysicalNumberOfRows(); |
220 | 226 | Map<Integer , String> map = new HashMap<>(); |
227 | + int column = 0 ; | |
221 | 228 | for (int i = 0; i < rows; i++) { |
222 | 229 | // 获取第i行数据 |
223 | 230 | Row sheetRow = sheet.getRow(i); |
... | ... | @@ -232,6 +239,7 @@ public class LearnController { |
232 | 239 | map.put(j,cell.getStringCellValue().trim()); |
233 | 240 | j++; |
234 | 241 | } |
242 | + column = j ; | |
235 | 243 | } else { |
236 | 244 | ScoreExcelVo scoreExcelVo = new ScoreExcelVo(sheetRow); |
237 | 245 | if(StringUtils.isNotBlank(scoreExcelVo.getStudentName())){ |
... | ... | @@ -239,16 +247,21 @@ public class LearnController { |
239 | 247 | student.setAnalyseId(analyse.getId()); |
240 | 248 | student.setCreateTime(date); |
241 | 249 | students.add(student); |
242 | - int j = 7 ; | |
243 | - while (sheetRow.getCell(j) != null){ | |
250 | + for(int j = 7 ; j < column ; j++){ | |
244 | 251 | Cell cell = sheetRow.getCell(j); |
245 | 252 | StudentDetail studentDetail = new StudentDetail(scoreExcelVo); |
246 | 253 | studentDetail.setAnalyseId(analyse.getId()); |
247 | 254 | studentDetail.setExamNumber(map.get(j)); |
248 | 255 | studentDetail.setScore(new Double(cell.getNumericCellValue())); |
256 | + Double score = scoreMap.get((map.get(j))) ; | |
257 | + Double studentScore = studentDetail.getScore() ; | |
258 | + if(Double.doubleToLongBits(score) == Double.doubleToLongBits(studentScore) ){ | |
259 | + studentDetail.setCorrect(1); | |
260 | + }else { | |
261 | + studentDetail.setCorrect(0); | |
262 | + } | |
249 | 263 | studentDetail.setCreateTime(date); |
250 | 264 | studentDetails.add(studentDetail); |
251 | - j++; | |
252 | 265 | } |
253 | 266 | } |
254 | 267 | } | ... | ... |
src/main/java/com/jevon/controller/LearnStatController.java
... | ... | @@ -453,14 +453,14 @@ public class LearnStatController { |
453 | 453 | from5.setLeagueAvg(leagueSumScore / new Double(leagueStudents.size())); |
454 | 454 | from5.setSchoolAvg(schoolSumScore / new Double(students.size())); |
455 | 455 | |
456 | - int allHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allHighStudent,analyseDetail.getScore()); | |
457 | - int allLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allLowStudent,analyseDetail.getScore()); | |
456 | + int allHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allHighStudent); | |
457 | + int allLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDetail.getQuestionNumber(),allLowStudent); | |
458 | 458 | |
459 | - int leagueHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allHighStudent,analyseDetail.getScore()); | |
460 | - int leagueLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allLowStudent,analyseDetail.getScore()); | |
459 | + int leagueHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allHighStudent); | |
460 | + int leagueLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDetail.getQuestionNumber(),allLowStudent); | |
461 | 461 | |
462 | - int high = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),highStudent,analyseDetail.getScore()); | |
463 | - int low = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),lowStudent,analyseDetail.getScore()); | |
462 | + int high = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),highStudent); | |
463 | + int low = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDetail.getQuestionNumber(),lowStudent); | |
464 | 464 | from5.setAllDist(new Double(allHigh-allLow)/new Double(allNumber)); |
465 | 465 | from5.setLeagueDist(new Double(leagueHigh-leagueLow)/new Double(leagueNumber)); |
466 | 466 | from5.setSchoolDist(new Double(high-low)/new Double(number)); |
... | ... | @@ -597,24 +597,25 @@ public class LearnStatController { |
597 | 597 | form6.setDimensional(dimensional.getDimensionalName()); |
598 | 598 | List<AnalyseDimensional> analyseDimensionals = analyseDimensionalService.selectByDimensional(analyse.getId(),dimensional.getId()); |
599 | 599 | Double score = 0d; |
600 | - Double allSumScore = 0d , leagueSumScore = 0d , schoolSumScore = 0d ; | |
601 | - int allHigh = 0 , allLow = 0 , leagueHigh = 0 , leagueLow = 0 , high = 0 , low = 0 ; | |
602 | 600 | StringBuffer examNumber = new StringBuffer(); |
601 | + List<String> examNumberList = new ArrayList<>(); | |
603 | 602 | for(AnalyseDimensional analyseDimensional :analyseDimensionals){ |
604 | 603 | score = score + analyseDimensional.getScore() ; |
605 | - allSumScore = allSumScore + studentDetailService.selectSumScore(analyse.getId(),null,null,analyseDimensional.getQuestionNumber()); | |
606 | - allHigh = allHigh + studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDimensional.getQuestionNumber(),allHighStudent,analyseDimensional.getScore()); | |
607 | - allLow = allLow + studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,analyseDimensional.getQuestionNumber(),allLowStudent,analyseDimensional.getScore()); | |
608 | - | |
609 | - leagueSumScore = leagueSumScore + studentDetailService.selectSumScore(analyse.getId(),leagues,null,analyseDimensional.getQuestionNumber()); | |
610 | - leagueHigh = leagueHigh + studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDimensional.getQuestionNumber(),allHighStudent,analyseDimensional.getScore()); | |
611 | - leagueLow = leagueLow + studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,analyseDimensional.getQuestionNumber(),allLowStudent,analyseDimensional.getScore()); | |
612 | - | |
613 | - schoolSumScore = schoolSumScore + studentDetailService.selectSumScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),analyseDimensional.getQuestionNumber()); | |
614 | - high = high + studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDimensional.getQuestionNumber(),highStudent,analyseDimensional.getScore()); | |
615 | - low = low + studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,analyseDimensional.getQuestionNumber(),lowStudent,analyseDimensional.getScore()); | |
616 | 604 | examNumber.append(analyseDimensional.getQuestionNumber()).append(","); |
605 | + examNumberList.add(analyseDimensional.getQuestionNumber()); | |
617 | 606 | } |
607 | + Double allSumScore = studentDetailService.selectSumScore(analyse.getId(),null,null,examNumberList); | |
608 | + int allHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,examNumberList,allHighStudent); | |
609 | + int allLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,null ,examNumberList,allLowStudent); | |
610 | + | |
611 | + Double leagueSumScore = studentDetailService.selectSumScore(analyse.getId(),leagues,null,examNumberList); | |
612 | + int leagueHigh = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,examNumberList,allHighStudent); | |
613 | + int leagueLow = studentDetailService.selectTrueByExamNumber(analyse.getId(),leagues,null ,examNumberList,allLowStudent); | |
614 | + | |
615 | + Double schoolSumScore = studentDetailService.selectSumScore(analyse.getId(),null,getLearnReqVo.getSchoolName(),examNumberList); | |
616 | + int high = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,examNumberList,highStudent); | |
617 | + int low = studentDetailService.selectTrueByExamNumber(analyse.getId(),null,getLearnReqVo.getSchoolName() ,examNumberList,lowStudent); | |
618 | + | |
618 | 619 | form6.setScore(score); |
619 | 620 | form6.setAllRate(allSumScore / new Double(allStudents.size()) / score ); |
620 | 621 | form6.setLeagueRate(leagueSumScore / new Double(leagueStudents.size()) / score ); | ... | ... |
src/main/java/com/jevon/model/StudentDetail.java
... | ... | @@ -22,10 +22,12 @@ public class StudentDetail { |
22 | 22 | private String examNumber ; |
23 | 23 | private Double score ; |
24 | 24 | private Date createTime ; |
25 | + private int correct ; //1 正确 0 错误 | |
25 | 26 | |
26 | 27 | //查询用 高分段 低分段学生考号 |
27 | 28 | private List<String> studentNumbers ; |
28 | 29 | private List<String> schoolNames ; |
30 | + private List<String> examNumbers ; | |
29 | 31 | |
30 | 32 | public StudentDetail(ScoreExcelVo scoreExcelVo) { |
31 | 33 | this.schoolName = scoreExcelVo.getSchoolName(); |
... | ... | @@ -132,4 +134,20 @@ public class StudentDetail { |
132 | 134 | public void setSchoolNames(List<String> schoolNames) { |
133 | 135 | this.schoolNames = schoolNames; |
134 | 136 | } |
137 | + | |
138 | + public List<String> getExamNumbers() { | |
139 | + return examNumbers; | |
140 | + } | |
141 | + | |
142 | + public void setExamNumbers(List<String> examNumbers) { | |
143 | + this.examNumbers = examNumbers; | |
144 | + } | |
145 | + | |
146 | + public int getCorrect() { | |
147 | + return correct; | |
148 | + } | |
149 | + | |
150 | + public void setCorrect(int correct) { | |
151 | + this.correct = correct; | |
152 | + } | |
135 | 153 | } | ... | ... |
src/main/java/com/jevon/service/StudentDetailService.java
... | ... | @@ -15,5 +15,10 @@ public interface StudentDetailService { |
15 | 15 | |
16 | 16 | Double selectSumScore(int analyseId, List<String> league , String schoolName, String examNumber); |
17 | 17 | |
18 | - int selectTrueByExamNumber(int analyseId , List<String> league , String schoolName , String examNumber , List<String> studentNumbers ,Double score); | |
18 | + Double selectSumScore(int analyseId, List<String> league , String schoolName, List<String> examNumbers); | |
19 | + | |
20 | + int selectTrueByExamNumber(int analyseId , List<String> league , String schoolName , String examNumber , List<String> studentNumbers); | |
21 | + | |
22 | + int selectTrueByExamNumber(int analyseId , List<String> league , String schoolName , List<String> examNumbers , List<String> studentNumbers); | |
23 | + | |
19 | 24 | } | ... | ... |
src/main/java/com/jevon/service/impl/StudentDetailServiceImpl.java
... | ... | @@ -47,12 +47,32 @@ public class StudentDetailServiceImpl implements StudentDetailService { |
47 | 47 | } |
48 | 48 | |
49 | 49 | @Override |
50 | - public int selectTrueByExamNumber(int analyseId,List<String> league , String schoolName, String examNumber, List<String> studentNumbers , Double score) { | |
50 | + public Double selectSumScore(int analyseId, List<String> league, String schoolName, List<String> examNumbers) { | |
51 | + StudentDetail studentDetail = new StudentDetail(); | |
52 | + studentDetail.setAnalyseId(analyseId); | |
53 | + studentDetail.setSchoolName(schoolName); | |
54 | + studentDetail.setExamNumbers(examNumbers); | |
55 | + studentDetail.setSchoolNames(league); | |
56 | + return studentDetailMapper.selectSumScore(studentDetail); | |
57 | + } | |
58 | + | |
59 | + @Override | |
60 | + public int selectTrueByExamNumber(int analyseId,List<String> league , String schoolName, String examNumber, List<String> studentNumbers) { | |
51 | 61 | StudentDetail studentDetail = new StudentDetail(); |
52 | 62 | studentDetail.setAnalyseId(analyseId); |
53 | 63 | studentDetail.setSchoolName(schoolName); |
54 | 64 | studentDetail.setExamNumber(examNumber); |
55 | - studentDetail.setScore(score); | |
65 | + studentDetail.setStudentNumbers(studentNumbers); | |
66 | + studentDetail.setSchoolNames(league); | |
67 | + return studentDetailMapper.selectTrueByExamNumber(studentDetail); | |
68 | + } | |
69 | + | |
70 | + @Override | |
71 | + public int selectTrueByExamNumber(int analyseId, List<String> league, String schoolName, List<String> examNumbers, List<String> studentNumbers) { | |
72 | + StudentDetail studentDetail = new StudentDetail(); | |
73 | + studentDetail.setAnalyseId(analyseId); | |
74 | + studentDetail.setSchoolName(schoolName); | |
75 | + studentDetail.setExamNumbers(examNumbers); | |
56 | 76 | studentDetail.setStudentNumbers(studentNumbers); |
57 | 77 | studentDetail.setSchoolNames(league); |
58 | 78 | return studentDetailMapper.selectTrueByExamNumber(studentDetail); | ... | ... |
src/main/resources/mapping/StudentDetailMapper.xml
... | ... | @@ -12,15 +12,16 @@ |
12 | 12 | <result column="exam_number" property="examNumber" jdbcType="VARCHAR" /> |
13 | 13 | <result column="score" property="score" jdbcType="FLOAT" /> |
14 | 14 | <result column="create_time" property="createTime" jdbcType="TIMESTAMP" /> |
15 | + <result column="correct" property="correct" jdbcType="INTEGER" /> | |
15 | 16 | </resultMap> |
16 | 17 | |
17 | 18 | <insert id="insertBatch" parameterType="java.util.List"> |
18 | 19 | insert into sz_learn_student_detail (school_name, class_name,student_name, |
19 | - student_number,analyse_id,exam_number,score,create_time) | |
20 | + student_number,analyse_id,exam_number,score,create_time,correct) | |
20 | 21 | values |
21 | 22 | <foreach collection="list" item="emp" separator=","> |
22 | 23 | (#{emp.schoolName},#{emp.className},#{emp.studentName}, |
23 | - #{emp.studentNumber},#{emp.analyseId},#{emp.examNumber},#{emp.score},#{emp.createTime}) | |
24 | + #{emp.studentNumber},#{emp.analyseId},#{emp.examNumber},#{emp.score},#{emp.createTime},#{emp.correct}) | |
24 | 25 | </foreach> |
25 | 26 | </insert> |
26 | 27 | |
... | ... | @@ -42,6 +43,12 @@ |
42 | 43 | #{item} |
43 | 44 | </foreach> |
44 | 45 | </if> |
46 | + <if test="examNumbers != null and examNumbers.size()>0"> | |
47 | + AND exam_number IN | |
48 | + <foreach item="item" index="index" collection="examNumbers" open="(" close=")" separator=","> | |
49 | + #{item} | |
50 | + </foreach> | |
51 | + </if> | |
45 | 52 | </where> |
46 | 53 | </select> |
47 | 54 | |
... | ... | @@ -57,9 +64,6 @@ |
57 | 64 | <if test="examNumber != null"> |
58 | 65 | and exam_number = #{examNumber} |
59 | 66 | </if> |
60 | - <if test="score != null"> | |
61 | - and score = #{score} | |
62 | - </if> | |
63 | 67 | <if test="studentNumbers != null and studentNumbers.size()>0"> |
64 | 68 | AND student_number IN |
65 | 69 | <foreach item="item" index="index" collection="studentNumbers" open="(" close=")" separator=","> |
... | ... | @@ -72,7 +76,14 @@ |
72 | 76 | #{item} |
73 | 77 | </foreach> |
74 | 78 | </if> |
79 | + <if test="examNumbers != null and examNumbers.size()>0"> | |
80 | + AND exam_number IN | |
81 | + <foreach item="item" index="index" collection="examNumbers" open="(" close=")" separator=","> | |
82 | + #{item} | |
83 | + </foreach> | |
84 | + </if> | |
75 | 85 | </where> |
86 | + and correct = 1 | |
76 | 87 | </select> |
77 | 88 | |
78 | 89 | </mapper> |
79 | 90 | \ No newline at end of file | ... | ... |