ソースを参照

Merge remote-tracking branch 'origin/master'

周箭河 5 年 前
コミット
2efa06f14a

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java

@@ -90,6 +90,15 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
     int countByCourseSchedule(Long courseScheduleId);
 
     /**
+     * @describe 统计每节课上的学生数
+     * @author Joburgess
+     * @date 2019/12/26
+     * @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);
+
+    /**
      * @describe 根据课程获取最后的点名时间
      * @author Joburgess
      * @date 2019/10/24

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

@@ -44,6 +44,17 @@ public class CourseScheduleDto extends CourseSchedule {
 
     private String subjectName;
 
+    @ApiModelProperty(value = "是否是第一次进行学生点名")
+    private int studentAttendanceIsFirstTime;
+
+    public int getStudentAttendanceIsFirstTime() {
+        return studentAttendanceIsFirstTime;
+    }
+
+    public void setStudentAttendanceIsFirstTime(int studentAttendanceIsFirstTime) {
+        this.studentAttendanceIsFirstTime = studentAttendanceIsFirstTime;
+    }
+
     public String getSubjectName() {
         return subjectName;
     }

+ 0 - 22
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDto.java

@@ -83,28 +83,6 @@ public class TeacherAttendanceDto {
     @ApiModelProperty(value = "学生数量")
     private Integer studentNum;
 
-    @ApiModelProperty(value = "可更新学生签到信息限制时间")
-    private Integer enableStudentAttendanceTimeRange;
-
-    @ApiModelProperty(value = "是否是第一次进行学生点名")
-    private int studentAttendanceIsFirstTime;
-
-    public Integer getEnableStudentAttendanceTimeRange() {
-        return enableStudentAttendanceTimeRange;
-    }
-
-    public void setEnableStudentAttendanceTimeRange(Integer enableStudentAttendanceTimeRange) {
-        this.enableStudentAttendanceTimeRange = enableStudentAttendanceTimeRange;
-    }
-
-    public int getStudentAttendanceIsFirstTime() {
-        return studentAttendanceIsFirstTime;
-    }
-
-    public void setStudentAttendanceIsFirstTime(int studentAttendanceIsFirstTime) {
-        this.studentAttendanceIsFirstTime = studentAttendanceIsFirstTime;
-    }
-
     public Integer getStudentNum() {
         return studentNum;
     }

+ 15 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -113,16 +113,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(Objects.isNull(currentCourseDetail)){
 		    throw new BizException("课程不存在");
         }
-		SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
 		YesOrNoEnum yesOrNoEnum = enableOnlyNormalAttendance(currentCourseDetail.getStartClassTime(),
 				user.getId().longValue(),
 				true,
 				currentCourseDetail.getSchoolId().intValue());
 		currentCourseDetail.setOnlyNormal(yesOrNoEnum);
 		currentCourseDetail.setCurrentClassTimes(courseScheduleDao.countClassGroupOverCourseNum(currentCourseDetail.getClassId()));
-		currentCourseDetail.setEnableStudentAttendanceTimeRange(sysConfig.getParanValue(Integer.class));
-		int i = studentAttendanceDao.countByCourseSchedule(courseID);
-		currentCourseDetail.setStudentAttendanceIsFirstTime(i>0?0:1);
 
 		currentCourseDetail.setCurrentTime(new Date());
 		currentCourseDetail.setAdvanceSignInMinutes(Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES)));
@@ -376,7 +372,22 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			List<Map<Integer, String>> subjectNameCourseMaps = subjectDao.findSubjectNameCourseMaps(courseScheduleIds);
 			subjectNameCourseMap = MapUtil.convertMybatisMap(subjectNameCourseMaps);
 		}
+		List<Map<Integer, Integer>> studentNumCourseMaps=null;
+		if(!CollectionUtils.isEmpty(courseScheduleIds)){
+			studentNumCourseMaps = studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds);
+		}
+		Map<Integer, Integer> studentNumCourseMap=new HashMap<>();
+		if(Objects.nonNull(studentNumCourseMaps)){
+			studentNumCourseMap=MapUtil.convertIntegerMap(studentNumCourseMaps);
+		}
 		for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
+			Integer studentNum=studentNumCourseMap.get(courseScheduleDto.getId());
+			if(Objects.nonNull(studentNum)){
+				courseScheduleDto.setStudentAttendanceIsFirstTime(studentNum>0?0:1);
+			}else{
+				courseScheduleDto.setStudentAttendanceIsFirstTime(1);
+			}
+
 			if(now.before(courseScheduleDto.getStartClassTime())){
 				courseScheduleDto.setStatus(CourseStatusEnum.NOT_START);
 			}else if(now.after(courseScheduleDto.getEndClassTime())){

+ 12 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1458,6 +1458,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.isNull(studentPauseInfo)){
 			throw new BizException("未找到休学信息");
 		}
+
+		classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+		classGroupStudentMapperDao.update(classStudentMapperByUserIdAndClassGroupId);
+
+		if(Objects.nonNull(studentRecoverInfo.getTeacherId())){
+			vipGroup.setUserId(studentRecoverInfo.getTeacherId());
+		}
+
 		Map<String, Object> courseInfo = JSON.parseObject(studentPauseInfo.getCoursesJson(), Map.class);
 		List<BigDecimal> coursePrices = (List<BigDecimal>) courseInfo.get("coursePriceInfo");
 		coursePrices.sort(Comparator.naturalOrder());
@@ -1485,6 +1493,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 			TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(), vipGroup.getVipGroupCategoryId());
 
+			if(Objects.isNull(teacherDefaultVipGroupSalary)){
+				throw new BizException("请设置默认课酬");
+			}
+
 			//创建老师单节课课酬信息
 			courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroup,
 					newCourseSchedules,
@@ -1522,8 +1534,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPaymentList);
 		}
 		sysUserCashAccountService.appendCourseBalance(studentRecoverInfo.getUserId(), surplusCourseFee.negate());
-		classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-		classGroupStudentMapperDao.update(classStudentMapperByUserIdAndClassGroupId);
 		studentPauseInfo.setDelFlag(1);
 		studentPauseInfoDao.update(studentPauseInfo);
         vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);

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

@@ -361,4 +361,18 @@
     <select id="countStudentAttendenceNum" resultType="int">
         SELECT COUNT(*) FROM student_attendance sa WHERE course_schedule_id_ = #{courseScheduleId} AND status_='NORMAL'
     </select>
+    <select id="countStudentAttendancesByCourses" resultType="java.util.Map">
+        SELECT
+            course_schedule_id_ AS 'key',
+            COUNT( id_ ) AS 'value'
+        FROM
+            student_attendance
+        WHERE
+            course_schedule_id_ IN
+            <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+                #{courseScheduleId}
+            </foreach>
+        GROUP BY
+            course_schedule_id_
+    </select>
 </mapper>

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

@@ -298,7 +298,7 @@
             teacher t
             LEFT JOIN sys_user su ON t.id_ = su.id_
         WHERE
-            FIND_IN_SET(t.subject_id_, #{subjectIds})
+            FIND_IN_SET(#{subjectIds},t.subject_id_)
             AND INTE_ARRAY ( CONCAT(t.organ_id_,',',t.flow_organ_range_), #{organIds} )
     </select>
     <select id="findByTeacherId" resultMap="TeacherBasicDto">

+ 6 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -5,12 +5,14 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -37,6 +39,8 @@ public class TeacherCourseScheduleController extends BaseController {
     private StudentAttendanceService studentAttendanceService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysConfigService sysConfigService;
 
     @ApiOperation(value = "根据月份获取该月有课的日期")
     @GetMapping("/getCourseScheduleDateByMonth")
@@ -59,10 +63,12 @@ public class TeacherCourseScheduleController extends BaseController {
         if(null==user){
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
+        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
         List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherCourseSchedulesWithDate(user.getId(),date,type);
         Map<String,Object> result = new HashMap<>();
         result.put("rows",teacherCourseSchedulesWithDate);
         result.put("appealDaysRange",1);
+        result.put("enableStudentAttendanceTimeRange",sysConfig.getParanValue(Integer.class));
         return succeed(result);
     }