Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
		| @ -226,4 +226,5 @@ public interface ISubConstructionUserService extends IService<SubConstructionUse | ||||
|  | ||||
|     TableDataInfo<SubConstructionUserAppVo> queryUndistributedList(SubConstructionUserQueryReq req, PageQuery pageQuery); | ||||
|  | ||||
|     void deleteeBySysUserIds( List<Long> ids); | ||||
| } | ||||
|  | ||||
| @ -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<SubConstructionU | ||||
|     @Resource | ||||
|     private BaiDuFace baiDuFace; | ||||
|  | ||||
|     @Lazy | ||||
|     @Resource | ||||
|     private ISysUserService userService; | ||||
|  | ||||
| @ -1161,6 +1163,13 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU | ||||
|         BeanUtils.copyProperties(req, user); | ||||
|         // 对身份证号码进行加密 | ||||
|         String encrypt = idCardEncryptorUtil.encrypt(sfzNumber); | ||||
|         //验证身份证是否使用 | ||||
|         List<SubConstructionUser> 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<SubConstructionU | ||||
|  | ||||
|         return new TableDataInfo<>(list, result.getTotal()); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void deleteeBySysUserIds(List<Long> ids) { | ||||
|         this.remove(Wrappers.<SubConstructionUser>lambdaUpdate() | ||||
|             .in(SubConstructionUser::getSysUserId, ids)); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -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<BusAttendanceMapper, B | ||||
|  | ||||
|     @Override | ||||
|     public AttendanceCountVo getAttendanceCount(AttendanceCountDto dto) { | ||||
|         //查询今天打卡人员 | ||||
|         AttendanceCountVo attendanceCountVo = new AttendanceCountVo(); | ||||
|         //先查询人员有那些 | ||||
|         List<SubConstructionUser> 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<Long> list1 = list.stream().map(SubConstructionUser::getSysUserId).toList(); | ||||
|         if(CollectionUtil.isEmpty(list1)){ | ||||
|             attendanceCountVo.setWorkCount(0); | ||||
|             return attendanceCountVo; | ||||
|         } | ||||
|  | ||||
|         //查询今天打卡人员 | ||||
|         List<BusAttendance> attendanceList = baseMapper.selectList(Wrappers.<BusAttendance>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<Long> attendanceUserIds = attendanceList.stream().map(BusAttendance::getUserId).toList(); | ||||
|  | ||||
|         //总人数 | ||||
|         long count = constructionUserService.count(Wrappers.<SubConstructionUser>lambdaQuery() | ||||
|             .eq(SubConstructionUser::getProjectId, dto.getProjectId())); | ||||
|         attendanceCountVo.setTotalCount((int) count); | ||||
|         //出勤人数 | ||||
|         HashSet<Long> longs = new HashSet<>(attendanceUserIds); | ||||
|         int size = longs.size(); | ||||
| @ -695,14 +705,16 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B | ||||
|         for (SubConstructionUser constructionUser : records) { | ||||
|             AttendanceUserVo attendanceUserVo = new AttendanceUserVo(); | ||||
|             SysUserVo sysUserVo = userService.selectUserById(constructionUser.getSysUserId()); | ||||
|             attendanceUserVo.setUserId(sysUserVo.getUserId()); | ||||
|             attendanceUserVo.setNickName(sysUserVo.getNickName()); | ||||
|             attendanceUserVo.setUserId(constructionUser.getSysUserId()); | ||||
|             attendanceUserVo.setNickName(constructionUser.getUserName()); | ||||
|             if (sysUserVo.getAvatar() != null) { | ||||
|                 SysOssVo byId = ossService.getById(sysUserVo.getAvatar()); | ||||
|                 attendanceUserVo.setAvatar(byId == null ? null : byId.getUrl()); | ||||
|             } | ||||
|             attendanceUserVo.setTypeOfWork(attendanceUserVo.getTypeOfWork()); | ||||
|             attendanceUserVo.setTeamName(attendanceUserVo.getTeamName()); | ||||
|             attendanceUserVo.setTypeOfWork(constructionUser.getTypeOfWork()); | ||||
|             if(constructionUser.getTeamId() != null){ | ||||
|                 attendanceUserVo.setTeamName(constructionUser.getTeamName()); | ||||
|             } | ||||
|             if (attendanceUserIds.contains(constructionUser.getSysUserId())) { | ||||
|                 attendanceUserVo.setClockStatus("1"); | ||||
|             } else { | ||||
|  | ||||
| @ -245,7 +245,7 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl<QltQualityInspe | ||||
|     private void handleFail(QltQualityInspection qualityInspection) { | ||||
|  | ||||
|         qualityInspection.setId(null); | ||||
|         qualityInspection.setInspectionStatus("2"); | ||||
|         qualityInspection.setInspectionStatus("1"); | ||||
|         qualityInspection.setRectificationResult(null); | ||||
|         qualityInspection.setRectificationTime(null); | ||||
|         qualityInspection.setRectificationFile(null); | ||||
|  | ||||
| @ -523,7 +523,7 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect | ||||
|         HseSafetyInspection add = this.getById(id); | ||||
|  | ||||
|         add.setId(null); | ||||
|         add.setStatus("2"); | ||||
|         add.setStatus("1"); | ||||
|         add.setRectificationTime(null); | ||||
|         add.setRectificationFile(null); | ||||
|         add.setMeasure(null); | ||||
|  | ||||
| @ -17,12 +17,14 @@ import lombok.extern.slf4j.Slf4j; | ||||
| import org.dromara.common.core.constant.CacheNames; | ||||
| import org.dromara.common.core.constant.SystemConstants; | ||||
| import org.dromara.common.core.domain.dto.UserDTO; | ||||
| import org.dromara.common.core.enums.UserType; | ||||
| import org.dromara.common.core.exception.ServiceException; | ||||
| import org.dromara.common.core.service.UserService; | ||||
| import org.dromara.common.core.utils.*; | ||||
| import org.dromara.common.mybatis.core.page.PageQuery; | ||||
| import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||
| import org.dromara.common.satoken.utils.LoginHelper; | ||||
| import org.dromara.contractor.service.ISubConstructionUserService; | ||||
| import org.dromara.project.domain.BusUserProjectRelevancy; | ||||
| import org.dromara.project.service.IBusUserProjectRelevancyService; | ||||
| import org.dromara.system.domain.*; | ||||
| @ -38,6 +40,7 @@ import org.dromara.system.service.ISysUserService; | ||||
| import org.springframework.cache.annotation.CacheEvict; | ||||
| import org.springframework.cache.annotation.Cacheable; | ||||
| import org.springframework.context.annotation.Lazy; | ||||
| import org.springframework.http.HttpStatus; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
|  | ||||
| @ -62,6 +65,8 @@ public class SysUserServiceImpl implements ISysUserService, UserService { | ||||
|     private final SysUserPostMapper userPostMapper; | ||||
|     private final IBusUserProjectRelevancyService userProjectRelevancyService; | ||||
|  | ||||
|     private final ISubConstructionUserService constructionUserService; | ||||
|  | ||||
|     @Lazy | ||||
|     @Resource | ||||
|     private ISysUserFileService userFileService; | ||||
| @ -594,6 +599,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { | ||||
|             if (CollUtil.isEmpty(roles)) { | ||||
|                 throw new ServiceException("没有权限访问角色的数据"); | ||||
|             } | ||||
|             checkAppRole(userId,roleList); | ||||
|  | ||||
|             if (clear) { | ||||
|                 // 删除用户与角色关联 | ||||
| @ -638,6 +644,17 @@ public class SysUserServiceImpl implements ISysUserService, UserService { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void checkAppRole(Long userId, List<Long> roleList) { | ||||
|         SysUser sysUser = baseMapper.selectById(userId); | ||||
|         if(UserType.APP_USER.getUserType().equals(sysUser.getUserType())){ | ||||
|             List<SysRole> sysRoleList = roleMapper.selectBatchIds(roleList); | ||||
|             Set<SysRole> 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<SysUserRole>().in(SysUserRole::getUserId, ids)); | ||||
|         // 删除用户与岗位表 | ||||
|         userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().in(SysUserPost::getUserId, ids)); | ||||
|         //删除关联的施工人员 | ||||
|         constructionUserService.deleteeBySysUserIds(ids); | ||||
|  | ||||
|         // 防止更新失败导致的数据删除 | ||||
|         int flag = baseMapper.deleteByIds(ids); | ||||
|         if (flag < 1) { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user