Просмотр исходного кода

Merge branch 'fix/#O2OA-178' into 'wrdp'

修复更新脚本无法及时更新etag的bug

See merge request o2oa/o2oa!2478
o2null 5 лет назад
Родитель
Сommit
05c8a71336

+ 0 - 5
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/BaseAction.java

@@ -5,11 +5,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.TreeMap;
-import java.util.concurrent.CompletableFuture;
 
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.project.cache.Cache.CacheCategory;
 import com.x.base.core.project.jaxrs.StandardJaxrsAction;
 import com.x.base.core.project.jaxrs.WoMaxAgeFastETag;
@@ -20,7 +16,6 @@ import com.x.processplatform.core.entity.content.WorkCompletedProperties;
 import com.x.processplatform.core.entity.content.WorkCompletedProperties.RelatedForm;
 import com.x.processplatform.core.entity.content.WorkCompletedProperties.RelatedScript;
 import com.x.processplatform.core.entity.element.Form;
-import com.x.processplatform.core.entity.element.FormProperties;
 import com.x.processplatform.core.entity.element.Script;
 
 abstract class BaseAction extends StandardJaxrsAction {

+ 22 - 16
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/V2LookupWorkOrWorkCompleted.java

@@ -48,19 +48,26 @@ class V2LookupWorkOrWorkCompleted extends BaseAction {
 			if (optional.isPresent()) {
 				this.wo = (Wo) optional.get();
 			} else {
-				List<String> list = new ArrayList<>();
-				CompletableFuture<List<String>> relatedFormFuture = this.relatedFormFuture(this.form.getProperties());
-				CompletableFuture<List<String>> relatedScriptFuture = this
-						.relatedScriptFuture(this.form.getProperties());
-				list.add(this.form.getId() + this.form.getUpdateTime().getTime());
-				list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS));
-				list.addAll(relatedScriptFuture.get(10, TimeUnit.SECONDS));
-				list = list.stream().sorted().collect(Collectors.toList());
-				this.wo.setId(this.form.getId());
-				CRC32 crc = new CRC32();
-				crc.update(StringUtils.join(list, "#").getBytes());
-				this.wo.setCacheTag(crc.getValue() + "");
-				CacheManager.put(cacheCategory, cacheKey, wo);
+				// 必须重新取出,因为getWorkWorkCompletedForm的form是从缓存中取出,关联值是老的,要重新计算etag需要重新获取更新后的值.
+				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+					this.form = emc.find(form.getId(), Form.class);
+				}
+				if (null != this.form) {
+					List<String> list = new ArrayList<>();
+					CompletableFuture<List<String>> relatedFormFuture = this
+							.relatedFormFuture(this.form.getProperties());
+					CompletableFuture<List<String>> relatedScriptFuture = this
+							.relatedScriptFuture(this.form.getProperties());
+					list.add(this.form.getId() + this.form.getUpdateTime().getTime());
+					list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS));
+					list.addAll(relatedScriptFuture.get(10, TimeUnit.SECONDS));
+					list = list.stream().sorted().collect(Collectors.toList());
+					this.wo.setId(this.form.getId());
+					CRC32 crc = new CRC32();
+					crc.update(StringUtils.join(list, "#").getBytes());
+					this.wo.setCacheTag(crc.getValue() + "");
+					CacheManager.put(cacheCategory, cacheKey, wo);
+				}
 			}
 		}
 		result.setData(wo);
@@ -99,10 +106,9 @@ class V2LookupWorkOrWorkCompleted extends BaseAction {
 			List<String> list = new ArrayList<>();
 			if (ListTools.isNotEmpty(properties.getRelatedFormList())) {
 				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-					Business business = new Business(emc);
 					Form f;
 					for (String id : properties.getRelatedFormList()) {
-						f = business.form().pick(id);
+						f = emc.find(id, Form.class);
 						if (null != f) {
 							list.add(f.getId() + f.getUpdateTime().getTime());
 						}
@@ -121,7 +127,7 @@ class V2LookupWorkOrWorkCompleted extends BaseAction {
 			if ((null != properties.getRelatedScriptMap()) && (properties.getRelatedScriptMap().size() > 0)) {
 				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 					Business business = new Business(emc);
-					list = convertScriptToCacheTag(business, properties.getMobileRelatedScriptMap());
+					list = convertScriptToCacheTag(business, properties.getRelatedScriptMap());
 				} catch (Exception e) {
 					logger.error(e);
 				}

+ 21 - 15
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/V2LookupWorkOrWorkCompletedMobile.java

@@ -48,19 +48,26 @@ class V2LookupWorkOrWorkCompletedMobile extends BaseAction {
 			if (optional.isPresent()) {
 				this.wo = (Wo) optional.get();
 			} else {
-				List<String> list = new ArrayList<>();
-				CompletableFuture<List<String>> relatedFormFuture = this.relatedFormFuture(this.form.getProperties());
-				CompletableFuture<List<String>> relatedScriptFuture = this
-						.relatedScriptFuture(this.form.getProperties());
-				list.add(this.form.getId() + this.form.getUpdateTime().getTime());
-				list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS));
-				list.addAll(relatedScriptFuture.get(10, TimeUnit.SECONDS));
-				list = list.stream().sorted().collect(Collectors.toList());
-				this.wo.setId(this.form.getId());
-				CRC32 crc = new CRC32();
-				crc.update(StringUtils.join(list, "#").getBytes());
-				this.wo.setCacheTag(crc.getValue() + "");
-				CacheManager.put(cacheCategory, cacheKey, wo);
+				// 必须重新取出,因为getWorkWorkCompletedForm的form是从缓存中取出,关联值是老的,要重新计算etag需要重新获取更新后的值.
+				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+					this.form = emc.find(form.getId(), Form.class);
+				}
+				if (null != this.form) {
+					List<String> list = new ArrayList<>();
+					CompletableFuture<List<String>> relatedFormFuture = this
+							.relatedFormFuture(this.form.getProperties());
+					CompletableFuture<List<String>> relatedScriptFuture = this
+							.relatedScriptFuture(this.form.getProperties());
+					list.add(this.form.getId() + this.form.getUpdateTime().getTime());
+					list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS));
+					list.addAll(relatedScriptFuture.get(10, TimeUnit.SECONDS));
+					list = list.stream().sorted().collect(Collectors.toList());
+					this.wo.setId(this.form.getId());
+					CRC32 crc = new CRC32();
+					crc.update(StringUtils.join(list, "#").getBytes());
+					this.wo.setCacheTag(crc.getValue() + "");
+					CacheManager.put(cacheCategory, cacheKey, wo);
+				}
 			}
 		}
 		result.setData(wo);
@@ -99,10 +106,9 @@ class V2LookupWorkOrWorkCompletedMobile extends BaseAction {
 			List<String> list = new ArrayList<>();
 			if (ListTools.isNotEmpty(properties.getMobileRelatedFormList())) {
 				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-					Business business = new Business(emc);
 					Form f;
 					for (String id : properties.getMobileRelatedFormList()) {
-						f = business.form().pick(id);
+						f = emc.find(id, Form.class);
 						if (null != f) {
 							list.add(f.getId() + f.getUpdateTime().getTime());
 						}