ソースを参照

Merge remote-tracking branch 'origin/master'

周箭河 5 年 前
コミット
c58ddc84bd

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java

@@ -36,6 +36,15 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
     List<StudentAttendance> findByCourseId(@Param("courseId") Long courseId);
 
     /**
+     * @describe 获取课程的学生签到记录
+     * @author Joburgess
+     * @date 2020/2/20
+     * @param courseIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentAttendance>
+     */
+    List<StudentAttendance> findByCourseIds(@Param("courseIds") List<Long> courseIds);
+
+    /**
      * @describe 根据课程删除对应的点名记录
      * @author Joburgess
      * @date 2019/10/21
@@ -137,7 +146,7 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
      * @param courseScheduleIds:
      * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
      */
-    List<Map<Integer,Integer>> countStudentAttendancesByCourses(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+    List<Map<Integer,Integer>> countStudentAttendancesByCourses(@Param("courseScheduleIds") List courseScheduleIds);
 
     /**
      * @describe 根据课程获取最后的点名时间

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupCourseScheduleDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
@@ -75,6 +76,16 @@ public class MusicGroupCourseScheduleDto {
     @ApiModelProperty(value = "签到备注")
     private String remark;
 
+    private YesOrNoEnum isCallNames;
+
+    public YesOrNoEnum getIsCallNames() {
+        return isCallNames;
+    }
+
+    public void setIsCallNames(YesOrNoEnum isCallNames) {
+        this.isCallNames = isCallNames;
+    }
+
     public Date getSignInTime() {
         return signInTime;
     }

+ 16 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -80,6 +80,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
+    private StudentAttendanceDao studentAttendanceDao;
+    @Autowired
     private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
     @Autowired
     private StudentRegistrationService studentRegistrationService;
@@ -2034,25 +2036,28 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 //            Set<Integer> mixClassGroupIds = dataList.stream().map(e -> e.getMixClassGroupId()).collect(Collectors.toSet());
 //            String mixClassGroupIdsStr = StringUtils.join(mixClassGroupIds, ",");
             //所有课程编号的列表
-            List<Integer> couseScheduleIds = dataList.stream().map(MusicGroupCourseScheduleDto::getCourseScheduleId).distinct().collect(Collectors.toList());
+            List<Integer> courseScheduleIds = dataList.stream().map(MusicGroupCourseScheduleDto::getCourseScheduleId).distinct().collect(Collectors.toList());
             //获取合奏班名称
 //            Map<Integer, String> classGroupNames = MapUtil.convertMybatisMap(classGroupDao.findNameById(mixClassGroupIdsStr));
 
             //主教老师
             Map<Long, List<CourseScheduleTeacherSalary>> courseScheduleBishopTeacherMaps=new HashMap<>();
 
+            //是否点名
+            Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds));
             //助教老师
             Map<Long, List<CourseScheduleTeacherSalary>> courseScheduleTeachingTeacherMaps=new HashMap<>();
-            if(!CollectionUtils.isEmpty(couseScheduleIds)){
-                List<CourseScheduleTeacherSalary> bishopTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "BISHOP");
+            if(!CollectionUtils.isEmpty(courseScheduleIds)){
+                List<CourseScheduleTeacherSalary> bishopTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(courseScheduleIds, "BISHOP");
                 courseScheduleBishopTeacherMaps = bishopTeachers.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
 
                 //助教老师
-                List<CourseScheduleTeacherSalary> teachingTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(couseScheduleIds, "TEACHING");
+                List<CourseScheduleTeacherSalary> teachingTeachers = courseScheduleTeacherSalaryDao.findByCourseScheduleIdsAndTeacherRole(courseScheduleIds, "TEACHING");
                 courseScheduleTeachingTeacherMaps = teachingTeachers.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
             }
-
+            MusicGroupCourseScheduleDto scheduleDto = null;
             for(int i=0;i<dataList.size();i++){
+                scheduleDto = dataList.get(i);
 //                e.setMixClassGroupName(classGroupNames.get(e.getMixClassGroupId()));
                 List<CourseScheduleTeacherSalary> currentBishopTeacher = courseScheduleBishopTeacherMaps.get(dataList.get(i).getCourseScheduleId().longValue());
                 List<CourseScheduleTeacherSalary> TeachingTeachers = new ArrayList<>();
@@ -2070,6 +2075,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 TeachingTeachers.addAll(currentCourseTeachingTeachers);
                 dataList.get(i).setTeachingTeachers(TeachingTeachers);
                 dataList.get(i).setTeacherNum(TeachingTeachers.size());
+                Long studentNum = studentNumCourseMap.get(scheduleDto.getCourseScheduleId());
+                if (Objects.nonNull(studentNum)) {
+                    scheduleDto.setIsCallNames(studentNum > 0 ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+                } else {
+                    scheduleDto.setIsCallNames(YesOrNoEnum.NO);
+                }
                 /*if (CollectionUtils.isEmpty(currentCourseTeachingTeachers) && !CollectionUtils.isEmpty(currentBishopTeacher)) {
                     currentCourseTeachingTeachers = new ArrayList<>();
                     if (currentBishopTeacher != null) {

+ 2 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1650,7 +1650,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 newCourseSchedule.setSchoolId(oldCourseSchedule.getSchoolId());
             }
 			if (newCourseSchedule.getTeachMode() != oldCourseSchedule.getTeachMode() && newCourseSchedule.getTeachMode() == TeachModeEnum.ONLINE) {
-				newCourseSchedule.setSchoolId(-1);
+				newCourseSchedule.setSchoolId(null);
 			}
 			
             if (Objects.isNull(newCourseSchedule.getActualTeacherId())) {
@@ -2885,8 +2885,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             List<Long> courseScheduleIds = results.stream().map(CourseScheduleEndDto::getId).collect(Collectors.toList());
             List<TeacherAttendance> teacherAttendances = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
             Map<Long, List<TeacherAttendance>> courseTeacherAttendanceMap = teacherAttendances.stream().collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
-            List<Map<Integer, Integer>> studentNumCourseMaps = studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds);
-            Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentNumCourseMaps);
+            Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds));
             List<Group> groups=new ArrayList<>();
             groups.add(null);
             List<Integer> teacherIds=new ArrayList<>();

+ 19 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -64,6 +64,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
     @Autowired
     private VipGroupCategoryDao vipGroupCategoryDao;
+    @Autowired
+    private StudentAttendanceDao studentAttendanceDao;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
@@ -181,7 +183,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void teacherSalarySettlement() {
-
         int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_APPEAL_DAYS_RANGE).getParanValue());
 
         BigDecimal percent = new BigDecimal(10);
@@ -195,6 +196,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         Date now = new Date();
         //获取未结算课程编号列表
         List<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toList());
+
+        //所有课程的学生考勤记录
+        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseIds(courseScheduleIds);
+        Map<Long, List<StudentAttendance>> courseStudentAttendancesMap = studentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId));
+
         //获取未结算课程投诉记录
         List<CourseScheduleComplaints> courseScheduleComplaints = courseScheduleComplaintsDao.findByCourseScheduleIds(courseScheduleIds);
         //获取未结算课程学生缴费信息
@@ -215,6 +221,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
         //处理课酬信息
         someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
+
             //获取当前课程学生缴费记录
             List<CourseScheduleStudentPayment> studentPaymentsWithCourse = studentPaymentGroupByCourse.get(courseScheduleTeacherSalary.getCourseScheduleId());
 
@@ -222,6 +229,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 return;
             }
 
+            List<StudentAttendance> courseStudentAttendances = courseStudentAttendancesMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
+            int normalStudentNum=0;
+            for (StudentAttendance courseStudentAttendance : courseStudentAttendances) {
+                if(courseStudentAttendance.getStatus().equals(StudentAttendanceStatusEnum.NORMAL)){
+                    normalStudentNum+=1;
+                }
+            }
+            if(normalStudentNum==0){
+                return;
+            }
+
             //当前课程缴费学生数量
             BigDecimal courseStudentNum = new BigDecimal(studentPaymentsWithCourse.size());
 

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

@@ -4,12 +4,8 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.StudentManageService;
@@ -129,20 +125,8 @@ public class StudentManageServiceImpl implements StudentManageService {
                 e.setMusicGroupName(musicGroupNames.get(e.getUserId()));
                 e.setVipGroupName(vipGroupNames.get(e.getUserId()));
                 e.setSubjectName(subjectNames.get(e.getUserId()));
-                String musicStatus = musicGroupStatus.get(e.getUserId());
-                if(StringUtils.isNotEmpty(musicStatus)){
-                    String[] split = musicStatus.split(",");
-                    for (int i = 0;i < split.length;i++){
-                        e.setMusicGroupStatus(ClassGroupStudentStatusEnum.valueOf(split[i]).getMsg()+" ");
-                    }
-                }
-                String vipStatus = vipGroupStatus.get(e.getUserId());
-                if(StringUtils.isNotEmpty(vipStatus)){
-                    String[] split = vipStatus.split(",");
-                    for (int i = 0;i < split.length;i++){
-                        e.setVipGroupStatus(ClassGroupStudentStatusEnum.valueOf(split[i]).getMsg()+" ");
-                    }
-                }
+                e.setMusicGroupStatus(musicGroupStatus.get(e.getUserId()));
+                e.setVipGroupStatus(vipGroupStatus.get(e.getUserId()));
                 if(hasCourse == null){
                     Integer course = studentManageDao.getHasCourse(e.getUserId());
                     e.setHasCourse(course==null?YesOrNoEnum.NO:course==0?YesOrNoEnum.NO:YesOrNoEnum.YES);

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleRewardsMapper.xml

@@ -151,7 +151,7 @@
 		LEFT JOIN course_schedule cs ON vg.id_ = cs.music_group_id_
 		LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
 		LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
-		WHERE cs.group_type_ = 'VIP' AND csts.settlement_time_ IS NOT NULL
+		WHERE cs.group_type_ = 'VIP' AND csts.settlement_time_ IS NOT NULL AND cs.teach_mode_ = 'OFFLINE'
 		AND cs.class_date_ &gt;= #{firstDayOfMonth} AND cs.class_date_ &lt;= #{lastDayOfMonth}
 		AND FIND_IN_SET(cs.actual_teacher_id_,csrr.teacher_id_)
 		AND FIND_IN_SET(cg.subject_id_list_,csrr.subject_id_)

+ 4 - 1
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -401,7 +401,10 @@
 		GROUP BY sr.user_id_
 	</select>
 	<select id="queryUserMusicStatus" resultType="java.util.Map">
-		SELECT sr.user_id_ 'key',GROUP_CONCAT(sr.music_group_status_) 'value'
+		SELECT sr.user_id_ 'key',GROUP_CONCAT(CASE WHEN sr.music_group_status_ = 'NORMAL' THEN '在读'
+		WHEN sr.music_group_status_ = 'LEAVE' THEN '请假'
+		WHEN sr.music_group_status_ = 'QUIT' THEN '退班'
+		WHEN sr.music_group_status_ = 'QUIT_SCHOOL' THEN '休学' END) 'value'
 		FROM student_registration sr
 		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
 		WHERE mg.status_ = 'PROGRESS' AND sr.user_id_ IN

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -469,4 +469,10 @@
     <select id="findByCourseId" resultMap="StudentAttendance">
         SELECT * FROM student_attendance WHERE course_schedule_id_=#{courseId}
     </select>
+    <select id="findByCourseIds" resultMap="StudentAttendance">
+        SELECT * FROM student_attendance WHERE course_schedule_id_ IN
+        <foreach collection="courseIds" item="courseId" open="(" close=")" separator=",">
+            #{courseId}
+        </foreach>
+    </select>
 </mapper>

+ 1 - 0
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -706,6 +706,7 @@
         <result property="vipGroupName" column="vip_group_name_"/>
         <result property="vipGroupStatus" column="vip_group_status_"/>
         <result property="organName" column="organ_name_"/>
+        <result property="organId" column="organ_id_"/>
         <result property="subjectName" column="music_group_subject_"/>
         <result property="courseBalance" column="course_balance_"/>
     </resultMap>

+ 5 - 1
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -900,7 +900,11 @@
         GROUP BY cgsm.user_id_
     </select>
     <select id="queryUserVipStatus" resultType="java.util.Map">
-        SELECT cgsm.user_id_ 'key',GROUP_CONCAT(cgsm.status_)'value' FROM class_group_student_mapper cgsm
+        SELECT cgsm.user_id_ 'key',GROUP_CONCAT(CASE WHEN cgsm.status_ = 'NORMAL' THEN '在读'
+        WHEN cgsm.status_ = 'LEAVE' THEN '请假'
+        WHEN cgsm.status_ = 'QUIT' THEN '退班'
+        WHEN cgsm.status_ = 'QUIT_SCHOOL' THEN '休学' END) 'value'
+        FROM class_group_student_mapper cgsm
         LEFT JOIN vip_group vg ON cgsm.music_group_id_ = vg.id_
         WHERE vg.group_status_ IN (2,4) AND cgsm.user_id_ IN
         <foreach collection="userIds" item="userId" open="(" close=")" separator=",">

+ 1 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -52,6 +52,7 @@ public class StudentManageController extends BaseController {
     @PostMapping("export/studentHasCourse")
     @PreAuthorize("@pcs.hasPermissions('export/studentHasCourse')")
     public void studentHasCourse(HttpServletResponse response, StudentManageQueryInfo queryInfo) {
+        queryInfo.setRows(99999);
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");