Browse Source

Merge remote-tracking branch 'origin/master'

周箭河 5 years ago
parent
commit
f018f3306d
27 changed files with 389 additions and 150 deletions
  1. 9 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  2. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java
  3. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDefaultMusicGroupSalaryDao.java
  4. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDefaultVipGroupSalaryDao.java
  5. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupCourseScheduleDto.java
  6. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupCourseSchduleRecordDto.java
  7. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleTeacherSalary.java
  8. 0 14
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherDefaultMusicGroupSalary.java
  9. 5 4
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherDefaultMusicGroupSalaryService.java
  10. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherDefaultVipGroupSalaryService.java
  11. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  12. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  13. 105 15
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultMusicGroupSalaryServiceImpl.java
  14. 86 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultVipGroupSalaryServiceImpl.java
  15. 26 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  16. 3 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  17. 1 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  18. 8 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  19. 7 0
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  20. 2 4
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml
  21. 21 18
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  22. 4 0
      mec-biz/src/main/resources/config/mybatis/TeacherDefaultVipGroupSalaryMapper.xml
  23. 6 1
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  24. 0 43
      mec-web/src/main/java/com/ym/mec/web/controller/StudentAttendanceController.java
  25. 3 2
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultMusicGroupSalaryController.java
  26. 15 8
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultVipGroupSalaryController.java
  27. 21 2
      mec-web/src/main/java/com/ym/mec/web/controller/student/StudentAttendanceController.java

+ 9 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -1,16 +1,18 @@
 package com.ym.mec.biz.dal.dao;
 
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
 import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
 import com.ym.mec.biz.dal.dto.VipGroupSalaryDto;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.common.dal.BaseDAO;
-import org.apache.ibatis.annotations.Param;
-
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
 
 public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseScheduleTeacherSalary> {
 
@@ -253,4 +255,6 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	 */
 	List<CourseScheduleTeacherSalary> findByGroupWithNotStart(@Param("groupId")String groupId, @Param("groupType")String groupType);
 
+	List<CourseScheduleTeacherSalary> queryUserNoSettlementListByTypeAndStartClassDate(@Param("userId") Integer userId, @Param("typeList") String typeList,
+			@Param("startClassDate") Date startClassDate);
 }

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

@@ -45,6 +45,17 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
     int deleteByCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 
     /**
+     * @describe 删除学生签到记录
+     * @author Joburgess
+     * @date 2020/1/17
+     * @param courseScheduleIds:
+     * @param userID:
+     * @return int
+     */
+    int deleteByCourseAndUser(@Param("courseScheduleIds") List<Long> courseScheduleIds,
+                              @Param("userId") Integer userID);
+
+    /**
      * @describe 根据课程和学生删除考情记录
      * @author Joburgess
      * @date 2020/1/17

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDefaultMusicGroupSalaryDao.java

@@ -1,11 +1,11 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
-import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
-import com.ym.mec.common.dal.BaseDAO;
+import java.util.List;
+
 import org.apache.ibatis.annotations.Param;
 
-import java.util.List;
+import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
+import com.ym.mec.common.dal.BaseDAO;
 
 public interface TeacherDefaultMusicGroupSalaryDao extends BaseDAO<Long, TeacherDefaultMusicGroupSalary> {
 
@@ -17,7 +17,7 @@ public interface TeacherDefaultMusicGroupSalaryDao extends BaseDAO<Long, Teacher
      * @param classGroupType
      * @return
      */
-    List<TeacherDefaultMusicGroupSalary> getTeacherSalaryByUserIdAndType(@Param("userId") int userId, @Param("classGroupType") String classGroupType, @Param("settlementType") SalarySettlementTypeEnum settlementType);
+    List<TeacherDefaultMusicGroupSalary> getTeacherSalaryByUserIdAndType(@Param("userId") int userId, @Param("classGroupType") String classGroupType);
 
     /**
      * 根据教师编号删除

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDefaultVipGroupSalaryDao.java

@@ -27,4 +27,6 @@ public interface TeacherDefaultVipGroupSalaryDao extends BaseDAO<Long, TeacherDe
      * @param teacherDefaultVipGroupSalaries
      */
     void batchAdd(@Param("vipGroupSalaries") List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries);
+    
+    List<TeacherDefaultVipGroupSalary> queryByUserId(Integer userId);
 }

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

@@ -66,6 +66,17 @@ public class MusicGroupCourseScheduleDto {
     @ApiModelProperty(value = "老师人数",required = false)
     private Integer teacherNum;
 
+    @ApiModelProperty(value = "签到备注")
+    private String remark;
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
     public Date getSettlementTime() {
         return settlementTime;
     }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupCourseSchduleRecordDto.java

@@ -43,6 +43,26 @@ public class VipGroupCourseSchduleRecordDto {
 
     private Integer schooleId;
 
+    private Integer signInStatus;
+
+    private Integer signOutStatus;
+
+    public Integer getSignInStatus() {
+        return signInStatus;
+    }
+
+    public void setSignInStatus(Integer signInStatus) {
+        this.signInStatus = signInStatus;
+    }
+
+    public Integer getSignOutStatus() {
+        return signOutStatus;
+    }
+
+    public void setSignOutStatus(Integer signOutStatus) {
+        this.signOutStatus = signOutStatus;
+    }
+
     public String getStartClassTimeStr() {
         return startClassTimeStr;
     }

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

@@ -54,6 +54,8 @@ public class CourseScheduleTeacherSalary {
 	private java.util.Date settlementTime;
 	
 	private Integer classGroupId;
+	
+	private CourseSchedule courseSchedule = new CourseSchedule();
 
 	public CourseScheduleTeacherSalary() {
 	}
@@ -191,6 +193,14 @@ public class CourseScheduleTeacherSalary {
 		this.classGroupId = classGroupId;
 	}
 
+	public CourseSchedule getCourseSchedule() {
+		return courseSchedule;
+	}
+
+	public void setCourseSchedule(CourseSchedule courseSchedule) {
+		this.courseSchedule = courseSchedule;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 0 - 14
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherDefaultMusicGroupSalary.java

@@ -5,10 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import java.math.BigDecimal;
 import java.util.Date;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 
 /**
  * 对应数据库表(teacher_default_music_group_salary):
@@ -42,9 +39,6 @@ public class TeacherDefaultMusicGroupSalary {
 	@ApiModelProperty(value = "助教30分钟课酬",required = false)
 	private BigDecimal assistantTeacher30MinSalary;
 
-	@ApiModelProperty(value = "是否删除该条数据",required = false)
-	private YesOrNoEnum delFlag;
-	
 	/**  */
 	private java.util.Date createTime;
 	
@@ -107,14 +101,6 @@ public class TeacherDefaultMusicGroupSalary {
 		this.assistantTeacher30MinSalary = assistantTeacher30MinSalary;
 	}
 
-	public YesOrNoEnum getDelFlag() {
-		return delFlag;
-	}
-
-	public void setDelFlag(YesOrNoEnum delFlag) {
-		this.delFlag = delFlag;
-	}
-
 	public Date getCreateTime() {
 		return createTime;
 	}

+ 5 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherDefaultMusicGroupSalaryService.java

@@ -1,12 +1,12 @@
 package com.ym.mec.biz.service;
 
+import java.util.Date;
+import java.util.List;
+
 import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.common.service.BaseService;
 
-import java.util.List;
-
 public interface TeacherDefaultMusicGroupSalaryService extends BaseService<Long, TeacherDefaultMusicGroupSalary> {
 
 
@@ -21,6 +21,7 @@ public interface TeacherDefaultMusicGroupSalaryService extends BaseService<Long,
     /**
      * 批量新增修改教师薪酬设置
      * @param teacherDefaultMusicGroupSalaries
+     * @param startDate
      */
-    void batchUpset(List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries);
+    void batchUpset(List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries, Date startDate);
 }

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherDefaultVipGroupSalaryService.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.Date;
 import java.util.List;
 
 public interface TeacherDefaultVipGroupSalaryService extends BaseService<Long, TeacherDefaultVipGroupSalary> {
@@ -19,6 +20,7 @@ public interface TeacherDefaultVipGroupSalaryService extends BaseService<Long, T
     /**
      * 批量新增修改教师vip课酬设置
      * @param teacherDefaultVipGroupSalaries
+     * @param startDate
      */
-    void upSet(List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries);
+    void upSet(List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries, Date startDate);
 }

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

@@ -1882,7 +1882,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
         Date date = new Date();
         //课程已结束,更新“未签到”学生的状态未“旷课”
-		List<StudentAttendance> studentAttendanceList = courseScheduleDao.queryUnsignedStudentList();
+		/*List<StudentAttendance> studentAttendanceList = courseScheduleDao.queryUnsignedStudentList();
 		if (studentAttendanceList != null && studentAttendanceList.size() > 0) {
 			// 获取老师的考勤记录
 			Map<Long, TeacherAttendance> teacherAttendanceMap = teacherAttendanceDao
@@ -1911,7 +1911,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			if (studentAttendanceList != null && studentAttendanceList.size() > 0) {
 				studentAttendanceDao.addStudentAttendances(studentAttendanceList);
 			}
-		}
+		}*/
 
         //自动更新课程状态至“已结束”
         List<CourseSchedule> list = courseScheduleDao.queryFinishedWithNoUpdateStatus();

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

@@ -443,9 +443,9 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		teacherAttendance.setSignOutStatus(teacherAttendanceInfo.getSignOutStatus());
 
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		StringBuilder remak=new StringBuilder(DateUtil.dateToString(date,DateUtil.ISO_EXPANDED_DATE_FORMAT));
-		remak.append(",补签到,").append(sysUser.getRealName());
-		teacherAttendance.setRemark(remak.toString());
+		StringBuilder remark=new StringBuilder("补签到,");
+		remark.append(sysUser.getRealName());
+		teacherAttendance.setRemark(remark.toString());
 
 		if(Objects.isNull(teacherAttendance.getId())){
 			teacherAttendanceDao.insert(teacherAttendance);

+ 105 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultMusicGroupSalaryServiceImpl.java

@@ -1,40 +1,130 @@
 package com.ym.mec.biz.service.impl;
 
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 import com.ym.mec.biz.service.TeacherDefaultMusicGroupSalaryService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
 
 @Service
-public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<Long, TeacherDefaultMusicGroupSalary>  implements TeacherDefaultMusicGroupSalaryService {
-	
+public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<Long, TeacherDefaultMusicGroupSalary> implements
+		TeacherDefaultMusicGroupSalaryService {
+
 	@Autowired
 	private TeacherDefaultMusicGroupSalaryDao teacherDefaultMusicGroupSalaryDao;
 
+	@Autowired
+	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+
+	@Autowired
+	private MusicGroupDao musicGroupDao;
+
 	@Override
 	public BaseDAO<Long, TeacherDefaultMusicGroupSalary> getDAO() {
 		return teacherDefaultMusicGroupSalaryDao;
 	}
 
 	@Override
-    public List<TeacherDefaultMusicGroupSalary> getTeacherSalaryByUserIdAndType(int userId, String classGroupType, SalarySettlementTypeEnum settlementType) {
-        return teacherDefaultMusicGroupSalaryDao.getTeacherSalaryByUserIdAndType(userId, classGroupType,settlementType);
-    }
+	public List<TeacherDefaultMusicGroupSalary> getTeacherSalaryByUserIdAndType(int userId, String classGroupType, SalarySettlementTypeEnum settlementType) {
+		return teacherDefaultMusicGroupSalaryDao.getTeacherSalaryByUserIdAndType(userId, classGroupType);
+	}
 
 	@Override
-	public void batchUpset(List<TeacherDefaultMusicGroupSalary> salaries) {
-		if(salaries != null && salaries.size() > 0){
-			//删除当前教师所有的结算类型的数据
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public void batchUpset(List<TeacherDefaultMusicGroupSalary> salaries, Date startDate) {
+		if (salaries != null && salaries.size() > 0) {
 			TeacherDefaultMusicGroupSalary salary = salaries.get(0);
-			teacherDefaultMusicGroupSalaryDao.delByTeacherId(salary.getUserId());
-			//批量新增
-			teacherDefaultMusicGroupSalaryDao.batchAdd(salaries);
+			Integer userId = salary.getUserId();
+			// 获取老师默认乐团课课酬
+			List<TeacherDefaultMusicGroupSalary> origSalaryList = teacherDefaultMusicGroupSalaryDao.getTeacherSalaryByUserIdAndType(userId, null);
+
+			Map<CourseScheduleType, TeacherDefaultMusicGroupSalary> map = new HashMap<CourseScheduleType, TeacherDefaultMusicGroupSalary>();
+			if (origSalaryList != null && origSalaryList.size() > 0) {
+				for (TeacherDefaultMusicGroupSalary ms : origSalaryList) {
+					map.put(ms.getCourseScheduleType(), ms);
+				}
+			}
+
+			Map<CourseScheduleType, TeacherDefaultMusicGroupSalary> salaryMap = new HashMap<CourseScheduleType, TeacherDefaultMusicGroupSalary>();
+			for (TeacherDefaultMusicGroupSalary ms : salaries) {
+				// 修改了哪些课酬
+				TeacherDefaultMusicGroupSalary oldMS = map.get(ms.getCourseScheduleType());
+
+				if (oldMS.getAssistantTeacher30MinSalary().doubleValue() != ms.getAssistantTeacher30MinSalary().doubleValue()
+						|| oldMS.getMainTeacher30MinSalary().doubleValue() != ms.getMainTeacher30MinSalary().doubleValue()
+						|| oldMS.getAssistantTeacher90MinSalary().doubleValue() != ms.getAssistantTeacher90MinSalary().doubleValue()
+						|| oldMS.getMainTeacher90MinSalary().doubleValue() != ms.getMainTeacher90MinSalary().doubleValue()) {
+					salaryMap.put(ms.getCourseScheduleType(), ms);
+				}
+
+			}
+
+			if (salaryMap.size() > 0) {
+				String typeList = salaryMap.keySet().stream().map(e -> e.getCode()).collect(Collectors.joining(","));
+				// 查询所有需要修改的课酬
+				List<CourseScheduleTeacherSalary> updateTeacherSalaryList = courseScheduleTeacherSalaryDao.queryUserNoSettlementListByTypeAndStartClassDate(
+						userId, typeList, startDate);
+
+				if (updateTeacherSalaryList != null && updateTeacherSalaryList.size() > 0) {
+					Set<String> musicGroupIdList = updateTeacherSalaryList.stream().map(ts -> ts.getMusicGroupId()).collect(Collectors.toSet());
+					// 查询包含的乐团信息
+					Map<String, MusicGroup> musicGroupMap = musicGroupDao.queryListByIds(StringUtils.join(musicGroupIdList, ",")).stream()
+							.collect(Collectors.toMap(MusicGroup::getId, mg -> mg));
+
+					// 批量修改课程课酬
+					for (CourseScheduleTeacherSalary ts : updateTeacherSalaryList) {
+						MusicGroup musicGroup = musicGroupMap.get(ts.getMusicGroupId());
+						// 课酬结算标准
+						if (musicGroup != null) {
+							TeacherDefaultMusicGroupSalary tdms = salaryMap.get(ts.getCourseSchedule().getType());
+							if (tdms != null) {
+								if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.GRADIENT_SALARY) {// 3.0课酬
+
+									// 判断是助教、主教
+									if (ts.getTeacherRole() == TeachTypeEnum.BISHOP) {
+										ts.setExpectSalary(tdms.getMainTeacher90MinSalary());
+									} else {
+										ts.setExpectSalary(tdms.getAssistantTeacher90MinSalary());
+									}
+								} else if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.TEACHER_DEFAULT) {// 默认课酬
+									// 判断是助教、主教
+									if (ts.getTeacherRole() == TeachTypeEnum.BISHOP) {
+										ts.setExpectSalary(tdms.getMainTeacher30MinSalary());
+									} else {
+										ts.setExpectSalary(tdms.getAssistantTeacher30MinSalary());
+									}
+								}
+							}
+						}
+					}
+					courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalarys(updateTeacherSalaryList);
+				}
+
+				// 删除当前教师所有的结算类型的数据
+				teacherDefaultMusicGroupSalaryDao.delByTeacherId(userId);
+				// 批量新增
+				teacherDefaultMusicGroupSalaryDao.batchAdd(salaries);
+			}
 		}
 	}
 }

+ 86 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultVipGroupSalaryServiceImpl.java

@@ -1,17 +1,30 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
 import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
+import com.ym.mec.biz.dal.dao.VipGroupDao;
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
+import com.ym.mec.biz.dal.entity.VipGroup;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.biz.service.TeacherDefaultVipGroupSalaryService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Objects;
 
 @Service
 public class TeacherDefaultVipGroupSalaryServiceImpl extends BaseServiceImpl<Long, TeacherDefaultVipGroupSalary>  implements TeacherDefaultVipGroupSalaryService {
@@ -19,6 +32,12 @@ public class TeacherDefaultVipGroupSalaryServiceImpl extends BaseServiceImpl<Lon
 	@Autowired
 	private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
 
+	@Autowired
+	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+	
+	@Autowired
+	private VipGroupDao vipGroupDao;
+
 	@Override
 	public BaseDAO<Long, TeacherDefaultVipGroupSalary> getDAO() {
 		return teacherDefaultVipGroupSalaryDao;
@@ -36,12 +55,68 @@ public class TeacherDefaultVipGroupSalaryServiceImpl extends BaseServiceImpl<Lon
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void upSet(List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries) {
-		if(teacherDefaultVipGroupSalaries != null && teacherDefaultVipGroupSalaries.size() > 0){
-			//根据教师编号删除
+	public void upSet(List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries, Date startDate) {
+		if (teacherDefaultVipGroupSalaries != null && teacherDefaultVipGroupSalaries.size() > 0) {
+
 			TeacherDefaultVipGroupSalary salary = teacherDefaultVipGroupSalaries.get(0);
+			Integer userId = salary.getUserId();
+			// 获取老师默认VIP课课酬
+			List<TeacherDefaultVipGroupSalary> origSalaryList = teacherDefaultVipGroupSalaryDao.queryByUserId(userId);
+
+			Map<String, TeacherDefaultVipGroupSalary> map = new HashMap<String, TeacherDefaultVipGroupSalary>();
+			if (origSalaryList != null && origSalaryList.size() > 0) {
+				for (TeacherDefaultVipGroupSalary ms : origSalaryList) {
+					map.put(ms.getVipGroupCategoryId(), ms);
+				}
+			}
+
+			Map<String, TeacherDefaultVipGroupSalary> salaryMap = new HashMap<String, TeacherDefaultVipGroupSalary>();
+			for (TeacherDefaultVipGroupSalary ms : teacherDefaultVipGroupSalaries) {
+				// 修改了哪些课酬
+				TeacherDefaultVipGroupSalary oldMS = map.get(ms.getVipGroupCategoryId());
+
+				if (oldMS.getOfflineClassesSalary().doubleValue() != ms.getOfflineClassesSalary().doubleValue()
+						|| oldMS.getOnlineClassesSalary().doubleValue() != ms.getOnlineClassesSalary().doubleValue()) {
+					salaryMap.put(ms.getVipGroupCategoryId(), ms);
+				}
+
+			}
+
+			if (salaryMap.size() > 0) {
+				String typeList = CourseScheduleType.VIP.getCode();
+				// 查询所有需要修改的课酬
+				List<CourseScheduleTeacherSalary> updateTeacherSalaryList = courseScheduleTeacherSalaryDao.queryUserNoSettlementListByTypeAndStartClassDate(
+						userId, typeList, startDate);
+
+				if (updateTeacherSalaryList != null && updateTeacherSalaryList.size() > 0) {
+					Set<String> musicGroupIdList = updateTeacherSalaryList.stream().map(ts -> ts.getMusicGroupId()).collect(Collectors.toSet());
+					// 查询包含的VIP信息
+					Map<Long, VipGroup> vipGroupMap = vipGroupDao.queryByIds(StringUtils.join(musicGroupIdList, ",")).stream()
+							.collect(Collectors.toMap(VipGroup::getId, mg -> mg));
+
+					// 批量修改课程课酬
+					for (CourseScheduleTeacherSalary ts : updateTeacherSalaryList) {
+						VipGroup vipGroup = vipGroupMap.get(ts.getMusicGroupId());
+						// 课酬结算标准
+						if (vipGroup != null) {
+							TeacherDefaultVipGroupSalary tdms = salaryMap.get(vipGroup.getVipGroupCategoryId());
+							if (tdms != null) {
+								if (ts.getCourseSchedule().getTeachMode() == TeachModeEnum.ONLINE) {// 线上课
+
+									ts.setExpectSalary(tdms.getOnlineClassesSalary());
+								} else if (ts.getCourseSchedule().getTeachMode() == TeachModeEnum.OFFLINE) {// 线下课
+									ts.setExpectSalary(tdms.getOfflineClassesSalary());
+								}
+							}
+						}
+					}
+				}
+				courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalarys(updateTeacherSalaryList);
+			}
+
+			// 根据教师编号删除
 			teacherDefaultVipGroupSalaryDao.delByTeacherId(salary.getUserId());
-			//新增
+			// 新增
 			teacherDefaultVipGroupSalaryDao.batchAdd(teacherDefaultVipGroupSalaries);
 		}
 	}

+ 26 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -115,6 +115,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	private StudentPauseInfoDao studentPauseInfoDao;
 	@Autowired
 	private IdGeneratorService idGeneratorService;
+	@Autowired
+	private StudentAttendanceDao studentAttendanceDao;
 
 	private static final Logger LOGGER = LoggerFactory
 			.getLogger(VipGroup.class);
@@ -747,6 +749,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					.sorted(Comparator.comparing(CourseSchedule::getStartClassTime))
 					.collect(Collectors.toList());
 			vipGroupDetail.setCourseSchedules(collect);
+			vipGroupDetail.setTotalClassTimes(collect.size());
 		}
 
         vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
@@ -1519,6 +1522,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.QUIT_SCHOOL);
 		classGroupStudentMapperDao.update(classStudentMapperByUserIdAndClassGroupId);
 
+		if(!CollectionUtils.isEmpty(courseScheduleIds)){
+			studentAttendanceDao.deleteByCourseAndUser(courseScheduleIds,studentId);
+		}
+
 		List<Integer> studentPaymentIds = courseScheduleStudentPaymentDao.findNotStartCourseStudentPaymentIdsWithClassGroupAndStudent(classGroup.getId(), studentId);
 		if(!CollectionUtils.isEmpty(studentPaymentIds)){
 			courseScheduleStudentPaymentDao.batchDeleteWithID(studentPaymentIds);
@@ -1960,10 +1967,16 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     	if(vipGroup.getStatus()==VipGroupStatusEnum.CANCEL){
     		throw new BizException("该课程已结束或者已被停止,无法进行此操作");
 		}
+		ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(vipGroupId.toString(), "VIP");
+    	if(Objects.isNull(classGroup)){
+    		throw new BizException("班级不存在");
+		}
 		List<Long> courseScheduleIds = courseScheduleDao.findVipGroupNotStartCourseScheduleIds(vipGroupId.toString(),GroupType.VIP.getCode());
     	if(vipGroup.getStatus()==VipGroupStatusEnum.NOT_START){
 			vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
     		vipGroupDao.update(vipGroup);
+    		classGroup.setDelFlag(1);
+    		classGroupDao.update(classGroup);
     		if(courseScheduleIds != null && courseScheduleIds.size() > 0){
 				courseScheduleDao.batchDeleteCourseSchedules(courseScheduleIds);
 				courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
@@ -1979,6 +1992,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			}
 			vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
 			vipGroupDao.update(vipGroup);
+			classGroup.setDelFlag(1);
+			classGroupDao.update(classGroup);
 			stopVipPush(vipGroup.getId(),vipGroup.getName());
 			return;
 		}
@@ -2003,6 +2018,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
     	vipGroup.setStopReason(stopReason);
 		vipGroupDao.update(vipGroup);
+		classGroup.setDelFlag(1);
+		classGroupDao.update(classGroup);
 
 		courseScheduleDao.batchDeleteCourseSchedules(courseScheduleIds);
 		courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
@@ -2151,8 +2168,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("班级不存在");
 		}
 
-		if(!vipGroup.getStatus().equals(VipGroupStatusEnum.PROGRESS)
-			&&!vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING_END)){
+		if(!vipGroup.getStatus().equals(VipGroupStatusEnum.PROGRESS)){
 			throw new BizException("此状态的vip课程不支持加课");
 		}
 
@@ -2280,8 +2296,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.isNull(vipGroup)){
 			throw new BizException("未找到指定的vip课程");
 		}
-		if(vipGroup.getStatus().equals(VipGroupStatusEnum.NOT_START)){
-			throw new BizException("此课程还未开始");
+		if(!vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)
+				&&!vipGroup.getStatus().equals(VipGroupStatusEnum.NOT_START)){
+			throw new BizException("此课程不处于报名状态");
 		}
 		ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroupId, null);
 
@@ -2298,7 +2315,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		Date now=new Date();
         List<ImGroupMember> imGroupMemberList = new ArrayList<>();
 
-		if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)){
+		if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)||vipGroup.getStatus().equals(VipGroupStatusEnum.NOT_START)){
 			List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
 			int courseNum = courseScheduleDao.countVipGroupCourses(vipGroupId.intValue());
 			if(courseNum==0){
@@ -2535,6 +2552,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		//用户账户资金变动信息列表
 		List<SysUserCashAccountDetail> userCashAccountDetails = new ArrayList<>();
 		for (VipGroup noCreateSuccessVipGroup : noCreateSuccessVipGroups) {
+			int i = courseScheduleStudentPaymentDao.countStudentCourseNumWithGroup(GroupType.VIP, noCreateSuccessVipGroup.getId().toString());
+			if(i>0){
+				break;
+			}
 			noCreateSuccessVipGroup.setStatus(VipGroupStatusEnum.CANCEL);
 			List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(noCreateSuccessVipGroup.getId().toString(),
 					OrderTypeEnum.SMALL_CLASS_TO_BUY, DealStatusEnum.SUCCESS);
@@ -2597,11 +2618,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					} else if (vipGroup.getRegistrationStartTime().before(now) && vipGroup.getPaymentExpireDate().after(now)) {
 						vipGroup.setStatus(VipGroupStatusEnum.APPLYING);
 					}
-					if (vipGroup.getPaymentExpireDate().before(now) && vipGroup.getCourseStartDate().after(now)) {
-						vipGroup.setStatus(VipGroupStatusEnum.APPLYING_END);
-					} else if (vipGroup.getCourseStartDate().before(now) && vipGroup.getCoursesExpireDate().after(now)) {
-						vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
-					}
 					VipGroup vipGroup1 = new VipGroup();
 					vipGroup1.setId(vipGroup.getId());
 					vipGroup1.setStatus(vipGroup.getStatus());

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

@@ -605,6 +605,7 @@
         <result property="signInStatus" column="sign_in_status_"/>
         <result property="signOutStatus" column="sign_out_status_"/>
         <result property="settlementTime" column="settlement_time_"/>
+        <result property="remark" column="remark_"/>
     </resultMap>
     <select id="queryMusicGroupCourseSchedule" resultMap="MusicGroupCourseScheduleDto">
         SELECT cs.id_ course_schedule_id_,cs.class_date_,cs.start_class_time_,cs.end_class_time_,cs.class_group_id_,
@@ -628,7 +629,8 @@
         cs.type_ course_schedule_type_,cs.status_ course_schedule_status_,cg.name_ course_schedule_name_,
         IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_,
         IF(ta.sign_out_status_ IS NULL,3,ta.sign_out_status_) sign_out_status_,
-        csts.settlement_time_
+        csts.settlement_time_,
+        ta.remark_
         FROM course_schedule cs
         LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
         LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_

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

@@ -2066,7 +2066,7 @@
         SELECT cs.id_ FROM course_schedule cs
         LEFT JOIN vip_group vg ON cs.music_group_id_ = vg.id_
         LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
-        WHERE cs.group_type_ = 'VIP' AND vg.group_status_  = '2' AND cs.del_flag_ = 0 AND cg.del_flag_ = 0
+        WHERE cs.group_type_ = 'VIP' AND vg.group_status_ IN(2,4) AND cs.del_flag_ = 0 AND cg.del_flag_ = 0
         <if test="search != null and search != ''">
             AND (vg.id_ = #{search} OR vg.name_ LIKE CONCAT('%',#{search},'%')
             OR cs.id_ = #{search} OR cs.name_ LIKE CONCAT('%',#{search},'%')

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -21,6 +21,8 @@
 		<result column="actual_salary_" property="actualSalary" />
 		<result column="settlement_time_" property="settlementTime" />
 		<result column="class_group_id_" property="classGroupId" />
+		<result column="type_" property="courseSchedule.type" />
+		<result column="teach_mode_" property="courseSchedule.teachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -332,6 +334,7 @@
 			csts.update_time_ = now()
 		WHERE csts.user_id_ = #{userId} and csts.class_group_id_ = #{classGroupId} and csts.settlement_time_ is null and CONCAT(cs.class_date_,' ',cs.start_class_time_) &gt;= #{startDateTime}
 	</update>
+	
     <update id="batchUpdateTeacherExpectSalary">
 		UPDATE course_schedule_teacher_salary
 		SET expect_salary_ = 0,update_time_ = NOW()
@@ -416,4 +419,9 @@
     <delete id="deleteByMusicGroupId" parameterType="map" >
 		DELETE cssp FROM course_schedule_teacher_salary cssp left join course_schedule cs on cssp.course_schedule_id_ = cs.id_ WHERE cssp.music_group_id_=#{musicGroupId} AND cssp.group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and cs.status_ = 'NOT_START'
 	</delete>
+
+	<select id="queryUserNoSettlementListByTypeAndStartClassDate" resultMap="CourseScheduleTeacherSalary">
+		SELECT ts.*,cs.type_,cs.teach_mode_ FROM course_schedule_teacher_salary ts LEFT JOIN course_schedule cs ON ts.course_schedule_id_ = cs.id_
+		WHERE cs.type_ IN (#{typeList}) AND ts.user_id_ = #{userId} AND ts.settlement_time_ IS NULL AND cs.class_date_ &gt;= #{startClassDate}
+	</select>
 </mapper>

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

@@ -138,6 +138,13 @@
             #{courseScheduleId}
         </foreach>
     </delete>
+    <delete id="deleteByCourseAndUser">
+        DELETE FROM student_attendance WHERE course_schedule_id_ IN
+        <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+            #{courseScheduleId}
+        </foreach>
+        AND user_id_=#{userId}
+    </delete>
     <delete id="deleteStudentAttendancesByCourseAndUsers">
         DELETE FROM student_attendance WHERE course_schedule_id_ = #{courseScheduleId}
         AND user_id_ IN

+ 2 - 4
mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml

@@ -90,9 +90,7 @@
             <if test="courseScheduleId != null">
                 course_schedule_id_ = #{courseScheduleId},
             </if>
-            <if test="updateTime != null">
-                update_time_ = NOW(),
-            </if>
+            update_time_ = NOW(),
             <if test="score != null">
                 score_ = #{score},
             </if>
@@ -280,7 +278,7 @@
     <select id="findStudentCourseHomeworks" resultMap="StudentCourseHomeworkDtoMap">
         SELECT sch.attachments_,sch.is_replied_,sch.is_view_,sch.create_time_,su.username_,su.phone_,s.name_ subject_name_
         FROM course_schedule_student_payment cssp
-        LEFT JOIN student_course_homework sch ON sch.course_schedule_id_ = cssp.course_schedule_id_
+        LEFT JOIN student_course_homework sch ON sch.course_schedule_id_ = cssp.course_schedule_id_ AND cssp.user_id_ = sch.user_id_ AND sch.status_ = 1
         LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
         LEFT JOIN student_registration sr ON cssp.music_group_id_ = sr.music_group_id_ AND cssp.user_id_ = sr.user_id_
         LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_

+ 21 - 18
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -246,7 +246,7 @@
     <select id="countStudentCourses" resultType="int">
         SELECT count(*) FROM class_group cg
         LEFT JOIN class_group_student_mapper cgsm ON cg.id_=cgsm.class_group_id_
-        LEFT JOIN course_schedule cs ON cg.id_=cs.class_group_id_
+        LEFT JOIN course_schedule cs ON cg.id_ = cs.class_group_id_
         LEFT JOIN sys_user su ON cs.teacher_id_=su.id_
         <include refid="studentManageCourseQueryCondition"/>
     </select>
@@ -256,14 +256,17 @@
             (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             AND CONCAT(cs.class_date_," ",cs.start_class_time_) &lt; NOW()
             <if test="studentId!=null">
-                and sa.user_id_ = #{studentId}
+                and cssp.user_id_ = #{studentId}
             </if>
             <if test="classGroupType!=null">
                 and cg.type_ = #{classGroupType}
             </if>
-            <if test="attendanceStatus!=null">
+            <if test="attendanceStatus != null and attendanceStatus != 'TRUANT'">
                 and sa.status_ = #{attendanceStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
+            <if test="attendanceStatus != null and attendanceStatus == 'TRUANT'">
+                and (sa.status_ = #{attendanceStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} OR sa.status_ IS NULL)
+            </if>
             <if test="classGroupName!=null">
                 and cg.name_ like CONCAT("%",#{classGroupName},"%")
             </if>
@@ -280,14 +283,14 @@
             cg.type_ class_group_type_,
             CONCAT(cs.class_date_," ",cs.start_class_time_) course_date_,
             su.real_name_ teacher_name_,
-            sa.status_,
+            IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_,
             sa.current_class_times_,
             cg.total_class_times_
-        FROM
-            student_attendance sa
-            LEFT JOIN class_group cg ON sa.class_group_id_=cg.id_
-            LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
-            LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
+        FROM course_schedule_student_payment cssp
+            LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
+            LEFT JOIN class_group cg ON cssp.class_group_id_ = cg.id_
+            LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
+            LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
         <include refid="studentManageAttendanceQueryCondition"/>
         ORDER BY course_date_ DESC
         <include refid="global.limit"/>
@@ -295,12 +298,12 @@
 
     <select id="countStudentAttendances" resultType="int">
         SELECT
-        count(*)
-        FROM
-        student_attendance sa
-        LEFT JOIN class_group cg ON sa.class_group_id_=cg.id_
-        LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
-        LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
+        count(cssp.id_)
+        FROM course_schedule_student_payment cssp
+        LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
+        LEFT JOIN class_group cg ON cssp.class_group_id_ = cg.id_
+        LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
+        LEFT JOIN sys_user su ON sa.teacher_id_ = su.id_
         <include refid="studentManageAttendanceQueryCondition"/>
     </select>
 
@@ -332,7 +335,7 @@
     </resultMap>
     <select id="queryStudentPayment" resultMap="StudentPaymentDto">
         SELECT cs.class_date_,cs.start_class_time_,cs.type_ class_group_type_ ,cg.name_ class_group_name_,
-        cg.total_class_times_,sa.current_class_times_,sa.status_,cssp.expect_price_,cssp.actual_price_
+        cg.total_class_times_,sa.current_class_times_,IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_,cssp.expect_price_,cssp.actual_price_
         FROM course_schedule_student_payment cssp
         LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
         LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
@@ -673,9 +676,9 @@
         SELECT COUNT(id_) FROM student_attendance WHERE course_schedule_id_ = #{courseScheduleId} AND status_ = #{status}
     </select>
     <select id="countHomeworkNum" resultType="java.lang.Integer">
-        SELECT COUNT(id_) FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId}
+        SELECT COUNT(id_) FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId} AND status_ = 1
     </select>
     <select id="countRepliedNum" resultType="java.lang.Integer">
-        SELECT COUNT(id_) FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId} AND is_replied_ = 1
+        SELECT COUNT(id_) FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId} AND is_replied_ = 1 AND status_ = 1
     </select>
 </mapper>

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/TeacherDefaultVipGroupSalaryMapper.xml

@@ -99,4 +99,8 @@
 		select * from teacher_default_vip_group_salary
 		where user_id_=#{userId} and vip_group_category_id_=#{categoryId}
 	</select>
+	
+    <select id="queryByUserId" resultMap="TeacherDefaultVipGroupSalary">
+		SELECT * FROM teacher_default_vip_group_salary where user_id_ = #{userId} ORDER BY id_
+	</select>
 </mapper>

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

@@ -558,6 +558,8 @@
         <result column="student_num_" property="attendanceNum"/>
         <result column="school_name_" property="schoolName"/>
         <result column="schoole_id_" property="schooleId"/>
+        <result column="sign_in_status_" property="signInStatus"/>
+        <result column="sign_out_status_" property="signOutStatus"/>
     </resultMap>
 
     <sql id="teachingRecordQueryCondition">
@@ -584,11 +586,14 @@
             cs.teach_mode_,
             cs.student_num_,s.name_ school_name_,
             csts.actual_salary_ IS NOT NULL is_salary_,
-            cs.schoole_id_
+            cs.schoole_id_,
+            IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_,
+            IF(ta.sign_out_status_ IS NULL,3,ta.sign_out_status_) sign_out_status_
         FROM
             course_schedule cs
             LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
             left join school s on cs.schoole_id_ = s.id_
+            LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_ AND ta.teacher_id_ = cs.actual_teacher_id_
         <include refid="teachingRecordQueryCondition"/>
         ORDER BY start_class_time_
         <include refid="global.limit"/>

+ 0 - 43
mec-web/src/main/java/com/ym/mec/web/controller/StudentAttendanceController.java

@@ -1,43 +0,0 @@
-package com.ym.mec.web.controller;
-
-import com.ym.mec.biz.dal.dto.StudentAttendanceDto;
-import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.StudentAttendanceService;
-import com.ym.mec.common.controller.BaseController;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-/**
- * @Author Joburgess
- * @Date 2020/1/17
- */
-@RequestMapping("studentAttendance")
-@Api(tags = "学生签到服务")
-@RestController
-public class StudentAttendanceController extends BaseController {
-
-    @Autowired
-    private ClassGroupService classGroupService;
-    @Autowired
-    private StudentAttendanceService studentAttendanceService;
-
-    @ApiOperation(value = "查询课程学生列表")
-    @GetMapping("/findAttendanceStudentByCourseWithPage")
-    @PreAuthorize("@pcs.hasPermissions('teacherAttendance/findAttendanceStudentByCourseWithPage')")
-    public Object findAttendanceStudentByCourseWithPage(CourseScheduleQueryInfo queryInfo){
-        return succeed(classGroupService.findAttendanceStudentByCourseWithPage(queryInfo));
-    }
-
-    @ApiOperation(value = "更新学生签到记录")
-    @PostMapping("/updateStudentAttendances")
-    @PreAuthorize("@pcs.hasPermissions('teacherAttendance/updateStudentAttendances')")
-    public Object updateStudentAttendances(@RequestBody StudentAttendanceDto studentAttendanceInfo){
-        studentAttendanceService.updateStudentAttendances(studentAttendanceInfo);
-        return succeed();
-    }
-
-}

+ 3 - 2
mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultMusicGroupSalaryController.java

@@ -3,6 +3,7 @@ package com.ym.mec.web.controller;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,8 +30,8 @@ public class TeacherDefaultMusicGroupSalaryController extends BaseController {
     @ApiOperation(value = "批量新增、修改教师乐团课薪酬")
     @PostMapping("/batchUpset")
     @PreAuthorize("@pcs.hasPermissions('teacherDefaultMusicGroupSalary/batchUpset')")
-    public Object batchUpset(@RequestBody List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries) {
-        teacherDefaultMusicGroupSalaryService.batchUpset(teacherDefaultMusicGroupSalaries);
+    public Object batchUpset(@RequestBody List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries, Date startDate) {
+        teacherDefaultMusicGroupSalaryService.batchUpset(teacherDefaultMusicGroupSalaries, startDate);
         return succeed();
     }
 

+ 15 - 8
mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultVipGroupSalaryController.java

@@ -1,16 +1,23 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
-import com.ym.mec.biz.service.TeacherDefaultVipGroupSalaryService;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
+import java.util.Date;
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
-import java.util.List;
+import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
+import com.ym.mec.biz.service.TeacherDefaultVipGroupSalaryService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.QueryInfo;
 
 /**
  * @Author Joburgess
@@ -41,8 +48,8 @@ public class TeacherDefaultVipGroupSalaryController extends BaseController {
     @ApiOperation(value = "批量新增、修改教师vip课酬")
     @PostMapping("/upSet")
     @PreAuthorize("@pcs.hasPermissions('teacherDefaultVipGroupSalary/upSet')")
-    public Object setVipGroupSalary(@RequestBody List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries){
-        teacherDefaultVipGroupSalaryService.upSet(teacherDefaultVipGroupSalaries);
+    public Object setVipGroupSalary(@RequestBody List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries, Date startDate){
+        teacherDefaultVipGroupSalaryService.upSet(teacherDefaultVipGroupSalaries, startDate);
         return succeed();
     }
 

+ 21 - 2
mec-web/src/main/java/com/ym/mec/web/controller/student/StudentAttendanceOldController.java → mec-web/src/main/java/com/ym/mec/web/controller/student/StudentAttendanceController.java

@@ -1,7 +1,9 @@
 package com.ym.mec.web.controller.student;
 
 import com.ym.mec.biz.dal.dto.StudentAttendanceDto;
+import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
+import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.QueryInfo;
@@ -11,13 +13,15 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
-@RequestMapping("studentAttendanceOld")
+@RequestMapping("studentAttendance")
 @Api(tags = "学生考勤服务")
 @RestController
-public class StudentAttendanceOldController extends BaseController {
+public class StudentAttendanceController extends BaseController {
 
     @Autowired
     private StudentAttendanceService studentAttendanceService;
+    @Autowired
+    private ClassGroupService classGroupService;
 
     @ApiOperation(value = "点名完成")
     @PostMapping("/addStudentAttendances")
@@ -39,4 +43,19 @@ public class StudentAttendanceOldController extends BaseController {
         return succeed(studentAttendanceService.findStudentAttendance(queryInfo));
     }
 
+    @ApiOperation(value = "查询课程学生列表")
+    @GetMapping("/findAttendanceStudentByCourseWithPage")
+    @PreAuthorize("@pcs.hasPermissions('teacherAttendance/findAttendanceStudentByCourseWithPage')")
+    public Object findAttendanceStudentByCourseWithPage(CourseScheduleQueryInfo queryInfo){
+        return succeed(classGroupService.findAttendanceStudentByCourseWithPage(queryInfo));
+    }
+
+    @ApiOperation(value = "更新学生签到记录")
+    @PostMapping("/updateStudentAttendances")
+    @PreAuthorize("@pcs.hasPermissions('teacherAttendance/updateStudentAttendances')")
+    public Object updateStudentAttendances(@RequestBody StudentAttendanceDto studentAttendanceInfo){
+        studentAttendanceService.updateStudentAttendances(studentAttendanceInfo);
+        return succeed();
+    }
+
 }