This commit is contained in:
zt
2025-09-16 09:34:03 +08:00
parent 300579d32c
commit 9d0c66b2d3
3 changed files with 35 additions and 26 deletions

View File

@ -111,7 +111,7 @@ public class BusAttendanceController extends BaseController {
return R.ok(busAttendanceService.getClockDateForTwoWeekList(projectId));
}
@GetMapping("/exportList")
@PostMapping("/exportList")
public void exportList(AttendanceExportDto dto, HttpServletResponse response) {
busAttendanceService.getExportList(dto, response);
}

View File

@ -249,9 +249,14 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
}
// 判断用户是否已经被拉黑
constructionBlacklistService.validUserInBlacklist(constructionUser.getSysUserId(), req.getProjectId());
Boolean result = false;
// 进行人脸比对
Boolean result = constructionUserService.faceComparison(file);
try {
result = constructionUserService.faceComparison(file);
}catch (Exception e){
throw new ServiceException("人脸识别失败,请重新识别", HttpStatus.BAD_REQUEST);
}
if (!result) {
throw new ServiceException("人脸识别失败,请重新识别", HttpStatus.BAD_REQUEST);
}
@ -859,10 +864,12 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
@Override
public List<BusAttendanceClockDateForTwoWeekVo> getClockDateForTwoWeekList(Long projectId) {
LocalDate now = LocalDate.now();
//往前14天包含今天
// 往前14天包含今天
LocalDate startDate = now.minusDays(13);
List<BusAttendance> list = list(Wrappers.<BusAttendance>lambdaQuery().eq(BusAttendance::getProjectId, projectId)
List<BusAttendance> list = list(Wrappers.<BusAttendance>lambdaQuery()
.eq(BusAttendance::getProjectId, projectId)
.between(BusAttendance::getClockDate, startDate, now)
.orderByAsc(BusAttendance::getClockDate)
);
// 按日期分组
@ -879,42 +886,43 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
}
// 统计全勤、半勤、缺卡人数
ArrayList<BusAttendanceClockDateForTwoWeekVo> busAttendanceClockDateForTwoWeekVos = new ArrayList<>();
List<BusAttendanceClockDateForTwoWeekVo> result = new ArrayList<>();
List<String> validStatusList = Arrays.asList("1", "2", "3", "5");
List<String> list1 = Arrays.asList("1", "2", "3", "5");
for (Map.Entry<LocalDate, Map<Long, List<BusAttendance>>> dateEntry : dateUserMap.entrySet()) {
LocalDate date = dateEntry.getKey();
Map<Long, List<BusAttendance>> userAttendanceMap = dateEntry.getValue();
LocalDate currentDate = startDate;
while (!currentDate.isAfter(now)) {
Map<Long, List<BusAttendance>> userAttendanceMap = dateUserMap.getOrDefault(currentDate, new HashMap<>());
int full = 0, half = 0, absent = 0;
for (Map.Entry<Long, List<BusAttendance>> userEntry : userAttendanceMap.entrySet()) {
List<BusAttendance> records = userEntry.getValue();
int a = 0;
for (BusAttendance record : records) {
if (list1.contains(record.getClockStatus())) {
a += 1;
}
}
if (a >= 2) {
long validCount = records.stream()
.map(BusAttendance::getClockStatus)
.filter(validStatusList::contains)
.count();
if (validCount >= 2) {
full++;
} else if (a == 1) {
} else if (validCount == 1) {
half++;
} else {
absent++;
}
}
BusAttendanceClockDateForTwoWeekVo busAttendanceClockDateForTwoWeekVo = new BusAttendanceClockDateForTwoWeekVo();
busAttendanceClockDateForTwoWeekVo.setClockDate(date);
busAttendanceClockDateForTwoWeekVo.setAttendance(full);
busAttendanceClockDateForTwoWeekVo.setHalfAttendance(half);
busAttendanceClockDateForTwoWeekVo.setAbsenteeism(absent);
busAttendanceClockDateForTwoWeekVos.add(busAttendanceClockDateForTwoWeekVo);
BusAttendanceClockDateForTwoWeekVo vo = new BusAttendanceClockDateForTwoWeekVo();
vo.setClockDate(currentDate);
vo.setAttendance(full);
vo.setHalfAttendance(half);
vo.setAbsenteeism(absent);
result.add(vo);
currentDate = currentDate.plusDays(1);
}
return busAttendanceClockDateForTwoWeekVos;
return result;
}
@Override

View File

@ -594,6 +594,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
if (CollUtil.isEmpty(roles)) {
throw new ServiceException("没有权限访问角色的数据");
}
if (clear) {
// 删除用户与角色关联
userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));