yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
@@ -252,13 +252,17 @@ @Transactional(rollbackFor = Exception.class) public void deleteEmployee(Long id) { // 校验存在 validateEmployeeExists(id); HrmEmployeeDO employee = validateEmployeeExists(id); // 级联删除子表 educationMapper.deleteByEmployeeId(id); workHistoryMapper.deleteByEmployeeId(id); emergencyContactMapper.deleteByEmployeeId(id); // 删除员工 employeeMapper.deleteById(id); // 同步删除关联的系统用户,避免手机号(登录账号)被残留的孤儿账号占用 if (employee.getUserId() != null) { adminUserApi.deleteUser(employee.getUserId()); } } private HrmEmployeeDO validateEmployeeExists(Long id) { yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/home/MesHomeStatisticsServiceImpl.java
@@ -70,9 +70,14 @@ long stop = 0L; long maintenance = 0L; for (Map<String, Object> stat : machineryStats) { int status = ((Number) stat.get("status")).intValue(); long count = ((Number) stat.get("count")).longValue(); total += count; // 状态为空的设备(历史数据)计入总数,但不归类,避免解引用 null 导致 NPE Number statusValue = (Number) stat.get("status"); if (statusValue == null) { continue; } int status = statusValue.intValue(); if (status == MesDvMachineryStatusEnum.PRODUCING.getStatus()) { producing = count; } else if (status == MesDvMachineryStatusEnum.STOP.getStatus()) { yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java
@@ -33,6 +33,13 @@ void updateUser(AdminUserUpdateReqDTO updateReqDTO); /** * 删除用户(供其他模块在下游记录删除时,同步删除其关联的系统用户,避免残留孤儿账号) * * @param id 用户编号 */ void deleteUser(Long id); /** * 通过用户 ID 查询用户 * * @param id 用户ID yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java
@@ -67,6 +67,11 @@ } @Override public void deleteUser(Long id) { userService.deleteUser(id); } @Override @DataPermission(enable = false) // 忽略数据权限,避免因为过滤,导致无法查询用户。类似:https://github.com/YunaiV/ruoyi-vue-pro/issues/1051 public AdminUserRespDTO getUser(Long id) { AdminUserDO user = userService.getUser(id);