package jnpf.base.util; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import jnpf.base.entity.SynThirdInfoEntity; import jnpf.base.mapper.SynThirdInfoMapper; import jnpf.constant.PermissionConst; import jnpf.message.uitl.SynThirdConsts; import jnpf.permission.PositionApi; import jnpf.permission.UserRelationApi; import jnpf.permission.entity.PositionEntity; import jnpf.permission.entity.UserRelationEntity; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @Component public class SynThirdUtil { @Autowired private PositionApi positionServiceApi; @Autowired private UserRelationApi userRelationApi; @Autowired private SynThirdInfoMapper synThirdInfoMapper; public void syncDingUserRelation(String sysObjId, List deptIdList, String thirdType) { // 查询对应的中间表,获取到对应的本地组织列表 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().eq(SynThirdInfoEntity::getThirdType, Integer.valueOf(thirdType)); wrapper.lambda().eq(SynThirdInfoEntity::getDataType, Integer.valueOf(SynThirdConsts.DATA_TYPE_ORG)); List synThirdInfoLists = synThirdInfoMapper.selectList(wrapper); HashMap map = new HashMap<>(); for (SynThirdInfoEntity obj : synThirdInfoLists) { map.put(obj.getThirdObjId(), obj.getSysObjId()); } //要添加的数据 List addEntities = synThirdInfoLists.stream().filter(t -> deptIdList.contains(Long.parseLong(t.getThirdObjId()))).collect(Collectors.toList()); List addOrgIds = addEntities.stream() .map(SynThirdInfoEntity::getSysObjId).collect(Collectors.toList()); // 已经存在的数据 List collect = synThirdInfoLists.stream().map(SynThirdInfoEntity::getSysObjId).collect(Collectors.toList()); List userRelationEntities = userRelationApi.getListByUserId(sysObjId) .stream().filter(t -> t.getObjectType().equals(PermissionConst.ORGANIZE) &&collect.contains(t.getId())).collect(Collectors.toList()); List positionEntities = positionServiceApi.getList(true); //删除id集合 userRelationApi.removeOrgRelation(userRelationEntities,sysObjId); //新增 for (String string : addOrgIds) { UserRelationEntity userRelationEntity = new UserRelationEntity(); userRelationEntity.setObjectType(PermissionConst.ORGANIZE); userRelationEntity.setUserId(sysObjId); userRelationEntity.setObjectId(string); List positionEntityList = positionEntities.stream() .filter(t -> t.getOrganizeId().equals(string) && t.getDefaultMark().equals(1)).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(positionEntityList)) { UserRelationEntity positionUserRelation = new UserRelationEntity(); positionUserRelation.setObjectType(PermissionConst.POSITION); positionUserRelation.setObjectId(positionEntityList.get(0).getId()); positionUserRelation.setUserId(sysObjId); userRelationApi.save(positionUserRelation); } userRelationApi.save(userRelationEntity); } } }