AssoProjectPersonService.java 6.6 KB

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