From 7f1971248a3b15eff8523dbdb20acc1dce0ef806 Mon Sep 17 00:00:00 2001 From: zt Date: Wed, 24 Sep 2025 12:35:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DesUserServiceImpl.java | 28 ++++++++++ .../app/BusProjectAppController.java | 2 +- .../BusLoginUserProjectRelevancyVo.java | 6 +++ .../IBusUserProjectRelevancyService.java | 2 + .../BusUserProjectRelevancyServiceImpl.java | 54 +++++++++++++++++++ .../system/service/ISysRoleService.java | 7 +++ .../service/impl/SysRoleServiceImpl.java | 15 +++++- 7 files changed, 112 insertions(+), 2 deletions(-) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesUserServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesUserServiceImpl.java index 46c1ba4e..b3082584 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesUserServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesUserServiceImpl.java @@ -15,10 +15,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.design.domain.dto.desUser.DesUserBatchDto; +import org.dromara.system.domain.SysUserRole; import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.vo.SysDictDataVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysDictDataService; +import org.dromara.system.service.ISysRoleService; import org.dromara.system.service.ISysUserService; import org.springframework.stereotype.Service; import org.dromara.design.domain.bo.DesUserBo; @@ -26,6 +28,7 @@ import org.dromara.design.domain.vo.DesUserVo; import org.dromara.design.domain.DesUser; import org.dromara.design.mapper.DesUserMapper; import org.dromara.design.service.IDesUserService; +import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.net.URLEncoder; @@ -49,6 +52,8 @@ public class DesUserServiceImpl extends ServiceImpl impl private final ISysUserService sysUserService; + private final ISysRoleService roleService; + /** * 查询设计人员 * @@ -151,9 +156,32 @@ public class DesUserServiceImpl extends ServiceImpl impl } @Override + @Transactional(rollbackFor = Exception.class) public Boolean batchAddOrUpdate(DesUserBatchDto dto) { baseMapper.delete(Wrappers.lambdaQuery().eq(DesUser::getProjectId, dto.getProjectId())); + + //1961314792461586433 校审员 3 + //1961315028017893378 审核员 5 + //1961315147199041537 审定员 4 + List desUsers = MapstructUtils.convert(dto.getList(), DesUser.class); + + roleService.deleteDesignUser(dto.getProjectId()); + List sysUserRoles = new ArrayList<>(); + for (DesUserBo bo : dto.getList()) { + SysUserRole sysUserRole = new SysUserRole(); + if("3".equals(bo.getUserType())){ + sysUserRole.setRoleId(1961314792461586433L); + }else if("5".equals(bo.getUserType())){ + sysUserRole.setRoleId(1961315028017893378L); + }else if("4".equals(bo.getUserType())){ + sysUserRole.setRoleId(1961315147199041537L); + } + sysUserRole.setUserId(bo.getUserId()); + sysUserRole.setProjectId(dto.getProjectId()); + sysUserRoles.add(sysUserRole); + } + roleService.insertUserRoleBatch(sysUserRoles); //todo:发消息 return saveBatch(desUsers); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusProjectAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusProjectAppController.java index 98f0d699..aaaf6fd4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusProjectAppController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusProjectAppController.java @@ -60,7 +60,7 @@ public class BusProjectAppController { @GetMapping("/login/list") public R> listByLoginUser() { Long userId = LoginHelper.getUserId(); - return R.ok(userProjectRelevancyService.queryListByUserId(userId)); + return R.ok(userProjectRelevancyService.appQueryListByUserId(userId)); } /** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/userprojectrelevancy/BusLoginUserProjectRelevancyVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/userprojectrelevancy/BusLoginUserProjectRelevancyVo.java index 5fea508f..460c38d9 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/userprojectrelevancy/BusLoginUserProjectRelevancyVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/userprojectrelevancy/BusLoginUserProjectRelevancyVo.java @@ -44,4 +44,10 @@ public class BusLoginUserProjectRelevancyVo implements Serializable { * 用户类型(0系统管理员 1普通人员 2项目管理员) */ private String userType; + + /** + * 班组 + */ + private Long teamId; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusUserProjectRelevancyService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusUserProjectRelevancyService.java index 08908f98..709a5121 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusUserProjectRelevancyService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusUserProjectRelevancyService.java @@ -115,6 +115,8 @@ public interface IBusUserProjectRelevancyService extends IService queryListByUserId(Long userId); + List appQueryListByUserId(Long userId); + /** * 获取当前登录用户项目分页 * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusUserProjectRelevancyServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusUserProjectRelevancyServiceImpl.java index 518328a4..a919682c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusUserProjectRelevancyServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusUserProjectRelevancyServiceImpl.java @@ -16,6 +16,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.project.constant.BusProjectConstant; import org.dromara.project.domain.BusProject; +import org.dromara.project.domain.BusProjectTeamMember; import org.dromara.project.domain.BusUserProjectRelevancy; import org.dromara.project.domain.dto.project.BusProjectBatchByProjectListReq; import org.dromara.project.domain.dto.userprojectrelevancy.BusUserProjectRelevancyCreateReq; @@ -25,6 +26,7 @@ import org.dromara.project.domain.vo.userprojectrelevancy.BusLoginUserProjectRel import org.dromara.project.domain.vo.userprojectrelevancy.BusUserProjectRelevancyVo; import org.dromara.project.mapper.BusUserProjectRelevancyMapper; import org.dromara.project.service.IBusProjectService; +import org.dromara.project.service.IBusProjectTeamMemberService; import org.dromara.project.service.IBusUserProjectRelevancyService; import org.dromara.system.service.ISysUserService; import org.springframework.beans.BeanUtils; @@ -52,6 +54,10 @@ public class BusUserProjectRelevancyServiceImpl extends ServiceImpl appQueryListByUserId(Long userId) { + // 添加查询条件,根据当前用户,获取数据 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(BusUserProjectRelevancy::getUserId, userId); + // 查询数据库,获取数据 + List list = this.list(queryWrapper); + List projectIdList = list.stream().map(BusUserProjectRelevancy::getProjectId).toList(); + if (CollUtil.isEmpty(projectIdList)) { + return new ArrayList<>(); + } + Map> projectMap = projectService.lambdaQuery() + .select(BusProject::getId, BusProject::getPId, BusProject::getProjectName, BusProject::getShortName) + .in(BusProject::getId, projectIdList) + .eq(BusProject::getPId, BusProjectConstant.PARENT_ID) + .list() + .stream().collect(Collectors.groupingBy(BusProject::getId)); + + Map teamMap = projectMemberService.lambdaQuery().eq(BusProjectTeamMember::getMemberId, userId).list() + .stream().collect(Collectors.toMap(BusProjectTeamMember::getProjectId, BusProjectTeamMember::getTeamId)); + + + // 获取封装 + return list.stream() + .map(userProjectRelevancy -> { + Long projectId = userProjectRelevancy.getProjectId(); + BusProject project = null; + if (projectMap.containsKey(projectId)) { + project = projectMap.get(projectId).getFirst(); + } + if (project != null && project.getPId().equals(BusProjectConstant.PARENT_ID)) { + BusLoginUserProjectRelevancyVo loginUserProjectRelevancy = new BusLoginUserProjectRelevancyVo(); + loginUserProjectRelevancy.setId(userProjectRelevancy.getId()); + loginUserProjectRelevancy.setUserId(userProjectRelevancy.getUserId()); + loginUserProjectRelevancy.setProjectId(projectId); + loginUserProjectRelevancy.setProjectName(project.getProjectName()); + loginUserProjectRelevancy.setShortName(project.getShortName()); + loginUserProjectRelevancy.setTeamId(teamMap.get(projectId)); + return loginUserProjectRelevancy; + } + + + return null; + }) + .filter(Objects::nonNull) + .toList(); + } + /** * 获取当前登录用户项目分页 * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java index 395101c3..a388d9fa 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java @@ -3,6 +3,7 @@ package org.dromara.system.service; import org.dromara.common.core.domain.vo.SysProjectRolePermissionVo; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.design.domain.DesUser; import org.dromara.system.domain.SysUserRole; import org.dromara.system.domain.bo.SysRoleBo; import org.dromara.system.domain.dto.role.SysRoleProjectDto; @@ -208,4 +209,10 @@ public interface ISysRoleService { void cleanOnlineUser(List userIds); + void insertUserRoleBatch(List list); + + /** + * 批量删除审核审定校审 + */ + void deleteDesignUser(Long projectId); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java index ccd20cf8..fa2dfae8 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -96,7 +96,7 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { .orderByAsc("r.role_sort").orderByAsc("r.create_time"); // 添加部门ID或角色ID在2,3,4中的条件 if (ObjectUtil.isNotNull(bo.getDeptId())) { - wrapper.and(w -> w.eq("r.dept_id", bo.getDeptId()).or().in("r.role_id", Arrays.asList(2L, 3L, 4L))); + wrapper.and(w -> w.eq("r.dept_id", bo.getDeptId()).or().eq("r.dept_id", 99L)); } return wrapper; } @@ -627,4 +627,17 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { }); } + @Override + public void insertUserRoleBatch(List list) { + userRoleMapper.insertBatch(list); + } + + @Override + public void deleteDesignUser(Long projectId) { + List list1 = Arrays.asList(1961314792461586433L, 1961315028017893378L, 1961315147199041537L); + userRoleMapper.delete(Wrappers.lambdaQuery(SysUserRole.class) + .eq(SysUserRole::getProjectId, projectId) + .in(SysUserRole::getRoleId, list1) + ); + } }