Browse Source

Merge remote-tracking branch 'origin/feature/0427-school' into feature/0427-school

shangke 2 years ago
parent
commit
e8727a5582
61 changed files with 2668 additions and 41 deletions
  1. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  3. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SubFeeSettingDto.java
  5. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroup.java
  6. 72 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CoursePatrolEvaluation.java
  7. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  8. 59 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SchoolActivity.java
  9. 71 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SchoolActivityDetail.java
  10. 35 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SchoolActivityDetailUser.java
  11. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/CourseStatusEnum.java
  12. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EEvaluateProblemType.java
  13. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EEvaluateStatus.java
  14. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EGroupGradeType.java
  15. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EInGroupStatus.java
  16. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ESchoolActivityProgramType.java
  17. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ESchoolActivityStatus.java
  18. 30 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ESchoolActivityType.java
  19. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexErrorType.java
  20. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/StudentAttendanceStatusEnum.java
  21. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/CoursePatrolEvaluationMapper.java
  22. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolActivityDetailMapper.java
  23. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolActivityDetailUserMapper.java
  24. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolActivityMapper.java
  25. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/ClassesForDayDto.java
  26. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/CourseStudentDto.java
  27. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/DailySummaryOfClassesForTheCurrentSemesterDto.java
  28. 259 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/CoursePatrolEvaluationWrapper.java
  29. 63 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityDetailUserWrapper.java
  30. 123 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityDetailWrapper.java
  31. 201 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityWrapper.java
  32. 167 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/StudentWrapper.java
  33. 119 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/TeachingPointWrapper.java
  34. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CoursePatrolEvaluationService.java
  35. 15 5
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  36. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SchoolActivityDetailService.java
  37. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SchoolActivityDetailUserService.java
  38. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SchoolActivityService.java
  39. 67 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursePatrolEvaluationServiceImpl.java
  40. 103 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  41. 66 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolActivityDetailServiceImpl.java
  42. 66 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolActivityDetailUserServiceImpl.java
  43. 66 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolActivityServiceImpl.java
  44. 24 0
      mec-biz/src/main/resources/config/mybatis/CoursePatrolEvaluationMapper.xml
  45. 45 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  46. 3 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  47. 11 0
      mec-biz/src/main/resources/config/mybatis/SchoolActivityDetailMapper.xml
  48. 11 0
      mec-biz/src/main/resources/config/mybatis/SchoolActivityDetailUserMapper.xml
  49. 11 0
      mec-biz/src/main/resources/config/mybatis/SchoolActivityMapper.xml
  50. 24 0
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  51. 5 5
      mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java
  52. 26 0
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  53. 2 1
      mec-web/src/main/java/com/ym/mec/web/controller/OrganizationController.java
  54. 44 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java
  55. 0 1
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduOrganizationController.java
  56. 88 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/CoursePatrolEvaluationController.java
  57. 77 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolActivityController.java
  58. 73 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolActivityDetailController.java
  59. 73 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolActivityDetailUserController.java
  60. 17 9
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolCourseScheduleController.java
  61. 4 2
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolTeacherAttendanceController.java

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

@@ -6,6 +6,9 @@ import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.page.CourseDetailQueryInfo;
+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.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -1993,4 +1996,14 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
         "param") Map<String, Object> param, @Param("courseIds") List<Long> courseIds);
 
     int countTeacherServeHomeworkDetailV2(@Param("param") Map<String, Object> params, @Param("courseIds") List<Long> courseIds);
+
+    List<SummaryOfCurrentSemesterCoursesDto> getSummaryOfCurrentSemesterCourses(@Param("musicGroupIds") List<String> musicGroupIds,
+                                                                                @Param("startTerm") String startTerm,
+                                                                                @Param("endTerm") String endTerm);
+
+    List<DailySummaryOfClassesForTheCurrentSemesterDto> getDailySummaryOfClassesForTheCurrentSemester(@Param("musicGroupIds") List<String> musicGroupIds,
+                                                                                                      @Param("startTerm") String startTerm,
+                                                                                                      @Param("endTerm") String endTerm);
+
+    List<ClassesForDayDto> getListClassesForDay(@Param("musicGroupIds") List<String> musicGroupIds, @Param("classDate") String classDate, @Param("courseId") Long courseId);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -527,4 +527,13 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
     List<Map<Integer, String>> queryUserEduMap(@Param("userIdList") List<Integer> userIdList);
 
     List<Map<Integer, String>> queryUserCoopMap(@Param("userIdList") List<Integer> userIdList);
+
+    /**
+    * @description: 根据合作单位获取进行中的乐团列表
+     * @param coopId
+    * @return java.util.List<java.lang.String>
+    * @author zx
+    * @date 2023/5/5 17:08
+    */
+    List<String> findNormalByCooperationId(@Param("coopId") Integer coopId);
 }

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

@@ -4,6 +4,8 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
+import com.ym.mec.biz.dal.school.dto.CourseStudentDto;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Param;
@@ -352,4 +354,22 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
     void updateQualified(@Param("courseScheduleId") Long courseScheduleId,
                          @Param("studentIds") List<Integer> studentIds,
                          @Param("qualifiedFlag") Integer qualifiedFlag);
+
+    /**
+    * @description: 统计课程学员考勤信息
+     * @param courseIds
+    * @return java.util.List<com.ym.mec.biz.dal.school.dto.ClassesForDayDto>
+    * @author zx
+    * @date 2023/5/6 10:39
+    */
+    List<ClassesForDayDto> statisticalAttendanceInformation(@Param("courseIds") List<Long> courseIds);
+
+    /**
+    * @description: 获取学校端课程关联的学员信息
+     * @param courseId
+    * @return java.util.List<com.ym.mec.biz.dal.school.dto.CourseStudentDto>
+    * @author zx
+    * @date 2023/5/6 11:43
+    */
+    List<CourseStudentDto> queryCourseStudentList(@Param("courseId") Long courseId);
 }

+ 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;
+
+}

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

@@ -207,7 +207,19 @@ public class CourseSchedule  extends BaseEntity{
 	//当前课程是否是转换课
 	private Boolean convertFlag = false;
 
-	public Boolean getSettlementReportFlag() {
+
+    @ApiModelProperty("教学点")
+    private String 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;
+
+}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/CourseStatusEnum.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.enums;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum CourseStatusEnum implements BaseEnum<String,CourseStatusEnum> {
@@ -7,6 +8,7 @@ public enum CourseStatusEnum implements BaseEnum<String,CourseStatusEnum> {
     UNDERWAY("UNDERWAY","进行中"),
     OVER("OVER","已结束");
 
+    @EnumValue
     private String code;
 
     private String msg;

+ 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;

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/StudentAttendanceStatusEnum.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.enums;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.ym.mec.common.enums.BaseEnum;
 
 /**
@@ -12,6 +13,7 @@ public enum StudentAttendanceStatusEnum implements BaseEnum<String,StudentAttend
     DROP_OUT("DROP_OUT","退学"),
     LATE("LATE","迟到");
 
+    @EnumValue
     private String code;
 
     private String msg;

+ 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);
+	
+}

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

@@ -18,12 +18,18 @@ public class ClassesForDayDto {
     @ApiModelProperty(value = "上课时间",required = false)
     private String classDate;
 
+    @ApiModelProperty(value = "老师编号",required = false)
+    private Integer teacherId;
+
     @ApiModelProperty(value = "老师头像",required = false)
     private String teacherAvatar;
 
     @ApiModelProperty(value = "老师名称",required = false)
     private String teacherName;
 
+    @ApiModelProperty(value = "乐团编号",required = false)
+    private String musicGroupId;
+
     @ApiModelProperty(value = "乐团名称",required = false)
     private String musicGroupName;
 
@@ -41,4 +47,7 @@ public class ClassesForDayDto {
 
     @ApiModelProperty(value = "旷课人数",required = false)
     private Integer attendanceTruantNum;
+
+    @ApiModelProperty(value = "退学人数",required = false)
+    private Integer attendanceDropNum;
 }

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

@@ -6,6 +6,9 @@ import lombok.Data;
 
 @Data
 public class CourseStudentDto {
+    @ApiModelProperty(value = "学员编号",required = false)
+    private Integer studentId;
+
     @ApiModelProperty(value = "学员头像",required = false)
     private String studentAvatar;
 

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/DailySummaryOfClassesForTheCurrentSemesterDto.java

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

+ 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);
+
+}

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

@@ -10,6 +10,7 @@ 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.CourseStudentDto;
 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;
@@ -696,12 +697,12 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 
 	/**
 	* @description: 获取学校端当前学期课程数量汇总
-	 * @param schoolId
+	 * @param coopId
 	* @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);
+    List<SummaryOfCurrentSemesterCoursesDto> getSummaryOfCurrentSemesterCourses(Integer coopId);
 
 	/**
 	* @description: 获取当前学期每天课程汇总
@@ -710,16 +711,16 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	* @author zx
 	* @date 2023/5/4 10:31
 	*/
-	List<DailySummaryOfClassesForTheCurrentSemesterDto> getDailySummaryOfClassesForTheCurrentSemester(Integer schoolId);
+	Map<Integer, List<DailySummaryOfClassesForTheCurrentSemesterDto>> getDailySummaryOfClassesForTheCurrentSemester(Integer schoolId);
 
 	/**
 	* @description: 获取当天课程列表
-	 * @param schoolId
+	 * @param coopId
 	* @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);
+	List<ClassesForDayDto> getListClassesForDay(Integer coopId,String classDate);
 
 	/**
 	* @description: 获取课程详情
@@ -729,4 +730,13 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	* @date 2023/5/4 11:06
 	*/
 	ClassesForDayDto getCourseDetail(Long courseId);
+
+	/**
+	* @description: 获取学校端课程学员列表
+	 * @param courseId
+	* @return java.util.List<com.ym.mec.biz.dal.school.dto.CourseStudentDto>
+	* @author zx
+	* @date 2023/5/6 11:29
+	*/
+	List<CourseStudentDto> queryCourseStudentList(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);
+     
+}

+ 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));       
+    }
+}

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

@@ -11,6 +11,7 @@ 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.CourseStudentDto;
 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;
@@ -33,6 +34,7 @@ import com.ym.mec.util.date.DateConvertor;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.json.JsonUtil;
 
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.ListUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -45,17 +47,14 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import org.springframework.util.CollectionUtils;
-
 import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.Duration;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
+import java.time.*;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.IsoFields;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -5996,30 +5995,121 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
     @Override
-    public List<SummaryOfCurrentSemesterCoursesDto> getSummaryOfCurrentSemesterCourses(Integer schoolId) {
+    public List<SummaryOfCurrentSemesterCoursesDto> getSummaryOfCurrentSemesterCourses(Integer coopId) {
+		//获取合作单位关联的所有乐团列表
+		List<String> musicGroupIds = musicGroupDao.findNormalByCooperationId(coopId);
+		if(CollectionUtils.isEmpty(musicGroupIds)){
+			return Collections.EMPTY_LIST;
+		}
 		//获取当前学期
 		Date date = new Date();
 		String startTerm = DateUtil.getStartTerm(date);
 		String endTerm = DateUtil.getEndTerm(date);
-        return null;
+		return courseScheduleDao.getSummaryOfCurrentSemesterCourses(musicGroupIds,startTerm,endTerm);
     }
 
 	@Override
-	public List<DailySummaryOfClassesForTheCurrentSemesterDto> getDailySummaryOfClassesForTheCurrentSemester(Integer schoolId) {
+	public Map<Integer, List<DailySummaryOfClassesForTheCurrentSemesterDto>> getDailySummaryOfClassesForTheCurrentSemester(Integer coopId) {
+		//获取合作单位关联的所有乐团列表
+		List<String> musicGroupIds = musicGroupDao.findNormalByCooperationId(coopId);
 		//获取当前学期
 		Date date = new Date();
 		String startTerm = DateUtil.getStartTerm(date);
 		String endTerm = DateUtil.getEndTerm(date);
-		return null;
+		List<DailySummaryOfClassesForTheCurrentSemesterDto> summary;
+		if(CollectionUtils.isEmpty(musicGroupIds)){
+			summary = new ArrayList<>();
+		}else {
+			summary = courseScheduleDao.getDailySummaryOfClassesForTheCurrentSemester(musicGroupIds, startTerm, endTerm);
+		}
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateUtil.ISO_EXPANDED_DATE_FORMAT);
+		LocalDate startDate = LocalDate.parse(startTerm, formatter);
+		LocalDate endDate = LocalDate.parse(endTerm, formatter);
+		Map<Integer, List<DailySummaryOfClassesForTheCurrentSemesterDto>> result = new HashMap<>();
+		LocalDate currentWeekStart = startDate.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+		while (!currentWeekStart.isAfter(endDate)) {
+			int currentWeekNumber = currentWeekStart.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);
+			LocalDate currentWeekEnd = currentWeekStart.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
+			List<DailySummaryOfClassesForTheCurrentSemesterDto> currentWeekDates = new ArrayList<>();
+			for (DailySummaryOfClassesForTheCurrentSemesterDto dto : summary) {
+				if (!dto.getCourseDate().isBefore(currentWeekStart) && dto.getCourseDate().isBefore(currentWeekEnd)) {
+					currentWeekDates.add(dto);
+				}
+			}
+			result.put(currentWeekNumber, currentWeekDates);
+			currentWeekStart = currentWeekEnd.plusDays(1);
+		}
+		return result;
 	}
 
 	@Override
-	public List<ClassesForDayDto> getListClassesForDay(Integer schoolId,String classDate) {
-		return null;
+	public List<ClassesForDayDto> getListClassesForDay(Integer coopId,String classDate) {
+		//获取合作单位关联的所有乐团列表
+		List<String> musicGroupIds = musicGroupDao.findNormalByCooperationId(coopId);
+		if(CollectionUtils.isEmpty(musicGroupIds)){
+			return Collections.EMPTY_LIST;
+		}
+		List<ClassesForDayDto> listClassesForDay = courseScheduleDao.getListClassesForDay(musicGroupIds, classDate,null);
+		this.initClasses(listClassesForDay);
+		return listClassesForDay;
 	}
 
 	@Override
 	public ClassesForDayDto getCourseDetail(Long courseId) {
-		return null;
+		List<ClassesForDayDto> listClassesForDay = courseScheduleDao.getListClassesForDay(null, null,courseId);
+		this.initClasses(listClassesForDay);
+		return listClassesForDay.get(0);
 	}
+
+	@Override
+	public List<CourseStudentDto> queryCourseStudentList(Long courseId) {
+		List<CourseStudentDto> courseStudentDtos = studentAttendanceDao.queryCourseStudentList(courseId);
+		if(CollectionUtils.isNotEmpty(courseStudentDtos)){
+			List<Integer> studentIds = courseStudentDtos.stream().map(e -> e.getStudentId()).collect(Collectors.toList());
+			List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(studentIds);
+			Map<Integer, SimpleUserDto> simpleUserDtoMap = usersSimpleInfo.stream().collect(Collectors.groupingBy(e -> e.getUserId(), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0))));
+			for (CourseStudentDto dto : courseStudentDtos) {
+				SimpleUserDto userDto = simpleUserDtoMap.get(dto.getStudentId());
+				if(Objects.nonNull(userDto)){
+					dto.setStudentName(userDto.getUserName());
+					dto.setStudentAvatar(userDto.getAvatar());
+				}
+			}
+		}
+		return courseStudentDtos;
+	}
+
+	private void initClasses(List<ClassesForDayDto> listClassesForDay){
+		if(CollectionUtils.isNotEmpty(listClassesForDay)){
+			Set<String> musicGroupIds = listClassesForDay.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
+			//获取乐团名称
+			Map<String,String> musicNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds));
+			//获取老师基本信息
+			List<Integer> teacherIds = listClassesForDay.stream().map(e -> e.getTeacherId()).collect(Collectors.toList());
+			List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(teacherIds);
+			Map<Integer, SimpleUserDto> simpleUserDtoMap = usersSimpleInfo.stream().collect(Collectors.groupingBy(e -> e.getUserId(), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0))));
+			//统计考勤信息
+			List<Long> courseIds = listClassesForDay.stream().map(e -> e.getCourseId()).collect(Collectors.toList());
+			List<ClassesForDayDto> dtoList = studentAttendanceDao.statisticalAttendanceInformation(courseIds);
+			Map<Long, ClassesForDayDto> dtoMap = dtoList.stream().collect(Collectors.groupingBy(e -> e.getCourseId(), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0))));
+			for (ClassesForDayDto dto : listClassesForDay) {
+				SimpleUserDto userDto = simpleUserDtoMap.get(dto.getTeacherId());
+				if(Objects.nonNull(userDto)){
+					dto.setTeacherName(userDto.getRealName());
+					dto.setTeacherAvatar(userDto.getAvatar());
+				}
+				dto.setMusicGroupName(musicNameMap.get(dto.getMusicGroupId()));
+				ClassesForDayDto dayDto = dtoMap.get(dto.getCourseId());
+				if(Objects.nonNull(dayDto)){
+					dto.setStudentNum(dayDto.getStudentNum());
+					dto.setAttendanceNormalNum(dayDto.getAttendanceNormalNum());
+					dto.setAttendanceLateNum(dayDto.getAttendanceLateNum());
+					dto.setAttendanceLeaveNum(dayDto.getAttendanceLeaveNum());
+					dto.setAttendanceTruantNum(dayDto.getAttendanceTruantNum());
+					dto.setAttendanceDropNum(dayDto.getAttendanceDropNum());
+				}
+			}
+		}
+	}
+
 }

+ 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));       
+    }
+}

+ 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>

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

@@ -4202,10 +4202,53 @@
         count(1)
         from course_schedule cs
         left join course_homework ch on cs.id_ = ch.course_schedule_id_
-
         <where>
-
             <include refid="selectPage"/>
         </where>
     </select>
+
+    <select id="getSummaryOfCurrentSemesterCourses"
+            resultType="com.ym.mec.biz.dal.school.dto.SummaryOfCurrentSemesterCoursesDto">
+        select cs.type_ scheduleType,COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 END) subCourseNum,
+               COUNT(cs.id_) totalCourseNum
+        from mec_pro.course_schedule cs
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.new_course_id_ IS NULL
+        AND cs.class_date_ BETWEEN #{startTerm} AND #{endTerm}
+        AND cs.music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
+            #{musicGroupId}
+        </foreach>
+        group by cs.type_
+    </select>
+    <select id="getDailySummaryOfClassesForTheCurrentSemester"
+            resultType="com.ym.mec.biz.dal.school.dto.DailySummaryOfClassesForTheCurrentSemesterDto">
+        select cs.class_date_ courseDate,cs.type_ scheduleType,COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 END) subCourseNum,
+               COUNT(cs.id_) totalCourseNum
+        from mec_pro.course_schedule cs
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.new_course_id_ IS NULL
+        AND cs.class_date_ BETWEEN #{startTerm} AND #{endTerm}
+        AND cs.music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
+            #{musicGroupId}
+        </foreach>
+        group by cs.class_date_,cs.type_
+    </select>
+    <select id="getListClassesForDay" resultType="com.ym.mec.biz.dal.school.dto.ClassesForDayDto">
+        select cs.id_ courseId,CONCAT(cs.class_date_,' ',cs.start_class_time_,'~',cs.end_class_time_) classDate,cs.status_ courseStatus,cs.name_ courseName,
+        actual_teacher_id_ teacherId,cs.music_group_id_ musicGroupId
+        from mec_pro.course_schedule cs
+        where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.new_course_id_ IS NULL
+        <if test="classDate != null and classDate != ''">
+            AND cs.class_date_ = #{classDate}
+        </if>
+        <if test="courseId != null and courseId != ''">
+            AND cs.id_ = #{courseId}
+        </if>
+        <if test="musicGroupIds != null and musicGroupIds.size > 0">
+            AND cs.music_group_id_ IN
+            <foreach collection="musicGroupIds" item="musicGroupId" open="(" separator="," close=")">
+                #{musicGroupId}
+            </foreach>
+        </if>
+    </select>
 </mapper>

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -1247,4 +1247,7 @@
         </foreach>
         GROUP BY sr.user_id_
     </select>
+    <select id="findNormalByCooperationId" resultType="java.lang.String">
+        SELECT id_ FROM music_group WHERE cooperation_organ_id_ = #{coopId} AND mg.status_ = 'PROGRESS'
+    </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>

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

@@ -674,4 +674,28 @@
         </foreach>
         GROUP BY sa.user_id_
     </select>
+    <select id="statisticalAttendanceInformation" resultType="com.ym.mec.biz.dal.school.dto.ClassesForDayDto">
+        select COUNT(cssp.user_id_) studentNum,
+               COUNT(CASE WHEN sa.status_ = 'NORMAL' THEN 1 END) attendanceNormalNum,
+               COUNT(CASE WHEN sa.status_ = 'TRUANT' OR sa.id_ IS NULL THEN 1 END) attendanceTruantNum,
+               COUNT(CASE WHEN sa.status_ = 'LEAVE' THEN 1 END) attendanceLeaveNum,
+               COUNT(CASE WHEN sa.status_ = 'DROP_OUT' THEN 1 END) attendanceDropNum,
+               COUNT(CASE WHEN sa.status_ = 'LATE' THEN 1 END) attendanceLateNum,
+        cssp.course_schedule_id_ courseId
+        from mec_pro.course_schedule_student_payment cssp
+                 left join mec_pro.student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ and sa.user_id_ = cssp.user_id_
+        where cssp.course_schedule_id_ IN
+        <foreach collection="courseIds" item="courseId" separator="," open="(" close=")">
+            #{courseId}
+        </foreach>
+        group by cssp.course_schedule_id_
+    </select>
+    <select id="queryCourseStudentList" resultType="com.ym.mec.biz.dal.school.dto.CourseStudentDto">
+        select cssp.user_id_ studentId,COUNT(CASE WHEN sa.id_ IS NULL THEN 'TRUANT' ELSE sa.status_ END) attendanceStatus,sa.qualified_flag_ qualifiedFlag
+                                      ,CASE WHEN s.membership_end_time_ > NOW() THEN 1 ELSE 0 END memberFlag
+        from mec_pro.course_schedule_student_payment cssp
+        left join mec_pro.student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ and sa.user_id_ = cssp.user_id_
+        left join student s ON s.user_id_ = cssp.user_id_
+        where cssp.course_schedule_id_ = #{courseId}
+    </select>
 </mapper>

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

@@ -1249,13 +1249,13 @@ public class DateUtil {
 		String year = DateUtil.getYear(date);
 		if(month >= 9 || month <= 2){
 			if(month >= 9){
-				return year + "-09-01 00:00:00";
+				return year + "-09-01";
 			}else {
 				String year1 = DateUtil.getYear(DateUtil.addYears(date, -1));
-				return year1 + "-09-01 00:00:00";
+				return year1 + "-09-01";
 			}
 		}else {
-			return year + "-03-01 00:00:00";
+			return year + "-03-01";
 		}
     }
 
@@ -1264,9 +1264,9 @@ public class DateUtil {
 		Integer month = Integer.parseInt(DateUtil.getMonth(date));
 		String year = DateUtil.getYear(date);
 		if(month >= 9 || month <= 2){
-			return year + "-02-01 00:00:00";
+			return year + "-02-01";
 		}else {
-			return year + "-08-31 00:00:00";
+			return year + "-08-31";
 		}
     }
 

+ 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);
+    }
+
 }

+ 0 - 1
mec-web/src/main/java/com/ym/mec/web/controller/education/EduOrganizationController.java

@@ -33,7 +33,6 @@ public class EduOrganizationController extends BaseController {
     @ApiOperation(value = "获取员工所在分部列表")
     @GetMapping("/queryAllOrgan")
     public HttpResponseResult<List<Organization>> queryAllOrgan() throws Exception {
-
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if(sysUser == null || sysUser.getId() == null){
 	    	Integer tenantId = 1;

+ 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));
+	}
+}

+ 17 - 9
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolCourseScheduleController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.web.controller.school;
 
 import com.ym.mec.biz.dal.school.dto.ClassesForDayDto;
+import com.ym.mec.biz.dal.school.dto.CourseStudentDto;
 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;
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping("schoolCourseSchedule")
@@ -27,24 +29,30 @@ public class SchoolCourseScheduleController extends BaseController {
 
     @ApiOperation(value = "课时顶部统计接口---获取当前学期课程汇总")
     @GetMapping("/getSummaryOfCurrentSemesterCourses")
-    public HttpResponseResult<List<SummaryOfCurrentSemesterCoursesDto>> getSummaryOfCurrentSemesterCourses(Integer schoolId) {
-        return succeed(courseScheduleService.getSummaryOfCurrentSemesterCourses(schoolId));
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "coopId", dataType = "Integer", required = true, value = "合作单位"),
+    })
+    public HttpResponseResult<List<SummaryOfCurrentSemesterCoursesDto>> getSummaryOfCurrentSemesterCourses(Integer coopId) {
+        return succeed(courseScheduleService.getSummaryOfCurrentSemesterCourses(coopId));
     }
 
     @ApiOperation(value = "课时每周分组数据接口----获取当前学期每天课程汇总")
     @GetMapping("/getDailySummaryOfClassesForTheCurrentSemester")
-    public HttpResponseResult<List<DailySummaryOfClassesForTheCurrentSemesterDto>> getDailySummaryOfClassesForTheCurrentSemester(Integer schoolId) {
-        return succeed(courseScheduleService.getDailySummaryOfClassesForTheCurrentSemester(schoolId));
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "coopId", dataType = "Integer", required = true, value = "合作单位"),
+    })
+    public HttpResponseResult<Map<Integer, List<DailySummaryOfClassesForTheCurrentSemesterDto>>> getDailySummaryOfClassesForTheCurrentSemester(Integer coopId) {
+        return succeed(courseScheduleService.getDailySummaryOfClassesForTheCurrentSemester(coopId));
     }
 
     @ApiImplicitParams({
             @ApiImplicitParam(name = "classDate", dataType = "String", required = true, value = "上课时间(年月日)"),
-            @ApiImplicitParam(name = "schoolId", dataType = "Integer", required = true, value = "学校"),
+            @ApiImplicitParam(name = "coopId", dataType = "Integer", required = true, value = "合作单位"),
     })
     @ApiOperation(value = "课时每天课程数据详情----获取当天课程列表")
     @GetMapping("/queryListClassesForDay")
-    public HttpResponseResult<List<ClassesForDayDto>> queryListClassesForDay(Integer schoolId,String classDate) {
-        return succeed(courseScheduleService.getListClassesForDay(schoolId,classDate));
+    public HttpResponseResult<List<ClassesForDayDto>> queryListClassesForDay(Integer coopId,String classDate) {
+        return succeed(courseScheduleService.getListClassesForDay(coopId,classDate));
     }
 
     @ApiImplicitParams({
@@ -61,8 +69,8 @@ public class SchoolCourseScheduleController extends BaseController {
     })
     @ApiOperation(value = "课时获取单节课学员名单--获取课程学员列表")
     @GetMapping("/queryCourseStudentList")
-    public HttpResponseResult<ClassesForDayDto> queryCourseStudentList(Long courseId) {
-        return succeed(courseScheduleService.getCourseDetail(courseId));
+    public HttpResponseResult<List<CourseStudentDto>> queryCourseStudentList(Long courseId) {
+        return succeed(courseScheduleService.queryCourseStudentList(courseId));
     }
 
 }

+ 4 - 2
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolTeacherAttendanceController.java

@@ -8,7 +8,10 @@ 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 io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -16,7 +19,6 @@ 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")