소스 검색

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

yonge 5 년 전
부모
커밋
dcc0f3d8b5
17개의 변경된 파일190개의 추가작업 그리고 70개의 파일을 삭제
  1. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  3. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  4. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherCourseSalaryDetail4WebDto.java
  5. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  6. 7 7
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/TeacherSalaryConfirmStatus.java
  7. 31 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  8. 28 29
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  9. 7 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  10. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherSalaryComplaintsServiceImpl.java
  11. 9 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  12. 23 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  13. 1 1
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  14. 1 1
      mec-im/src/main/java/com/ym/controller/RoomController.java
  15. 31 8
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  16. 2 2
      mec-im/src/main/java/com/ym/service/RoomService.java
  17. 11 5
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleTeacherSalaryController.java

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

@@ -1431,4 +1431,16 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<CourseGroupExportDto> getStudentCourseInfo(@Param("studentIds") Set<Integer> studentIds, @Param("groupType") GroupType groupType);
+
+    /**
+     * 获取上一次连堂课
+     * @param classGroupId
+     * @param startTime
+     * @param teacherId
+     * @return
+     */
+    CourseSchedule getLastCourse(@Param("classGroupId") Integer classGroupId,
+                                 @Param("startTime") String startTime,
+                                 @Param("teacherId") Integer teacherId,
+                                 @Param("continueCourseTime") String continueCourseTime);
 }

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -397,6 +397,15 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 											 @Param("month") String month);
 
 	/**
+	 * @describe 获取指定月份已结算的老师编号
+	 * @author Joburgess
+	 * @date 2020/4/16
+	 * @param month:
+	 * @return java.util.List<java.lang.Integer>
+	 */
+	List<Integer> findIsSettlementTeacherIdsWithMonth(@Param("month") String month);
+
+	/**
 	 * @describe 更新指定课酬的确认状态
 	 * @author Joburgess
 	 * @date 2020/4/15
@@ -408,6 +417,15 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
                                          @Param("confirmStatus") TeacherSalaryConfirmStatus confirmStatus);
 
 	/**
+	 * @describe 更新指定课酬的确认状态至已完成
+	 * @author Joburgess
+	 * @date 2020/4/16
+	 * @param ids:
+	 * @return int
+	 */
+	int updateTeacherSalaryConfirmStatusToComplied(@Param("ids") List<Long> ids);
+
+	/**
 	 * @describe 统计教师指定月份不同团体类型的课酬
 	 * @author Joburgess
 	 * @date 2020/4/15

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

@@ -164,7 +164,7 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
 	 * 连堂课签到,签退
 	 * @param courseScheduleId
 	 */
-	void cuntinueCourseSign(@Param("courseScheduleId")Long courseScheduleId,@Param("startDateTime")Date startDateTime,@Param("endDateTime")Date endDateTime);
+	void cuntinueCourseSign(@Param("courseScheduleId")Long courseScheduleId,@Param("startDateTime")Date startDateTime,@Param("endDateTime")Date endDateTime,@Param("status")Integer status);
 
 	/**
 	 * 修改课程的签到老师

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherCourseSalaryDetail4WebDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.TeacherSalaryConfirmStatus;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 
 import java.math.BigDecimal;
@@ -48,7 +49,7 @@ public class TeacherCourseSalaryDetail4WebDto {
 
     private BigDecimal finalSalary;
 
-    private YesOrNoEnum confirmStatus;
+    private TeacherSalaryConfirmStatus confirmStatus;
 
     private String memo;
 
@@ -196,11 +197,11 @@ public class TeacherCourseSalaryDetail4WebDto {
         this.reduceSalary = reduceSalary;
     }
 
-    public YesOrNoEnum getConfirmStatus() {
+    public TeacherSalaryConfirmStatus getConfirmStatus() {
         return confirmStatus;
     }
 
-    public void setConfirmStatus(YesOrNoEnum confirmStatus) {
+    public void setConfirmStatus(TeacherSalaryConfirmStatus confirmStatus) {
         this.confirmStatus = confirmStatus;
     }
 

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -135,7 +135,9 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     BACKSTAGE_STUDENT_APPLY_QUIT_COURSE("BACKSTAGE_STUDENT_APPLY_QUIT_COURSE", "学员申请退课"),
     BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDENT_APPLY_WITHDRAW", "学员申请提现"),
     PUSH_STUDY_REPORT("PUSH_STUDY_REPORT", "陪练报告"),
-    NEED_POST_STUDY_REPORT("NEED_POST_STUDY_REPORT", "新增待填写月报");
+    NEED_POST_STUDY_REPORT("NEED_POST_STUDY_REPORT", "新增待填写月报"),
+
+    TEACHER_SALARY_CONFIRM_PUSH("TEACHER_SALARY_CONFIRM_PUSH", "课酬确认");
 
 
     MessageTypeEnum(String code, String msg) {

+ 7 - 7
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/TeacherSalaryConfirmStatus.java

@@ -6,22 +6,22 @@ import com.ym.mec.common.enums.BaseEnum;
  * @Author Joburgess
  * @Date 2020/4/16
  */
-public enum  TeacherSalaryConfirmStatus implements BaseEnum<String, TeacherSalaryConfirmStatus> {
-    UNCONFIRMED("1", "待确认"),
-    CONFIRMED("2", "已确认"),
-    COMPLETED("3", "已完成");
+public enum  TeacherSalaryConfirmStatus implements BaseEnum<Integer, TeacherSalaryConfirmStatus> {
+    UNCONFIRMED(1, "待确认"),
+    CONFIRMED(2, "已确认"),
+    COMPLETED(3, "已完成");
 
-    private String code;
+    private Integer code;
 
     private String desc;
 
-    private TeacherSalaryConfirmStatus(String code, String desc) {
+    private TeacherSalaryConfirmStatus(Integer code, String desc) {
         this.code = code;
         this.desc = desc;
     }
 
     @Override
-    public String getCode() {
+    public Integer getCode() {
         return code;
     }
 

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

@@ -14,6 +14,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.slf4j.Logger;
@@ -75,6 +76,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private StudentAttendanceDao studentAttendanceDao;
     @Autowired
     private TeacherSalaryComplaintsDao teacherSalaryComplaintsDao;
+    @Autowired
+    private SysMessageService sysMessageService;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
@@ -830,6 +833,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void confirmTeacherMonthSalary(Integer teacherId, String month) {
         if(Objects.isNull(month)){
             month=DateUtil.dateToString(DateUtil.addMonths(new Date(), -1), "yyyy-MM");
@@ -865,10 +869,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             dataList = new ArrayList<>();
         }
         pageInfo.setRows(dataList);
-        Map<String, Object> result=new HashMap<>();
-        result.put("pageInfo", pageInfo);
-        int i = courseScheduleTeacherSalaryDao.countOpenConfirmSalarysWithMonth(DateUtil.getMonth(DateUtil.addMonths(new Date(), -1)));
-        result.put("isOpenConfirm", i>0?1:0);
         return pageInfo;
     }
 
@@ -886,7 +886,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         }
         result.put("stat", teacherGroupTypeSalary);
         if(!CollectionUtils.isEmpty(pageInfo.getRows())){
-            if(YesOrNoEnum.YES.equals(pageInfo.getRows().get(0).getConfirmStatus())){
+            if(TeacherSalaryConfirmStatus.CONFIRMED.equals(pageInfo.getRows().get(0).getConfirmStatus())||
+                    TeacherSalaryConfirmStatus.COMPLETED.equals(pageInfo.getRows().get(0).getConfirmStatus())){
                 result.put("confirmStatus",1);
             }else{
                 result.put("confirmStatus",0);
@@ -923,12 +924,35 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void openSalaryConfirm(String month) {
-
+        if(Objects.isNull(month)){
+            month=DateUtil.dateToString(DateUtil.addMonths(new Date(), -1), "yyyy-MM");
+        }
+        int i = courseScheduleTeacherSalaryDao.countOpenConfirmSalarysWithMonth(month);
+        if(i>0){
+            throw new BizException("课酬确认已开启");
+        }
+        List<Long> teacherSalaryIds = courseScheduleTeacherSalaryDao.findTeacherSalaryIdsWithMonth(null, month);
+        if(CollectionUtils.isEmpty(teacherSalaryIds)){
+            return;
+        }
+        courseScheduleTeacherSalaryDao.updateTeacherSalaryConfirmStatus(teacherSalaryIds,TeacherSalaryConfirmStatus.UNCONFIRMED);
+        String notifyUrl="8?http://mteadev.dayaedu.com/#/remuneration?month=" + month;
+        String monthStr = DateUtil.dateToString(DateUtil.stringToDate(month, "yyyy-MM"),"yyyy年MM月");
+        List<Integer> teacherIds = courseScheduleTeacherSalaryDao.findIsSettlementTeacherIdsWithMonth(month);
+        Map<Integer, String> userMap = teacherIds.stream().collect(Collectors.toMap(Integer::valueOf, id->String.valueOf(id)));
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_SALARY_CONFIRM_PUSH,
+                userMap, null, 0, notifyUrl, "TEACHER", monthStr);
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void closeSalaryConfirm(String month) {
-
+        List<Long> teacherSalaryIds = courseScheduleTeacherSalaryDao.findTeacherSalaryIdsWithMonth(null, month);
+        if(CollectionUtils.isEmpty(teacherSalaryIds)){
+            return;
+        }
+        courseScheduleTeacherSalaryDao.updateTeacherSalaryConfirmStatusToComplied(teacherSalaryIds);
     }
 }

+ 28 - 29
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -500,7 +500,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 			if(DateUtil.minutesBetween(classEndDateTime,date) >= 0){
 				String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
 				if(StringUtils.isEmpty(continueCourseTime)){
-					continueCourseTime = "10";
+					continueCourseTime = "3";
 				}
 				List<CourseSchedule> courseSchedules = new ArrayList<>();
 				CourseSchedule cs = courseSchedule;
@@ -530,35 +530,34 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 							//获取当前课程的单节课时长
 							int signClassMinutes = courseScheduleDao.getSingleClassMinutes(e.getId());
 							totalMinutes -= signClassMinutes;
-							if(totalMinutes >= 0){
-								//补充签到签退时间
-								courseClassDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
-								courseStartDateTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-								courseEndDateTime = DateUtil.format(e.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-								Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-								Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-								StudentAttendance byStatusAndCourseScheduleId = studentAttendanceDao.findByStatusAndCourseScheduleId(userId, e.getId().intValue());
-								if(byStatusAndCourseScheduleId != null){
-									byStatusAndCourseScheduleId.setSignOutTime(date);
-									byStatusAndCourseScheduleId.setStatus(statusEnum);
-									byStatusAndCourseScheduleId.setUpdateTime(date);
-									studentAttendanceDao.update(byStatusAndCourseScheduleId);
-								}else {
-                                    byStatusAndCourseScheduleId = new StudentAttendance();
-									byStatusAndCourseScheduleId.setSignOutTime(endDateTime);
-									byStatusAndCourseScheduleId.setStatus(statusEnum);
-									byStatusAndCourseScheduleId.setSignInTime(startDateTime);
-									byStatusAndCourseScheduleId.setUpdateTime(date);
-									byStatusAndCourseScheduleId.setUserId(userId);
-									byStatusAndCourseScheduleId.setTeacherId(courseSchedule.getActualTeacherId());
-									byStatusAndCourseScheduleId.setClassGroupId(e.getClassGroupId());
-									byStatusAndCourseScheduleId.setCourseScheduleId(e.getId());
-                                    byStatusAndCourseScheduleId.setMusicGroupId(e.getMusicGroupId());
-                                    byStatusAndCourseScheduleId.setGroupType(e.getGroupType());
-									byStatusAndCourseScheduleId.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
-									studentAttendanceDao.insert(byStatusAndCourseScheduleId);
-								}
+							//补充签到签退时间
+							courseClassDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
+							courseStartDateTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+							courseEndDateTime = DateUtil.format(e.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+							Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+							Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+							StudentAttendance byStatusAndCourseScheduleId = studentAttendanceDao.findByStatusAndCourseScheduleId(userId, e.getId().intValue());
+							if(byStatusAndCourseScheduleId != null){
+								byStatusAndCourseScheduleId.setSignOutTime(date);
+								byStatusAndCourseScheduleId.setStatus(statusEnum);
+								byStatusAndCourseScheduleId.setUpdateTime(date);
+								studentAttendanceDao.update(byStatusAndCourseScheduleId);
 							}else {
+								byStatusAndCourseScheduleId = new StudentAttendance();
+								byStatusAndCourseScheduleId.setSignOutTime(endDateTime);
+								byStatusAndCourseScheduleId.setStatus(statusEnum);
+								byStatusAndCourseScheduleId.setSignInTime(startDateTime);
+								byStatusAndCourseScheduleId.setUpdateTime(date);
+								byStatusAndCourseScheduleId.setUserId(userId);
+								byStatusAndCourseScheduleId.setTeacherId(courseSchedule.getActualTeacherId());
+								byStatusAndCourseScheduleId.setClassGroupId(e.getClassGroupId());
+								byStatusAndCourseScheduleId.setCourseScheduleId(e.getId());
+								byStatusAndCourseScheduleId.setMusicGroupId(e.getMusicGroupId());
+								byStatusAndCourseScheduleId.setGroupType(e.getGroupType());
+								byStatusAndCourseScheduleId.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
+								studentAttendanceDao.insert(byStatusAndCourseScheduleId);
+							}
+							if(totalMinutes < 0){
 								break;
 							}
 						}

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

@@ -38,8 +38,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	@Autowired
 	private CourseHomeworkService courseHomeworkService;
 	@Autowired
-	private StudentAttendanceDao studentAttendanceDao;
-	@Autowired
 	private StudentCourseHomeworkDao studentCourseHomeworkDao;
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
@@ -348,8 +346,14 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 								courseEndDateTime = DateUtil.format(e.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
 								Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
 								Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-								teacherAttendanceDao.cuntinueCourseSign(e.getId(),startDateTime,endDateTime);
+								teacherAttendanceDao.cuntinueCourseSign(e.getId(),startDateTime,endDateTime,1);
 							}else {
+								courseClassDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
+								courseStartDateTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+								courseEndDateTime = DateUtil.format(e.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+								Date startDateTime = DateUtil.stringToDate(courseClassDate + " " + courseStartDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+								Date endDateTime = DateUtil.stringToDate(courseClassDate + " " + courseEndDateTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+								teacherAttendanceDao.cuntinueCourseSign(e.getId(),startDateTime,endDateTime,0);
 								break;
 							}
 						}

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

@@ -77,6 +77,7 @@ public class TeacherSalaryComplaintsServiceImpl extends BaseServiceImpl<Long, Te
 			throw new BizException("申述已提交");
 		}
 		complaints.setTeacherId(teacherId);
+		complaints.setStatusEnum(PENDING);
 		return teacherSalaryComplaintsDao.insert(complaints);
 	}
 

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

@@ -2955,5 +2955,14 @@
         AND (cs.del_flag_ IS NULL OR cs.del_flag_ =0)
         GROUP BY cssp.user_id_;
     </select>
+    <select id="getLastCourse" resultMap="CourseSchedule">
+        SELECT cs.* FROM course_schedule cs
+        WHERE cs.class_group_id_ = #{classGroupId}
+        AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) &lt;= #{continueCourseTime}
+        AND TIMESTAMPDIFF(MINUTE, CONCAT(cs.class_date_," ",cs.end_class_time_),#{startTime}) >= 0
+        AND cs.actual_teacher_id_ = #{teacherId}
+        ORDER BY cs.class_date_ DESC,cs.end_class_time_ DESC
+        LIMIT 1
+    </select>
 
 </mapper>

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

@@ -455,6 +455,14 @@
 			#{id}
 		</foreach>
 	</update>
+	<update id="updateTeacherSalaryConfirmStatusToComplied">
+		UPDATE course_schedule_teacher_salary SET confirm_status_=3
+		WHERE confirm_status_!=2
+		AND id_ IN
+		<foreach collection="ids" item="id" open="(" close=")" separator=",">
+			#{id}
+		</foreach>
+	</update>
 
 	<select id="findCourseScheduleTeacherSalaryByMusicGroupId" resultMap="CourseScheduleTeacherSalary">
 		SELECT * FROM course_schedule_teacher_salary WHERE music_group_id_=#{musicGroupId} AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -763,7 +771,7 @@
 				AND ta.sign_out_status_=#{signOutStatus}
 			</if>
 			<if test="confirmStatus!=null">
-				AND csts.reduce_salary=#{confirmStatus}
+				AND csts.reduce_salary=#{confirmStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			</if>
 			<if test="groupName!=null">
 				AND cs.name_ LIKE CONCAT('%', #{groupName}, '%')
@@ -875,9 +883,22 @@
 		WHERE
 			( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
 			AND csts.settlement_time_ IS NOT NULL
-			AND csts.user_id_ = #{teacherId}
+			<if test="teacherId!=null">
+				AND csts.user_id_ = #{teacherId}
+			</if>
 			AND DATE_FORMAT( cs.class_date_, '%Y-%m' ) = #{month}
 	</select>
+    <select id="findIsSettlementTeacherIdsWithMonth" resultType="int">
+        SELECT
+          DISTINCT csts.user_id_
+        FROM
+        course_schedule_teacher_salary csts
+        LEFT JOIN course_schedule cs ON csts.course_schedule_id_ = cs.id_
+        WHERE
+        ( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
+        AND csts.settlement_time_ IS NOT NULL
+        AND DATE_FORMAT( cs.class_date_, '%Y-%m' ) = #{month}
+    </select>
 
 	<select id="countOpenConfirmSalarysWithMonth" resultType="int">
 		SELECT

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

@@ -373,7 +373,7 @@
     </update>
     <update id="cuntinueCourseSign">
         UPDATE teacher_attendance
-        SET sign_in_time_ = #{startDateTime},sign_in_status_ = 1,sign_out_status_ = 1,sign_out_time_= #{endDateTime}
+        SET sign_in_time_ = #{startDateTime},sign_in_status_ = 1,sign_out_status_ = #{status},sign_out_time_= #{endDateTime}
     	WHERE course_schedule_id_ = #{courseScheduleId}
     </update>
     <update id="batchUpdateTeacher">

+ 1 - 1
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -30,7 +30,7 @@ public class RoomController{
     }
 
     @RequestMapping(value = "/signIn", method = RequestMethod.POST)
-    public Object signIn(String roomId){
+    public Object signIn(Long roomId){
         roomService.signIn(roomId);
         return new BaseResponse<>();
     }

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

@@ -13,6 +13,7 @@ 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.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.Teacher;
@@ -20,10 +21,12 @@ 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.service.StudentAttendanceService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.im.IMHelper;
 import com.ym.mec.im.message.*;
+import com.ym.mec.util.date.DateUtil;
 import com.ym.pojo.*;
 import com.ym.service.RoomService;
 import com.ym.utils.CheckUtils;
@@ -32,6 +35,7 @@ import com.ym.utils.DateTimeUtils;
 import com.ym.utils.IdentifierUtils;
 import com.ym.whiteboard.WhiteBoardHelper;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -42,7 +46,7 @@ import java.util.Date;
 import java.util.List;
 
 /**
- * Created by weiqinxiao on 2019/2/28.
+ * Created by super_zou on 2019/11/28.
  */
 @Slf4j
 @Service
@@ -89,6 +93,9 @@ public class RoomServiceImpl implements RoomService {
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
+    @Autowired
+    private SysConfigDao sysConfigDao;
+
     @Value("${auth.sysconfig.tenantId}")
     private Integer lesseeOrganId;
 
@@ -104,7 +111,24 @@ public class RoomServiceImpl implements RoomService {
         String userId = sysUser.getId().toString();
         Teacher teacher = teacherDao.get(Integer.parseInt(userId));
         CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId));
-        try {
+
+        String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
+        if(StringUtils.isEmpty(continueCourseTime)){
+            continueCourseTime = "3";
+        }
+        CourseSchedule schedule = courseSchedule;
+        //如果当前课程是连堂课,那么获取第一节课的课程编号
+        while (true){
+            String classDate = DateUtil.format(schedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
+            String startClassTime = DateUtil.format(schedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+            schedule = courseScheduleDao.getLastCourse(schedule.getClassGroupId(),classDate + " " + startClassTime,schedule.getActualTeacherId(),continueCourseTime);
+            if(schedule != null){
+                roomId = schedule.getId().toString();
+            }else {
+                break;
+            }
+        }
+        /*try {
             if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
                 teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
             }else {
@@ -112,7 +136,7 @@ public class RoomServiceImpl implements RoomService {
             }
         }catch (Exception e){
             e.printStackTrace();
-        }
+        }*/
         if(courseSchedule.getGroupType() == GroupType.COMM){
             roomId = "I" + roomId;
         }else {
@@ -215,18 +239,17 @@ public class RoomServiceImpl implements RoomService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void signIn(String roomId) {
+    public void signIn(Long roomId) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         String userId = sysUser.getId().toString();
         log.info("roomSignIn: roomId={}, userId={}", roomId, userId);
-        Integer parseInt = Integer.parseInt(roomId.substring(1));
         Teacher teacher = teacherDao.get(Integer.parseInt(userId));
-        CourseSchedule courseSchedule = courseScheduleDao.get(parseInt.longValue());
+        CourseSchedule courseSchedule = courseScheduleDao.get(roomId);
         try {
             if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
-                teacherAttendanceService.addTeacherAttendanceRecord(parseInt,courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
+                teacherAttendanceService.addTeacherAttendanceRecord(roomId.intValue(),courseSchedule.getActualTeacherId(), SignStatusEnum.SIGN_IN,true);
             }else {
-                studentAttendanceService.addStudentAttendanceRecord(parseInt,Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_IN);
+                studentAttendanceService.addStudentAttendanceRecord(roomId.intValue(),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_IN);
             }
         }catch (Exception e){
             e.printStackTrace();

+ 2 - 2
mec-im/src/main/java/com/ym/service/RoomService.java

@@ -9,13 +9,13 @@ import com.ym.pojo.RoomResult;
 import java.util.List;
 
 /**
- * Created by weiqinxiao on 2019/2/28.
+ * Created by super_zou on 2019/11/28.
  */
 public interface RoomService {
     //everyone
     public RoomResult joinRoom(String userName, String roomId, boolean isAudience, boolean isDisableCamera) throws ApiException, Exception;
 
-    void signIn(String roomId);
+    void signIn(Long roomId);
 
     public Boolean leaveRoom(String roomId) throws ApiException, Exception;
 

+ 11 - 5
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleTeacherSalaryController.java

@@ -2,6 +2,7 @@ package com.ym.mec.web.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.page.CourseSalaryQueryInfo4Web;
@@ -11,6 +12,7 @@ import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,9 +21,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @RequestMapping("courseScheduleTeacherSalary")
 @Api(tags = "教师薪酬服务")
@@ -30,7 +30,8 @@ public class CourseScheduleTeacherSalaryController extends BaseController {
 
     @Autowired
     private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
-    
+    @Autowired
+    private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
     private VipGroupService vipGroupService;
     @Autowired
@@ -72,7 +73,12 @@ public class CourseScheduleTeacherSalaryController extends BaseController {
                 }
             }
         }
-        return succeed(courseScheduleTeacherSalaryService.findIsSettlementCourseSalarys(queryInfo));
+
+        Map<String, Object> result=new HashMap<>();
+        result.put("pageInfo", courseScheduleTeacherSalaryService.findIsSettlementCourseSalarys(queryInfo));
+        int i = courseScheduleTeacherSalaryDao.countOpenConfirmSalarysWithMonth(DateUtil.getMonth(DateUtil.addMonths(new Date(), -1)));
+        result.put("isOpenConfirm", i>0?1:0);
+        return succeed(result);
     }
 
     @ApiOperation(value = "开启课酬确认")