UserInfoService

PagingVO retrieveUserinfo(PagingVO page, UserinfoSearchVo searchVo);


@Override
@Transactional
public PagingVO retrieveUserinfo(PagingVO page, UserinfoSearchVo searchVo) {


PagingVO vo = page;
List<Long> provincesIds = new ArrayList<>();
if (ArrayUtils.isNotEmpty(searchVo.getDistrictList())) {
List<Province> provinces = provinceDAO.findProviceByDistIds(searchVo.getDistrictList());
if (CollectionUtils.isNotEmpty(provinces)) {
for (Province province : provinces) {
provincesIds.add(province.getId());
}

}

//在页面上城市和区域没有直接的联系,但在页面上必须根据区域查询对应的的城市,因此必须获得proinceId.


String[] allDepartments = searchVo.getDepartmentList();
List<String> departments = new ArrayList<String>();
List<String> otherDepartments = new ArrayList<String>();
      if (ArrayUtils.isNotEmpty(allDepartments)) {
                 List<String> otherTypeDepartment = userInfoDAO.getOtherUserTypeDepartmentlist();
                 for (String dept : allDepartments) {
                     if (StringUtils.isNotBlank(dept)) {
                            if (otherTypeDepartment.contains(dept)) {
                                      otherDepartments.add(dept);
                             } else {
                                departments.add(dept);
                            }
                    }
            }
}
vo = this.userInfoDAO.getUserInfo(page, searchVo, provincesIds, departments, otherDepartments);
return vo;
}



@Column(name = "district_id")
private Long districtId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "district_id", referencedColumnName = "district_id", updatable = false, insertable = false)
private District distric;


总结:findProviceByDistIds(searchVo.getDistrictList())

public List<Province> findProviceByDistIds(Long[] distId) {
                DetachedCriteriaBuilder dcb = DetachedCriteriaBuilder.instance(Province.class, "pv");
                DetachedCriteriaBuilder sub = DetachedCriteriaBuilder.instance(DistrictProvince.class, "dp");
sub.addPropertyEq("pv.id", "dp.provinceId");
sub.addIn("dp.districtId", distId);
sub.setProjection(Projections.property("dp.id"));
                dcb.withExists(sub.getDetachedCriteria());
                return select(dcb);
}


/**

select
        this_.id as id1_40_0_,
        this_.en_name as en_name2_40_0_,
        this_.name as name3_40_0_ 
    from
        PROVINCE this_ 
    where
        exists (
            select
                dp_.id as y0_ 
            from
                DISTRICT_PROVINCE dp_ 
            where
                this_.id=dp_.province_id 
                and dp_.district_id in (
                    ?, ?
                )
        )


**/


      /** The Constant PHILIPS_USER_TYPE. */
private static final Long PHILIPS_USER_TYPE = 10L;


/** The Constant USER_TYPE_END. */
private static final Long USER_TYPE_END = 20L;


public List<String> getOtherUserTypeDepartmentlist() {

DetachedCriteriaBuilder builder = DetachedCriteriaBuilder.instance(UserInfo.class);
builder.addGt("userType", PHILIPS_USER_TYPE);
builder.addLe("userType", USER_TYPE_END);
builder.addIsNotNull("nonePhilipsDepartment");
builder.setProjection(Projections.distinct(Projections.property("nonePhilipsDepartment")));
return this.selectE(builder);

}


/**

select
        distinct this_.NONE_PHILIPS_DEPARTMENT as y0_ 
    from
        USER_INFO this_ 
    where
        this_.USER_TYPE>? 
        and this_.USER_TYPE<=? 
        and this_.NONE_PHILIPS_DEPARTMENT is not null

**/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值