判断二个list集合重复元素

package com.boss.cxgovac.pauth.entity;

import java.io.Serializable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import org.apache.commons.beanutils.PropertyUtils;
import org.hibernate.validator.constraints.NotEmpty;

import com.boss.cxgovac.common.utils.StringUtil;
import com.boss.cxgovac.pauth.common.entity.UpdateGroup;

import lombok.Data;

@Data
@Entity
@Table(name="afa_auth_resource")
public class PtyAuthResource implements Serializable {
	private static final long serialVersionUID = 1L;

	@NotEmpty(message = "资源ID不能为空", groups = {UpdateGroup.class})
	@Id
	@Column(name="RESOURCE_ID")
	private String resourceId;

	@Column(name="APP_ID")
	private String appId;

    @NotEmpty(message = "功能CODE不能为空", groups = {UpdateGroup.class})
	@Column(name="FUNC_CODE")
	private String funcCode;

	@Column(name="IS_DELETE")
	private String isDelete;

	@Column(name="LAST_MODIFY_TIME")
	private String lastModifyTime;

    @NotEmpty(message = "操作类型不能为空", groups = {UpdateGroup.class})
	@Column(name="OP_TYPE")
	private String opType;

    @NotEmpty(message = "角色CODE不能为空", groups = {UpdateGroup.class})
	@Column(name="PARTY_CODE")
	private String partyCode;

	@Column(name="RESOURCE_CODE")
	private String resourceCode;

	@Column(name="RESOURCE_NAME")
	private String resourceName;
	
	@Override
	public boolean equals(Object resource) {
		if (resource == null) {
			return false;
		}
		if (!(resource instanceof PtyAuthResource)) {
			return false;
		}
		PtyAuthResource target = (PtyAuthResource) resource;
		return this.resourceId.equals(target.resourceId);
	}
	
	/**
	 * 转成map对象
	 * 
	 * @return
	 */
	public Map map() {
		try {
			Map map = PropertyUtils.describe(this);
			map.remove("class");
			Iterator<Entry> itera = map.entrySet().iterator();
			Entry entry = null;
			Object value = null;
			while (itera.hasNext()) {
				value = itera.next().getValue();
				if (Objects.isNull(value) || StringUtil.isEmpty(value.toString())) {
					itera.remove();
				}
				if (!Objects.isNull(value) && value instanceof List) {
					List list = (List)value;
					if (list.size() == 0) {
						itera.remove();
					}
				}
			}
			return map;
		} catch (Exception ex) {
			throw new RuntimeException(ex);
		}
	}
	
}

对象类里面重写equals方法

public PageResult<PtyAppResourceVo> funcResourcePage(PtyAuthResourceQo authResourceQo) {
		PtyAuthResource ptyAuthResource = new PtyAuthResource();
		BeanUtils.copyProperties(authResourceQo, ptyAuthResource);
		// 查询所有功能的资源
		PageInfo<PtyAuthResource> pageInfo = PageHelper
				.startPage(authResourceQo.getPageIndex(), authResourceQo.getPageSize())
				.doSelectPageInfo(() -> authResourceDao.selectNotAuthResource(ptyAuthResource));

		List<PtyAuthResource> all = pageInfo.getList();

		// 查询已授权的
		PageInfo<PtyAuthResource> pageInfoAuth = PageHelper
				.startPage(authResourceQo.getPageIndex(), authResourceQo.getPageSize())
				.doSelectPageInfo(() -> authResourceDao.select(ptyAuthResource));
		List<PtyAuthResource> authed = pageInfoAuth.getList();

		List<PtyAppResourceVo> result = all.stream().map(resource -> {
			PtyAppResourceVo vo = new PtyAppResourceVo();
			BeanUtils.copyProperties(resource, vo);
			if (!authed.contains(resource)) {
				vo.setOpType("hide");
			}
			return vo;
		}).collect(Collectors.toList());

		return new PageResult<PtyAppResourceVo>().setTotal(pageInfo.getTotal()).setResult(result);
	}

猜你喜欢

转载自blog.csdn.net/weixin_38441551/article/details/86534117