Browse Source

教师考勤,统计班主任请假的状态

dzx 9 months ago
parent
commit
2d26f9c567

+ 17 - 8
src/main/java/com/xjrsoft/module/attendance/controller/TeacherStatisticsController.java

@@ -10,7 +10,6 @@ import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.module.attendance.dto.TeacherDetailsDto;
-import com.xjrsoft.module.attendance.vo.ClassStatisticsVo;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsPageVo;
 import com.xjrsoft.module.holiday.entity.HolidayDate;
 import com.xjrsoft.module.holiday.service.IHolidayDateService;
@@ -21,7 +20,9 @@ import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.outint.entity.TeacherOutInRecord;
 import com.xjrsoft.module.outint.service.ITeacherOutInRecordService;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
+import com.xjrsoft.module.teacher.entity.WfHeadTeacherLeave;
 import com.xjrsoft.module.teacher.entity.WfTeacherleave;
+import com.xjrsoft.module.teacher.service.IWfHeadTeacherLeaveService;
 import com.xjrsoft.module.teacher.service.IWfTeacherleaveService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -55,6 +56,7 @@ public class TeacherStatisticsController {
     private final ITeacherOutInRecordService teacherOutInRecordService;
     private final IWfTeacherleaveService wfTeacherleaveService;
     private final IHolidayDateService holidayDateService;
+    private final IWfHeadTeacherLeaveService headTeacherLeaveService;
 
 
     @GetMapping(value = "/teacher-details")
@@ -101,6 +103,8 @@ public class TeacherStatisticsController {
 
             //查询当前时间段存在请假的教师
             Map<Long, WfTeacherleave> leaveList = wfTeacherleaveService.getLeaveList(startTime, endTime);
+
+            Map<Long, WfHeadTeacherLeave> teacherLeaveMap = headTeacherLeaveService.getLeaveList(startTime, endTime);
             //查询进入记录
             List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.list(
                     new QueryWrapper<TeacherOutInRecord>().lambda()
@@ -119,14 +123,19 @@ public class TeacherStatisticsController {
                 WfTeacherleave studentLeave = leaveList.get(record.getUserId());
                 if(studentLeave != null){
                     record.setStatus(studentLeave.getLeaveType());
+                    continue;
+                }
+                WfHeadTeacherLeave teacherLeave = teacherLeaveMap.get(record.getUserId());
+                if(teacherLeave != null){
+                    record.setStatus(teacherLeave.getLeaveReason());
+                    continue;
+                }
+                TeacherOutInRecord outInRecord = outInMap.get(record.getUserId());
+                if(outInRecord != null){
+                    record.setRecordTime(outInRecord.getRecordTime());
+                    record.setStatus(outInRecord.getAttendanceStatus());
                 }else{
-                    TeacherOutInRecord outInRecord = outInMap.get(record.getUserId());
-                    if(outInRecord != null){
-                        record.setRecordTime(outInRecord.getRecordTime());
-                        record.setStatus(outInRecord.getAttendanceStatus());
-                    }else{
-                        record.setStatus("缺勤");
-                    }
+                    record.setStatus("缺勤");
                 }
             }
         }

+ 5 - 0
src/main/java/com/xjrsoft/module/teacher/service/IWfHeadTeacherLeaveService.java

@@ -6,6 +6,9 @@ import com.xjrsoft.module.teacher.dto.WfHeadTeacherLeavePageDto;
 import com.xjrsoft.module.teacher.entity.WfHeadTeacherLeave;
 import com.xjrsoft.module.teacher.vo.WfHeadTeacherLeavePageVo;
 
+import java.time.LocalDateTime;
+import java.util.Map;
+
 /**
 * @title: 班主任事项请假
 * @Author szs
@@ -20,4 +23,6 @@ public interface IWfHeadTeacherLeaveService extends MPJBaseService<WfHeadTeacher
      * @return
      */
     IPage<WfHeadTeacherLeavePageVo> getListPage(WfHeadTeacherLeavePageDto dto);
+
+    Map<Long, WfHeadTeacherLeave> getLeaveList(LocalDateTime startTime, LocalDateTime endTime);
 }

+ 24 - 0
src/main/java/com/xjrsoft/module/teacher/service/impl/WfHeadTeacherLeaveServiceImpl.java

@@ -2,15 +2,23 @@ package com.xjrsoft.module.teacher.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.teacher.dto.WfHeadTeacherLeavePageDto;
 import com.xjrsoft.module.teacher.entity.WfHeadTeacherLeave;
+import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.mapper.WfHeadTeacherLeaveMapper;
 import com.xjrsoft.module.teacher.service.IWfHeadTeacherLeaveService;
 import com.xjrsoft.module.teacher.vo.WfHeadTeacherLeavePageVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
 * @title: 班主任事项请假
 * @Author szs
@@ -27,4 +35,20 @@ public class WfHeadTeacherLeaveServiceImpl extends MPJBaseServiceImpl<WfHeadTeac
     public IPage<WfHeadTeacherLeavePageVo> getListPage(WfHeadTeacherLeavePageDto dto) {
         return wfHeadTeacherLeaveMapper.getListPage(ConventPage.getPage(dto),dto);
     }
+
+    @Override
+    public Map<Long, WfHeadTeacherLeave> getLeaveList(LocalDateTime startTime, LocalDateTime endTime) {
+        List<WfHeadTeacherLeave> list = wfHeadTeacherLeaveMapper.selectJoinList(WfHeadTeacherLeave.class,
+                new MPJLambdaWrapper<WfHeadTeacherLeave>()
+                        .select(WfHeadTeacherLeave.class, x -> VoToColumnUtil.fieldsToColumns(WfHeadTeacherLeave.class).contains(x.getProperty()))
+                        .innerJoin(XjrUser.class, XjrUser::getId, WfHeadTeacherLeave::getApplicantUserId)
+                        .eq(WfHeadTeacherLeave::getStatus, 1)
+                        .between(WfHeadTeacherLeave::getStartTime, startTime, endTime)
+        );
+        Map<Long, WfHeadTeacherLeave> result = new HashMap<>();
+        for (WfHeadTeacherLeave leave : list) {
+            result.put(leave.getApplicantUserId(), leave);
+        }
+        return result;
+    }
 }

+ 1 - 0
src/main/resources/mapper/teacher/WfHeadTeacherLeaveMapper.xml

@@ -33,4 +33,5 @@
         </if>
         order by t.id
     </select>
+
 </mapper>