Explorar el Código

1、考勤规则增加默认显示字段
2、考勤统计增加考勤规则关联晒寻

dzx hace 6 meses
padre
commit
35b5a98403

+ 16 - 0
src/main/java/com/xjrsoft/module/attendance/controller/AttendanceRuleCategoryController.java

@@ -69,6 +69,22 @@ public class AttendanceRuleCategoryController {
         return RT.ok(pageOutput);
     }
 
+    @GetMapping(value = "/list")
+    @ApiOperation(value = "考勤规则列表(不分页)")
+    @SaCheckPermission("attendancerulecategory:detail")
+    @XjrLog(value = "考勤规则列表(不分页)")
+    public RT<List<AttendanceRuleCategoryPageVo>> list(@Valid AttendanceRuleCategoryPageDto dto) {
+
+        LambdaQueryWrapper<AttendanceRuleCategory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .orderByDesc(AttendanceRuleCategory::getId)
+                .eq(dto.getRoleId() != null, AttendanceRuleCategory::getRoleId, dto.getRoleId())
+                .select(AttendanceRuleCategory.class, x -> VoToColumnUtil.fieldsToColumns(AttendanceRuleCategoryPageVo.class).contains(x.getProperty()));
+        List<AttendanceRuleCategory> page = attendanceRuleCategoryService.list(queryWrapper);
+        List<AttendanceRuleCategoryPageVo> pageOutput = BeanUtil.copyToList(page, AttendanceRuleCategoryPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
     @GetMapping(value = "/info")
     @ApiOperation(value = "根据id查询考勤规则信息")
     @SaCheckPermission("attendancerulecategory:detail")

+ 19 - 3
src/main/java/com/xjrsoft/module/attendance/controller/StatisticsController.java

@@ -19,6 +19,7 @@ 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.entity.AttendanceUserRelation;
 import com.xjrsoft.module.attendance.service.IAttendanceRuleCategoryService;
 import com.xjrsoft.module.attendance.service.ITeacherAttendanceRecordService;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsPageVo;
@@ -81,15 +82,30 @@ public class StatisticsController {
     @GetMapping(value = "/teacher-statistics")
     @ApiOperation(value = "教职工考勤统计")
     @SaCheckPermission("statistics:detail")
-    @XjrLog(value = "", saveResponseData = true)
+    @XjrLog(value = "教职工考勤统计", saveResponseData = true)
     public RT<TeacherStatisticsVo> teacherStatistics(@Valid AttendanceStatisticDto dto) {
         TeacherStatisticsVo statisticsVo = new TeacherStatisticsVo();
+
+        if(dto.getRuleCategoryId() == null){
+            AttendanceRuleCategory ruleCategory = ruleCategoryService.getOne(
+                    new QueryWrapper<AttendanceRuleCategory>().lambda()
+                            .eq(AttendanceRuleCategory::getIsDefaultShow, 1)
+                            .eq(AttendanceRuleCategory::getRoleId, 2)
+            );
+            if(ruleCategory != null){
+                dto.setRuleCategoryId(ruleCategory.getId());
+            }
+
+        }
+
         //查询总人数
         MPJLambdaWrapper<XjrUser> queryWrapper = MPJWrappers.<XjrUser>lambdaJoin()
-                .disableSubLogicDel()
+                .disableLogicDel()
                 .eq(ObjectUtil.isNotNull(dto.getDeptId()), UserDeptRelation::getDeptId, dto.getDeptId())
+                .eq(AttendanceUserRelation::getAttendanceRuleCategoryId, dto.getRuleCategoryId())
                 .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, XjrUser::getId)
-                .innerJoin(UserDeptRelation.class, UserDeptRelation::getUserId, XjrUser::getId);
+                .innerJoin(UserDeptRelation.class, UserDeptRelation::getUserId, XjrUser::getId)
+                .innerJoin(AttendanceUserRelation.class, AttendanceUserRelation::getUserId, XjrUser::getId);
         long allCount = xjrUserService.count(queryWrapper);
         statisticsVo.setAllCount(allCount);
 

+ 3 - 0
src/main/java/com/xjrsoft/module/attendance/dto/AddAttendanceRuleCategoryDto.java

@@ -74,4 +74,7 @@ public class AddAttendanceRuleCategoryDto implements Serializable {
 
     @ApiModelProperty("非考勤周期是否允许进出(1:是 0:否)")
     private Integer notCycleIsInOut;
+
+    @ApiModelProperty("是否默认显示(1:是 0:否)")
+    private Integer isDefaultShow;
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/attendance/dto/AttendanceRuleCategoryPageDto.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.attendance.dto;
 
 import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -15,5 +16,7 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = false)
 public class AttendanceRuleCategoryPageDto extends PageInput {
 
+    @ApiModelProperty("被考勤角色(xjr_role)")
+    private Long roleId;
 
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/attendance/dto/AttendanceStatisticDto.java

@@ -29,4 +29,7 @@ public class AttendanceStatisticDto extends PageInput {
 
     @ApiModelProperty("部门id")
     private Long deptId;
+
+    @ApiModelProperty("考勤规则id")
+    private Long ruleCategoryId;
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/attendance/entity/AttendanceRuleCategory.java

@@ -125,4 +125,7 @@ public class AttendanceRuleCategory implements Serializable {
     @ApiModelProperty("非考勤周期是否允许进出(1:是 0:否)")
     private Integer notCycleIsInOut;
 
+    @ApiModelProperty("是否默认显示(1:是 0:否)")
+    private Integer isDefaultShow;
+
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/attendance/service/ITeacherAttendanceRecordService.java

@@ -6,7 +6,10 @@ import com.xjrsoft.module.attendance.dto.ResetTeacherAttendanceRecordDto;
 import com.xjrsoft.module.attendance.dto.TeacherDetailsDto;
 import com.xjrsoft.module.attendance.entity.TeacherAttendanceRecord;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsPageVo;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -23,4 +26,7 @@ public interface ITeacherAttendanceRecordService extends MPJBaseService<TeacherA
     List<TeacherStatisticsPageVo> getList(TeacherDetailsDto dto);
 
     Boolean resetData(ResetTeacherAttendanceRecordDto dto);
+
+    @Delete("delete from teacher_attendance_record where time_interval = #{timePeriod} and attendance_date = '#{attendanceDate}'")
+    Boolean deleteRecord(@Param("timePeriod") Integer timePeriod, @Param("attendanceDate") String attendanceDate);
 }

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

@@ -93,4 +93,7 @@ public class AttendanceRuleCategoryPageVo {
     @ApiModelProperty("非考勤周期是否允许进出(1:是 0:否)")
     private Integer notCycleIsInOut;
 
+    @ApiModelProperty("是否默认显示(1:是 0:否)")
+    private Integer isDefaultShow;
+
 }

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

@@ -76,4 +76,7 @@ public class AttendanceRuleCategoryVo {
     @ApiModelProperty("attendanceUserRelation子表")
     private List<AddAttendanceUserRelationDto> attendanceUserRelationList;
 
+    @ApiModelProperty("是否默认显示(1:是 0:否)")
+    private Integer isDefaultShow;
+
 }

+ 1 - 5
src/main/java/com/xjrsoft/module/job/AttendanceRecordTask.java

@@ -464,11 +464,7 @@ public class AttendanceRecordTask {
         }
 
         if (!insertList.isEmpty()) {
-            recordService.remove(
-                    new QueryWrapper<TeacherAttendanceRecord>().lambda()
-                            .eq(TeacherAttendanceRecord::getAttendanceDate, startDateTime.toLocalDate())
-                            .eq(TeacherAttendanceRecord::getTimeInterval, timePeriod)
-            );
+            recordService.deleteRecord(timePeriod, startDateTime.toLocalDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
             recordService.saveBatch(insertList);
         }
     }

+ 6 - 0
src/main/java/com/xjrsoft/module/job/WfCourseAdjustTask.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.job;
 
+import cn.hutool.extra.spring.SpringUtil;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.EnabledMark;
@@ -37,6 +38,11 @@ public class WfCourseAdjustTask {
     @Async
     @Scheduled(cron = "0 */10 * * * ?")
     public void execute() {
+        String active = SpringUtil.getActiveProfile();
+        if (!"prod".equals(active)) {
+            log.info("非正式环境,无法执行数据推送");
+            return;
+        }
         List<WfCourseAdjust> list = wfCourseAdjustService.list(
                 new MPJLambdaWrapper<WfCourseAdjust>()
                         .select(WfCourseAdjust::getId)