123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- package cn.cslg.pas.service.business;
- import cn.cslg.pas.common.dto.AddProjectPersonDTO;
- import cn.cslg.pas.common.dto.QueryProjectPersonDTO;
- import cn.cslg.pas.common.model.cronModel.Personnel;
- import cn.cslg.pas.common.model.cronModel.PersonnelVO;
- import cn.cslg.pas.common.model.cronModel.Records;
- import cn.cslg.pas.common.utils.CacheUtils;
- import cn.cslg.pas.common.utils.LoginUtils;
- import cn.cslg.pas.common.vo.ProjectPersonVO;
- import cn.cslg.pas.domain.business.AssoProductPerson;
- import cn.cslg.pas.domain.business.AssoProjectPerson;
- import cn.cslg.pas.domain.business.Project;
- import cn.cslg.pas.exception.XiaoShiException;
- import cn.cslg.pas.mapper.AssoProductPersonMapper;
- import cn.cslg.pas.mapper.AssoProjectPersonMapper;
- import cn.cslg.pas.service.permissions.PermissionService;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Lazy;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * 项目与可见人员关联表Service层
- *
- * @Author lrj
- * @Date 2023/11/10
- */
- @Service
- public class AssoProjectPersonService extends ServiceImpl<AssoProjectPersonMapper, AssoProjectPerson> {
- @Autowired
- private PermissionService permissionService;
- @Autowired
- private CacheUtils cacheUtils;
- @Autowired
- private LoginUtils loginUtils;
- @Autowired
- @Lazy
- private ProjectService projectService;
- /**
- * 添加分享人
- *
- * @param addProjectPersonDTO
- * @return
- */
- public List<Integer> addProjectShare(AddProjectPersonDTO addProjectPersonDTO) {
- PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- List<Integer> reIds = new ArrayList<>();
- List<String> personIds = addProjectPersonDTO.getPersonIds();
- Integer projectId = addProjectPersonDTO.getProjectId();
- //根据ids查询是否存在
- LambdaQueryWrapper<AssoProjectPerson> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.select(AssoProjectPerson::getPersonId);
- queryWrapper.in(AssoProjectPerson::getPersonId, personIds)
- .eq(AssoProjectPerson::getProjectId, projectId);
- List<AssoProjectPerson> assoProjectPersonList = this.list(queryWrapper);
- List<String> ids = assoProjectPersonList.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
- if (ids != null) {
- personIds.removeAll(ids);
- }
- if (personIds.size() != 0) {
- for (String personId : personIds) {
- AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
- assoProjectPerson.setProjectId(projectId);
- assoProjectPerson.setPersonId(personId);
- assoProjectPerson.setCreateId(personnelVO.getId());
- assoProjectPerson.setRole(3);
- assoProjectPerson.insert();
- reIds.add(assoProjectPerson.getId());
- }
- }
- return reIds;
- }
- /**
- * 批量删除分享记录
- *
- * @param ids
- * @return
- */
- public List<Integer> removeProjectShare(List<Integer> ids) {
- if (ids == null || ids.size() == 0) {
- throw new XiaoShiException("请选择分享记录");
- }
- this.removeBatchByIds(ids);
- return ids;
- }
- /**
- * 查询分享记录
- *
- * @param queryProjectPersonDTO
- * @return
- */
- public Records queryProjectShare(QueryProjectPersonDTO queryProjectPersonDTO) {
- Records records = new Records();
- Integer projectId = queryProjectPersonDTO.getProjectId();
- String personName = queryProjectPersonDTO.getPersonName();
- Long current = queryProjectPersonDTO.getCurrent();
- Long size = queryProjectPersonDTO.getSize();
- LambdaQueryWrapper<AssoProjectPerson> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(AssoProjectPerson::getProjectId, projectId);
- List<String> ids = new ArrayList<>();
- if (personName != null && personName.trim() != "") {
- ids = permissionService.getPersonIdsByName(personName);
- }
- if (ids.size() != 0) {
- queryWrapper.in(AssoProjectPerson::getProjectId, ids);
- }
- Page<AssoProjectPerson> page = this.page(new Page<>(current, size), queryWrapper);
- List<AssoProjectPerson> assoProjectPersonList = page.getRecords();
- List<ProjectPersonVO> projectPersonVOS = this.loadData(assoProjectPersonList);
- records.setData(projectPersonVOS);
- records.setTotal(page.getTotal());
- records.setCurrent(current);
- records.setSize(size);
- return records;
- }
- private List<ProjectPersonVO> loadData(List<AssoProjectPerson> assoProjectPersonList) {
- List<ProjectPersonVO> projectPersonVOS = new ArrayList<>();
- if (assoProjectPersonList == null || assoProjectPersonList.size() == 0) {
- return projectPersonVOS;
- }
- List<String> personIds = new ArrayList<>();
- assoProjectPersonList.forEach(item -> {
- if (item.getPersonId() != null) {
- personIds.add(item.getPersonId());
- }
- if (item.getCreateId() != null) {
- personIds.add(item.getCreateId());
- }
- });
- List<Personnel> personnels = new ArrayList<>();
- if (personIds.size() != 0) {
- try {
- String res = permissionService.getPersonnelByIdsFromPCS(personIds);
- JSONObject jsonObject = JSONObject.parseObject(res);
- personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
- } catch (Exception e) {
- }
- }
- for (AssoProjectPerson assoProjectPerson : assoProjectPersonList) {
- ProjectPersonVO projectPersonVO = new ProjectPersonVO();
- Personnel personnel1 = personnels.stream().filter(item -> item.getId().equals(assoProjectPerson.getPersonId())).findFirst().orElse(null);
- Personnel personnel2 = personnels.stream().filter(item -> item.getId().equals(assoProjectPerson.getCreateId())).findFirst().orElse(null);
- BeanUtils.copyProperties(assoProjectPerson, projectPersonVO);
- if (personnel1 != null) {
- projectPersonVO.setPersonName(personnel1.getPersonnelName());
- }
- if (personnel2 != null) {
- projectPersonVO.setCreateName(personnel2.getPersonnelName());
- }
- projectPersonVOS.add(projectPersonVO);
- }
- return projectPersonVOS;
- }
- public List<Integer> getRootProjectIds() {
- PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- Integer roleType = personnelVO.getRoleType();
- Integer tenantId =personnelVO.getTenantId();
- if(roleType!=null&&roleType.equals(1))
- {
- return null;
- }
- String createId = personnelVO.getId();
- List<Integer> ids = new ArrayList<>();
- LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.select(Project::getId);
- if(roleType!=null&&roleType.equals(2)){
- queryWrapper.eq(Project::getTenantId, tenantId);
- }
- else {
- queryWrapper.eq(Project::getCreateId, createId);
- }
- queryWrapper.eq(Project::getCreateId, createId)
- .or().eq(Project::getHeadId, createId);
- List<Project> projects =projectService.list(queryWrapper);
- if(projects!=null&&projects.size()>0){
- List<Integer> temIds =projects.stream().map(Project::getId).collect(Collectors.toList());
- ids.addAll(temIds);
- }
- LambdaQueryWrapper<AssoProjectPerson> queryWrapper1 =new LambdaQueryWrapper<>();
- queryWrapper1.select(AssoProjectPerson::getProjectId);
- queryWrapper1.eq(AssoProjectPerson::getPersonId,createId);
- List<AssoProjectPerson> assoProjectPersonList =this.list(queryWrapper1);
- if(assoProjectPersonList!=null&&assoProjectPersonList.size()>0){
- List<Integer> temIds =assoProjectPersonList.stream().map(AssoProjectPerson::getProjectId).collect(Collectors.toList());
- ids.addAll(temIds);
- }
- return ids;
- }
- }
|