liujc 1 year ago
parent
commit
0cc199be6f
68 changed files with 3049 additions and 40 deletions
  1. 2 1
      .gitignore
  2. 8 5
      cms/src/main/java/com/ym/mec/cms/controller/NewsController.java
  3. 7 1
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/enums/SysUserType.java
  4. 2 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/PhoneLoginAuthenticationFilter.java
  5. 34 4
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/UsernameAuthenticationFilter.java
  6. 29 20
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/handler/BaseAuthenticationSuccessEventHandler.java
  7. 30 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java
  8. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SubFeeSettingDto.java
  9. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroup.java
  10. 72 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CoursePatrolEvaluation.java
  11. 20 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  12. 59 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SchoolActivity.java
  13. 71 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SchoolActivityDetail.java
  14. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SchoolActivityDetailUser.java
  15. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EEvaluateProblemType.java
  16. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EEvaluateStatus.java
  17. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EGroupGradeType.java
  18. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EInGroupStatus.java
  19. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ESchoolActivityProgramType.java
  20. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ESchoolActivityStatus.java
  21. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ESchoolActivityType.java
  22. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexErrorType.java
  23. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/CoursePatrolEvaluationMapper.java
  24. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolActivityDetailMapper.java
  25. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolActivityDetailUserMapper.java
  26. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolActivityMapper.java
  27. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/ClassesForDayDto.java
  28. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/CourseStudentDto.java
  29. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/DailySummaryOfClassesForTheCurrentSemesterDto.java
  30. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/SummaryOfCurrentSemesterCoursesDto.java
  31. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceDto.java
  32. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceListDto.java
  33. 29 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceSumDto.java
  34. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/page/TeacherAttendanceQueryDto.java
  35. 55 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/page/TeacherAttendanceQueryInfo.java
  36. 259 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/CoursePatrolEvaluationWrapper.java
  37. 63 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityDetailUserWrapper.java
  38. 123 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityDetailWrapper.java
  39. 201 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityWrapper.java
  40. 167 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/StudentWrapper.java
  41. 119 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/TeachingPointWrapper.java
  42. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CoursePatrolEvaluationService.java
  43. 39 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  44. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SchoolActivityDetailService.java
  45. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SchoolActivityDetailUserService.java
  46. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SchoolActivityService.java
  47. 32 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java
  48. 67 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursePatrolEvaluationServiceImpl.java
  49. 31 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  50. 66 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolActivityDetailServiceImpl.java
  51. 66 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolActivityDetailUserServiceImpl.java
  52. 66 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolActivityServiceImpl.java
  53. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  54. 24 0
      mec-biz/src/main/resources/config/mybatis/CoursePatrolEvaluationMapper.xml
  55. 11 0
      mec-biz/src/main/resources/config/mybatis/SchoolActivityDetailMapper.xml
  56. 11 0
      mec-biz/src/main/resources/config/mybatis/SchoolActivityDetailUserMapper.xml
  57. 11 0
      mec-biz/src/main/resources/config/mybatis/SchoolActivityMapper.xml
  58. 1 1
      mec-common/common-core/pom.xml
  59. 27 1
      mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java
  60. 26 0
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  61. 2 1
      mec-web/src/main/java/com/ym/mec/web/controller/OrganizationController.java
  62. 44 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java
  63. 88 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/CoursePatrolEvaluationController.java
  64. 77 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolActivityController.java
  65. 73 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolActivityDetailController.java
  66. 73 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolActivityDetailUserController.java
  67. 68 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolCourseScheduleController.java
  68. 67 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolTeacherAttendanceController.java

+ 2 - 1
.gitignore

@@ -39,4 +39,5 @@ mvnw.cmd
 **/logback-test.xml
 
 /bin/
-**/logback-spring.xml
+**/logback-spring.xml
+**/*.log

+ 8 - 5
cms/src/main/java/com/ym/mec/cms/controller/NewsController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.cms.controller;
 
+import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.cms.controller.queryinfo.NewsInformationQueryInfo;
@@ -34,6 +35,9 @@ import java.util.stream.Collectors;
 @Api(tags = "资讯服务")
 public class NewsController extends BaseController {
 
+    // 全局资讯类型
+    private static final List<Integer> globalNewsTypes = Lists.newArrayList(4, 6, 26, 29);
+
     @Autowired
     private SysNewsInformationService sysNewsInformationService;
     @Autowired
@@ -68,7 +72,7 @@ public class NewsController extends BaseController {
     @ApiOperation("资讯列表分页查询")
     @GetMapping(value = "/list")
     public Object getList(NewsInformationQueryInfo queryInfo) {
-        if (queryInfo.getType() == 6 || queryInfo.getType() == 4 || queryInfo.getType() == 26) {
+        if (Objects.nonNull(queryInfo.getType()) && globalNewsTypes.contains(queryInfo.getType())) {
             queryInfo.setTenantId(-1);
         }
         String clientId = queryInfo.getClientId();
@@ -98,8 +102,7 @@ public class NewsController extends BaseController {
     @GetMapping(value = "/queryPage")
     public Object queryPage(NewsInformationQueryInfo queryInfo) {
 
-        if (queryInfo.getType() != null
-                && (queryInfo.getType() == 6 || queryInfo.getType() == 4 || queryInfo.getType() == 26)) {
+        if (Objects.nonNull(queryInfo.getType()) && globalNewsTypes.contains(queryInfo.getType())) {
             queryInfo.setTenantId(-1);
         }
 
@@ -152,7 +155,7 @@ public class NewsController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('news/add')")
     public Object add(SysNewsInformation newsInfo) {
 
-        if (newsInfo.getType() == 6 || newsInfo.getType() == 4 || newsInfo.getType() == 26) {
+        if (Objects.nonNull(newsInfo.getType()) && globalNewsTypes.contains(newsInfo.getType())) {
             newsInfo.setTenantId(-1);
         }
         /*if (newsInfo.getContent().length() > 7999) {
@@ -175,7 +178,7 @@ public class NewsController extends BaseController {
         if (newsInfo.getType() == null) {
             newsInfo.setType(originNewsInfo.getType());
         }
-        if (newsInfo.getType() == 6 || newsInfo.getType() == 4 || newsInfo.getType() == 26) {
+        if (Objects.nonNull(newsInfo.getType()) && globalNewsTypes.contains(newsInfo.getType())) {
             newsInfo.setTenantId(-1);
         }
         return succeed(sysNewsInformationService.update(newsInfo));

+ 7 - 1
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/enums/SysUserType.java

@@ -7,7 +7,13 @@ import com.ym.mec.common.enums.BaseEnum;
 
 public enum SysUserType implements BaseEnum<String, SysUserType> {
 
-	STUDENT("学生"), EDUCATION("教务老师"), TEACHER("指导老师"), SYSTEM("系统內置"), ADMIN("管理员");
+	STUDENT("学生"),
+	EDUCATION("教务老师"),
+	TEACHER("指导老师"),
+	SYSTEM("系统內置"),
+	ADMIN("管理员"),
+	SCHOOL("学校员工"),
+	;
 
 	private String desc;
 

+ 2 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/PhoneLoginAuthenticationFilter.java

@@ -59,9 +59,9 @@ public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProces
 		boolean isRegister = StringUtils.equals("1", isLessee) || StringUtils.equals("true", isLessee);
 
 		String clientId = request.getParameter("clientId").toUpperCase();
-		if ("EDUCATION".equals(clientId)) {
+		/*if ("EDUCATION".equals(clientId)) {
 			clientId = "SYSTEM";
-		}
+		}*/
 		String deviceNum = request.getParameter("deviceNum");
 
 		principal = principal.trim();

+ 34 - 4
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/UsernameAuthenticationFilter.java

@@ -23,6 +23,9 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
 
 public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessingFilter {
 
@@ -75,11 +78,38 @@ public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessi
 		} else {
 
 			if("EDUCATION".equals(clientId)){
-				clientId = "SYSTEM";
-			}
-			if (!userInfo.getSysUser().getUserType().contains(clientId)) {
-				throw new LockedException("用户不存在");
+				//clientId = "SYSTEM";
+				List<String> collect = Arrays.stream(userInfo.getSysUser().getUserType().split(","))
+						.map(String::toUpperCase)
+						.collect(Collectors.toList());
+
+				// 用户身份匹配标识
+				boolean matchFlag = false;
+				// 管理端登录身份
+				if (collect.contains(SysUserType.SYSTEM.getCode())) {
+
+					clientId = SysUserType.SYSTEM.getCode();
+					// 重置匹配状态
+					matchFlag = true;
+				}
+				// 学校员工身份
+				if (collect.contains(SysUserType.SCHOOL.getCode())) {
+					clientId = SysUserType.SCHOOL.getCode();
+					// 重置匹配状态
+					matchFlag = true;
+				}
+				// 管理端登录或学校员工登录身份匹配
+				if (!matchFlag) {
+					throw new LockedException("用户不存在");
+				}
+
+			} else {
+				// 非管理端登录
+				if (!userInfo.getSysUser().getUserType().contains(clientId)) {
+					throw new LockedException("用户不存在");
+				}
 			}
+
 		}
 		
 		// 检查设备

+ 29 - 20
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/handler/BaseAuthenticationSuccessEventHandler.java

@@ -1,20 +1,19 @@
 package com.ym.mec.auth.core.handler;
 
-import java.io.IOException;
-import java.util.Base64;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.api.entity.SysUserLogin;
+import com.ym.mec.auth.api.entity.SysUserLoginLog;
+import com.ym.mec.auth.api.enums.SysUserType;
+import com.ym.mec.auth.service.SysUserLoginLogService;
+import com.ym.mec.auth.service.SysUserLoginService;
+import com.ym.mec.auth.service.SysUserService;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
+import com.ym.mec.common.security.SecurityConstants;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.web.WebFeignService;
-
-import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,15 +35,15 @@ import org.springframework.security.oauth2.provider.token.AuthorizationServerTok
 import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
 import org.springframework.stereotype.Component;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.auth.api.entity.SysUserLogin;
-import com.ym.mec.auth.api.entity.SysUserLoginLog;
-import com.ym.mec.auth.service.SysUserLoginLogService;
-import com.ym.mec.auth.service.SysUserLoginService;
-import com.ym.mec.auth.service.SysUserService;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.security.SecurityConstants;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Base64;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Component
 public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuthenticationSuccessHandler {
@@ -156,6 +155,16 @@ public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuth
 			map.put("tenantId", tenantId);
 			map.put("companyId", sysUser.getTenantId());
 
+			// 设置登录管户端类型
+			if (clientId.toUpperCase().equals(SysUserType.EDUCATION.getCode())) {
+
+				String collect = Arrays.stream(sysUser.getUserType().split(","))
+						.filter(x -> x.equals(SysUserType.SYSTEM.getCode()) || x.equals(SysUserType.SCHOOL.getCode()))
+						.collect(Collectors.joining(","));
+				// 登录客户端类型
+				map.put("clientType", collect);
+			}
+
 			response.setContentType("application/json; charset=utf-8");
 			HttpResponseResult result = new HttpResponseResult(true, HttpStatus.OK.value(), map, "");
 			response.getWriter().write(objectMapper.writeValueAsString(result));

+ 30 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java

@@ -1,11 +1,14 @@
 package com.ym.mec.auth.core.provider;
 
+import java.util.Arrays;
 import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
+import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.web.controller.queryInfo.QRLoginDto;
 import com.ym.mec.common.redis.service.RedisCache;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.InternalAuthenticationServiceException;
 import org.springframework.security.authentication.LockedException;
@@ -46,7 +49,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	protected UserDetails retrieveUser(String username, Authentication authentication) throws AuthenticationException {
+	public UserDetails retrieveUser(String username, Authentication authentication) throws AuthenticationException {
 		LoginEntity loginEntity = (LoginEntity) authentication.getCredentials();
 		if (loginEntity == null) {
 			throw new BadCredentialsException("Bad credentials");
@@ -88,6 +91,12 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 		}
 
 		if (userInfo == null) {
+
+			// 强制默认管理登录类型
+			if ("EDUCATION".equals(clientId)) {
+				clientId = "SYSTEM";
+			}
+
 			if (isRegister == false || StringUtils.equals("SYSTEM", clientId)) {
 				throw new LockedException("用户不存在");
 			}
@@ -102,6 +111,25 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 			if (user == null) {
 				throw new LockedException("用户不存在");
 			}
+
+			// 管理端登录或学校端登录
+			if(SysUserType.EDUCATION.getCode().equals(clientId.toUpperCase())){
+
+				List<String> collect = Arrays.stream(userInfo.getSysUser().getUserType().split(","))
+						.map(String::toUpperCase)
+						.collect(Collectors.toList());
+
+				// 管理端登录身份
+				if (collect.contains(SysUserType.SYSTEM.getCode())) {
+					clientId = SysUserType.SYSTEM.getCode();
+				}
+
+				// 学校员工身份
+				if (collect.contains(SysUserType.SCHOOL.getCode())) {
+					clientId = SysUserType.SCHOOL.getCode();
+				}
+			}
+
 			//如果机构不一致,不允许跨机构注册
 //			if(loginEntity.getTenantId() != null && loginEntity.getTenantId() != 0 &&
 //					!loginEntity.getTenantId().equals(user.getTenantId())){

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

@@ -37,6 +37,17 @@ public class SubFeeSettingDto {
     @ApiModelProperty(value = "分部乐器分润上限",required = false)
     private BigDecimal maxMusicalInstrumentsProfits;
 
+    @ApiModelProperty(value = "年级分布",required = false)
+    private String gradeType;
+
+    public String getGradeType() {
+        return gradeType;
+    }
+
+    public void setGradeType(String gradeType) {
+        this.gradeType = gradeType;
+    }
+
     public MusicGroupStatusEnum getMusicGroupStatus() {
         return musicGroupStatus;
     }

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

@@ -68,6 +68,9 @@ public class ClassGroup extends BaseEntity {
 	@ApiModelProperty(value = "学生数量", required = false)
 	private Integer studentNum;
 
+    @ApiModelProperty("教学点")
+    private String teachingPoint;
+
 	/**  */
 	private java.util.Date createTime;
 
@@ -104,7 +107,15 @@ public class ClassGroup extends BaseEntity {
 	
 	private List<CourseSchedule> courseScheduleList = new ArrayList<CourseSchedule>();
 
-	public String getDesc() {
+    public String getTeachingPoint() {
+        return teachingPoint;
+    }
+
+    public void setTeachingPoint(String teachingPoint) {
+        this.teachingPoint = teachingPoint;
+    }
+
+    public String getDesc() {
 		return desc;
 	}
 

+ 72 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CoursePatrolEvaluation.java

@@ -0,0 +1,72 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.ym.mec.biz.dal.enums.EEvaluateStatus;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 巡堂详情
+ * 2023-05-04 11:32:00
+ */
+@Data
+@ApiModel(" CoursePatrolEvaluation-巡堂详情")
+@TableName("course_patrol_evaluation")
+public class CoursePatrolEvaluation implements Serializable {
+
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("合作单位ID")
+	@TableField(value = "cooperation_organ_id_")
+    private Integer cooperationOrganId;
+
+    @ApiModelProperty("课程ID") 
+	@TableField(value = "course_schedule_id_")
+    private Integer courseScheduleId;
+
+    @ApiModelProperty("操作用户ID")
+	@TableField(value = "user_id_")
+    private Integer userId;
+
+    @ApiModelProperty("优秀EXCELLENT、良好GOOD、合格QUALIFIED、不合格UNQUALIFIED")
+    @TableField(value = "evaluate_status_")
+    private EEvaluateStatus evaluateStatus;
+
+    @ApiModelProperty("问题类型 课堂纪律 CLASSROOM_DISCIPLINE, 放学组织 AFTER_SCHOOL_ORGANIZATION, 环境卫生 ENVIRONMENTAL_SANITATION, 教态仪表 TEACHING_DEMEANOR, 沟通表达 COMMUNICATION_EXPRESSION, 专业能力 PROFESSIONAL_ABILITY, 其他 OTHER")
+    @TableField(value = "problem_type_")
+    private String problemType;
+
+    @ApiModelProperty("问题描述") 
+	@TableField(value = "problem_desc_")
+    private String problemDesc;
+
+
+    @ApiModelProperty("处理状态")
+    @TableField(value = "handle_status_")
+    private Boolean handleStatus;
+
+    @ApiModelProperty("建议") 
+	@TableField(value = "suggestion_")
+    private String suggestion;
+
+    @ApiModelProperty("附件") 
+	@TableField(value = "attachment_url_")
+    private String attachmentUrl;
+
+	@TableField(value = "create_time_")
+    private Date createTime;
+
+	@TableField(value = "update_time_")
+    private Date updateTime;
+
+}

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

@@ -213,7 +213,26 @@ public class CourseSchedule  extends BaseEntity{
 	@ApiModelProperty("全员静音")
 	private Boolean muteAll;
 
-	public Boolean getSettlementReportFlag() {
+    @ApiModelProperty("教学点")
+    private String teachingPoint;
+
+    public String getTeachingPoint() {
+        return teachingPoint;
+    }
+
+    public void setTeachingPoint(String teachingPoint) {
+        this.teachingPoint = teachingPoint;
+    }
+
+    public SimpleDateFormat getSimpleDateFormat() {
+        return simpleDateFormat;
+    }
+
+    public void setSimpleDateFormat(SimpleDateFormat simpleDateFormat) {
+        this.simpleDateFormat = simpleDateFormat;
+    }
+
+    public Boolean getSettlementReportFlag() {
 		return settlementReportFlag;
 	}
 

+ 59 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SchoolActivity.java

@@ -0,0 +1,59 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.ym.mec.biz.dal.enums.ESchoolActivityType;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 学校活动
+ * 2023-05-04 11:32:00
+ */
+@Data
+@ApiModel(" SchoolActivity-学校活动")
+@TableName("school_activity")
+public class SchoolActivity implements Serializable {
+
+	    @TableId(value = "id_", type = IdType.AUTO)
+        private Integer id;
+
+    @ApiModelProperty("合作单位ID")
+    @TableField(value = "cooperation_organ_id_")
+    private Integer cooperationOrganId;
+
+    @ApiModelProperty("活动开始日期") 
+	@TableField(value = "start_time_")
+    private Date startTime;
+
+    @ApiModelProperty("活动结束日期") 
+	@TableField(value = "end_time_")
+    private Date endTime;
+
+    @ApiModelProperty("活动名称") 
+	@TableField(value = "name_")
+    private String name;
+
+    @ApiModelProperty("活动类型 开放日 OPEN_DAY 汇演 PERFORMANCE 音乐会 CONCERT 比赛 COMPETITION 讲座 LECTURE 校庆 SCHOOL_DAY 迎宾 WELCOME 其他 OTHER")
+	@TableField(value = "type_")
+    private ESchoolActivityType type;
+
+    @ApiModelProperty("创建人ID") 
+	@TableField(value = "create_by_")
+    private Integer createBy;
+
+	@TableField(value = "create_time_")
+    private Date createTime;
+
+	@TableField(value = "update_time_")
+    private Date updateTime;
+
+}

+ 71 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SchoolActivityDetail.java

@@ -0,0 +1,71 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.ym.mec.biz.dal.enums.ESchoolActivityProgramType;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 活动详情
+ * 2023-05-04 11:32:00
+ */
+@Data
+@ApiModel(" SchoolActivityDetail-活动详情")
+@TableName("school_activity_detail")
+public class SchoolActivityDetail implements Serializable {
+
+	    @TableId(value = "id_", type = IdType.AUTO)
+        private Integer id;
+
+    @ApiModelProperty("合作单位ID")
+    @TableField(value = "cooperation_organ_id_")
+    private Integer cooperationOrganId;
+
+    @ApiModelProperty("活动id") 
+	@TableField(value = "school_activity_id_")
+    private Integer schoolActivityId;
+
+    @ApiModelProperty("节目名称") 
+	@TableField(value = "name_")
+    private String name;
+
+    @ApiModelProperty("节目类型") 
+	@TableField(value = "type_")
+    private ESchoolActivityProgramType type;
+
+    @ApiModelProperty("乐团ID") 
+	@TableField(value = "music_group_id_")
+    private Integer musicGroupId;
+
+    @ApiModelProperty("声部ID集合") 
+	@TableField(value = "subject_id_list_")
+    private String subjectIdList;
+
+    @ApiModelProperty("学生人数") 
+	@TableField(value = "student_num_")
+    private Integer studentNum;
+
+    @ApiModelProperty("节目时长-秒") 
+	@TableField(value = "time_")
+    private Integer time;
+
+    @ApiModelProperty("附件") 
+	@TableField(value = "attachment_url_")
+    private String attachmentUrl;
+
+	@TableField(value = "create_time_")
+    private Date createTime;
+
+	@TableField(value = "update_time_")
+    private Date updateTime;
+
+}

+ 35 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SchoolActivityDetailUser.java

@@ -0,0 +1,35 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import lombok.Data;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+
+/**
+ * 活动详情人员
+ * 2023-05-04 11:32:00
+ */
+@Data
+@ApiModel(" SchoolActivityDetailUser-活动详情人员")
+@TableName("school_activity_detail_user")
+public class SchoolActivityDetailUser implements Serializable {
+
+	    @TableId(value = "id_", type = IdType.AUTO)
+        private Integer id;
+
+    @ApiModelProperty("活动详情ID") 
+	@TableField(value = "school_activity_detail_id_")
+    private Integer schoolActivityDetailId;
+
+    @ApiModelProperty("学生ID") 
+	@TableField(value = "student_id_")
+    private Integer studentId;
+
+}

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EEvaluateProblemType.java

@@ -0,0 +1,30 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.ym.mec.common.enums.BaseEnum;
+import lombok.Getter;
+
+@Getter
+public enum EEvaluateProblemType implements BaseEnum<String, EEvaluateProblemType> {
+
+    // 问题类型(课堂纪律、放学组织、环境卫生、教态仪表、沟通表达、专业能力、其他)
+    // 课堂纪律 CLASSROOM_DISCIPLINE, 放学组织 AFTER_SCHOOL_ORGANIZATION, 环境卫生 ENVIRONMENTAL_SANITATION, 教态仪表 TEACHING_DEMEANOR, 沟通表达 COMMUNICATION_EXPRESSION, 专业能力 PROFESSIONAL_ABILITY, 其他 OTHER
+    CLASSROOM_DISCIPLINE("CLASSROOM_DISCIPLINE","课堂纪律"),
+    AFTER_SCHOOL_ORGANIZATION("AFTER_SCHOOL_ORGANIZATION","放学组织"),
+    ENVIRONMENTAL_SANITATION("ENVIRONMENTAL_SANITATION","环境卫生"),
+    TEACHING_DEMEANOR("TEACHING_DEMEANOR","教态仪表"),
+    COMMUNICATION_EXPRESSION("COMMUNICATION_EXPRESSION","沟通表达"),
+    PROFESSIONAL_ABILITY("PROFESSIONAL_ABILITY","专业能力"),
+    OTHER("OTHER","其他");
+
+    @EnumValue
+    private String code;
+
+    private String msg;
+
+    EEvaluateProblemType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+}

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EEvaluateStatus.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.ym.mec.common.enums.BaseEnum;
+import lombok.Getter;
+
+@Getter
+public enum EEvaluateStatus implements BaseEnum<String, EEvaluateStatus> {
+
+    // 评价(优秀EXCELLENT、良好GOOD、合格QUALIFIED、不合格UNQUALIFIED
+    EXCELLENT("EXCELLENT","优秀"),
+    GOOD("GOOD","良好"),
+    QUALIFIED("QUALIFIED","合格"),
+    UNQUALIFIED("UNQUALIFIED","不合格");
+
+    @EnumValue
+    private String code;
+
+    private String msg;
+
+    EEvaluateStatus(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+}

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EGroupGradeType.java

@@ -0,0 +1,34 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.ym.mec.common.enums.BaseEnum;
+import lombok.Getter;
+
+@Getter
+public enum EGroupGradeType implements BaseEnum<String, EGroupGradeType> {
+
+    // 团年级分布 小学团 PRIMARY 初中团 MIDDLE 高中团 HIGH 混合团 MIXED
+    //小学团:学生报名时【年级】只可选择1 ~ 5/6年级
+    //
+    //初中团:学生报名时【年级】只可选择初一 ~ 初三/初四
+    //
+    //混合团:学生报名时【年级】可选择1~初三/初四
+    //
+    //高中团:学生报名时【年级】可选择高一~高三
+
+    PRIMARY("PRIMARY", "小学团"),
+    MIDDLE("MIDDLE", "初中团"),
+    HIGH("HIGH", "高中团"),
+    MIXED("MIXED", "混合团");
+
+    @EnumValue
+    private String code;
+
+    private String msg;
+
+    EGroupGradeType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+}

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EInGroupStatus.java

@@ -0,0 +1,25 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.ym.mec.common.enums.BaseEnum;
+import lombok.Getter;
+
+@Getter
+public enum EInGroupStatus implements BaseEnum<String, EInGroupStatus> {
+
+    // 在团状态 在团 IN 退团 OUT 申请退团 APPLY_OUT
+    IN("IN", "在团"),
+    OUT("OUT", "退团"),
+    APPLY_OUT("APPLY_OUT", "申请退团");
+
+    @EnumValue
+    private String code;
+
+    private String msg;
+
+    EInGroupStatus(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+}

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ESchoolActivityProgramType.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.ym.mec.common.enums.BaseEnum;
+import lombok.Getter;
+
+@Getter
+public enum ESchoolActivityProgramType implements BaseEnum<String, ESchoolActivityProgramType> {
+
+    // 节目类型 合奏 ENSEMBLE 独奏 SOLO 重奏 REPRISE 齐奏 UNISON
+    ENSEMBLE("ENSEMBLE","合奏"),
+    SOLO("SOLO","独奏"),
+    REPRISE("REPRISE","重奏"),
+    UNISON("UNISON","齐奏");
+
+
+    @EnumValue
+    private String code;
+
+    private String msg;
+
+    ESchoolActivityProgramType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+}

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ESchoolActivityStatus.java

@@ -0,0 +1,25 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.ym.mec.common.enums.BaseEnum;
+import lombok.Getter;
+
+@Getter
+public enum ESchoolActivityStatus implements BaseEnum<String, ESchoolActivityStatus> {
+
+    // 活动状态 未开始 NOT_START 进行中 PROCESSING 已结束 END,
+    NOT_START("NOT_START","未开始"),
+    PROCESSING("PROCESSING","进行中"),
+    END("END","已结束");
+
+    @EnumValue
+    private String code;
+
+    private String msg;
+
+    ESchoolActivityStatus(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+}

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ESchoolActivityType.java

@@ -0,0 +1,30 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.ym.mec.common.enums.BaseEnum;
+import lombok.Getter;
+
+@Getter
+public enum ESchoolActivityType implements BaseEnum<String, ESchoolActivityType> {
+
+    // 活动类型 开放日 OPEN_DAY 汇演 PERFORMANCE 音乐会 CONCERT 比赛 COMPETITION 讲座 LECTURE 校庆 SCHOOL_DAY 迎宾 WELCOME 其他 OTHER
+    OPEN_DAY("OPEN_DAY","开放日"),
+    PERFORMANCE("PERFORMANCE","汇演"),
+    CONCERT("CONCERT","音乐会"),
+    COMPETITION("COMPETITION","比赛"),
+    LECTURE("LECTURE","讲座"),
+    SCHOOL_DAY("SCHOOL_DAY","校庆"),
+    WELCOME("WELCOME","迎宾"),
+    OTHER("OTHER","其他");
+
+    @EnumValue
+    private String code;
+
+    private String msg;
+
+    ESchoolActivityType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+}

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexErrorType.java

@@ -47,6 +47,10 @@ public enum IndexErrorType implements BaseEnum<String, IndexErrorType> {
     TEACHER_NOT_A_CLASS("TEACHER_NOT_A_CLASS", "课程异常"),
     TEACHER_SERVE_ERROR("TEACHER_SERVE_ERROR", "服务指标异常"),
     HAS_FREE_COURSE_TIMES("HAS_FREE_COURSE_TIMES", "学员已排课时长未消耗完"),
+
+    // 学校巡堂异常
+    SCHOOL_PATROL("SCHOOL_PATROL", "学校巡堂异常"),
+
     ;
 
     private String code;

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/CoursePatrolEvaluationMapper.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.dal.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+import com.ym.mec.biz.dal.entity.CoursePatrolEvaluation;
+import com.ym.mec.biz.dal.wrapper.CoursePatrolEvaluationWrapper;
+
+/**
+ * 巡堂详情
+ * 2023-05-04 11:32:00
+ */
+@Repository
+public interface CoursePatrolEvaluationMapper extends BaseMapper<CoursePatrolEvaluation> {
+
+	/**
+	 * 分页查询
+	 * @param page IPage<CoursePatrolEvaluationWrapper.CoursePatrolEvaluation>
+	 * @param param CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery
+	 * @return List<CoursePatrolEvaluationWrapper.CoursePatrolEvaluation>
+	 */
+	List<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo> selectPage(@Param("page") IPage<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo> page, @Param("param") CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery param);
+	
+}

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolActivityDetailMapper.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.dal.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+import com.ym.mec.biz.dal.entity.SchoolActivityDetail;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityDetailWrapper;
+
+/**
+ * 活动详情
+ * 2023-05-04 11:32:00
+ */
+@Repository
+public interface SchoolActivityDetailMapper extends BaseMapper<SchoolActivityDetail> {
+
+	/**
+	 * 分页查询
+	 * @param page IPage<SchoolActivityDetailWrapper.SchoolActivityDetail>
+	 * @param param SchoolActivityDetailWrapper.SchoolActivityDetailQuery
+	 * @return List<SchoolActivityDetailWrapper.SchoolActivityDetail>
+	 */
+	List<SchoolActivityDetail> selectPage(@Param("page") IPage<SchoolActivityDetail> page, @Param("param") SchoolActivityDetailWrapper.SchoolActivityDetailQuery param);
+	
+}

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolActivityDetailUserMapper.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.dal.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+import com.ym.mec.biz.dal.entity.SchoolActivityDetailUser;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityDetailUserWrapper;
+
+/**
+ * 活动详情人员
+ * 2023-05-04 11:32:00
+ */
+@Repository
+public interface SchoolActivityDetailUserMapper extends BaseMapper<SchoolActivityDetailUser> {
+
+	/**
+	 * 分页查询
+	 * @param page IPage<SchoolActivityDetailUserWrapper.SchoolActivityDetailUser>
+	 * @param param SchoolActivityDetailUserWrapper.SchoolActivityDetailUserQuery
+	 * @return List<SchoolActivityDetailUserWrapper.SchoolActivityDetailUser>
+	 */
+	List<SchoolActivityDetailUser> selectPage(@Param("page") IPage<SchoolActivityDetailUser> page, @Param("param") SchoolActivityDetailUserWrapper.SchoolActivityDetailUserQuery param);
+	
+}

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolActivityMapper.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.dal.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+import com.ym.mec.biz.dal.entity.SchoolActivity;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityWrapper;
+
+/**
+ * 学校活动
+ * 2023-05-04 11:32:00
+ */
+@Repository
+public interface SchoolActivityMapper extends BaseMapper<SchoolActivity> {
+
+	/**
+	 * 分页查询
+	 * @param page IPage<SchoolActivityWrapper.SchoolActivity>
+	 * @param param SchoolActivityWrapper.SchoolActivityQuery
+	 * @return List<SchoolActivityWrapper.SchoolActivity>
+	 */
+	List<SchoolActivityWrapper.SchoolActivity> selectPage(@Param("page") IPage<SchoolActivityWrapper.SchoolActivity> page, @Param("param") SchoolActivityWrapper.SchoolActivityQuery param);
+	
+}

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/ClassesForDayDto.java

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.dal.school.dto;
+
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ClassesForDayDto {
+    @ApiModelProperty(value = "课程编号",required = false)
+    private Long courseId;
+
+    @ApiModelProperty(value = "课程名称",required = false)
+    private String courseName;
+
+    @ApiModelProperty(value = "课程状态",required = false)
+    private CourseStatusEnum courseStatus;
+
+    @ApiModelProperty(value = "上课时间",required = false)
+    private String classDate;
+
+    @ApiModelProperty(value = "老师头像",required = false)
+    private String teacherAvatar;
+
+    @ApiModelProperty(value = "老师名称",required = false)
+    private String teacherName;
+
+    @ApiModelProperty(value = "乐团名称",required = false)
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "学员数量",required = false)
+    private Integer studentNum;
+
+    @ApiModelProperty(value = "正常出勤",required = false)
+    private Integer attendanceNormalNum;
+
+    @ApiModelProperty(value = "迟到人数",required = false)
+    private Integer attendanceLateNum;
+
+    @ApiModelProperty(value = "请假人数",required = false)
+    private Integer attendanceLeaveNum;
+
+    @ApiModelProperty(value = "旷课人数",required = false)
+    private Integer attendanceTruantNum;
+}

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/CourseStudentDto.java

@@ -0,0 +1,23 @@
+package com.ym.mec.biz.dal.school.dto;
+
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CourseStudentDto {
+    @ApiModelProperty(value = "学员头像",required = false)
+    private String studentAvatar;
+
+    @ApiModelProperty(value = "是否会员",required = false)
+    private Boolean memberFlag;
+
+    @ApiModelProperty(value = "学员姓名",required = false)
+    private String studentName;
+
+    @ApiModelProperty(value = "考勤状态",required = false)
+    private StudentAttendanceStatusEnum attendanceStatus;
+
+    @ApiModelProperty(value = "课后评价是否达标",required = false)
+    private Boolean qualifiedFlag;
+}

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

@@ -0,0 +1,11 @@
+package com.ym.mec.biz.dal.school.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DailySummaryOfClassesForTheCurrentSemesterDto extends SummaryOfCurrentSemesterCoursesDto{
+
+    @ApiModelProperty(value = "上课时间",required = false)
+    private String courseDate;
+}

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/SummaryOfCurrentSemesterCoursesDto.java

@@ -0,0 +1,18 @@
+package com.ym.mec.biz.dal.school.dto;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SummaryOfCurrentSemesterCoursesDto {
+
+    @ApiModelProperty(value = "剩余课时数",required = false)
+    private Integer subCourseNum;
+
+    @ApiModelProperty(value = "总课时数",required = false)
+    private Integer totalCourseNum;
+
+    @ApiModelProperty(value = "课程类型",required = false)
+    private CourseSchedule.CourseScheduleType scheduleType;
+}

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

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.dal.school.dto;
+
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class TeacherAttendanceDto {
+    @ApiModelProperty(value = "签到状态:0异常,1正常")
+    private YesOrNoEnum signInStatus;
+
+    @ApiModelProperty(value = "签到时间")
+    private Date signInTime;
+
+    @ApiModelProperty(value = "签退状态:0异常,1正常")
+    private YesOrNoEnum signOutStatus;
+
+    @ApiModelProperty(value = "签退时间")
+    private Date signOutTime;
+
+    @ApiModelProperty(value = "教学点签到状态")
+    private YesOrNoEnum signInAddressStatus;
+
+    @ApiModelProperty(value = "教学点签退状态")
+    private YesOrNoEnum signOutAddressStatus;
+
+    @ApiModelProperty(value = "签到经纬度")
+    private String signInLongitudeLatitude;
+
+    @ApiModelProperty(value = "签退经纬度")
+    private String signOutLongitudeLatitude;
+
+    @ApiModelProperty(value = "教学模式")
+    private TeachModeEnum teachModeEnum;
+
+    @ApiModelProperty(value = "教学点签退经纬度")
+    private String schoolOutLongitudeLatitude;
+
+    @ApiModelProperty(value = "教学点签到经纬度")
+    private String schoolInLongitudeLatitude;
+}

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceListDto.java

@@ -0,0 +1,15 @@
+package com.ym.mec.biz.dal.school.dto;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class TeacherAttendanceListDto extends TeacherAttendanceDto{
+
+    @ApiModelProperty(value = "课程类型")
+    private CourseSchedule.CourseScheduleType courseScheduleType;
+
+    @ApiModelProperty(value = "上课时间")
+    private String classDate;
+}

+ 29 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceSumDto.java

@@ -0,0 +1,29 @@
+package com.ym.mec.biz.dal.school.dto;
+
+import com.ym.mec.biz.dal.school.page.TeacherAttendanceQueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class TeacherAttendanceSumDto {
+    @ApiModelProperty(value = "老师姓名")
+    private String teacherName;
+
+    @ApiModelProperty(value = "老师头像")
+    private String teacherAvatar;
+
+    @ApiModelProperty(value = "班级名称")
+    private String classGroupName;
+
+    @ApiModelProperty(value = "班级编号")
+    private Integer classGroupId;
+
+    @ApiModelProperty(value = "老师编号")
+    private Integer teacherId;
+
+    @ApiModelProperty(value = "本周课程考勤状态")
+    private TeacherAttendanceQueryInfo.TeacherAttendanceEnum teacherAttendanceStatus;
+
+    @ApiModelProperty(value = "本学期异常考勤课程数")
+    private Integer errCourseNum;
+}

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/page/TeacherAttendanceQueryDto.java

@@ -0,0 +1,17 @@
+package com.ym.mec.biz.dal.school.page;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class TeacherAttendanceQueryDto {
+
+    @ApiModelProperty(value = "学校编号",required = true)
+    private Integer schoolId;
+
+    @ApiModelProperty(value = "班级编号",required = true)
+    private Integer classGroupId;
+
+    @ApiModelProperty(value = "老师编号",required = true)
+    private Integer teacherId;
+}

+ 55 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/page/TeacherAttendanceQueryInfo.java

@@ -0,0 +1,55 @@
+package com.ym.mec.biz.dal.school.page;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.ym.mec.common.enums.BaseEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class TeacherAttendanceQueryInfo{
+    public enum TeacherAttendanceEnum implements BaseEnum<String,TeacherAttendanceEnum> {
+        NORMAL("NORMAL", "正常"),
+        ERR("ERR", "异常"),
+        NO_COURSE("NO_COURSE", "无课"),
+        ;
+
+        @EnumValue
+        private String code;
+        private String msg;
+
+        TeacherAttendanceEnum(String code, String msg) {
+            this.code = code;
+            this.msg = msg;
+        }
+
+        public String getMsg() {
+            return msg;
+        }
+
+        @Override
+        public String getCode() {
+            return code;
+        }
+    }
+
+    @ApiModelProperty(value = "模糊查询",required = false)
+    private String search;
+
+    @ApiModelProperty(value = "学校编号",required = true)
+    private Integer schoolId;
+
+    @ApiModelProperty(value = "班级编号",required = false)
+    private Integer classGroupId;
+
+    @ApiModelProperty(value = "老师编号(不用传)",required = false)
+    private Integer teacherId;
+
+    @ApiModelProperty(value = "考勤状态",required = false)
+    private TeacherAttendanceEnum teacherAttendanceStatus;
+
+    @ApiModelProperty(value = "学期(不用传)",required = false)
+    private String startTerm;
+
+    @ApiModelProperty(value = "学期(不用传)",required = false)
+    private String endTerm;
+}

+ 259 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/CoursePatrolEvaluationWrapper.java

@@ -0,0 +1,259 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.core.conditions.update.Update;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.enums.EEvaluateProblemType;
+import com.ym.mec.biz.dal.enums.EEvaluateStatus;
+import com.ym.mec.biz.dal.enums.ESchoolActivityProgramType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+import java.util.Optional;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 巡堂详情
+ * 2023-05-04 11:32:00
+ */
+@ApiModel(value = "CoursePatrolEvaluationWrapper对象", description = "巡堂详情查询对象")
+public class CoursePatrolEvaluationWrapper {
+
+    @Data
+	@Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" CoursePatrolEvaluationQuery-巡堂详情")
+    public static class CoursePatrolEvaluationQuery implements QueryInfo {
+    
+    	@ApiModelProperty("当前页")
+        private Integer page;
+        
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+        
+        @ApiModelProperty("老师姓名/编号/手机号")
+		private String keyword;
+
+        @ApiModelProperty("开始时间")
+        private Date startTime;
+
+        @ApiModelProperty("结束时间")
+        private Date endTime;
+
+        @ApiModelProperty("分部ID")
+        private String organId;
+
+
+        @ApiModelProperty("合作单位ID ")
+        private Integer cooperationOrganId;
+
+        @ApiModelProperty("课程类型")
+        private CourseSchedule.CourseScheduleType courseType;
+
+
+        @ApiModelProperty("优秀EXCELLENT、良好GOOD、合格QUALIFIED、不合格UNQUALIFIED")
+        private EEvaluateStatus evaluateStatus;
+
+
+        @ApiModelProperty("问题类型 课堂纪律 CLASSROOM_DISCIPLINE, 放学组织 AFTER_SCHOOL_ORGANIZATION, 环境卫生 ENVIRONMENTAL_SANITATION, 教态仪表 TEACHING_DEMEANOR, 沟通表达 COMMUNICATION_EXPRESSION, 专业能力 PROFESSIONAL_ABILITY, 其他 OTHER")
+        private EEvaluateProblemType problemType;
+
+        @ApiModelProperty("处理状态")
+        private Boolean handleFlag;
+
+        @ApiModelProperty("评价状态")
+        private Boolean evaluateFlag;
+        public String getKeyword() {
+            return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
+        }
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static CoursePatrolEvaluationQuery from(String json) {
+            return JSON.parseObject(json, CoursePatrolEvaluationQuery.class);
+        }
+    }
+
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" CoursePatrolEvaluationStatQuery-巡堂查询")
+    public static class CoursePatrolEvaluationStatQuery implements QueryInfo {
+
+        @ApiModelProperty("当前页")
+        private Integer page;
+
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+
+        @ApiModelProperty("开始时间")
+        private Date startTime;
+
+        @ApiModelProperty("结束时间")
+        private Date endTime;
+
+        @ApiModelProperty("合作单位ID")
+        private Integer cooperationOrganId;
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static CoursePatrolEvaluationQuery from(String json) {
+            return JSON.parseObject(json, CoursePatrolEvaluationQuery.class);
+        }
+    }
+
+    @Data
+    @ApiModel("CoursePatrolEvaluationStat-巡堂详情统计")
+    public static class CoursePatrolEvaluationStat {
+
+        @ApiModelProperty("日期")
+        private String date;
+
+        @ApiModelProperty("声部课 数量")
+        private Integer singleCourseCount;
+
+        @ApiModelProperty("合奏课数量")
+        private Integer minCourseCount;
+
+
+        @ApiModelProperty("巡堂数量")
+        private Integer patrolCount;
+
+        @ApiModelProperty("总数量")
+        private Integer totalCount;
+
+
+    }
+
+
+    @Data
+	@ApiModel(" CoursePatrolEvaluation-巡堂详情")
+    public static class CoursePatrolEvaluationInfo {
+
+        @ApiModelProperty("巡堂编号")
+        private Integer id;
+
+        @ApiModelProperty("分部ID")
+        private String organId;
+
+        @ApiModelProperty("分部名称")
+        private String organName;
+
+        @ApiModelProperty("合作单位ID")
+        private Integer cooperationOrganId;
+
+        @ApiModelProperty("合作单位名称")
+        private String cooperationOrganName;
+
+        @ApiModelProperty("老师ID")
+        private Integer teacherId;
+
+        @ApiModelProperty("老师姓名")
+        private String teacherName;
+
+        @ApiModelProperty("老师头像")
+        private String teacherAvatar;
+
+        @ApiModelProperty("课程ID")
+        private Integer courseScheduleId;
+
+        @ApiModelProperty("课程类型")
+        private CourseSchedule.CourseScheduleType courseType;
+
+        @ApiModelProperty("课程名称")
+        private String courseName;
+
+        /** 上课时间 */
+        @ApiModelProperty(value = "上课时间", required = false)
+        private java.util.Date startClassTime;
+
+        /** 结束时间 */
+        @ApiModelProperty(value = "结束时间", required = false)
+        private java.util.Date endClassTime;
+
+        @ApiModelProperty("操作用户ID")
+        private Integer userId;
+
+        @ApiModelProperty("优秀EXCELLENT、良好GOOD、合格QUALIFIED、不合格UNQUALIFIED")
+        private EEvaluateStatus evaluateStatus;
+
+        @ApiModelProperty("问题类型 课堂纪律 CLASSROOM_DISCIPLINE, 放学组织 AFTER_SCHOOL_ORGANIZATION, 环境卫生 ENVIRONMENTAL_SANITATION, 教态仪表 TEACHING_DEMEANOR, 沟通表达 COMMUNICATION_EXPRESSION, 专业能力 PROFESSIONAL_ABILITY, 其他 OTHER")
+        private String problemType;
+
+        @ApiModelProperty("问题描述")
+        private String problemDesc;
+
+
+        @ApiModelProperty("处理状态")
+        private Boolean handleStatus;
+
+        @ApiModelProperty("建议")
+        private String suggestion;
+
+        @ApiModelProperty("附件")
+        private String attachmentUrl;
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static CoursePatrolEvaluationInfo from(String json) {
+            return JSON.parseObject(json, CoursePatrolEvaluationInfo.class);
+        }
+	}
+
+    @Data
+    @ApiModel(" CoursePatrolEvaluation-保存巡堂信息")
+    public static class CoursePatrolEvaluation {
+
+        @ApiModelProperty("巡堂编号")
+        @NotNull(message = "巡堂编号不能为空",groups = {Update.class})
+        private Integer id;
+
+        @ApiModelProperty(value = "课程ID")
+        private Integer courseScheduleId;
+
+        @ApiModelProperty(value = "优秀EXCELLENT、良好GOOD、合格QUALIFIED、不合格UNQUALIFIED")
+        private EEvaluateStatus evaluateStatus;
+
+        @ApiModelProperty("问题类型 课堂纪律 CLASSROOM_DISCIPLINE, 放学组织 AFTER_SCHOOL_ORGANIZATION, 环境卫生 ENVIRONMENTAL_SANITATION, 教态仪表 TEACHING_DEMEANOR, 沟通表达 COMMUNICATION_EXPRESSION, 专业能力 PROFESSIONAL_ABILITY, 其他 OTHER")
+        private String problemType;
+
+        @ApiModelProperty("问题描述")
+        private String problemDesc;
+
+        @ApiModelProperty("建议")
+        private String suggestion;
+
+        @ApiModelProperty("附件")
+        private String attachmentUrl;
+
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static CoursePatrolEvaluation from(String json) {
+            return JSON.parseObject(json, CoursePatrolEvaluation.class);
+        }
+    }
+}

+ 63 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityDetailUserWrapper.java

@@ -0,0 +1,63 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.Optional;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * 活动详情人员
+ * 2023-05-04 11:32:00
+ */
+@ApiModel(value = "SchoolActivityDetailUserWrapper对象", description = "活动详情人员查询对象")
+public class SchoolActivityDetailUserWrapper {
+
+    @Data
+	@Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" SchoolActivityDetailUserQuery-活动详情人员")
+    public static class SchoolActivityDetailUserQuery implements QueryInfo {
+    
+    	@ApiModelProperty("当前页")
+        private Integer page;
+        
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+        
+        @ApiModelProperty("关键字匹配")
+		private String keyword;
+        
+        public String getKeyword() {
+            return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
+        }
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static SchoolActivityDetailUserQuery from(String json) {
+            return JSON.parseObject(json, SchoolActivityDetailUserQuery.class);
+        }
+    }  
+
+	@ApiModel(" SchoolActivityDetailUser-活动详情人员")
+    public static class SchoolActivityDetailUser {
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static SchoolActivityDetailUser from(String json) {
+            return JSON.parseObject(json, SchoolActivityDetailUser.class);
+        }
+	}
+
+}

+ 123 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityDetailWrapper.java

@@ -0,0 +1,123 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.core.conditions.update.Update;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.enums.ESchoolActivityProgramType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 活动详情
+ * 2023-05-04 11:32:00
+ */
+@ApiModel(value = "SchoolActivityDetailWrapper对象", description = "活动详情查询对象")
+public class SchoolActivityDetailWrapper {
+
+    @Data
+	@Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" SchoolActivityDetailQuery-活动详情")
+    public static class SchoolActivityDetailQuery implements QueryInfo {
+    
+    	@ApiModelProperty("当前页")
+        private Integer page;
+        
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+        
+        @ApiModelProperty("关键字匹配")
+		private String keyword;
+        
+        public String getKeyword() {
+            return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
+        }
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static SchoolActivityDetailQuery from(String json) {
+            return JSON.parseObject(json, SchoolActivityDetailQuery.class);
+        }
+    }  
+
+    @Data
+	@ApiModel(" SchoolActivityDetail-活动详情")
+    public static class SchoolActivityDetail {
+
+        @ApiModelProperty("活动详情编号")
+        @NotNull(message = "活动详情编号不能为空",groups = {Update.class})
+        private Integer id;
+
+        @ApiModelProperty("合作单位ID")
+        private Integer cooperationOrganId;
+
+        @ApiModelProperty("活动id")
+        private Integer schoolActivityId;
+
+        @ApiModelProperty(value = "节目名称",required = true)
+        @NotNull(message = "节目名称不能为空")
+        private String name;
+
+        @ApiModelProperty(value = "节目类型 合奏 ENSEMBLE 独奏 SOLO 重奏 REPRISE 齐奏 UNISON",required = true)
+        @NotNull(message = "节目类型不能为空")
+        private ESchoolActivityProgramType type;
+
+        @ApiModelProperty(value = "乐团ID",required = true)
+        @NotNull(message = "乐团ID不能为空")
+        private Integer musicGroupId;
+
+        @ApiModelProperty("乐团名称")
+        private String musicGroupName;
+
+        @ApiModelProperty("声部ID集合 逗号隔开")
+        private String subjectIdList;
+
+        @ApiModelProperty("声部名称集合 逗号隔开")
+        private String subjectNameList;
+
+
+        @ApiModelProperty(value = "学生id集合,新增,修改用",required = true)
+        @NotEmpty(message = "学生id集合不能为空")
+        private List<Integer> studentIdList;
+
+        @ApiModelProperty(value = "学生人数",required = true)
+        @NotNull(message = "学生人数不能为空")
+        private Integer studentNum;
+
+        @ApiModelProperty(value = "节目时长-秒",required = true)
+        @NotNull(message = "节目时长不能为空")
+        private Integer time;
+
+        @ApiModelProperty("附件")
+        private String attachmentUrl;
+
+
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static SchoolActivityDetail from(String json) {
+            return JSON.parseObject(json, SchoolActivityDetail.class);
+        }
+	}
+
+}

+ 201 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityWrapper.java

@@ -0,0 +1,201 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.core.conditions.update.Update;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.enums.ESchoolActivityStatus;
+import com.ym.mec.biz.dal.enums.ESchoolActivityType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 学校活动
+ * 2023-05-04 11:32:00
+ */
+@ApiModel(value = "SchoolActivityWrapper对象", description = "学校活动查询对象")
+public class SchoolActivityWrapper {
+
+    @Data
+	@Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" SchoolActivityQuery-学校活动")
+    public static class SchoolActivityQuery implements QueryInfo {
+    
+    	@ApiModelProperty("当前页")
+        private Integer page;
+        
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+        
+        @ApiModelProperty("关键字匹配")
+		private String keyword;
+
+
+        @ApiModelProperty("活动类型 开放日 OPEN_DAY 汇演 PERFORMANCE 音乐会 CONCERT 比赛 COMPETITION 讲座 LECTURE 校庆 SCHOOL_DAY 迎宾 WELCOME 其他 OTHER")
+        private ESchoolActivityType type;
+        public String getKeyword() {
+            return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
+        }
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static SchoolActivityQuery from(String json) {
+            return JSON.parseObject(json, SchoolActivityQuery.class);
+        }
+    }  
+
+    @Data
+	@ApiModel(" SchoolActivity-学校活动")
+    public static class SchoolActivity {
+
+        @ApiModelProperty("活动编号")
+        private Integer id;
+
+        @ApiModelProperty("合作单位ID")
+        private Integer cooperationOrganId;
+
+        @ApiModelProperty("活动开始日期")
+        private Date startTime;
+
+        @ApiModelProperty("活动结束日期")
+        private Date endTime;
+
+        @ApiModelProperty("活动状态 未开始 NOT_START 进行中 PROCESSING 已结束 END,")
+        private ESchoolActivityStatus status;
+
+        @ApiModelProperty("活动名称")
+        private String name;
+
+        @ApiModelProperty("活动类型 开放日 OPEN_DAY 汇演 PERFORMANCE 音乐会 CONCERT 比赛 COMPETITION 讲座 LECTURE 校庆 SCHOOL_DAY 迎宾 WELCOME 其他 OTHER")
+        private ESchoolActivityType type;
+        
+        public String jsonString() {
+            return JSON.toJSONString(this);
+        }
+
+        public static SchoolActivity from(String json) {
+            return JSON.parseObject(json, SchoolActivity.class);
+        }
+	}
+
+
+    @Data
+    @ApiModel(" SchoolActivityDetail-学校活动详情")
+    public static class SchoolActivityDetail {
+
+        @ApiModelProperty("活动编号")
+        @NotNull(message = "活动编号不能为空",groups = {Update.class})
+        private Integer id;
+
+        @ApiModelProperty("合作单位ID")
+        private Integer cooperationOrganId;
+
+        @ApiModelProperty(value = "活动开始日期",required = true)
+        @NotNull(message = "活动开始日期不能为空")
+        private Date startTime;
+
+        @ApiModelProperty("活动结束日期")
+        private Date endTime;
+
+        @ApiModelProperty("活动状态 未开始 NOT_START 进行中 PROCESSING 已结束 END,")
+        private ESchoolActivityStatus status;
+
+        @ApiModelProperty(value = "活动名称",required = true)
+        private String name;
+
+        @ApiModelProperty(value = "活动类型 开放日 OPEN_DAY 汇演 PERFORMANCE 音乐会 CONCERT 比赛 COMPETITION 讲座 LECTURE 校庆 SCHOOL_DAY 迎宾 WELCOME 其他 OTHER",required = true)
+        @NotNull(message = "活动类型不能为空")
+        private ESchoolActivityType type;
+
+        @ApiModelProperty("活动详情")
+        @Valid
+        @NotEmpty(message = "活动节目不能为空")
+        private List<SchoolActivityDetailWrapper.SchoolActivityDetail> detail;
+    }
+
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" SchoolActivityStudentQuery-学校活动学生查询对象")
+    public static class SchoolActivityStudentQuery {
+
+        @ApiModelProperty("活动节目编号")
+        private Integer activityDetailId;
+
+        @ApiModelProperty("乐团ID")
+        private Integer musicGroupId;
+
+        @ApiModelProperty("声部ID集合")
+        private List<Integer> subjectIds;
+    }
+
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" SchoolActivitySubject-学校活动声部")
+    public static class SchoolActivitySubject {
+
+        @ApiModelProperty("声部ID")
+        private Integer subjectId;
+
+        @ApiModelProperty("声部名称")
+        private String subjectName;
+
+        @ApiModelProperty("声部学生数量")
+        private Integer studentCount;
+
+        @ApiModelProperty("学生列表")
+        private List<SchoolActivityStudent> studnetList;
+
+    }
+
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel(" SchoolActivityStudent-学校活动声部学生")
+    public static class SchoolActivityStudent {
+
+        @ApiModelProperty("学生ID")
+        private Integer studentId;
+
+        @ApiModelProperty("学生名")
+        private String studentName;
+
+
+        @ApiModelProperty("学生头像")
+        private String studentAvatar;
+
+        @ApiModelProperty("学生声部id")
+        private Integer subjectId;
+
+        @ApiModelProperty("学生声部")
+        private String subjectName;
+
+    }
+
+}

+ 167 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/StudentWrapper.java

@@ -0,0 +1,167 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.enums.EInGroupStatus;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+
+public class StudentWrapper {
+
+    @Data
+    @ApiModel("StudentQuery-学生查询")
+    public static class StudentQuery implements QueryInfo {
+
+        @ApiModelProperty("当前页")
+        private Integer page;
+
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+
+        @ApiModelProperty("关键字匹配")
+        private String keyword;
+
+        @ApiModelProperty("乐团ID")
+        private Integer musicGroupId;
+
+        @ApiModelProperty("声部ID")
+        private Integer subjectId;
+
+        @ApiModelProperty("合作单位ID")
+        private Integer cooperationOrganId;
+
+        @ApiModelProperty("是否vip")
+        private Boolean vipFlag;
+
+
+        @ApiModelProperty("学生ID")
+        private Integer studentId;
+
+
+
+    }
+
+
+
+    @Data
+    @ApiModel("StudentStat-学生统计")
+    public static class StudentStat{
+
+        @ApiModelProperty("在读学生人数")
+        private Integer studentCount;
+
+        @ApiModelProperty("退团学生人数")
+        private Integer quitCount;
+
+    }
+
+
+    @Data
+    @ApiModel("StudentList-学生列表")
+    public static class StudentList{
+
+        @ApiModelProperty("学生ID")
+        private Integer studentId;
+
+        @ApiModelProperty("学生姓名")
+        private String studentName;
+
+        @ApiModelProperty("学生头像")
+        private String studentAvatar;
+
+        @ApiModelProperty("是否vip")
+        private Boolean vipFlag;
+
+        @ApiModelProperty("实际出勤数")
+        private Integer actualAttendanceCount;
+
+        @ApiModelProperty("应出勤数")
+        private Integer shouldAttendanceCount;
+
+        @ApiModelProperty("正常出勤数")
+        private Integer normalAttendanceCount;
+
+        @ApiModelProperty("迟到")
+        private Integer lateCount;
+
+        @ApiModelProperty("请假")
+        private Integer leaveCount;
+
+        @ApiModelProperty("旷课")
+        private Integer truancyCount;
+
+        @ApiModelProperty("实际提交作业数")
+        private Integer actualSubmitCount;
+
+        @ApiModelProperty("应提交作业数")
+        private Integer shouldSubmitCount;
+
+        @ApiModelProperty("合格")
+        private Integer qualifiedCount;
+
+        @ApiModelProperty("不合格")
+        private Integer unqualifiedCount;
+
+        @ApiModelProperty("未提交")
+        private Integer unsubmitCount;
+
+    }
+
+
+
+    @EqualsAndHashCode(callSuper = true)
+    @Data
+    @ApiModel("StudentDetail-学生详情")
+    public static class StudentDetail extends StudentList{
+
+        @ApiModelProperty(value = "性别0女1男")
+        private Integer gender;
+
+        @ApiModelProperty(value = "手机号")
+        private String phone;
+
+        @ApiModelProperty(value = "年级")
+        private String currentGrade;
+
+        @ApiModelProperty(value = "年级(数字表示)")
+        private Integer currentGradeNum;
+
+        @ApiModelProperty(value = "班级")
+        private String currentClass;
+
+        @ApiModelProperty(value = "艺术实践次数")
+        private Integer artPracticeCount;
+
+        @ApiModelProperty(value = "在团状态 在团 IN 退团 OUT 申请退团 APPLY_OUT")
+        private EInGroupStatus inGroupStatus;
+
+    }
+
+
+
+    @Data
+    @ApiModel("UpdateStudent-学生修改")
+    public static class UpdateStudent {
+
+        @ApiModelProperty(value = "年级")
+        private String currentGrade;
+
+        @ApiModelProperty(value = "年级(数字表示)")
+        private Integer currentGradeNum;
+
+        @ApiModelProperty(value = "班级")
+        private String currentClass;
+
+        @NotNull(message = "学生ID不能为空")
+        @ApiModelProperty(value = "学生ID")
+        private Integer studentId;
+
+        @ApiModelProperty(value = "合作机构ID")
+        private Integer cooperationOrganId;
+
+    }
+}

+ 119 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/TeachingPointWrapper.java

@@ -0,0 +1,119 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+
+import java.util.Date;
+
+public class TeachingPointWrapper {
+
+    @Data
+    @ApiModel("TeachingPointQuery-教学点查询")
+    public static class TeachingPointQuery implements QueryInfo {
+
+        @ApiModelProperty("当前页")
+        private Integer page;
+
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+
+        @ApiModelProperty("合作单位ID")
+        private Integer cooperationOrganId;
+
+        @ApiModelProperty("乐团ID")
+        private Integer musicGroupId;
+
+
+        @ApiModelProperty("开始时间")
+        private Date startTime;
+
+        @ApiModelProperty("结束时间")
+        private Date endTime;
+
+    }
+
+
+    @Data
+    @ApiModel("TeachingPoint-教学点")
+    public static class TeachingPoint{
+
+
+        @ApiModelProperty("教学点")
+        private String teachingPoint;
+
+        @ApiModelProperty("班级ID")
+        private Integer classGroupId;
+
+    }
+
+
+    @Data
+    @ApiModel("CourseTeachingPoint-课程教学信息")
+    public static class CourseTeachingPoint {
+
+        @ApiModelProperty("课程ID")
+        private Integer courseId;
+
+        @ApiModelProperty("课程名")
+        private String courseName;
+
+        @ApiModelProperty("乐团ID")
+        private Integer musicGroupId;
+
+        @ApiModelProperty("乐团名")
+        private String musicGroupName;
+
+        @ApiModelProperty("老师ID")
+        private Integer teacherId;
+
+        @ApiModelProperty("老师名")
+        private String teacherName;
+
+        @ApiModelProperty("老师头像")
+        private String teacherAvatar;
+
+        @ApiModelProperty("签到照片")
+        private String signPhoto;
+
+        @ApiModelProperty("签退照片")
+        private String signOutPhoto;
+
+        @ApiModelProperty("教学点")
+        private String teachingPoint;
+    }
+
+
+
+    @Data
+    @ApiModel("ClassTeachingPoint-班级教学信息")
+    public static class ClassTeachingPoint {
+
+        @ApiModelProperty("班级ID")
+        private Integer classGroupId;
+
+        @ApiModelProperty("班级名")
+        private String classGroupName;
+
+        @ApiModelProperty("乐团ID")
+        private Integer musicGroupId;
+
+        @ApiModelProperty("乐团名")
+        private String musicGroupName;
+
+        @ApiModelProperty("老师ID")
+        private Integer teacherId;
+
+        @ApiModelProperty("老师名")
+        private String teacherName;
+
+        @ApiModelProperty("老师头像")
+        private String teacherAvatar;
+
+        @ApiModelProperty("教学点")
+        private String teachingPoint;
+    }
+
+}

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CoursePatrolEvaluationService.java

@@ -0,0 +1,43 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.wrapper.CoursePatrolEvaluationWrapper;
+import com.ym.mec.biz.dal.entity.CoursePatrolEvaluation;
+
+/**
+ * 巡堂详情
+ * 2023-05-04 11:32:00
+ */
+public interface CoursePatrolEvaluationService extends IService<CoursePatrolEvaluation>  {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return CoursePatrolEvaluation
+     */
+    CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo detail(Long id);
+
+    /**
+     * 分页查询
+     * @param page IPage<CoursePatrolEvaluation>
+     * @param query CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery
+     * @return IPage<CoursePatrolEvaluation>
+     */
+    IPage<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo> selectPage(IPage<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo> page, CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery query);
+	
+    /**
+     * 添加
+     * @param coursePatrolEvaluation CoursePatrolEvaluationWrapper.CoursePatrolEvaluation
+     * @return Boolean
+     */
+     Boolean add(CoursePatrolEvaluationWrapper.CoursePatrolEvaluation coursePatrolEvaluation);   
+
+    /**
+     * 更新
+     * @param coursePatrolEvaluation CoursePatrolEvaluationWrapper.CoursePatrolEvaluation
+     * @return Boolean
+     */
+     Boolean update(CoursePatrolEvaluationWrapper.CoursePatrolEvaluation coursePatrolEvaluation);
+
+}

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

@@ -9,6 +9,9 @@ import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
+import com.ym.mec.biz.dal.school.dto.DailySummaryOfClassesForTheCurrentSemesterDto;
+import com.ym.mec.biz.dal.school.dto.SummaryOfCurrentSemesterCoursesDto;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
@@ -690,4 +693,40 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	* @date 2022/9/23 13:57
 	*/
 	HttpResponseResult<List<CourseSchedule>> createCourse(ClassGroupDto groupDto);
+
+	/**
+	* @description: 获取学校端当前学期课程数量汇总
+	 * @param schoolId
+	* @return java.util.List<com.ym.mec.biz.dal.school.dto.SummaryOfCurrentSemesterCoursesDto>
+	* @author zx
+	* @date 2023/5/4 10:15
+	*/
+    List<SummaryOfCurrentSemesterCoursesDto> getSummaryOfCurrentSemesterCourses(Integer schoolId);
+
+	/**
+	* @description: 获取当前学期每天课程汇总
+	 * @param schoolId
+	* @return java.util.List<com.ym.mec.biz.dal.school.dto.DailySummaryOfClassesForTheCurrentSemesterDto>
+	* @author zx
+	* @date 2023/5/4 10:31
+	*/
+	List<DailySummaryOfClassesForTheCurrentSemesterDto> getDailySummaryOfClassesForTheCurrentSemester(Integer schoolId);
+
+	/**
+	* @description: 获取当天课程列表
+	 * @param schoolId
+	* @return java.util.List<com.ym.mec.biz.dal.school.dto.ClassesForDayDto>
+	* @author zx
+	* @date 2023/5/4 10:50
+	*/
+	List<ClassesForDayDto> getListClassesForDay(Integer schoolId,String classDate);
+
+	/**
+	* @description: 获取课程详情
+	 * @param courseId
+	* @return com.ym.mec.biz.dal.school.dto.ClassesForDayDto
+	* @author zx
+	* @date 2023/5/4 11:06
+	*/
+	ClassesForDayDto getCourseDetail(Long courseId);
 }

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SchoolActivityDetailService.java

@@ -0,0 +1,43 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityDetailWrapper;
+import com.ym.mec.biz.dal.entity.SchoolActivityDetail;
+
+/**
+ * 活动详情
+ * 2023-05-04 11:32:00
+ */
+public interface SchoolActivityDetailService extends IService<SchoolActivityDetail>  {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return SchoolActivityDetail
+     */
+	SchoolActivityDetail detail(Long id);
+
+    /**
+     * 分页查询
+     * @param page IPage<SchoolActivityDetail>
+     * @param query SchoolActivityDetailWrapper.SchoolActivityDetailQuery
+     * @return IPage<SchoolActivityDetail>
+     */
+    IPage<SchoolActivityDetail> selectPage(IPage<SchoolActivityDetail> page, SchoolActivityDetailWrapper.SchoolActivityDetailQuery query);
+	
+    /**
+     * 添加
+     * @param schoolActivityDetail SchoolActivityDetailWrapper.SchoolActivityDetail
+     * @return Boolean
+     */
+     Boolean add(SchoolActivityDetailWrapper.SchoolActivityDetail schoolActivityDetail);   
+
+    /**
+     * 更新
+     * @param schoolActivityDetail SchoolActivityDetailWrapper.SchoolActivityDetail
+     * @return Boolean
+     */
+     Boolean update(SchoolActivityDetailWrapper.SchoolActivityDetail schoolActivityDetail);
+     
+}

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SchoolActivityDetailUserService.java

@@ -0,0 +1,43 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityDetailUserWrapper;
+import com.ym.mec.biz.dal.entity.SchoolActivityDetailUser;
+
+/**
+ * 活动详情人员
+ * 2023-05-04 11:32:00
+ */
+public interface SchoolActivityDetailUserService extends IService<SchoolActivityDetailUser>  {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return SchoolActivityDetailUser
+     */
+	SchoolActivityDetailUser detail(Long id);
+
+    /**
+     * 分页查询
+     * @param page IPage<SchoolActivityDetailUser>
+     * @param query SchoolActivityDetailUserWrapper.SchoolActivityDetailUserQuery
+     * @return IPage<SchoolActivityDetailUser>
+     */
+    IPage<SchoolActivityDetailUser> selectPage(IPage<SchoolActivityDetailUser> page, SchoolActivityDetailUserWrapper.SchoolActivityDetailUserQuery query);
+	
+    /**
+     * 添加
+     * @param schoolActivityDetailUser SchoolActivityDetailUserWrapper.SchoolActivityDetailUser
+     * @return Boolean
+     */
+     Boolean add(SchoolActivityDetailUserWrapper.SchoolActivityDetailUser schoolActivityDetailUser);   
+
+    /**
+     * 更新
+     * @param schoolActivityDetailUser SchoolActivityDetailUserWrapper.SchoolActivityDetailUser
+     * @return Boolean
+     */
+     Boolean update(SchoolActivityDetailUserWrapper.SchoolActivityDetailUser schoolActivityDetailUser);
+     
+}

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SchoolActivityService.java

@@ -0,0 +1,43 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityWrapper;
+import com.ym.mec.biz.dal.entity.SchoolActivity;
+
+/**
+ * 学校活动
+ * 2023-05-04 11:32:00
+ */
+public interface SchoolActivityService extends IService<SchoolActivity>  {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return SchoolActivity
+     */
+    SchoolActivityWrapper.SchoolActivityDetail detail(Long id);
+
+    /**
+     * 分页查询
+     * @param page IPage<SchoolActivity>
+     * @param query SchoolActivityWrapper.SchoolActivityQuery
+     * @return IPage<SchoolActivity>
+     */
+    IPage<SchoolActivityWrapper.SchoolActivity> selectPage(IPage<SchoolActivityWrapper.SchoolActivity> page, SchoolActivityWrapper.SchoolActivityQuery query);
+	
+    /**
+     * 添加
+     * @param schoolActivity SchoolActivityWrapper.SchoolActivity
+     * @return Boolean
+     */
+     Boolean add(SchoolActivityWrapper.SchoolActivity schoolActivity);   
+
+    /**
+     * 更新
+     * @param schoolActivity SchoolActivityWrapper.SchoolActivity
+     * @return Boolean
+     */
+     Boolean update(SchoolActivityWrapper.SchoolActivity schoolActivity);
+     
+}

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java

@@ -10,6 +10,10 @@ import com.ym.mec.biz.dal.entity.TeacherAttendance;
 import com.ym.mec.biz.dal.enums.UpdateAttendanceEnum;
 import com.ym.mec.biz.dal.page.TeacherAttendanceComplaintsQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
+import com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto;
+import com.ym.mec.biz.dal.school.dto.TeacherAttendanceListDto;
+import com.ym.mec.biz.dal.school.dto.TeacherAttendanceSumDto;
+import com.ym.mec.biz.dal.school.page.TeacherAttendanceQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
@@ -160,4 +164,32 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	void updateDeviceNum(Integer courseId, String userId,String signInDeviceNum, String signOutDeviceNum);
 
 	void addTeacherAttendance(List<CourseSchedule> courseScheduleList);
+
+	/**
+	* @description: 学校端获取本学期课程关联的老师列表,以及老师考勤状况汇总
+	 * @param queryInfo
+	* @return com.ym.mec.biz.dal.school.dto.TeacherAttendanceSumDto
+	* @author zx
+	* @date 2023/5/4 14:39
+	*/
+	List<TeacherAttendanceSumDto> queryTeacherAttendance(TeacherAttendanceQueryInfo queryInfo);
+
+	/**
+	* @description: 获取本学期当前班级老师所有课程考勤
+	 * @param classGroupId
+	 * @param teacherId
+	* @return java.util.List<com.ym.mec.biz.dal.school.dto.TeacherAttendanceListDto>
+	* @author zx
+	* @date 2023/5/5 09:54
+	*/
+	List<TeacherAttendanceListDto> getClassTeacherAttendance(Integer classGroupId, Integer teacherId);
+
+	/**
+	* @description: 获取课程老师考勤
+	 * @param courseId
+	* @return com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto
+	* @author zx
+	* @date 2023/5/5 09:55
+	*/
+	TeacherAttendanceDto getCourseTeacherAttendance(Long courseId);
 }

+ 67 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursePatrolEvaluationServiceImpl.java

@@ -0,0 +1,67 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.beans.BeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import com.ym.mec.biz.dal.entity.CoursePatrolEvaluation;
+import com.ym.mec.biz.dal.wrapper.CoursePatrolEvaluationWrapper;
+import com.ym.mec.biz.dal.mapper.CoursePatrolEvaluationMapper;
+import com.ym.mec.biz.service.CoursePatrolEvaluationService;
+
+/**
+ * 巡堂详情
+ * 2023-05-04 11:32:00
+ */
+@Slf4j
+@Service
+public class CoursePatrolEvaluationServiceImpl extends ServiceImpl<CoursePatrolEvaluationMapper, CoursePatrolEvaluation> implements CoursePatrolEvaluationService {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return CoursePatrolEvaluation
+     */
+	@Override
+    public CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo detail(Long id) {
+
+        return null;
+    }
+    
+    /**
+     * 分页查询
+     * @param page IPage<CoursePatrolEvaluation>
+     * @param query CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery
+     * @return IPage<CoursePatrolEvaluation>
+     */
+    @Override
+    public IPage<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo> selectPage(IPage<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo> page,
+                                                                                  CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery query) {
+        
+        return page.setRecords(baseMapper.selectPage(page, query));
+    }
+	
+    /**
+     * 添加
+     * @param coursePatrolEvaluation CoursePatrolEvaluationWrapper.CoursePatrolEvaluation
+     * @return Boolean
+     */
+    @Override
+    public Boolean add(CoursePatrolEvaluationWrapper.CoursePatrolEvaluation coursePatrolEvaluation) {    	
+        
+        return this.save(JSON.parseObject(coursePatrolEvaluation.jsonString(), CoursePatrolEvaluation.class));
+    }
+
+    /**
+     * 更新
+     * @param coursePatrolEvaluation CoursePatrolEvaluationWrapper.CoursePatrolEvaluation
+     * @return Boolean
+     */
+    @Override
+    public Boolean update(CoursePatrolEvaluationWrapper.CoursePatrolEvaluation coursePatrolEvaluation){
+
+        return this.updateById(JSON.parseObject(coursePatrolEvaluation.jsonString(), CoursePatrolEvaluation.class));       
+    }
+}

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

@@ -10,6 +10,9 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
+import com.ym.mec.biz.dal.school.dto.DailySummaryOfClassesForTheCurrentSemesterDto;
+import com.ym.mec.biz.dal.school.dto.SummaryOfCurrentSemesterCoursesDto;
 import com.ym.mec.biz.event.source.CourseEventSource;
 import com.ym.mec.biz.event.source.SendSeoMessageSource;
 import com.ym.mec.biz.service.*;
@@ -5991,4 +5994,32 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		groupDto.getCourseScheduleStudentPayments().addAll(courseScheduleStudentPaymentService.init(courseScheduleList,studentIds));
 		return BaseController.succeed(courseScheduleList);
 	}
+
+    @Override
+    public List<SummaryOfCurrentSemesterCoursesDto> getSummaryOfCurrentSemesterCourses(Integer schoolId) {
+		//获取当前学期
+		Date date = new Date();
+		String startTerm = DateUtil.getStartTerm(date);
+		String endTerm = DateUtil.getEndTerm(date);
+        return null;
+    }
+
+	@Override
+	public List<DailySummaryOfClassesForTheCurrentSemesterDto> getDailySummaryOfClassesForTheCurrentSemester(Integer schoolId) {
+		//获取当前学期
+		Date date = new Date();
+		String startTerm = DateUtil.getStartTerm(date);
+		String endTerm = DateUtil.getEndTerm(date);
+		return null;
+	}
+
+	@Override
+	public List<ClassesForDayDto> getListClassesForDay(Integer schoolId,String classDate) {
+		return null;
+	}
+
+	@Override
+	public ClassesForDayDto getCourseDetail(Long courseId) {
+		return null;
+	}
 }

+ 66 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolActivityDetailServiceImpl.java

@@ -0,0 +1,66 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.beans.BeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import com.ym.mec.biz.dal.entity.SchoolActivityDetail;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityDetailWrapper;
+import com.ym.mec.biz.dal.mapper.SchoolActivityDetailMapper;
+import com.ym.mec.biz.service.SchoolActivityDetailService;
+
+/**
+ * 活动详情
+ * 2023-05-04 11:32:00
+ */
+@Slf4j
+@Service
+public class SchoolActivityDetailServiceImpl extends ServiceImpl<SchoolActivityDetailMapper, SchoolActivityDetail> implements SchoolActivityDetailService {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return SchoolActivityDetail
+     */
+	@Override
+    public SchoolActivityDetail detail(Long id) {
+        
+        return baseMapper.selectById(id);
+    }
+    
+    /**
+     * 分页查询
+     * @param page IPage<SchoolActivityDetail>
+     * @param query SchoolActivityDetailWrapper.SchoolActivityDetailQuery
+     * @return IPage<SchoolActivityDetail>
+     */
+    @Override
+    public IPage<SchoolActivityDetail> selectPage(IPage<SchoolActivityDetail> page, SchoolActivityDetailWrapper.SchoolActivityDetailQuery query) {
+        
+        return page.setRecords(baseMapper.selectPage(page, query));
+    }
+	
+    /**
+     * 添加
+     * @param schoolActivityDetail SchoolActivityDetailWrapper.SchoolActivityDetail
+     * @return Boolean
+     */
+    @Override
+    public Boolean add(SchoolActivityDetailWrapper.SchoolActivityDetail schoolActivityDetail) {    	
+        
+        return this.save(JSON.parseObject(schoolActivityDetail.jsonString(), SchoolActivityDetail.class));
+    }
+
+    /**
+     * 更新
+     * @param schoolActivityDetail SchoolActivityDetailWrapper.SchoolActivityDetail
+     * @return Boolean
+     */
+    @Override
+    public Boolean update(SchoolActivityDetailWrapper.SchoolActivityDetail schoolActivityDetail){
+
+        return this.updateById(JSON.parseObject(schoolActivityDetail.jsonString(), SchoolActivityDetail.class));       
+    }
+}

+ 66 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolActivityDetailUserServiceImpl.java

@@ -0,0 +1,66 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.beans.BeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import com.ym.mec.biz.dal.entity.SchoolActivityDetailUser;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityDetailUserWrapper;
+import com.ym.mec.biz.dal.mapper.SchoolActivityDetailUserMapper;
+import com.ym.mec.biz.service.SchoolActivityDetailUserService;
+
+/**
+ * 活动详情人员
+ * 2023-05-04 11:32:00
+ */
+@Slf4j
+@Service
+public class SchoolActivityDetailUserServiceImpl extends ServiceImpl<SchoolActivityDetailUserMapper, SchoolActivityDetailUser> implements SchoolActivityDetailUserService {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return SchoolActivityDetailUser
+     */
+	@Override
+    public SchoolActivityDetailUser detail(Long id) {
+        
+        return baseMapper.selectById(id);
+    }
+    
+    /**
+     * 分页查询
+     * @param page IPage<SchoolActivityDetailUser>
+     * @param query SchoolActivityDetailUserWrapper.SchoolActivityDetailUserQuery
+     * @return IPage<SchoolActivityDetailUser>
+     */
+    @Override
+    public IPage<SchoolActivityDetailUser> selectPage(IPage<SchoolActivityDetailUser> page, SchoolActivityDetailUserWrapper.SchoolActivityDetailUserQuery query) {
+        
+        return page.setRecords(baseMapper.selectPage(page, query));
+    }
+	
+    /**
+     * 添加
+     * @param schoolActivityDetailUser SchoolActivityDetailUserWrapper.SchoolActivityDetailUser
+     * @return Boolean
+     */
+    @Override
+    public Boolean add(SchoolActivityDetailUserWrapper.SchoolActivityDetailUser schoolActivityDetailUser) {    	
+        
+        return this.save(JSON.parseObject(schoolActivityDetailUser.jsonString(), SchoolActivityDetailUser.class));
+    }
+
+    /**
+     * 更新
+     * @param schoolActivityDetailUser SchoolActivityDetailUserWrapper.SchoolActivityDetailUser
+     * @return Boolean
+     */
+    @Override
+    public Boolean update(SchoolActivityDetailUserWrapper.SchoolActivityDetailUser schoolActivityDetailUser){
+
+        return this.updateById(JSON.parseObject(schoolActivityDetailUser.jsonString(), SchoolActivityDetailUser.class));       
+    }
+}

+ 66 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolActivityServiceImpl.java

@@ -0,0 +1,66 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.beans.BeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import com.ym.mec.biz.dal.entity.SchoolActivity;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityWrapper;
+import com.ym.mec.biz.dal.mapper.SchoolActivityMapper;
+import com.ym.mec.biz.service.SchoolActivityService;
+
+/**
+ * 学校活动
+ * 2023-05-04 11:32:00
+ */
+@Slf4j
+@Service
+public class SchoolActivityServiceImpl extends ServiceImpl<SchoolActivityMapper, SchoolActivity> implements SchoolActivityService {
+
+	/**
+     * 查询详情
+     * @param id 详情ID
+     * @return SchoolActivity
+     */
+	@Override
+    public SchoolActivityWrapper.SchoolActivityDetail detail(Long id) {
+        
+        return null;
+    }
+    
+    /**
+     * 分页查询
+     * @param page IPage<SchoolActivity>
+     * @param query SchoolActivityWrapper.SchoolActivityQuery
+     * @return IPage<SchoolActivity>
+     */
+    @Override
+    public IPage<SchoolActivityWrapper.SchoolActivity> selectPage(IPage<SchoolActivityWrapper.SchoolActivity> page, SchoolActivityWrapper.SchoolActivityQuery query) {
+        
+        return page.setRecords(baseMapper.selectPage(page, query));
+    }
+	
+    /**
+     * 添加
+     * @param schoolActivity SchoolActivityWrapper.SchoolActivity
+     * @return Boolean
+     */
+    @Override
+    public Boolean add(SchoolActivityWrapper.SchoolActivity schoolActivity) {    	
+        
+        return this.save(JSON.parseObject(schoolActivity.jsonString(), SchoolActivity.class));
+    }
+
+    /**
+     * 更新
+     * @param schoolActivity SchoolActivityWrapper.SchoolActivity
+     * @return Boolean
+     */
+    @Override
+    public Boolean update(SchoolActivityWrapper.SchoolActivity schoolActivity){
+
+        return this.updateById(JSON.parseObject(schoolActivity.jsonString(), SchoolActivity.class));       
+    }
+}

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

@@ -10,6 +10,9 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.TeacherAttendanceComplaintsQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
+import com.ym.mec.biz.dal.school.dto.TeacherAttendanceListDto;
+import com.ym.mec.biz.dal.school.dto.TeacherAttendanceSumDto;
+import com.ym.mec.biz.dal.school.page.TeacherAttendanceQueryInfo;
 import com.ym.mec.biz.event.source.SendMessageSource;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
@@ -1100,4 +1103,19 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		}
 		teacherAttendanceDao.batchInsert(teacherAttendanceList);
 	}
+
+    @Override
+    public List<TeacherAttendanceSumDto> queryTeacherAttendance(TeacherAttendanceQueryInfo queryInfo) {
+        return null;
+    }
+
+	@Override
+	public List<TeacherAttendanceListDto> getClassTeacherAttendance(Integer classGroupId, Integer teacherId) {
+		return null;
+	}
+
+	@Override
+	public com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto getCourseTeacherAttendance(Long courseId) {
+		return null;
+	}
 }

+ 24 - 0
mec-biz/src/main/resources/config/mybatis/CoursePatrolEvaluationMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ym.mec.biz.dal.mapper.CoursePatrolEvaluationMapper">
+    
+    <select id="selectPage" resultType="com.ym.mec.biz.dal.wrapper.CoursePatrolEvaluationWrapper$CoursePatrolEvaluationInfo">
+		SELECT         
+        	t.*
+		FROM course_patrol_evaluation t
+        left join course_schedule cs on cs.id_ = t.course_schedule_id_
+        left join sys_user su on cs.actual_teacher_id_ = su.id_
+        <where>
+            <if test="param.keyword != null and param.keyword != ''">
+                and (su.real_name_ like concat('%',#{param.keyword},'%')
+                or su.id_ like concat('%',#{param.keyword},'%')
+                or su.phone_ like concat('%',#{param.keyword},'%'))
+            </if>
+            <if test="param.startTime != null">
+                and cs.class_date_ &lt;= date_format(#{param.startTime},'%Y-%m-%d')
+            </if>
+
+        </where>
+	</select>
+    
+</mapper>

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/SchoolActivityDetailMapper.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ym.mec.biz.dal.mapper.SchoolActivityDetailMapper">
+    
+    <select id="selectPage" resultType="com.ym.mec.biz.dal.entity.SchoolActivityDetail">
+		SELECT         
+        	t.*
+		FROM school_activity_detail t
+	</select>
+    
+</mapper>

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/SchoolActivityDetailUserMapper.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ym.mec.biz.dal.mapper.SchoolActivityDetailUserMapper">
+    
+    <select id="selectPage" resultType="com.ym.mec.biz.dal.entity.SchoolActivityDetailUser">
+		SELECT         
+        	t.*
+		FROM school_activity_detail_user t
+	</select>
+    
+</mapper>

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/SchoolActivityMapper.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ym.mec.biz.dal.mapper.SchoolActivityMapper">
+    
+    <select id="selectPage" resultType="com.ym.mec.biz.dal.wrapper.SchoolActivityWrapper$SchoolActivity">
+		SELECT         
+        	t.*
+		FROM school_activity t
+	</select>
+    
+</mapper>

+ 1 - 1
mec-common/common-core/pom.xml

@@ -64,7 +64,7 @@
 		<dependency>
 			<groupId>org.springframework.security.oauth</groupId>
 			<artifactId>spring-security-oauth2</artifactId>
-			<version>2.2.1.RELEASE</version>
+			<version>2.3.3.RELEASE</version>
 		</dependency>
 
 		<dependency>

+ 27 - 1
mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

@@ -2,7 +2,6 @@ package com.ym.mec.util.date;
 
 import org.apache.commons.lang3.StringUtils;
 
-import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.DayOfWeek;
@@ -1244,6 +1243,33 @@ public class DateUtil {
 
     }
 
+    public static String getStartTerm(Date date) {
+		//一个学期默认为6个月,9月1日—2月28、29日,3月1日—8月31日
+		Integer month = Integer.parseInt(DateUtil.getMonth(date));
+		String year = DateUtil.getYear(date);
+		if(month >= 9 || month <= 2){
+			if(month >= 9){
+				return year + "-09-01 00:00:00";
+			}else {
+				String year1 = DateUtil.getYear(DateUtil.addYears(date, -1));
+				return year1 + "-09-01 00:00:00";
+			}
+		}else {
+			return year + "-03-01 00:00:00";
+		}
+    }
+
+    public static String getEndTerm(Date date) {
+		//一个学期默认为6个月,9月1日—2月28、29日,3月1日—8月31日
+		Integer month = Integer.parseInt(DateUtil.getMonth(date));
+		String year = DateUtil.getYear(date);
+		if(month >= 9 || month <= 2){
+			return year + "-02-01 00:00:00";
+		}else {
+			return year + "-08-31 00:00:00";
+		}
+    }
+
     /**
 	 * @describe 时间区段辅助类
 	 * @author Joburgess

+ 26 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -14,6 +14,7 @@ import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.biz.dal.page.ClassGroupQueryInfo;
 import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.queryMusicGroupCourseScheduleQueryInfo;
+import com.ym.mec.biz.dal.wrapper.TeachingPointWrapper;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
 import com.ym.mec.biz.service.OrganizationService;
@@ -423,4 +424,29 @@ public class ClassGroupController extends BaseController {
     public HttpResponseResult mergeClassSplitClassAffirm(@RequestBody MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) throws Exception {
         return classGroupService.mergeClassSplitClassAffirm(mergeClassSplitClassAffirmDto);
     }
+
+    @ApiOperation(value = "学校端-场地管理列表")
+    @PostMapping("/teachingPointCourse")
+    public HttpResponseResult<PageInfo<TeachingPointWrapper.CourseTeachingPoint>> teachingPoint(@RequestBody TeachingPointWrapper.TeachingPointQuery queryInfo) {
+        return succeed(null);
+    }
+
+    @ApiOperation(value = "学校端-场地设置列表")
+    @PostMapping("/teachingPointClass")
+    public HttpResponseResult<PageInfo<TeachingPointWrapper.ClassTeachingPoint>> teachingPointClass(@RequestBody TeachingPointWrapper.TeachingPointQuery queryInfo) {
+        return succeed(null);
+    }
+
+    @ApiOperation(value = "学校端-场地管理红点")
+    @PostMapping("/teachingPointRemind")
+    public HttpResponseResult<Boolean> teachingPointRemind() {
+        return succeed(null);
+    }
+
+
+    @ApiOperation(value = "学校端-场地设置")
+    @PostMapping("/teachingPoint")
+    public HttpResponseResult<Boolean> teachingPointRemind(@RequestBody TeachingPointWrapper.TeachingPoint teachingPoint) {
+        return succeed(null);
+    }
 }

+ 2 - 1
mec-web/src/main/java/com/ym/mec/web/controller/OrganizationController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.dal.enums.EGroupGradeType;
 import com.ym.mec.biz.dal.page.OrganizationQueryInfo;
 import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.common.controller.BaseController;
@@ -78,7 +79,7 @@ public class OrganizationController extends BaseController {
     @GetMapping("/getGradeList")
     @PreAuthorize("@pcs.hasPermissions('organization/getGradeList')")
     @ApiParam(value = "分部编号", required = true)
-    public HttpResponseResult<Map<Integer,String>> getGradeList(Integer id) {
+    public HttpResponseResult<Map<Integer,String>> getGradeList(Integer id,@ApiParam("年级分布") EGroupGradeType gradeType){
         return succeed(organizationService.getGradeList(id));
     }
 }

+ 44 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -1,13 +1,16 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.wrapper.StudentWrapper;
 import com.ym.mec.biz.service.*;
 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.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.*;
 import org.apache.commons.lang3.StringUtils;
@@ -15,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -405,4 +409,44 @@ public class StudentManageController extends BaseController {
     public HttpResponseResult<PageInfo<CloudTeacherSumDto>> cloudTeacherSumDetail(@RequestBody StudentCourseConsumerQueryInfo queryInfo) throws Exception {
         return succeed(studentService.cloudTeacherSumDetail(queryInfo));
     }
+
+
+    @ApiOperation(value = "学校端-人数统计")
+    @PostMapping("/userCount")
+    public HttpResponseResult<StudentWrapper.StudentStat> userCount(@RequestBody StudentWrapper.StudentQuery queryInfo) {
+        return succeed(null);
+    }
+
+
+
+    @ApiOperation(value = "学校端-学员分页")
+    @PostMapping("/userPage")
+    public HttpResponseResult<PageInfo<StudentWrapper.StudentList>> userPage(@RequestBody StudentWrapper.StudentQuery queryInfo) {
+        return succeed(null);
+    }
+
+
+    @ApiOperation(value = "学校端-学生所在乐团")
+    @PostMapping("/userMusicGroup")
+    public HttpResponseResult<List<MusicGroup>> userMusicGroup(@RequestParam Integer studentId) {
+
+        return succeed(null);
+    }
+
+    @ApiOperation(value = "学校端-学员详情")
+    @PostMapping("/userDetail")
+    public HttpResponseResult<StudentWrapper.StudentDetail> userDetail(@RequestBody StudentWrapper.StudentQuery queryInfo) {
+        if (queryInfo.getStudentId() == null) {
+            return failed("参数错误");
+        }
+        return succeed(null);
+    }
+
+
+    @ApiOperation(value = "学校端-修改学员班级信息")
+    @PostMapping("/updateGrade")
+    public HttpResponseResult<Boolean> updateGrade(@Valid @RequestBody StudentWrapper.UpdateStudent updateStudent) {
+        return succeed(null);
+    }
+
 }

+ 88 - 0
mec-web/src/main/java/com/ym/mec/web/controller/school/CoursePatrolEvaluationController.java

@@ -0,0 +1,88 @@
+package com.ym.mec.web.controller.school;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.Update;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.entity.CoursePatrolEvaluation;
+import com.ym.mec.biz.dal.wrapper.CoursePatrolEvaluationWrapper;
+import com.ym.mec.biz.service.CoursePatrolEvaluationService;
+import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/coursePatrolEvaluation")
+@Api(tags = "巡堂详情")
+public class CoursePatrolEvaluationController extends BaseController {
+
+    @Autowired
+    private CoursePatrolEvaluationService coursePatrolEvaluationService;
+
+    @Autowired
+    private OrganizationService organizationService;
+	@ApiOperation(value = "web-详情", notes = "巡堂详情-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo> detail(@PathVariable("id") Long id) {
+
+        CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo wrapper = coursePatrolEvaluationService.detail(id);
+        
+        return succeed(wrapper);
+	}
+
+    @ApiOperation(value = "学校端-查询巡堂统计分页", notes = "巡堂详情- 传入 CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery")
+    @PostMapping("/pageStat")
+    public HttpResponseResult<PageInfo<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationStat>> pageStat(@RequestBody CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery query) {
+
+        return succeed(null);
+    }
+
+
+    @ApiOperation(value = "web-查询巡堂分页", notes = "巡堂详情- 传入 CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery")
+    @PostMapping("/webPage")
+    public HttpResponseResult<PageInfo<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo>> webPage(@RequestBody CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery query) {
+
+        query.setOrganId(organizationService.getEmployeeOrgan(query.getOrganId()));
+        IPage<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo> pages = coursePatrolEvaluationService.selectPage(QueryInfo.getPage(query), query);
+
+        return succeed(QueryInfo.pageInfo(pages));
+    }
+
+    @ApiOperation(value = "学校端-查询巡堂分页", notes = "巡堂详情- 传入 CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery")
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo>> page(@RequestBody CoursePatrolEvaluationWrapper.CoursePatrolEvaluationQuery query) {
+
+        IPage<CoursePatrolEvaluationWrapper.CoursePatrolEvaluationInfo> pages = coursePatrolEvaluationService.selectPage(QueryInfo.getPage(query), query);
+        
+        return succeed(QueryInfo.pageInfo(pages));
+	}
+    
+    @ApiOperation(value = "学校端-添加巡堂信息", notes = "巡堂详情- 传入 CoursePatrolEvaluationWrapper.CoursePatrolEvaluation")
+	@PostMapping("/save")
+	public HttpResponseResult<JSONObject> add(@Validated @RequestBody CoursePatrolEvaluationWrapper.CoursePatrolEvaluation coursePatrolEvaluation) {
+        
+        // 新增数据
+        coursePatrolEvaluationService.update(coursePatrolEvaluation);
+        
+        return succeed();
+	}
+    
+    @ApiOperation(value = "web-处理意见,学校端-修改", notes = "巡堂详情- 传入 CoursePatrolEvaluationWrapper.CoursePatrolEvaluation")
+	@PostMapping("/update")
+	public HttpResponseResult<JSONObject> update(@Validated(value = Update.class) @RequestBody CoursePatrolEvaluationWrapper.CoursePatrolEvaluation coursePatrolEvaluation) {
+        
+        // 更新数据
+        coursePatrolEvaluationService.update(coursePatrolEvaluation);
+        
+        return succeed();
+	}
+}

+ 77 - 0
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolActivityController.java

@@ -0,0 +1,77 @@
+package com.ym.mec.web.controller.school;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.Update;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.entity.SchoolActivity;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityWrapper;
+import com.ym.mec.biz.service.SchoolActivityService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/schoolActivity")
+@Api(tags = "学校活动")
+public class SchoolActivityController extends BaseController {
+
+    @Autowired
+    private SchoolActivityService schoolActivityService;
+
+	@ApiOperation(value = "详情", notes = "学校活动-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<SchoolActivityWrapper.SchoolActivityDetail> detail(@PathVariable("id") Long id) {
+
+        SchoolActivityWrapper.SchoolActivityDetail wrapper = schoolActivityService.detail(id);
+        
+        return succeed(wrapper);
+	}
+    
+    @ApiOperation(value = "查询分页", notes = "学校活动- 传入 SchoolActivityWrapper.SchoolActivityQuery") 
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<SchoolActivityWrapper.SchoolActivity>> page(@RequestBody SchoolActivityWrapper.SchoolActivityQuery query) {
+        
+        IPage<SchoolActivityWrapper.SchoolActivity> pages = schoolActivityService.selectPage(QueryInfo.getPage(query), query);
+        
+        return succeed(QueryInfo.pageInfo(pages));
+	}
+
+
+    @ApiOperation(value = "查询乐团学生信息")
+    @PostMapping("/userList")
+    public HttpResponseResult<PageInfo<SchoolActivityWrapper.SchoolActivitySubject>> userList(@RequestBody SchoolActivityWrapper.SchoolActivityStudentQuery query) {
+
+
+        return succeed(null);
+    }
+    
+    @ApiOperation(value = "新增", notes = "学校活动- 传入 SchoolActivityWrapper.SchoolActivity")
+	@PostMapping("/save")
+	public HttpResponseResult<JSONObject> add(@Validated @RequestBody SchoolActivityWrapper.SchoolActivityDetail schoolActivity) {
+        
+        return succeed();
+	}
+    
+    @ApiOperation(value = "修改", notes = "学校活动- 传入 SchoolActivityWrapper.SchoolActivity")
+	@PostMapping("/update")
+	public HttpResponseResult<JSONObject> update(@Validated(value = Update.class) @RequestBody SchoolActivityWrapper.SchoolActivityDetail schoolActivity) {
+        
+        return succeed();
+	}
+
+	@ApiOperation(value = "删除", notes = "学校活动- 传入id")
+//	@PostMapping("/remove")
+	public HttpResponseResult<Boolean> remove(@RequestParam Long id) {
+    
+		return succeed(schoolActivityService.removeById(id));
+	}
+}

+ 73 - 0
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolActivityDetailController.java

@@ -0,0 +1,73 @@
+package com.ym.mec.web.controller.school;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.entity.SchoolActivityDetail;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityDetailWrapper;
+import com.ym.mec.biz.service.SchoolActivityDetailService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/schoolActivityDetail")
+@Api(tags = "活动详情")
+public class SchoolActivityDetailController extends BaseController {
+
+    @Autowired
+    private SchoolActivityDetailService schoolActivityDetailService;
+
+	@ApiOperation(value = "详情", notes = "活动详情-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<SchoolActivityDetail> detail(@PathVariable("id") Long id) {
+    
+    	SchoolActivityDetail wrapper = schoolActivityDetailService.detail(id);
+        
+        return succeed(wrapper);
+	}
+    
+    @ApiOperation(value = "查询分页", notes = "活动详情- 传入 SchoolActivityDetailWrapper.SchoolActivityDetailQuery") 
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<SchoolActivityDetail>> page(@RequestBody SchoolActivityDetailWrapper.SchoolActivityDetailQuery query) {
+        
+        IPage<SchoolActivityDetail> pages = schoolActivityDetailService.selectPage(QueryInfo.getPage(query), query);
+        
+        return succeed(QueryInfo.pageInfo(pages));
+	}
+    
+    @ApiOperation(value = "新增", notes = "活动详情- 传入 SchoolActivityDetailWrapper.SchoolActivityDetail")
+	@PostMapping("/save")
+	public HttpResponseResult<JSONObject> add(@Validated @RequestBody SchoolActivityDetail schoolActivityDetail) {
+        
+        // 新增数据
+        schoolActivityDetailService.save(schoolActivityDetail);
+        
+        return succeed();
+	}
+    
+    @ApiOperation(value = "修改", notes = "活动详情- 传入 SchoolActivityDetailWrapper.SchoolActivityDetail")
+	@PostMapping("/update")
+	public HttpResponseResult<JSONObject> update(@Validated @RequestBody SchoolActivityDetail schoolActivityDetail) {
+        
+        // 更新数据
+        schoolActivityDetailService.updateById(schoolActivityDetail);
+        
+        return succeed();
+	}
+
+	@ApiOperation(value = "删除", notes = "活动详情- 传入id")
+	@PostMapping("/remove")
+	public HttpResponseResult<Boolean> remove(@RequestParam Long id) {
+    
+		return succeed(schoolActivityDetailService.removeById(id));
+	}
+}

+ 73 - 0
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolActivityDetailUserController.java

@@ -0,0 +1,73 @@
+package com.ym.mec.web.controller.school;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.entity.SchoolActivityDetailUser;
+import com.ym.mec.biz.dal.wrapper.SchoolActivityDetailUserWrapper;
+import com.ym.mec.biz.service.SchoolActivityDetailUserService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/schoolActivityDetailUser")
+@Api(tags = "活动详情人员")
+public class SchoolActivityDetailUserController extends BaseController {
+
+    @Autowired
+    private SchoolActivityDetailUserService schoolActivityDetailUserService;
+
+	@ApiOperation(value = "详情", notes = "活动详情人员-根据详情ID查询单条, 传入id")
+    @GetMapping("/detail/{id}")
+    public HttpResponseResult<SchoolActivityDetailUser> detail(@PathVariable("id") Long id) {
+    
+    	SchoolActivityDetailUser wrapper = schoolActivityDetailUserService.detail(id);
+        
+        return succeed(wrapper);
+	}
+    
+    @ApiOperation(value = "查询分页", notes = "活动详情人员- 传入 SchoolActivityDetailUserWrapper.SchoolActivityDetailUserQuery") 
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<SchoolActivityDetailUser>> page(@RequestBody SchoolActivityDetailUserWrapper.SchoolActivityDetailUserQuery query) {
+        
+        IPage<SchoolActivityDetailUser> pages = schoolActivityDetailUserService.selectPage(QueryInfo.getPage(query), query);
+        
+        return succeed(QueryInfo.pageInfo(pages));
+	}
+    
+    @ApiOperation(value = "新增", notes = "活动详情人员- 传入 SchoolActivityDetailUserWrapper.SchoolActivityDetailUser")
+	@PostMapping("/save")
+	public HttpResponseResult<JSONObject> add(@Validated @RequestBody SchoolActivityDetailUser schoolActivityDetailUser) {
+        
+        // 新增数据
+        schoolActivityDetailUserService.save(schoolActivityDetailUser);
+        
+        return succeed();
+	}
+    
+    @ApiOperation(value = "修改", notes = "活动详情人员- 传入 SchoolActivityDetailUserWrapper.SchoolActivityDetailUser")
+	@PostMapping("/update")
+	public HttpResponseResult<JSONObject> update(@Validated @RequestBody SchoolActivityDetailUser schoolActivityDetailUser) {
+        
+        // 更新数据
+        schoolActivityDetailUserService.updateById(schoolActivityDetailUser);
+        
+        return succeed();
+	}
+
+	@ApiOperation(value = "删除", notes = "活动详情人员- 传入id")
+	@PostMapping("/remove")
+	public HttpResponseResult<Boolean> remove(@RequestParam Long id) {
+    
+		return succeed(schoolActivityDetailUserService.removeById(id));
+	}
+}

+ 68 - 0
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolCourseScheduleController.java

@@ -0,0 +1,68 @@
+package com.ym.mec.web.controller.school;
+
+import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
+import com.ym.mec.biz.dal.school.dto.DailySummaryOfClassesForTheCurrentSemesterDto;
+import com.ym.mec.biz.dal.school.dto.SummaryOfCurrentSemesterCoursesDto;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("schoolCourseSchedule")
+@Api(tags = "学校端课程计划服务")
+public class SchoolCourseScheduleController extends BaseController {
+
+    @Autowired
+    private CourseScheduleService courseScheduleService;
+
+    @ApiOperation(value = "课时顶部统计接口---获取当前学期课程汇总")
+    @GetMapping("/getSummaryOfCurrentSemesterCourses")
+    public HttpResponseResult<List<SummaryOfCurrentSemesterCoursesDto>> getSummaryOfCurrentSemesterCourses(Integer schoolId) {
+        return succeed(courseScheduleService.getSummaryOfCurrentSemesterCourses(schoolId));
+    }
+
+    @ApiOperation(value = "课时每周分组数据接口----获取当前学期每天课程汇总")
+    @GetMapping("/getDailySummaryOfClassesForTheCurrentSemester")
+    public HttpResponseResult<List<DailySummaryOfClassesForTheCurrentSemesterDto>> getDailySummaryOfClassesForTheCurrentSemester(Integer schoolId) {
+        return succeed(courseScheduleService.getDailySummaryOfClassesForTheCurrentSemester(schoolId));
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "classDate", dataType = "String", required = true, value = "上课时间(年月日)"),
+            @ApiImplicitParam(name = "schoolId", dataType = "Integer", required = true, value = "学校"),
+    })
+    @ApiOperation(value = "课时每天课程数据详情----获取当天课程列表")
+    @GetMapping("/queryListClassesForDay")
+    public HttpResponseResult<List<ClassesForDayDto>> queryListClassesForDay(Integer schoolId,String classDate) {
+        return succeed(courseScheduleService.getListClassesForDay(schoolId,classDate));
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "courseId", dataType = "Long", required = true, value = "课程编号"),
+    })
+    @ApiOperation(value = "课时获取单个的课程数据详情----获取课程详情")
+    @GetMapping("/getCourseDetail")
+    public HttpResponseResult<ClassesForDayDto> getCourseDetail(Long courseId) {
+        return succeed(courseScheduleService.getCourseDetail(courseId));
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "courseId", dataType = "Long", required = true, value = "课程编号"),
+    })
+    @ApiOperation(value = "课时获取单节课学员名单--获取课程学员列表")
+    @GetMapping("/queryCourseStudentList")
+    public HttpResponseResult<ClassesForDayDto> queryCourseStudentList(Long courseId) {
+        return succeed(courseScheduleService.getCourseDetail(courseId));
+    }
+
+}

+ 67 - 0
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolTeacherAttendanceController.java

@@ -0,0 +1,67 @@
+package com.ym.mec.web.controller.school;
+
+import com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto;
+import com.ym.mec.biz.dal.school.dto.TeacherAttendanceListDto;
+import com.ym.mec.biz.dal.school.dto.TeacherAttendanceSumDto;
+import com.ym.mec.biz.dal.school.page.TeacherAttendanceQueryDto;
+import com.ym.mec.biz.dal.school.page.TeacherAttendanceQueryInfo;
+import com.ym.mec.biz.service.TeacherAttendanceService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.*;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Collection;
+import java.util.List;
+
+@RequestMapping("schoolTeacherAttendance")
+@Api(tags = "学校端教师考勤服务")
+@RestController
+public class SchoolTeacherAttendanceController extends BaseController {
+
+    @Autowired
+    private TeacherAttendanceService teacherAttendanceService;
+
+    @ApiOperation(value = "首页教师考勤列表查询----获取本学期课程关联的老师列表,以及老师考勤状况汇总")
+    @PostMapping("/queryTeacherAttendance")
+    public HttpResponseResult<List<TeacherAttendanceSumDto>> queryTeacherAttendance(TeacherAttendanceQueryInfo queryInfo){
+        return succeed(teacherAttendanceService.queryTeacherAttendance(queryInfo));
+    }
+
+    @ApiOperation(value = "获取单个老师本学期考勤汇总")
+    @PostMapping("/getTeacherAttendance")
+    public HttpResponseResult<TeacherAttendanceSumDto> getTeacherAttendance(TeacherAttendanceQueryDto queryDto){
+        TeacherAttendanceQueryInfo queryInfo = new TeacherAttendanceQueryInfo();
+        queryInfo.setSchoolId(queryDto.getSchoolId());
+        queryInfo.setTeacherId(queryDto.getTeacherId());
+        queryInfo.setClassGroupId(queryDto.getClassGroupId());
+        List<TeacherAttendanceSumDto> sumDtos = teacherAttendanceService.queryTeacherAttendance(queryInfo);
+        return succeed(CollectionUtils.isEmpty(sumDtos)?new TeacherAttendanceSumDto():sumDtos.get(0));
+    }
+
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "courseId", dataType = "Long", required = true, value = "课程编号"),
+    })
+    @ApiOperation(value = "课时获取单节课老师考勤详情----获取课程老师考勤")
+    @GetMapping("/getCourseTeacherAttendance")
+    public HttpResponseResult<TeacherAttendanceDto> getCourseTeacherAttendance(Long courseId) {
+        return succeed(teacherAttendanceService.getCourseTeacherAttendance(courseId));
+    }
+
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "classGroupId", dataType = "Integer", required = true, value = "班级编号"),
+            @ApiImplicitParam(name = "teacherId", dataType = "Integer", required = true, value = "老师编号"),
+    })
+    @ApiOperation(value = "获取单个老师所在班级考勤列表----获取本学期当前班级老师所有课程考勤")
+    @GetMapping("/getClassTeacherAttendance")
+    public HttpResponseResult<List<TeacherAttendanceListDto>> getClassTeacherAttendance(Integer classGroupId, Integer teacherId) {
+        return succeed(teacherAttendanceService.getClassTeacherAttendance(classGroupId,teacherId));
+    }
+}