app
This commit is contained in:
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user