提交 16b2f871 编写于 作者: O o2null

Merge branch 'fix/查询人员信息未排序的问题' into 'wrdp'

[人员组织]修复查询人员信息未排序的问题

See merge request o2oa/o2oa!2421
package com.x.organization.assemble.express.jaxrs.person;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
import javax.persistence.EntityManager;
......@@ -82,39 +80,63 @@ class ActionListWithUnitSubDirectLikeObject extends BaseAction {
}
private List<Wo> list(Business business, Wi wi, List<String> ids) throws Exception {
private List<Wo> list(Business business, Wi wi, List<Identity> identityList) throws Exception {
List<Wo> wos = new ArrayList<>();
String str = StringUtils.lowerCase(StringTools.escapeSqlLikeKey(wi.getKey()));
EntityManager em = business.entityManagerContainer().get(Person.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Person> root = cq.from(Person.class);
Predicate p = cb.like(cb.lower(root.get(Person_.name)), "%" + str + "%", StringTools.SQL_ESCAPE_CHAR);
p = cb.or(p, cb.like(cb.lower(root.get(Person_.unique)), "%" + str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.pinyin)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.pinyinInitial)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.mobile)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.distinguishedName)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.and(p, cb.isMember(root.get(Person_.id), cb.literal(ids)));
Predicate p = cb.conjunction();
if(StringUtils.isNotBlank(wi.getKey())) {
String str = StringUtils.lowerCase(StringTools.escapeSqlLikeKey(wi.getKey()));
p = cb.like(cb.lower(root.get(Person_.name)), "%" + str + "%", StringTools.SQL_ESCAPE_CHAR);
p = cb.or(p, cb.like(cb.lower(root.get(Person_.unique)), "%" + str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.pinyin)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.pinyinInitial)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.mobile)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.distinguishedName)), str + "%", StringTools.SQL_ESCAPE_CHAR));
}
Map<String,Integer> map = new HashMap<>();
if(ListTools.isNotEmpty(identityList)) {
for(Identity identity : identityList){
map.put(identity.getPerson(), identity.getOrderNumber());
}
p = cb.and(p, cb.isMember(root.get(Person_.id), cb.literal(map.keySet())));
}
List<String> list = em.createQuery(cq.select(root.get(Person_.id)).where(p))
.getResultList().stream().distinct().collect(Collectors.toList());
for (Person o : business.person().pick(list)) {
if(!map.isEmpty()){
o.setOrderNumber(map.get(o.getId()));
}
wos.add(this.convert(business, o, Wo.class));
}
wos = wos.stream()
.sorted(Comparator.comparing(Wo::getOrderNumber, Comparator.nullsLast(Integer::compareTo))
.thenComparing(Comparator
.comparing(Wo::getName, Comparator.nullsFirst(String::compareTo)).reversed()))
.collect(Collectors.toList());
return wos;
}
private List<String> people(Business business, Wi wi) throws Exception {
List<Unit> os = business.unit().pick(wi.getUnitList());
List<String> unitIds = ListTools.extractField(os, Unit.id_FIELDNAME, String.class, true, true);
EntityManager em = business.entityManagerContainer().get(Identity.class);
private List<Identity> people(Business business, Wi wi) throws Exception {
List<Identity> list = new ArrayList<>();
if(ListTools.isNotEmpty(wi.getUnitList())) {
List<Unit> os = business.unit().pick(wi.getUnitList());
List<String> unitIds = ListTools.extractField(os, Unit.id_FIELDNAME, String.class, true, true);
if (ListTools.isNotEmpty(unitIds)) {
list = business.entityManagerContainer().fetchIn(Identity.class,
ListTools.toList(Identity.id_FIELDNAME, Identity.person_FIELDNAME, Identity.orderNumber_FIELDNAME), Identity.unit_FIELDNAME, unitIds);
}
}
/*EntityManager em = business.entityManagerContainer().get(Identity.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Identity> root = cq.from(Identity.class);
Predicate p = root.get(Identity_.unit).in(unitIds);
List<String> list = em.createQuery(cq.select(root.get(Identity_.person)).where(p))
.getResultList().stream().distinct().collect(Collectors.toList());
.getResultList().stream().distinct().collect(Collectors.toList());*/
return list;
}
}
\ No newline at end of file
}
package com.x.organization.assemble.express.jaxrs.person;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
import javax.persistence.EntityManager;
......@@ -72,20 +70,32 @@ class ActionListWithUnitSubDirectObject extends BaseAction {
List<Unit> os = business.unit().pick(wi.getUnitList());
List<String> unitIds = new ArrayList<>();
for (Unit o : os) {
unitIds.add(o.getId());
if(!unitIds.contains(o.getId())) {
unitIds.add(o.getId());
}
}
unitIds = ListTools.trim(unitIds, true, true);
List<Identity> list = new ArrayList<>();
if(ListTools.isNotEmpty(unitIds)) {
list = business.entityManagerContainer().fetchIn(Identity.class,
ListTools.toList(Identity.id_FIELDNAME, Identity.person_FIELDNAME, Identity.orderNumber_FIELDNAME), Identity.unit_FIELDNAME, unitIds);
}
EntityManager em = business.entityManagerContainer().get(Identity.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Identity> root = cq.from(Identity.class);
Predicate p = root.get(Identity_.unit).in(unitIds);
List<String> personIds = em.createQuery(cq.select(root.get(Identity_.person)).where(p))
.getResultList().stream().distinct().collect(Collectors.toList());
personIds = ListTools.trim(personIds, true, true);
for (Person o : business.person().pick(personIds)) {
wos.add(this.convert(business, o, Wo.class));
if(ListTools.isNotEmpty(list)) {
Map<String,Integer> map = new HashMap<>();
for(Identity identity : list){
map.put(identity.getPerson(), identity.getOrderNumber());
}
for (Person o : business.person().pick(new ArrayList<>(map.keySet()))) {
o.setOrderNumber(map.get(o.getId()));
wos.add(this.convert(business, o, Wo.class));
}
wos = wos.stream()
.sorted(Comparator.comparing(Wo::getOrderNumber, Comparator.nullsLast(Integer::compareTo))
.thenComparing(Comparator
.comparing(Wo::getName, Comparator.nullsFirst(String::compareTo)).reversed()))
.collect(Collectors.toList());
}
return wos;
}
}
\ No newline at end of file
}
package com.x.organization.assemble.express.jaxrs.person;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
import javax.persistence.EntityManager;
......@@ -82,44 +80,68 @@ class ActionListWithUnitSubNestedLikeObject extends BaseAction {
}
private List<Wo> list(Business business, Wi wi, List<String> ids) throws Exception {
private List<Wo> list(Business business, Wi wi, List<Identity> identityList) throws Exception {
List<Wo> wos = new ArrayList<>();
String str = StringUtils.lowerCase(StringTools.escapeSqlLikeKey(wi.getKey()));
EntityManager em = business.entityManagerContainer().get(Person.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Person> root = cq.from(Person.class);
Predicate p = cb.like(cb.lower(root.get(Person_.name)), "%" + str + "%", StringTools.SQL_ESCAPE_CHAR);
p = cb.or(p, cb.like(cb.lower(root.get(Person_.unique)), "%" + str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.pinyin)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.pinyinInitial)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.mobile)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.distinguishedName)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.and(p, cb.isMember(root.get(Person_.id), cb.literal(ids)));
Predicate p = cb.conjunction();
if(StringUtils.isNotBlank(wi.getKey())) {
String str = StringUtils.lowerCase(StringTools.escapeSqlLikeKey(wi.getKey()));
p = cb.like(cb.lower(root.get(Person_.name)), "%" + str + "%", StringTools.SQL_ESCAPE_CHAR);
p = cb.or(p, cb.like(cb.lower(root.get(Person_.unique)), "%" + str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.pinyin)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.pinyinInitial)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.mobile)), str + "%", StringTools.SQL_ESCAPE_CHAR));
p = cb.or(p, cb.like(cb.lower(root.get(Person_.distinguishedName)), str + "%", StringTools.SQL_ESCAPE_CHAR));
}
Map<String,Integer> map = new HashMap<>();
if(ListTools.isNotEmpty(identityList)) {
for(Identity identity : identityList){
map.put(identity.getPerson(), identity.getOrderNumber());
}
p = cb.and(p, cb.isMember(root.get(Person_.id), cb.literal(map.keySet())));
}
List<String> list = em.createQuery(cq.select(root.get(Person_.id)).where(p))
.getResultList().stream().distinct().collect(Collectors.toList());
for (Person o : business.person().pick(list)) {
if(!map.isEmpty()){
o.setOrderNumber(map.get(o.getId()));
}
wos.add(this.convert(business, o, Wo.class));
}
wos = wos.stream()
.sorted(Comparator.comparing(Wo::getOrderNumber, Comparator.nullsLast(Integer::compareTo))
.thenComparing(Comparator
.comparing(Wo::getName, Comparator.nullsFirst(String::compareTo)).reversed()))
.collect(Collectors.toList());
return wos;
}
private List<String> people(Business business, Wi wi) throws Exception {
List<Unit> os = business.unit().pick(wi.getUnitList());
List<String> unitIds = new ArrayList<>();
for (Unit o : os) {
unitIds.add(o.getId());
unitIds.addAll(business.unit().listSubNested(o.getId()));
private List<Identity> people(Business business, Wi wi) throws Exception {
List<Identity> list = new ArrayList<>();
if(ListTools.isNotEmpty(wi.getUnitList())) {
List<Unit> os = business.unit().pick(wi.getUnitList());
List<String> unitIds = new ArrayList<>();
for (Unit o : os) {
unitIds.add(o.getId());
unitIds.addAll(business.unit().listSubNested(o.getId()));
}
unitIds = ListTools.trim(unitIds, true, true);
if (ListTools.isNotEmpty(unitIds)) {
list = business.entityManagerContainer().fetchIn(Identity.class,
ListTools.toList(Identity.id_FIELDNAME, Identity.person_FIELDNAME, Identity.orderNumber_FIELDNAME), Identity.unit_FIELDNAME, unitIds);
}
}
unitIds = ListTools.trim(unitIds, true, true);
EntityManager em = business.entityManagerContainer().get(Identity.class);
/*EntityManager em = business.entityManagerContainer().get(Identity.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Identity> root = cq.from(Identity.class);
Predicate p = root.get(Identity_.unit).in(unitIds);
List<String> list = em.createQuery(cq.select(root.get(Identity_.person)).where(p))
.getResultList().stream().distinct().collect(Collectors.toList());
.getResultList().stream().distinct().collect(Collectors.toList());*/
return list;
}
}
\ No newline at end of file
}
package com.x.organization.assemble.express.jaxrs.person;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
import javax.persistence.EntityManager;
......@@ -76,18 +74,27 @@ class ActionListWithUnitSubNestedObject extends BaseAction {
unitIds.addAll(business.unit().listSubNested(o.getId()));
}
unitIds = ListTools.trim(unitIds, true, true);
EntityManager em = business.entityManagerContainer().get(Identity.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Identity> root = cq.from(Identity.class);
Predicate p = root.get(Identity_.unit).in(unitIds);
List<String> personIds = em.createQuery(cq.select(root.get(Identity_.person)).where(p))
.getResultList().stream().distinct().collect(Collectors.toList());
personIds = ListTools.trim(personIds, true, true);
for (Person o : business.person().pick(personIds)) {
wos.add(this.convert(business, o, Wo.class));
List<Identity> list = new ArrayList<>();
if(ListTools.isNotEmpty(unitIds)) {
list = business.entityManagerContainer().fetchIn(Identity.class,
ListTools.toList(Identity.id_FIELDNAME, Identity.person_FIELDNAME, Identity.orderNumber_FIELDNAME), Identity.unit_FIELDNAME, unitIds);
}
if(ListTools.isNotEmpty(list)) {
Map<String,Integer> map = new HashMap<>();
for(Identity identity : list){
map.put(identity.getPerson(), identity.getOrderNumber());
}
for (Person o : business.person().pick(new ArrayList<>(map.keySet()))) {
o.setOrderNumber(map.get(o.getId()));
wos.add(this.convert(business, o, Wo.class));
}
wos = wos.stream()
.sorted(Comparator.comparing(Wo::getOrderNumber, Comparator.nullsLast(Integer::compareTo))
.thenComparing(Comparator
.comparing(Wo::getName, Comparator.nullsFirst(String::compareTo)).reversed()))
.collect(Collectors.toList());
}
return wos;
}
}
\ No newline at end of file
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册