提交 65f81ba1 编写于 作者: O o2sword

流程数据发布环节发布到内容管理

上级 d06da337
......@@ -482,6 +482,9 @@ public class ActionPersistPublishContent extends BaseAction {
@FieldDescribe( "启动流程的WorkId." )
private String wf_workId = null;
@FieldDescribe( "流程的表单Id." )
private String wf_formId = null;
@FieldDescribe( "启动流程的附件列表." )
private String[] wf_attachmentIds = null;
......@@ -1056,6 +1059,14 @@ public class ActionPersistPublishContent extends BaseAction {
public void setStringValue03(String stringValue03) {
this.stringValue03 = stringValue03;
}
public String getWf_formId() {
return wf_formId;
}
public void setWf_formId(String wf_formId) {
this.wf_formId = wf_formId;
}
}
public static class Wo extends WoId {
......
......@@ -15,6 +15,7 @@ import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.http.WrapOutId;
import com.x.base.core.project.jaxrs.WoId;
import com.x.cms.assemble.control.Business;
import com.x.cms.core.entity.AppInfo;
import com.x.cms.core.entity.element.Form;
import com.x.cms.core.entity.element.View;
import com.x.cms.core.entity.element.ViewCategory;
......@@ -28,11 +29,18 @@ public class ActionDelete extends BaseAction {
WrapOutId wrap = null;
try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business( emc );
if (!business.isManager( effectivePerson)) {
Form form = business.getFormFactory().get( id );
if(form == null){
throw new ExceptionFormNotExist(id);
}
AppInfo appInfo = emc.find(form.getAppId(), AppInfo.class);
if(appInfo == null){
throw new ExceptionAppInfoNotExist(form.getAppId());
}
if (!business.isAppInfoManager( effectivePerson, appInfo)) {
throw new ExceptionAccessDenied(effectivePerson);
}
// 先判断需要操作的应用信息是否存在,根据ID进行一次查询,如果不存在不允许继续操作
Form form = business.getFormFactory().get( id );
List<String> viewIds = business.getViewFactory().listByFormId(id);
List<String> fieldConfigIds = null;
List<ViewFieldConfig> fieldConfigs = null;
......
......@@ -23,6 +23,7 @@ import com.x.base.core.project.jaxrs.WoId;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.cms.assemble.control.Business;
import com.x.cms.core.entity.AppInfo;
import com.x.cms.core.entity.element.Form;
import com.x.cms.core.entity.element.View;
import com.x.cms.core.entity.element.ViewCategory;
......@@ -48,7 +49,11 @@ public class ActionSave extends BaseAction {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
if (!business.isManager( effectivePerson)) {
AppInfo appInfo = emc.find(wi.getAppId(), AppInfo.class);
if(appInfo == null){
throw new ExceptionAppInfoNotExist(wi.getAppId());
}
if (!business.isAppInfoManager( effectivePerson, appInfo)) {
throw new ExceptionAccessDenied(effectivePerson);
}
Form form = emc.find(wi.getId(), Form.class);
......
package com.x.cms.assemble.control.jaxrs.permission.element;
import com.x.base.core.project.annotation.FieldDescribe;
import com.x.base.core.project.organization.OrganizationDefinition;
public class PermissionInfo {
@FieldDescribe( "权限类别:读者|阅读|作者|管理" )
private String permission = PermissionName.READER ;
@FieldDescribe( "使用者类别:所有人|组织|人员|群组" )
private String permissionObjectType = "";
@FieldDescribe( "使用者编码:所有人|组织编码|人员UID|群组编码" )
private String permissionObjectCode = "";
@FieldDescribe( "使用者名称:所有人|组织名称|人员名称|群组名称" )
private String permissionObjectName = "";
public PermissionInfo() {}
public PermissionInfo( String permission, String permissionObjectType, String permissionObjectCode, String permissionObjectName) {
super();
this.permission = permission;
this.permissionObjectType = permissionObjectType;
this.permissionObjectCode = permissionObjectCode;
this.permissionObjectName = permissionObjectName;
if(OrganizationDefinition.isPersonDistinguishedName(permissionObjectName)){
this.permissionObjectType = "人员";
}else if(OrganizationDefinition.isUnitDistinguishedName(permissionObjectName)){
this.permissionObjectType = "组织";
}else if(OrganizationDefinition.isGroupDistinguishedName(permissionObjectName)){
this.permissionObjectType = "群组";
}
}
public String getPermission() {
......@@ -56,5 +64,5 @@ public class PermissionInfo {
public void setPermissionObjectName(String permissionObjectName) {
this.permissionObjectName = permissionObjectName;
}
}
}
......@@ -10,6 +10,9 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import com.x.processplatform.core.entity.element.*;
import com.x.processplatform.core.entity.element.Process;
import com.x.processplatform.core.entity.element.wrap.*;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -30,49 +33,6 @@ import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.StringTools;
import com.x.processplatform.assemble.designer.Business;
import com.x.processplatform.core.entity.element.Agent;
import com.x.processplatform.core.entity.element.Application;
import com.x.processplatform.core.entity.element.ApplicationDict;
import com.x.processplatform.core.entity.element.ApplicationDictItem;
import com.x.processplatform.core.entity.element.Begin;
import com.x.processplatform.core.entity.element.Cancel;
import com.x.processplatform.core.entity.element.Choice;
import com.x.processplatform.core.entity.element.Delay;
import com.x.processplatform.core.entity.element.Embed;
import com.x.processplatform.core.entity.element.End;
import com.x.processplatform.core.entity.element.File;
import com.x.processplatform.core.entity.element.Form;
import com.x.processplatform.core.entity.element.FormField;
import com.x.processplatform.core.entity.element.Invoke;
import com.x.processplatform.core.entity.element.Manual;
import com.x.processplatform.core.entity.element.Merge;
import com.x.processplatform.core.entity.element.Parallel;
import com.x.processplatform.core.entity.element.Process;
import com.x.processplatform.core.entity.element.Route;
import com.x.processplatform.core.entity.element.Script;
import com.x.processplatform.core.entity.element.Service;
import com.x.processplatform.core.entity.element.Split;
import com.x.processplatform.core.entity.element.wrap.WrapAgent;
import com.x.processplatform.core.entity.element.wrap.WrapApplicationDict;
import com.x.processplatform.core.entity.element.wrap.WrapBegin;
import com.x.processplatform.core.entity.element.wrap.WrapCancel;
import com.x.processplatform.core.entity.element.wrap.WrapChoice;
import com.x.processplatform.core.entity.element.wrap.WrapDelay;
import com.x.processplatform.core.entity.element.wrap.WrapEmbed;
import com.x.processplatform.core.entity.element.wrap.WrapEnd;
import com.x.processplatform.core.entity.element.wrap.WrapFile;
import com.x.processplatform.core.entity.element.wrap.WrapForm;
import com.x.processplatform.core.entity.element.wrap.WrapFormField;
import com.x.processplatform.core.entity.element.wrap.WrapInvoke;
import com.x.processplatform.core.entity.element.wrap.WrapManual;
import com.x.processplatform.core.entity.element.wrap.WrapMerge;
import com.x.processplatform.core.entity.element.wrap.WrapParallel;
import com.x.processplatform.core.entity.element.wrap.WrapProcess;
import com.x.processplatform.core.entity.element.wrap.WrapProcessPlatform;
import com.x.processplatform.core.entity.element.wrap.WrapRoute;
import com.x.processplatform.core.entity.element.wrap.WrapScript;
import com.x.processplatform.core.entity.element.wrap.WrapService;
import com.x.processplatform.core.entity.element.wrap.WrapSplit;
class ActionCover extends BaseAction {
......@@ -257,6 +217,8 @@ class ActionCover extends BaseAction {
wrapProcess.getMergeList(), Merge.class));
persistObjects.addAll(this.coverProcessElement(business, process, WrapParallel.inCopier,
wrapProcess.getParallelList(), Parallel.class));
persistObjects.addAll(this.coverProcessElement(business, process, WrapPublish.inCopier,
wrapProcess.getPublishList(), Publish.class));
persistObjects.addAll(this.coverProcessElement(business, process, WrapService.inCopier,
wrapProcess.getServiceList(), Service.class));
persistObjects.addAll(this.coverProcessElement(business, process, WrapSplit.inCopier,
......@@ -285,6 +247,8 @@ class ActionCover extends BaseAction {
this.orphanProcessElement(business, wrapProcess.getMergeList(), Merge.class, process.getId()));
removeObjects.addAll(this.orphanProcessElement(business, wrapProcess.getParallelList(), Parallel.class,
process.getId()));
removeObjects.addAll(this.orphanProcessElement(business, wrapProcess.getPublishList(), Publish.class,
process.getId()));
removeObjects.addAll(
this.orphanProcessElement(business, wrapProcess.getServiceList(), Service.class, process.getId()));
removeObjects.addAll(
......@@ -318,6 +282,7 @@ class ActionCover extends BaseAction {
business.entityManagerContainer().beginTransaction(Manual.class);
business.entityManagerContainer().beginTransaction(Merge.class);
business.entityManagerContainer().beginTransaction(Parallel.class);
business.entityManagerContainer().beginTransaction(Publish.class);
business.entityManagerContainer().beginTransaction(Service.class);
business.entityManagerContainer().beginTransaction(Split.class);
business.entityManagerContainer().beginTransaction(Route.class);
......@@ -486,4 +451,4 @@ class ActionCover extends BaseAction {
}
}
\ No newline at end of file
}
......@@ -4,6 +4,9 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.x.processplatform.core.entity.element.*;
import com.x.processplatform.core.entity.element.Process;
import com.x.processplatform.core.entity.element.wrap.*;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -18,49 +21,6 @@ import com.x.base.core.project.jaxrs.WoId;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.processplatform.assemble.designer.Business;
import com.x.processplatform.core.entity.element.Agent;
import com.x.processplatform.core.entity.element.Application;
import com.x.processplatform.core.entity.element.ApplicationDict;
import com.x.processplatform.core.entity.element.ApplicationDictItem;
import com.x.processplatform.core.entity.element.Begin;
import com.x.processplatform.core.entity.element.Cancel;
import com.x.processplatform.core.entity.element.Choice;
import com.x.processplatform.core.entity.element.Delay;
import com.x.processplatform.core.entity.element.Embed;
import com.x.processplatform.core.entity.element.End;
import com.x.processplatform.core.entity.element.File;
import com.x.processplatform.core.entity.element.Form;
import com.x.processplatform.core.entity.element.FormField;
import com.x.processplatform.core.entity.element.Invoke;
import com.x.processplatform.core.entity.element.Manual;
import com.x.processplatform.core.entity.element.Merge;
import com.x.processplatform.core.entity.element.Parallel;
import com.x.processplatform.core.entity.element.Process;
import com.x.processplatform.core.entity.element.Route;
import com.x.processplatform.core.entity.element.Script;
import com.x.processplatform.core.entity.element.Service;
import com.x.processplatform.core.entity.element.Split;
import com.x.processplatform.core.entity.element.wrap.WrapAgent;
import com.x.processplatform.core.entity.element.wrap.WrapApplicationDict;
import com.x.processplatform.core.entity.element.wrap.WrapBegin;
import com.x.processplatform.core.entity.element.wrap.WrapCancel;
import com.x.processplatform.core.entity.element.wrap.WrapChoice;
import com.x.processplatform.core.entity.element.wrap.WrapDelay;
import com.x.processplatform.core.entity.element.wrap.WrapEmbed;
import com.x.processplatform.core.entity.element.wrap.WrapEnd;
import com.x.processplatform.core.entity.element.wrap.WrapFile;
import com.x.processplatform.core.entity.element.wrap.WrapForm;
import com.x.processplatform.core.entity.element.wrap.WrapFormField;
import com.x.processplatform.core.entity.element.wrap.WrapInvoke;
import com.x.processplatform.core.entity.element.wrap.WrapManual;
import com.x.processplatform.core.entity.element.wrap.WrapMerge;
import com.x.processplatform.core.entity.element.wrap.WrapParallel;
import com.x.processplatform.core.entity.element.wrap.WrapProcess;
import com.x.processplatform.core.entity.element.wrap.WrapProcessPlatform;
import com.x.processplatform.core.entity.element.wrap.WrapRoute;
import com.x.processplatform.core.entity.element.wrap.WrapScript;
import com.x.processplatform.core.entity.element.wrap.WrapService;
import com.x.processplatform.core.entity.element.wrap.WrapSplit;
class ActionCreate extends BaseAction {
......@@ -271,6 +231,15 @@ class ActionCreate extends BaseAction {
obj.setProcess(process.getId());
persistObjects.add(obj);
}
for (WrapPublish _o : wrapProcess.getPublishList()) {
Publish obj = business.entityManagerContainer().find(_o.getId(), Publish.class);
if (null != obj) {
throw new ExceptionEntityExistForCreate(_o.getId(), Publish.class);
}
obj = WrapPublish.inCopier.copy(_o);
obj.setProcess(process.getId());
persistObjects.add(obj);
}
for (WrapService _o : wrapProcess.getServiceList()) {
Service obj = business.entityManagerContainer().find(_o.getId(), Service.class);
if (null != obj) {
......@@ -322,6 +291,7 @@ class ActionCreate extends BaseAction {
business.entityManagerContainer().beginTransaction(Manual.class);
business.entityManagerContainer().beginTransaction(Merge.class);
business.entityManagerContainer().beginTransaction(Parallel.class);
business.entityManagerContainer().beginTransaction(Publish.class);
business.entityManagerContainer().beginTransaction(Service.class);
business.entityManagerContainer().beginTransaction(Split.class);
business.entityManagerContainer().beginTransaction(Route.class);
......@@ -339,4 +309,4 @@ class ActionCreate extends BaseAction {
}
}
\ No newline at end of file
}
......@@ -9,6 +9,9 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import com.x.processplatform.core.entity.element.*;
import com.x.processplatform.core.entity.element.Process;
import com.x.processplatform.core.entity.element.wrap.*;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -23,48 +26,6 @@ import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.processplatform.assemble.designer.Business;
import com.x.processplatform.core.entity.element.Agent;
import com.x.processplatform.core.entity.element.Application;
import com.x.processplatform.core.entity.element.ApplicationDict;
import com.x.processplatform.core.entity.element.Begin;
import com.x.processplatform.core.entity.element.Cancel;
import com.x.processplatform.core.entity.element.Choice;
import com.x.processplatform.core.entity.element.Delay;
import com.x.processplatform.core.entity.element.Embed;
import com.x.processplatform.core.entity.element.End;
import com.x.processplatform.core.entity.element.File;
import com.x.processplatform.core.entity.element.Form;
import com.x.processplatform.core.entity.element.FormField;
import com.x.processplatform.core.entity.element.Invoke;
import com.x.processplatform.core.entity.element.Manual;
import com.x.processplatform.core.entity.element.Merge;
import com.x.processplatform.core.entity.element.Parallel;
import com.x.processplatform.core.entity.element.Process;
import com.x.processplatform.core.entity.element.Route;
import com.x.processplatform.core.entity.element.Script;
import com.x.processplatform.core.entity.element.Service;
import com.x.processplatform.core.entity.element.Split;
import com.x.processplatform.core.entity.element.wrap.WrapAgent;
import com.x.processplatform.core.entity.element.wrap.WrapApplicationDict;
import com.x.processplatform.core.entity.element.wrap.WrapBegin;
import com.x.processplatform.core.entity.element.wrap.WrapCancel;
import com.x.processplatform.core.entity.element.wrap.WrapChoice;
import com.x.processplatform.core.entity.element.wrap.WrapDelay;
import com.x.processplatform.core.entity.element.wrap.WrapEmbed;
import com.x.processplatform.core.entity.element.wrap.WrapEnd;
import com.x.processplatform.core.entity.element.wrap.WrapFile;
import com.x.processplatform.core.entity.element.wrap.WrapForm;
import com.x.processplatform.core.entity.element.wrap.WrapFormField;
import com.x.processplatform.core.entity.element.wrap.WrapInvoke;
import com.x.processplatform.core.entity.element.wrap.WrapManual;
import com.x.processplatform.core.entity.element.wrap.WrapMerge;
import com.x.processplatform.core.entity.element.wrap.WrapParallel;
import com.x.processplatform.core.entity.element.wrap.WrapProcess;
import com.x.processplatform.core.entity.element.wrap.WrapProcessPlatform;
import com.x.processplatform.core.entity.element.wrap.WrapRoute;
import com.x.processplatform.core.entity.element.wrap.WrapScript;
import com.x.processplatform.core.entity.element.wrap.WrapService;
import com.x.processplatform.core.entity.element.wrap.WrapSplit;
class ActionPrepareCover extends BaseAction {
......@@ -289,6 +250,17 @@ class ActionPrepareCover extends BaseAction {
}
}
}
for (MatchElement<WrapPublish, Publish> _me : this.match(business, m.getW().getPublishList(),
ListUtils.union(this.listWithIds(business, m.getW().getPublishList(), Publish.class),
business.publish().listWithProcessObject(m.getT().getId())))) {
if ((null != _me.getW()) && (null != _me.getT())) {
if (StringUtils.equals(_me.getW().getProcess(), _me.getT().getProcess())) {
wos.add(new Wo(_me.getW().getId(), _me.getT().getId()));
} else {
wos.add(new Wo(_me.getW().getId(), JpaObject.createId()));
}
}
}
for (MatchElement<WrapService, Service> _me : this.match(business, m.getW().getServiceList(),
ListUtils.union(this.listWithIds(business, m.getW().getServiceList(), Service.class),
business.service().listWithProcessObject(m.getT().getId())))) {
......@@ -454,4 +426,4 @@ class ActionPrepareCover extends BaseAction {
}
}
\ No newline at end of file
}
......@@ -13,47 +13,9 @@ import com.x.base.core.project.jaxrs.WrapPair;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.processplatform.assemble.designer.Business;
import com.x.processplatform.core.entity.element.Agent;
import com.x.processplatform.core.entity.element.Application;
import com.x.processplatform.core.entity.element.ApplicationDict;
import com.x.processplatform.core.entity.element.Begin;
import com.x.processplatform.core.entity.element.Cancel;
import com.x.processplatform.core.entity.element.Choice;
import com.x.processplatform.core.entity.element.Delay;
import com.x.processplatform.core.entity.element.Embed;
import com.x.processplatform.core.entity.element.End;
import com.x.processplatform.core.entity.element.File;
import com.x.processplatform.core.entity.element.Form;
import com.x.processplatform.core.entity.element.FormField;
import com.x.processplatform.core.entity.element.Invoke;
import com.x.processplatform.core.entity.element.Manual;
import com.x.processplatform.core.entity.element.Merge;
import com.x.processplatform.core.entity.element.Parallel;
import com.x.processplatform.core.entity.element.*;
import com.x.processplatform.core.entity.element.Process;
import com.x.processplatform.core.entity.element.Route;
import com.x.processplatform.core.entity.element.Script;
import com.x.processplatform.core.entity.element.Service;
import com.x.processplatform.core.entity.element.Split;
import com.x.processplatform.core.entity.element.wrap.WrapAgent;
import com.x.processplatform.core.entity.element.wrap.WrapApplicationDict;
import com.x.processplatform.core.entity.element.wrap.WrapCancel;
import com.x.processplatform.core.entity.element.wrap.WrapChoice;
import com.x.processplatform.core.entity.element.wrap.WrapDelay;
import com.x.processplatform.core.entity.element.wrap.WrapEmbed;
import com.x.processplatform.core.entity.element.wrap.WrapEnd;
import com.x.processplatform.core.entity.element.wrap.WrapFile;
import com.x.processplatform.core.entity.element.wrap.WrapForm;
import com.x.processplatform.core.entity.element.wrap.WrapFormField;
import com.x.processplatform.core.entity.element.wrap.WrapInvoke;
import com.x.processplatform.core.entity.element.wrap.WrapManual;
import com.x.processplatform.core.entity.element.wrap.WrapMerge;
import com.x.processplatform.core.entity.element.wrap.WrapParallel;
import com.x.processplatform.core.entity.element.wrap.WrapProcess;
import com.x.processplatform.core.entity.element.wrap.WrapProcessPlatform;
import com.x.processplatform.core.entity.element.wrap.WrapRoute;
import com.x.processplatform.core.entity.element.wrap.WrapScript;
import com.x.processplatform.core.entity.element.wrap.WrapService;
import com.x.processplatform.core.entity.element.wrap.WrapSplit;
import com.x.processplatform.core.entity.element.wrap.*;
class ActionPrepareCreate extends BaseAction {
......@@ -180,6 +142,12 @@ class ActionPrepareCreate extends BaseAction {
wos.add(new Wo(wrap.getId(), JpaObject.createId()));
}
}
for (WrapPublish wrap : wrapProcess.getPublishList()) {
Publish exist_parallel = business.entityManagerContainer().find(wrap.getId(), Publish.class);
if (null != exist_parallel) {
wos.add(new Wo(wrap.getId(), JpaObject.createId()));
}
}
for (WrapService wrap : wrapProcess.getServiceList()) {
Service exist_service = business.entityManagerContainer().find(wrap.getId(), Service.class);
if (null != exist_service) {
......@@ -216,4 +184,4 @@ class ActionPrepareCreate extends BaseAction {
}
}
\ No newline at end of file
}
......@@ -22,50 +22,9 @@ import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.StringTools;
import com.x.processplatform.assemble.designer.Business;
import com.x.processplatform.core.entity.element.Agent;
import com.x.processplatform.core.entity.element.Application;
import com.x.processplatform.core.entity.element.ApplicationDict;
import com.x.processplatform.core.entity.element.ApplicationDictItem;
import com.x.processplatform.core.entity.element.ApplicationDictItem_;
import com.x.processplatform.core.entity.element.Begin;
import com.x.processplatform.core.entity.element.Cancel;
import com.x.processplatform.core.entity.element.Choice;
import com.x.processplatform.core.entity.element.Delay;
import com.x.processplatform.core.entity.element.Embed;
import com.x.processplatform.core.entity.element.End;
import com.x.processplatform.core.entity.element.File;
import com.x.processplatform.core.entity.element.Form;
import com.x.processplatform.core.entity.element.FormField;
import com.x.processplatform.core.entity.element.Invoke;
import com.x.processplatform.core.entity.element.Manual;
import com.x.processplatform.core.entity.element.Merge;
import com.x.processplatform.core.entity.element.Parallel;
import com.x.processplatform.core.entity.element.*;
import com.x.processplatform.core.entity.element.Process;
import com.x.processplatform.core.entity.element.Route;
import com.x.processplatform.core.entity.element.Script;
import com.x.processplatform.core.entity.element.Service;
import com.x.processplatform.core.entity.element.Split;
import com.x.processplatform.core.entity.element.wrap.WrapAgent;
import com.x.processplatform.core.entity.element.wrap.WrapApplicationDict;
import com.x.processplatform.core.entity.element.wrap.WrapBegin;
import com.x.processplatform.core.entity.element.wrap.WrapCancel;
import com.x.processplatform.core.entity.element.wrap.WrapChoice;
import com.x.processplatform.core.entity.element.wrap.WrapDelay;
import com.x.processplatform.core.entity.element.wrap.WrapEmbed;
import com.x.processplatform.core.entity.element.wrap.WrapEnd;
import com.x.processplatform.core.entity.element.wrap.WrapFile;
import com.x.processplatform.core.entity.element.wrap.WrapForm;
import com.x.processplatform.core.entity.element.wrap.WrapFormField;
import com.x.processplatform.core.entity.element.wrap.WrapInvoke;
import com.x.processplatform.core.entity.element.wrap.WrapManual;
import com.x.processplatform.core.entity.element.wrap.WrapMerge;
import com.x.processplatform.core.entity.element.wrap.WrapParallel;
import com.x.processplatform.core.entity.element.wrap.WrapProcess;
import com.x.processplatform.core.entity.element.wrap.WrapProcessPlatform;
import com.x.processplatform.core.entity.element.wrap.WrapRoute;
import com.x.processplatform.core.entity.element.wrap.WrapScript;
import com.x.processplatform.core.entity.element.wrap.WrapService;
import com.x.processplatform.core.entity.element.wrap.WrapSplit;
import com.x.processplatform.core.entity.element.wrap.*;
class ActionSelect extends BaseAction {
......@@ -156,6 +115,8 @@ class ActionSelect extends BaseAction {
Merge.process_FIELDNAME, process.getId())));
wo.setParallelList(WrapParallel.outCopier.copy(business.entityManagerContainer().listEqual(Parallel.class,
Parallel.process_FIELDNAME, process.getId())));
wo.setPublishList(WrapPublish.outCopier.copy(business.entityManagerContainer().listEqual(Publish.class,
Publish.process_FIELDNAME, process.getId())));
wo.setServiceList(WrapService.outCopier.copy(business.entityManagerContainer().listEqual(Service.class,
Service.process_FIELDNAME, process.getId())));
wo.setSplitList(WrapSplit.outCopier.copy(business.entityManagerContainer().listEqual(Split.class,
......@@ -218,4 +179,4 @@ class ActionSelect extends BaseAction {
}
}
\ No newline at end of file
}
......@@ -34,6 +34,7 @@ public class Publish extends Activity {
private static final String TABLE = PersistenceProperties.Element.Publish.table;
public static final String PUBLISH_TARGET_CMS = "cms";
public static final String PUBLISH_TARGET_TABLE = "table";
public static final String CMS_CATEGORY_FROM_DATA = "dataPath";
@Override
public String getId() {
......
......@@ -2,15 +2,24 @@ package com.x.processplatform.service.processing.processor.publish;
import com.google.gson.JsonElement;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.Applications;
import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.jaxrs.WoId;
import com.x.base.core.project.jaxrs.WrapBoolean;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.StringTools;
import com.x.base.core.project.x_cms_assemble_control;
import com.x.base.core.project.x_query_service_processing;
import com.x.processplatform.core.entity.content.Attachment;
import com.x.processplatform.core.entity.content.Data;
import com.x.processplatform.core.entity.content.Review;
import com.x.processplatform.core.entity.content.Work;
import com.x.processplatform.core.entity.element.Activity;
import com.x.processplatform.core.entity.element.Publish;
import com.x.processplatform.core.entity.element.PublishTable;
import com.x.processplatform.core.entity.element.Route;
......@@ -34,6 +43,7 @@ import java.util.List;
public class PublishProcessor extends AbstractPublishProcessor {
public static final Logger LOGGER = LoggerFactory.getLogger(PublishProcessor.class);
private static final String CMS_PUBLISH_URI = "document/cipher/publish/content";
public PublishProcessor(EntityManagerContainer entityManagerContainer) throws Exception {
super(entityManagerContainer);
......@@ -61,11 +71,11 @@ public class PublishProcessor extends AbstractPublishProcessor {
boolean passThrough = false;
switch (publish.getPublishTarget()) {
case Publish.PUBLISH_TARGET_CMS:
// 可以根据返回脚本判断时候流转
passThrough = true;
// 发布到内容管理
passThrough = this.publishToCms(aeiObjects, publish);
break;
case Publish.PUBLISH_TARGET_TABLE:
// 可以根据返回脚本判断时候流转
// 发布到数据中心自建表
passThrough = this.publishToTable(aeiObjects, publish);
break;
default:
......@@ -77,20 +87,17 @@ public class PublishProcessor extends AbstractPublishProcessor {
LOGGER.info("work title:{}, id:{} public return false, stay in the current activity.",
() -> aeiObjects.getWork().getTitle(), () -> aeiObjects.getWork().getId());
}
if (passThrough) {
results.add(aeiObjects.getWork());
}
return results;
}
private boolean publishToTable(AeiObjects aeiObjects, Publish publish) throws Exception {
List<AssignTable> list = this.evalTableBody(aeiObjects, publish);
List<AssignPublish> list = this.evalTableBody(aeiObjects, publish);
boolean flag = true;
for (AssignTable assignTable : list){
for (AssignPublish assignPublish : list){
WrapBoolean resp = ThisApplication.context().applications().postQuery(x_query_service_processing.class,
Applications.joinQueryUri("table", assignTable.getTableName(), "update", aeiObjects.getWork().getJob()), assignTable.getData())
Applications.joinQueryUri("table", assignPublish.getTableName(), "update", aeiObjects.getWork().getJob()), assignPublish.getData())
.getData(WrapBoolean.class);
LOGGER.debug("publish to table:{}, result:{}",assignTable.getTableName(),resp.getValue());
LOGGER.debug("publish to table:{}, result:{}",assignPublish.getTableName(),resp.getValue());
if(BooleanUtils.isFalse(resp.getValue())){
flag = false;
}
......@@ -98,17 +105,17 @@ public class PublishProcessor extends AbstractPublishProcessor {
return flag;
}
private List<AssignTable> evalTableBody(AeiObjects aeiObjects, Publish publish) throws Exception {
List<AssignTable> list = new ArrayList<>();
private List<AssignPublish> evalTableBody(AeiObjects aeiObjects, Publish publish) throws Exception {
List<AssignPublish> list = new ArrayList<>();
if(ListTools.isNotEmpty(publish.getPublishTableList())){
for (PublishTable publishTable : publish.getPublishTableList()){
AssignTable assignTable = new AssignTable();
assignTable.setTableName(publishTable.getTableName());
AssignPublish assignPublish = new AssignPublish();
assignPublish.setTableName(publishTable.getTableName());
if(PublishTable.TABLE_DATA_BY_PATH.equals(publishTable.getQueryTableDataBy())){
if(StringUtils.isNotBlank(publishTable.getQueryTableDataPath())){
Object o = aeiObjects.getData().find(publishTable.getQueryTableDataPath());
if(o!=null){
assignTable.setData(gson.toJsonTree(o));
assignPublish.setData(gson.toJsonTree(o));
}
}
}else {
......@@ -121,21 +128,100 @@ public class PublishProcessor extends AbstractPublishProcessor {
assignBody);
JsonScriptingExecutor.jsonElement(cs, scriptContext, o -> {
if (!o.isJsonNull()) {
assignTable.setData(o);
assignPublish.setData(o);
}
});
}
}
if(assignTable.getData() == null){
assignTable.setData(gson.toJsonTree(aeiObjects.getData()));
if(assignPublish.getData() == null){
assignPublish.setData(gson.toJsonTree(aeiObjects.getData()));
}
list.add(assignTable);
list.add(assignPublish);
}
}
return list;
}
private String evalCmsBody(AeiObjects aeiObjects, Publish publish) throws Exception {
private boolean publishToCms(AeiObjects aeiObjects, Publish publish) throws Exception {
CmsDocument cmsDocument = this.evalCmsBody(aeiObjects, publish);
cmsDocument.setWf_workId(aeiObjects.getWork().getId());
cmsDocument.setWf_jobId(aeiObjects.getWork().getJob());
String categoryId = "";
if(Publish.CMS_CATEGORY_FROM_DATA.equals(publish.getCategorySelectType())){
if(StringUtils.isNotBlank(publish.getCategoryIdDataPath())) {
categoryId = (String) aeiObjects.getData().find(publish.getCategoryIdDataPath());
}
}else{
categoryId = publish.getCategoryId();
}
if(StringUtils.isBlank(categoryId)){
LOGGER.warn("流程数据发布到内容管理失败:分类ID为空!");
return false;
}
cmsDocument.setCategoryId(categoryId);
if(BooleanUtils.isTrue(publish.getUseProcessForm())){
cmsDocument.setWf_formId(aeiObjects.getWork().getForm());
}
if(BooleanUtils.isTrue(publish.getInheritAttachment())){
List<Attachment> attachments = aeiObjects.getAttachments();
if(ListTools.isNotEmpty(attachments)){
cmsDocument.setWf_attachmentIds(ListTools.extractField(attachments, JpaObject.id_FIELDNAME, String.class, true, true));
}
}
String title = "";
if(StringUtils.isNotBlank(publish.getTitleDataPath())){
title = (String)aeiObjects.getData().find(publish.getTitleDataPath());
}
if(StringUtils.isBlank(title)){
title = aeiObjects.getWork().getTitle();
}
if(StringUtils.isBlank(title)){
title = "未命名";
}
cmsDocument.setTitle(StringTools.utf8SubString(title, 255));
List<CmsPermission> readerList = new ArrayList<>();
List<String> list = this.findPathData(aeiObjects.getData(), publish.getReaderDataPathList());
if(ListTools.isNotEmpty(list)) {
List<Review> reviewList = aeiObjects.getReviews();
if(ListTools.isNotEmpty(reviewList)){
list.addAll(ListTools.extractField(reviewList, Review.person_FIELDNAME, String.class, true, true));
}
}
list.stream().forEach(s -> {
CmsPermission cmsPermission = new CmsPermission();
cmsPermission.setPermissionObjectName(s);
readerList.add(cmsPermission);
});
cmsDocument.setReaderList(readerList);
List<CmsPermission> authorList = new ArrayList<>();
list = this.findPathData(aeiObjects.getData(), publish.getAuthorDataPathList());
list.add(aeiObjects.getWork().getCreatorPerson());
list.stream().forEach(s -> {
CmsPermission cmsPermission = new CmsPermission();
cmsPermission.setPermissionObjectName(s);
authorList.add(cmsPermission);
});
cmsDocument.setAuthorList(authorList);
cmsDocument.setPictureList(this.findPathData(aeiObjects.getData(), publish.getPictureDataPathList()));
WoId woId = ThisApplication.context().applications().putQuery(x_cms_assemble_control.class, CMS_PUBLISH_URI, cmsDocument).getData(WoId.class);
if(woId==null || StringUtils.isBlank(woId.getId())){
return false;
}
//发送消息通知
if(StringUtils.isNotBlank(publish.getNotifyDataPathList())) {
list = this.findPathData(aeiObjects.getData(), publish.getNotifyDataPathList());
if (ListTools.isNotEmpty(list)) {
CmsNotify cmsNotify = new CmsNotify(list);
ThisApplication.context().applications().postQuery(x_cms_assemble_control.class,
Applications.joinQueryUri("document", woId.getId(), "update", aeiObjects.getWork().getJob()), cmsNotify);
}
}
return true;
}
private CmsDocument evalCmsBody(AeiObjects aeiObjects, Publish publish) throws Exception {
CmsDocument cmsDocument = new CmsDocument();
WrapScriptObject assignBody = new WrapScriptObject();
if (hasCmsAssignDataScript(publish)) {
ScriptContext scriptContext = aeiObjects.scriptContext();
......@@ -145,14 +231,31 @@ public class PublishProcessor extends AbstractPublishProcessor {
assignBody);
JsonScriptingExecutor.jsonElement(cs, scriptContext, o -> {
if (!o.isJsonNull()) {
assignBody.set(gson.toJson(o));
cmsDocument.setData(o);
}
});
}
return assignBody.get();
if(cmsDocument.getData() == null){
cmsDocument.setData(gson.toJsonTree(aeiObjects.getData()));
}
return cmsDocument;
}
public class AssignTable {
/** 取得通过路径指定的人员组织 */
private List<String> findPathData(Data data, String paths) throws Exception {
List<String> list = new ArrayList<>();
if (StringUtils.isNotBlank(paths)) {
for (String str : paths.split(",")) {
if (StringUtils.isNotBlank(str)) {
list.addAll(data.extractDistinguishedName(str.trim()));
}
}
}
return list;
}
public class AssignPublish {
private String tableName;
......@@ -175,6 +278,154 @@ public class PublishProcessor extends AbstractPublishProcessor {
}
}
public class CmsDocument extends GsonPropertyObject{
private String title;
private String wf_workId;
private String wf_jobId;
private String wf_formId;
private String summary;
private String categoryId;
private List<String> pictureList;
private List<String> wf_attachmentIds;
private JsonElement data;
private List<CmsPermission> readerList;
private List<CmsPermission> authorList;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getWf_workId() {
return wf_workId;
}
public void setWf_workId(String wf_workId) {
this.wf_workId = wf_workId;
}
public String getWf_jobId() {
return wf_jobId;
}
public void setWf_jobId(String wf_jobId) {
this.wf_jobId = wf_jobId;
}
public String getWf_formId() {
return wf_formId;
}
public void setWf_formId(String wf_formId) {
this.wf_formId = wf_formId;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public List<String> getPictureList() {
return pictureList;
}
public void setPictureList(List<String> pictureList) {
this.pictureList = pictureList;
}
public List<String> getWf_attachmentIds() {
return wf_attachmentIds;
}
public void setWf_attachmentIds(List<String> wf_attachmentIds) {
this.wf_attachmentIds = wf_attachmentIds;
}
public JsonElement getData() {
return data;
}
public void setData(JsonElement data) {
this.data = data;
}
public List<CmsPermission> getReaderList() {
return readerList;
}
public void setReaderList(List<CmsPermission> readerList) {
this.readerList = readerList;
}
public List<CmsPermission> getAuthorList() {
return authorList;
}
public void setAuthorList(List<CmsPermission> authorList) {
this.authorList = authorList;
}
public String getCategoryId() {
return categoryId;
}
public void setCategoryId(String categoryId) {
this.categoryId = categoryId;
}
}
public class CmsPermission {
private String permissionObjectName;
public String getPermissionObjectName() {
return permissionObjectName;
}
public void setPermissionObjectName(String permissionObjectName) {
this.permissionObjectName = permissionObjectName;
}
}
public class CmsNotify extends GsonPropertyObject{
public CmsNotify(List<String> notifyPersonList){
this.notifyPersonList = notifyPersonList;
}
private List<String> notifyPersonList;
private Boolean notifyByDocumentReadPerson = false;
private Boolean notifyCreatePerson = false;
public List<String> getNotifyPersonList() {
return notifyPersonList;
}
public void setNotifyPersonList(List<String> notifyPersonList) {
this.notifyPersonList = notifyPersonList;
}
public Boolean getNotifyByDocumentReadPerson() {
return notifyByDocumentReadPerson;
}
public void setNotifyByDocumentReadPerson(Boolean notifyByDocumentReadPerson) {
this.notifyByDocumentReadPerson = notifyByDocumentReadPerson;
}
public Boolean getNotifyCreatePerson() {
return notifyCreatePerson;
}
public void setNotifyCreatePerson(Boolean notifyCreatePerson) {
this.notifyCreatePerson = notifyCreatePerson;
}
}
@Override
protected void executingCommitted(AeiObjects aeiObjects, Publish publish, List<Work> works) throws Exception {
// Do nothing
......
package com.x.query.service.processing.jaxrs.table;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.tools.StringTools;
import org.apache.commons.beanutils.PropertyUtilsBean;
......
......@@ -2,13 +2,12 @@ package com.x.query.service.processing.jaxrs.table;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import javax.persistence.Column;
import com.x.base.core.entity.dynamic.DynamicEntity;
import com.x.base.core.project.jaxrs.WrapString;
import org.apache.commons.beanutils.PropertyUtilsBean;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.reflect.FieldUtils;
......@@ -37,6 +36,8 @@ abstract class BaseAction extends StandardJaxrsAction {
IllegalArgumentException, SecurityException {
List<T> list = new ArrayList<>();
List<Field> fields = FieldUtils.getFieldsListWithAnnotation(cls, Column.class);
List<Field> fields2 = FieldUtils.getFieldsListWithAnnotation(cls, ElementColumn.class);
fields.addAll(fields2);
final List<JsonObject> jsonObjectList = new ArrayList<>();
if (jsonElement.isJsonObject()) {
jsonObjectList.add(jsonElement.getAsJsonObject());
......@@ -51,62 +52,74 @@ abstract class BaseAction extends StandardJaxrsAction {
for(JsonObject jsonObject : jsonObjectList) {
T t = cls.getConstructor().newInstance();
for (Field field : fields) {
switch (JpaObjectTools.type(field)) {
case JpaObject.TYPE_STRING:
propertyUtilsBean.setProperty(t, field.getName(), extractStringOrDistinguishedName(
getJsonElement(jsonObject, field), getColumnDefinedStringLength(field)));
break;
case JpaObject.TYPE_INTEGER:
propertyUtilsBean.setProperty(t, field.getName(), extractInteger(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_LONG:
propertyUtilsBean.setProperty(t, field.getName(), extractLong(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_FLOAT:
propertyUtilsBean.setProperty(t, field.getName(), extractFloat(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_DOUBLE:
propertyUtilsBean.setProperty(t, field.getName(), extractDouble(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_DATETIME:
propertyUtilsBean.setProperty(t, field.getName(), extractDateTime(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_DATE:
propertyUtilsBean.setProperty(t, field.getName(), extractDate(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_BOOLEAN:
propertyUtilsBean.setProperty(t, field.getName(), extractBoolean(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_STRINGLIST:
propertyUtilsBean.setProperty(t, field.getName(), extractStringOrDistinguishedNameList(
getJsonElement(jsonObject, field), getElementColumnDefinedStringLength(field)));
break;
case JpaObject.TYPE_INTEGERLIST:
propertyUtilsBean.setProperty(t, field.getName(),
extractIntegerList(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_LONGLIST:
propertyUtilsBean.setProperty(t, field.getName(), extractLongList(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_FLOATLIST:
propertyUtilsBean.setProperty(t, field.getName(), extractFloatList(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_DOUBLELIST:
propertyUtilsBean.setProperty(t, field.getName(), extractDoubleList(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_DATETIMELIST:
propertyUtilsBean.setProperty(t, field.getName(),
extractDateTimeList(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_BOOLEANLIST:
propertyUtilsBean.setProperty(t, field.getName(),
extractBooleanList(getJsonElement(jsonObject, field)));
break;
default:
break;
}
if(StringUtils.isNotBlank(bundle) && field.getName().equals(DynamicEntity.BUNDLE_FIELD)){
propertyUtilsBean.setProperty(t, field.getName(), bundle);
try {
switch (JpaObjectTools.type(field)) {
case JpaObject.TYPE_STRING:
propertyUtilsBean.setProperty(t, field.getName(), extractStringOrDistinguishedName(
getJsonElement(jsonObject, field), getColumnDefinedStringLength(field)));
break;
case JpaObject.TYPE_STRINGLOB:
propertyUtilsBean.setProperty(t, field.getName(), extractString(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_INTEGER:
propertyUtilsBean.setProperty(t, field.getName(), extractInteger(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_LONG:
propertyUtilsBean.setProperty(t, field.getName(), extractLong(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_FLOAT:
propertyUtilsBean.setProperty(t, field.getName(), extractFloat(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_DOUBLE:
propertyUtilsBean.setProperty(t, field.getName(), extractDouble(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_DATETIME:
propertyUtilsBean.setProperty(t, field.getName(), extractDateTime(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_DATE:
propertyUtilsBean.setProperty(t, field.getName(), extractDate(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_BOOLEAN:
propertyUtilsBean.setProperty(t, field.getName(), extractBoolean(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_STRINGLIST:
propertyUtilsBean.setProperty(t, field.getName(), extractStringOrDistinguishedNameList(
getJsonElement(jsonObject, field), getElementColumnDefinedStringLength(field)));
break;
case JpaObject.TYPE_INTEGERLIST:
propertyUtilsBean.setProperty(t, field.getName(),
extractIntegerList(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_LONGLIST:
propertyUtilsBean.setProperty(t, field.getName(), extractLongList(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_FLOATLIST:
propertyUtilsBean.setProperty(t, field.getName(), extractFloatList(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_DOUBLELIST:
propertyUtilsBean.setProperty(t, field.getName(), extractDoubleList(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_DATETIMELIST:
propertyUtilsBean.setProperty(t, field.getName(),
extractDateTimeList(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_BOOLEANLIST:
propertyUtilsBean.setProperty(t, field.getName(),
extractBooleanList(getJsonElement(jsonObject, field)));
break;
case JpaObject.TYPE_STRINGMAP:
propertyUtilsBean.setProperty(t, field.getName(),
extractMap(getJsonElement(jsonObject, field), getElementColumnDefinedStringLength(field)));
break;
default:
break;
}
if(StringUtils.isNotBlank(bundle) && field.getName().equals(DynamicEntity.BUNDLE_FIELD)){
propertyUtilsBean.setProperty(t, field.getName(), bundle);
}
} catch (Exception e) {
LOGGER.warn("设置对象:{} 的属性:{} 值异常:{}", cls.getSimpleName(), field.getName(), e.getMessage());
e.printStackTrace();
}
}
list.add(t);
......@@ -132,6 +145,18 @@ abstract class BaseAction extends StandardJaxrsAction {
return (null != elementColumn) ? elementColumn.length() : JpaObject.length_255B;
}
private String extractString(JsonElement jsonElement) {
String value = null;
if (null != jsonElement) {
if (jsonElement.isJsonPrimitive()) {
value = jsonElement.getAsString();
}else{
value = jsonElement.toString();
}
}
return value;
}
private String extractStringOrDistinguishedName(JsonElement jsonElement, int maxLength) {
String value = null;
if (null != jsonElement) {
......@@ -169,6 +194,7 @@ abstract class BaseAction extends StandardJaxrsAction {
}
}
}
LOGGER.info(gson.toJson(values)+jsonElement.toString());
return values;
}
......@@ -418,4 +444,18 @@ abstract class BaseAction extends StandardJaxrsAction {
return values;
}
private Map<String, String> extractMap(JsonElement jsonElement, int maxLength) {
Map<String, Object> dataTable = new LinkedHashMap<>();
Map<String, String> map = new LinkedHashMap<>();
if (null != jsonElement) {
if (jsonElement.isJsonObject()) {
dataTable = gson.fromJson(jsonElement, LinkedHashMap.class);
}
}
for(String key : dataTable.keySet()){
map.put(key, StringTools.utf8SubString(Objects.toString(dataTable.get(key), ""), maxLength));
}
return map;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册