Преглед изворни кода

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan пре 5 година
родитељ
комит
3438d96840

+ 12 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesReplyDao.java

@@ -97,6 +97,16 @@ public interface ExtracurricularExercisesReplyDao extends BaseDAO<Long, Extracur
     List<StudentServiceDetailDto> findStudentHomeworkDetailsInTimeZone(Map<String, Object> params);
     List<StudentServiceDetailDto> findStudentHomeworkDetailsInTimeZone(Map<String, Object> params);
     int countStudentHomeworkDetailsInTimeZone(Map<String, Object> params);
     int countStudentHomeworkDetailsInTimeZone(Map<String, Object> params);
 
 
-
-	
+    /**
+     * @describe 获取在指定时间段内指定学员的课外训练
+     * @author Joburgess
+     * @date 2020.05.27
+     * @param startDate:
+     * @param endDate:
+     * @param studentIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply>
+     */
+	List<ExtracurricularExercisesReply> getStudentExercisesWithTimeZone(@Param("startDate") String startDate,
+                                                                        @Param("endDate") String endDate,
+                                                                        @Param("studentIds") List<Integer> studentIds);
 }
 }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentCourseHomeworkDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
 import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
 import com.ym.mec.biz.dal.dto.StudentCourseHomeworkDto;
 import com.ym.mec.biz.dal.dto.StudentCourseHomeworkDto;
 import com.ym.mec.biz.dal.dto.StudentHomeworkRecordDto;
 import com.ym.mec.biz.dal.dto.StudentHomeworkRecordDto;
+import com.ym.mec.biz.dal.dto.StudentServeCourseHomeworkDto;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -108,4 +109,16 @@ public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHom
 
 
     int countStudentHomeworkRecord(Map<String, Object> params);
     int countStudentHomeworkRecord(Map<String, Object> params);
     List<StudentHomeworkRecordDto> findStudentHomeworkRecord(Map<String, Object> params);
     List<StudentHomeworkRecordDto> findStudentHomeworkRecord(Map<String, Object> params);
+
+    /**
+     * @describe 根据上课时间区间获取学员课堂作业
+     * @author Joburgess
+     * @date 2020.05.27
+     * @param startDate:
+     * @param endDate:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.StudentServeCourseHomeworkDto>
+     */
+    List<StudentServeCourseHomeworkDto> findStudentHomeworkWithCourseDateRange(@Param("startDate") String startDate,
+                                                                               @Param("endDate") String endDate,
+                                                                               @Param("studentIds") List<Integer> studentIds);
 }
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.Student4operating;
 import com.ym.mec.biz.dal.dto.Student4operating;
+import com.ym.mec.biz.dal.dto.StudentServeDto;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.GroupType;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -70,4 +71,13 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      */
      */
 
 
     List<Student> getServiceStudents();
     List<Student> getServiceStudents();
+
+    /**
+     * @describe 查询被服务学员信息
+     * @author Joburgess
+     * @date 2020.05.27
+     * @param monday:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.StudentServeDto>
+     */
+    List<StudentServeDto> getBeServiceStudents(@Param("monday") String monday);
 }
 }

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentServeCourseHomeworkDto.java

@@ -0,0 +1,32 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.StudentCourseHomework;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.05.27
+ */
+public class StudentServeCourseHomeworkDto extends StudentCourseHomework {
+
+    private Date courseStartTime;
+
+    private Date homeworkCreateTime;
+
+    public Date getHomeworkCreateTime() {
+        return homeworkCreateTime;
+    }
+
+    public void setHomeworkCreateTime(Date homeworkCreateTime) {
+        this.homeworkCreateTime = homeworkCreateTime;
+    }
+
+    public Date getCourseStartTime() {
+        return courseStartTime;
+    }
+
+    public void setCourseStartTime(Date courseStartTime) {
+        this.courseStartTime = courseStartTime;
+    }
+}

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

@@ -0,0 +1,22 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.Student;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.05.27
+ */
+public class StudentServeDto extends Student {
+
+    private Date courseStartTime;
+
+    public Date getCourseStartTime() {
+        return courseStartTime;
+    }
+
+    public void setCourseStartTime(Date courseStartTime) {
+        this.courseStartTime = courseStartTime;
+    }
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleTeacherSalary.java

@@ -176,7 +176,7 @@ public class CourseScheduleTeacherSalary {
 	public Integer getUserId(){
 	public Integer getUserId(){
 		return this.userId;
 		return this.userId;
 	}
 	}
-			
+
 	public void setExpectSalary(java.math.BigDecimal expectSalary){
 	public void setExpectSalary(java.math.BigDecimal expectSalary){
 		this.expectSalary = expectSalary;
 		this.expectSalary = expectSalary;
 	}
 	}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupStudentFee.java

@@ -81,7 +81,7 @@ public class MusicGroupStudentFee {
 
 
 	private String subjectName;
 	private String subjectName;
 
 
-	private Integer remainNetworkClassTimes;
+	private Integer remainNetworkClassTimes = 0;
 
 
 	public MusicGroupStudentFee(String musicGroupId, Integer userId, Integer subjectId,
 	public MusicGroupStudentFee(String musicGroupId, Integer userId, Integer subjectId,
 								BigDecimal courseFee, Date nextPaymentDate, BigDecimal temporaryCourseFee,PaymentStatus paymentStatus) {
 								BigDecimal courseFee, Date nextPaymentDate, BigDecimal temporaryCourseFee,PaymentStatus paymentStatus) {

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentExtracurricularExercisesSituation.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.entity;
 
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 
+import java.util.Date;
+
 /**
 /**
  * 对应数据库表(student_extracurricular_exercises_situation_):
  * 对应数据库表(student_extracurricular_exercises_situation_):
  */
  */
@@ -45,7 +47,17 @@ public class StudentExtracurricularExercisesSituation {
 	
 	
 	/**  */
 	/**  */
 	private java.util.Date updateTime;
 	private java.util.Date updateTime;
-	
+
+	private Date lastSubmitTime;
+
+	public Date getLastSubmitTime() {
+		return lastSubmitTime;
+	}
+
+	public void setLastSubmitTime(Date lastSubmitTime) {
+		this.lastSubmitTime = lastSubmitTime;
+	}
+
 	public void setId(Long id){
 	public void setId(Long id){
 		this.id = id;
 		this.id = id;
 	}
 	}

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

@@ -0,0 +1,18 @@
+package com.ym.mec.biz.service;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.05.27
+ */
+public interface StudentServeService {
+
+    /**
+     * @describe 学生服务信息统计
+     * @author Joburgess
+     * @date 2020/4/10
+     * @param :
+     * @return void
+     */
+    void exercisesSituationStatistics(String monday);
+
+}

+ 10 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -8,6 +8,7 @@ import com.ym.mec.auth.api.entity.SysUserRole;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.FeeType;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
@@ -939,10 +940,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
         }
 //        updateTeamTeacher(musicGroup, musicGroup);
 //        updateTeamTeacher(musicGroup, musicGroup);
         //生成学员费用表
         //生成学员费用表
-        List<MusicGroupStudentFee> musicGroupStudentFees = musicGroupStudentFeeDao.initMusicGroupStudentFee(musicGroupId);
-        if (musicGroupStudentFees != null && musicGroupStudentFees.size() > 0) {
-            musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees, null, "PAID_COMPLETED");
-        }
+		List<MusicGroupStudentFee> musicGroupStudentFees = musicGroupStudentFeeDao.initMusicGroupStudentFee(musicGroupId);
+		if (musicGroupStudentFees != null && musicGroupStudentFees.size() > 0) {
+			if (musicGroup.getFeeType() != FeeType.OFFLINE) {
+				for (MusicGroupStudentFee sf : musicGroupStudentFees) {
+					sf.setRemainNetworkClassTimes(sf.getRemainNetworkClassTimes() + 1);
+				}
+			}
+			musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees, null, "PAID_COMPLETED");
+		}
         musicGroupStudentFeeDao.batchUpdateCalenders(musicGroupId);
         musicGroupStudentFeeDao.batchUpdateCalenders(musicGroupId);
         //记录操作日志
         //记录操作日志
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "确认开团(筹备中 -> 进行中)", sysUser.getId(), ""));
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "确认开团(筹备中 -> 进行中)", sysUser.getId(), ""));

+ 183 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -0,0 +1,183 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.ExtracurricularExercisesReplyDao;
+import com.ym.mec.biz.dal.dao.StudentCourseHomeworkDao;
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dao.StudentExtracurricularExercisesSituationDao;
+import com.ym.mec.biz.dal.dto.StudentServeCourseHomeworkDto;
+import com.ym.mec.biz.dal.dto.StudentServeDto;
+import com.ym.mec.biz.dal.dto.StudentServiceHomeworkDto;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.service.StudentServeService;
+import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.05.27
+ */
+@Service
+public class StudentServeServiceImpl implements StudentServeService {
+
+    @Autowired
+    private StudentDao studentDao;
+    @Autowired
+    private StudentCourseHomeworkDao studentCourseHomeworkDao;
+    @Autowired
+    private ExtracurricularExercisesReplyDao extracurricularExercisesReplyDao;
+    @Autowired
+    private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
+
+    @Override
+    public void exercisesSituationStatistics(String monday) {
+        LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
+
+        if(nowDate.getDayOfWeek()== DayOfWeek.MONDAY){
+            int lastWeekTodayUpdateNum = studentExtracurricularExercisesSituationDao.findLastWeekTodayUpdateNum(nowDate.plusDays(-1).toString());
+            if(lastWeekTodayUpdateNum<=0){
+                nowDate = nowDate.plusDays(-1);
+            }
+        }
+
+        if(StringUtils.isNotBlank(monday)){
+            nowDate=LocalDate.parse(monday, DateUtil.dateFormatter);
+        }
+        LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
+        LocalDate sunDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.SUNDAY.getValue());
+        Date nextMonday = Date.from(sunDayDate.plusDays(1).atStartOfDay(DateUtil.zoneId).toInstant());
+
+        List<StudentServeDto> serviceStudents = studentDao.getBeServiceStudents(monDayDate.toString());
+        if(CollectionUtils.isEmpty(serviceStudents)){
+            return;
+        }
+
+        //本周不服务学员列表
+        Set<Integer> dontServeInCurrentWeekStudentIds=new HashSet<>();
+        //本周有课学员编号集合
+        Set<Integer> haveClassStudentIds=new HashSet<>();
+        //本周无课学员编号集合
+        Set<Integer> noClassStudentIds=new HashSet<>();
+        for (StudentServeDto serviceStudent : serviceStudents) {
+            if(Objects.nonNull(serviceStudent.getCourseStartTime())&&serviceStudent.getCourseStartTime().after(nextMonday)){
+                dontServeInCurrentWeekStudentIds.add(serviceStudent.getUserId());
+                continue;
+            }
+            if(Objects.nonNull(serviceStudent.getCourseStartTime())){
+                haveClassStudentIds.add(serviceStudent.getUserId());
+            }else{
+                noClassStudentIds.add(serviceStudent.getUserId());
+            }
+        }
+
+        Map<Integer, List<StudentServeCourseHomeworkDto>> studentHomeworkMap=new HashMap<>();
+        Map<Integer, List<ExtracurricularExercisesReply>> studentExercisesMap=new HashMap<>();
+
+        if (!CollectionUtils.isEmpty(haveClassStudentIds)){
+            List<StudentServeCourseHomeworkDto> studentHomeworks = studentCourseHomeworkDao.findStudentHomeworkWithCourseDateRange(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(haveClassStudentIds));
+            studentHomeworkMap = studentHomeworks.stream().filter(h -> DateUtil.daysBetween(h.getCourseStartTime(), h.getHomeworkCreateTime())<3).collect(Collectors.groupingBy(StudentServeCourseHomeworkDto::getUserId));
+        }
+
+        if(!CollectionUtils.isEmpty(noClassStudentIds)){
+            List<ExtracurricularExercisesReply> studentExercises = extracurricularExercisesReplyDao.getStudentExercisesWithTimeZone(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(noClassStudentIds));
+            studentExercisesMap = studentExercises.stream().collect(Collectors.groupingBy(ExtracurricularExercisesReply::getUserId));
+        }
+
+        List<StudentExtracurricularExercisesSituation> results=new ArrayList<>();
+        for (StudentServeDto serviceStudent : serviceStudents) {
+
+            if(dontServeInCurrentWeekStudentIds.contains(serviceStudent.getUserId())){
+                continue;
+            }
+
+            StudentExtracurricularExercisesSituation studentExtracurricularExercisesSituation=new StudentExtracurricularExercisesSituation();
+            studentExtracurricularExercisesSituation.setStudentId(serviceStudent.getUserId());
+            studentExtracurricularExercisesSituation.setTeacherId(serviceStudent.getTeacherId());
+            studentExtracurricularExercisesSituation.setExpectExercisesNum(1);
+            studentExtracurricularExercisesSituation.setWeekOfYear(nowDate.get(DateUtil.weekFields.weekOfYear()));
+            studentExtracurricularExercisesSituation.setMonday(DateUtil.stringToDate(monDayDate.toString(), "yyyy-MM-dd"));
+            studentExtracurricularExercisesSituation.setSunday(DateUtil.stringToDate(sunDayDate.toString(), "yyyy-MM-dd"));
+
+            if(haveClassStudentIds.contains(serviceStudent.getUserId())){
+                List<StudentServeCourseHomeworkDto> studentHomeworks = studentHomeworkMap.get(serviceStudent.getUserId());
+                if(CollectionUtils.isEmpty(studentHomeworks)){
+                    studentExtracurricularExercisesSituation.setActualExercisesNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesReplyNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesMessageNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(0);
+                    results.add(studentExtracurricularExercisesSituation);
+                    continue;
+                }else{
+                    studentExtracurricularExercisesSituation.setActualExercisesNum(1);
+                    long replyNum = studentHomeworks.stream().filter(e -> YesOrNoEnum.YES.equals(e.getStatus())).count();
+                    Date lastSubmitTime = studentHomeworks.stream().max(Comparator.comparing(StudentServeCourseHomeworkDto::getSubmitTime)).get().getSubmitTime();
+                    studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
+                    studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
+                    int exercisesMessageNum=0;
+                    int exercisesMessageTimelyNum=0;
+                    for (StudentServeCourseHomeworkDto studentHomework : studentHomeworks) {
+                        if(!new Integer(1).equals(studentHomework.getStatus())){
+                            continue;
+                        }
+                        if(!new Integer(1).equals(studentHomework.getIsReplied())){
+                            continue;
+                        }
+                        exercisesMessageNum+=1;
+                        if(new Integer(1).equals(studentHomework.getIsRepliedTimely())){
+                            exercisesMessageTimelyNum+=1;
+                        }
+                    }
+                    studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
+                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
+                    results.add(studentExtracurricularExercisesSituation);
+                }
+            }
+
+            if(noClassStudentIds.contains(serviceStudent.getUserId())){
+                List<ExtracurricularExercisesReply> studentExercises = studentExercisesMap.get(serviceStudent.getUserId());
+                if(CollectionUtils.isEmpty(studentExercises)){
+                    studentExtracurricularExercisesSituation.setActualExercisesNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesReplyNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesMessageNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(0);
+                    results.add(studentExtracurricularExercisesSituation);
+                    continue;
+                }
+                studentExtracurricularExercisesSituation.setActualExercisesNum(1);
+                long replyNum = studentExercises.stream().filter(e -> e.getStatus()==1).count();
+                Date lastSubmitTime = studentExercises.stream().max(Comparator.comparing(ExtracurricularExercisesReply::getSubmitTime)).get().getSubmitTime();
+                studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
+                studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
+                int exercisesMessageNum=0;
+                int exercisesMessageTimelyNum=0;
+                for (ExtracurricularExercisesReply studentHomework : studentExercises) {
+                    if(!new Integer(1).equals(studentHomework.getStatus())){
+                        continue;
+                    }
+                    if(!new Integer(1).equals(studentHomework.getIsReplied())){
+                        continue;
+                    }
+                    exercisesMessageNum+=1;
+                    if(new Integer(1).equals(studentHomework.getIsRepliedTimely())){
+                        exercisesMessageTimelyNum+=1;
+                    }
+                }
+                studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
+                studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
+                results.add(studentExtracurricularExercisesSituation);
+            }
+        }
+    }
+}

+ 13 - 0
mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml

@@ -475,5 +475,18 @@
 				sch.user_id_=#{studentId} AND DATE_FORMAT( sch.create_time_, '%Y-%m-%d' ) BETWEEN #{monday} AND #{sunday})
 				sch.user_id_=#{studentId} AND DATE_FORMAT( sch.create_time_, '%Y-%m-%d' ) BETWEEN #{monday} AND #{sunday})
 		) t
 		) t
 	</select>
 	</select>
+	<select id="getStudentExercisesWithTimeZone" resultMap="ExtracurricularExercisesReply">
+		SELECT
+			eer.id_,
+			eer.user_id_,
+			eer.status_,
+			eer.submit_time_,
+			eer.is_replied_,
+			eer.is_replied_timely_
+		FROM
+			extracurricular_exercises_reply eer
+		WHERE
+			DATE_FORMAT( eer.create_time_, '%Y-%m-%d' ) BETWEEN #{startDate} AND #{endDate}
+	</select>
 
 
 </mapper>
 </mapper>

+ 20 - 0
mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml

@@ -345,6 +345,26 @@
         </foreach>
         </foreach>
     </select>
     </select>
 
 
+    <resultMap id="StudentServeCourseHomeworkDto" type="com.ym.mec.biz.dal.dto.StudentServeCourseHomeworkDto" extends="StudentCourseHomework">
+        <result property="courseStartTime" column="course_start_time_"/>
+        <result property="homeworkCreateTime" column="homework_create_time_"/>
+    </resultMap>
+    <select id="findStudentHomeworkWithCourseDateRange" resultMap="StudentServeCourseHomeworkDto">
+        SELECT
+            sch.*,
+            DATE_FORMAT(sch.create_time_, '%Y-%m-%d') homework_create_time_,
+            cs.class_date_
+        FROM
+            student_course_homework sch
+            LEFT JOIN course_schedule cs ON sch.course_schedule_id_ = cs.id_
+        WHERE
+            cs.class_date_ BETWEEN #{startDate} AND #{endDate}
+            AND sch.user_id_ IN
+            <foreach collection="studentIds" item="studentId" separator="," open="(" close=")">
+                #{studentId}
+            </foreach>
+    </select>
+
     <delete id="delByCourseScheduleId">
     <delete id="delByCourseScheduleId">
 		DELETE FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId} 
 		DELETE FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId} 
 	</delete>
 	</delete>

+ 19 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -330,4 +330,23 @@
         LEFT JOIN student s ON s.user_id_=su.id_
         LEFT JOIN student s ON s.user_id_=su.id_
         WHERE s.service_tag_=1 AND FIND_IN_SET('STUDENT', su.user_type_)
         WHERE s.service_tag_=1 AND FIND_IN_SET('STUDENT', su.user_type_)
     </select>
     </select>
+
+    <resultMap id="StudentServeDto" type="com.ym.mec.biz.dal.dto.StudentServeDto" extends="Student">
+            <result property="courseStartTime" column="course_start_time_"/>
+    </resultMap>
+    <select id="getBeServiceStudents" resultMap="StudentServeDto">
+        SELECT
+            s.*,
+            MIN( CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) ) course_start_time_
+        FROM
+            student s
+            LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = s.user_id_
+            LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+            AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &gt; #{monday}
+            AND cs.group_type_ IN ( 'MUSIC', 'PRACTICE' )
+        WHERE
+            s.service_tag_ = 1
+        GROUP BY
+            s.user_id_
+    </select>
 </mapper>
 </mapper>