From d8f5cc34ea4e53254d16f8327f9c28b54410473b Mon Sep 17 00:00:00 2001 From: zt Date: Fri, 10 Oct 2025 15:22:17 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SubConstructionUserServiceImpl.java | 4 +- .../controller/MatMaterialsController.java | 14 ++++ .../domain/MatMaterialsInventory.java | 9 +++ .../MatMaterialsInventoryCreateReq.java | 10 +++ .../controller/BusAttendanceController.java | 2 + .../org/dromara/project/domain/BusLeave.java | 10 +++ .../domain/dto/leave/BusLeaveAddReq.java | 8 ++ .../impl/BusAttendanceServiceImpl.java | 81 ++++++++++++------- .../service/impl/BusLeaveServiceImpl.java | 6 +- .../impl/BusProjectTeamMemberServiceImpl.java | 5 +- .../dromara/system/domain/vo/SysUserVo.java | 4 +- .../service/impl/SysUserServiceImpl.java | 29 +++++-- 12 files changed, 136 insertions(+), 46 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 18e81148..31c30cd0 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 @@ -1131,6 +1131,7 @@ public class SubConstructionUserServiceImpl extends ServiceImpl constructionUserPage = this.page(pageQuery.build(), lqw); List constructionUserList = constructionUserPage.getRecords(); @@ -1196,7 +1197,8 @@ public class SubConstructionUserServiceImpl extends ServiceImpl> contractorList(SubContractorQueryReq req) { + return R.ok(contractorService.queryList(req)); + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/MatMaterialsInventory.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/MatMaterialsInventory.java index 29a2fa15..bd366632 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/MatMaterialsInventory.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/MatMaterialsInventory.java @@ -94,4 +94,13 @@ public class MatMaterialsInventory extends BaseEntity { */ private String remark; + /** + * 操作人id + */ + private Long operatorId; + + /** + * 分包单位id + */ + private Long recipientId; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/dto/materialsinventory/MatMaterialsInventoryCreateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/dto/materialsinventory/MatMaterialsInventoryCreateReq.java index 0f1baade..7524a811 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/dto/materialsinventory/MatMaterialsInventoryCreateReq.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/domain/dto/materialsinventory/MatMaterialsInventoryCreateReq.java @@ -76,4 +76,14 @@ public class MatMaterialsInventoryCreateReq implements Serializable { */ private String remark; + /** + * 操作人id + */ + private Long operatorId; + + /** + * 分包单位id + */ + private Long recipientId; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusAttendanceController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusAttendanceController.java index 1d5c68dd..a2d546ea 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusAttendanceController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusAttendanceController.java @@ -117,6 +117,7 @@ public class BusAttendanceController extends BaseController { /** * 查询项目施工人员前14天考勤状况 */ + @SaCheckPermission("project:attendance:list") @GetMapping("/list/clockDate/twoWeek") public R> getClockDateForTwoWeekList(Long projectId) { return R.ok(busAttendanceService.getClockDateForTwoWeekList(projectId)); @@ -124,6 +125,7 @@ public class BusAttendanceController extends BaseController { /** * 查询项目施工人员当天考勤状况 */ + @SaCheckPermission("project:attendance:list") @GetMapping("/list/clockDate/today") public R getTodayAttendanceData(Long projectId) { return R.ok(busAttendanceService.getTodayAttendanceData(projectId)); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusLeave.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusLeave.java index 798cffc6..a43cc8d1 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusLeave.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusLeave.java @@ -140,4 +140,14 @@ public class BusLeave extends BaseEntity { */ private String auditStatus; + /** + * 时间类型 1-天 2-小时 + */ + private String timeType; + + /** + * 时间段类型 1-上午 2-下午 + */ + private String periodType; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/leave/BusLeaveAddReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/leave/BusLeaveAddReq.java index b28cd96f..612459c1 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/leave/BusLeaveAddReq.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/leave/BusLeaveAddReq.java @@ -55,5 +55,13 @@ public class BusLeaveAddReq implements Serializable { @NotNull(message = "项目id不能为空") private Long projectId; + /** + * 时间类型 1-天 2-小时 + */ + private String timeType; + /** + * 时间段类型 1-上午 2-下午 + */ + private String periodType; } 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 f1330e18..ad0e0f2c 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 @@ -324,18 +324,16 @@ public class BusAttendanceServiceImpl extends ServiceImpl rangeIds = new ArrayList<>(); if (isConstruct) { BusProjectTeamMember one = projectTeamMemberService.getOne(Wrappers.lambdaQuery(BusProjectTeamMember.class) @@ -638,7 +647,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl matchingRange = JSTUtil.findMatchingRange(req.getLat(), req.getLng(), punchRangeList); return matchingRange != null; @@ -870,6 +879,25 @@ public class BusAttendanceServiceImpl extends ServiceImpl allUserIds = constructionUserService.list(Wrappers.lambdaQuery() .eq(SubConstructionUser::getUserRole, "0") .eq(SubConstructionUser::getProjectId,projectId) + .isNotNull(SubConstructionUser::getTeamId) ).stream().map(SubConstructionUser::getSysUserId).toList(); // 往前14天,包含今天 LocalDate startDate = now.minusDays(14); + LocalDate endDate = now.minusDays(1); List list = list(Wrappers.lambdaQuery() .eq(BusAttendance::getProjectId, projectId) .notIn(CollectionUtil.isNotEmpty(excludeUserIds),BusAttendance::getUserId, excludeUserIds) - .between(BusAttendance::getClockDate, startDate, now) + .between(BusAttendance::getClockDate, startDate, endDate) .orderByAsc(BusAttendance::getClockDate) ); @@ -1187,7 +1217,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl result = new ArrayList<>(); LocalDate currentDate = startDate; - while (!currentDate.isAfter(now)) { + while (!currentDate.isAfter(endDate)) { Map> userAttendanceMap = dateUserMap.getOrDefault(currentDate, new HashMap<>()); int full = 0, half = 0, absent = 0; @@ -1200,10 +1230,8 @@ public class BusAttendanceServiceImpl extends ServiceImpl= 2) { + if (validCount >= 1) { full++; - } else if (validCount == 1) { - half++; } else { absent++; } @@ -1214,14 +1242,6 @@ public class BusAttendanceServiceImpl extends ServiceImpl allUserIds = constructionUserService.list(Wrappers.lambdaQuery() .eq(SubConstructionUser::getUserRole, "0") .eq(SubConstructionUser::getProjectId,projectId) + .isNotNull(SubConstructionUser::getTeamId) ).stream().map(SubConstructionUser::getSysUserId).toList(); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusLeaveServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusLeaveServiceImpl.java index 4b6dfd4e..0a8164dc 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusLeaveServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusLeaveServiceImpl.java @@ -399,8 +399,10 @@ public class BusLeaveServiceImpl extends ServiceImpl LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper .eq(BusLeave::getUserId, userId) - .le(BusLeave::getStartTime, newEnd) // 已有记录的开始时间 < 新记录的结束时间 - .ge(BusLeave::getEndTime, newStart); // 已有记录的结束时间 > 新记录的开始时间 + .lt(BusLeave::getStartTime, newEnd) // 已有记录的开始时间 < 新记录的结束时间 + .gt(BusLeave::getEndTime, newStart) + .eq(BusLeave::getAuditStatus, BusinessStatusEnum.FINISH.getStatus()) + ; // 已有记录的结束时间 > 新记录的开始时间 // 4. 执行冲突校验 if (count(wrapper) > 0) { diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java index 70c90ac3..58f1f253 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java @@ -329,10 +329,7 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl projectIds; - + /** + * app用户类型 0-施工人员 1-管理人员 2-分包人员 + */ private String appUserType; /** 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 76d183f9..6fec2345 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 @@ -50,6 +50,7 @@ import org.dromara.system.mapper.*; import org.dromara.system.service.ISysOssService; import org.dromara.system.service.ISysUserFileService; import org.dromara.system.service.ISysUserService; +import org.jetbrains.annotations.NotNull; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.context.annotation.Lazy; @@ -929,7 +930,25 @@ public class SysUserServiceImpl implements ISysUserService, UserService { projects = projectIds; } - Long roleId = "1".equals(appUserType)?4L:5L; + List sysUserRoles = getSysUserRoles(userId, appUserType, projects); + userRoleMapper.insertBatch(sysUserRoles); + + return baseMapper.update(null, + new LambdaUpdateWrapper() + .set(SysUser::getAppUserType, appUserType) + .set(contractorId!=null,SysUser::getContractorId, contractorId) + .eq(SysUser::getUserId, userId)) > 0; + } + + private List getSysUserRoles(Long userId, String appUserType, List projects) { + Long roleId; + if("0".equals(appUserType)){ + roleId = 2L; + }else if("1".equals(appUserType)){ + roleId = 4L; + }else { + roleId = 5L; + } ArrayList sysUserRoles = new ArrayList<>(); for (Long project : projects) { SysUserRole sysUserRole = new SysUserRole(); @@ -938,13 +957,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { sysUserRole.setRoleId(roleId); sysUserRoles.add(sysUserRole); } - userRoleMapper.insertBatch(sysUserRoles); - - return baseMapper.update(null, - new LambdaUpdateWrapper() - .set(SysUser::getAppUserType, appUserType) - .set(contractorId!=null,SysUser::getContractorId, contractorId) - .eq(SysUser::getUserId, userId)) > 0; + return sysUserRoles; } @Override