Quellcode durchsuchen

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

yonge vor 5 Jahren
Ursprung
Commit
5567d25495

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherSalaryDao.java

@@ -26,4 +26,15 @@ public interface ClassGroupTeacherSalaryDao extends BaseDAO<Long, ClassGroupTeac
      */
     ClassGroupTeacherSalary findByVipGoupAndTeacher(@Param("vipGroupId") Integer vipGroupId,
                                                     @Param("teacherId") Integer teacherId);
+
+    /**
+     * @describe 根据班级获取老师课酬
+     * @author Joburgess
+     * @date 2019/11/22
+     * @param classGroupId: 班级编号
+     * @param teacherId: 教师编号
+     * @return com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary
+     */
+    ClassGroupTeacherSalary findByClassGroupAndTeacher(@Param("classGroupId") Integer classGroupId,
+                                                       @Param("teacherId") Integer teacherId);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -202,6 +202,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         Map<String, TeacherDefaultMusicGroupSalary> teacherDefaultSalary = new HashMap<>();
         for (CourseSchedule classGroupNoStartCourseSchedule : courseSchedules) {
             List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
+            List<TeacherAttendance> teacherAttendances=new ArrayList<>();
             //课时长度
             int duration = DateUtil.minutesBetween(classGroupNoStartCourseSchedule.getStartClassTime(), classGroupNoStartCourseSchedule.getEndClassTime());
             List<ClassGroupTeacherMapper> byClassGroup = classGroupTeacherMapperDao.findByClassGroup(classGroupNoStartCourseSchedule.getClassGroupId());
@@ -261,8 +262,16 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 courseScheduleTeacherSalary.setUpdateTime(date);
                 courseScheduleTeacherSalary.setClassGroupId(classGroupTeacherMapper.getClassGroupId());
                 courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
+
+                TeacherAttendance teacherAttendance=new TeacherAttendance();
+                teacherAttendance.setMusicGroupId(courseScheduleTeacherSalary.getMusicGroupId());
+                teacherAttendance.setGroupType(courseScheduleTeacherSalary.getGroupType());
+                teacherAttendance.setCourseScheduleId(courseScheduleTeacherSalary.getCourseScheduleId());
+                teacherAttendance.setCreateTime(date);
+                teacherAttendances.add(teacherAttendance);
             }
             courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
+            teacherAttendanceDao.batchInsert(teacherAttendances);
         }
     }
 

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

@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -75,6 +76,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private MusicGroupDao musicGroupDao;
 	@Autowired
 	private SubjectDao subjectDao;
+	@Autowired
+	private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
 
 	@Override
 	public BaseDAO<Long, CourseSchedule> getDAO() {
@@ -633,6 +636,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			if(oldCourseSchedule.getType()== CourseSchedule.CourseScheduleType.VIP){
 				boolean oldTeacherIsNull=Objects.isNull(oldCourseSchedule.getActualTeacherId());
 				boolean newTeacherIsNull=Objects.isNull(newCourseSchedule.getActualTeacherId());
+				if(newTeacherIsNull&&!oldTeacherIsNull){
+					newCourseSchedule.setActualTeacherId(oldCourseSchedule.getActualTeacherId());
+					newCourseSchedule.setTeachMode(oldCourseSchedule.getTeachMode());
+				}
 				boolean oldSchoolIsNull=Objects.isNull(oldCourseSchedule.getSchoolId());
 				boolean newSchoolIsNull=Objects.isNull(newCourseSchedule.getSchoolId());
 				boolean teacherIsChange=oldTeacherIsNull||(!newTeacherIsNull&&!oldCourseSchedule.getActualTeacherId().equals(newCourseSchedule.getActualTeacherId()));
@@ -640,13 +647,28 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 				if(teacherIsChange||schoolIsChange){
 					VipGroup byCourseSchedule = vipGroupDao.findByCourseSchedule(newCourseSchedule.getId().intValue());
-					TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(newCourseSchedule.getActualTeacherId(), byCourseSchedule.getVipGroupCategoryId());
+
+					BigDecimal onlineTeacherSalary=new BigDecimal(0),offlineTeacherSalary=new BigDecimal(0);
+
+					if(teacherIsChange){
+						TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(newCourseSchedule.getActualTeacherId(), byCourseSchedule.getVipGroupCategoryId());
+						if(Objects.nonNull(byTeacherAndCategory)){
+							onlineTeacherSalary=byTeacherAndCategory.getOnlineClassesSalary();
+							offlineTeacherSalary=byTeacherAndCategory.getOfflineClassesSalary();
+						}
+					}else{
+						ClassGroupTeacherSalary byClassGroupAndTeacher = classGroupTeacherSalaryDao.findByClassGroupAndTeacher(oldCourseSchedule.getClassGroupId(), newCourseSchedule.getActualTeacherId());
+						if(Objects.nonNull(byClassGroupAndTeacher)){
+							onlineTeacherSalary=byClassGroupAndTeacher.getOnlineClassesSalary();
+							offlineTeacherSalary=byClassGroupAndTeacher.getSalary();
+						}
+					}
+
 					List<CourseSchedule> courseSchedules=new ArrayList<>();
 					courseSchedules.add(newCourseSchedule);
 					courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(byCourseSchedule,
 							courseSchedules,
-							byTeacherAndCategory.getOnlineClassesSalary(),
-							byTeacherAndCategory.getOfflineClassesSalary());
+							onlineTeacherSalary,offlineTeacherSalary);
 					if(Objects.nonNull(oldCourseSchedule.getActualTeacherId())){
 						beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
 					}
@@ -713,6 +735,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
 			teacherIds.addAll(oldCourseScheduleList.stream().map(e -> e.getActualTeacherId()).collect(Collectors.toSet()));
 			Map<Integer,String> map = new HashMap<>(teacherIds.size());
+			teacherIds.removeAll(Collections.singleton(null));
 			teacherIds.forEach(e->{
 				map.put(e,e.toString());
 			});
@@ -1013,6 +1036,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if (courseScheduleIdList.size() > 0) {
 			// vip课自动签退
 			teacherAttendanceDao.updateViPSignOutStatus(courseScheduleIdList.stream().map(a -> a.toString()).collect(Collectors.joining(",")));
+			//教师考勤当前课时+1
+
 		}
 		
 		return true;

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

@@ -130,7 +130,11 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		PageInfo<EmployeeDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
-
+		String organId = queryInfo.getOrganId();
+		if(StringUtils.isNotEmpty(organId)){
+			String[] organIds = organId.split(",");
+			params.put("organIds",organIds);
+		}
 		List<EmployeeDto> dataList = null;
 		int count = employeeDao.queryEmployByOrganIdCount(params);
 		if (count > 0) {

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

@@ -129,10 +129,13 @@
 
   <!-- 获取乐团老师课酬配置表 -->
   <select id="findByMusicGroupId" resultMap="ClassGroupTeacherSalary">
-    SELECT * FROM class_group_teacher_salary WHERE music_group_id_ = #{musicGroupId}
+    SELECT * FROM class_group_teacher_salary WHERE music_group_id_ = #{musicGroupId} AND group_type_='MUSIC'
   </select>
   <select id="findByVipGoupAndTeacher" resultMap="ClassGroupTeacherSalary">
-    SELECT * FROM class_group_teacher_salary WHERE music_group_id_ = #{vipGroupId} AND user_id_=#{teacherId}
+    SELECT * FROM class_group_teacher_salary WHERE music_group_id_ = #{vipGroupId} AND user_id_=#{teacherId} AND group_type_='VIP'
   </select>
+    <select id="findByClassGroupAndTeacher" resultMap="ClassGroupTeacherSalary">
+      SELECT * FROM class_group_teacher_salary WHERE class_group_id_ = #{classGroupId} AND user_id_=#{teacherId}
+    </select>
 
 </mapper>

+ 17 - 13
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -184,8 +184,11 @@
         FROM employee e LEFT JOIN sys_user su ON e.user_id_ = su.id_
         <where>
             su.user_type_ = 'SYSTEM'
-            <if test="organId != null">
-                AND FIND_IN_SET(su.organ_id_,#{organId})
+            <if test="organIds != null">
+                AND
+                <foreach collection="organIds" item="item" open="(" close=")" separator=" OR ">
+                    FIND_IN_SET(#{item},e.organ_id_list_)
+                </foreach>
             </if>
             <if test="search != null">
                 AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
@@ -198,19 +201,20 @@
     </select>
 
     <select id="queryEmployByOrganIdCount" resultType="int">
-        SELECT COUNT(ue.user_id_)
-        FROM (SELECT e.user_id_,su.real_name_,su.gender_,su.phone_,su.user_type_,e.job_nature_,su.lock_flag_,
-        e.entry_date_,e.demission_date_,e.organ_id_list_,e.create_time_
+        SELECT COUNT(DISTINCT e.user_id_)
         FROM employee e LEFT JOIN sys_user su ON e.user_id_ = su.id_
         <where>
-            <if test="organId != null">
-                FIND_IN_SET(su.organ_id_,#{organId})
-            </if>
-        </where>) ue
-        WHERE ue.user_type_ LIKE '%SYSTEM%'
-        <if test="search != null">
-            AND (ue.real_name_ LIKE CONCAT('%',#{search},'%') OR ue.phone_ LIKE CONCAT('%',#{search},'%'))
-        </if>
+            su.user_type_ = 'SYSTEM'
+            <if test="organIds != null">
+                AND
+                <foreach collection="organIds" item="item" open="(" close=")" separator=" OR ">
+                    FIND_IN_SET(#{item},e.organ_id_list_)
+                </foreach>
+            </if>
+            <if test="search != null">
+                AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+            </if>
+        </where>
     </select>
     <select id="queryUserRole" resultType="java.lang.Integer">
         SELECT sur.role_id_ FROM sys_user_role sur WHERE sur.user_id_ = #{userId}