Răsfoiți Sursa

Merge branch 'feature/ctl' into 'develop'

Feature/ctl修改draft的title获取

See merge request o2oa/o2oa!273
胡起 5 ani în urmă
părinte
comite
bd89af824f

+ 13 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/container/EntityManagerContainer.java

@@ -550,6 +550,19 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 		return new ArrayList<T>(query.getResultList());
 	}
 
+	public <T extends JpaObject, W extends Object> List<T> listEqualOrIn(Class<T> cls, String attribute, Object value,
+			String otherAttribute, Collection<W> otherValues) throws Exception {
+		EntityManager em = this.get(cls);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<T> cq = cb.createQuery(cls);
+		Root<T> root = cq.from(cls);
+		Predicate p = cb.equal(root.get(attribute), value);
+		p = cb.or(p, cb.isMember(root.get(otherAttribute), cb.literal(otherValues)));
+		List<T> os = em.createQuery(cq.select(root).where(p)).getResultList();
+		List<T> list = new ArrayList<>(os);
+		return list;
+	}
+
 	public <T extends JpaObject> List<T> listNotEqual(Class<T> cls, String attribute, Object value) throws Exception {
 		EntityManager em = this.get(cls);
 		CriteriaBuilder cb = em.getCriteriaBuilder();

+ 10 - 8
o2server/x_component_assemble_control/src/main/java/com/x/component/assemble/control/schedule/InitComponents.java

@@ -7,7 +7,9 @@ import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.entity.annotation.CheckPersistType;
 import com.x.base.core.entity.annotation.CheckRemoveType;
+import com.x.base.core.project.config.Components;
 import com.x.base.core.project.config.Config;
+import com.x.base.core.project.gson.XGsonBuilder;
 import com.x.base.core.project.logger.Logger;
 import com.x.base.core.project.logger.LoggerFactory;
 import com.x.base.core.project.schedule.AbstractJob;
@@ -33,12 +35,15 @@ public class InitComponents extends AbstractJob {
 
 	private void init() throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			List<String> names = ListTools.extractProperty(Config.components().getSystems(), "name", String.class, true,
-					true);
-			List<Component> os = emc.listEqual(Component.class, Component.type_FIELDNAME, Component.TYPE_SYSTEM);
+
+			List<Component> os = emc.listEqualOrIn(Component.class, Component.type_FIELDNAME, Component.TYPE_SYSTEM,
+					Component.name_FIELDNAME, Components.SYSTEM_NAME_NAMES);
+
+			List<String> existNames = ListTools.extractProperty(os, Component.name_FIELDNAME, String.class, true, true);
+
 			List<Component> removes = new ArrayList<>();
 			for (Component o : os) {
-				if (!names.contains(o.getName())) {
+				if (!Components.SYSTEM_NAME_NAMES.contains(o.getName())) {
 					removes.add(o);
 				}
 			}
@@ -49,12 +54,9 @@ public class InitComponents extends AbstractJob {
 				}
 				emc.commit();
 			}
-			for (Component o : os) {
-				names.remove(o.getName());
-			}
 			List<Component> adds = new ArrayList<>();
 			for (com.x.base.core.project.config.Components.Component o : Config.components().getSystems()) {
-				if (!names.contains(o.getName())) {
+				if (!existNames.contains(o.getName())) {
 					Component component = new Component();
 					component.setName(o.getName());
 					component.setPath(o.getPath());

+ 3 - 3
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionListNext.java

@@ -23,9 +23,9 @@ class ActionListNext extends BaseAction {
 	public static class Wo extends Draft {
 
 		private static final long serialVersionUID = 2279846765261247910L;
-
-		static WrapCopier<Draft, Wo> copier = WrapCopierFactory.wo(Draft.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
+		
+		static WrapCopier<Draft, Wo> copier = WrapCopierFactory.wo(Draft.class, Wo.class,
+				JpaObject.singularAttributeField(Draft.class, true, true), null);
 
 		@FieldDescribe("排序号")
 		private Long rank;

+ 2 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionListPrev.java

@@ -24,8 +24,8 @@ class ActionListPrev extends BaseAction {
 
 		private static final long serialVersionUID = 2279846765261247910L;
 
-		static WrapCopier<Draft, Wo> copier = WrapCopierFactory.wo(Draft.class, Wo.class, null,
-				JpaObject.FieldsInvisible);
+		static WrapCopier<Draft, Wo> copier = WrapCopierFactory.wo(Draft.class, Wo.class,
+				JpaObject.singularAttributeField(Draft.class, true, true), null);
 
 		@FieldDescribe("排序号")
 		private Long rank;

+ 18 - 4
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/ActionSave.java

@@ -1,6 +1,7 @@
 package com.x.processplatform.assemble.surface.jaxrs.draft;
 
 import java.util.List;
+import java.util.Objects;
 
 import com.google.gson.JsonElement;
 import com.x.base.core.container.EntityManagerContainer;
@@ -10,6 +11,7 @@ import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.gson.GsonPropertyObject;
+import com.x.base.core.project.gson.XGsonBuilder;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WoId;
@@ -54,14 +56,14 @@ class ActionSave extends BaseAction {
 			if (StringUtils.isEmpty(wi.getWork().getId())) {
 				draft = new Draft();
 				this.update(draft, wi, application, process, person, identity, unit);
-				emc.check(draft, CheckPersistType.all);
+				emc.persist(draft, CheckPersistType.all);
 			} else {
 				draft = emc.find(wi.getWork().getId(), Draft.class);
 				if (null == draft) {
 					throw new ExceptionEntityNotExist(wi.getWork().getId(), Draft.class);
 				}
 				this.update(draft, wi, application, process, person, identity, unit);
-				emc.persist(draft, CheckPersistType.all);
+				emc.check(draft, CheckPersistType.all);
 			}
 			emc.commit();
 			Wo wo = new Wo();
@@ -82,14 +84,26 @@ class ActionSave extends BaseAction {
 		draft.setPerson(person);
 		draft.setIdentity(identity);
 		draft.setUnit(unit);
-		draft.setTitle(wi.getWork().getTitle());
+		String title = wi.getWork().getTitle();
+		if (null != wi.getData()) {
+			Object value = wi.getData().getOrDefault("subject", null);
+			if (null != value) {
+				title = Objects.toString(value);
+			} else {
+				value = wi.getData().getOrDefault("title", null);
+				if (null != value) {
+					title = Objects.toString(value);
+				}
+			}
+		}
+		draft.setTitle(title);
 		draft.getProperties().setData(wi.getData());
 	}
 
 	public static class Wi extends GsonPropertyObject {
 
 		@FieldDescribe("数据")
-		private Data data;
+		private Data data = new Data();
 
 		@FieldDescribe("工作")
 		private Work work;

+ 1 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/draft/DraftAction.java

@@ -92,7 +92,7 @@ public class DraftAction extends StandardJaxrsAction {
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
 	@JaxrsMethodDescribe(value = "保存草稿.", action = ActionSave.class)
-	public void edit(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+	public void save(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
 			JsonElement jsonElement) {
 		ActionResult<ActionSave.Wo> result = new ActionResult<>();
 		EffectivePerson effectivePerson = this.effectivePerson(request);