From d8ac23a1ff8cdf6e27458d31ce40d02d14304f7c Mon Sep 17 00:00:00 2001 From: o2wwx <95523761@qq.com> Date: Fri, 17 Jul 2020 11:22:25 +0800 Subject: [PATCH] =?UTF-8?q?'=E5=A2=9E=E5=8A=A0=E4=BA=86=E4=BC=9A=E8=AE=AE?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AE=E4=BC=9A?= =?UTF-8?q?=E8=AE=AE=E5=AE=A4id=E6=9F=A5=E8=AF=A2=EF=BC=8C=E6=9F=90?= =?UTF-8?q?=E4=B8=80=E6=97=B6=E9=97=B4=E6=AE=B5=EF=BC=88=E4=B8=80=E5=A4=A9?= =?UTF-8?q?=EF=BC=89=E4=B8=80=E4=B8=AA=E4=BC=9A=E8=AE=AE=E7=9A=84=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=83=85=E5=86=B5'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../control/factory/MeetingFactory.java | 15 +++++ .../meeting/ActionListOnDayByRoomID.java | 58 +++++++++++++++++++ .../control/jaxrs/meeting/MeetingAction.java | 19 ++++++ 3 files changed, 92 insertions(+) create mode 100644 o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/jaxrs/meeting/ActionListOnDayByRoomID.java diff --git a/o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/factory/MeetingFactory.java b/o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/factory/MeetingFactory.java index 5d8809159b..f699afa9ce 100644 --- a/o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/factory/MeetingFactory.java +++ b/o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/factory/MeetingFactory.java @@ -170,6 +170,21 @@ public class MeetingFactory extends AbstractFactory { cq.select(root.get(Meeting_.id)).where(p); return em.createQuery(cq).getResultList(); } + + public List listWithDateAndRoom(Date start, Date end,String roomId) throws Exception { + EntityManager em = this.entityManagerContainer().get(Meeting.class); + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(String.class); + Root root = cq.from(Meeting.class); + //Predicate p = cb.greaterThanOrEqualTo(root.get(Meeting_.startTime), start); + //p = cb.and(p, cb.lessThanOrEqualTo(root.get(Meeting_.startTime), end)); + Predicate p = cb.greaterThanOrEqualTo(root.get(Meeting_.completedTime), start); + p = cb.and(p, cb.lessThanOrEqualTo(root.get(Meeting_.completedTime), end)); + p = cb.and(p, cb.equal(root.get(Meeting_.room), roomId)); + + cq.select(root.get(Meeting_.id)).where(p); + return em.createQuery(cq).getResultList(); + } public List listWithPersonWithDate(String person, Date start, Date end) throws Exception { EntityManager em = this.entityManagerContainer().get(Meeting.class); diff --git a/o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/jaxrs/meeting/ActionListOnDayByRoomID.java b/o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/jaxrs/meeting/ActionListOnDayByRoomID.java new file mode 100644 index 0000000000..ee6cdbac78 --- /dev/null +++ b/o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/jaxrs/meeting/ActionListOnDayByRoomID.java @@ -0,0 +1,58 @@ +package com.x.meeting.assemble.control.jaxrs.meeting; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import com.x.base.core.container.EntityManagerContainer; +import com.x.base.core.container.factory.EntityManagerContainerFactory; +import com.x.base.core.project.bean.WrapCopier; +import com.x.base.core.project.bean.WrapCopierFactory; +import com.x.base.core.project.http.ActionResult; +import com.x.base.core.project.http.EffectivePerson; +import com.x.base.core.project.tools.SortTools; +import com.x.meeting.assemble.control.Business; +import com.x.meeting.assemble.control.WrapTools; +import com.x.meeting.assemble.control.wrapout.WrapOutMeeting; +import com.x.meeting.core.entity.Meeting; + +class ActionListOnDayByRoomID extends BaseAction { + + ActionResult> execute(EffectivePerson effectivePerson, Integer year, Integer month, Integer day,String roomId) + throws Exception { + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + ActionResult> result = new ActionResult<>(); + Business business = new Business(emc); + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.YEAR, year); + calendar.set(Calendar.MONTH, month - 1); + calendar.set(Calendar.DAY_OF_MONTH, day); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + Date start = calendar.getTime(); + /** 一天内 */ + calendar.add(Calendar.DAY_OF_MONTH, 1); + calendar.add(Calendar.MILLISECOND, -1); + Date end = calendar.getTime(); + List ids = new ArrayList<>(); + ids = business.meeting().listWithDateAndRoom(start, end,roomId); + List wos = Wo.copier.copy(emc.list(Meeting.class, ids)); + WrapTools.decorate(business, wos, effectivePerson); + WrapTools.setAttachment(business, wos); + SortTools.asc(wos, false, "startTime"); + result.setData(wos); + return result; + } + } + + public static class Wo extends WrapOutMeeting { + + private static final long serialVersionUID = 4609263020989488356L; + public static WrapCopier copier = WrapCopierFactory.wo(Meeting.class, Wo.class, null, Wo.Excludes); + + } + +} diff --git a/o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/jaxrs/meeting/MeetingAction.java b/o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/jaxrs/meeting/MeetingAction.java index 8dcca16bc4..7ae2f97431 100644 --- a/o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/jaxrs/meeting/MeetingAction.java +++ b/o2server/x_meeting_assemble_control/src/main/java/com/x/meeting/assemble/control/jaxrs/meeting/MeetingAction.java @@ -19,6 +19,7 @@ import javax.ws.rs.core.MediaType; import com.google.gson.JsonElement; import com.x.base.core.project.annotation.JaxrsDescribe; import com.x.base.core.project.annotation.JaxrsMethodDescribe; +import com.x.base.core.project.annotation.JaxrsParameterDescribe; import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.http.HttpMediaType; @@ -427,6 +428,24 @@ public class MeetingAction extends BaseAction { asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); } + @JaxrsMethodDescribe(value = "列示指定会议室id、指定日期的会议.", action = ActionListOnDayByRoomID.class) + @GET + @Path("list/year/{year}/month/{month}/day/{day}/{roomId}") + @Produces(HttpMediaType.APPLICATION_JSON_UTF_8) + @Consumes(MediaType.APPLICATION_JSON) + public void listOnDayByRoomID(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, + @JaxrsParameterDescribe("年份") @PathParam("year") Integer year,@JaxrsParameterDescribe("月份") @PathParam("month") Integer month, @JaxrsParameterDescribe("日") @PathParam("day") Integer day, @JaxrsParameterDescribe("会议室记录ID") @PathParam("roomId") String roomId) { + ActionResult> result = new ActionResult<>(); + EffectivePerson effectivePerson = this.effectivePerson(request); + try { + result = new ActionListOnDayByRoomID().execute(effectivePerson, year, month, day,roomId); + } catch (Exception e) { + logger.error(e, effectivePerson, request, null); + result.error(e); + } + asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); + } + @JaxrsMethodDescribe(value = "列示等待我确认的会议.", action = ActionWaitConfirm.class) @GET @Path("list/wait/confirm") -- GitLab