diff --git a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/factory/PersonFactory.java b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/factory/PersonFactory.java index 16c50925a3193669301cc03ce84380d247ea9f9e..57a033d865ddf89d503c1558f4f9d436d14da1ca 100644 --- a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/factory/PersonFactory.java +++ b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/factory/PersonFactory.java @@ -1,9 +1,6 @@ package com.x.organization.assemble.express.factory; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.regex.Matcher; import java.util.stream.Collectors; @@ -105,6 +102,44 @@ public class PersonFactory extends AbstractFactory { return list; } + public List pick(List flags, Boolean useNameFind) throws Exception { + List list = new ArrayList<>(); + for (String str : ListTools.trim(flags, true, false)) { + CacheKey cacheKey = new CacheKey(Person.class.getName(), str); + Optional optional = CacheManager.get(cacheCategory, cacheKey); + if (optional.isPresent()) { + list.add((Person) optional.get()); + } else { + Person o = this.pickObject(str); + if (null != o) { + CacheManager.put(cacheCategory, cacheKey, o); + list.add(o); + } + } + } + if(list.isEmpty() && BooleanUtils.isTrue(useNameFind)){ + list = this.listWithName(flags); + } + return list; + } + + public List listWithName(List names) throws Exception { + if(ListTools.isEmpty(names)){ + return Collections.EMPTY_LIST; + } + EntityManager em = this.entityManagerContainer().get(Person.class); + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(Person.class); + Root root = cq.from(Person.class); + Predicate p; + if(names.size() > 1){ + p = root.get(Person_.name).in(names); + }else{ + p = cb.equal(root.get(Person_.name), names.get(0)); + } + return em.createQuery(cq.select(root).where(p)).getResultList().stream().distinct().collect(Collectors.toList()); + } + public List sort(List list) { list = list.stream().sorted( Comparator.comparing(Person::getOrderNumber, Comparator.nullsLast(Integer::compareTo)).thenComparing( diff --git a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/factory/UnitFactory.java b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/factory/UnitFactory.java index 1e12bb3573619b82112c250716eef895f45844b7..049ef219871abec8ea56d4c5e43a0a0873f11522 100644 --- a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/factory/UnitFactory.java +++ b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/factory/UnitFactory.java @@ -1,22 +1,5 @@ package com.x.organization.assemble.express.factory; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.stream.Collectors; - -import javax.persistence.EntityManager; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; - -import org.apache.commons.lang3.StringUtils; - import com.x.base.core.entity.JpaObject; import com.x.base.core.project.cache.Cache.CacheCategory; import com.x.base.core.project.cache.Cache.CacheKey; @@ -28,6 +11,17 @@ import com.x.organization.assemble.express.Business; import com.x.organization.core.entity.PersistenceProperties; import com.x.organization.core.entity.Unit; import com.x.organization.core.entity.Unit_; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; + +import javax.persistence.EntityManager; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; +import java.util.*; +import java.util.regex.Matcher; +import java.util.stream.Collectors; public class UnitFactory extends AbstractFactory { @@ -121,6 +115,44 @@ public class UnitFactory extends AbstractFactory { return list; } + public List pick(List flags, Boolean useNameFind) throws Exception { + List list = new ArrayList<>(); + for (String str : flags) { + CacheKey cacheKey = new CacheKey(Unit.class.getName(), str); + Optional optional = CacheManager.get(cacheCategory, cacheKey); + if (optional.isPresent()) { + list.add((Unit) optional.get()); + } else { + Unit o = this.pickObject(str); + if (null != o) { + CacheManager.put(cacheCategory, cacheKey, o); + list.add(o); + } + } + } + if(list.isEmpty() && BooleanUtils.isTrue(useNameFind)){ + list = this.listWithName(flags); + } + return list; + } + + public List listWithName(List names) throws Exception { + if(ListTools.isEmpty(names)){ + return Collections.EMPTY_LIST; + } + EntityManager em = this.entityManagerContainer().get(Unit.class); + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(Unit.class); + Root root = cq.from(Unit.class); + Predicate p; + if(names.size() > 1){ + p = root.get(Unit_.name).in(names); + }else{ + p = cb.equal(root.get(Unit_.name), names.get(0)); + } + return em.createQuery(cq.select(root).where(p)).getResultList().stream().distinct().collect(Collectors.toList()); + } + public List sort(List list) throws Exception { if (Config.person().getPersonUnitOrderByAsc()) { list = list.stream().sorted(Comparator.comparing(Unit::getLevel, Comparator.nullsLast(Integer::compareTo)) diff --git a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/identity/ActionListWithPerson.java b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/identity/ActionListWithPerson.java index 5544014b47b31f7cb736fea68d697e353ab83da9..e63297f085738560dd187c0303fe5f91df68d806 100644 --- a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/identity/ActionListWithPerson.java +++ b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/identity/ActionListWithPerson.java @@ -34,7 +34,7 @@ class ActionListWithPerson extends BaseAction { Wi wi = this.convertToWrapIn(jsonElement, Wi.class); ActionResult result = new ActionResult<>(); Business business = new Business(emc); - CacheKey cacheKey = new CacheKey(this.getClass(), wi.getPersonList()); + CacheKey cacheKey = new CacheKey(this.getClass(), wi.getPersonList(), wi.getUseNameFind()); Optional optional = CacheManager.get(cacheCategory, cacheKey); if (optional.isPresent()) { result.setData((Wo) optional.get()); @@ -52,6 +52,9 @@ class ActionListWithPerson extends BaseAction { @FieldDescribe("个人") private List personList = new ArrayList<>(); + @FieldDescribe("是否需要根据名称查找,默认false") + private Boolean useNameFind = false; + public List getPersonList() { return personList; } @@ -60,6 +63,13 @@ class ActionListWithPerson extends BaseAction { this.personList = personList; } + public Boolean getUseNameFind() { + return useNameFind; + } + + public void setUseNameFind(Boolean useNameFind) { + this.useNameFind = useNameFind; + } } public static class Wo extends WoIdentityAbstract { @@ -67,7 +77,7 @@ class ActionListWithPerson extends BaseAction { } private Wo list(Business business, Wi wi) throws Exception { - List os = business.person().pick(wi.getPersonList()); + List os = business.person().pick(wi.getPersonList(), wi.getUseNameFind()); List personIds = ListTools.extractProperty(os, JpaObject.id_FIELDNAME, String.class, true, true); EntityManager em = business.entityManagerContainer().get(Identity.class); CriteriaBuilder cb = em.getCriteriaBuilder(); @@ -82,4 +92,4 @@ class ActionListWithPerson extends BaseAction { return wo; } -} \ No newline at end of file +} diff --git a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/identity/ActionListWithPersonObject.java b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/identity/ActionListWithPersonObject.java index e598c8eb1009dbe9e365f716a564a9f2d0773e10..d221404b0dcd66f3ca60dc0785ba3cb17c9b1c89 100644 --- a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/identity/ActionListWithPersonObject.java +++ b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/identity/ActionListWithPersonObject.java @@ -35,7 +35,7 @@ class ActionListWithPersonObject extends BaseAction { Wi wi = this.convertToWrapIn(jsonElement, Wi.class); ActionResult> result = new ActionResult<>(); Business business = new Business(emc); - CacheKey cacheKey = new CacheKey(this.getClass(), wi.getPersonList()); + CacheKey cacheKey = new CacheKey(this.getClass(), wi.getPersonList(), wi.getUseNameFind()); Optional optional = CacheManager.get(cacheCategory, cacheKey); if (optional.isPresent()) { result.setData((List) optional.get()); @@ -52,6 +52,9 @@ class ActionListWithPersonObject extends BaseAction { @FieldDescribe("个人") private List personList = new ArrayList<>(); + @FieldDescribe("是否需要根据名称查找,默认false") + private Boolean useNameFind = false; + public List getPersonList() { return personList; } @@ -59,6 +62,14 @@ class ActionListWithPersonObject extends BaseAction { public void setPersonList(List personList) { this.personList = personList; } + + public Boolean getUseNameFind() { + return useNameFind; + } + + public void setUseNameFind(Boolean useNameFind) { + this.useNameFind = useNameFind; + } } public static class Wo extends com.x.base.core.project.organization.Identity { @@ -67,7 +78,7 @@ class ActionListWithPersonObject extends BaseAction { private List list(Business business, Wi wi) throws Exception { List wos = new ArrayList<>(); List personMajorIds = new ArrayList<>(); - List os = business.person().pick(wi.getPersonList()); + List os = business.person().pick(wi.getPersonList(), wi.getUseNameFind()); List personIds = ListTools.extractProperty(os, JpaObject.id_FIELDNAME, String.class, true, true); List personMajors = business.identity().listMajorOfPerson(business, personIds); if (ListTools.isNotEmpty(personMajors)) { @@ -92,4 +103,4 @@ class ActionListWithPersonObject extends BaseAction { return wos; } -} \ No newline at end of file +} diff --git a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/ActionGetMobile.java b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/ActionGetMobile.java new file mode 100644 index 0000000000000000000000000000000000000000..355a58737e8ba73ba59e0318c41c1d3c2c238de3 --- /dev/null +++ b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/ActionGetMobile.java @@ -0,0 +1,43 @@ +package com.x.organization.assemble.express.jaxrs.person; + +import com.x.base.core.container.EntityManagerContainer; +import com.x.base.core.container.factory.EntityManagerContainerFactory; +import com.x.base.core.project.cache.Cache.CacheKey; +import com.x.base.core.project.cache.CacheManager; +import com.x.base.core.project.http.ActionResult; +import com.x.base.core.project.http.EffectivePerson; +import com.x.base.core.project.jaxrs.WrapString; +import com.x.organization.assemble.express.Business; +import com.x.organization.core.entity.Person; +import org.apache.commons.lang3.StringUtils; + +import java.util.Optional; + +class ActionGetMobile extends BaseAction { + + ActionResult execute(EffectivePerson effectivePerson, String flag) throws Exception { + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + ActionResult result = new ActionResult<>(); + Business business = new Business(emc); + CacheKey cacheKey = new CacheKey(this.getClass(), flag); + Optional optional = CacheManager.get(cacheCategory, cacheKey); + if (optional.isPresent()) { + result.setData((Wo) optional.get()); + } else { + Wo wo = new Wo(); + Person person = business.person().pick(flag); + if(person != null) { + wo.setValue(person.getMobile()); + } + CacheManager.put(cacheCategory, cacheKey, wo); + result.setData(wo); + } + return result; + } + } + + public static class Wo extends WrapString { + + } + +} diff --git a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/ActionList.java b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/ActionList.java index 5903ec7aae05464a4dc7c3aefe460620ee5ae7cb..3fd6128da1640f42e557ed1e1ee8d7950c278b55 100644 --- a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/ActionList.java +++ b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/ActionList.java @@ -24,7 +24,7 @@ class ActionList extends BaseAction { Wi wi = this.convertToWrapIn(jsonElement, Wi.class); ActionResult result = new ActionResult<>(); Business business = new Business(emc); - CacheKey cacheKey = new CacheKey(this.getClass(), wi.getPersonList()); + CacheKey cacheKey = new CacheKey(this.getClass(), wi.getPersonList(), wi.getUseNameFind()); Optional optional = CacheManager.get(cacheCategory, cacheKey); if (optional.isPresent()) { result.setData((Wo) optional.get()); @@ -42,6 +42,9 @@ class ActionList extends BaseAction { @FieldDescribe("个人") private List personList = new ArrayList<>(); + @FieldDescribe("是否需要根据名称查找,默认false") + private Boolean useNameFind = false; + public List getPersonList() { return personList; } @@ -50,6 +53,13 @@ class ActionList extends BaseAction { this.personList = personList; } + public Boolean getUseNameFind() { + return useNameFind; + } + + public void setUseNameFind(Boolean useNameFind) { + this.useNameFind = useNameFind; + } } public static class Wo extends WoPersonListAbstract { @@ -57,11 +67,11 @@ class ActionList extends BaseAction { } private Wo list(Business business, Wi wi) throws Exception { - List os = business.person().pick(wi.getPersonList()); + List os = business.person().pick(wi.getPersonList(), wi.getUseNameFind()); List list = ListTools.extractProperty(os, "distinguishedName", String.class, true, true); Wo wo = new Wo(); wo.getPersonList().addAll(list); return wo; } -} \ No newline at end of file +} diff --git a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/ActionListObject.java b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/ActionListObject.java index d6c2dd49af5408842a406b0ff15d2ff554d0eeea..392acaa102c0dab1ecc1ae4854a12a96f765d3a1 100644 --- a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/ActionListObject.java +++ b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/ActionListObject.java @@ -15,16 +15,16 @@ import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.EffectivePerson; import com.x.organization.assemble.express.Business; import com.x.organization.core.entity.Person; +import org.apache.commons.lang3.BooleanUtils; class ActionListObject extends BaseAction { - @SuppressWarnings("unchecked") ActionResult> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { Wi wi = this.convertToWrapIn(jsonElement, Wi.class); ActionResult> result = new ActionResult<>(); Business business = new Business(emc); - CacheKey cacheKey = new CacheKey(this.getClass(), wi.getPersonList()); + CacheKey cacheKey = new CacheKey(this.getClass(), wi.getPersonList(), wi.getUseNameFind()); Optional optional = CacheManager.get(cacheCategory, cacheKey); if (optional.isPresent()) { result.setData((List) optional.get()); @@ -42,6 +42,9 @@ class ActionListObject extends BaseAction { @FieldDescribe("个人") private List personList = new ArrayList<>(); + @FieldDescribe("是否需要根据名称查找,默认false") + private Boolean useNameFind = false; + public List getPersonList() { return personList; } @@ -50,6 +53,14 @@ class ActionListObject extends BaseAction { this.personList = personList; } + public Boolean getUseNameFind() { + return useNameFind; + } + + public void setUseNameFind(Boolean useNameFind) { + this.useNameFind = useNameFind; + } + } public static class Wo extends com.x.base.core.project.organization.Person { @@ -66,7 +77,15 @@ class ActionListObject extends BaseAction { wos.add(wo); } } + if(wos.isEmpty() && BooleanUtils.isTrue(wi.getUseNameFind())){ + List os = business.person().listWithName(wi.getPersonList()); + for(Person o : os){ + Wo wo = this.convert(business, o, Wo.class); + wo.setMatchKey(o.getName()); + wos.add(wo); + } + } return wos; } -} \ No newline at end of file +} diff --git a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/PersonAction.java b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/PersonAction.java index b8ae594fe8387083ec6aec5d4f759f4875ee8c38..ead7e66472c2ccf1fc8055c4fd24bb4b1389c936 100644 --- a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/PersonAction.java +++ b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/person/PersonAction.java @@ -71,6 +71,24 @@ public class PersonAction extends StandardJaxrsAction { asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); } + @JaxrsMethodDescribe(value = "获取个人手机号码.", action = ActionGetMobile.class) + @GET + @Path("mobile/{flag}") + @Produces(HttpMediaType.APPLICATION_JSON_UTF_8) + @Consumes(MediaType.APPLICATION_JSON) + public void getMobile(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, + @JaxrsParameterDescribe("人员标识") @PathParam("flag") String flag) { + ActionResult result = new ActionResult<>(); + EffectivePerson effectivePerson = this.effectivePerson(request); + try { + result = new ActionGetMobile().execute(effectivePerson, flag); + } catch (Exception e) { + logger.error(e, effectivePerson, request, null); + result.error(e); + } + asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); + } + @JaxrsMethodDescribe(value = "判断个人是否拥有指定角色中的一个或者多个", action = ActionHasRole.class) @POST @Path("has/role") diff --git a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/unit/ActionList.java b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/unit/ActionList.java index d2e95cee95ee904963cf36b9e5b238f31a3f4ba2..aa213eddbbdf3944c56efd5cbcf1375e33c3c06d 100644 --- a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/unit/ActionList.java +++ b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/unit/ActionList.java @@ -24,7 +24,7 @@ class ActionList extends BaseAction { Wi wi = this.convertToWrapIn(jsonElement, Wi.class); ActionResult result = new ActionResult<>(); Business business = new Business(emc); - CacheKey cacheKey = new CacheKey(this.getClass(), wi.getUnitList()); + CacheKey cacheKey = new CacheKey(this.getClass(), wi.getUnitList(), wi.getUseNameFind()); Optional optional = CacheManager.get(cacheCategory, cacheKey); if (optional.isPresent()) { result.setData((Wo) optional.get()); @@ -42,6 +42,9 @@ class ActionList extends BaseAction { @FieldDescribe("组织") private List unitList = new ArrayList<>(); + @FieldDescribe("是否需要根据名称查找,默认false") + private Boolean useNameFind = false; + public List getUnitList() { return unitList; } @@ -50,6 +53,13 @@ class ActionList extends BaseAction { this.unitList = unitList; } + public Boolean getUseNameFind() { + return useNameFind; + } + + public void setUseNameFind(Boolean useNameFind) { + this.useNameFind = useNameFind; + } } public static class Wo extends WoUnitListAbstract { @@ -57,11 +67,11 @@ class ActionList extends BaseAction { } private Wo list(Business business, Wi wi) throws Exception { - List os = business.unit().pick(wi.getUnitList()); + List os = business.unit().pick(wi.getUnitList(), wi.getUseNameFind()); List list = ListTools.extractProperty(os, "distinguishedName", String.class, true, true); Wo wo = new Wo(); wo.getUnitList().addAll(list); return wo; } -} \ No newline at end of file +} diff --git a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/unit/ActionListObject.java b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/unit/ActionListObject.java index 64cffbbce6c6728e43048b96fa3198b8b1bbfafc..052583d307091fa6880044bd547a35446c5f1967 100644 --- a/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/unit/ActionListObject.java +++ b/o2server/x_organization_assemble_express/src/main/java/com/x/organization/assemble/express/jaxrs/unit/ActionListObject.java @@ -10,6 +10,7 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; +import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import com.google.gson.JsonElement; @@ -40,7 +41,7 @@ class ActionListObject extends BaseAction { logger.debug(effectivePerson.getDistinguishedName()); Wi wi = this.convertToWrapIn(jsonElement, Wi.class); ActionResult> result = new ActionResult<>(); - CacheKey cacheKey = new CacheKey(this.getClass(), wi.getUnitList()); + CacheKey cacheKey = new CacheKey(this.getClass(), wi.getUnitList(), wi.getUseNameFind()); Optional optional = CacheManager.get(cacheCategory, cacheKey); if (optional.isPresent()) { result.setData((List) optional.get()); @@ -58,6 +59,9 @@ class ActionListObject extends BaseAction { @FieldDescribe("组织") private List unitList = new ArrayList<>(); + @FieldDescribe("是否需要根据名称查找,默认false") + private Boolean useNameFind = false; + public List getUnitList() { return unitList; } @@ -66,6 +70,14 @@ class ActionListObject extends BaseAction { this.unitList = unitList; } + public Boolean getUseNameFind() { + return useNameFind; + } + + public void setUseNameFind(Boolean useNameFind) { + this.useNameFind = useNameFind; + } + } public static class Wo extends Unit { @@ -115,8 +127,14 @@ class ActionListObject extends BaseAction { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { Business business = new Business(emc); for (String str : wi.getUnitList()) { - Unit o = business.unit().pick(str); - if (o != null) { + List os = new ArrayList<>(); + Unit unit = business.unit().pick(str); + if(unit != null){ + os.add(unit); + }else if(BooleanUtils.isTrue(wi.getUseNameFind())){ + os.addAll(business.unit().listWithName(List.of(str))); + } + for(Unit o : os){ Wo wo = Wo.copier.copy(o); wo.setMatchKey(str); if (StringUtils.isNotEmpty(wo.getSuperior())) {