diff --git a/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/ActionIsHoliday.java b/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/ActionIsHoliday.java new file mode 100644 index 0000000000000000000000000000000000000000..24c5ed8409b445dc867237ac3406ace7f0853606 --- /dev/null +++ b/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/ActionIsHoliday.java @@ -0,0 +1,26 @@ +package com.x.general.assemble.control.jaxrs.worktime; + +import java.util.Date; + +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.WrapBoolean; +import com.x.base.core.project.tools.DateTools; + +public class ActionIsHoliday extends BaseAction { + + ActionResult execute(EffectivePerson effectivePerson, String date) throws Exception { + ActionResult result = new ActionResult<>(); + Date dateObject = DateTools.parse(date); + Wo wo = new Wo(); + wo.setValue(!Config.workTime().isWorkDay(dateObject)); + result.setData(wo); + return result; + } + + public static class Wo extends WrapBoolean { + + } + +} diff --git a/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/WorkTimeAction.java b/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/WorkTimeAction.java index 146e3ca0a3b4c65be1042a2c6e926b44dfd2da49..274db61f65721a1e26ab54383776af0d71438971 100644 --- a/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/WorkTimeAction.java +++ b/o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/WorkTimeAction.java @@ -138,4 +138,22 @@ public class WorkTimeAction extends StandardJaxrsAction { asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); } + @JaxrsMethodDescribe(value = "返回指定时间是否是节假日.", action = ActionIsHoliday.class) + @GET + @Path("isholiday/{date}") + @Produces(HttpMediaType.APPLICATION_JSON_UTF_8) + @Consumes(MediaType.APPLICATION_JSON) + public void isHoliday(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, + @JaxrsParameterDescribe("指定日期") @PathParam("date") String date) { + ActionResult result = new ActionResult<>(); + EffectivePerson effectivePerson = this.effectivePerson(request); + try { + result = new ActionIsHoliday().execute(effectivePerson, date); + } catch (Exception e) { + logger.error(e, effectivePerson, request, null); + result.error(e); + } + asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); + } + } \ No newline at end of file diff --git a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2GetWorkOrWorkCompleted.java b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2GetWorkOrWorkCompleted.java index 501c0d3c4bde1b6f39d05140b92ee773b60dd3d3..4635fb3b514619e30d503bbb40833a7eb85b2ab7 100644 --- a/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2GetWorkOrWorkCompleted.java +++ b/o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2GetWorkOrWorkCompleted.java @@ -74,6 +74,7 @@ class V2GetWorkOrWorkCompleted extends BaseAction { CompletableFuture creatorPersonFuture = this.creatorPersonFuture(work.getCreatorPerson(), wo); CompletableFuture creatorUnitFuture = this.creatorUnitFuture(work.getCreatorUnit(), wo); CompletableFuture attachmentFuture = this.attachmentFuture(effectivePerson, work.getJob(), wo); + CompletableFuture recordFuture = this.recordFuture(effectivePerson, work.getJob(), wo); workJsonFuture.get(10, TimeUnit.SECONDS); activityRouteFuture.get(10, TimeUnit.SECONDS); dataFuture.get(10, TimeUnit.SECONDS); @@ -83,6 +84,7 @@ class V2GetWorkOrWorkCompleted extends BaseAction { creatorPersonFuture.get(10, TimeUnit.SECONDS); creatorUnitFuture.get(10, TimeUnit.SECONDS); attachmentFuture.get(10, TimeUnit.SECONDS); + recordFuture.get(10, TimeUnit.SECONDS); for (WoTask woTask : wo.getTaskList()) { wo.getRecordList().add(taskToRecord(woTask)); } @@ -95,6 +97,8 @@ class V2GetWorkOrWorkCompleted extends BaseAction { CompletableFuture creatorPersonFuture = creatorPersonFuture(workCompleted.getCreatorPerson(), wo); CompletableFuture creatorUnitFuture = creatorUnitFuture(workCompleted.getCreatorUnit(), wo); CompletableFuture attachmentFuture = attachmentFuture(effectivePerson, workCompleted.getJob(), wo); + CompletableFuture workCompletedRecordFuture = this.workCompletedRecordFuture(effectivePerson, + workCompleted, wo); workCompletedJsonFuture.get(10, TimeUnit.SECONDS); workCompletedDataFuture.get(10, TimeUnit.SECONDS); readFuture.get(10, TimeUnit.SECONDS); @@ -102,6 +106,7 @@ class V2GetWorkOrWorkCompleted extends BaseAction { creatorPersonFuture.get(10, TimeUnit.SECONDS); creatorUnitFuture.get(10, TimeUnit.SECONDS); attachmentFuture.get(10, TimeUnit.SECONDS); + workCompletedRecordFuture.get(10, TimeUnit.SECONDS); } if (BooleanUtils.isFalse(checkControlFuture.get(10, TimeUnit.SECONDS))) { @@ -146,8 +151,6 @@ class V2GetWorkOrWorkCompleted extends BaseAction { }); } - - private CompletableFuture taskFuture(EffectivePerson effectivePerson, String job, Wo wo) { return CompletableFuture.runAsync(() -> { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { @@ -277,6 +280,35 @@ class V2GetWorkOrWorkCompleted extends BaseAction { }); } + private CompletableFuture recordFuture(EffectivePerson effectivePerson, String job, Wo wo) { + return CompletableFuture.runAsync(() -> { + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + wo.setRecordList(emc.fetchEqual(Record.class, WoRecord.copier, Record.job_FIELDNAME, job).stream() + .sorted(Comparator.comparing(WoRecord::getOrder)).collect(Collectors.toList())); + } catch (Exception e) { + logger.error(e); + } + }); + } + + private CompletableFuture workCompletedRecordFuture(EffectivePerson effectivePerson, + WorkCompleted workCompleted, Wo wo) { + return CompletableFuture.runAsync(() -> { + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + if (ListTools.isNotEmpty(workCompleted.getProperties().getRecordList())) { + wo.setRecordList(WoRecord.copier.copy(workCompleted.getProperties().getRecordList()).stream() + .sorted(Comparator.comparing(WoRecord::getOrder)).collect(Collectors.toList())); + } else { + wo.setRecordList(emc + .fetchEqual(Record.class, WoRecord.copier, Record.job_FIELDNAME, workCompleted.getJob()) + .stream().sorted(Comparator.comparing(WoRecord::getOrder)).collect(Collectors.toList())); + } + } catch (Exception e) { + logger.error(e); + } + }); + } + private CompletableFuture workCompletedDataFuture(WorkCompleted workCompleted, Wo wo) { return CompletableFuture.runAsync(() -> { if (BooleanUtils.isTrue(workCompleted.getMerged())) {