Bläddra i källkod

Merge remote-tracking branch 'origin/online1' into online1

Joburgess 4 år sedan
förälder
incheckning
f4f6fee582
18 ändrade filer med 270 tillägg och 12 borttagningar
  1. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java
  2. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleDto.java
  3. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherAttendanceComplaintsQueryInfo.java
  4. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentServeService.java
  5. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  6. 56 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  7. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java
  8. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/InspectionServiceImpl.java
  9. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  10. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java
  11. 2 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  12. 0 6
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  13. 4 0
      mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
  14. 10 0
      mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml
  15. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  16. 6 0
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  17. 23 0
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduOrganizationController.java
  18. 82 0
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduTeacherAttendanceController.java

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

@@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Long, StudentExtracurricularExercisesSituation> {
 
@@ -63,6 +64,17 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
     List<StudentExtracurricularExercisesSituation> findTeacherNoStartServices(@Param("teacherId") Integer teacherId);
 
     /**
+     * @describe 根据周一日期获取教师应布置课后作业课程编号列表
+     * @author Joburgess
+     * @date 2021/4/29 0029
+     * @param teacherId:
+     * @param monday:
+     * @return java.util.Set<java.lang.Long>
+     */
+    List<String> getTeacherHomeworkCourseIdsWithMonday(@Param("teacherId") Integer teacherId,
+                                                    @Param("monday") String monday);
+
+    /**
      * @describe 统计上周数据今日跟新的条数
      * @author Joburgess
      * @date 2020/4/20

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleDto.java

@@ -97,6 +97,16 @@ public class CourseScheduleDto extends CourseSchedule {
 
     private PracticeGroupType practiceType;
 
+    private int enableAssignHomework;
+
+    public int getEnableAssignHomework() {
+        return enableAssignHomework;
+    }
+
+    public void setEnableAssignHomework(int enableAssignHomework) {
+        this.enableAssignHomework = enableAssignHomework;
+    }
+
     public UpdateAttendanceEnum getComplaintsType() {
         return complaintsType;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherAttendanceComplaintsQueryInfo.java

@@ -20,6 +20,17 @@ public class TeacherAttendanceComplaintsQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "课程结束时间")
     private String courseScheduleEndDate;
 
+    @ApiModelProperty(value = "是否已结算")
+    private Boolean settlemented;
+
+    public Boolean getSettlemented() {
+        return settlemented;
+    }
+
+    public void setSettlemented(Boolean settlemented) {
+        this.settlemented = settlemented;
+    }
+
     public String getCourseScheduleStartDate() {
         return courseScheduleStartDate;
     }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentServeService.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.service;
 
+import org.apache.ibatis.annotations.Param;
+
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -41,6 +43,16 @@ public interface StudentServeService {
      */
     Set<Long> getTeacherServeCourseIds(Integer teacherId);
 
+    /**
+     * @describe 根据周一日期获取教师应布置课后作业课程编号列表
+     * @author Joburgess
+     * @date 2021/4/29 0029
+     * @param teacherId:
+     * @param date:
+     * @return java.util.Set<java.lang.Long>
+     */
+    Set<Long> getTeacherHomeworkCourseIdsWithMonday(Integer teacherId, Date date);
+
     void updateExercisesSituation(Date date, List<Integer> studentIds, Integer teacherId);
 
     /**

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

@@ -1205,6 +1205,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			idCourseReview=AllCourseScheduleReviews.stream().collect(Collectors.groupingBy(CourseScheduleReview::getCourseScheduleId));
 		}
 
+		Set<Long> homeworkCourseIds = studentServeService.getTeacherHomeworkCourseIdsWithMonday(userId, classDate);
+
 		for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
             Long studentNum = studentNumCourseMap.get(courseScheduleDto.getId());
             if (Objects.nonNull(studentNum)) {
@@ -1244,6 +1246,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}else{
             	courseScheduleDto.setComplaintsStatus(0);
 			}
+
+            if(homeworkCourseIds.contains(courseScheduleDto.getId())){
+				courseScheduleDto.setEnableAssignHomework(1);
+			}
 		}
         return teacherCourseSchedulesWithDate;
     }

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

@@ -260,6 +260,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
             Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
 
+            if(Objects.isNull(teacher)||(Objects.nonNull(teacher.getIsSettlementSalary())&&!teacher.getIsSettlementSalary())){
+                courseScheduleTeacherSalary.setDeductionReason("不结算课酬");
+
+                courseScheduleTeacherSalary.setActualSalary(BigDecimal.ZERO);
+                courseScheduleTeacherSalary.setSubsidy(BigDecimal.ZERO);
+                courseScheduleTeacherSalary.setSettlementTime(now);
+                courseScheduleTeacherSalary.setBelongToDaya(false);
+                courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
+                return;
+            }
+
 //            boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0;
 //            boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getIsProbationPeriod())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
 
@@ -336,6 +347,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
             courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
             courseScheduleTeacherSalary.setSettlementTime(now);
+            courseScheduleTeacherSalary.setBelongToDaya(false);
             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
         });
     }
@@ -390,6 +402,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
             Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
 
+            if(Objects.isNull(teacher)||(Objects.nonNull(teacher.getIsSettlementSalary())&&!teacher.getIsSettlementSalary())){
+                courseScheduleTeacherSalary.setDeductionReason("不结算课酬");
+
+                courseScheduleTeacherSalary.setActualSalary(BigDecimal.ZERO);
+                courseScheduleTeacherSalary.setSubsidy(BigDecimal.ZERO);
+                courseScheduleTeacherSalary.setSettlementTime(now);
+                courseScheduleTeacherSalary.setBelongToDaya(false);
+                courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
+                return;
+            }
+
 //            boolean notPositive = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0;
 //            boolean isProbationPeriod = Objects.nonNull(teacher)&&Objects.nonNull(teacher.getIsProbationPeriod())&&ProbationPeriodEnum.TRY.equals(teacher.getIsProbationPeriod());
 
@@ -469,6 +492,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
             courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
             courseScheduleTeacherSalary.setSettlementTime(now);
+            courseScheduleTeacherSalary.setBelongToDaya(false);
             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
         });
     }
@@ -570,6 +594,17 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
             Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
 
+            if(Objects.isNull(teacher)||(Objects.nonNull(teacher.getIsSettlementSalary())&&!teacher.getIsSettlementSalary())){
+                courseScheduleTeacherSalary.setDeductionReason("不结算课酬");
+
+                courseScheduleTeacherSalary.setActualSalary(BigDecimal.ZERO);
+                courseScheduleTeacherSalary.setSubsidy(BigDecimal.ZERO);
+                courseScheduleTeacherSalary.setBelongToDaya(false);
+                courseScheduleTeacherSalary.setSettlementTime(now);
+                courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
+                continue;
+            }
+
             if(CourseSchedule.CourseScheduleType.MUSIC_NETWORK.equals(courseSchedule.getType())||CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(courseSchedule.getType())){
                 Long normalStudentNum = courseNormalStudentsMap.get(courseSchedule.getId());
                 if(Objects.isNull(normalStudentNum)){
@@ -667,6 +702,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 //更新教师结算信息
                 courseScheduleTeacherSalary.setSubsidy(subsidy);
                 courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
+                courseScheduleTeacherSalary.setBelongToDaya(false);
                 courseScheduleTeacherSalary.setSettlementTime(now);
                 courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
 
@@ -813,6 +849,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             //更新教师结算信息
             courseScheduleTeacherSalary.setSubsidy(subsidy);
             courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
+            courseScheduleTeacherSalary.setBelongToDaya(false);
             courseScheduleTeacherSalary.setSettlementTime(now);
             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
         }
@@ -1558,6 +1595,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     public void calMusicCourseTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
                                                   List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange) {
 
+        if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
+            //不结算课酬
+            return;
+        }
+
         BigDecimal teacherSalary = courseScheduleTeacherSalary.getExpectSalary();
 
         if(CourseSchedule.CourseScheduleType.MUSIC_NETWORK.equals(courseSchedule.getType())||CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(courseSchedule.getType())){
@@ -1789,6 +1831,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                                                 List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange) {
         List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
 
+        if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
+            //不结算课酬
+            return;
+        }
+        
         BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
 
         BigDecimal subsidy = new BigDecimal(0);
@@ -1891,6 +1938,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                                                List<TeacherAttendance> teacherAttendances, School school, Teacher teacher) {
         List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
 
+        if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
+            //不结算课酬
+            return;
+        }
+        
         BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
 
         BigDecimal subsidy = new BigDecimal(0);
@@ -2187,11 +2239,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                         if(trailReasonNum<=0){
                             teacherSalary.getDeductReasons().add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.TRAIL, teacherIncomeInfo.getExpectIncome().subtract(teacherIncomeInfo.getExpectIncome().multiply(new BigDecimal("0.8")))));
                         }
-                    }else{
+                    }else if(!CollectionUtils.isEmpty(teacherSalary.getDeductReasons())){
                         teacherSalary.setDeductReasons(teacherSalary.getDeductReasons().stream().filter(p->!DeductReasonEnum.TRAIL.equals(p.getDeductReason())).collect(Collectors.toList()));
                     }
                 }
                 teacherIncomeInfo.setDeductReasons(teacherSalary.getDeductReasons());
+                if(CollectionUtils.isEmpty(teacherSalary.getDeductReasons())){
+                    teacherIncomeInfo.setDeductReasons(Collections.EMPTY_LIST);
+                }
                 teacherIncomeInfo.setTeacherAttendance(teacherAttendances.get(0));
                 if(Objects.nonNull(school)&&Objects.nonNull(teacherIncomeInfo.getTeacherAttendance())){
                     teacherIncomeInfo.getTeacherAttendance().setSchoolLongitudeLatitude(school.getLongitudeLatitude());

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

@@ -910,6 +910,14 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 				flag2 = true;
 			}
 		}
+
+		if(!flag2){
+			int countNoPaymentStudentNum = indexBaseMonthDataDao.countNoPaymentStudentNum(organIds,educationUserId, 0);
+			if(countNoPaymentStudentNum > 0){
+				flag2 = true;
+			}
+		}
+
 		resultMap.put("studentInfo",flag2);
 		boolean flag3 = false;
 		if(!flag3){
@@ -999,7 +1007,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			}
 		}
 		if(!flag5){
-			int countNoPaymentStudentNum = indexBaseMonthDataDao.countNoPaymentStudentNum(organIds,educationUserId, 0);
+			int countNoPaymentStudentNum = indexBaseMonthDataDao.countNoPaymentStudentNum(organIds,educationUserId, 1);
 			if(countNoPaymentStudentNum > 0){
 				flag5 = true;
 			}

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

@@ -119,7 +119,7 @@ public class InspectionServiceImpl extends BaseServiceImpl<Long, Inspection> imp
             }
             if (!isUpdate) {
                 if (oldItem.getPlannedTimes() > 0) {
-                    throw new BizException(oldItem.getItem() + "已有日程安排不能删除");
+                    throw new BizException(oldItem.getItem().getDesc() + "已有日程安排不能删除");
                 }
                 delItems.add(oldItem);
             }
@@ -160,7 +160,7 @@ public class InspectionServiceImpl extends BaseServiceImpl<Long, Inspection> imp
         List<InspectionItem> items = inspectionItemDao.getItemByInspectionId(id);
         for (InspectionItem item : items) {
             if (item.getPlannedTimes() > 0) {
-                throw new BizException(item.getItem() + "已有日程安排不能删除");
+                throw new BizException(item.getItem().getDesc() + "已有日程安排不能删除");
             }
         }
         inspectionDao.delete(id);

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

@@ -165,7 +165,7 @@ public class StudentManageServiceImpl implements StudentManageService {
                 } else {
                     dto.setHasPracticeCourse(YesOrNoEnum.NO);
                 }
-                if (studentListCourseDto.getRemainPracticeNum() > 0) {
+                if (studentListCourseDto.getRemainVipNum() > 0) {
                     dto.setNoStartVipCourseNum(studentListCourseDto.getRemainVipNum());
                 }
             } else {

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -959,6 +959,28 @@ public class StudentServeServiceImpl implements StudentServeService {
     }
 
     @Override
+    public Set<Long> getTeacherHomeworkCourseIdsWithMonday(Integer teacherId, Date date) {
+        Set<Long> courseIds = new HashSet<>();
+        if(Objects.isNull(teacherId)){
+            return courseIds;
+        }
+        String mondayStr = null;
+        if(Objects.nonNull(date)){
+            Date monday = DateUtil.getWeekMondayWithDate(date);
+            mondayStr = DateUtil.dateToString(monday, DateUtil.ISO_EXPANDED_DATE_FORMAT);
+        }
+
+        List<String> courseIdsStrs = studentExtracurricularExercisesSituationDao.getTeacherHomeworkCourseIdsWithMonday(teacherId, mondayStr);
+        if(CollectionUtils.isEmpty(courseIdsStrs)){
+            return courseIds;
+        }
+        for (String courseIdsStr : courseIdsStrs) {
+            courseIds.addAll(Arrays.stream(courseIdsStr.split(",")).mapToLong(Long::valueOf).boxed().collect(Collectors.toSet()));
+        }
+        return courseIds;
+    }
+
+    @Override
     public Set<Integer> getStudentWithCourse(Long courseId) {
         CourseSchedule courseSchedule = courseScheduleDao.get(courseId);
         if(Objects.isNull(courseSchedule)){

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

@@ -2585,12 +2585,14 @@
             AND ta.teacher_id_ = cs.actual_teacher_id_
             AND cs.status_ = 'OVER'
             AND (((ta.sign_in_status_ = 0 OR ta.sign_out_status_ = 0) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ != 'NORMAL' AND sa.visit_flag_ = 0)))
+            AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
             AND ta.sign_in_status_ IS NOT NULL AND ta.sign_out_status_ IS NOT NULL
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
         </if>
         <if test="searchType == 'NO_ATTENDANCE'">
             AND ta.teacher_id_ = cs.actual_teacher_id_
             AND cs.status_ = 'OVER' AND ta.sign_in_time_ IS NULL AND ta.sign_out_time_ IS NULL AND ta.dispose_content_ IS NULL
+            AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
         </if>
         <if test="searchType == 'COURSE_TIME_ERROR'">

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

@@ -296,12 +296,10 @@
 			course_schedule_teacher_salary csts
 			LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
 			LEFT JOIN vip_group vg ON vg.id_ = cs.music_group_id_
-			LEFT JOIN teacher tea ON csts.user_id_=tea.id_
 		WHERE 1=1
 		<if test="startDate != null">
 			AND cs.class_date_ BETWEEN #{startDate} AND #{endDate}
 		</if>
-		AND tea.is_settlement_salary_ = 1
 		AND cs.group_type_ = 'VIP' AND vg.organ_id_ != 41
 		AND csts.settlement_time_ IS NULL
 		AND (cs.del_flag_ IS NULL OR cs.del_flag_=0)
@@ -328,12 +326,10 @@
 		FROM
 			course_schedule_teacher_salary csts
 			LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
-			LEFT JOIN teacher tea ON csts.user_id_=tea.id_
 		WHERE 1=1
 		<if test="startDate != null">
 			AND cs.class_date_ BETWEEN #{startDate} AND #{endDate}
 		</if>
-		AND tea.is_settlement_salary_ = 1
 		AND cs.type_ = 'PRACTICE'
 		AND csts.settlement_time_ IS NULL
 		AND (cs.del_flag_ IS NULL OR cs.del_flag_=0)
@@ -446,12 +442,10 @@
 		FROM course_schedule_teacher_salary csts
 			LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = csts.course_schedule_id_
 			LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
-			LEFT JOIN teacher tea ON csts.user_id_=tea.id_
 		WHERE csts.course_schedule_id_ IN
 		<foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
 			#{courseScheduleId}
 		</foreach>
-		AND tea.is_settlement_salary_=1
 		AND csts.settlement_time_ IS NULL
 	</select>
 

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

@@ -950,6 +950,7 @@
 		AND (((ta.sign_in_status_ = 0 OR ta.sign_out_status_ = 0) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ != 'NORMAL' AND sa.visit_flag_ = 0)))
 		AND ta.sign_in_status_ IS NOT NULL AND ta.sign_out_status_ IS NOT NULL
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
+		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
@@ -978,6 +979,7 @@
 		AND (((ta.sign_in_status_ = 0 OR ta.sign_out_status_ = 0) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ != 'NORMAL' AND sa.visit_flag_ = 0)))
 		AND ta.sign_in_status_ IS NOT NULL AND ta.sign_out_status_ IS NOT NULL
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
+		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
@@ -1000,6 +1002,7 @@
 		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_>='2021-02-01'
 		AND ta.sign_in_time_ IS NULL AND ta.sign_out_time_ IS NULL AND ta.dispose_content_ IS NULL
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
@@ -1024,6 +1027,7 @@
 		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_>='2021-02-01'
 		AND ta.sign_in_time_ IS NULL AND ta.sign_out_time_ IS NULL AND ta.dispose_content_ IS NULL
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
+		AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
 		<if test="classGroupIds != null and classGroupIds.size() > 0">
 			AND cs.class_group_id_ IN
 			<foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">

+ 10 - 0
mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml

@@ -479,6 +479,16 @@
 		SELECT * FROM student_extracurricular_exercises_situation_ WHERE teacher_id_=#{teacherId} AND actual_exercises_num_&lt;=0 AND serve_type_='HOMEWORK';
 	</select>
 
+
+	<select id="getTeacherHomeworkCourseIdsWithMonday" resultType="string">
+		SELECT course_ids_ FROM student_extracurricular_exercises_situation_
+		WHERE teacher_id_=#{teacherId}
+		  	AND serve_type_='HOMEWORK'
+			<if test="monday!=null and monday!=''">
+				AND monday_=#{monday}
+			</if>
+	</select>
+
 	<select id="findServiceWithCourse"
 			resultMap="StudentExtracurricularExercisesSituation">
 		SELECT * FROM student_extracurricular_exercises_situation_ WHERE monday_=#{monday} AND FIND_IN_SET(#{courseId}, course_ids_)

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

@@ -298,7 +298,7 @@
                 AND sv.num IS NULL
             </if>
             <if test="name != null">
-                AND (sr.name_ LIKE CONCAT('%',#{name},'%') OR sr.parents_phone_ LIKE CONCAT('%',#{name},'%'))
+                AND (su.username_ LIKE CONCAT('%',#{name},'%') OR sr.parents_phone_ LIKE CONCAT('%',#{name},'%'))
             </if>
             <if test="currentGrade != null">
                 AND sr.current_grade_ LIKE CONCAT('%',#{currentGrade},'%')
@@ -344,6 +344,7 @@
     </select>
     <select id="queryStudentDetailCount" resultType="java.lang.Integer">
         SELECT COUNT(sr.id_) FROM student_registration sr
+        LEFT JOIN sys_user su ON sr.user_id_ = su.id_
         LEFT JOIN (
             SELECT v.student_id_, COUNT(*) num FROM student_visit v WHERE v.music_group_id_ = #{musicGroupId} GROUP BY v.student_id_
         ) sv on sv.student_id_=sr.user_id_

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

@@ -589,6 +589,12 @@
             <if test="courseScheduleEndDate != null and courseScheduleEndDate != ''">
                 AND cs.class_date_ &lt;= #{courseScheduleEndDate}
             </if>
+            <if test="settlemented!=null and settlemented==true">
+                AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NOT NULL)
+            </if>
+            <if test="settlemented!=null and settlemented==false">
+                AND EXISTS (SELECT id_ FROM course_schedule_teacher_salary WHERE cs.id_=course_schedule_id_ AND settlement_time_ IS NULL)
+            </if>
         </where>
     </sql>
     <select id="countTeacherAttendanceComplaints" resultType="java.lang.Integer">

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

@@ -0,0 +1,23 @@
+package com.ym.mec.web.controller.education;
+
+import com.ym.mec.biz.service.OrganizationService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RequestMapping("eduOrganization")
+@Api(tags = "分部服务")
+@RestController
+public class EduOrganizationController extends BaseController {
+
+    @Autowired
+    private OrganizationService organizationService;
+
+    @ApiOperation(value = "获取员工所在分部列表")
+    @GetMapping("/queryEmployeeOrgan")
+    public Object queryEmployeeOrgan() throws Exception {
+        return succeed(organizationService.queryEmployeeOrgan());
+    }
+}

+ 82 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/EduTeacherAttendanceController.java

@@ -0,0 +1,82 @@
+package com.ym.mec.web.controller.education;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.enums.UpdateAttendanceEnum;
+import com.ym.mec.biz.dal.page.TeacherAttendanceComplaintsQueryInfo;
+import com.ym.mec.biz.service.TeacherAttendanceService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import java.util.Arrays;
+import java.util.List;
+
+@RequestMapping("eduTeacherAttendance")
+@Api(tags = "教师考勤服务")
+@RestController
+public class EduTeacherAttendanceController extends BaseController {
+
+    @Autowired
+    private TeacherAttendanceService teacherAttendanceService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
+
+    @ApiOperation(value = "获取教师考勤申述列表")
+    @PostMapping("/queryTeacherAttendanceComplaints")
+    public Object queryTeacherAttendanceComplaints(TeacherAttendanceComplaintsQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        Employee employee = employeeDao.get(sysUser.getId());
+        if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+            queryInfo.setOrganId(employee.getOrganIdList());
+        }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+            return failed("用户所在分部异常");
+        }else {
+            List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+            if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+                return failed("非法请求");
+            }
+        }
+        return succeed(teacherAttendanceService.queryTeacherAttendanceComplaints(queryInfo));
+    }
+
+    @ApiOperation(value = "同意教师异常考勤申述")
+    @PostMapping("/agreeTeacherAttendanceComplaints")
+    public Object agreeTeacherAttendanceComplaints(long teacherAttendanceId, String content){
+        teacherAttendanceService.agreeTeacherAttendanceComplaints(teacherAttendanceId,content);
+        return succeed();
+    }
+
+    @ApiOperation(value = "拒绝教师异常考勤申述")
+    @PostMapping("/rejectTeacherAttendanceComplaints")
+    public Object rejectTeacherAttendanceComplaints(long teacherAttendanceId,String content){
+        teacherAttendanceService.rejectTeacherAttendanceComplaints(teacherAttendanceId,content);
+        return succeed();
+    }
+
+    @ApiOperation(value = "提交考勤申述")
+    @PostMapping("/addComplaints")
+    public Object addComplaints(Long courseScheduleId,String content,String url,Integer userId, UpdateAttendanceEnum complaintsType){
+        teacherAttendanceService.addComplaints(courseScheduleId,content,url,userId,complaintsType);
+        return succeed();
+    }
+
+    @ApiOperation(value = "撤销考勤申述")
+    @PostMapping("/repealComplaints")
+    public Object repealComplaints(Long courseScheduleId,Integer userId){
+        teacherAttendanceService.repealComplaints(courseScheduleId,userId);
+        return succeed();
+    }
+}