This commit is contained in:
zt
2025-09-16 21:23:56 +08:00
parent 4354d0a687
commit 267d62e5a5
7 changed files with 61 additions and 13 deletions

View File

@ -26,7 +26,7 @@ snail-job:
# 随主应用端口漂移 # 随主应用端口漂移
port: 2${server.port} port: 2${server.port}
# 客户端ip指定 # 客户端ip指定
host: 192.168.110.180 host: 127.0.0.1
# RPC类型: netty, grpc # RPC类型: netty, grpc
rpc-type: grpc rpc-type: grpc

View File

@ -226,4 +226,5 @@ public interface ISubConstructionUserService extends IService<SubConstructionUse
TableDataInfo<SubConstructionUserAppVo> queryUndistributedList(SubConstructionUserQueryReq req, PageQuery pageQuery); TableDataInfo<SubConstructionUserAppVo> queryUndistributedList(SubConstructionUserQueryReq req, PageQuery pageQuery);
void deleteeBySysUserIds( List<Long> ids);
} }

View File

@ -1,6 +1,7 @@
package org.dromara.contractor.service.impl; package org.dromara.contractor.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.DesensitizedUtil; import cn.hutool.core.util.DesensitizedUtil;
import cn.hutool.core.util.IdcardUtil; import cn.hutool.core.util.IdcardUtil;
@ -124,6 +125,7 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU
@Resource @Resource
private BaiDuFace baiDuFace; private BaiDuFace baiDuFace;
@Lazy
@Resource @Resource
private ISysUserService userService; private ISysUserService userService;
@ -1161,6 +1163,13 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU
BeanUtils.copyProperties(req, user); BeanUtils.copyProperties(req, user);
// 对身份证号码进行加密 // 对身份证号码进行加密
String encrypt = idCardEncryptorUtil.encrypt(sfzNumber); 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); user.setSfzNumber(encrypt);
// 关联系统用户 // 关联系统用户
Long userId = LoginHelper.getUserId(); Long userId = LoginHelper.getUserId();
@ -1320,4 +1329,10 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU
return new TableDataInfo<>(list, result.getTotal()); return new TableDataInfo<>(list, result.getTotal());
} }
@Override
public void deleteeBySysUserIds(List<Long> ids) {
this.remove(Wrappers.<SubConstructionUser>lambdaUpdate()
.in(SubConstructionUser::getSysUserId, ids));
}
} }

View File

@ -17,6 +17,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
import org.dromara.common.core.constant.HttpStatus; 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.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; 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.domain.SubConstructionUser;
import org.dromara.contractor.service.ISubConstructionUserService; import org.dromara.contractor.service.ISubConstructionUserService;
import org.dromara.contractor.service.ISubUserSalaryDetailService; import org.dromara.contractor.service.ISubUserSalaryDetailService;
import org.dromara.gps.domain.vo.ConstructionUser;
import org.dromara.project.domain.*; import org.dromara.project.domain.*;
import org.dromara.project.domain.bo.BusAttendanceBo; import org.dromara.project.domain.bo.BusAttendanceBo;
import org.dromara.project.domain.dto.attendance.AttendanceCountDto; import org.dromara.project.domain.dto.attendance.AttendanceCountDto;
@ -639,20 +641,28 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
@Override @Override
public AttendanceCountVo getAttendanceCount(AttendanceCountDto dto) { public AttendanceCountVo getAttendanceCount(AttendanceCountDto dto) {
//查询今天打卡人员
AttendanceCountVo attendanceCountVo = new AttendanceCountVo(); 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() List<BusAttendance> attendanceList = baseMapper.selectList(Wrappers.<BusAttendance>lambdaQuery()
.eq(BusAttendance::getProjectId, dto.getProjectId()) .eq(BusAttendance::getProjectId, dto.getProjectId())
.in(BusAttendance::getUserId, list1)
.in(BusAttendance::getClockStatus, Arrays.asList("1", "2", "3", "5", "7")) .in(BusAttendance::getClockStatus, Arrays.asList("1", "2", "3", "5", "7"))
.eq(BusAttendance::getClockDate, dto.getDate()) .eq(BusAttendance::getClockDate, dto.getDate())
); );
List<Long> attendanceUserIds = attendanceList.stream().map(BusAttendance::getUserId).toList(); 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); HashSet<Long> longs = new HashSet<>(attendanceUserIds);
int size = longs.size(); int size = longs.size();
@ -695,14 +705,16 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
for (SubConstructionUser constructionUser : records) { for (SubConstructionUser constructionUser : records) {
AttendanceUserVo attendanceUserVo = new AttendanceUserVo(); AttendanceUserVo attendanceUserVo = new AttendanceUserVo();
SysUserVo sysUserVo = userService.selectUserById(constructionUser.getSysUserId()); SysUserVo sysUserVo = userService.selectUserById(constructionUser.getSysUserId());
attendanceUserVo.setUserId(sysUserVo.getUserId()); attendanceUserVo.setUserId(constructionUser.getSysUserId());
attendanceUserVo.setNickName(sysUserVo.getNickName()); attendanceUserVo.setNickName(constructionUser.getUserName());
if (sysUserVo.getAvatar() != null) { if (sysUserVo.getAvatar() != null) {
SysOssVo byId = ossService.getById(sysUserVo.getAvatar()); SysOssVo byId = ossService.getById(sysUserVo.getAvatar());
attendanceUserVo.setAvatar(byId == null ? null : byId.getUrl()); attendanceUserVo.setAvatar(byId == null ? null : byId.getUrl());
} }
attendanceUserVo.setTypeOfWork(attendanceUserVo.getTypeOfWork()); attendanceUserVo.setTypeOfWork(constructionUser.getTypeOfWork());
attendanceUserVo.setTeamName(attendanceUserVo.getTeamName()); if(constructionUser.getTeamId() != null){
attendanceUserVo.setTeamName(constructionUser.getTeamName());
}
if (attendanceUserIds.contains(constructionUser.getSysUserId())) { if (attendanceUserIds.contains(constructionUser.getSysUserId())) {
attendanceUserVo.setClockStatus("1"); attendanceUserVo.setClockStatus("1");
} else { } else {

View File

@ -245,7 +245,7 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl<QltQualityInspe
private void handleFail(QltQualityInspection qualityInspection) { private void handleFail(QltQualityInspection qualityInspection) {
qualityInspection.setId(null); qualityInspection.setId(null);
qualityInspection.setInspectionStatus("2"); qualityInspection.setInspectionStatus("1");
qualityInspection.setRectificationResult(null); qualityInspection.setRectificationResult(null);
qualityInspection.setRectificationTime(null); qualityInspection.setRectificationTime(null);
qualityInspection.setRectificationFile(null); qualityInspection.setRectificationFile(null);

View File

@ -523,7 +523,7 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
HseSafetyInspection add = this.getById(id); HseSafetyInspection add = this.getById(id);
add.setId(null); add.setId(null);
add.setStatus("2"); add.setStatus("1");
add.setRectificationTime(null); add.setRectificationTime(null);
add.setRectificationFile(null); add.setRectificationFile(null);
add.setMeasure(null); add.setMeasure(null);

View File

@ -17,12 +17,14 @@ import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.domain.dto.UserDTO; 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.exception.ServiceException;
import org.dromara.common.core.service.UserService; import org.dromara.common.core.service.UserService;
import org.dromara.common.core.utils.*; import org.dromara.common.core.utils.*;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.contractor.service.ISubConstructionUserService;
import org.dromara.project.domain.BusUserProjectRelevancy; import org.dromara.project.domain.BusUserProjectRelevancy;
import org.dromara.project.service.IBusUserProjectRelevancyService; import org.dromara.project.service.IBusUserProjectRelevancyService;
import org.dromara.system.domain.*; 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.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -62,6 +65,8 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
private final SysUserPostMapper userPostMapper; private final SysUserPostMapper userPostMapper;
private final IBusUserProjectRelevancyService userProjectRelevancyService; private final IBusUserProjectRelevancyService userProjectRelevancyService;
private final ISubConstructionUserService constructionUserService;
@Lazy @Lazy
@Resource @Resource
private ISysUserFileService userFileService; private ISysUserFileService userFileService;
@ -594,6 +599,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
if (CollUtil.isEmpty(roles)) { if (CollUtil.isEmpty(roles)) {
throw new ServiceException("没有权限访问角色的数据"); throw new ServiceException("没有权限访问角色的数据");
} }
checkAppRole(userId,roleList);
if (clear) { 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删除用户 * 通过用户ID删除用户
* *
@ -677,6 +694,9 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, ids)); userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, ids));
// 删除用户与岗位表 // 删除用户与岗位表
userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().in(SysUserPost::getUserId, ids)); userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().in(SysUserPost::getUserId, ids));
//删除关联的施工人员
constructionUserService.deleteeBySysUserIds(ids);
// 防止更新失败导致的数据删除 // 防止更新失败导致的数据删除
int flag = baseMapper.deleteByIds(ids); int flag = baseMapper.deleteByIds(ids);
if (flag < 1) { if (flag < 1) {