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

**/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章