LearnStatController.java 5.23 KB
package com.jevon.controller;

import com.jevon.model.Analyse;
import com.jevon.model.Student;
import com.jevon.service.*;
import com.jevon.vo.req.GetLearnReqVo;
import com.jevon.wordDTO.second.Form1;
import com.jevon.wordDTO.second.Form1RepVo;
import com.jevon.wordDTO.second.Form2;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author chen
 * @version 1.0
 * @date 2019/10/18 0018 15:54
 */
@RestController
@RequestMapping(value = "/getLearn")
@Api(value = "学情分析")
public class LearnStatController {
    @Autowired
    AnalyseService analyseService;

    @Autowired
    DimensionalService dimensionalService;

    @Autowired
    AnalyseDimensionalService analyseDimensionalService;

    @Autowired
    AnalyseDetailService analyseDetailService;

    @Autowired
    StudentDetailService studentDetailService;

    @Autowired
    StudentService studentService;

    @ApiOperation("getForm2_1")
    @RequestMapping(value = "getForm2_1", method = RequestMethod.POST)
    public Form1RepVo getForm2_1(@RequestBody GetLearnReqVo getLearnReqVo){
        Form1RepVo form1RepVo = new Form1RepVo();
        //2.1表
        Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId());
        //分数段
        float maxScore = analyse.getMaxScore();
        Map<String,String> segmentMap = new HashMap<>();
        segmentMap.put("A(优秀)",maxScore*0.85 + "~" + maxScore+"分");
        segmentMap.put("B(良好)",maxScore*0.7 + "~" + (maxScore*0.85-1f)+"分");
        segmentMap.put("C(及格)",maxScore*0.7 + "~" + (maxScore*0.7-1f)+"分");
        segmentMap.put("D(不及格)",0 + "~" + (maxScore*0.6-1f)+"分");
        form1RepVo.setMap(segmentMap);
        List<Student> students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName());
        double sum = new Double(students.size());
        int a = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),maxScore*0.85,maxScore+1f);
        int b = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),maxScore*0.7,(maxScore*0.85));
        int c = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),maxScore*0.6,(maxScore*0.7));
        int d = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),maxScore*0,(maxScore*0.6));
        List<Form1> form1List = new ArrayList<>();
        Form1 formA = new Form1();
        formA.setLevel("A");
        formA.setNumber(a);
        formA.setProp(a/sum);
        Form1 formB = new Form1();
        formB.setLevel("B");
        formB.setNumber(b);
        formB.setProp(b/sum);
        Form1 formC = new Form1();
        formC.setLevel("C");
        formC.setNumber(c);
        formC.setProp(c/sum);
        Form1 formD = new Form1();
        formD.setLevel("D");
        formD.setNumber(d);
        formD.setProp(d/sum);
        form1List.add(formA);
        form1List.add(formB);
        form1List.add(formC);
        form1List.add(formD);
        form1RepVo.setList(form1List);
        return form1RepVo;
    }

    @ApiOperation("getForm2_2")
    @RequestMapping(value = "getForm2_2", method = RequestMethod.POST)
    public List<Form2> getForm2_2(@RequestBody GetLearnReqVo getLearnReqVo){
        Analyse analyse = analyseService.selectById(getLearnReqVo.getAnalyseId());
        List<Student> allStudents = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),null);
        List<Student> students = studentService.selectBySchoolName(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName());
        //先算高分段的分数  再去人数
        int highNumber = (int) Math.floor(allStudents.size()*0.27);
        double highScore = allStudents.get(highNumber).getScore();
        int lowNumber = allStudents.size()-highNumber;
        double lowScore = allStudents.get(lowNumber).getScore();
        int highCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),highScore,analyse.getMaxScore()+1f);
        int lowCount = studentService.selectCountByScore(getLearnReqVo.getAnalyseId(),getLearnReqVo.getSchoolName(),0,lowScore);
        List<Form2> list = new ArrayList<>();
        Form2 form = new Form2();
        form.setName("联盟校");
        form.setStudentNumber(allStudents.size());
        form.setHighNumber(highNumber);
        form.setLowNumber(highNumber);
        list.add(form);
        Form2 form2 = new Form2();
        form2.setName(getLearnReqVo.getSchoolName());
        form2.setStudentNumber(students.size());
        form2.setHighNumber(highCount);
        form2.setLowNumber(lowCount);
        form2.setHighProp(highCount/new Double(allStudents.size()));
        form2.setLowProp(lowCount/new Double(allStudents.size()));
        list.add(form2);
        return list;
    }
}