瀏覽代碼

Merge branch 'grade_feature' into test

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentInstrumentServiceImpl.java
周箭河 4 年之前
父節點
當前提交
09b636ffce

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.enums.GradeTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.common.enums.UserGenderEnum;
 import io.swagger.annotations.ApiModelProperty;
@@ -42,6 +43,9 @@ public class StudentManageListDto {
     @ApiModelProperty(value = "年级",required = false)
     private String currentGrade;
 
+    @ApiModelProperty(value = "年级(数字表示)",required = false)
+    private Integer currentGradeNum;
+
     @ApiModelProperty(value = "课程余额")
     private BigDecimal courseBalance;
 
@@ -91,6 +95,9 @@ public class StudentManageListDto {
     @ApiModelProperty(value = "加油包:0:默认不可用;1:可用;2:已使用;")
     private Integer comeOnPackage;
 
+    @ApiModelProperty(value = "0 - 6+3年制    1 - 5+4年制")
+    private GradeTypeEnum gradeType;
+
     public String getContractVersions() {
         return contractVersions;
     }
@@ -346,4 +353,20 @@ public class StudentManageListDto {
 	public void setIsSignedContract(boolean isSignedContract) {
 		this.isSignedContract = isSignedContract;
 	}
+
+    public Integer getCurrentGradeNum() {
+        return currentGradeNum;
+    }
+
+    public void setCurrentGradeNum(Integer currentGradeNum) {
+        this.currentGradeNum = currentGradeNum;
+    }
+
+    public GradeTypeEnum getGradeType() {
+        return gradeType;
+    }
+
+    public void setGradeType(GradeTypeEnum gradeType) {
+        this.gradeType = gradeType;
+    }
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import java.text.ParseException;
 
+import com.ym.mec.biz.dal.enums.GradeTypeEnum;
 import org.springframework.http.ResponseEntity;
 
 import com.ym.mec.biz.dal.entity.Student;
@@ -40,4 +41,12 @@ public interface StudentService extends BaseService<Integer, Student> {
      * 升级学生的年级
      */
     Integer updateGrade();
+
+    /**
+     * 根据学制和年级数字获取年级
+     * @param gradeType
+     * @param gradeNum
+     * @return
+     */
+    String getStudentGrade(GradeTypeEnum gradeType,Integer gradeNum);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -182,6 +182,8 @@ public class StudentManageServiceImpl implements StudentManageService {
 //                if(!subject.getId().equals(dto.getUserId())) continue;
 //                dto.setSubjectName(subject.getName());
 //            }
+            //年级
+            dto.setCurrentGrade(studentService.getStudentGrade(dto.getGradeType(),dto.getCurrentGradeNum()));
         }
 
         if (queryInfo.getIsExport()) {

+ 168 - 146
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -9,6 +9,9 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.enums.FivePlusGradeEnum;
+import com.ym.mec.biz.dal.enums.GradeTypeEnum;
+import com.ym.mec.biz.dal.enums.SixPlusGradeEnum;
 import com.ym.mec.common.page.QueryInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -32,150 +35,169 @@ import com.ym.mec.util.collection.MapUtil;
 @Service
 public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implements StudentService {
 
-	@Autowired
-	private StudentDao studentDao;
-	@Autowired
-	private CourseScheduleDao courseScheduleDao;
-
-	@Autowired
-	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
-
-	@Override
-	public BaseDAO<Integer, Student> getDAO() {
-		return studentDao;
-	}
-
-	@Override
-	public PageInfo findStudentVipGroupList(StudentQueryInfo queryInfo) {
-		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<String, Object>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List dataList = null;
-		int count = studentDao.countStudents(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = studentDao.findStudents(params);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public Long upSet(Student student) {
-		if(studentDao.get(student.getUserId()) == null){
-			return studentDao.insert(student);
-		}else {
-			student.setUpdateTime(new Date());
-			studentDao.update(student);
-			return student.getUserId().longValue();
-		}
-	}
-
-	@Override
-	public boolean updateOperatingTempTag() {
-		List<StudentCourseTimesDto> studentCourseTimesDtoList = courseScheduleStudentPaymentDao.queryStudentNotStartCourseTimesOfOnline();
-		Map<Integer,StudentCourseTimesDto> map = studentCourseTimesDtoList.stream().collect(Collectors.toMap(StudentCourseTimesDto::getUserId, s -> s));
-		//查询服务指标为0的用户
-		List<Student> unlabeledStudentList = studentDao.queryByOperatingTempTag(0);
-
-		List<Student> updateStudentList = new ArrayList<Student>();
-		StudentCourseTimesDto dto = null;
-		for(Student s : unlabeledStudentList){
-			if(s.getOperatingTag() == 1){
-				continue;
-			}
-			dto = map.get(s.getUserId());
-			if(dto != null){
-				if(dto.getTotalCourseTimes() > 0 && dto.getTotalCourseTimes() != dto.getFreePracticeCourseTimes()){
-					s.setOperatingTempTag(1);
-					s.setOperatingTag(1);
-					updateStudentList.add(s);
-				}
-			}
-		}
-
-		List<Student> labeledStudentList = studentDao.queryByOperatingTempTag(1);
-		for(Student s : labeledStudentList){
-			dto = map.get(s.getUserId());
-			if (dto == null || dto.getTotalCourseTimes() == dto.getFreePracticeCourseTimes()) {
-				s.setOperatingTempTag(0);
-				s.setOperatingTag(0);
-				updateStudentList.add(s);
-			}
-		}
-
-		if(updateStudentList.size() > 0){
-			studentDao.batchUpdate(updateStudentList);
-		}
-
-		return true;
-	}
-
-	@Override
-	public void initTeacherId() {
-		List<StudentTeacherCourseDto> allStudentCourseInfo = courseScheduleStudentPaymentDao.findAllStudentCourseInfo();
-		Map<Integer, List<StudentTeacherCourseDto>> studentCoursesMap = allStudentCourseInfo.stream().collect(Collectors.groupingBy(StudentTeacherCourseDto::getStudentId));
-		List<Student> students=new ArrayList<>();
-		for (Map.Entry<Integer, List<StudentTeacherCourseDto>> studentCoursesEntry : studentCoursesMap.entrySet()) {
-			Map<CourseSchedule.CourseScheduleType, List<StudentTeacherCourseDto>> courseTypeCourseMap = studentCoursesEntry.getValue().stream().collect(Collectors.groupingBy(StudentTeacherCourseDto::getCourseScheduleType));
-			List<StudentTeacherCourseDto> practiceCourses = courseTypeCourseMap.get(CourseSchedule.CourseScheduleType.PRACTICE);
-			if (!CollectionUtils.isEmpty(practiceCourses)) {
-				practiceCourses.sort(Comparator.comparing(StudentTeacherCourseDto::getClassesStartTime).reversed());
-				Student student=new Student(studentCoursesEntry.getKey());
-				student.setTeacherId(practiceCourses.get(0).getTeacherId());
-				students.add(student);
-				continue;
-			}
-
-			List<StudentTeacherCourseDto> vipCourses = courseTypeCourseMap.get(CourseSchedule.CourseScheduleType.VIP);
-			if (!CollectionUtils.isEmpty(vipCourses)) {
-				Student student=new Student(studentCoursesEntry.getKey());
-				vipCourses.sort(Comparator.comparing(StudentTeacherCourseDto::getClassesStartTime).reversed());
-				student.setTeacherId(vipCourses.get(0).getTeacherId());
-				students.add(student);
-				continue;
-			}
-
-			List<StudentTeacherCourseDto> singleCourses = courseTypeCourseMap.get(CourseSchedule.CourseScheduleType.SINGLE);
-			if (!CollectionUtils.isEmpty(singleCourses)) {
-				Student student=new Student(studentCoursesEntry.getKey());
-				singleCourses.sort(Comparator.comparing(StudentTeacherCourseDto::getClassesStartTime).reversed());
-				student.setTeacherId(singleCourses.get(0).getTeacherId());
-				students.add(student);
-				continue;
-			}
-
-			List<StudentTeacherCourseDto> mixCourses = courseTypeCourseMap.get(CourseSchedule.CourseScheduleType.MIX);
-			if (!CollectionUtils.isEmpty(mixCourses)) {
-				Student student=new Student(studentCoursesEntry.getKey());
-				mixCourses.sort(Comparator.comparing(StudentTeacherCourseDto::getClassesStartTime).reversed());
-				student.setTeacherId(mixCourses.get(0).getTeacherId());
-				students.add(student);
-				continue;
-			}
-		}
-		if(!CollectionUtils.isEmpty(students)){
-			studentDao.batchUpdate(students);
-		}
-		students=null;
-		studentCoursesMap=null;
-		allStudentCourseInfo=null;
-	}
-
-	@Override
-	public void batchUpdateAdviser(Integer teacherId,String studentIds) {
-		studentDao.batchUpdateAdviser(teacherId,studentIds);
-	}
-
-	@Override
-	public Integer updateGrade() {
-		return studentDao.updateGrade();
-	}
-
+    @Autowired
+    private StudentDao studentDao;
+    @Autowired
+    private CourseScheduleDao courseScheduleDao;
+
+    @Autowired
+    private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
+
+    @Override
+    public BaseDAO<Integer, Student> getDAO() {
+        return studentDao;
+    }
+
+    @Override
+    public PageInfo findStudentVipGroupList(StudentQueryInfo queryInfo) {
+        PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List dataList = null;
+        int count = studentDao.countStudents(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = studentDao.findStudents(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Long upSet(Student student) {
+        if (studentDao.get(student.getUserId()) == null) {
+            return studentDao.insert(student);
+        } else {
+            student.setUpdateTime(new Date());
+            studentDao.update(student);
+            return student.getUserId().longValue();
+        }
+    }
+
+    @Override
+    public boolean updateOperatingTempTag() {
+        List<StudentCourseTimesDto> studentCourseTimesDtoList = courseScheduleStudentPaymentDao.queryStudentNotStartCourseTimesOfOnline();
+        Map<Integer, StudentCourseTimesDto> map = studentCourseTimesDtoList.stream().collect(Collectors.toMap(StudentCourseTimesDto::getUserId, s -> s));
+        //查询服务指标为0的用户
+        List<Student> unlabeledStudentList = studentDao.queryByOperatingTempTag(0);
+
+        List<Student> updateStudentList = new ArrayList<Student>();
+        StudentCourseTimesDto dto = null;
+        for (Student s : unlabeledStudentList) {
+            if (s.getOperatingTag() == 1) {
+                continue;
+            }
+            dto = map.get(s.getUserId());
+            if (dto != null) {
+                if (dto.getTotalCourseTimes() > 0 && dto.getTotalCourseTimes() != dto.getFreePracticeCourseTimes()) {
+                    s.setOperatingTempTag(1);
+                    s.setOperatingTag(1);
+                    updateStudentList.add(s);
+                }
+            }
+        }
+
+        List<Student> labeledStudentList = studentDao.queryByOperatingTempTag(1);
+        for (Student s : labeledStudentList) {
+            dto = map.get(s.getUserId());
+            if (dto == null || dto.getTotalCourseTimes() == dto.getFreePracticeCourseTimes()) {
+                s.setOperatingTempTag(0);
+                s.setOperatingTag(0);
+                updateStudentList.add(s);
+            }
+        }
+
+        if (updateStudentList.size() > 0) {
+            studentDao.batchUpdate(updateStudentList);
+        }
+
+        return true;
+    }
+
+    @Override
+    public void initTeacherId() {
+        List<StudentTeacherCourseDto> allStudentCourseInfo = courseScheduleStudentPaymentDao.findAllStudentCourseInfo();
+        Map<Integer, List<StudentTeacherCourseDto>> studentCoursesMap = allStudentCourseInfo.stream().collect(Collectors.groupingBy(StudentTeacherCourseDto::getStudentId));
+        List<Student> students = new ArrayList<>();
+        for (Map.Entry<Integer, List<StudentTeacherCourseDto>> studentCoursesEntry : studentCoursesMap.entrySet()) {
+            Map<CourseSchedule.CourseScheduleType, List<StudentTeacherCourseDto>> courseTypeCourseMap = studentCoursesEntry.getValue().stream().collect(Collectors.groupingBy(StudentTeacherCourseDto::getCourseScheduleType));
+            List<StudentTeacherCourseDto> practiceCourses = courseTypeCourseMap.get(CourseSchedule.CourseScheduleType.PRACTICE);
+            if (!CollectionUtils.isEmpty(practiceCourses)) {
+                practiceCourses.sort(Comparator.comparing(StudentTeacherCourseDto::getClassesStartTime).reversed());
+                Student student = new Student(studentCoursesEntry.getKey());
+                student.setTeacherId(practiceCourses.get(0).getTeacherId());
+                students.add(student);
+                continue;
+            }
+
+            List<StudentTeacherCourseDto> vipCourses = courseTypeCourseMap.get(CourseSchedule.CourseScheduleType.VIP);
+            if (!CollectionUtils.isEmpty(vipCourses)) {
+                Student student = new Student(studentCoursesEntry.getKey());
+                vipCourses.sort(Comparator.comparing(StudentTeacherCourseDto::getClassesStartTime).reversed());
+                student.setTeacherId(vipCourses.get(0).getTeacherId());
+                students.add(student);
+                continue;
+            }
+
+            List<StudentTeacherCourseDto> singleCourses = courseTypeCourseMap.get(CourseSchedule.CourseScheduleType.SINGLE);
+            if (!CollectionUtils.isEmpty(singleCourses)) {
+                Student student = new Student(studentCoursesEntry.getKey());
+                singleCourses.sort(Comparator.comparing(StudentTeacherCourseDto::getClassesStartTime).reversed());
+                student.setTeacherId(singleCourses.get(0).getTeacherId());
+                students.add(student);
+                continue;
+            }
+
+            List<StudentTeacherCourseDto> mixCourses = courseTypeCourseMap.get(CourseSchedule.CourseScheduleType.MIX);
+            if (!CollectionUtils.isEmpty(mixCourses)) {
+                Student student = new Student(studentCoursesEntry.getKey());
+                mixCourses.sort(Comparator.comparing(StudentTeacherCourseDto::getClassesStartTime).reversed());
+                student.setTeacherId(mixCourses.get(0).getTeacherId());
+                students.add(student);
+                continue;
+            }
+        }
+        if (!CollectionUtils.isEmpty(students)) {
+            studentDao.batchUpdate(students);
+        }
+        students = null;
+        studentCoursesMap = null;
+        allStudentCourseInfo = null;
+    }
+
+    @Override
+    public void batchUpdateAdviser(Integer teacherId, String studentIds) {
+        studentDao.batchUpdateAdviser(teacherId, studentIds);
+    }
+
+    @Override
+    public Integer updateGrade() {
+        return studentDao.updateGrade();
+    }
+
+    @Override
+    public String getStudentGrade(GradeTypeEnum gradeType, Integer gradeNum) {
+        String grade = "";
+        if (GradeTypeEnum.FIVE_PLUS.equals(gradeType)) {
+            FivePlusGradeEnum[] fivePlusGradeEnums = FivePlusGradeEnum.values();
+            for (FivePlusGradeEnum fivePlusGradeEnum : fivePlusGradeEnums) {
+                if (!fivePlusGradeEnum.getCode().equals(gradeNum)) continue;
+                grade = fivePlusGradeEnum.getDesc();
+            }
+        }
+        if (GradeTypeEnum.SIX_PLUS.equals(gradeType)) {
+            SixPlusGradeEnum[] sixPlusGradeEnums = SixPlusGradeEnum.values();
+            for (SixPlusGradeEnum sixPlusGradeEnum : sixPlusGradeEnums) {
+                if (!sixPlusGradeEnum.getCode().equals(gradeNum)) continue;
+                grade = sixPlusGradeEnum.getDesc();
+            }
+        }
+        return grade;
+    }
 }

+ 5 - 2
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -44,6 +44,7 @@
         <result property="username" column="username_"/>
         <result property="birthdate" column="birthdate_"/>
         <result property="currentGrade" column="current_grade_"/>
+        <result property="currentGradeNum" column="current_grade_num_"/>
         <result property="currentClass" column="current_class_"/>
         <result property="isActive" column="isActive_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result property="hasCourse" column="hasCourse_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
@@ -66,6 +67,7 @@
         <result property="isSignedContract" column="is_signed_contract_"/>
         <result column="care_package_" property="carePackage"/>
         <result column="come_on_package_" property="comeOnPackage"/>
+        <result column="grade_type_" property="gradeType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <sql id="queryCondition">
@@ -152,9 +154,10 @@
     </update>
 
     <select id="findStudentsByOrganId" resultMap="studentManageListDto">
-        SELECT o.`name_` organ_name_,s.`user_id_` ,su.`username_` ,su.`phone_` parents_phone_,su.`real_name_` ,su.`gender_` , su.organ_id_,
+        SELECT o.`name_` organ_name_,o.grade_type_,s.`user_id_` ,su.`username_` ,su.`phone_` parents_phone_,su.`real_name_` ,su.`gender_` , su.organ_id_,
 		tu.`real_name_` teacher_name_,CASE s.service_tag_ WHEN 2 THEN 0 ELSE s.service_tag_ END service_tag_ ,s.`operating_tag_` , s.care_package_, s.come_on_package_, suca.`course_balance_` ,
-		sub.`name_` music_group_subject_ ,su.birthdate_,s.subject_id_list_,s.teacher_id_,case when su.password_ is null then false else true end isActive_,s.is_new_user_,case when sut.user_id_ is null then 0 else 1 end is_signed_contract_
+		sub.`name_` music_group_subject_ ,su.birthdate_,s.subject_id_list_,s.teacher_id_,s.current_grade_num_,s.current_class_,
+        case when su.password_ is null then false else true end isActive_,s.is_new_user_,case when sut.user_id_ is null then 0 else 1 end is_signed_contract_
 		FROM `student` s LEFT JOIN `sys_user` su on s.`user_id_` = su.`id_`
 		LEFT JOIN `organization` o on o.`id_` = su.`organ_id_`
 		LEFT JOIN `sys_user` tu on tu.`id_` = s.`teacher_id_`