Переглянути джерело

Merge remote-tracking branch 'origin/master'

周箭河 4 роки тому
батько
коміт
8e1d9f2ca9

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java

@@ -109,4 +109,7 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
                                                                                @Param("teacherId") Integer teacherId,
                                                                                @Param("studentIds") List<Integer> studentIds);
 
+    List<StudentExtracurricularExercisesSituation> findServiceWithCourse(@Param("monday") String monday,
+                                                                         @Param("courseId") Long courseId);
+
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherCourseSalaryDetail4WebDto.java

@@ -63,6 +63,16 @@ public class TeacherCourseSalaryDetail4WebDto {
 
     private String deductionReason;
 
+    private Integer belongDaya;
+
+    public Integer getBelongDaya() {
+        return belongDaya;
+    }
+
+    public void setBelongDaya(Integer belongDaya) {
+        this.belongDaya = belongDaya;
+    }
+
     public String getDeductionReason() {
         return deductionReason;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentServeService.java

@@ -43,4 +43,14 @@ public interface StudentServeService {
 
     void updateExercisesSituation(Date date, List<Integer> studentIds, Integer teacherId);
 
+    /**
+     * @describe 获取与课程相关的应被服务的学员
+     * @author Joburgess
+     * @date 2020/12/29 0029
+     * @param date:
+     * @param courseId:
+     * @return java.util.Set<java.lang.Integer>
+     */
+    Set<Integer> getStudentWithCourse(Long courseId);
+
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java

@@ -577,7 +577,11 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
         if (!CollectionUtils.isEmpty(courseScheduleStudentPayments)) {
             Teacher teacher = teacherDao.get(courseSchedule.getActualTeacherId());
             String dateStr = DateUtil.dateToString(DateUtil.addDays(date, 3), "MM月dd日");
+            Set<Integer> serveStudentIds = studentServeService.getStudentWithCourse(courseSchedule.getId());
             for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
+                if(!serveStudentIds.contains(courseScheduleStudentPayment.getUserId())){
+                    continue;
+                }
                 StudentCourseHomework studentCourseHomework = new StudentCourseHomework();
                 if (Objects.isNull(existHomework)) {
                     studentCourseHomework.setCourseHomeworkId(courseHomework.getId());

+ 65 - 48
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -302,10 +302,10 @@ public class StudentServeServiceImpl implements StudentServeService {
         LocalDate sunDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.SUNDAY.getValue());
         Date nextMonday = Date.from(sunDayDate.plusDays(1).atStartOfDay(DateUtil.zoneId).toInstant());
 
-        int weekServiceNum = studentExtracurricularExercisesSituationDao.countWeekServiceNum(monDayDate.toString());
-        if(weekServiceNum>0&&CollectionUtils.isEmpty(studentIds)){
-            return;
-        }
+//        int weekServiceNum = studentExtracurricularExercisesSituationDao.countWeekServiceNum(monDayDate.toString());
+//        if(weekServiceNum>0&&CollectionUtils.isEmpty(studentIds)){
+//            return;
+//        }
 
         List<StudentServeCourseDto> studentFutureCourseInfo = studentDao.getStudentFutureCourseInfo(monDayDate.toString(), studentIds);
         Map<Integer, List<StudentServeCourseDto>> studentCourseMap = studentFutureCourseInfo.stream().collect(Collectors.groupingBy(StudentServeCourseDto::getStudentId));
@@ -413,7 +413,7 @@ public class StudentServeServiceImpl implements StudentServeService {
             }
         }
 
-        if(CollectionUtils.isEmpty(studentIds)){
+        if(!CollectionUtils.isEmpty(results)){
             studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString());
             BigDecimal currentPage1=BigDecimal.ONE,
                     pageSize1=new BigDecimal(10000),
@@ -422,55 +422,56 @@ public class StudentServeServiceImpl implements StudentServeService {
 
             while (currentPage1.compareTo(totalPage1)<=0){
                 List<StudentExtracurricularExercisesSituation> rows=results.stream().skip(pageSize1.multiply(currentPage1.subtract(BigDecimal.ONE)).longValue()).limit(pageSize1.longValue()).collect(Collectors.toList());
-                studentExtracurricularExercisesSituationDao.batchInsert(rows);
-                currentPage1=currentPage1.add(BigDecimal.ONE);
-            }
-            return;
-        }
-
-        List<StudentExtracurricularExercisesSituation> weekServiceWithStudents = studentExtracurricularExercisesSituationDao.findWeekServiceWithStudents(monDayDate.toString(), null, studentIds);
-        Map<String, StudentExtracurricularExercisesSituation> codeServeMap = weekServiceWithStudents.stream().collect(Collectors.toMap(StudentExtracurricularExercisesSituation::getStuAndTeaCode, s -> s, (s1, s2) -> s1));
+                List<Integer> updateStudentIds = rows.stream().map(StudentExtracurricularExercisesSituation::getStudentId).collect(Collectors.toList());
 
-        Set<String> newCodes = results.stream().map(StudentExtracurricularExercisesSituation::getStuAndTeaCode).collect(Collectors.toSet());
-        for (StudentExtracurricularExercisesSituation weekServiceWithStudent : weekServiceWithStudents) {
-            if(weekServiceWithStudent.getActualExercisesNum()>0||newCodes.contains(weekServiceWithStudent.getStuAndTeaCode())){
-                continue;
-            }
-            studentExtracurricularExercisesSituationDao.delete(weekServiceWithStudent.getId());
-        }
+                List<StudentExtracurricularExercisesSituation> weekServiceWithStudents = studentExtracurricularExercisesSituationDao.findWeekServiceWithStudents(monDayDate.toString(), null, updateStudentIds);
+                Map<String, StudentExtracurricularExercisesSituation> codeServeMap = weekServiceWithStudents.stream().collect(Collectors.toMap(StudentExtracurricularExercisesSituation::getStuAndTeaCode, s -> s, (s1, s2) -> s1));
 
-        List<StudentExtracurricularExercisesSituation> newService = new ArrayList<>();
-        List<StudentExtracurricularExercisesSituation> updateService = new ArrayList<>();
-        for (StudentExtracurricularExercisesSituation result : results) {
-            if(codeServeMap.containsKey(result.getStuAndTeaCode())){
-                StudentExtracurricularExercisesSituation s = codeServeMap.get(result.getStuAndTeaCode());
-                Set<Long> courseIds = new HashSet<>();
-                if(StringUtils.isNotBlank(s.getCourseIds())&&s.getActualExercisesNum()>0){
-                    courseIds = Arrays.stream(s.getCourseIds().split(",")).map(id->Long.valueOf(id)).collect(Collectors.toSet());
-                }
-                if(StringUtils.isNotBlank(result.getCourseIds())){
-                    courseIds.addAll(Arrays.stream(result.getCourseIds().split(",")).map(id->Long.valueOf(id)).collect(Collectors.toSet()));
-                }
-                s.setServeType(result.getServeType());
-                if(s.getServeType().equals("HOMEWORK")){
-                    s.setCourseIds(StringUtils.join(courseIds, ","));
-                }else{
-                    s.setCourseIds("");
+                Set<String> newCodes = rows.stream().map(StudentExtracurricularExercisesSituation::getStuAndTeaCode).collect(Collectors.toSet());
+                for (StudentExtracurricularExercisesSituation weekServiceWithStudent : weekServiceWithStudents) {
+                    if(weekServiceWithStudent.getActualExercisesNum()>0||newCodes.contains(weekServiceWithStudent.getStuAndTeaCode())){
+                        continue;
+                    }
+                    studentExtracurricularExercisesSituationDao.delete(weekServiceWithStudent.getId());
                 }
-                if(StringUtils.isBlank(s.getCourseIds())){
-                    s.setExpectExercisesNum(1);
-                }else{
-                    s.setExpectExercisesNum(courseIds.size());
+
+                List<StudentExtracurricularExercisesSituation> newService = new ArrayList<>();
+                List<StudentExtracurricularExercisesSituation> updateService = new ArrayList<>();
+                for (StudentExtracurricularExercisesSituation result : rows) {
+                    if(codeServeMap.containsKey(result.getStuAndTeaCode())){
+                        StudentExtracurricularExercisesSituation s = codeServeMap.get(result.getStuAndTeaCode());
+                        Set<Long> courseIds = new HashSet<>();
+                        if(StringUtils.isNotBlank(s.getCourseIds())&&s.getActualExercisesNum()>0){
+                            courseIds = Arrays.stream(s.getCourseIds().split(",")).map(id->Long.valueOf(id)).collect(Collectors.toSet());
+                        }
+                        if(StringUtils.isNotBlank(result.getCourseIds())){
+                            courseIds.addAll(Arrays.stream(result.getCourseIds().split(",")).map(id->Long.valueOf(id)).collect(Collectors.toSet()));
+                        }
+                        s.setServeType(result.getServeType());
+                        if(s.getServeType().equals("HOMEWORK")){
+                            s.setCourseIds(StringUtils.join(courseIds, ","));
+                        }else{
+                            s.setCourseIds("");
+                        }
+                        if(StringUtils.isBlank(s.getCourseIds())){
+                            s.setExpectExercisesNum(1);
+                        }else{
+                            s.setExpectExercisesNum(courseIds.size());
+                        }
+                        updateService.add(s);
+                    }else{
+                        newService.add(result);
+                    }
                 }
-                updateService.add(s);
-            }else{
-                newService.add(result);
+                if(!CollectionUtils.isEmpty(updateService))
+                    studentExtracurricularExercisesSituationDao.batchUpdate(updateService);
+                if(!CollectionUtils.isEmpty(newService))
+                    studentExtracurricularExercisesSituationDao.batchInsert(newService);
+
+                currentPage1=currentPage1.add(BigDecimal.ONE);
             }
+            return;
         }
-        if(!CollectionUtils.isEmpty(updateService))
-            studentExtracurricularExercisesSituationDao.batchUpdate(updateService);
-        if(!CollectionUtils.isEmpty(newService))
-            studentExtracurricularExercisesSituationDao.batchInsert(newService);
     }
 
     @Override
@@ -655,4 +656,20 @@ public class StudentServeServiceImpl implements StudentServeService {
         }
         return courseIds;
     }
+
+    @Override
+    public Set<Integer> getStudentWithCourse(Long courseId) {
+        CourseSchedule courseSchedule = courseScheduleDao.get(courseId);
+        if(Objects.isNull(courseSchedule)){
+            return new HashSet<>();
+        }
+        LocalDate nowDate = LocalDateTime.ofInstant(courseSchedule.getClassDate().toInstant(), DateUtil.zoneId).toLocalDate();
+
+        LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
+        List<StudentExtracurricularExercisesSituation> serviceWithCourse = studentExtracurricularExercisesSituationDao.findServiceWithCourse(monDayDate.toString(), courseId);
+        if(CollectionUtils.isEmpty(serviceWithCourse)){
+            return new HashSet<>();
+        }
+        return serviceWithCourse.stream().map(StudentExtracurricularExercisesSituation::getStudentId).collect(Collectors.toSet());
+    }
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -285,6 +285,14 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					if(CollectionUtils.isEmpty(studentCourseHomeworks)){
 						throw new BizException("此课程没有学生");
 					}
+					Set<Integer> serveStudentIds = studentServeService.getStudentWithCourse(teacherAttendance.getCourseScheduleId());
+					Iterator<StudentCourseHomework> iterator = studentCourseHomeworks.iterator();
+					while (iterator.hasNext()){
+						StudentCourseHomework next = iterator.next();
+						if(!serveStudentIds.contains(next.getUserId())){
+							iterator.remove();
+						}
+					}
 					studentCourseHomeworkDao.batchInsertStudentCourseHomeworkRecord(studentCourseHomeworks);
 					List<Integer> studentIds = studentCourseHomeworks.stream().map(StudentCourseHomework::getUserId).collect(Collectors.toList());
 					studentServeService.updateExercisesSituation(courseSchedule.getClassDate(), studentIds, teacherAttendance.getTeacherId());

+ 0 - 2
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -1840,8 +1840,6 @@
             cs.class_date_ BETWEEN #{startDate} AND #{endDate}
           AND ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
           AND csts.settlement_time_ IS NOT NULL
-        GROUP BY
-            csts.group_type_
     </select>
 
     <select id="findByClassGroup" resultMap="CourseSchedule">

+ 6 - 4
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -31,7 +31,7 @@
 		<result column="reduce_salary" property="reduceSalary" />
 		<result column="confirm_status_" property="confirmStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 		<result column="memo_" property="memo" />
-		<result column="is_belong_to_daya_" property="belongToDaya" />
+		<result column="belong_to_daya_" property="belongToDaya" />
 	</resultMap>
 	
 	<resultMap type="com.ym.mec.biz.dal.dto.TeacherVipSalaryDto" id="teacherVipSalaryDto" extends="CourseScheduleTeacherSalary">
@@ -122,7 +122,7 @@
 				deduction_reason_ = #{deductionReason},
 			</if>
 			<if test="belongToDaya != null">
-				is_belong_to_daya_ = #{belongToDaya},
+				belong_to_daya_ = #{belongToDaya},
 			</if>
 		</set> WHERE id_ = #{id} 
 	</update>
@@ -147,7 +147,7 @@
                     user_id_ = #{courseScheduleTeacherSalary.userId},
                 </if>
 				<if test="courseScheduleTeacherSalary.belongToDaya!=null">
-					is_belong_to_daya_ = #{courseScheduleTeacherSalary.belongToDaya},
+					belong_to_daya_ = #{courseScheduleTeacherSalary.belongToDaya},
 				</if>
                 update_time_ = NOW()
             </set>
@@ -803,6 +803,7 @@
 		<result property="confirmStatus" column="confirm_status_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 		<result property="memo" column="memo_" />
 		<result property="deductionReason" column="deduction_reason_" />
+		<result property="belongDaya" column="belong_to_daya_" />
 	</resultMap>
 
 	<sql id="queryCourseSalaryCondition">
@@ -873,7 +874,8 @@
 			csts.reduce_salary,
 			csts.confirm_status_,
 			csts.memo_,
-			csts.deduction_reason_
+			csts.deduction_reason_,
+		    csts.belong_to_daya_
 		FROM
 			course_schedule_teacher_salary csts
 			LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml

@@ -456,4 +456,9 @@
     <select id="findTeacherNoStartServices" resultMap="StudentExtracurricularExercisesSituation">
 		SELECT * FROM student_extracurricular_exercises_situation_ WHERE teacher_id_=#{teacherId} AND actual_exercises_num_&lt;=0 AND serve_type_='HOMEWORK';
 	</select>
+
+	<select id="findServiceWithCourse"
+			resultType="com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation">
+		SELECT * FROM student_extracurricular_exercises_situation_ WHERE monday_=#{monday} AND FIND_IN_SET(#{courseId}, course_ids_)
+	</select>
 </mapper>

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

@@ -93,6 +93,12 @@
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.TeacherAttendance">
         UPDATE teacher_attendance
         <set>
+            <if test="signInDeviceNo != null and signInDeviceNo != ''">
+                sign_in_device_no_ = #{signInDeviceNo},
+            </if>
+            <if test="signOutDeviceNo != null and signOutDeviceNo != ''">
+                sign_out_device_no_ = #{signOutDeviceNo},
+            </if>
             <if test="url != null and url != ''">
                 url_ = #{url},
             </if>