AssoProjectPersonService.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.AddProjectPersonDTO;
  3. import cn.cslg.pas.common.dto.QueryProjectPersonDTO;
  4. import cn.cslg.pas.common.model.cronModel.Personnel;
  5. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  6. import cn.cslg.pas.common.model.cronModel.Records;
  7. import cn.cslg.pas.common.utils.CacheUtils;
  8. import cn.cslg.pas.common.utils.LoginUtils;
  9. import cn.cslg.pas.common.vo.ProjectPersonVO;
  10. import cn.cslg.pas.domain.business.AssoProductPerson;
  11. import cn.cslg.pas.domain.business.AssoProjectPerson;
  12. import cn.cslg.pas.domain.business.Project;
  13. import cn.cslg.pas.exception.XiaoShiException;
  14. import cn.cslg.pas.mapper.AssoProductPersonMapper;
  15. import cn.cslg.pas.mapper.AssoProjectPersonMapper;
  16. import cn.cslg.pas.service.permissions.PermissionService;
  17. import com.alibaba.fastjson.JSONObject;
  18. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  19. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  20. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  21. import org.springframework.beans.BeanUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.context.annotation.Lazy;
  24. import org.springframework.stereotype.Service;
  25. import java.util.ArrayList;
  26. import java.util.List;
  27. import java.util.stream.Collectors;
  28. /**
  29. * 项目与可见人员关联表Service层
  30. *
  31. * @Author lrj
  32. * @Date 2023/11/10
  33. */
  34. @Service
  35. public class AssoProjectPersonService extends ServiceImpl<AssoProjectPersonMapper, AssoProjectPerson> {
  36. @Autowired
  37. private PermissionService permissionService;
  38. @Autowired
  39. private CacheUtils cacheUtils;
  40. @Autowired
  41. private LoginUtils loginUtils;
  42. @Autowired
  43. @Lazy
  44. private ProjectService projectService;
  45. /**
  46. * 添加分享人
  47. *
  48. * @param addProjectPersonDTO
  49. * @return
  50. */
  51. public List<Integer> addProjectShare(AddProjectPersonDTO addProjectPersonDTO) {
  52. PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  53. List<Integer> reIds = new ArrayList<>();
  54. List<String> personIds = addProjectPersonDTO.getPersonIds();
  55. Integer projectId = addProjectPersonDTO.getProjectId();
  56. //根据ids查询是否存在
  57. LambdaQueryWrapper<AssoProjectPerson> queryWrapper = new LambdaQueryWrapper<>();
  58. queryWrapper.select(AssoProjectPerson::getPersonId);
  59. queryWrapper.in(AssoProjectPerson::getPersonId, personIds)
  60. .eq(AssoProjectPerson::getProjectId, projectId);
  61. List<AssoProjectPerson> assoProjectPersonList = this.list(queryWrapper);
  62. List<String> ids = assoProjectPersonList.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
  63. if (ids != null) {
  64. personIds.removeAll(ids);
  65. }
  66. if (personIds.size() != 0) {
  67. for (String personId : personIds) {
  68. AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
  69. assoProjectPerson.setProjectId(projectId);
  70. assoProjectPerson.setPersonId(personId);
  71. assoProjectPerson.setCreateId(personnelVO.getId());
  72. assoProjectPerson.setRole(3);
  73. assoProjectPerson.insert();
  74. reIds.add(assoProjectPerson.getId());
  75. }
  76. }
  77. return reIds;
  78. }
  79. /**
  80. * 批量删除分享记录
  81. *
  82. * @param ids
  83. * @return
  84. */
  85. public List<Integer> removeProjectShare(List<Integer> ids) {
  86. if (ids == null || ids.size() == 0) {
  87. throw new XiaoShiException("请选择分享记录");
  88. }
  89. this.removeBatchByIds(ids);
  90. return ids;
  91. }
  92. /**
  93. * 查询分享记录
  94. *
  95. * @param queryProjectPersonDTO
  96. * @return
  97. */
  98. public Records queryProjectShare(QueryProjectPersonDTO queryProjectPersonDTO) {
  99. Records records = new Records();
  100. Integer projectId = queryProjectPersonDTO.getProjectId();
  101. String personName = queryProjectPersonDTO.getPersonName();
  102. Long current = queryProjectPersonDTO.getCurrent();
  103. Long size = queryProjectPersonDTO.getSize();
  104. LambdaQueryWrapper<AssoProjectPerson> queryWrapper = new LambdaQueryWrapper<>();
  105. queryWrapper.eq(AssoProjectPerson::getProjectId, projectId);
  106. List<String> ids = new ArrayList<>();
  107. if (personName != null && personName.trim() != "") {
  108. ids = permissionService.getPersonIdsByName(personName);
  109. }
  110. if (ids.size() != 0) {
  111. queryWrapper.in(AssoProjectPerson::getProjectId, ids);
  112. }
  113. Page<AssoProjectPerson> page = this.page(new Page<>(current, size), queryWrapper);
  114. List<AssoProjectPerson> assoProjectPersonList = page.getRecords();
  115. List<ProjectPersonVO> projectPersonVOS = this.loadData(assoProjectPersonList);
  116. records.setData(projectPersonVOS);
  117. records.setTotal(page.getTotal());
  118. records.setCurrent(current);
  119. records.setSize(size);
  120. return records;
  121. }
  122. private List<ProjectPersonVO> loadData(List<AssoProjectPerson> assoProjectPersonList) {
  123. List<ProjectPersonVO> projectPersonVOS = new ArrayList<>();
  124. if (assoProjectPersonList == null || assoProjectPersonList.size() == 0) {
  125. return projectPersonVOS;
  126. }
  127. List<String> personIds = new ArrayList<>();
  128. assoProjectPersonList.forEach(item -> {
  129. if (item.getPersonId() != null) {
  130. personIds.add(item.getPersonId());
  131. }
  132. if (item.getCreateId() != null) {
  133. personIds.add(item.getCreateId());
  134. }
  135. });
  136. List<Personnel> personnels = new ArrayList<>();
  137. if (personIds.size() != 0) {
  138. try {
  139. String res = permissionService.getPersonnelByIdsFromPCS(personIds);
  140. JSONObject jsonObject = JSONObject.parseObject(res);
  141. personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
  142. } catch (Exception e) {
  143. }
  144. }
  145. for (AssoProjectPerson assoProjectPerson : assoProjectPersonList) {
  146. ProjectPersonVO projectPersonVO = new ProjectPersonVO();
  147. Personnel personnel1 = personnels.stream().filter(item -> item.getId().equals(assoProjectPerson.getPersonId())).findFirst().orElse(null);
  148. Personnel personnel2 = personnels.stream().filter(item -> item.getId().equals(assoProjectPerson.getCreateId())).findFirst().orElse(null);
  149. BeanUtils.copyProperties(assoProjectPerson, projectPersonVO);
  150. if (personnel1 != null) {
  151. projectPersonVO.setPersonName(personnel1.getPersonnelName());
  152. }
  153. if (personnel2 != null) {
  154. projectPersonVO.setCreateName(personnel2.getPersonnelName());
  155. }
  156. projectPersonVOS.add(projectPersonVO);
  157. }
  158. return projectPersonVOS;
  159. }
  160. public List<Integer> getRootProjectIds() {
  161. PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  162. Integer roleType = personnelVO.getRoleType();
  163. Integer tenantId =personnelVO.getTenantId();
  164. if(roleType!=null&&roleType.equals(1))
  165. {
  166. return null;
  167. }
  168. String createId = personnelVO.getId();
  169. List<Integer> ids = new ArrayList<>();
  170. LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
  171. queryWrapper.select(Project::getId);
  172. if(roleType!=null&&roleType.equals(2)){
  173. queryWrapper.eq(Project::getTenantId, tenantId);
  174. }
  175. else {
  176. queryWrapper.eq(Project::getCreateId, createId);
  177. }
  178. queryWrapper.eq(Project::getCreateId, createId)
  179. .or().eq(Project::getHeadId, createId);
  180. List<Project> projects =projectService.list(queryWrapper);
  181. if(projects!=null&&projects.size()>0){
  182. List<Integer> temIds =projects.stream().map(Project::getId).collect(Collectors.toList());
  183. ids.addAll(temIds);
  184. }
  185. LambdaQueryWrapper<AssoProjectPerson> queryWrapper1 =new LambdaQueryWrapper<>();
  186. queryWrapper1.select(AssoProjectPerson::getProjectId);
  187. queryWrapper1.eq(AssoProjectPerson::getPersonId,createId);
  188. List<AssoProjectPerson> assoProjectPersonList =this.list(queryWrapper1);
  189. if(assoProjectPersonList!=null&&assoProjectPersonList.size()>0){
  190. List<Integer> temIds =assoProjectPersonList.stream().map(AssoProjectPerson::getProjectId).collect(Collectors.toList());
  191. ids.addAll(temIds);
  192. }
  193. return ids;
  194. }
  195. }