zouxuan 4 anos atrás
pai
commit
6188caea55

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

@@ -96,4 +96,25 @@ public interface EmployeeDao extends BaseDAO<Integer, Employee> {
      * @return java.util.List<com.ym.mec.biz.dal.dto.SimpleUserDto>
      */
     List<SimpleUserDto> findByIds(@Param("userIds") List<Integer> userIds);
+
+    /**
+     * 是否有课程组关联的教务老师
+     * @param employeeId
+     * @return
+     */
+    Integer hasCourseGroupRelation(Integer employeeId);
+
+    /**
+     * 修改知道老师的教务老师关联
+     * @param currentUserId
+     * @param targetUserId
+     */
+    void updateEducationTeacherId(@Param("currentUserId") Integer currentUserId, @Param("targetUserId") Integer targetUserId);
+
+    /**
+     *是否有未上的课
+     * @param employeeId
+     * @return
+     */
+    Integer hasCourseSchedule(Integer employeeId);
 }

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

@@ -27,6 +27,9 @@ public class EndCourseScheduleQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "班级编号")
     private Integer classGroupId;
 
+    @ApiModelProperty(value = "是否点名")
+    private Integer isCallNames;
+
     @ApiModelProperty(value = "学生编号")
     private String studentIdList;
 
@@ -59,6 +62,14 @@ public class EndCourseScheduleQueryInfo extends QueryInfo {
 
     private boolean isExport = false;
 
+    public Integer getIsCallNames() {
+        return isCallNames;
+    }
+
+    public void setIsCallNames(Integer isCallNames) {
+        this.isCallNames = isCallNames;
+    }
+
     public boolean getIsExport() {
         return isExport;
     }

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.HashMap;
 import java.util.List;
 
 public interface EmployeeService extends BaseService<Integer, Employee> {
@@ -53,4 +54,18 @@ public interface EmployeeService extends BaseService<Integer, Employee> {
      * @return java.util.List<com.ym.mec.biz.dal.dto.SimpleUserDto>
      */
     List<SimpleUserDto> findByRole(String roleIds,String organIds);
+
+    /**
+     * 是否有课程组关联的教务老师
+     * @param employeeId
+     * @return
+     */
+    HashMap<String, Integer> hasCourseGroupRelation(Integer employeeId);
+
+    /**
+     * 修改指定老师所有教务老师关联
+     * @param currentUserId
+     * @param targetUserId
+     */
+    void updateEducationTeacherId(Integer currentUserId, Integer targetUserId);
 }

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

@@ -3727,7 +3727,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             List<Long> courseScheduleIds = results.stream().map(CourseScheduleEndDto::getId).collect(Collectors.toList());
 //            List<TeacherAttendance> teacherAttendances = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
 //            Map<Long, List<TeacherAttendance>> courseTeacherAttendanceMap = teacherAttendances.stream().collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
-            Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds));
+//            Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds));
             Map<Long, String> studentIdMap = MapUtil.convertIntegerMap(courseScheduleStudentPaymentDao.getStudentIdMap(courseScheduleIds));
             List<Integer> teacherIds=results.stream().filter(t->Objects.nonNull(t.getActualTeacherId())).map(CourseSchedule::getActualTeacherId).collect(Collectors.toList());
 
@@ -3756,12 +3756,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					result.setSignOutTime(teacherAttendance.getSignOutTime());
 					result.setRemark(teacherAttendance.getRemark());
 				}*/
-				Long studentNum = studentNumCourseMap.get(result.getId());
-				if (Objects.nonNull(studentNum)) {
-					result.setIsCallNames(studentNum > 0 ? YesOrNoEnum.YES : YesOrNoEnum.NO);
-				} else {
-					result.setIsCallNames(YesOrNoEnum.NO);
-				}
+//				Long studentNum = studentNumCourseMap.get(result.getId());
+//				if (Objects.nonNull(studentNum)) {
+//					result.setIsCallNames(studentNum > 0 ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+//				} else {
+//					result.setIsCallNames(YesOrNoEnum.NO);
+//				}
 				result.setSettlementTime(coursesSettlementTimeMap.get(result.getId()));
 			}
         }

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -160,6 +160,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 				employeeDao.updateUserDemissionDate(employeeId);
 				break;
 			case REINSTATE:
+				//离职,如果有关联课程组教务老师,
 				employeeDao.updateUserDemissionDate(employeeId);
 				break;
 		}
@@ -169,4 +170,19 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	public List<SimpleUserDto> findByRole(String roleIds, String organIds) {
 		return employeeDao.findByRole(roleIds,organIds);
 	}
+
+	@Override
+	public HashMap<String, Integer> hasCourseGroupRelation(Integer employeeId) {
+		Integer hasCourseGroupRelation = employeeDao.hasCourseGroupRelation(employeeId);
+		Integer hasCourseSchedule = employeeDao.hasCourseSchedule(employeeId);
+		HashMap<String, Integer> map = new HashMap<>(2);
+		map.put("hasCourseGroupRelation",hasCourseGroupRelation);
+		map.put("hasCourseSchedule",hasCourseSchedule);
+		return map;
+	}
+
+	@Override
+	public void updateEducationTeacherId(Integer currentUserId, Integer targetUserId) {
+		employeeDao.updateEducationTeacherId(currentUserId,targetUserId);
+	}
 }

+ 15 - 4
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -46,6 +46,7 @@
         <result column="course_end_time_" property="endClassTime"/>
         <result column="settlement_time_" property="settlementTime"/>
         <result column="organ_name_" property="organName"/>
+        <result column="isCallNames" property="isCallNames" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.CourseScheduleDto" id="courseScheduleDto" extends="CourseSchedule">
@@ -2291,13 +2292,15 @@
         cs.type_,
         cs.schoole_id_,
         s.name_ schoole_name_,
-        o.name_ organ_name_
+        o.name_ organ_name_,
+        CASE WHEN sa.id_ IS NULL THEN 0 ELSE 1 END isCallNames
         FROM
         course_schedule cs
         LEFT JOIN school s ON cs.schoole_id_=s.id_
         LEFT JOIN organization o ON cs.organ_id_=o.id_
+        LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
         <include refid="endFindCourseSchedulesCondition"/>
-        ORDER BY course_start_time_,cs.id_
+        ORDER BY course_start_time_,cs.id_,sa.course_schedule_id_
         <include refid="global.limit"/>
     </select>
 
@@ -2306,12 +2309,13 @@
         COUNT(cs.id_)
         FROM
         course_schedule cs
+        LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
         <include refid="endFindCourseSchedulesCondition"/>
     </select>
     <select id="findCourseIdsByStudent" resultType="int">
         SELECT cssp.course_schedule_id_
         FROM course_schedule_student_payment cssp
-                 LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
+        LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
         WHERE su.username_ LIKE CONCAT('%', #{search}, '%')
            OR su.id_ = #{search}
     </select>
@@ -2384,6 +2388,12 @@
         <include refid="queryVipCourseScheduleIds"/>
     </select>
     <sql id="queryVipCourseScheduleIds">
+        <if test="isCallNames != null and isCallNames == 1">
+            AND sa.id_ IS NOT NULL
+        </if>
+        <if test="isCallNames != null and isCallNames == 0">
+            AND sa.id_ IS NULL
+        </if>
         <if test="startTime!=null and endTime==null">
             AND cs.class_date_ &gt; DATE_FORMAT(#{startTime},"%Y-%m-%d")
         </if>
@@ -3159,7 +3169,8 @@
     <select id="queryHasReatClass" resultType="java.util.Map">
         SELECT cgtm.class_group_id_ 'key',CASE WHEN COUNT(cs.id_) > 0 THEN 1 ELSE 0 END 'value'
         FROM class_group_teacher_mapper cgtm
-        LEFT JOIN course_schedule cs ON cs.class_group_id_ = cgtm.class_group_id_ AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0
+        LEFT JOIN course_schedule cs ON cs.class_group_id_ = cgtm.class_group_id_
+        AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0
         WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'MUSIC' AND cgtm.class_group_id_ IN
         <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
             #{classGroupId}

+ 21 - 0
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -148,6 +148,12 @@
         UPDATE sys_user SET lock_flag_ = #{status} WHERE id_=#{userID}
     </update>
 
+    <update id="updateEducationTeacherId">
+        UPDATE music_group SET educational_teacher_id_ = #{targetUserId} WHERE educational_teacher_id_ = #{currentUserId} AND status_ != 'CANCELED';
+        UPDATE vip_group SET educational_teacher_id_ = #{targetUserId} WHERE educational_teacher_id_ = #{currentUserId} AND group_status_ IN (0,1,5,2,6);
+        UPDATE practice_group SET educational_teacher_id_ = #{targetUserId} WHERE educational_teacher_id_ = #{currentUserId} AND group_status_ NOT IN ('FINISH');
+    </update>
+
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
 		DELETE FROM employee WHERE user_id_ = #{userId} 
@@ -267,4 +273,19 @@
             #{userId}
         </foreach>
     </select>
+    <select id="hasCourseGroupRelation" resultType="java.lang.Integer">
+        SELECT SUM(a.num) FROM
+        (SELECT COUNT(vg.id_) num FROM vip_group vg WHERE vg.educational_teacher_id_  = #{employeeId} AND vg.group_status_ IN (0,1,5,2,6)
+        UNION ALL
+        SELECT COUNT(mg.id_) num FROM music_group mg WHERE mg.educational_teacher_id_ = #{employeeId} AND mg.status_ != 'CANCELED'
+        UNION ALL
+        SELECT COUNT(pg.id_) num FROM practice_group pg WHERE pg.educational_teacher_id_ = #{employeeId} AND pg.group_status_ NOT IN ('FINISH'))a
+    </select>
+    <select id="hasCourseSchedule" resultType="java.lang.Integer">
+        SELECT COUNT(DISTINCT cs.id_)
+        FROM course_schedule_teacher_salary csts
+        LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+        AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0
+        WHERE csts.user_id_ = #{employeeId}
+    </select>
 </mapper>

+ 0 - 8
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -1,7 +1,6 @@
 package com.ym.service.Impl;
 
 import com.alibaba.fastjson.JSONObject;
-import com.sun.org.apache.xpath.internal.operations.Bool;
 import com.ym.common.ApiException;
 import com.ym.common.DisplayEnum;
 import com.ym.common.ErrorEnum;
@@ -15,7 +14,6 @@ import com.ym.job.ScheduleManager;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.StudentAttendance;
@@ -24,11 +22,9 @@ import com.ym.mec.biz.dal.entity.TeacherAttendance;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.SignStatusEnum;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
-import com.ym.mec.common.entity.ImPlayMidiMessage;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.im.IMHelper;
 import com.ym.mec.im.message.*;
@@ -42,7 +38,6 @@ import com.ym.utils.CodeUtil;
 import com.ym.utils.DateTimeUtils;
 import com.ym.utils.IdentifierUtils;
 import com.ym.whiteboard.WhiteBoardHelper;
-import io.rong.models.message.GroupMessage;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -129,9 +124,6 @@ public class RoomServiceImpl implements RoomService {
         String userId = sysUser.getId().toString();
         Teacher teacher = teacherDao.get(Integer.parseInt(userId));
         CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId));
-        if(courseSchedule.getTeachMode() == TeachModeEnum.OFFLINE){
-            throw new BizException("加入失败:线下课不允许此操作");
-        }
         if(teacher != null && userId.equals(courseSchedule.getActualTeacherId())){
             courseScheduleStudentPaymentDao.adjustPlayMidi(Long.parseLong(roomId),null,null);
             userName = sysUser.getRealName();

+ 15 - 0
mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java

@@ -74,6 +74,21 @@ public class EmployeeController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "当前用户是否有课程组教务老师关联")
+    @PostMapping("/hasCourseGroupRelation")
+    @PreAuthorize("@pcs.hasPermissions('employee/hasCourseGroupRelation')")
+    public Object hasCourseGroupRelation(Integer employeeId){
+        return succeed(employeeService.hasCourseGroupRelation(employeeId));
+    }
+
+    @ApiOperation(value = "修改指定的教务老师关联")
+    @PostMapping("/updateEducationTeacherId")
+    @PreAuthorize("@pcs.hasPermissions('employee/updateEducationTeacherId')")
+    public Object updateEducationTeacherId(Integer currentUserId,Integer targetUserId){
+        employeeService.updateEducationTeacherId(currentUserId,targetUserId);
+        return succeed();
+    }
+
     @ApiOperation(value = "新增员工")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('employee/add')")