diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/BaseAction.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/BaseAction.java index cece7c63626d179cca93ff9e8ef931301eda4277..ece009708e32392a33845cff540fddfd5b0660e5 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/BaseAction.java +++ b/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 { diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/V2LookupWorkOrWorkCompleted.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/V2LookupWorkOrWorkCompleted.java index 88915f3ca6fb960205605c667879e9171543988d..165254a006515e4531646901406222d8df37801a 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/V2LookupWorkOrWorkCompleted.java +++ b/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 list = new ArrayList<>(); - CompletableFuture> relatedFormFuture = this.relatedFormFuture(this.form.getProperties()); - CompletableFuture> 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 list = new ArrayList<>(); + CompletableFuture> relatedFormFuture = this + .relatedFormFuture(this.form.getProperties()); + CompletableFuture> 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 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); } diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/V2LookupWorkOrWorkCompletedMobile.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/V2LookupWorkOrWorkCompletedMobile.java index cc680a9ad85ffa93ce6b9fee63c3e29ac3b85e09..c4a784f3bebc653a1edf21bf3877e867098d6a35 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/V2LookupWorkOrWorkCompletedMobile.java +++ b/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 list = new ArrayList<>(); - CompletableFuture> relatedFormFuture = this.relatedFormFuture(this.form.getProperties()); - CompletableFuture> 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 list = new ArrayList<>(); + CompletableFuture> relatedFormFuture = this + .relatedFormFuture(this.form.getProperties()); + CompletableFuture> 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 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()); }