Commit 94e3820a144a05569b04ff4df200c30b5ba0e866

Authored by 陈杰
1 parent a923e3fe
Exists in master

四维诊断

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
... ...