瀏覽代碼

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

yonge 4 年之前
父節點
當前提交
2b21ddabf7
共有 24 個文件被更改,包括 330 次插入39 次删除
  1. 8 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  2. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  3. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassCourseSchudeleDto.java
  5. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseScheduleQueryInfo.java
  6. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java
  9. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  10. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  11. 19 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  12. 70 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java
  13. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java
  14. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java
  15. 10 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  16. 9 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  17. 18 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  18. 17 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  19. 42 0
      mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
  20. 1 2
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  21. 14 0
      mec-student/src/main/java/com/ym/mec/student/controller/ContractsController.java
  22. 2 2
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java
  23. 36 1
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherAttendanceController.java
  24. 9 1
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

+ 8 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -300,7 +300,8 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @params [teacherId]
      * @describe 获取老师乐团班级
      */
-    List<TeacherClassGroupDto> findTeacherMusicClassGroup(@Param("teacherId") Long teacherId);
+    List<TeacherClassGroupDto> findTeacherMusicClassGroup(@Param("teacherId") Long teacherId,
+                                                          @Param("groupName") String groupName);
 
     /**
      * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassGroupDto>
@@ -309,7 +310,9 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @params [teacherId]
      * @describe 获取老师陪练课班级
      */
-    List<TeacherClassGroupDto> findTeacherPracticeClassGroup(@Param("teacherId") Long teacherId, @Param("status") String status);
+    List<TeacherClassGroupDto> findTeacherPracticeClassGroup(@Param("teacherId") Long teacherId,
+                                                             @Param("status") String status,
+                                                             @Param("groupName") String groupName);
 
     /**
      * 根据老师编号列表获取小课数量
@@ -326,7 +329,9 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @params [teacherId]
      * @describe 获取老师vip课班级
      */
-    List<TeacherClassGroupDto> findTeacherVipClassGroup(@Param("teacherId") Long teacherId, @Param("status") String status);
+    List<TeacherClassGroupDto> findTeacherVipClassGroup(@Param("teacherId") Long teacherId,
+                                                        @Param("status") String status,
+                                                        @Param("groupName") String groupName);
 
     /**
      * 根据合奏班编号列表,获取单技班名称列表

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

@@ -152,6 +152,9 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	List<CourseScheduleTeacherSalary> findByCourseScheduleIdsAndTeacherRole(@Param("courseScheduleIds") List<Integer> courseScheduleIds,
 																			@Param("teacherRole") String teacherRole);
 
+	List<CourseScheduleTeacherSalary> findByCourseIdsAndTeacherRole(@Param("courseScheduleIds") List<Long> courseScheduleIds,
+																			@Param("teacherRole") String teacherRole);
+
 	/**
 	 * @param courseScheduleIds: 课程编号列表
 	 * @return java.util.List<java.util.Map < java.lang.String, java.lang.String>>

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -215,4 +215,16 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
     List<IndexBaseMonthData> getFinanceBalanceData(@Param("dayStr") String dayStr);
 
     List<IndexBaseMonthData> getFinanceActualData(@Param("dayStr") String dayStr);
+
+    List<IndexBaseMonthData> getFinancePayDataWithTimely(@Param("startDate") String startDate,
+                                                         @Param("endDate") String endDate,
+                                                         @Param("organIds") List<Integer> organIds);
+
+    List<IndexBaseMonthData> getFinanceBalanceDataWithTimely(@Param("startDate") String startDate,
+                                                             @Param("endDate") String endDate,
+                                                             @Param("organIds") List<Integer> organIds);
+
+    List<IndexBaseMonthData> getFinanceActualDataWithTimely(@Param("startDate") String startDate,
+                                                            @Param("endDate") String endDate,
+                                                            @Param("organIds") List<Integer> organIds);
 }

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

@@ -67,6 +67,17 @@ public class TeacherClassCourseSchudeleDto {
 
     private String schoolName;
 
+    @ApiModelProperty(value = "助教名称")
+    private String teachingNames;
+
+    public String getTeachingNames() {
+        return teachingNames;
+    }
+
+    public void setTeachingNames(String teachingNames) {
+        this.teachingNames = teachingNames;
+    }
+
     public Integer getSchoolId() {
         return schoolId;
     }

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseScheduleQueryInfo.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.page;
 
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -32,12 +33,45 @@ public class CourseScheduleQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "课程类型")
     private String type;
 
+    @ApiModelProperty(value = "课程状态")
+    private CourseStatusEnum status;
+
     @ApiModelProperty(value = "课程编号")
     private Integer courseScheduleId;
 
     @ApiModelProperty(value = "是否获取班级所有课程(不限制老师)")
     private boolean findTotal = false;
 
+    @ApiModelProperty(value = "开始上课日期")
+    private String startClassDate;
+
+    @ApiModelProperty(value = "结束上课日期")
+    private String endClassDate;
+
+    public CourseStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(CourseStatusEnum status) {
+        this.status = status;
+    }
+
+    public String getStartClassDate() {
+        return startClassDate;
+    }
+
+    public void setStartClassDate(String startClassDate) {
+        this.startClassDate = startClassDate;
+    }
+
+    public String getEndClassDate() {
+        return endClassDate;
+    }
+
+    public void setEndClassDate(String endClassDate) {
+        this.endClassDate = endClassDate;
+    }
+
     public boolean getFindTotal() {
         return findTotal;
     }

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

@@ -234,7 +234,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassGroupDto>
      * @describe 获取老师所在班级列表
      */
-    List<TeacherClassGroupDto> findTeacherClassGroups(String type,String status);
+    List<TeacherClassGroupDto> findTeacherClassGroups(String type,String status, String groupName);
 
     /**
      * @Author: Joburgess

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

@@ -575,7 +575,7 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @param practiceGroupId
 	 * @param coursesExpireDate
 	 */
-	void updatePracticeGroupInDate(String practiceGroupId, Date courseStartDate, Date coursesExpireDate);
+	void updatePracticeGroupInDate(String practiceGroupId, Date courseStartDate, Date coursesExpireDate, Boolean onlyNormal);
 
 	/**
 	 * 获取当前班级列表的所有未开始的课程

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

@@ -20,7 +20,7 @@ public interface ImGroupService extends BaseService<Long, ImGroup> {
 	 * @param type 群类型
 	 * @return
 	 */
-	boolean create(Long id, Integer userId, String name, String introduce, String memo, String tags, String img, String type);
+	ImGroup create(Long id, Integer userId, String name, String introduce, String memo, String tags, String img, String type);
 
 	/**
 	 * 解散群组

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

@@ -1455,7 +1455,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<TeacherClassGroupDto> findTeacherClassGroups(String type,String status) {
+    public List<TeacherClassGroupDto> findTeacherClassGroups(String type,String status, String groupName) {
         SysUser user = sysUserFeignService.queryUserInfo();
         if (Objects.isNull(user)) {
             throw new BizException("请登录");
@@ -1468,13 +1468,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<TeacherClassGroupDto> teacherMusicClassGroup;
         switch (type) {
             case "VIP":
-                teacherMusicClassGroup = classGroupDao.findTeacherVipClassGroup(user.getId().longValue(),status);
+                teacherMusicClassGroup = classGroupDao.findTeacherVipClassGroup(user.getId().longValue(),status,groupName);
                 break;
             case "MUSIC_GROUP":
-                teacherMusicClassGroup = classGroupDao.findTeacherMusicClassGroup(user.getId().longValue());
+                teacherMusicClassGroup = classGroupDao.findTeacherMusicClassGroup(user.getId().longValue(),groupName);
                 break;
             case "PRACTICE":
-                teacherMusicClassGroup = classGroupDao.findTeacherPracticeClassGroup(user.getId().longValue(),status);
+                teacherMusicClassGroup = classGroupDao.findTeacherPracticeClassGroup(user.getId().longValue(),status, groupName);
                 break;
             default:
                 throw new BizException("课程类型错误");

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

@@ -1156,7 +1156,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		}
 
 		if(StringUtils.isBlank(user.getRealName())||StringUtils.isBlank(user.getIdCardNo())){
-			return BaseController.failed(HttpStatus.PARTIAL_CONTENT, "");
+			return BaseController.failed(HttpStatus.PARTIAL_CONTENT, user, "");
 		}
 
 		SysUserTsign sysUserTsign = sysUserTsignService.get(userId);

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

@@ -4152,7 +4152,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			List<Map<Long, Integer>> courseLeaveStudentNumMaps = studentAttendanceDao.countCourseLeaveStudentNumWithFourHoursAgo(allCourseScheduleIds, advanceLeaveHours);
 			Map<Long,Long> courseLeaveStudentNumMap = MapUtil.convertIntegerMap((courseLeaveStudentNumMaps));
 
-			dataList.forEach(e -> {
+			List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseIdsAndTeacherRole(allCourseScheduleIds, null);
+			Map<Long, Map<TeachTypeEnum, Set<String>>> cttnMap = new HashMap<>();
+			if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaries)){
+				cttnMap = courseScheduleTeacherSalaries.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId, Collectors.groupingBy(CourseScheduleTeacherSalary::getTeacherRole, Collectors.mapping(CourseScheduleTeacherSalary::getUserName, Collectors.toSet()))));
+			}
+
+			for (TeacherClassCourseSchudeleDto e : dataList) {
 				e.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(e.getClassGroupId().intValue(),new Date()));
 				e.setTotalClassTimes(courseScheduleDao.countCurrentCourseTime(e.getCourseScheduleId()));
 
@@ -4161,7 +4167,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				if(Objects.nonNull(leaveStudentNum)&&Objects.nonNull(normalStudentNum)&&leaveStudentNum.intValue()==normalStudentNum.intValue()){
 					e.setEnableAdjustInToday(1);
 				}
-			});
+
+				if(cttnMap.containsKey(e.getCourseScheduleId())&&cttnMap.get(e.getCourseScheduleId()).containsKey(TeachTypeEnum.TEACHING)){
+					e.setTeachingNames(StringUtils.join(cttnMap.get(e.getCourseScheduleId()).get(TeachTypeEnum.TEACHING), ","));
+				}
+			}
 		}
 		if (count == 0) {
 			dataList = new ArrayList<>();
@@ -4964,7 +4974,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void updatePracticeGroupInDate(String practiceGroupId, Date courseStartDate, Date coursesExpireDate) {
+	public void updatePracticeGroupInDate(String practiceGroupId, Date courseStartDate, Date coursesExpireDate, Boolean onlyNormal) {
 		SysUser user = sysUserFeignService.queryUserInfo();
 		if (null == user) {
 			throw new BizException("获取用户信息失败");
@@ -4976,6 +4986,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     	if(practiceGroup == null){
 			throw new BizException("课程组不存在");
 		}
+		if(onlyNormal&&!GroupStatusEnum.NORMAL.equals(practiceGroup.getGroupStatus())){
+			throw new BizException("非正常状态课程组不可编辑");
+		}
 		if(!GroupStatusEnum.NORMAL.equals(practiceGroup.getGroupStatus())&&!GroupStatusEnum.FINISH.equals(practiceGroup.getGroupStatus())){
 			throw new BizException("非正常状态课程组不可编辑");
 		}
@@ -5318,6 +5331,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 //			throw new BizException("课程合并仅支持同课程类型");
 //		}
 		for (CourseSchedule courseSchedule : allCourses) {
+			if(Objects.nonNull(courseSchedule.getIsLock())&&courseSchedule.getIsLock()==1){
+				throw new BizException("存在审核中的课程");
+			}
 			if(Objects.nonNull(courseSchedule.getNewCourseId())){
 				throw new BizException("存在已合并课程");
 			}

+ 70 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -4,6 +4,10 @@ import java.util.*;
 import java.util.Map.Entry;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.service.ImGroupService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -11,11 +15,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.ImGroupDao;
-import com.ym.mec.biz.dal.dao.ImGroupMemberDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.entity.ImGroup;
-import com.ym.mec.biz.dal.entity.ImGroupMember;
 import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -35,9 +34,30 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 	private ImGroupDao imGroupDao;
 
 	@Autowired
+	private ImGroupService imGroupService;
+
+	@Autowired
 	private TeacherDao teacherDao;
 
 	@Autowired
+	private ClassGroupDao classGroupDao;
+
+	@Autowired
+	private MusicGroupDao musicGroupDao;
+
+	@Autowired
+	private PracticeGroupDao practiceGroupDao;
+
+	@Autowired
+	private VipGroupDao vipGroupDao;
+
+	@Autowired
+	private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
+
+	@Autowired
+	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
+
+	@Autowired
 	private ImFeignService imFeignService;
 	
 	@Autowired
@@ -48,12 +68,55 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		return imGroupMemberDao;
 	}
 
+	public void joinGroup(Long imGroupId, Integer userId, String roleType, boolean isAdmin,Map<Integer,String> userRoleMap){
+		ClassGroup classGroup = classGroupDao.get(imGroupId.intValue());
+		String tags = classGroup.getName();
+		//相关用户加入群组
+		//获取班级关联的老师列表
+		Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(imGroupId.intValue(),null,null);
+		//获取班级关联的学员列表
+		Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(imGroupId.intValue(),null,null);
+		if(studentIds != null && studentIds.size() > 0){
+			for(Integer studentId : studentIds){
+				userRoleMap.put(studentId, null);
+			}
+		}
+		if(teacherIds != null && teacherIds.size() > 0){
+			for(Integer teacherId : teacherIds){
+				userRoleMap.put(teacherId, "指导老师");
+			}
+		}
+		if(classGroup.getGroupType() == GroupType.MUSIC){
+			MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
+			tags = musicGroup.getName();
+			userRoleMap.put(musicGroup.getEducationalTeacherId(), "乐团主管");
+			userRoleMap.put(musicGroup.getTeamTeacherId(), "运营主管");
+			userRoleMap.put(musicGroup.getDirectorUserId(), "乐队指导");
+		}else if(classGroup.getGroupType() == GroupType.PRACTICE){
+			PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
+			tags = practiceGroup.getName();
+			userRoleMap.put(practiceGroup.getUserId(), "指导老师");
+			userRoleMap.put(practiceGroup.getEducationalTeacherId(), "乐团主管");
+		}else if(classGroup.getGroupType() == GroupType.VIP){
+			VipGroup vipGroup = vipGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
+			userRoleMap.put(vipGroup.getUserId(), "指导老师");
+			userRoleMap.put(vipGroup.getEducationalTeacherId(), "乐团主管");
+			tags = vipGroup.getName();
+		}
+		imGroupService.create(imGroupId, null, classGroup.getName(), tags, tags, tags, null, classGroup.getGroupType().getCode());
+		if(userId != null){
+			join(imGroupId,userId,roleType,isAdmin);
+		}
+		join(imGroupId,userRoleMap);
+	}
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean join(Long imGroupId, Integer userId, String roleType, boolean isAdmin) {
 		ImGroup imGroup = imGroupDao.getLocked(imGroupId);
 		if (imGroup == null) {
-			throw new BizException("加入群组失败:群组[{}]不存在", imGroupId);
+			joinGroup(imGroupId,userId,roleType,isAdmin,new HashMap<>());
+			return true;
 		}
 		//检查用户是否已存在
 		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userId.toString());
@@ -97,7 +160,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 	public boolean join(Long imGroupId, Map<Integer, String> userRoleMap) {
 		ImGroup imGroup = imGroupDao.getLocked(imGroupId);
 		if (imGroup == null) {
-			throw new BizException("加入群组失败:群组[{}]不存在", imGroupId);
+			joinGroup(imGroupId,null,null,false,userRoleMap);
 		}
 		//检查用户是否已存在
 		List<Integer> existUserIdList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userRoleMap.keySet().stream().filter(Objects::nonNull).map(Objects::toString)

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

@@ -52,10 +52,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<Long, ImGroup> implement
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public boolean create(Long id, Integer userId, String name, String introduce, String memo, String tags, String img, String type) {
+	public ImGroup create(Long id, Integer userId, String name, String introduce, String memo, String tags, String img, String type) {
 		ImGroup imGroup = imGroupDao.get(id);
 		if (imGroup != null) {
-			return true;
+			return imGroup;
 		}
 
 		imGroup = new ImGroup();
@@ -91,7 +91,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<Long, ImGroup> implement
 			imFeignService.groupCreate(new GroupModel(groupId, null, name));
 		}
 
-		return true;
+		return imGroup;
 	}
 
 	@Override

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

@@ -103,6 +103,10 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		}
 
 		Map<IndexDataType, List<IndexBaseMonthData>> typeDateMap = indexBaseDatas.stream().filter(d->Objects.nonNull(d.getDataType())).collect(Collectors.groupingBy(IndexBaseMonthData::getDataType));
+		typeDateMap.put(IndexDataType.FINANCE_PAY,indexBaseMonthDataDao.getFinancePayDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
+		typeDateMap.put(IndexDataType.FINANCE_BALANCE_AMOUNT,indexBaseMonthDataDao.getFinanceBalanceDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
+		typeDateMap.put(IndexDataType.FINANCE_AMOUNT,indexBaseMonthDataDao.getFinanceActualDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
+
 
 		for (IndexDataType dataType : IndexDataType.values()) {
 			if(typeDateMap.containsKey(dataType)||(Objects.nonNull(dataTypes)&&!dataTypes.contains(dataType.getCode()))){

+ 10 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -202,15 +202,16 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
             }
         });
         //获取正常签到的学生信息
-        List<StudentAttendance> normal = studentAttendances.stream().filter(studentAttendance -> studentAttendance.getStatus() == StudentAttendanceStatusEnum.NORMAL).collect(Collectors.toList());
-        if (normal != null && normal.size() > 0) {
-            Map<Integer, String> receivers = new HashMap<>();
-            normal.forEach(e -> {
-                receivers.put(e.getUserId(), e.getUserId().toString());
-            });
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_NAMES_ACHIEVE,
-                    receivers, null, 0, "2", "STUDENT", DateUtil.format(new Date(), DateUtil.DATE_FORMAT_MIN));
-        }
+//        List<StudentAttendance> normal = studentAttendances.stream().filter(studentAttendance -> studentAttendance.getStatus() == StudentAttendanceStatusEnum.NORMAL).collect(Collectors.toList());
+//        if (normal != null && normal.size() > 0) {
+//            Map<Integer, String> receivers = new HashMap<>();
+//            normal.forEach(e -> {
+//                receivers.put(e.getUserId(), e.getUserId().toString());
+//            });
+//            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_NAMES_ACHIEVE,
+//                    receivers, null, 0, "2", "STUDENT", DateUtil.format(new Date(), DateUtil.DATE_FORMAT_MIN));
+//        }
+
         Map<StudentAttendanceStatusEnum, List<StudentAttendance>> studentAttendanceGroupByStatus = studentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getStatus));
         Integer studentNum = studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.NORMAL) == null ? 0 : studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.NORMAL).size();
         Integer leaveStudentNum = studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.LEAVE) == null ? 0 : studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.LEAVE).size();

+ 9 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -629,6 +629,9 @@
             AND cg.del_flag_ = 0
             AND cs.del_flag_ = 0
             AND mg.status_ = 'PROGRESS'
+            <if test="groupName!=null and groupName!=''">
+                AND mg.name_ LIKE CONCAT('%', #{groupName}, '%')
+            </if>
         GROUP BY cg.id_
     </select>
     <select id="findTeacherPracticeClassGroup" resultMap="TeacherClassGroupDto">
@@ -662,6 +665,9 @@
             <if test="status == 'FINISH'">
                 AND pg.group_status_ = 'FINISH'
             </if>
+            <if test="groupName!=null and groupName!=''">
+                AND pg.name_ LIKE CONCAT('%', #{groupName}, '%')
+            </if>
     </select>
     <select id="findTeacherVipClassGroup" resultMap="TeacherClassGroupDto">
         SELECT
@@ -697,6 +703,9 @@
             <if test="status == 'FINISH'">
                 AND vg.group_status_ = 4
             </if>
+            <if test="groupName!=null and groupName!=''">
+                AND vg.name_ LIKE CONCAT('%', #{groupName}, '%')
+            </if>
         GROUP BY
         vg.id_,cg.id_
     </select>

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

@@ -1484,6 +1484,15 @@
         <if test="userId != null">
             AND sa.teacher_id_=#{userId}
         </if>
+        <if test="status!=null">
+            AND cs.status_ = #{status}
+        </if>
+        <if test="startClassDate!=null">
+            AND cs.class_date_ &gt;= #{startClassDate}
+        </if>
+        <if test="endClassDate!=null">
+            AND cs.class_date_ &lt;= #{endClassDate}
+        </if>
         GROUP BY sa.course_schedule_id_
         ORDER BY cs.id_
         <include refid="global.limit"/>
@@ -1509,6 +1518,15 @@
         <if test="userId != null">
             AND sa.teacher_id_=#{userId}
         </if>
+        <if test="status!=null">
+            AND cs.status_ = #{status}
+        </if>
+        <if test="startClassDate!=null">
+            AND cs.class_date_ &gt;= #{startClassDate}
+        </if>
+        <if test="endClassDate!=null">
+            AND cs.class_date_ &lt;= #{endClassDate}
+        </if>
     </select>
     <select id="countClassCourseNumByMusicGroup" resultType="java.util.Map">
         SELECT cg.id_        as 'key',

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

@@ -340,6 +340,23 @@
 		</foreach>
 		AND csts.teacher_role_=#{teacherRole}
 	</select>
+
+	<select id="findByCourseIdsAndTeacherRole" resultMap="CourseScheduleTeacherSalary">
+		SELECT
+		csts.*,
+		su.real_name_ username_
+		FROM
+		course_schedule_teacher_salary csts
+		LEFT JOIN sys_user su ON csts.user_id_=su.id_
+		WHERE csts.course_schedule_id_ IN
+		<foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+			#{courseScheduleId}
+		</foreach>
+		<if test="teacherRole!=null and teacherRole!=''">
+			AND csts.teacher_role_=#{teacherRole}
+		</if>
+	</select>
+
 	<select id="findMusicGroupSettlementTypeByCourse" resultType="map">
 		SELECT
 			cs.id_ AS 'key',

+ 42 - 0
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -881,4 +881,46 @@
 		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') = #{dayStr}
 		GROUP BY spo.organ_id_
 	</select>
+
+	<select id="getFinancePayDataWithTimely"  resultMap="IndexBaseMonthData">
+		SELECT SUM(fe.amount_) total_num_,SUM(fe.amount_) activate_num_,SUM(fe.amount_) percent_,fe.organ_id_,DATE_FORMAT(fe.create_time_,'%Y-%m-%d') month_
+		FROM financial_expenditure fe
+		WHERE DATE_FORMAT(fe.create_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+		  AND del_flag_ = 0
+			<if test="organIds!=null and organIds.size()>0">
+				AND fe.organ_id_ IN
+				<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+					#{organId}
+				</foreach>
+			</if>
+		GROUP BY DATE_FORMAT(fe.create_time_,'%Y-%m-%d')
+	</select>
+	<select id="getFinanceBalanceDataWithTimely" resultMap="IndexBaseMonthData">
+		SELECT spo.organ_id_,SUM(spo.balance_payment_amount_) total_num_,
+			   SUM(spo.balance_payment_amount_) activate_num_,
+			   SUM(spo.balance_payment_amount_) percent_,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
+		FROM student_payment_order spo
+		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+		<if test="organIds!=null and organIds.size()>0">
+			AND spo.organ_id_ IN
+			<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+				#{organId}
+			</foreach>
+		</if>
+		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
+	</select>
+	<select id="getFinanceActualDataWithTimely" resultMap="IndexBaseMonthData">
+		SELECT spo.organ_id_,SUM(spo.actual_amount_) total_num_,
+			   SUM(spo.actual_amount_) activate_num_,
+			   SUM(spo.actual_amount_) percent_,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
+		FROM student_payment_order spo
+		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+		<if test="organIds!=null and organIds.size()>0">
+			AND spo.organ_id_ IN
+			<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+				#{organId}
+			</foreach>
+		</if>
+		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
+	</select>
 </mapper>

+ 1 - 2
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -437,8 +437,6 @@ public class RoomServiceImpl implements RoomService {
     @Override
     public void leaveRoomSuccess(String roomId,String userId,String deviceNum) throws Exception {
         log.info("leaveRoomSuccess: roomId={}, userId={},deviceNum={}", roomId,userId,deviceNum);
-//        RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
-
         Integer firstCourseId = Integer.parseInt(roomId.substring(1));
         RoleEnum roleEnum;
         int parseInt = Integer.parseInt(userId);
@@ -453,6 +451,7 @@ public class RoomServiceImpl implements RoomService {
 
         String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
         Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey, roomId, 2, TimeUnit.SECONDS);
+        log.info("leaveRoomSuccess: roomId={}, userId={},deviceNum={},aBoolean={}", roomId,userId,deviceNum,aBoolean);
         if(!aBoolean){
             if (StringUtils.isNotEmpty(deviceNum)){
                 //如果设备号不为空,更新设备号

+ 14 - 0
mec-student/src/main/java/com/ym/mec/student/controller/ContractsController.java

@@ -103,12 +103,26 @@ public class ContractsController extends BaseController {
 	@ApiOperation(value = "生成学生课程协议")
 	@GetMapping("/transferProduceContractOnlyWithCourseList")
 	public HttpResponseResult transferProduceContractOnlyWithCourseList(Integer userId){
+		if(Objects.isNull(userId)){
+			SysUser sysUser = sysUserFeignService.queryUserInfo();
+			if (sysUser == null) {
+				return failed("获取用户信息失败");
+			}
+			userId = sysUser.getId();
+		}
 		return contractService.transferProduceContractOnlyWithCourseList(userId);
 	}
 
 	@ApiOperation(value = "查询学生最新协议")
 	@GetMapping("/getLatest")
 	public HttpResponseResult<List<SysUserContracts>> getLatest(Integer userId) {
+		if(Objects.isNull(userId)){
+			SysUser sysUser = sysUserFeignService.queryUserInfo();
+			if (sysUser == null) {
+				return failed("获取用户信息失败");
+			}
+			userId = sysUser.getId();
+		}
 		List<SysUserContracts> sysUserContracts = sysUserContractsService.getUserAllContracts(userId);
 
 		if(CollectionUtils.isEmpty(sysUserContracts)){

+ 2 - 2
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java

@@ -45,8 +45,8 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "教师关联班级获取")
     @GetMapping("/findTeacherClassGroups")
-    public Object findTeacherClassGroups(String type,String status){
-        return succeed(classGroupService.findTeacherClassGroups(type,status));
+    public Object findTeacherClassGroups(String type,String status, String groupName){
+        return succeed(classGroupService.findTeacherClassGroups(type,status,groupName));
     }
 
     @ApiOperation(value = "获取教师班级详情界面头部信息")

+ 36 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherAttendanceController.java

@@ -2,22 +2,32 @@ package com.ym.mec.teacher.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
 import com.ym.mec.biz.dal.dto.StudentAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherSignOutDto;
+import com.ym.mec.biz.dal.entity.StudentAttendance;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.page.TeacherAttendanceQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
+import com.ym.mec.util.date.DateUtil;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @RequestMapping("teacherAttendance")
 @Api(tags = "教师签到服务")
@@ -31,9 +41,14 @@ public class TeacherAttendanceController extends BaseController {
     private StudentAttendanceService studentAttendanceService;
 
     @Autowired
+    private StudentAttendanceDao studentAttendanceDao;
+
+    @Autowired
     private ClassGroupService classGroupService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysMessageService sysMessageService;
 
     @ApiOperation(value = "新增教师签到")
     @PostMapping("/add")
@@ -61,6 +76,26 @@ public class TeacherAttendanceController extends BaseController {
         return succeed(studentAttendanceService.addStudentAttendances(studentAttendanceInfo));
     }
 
+    @ApiOperation(value = "学员到课提醒")
+    @PostMapping("/studentAttendanceNormalRemind")
+    public HttpResponseResult studentAttendanceNormalRemind(Long courseId){
+        //获取正常签到的学生信息
+        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(courseId);
+        if(CollectionUtils.isEmpty(studentAttendances)){
+            return succeed();
+        }
+        List<StudentAttendance> normal = studentAttendances.stream().filter(studentAttendance -> studentAttendance.getStatus() == StudentAttendanceStatusEnum.NORMAL).collect(Collectors.toList());
+        if (normal != null && normal.size() > 0) {
+            Map<Integer, String> receivers = new HashMap<>();
+            normal.forEach(e -> {
+                receivers.put(e.getUserId(), e.getUserId().toString());
+            });
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_NAMES_ACHIEVE,
+                    receivers, null, 0, "2", "STUDENT", DateUtil.format(new Date(), DateUtil.DATE_FORMAT_MIN));
+        }
+        return succeed();
+    }
+
     @ApiOperation(value = "获取签退详情")
     @GetMapping("/getTeacherSignDetail")
     public Object getTeacherSignDetail(Integer courseScheduleId){

+ 9 - 1
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -427,7 +427,15 @@ public class CourseScheduleController extends BaseController {
     @PostMapping("/updateCoursesExpireDate")
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/updateCoursesExpireDate')")
     public Object updateCoursesExpireDate(String practiceGroupId, Date coursesStartDate,Date coursesExpireDate){
-        courseScheduleService.updatePracticeGroupInDate(practiceGroupId, coursesStartDate,coursesExpireDate);
+        courseScheduleService.updatePracticeGroupInDate(practiceGroupId, coursesStartDate,coursesExpireDate, false);
+        return succeed();
+    }
+
+    @ApiOperation(value = "陪练课课程组有效期调整-仅进行中可调整")
+    @PostMapping("/updateCoursesExpireDateOnlyNormal")
+    @PreAuthorize("@pcs.hasPermissions('courseSchedule/updateCoursesExpireDateOnlyNormal')")
+    public Object updateCoursesExpireDateOnlyNormal(String practiceGroupId, Date coursesStartDate,Date coursesExpireDate){
+        courseScheduleService.updatePracticeGroupInDate(practiceGroupId, coursesStartDate,coursesExpireDate, true);
         return succeed();
     }