提交 237072da 编写于 作者: NoSubject's avatar NoSubject

Merge branch 'feature/流程平台增加根据job查询record' into 'develop'

Merge of feature/[流程平台]增加根据job查询record to develop

See merge request o2oa/o2oa!628
package com.x.processplatform.assemble.surface.jaxrs.record;
import com.x.base.core.container.EntityManagerContainer;
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.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;
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.Record;
import com.x.processplatform.core.entity.content.Task;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
class ActionListWithJob extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionListWithJob.class);
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String job) throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<List<Wo>> result = new ActionResult<>();
Business business = new Business(emc);
String workOrWorkCompleted = "";
List<String> works = business.work().listWithJob(job);
if(ListTools.isNotEmpty(works)){
workOrWorkCompleted = works.get(0);
}else{
works = business.workCompleted().listWithJob(job);
if(ListTools.isNotEmpty(works)){
workOrWorkCompleted = works.get(0);
}else{
throw new ExceptionEntityNotExist(job);
}
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
throw new ExceptionAccessDenied(effectivePerson);
}
List<Wo> wos = emc.fetchEqual(Record.class, Wo.copier, Record.job_FIELDNAME, job);
wos = wos.stream().sorted(Comparator.comparing(Wo::getOrder)).collect(Collectors.toList());
for (Task task : emc.listEqual(Task.class, Task.job_FIELDNAME, job).stream()
.sorted(Comparator.comparing(Task::getStartTime)).collect(Collectors.toList())) {
Record record = this.taskToRecord(task);
wos.add(Wo.copier.copy(record));
}
result.setData(wos);
return result;
}
}
private Record taskToRecord(Task task) {
Record o = new Record();
o.setType(Record.TYPE_CURRENTTASK);
o.setFromActivity(task.getActivity());
o.setFromActivityAlias(task.getActivityAlias());
o.setFromActivityName(task.getActivityName());
o.setFromActivityToken(task.getActivityToken());
o.setFromActivityType(task.getActivityType());
o.setPerson(task.getPerson());
o.setIdentity(o.getIdentity());
o.setUnit(task.getUnit());
o.getProperties().setStartTime(task.getStartTime());
o.getProperties().setEmpowerFromIdentity(task.getEmpowerFromIdentity());
return o;
}
public static class Wo extends Record {
private static final long serialVersionUID = -7666329770246726197L;
static WrapCopier<Record, Wo> copier = WrapCopierFactory.wo(Record.class, Wo.class,
JpaObject.singularAttributeField(Record.class, true, false), JpaObject.FieldsInvisible);
}
}
\ No newline at end of file
package com.x.processplatform.assemble.surface.jaxrs.record;
import com.x.base.core.container.EntityManagerContainer;
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.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;
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.Record;
import com.x.processplatform.core.entity.content.Task;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
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 {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<List<Wo>> result = new ActionResult<>();
Business business = new Business(emc);
String workOrWorkCompleted = "";
List<String> works = business.work().listWithJob(job);
if(ListTools.isNotEmpty(works)){
workOrWorkCompleted = works.get(0);
}else{
works = business.workCompleted().listWithJob(job);
if(ListTools.isNotEmpty(works)){
workOrWorkCompleted = works.get(0);
}else{
throw new ExceptionEntityNotExist(job);
}
}
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
throw new ExceptionAccessDenied(effectivePerson);
}
List<Wo> wos = emc.fetchEqualAscPaging(Record.class, Wo.copier, Record.job_FIELDNAME, job, page, size,
Record.order_FIELDNAME);
for (Task task : emc.listEqual(Task.class, Task.job_FIELDNAME, job).stream()
.sorted(Comparator.comparing(Task::getStartTime)).collect(Collectors.toList())) {
Record record = this.taskToRecord(task);
wos.add(Wo.copier.copy(record));
}
result.setData(wos);
return result;
}
}
private Record taskToRecord(Task task) {
Record o = new Record();
o.setType(Record.TYPE_CURRENTTASK);
o.setFromActivity(task.getActivity());
o.setFromActivityAlias(task.getActivityAlias());
o.setFromActivityName(task.getActivityName());
o.setFromActivityToken(task.getActivityToken());
o.setFromActivityType(task.getActivityType());
o.setPerson(task.getPerson());
o.setIdentity(o.getIdentity());
o.setUnit(task.getUnit());
o.getProperties().setStartTime(task.getStartTime());
o.getProperties().setEmpowerFromIdentity(task.getEmpowerFromIdentity());
return o;
}
public static class Wo extends Record {
private static final long serialVersionUID = -7666329770246726197L;
static WrapCopier<Record, Wo> copier = WrapCopierFactory.wo(Record.class, Wo.class,
JpaObject.singularAttributeField(Record.class, true, false), JpaObject.FieldsInvisible);
}
}
\ No newline at end of file
......@@ -71,4 +71,45 @@ public class RecordAction extends StandardJaxrsAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "根据(已完成)工作的job获取记录.", action = ActionListWithJob.class)
@GET
@Path("list/job/{job}")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void listWithJob(@Suspended final AsyncResponse asyncResponse,
@Context HttpServletRequest request,
@JaxrsParameterDescribe("工作的job") @PathParam("job") String job) {
ActionResult<List<ActionListWithJob.Wo>> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
result = new ActionListWithJob().execute(effectivePerson, job);
} catch (Exception e) {
logger.error(e, effectivePerson, request, null);
result.error(e);
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "根据(已完成)工作的job获取记录分页.", action = ActionListWithJobPaging.class)
@GET
@Path("list/job/{job}/paging/{page}/size/{size}")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void listWithJobPaging(@Suspended final AsyncResponse asyncResponse,
@Context HttpServletRequest request,
@JaxrsParameterDescribe("工作的job") @PathParam("job") String job,
@JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
@JaxrsParameterDescribe("数量") @PathParam("size") Integer size) {
ActionResult<List<ActionListWithJobPaging.Wo>> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
result = new ActionListWithJobPaging().execute(effectivePerson, job, page,
size);
} catch (Exception e) {
logger.error(e, effectivePerson, request, null);
result.error(e);
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册