提交 f50fcad0 编写于 作者: Z zhourui

fix addSplit

上级 69c13b65
package com.x.base.core.project.exception;
public class ExceptionStorageMappingNotExist extends LanguagePromptException {
private static final long serialVersionUID = -7354813827434276962L;
public static final String defaultMessage = "标识为:{}的存储不存在.";
public ExceptionStorageMappingNotExist(String storage) {
super(defaultMessage, storage);
}
}
......@@ -165,9 +165,9 @@ public class ApplicationServerTools extends JettySeverTools {
Server server = new Server(threadPool);
server.setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize", MAX_FORM_CONTENT_SIZE);
if (BooleanUtils.isTrue(applicationServer.getSslEnable())) {
addHttpsConnector(server, applicationServer.getPort(), true);
addHttpsConnector(server, applicationServer.getPort(), false);
} else {
addHttpConnector(server, applicationServer.getPort(), true);
addHttpConnector(server, applicationServer.getPort(), false);
}
GzipHandler gzipHandler = new GzipHandler();
gzipHandler.setHandler(handlers);
......
......@@ -94,9 +94,9 @@ public class CenterServerTools extends JettySeverTools {
server.setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize", MAX_FORM_CONTENT_SIZE);
if (BooleanUtils.isTrue(centerServer.getSslEnable())) {
addHttpsConnector(server, centerServer.getPort(), true);
addHttpsConnector(server, centerServer.getPort(), false);
} else {
addHttpConnector(server, centerServer.getPort(), true);
addHttpConnector(server, centerServer.getPort(), false);
}
GzipHandler gzipHandler = new GzipHandler();
......
......@@ -125,9 +125,9 @@ public class WebServerTools extends JettySeverTools {
threadPool.setMaxThreads(THREAD_POOL_SIZE_MAX);
Server server = new Server(threadPool);
if (BooleanUtils.isTrue(webServer.getSslEnable())) {
addHttpsConnector(server, webServer.getPort(), true);
addHttpsConnector(server, webServer.getPort(), false);
} else {
addHttpConnector(server, webServer.getPort(), true);
addHttpConnector(server, webServer.getPort(), false);
}
GzipHandler gzipHandler = new GzipHandler();
gzipHandler.setHandler(handlers);
......
......@@ -43,7 +43,9 @@ public class PersonFactory extends AbstractFactory {
o = (Person) optional.get();
} else {
o = this.pickObject(flag);
CacheManager.put(cache, cacheKey, o);
if (null != o) {
CacheManager.put(cache, cacheKey, o);
}
}
return o;
}
......@@ -88,8 +90,8 @@ public class PersonFactory extends AbstractFactory {
list.add((Person) optional.get());
} else {
Person o = this.pickObject(str);
CacheManager.put(cache, cacheKey, o);
if (null != o) {
CacheManager.put(cache, cacheKey, o);
list.add(o);
}
}
......@@ -121,22 +123,22 @@ public class PersonFactory extends AbstractFactory {
List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
if (list.size() == 1) {
return list.get(0);
}else if(list.size() > 1){
String temp = "";
for (int i = 0; i < list.size(); i++) {
if(temp.equalsIgnoreCase("")) {
temp = list.get(i);
}else{
temp = temp + "," + list.get(i);
}
}
return temp;
}else {
} else if (list.size() > 1) {
return StringUtils.join(list, ",");
// String temp = "";
// for (int i = 0; i < list.size(); i++) {
// if (temp.equalsIgnoreCase("")) {
// temp = list.get(i);
// } else {
// temp = temp + "," + list.get(i);
// }
// }
// return temp;
} else {
return null;
}
}
public String getPersonIdWithQywxid(String credential) throws Exception {
EntityManager em = this.entityManagerContainer().get(Person.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
......@@ -147,17 +149,18 @@ public class PersonFactory extends AbstractFactory {
List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
if (list.size() == 1) {
return list.get(0);
}else if(list.size() > 1){
String temp = "";
for (int i = 0; i < list.size(); i++) {
if(temp.equalsIgnoreCase("")) {
temp = list.get(i);
}else{
temp = temp + "," + list.get(i);
}
}
return temp;
}else {
} else if (list.size() > 1) {
return StringUtils.join(list, ",");
// String temp = "";
// for (int i = 0; i < list.size(); i++) {
// if (temp.equalsIgnoreCase("")) {
// temp = list.get(i);
// } else {
// temp = temp + "," + list.get(i);
// }
// }
// return temp;
} else {
return null;
}
}
......
......@@ -1028,8 +1028,8 @@ public class Business {
return true;
}
public boolean readableWithWorkOrWorkCompleted(EffectivePerson effectivePerson, String workOrWorkCompleted,
PromptException entityException) throws Exception {
public boolean readableWithWorkOrWorkCompleted(EffectivePerson effectivePerson, String workOrWorkCompleted)
throws Exception {
if (effectivePerson.isManager()) {
return true;
}
......@@ -1065,11 +1065,7 @@ public class Business {
processId = work.getProcess();
}
if (StringUtils.isEmpty(job)) {
if (null != entityException) {
throw entityException;
} else {
return false;
}
return false;
}
if (effectivePerson.isPerson(creatorPerson)) {
return true;
......@@ -1084,9 +1080,9 @@ public class Business {
effectivePerson.getDistinguishedName(), TaskCompleted.job_FIELDNAME, job) == 0) {
if (emc.countEqualAndEqual(ReadCompleted.class, ReadCompleted.person_FIELDNAME,
effectivePerson.getDistinguishedName(), ReadCompleted.job_FIELDNAME, job) == 0) {
Application application = application().pick(applicationId);
Process process = process().pick(processId);
if (!canManageApplicationOrProcess(effectivePerson, application, process)) {
Application a = application().pick(applicationId);
Process p = process().pick(processId);
if (BooleanUtils.isFalse(canManageApplicationOrProcess(effectivePerson, a, p))) {
return false;
}
}
......
......@@ -148,7 +148,7 @@ public class WorkLogFactory extends AbstractFactory {
// }
public List<String> listWithFromActivityTokenForward(String activityToken) throws Exception {
List<String> results = SetUniqueList.setUniqueList(new ArrayList<String>());
List<String> results = SetUniqueList.setUniqueList(new ArrayList<>());
this.listWithFromActivityTokenForward(activityToken, results);
return results;
}
......
......@@ -4,6 +4,7 @@ import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.project.config.StorageMapping;
import com.x.base.core.project.exception.ExceptionEntityNotExist;
import com.x.base.core.project.exception.ExceptionStorageMappingNotExist;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WrapBoolean;
......@@ -12,6 +13,8 @@ import com.x.base.core.project.logger.LoggerFactory;
import com.x.processplatform.assemble.surface.ThisApplication;
import com.x.processplatform.core.entity.content.Attachment;
import io.swagger.v3.oas.annotations.media.Schema;
class ActionAvailable extends BaseAction {
private static final Logger LOGGER = LoggerFactory.getLogger(ActionAvailable.class);
......@@ -19,21 +22,26 @@ class ActionAvailable extends BaseAction {
ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
LOGGER.debug("execute:{}, id:{}.", effectivePerson::getDistinguishedName, () -> id);
ActionResult<Wo> result = new ActionResult<>();
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<Wo> result = new ActionResult<>();
Attachment o = emc.find(id, Attachment.class);
if (null == o) {
throw new ExceptionEntityNotExist(id, Attachment.class);
}
StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class, o.getStorage());
if (null == mapping) {
throw new ExceptionStorageMappingNotExist(o.getStorage());
}
Boolean exist = o.existContent(mapping);
Wo wo = new Wo();
wo.setValue(exist);
result.setData(wo);
return result;
}
return result;
}
@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.attachment.ActionAvailable$Wo")
public static class Wo extends WrapBoolean {
private static final long serialVersionUID = -3000199187660647510L;
......
......@@ -10,11 +10,13 @@ import java.util.Map;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.project.config.StorageMapping;
import com.x.base.core.project.exception.ExceptionAccessDenied;
import com.x.base.core.project.exception.ExceptionEntityExist;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WoFile;
......@@ -28,40 +30,22 @@ import com.x.processplatform.core.entity.content.Attachment;
import com.x.processplatform.core.entity.content.Work;
import com.x.processplatform.core.entity.content.WorkCompleted;
class ActionBatchDownloadWithWorkOrWorkCompleted extends BaseAction {
private static final String SITE_SEPARATOR = "~";
import io.swagger.v3.oas.annotations.media.Schema;
private static final String FILE_SEPARATOR = ",";
class ActionBatchDownloadWithWorkOrWorkCompleted extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionBatchDownloadWithWorkOrWorkCompleted.class);
private static final Logger LOGGER = LoggerFactory.getLogger(ActionBatchDownloadWithWorkOrWorkCompleted.class);
ActionResult<Wo> execute(EffectivePerson effectivePerson, String workId, String site, String fileName, String flag)
throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<Wo> result = new ActionResult<>();
Business business = new Business(emc);
String title = "";
String job = "";
Work work = emc.fetch(workId, Work.class);
if (work == null) {
WorkCompleted workCompleted = emc.fetch(workId, WorkCompleted.class);
if (null == workCompleted) {
throw new Exception("workId: " + workId + " not exist in work or workCompleted");
}
if (!business.readable(effectivePerson, workCompleted)) {
throw new ExceptionWorkCompletedAccessDenied(effectivePerson.getDistinguishedName(),
workCompleted.getTitle(), workCompleted.getId());
}
title = workCompleted.getTitle();
job = workCompleted.getJob();
} else {
if (!business.readable(effectivePerson, work)) {
throw new ExceptionAccessDenied(effectivePerson, work);
}
title = work.getTitle();
job = work.getJob();
}
Pair<String, String> pair = getTitleAndJob(effectivePerson, business, workId, emc, work);
String title = pair.getLeft();
String job = pair.getRight();
List<Attachment> attachmentList;
if (StringUtils.isBlank(site) || EMPTY_SYMBOL.equals(site)) {
attachmentList = business.attachment().listWithJobObject(job);
......@@ -82,7 +66,7 @@ class ActionBatchDownloadWithWorkOrWorkCompleted extends BaseAction {
}
}
if (StringUtils.isBlank(fileName)) {
if(title.length()>60){
if (title.length() > 60) {
title = title.substring(0, 60);
}
fileName = title + DateTools.format(new Date(), DateTools.formatCompact_yyyyMMddHHmmss) + ".zip";
......@@ -97,8 +81,9 @@ class ActionBatchDownloadWithWorkOrWorkCompleted extends BaseAction {
this.assembleFile(business, map, flag);
fileName = StringUtils.replaceEach(fileName,
new String[] { "/",":","*","?","<<",">>","|","<",">","\\" }, new String[] { "","","","","","","","","","" });
logger.info("batchDown to {},att size {}, from work {}", fileName, attachmentList.size(), workId);
new String[] { "/", ":", "*", "?", "<<", ">>", "|", "<", ">", "\\" },
new String[] { "", "", "", "", "", "", "", "", "", "" });
LOGGER.info("batchDown to {},att size {}, from work {}", fileName, attachmentList.size(), workId);
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
business.downToZip(readableAttachmentList, os, map);
byte[] bs = os.toByteArray();
......@@ -110,12 +95,32 @@ class ActionBatchDownloadWithWorkOrWorkCompleted extends BaseAction {
}
}
private Pair<String, String> getTitleAndJob(EffectivePerson effectivePerson, Business business, String workId,
EntityManagerContainer emc, Work work) throws Exception {
if (work != null) {
if (!business.readable(effectivePerson, work)) {
throw new ExceptionAccessDenied(effectivePerson, work);
}
return Pair.of(work.getTitle(), work.getJob());
} else {
WorkCompleted workCompleted = emc.fetch(workId, WorkCompleted.class);
if (null == workCompleted) {
throw new ExceptionEntityExist(workId);
}
if (!business.readable(effectivePerson, workCompleted)) {
throw new ExceptionWorkCompletedAccessDenied(effectivePerson.getDistinguishedName(),
workCompleted.getTitle(), workCompleted.getId());
}
return Pair.of(workCompleted.getTitle(), workCompleted.getJob());
}
}
private void assembleFile(Business business, Map<String, byte[]> map, String files) throws Exception {
EntityManagerContainer emc = business.entityManagerContainer();
if (StringUtils.isNotEmpty(files)) {
String[] flagList = files.split(FILE_SEPARATOR);
for (String flag : flagList) {
if(StringUtils.isNotBlank(flag)) {
if (StringUtils.isNotBlank(flag)) {
GeneralFile generalFile = emc.find(flag.trim(), GeneralFile.class);
if (generalFile != null) {
StorageMapping gfMapping = ThisApplication.context().storageMappings().get(GeneralFile.class,
......@@ -132,8 +137,11 @@ class ActionBatchDownloadWithWorkOrWorkCompleted extends BaseAction {
}
}
@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.attachment.ActionBatchDownloadWithWorkOrWorkCompleted$Wo")
public static class Wo extends WoFile {
private static final long serialVersionUID = -4350231304623811352L;
public Wo(byte[] bytes, String contentType, String contentDisposition) {
super(bytes, contentType, contentDisposition);
}
......
......@@ -15,6 +15,7 @@ import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.project.config.StorageMapping;
import com.x.base.core.project.exception.ExceptionAccessDenied;
import com.x.base.core.project.exception.ExceptionEntityExist;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WoFile;
......@@ -30,10 +31,6 @@ import com.x.processplatform.core.entity.content.WorkCompleted;
class ActionBatchDownloadWithWorkOrWorkCompletedStream extends BaseAction {
private static final String SITE_SEPARATOR = "~";
private static final String FILE_SEPARATOR = ",";
private static Logger logger = LoggerFactory.getLogger(ActionBatchDownloadWithWorkOrWorkCompletedStream.class);
ActionResult<Wo> execute(EffectivePerson effectivePerson, String workId, String site, String fileName, String flag)
......@@ -47,7 +44,7 @@ class ActionBatchDownloadWithWorkOrWorkCompletedStream extends BaseAction {
if (work == null) {
WorkCompleted workCompleted = emc.find(workId, WorkCompleted.class);
if (null == workCompleted) {
throw new Exception("workId: " + workId + " not exist in work or workCompleted");
throw new ExceptionEntityExist(workId);
}
if (!business.readable(effectivePerson, workCompleted)) {
throw new ExceptionWorkCompletedAccessDenied(effectivePerson.getDistinguishedName(),
......@@ -82,7 +79,7 @@ class ActionBatchDownloadWithWorkOrWorkCompletedStream extends BaseAction {
}
}
if (StringUtils.isBlank(fileName)) {
if(title.length()>60){
if (title.length() > 60) {
title = title.substring(0, 60);
}
fileName = title + DateTools.format(new Date(), DateTools.formatCompact_yyyyMMddHHmmss) + ".zip";
......@@ -97,7 +94,8 @@ class ActionBatchDownloadWithWorkOrWorkCompletedStream extends BaseAction {
this.assembleFile(business, map, flag);
fileName = StringUtils.replaceEach(fileName,
new String[] { "/",":","*","?","<<",">>","|","<",">","\\" }, new String[] { "","","","","","","","","","" });
new String[] { "/", ":", "*", "?", "<<", ">>", "|", "<", ">", "\\" },
new String[] { "", "", "", "", "", "", "", "", "", "" });
logger.info("batchDown to {},att size {}, from work {}, has form {}", fileName, attachmentList.size(),
workId, map.size());
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
......@@ -116,7 +114,7 @@ class ActionBatchDownloadWithWorkOrWorkCompletedStream extends BaseAction {
if (StringUtils.isNotEmpty(files)) {
String[] flagList = files.split(FILE_SEPARATOR);
for (String flag : flagList) {
if(StringUtils.isNotBlank(flag)) {
if (StringUtils.isNotBlank(flag)) {
GeneralFile generalFile = emc.find(flag.trim(), GeneralFile.class);
if (generalFile != null) {
StorageMapping gfMapping = ThisApplication.context().storageMappings().get(GeneralFile.class,
......
package com.x.processplatform.assemble.surface.jaxrs.attachment;
import java.util.List;
import com.x.base.core.container.EntityManagerContainer;
......@@ -30,14 +29,13 @@ class ActionChangeOrderNumber extends BaseAction {
if (null == attachment) {
throw new ExceptionEntityNotExist(id, Attachment.class);
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workId,
new ExceptionEntityNotExist(workId))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workId)) {
throw new ExceptionAccessDenied(effectivePerson);
}
List<String> identities = business.organization().identity().listWithPerson(effectivePerson);
List<String> units = business.organization().unit().listWithPerson(effectivePerson);
boolean canEdit = this.edit(attachment, effectivePerson, identities, units, business);
if(!canEdit){
if (!canEdit) {
throw new ExceptionAccessDenied(effectivePerson, attachment);
}
emc.beginTransaction(Attachment.class);
......
......@@ -23,15 +23,14 @@ class ActionChangeSite extends BaseAction {
throw new ExceptionEntityNotExist(id, Attachment.class);
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workId,
new ExceptionEntityNotExist(workId))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workId)) {
throw new ExceptionAccessDenied(effectivePerson);
}
List<String> identities = business.organization().identity().listWithPerson(effectivePerson);
List<String> units = business.organization().unit().listWithPerson(effectivePerson);
boolean canEdit = this.edit(attachment, effectivePerson, identities, units, business);
if(!canEdit){
if (!canEdit) {
throw new ExceptionAccessDenied(effectivePerson, attachment);
}
emc.beginTransaction(Attachment.class);
......
......@@ -58,8 +58,7 @@ class ActionDocToWord extends BaseAction {
if (null == work) {
throw new ExceptionEntityNotExist(workId, Work.class);
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, work.getId(),
new ExceptionEntityNotExist(work.getId()))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, work.getId())) {
throw new ExceptionAccessDenied(effectivePerson);
}
}
......
......@@ -69,8 +69,7 @@ class ActionDocToWordWorkOrWorkCompleted extends BaseAction {
if ((null == work) && (null == workCompleted)) {
throw new ExceptionEntityNotExist(workOrWorkCompleted, Work.class);
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted)) {
throw new ExceptionAccessDenied(effectivePerson);
}
}
......
......@@ -12,13 +12,21 @@ import com.x.base.core.project.exception.ExceptionEntityNotExist;
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.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.Attachment;
import com.x.processplatform.core.entity.content.Work;
class ActionGetWithWork extends BaseAction {
private static final Logger LOGGER = LoggerFactory.getLogger(ActionGetWithWork.class);
ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, String workId) throws Exception {
LOGGER.debug("execute:{}, id:{}, workId:{}.", effectivePerson::getDistinguishedName, () -> id, () -> workId);
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<Wo> result = new ActionResult<>();
Business business = new Business(emc);
......@@ -31,8 +39,7 @@ class ActionGetWithWork extends BaseAction {
throw new ExceptionEntityNotExist(id, Attachment.class);
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, work.getId(),
new ExceptionEntityNotExist(work.getId()))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, work.getId())) {
throw new ExceptionAccessDenied(effectivePerson);
}
......
......@@ -31,8 +31,7 @@ class ActionGetWithWorkCompleted extends BaseAction {
throw new ExceptionEntityNotExist(id, Attachment.class);
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workCompleted.getId(),
new ExceptionEntityNotExist(workCompleted.getId()))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workCompleted.getId())) {
throw new ExceptionAccessDenied(effectivePerson);
}
......
......@@ -26,8 +26,7 @@ class ActionGetWithWorkOrWorkCompleted extends BaseAction {
throw new ExceptionEntityNotExist(id, Attachment.class);
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workId,
new ExceptionEntityNotExist(workId))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workId)) {
throw new ExceptionAccessDenied(effectivePerson);
}
......
......@@ -55,8 +55,7 @@ class ActionUploadWithUrl extends BaseAction {
if(StringUtils.isEmpty(wi.getSite())){
throw new ExceptionEntityFieldEmpty(Attachment.class, wi.getSite());
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, wi.getWorkId(),
new ExceptionEntityNotExist(wi.getWorkId()))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, wi.getWorkId())) {
throw new ExceptionAccessDenied(effectivePerson, wi.getWorkId());
}
String person = effectivePerson.getDistinguishedName();
......
......@@ -38,6 +38,10 @@ abstract class BaseAction extends StandardJaxrsAction {
protected static final String OFD_ATT_KEY = ".ofd";
protected static final String SITE_SEPARATOR = "~";
protected static final String FILE_SEPARATOR = ",";
public static class WiExtraParam {
private String site;
......@@ -288,8 +292,7 @@ abstract class BaseAction extends StandardJaxrsAction {
Boolean value = false;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag,
new ExceptionEntityNotExist(flag));
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag);
} catch (Exception e) {
logger.error(e);
}
......
......@@ -194,8 +194,7 @@ class V2UploadWorkOrWorkCompleted extends BaseAction {
Boolean value = false;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag,
new ExceptionEntityNotExist(flag));
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag);
} catch (Exception e) {
logger.error(e);
}
......
package com.x.processplatform.assemble.surface.jaxrs.control;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
......@@ -136,20 +139,54 @@ class ActionGetWorkOrWorkCompleted extends BaseAction {
if (BooleanUtils.isTrue(PropertyTools.getOrElse(activity, Manual.allowAddSplit_FIELDNAME, Boolean.class, false))
&& BooleanUtils.isTrue(work.getSplitting())) {
Node node = this.workLogTree(business, work.getJob()).location(work);
if (null != node) {
Nodes ups = node.upTo(ActivityType.manual, ActivityType.agent, ActivityType.choice, ActivityType.delay,
ActivityType.embed, ActivityType.invoke, ActivityType.parallel, ActivityType.split);
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!");
System.out.println(gson.toJson(ups));
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!");
for (Node o : ups) {
if (this.hasTaskCompletedWithActivityToken(business, effectivePerson,
o.getWorkLog().getFromActivityToken())) {
wo.setAllowAddSplit(true);
break;
Nodes nodes = new Nodes();
nodes.add(node);
for (int i = 0; i < work.getSplitTokenList().size(); i++) {
List<Node> temps = new ArrayList<>();
for (Node n : nodes) {
Nodes ups = n.upTo(ActivityType.split);
temps.addAll(ups);
for (Node u : ups) {
Nodes manuals = u.upTo(ActivityType.manual);
for (Node m : manuals) {
if (this.hasTaskCompletedWithActivityToken(business, effectivePerson,
m.getWorkLog().getFromActivityToken())) {
wo.setAllowAddSplit(true);
break;
}
}
}
}
nodes.clear();
nodes.addAll(temps);
}
// if (null != node) {
// Nodes ups = node.upTo(ActivityType.split,
// Arrays.asList(ActivityType.manual, ActivityType.agent, ActivityType.choice, ActivityType.delay,
// ActivityType.embed, ActivityType.invoke, ActivityType.parallel));
// for (Node o : ups) {
// System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!111");
// System.out.println(o.getWorkLog().getFromActivityName());
// System.out.println(
// o.getWorkLog().getFromActivityToken() + "->" + o.getWorkLog().getArrivedActivityName());
// System.out.println(o.getWorkLog().getWork());
// System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!111");
// }
// for (Node o : ups) {
// System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!222");
// System.out.println(
// o.getWorkLog().getFromActivityToken() + "->" + o.getWorkLog().getArrivedActivityName());
// System.out.println(o.getWorkLog().getFromActivityToken());
// System.out.println(o.getWorkLog().getWork());
// System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!222");
// if (this.hasTaskCompletedWithActivityToken(business, effectivePerson,
// o.getWorkLog().getFromActivityToken())) {
// wo.setAllowAddSplit(true);
// break;
// }
// }
// }
}
// 是否可以召回
if (BooleanUtils
......
......@@ -4,7 +4,6 @@ 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.exception.ExceptionEntityNotExist;
import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.StandardJaxrsAction;
......@@ -168,8 +167,7 @@ abstract class BaseAction extends StandardJaxrsAction {
Boolean value = false;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag,
new ExceptionEntityNotExist(flag));
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag);
} catch (Exception e) {
logger.error(e);
}
......
......@@ -28,8 +28,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
Business business = new Business(emc);
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted)) {
throw new ExceptionAccessDenied(effectivePerson);
}
......
......@@ -10,7 +10,6 @@ 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.exception.ExceptionAccessDenied;
import com.x.base.core.project.exception.ExceptionEntityNotExist;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.logger.Logger;
......@@ -29,8 +28,7 @@ class ActionListWithWorkOrWorkCompletedCategory extends BaseAction {
Business business = new Business(emc);
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted)) {
throw new ExceptionAccessDenied(effectivePerson);
}
......
......@@ -29,8 +29,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
Business business = new Business(emc);
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted)) {
throw new ExceptionAccessDenied(effectivePerson);
}
......
......@@ -28,8 +28,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
Business business = new Business(emc);
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted)) {
throw new ExceptionAccessDenied(effectivePerson);
}
......
......@@ -92,8 +92,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
Boolean value = false;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag,
new ExceptionEntityNotExist(flag));
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag);
} catch (Exception e) {
logger.error(e);
}
......
......@@ -43,8 +43,7 @@ class ActionListWithJob extends BaseAction {
}
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted)) {
throw new ExceptionAccessDenied(effectivePerson);
}
......
......@@ -24,8 +24,8 @@ class ActionListWithJobPaging extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionListWithJobPaging.class);
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String job, Integer page,
Integer size) throws Exception {
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String job, Integer page, Integer size)
throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<List<Wo>> result = new ActionResult<>();
......@@ -33,19 +33,18 @@ class ActionListWithJobPaging extends BaseAction {
String workOrWorkCompleted = "";
List<String> works = business.work().listWithJob(job);
if(ListTools.isNotEmpty(works)){
if (ListTools.isNotEmpty(works)) {
workOrWorkCompleted = works.get(0);
}else{
} else {
works = business.workCompleted().listWithJob(job);
if(ListTools.isNotEmpty(works)){
if (ListTools.isNotEmpty(works)) {
workOrWorkCompleted = works.get(0);
}else{
} else {
throw new ExceptionEntityNotExist(job);
}
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted)) {
throw new ExceptionAccessDenied(effectivePerson);
}
......
......@@ -84,8 +84,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
Boolean value = false;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag,
new ExceptionEntityNotExist(flag));
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag);
} catch (Exception e) {
logger.error(e);
}
......
......@@ -16,7 +16,6 @@ import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.config.Config;
import com.x.base.core.project.exception.ExceptionAccessDenied;
import com.x.base.core.project.exception.ExceptionEntityNotExist;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.logger.Logger;
......@@ -28,18 +27,22 @@ import com.x.processplatform.core.entity.content.Record;
import com.x.processplatform.core.entity.content.Task;
import com.x.processplatform.core.entity.content.WorkCompleted;
import io.swagger.v3.oas.annotations.media.Schema;
class ActionListWithWorkOrWorkCompletedPaging extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionListWithWorkOrWorkCompletedPaging.class);
private static final Logger LOGGER = LoggerFactory.getLogger(ActionListWithWorkOrWorkCompletedPaging.class);
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String workOrWorkCompleted, Integer page,
Integer size) throws Exception {
LOGGER.debug("execute:{}, workOrWorkCompleted:{}, page:{}, size:{}.", effectivePerson::getDistinguishedName,
() -> workOrWorkCompleted, () -> page, () -> size);
ActionResult<List<Wo>> result = new ActionResult<>();
CompletableFuture<List<Wo>> listFuture = this.listFuture(workOrWorkCompleted, page, size);
CompletableFuture<Boolean> checkControlFuture = this.checkControlFuture(effectivePerson,
workOrWorkCompleted);
CompletableFuture<Boolean> checkControlFuture = this.checkControlFuture(effectivePerson, workOrWorkCompleted);
if (BooleanUtils
.isFalse(checkControlFuture.get(Config.processPlatform().getAsynchronousTimeout(), TimeUnit.SECONDS))) {
......@@ -74,13 +77,11 @@ class ActionListWithWorkOrWorkCompletedPaging extends BaseAction {
Record.order_FIELDNAME);
}
}
for (Task task : emc.listEqual(Task.class, Task.job_FIELDNAME, job).stream()
.sorted(Comparator.comparing(Task::getStartTime)).collect(Collectors.toList())) {
wos.add(Wo.copier.copy(this.taskToRecord(task)));
}
wos = emc.listEqual(Task.class, Task.job_FIELDNAME, job).stream()
.sorted(Comparator.comparing(Task::getStartTime, Comparator.naturalOrder()))
.map(o -> Wo.copier.copy(taskToRecord(o))).collect(Collectors.toList());
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
return wos;
}, ThisApplication.threadPool());
......@@ -91,10 +92,9 @@ class ActionListWithWorkOrWorkCompletedPaging extends BaseAction {
Boolean value = false;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag,
new ExceptionEntityNotExist(flag));
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
return value;
}, ThisApplication.threadPool());
......@@ -116,6 +116,7 @@ class ActionListWithWorkOrWorkCompletedPaging extends BaseAction {
return o;
}
@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.record.ActionListWithWorkOrWorkCompletedPaging$Wo")
public static class Wo extends Record {
private static final long serialVersionUID = -7666329770246726197L;
......
......@@ -8,7 +8,6 @@ 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.exception.ExceptionAccessDenied;
import com.x.base.core.project.exception.ExceptionEntityNotExist;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.processplatform.assemble.surface.Business;
......@@ -20,8 +19,7 @@ class ActionGetWithWorkOrWorkCompleted extends BaseAction {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<Wo> result = new ActionResult<>();
Business business = new Business(emc);
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted)) {
throw new ExceptionAccessDenied(effectivePerson);
}
String job = business.job().findWithWorkOrWorkCompleted(workOrWorkCompleted);
......
......@@ -23,7 +23,7 @@ class ActionListPrev extends BaseAction {
LOGGER.debug("execute:{}, id:{}, count:{}.", effectivePerson::getDistinguishedName, () -> id, () -> count);
EqualsTerms equals = new EqualsTerms();
equals.put(Task.person_FIELDNAME, effectivePerson.getDistinguishedName());
return this.standardListPrev(Wo.copier, id, count, Task.sequence_FIELDNAME, equals, null, null, null, null,
return this.standardListPrev(Wo.copier, id, count, JpaObject.sequence_FIELDNAME, equals, null, null, null, null,
null, null, null, true, DESC);
}
......
......@@ -28,8 +28,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
Business business = new Business(emc);
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted)) {
throw new ExceptionAccessDenied(effectivePerson);
}
......
......@@ -12,7 +12,6 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.apache.commons.collections4.list.SetUniqueList;
import org.apache.commons.lang3.BooleanUtils;
import com.x.base.core.container.EntityManagerContainer;
......@@ -27,7 +26,6 @@ import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.tools.ListTools;
import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.ProcessingType;
import com.x.processplatform.core.entity.content.Task;
import com.x.processplatform.core.entity.content.TaskCompleted;
import com.x.processplatform.core.entity.content.Work;
......@@ -35,6 +33,8 @@ import com.x.processplatform.core.entity.content.WorkCompleted;
import com.x.processplatform.core.entity.content.WorkCompleted_;
import com.x.processplatform.core.entity.content.WorkLog;
import io.swagger.v3.oas.annotations.media.Schema;
class ActionReference extends BaseAction {
ActionResult<Wo> execute(EffectivePerson effectivePerson, String id) throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
......@@ -115,12 +115,14 @@ class ActionReference extends BaseAction {
wo.setTaskCompletedList(WoTaskCompleted.copier.copy(os));
}
// @TODO
private List<WoWork> listWork(Business business, TaskCompleted taskCompleted) throws Exception {
List<String> ids = business.workLog().listWithFromActivityTokenForward(taskCompleted.getActivityToken());
List<String> workIds = SetUniqueList.setUniqueList(new ArrayList<String>());
for (WorkLog o : business.entityManagerContainer().list(WorkLog.class, ids)) {
workIds.add(o.getWork());
}
List<String> workIds = business.work().listWithJob(taskCompleted.getJob());
// List<String> ids = business.workLog().listWithFromActivityTokenForward(taskCompleted.getActivityToken());
// List<String> workIds = SetUniqueList.setUniqueList(new ArrayList<String>());
// for (WorkLog o : business.entityManagerContainer().list(WorkLog.class, ids)) {
// workIds.add(o.getWork());
// }
return WoWork.copier.copy(business.entityManagerContainer().list(Work.class, workIds));
}
......@@ -139,8 +141,11 @@ class ActionReference extends BaseAction {
return wos;
}
@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.taskcompleted.ActionReference$Wo")
public static class Wo extends GsonPropertyObject {
private static final long serialVersionUID = 6314327570968988398L;
@FieldDescribe("已办对象")
private WoTaskCompleted taskCompleted;
......
......@@ -122,8 +122,7 @@ abstract class BaseAction extends StandardJaxrsAction {
Boolean value = false;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag,
new ExceptionEntityNotExist(flag));
value = business.readableWithWorkOrWorkCompleted(effectivePerson, flag);
} catch (Exception e) {
logger.error(e);
}
......
......@@ -2,7 +2,6 @@ package com.x.processplatform.assemble.surface.jaxrs.work;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.BooleanUtils;
......@@ -16,7 +15,6 @@ import com.x.base.core.project.Applications;
import com.x.base.core.project.x_processplatform_service_processing;
import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.config.Config;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WoId;
......@@ -26,14 +24,14 @@ 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.surface.Business;
import com.x.processplatform.assemble.surface.RecordBuilder;
import com.x.processplatform.assemble.surface.ThisApplication;
import com.x.processplatform.assemble.surface.WorkControl;
import com.x.processplatform.core.entity.content.Record;
import com.x.processplatform.core.entity.content.RecordProperties.NextManual;
import com.x.processplatform.core.entity.content.Task;
import com.x.processplatform.core.entity.content.TaskCompleted;
import com.x.processplatform.core.entity.content.Work;
import com.x.processplatform.core.entity.content.WorkLog;
import com.x.processplatform.core.entity.element.Activity;
import com.x.processplatform.core.entity.element.ActivityType;
import com.x.processplatform.core.entity.element.Manual;
import com.x.processplatform.core.entity.element.util.WorkLogTree;
......@@ -109,7 +107,8 @@ class V2AddSplit extends BaseAction {
List<String> ids = addSplit();
processing(ids);
record();
concreteRecord(addSplitWorkLog);
// record();
Wo wo = Wo.copier.copy(rec);
result.setData(wo);
return result;
......@@ -157,6 +156,9 @@ class V2AddSplit extends BaseAction {
}
private void processing(List<String> ids) throws Exception {
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2222");
System.out.println(gson.toJson(ids));
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2222");
for (String id : ids) {
ProcessingAttributes processingAttributes = new ProcessingAttributes();
processingAttributes.setType(ProcessingAttributes.TYPE_ADDSPLIT);
......@@ -171,63 +173,79 @@ class V2AddSplit extends BaseAction {
}
}
private void record() throws Exception {
private void concreteRecord(WorkLog workLog) throws Exception {
List<String> newlyTaskIds = new ArrayList<>();
Activity activity = null;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
final List<String> nextTaskIdentities = new ArrayList<>();
rec = new Record(addSplitWorkLog);
rec.setPerson(effectivePerson.getDistinguishedName());
rec.setType(Record.TYPE_ADDSPLIT);
rec.getProperties().setElapsed(
Config.workTime().betweenMinutes(rec.getProperties().getStartTime(), rec.getRecordTime()));
/* 需要记录处理人,先查看当前用户有没有之前处理过的信息,如果没有,取默认身份 */
TaskCompleted existTaskCompleted = emc.firstEqualAndEqual(TaskCompleted.class, TaskCompleted.job_FIELDNAME,
work.getJob(), TaskCompleted.person_FIELDNAME, effectivePerson.getDistinguishedName());
rec.setPerson(effectivePerson.getDistinguishedName());
if (null != existTaskCompleted) {
rec.setIdentity(existTaskCompleted.getIdentity());
rec.setUnit(existTaskCompleted.getUnit());
} else {
rec.setIdentity(
business.organization().identity().getMajorWithPerson(effectivePerson.getDistinguishedName()));
rec.setUnit(business.organization().unit().getWithIdentity(rec.getIdentity()));
}
List<String> ids = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob());
ids = ListUtils.subtract(ids, existTaskIds);
List<Task> list = emc.fetch(ids, Task.class,
ListTools.toList(Task.identity_FIELDNAME, Task.job_FIELDNAME, Task.work_FIELDNAME,
Task.activity_FIELDNAME, Task.activityAlias_FIELDNAME, Task.activityName_FIELDNAME,
Task.activityToken_FIELDNAME, Task.activityType_FIELDNAME, Task.identity_FIELDNAME));
list.stream().collect(Collectors.groupingBy(Task::getActivity, Collectors.toList())).entrySet().stream()
.forEach(o -> {
Task task = o.getValue().get(0);
NextManual nextManual = new NextManual();
nextManual.setActivity(task.getActivity());
nextManual.setActivityAlias(task.getActivityAlias());
nextManual.setActivityName(task.getActivityName());
nextManual.setActivityToken(task.getActivityToken());
nextManual.setActivityType(task.getActivityType());
for (Task t : o.getValue()) {
nextManual.getTaskIdentityList().add(t.getIdentity());
nextTaskIdentities.add(t.getIdentity());
}
rec.getProperties().getNextManualList().add(nextManual);
});
/* 去重 */
rec.getProperties().setNextManualTaskIdentityList(ListTools.trim(nextTaskIdentities, true, true));
}
WoId resp = ThisApplication.context().applications()
.postQuery(effectivePerson.getDebugger(), x_processplatform_service_processing.class,
Applications.joinQueryUri("record", "job", work.getJob()), rec, this.work.getJob())
.getData(WoId.class);
if (StringUtils.isBlank(resp.getId())) {
throw new ExceptionRecord(this.work.getId());
newlyTaskIds = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob());
newlyTaskIds = ListUtils.subtract(newlyTaskIds, existTaskIds);
activity = business.getActivity(workLog.getArrivedActivity(), workLog.getArrivedActivityType());
}
this.rec = RecordBuilder.ofWorkProcessing(Record.TYPE_ADDSPLIT, workLog, effectivePerson, activity,
newlyTaskIds);
RecordBuilder.processing(rec);
}
// private void record() throws Exception {
// try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
// Business business = new Business(emc);
// final List<String> nextTaskIdentities = new ArrayList<>();
// rec = new Record(addSplitWorkLog);
// rec.setPerson(effectivePerson.getDistinguishedName());
// rec.setType(Record.TYPE_ADDSPLIT);
// rec.getProperties().setElapsed(
// Config.workTime().betweenMinutes(rec.getProperties().getStartTime(), rec.getRecordTime()));
// /* 需要记录处理人,先查看当前用户有没有之前处理过的信息,如果没有,取默认身份 */
// TaskCompleted existTaskCompleted = emc.firstEqualAndEqual(TaskCompleted.class, TaskCompleted.job_FIELDNAME,
// work.getJob(), TaskCompleted.person_FIELDNAME, effectivePerson.getDistinguishedName());
// rec.setPerson(effectivePerson.getDistinguishedName());
// if (null != existTaskCompleted) {
// rec.setIdentity(existTaskCompleted.getIdentity());
// rec.setUnit(existTaskCompleted.getUnit());
// } else {
// rec.setIdentity(
// business.organization().identity().getMajorWithPerson(effectivePerson.getDistinguishedName()));
// rec.setUnit(business.organization().unit().getWithIdentity(rec.getIdentity()));
// }
// List<String> ids = emc.idsEqual(Task.class, Task.job_FIELDNAME, work.getJob());
// ids = ListUtils.subtract(ids, existTaskIds);
// List<Task> list = emc.fetch(ids, Task.class,
// ListTools.toList(Task.identity_FIELDNAME, Task.job_FIELDNAME, Task.work_FIELDNAME,
// Task.activity_FIELDNAME, Task.activityAlias_FIELDNAME, Task.activityName_FIELDNAME,
// Task.activityToken_FIELDNAME, Task.activityType_FIELDNAME, Task.identity_FIELDNAME));
// list.stream().collect(Collectors.groupingBy(Task::getActivity, Collectors.toList())).entrySet().stream()
// .forEach(o -> {
// Task task = o.getValue().get(0);
// NextManual nextManual = new NextManual();
// nextManual.setActivity(task.getActivity());
// nextManual.setActivityAlias(task.getActivityAlias());
// nextManual.setActivityName(task.getActivityName());
// nextManual.setActivityToken(task.getActivityToken());
// nextManual.setActivityType(task.getActivityType());
// for (Task t : o.getValue()) {
// nextManual.getTaskIdentityList().add(t.getIdentity());
// nextTaskIdentities.add(t.getIdentity());
// }
// rec.getProperties().getNextManualList().add(nextManual);
// });
// /* 去重 */
// rec.getProperties().setNextManualTaskIdentityList(ListTools.trim(nextTaskIdentities, true, true));
// }
// WoId resp = ThisApplication.context().applications()
// .postQuery(effectivePerson.getDebugger(), x_processplatform_service_processing.class,
// Applications.joinQueryUri("record", "job", work.getJob()), rec, this.work.getJob())
// .getData(WoId.class);
// if (StringUtils.isBlank(resp.getId())) {
// throw new ExceptionRecord(this.work.getId());
// }
// }
@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.work.V2AddSplit$Wi")
public static class Wi extends V2AddSplitWi {
private static final long serialVersionUID = 389793480955959857L;
}
@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.work.V2AddSplit$Wo")
......
......@@ -44,8 +44,7 @@ class ActionListRollbackWithWorkOrWorkCompleted extends BaseAction {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted)) {
throw new ExceptionAccessDenied(effectivePerson);
}
......@@ -156,9 +155,9 @@ class ActionListRollbackWithWorkOrWorkCompleted extends BaseAction {
private static final long serialVersionUID = -7243683008987722267L;
static WrapCopier<Read, WoRead> copier = WrapCopierFactory.wo(Read.class, WoRead.class,
ListTools.toList(JpaObject.id_FIELDNAME, Read.person_FIELDNAME, Read.identity_FIELDNAME, Read.unit_FIELDNAME,
Read.opinion_FIELDNAME, Read.opinionLob_FIELDNAME, Read.startTime_FIELDNAME,
Read.activityName_FIELDNAME, Read.activityToken_FIELDNAME),
ListTools.toList(JpaObject.id_FIELDNAME, Read.person_FIELDNAME, Read.identity_FIELDNAME,
Read.unit_FIELDNAME, Read.opinion_FIELDNAME, Read.opinionLob_FIELDNAME,
Read.startTime_FIELDNAME, Read.activityName_FIELDNAME, Read.activityToken_FIELDNAME),
null);
}
......@@ -181,9 +180,10 @@ class ActionListRollbackWithWorkOrWorkCompleted extends BaseAction {
private static final long serialVersionUID = 293599148568443301L;
static WrapCopier<Task, WoTask> copier = WrapCopierFactory.wo(Task.class, WoTask.class,
ListTools.toList(JpaObject.id_FIELDNAME, Task.person_FIELDNAME, Task.identity_FIELDNAME, Task.unit_FIELDNAME,
Task.routeName_FIELDNAME, Task.opinion_FIELDNAME, Task.opinionLob_FIELDNAME,
Task.startTime_FIELDNAME, Task.activityName_FIELDNAME, Task.activityToken_FIELDNAME),
ListTools.toList(JpaObject.id_FIELDNAME, Task.person_FIELDNAME, Task.identity_FIELDNAME,
Task.unit_FIELDNAME, Task.routeName_FIELDNAME, Task.opinion_FIELDNAME,
Task.opinionLob_FIELDNAME, Task.startTime_FIELDNAME, Task.activityName_FIELDNAME,
Task.activityToken_FIELDNAME),
null);
}
......
......@@ -33,6 +33,8 @@ import com.x.processplatform.core.entity.element.util.WorkLogTree;
import com.x.processplatform.core.entity.element.util.WorkLogTree.Node;
import com.x.processplatform.core.entity.element.util.WorkLogTree.Nodes;
import io.swagger.v3.oas.annotations.media.Schema;
class ActionListWithWorkOrWorkCompleted extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionListWithWorkOrWorkCompleted.class);
......@@ -66,8 +68,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
Boolean value = false;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
value = business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted));
value = business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted);
} catch (Exception e) {
logger.error(e);
}
......@@ -200,6 +201,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
return os;
}
@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.worklog.ActionListWithWorkOrWorkCompleted$Wo")
public static class Wo extends WorkLog {
private static final long serialVersionUID = -7666329770246726197L;
......@@ -279,6 +281,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
}
@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.worklog.ActionListWithWorkOrWorkCompleted$WoTask")
public static class WoTask extends Task {
private static final long serialVersionUID = 293599148568443301L;
......@@ -291,6 +294,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
null);
}
@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.worklog.ActionListWithWorkOrWorkCompleted$WoTaskCompleted")
public static class WoTaskCompleted extends TaskCompleted {
private static final long serialVersionUID = -4432508672641778924L;
......@@ -309,6 +313,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
null);
}
@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.worklog.ActionListWithWorkOrWorkCompleted$WoRead")
public static class WoRead extends Read {
private static final long serialVersionUID = -7243683008987722267L;
......@@ -321,6 +326,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
null);
}
@Schema(name = "com.x.processplatform.assemble.surface.jaxrs.worklog.ActionListWithWorkOrWorkCompleted$WoReadCompleted")
public static class WoReadCompleted extends ReadCompleted {
private static final long serialVersionUID = -7086077858353505033L;
......
......@@ -19,9 +19,10 @@ public class WorkLogTree {
private Node root;
public static List<String> RELY_WORKLOG_ITEMS = ListTools.toList(WorkLog.fromActivityToken_FIELDNAME,
WorkLog.arrivedActivityToken_FIELDNAME, WorkLog.fromActivityType_FIELDNAME,
WorkLog.arrivedActivityType_FIELDNAME, WorkLog.connected_FIELDNAME);
public static final List<String> RELY_WORKLOG_ITEMS = ListUtils.unmodifiableList(ListTools.toList(
WorkLog.fromActivityToken_FIELDNAME, WorkLog.arrivedActivityToken_FIELDNAME,
WorkLog.fromActivityType_FIELDNAME, WorkLog.arrivedActivityType_FIELDNAME,
WorkLog.fromActivityName_FIELDNAME, WorkLog.arrivedActivityName_FIELDNAME, WorkLog.connected_FIELDNAME));
Nodes nodes = new Nodes();
......@@ -43,9 +44,6 @@ public class WorkLogTree {
throw new ExceptionBeginNotFound();
}
root = this.find(begin);
// for (Node o : nodes) {
// this.associate();
// }
this.associate();
}
......@@ -53,14 +51,10 @@ public class WorkLogTree {
for (Node node : nodes) {
this.nodes.stream().filter(
o -> StringUtils.equals(node.workLog.getFromActivityToken(), o.workLog.getArrivedActivityToken()))
.forEach(o -> {
node.parents.add(o);
});
.forEach(o -> node.parents.add(o));
this.nodes.stream().filter(
o -> StringUtils.equals(node.workLog.getArrivedActivityToken(), o.workLog.getFromActivityToken()))
.forEach(o -> {
node.children.add(o);
});
.forEach(o -> node.children.add(o));
}
}
......@@ -93,14 +87,12 @@ public class WorkLogTree {
public Date latestArrivedTime() {
Date date = null;
if (!this.isEmpty()) {
for (Node n : this) {
if (null != n.getWorkLog().getArrivedTime()) {
if (null == date) {
date = n.getWorkLog().getArrivedTime();
} else {
date = n.getWorkLog().getArrivedTime().after(date) ? n.getWorkLog().getArrivedTime() : date;
}
for (Node n : this) {
if (null != n.getWorkLog().getArrivedTime()) {
if (null == date) {
date = n.getWorkLog().getArrivedTime();
} else {
date = n.getWorkLog().getArrivedTime().after(date) ? n.getWorkLog().getArrivedTime() : date;
}
}
}
......@@ -133,7 +125,7 @@ public class WorkLogTree {
if (Objects.equals(o.workLog.getFromActivityType(), activityType)) {
result.add(o);
} else {
if (ListTools.contains(pass, o.workLog.getFromActivityType())) {
if (ListTools.contains(pass, o.workLog.getFromActivityType()) || pass.isEmpty()) {
o.upTo(activityType, pass, result);
}
}
......@@ -206,14 +198,14 @@ public class WorkLogTree {
}
public Nodes down(Node node) {
Nodes nodes = new Nodes();
Nodes ns = new Nodes();
for (Node o : node.children) {
nodes.add(o);
ns.add(o);
}
for (Node o : node.children) {
nodes.addAll(down(o));
ns.addAll(down(o));
}
return nodes;
return ns;
}
public Nodes up(Node node) {
......
......@@ -23,6 +23,7 @@ import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.processplatform.ManualTaskIdentityMatrix;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.StringTools;
import com.x.processplatform.core.entity.content.Task;
......@@ -116,7 +117,7 @@ class ActionAddSplit extends BaseAction {
workCopy.setSplitting(from.getSplitting());
workCopy.setSplitValue(splitValue);
// workCopy.getManualTaskIdentityList().clear();
workCopy.getManualTaskIdentityMatrix().clear();
workCopy.setManualTaskIdentityMatrix(new ManualTaskIdentityMatrix());
workCopy.setBeforeExecuted(false);
workCopy.setDestinationActivity(null);
workCopy.setDestinationActivityType(null);
......
package com.x.processplatform.service.processing.jaxrs.work;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.Callable;
......@@ -19,6 +20,7 @@ import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WrapStringList;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.processplatform.ManualTaskIdentityMatrix;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.StringTools;
import com.x.processplatform.core.entity.content.Work;
......@@ -102,12 +104,15 @@ class V2AddSplit extends BaseAction {
workCopy.setActivityName(activity.getName());
workCopy.setActivityToken(StringTools.uniqueToken());
workCopy.setActivityType(activity.getActivityType());
workCopy.setSplitTokenList(arrived.getProperties().getSplitTokenList());
// workCopy.setSplitTokenList(arrived.getProperties().getSplitTokenList());
workCopy.setSplitValueList(
adjustSplitValueList(arrived.getProperties().getSplitValueList(), splitValue));
workCopy.setSplitToken(arrived.getSplitToken());
workCopy.setSplitting(from.getSplitting());
workCopy.setSplitValue(splitValue);
// workCopy.getManualTaskIdentityList().clear();
workCopy.getManualTaskIdentityMatrix().clear();
// workCopy.getManualTaskIdentityList().clear();
// workCopy.getManualTaskIdentityMatrix().clear();
workCopy.setManualTaskIdentityMatrix(new ManualTaskIdentityMatrix());
workCopy.setBeforeExecuted(false);
workCopy.setDestinationActivity(null);
workCopy.setDestinationActivityType(null);
......@@ -133,7 +138,8 @@ class V2AddSplit extends BaseAction {
fromCopy.setFromActivityToken(workCopy.getActivityToken());
fromCopy.setFromTime(workCopy.getActivityArrivedTime());
fromCopy.setWork(workCopy.getId());
arrivedCopy.setSplitValue(workCopy.getSplitValue());
fromCopy.setSplitValue(workCopy.getSplitValue());
fromCopy.setSplitToken(workCopy.getSplitToken());
fromCopy.setArrivedActivity("");
fromCopy.setArrivedActivityAlias("");
fromCopy.setArrivedActivityName("");
......@@ -144,6 +150,7 @@ class V2AddSplit extends BaseAction {
emc.persist(workCopy, CheckPersistType.all);
emc.persist(arrivedCopy, CheckPersistType.all);
emc.persist(fromCopy, CheckPersistType.all);
emc.commit();
wo.addValue(workCopy.getId(), true);
}
......@@ -157,6 +164,15 @@ class V2AddSplit extends BaseAction {
}
private List<String> adjustSplitValueList(List<String> list, String value) {
List<String> values = new ArrayList<>();
if (ListTools.isNotEmpty(list)) {
list.stream().limit(list.size() - 1L).forEach(values::add);
}
values.add(value);
return values;
}
public static class Wi extends V2AddSplitWi {
private static final long serialVersionUID = 6460190818209523936L;
......
......@@ -14,6 +14,7 @@ import org.apache.commons.lang3.StringUtils;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.processplatform.ManualTaskIdentityMatrix;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.tools.ListTools;
import com.x.processplatform.core.entity.content.Read;
......@@ -113,7 +114,7 @@ public abstract class AbstractProcessor extends AbstractBaseProcessor {
// }
private void arriveCleanManualTaskIdentityMatrix(AeiObjects aeiObjects) {
aeiObjects.getWork().getManualTaskIdentityMatrix().clear();
aeiObjects.getWork().setManualTaskIdentityMatrix(new ManualTaskIdentityMatrix());
}
private void arriveCleanManualEmpowerMap(AeiObjects aeiObjects) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册