ProjectUserService.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package cn.cslg.pas.service;
  2. import cn.cslg.pas.common.model.dto.PasUserDTO;
  3. import cn.cslg.pas.common.model.vo.PasUserVO;
  4. import cn.cslg.pas.common.model.vo.ProjectUserVO;
  5. import cn.cslg.pas.common.utils.DateUtils;
  6. import cn.cslg.pas.common.utils.Response;
  7. import cn.cslg.pas.domain.ProjectUser;
  8. import cn.cslg.pas.mapper.ProjectUserMapper;
  9. import com.alibaba.fastjson.JSONArray;
  10. import com.alibaba.fastjson.JSONObject;
  11. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  12. import com.baomidou.mybatisplus.core.metadata.IPage;
  13. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  14. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  15. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  16. import lombok.RequiredArgsConstructor;
  17. import org.springframework.context.annotation.Lazy;
  18. import org.springframework.stereotype.Service;
  19. import org.springframework.transaction.annotation.Transactional;
  20. import java.io.IOException;
  21. import java.util.ArrayList;
  22. import java.util.List;
  23. import java.util.function.Function;
  24. import java.util.stream.Collectors;
  25. /**
  26. * <p>
  27. * 分配表 服务类
  28. * </p>
  29. *
  30. * @author 王岩
  31. * @since 2022-02-18
  32. */
  33. @Service
  34. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  35. public class ProjectUserService extends ServiceImpl<ProjectUserMapper, ProjectUser> {
  36. private final OAuth2Service oAuth2Service;
  37. public ProjectUser getProjectUserByProjectIdAndUserId(Integer projectId, Integer userId) {
  38. LambdaQueryWrapper<ProjectUser> queryWrapper = new LambdaQueryWrapper<>();
  39. queryWrapper.eq(ProjectUser::getProjectId, projectId);
  40. queryWrapper.eq(ProjectUser::getUserId, userId);
  41. return this.getOne(queryWrapper);
  42. }
  43. public List<ProjectUser> getProjectUserByUserId(Integer userId) {
  44. LambdaQueryWrapper<ProjectUser> queryWrapper = new LambdaQueryWrapper<>();
  45. queryWrapper.eq(ProjectUser::getUserId, userId);
  46. return this.list(queryWrapper);
  47. }
  48. public List<Integer> getProIdByUserId(Integer userId) {
  49. return this.getProjectUserByUserId(userId).stream().map(ProjectUser::getProjectId).collect(Collectors.toList());
  50. }
  51. public List<Integer> getProjectUserIdByProjectId(Integer projectId) {
  52. LambdaQueryWrapper<ProjectUser> queryWrapper = new LambdaQueryWrapper<>();
  53. queryWrapper.eq(ProjectUser::getProjectId, projectId);
  54. return this.list(queryWrapper).stream().map(ProjectUser::getUserId).collect(Collectors.toList());
  55. }
  56. public List<ProjectUser> getListByProIdAndUserIds(List<Integer> userIds, Integer projectId) {
  57. LambdaQueryWrapper<ProjectUser> queryWrapper = new LambdaQueryWrapper<>();
  58. queryWrapper.in(ProjectUser::getUserId, userIds);
  59. queryWrapper.eq(ProjectUser::getProjectId, projectId);
  60. return this.list(queryWrapper);
  61. }
  62. public IPage<ProjectUser> getPageList(ProjectUserVO params) throws IOException {
  63. //根据专题库id和类型获得人员id
  64. LambdaQueryWrapper<ProjectUser> wrapper = new LambdaQueryWrapper<>();
  65. wrapper.eq(ProjectUser::getProjectId, params.getProjectId());
  66. if (params.getType() != null) {
  67. wrapper.eq(ProjectUser::getType, params.getType());
  68. }
  69. List<ProjectUser> projectUserList = this.list(wrapper);
  70. List<Integer> userIds = projectUserList.stream().map(ProjectUser::getUserId).collect(Collectors.toList());
  71. if (userIds.size() == 0) {
  72. IPage<ProjectUser> tem = new Page<>();
  73. tem.setSize(10);
  74. tem.setTotal(0);
  75. return tem;
  76. }
  77. PasUserDTO pasUserDTO = new PasUserDTO();
  78. pasUserDTO.setUserIds(userIds);
  79. pasUserDTO.setUsername(params.getUsername());
  80. pasUserDTO.setName(params.getName());
  81. pasUserDTO.setCurrent(params.getCurrent());
  82. pasUserDTO.setSize(params.getSize());
  83. String res = oAuth2Service.getPASAssignedUser(pasUserDTO);
  84. JSONObject jsonObject = JSONObject.parseObject(res);
  85. IPage<ProjectUser> pageList = new Page<>();
  86. pageList.setTotal(Integer.parseInt(jsonObject.get("total").toString()));
  87. pageList.setSize(Integer.parseInt(jsonObject.get("size").toString()));
  88. List<PasUserVO> records = JSONArray.parseArray(jsonObject.get("records").toString(), PasUserVO.class);
  89. List<ProjectUser> list = new ArrayList<>();
  90. for (PasUserVO item : records) {
  91. ProjectUser projectUser = projectUserList.stream().filter(tem -> tem.getUserId().equals(item.getId())).findFirst().orElse(new ProjectUser());
  92. projectUser.setName(item.getName());
  93. projectUser.setUsername(item.getUsername());
  94. list.add(projectUser);
  95. }
  96. //根据
  97. //根据人员姓名,id,账号,分页信息查询人员
  98. pageList.setRecords(list);
  99. return pageList;
  100. }
  101. @Transactional
  102. public String add(ProjectUser projectUser) {
  103. if (projectUser.getUserIds() != null && projectUser.getUserIds().size() != 0) {
  104. List<Integer> tempList = this.getListByProIdAndUserIds(projectUser.getUserIds(), projectUser.getProjectId()).stream().map(ProjectUser::getUserId).collect(Collectors.toList());
  105. List<ProjectUser> userList = new ArrayList<>();
  106. projectUser.getUsers().forEach(item -> {
  107. ProjectUser user = new ProjectUser();
  108. user.setUserId(item.getUserId());
  109. user.setProjectId(projectUser.getProjectId());
  110. user.setCreateTime(DateUtils.getDateTime());
  111. user.setRemark(projectUser.getRemark());
  112. user.setType(projectUser.getType());
  113. user.setTenantId(item.getTenantId());
  114. if (!tempList.contains(item.getUserId())) {
  115. userList.add(user);
  116. }
  117. });
  118. if (userList.size() != 0) {
  119. this.saveOrUpdateBatch(userList);
  120. }
  121. return Response.success();
  122. } else {
  123. projectUser.setCreateTime(DateUtils.getDateTime());
  124. projectUser.insert();
  125. return Response.success(projectUser.getId());
  126. }
  127. }
  128. public String edit(ProjectUser projectUser) {
  129. projectUser.updateById();
  130. return Response.success();
  131. }
  132. public String delete(Integer id) {
  133. this.removeById(id);
  134. return Response.success();
  135. }
  136. public void deleteByProjectId(Integer projectId) {
  137. this.remove(Wrappers.<ProjectUser>lambdaQuery().eq(ProjectUser::getProjectId, projectId));
  138. }
  139. }