Browse Source

Merge branch 'wrdp' into 'develop'

Wrdp

See merge request o2oa/o2oa!2739
o2null 5 years ago
parent
commit
83cddb509b

+ 5 - 2
o2server/x_base_core_project/src/main/java/com/x/base/core/project/script/ScriptFactory.java

@@ -3,6 +3,7 @@ package com.x.base.core.project.script;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collection;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Objects;
 
 
 import javax.script.Compilable;
 import javax.script.Compilable;
@@ -10,7 +11,6 @@ import javax.script.CompiledScript;
 import javax.script.ScriptEngine;
 import javax.script.ScriptEngine;
 import javax.script.ScriptEngineManager;
 import javax.script.ScriptEngineManager;
 
 
-import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.BooleanUtils;
 
 
 import com.google.gson.JsonArray;
 import com.google.gson.JsonArray;
@@ -231,6 +231,9 @@ public class ScriptFactory {
 						}
 						}
 					}
 					}
 				}
 				}
+				// Map类型也属于Iterable 所以必须在Iterable之前进行判断
+			} else if (o instanceof Map) {
+				list.add(PropertyTools.getOrElse(o, JpaObject.DISTINGUISHEDNAME, String.class, ""));
 			} else if (o instanceof Iterable) {
 			} else if (o instanceof Iterable) {
 				for (Object obj : (Iterable<?>) o) {
 				for (Object obj : (Iterable<?>) o) {
 					if (null != obj) {
 					if (null != obj) {
@@ -264,7 +267,7 @@ public class ScriptFactory {
 				} else {
 				} else {
 					list.add(PropertyTools.getOrElse(o, JpaObject.DISTINGUISHEDNAME, String.class, ""));
 					list.add(PropertyTools.getOrElse(o, JpaObject.DISTINGUISHEDNAME, String.class, ""));
 				}
 				}
-			// ScriptObject or JO
+				// ScriptObject or JO
 			} else if (o instanceof ScriptObject) {
 			} else if (o instanceof ScriptObject) {
 				ScriptObject so = (ScriptObject) o;
 				ScriptObject so = (ScriptObject) o;
 				if (so.isArray()) {
 				if (so.isArray()) {

+ 18 - 9
o2server/x_organization_assemble_control/src/main/java/com/x/organization/assemble/control/jaxrs/identity/ActionCreate.java

@@ -1,6 +1,9 @@
 package com.x.organization.assemble.control.jaxrs.identity;
 package com.x.organization.assemble.control.jaxrs.identity;
 
 
+import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -88,25 +91,31 @@ class ActionCreate extends BaseAction {
 				emc.beginTransaction(Person.class);
 				emc.beginTransaction(Person.class);
 
 
 				emc.persist(identity, CheckPersistType.all);
 				emc.persist(identity, CheckPersistType.all);
-				List<Unit> topUnits = business.unit().pick(
-						ListTools.trim(person.getTopUnitList(), true, true, this.topUnit(business, unit).getId()));
-				person.setTopUnitList(ListTools.extractField(topUnits, Unit.id_FIELDNAME, String.class, true, true));
+				Set<String> topUnits = new HashSet<>();
+				topUnits.add(this.topUnit(business, unit).getId());
+				for (Identity o : others){
+					Unit u = business.unit().pick(o.getUnit());
+					if(u != null){
+						topUnits.add(this.topUnit(business, u).getId());
+					}
+				}
+				person.setTopUnitList(new ArrayList<>(topUnits));
 				emc.persist(person, CheckPersistType.all);
 				emc.persist(person, CheckPersistType.all);
 
 
 				emc.commit();
 				emc.commit();
 				wo.setId(identity.getId());
 				wo.setId(identity.getId());
-				
+
 				/**创建 组织变更org消息通信 */
 				/**创建 组织变更org消息通信 */
 				OrgMessageFactory  orgMessageFactory = new OrgMessageFactory();
 				OrgMessageFactory  orgMessageFactory = new OrgMessageFactory();
 				orgMessageFactory.createMessageCommunicate("add", "identity", identity, effectivePerson);
 				orgMessageFactory.createMessageCommunicate("add", "identity", identity, effectivePerson);
-				
+
 			}
 			}
 			CacheManager.notify(Identity.class);
 			CacheManager.notify(Identity.class);
 			CacheManager.notify(Person.class);
 			CacheManager.notify(Person.class);
-			
-		
-			
-			
+
+
+
+
 			result.setData(wo);
 			result.setData(wo);
 			return result;
 			return result;
 		}
 		}

+ 2 - 2
o2server/x_organization_assemble_control/src/main/java/com/x/organization/assemble/control/jaxrs/person/ActionCreate.java

@@ -52,8 +52,8 @@ class ActionCreate extends BaseAction {
 				throw new ExceptionAccessDenied(effectivePerson);
 				throw new ExceptionAccessDenied(effectivePerson);
 			}
 			}
 
 
-			if ((!Config.token().isInitialManager(effectivePerson.getDistinguishedName()))
-					&& (!effectivePerson.isCipher())) {
+			if (!effectivePerson.isManager() && business.hasAnyRole(effectivePerson, OrganizationDefinition.OrganizationManager,
+					OrganizationDefinition.Manager)) {
 				Person current = business.person().pick(effectivePerson.getDistinguishedName());
 				Person current = business.person().pick(effectivePerson.getDistinguishedName());
 				List<Unit> topUnits = business.unit().pick(current.getTopUnitList());
 				List<Unit> topUnits = business.unit().pick(current.getTopUnitList());
 				person.setTopUnitList(ListTools.extractField(topUnits, Unit.id_FIELDNAME, String.class, true, true));
 				person.setTopUnitList(ListTools.extractField(topUnits, Unit.id_FIELDNAME, String.class, true, true));

+ 18 - 3
o2server/x_organization_assemble_control/src/main/java/com/x/organization/assemble/control/jaxrs/person/ActionListNext.java

@@ -3,6 +3,8 @@ package com.x.organization.assemble.control.jaxrs.person;
 import java.util.List;
 import java.util.List;
 import java.util.Optional;
 import java.util.Optional;
 
 
+import com.x.base.core.project.organization.OrganizationDefinition;
+import com.x.base.core.project.tools.ListTools;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.EntityManagerContainer;
@@ -41,9 +43,19 @@ class ActionListNext extends BaseAction {
 					}
 					}
 					id = o.getId();
 					id = o.getId();
 				}
 				}
-	
-				result = this.standardListNext(Wo.copier, id, count, JpaObject.sequence_FIELDNAME, DESC,
-						business.personPredicateWithTopUnit(effectivePerson));
+
+				if (effectivePerson.isManager() || business.hasAnyRole(effectivePerson, OrganizationDefinition.Manager,
+						OrganizationDefinition.OrganizationManager)) {
+					result = this.standardListNext(Wo.copier, id, count, JpaObject.sequence_FIELDNAME, DESC,
+							business.personPredicateWithTopUnit(effectivePerson));
+				}else{
+					result = this.standardListNext(Wo.copier2, id, count, JpaObject.sequence_FIELDNAME, DESC,
+							business.personPredicateWithTopUnit(effectivePerson));
+					List<String> list = ListTools.extractField(result.getData(), Person.id_FIELDNAME, String.class, true, true);
+					List<Wo> wos = Wo.copier.copy(business.person().pick(list));
+					result.setData(wos);
+					result.setCount((long)wos.size());
+				}
 
 
 				Co co = new Co(result.getData(), result.getCount());
 				Co co = new Co(result.getData(), result.getCount());
 				CacheManager.put(business.cache(), cacheKey, co);
 				CacheManager.put(business.cache(), cacheKey, co);
@@ -88,6 +100,9 @@ class ActionListNext extends BaseAction {
 		static WrapCopier<Person, Wo> copier = WrapCopierFactory.wo(Person.class, Wo.class,
 		static WrapCopier<Person, Wo> copier = WrapCopierFactory.wo(Person.class, Wo.class,
 				JpaObject.singularAttributeField(Person.class, true, true), null);
 				JpaObject.singularAttributeField(Person.class, true, true), null);
 
 
+		static WrapCopier<Person, Wo> copier2 = WrapCopierFactory.wo(Person.class, Wo.class,
+				ListTools.toList(Person.id_FIELDNAME), null);
+
 		private Long rank;
 		private Long rank;
 
 
 		public Long getRank() {
 		public Long getRank() {

+ 18 - 2
o2server/x_organization_assemble_control/src/main/java/com/x/organization/assemble/control/jaxrs/person/ActionListPrev.java

@@ -3,6 +3,8 @@ package com.x.organization.assemble.control.jaxrs.person;
 import java.util.List;
 import java.util.List;
 import java.util.Optional;
 import java.util.Optional;
 
 
+import com.x.base.core.project.organization.OrganizationDefinition;
+import com.x.base.core.project.tools.ListTools;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.EntityManagerContainer;
@@ -41,8 +43,18 @@ class ActionListPrev extends BaseAction {
 					}
 					}
 					id = o.getId();
 					id = o.getId();
 				}
 				}
-				result = this.standardListPrev(Wo.copier, id, count, JpaObject.sequence_FIELDNAME, DESC,
-						business.personPredicateWithTopUnit(effectivePerson));
+				if (effectivePerson.isManager() || business.hasAnyRole(effectivePerson, OrganizationDefinition.Manager,
+						OrganizationDefinition.OrganizationManager)) {
+					result = this.standardListPrev(Wo.copier, id, count, JpaObject.sequence_FIELDNAME, DESC,
+							business.personPredicateWithTopUnit(effectivePerson));
+				}else{
+					result = this.standardListPrev(Wo.copier2, id, count, JpaObject.sequence_FIELDNAME, DESC,
+							business.personPredicateWithTopUnit(effectivePerson));
+					List<String> list = ListTools.extractField(result.getData(), Person.id_FIELDNAME, String.class, true, true);
+					List<Wo> wos = Wo.copier.copy(business.person().pick(list));
+					result.setData(wos);
+					result.setCount((long)wos.size());
+				}
 
 
 				Co co = new Co(result.getData(), result.getCount());
 				Co co = new Co(result.getData(), result.getCount());
 				CacheManager.put(business.cache(), cacheKey, co);
 				CacheManager.put(business.cache(), cacheKey, co);
@@ -89,6 +101,10 @@ class ActionListPrev extends BaseAction {
 		static WrapCopier<Person, Wo> copier = WrapCopierFactory.wo(Person.class, Wo.class,
 		static WrapCopier<Person, Wo> copier = WrapCopierFactory.wo(Person.class, Wo.class,
 				JpaObject.singularAttributeField(Person.class, true, true), null);
 				JpaObject.singularAttributeField(Person.class, true, true), null);
 
 
+		static WrapCopier<Person, Wo> copier2 = WrapCopierFactory.wo(Person.class, Wo.class,
+				ListTools.toList(Person.id_FIELDNAME), null);
+
+
 		private Long rank;
 		private Long rank;
 
 
 		public Long getRank() {
 		public Long getRank() {

+ 2 - 2
o2server/x_organization_core_entity/src/main/java/com/x/organization/core/entity/Person.java

@@ -300,7 +300,7 @@ public class Person extends SliceJpaObject {
 	@FieldDescribe("必填,手机号.")
 	@FieldDescribe("必填,手机号.")
 	@Column(length = JpaObject.length_32B, name = ColumnNamePrefix + mobile_FIELDNAME)
 	@Column(length = JpaObject.length_32B, name = ColumnNamePrefix + mobile_FIELDNAME)
 	/** 其他地区手机号不一致,所以这里使用外部校验,不使用mobileString */
 	/** 其他地区手机号不一致,所以这里使用外部校验,不使用mobileString */
-	@Index(name = TABLE + IndexNameMiddle + mobile_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + mobile_FIELDNAME, unique = true)
 	@CheckPersist(allowEmpty = false, citationNotExists = @CitationNotExist(fields = mobile_FIELDNAME, type = Person.class))
 	@CheckPersist(allowEmpty = false, citationNotExists = @CitationNotExist(fields = mobile_FIELDNAME, type = Person.class))
 	private String mobile;
 	private String mobile;
 
 
@@ -834,4 +834,4 @@ public class Person extends SliceJpaObject {
 	public void setIpAddress(String ipAddress) {
 	public void setIpAddress(String ipAddress) {
 		this.ipAddress = ipAddress;
 		this.ipAddress = ipAddress;
 	}
 	}
-}
+}

+ 34 - 51
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/manual/TranslateTaskIdentityTools.java

@@ -31,7 +31,6 @@ import com.x.processplatform.service.processing.processor.AeiObjects;
  * @author Rui
  * @author Rui
  *
  *
  */
  */
-@SuppressWarnings("restriction")
 public class TranslateTaskIdentityTools {
 public class TranslateTaskIdentityTools {
 
 
 	private static Logger logger = LoggerFactory.getLogger(TranslateTaskIdentityTools.class);
 	private static Logger logger = LoggerFactory.getLogger(TranslateTaskIdentityTools.class);
@@ -167,35 +166,41 @@ public class TranslateTaskIdentityTools {
 			for (String str : ListTools.trim(manual.getTaskDataPathList(), true, true)) {
 			for (String str : ListTools.trim(manual.getTaskDataPathList(), true, true)) {
 				Object o = data.find(str);
 				Object o = data.find(str);
 				if (null != o) {
 				if (null != o) {
-					if (o instanceof CharSequence) {
-						if (OrganizationDefinition.isUnitDistinguishedName(str)) {
-							units.add(str);
-						} else if (OrganizationDefinition.isGroupDistinguishedName(str)) {
-							groups.add(str);
-						} else {
-							taskIdentities.addIdentity(o.toString());
-						}
-					} else if (o instanceof Iterable) {
-						for (Object v : (Iterable<?>) o) {
-							if (null != v) {
-								if ((v instanceof CharSequence)) {
-									String vs = v.toString();
-									if (OrganizationDefinition.isUnitDistinguishedName(vs)) {
-										units.add(vs);
-									} else if (OrganizationDefinition.isGroupDistinguishedName(vs)) {
-										groups.add(vs);
-									} else {
-										taskIdentities.addIdentity(vs);
-									}
-								} else {
-									addObjectToTaskIdentities(taskIdentities, units, groups, v);
-								}
-							}
-						}
-					} else {
-						addObjectToTaskIdentities(taskIdentities, units, groups, o);
-					}
+					addObjectToTaskIdentities(taskIdentities, units, groups, o);
 				}
 				}
+//				if (null != o) {
+//					if (o instanceof CharSequence) {
+//						if (OrganizationDefinition.isUnitDistinguishedName(str)) {
+//							units.add(str);
+//						} else if (OrganizationDefinition.isGroupDistinguishedName(str)) {
+//							groups.add(str);
+//						} else {
+//							taskIdentities.addIdentity(o.toString());
+//						}
+//					} else if (o instanceof Iterable) {
+//						for (Object v : (Iterable<?>) o) {
+//							System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!v class:" + v.getClass());
+//							System.out.println(XGsonBuilder.toJson(v));
+//							if (null != v) {
+//								if (v instanceof CharSequence) {
+//									String vs = v.toString();
+//									if (OrganizationDefinition.isUnitDistinguishedName(vs)) {
+//										units.add(vs);
+//									} else if (OrganizationDefinition.isGroupDistinguishedName(vs)) {
+//										groups.add(vs);
+//									} else {
+//										taskIdentities.addIdentity(vs);
+//									}
+//									// } else if (v instanceof Entry) {
+//								} else {
+//									addObjectToTaskIdentities(taskIdentities, units, groups, v);
+//								}
+//							}
+//						}
+//					} else {
+//						addObjectToTaskIdentities(taskIdentities, units, groups, o);
+//					}
+//				}
 			}
 			}
 		}
 		}
 
 
@@ -221,26 +226,4 @@ public class TranslateTaskIdentityTools {
 			}
 			}
 		}
 		}
 	}
 	}
-
-//	private static void addJsonObjectToTaskIdentities(TaskIdentities taskIdentities, List<String> units,
-//			List<String> group, JsonObject jsonObject) throws Exception {
-//		if (jsonObject.has(JpaObject.DISTINGUISHEDNAME)) {
-//			String d = jsonObject.get(JpaObject.DISTINGUISHEDNAME).getAsString();
-//			if (OrganizationDefinition.isIdentityDistinguishedName(d)) {
-//				boolean ignore = false;
-//				if (jsonObject.has(TaskIdentity.IGNOREEMPOWER)) {
-//					ignore = BooleanUtils.isTrue(
-//							BooleanUtils.toBooleanObject(jsonObject.get(TaskIdentity.IGNOREEMPOWER).getAsString()));
-//				}
-//				TaskIdentity taskIdentity = new TaskIdentity();
-//				taskIdentity.setIdentity(d);
-//				taskIdentity.setIgnoreEmpower(ignore);
-//				taskIdentities.add(taskIdentity);
-//			} else if (OrganizationDefinition.isUnitDistinguishedName(d)) {
-//				units.add(d);
-//			} else if (OrganizationDefinition.isGroupDistinguishedName(d)) {
-//				units.add(d);
-//			}
-//		}
-//	}
 }
 }