提交 e9f5d6e1 编写于 作者: O o2null

Merge branch 'fix/shouquan' into 'develop'

Fix/shouquan修改org接口中的授权

See merge request o2oa/o2oa!277
package com.x.message.assemble.communicate.jaxrs.message;
import org.apache.commons.lang3.StringUtils;
import com.google.gson.JsonElement;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
......@@ -14,13 +12,13 @@ import com.x.base.core.project.config.Config;
import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
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.message.MessageConnector;
import com.x.message.assemble.communicate.ThisApplication;
import com.x.message.core.entity.Message;
import org.apache.commons.lang3.StringUtils;
class ActionCustomCreate extends BaseAction {
......
......@@ -14,8 +14,6 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.apache.commons.lang3.StringUtils;
import com.google.gson.JsonElement;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
......@@ -23,10 +21,8 @@ import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.Applications;
import com.x.base.core.project.x_processplatform_assemble_surface;
import com.x.base.core.project.annotation.FieldDescribe;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.connection.ActionResponse;
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.logger.Logger;
......@@ -39,7 +35,7 @@ import com.x.organization.core.entity.accredit.Empower;
import com.x.organization.core.entity.accredit.Empower_;
import com.x.organization.core.entity.accredit.Filter;
import net.sf.ehcache.Element;
import org.apache.commons.lang3.StringUtils;
class ActionListWithIdentityObject extends BaseAction {
......@@ -61,6 +57,9 @@ class ActionListWithIdentityObject extends BaseAction {
@FieldDescribe("应用")
private String application;
@FieldDescribe("流程版本")
private String edition;
@FieldDescribe("流程")
private String process;
......@@ -102,6 +101,14 @@ class ActionListWithIdentityObject extends BaseAction {
this.work = work;
}
public String getEdition() {
return edition;
}
public void setEdition(String edition) {
this.edition = edition;
}
}
public static class Wo extends Empower {
......@@ -131,25 +138,7 @@ class ActionListWithIdentityObject extends BaseAction {
List<Empower> list = map.get(str);
if (ListTools.isNotEmpty(list)) {
list.sort(new Comparator<Empower>() {
public int compare(Empower o1, Empower o2) {
if (StringUtils.equals(Empower.TYPE_FILTER, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_FILTER, o2.getType())) {
return 1;
} else if (StringUtils.equals(Empower.TYPE_PROCESS, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_PROCESS, o2.getType())) {
return 1;
} else if (StringUtils.equals(Empower.TYPE_APPLICATION, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_APPLICATION, o2.getType())) {
return 1;
} else {
return 0;
}
}
});
list.sort(new EmpowerComparator());
Empower empower = this.pick(business, list, wi.getWork());
if (null != empower) {
Wo wo = new Wo(str, str);
......@@ -163,6 +152,7 @@ class ActionListWithIdentityObject extends BaseAction {
private Empower pick(Business business, List<Empower> list, String work) throws Exception {
for (Empower empower : list) {
if (StringUtils.equals(Empower.TYPE_FILTER, empower.getType())
&& StringUtils.isNotEmpty(empower.getFilterListData())) {
List<Filter> filters = gson.fromJson(empower.getFilterListData(), Filter.LISTTYPE);
......@@ -171,12 +161,8 @@ class ActionListWithIdentityObject extends BaseAction {
x_processplatform_assemble_surface.class, Applications.joinQueryUri("data", "work", work) + "/"
+ StringUtils.replace(filter.path, ".", "/"));
if (null != response.getData()) {
switch (Objects.toString(filter.formatType, "")) {
default:
if (StringUtils.equals(filter.value, response.getData().getAsString())) {
return empower;
}
break;
if (StringUtils.equals(filter.value, response.getData().getAsString())) {
return empower;
}
} else {
return empower;
......@@ -186,6 +172,26 @@ class ActionListWithIdentityObject extends BaseAction {
return list.get(0);
}
private class EmpowerComparator implements Comparator<Empower> {
public int compare(Empower o1, Empower o2) {
if (StringUtils.equals(Empower.TYPE_FILTER, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_FILTER, o2.getType())) {
return 1;
} else if (StringUtils.equals(Empower.TYPE_PROCESS, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_PROCESS, o2.getType())) {
return 1;
} else if (StringUtils.equals(Empower.TYPE_APPLICATION, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_APPLICATION, o2.getType())) {
return 1;
} else {
return 0;
}
}
}
private List<Empower> list(Business business, Wi wi) throws Exception {
List<Identity> identities = business.identity().pick(wi.getIdentityList());
......@@ -198,18 +204,19 @@ class ActionListWithIdentityObject extends BaseAction {
Predicate p = cb.or(cb.equal(root.get(Empower_.type), Empower.TYPE_ALL),
cb.and(cb.equal(root.get(Empower_.type), Empower.TYPE_APPLICATION),
cb.equal(root.get(Empower_.application), wi.getApplication())),
cb.and(cb.equal(root.get(Empower_.type), Empower.TYPE_PROCESS),
cb.equal(root.get(Empower_.process), wi.getProcess())),
cb.and(cb.equal(root.get(Empower_.type), Empower.TYPE_FILTER),
cb.equal(root.get(Empower_.process), wi.getProcess())));
cb.and(cb.equal(root.get(Empower_.type), Empower.TYPE_PROCESS), cb.or(
cb.and(cb.isNotNull(root.get(Empower_.edition)), cb.notEqual(root.get(Empower_.edition), ""),
cb.equal(root.get(Empower_.edition), wi.getEdition())),
cb.equal(root.get(Empower_.process), wi.getProcess()))),
cb.and(cb.equal(root.get(Empower_.type), Empower.TYPE_FILTER), cb.or(
cb.and(cb.isNotNull(root.get(Empower_.edition)), cb.notEqual(root.get(Empower_.edition), ""),
cb.equal(root.get(Empower_.edition), wi.getEdition())),
cb.equal(root.get(Empower_.process), wi.getProcess()))));
p = cb.and(p, root.get(Empower_.fromIdentity).in(names));
// p = cb.and(p, cb.isMember(root.get(Empower_.fromIdentity),
// cb.literal(names)));
p = cb.and(p, cb.equal(root.get(Empower_.enable), true));
p = cb.and(p, cb.lessThan(root.get(Empower_.startTime), new Date()),
cb.greaterThan(root.get(Empower_.completedTime), new Date()));
return em.createQuery(cq.select(root).where(p).distinct(true)).getResultList();
}
}
\ No newline at end of file
......@@ -136,6 +136,13 @@
"description": "应用",
"isBaseType": true
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本",
"isBaseType": true
},
{
"name": "process",
"type": "String",
......@@ -207,6 +214,12 @@
"isCollection": false,
"description": "应用别名."
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本."
},
{
"name": "process",
"type": "String",
......
......@@ -14,8 +14,6 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.apache.commons.lang3.StringUtils;
import com.google.gson.JsonElement;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
......@@ -23,10 +21,8 @@ import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.Applications;
import com.x.base.core.project.x_processplatform_assemble_surface;
import com.x.base.core.project.annotation.FieldDescribe;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.connection.ActionResponse;
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.logger.Logger;
......@@ -39,7 +35,7 @@ import com.x.organization.core.entity.accredit.Empower;
import com.x.organization.core.entity.accredit.Empower_;
import com.x.organization.core.entity.accredit.Filter;
import net.sf.ehcache.Element;
import org.apache.commons.lang3.StringUtils;
class ActionListWithIdentityObject extends BaseAction {
......@@ -61,6 +57,9 @@ class ActionListWithIdentityObject extends BaseAction {
@FieldDescribe("应用")
private String application;
@FieldDescribe("流程版本")
private String edition;
@FieldDescribe("流程")
private String process;
......@@ -102,6 +101,14 @@ class ActionListWithIdentityObject extends BaseAction {
this.work = work;
}
public String getEdition() {
return edition;
}
public void setEdition(String edition) {
this.edition = edition;
}
}
public static class Wo extends Empower {
......@@ -131,25 +138,7 @@ class ActionListWithIdentityObject extends BaseAction {
List<Empower> list = map.get(str);
if (ListTools.isNotEmpty(list)) {
list.sort(new Comparator<Empower>() {
public int compare(Empower o1, Empower o2) {
if (StringUtils.equals(Empower.TYPE_FILTER, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_FILTER, o2.getType())) {
return 1;
} else if (StringUtils.equals(Empower.TYPE_PROCESS, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_PROCESS, o2.getType())) {
return 1;
} else if (StringUtils.equals(Empower.TYPE_APPLICATION, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_APPLICATION, o2.getType())) {
return 1;
} else {
return 0;
}
}
});
list.sort(new EmpowerComparator());
Empower empower = this.pick(business, list, wi.getWork());
if (null != empower) {
Wo wo = new Wo(str, str);
......@@ -163,6 +152,7 @@ class ActionListWithIdentityObject extends BaseAction {
private Empower pick(Business business, List<Empower> list, String work) throws Exception {
for (Empower empower : list) {
if (StringUtils.equals(Empower.TYPE_FILTER, empower.getType())
&& StringUtils.isNotEmpty(empower.getFilterListData())) {
List<Filter> filters = gson.fromJson(empower.getFilterListData(), Filter.LISTTYPE);
......@@ -171,12 +161,8 @@ class ActionListWithIdentityObject extends BaseAction {
x_processplatform_assemble_surface.class, Applications.joinQueryUri("data", "work", work) + "/"
+ StringUtils.replace(filter.path, ".", "/"));
if (null != response.getData()) {
switch (Objects.toString(filter.formatType, "")) {
default:
if (StringUtils.equals(filter.value, response.getData().getAsString())) {
return empower;
}
break;
if (StringUtils.equals(filter.value, response.getData().getAsString())) {
return empower;
}
} else {
return empower;
......@@ -186,6 +172,26 @@ class ActionListWithIdentityObject extends BaseAction {
return list.get(0);
}
private class EmpowerComparator implements Comparator<Empower> {
public int compare(Empower o1, Empower o2) {
if (StringUtils.equals(Empower.TYPE_FILTER, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_FILTER, o2.getType())) {
return 1;
} else if (StringUtils.equals(Empower.TYPE_PROCESS, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_PROCESS, o2.getType())) {
return 1;
} else if (StringUtils.equals(Empower.TYPE_APPLICATION, o1.getType())) {
return -1;
} else if (StringUtils.equals(Empower.TYPE_APPLICATION, o2.getType())) {
return 1;
} else {
return 0;
}
}
}
private List<Empower> list(Business business, Wi wi) throws Exception {
List<Identity> identities = business.identity().pick(wi.getIdentityList());
......@@ -198,18 +204,19 @@ class ActionListWithIdentityObject extends BaseAction {
Predicate p = cb.or(cb.equal(root.get(Empower_.type), Empower.TYPE_ALL),
cb.and(cb.equal(root.get(Empower_.type), Empower.TYPE_APPLICATION),
cb.equal(root.get(Empower_.application), wi.getApplication())),
cb.and(cb.equal(root.get(Empower_.type), Empower.TYPE_PROCESS),
cb.equal(root.get(Empower_.process), wi.getProcess())),
cb.and(cb.equal(root.get(Empower_.type), Empower.TYPE_FILTER),
cb.equal(root.get(Empower_.process), wi.getProcess())));
cb.and(cb.equal(root.get(Empower_.type), Empower.TYPE_PROCESS), cb.or(
cb.and(cb.isNotNull(root.get(Empower_.edition)), cb.notEqual(root.get(Empower_.edition), ""),
cb.equal(root.get(Empower_.edition), wi.getEdition())),
cb.equal(root.get(Empower_.process), wi.getProcess()))),
cb.and(cb.equal(root.get(Empower_.type), Empower.TYPE_FILTER), cb.or(
cb.and(cb.isNotNull(root.get(Empower_.edition)), cb.notEqual(root.get(Empower_.edition), ""),
cb.equal(root.get(Empower_.edition), wi.getEdition())),
cb.equal(root.get(Empower_.process), wi.getProcess()))));
p = cb.and(p, root.get(Empower_.fromIdentity).in(names));
// p = cb.and(p, cb.isMember(root.get(Empower_.fromIdentity),
// cb.literal(names)));
p = cb.and(p, cb.equal(root.get(Empower_.enable), true));
p = cb.and(p, cb.lessThan(root.get(Empower_.startTime), new Date()),
cb.greaterThan(root.get(Empower_.completedTime), new Date()));
return em.createQuery(cq.select(root).where(p).distinct(true)).getResultList();
}
}
\ No newline at end of file
......@@ -7,14 +7,11 @@ import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.organization.assemble.personal.Business;
import com.x.organization.core.entity.accredit.Empower;
import net.sf.ehcache.Element;
class ActionListWithCurrentPersonEnable extends BaseAction {
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson) throws Exception {
......
......@@ -386,6 +386,13 @@
"description": "应用别名.",
"isBaseType": true
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本.",
"isBaseType": true
},
{
"name": "process",
"type": "String",
......@@ -579,6 +586,13 @@
"description": "应用别名.",
"isBaseType": true
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本.",
"isBaseType": true
},
{
"name": "process",
"type": "String",
......@@ -743,6 +757,12 @@
"isCollection": false,
"description": "应用别名."
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本."
},
{
"name": "process",
"type": "String",
......@@ -885,6 +905,12 @@
"isCollection": false,
"description": "应用别名."
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本."
},
{
"name": "process",
"type": "String",
......@@ -1021,6 +1047,12 @@
"isCollection": false,
"description": "应用别名."
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本."
},
{
"name": "process",
"type": "String",
......@@ -1140,6 +1172,12 @@
"isCollection": false,
"description": "应用别名."
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本."
},
{
"name": "process",
"type": "String",
......@@ -1277,6 +1315,12 @@
"isCollection": false,
"description": "应用别名."
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本."
},
{
"name": "process",
"type": "String",
......@@ -1414,6 +1458,12 @@
"isCollection": false,
"description": "应用别名."
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本."
},
{
"name": "process",
"type": "String",
......@@ -1551,6 +1601,12 @@
"isCollection": false,
"description": "应用别名."
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本."
},
{
"name": "process",
"type": "String",
......@@ -1694,6 +1750,12 @@
"isCollection": false,
"description": "应用别名."
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本."
},
{
"name": "process",
"type": "String",
......@@ -1864,6 +1926,12 @@
"isCollection": false,
"description": "应用别名."
},
{
"name": "edition",
"type": "String",
"isCollection": false,
"description": "流程版本."
},
{
"name": "process",
"type": "String",
......
......@@ -7,14 +7,11 @@ import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.cache.ApplicationCache;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.organization.assemble.personal.Business;
import com.x.organization.core.entity.accredit.Empower;
import net.sf.ehcache.Element;
class ActionListWithCurrentPersonEnable extends BaseAction {
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson) throws Exception {
......
......@@ -111,6 +111,13 @@ public class Empower extends SliceJpaObject {
@CheckPersist(allowEmpty = true)
private String applicationAlias;
public static final String edition_FIELDNAME = "edition";
@FieldDescribe("流程版本.")
@Column(length = JpaObject.length_id, name = ColumnNamePrefix + edition_FIELDNAME)
@Index(name = TABLE + IndexNameMiddle + edition_FIELDNAME)
@CheckPersist(allowEmpty = true)
private String edition;
public static final String process_FIELDNAME = "process";
@FieldDescribe("流程ID.")
@Column(length = JpaObject.length_id, name = ColumnNamePrefix + process_FIELDNAME)
......@@ -287,4 +294,12 @@ public class Empower extends SliceJpaObject {
this.type = type;
}
public String getEdition() {
return edition;
}
public void setEdition(String edition) {
this.edition = edition;
}
}
\ No newline at end of file
......@@ -9,7 +9,7 @@ import com.x.base.core.project.organization.Empower;
class ActionListWithIdentityObject extends BaseAction {
public static List<Empower> execute(AbstractContext context, String application, String process, String work,
public static List<Empower> execute(AbstractContext context, String application, String edition,String process, String work,
Collection<String> collection) throws Exception {
Wi wi = new Wi();
List<Empower> wos = new ArrayList<>();
......@@ -17,6 +17,7 @@ class ActionListWithIdentityObject extends BaseAction {
wi.getIdentityList().addAll(collection);
wi.setApplication(application);
wi.setProcess(process);
wi.setEdition(edition);
wi.setWork(work);
wos = context.applications().postQuery(applicationClass, "empower/list/identity/object", wi)
.getDataAsList(Empower.class);
......
......@@ -19,6 +19,9 @@ abstract class BaseAction {
@FieldDescribe("应用")
private String application;
@FieldDescribe("流程版本")
private String edition;
@FieldDescribe("流程")
private String process;
......@@ -57,6 +60,14 @@ abstract class BaseAction {
this.process = process;
}
public String getEdition() {
return edition;
}
public void setEdition(String edition) {
this.edition = edition;
}
}
}
......@@ -16,15 +16,15 @@ public class EmpowerFactory {
private AbstractContext context;
/** 根据应用和流程获取指定身份是否有委托 */
public List<Empower> listWithIdentityObject(String application, String process, String work, String value)
throws Exception {
return ActionListWithIdentityObject.execute(context, application, process, work, Arrays.asList(value));
public List<Empower> listWithIdentityObject(String application, String edition, String process, String work,
String value) throws Exception {
return ActionListWithIdentityObject.execute(context, application, edition, process, work, Arrays.asList(value));
}
/** 根据应用和流程获取指定身份是否有委托 */
public List<Empower> listWithIdentityObject(String application, String process, String work,
public List<Empower> listWithIdentityObject(String application, String edition, String process, String work,
Collection<String> values) throws Exception {
return ActionListWithIdentityObject.execute(context, application, process, work, values);
return ActionListWithIdentityObject.execute(context, application, edition, process, work, values);
}
}
package com.x.processplatform.assemble.designer.jaxrs.output;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
......@@ -25,6 +26,8 @@ import com.x.processplatform.core.entity.element.wrap.WrapForm;
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.WrapScript;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
class ActionList extends BaseAction {
......@@ -36,6 +39,15 @@ class ActionList extends BaseAction {
List<Wo> wos = emc.fetchAll(Application.class, Wo.copier);
List<WrapProcess> processList = emc.fetchAll(Process.class, processCopier);
processList.stream().forEach( o -> {
if(StringUtils.isEmpty(o.getEdition())){
o.setName(o.getName() + "_V1.0");
}else{
o.setName(o.getEditionName());
}
});
processList = processList.stream().sorted(Comparator.comparing(WrapProcess::getName, Comparator.nullsLast(String::compareTo)))
.collect(Collectors.toList());
List<WrapForm> formList = emc.fetchAll(Form.class, formCopier);
......
......@@ -330,8 +330,8 @@ public class ManualProcessor extends AbstractManualProcessor {
List<String> values = taskIdentities.identities();
values = ListUtils.subtract(values, aeiObjects.getProcessingAttributes().getIgnoreEmpowerIdentityList());
taskIdentities.empower(aeiObjects.business().organization().empower().listWithIdentityObject(
aeiObjects.getWork().getApplication(), aeiObjects.getWork().getProcess(),
aeiObjects.getWork().getId(), values));
aeiObjects.getWork().getApplication(), aeiObjects.getProcess().getEdition(),
aeiObjects.getWork().getProcess(), aeiObjects.getWork().getId(), values));
for (TaskIdentity taskIdentity : taskIdentities) {
if (StringUtils.isNotEmpty(taskIdentity.getFromIdentity())) {
aeiObjects.getWork().getProperties().getManualEmpowerMap().put(taskIdentity.getIdentity(),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册