diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml b/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml index d14bef09..ffa5eaca 100644 --- a/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml +++ b/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml @@ -26,7 +26,7 @@ snail-job: # 随主应用端口漂移 port: 2${server.port} # 客户端ip指定 - host: 192.168.110.180 + host: 127.0.0.1 # RPC类型: netty, grpc rpc-type: grpc diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/ISubConstructionUserService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/ISubConstructionUserService.java index f437e13b..70c4c62a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/ISubConstructionUserService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/ISubConstructionUserService.java @@ -226,4 +226,5 @@ public interface ISubConstructionUserService extends IService queryUndistributedList(SubConstructionUserQueryReq req, PageQuery pageQuery); + void deleteeBySysUserIds( List ids); } 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 2cf5a9a4..ee997a35 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 @@ -1,6 +1,7 @@ package org.dromara.contractor.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.DesensitizedUtil; import cn.hutool.core.util.IdcardUtil; @@ -124,6 +125,7 @@ public class SubConstructionUserServiceImpl extends ServiceImpl list = list(Wrappers.lambdaQuery(SubConstructionUser.class) + .eq(SubConstructionUser::getSfzNumber, encrypt)); + if(CollectionUtil.isNotEmpty(list)){ + throw new ServiceException("身份证已被注册", HttpStatus.BAD_REQUEST); + } + user.setSfzNumber(encrypt); // 关联系统用户 Long userId = LoginHelper.getUserId(); @@ -1320,4 +1329,10 @@ public class SubConstructionUserServiceImpl extends ServiceImpl(list, result.getTotal()); } + + @Override + public void deleteeBySysUserIds(List ids) { + this.remove(Wrappers.lambdaUpdate() + .in(SubConstructionUser::getSysUserId, ids)); + } } 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 f66ac0d0..54ec44cd 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 @@ -17,6 +17,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.dromara.common.core.constant.HttpStatus; +import org.dromara.common.core.domain.R; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -29,6 +30,7 @@ import org.dromara.common.utils.JSTUtil; import org.dromara.contractor.domain.SubConstructionUser; import org.dromara.contractor.service.ISubConstructionUserService; import org.dromara.contractor.service.ISubUserSalaryDetailService; +import org.dromara.gps.domain.vo.ConstructionUser; import org.dromara.project.domain.*; import org.dromara.project.domain.bo.BusAttendanceBo; import org.dromara.project.domain.dto.attendance.AttendanceCountDto; @@ -639,20 +641,28 @@ public class BusAttendanceServiceImpl extends ServiceImpl list = constructionUserService.list(Wrappers.lambdaQuery(SubConstructionUser.class) + .eq(SubConstructionUser::getProjectId, dto.getProjectId()) + .eq(dto.getTeamId() != null, SubConstructionUser::getTeamId, dto.getTeamId()) + .eq(StringUtils.isNotBlank(dto.getTypeOfWork()), SubConstructionUser::getTypeOfWork, dto.getTypeOfWork()) + ); + attendanceCountVo.setTotalCount( list.size()); + List list1 = list.stream().map(SubConstructionUser::getSysUserId).toList(); + if(CollectionUtil.isEmpty(list1)){ + attendanceCountVo.setWorkCount(0); + return attendanceCountVo; + } + //查询今天打卡人员 List attendanceList = baseMapper.selectList(Wrappers.lambdaQuery() .eq(BusAttendance::getProjectId, dto.getProjectId()) + .in(BusAttendance::getUserId, list1) .in(BusAttendance::getClockStatus, Arrays.asList("1", "2", "3", "5", "7")) .eq(BusAttendance::getClockDate, dto.getDate()) ); List attendanceUserIds = attendanceList.stream().map(BusAttendance::getUserId).toList(); - - //总人数 - long count = constructionUserService.count(Wrappers.lambdaQuery() - .eq(SubConstructionUser::getProjectId, dto.getProjectId())); - attendanceCountVo.setTotalCount((int) count); //出勤人数 HashSet longs = new HashSet<>(attendanceUserIds); int size = longs.size(); @@ -695,14 +705,16 @@ public class BusAttendanceServiceImpl extends ServiceImpl roleList) { + SysUser sysUser = baseMapper.selectById(userId); + if(UserType.APP_USER.getUserType().equals(sysUser.getUserType())){ + List sysRoleList = roleMapper.selectBatchIds(roleList); + Set collect = sysRoleList.stream().filter(role -> "2".equals(role.getRoleSource())).collect(Collectors.toSet()); + if(collect.isEmpty()){ + throw new ServiceException("app用户至少需要一个APP角色"); + } + } + } + /** * 通过用户ID删除用户 * @@ -677,6 +694,9 @@ public class SysUserServiceImpl implements ISysUserService, UserService { userRoleMapper.delete(new LambdaQueryWrapper().in(SysUserRole::getUserId, ids)); // 删除用户与岗位表 userPostMapper.delete(new LambdaQueryWrapper().in(SysUserPost::getUserId, ids)); + //删除关联的施工人员 + constructionUserService.deleteeBySysUserIds(ids); + // 防止更新失败导致的数据删除 int flag = baseMapper.deleteByIds(ids); if (flag < 1) {