From 23f0f2fd16c9cdbc1aaac33b6aee647e5e360047 Mon Sep 17 00:00:00 2001 From: zt Date: Wed, 17 Sep 2025 22:55:35 +0800 Subject: [PATCH] bug --- .../impl/SubConstructionUserServiceImpl.java | 7 +- .../BusProjectTeamMemberController.java | 2 +- .../impl/BusAttendanceServiceImpl.java | 212 ++++++++++++++---- .../impl/BusProjectTeamMemberServiceImpl.java | 1 + .../service/impl/SysUserServiceImpl.java | 5 + .../resources/mapper/system/SysUserMapper.xml | 2 +- 6 files changed, 178 insertions(+), 51 deletions(-) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java index 9a588443..a0faec3d 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java @@ -738,7 +738,12 @@ public class SubConstructionUserServiceImpl extends ServiceImpl remove(@RequestBody BusProjectTeamMemberExitReq req) { return toAjax(busProjectTeamMemberService.deleteById(req)); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java index 4303a506..528f99d4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java @@ -279,58 +279,109 @@ public class BusAttendanceServiceImpl extends ServiceImpl attendances = this.lambdaQuery() - .eq(BusAttendance::getUserId, userId) - .eq(BusAttendance::getClockDate, localDate) - .list(); - BusAttendance attendance = new BusAttendance(); - if (CollUtil.isEmpty(attendances)) { - // 上班打卡 - attendance.setClockType(BusAttendanceCommuterEnum.CLOCKIN.getValue()); - //打卡时间 - attendance.setRuleTime(busAttendanceRuleVo.getClockInTime()); - // 判断是否为迟到 - if (isLate(now, busAttendanceRuleVo)) { - attendance.setClockStatus(BusAttendanceClockStatusEnum.LATE.getValue()); - attendance.setMinuteCount(getMinutesDifference(now, busAttendanceRuleVo.getClockInTime())); - } else { - attendance.setClockStatus(BusAttendanceClockStatusEnum.NORMAL.getValue()); + + int clockTypeByTime = getClockTypeByTime(localDate, now, busAttendanceRuleVo); + if (clockTypeByTime == 1 ) { + List attendances = this.lambdaQuery() + .eq(BusAttendance::getUserId, userId) + .eq(BusAttendance::getClockDate, localDate) + .eq(BusAttendance::getClockType, BusAttendanceCommuterEnum.CLOCKIN.getValue()) + .list(); + if(CollectionUtil.isNotEmpty(attendances)){ + BusAttendance busAttendance = attendances.getFirst(); + if(busAttendance.getClockStatus().equals(BusAttendanceClockStatusEnum.UNCLOCK.getValue())){ + throw new ServiceException("上班缺卡记录已生成,不能更新"); + } + //更新打卡时间 + busAttendance.setClockTime(now); + updateById(busAttendance); + }else{ + BusAttendance attendance = new BusAttendance(); + // 上班打卡 + attendance.setClockType(BusAttendanceCommuterEnum.CLOCKIN.getValue()); + //打卡时间 + attendance.setRuleTime(busAttendanceRuleVo.getClockInTime()); + // 判断是否为迟到 + if (isLate(now, busAttendanceRuleVo)) { + attendance.setClockStatus(BusAttendanceClockStatusEnum.LATE.getValue()); + attendance.setMinuteCount(getMinutesDifference(now, busAttendanceRuleVo.getClockInTime())); + } else { + attendance.setClockStatus(BusAttendanceClockStatusEnum.NORMAL.getValue()); + } + // 填充信息 + attendance.setUserId(userId); + attendance.setProjectId(req.getProjectId()); + attendance.setClockDate(localDate); + attendance.setClockTime(now); + attendance.setUserName(constructionUser.getUserName()); + // 记录打卡坐标 + attendance.setLat(req.getLat()); + attendance.setLng(req.getLng()); + attendance.setClockLocation(req.getLocationName()); + // 上传人脸照 + SysOssVo upload = ossService.upload(file); + attendance.setFacePic(upload.getOssId().toString()); + chatServerHandler.sendSystemMessageToUser(userId, "打卡成功", "1"); + boolean save = this.save(attendance); + //插入工资 + userSalaryDetailService.insertByAttendance(userId, attendance.getClockDate()); + return save; } - } else if (attendances.size() == 1) { - // 下班打卡 - attendance.setClockType(BusAttendanceCommuterEnum.CLOCKOUT.getValue()); - attendance.setRuleTime(busAttendanceRuleVo.getClockOutTime()); - // 判断是否为早退 - if (isLeaveEarly(now, busAttendanceRuleVo)) { - attendance.setClockStatus(BusAttendanceClockStatusEnum.LEAVEEARLY.getValue()); - attendance.setMinuteCount(getMinutesDifference(now, busAttendanceRuleVo.getClockOutTime())); - } else { - attendance.setClockStatus(BusAttendanceClockStatusEnum.NORMAL.getValue()); + }else if (clockTypeByTime == 2 ) { + List attendances = this.lambdaQuery() + .eq(BusAttendance::getUserId, userId) + .eq(BusAttendance::getClockDate, localDate) + .eq(BusAttendance::getClockType, BusAttendanceCommuterEnum.CLOCKOUT.getValue()) + .list(); + if(CollectionUtil.isNotEmpty(attendances)){ + BusAttendance busAttendance = attendances.getFirst(); + if(busAttendance.getClockStatus().equals(BusAttendanceClockStatusEnum.UNCLOCK.getValue())){ + throw new ServiceException("下班缺卡记录已生成,不能更新"); + } + //更新打卡时间 + busAttendance.setClockTime(now); + // 判断是否为早退 + if (isLeaveEarly(now, busAttendanceRuleVo)) { + busAttendance.setClockStatus(BusAttendanceClockStatusEnum.LEAVEEARLY.getValue()); + busAttendance.setMinuteCount(getMinutesDifference(now, busAttendanceRuleVo.getClockOutTime())); + } else { + busAttendance.setClockStatus(BusAttendanceClockStatusEnum.NORMAL.getValue()); + } + updateById(busAttendance); + }else { + BusAttendance attendance = new BusAttendance(); + // 下班打卡 + attendance.setClockType(BusAttendanceCommuterEnum.CLOCKOUT.getValue()); + attendance.setRuleTime(busAttendanceRuleVo.getClockOutTime()); + // 判断是否为早退 + if (isLeaveEarly(now, busAttendanceRuleVo)) { + attendance.setClockStatus(BusAttendanceClockStatusEnum.LEAVEEARLY.getValue()); + attendance.setMinuteCount(getMinutesDifference(now, busAttendanceRuleVo.getClockOutTime())); + } else { + attendance.setClockStatus(BusAttendanceClockStatusEnum.NORMAL.getValue()); + } + // 填充信息 + attendance.setUserId(userId); + attendance.setProjectId(req.getProjectId()); + attendance.setClockDate(localDate); + attendance.setClockTime(now); + attendance.setUserName(constructionUser.getUserName()); + // 记录打卡坐标 + attendance.setLat(req.getLat()); + attendance.setLng(req.getLng()); + attendance.setClockLocation(req.getLocationName()); + // 上传人脸照 + SysOssVo upload = ossService.upload(file); + attendance.setFacePic(upload.getOssId().toString()); + chatServerHandler.sendSystemMessageToUser(userId, "打卡成功", "1"); + boolean save = this.save(attendance); + //插入工资 + userSalaryDetailService.insertByAttendance(userId, attendance.getClockDate()); + return save; } - } else if (attendances.size() == 2) { - throw new ServiceException("当前已完成打卡,请勿重复提交", HttpStatus.BAD_REQUEST); - } else { - throw new ServiceException("打卡异常,请联系管理员", HttpStatus.ERROR); } - // 填充信息 - attendance.setUserId(userId); - attendance.setProjectId(req.getProjectId()); - attendance.setClockDate(localDate); - attendance.setClockTime(now); - attendance.setUserName(constructionUser.getUserName()); - // 记录打卡坐标 - attendance.setLat(req.getLat()); - attendance.setLng(req.getLng()); - attendance.setClockLocation(req.getLocationName()); - // 上传人脸照 - SysOssVo upload = ossService.upload(file); - attendance.setFacePic(upload.getOssId().toString()); - chatServerHandler.sendSystemMessageToUser(userId, "打卡成功", "1"); - boolean save = this.save(attendance); - //插入工资 - userSalaryDetailService.insertByAttendance(userId, attendance.getClockDate()); - return save; } + return false; } @@ -595,6 +646,68 @@ public class BusAttendanceServiceImpl extends ServiceImpl constructionUserLuw = Wrappers.lambdaUpdate(SubConstructionUser.class) .eq(SubConstructionUser::getId, constructionUser.getId()) + .set(SubConstructionUser::getExitStatus, "2") .set(SubConstructionUser::getTeamId, null) .set(SubConstructionUser::getLeaveDate, new Date()); constructionUserService.update(constructionUserLuw); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index ea91f9dd..32e9d2d4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -822,7 +822,12 @@ public class SysUserServiceImpl implements ISysUserService, UserService { } @Override + @Transactional(rollbackFor = Exception.class) public Boolean updateAppUserType(Long userId, String appUserType) { + //直接添加权限 + + + return baseMapper.update(null, new LambdaUpdateWrapper() .set(SysUser::getAppUserType, appUserType) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index eba05e57..93872e76 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -18,7 +18,7 @@ u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, - u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark + u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.app_user_type from sys_user u ${ew.getCustomSqlSegment}