Browse Source

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

shangke 2 years ago
parent
commit
14b835251f
25 changed files with 246 additions and 95 deletions
  1. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  2. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SchoolActivityDetail.java
  3. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/EGroupGradeType.java
  4. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/FivePlusGradeEnum.java
  5. 58 39
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SixPlusGradeEnum.java
  6. 3 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceDto.java
  7. 5 10
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityWrapper.java
  8. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/StudentWrapper.java
  9. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/TeachingPointWrapper.java
  10. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java
  11. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/OrganizationService.java
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java
  13. 12 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  14. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  15. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java
  16. 1 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  17. 28 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  18. 2 2
      mec-biz/src/main/resources/config/mybatis/CourseSchedulePlusMapper.xml
  19. 5 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  20. 2 2
      mec-biz/src/main/resources/config/mybatis/SchoolActivityMapper.xml
  21. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentPlusMapper.xml
  22. 20 0
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  23. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/OrganizationController.java
  24. 2 1
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduMusicGroupRecordController.java
  25. 3 2
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolTeacherAttendanceController.java

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.TeacherAttendance;
 import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.school.dto.TeacherAttendanceListDto;
 import com.ym.mec.biz.dal.school.dto.TeacherAttendanceSumDto;
 import com.ym.mec.biz.dal.school.page.TeacherAttendanceQueryInfo;
 import com.ym.mec.common.dal.BaseDAO;
@@ -271,4 +272,24 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
     List<TeacherAttendanceSumDto> queryTeacherAttendance(@Param("queryInfo") TeacherAttendanceQueryInfo queryInfo);
 
 	List<Map<Integer,Integer>> queryTeacherAttendanceForWeek(@Param("queryInfo") TeacherAttendanceQueryInfo queryInfo);
+
+	/**
+	* @description: 获取班级老师考勤列表
+	 * @param classGroupId
+	 * @param teacherId
+	* @return java.util.List<com.ym.mec.biz.dal.school.dto.TeacherAttendanceListDto>
+	* @author zx
+	* @date 2023/5/10 11:55
+	*/
+    List<TeacherAttendanceListDto> getClassTeacherAttendance(@Param("classGroupId") Integer classGroupId, @Param("teacherId") Integer teacherId);
+
+	/**
+	* @description: 获取课程关联的老师考勤
+	 * @param courseId
+	 * @param teacherId
+	* @return com.ym.mec.biz.dal.dto.TeacherAttendanceDto
+	* @author zx
+	* @date 2023/5/10 14:28
+	*/
+	com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto getCourseTeacherAttendance(@Param("courseId") Long courseId, @Param("teacherId") Integer teacherId);
 }

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

@@ -44,7 +44,7 @@ public class SchoolActivityDetail implements Serializable {
 
     @ApiModelProperty("乐团ID") 
 	@TableField(value = "music_group_id_")
-    private Integer musicGroupId;
+    private String musicGroupId;
 
     @ApiModelProperty("声部ID集合") 
 	@TableField(value = "subject_id_list_")

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

@@ -31,4 +31,12 @@ public enum EGroupGradeType implements BaseEnum<String, EGroupGradeType> {
         this.msg = msg;
     }
 
+    public static EGroupGradeType get(String code) {
+        for (EGroupGradeType vpg : EGroupGradeType.values()) {
+            if (vpg.getCode().equals(code)) {
+                return vpg;
+            }
+        }
+        return null;
+    }
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/FivePlusGradeEnum.java

@@ -43,4 +43,24 @@ public enum FivePlusGradeEnum implements BaseEnum<Integer, FivePlusGradeEnum> {
 		return null;
 	}
 
+
+    public static FivePlusGradeEnum[] getArray(EGroupGradeType gradeType) {
+        if (gradeType == null) {
+            return FivePlusGradeEnum.values();
+        }
+        switch (gradeType) {
+            case PRIMARY:
+                return new FivePlusGradeEnum[] {GRADE1, GRADE2, GRADE3, GRADE4, GRADE5};
+            case MIDDLE:
+                return new FivePlusGradeEnum[] {GRADE6,GRADE7, GRADE8, GRADE9};
+            case HIGH:
+                return new FivePlusGradeEnum[] {GRADE10, GRADE11, GRADE12};
+            case MIXED:
+                return  new FivePlusGradeEnum[] {GRADE1, GRADE2, GRADE3, GRADE4, GRADE5, GRADE6, GRADE7, GRADE8, GRADE9};
+            default:
+                return FivePlusGradeEnum.values();
+        }
+
+    }
+
 }

+ 58 - 39
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SixPlusGradeEnum.java

@@ -3,44 +3,63 @@ package com.ym.mec.biz.dal.enums;
 import com.ym.mec.common.enums.BaseEnum;
 
 public enum SixPlusGradeEnum implements BaseEnum<Integer, SixPlusGradeEnum> {
-	GRADE1(1, "一年级"),
-	GRADE2(2, "二年级"),
-	GRADE3(3, "三年级"),
-	GRADE4(4, "四年级"),
-	GRADE5(5, "五年级"),
-	GRADE6(6, "六年级"),
-	GRADE7(7, "七年级/初一"),
-	GRADE8(8, "八年级/初二"),
-	GRADE9(9, "九年级/初三"),
-	GRADE10(10, "高一"),
-	GRADE11(11, "高二"),
-	GRADE12(12, "高三");
-
-	private Integer code;
-
-	private String desc;
-
-	private SixPlusGradeEnum(Integer code, String desc) {
-		this.code = code;
-		this.desc = desc;
-	}
-
-	@Override
-	public Integer getCode() {
-		return code;
-	}
-
-	public String getDesc() {
-		return desc;
-	}
-	
-	public static SixPlusGradeEnum get(String desc) {
-		for (SixPlusGradeEnum vpg : SixPlusGradeEnum.values()) {
-			if (vpg.getDesc().equals(desc)) {
-				return vpg;
-			}
-		}
-		return null;
-	}
+    GRADE1(1, "一年级"),
+    GRADE2(2, "二年级"),
+    GRADE3(3, "三年级"),
+    GRADE4(4, "四年级"),
+    GRADE5(5, "五年级"),
+    GRADE6(6, "六年级"),
+    GRADE7(7, "七年级/初一"),
+    GRADE8(8, "八年级/初二"),
+    GRADE9(9, "九年级/初三"),
+    GRADE10(10, "高一"),
+    GRADE11(11, "高二"),
+    GRADE12(12, "高三");
+
+    private Integer code;
+
+    private String desc;
+
+    private SixPlusGradeEnum(Integer code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    @Override
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public static SixPlusGradeEnum get(String desc) {
+        for (SixPlusGradeEnum vpg : SixPlusGradeEnum.values()) {
+            if (vpg.getDesc().equals(desc)) {
+                return vpg;
+            }
+        }
+        return null;
+    }
+
+    public static SixPlusGradeEnum[] getArray(EGroupGradeType gradeType) {
+        if (gradeType == null) {
+            return SixPlusGradeEnum.values();
+        }
+        switch (gradeType) {
+            case PRIMARY:
+                return new SixPlusGradeEnum[] {GRADE1, GRADE2, GRADE3, GRADE4, GRADE5, GRADE6};
+            case MIDDLE:
+                return new SixPlusGradeEnum[] {GRADE7, GRADE8, GRADE9};
+                case HIGH:
+                return new SixPlusGradeEnum[] {GRADE10, GRADE11, GRADE12};
+            case MIXED:
+                return  new SixPlusGradeEnum[] {GRADE1, GRADE2, GRADE3, GRADE4, GRADE5, GRADE6, GRADE7, GRADE8, GRADE9};
+            default:
+                return SixPlusGradeEnum.values();
+        }
+
+    }
 
 }

+ 3 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceDto.java

@@ -34,11 +34,9 @@ public class TeacherAttendanceDto {
     private String signOutLongitudeLatitude;
 
     @ApiModelProperty(value = "教学模式")
-    private TeachModeEnum teachModeEnum;
-
-    @ApiModelProperty(value = "教学点签退经纬度")
-    private String schoolOutLongitudeLatitude;
+    private TeachModeEnum teachMode;
 
     @ApiModelProperty(value = "教学点签到经纬度")
-    private String schoolInLongitudeLatitude;
+    private String schoolLongitudeLatitude;
+
 }

+ 5 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityWrapper.java

@@ -1,29 +1,24 @@
 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.microsvc.toolkit.config.validator.group.ValidGroups;
 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;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
 
 /**
  * 学校活动
@@ -55,7 +50,7 @@ public class SchoolActivityWrapper {
         private Integer studentId;
 
         @ApiModelProperty("乐团ID")
-        private Long musicGroupId;
+        private String musicGroupId;
 
         @ApiModelProperty("开始时间")
         private Date startTime;
@@ -157,7 +152,7 @@ public class SchoolActivityWrapper {
     public static class SchoolActivityStudentQuery {
 
         @ApiModelProperty("乐团ID")
-        private Long musicGroupId;
+        private String musicGroupId;
 
         @ApiModelProperty("声部ID集合")
         private List<Integer> subjectIds;

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

@@ -32,7 +32,7 @@ public class StudentWrapper {
         private String keyword;
 
         @ApiModelProperty("乐团ID")
-        private Long musicGroupId;
+        private String musicGroupId;
 
         @ApiModelProperty("声部ID")
         private Integer subjectId;
@@ -59,10 +59,10 @@ public class StudentWrapper {
 
 
         @ApiModelProperty("乐团ID")
-        private Long musicGroupId;
+        private String musicGroupId;
 
         @ApiModelProperty("乐团ID集合")
-        private List<Long> musicGroupIds;
+        private List<String> musicGroupIds;
 
         @ApiModelProperty("学生ID集合")
         private List<Integer> studentIds;
@@ -212,7 +212,7 @@ public class StudentWrapper {
 
         @NotNull(message = "乐团ID不能为空")
         @ApiModelProperty(value = "乐团ID")
-        private Long musicGroupId;
+        private String musicGroupId;
 
         @ApiModelProperty(value = "合作机构ID")
         private Integer cooperationOrganId;

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

@@ -28,7 +28,7 @@ public class TeachingPointWrapper {
         private Integer cooperationOrganId;
 
         @ApiModelProperty("乐团ID")
-        private Long musicGroupId;
+        private String musicGroupId;
 
 
         @ApiModelProperty("开始时间")
@@ -70,7 +70,7 @@ public class TeachingPointWrapper {
         private CourseStatusEnum courseStatus;
 
         @ApiModelProperty("乐团ID")
-        private Long musicGroupId;
+        private String musicGroupId;
 
         @ApiModelProperty("乐团名")
         private String musicGroupName;
@@ -107,7 +107,7 @@ public class TeachingPointWrapper {
         private String classGroupName;
 
         @ApiModelProperty("乐团ID")
-        private Long musicGroupId;
+        private String musicGroupId;
 
         @ApiModelProperty("乐团名")
         private String musicGroupName;

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -66,6 +66,8 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      */
     void practiceTeacherSalarySettlement(Integer tenantId);
 
+    Boolean getSignRange(String schoolLongitudeLatitude, String longitudeLatitude, String gpsRange);
+
     /**
      * @describe 教师乐团课课酬结算
      * @author Joburgess
@@ -329,4 +331,7 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
     */
     void splitTeacherSalary(List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList, List<CourseScheduleTeacherSalary> teacherSalaries);
 
+    List<CourseScheduleTeacherSalary> findByCourseSchedule(Long courseScheduleId);
+
+    List<CourseScheduleTeacherSalary> findByCourseSchedules(List<Long> courseScheduleIds);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/OrganizationService.java

@@ -7,6 +7,7 @@ import java.util.Map;
 import java.util.Set;
 
 import com.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.dal.enums.EGroupGradeType;
 import com.ym.mec.biz.dal.page.EducationBaseQueryInfo;
 import com.ym.mec.common.service.BaseService;
 
@@ -95,4 +96,11 @@ public interface OrganizationService extends BaseService<Integer, Organization>
      * @param organIds 分部id
      */
     Map<Integer,Organization> getMapByIds(List<Integer> organIds);
+
+    /**
+     * 获取分部学年制的年级列表
+     * @param organId 分部id
+     * @param gradeType 年级类型
+     */
+    Map<Integer, String> getGradeList(Integer organId, EGroupGradeType gradeType);
 }

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

@@ -191,7 +191,7 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	* @author zx
 	* @date 2023/5/5 09:55
 	*/
-	TeacherAttendanceDto getCourseTeacherAttendance(Long courseId);
+	TeacherAttendanceDto getCourseTeacherAttendance(Long courseId, Integer teacherId);
 
     Map<Long,TeacherAttendance> getMapByCourseIds(List<Long> courseIds);
 }

+ 12 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -2,11 +2,9 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.entity.SalarySettlementDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.CourseSalaryQueryInfo4Web;
@@ -15,10 +13,8 @@ import com.ym.mec.biz.dal.page.ExportTeacherSalaryQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherIncomeQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
-import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
-import com.ym.mec.common.filters.TenantIdThreadLocal;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.tenant.TenantContextHolder;
@@ -27,31 +23,24 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.formula.functions.T;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.DateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoField;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
-import java.util.function.BiConsumer;
-import java.util.function.BiFunction;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Service
@@ -659,7 +648,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         return getCutAmount(cutSalary,cutSalaryUnit,salary);
     }
 
-    public Boolean getSignRange(String schoolLongitudeLatitude,String longitudeLatitude,String gpsRange){
+    @Override
+    public Boolean getSignRange(String schoolLongitudeLatitude, String longitudeLatitude, String gpsRange){
         if(StringUtils.isEmpty(gpsRange)){
             return true;
         }
@@ -2441,4 +2431,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
     }
 
+    @Override
+    public List<CourseScheduleTeacherSalary> findByCourseSchedule(Long courseScheduleId) {
+        return courseScheduleTeacherSalaryDao.findByCourseSchedule(courseScheduleId);
+    }
+
+    @Override
+    public List<CourseScheduleTeacherSalary> findByCourseSchedules(List<Long> courseScheduleIds) {
+        return courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
+    }
+
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -448,6 +448,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new BizException("获取用户信息失败");
         }
         MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
+        if (StringUtils.isBlank(musicGroup.getGradeType()) && StringUtils.isNotBlank(subFeeSettingDto.getGradeType())) {
+            musicGroup.setGradeType(subFeeSettingDto.getGradeType());
+        }
         List<MusicGroupSubjectGoodsGroup> musicGroupSubjectGoodsGroups = subFeeSettingDto.getMusicGroupSubjectGoodsGroups();
         List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans();
         List<SubjectRegisterDto> subjectRegisters = subFeeSettingDto.getSubjectRegisters();
@@ -3254,6 +3257,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
         musicGroup.setStatus(group.getStatus());
+        if (StringUtils.isBlank(musicGroup.getGradeType()) && StringUtils.isNotBlank(subFeeSettingDto.getGradeType())) {
+            musicGroup.setGradeType(subFeeSettingDto.getGradeType());
+        }
         if (!group.getSchoolId().equals(musicGroup.getSchoolId())) {
             //如果已生成课表,那么修改未上课时教学点
             courseScheduleDao.updateCourseScheduleSchool("MUSIC", musicGroupId, musicGroup.getSchoolId());

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.entity.TenantInfo;
+import com.ym.mec.biz.dal.enums.EGroupGradeType;
 import com.ym.mec.biz.dal.enums.FivePlusGradeEnum;
 import com.ym.mec.biz.dal.enums.GradeTypeEnum;
 import com.ym.mec.biz.dal.enums.SixPlusGradeEnum;
@@ -237,6 +238,31 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 
     }
 
+
+    /**
+     * 获取分部学年制的年级列表
+     * @param organId 分部id
+     * @param gradeType 年级类型
+     */
+    @Override
+    public Map<Integer, String> getGradeList(Integer organId, EGroupGradeType gradeType) {
+        Organization organization = organizationDao.get(organId);
+        Map<Integer, String> gradeMap = new HashMap<>();
+
+        if(Objects.isNull(organization) || organization.getGradeType().equals(GradeTypeEnum.SIX_PLUS)){
+            SixPlusGradeEnum[] sixPlusGradeEnums = SixPlusGradeEnum.getArray(gradeType);
+            for (SixPlusGradeEnum sixPlusGradeEnum : sixPlusGradeEnums) {
+                gradeMap.put(sixPlusGradeEnum.getCode(),sixPlusGradeEnum.getDesc());
+            }
+        } else if(organization.getGradeType().equals(GradeTypeEnum.FIVE_PLUS)){
+            FivePlusGradeEnum[] fivePlusGradeEnums = FivePlusGradeEnum.getArray(gradeType);
+            for (FivePlusGradeEnum fivePlusGradeEnum : fivePlusGradeEnums) {
+                gradeMap.put(fivePlusGradeEnum.getCode(),fivePlusGradeEnum.getDesc());
+            }
+        }
+        return gradeMap;
+    }
+
     @Transactional(rollbackFor = Exception.class)
     public void updateOrganId(Integer userId,Integer organId){
 		Employee employee = employeeDao.get(userId);

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

@@ -1331,11 +1331,10 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         }
 
         // 乐团ID集合
-        List<Long> musicGroupIds = studentLists.stream()
+        List<String> musicGroupIds = studentLists.stream()
                 .map(o -> o.getMusicGroupIds())
                 .flatMap(o -> Arrays.stream(o.split(",")))
                 .filter(Objects::nonNull)
-                .map(Long::parseLong)
                 .collect(Collectors.toList());
 
         // 设置学生姓名/头像

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

@@ -65,7 +65,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	@Autowired
 	private SendMessageSource sendMessageSource;
 	@Autowired
-	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+	private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
 	@Autowired
 	private ClassGroupDao classGroupDao;
 	@Autowired
@@ -713,7 +713,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		List<CourseSchedule> courseSchedules = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
 		Map<Long, CourseSchedule> idCourseMap = courseSchedules.stream().collect(Collectors.toMap(CourseSchedule::getId, c -> c, (c1, c2) -> c1));
 
-		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalarys = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
+		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalarys = courseScheduleTeacherSalaryService.findByCourseSchedules(courseScheduleIds);
 		Map<Long, List<CourseScheduleTeacherSalary>> courseTeacherSalaryMap = new HashMap<>();
 		if(!CollectionUtils.isEmpty(courseScheduleTeacherSalarys)){
 			courseTeacherSalaryMap = courseScheduleTeacherSalarys.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
@@ -785,7 +785,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			throw new BizException("课程不存在");
 		}
 
-		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedule(teacherAttendanceInfo.getCourseScheduleId());
+		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryService.findByCourseSchedule(teacherAttendanceInfo.getCourseScheduleId());
 		if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaries)&&Objects.nonNull(courseScheduleTeacherSalaries.get(0).getSettlementTime())){
 			throw new BizException("此课程已结算");
 		}
@@ -1157,13 +1157,34 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 	@Override
 	public List<TeacherAttendanceListDto> getClassTeacherAttendance(Integer classGroupId, Integer teacherId) {
-
-		return null;
+		List<TeacherAttendanceListDto> attendanceDtos = teacherAttendanceDao.getClassTeacherAttendance(classGroupId,teacherId);
+		Integer tenantId = TenantContextHolder.getTenantId();
+		//计算考勤范围
+		//定位范围
+		String attendanceRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
+		if(CollectionUtils.isNotEmpty(attendanceDtos)){
+			for (TeacherAttendanceListDto attendanceDto : attendanceDtos) {
+				boolean signRange = courseScheduleTeacherSalaryService.getSignRange(attendanceDto.getSchoolLongitudeLatitude(), attendanceDto.getSignInLongitudeLatitude(), attendanceRange);
+				attendanceDto.setSignInAddressStatus(signRange?YesOrNoEnum.YES:YesOrNoEnum.NO);
+				boolean signRange1 = courseScheduleTeacherSalaryService.getSignRange(attendanceDto.getSchoolLongitudeLatitude(), attendanceDto.getSignOutLongitudeLatitude(), attendanceRange);
+				attendanceDto.setSignOutAddressStatus(signRange1?YesOrNoEnum.YES:YesOrNoEnum.NO);
+			}
+		}
+		return attendanceDtos;
 	}
 
 	@Override
-	public com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto getCourseTeacherAttendance(Long courseId) {
-		return null;
+	public com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto getCourseTeacherAttendance(Long courseId, Integer teacherId) {
+		com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto attendanceDto = teacherAttendanceDao.getCourseTeacherAttendance(courseId,teacherId);
+		Integer tenantId = TenantContextHolder.getTenantId();
+		//计算考勤范围
+		//定位范围
+		String attendanceRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
+		boolean signRange = courseScheduleTeacherSalaryService.getSignRange(attendanceDto.getSchoolLongitudeLatitude(), attendanceDto.getSignInLongitudeLatitude(), attendanceRange);
+		attendanceDto.setSignInAddressStatus(signRange?YesOrNoEnum.YES:YesOrNoEnum.NO);
+		boolean signRange1 = courseScheduleTeacherSalaryService.getSignRange(attendanceDto.getSchoolLongitudeLatitude(), attendanceDto.getSignOutLongitudeLatitude(), attendanceRange);
+		attendanceDto.setSignOutAddressStatus(signRange1?YesOrNoEnum.YES:YesOrNoEnum.NO);
+		return attendanceDto;
 	}
 
     @Override

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

@@ -23,7 +23,7 @@
             <if test="param.endTime != null">
                 and cs.class_date_ &lt;= date_format(#{param.endTime}, '%Y-%m-%d')
             </if>
-            <if test="param.musicGroupId != null">
+            <if test="param.musicGroupId != null and param.musicGroupId != ''">
                 and cs.music_group_id_ = #{param.musicGroupId}
             </if>
         </where>
@@ -42,7 +42,7 @@
         left join music_group mg on mg.id_ = cg.music_group_id_
         <where>
             and cg.del_flag_ = 0 and mg.del_flag_ = 0
-            <if test="param.musicGroupId != null" >
+            <if test="param.musicGroupId != null and param.musicGroupId != ''">
                 and cg.music_group_id_ = #{param.musicGroupId}
             </if>
             <if test="param.cooperationOrganId != null">

+ 5 - 2
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -119,7 +119,7 @@
                  parent_meeting_time_, img_, director_user_id_, is_classroom_lessons_, memo_, expect_start_group_date_,
                  ownership_type_, repair_user_id_, del_flag_, payment_valid_start_date_, payment_valid_end_date_,
                  payment_pattern_, course_view_type_, transaction_teacher_id_,homework_push_flag_,member_course_show_flag_,tenant_id_,is_give_accessories_,extracurricular_teacher_,first_course_start_time_,
-                 music_group_plan_making_id_,first_recruit_grade_,default_charge_standard_,single_train_minutes_,course_plan_,sale_activity_desc_,graduate_grade_,basic_student_num_,payment_user_type_,charge_mode_)
+                 music_group_plan_making_id_,first_recruit_grade_,default_charge_standard_,single_train_minutes_,course_plan_,sale_activity_desc_,graduate_grade_,basic_student_num_,payment_user_type_,charge_mode_,grade_type_)
         VALUES (#{id}, #{name}, #{organId}, #{schoolId}, #{applyExpireDate}, #{preApplyExpireDate}, #{teamTeacherId},
                 #{educationalTeacherId},
                 #{courseForm}, now(), now(),
@@ -133,7 +133,7 @@
                 #{delFlag}, #{paymentValidStartDate}, #{paymentValidEndDate}, #{paymentPattern},
                 #{courseViewType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{transactionTeacherId},#{homeworkPushFlag},#{memberCourseShowFlag},#{tenantId},#{isGiveAccessories},
                 #{extracurricularTeacher,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{firstCourseStartTime},
-                #{musicGroupPlanMakingId},#{firstRecruitGrade},#{defaultChargeStandard},#{singleTrainMinutes},#{coursePlan},#{saleActivityDesc},#{graduateGrade},#{basicStudentNum},#{paymentUserType},#{chargeMode})
+                #{musicGroupPlanMakingId},#{firstRecruitGrade},#{defaultChargeStandard},#{singleTrainMinutes},#{coursePlan},#{saleActivityDesc},#{graduateGrade},#{basicStudentNum},#{paymentUserType},#{chargeMode}.#{gradeType})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -284,6 +284,9 @@
             <if test="chargeMode != null">
                 charge_mode_ = #{chargeMode},
             </if>
+            <if test="gradeType != null and gradeType != ''">
+                grade_type_ = #{gradeType},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>

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

@@ -25,7 +25,7 @@
             <if test="param.studentId != null">
                 and t2.student_id_ = #{param.studentId}
             </if>
-            <if test="param.musicGroupId != null">
+            <if test="param.musicGroupId != null and param.musicGroupId != ''">
                 and t1.music_group_id_ = #{param.musicGroupId}
             </if>
             <if test="param.startTime != null">
@@ -47,7 +47,7 @@
         left join student_registration sr on sr.user_id_ = s.user_id_
 
         <where>
-            <if test="param.musicGroupId != null">
+            <if test="param.musicGroupId != null and param.musicGroupId != ''">
                 and sr.music_group_id_ = #{param.musicGroupId}
                 and sr.music_group_status_ = 'NORMAL'
             </if>

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

@@ -21,7 +21,7 @@
             <if test="param.keyword != null and param.keyword != ''">
                 and (su.username_ like concat('%', #{param.keyword}, '%'))
             </if>
-            <if test="param.musicGroupId != null">
+            <if test="param.musicGroupId != null and param.musicGroupId != ''">
                 and sr.music_group_id_ = #{param.musicGroupId}
             </if>
             <if test="param.subjectId != null">

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

@@ -666,6 +666,26 @@
         <include refid="queryTeacherAttendanceSql"/>
         group by cs.actual_teacher_id_
     </select>
+    <select id="getClassTeacherAttendance" resultType="com.ym.mec.biz.dal.school.dto.TeacherAttendanceListDto">
+        select cs.type_ courseScheduleType,CONCAT(cs.class_date_,' ',cs.start_class_time_,'~',cs.end_class_time_) classDate,
+               ta.sign_in_time_ signInTime,ta.sign_in_status_ signInStatus,ta.sign_in_longitude_latitude_ signInLongitudeLatitude,
+               ta.sign_out_time_ signOutTime,ta.sign_out_status_ signOutStatus,ta.sign_out_longitude_latitude_ signOutLongitudeLatitude,
+               s.longitude_latitude_ schoolLongitudeLatitude,cs.teach_mode_ teachMode
+        from course_schedule cs
+        left join teacher_attendance ta ON cs.id_ = ta.course_schedule_id_ AND ta.teacher_id_ = cs.actual_teacher_id_
+        left join school s ON s.id_ = cs.schoole_id_
+        where cs.class_group_id_ = #{classGroupId} and cs.actual_teacher_id_ = #{teacherId}
+        AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.new_course_id_ IS NULL
+    </select>
+    <select id="getCourseTeacherAttendance" resultType="com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto">
+        select ta.sign_in_time_ signInTime,ta.sign_in_status_ signInStatus,ta.sign_in_longitude_latitude_ signInLongitudeLatitude,
+               ta.sign_out_time_ signOutTime,ta.sign_out_status_ signOutStatus,ta.sign_out_longitude_latitude_ signOutLongitudeLatitude,
+               s.longitude_latitude_ schoolLongitudeLatitude,cs.teach_mode_ teachMode
+        from course_schedule cs
+                 left join teacher_attendance ta ON cs.id_ = ta.course_schedule_id_ AND ta.teacher_id_ = cs.actual_teacher_id_
+                 left join school s ON s.id_ = cs.schoole_id_
+        where cs.id_ = #{courseId} and cs.actual_teacher_id_ = #{teacherId}
+    </select>
     <update id="updateViPSignOutStatus" parameterType="string">
     	UPDATE teacher_attendance SET sign_out_status_ = 1,sign_out_time_= now()
     	WHERE FIND_IN_SET(course_schedule_id_,#{courseScheduleIdList}) AND sign_in_status_ = 1

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

@@ -80,6 +80,6 @@ public class OrganizationController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('organization/getGradeList')")
     @ApiParam(value = "分部编号", required = true)
     public HttpResponseResult<Map<Integer,String>> getGradeList(Integer id,@ApiParam("年级分布") EGroupGradeType gradeType){
-        return succeed(organizationService.getGradeList(id));
+        return succeed(organizationService.getGradeList(id,gradeType));
     }
 }

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

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller.education;
 
+import com.ym.mec.biz.dal.enums.EGroupGradeType;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -71,7 +72,7 @@ public class EduMusicGroupRecordController extends BaseController {
 
 		model.put("subject", studentRegistrationDao.countStudentWithSubjectByMusicGroupId(musicGroupId));
 		
-		model.put("gradeMap", organizationService.getGradeList(musicGroup.getOrganId()));
+		model.put("gradeMap", organizationService.getGradeList(musicGroup.getOrganId(), EGroupGradeType.get(musicGroup.getGradeType())));
 		model.put("grade", studentRegistrationDao.countStudentWithGradeByMusicGroupId(musicGroupId));
 		model.put("teacher", classGroupDao.countTeacherByMusicGroupId(musicGroupId));
 		

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

@@ -49,11 +49,12 @@ public class SchoolTeacherAttendanceController extends BaseController {
 
     @ApiImplicitParams({
             @ApiImplicitParam(name = "courseId", dataType = "Long", required = true, value = "课程编号"),
+            @ApiImplicitParam(name = "teacherId", dataType = "Integer", required = true, value = "老师编号"),
     })
     @ApiOperation(value = "课时获取单节课老师考勤详情----获取课程老师考勤")
     @GetMapping("/getCourseTeacherAttendance")
-    public HttpResponseResult<TeacherAttendanceDto> getCourseTeacherAttendance(Long courseId) {
-        return succeed(teacherAttendanceService.getCourseTeacherAttendance(courseId));
+    public HttpResponseResult<TeacherAttendanceDto> getCourseTeacherAttendance(Long courseId, Integer teacherId) {
+        return succeed(teacherAttendanceService.getCourseTeacherAttendance(courseId,teacherId));
     }