|
|
@@ -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);
|
|
|
|
|
|
@@ -127,52 +143,52 @@ public class StatisticsController {
|
|
|
statisticsVo.setLeaveCount(leaveCount);
|
|
|
statisticsVo.setAbsenteeismCount(absenteeismCount);
|
|
|
|
|
|
- //查询不需要考勤的人
|
|
|
- List<AttendanceRuleCategory> ruleCategories = ruleCategoryService.list(
|
|
|
- new QueryWrapper<AttendanceRuleCategory>().lambda()
|
|
|
- .eq(AttendanceRuleCategory::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
- .eq(AttendanceRuleCategory::getRoleId, 2)
|
|
|
- .le(AttendanceRuleCategory::getStartDate, LocalDate.now())
|
|
|
- .ge(AttendanceRuleCategory::getEndDate, LocalDate.now())
|
|
|
- );
|
|
|
- if(!ruleCategories.isEmpty()){
|
|
|
- //查询所有需要考勤的人
|
|
|
- BaseTeacherPageDto teacherPageDto = new BaseTeacherPageDto();
|
|
|
- List<Long> userIds = new ArrayList<>();
|
|
|
- List<Long> deptIds = new ArrayList<>();
|
|
|
- for (AttendanceRuleCategory ruleCategory : ruleCategories) {
|
|
|
- JsonArray userRelation = new JsonParser().parse(ruleCategory.getUserRelation()).getAsJsonArray();
|
|
|
-
|
|
|
- for (JsonElement jsonElement : userRelation) {
|
|
|
- JsonObject jsonObject = jsonElement.getAsJsonObject();
|
|
|
- if(jsonObject.get("deptId") != null && !jsonObject.get("deptId").isJsonNull()){
|
|
|
- deptIds.add(jsonObject.get("deptId").getAsLong());
|
|
|
- }
|
|
|
- if(jsonObject.get("userId") != null && !jsonObject.get("userId").isJsonNull()){
|
|
|
- userIds.add(jsonObject.get("userId").getAsLong());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- teacherPageDto.setDeptIds(deptIds);
|
|
|
- List<XjrUserPageVo> attendanceTeacherList = teacherbaseManagerService.getList(teacherPageDto);
|
|
|
-
|
|
|
- teacherPageDto = new BaseTeacherPageDto();
|
|
|
- teacherPageDto.setUserIds(userIds);
|
|
|
- attendanceTeacherList.addAll(teacherbaseManagerService.getList(teacherPageDto));
|
|
|
- //将所有需要考勤的人的id存入set集合
|
|
|
- Set<String> attendanceUserIdSet = attendanceTeacherList.stream().map(XjrUserPageVo::getId).collect(Collectors.toSet());
|
|
|
-
|
|
|
- //查询所有人
|
|
|
- teacherPageDto = new BaseTeacherPageDto();
|
|
|
- if(dto.getDeptId() != null){
|
|
|
- List<Long> dtoDeptIds = new ArrayList<>();
|
|
|
- dtoDeptIds.add(dto.getDeptId());
|
|
|
- teacherPageDto.setDeptIds(dtoDeptIds);
|
|
|
- }
|
|
|
-
|
|
|
- List<XjrUserPageVo> allTeacherList = teacherbaseManagerService.getList(teacherPageDto);
|
|
|
- statisticsVo.setNotAttendanceCount(allTeacherList.stream().filter(x -> !attendanceUserIdSet.contains(x.getId())).collect(Collectors.toList()).size());
|
|
|
- }
|
|
|
+// //查询不需要考勤的人
|
|
|
+// List<AttendanceRuleCategory> ruleCategories = ruleCategoryService.list(
|
|
|
+// new QueryWrapper<AttendanceRuleCategory>().lambda()
|
|
|
+// .eq(AttendanceRuleCategory::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+// .eq(AttendanceRuleCategory::getRoleId, 2)
|
|
|
+// .le(AttendanceRuleCategory::getStartDate, LocalDate.now())
|
|
|
+// .ge(AttendanceRuleCategory::getEndDate, LocalDate.now())
|
|
|
+// );
|
|
|
+// if(!ruleCategories.isEmpty()){
|
|
|
+// //查询所有需要考勤的人
|
|
|
+// BaseTeacherPageDto teacherPageDto = new BaseTeacherPageDto();
|
|
|
+// List<Long> userIds = new ArrayList<>();
|
|
|
+// List<Long> deptIds = new ArrayList<>();
|
|
|
+// for (AttendanceRuleCategory ruleCategory : ruleCategories) {
|
|
|
+// JsonArray userRelation = new JsonParser().parse(ruleCategory.getUserRelation()).getAsJsonArray();
|
|
|
+//
|
|
|
+// for (JsonElement jsonElement : userRelation) {
|
|
|
+// JsonObject jsonObject = jsonElement.getAsJsonObject();
|
|
|
+// if(jsonObject.get("deptId") != null && !jsonObject.get("deptId").isJsonNull()){
|
|
|
+// deptIds.add(jsonObject.get("deptId").getAsLong());
|
|
|
+// }
|
|
|
+// if(jsonObject.get("userId") != null && !jsonObject.get("userId").isJsonNull()){
|
|
|
+// userIds.add(jsonObject.get("userId").getAsLong());
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// teacherPageDto.setDeptIds(deptIds);
|
|
|
+// List<XjrUserPageVo> attendanceTeacherList = teacherbaseManagerService.getList(teacherPageDto);
|
|
|
+//
|
|
|
+// teacherPageDto = new BaseTeacherPageDto();
|
|
|
+// teacherPageDto.setUserIds(userIds);
|
|
|
+// attendanceTeacherList.addAll(teacherbaseManagerService.getList(teacherPageDto));
|
|
|
+// //将所有需要考勤的人的id存入set集合
|
|
|
+// Set<String> attendanceUserIdSet = attendanceTeacherList.stream().map(XjrUserPageVo::getId).collect(Collectors.toSet());
|
|
|
+//
|
|
|
+// //查询所有人
|
|
|
+// teacherPageDto = new BaseTeacherPageDto();
|
|
|
+// if(dto.getDeptId() != null){
|
|
|
+// List<Long> dtoDeptIds = new ArrayList<>();
|
|
|
+// dtoDeptIds.add(dto.getDeptId());
|
|
|
+// teacherPageDto.setDeptIds(dtoDeptIds);
|
|
|
+// }
|
|
|
+//
|
|
|
+// List<XjrUserPageVo> allTeacherList = teacherbaseManagerService.getList(teacherPageDto);
|
|
|
+// statisticsVo.setNotAttendanceCount(allTeacherList.stream().filter(x -> !attendanceUserIdSet.contains(x.getId())).collect(Collectors.toList()).size());
|
|
|
+// }
|
|
|
|
|
|
|
|
|
//计算出勤率
|