From a97fcabfaf4ce1af23f51553f73590805919a7fe Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 27 六月 2025 17:59:56 +0800 Subject: [PATCH] 项目总积分 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectTeamController.java | 78 ++++++++++++++++++++++++++++++++++++--- 1 files changed, 72 insertions(+), 6 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectTeamController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectTeamController.java index 2d269e3..0688c45 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectTeamController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectTeamController.java @@ -7,12 +7,13 @@ import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.dto.TProjectTeamDTO; import com.ruoyi.system.dto.UpAndDownDTO; import com.ruoyi.system.model.TProjectTeam; import com.ruoyi.system.model.TProjectTeamStaff; -import com.ruoyi.system.query.TProjectProposalQuery; import com.ruoyi.system.query.TProjectTeamQuery; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.TProjectTeamService; @@ -22,11 +23,11 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * <p> @@ -44,11 +45,13 @@ private final TProjectTeamService projectTeamService; private final TProjectTeamStaffService projectTeamStaffService; private final ISysUserService sysUserService; + private final TokenService tokenService; @Autowired - public TProjectTeamController(TProjectTeamService projectTeamService, TProjectTeamStaffService projectTeamStaffService, ISysUserService sysUserService) { + public TProjectTeamController(TProjectTeamService projectTeamService, TProjectTeamStaffService projectTeamStaffService, ISysUserService sysUserService, TokenService tokenService) { this.projectTeamService = projectTeamService; this.projectTeamStaffService = projectTeamStaffService; this.sysUserService = sysUserService; + this.tokenService = tokenService; } /** @@ -72,9 +75,22 @@ @PostMapping(value = "/api/t-project-team/add") public R<Boolean> add(@RequestBody String param) { TProjectTeamDTO dto = JSON.parseObject(param,TProjectTeamDTO.class); + List<TProjectTeamStaff> staffs = dto.getStaffs(); + // 判断工艺工程师是否存在其他项目组中 + staffs.stream().filter(staff -> staff.getRoleType() == 3).forEach(staff -> { + long count = projectTeamStaffService.count(Wrappers.lambdaQuery(TProjectTeamStaff.class).eq(TProjectTeamStaff::getUserId, staff.getUserId())); + if(count > 0){ + throw new ServiceException("该工艺工程师已存在项目组"); + } + }); + staffs.stream().filter(staff -> staff.getRoleType() == 2).forEach(staff -> { + long count = projectTeamStaffService.count(Wrappers.lambdaQuery(TProjectTeamStaff.class).eq(TProjectTeamStaff::getUserId, staff.getUserId())); + if(count > 0){ + throw new ServiceException("该审批人已存在项目组"); + } + }); projectTeamService.save(dto); // 保存项目组成员 - List<TProjectTeamStaff> staffs = dto.getStaffs(); for (TProjectTeamStaff staff : staffs) { staff.setTeamId(dto.getId()); } @@ -91,11 +107,28 @@ @PostMapping(value = "/api/t-project-team/update") public R<Boolean> update(@RequestBody String param) { TProjectTeamDTO dto = JSON.parseObject(param,TProjectTeamDTO.class); + List<TProjectTeamStaff> staffs = dto.getStaffs(); + // 判断工艺工程师是否存在其他项目组中 + staffs.stream().filter(staff -> staff.getRoleType() == 3).forEach(staff -> { + long count = projectTeamStaffService.count(Wrappers.lambdaQuery(TProjectTeamStaff.class) + .ne(TProjectTeamStaff::getTeamId, dto.getId()) + .eq(TProjectTeamStaff::getUserId, staff.getUserId())); + if(count > 0){ + throw new ServiceException("该工艺工程师已存在项目组"); + } + }); + staffs.stream().filter(staff -> staff.getRoleType() == 2).forEach(staff -> { + long count = projectTeamStaffService.count(Wrappers.lambdaQuery(TProjectTeamStaff.class) + .ne(TProjectTeamStaff::getTeamId, dto.getId()) + .eq(TProjectTeamStaff::getUserId, staff.getUserId())); + if(count > 0){ + throw new ServiceException("该工艺工程师已存在项目组"); + } + }); projectTeamService.updateById(dto); // 删除项目组成员 projectTeamStaffService.remove(Wrappers.lambdaQuery(TProjectTeamStaff.class).eq(TProjectTeamStaff::getTeamId, dto.getId())); // 保存项目组成员 - List<TProjectTeamStaff> staffs = dto.getStaffs(); for (TProjectTeamStaff staff : staffs) { staff.setTeamId(dto.getId()); } @@ -168,5 +201,38 @@ return R.ok(); } + /** + * 查看项目组详情 + */ + @ApiOperation(value = "查询当前用户项目组信息") + @GetMapping(value = "/open/t-project-team/getDetailByUserId") + public R<TProjectTeamVO> getDetailByUserId() { + Long userId = tokenService.getLoginUser().getUserId(); + Integer roleType = tokenService.getLoginUser().getUser().getRoleType(); + TProjectTeamStaff projectTeamStaff = projectTeamStaffService.getOne(Wrappers.lambdaQuery(TProjectTeamStaff.class) + .eq(TProjectTeamStaff::getUserId, userId) + .eq(TProjectTeamStaff::getRoleType, roleType) + .last("LIMIT 1")); + if(Objects.isNull(projectTeamStaff)){ + return R.fail("当前用户未分配项目组,无法查看项目组信息"); + } + TProjectTeam projectTeam = projectTeamService.getById(projectTeamStaff.getTeamId()); + TProjectTeamVO projectTeamVO = new TProjectTeamVO(); + BeanUtils.copyProperties(projectTeam, projectTeamVO); + // 查询项目组人员 + List<TProjectTeamStaff> list = projectTeamStaffService.list(Wrappers.lambdaQuery(TProjectTeamStaff.class).eq(TProjectTeamStaff::getTeamId, projectTeamStaff.getTeamId())); + // 查询所有人员 + List<SysUser> sysUsers = sysUserService.selectList(); + for (TProjectTeamStaff tProjectTeamStaff : list) { + sysUsers.stream().filter(sysUser -> sysUser.getUserId().equals(tProjectTeamStaff.getUserId())).forEach(sysUser -> { + tProjectTeamStaff.setNickName(sysUser.getNickName()); + tProjectTeamStaff.setAvatar(sysUser.getAvatar()); + }); + } + projectTeamVO.setStaffs(list); + projectTeamVO.setStaffName(list.stream().map(TProjectTeamStaff::getNickName).collect(Collectors.joining(","))); + return R.ok(projectTeamVO); + } + } -- Gitblit v1.7.1