123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- 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 org.springframework.transaction.annotation.Transactional;
- import org.springframework.util.CollectionUtils;
- 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());
- Integer roleType = 3;
- 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)
- .eq(AssoProjectPerson::getRole, roleType);
- 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(roleType);
- 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;
- }
- public List<String> getProjectShareIds(Integer projectId) {
- List<String> personIds = new ArrayList<>();
- LambdaQueryWrapper<AssoProjectPerson> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(AssoProjectPerson::getProjectId, projectId);
- List<AssoProjectPerson> assoProjectPersonList = this.list(queryWrapper);
- if (assoProjectPersonList != null && assoProjectPersonList.size() > 0) {
- personIds = assoProjectPersonList.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
- }
- return personIds;
- }
- public List<AssoProjectPerson> queryIfExist(Integer roleType, List<String> personIds, Integer projectId) {
- List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
- if (personIds == null || personIds.size() == 0) {
- }
- LambdaQueryWrapper<AssoProjectPerson> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(AssoProjectPerson::getProjectId, projectId)
- .eq(AssoProjectPerson::getPersonId, personIds)
- .eq(AssoProjectPerson::getRole, roleType);
- return assoProjectPersonList;
- }
- @Transactional(rollbackFor = Exception.class)
- public void addProjectPeople(Integer roleType, Integer projectId, List<String> personIds) {
- if (!CollectionUtils.isEmpty(personIds)) {
- List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
- personIds.forEach(item -> {
- AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
- assoProjectPerson.setPersonId(item);
- assoProjectPerson.setRole(roleType);
- assoProjectPerson.setProjectId(projectId);
- assoProjectPerson.setCreateId(loginUtils.getId().toString());
- assoProjectPersonList.add(assoProjectPerson);
- });
- this.saveBatch(assoProjectPersonList);
- }
- }
- @Transactional(rollbackFor = Exception.class)
- public void updateProjectPeople(Integer roleType, Integer projectId, List<String> personIds) {
- LambdaQueryWrapper<AssoProjectPerson> assoProjectPersonLambdaQueryWrapper = new LambdaQueryWrapper<>();
- assoProjectPersonLambdaQueryWrapper.eq(AssoProjectPerson::getProjectId, projectId)
- .eq(AssoProjectPerson::getRole, roleType);
- this.remove(assoProjectPersonLambdaQueryWrapper);
- /**
- *装载参与人
- */
- if (!CollectionUtils.isEmpty(personIds)) {
- List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
- personIds.forEach(item -> {
- AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
- assoProjectPerson.setPersonId(item);
- assoProjectPerson.setRole(roleType);
- assoProjectPerson.setProjectId(projectId);
- assoProjectPerson.setCreateId(loginUtils.getId().toString());
- assoProjectPersonList.add(assoProjectPerson);
- });
- this.saveBatch(assoProjectPersonList);
- }
- }
- }
|