提交 235099d0 编写于 作者: O o2null

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

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

See merge request o2oa/o2oa!2478
...@@ -5,11 +5,7 @@ import java.util.HashMap; ...@@ -5,11 +5,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; 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.cache.Cache.CacheCategory;
import com.x.base.core.project.jaxrs.StandardJaxrsAction; import com.x.base.core.project.jaxrs.StandardJaxrsAction;
import com.x.base.core.project.jaxrs.WoMaxAgeFastETag; import com.x.base.core.project.jaxrs.WoMaxAgeFastETag;
...@@ -20,7 +16,6 @@ import com.x.processplatform.core.entity.content.WorkCompletedProperties; ...@@ -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.RelatedForm;
import com.x.processplatform.core.entity.content.WorkCompletedProperties.RelatedScript; import com.x.processplatform.core.entity.content.WorkCompletedProperties.RelatedScript;
import com.x.processplatform.core.entity.element.Form; import com.x.processplatform.core.entity.element.Form;
import com.x.processplatform.core.entity.element.FormProperties;
import com.x.processplatform.core.entity.element.Script; import com.x.processplatform.core.entity.element.Script;
abstract class BaseAction extends StandardJaxrsAction { abstract class BaseAction extends StandardJaxrsAction {
......
...@@ -48,19 +48,26 @@ class V2LookupWorkOrWorkCompleted extends BaseAction { ...@@ -48,19 +48,26 @@ class V2LookupWorkOrWorkCompleted extends BaseAction {
if (optional.isPresent()) { if (optional.isPresent()) {
this.wo = (Wo) optional.get(); this.wo = (Wo) optional.get();
} else { } else {
List<String> list = new ArrayList<>(); // 必须重新取出,因为getWorkWorkCompletedForm的form是从缓存中取出,关联值是老的,要重新计算etag需要重新获取更新后的值.
CompletableFuture<List<String>> relatedFormFuture = this.relatedFormFuture(this.form.getProperties()); try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
CompletableFuture<List<String>> relatedScriptFuture = this this.form = emc.find(form.getId(), Form.class);
.relatedScriptFuture(this.form.getProperties()); }
list.add(this.form.getId() + this.form.getUpdateTime().getTime()); if (null != this.form) {
list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS)); List<String> list = new ArrayList<>();
list.addAll(relatedScriptFuture.get(10, TimeUnit.SECONDS)); CompletableFuture<List<String>> relatedFormFuture = this
list = list.stream().sorted().collect(Collectors.toList()); .relatedFormFuture(this.form.getProperties());
this.wo.setId(this.form.getId()); CompletableFuture<List<String>> relatedScriptFuture = this
CRC32 crc = new CRC32(); .relatedScriptFuture(this.form.getProperties());
crc.update(StringUtils.join(list, "#").getBytes()); list.add(this.form.getId() + this.form.getUpdateTime().getTime());
this.wo.setCacheTag(crc.getValue() + ""); list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS));
CacheManager.put(cacheCategory, cacheKey, wo); 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); result.setData(wo);
...@@ -99,10 +106,9 @@ class V2LookupWorkOrWorkCompleted extends BaseAction { ...@@ -99,10 +106,9 @@ class V2LookupWorkOrWorkCompleted extends BaseAction {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
if (ListTools.isNotEmpty(properties.getRelatedFormList())) { if (ListTools.isNotEmpty(properties.getRelatedFormList())) {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
Form f; Form f;
for (String id : properties.getRelatedFormList()) { for (String id : properties.getRelatedFormList()) {
f = business.form().pick(id); f = emc.find(id, Form.class);
if (null != f) { if (null != f) {
list.add(f.getId() + f.getUpdateTime().getTime()); list.add(f.getId() + f.getUpdateTime().getTime());
} }
...@@ -121,7 +127,7 @@ class V2LookupWorkOrWorkCompleted extends BaseAction { ...@@ -121,7 +127,7 @@ class V2LookupWorkOrWorkCompleted extends BaseAction {
if ((null != properties.getRelatedScriptMap()) && (properties.getRelatedScriptMap().size() > 0)) { if ((null != properties.getRelatedScriptMap()) && (properties.getRelatedScriptMap().size() > 0)) {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc); Business business = new Business(emc);
list = convertScriptToCacheTag(business, properties.getMobileRelatedScriptMap()); list = convertScriptToCacheTag(business, properties.getRelatedScriptMap());
} catch (Exception e) { } catch (Exception e) {
logger.error(e); logger.error(e);
} }
......
...@@ -48,19 +48,26 @@ class V2LookupWorkOrWorkCompletedMobile extends BaseAction { ...@@ -48,19 +48,26 @@ class V2LookupWorkOrWorkCompletedMobile extends BaseAction {
if (optional.isPresent()) { if (optional.isPresent()) {
this.wo = (Wo) optional.get(); this.wo = (Wo) optional.get();
} else { } else {
List<String> list = new ArrayList<>(); // 必须重新取出,因为getWorkWorkCompletedForm的form是从缓存中取出,关联值是老的,要重新计算etag需要重新获取更新后的值.
CompletableFuture<List<String>> relatedFormFuture = this.relatedFormFuture(this.form.getProperties()); try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
CompletableFuture<List<String>> relatedScriptFuture = this this.form = emc.find(form.getId(), Form.class);
.relatedScriptFuture(this.form.getProperties()); }
list.add(this.form.getId() + this.form.getUpdateTime().getTime()); if (null != this.form) {
list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS)); List<String> list = new ArrayList<>();
list.addAll(relatedScriptFuture.get(10, TimeUnit.SECONDS)); CompletableFuture<List<String>> relatedFormFuture = this
list = list.stream().sorted().collect(Collectors.toList()); .relatedFormFuture(this.form.getProperties());
this.wo.setId(this.form.getId()); CompletableFuture<List<String>> relatedScriptFuture = this
CRC32 crc = new CRC32(); .relatedScriptFuture(this.form.getProperties());
crc.update(StringUtils.join(list, "#").getBytes()); list.add(this.form.getId() + this.form.getUpdateTime().getTime());
this.wo.setCacheTag(crc.getValue() + ""); list.addAll(relatedFormFuture.get(10, TimeUnit.SECONDS));
CacheManager.put(cacheCategory, cacheKey, wo); 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); result.setData(wo);
...@@ -99,10 +106,9 @@ class V2LookupWorkOrWorkCompletedMobile extends BaseAction { ...@@ -99,10 +106,9 @@ class V2LookupWorkOrWorkCompletedMobile extends BaseAction {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
if (ListTools.isNotEmpty(properties.getMobileRelatedFormList())) { if (ListTools.isNotEmpty(properties.getMobileRelatedFormList())) {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
Form f; Form f;
for (String id : properties.getMobileRelatedFormList()) { for (String id : properties.getMobileRelatedFormList()) {
f = business.form().pick(id); f = emc.find(id, Form.class);
if (null != f) { if (null != f) {
list.add(f.getId() + f.getUpdateTime().getTime()); list.add(f.getId() + f.getUpdateTime().getTime());
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册