Просмотр исходного кода

1、毕业管理优化
2、数据看板教职工考勤增加不考勤人数

dzx 7 месяцев назад
Родитель
Сommit
9f92f4fb79

+ 42 - 0
src/main/java/com/xjrsoft/module/attendance/controller/StatisticsController.java

@@ -2,15 +2,23 @@ package com.xjrsoft.module.attendance.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.toolkit.MPJWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import com.xjrsoft.common.annotation.XjrLog;
+import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.OutInStatusEnum;
 import com.xjrsoft.common.enums.StudyStatusEnum;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto;
 import com.xjrsoft.module.attendance.dto.TeacherDetailsDto;
+import com.xjrsoft.module.attendance.entity.AttendanceRuleCategory;
+import com.xjrsoft.module.attendance.service.IAttendanceRuleCategoryService;
 import com.xjrsoft.module.attendance.service.ITeacherAttendanceRecordService;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsPageVo;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsVo;
@@ -24,8 +32,11 @@ import com.xjrsoft.module.personnel.service.IReservationSchoolService;
 import com.xjrsoft.module.student.entity.BaseStudent;
 import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
 import com.xjrsoft.module.student.service.IStudentLeaveService;
+import com.xjrsoft.module.teacher.dto.BaseTeacherPageDto;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import com.xjrsoft.module.teacher.entity.XjrUser;
+import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
+import com.xjrsoft.module.teacher.vo.XjrUserPageVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -39,6 +50,8 @@ import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -61,6 +74,8 @@ public class StatisticsController {
     private final IStudentLeaveService studentLeaveService;
     private final IReservationSchoolService reservationSchoolService;
     private final ITeacherAttendanceRecordService attendanceRecordService;
+    private final ITeacherbaseManagerService teacherbaseManagerService;
+    private final IAttendanceRuleCategoryService ruleCategoryService;
 
     @GetMapping(value = "/teacher-statistics")
     @ApiOperation(value = "教职工考勤统计")
@@ -88,7 +103,9 @@ public class StatisticsController {
         Long leaveCount = 0L;
         Long absenteeismCount = 0L;
         Integer dividendCount = 0;
+        Set<Long> teacherIds = new HashSet<>();
         for (TeacherStatisticsPageVo recordVo : list) {
+            teacherIds.add(recordVo.getUserId());
             if ("迟到".equals(recordVo.getStatus())) {
                 lateCount++;
                 dividendCount++;
@@ -109,6 +126,31 @@ public class StatisticsController {
         statisticsVo.setLeaveCount(leaveCount);
         statisticsVo.setAbsenteeismCount(absenteeismCount);
 
+        //查询不需要考勤的人
+        AttendanceRuleCategory ruleCategory = ruleCategoryService.getOne(
+                new QueryWrapper<AttendanceRuleCategory>().lambda()
+                        .eq(AttendanceRuleCategory::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(AttendanceRuleCategory::getRoleId, 2)
+                        .le(AttendanceRuleCategory::getStartDate, LocalDate.now())
+                        .ge(AttendanceRuleCategory::getStartDate, LocalDate.now())
+        );
+        BaseTeacherPageDto teacherPageDto = new BaseTeacherPageDto();
+        JsonArray userRelation = new JsonParser().parse(ruleCategory.getUserRelation()).getAsJsonArray();
+        List<Long> userIds = new ArrayList<>();
+        List<Long> deptIds = new ArrayList<>();
+        for (JsonElement jsonElement : userRelation) {
+            JsonObject jsonObject = jsonElement.getAsJsonObject();
+            deptIds.add(jsonObject.get("deptId").getAsLong());
+            userIds.add(jsonObject.get("userId").getAsLong());
+        }
+        teacherPageDto.setDeptIds(deptIds);
+        teacherPageDto.setUserIds(userIds);
+        List<XjrUserPageVo> attendanceTeacherList = teacherbaseManagerService.getList(teacherPageDto);
+
+        List<XjrUserPageVo> allTeacherList = teacherbaseManagerService.getList(new BaseTeacherPageDto());
+
+        statisticsVo.setNotAttendanceCount(allTeacherList.size() - attendanceTeacherList.size());
+
         //计算出勤率
         BigDecimal divide = BigDecimal.ZERO;
         if (dividendCount != 0) {

+ 3 - 0
src/main/java/com/xjrsoft/module/attendance/vo/TeacherStatisticsVo.java

@@ -40,4 +40,7 @@ public class TeacherStatisticsVo {
 
     @ApiModelProperty("旷课人数")
     private Integer playTruantCount;
+
+    @ApiModelProperty("不考勤人数")
+    private Integer notAttendanceCount;
 }

+ 27 - 0
src/main/java/com/xjrsoft/module/teacher/dto/BaseTeacherPageDto.java

@@ -0,0 +1,27 @@
+package com.xjrsoft.module.teacher.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.util.List;
+
+
+/**
+ * @title: 教师奖项分页查询入参
+ * @Author dzx
+ * @Date: 2024-06-04
+ * @Version 1.0
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BaseTeacherPageDto extends PageInput {
+
+    private List<Long> userIds;
+
+    private List<Long> deptIds;
+
+}

+ 6 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/BaseTeacherMapper.java

@@ -1,8 +1,13 @@
 package com.xjrsoft.module.teacher.mapper;
 
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.teacher.dto.BaseTeacherPageDto;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
+import com.xjrsoft.module.teacher.vo.XjrUserPageVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @title: mapper
@@ -13,4 +18,5 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface BaseTeacherMapper extends MPJBaseMapper<BaseTeacher> {
 
+    List<XjrUserPageVo> getList(@Param("dto") BaseTeacherPageDto dto);
 }

+ 4 - 0
src/main/java/com/xjrsoft/module/teacher/service/ITeacherbaseManagerService.java

@@ -2,8 +2,10 @@ package com.xjrsoft.module.teacher.service;
 
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.teacher.dto.AddXjrUserDto;
+import com.xjrsoft.module.teacher.dto.BaseTeacherPageDto;
 import com.xjrsoft.module.teacher.dto.UpdateXjrUserDto;
 import com.xjrsoft.module.teacher.entity.XjrUser;
+import com.xjrsoft.module.teacher.vo.XjrUserPageVo;
 
 import java.text.ParseException;
 import java.util.List;
@@ -49,4 +51,6 @@ public interface ITeacherbaseManagerService extends MPJBaseService<XjrUser> {
 
     void disabledUser(Long userId);
 
+    List<XjrUserPageVo> getList(BaseTeacherPageDto dto);
+
 }

+ 8 - 2
src/main/java/com/xjrsoft/module/teacher/service/impl/TeacherbaseManagerServiceImpl.java

@@ -44,6 +44,7 @@ import com.xjrsoft.module.system.entity.DictionaryDetail;
 import com.xjrsoft.module.system.entity.DictionaryItem;
 import com.xjrsoft.module.system.service.IDictionarydetailService;
 import com.xjrsoft.module.teacher.dto.AddXjrUserDto;
+import com.xjrsoft.module.teacher.dto.BaseTeacherPageDto;
 import com.xjrsoft.module.teacher.dto.UpdateXjrUserDto;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import com.xjrsoft.module.teacher.entity.BaseTeacherChangeRecord;
@@ -66,6 +67,7 @@ import com.xjrsoft.module.teacher.mapper.BaseTeacherRegularMapper;
 import com.xjrsoft.module.teacher.mapper.WfTeacherDepartMapper;
 import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
 import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
+import com.xjrsoft.module.teacher.vo.XjrUserPageVo;
 import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
 import com.xjrsoft.module.workflow.mapper.WorkflowFormRelationMapper;
 import lombok.AllArgsConstructor;
@@ -116,7 +118,6 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
     private final IDictionarydetailService dictionaryService;
     private final IDepartmentService departmentService;
     private final IPostService postService;
-    private final BaseTeacherMapper baseTeacherMapper;
     private IDictionarydetailService dictionarydetailService;
 
     private WfTeacherDepartMapper wfTeacherDepartMapper;
@@ -841,7 +842,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
                 updateBaseTeacher = new BaseTeacher();
                 updateBaseTeacher.setId(baseTeacher.getId());
                 updateBaseTeacher.setJobState("JOB_LZ");
-                baseTeacherMapper.updateById(updateBaseTeacher);
+                teacherMapper.updateById(updateBaseTeacher);
             }
 
             // 处理变更记录
@@ -922,4 +923,9 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
         );
         dataUtil.deleteCar(carList);
     }
+
+    @Override
+    public List<XjrUserPageVo> getList(BaseTeacherPageDto dto) {
+        return null;
+    }
 }

+ 1 - 1
src/main/resources/mapper/student/BaseStudentGraduateMapper.xml

@@ -60,7 +60,7 @@
     </select>
 
     <select id="getInfoById" resultType="com.xjrsoft.module.student.vo.BaseStudentGraduateVo">
-        SELECT t5.id,t1.user_id,t1.student_id,t2.name,t4.name AS major_name,t6.name AS stduy_status_cn,t1.leaving_bed_date,
+        SELECT t5.id,t1.user_id,t1.student_id,t2.name,t4.name AS major_name,t6.name AS stduy_status_cn,t5.leaving_bed_date,
         IFNULL(t5.status,0) AS status,t5.certificate_number,t5.certificate_date,t7.name AS class_name,t8.name AS grade_name,t5.appendix_id FROM base_student t1
         LEFT JOIN xjr_user t2 ON t1.user_id = t2.id
         LEFT JOIN base_student_school_roll t3 ON t1.user_id = t3.user_id

+ 25 - 0
src/main/resources/mapper/teacher/BaseTeacherMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.teacher.mapper.BaseTeacherMapper">
+    <select id="getList" parameterType="om.xjrsoft.module.teacher.dto.BaseTeacherPageDto" resultType="com.xjrsoft.module.teacher.vo.XjrUserPageVo">
+        SELECT DISTINCT t2.* FROM base_teacher t1
+        INNER JOIN xjr_user t2 ON t1.user_id = t2.id
+        LEFT JOIN xjr_user_dept_relation t3 ON t2.id = t3.user_id
+        LEFT JOIN xjr_user_role_relation t4 ON t2.id = t4.user_id
+        WHERE t2.delete_mark = 0 AND t1.delete_mark = 0
+        <if test="dto.deptIds != null and dto.deptIds.size() > 0">
+            AND t3.dept_id IN
+            <foreach item="deptId" index="index" collection="dto.deptIds" open="(" separator="," close=")">
+                #{deptId}
+            </foreach>
+        </if>
+        <if test="dto.userIds != null and dto.userIds.size() > 0">
+            AND t2.id IN
+            <foreach item="userId" index="index" collection="dto.userIds" open="(" separator="," close=")">
+                #{userId}
+            </foreach>
+        </if>
+    </select>
+</mapper>

+ 5 - 0
src/main/resources/sqlScript/鸿合课表视图.sql

@@ -0,0 +1,5 @@
+CREATE VIEW course_table_view AS
+SELECT t1.class_id,t1.class_name,t1.teacher_name,t1.course_name, t2.short_name,t1.weeks_cn,t1.schedule_date,t1.start_time,t1.end_time FROM course_table t1
+LEFT JOIN class_time t2 ON t1.time_number = t2.number
+LEFT JOIN base_semester t3 ON t1.base_semester_id = t3.id
+WHERE t1.schedule_date >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY);