提交 aafe9d45 编写于 作者: hlwwx's avatar hlwwx

'修改了会议室分页bug,修改了调整会议室预定时间bug'

上级 38e454ec
package com.x.meeting.assemble.control.jaxrs.building;
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.DateTools;
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.WrapOutBuilding;
import com.x.meeting.assemble.control.wrapout.WrapOutRoom;
import com.x.meeting.core.entity.Building;
class ActionListWithStartCompletedRoom extends BaseAction {
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String start, String completed,String currentRoom,String meetingId) throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<List<Wo>> result = new ActionResult<>();
Business business = new Business(emc);
Date startTime = DateTools.parse(start, DateTools.format_yyyyMMdd + " " + DateTools.format_HHmm);
Date completedTime = DateTools.parse(completed, DateTools.format_yyyyMMdd + " " + DateTools.format_HHmm);
List<String> ids = business.building().list();
List<Wo> wos = Wo.copier.copy(emc.list(Building.class, ids));
WrapTools.setRoom(business, wos);
for (WrapOutBuilding wo : wos) {
WrapTools.setFutureMeeting(business, wo.getRoomList(), true);
for (WrapOutRoom room : wo.getRoomList()) {
if( currentRoom.equalsIgnoreCase(room.getId())) {
room.setIdle(business.room().checkIdle(room.getId(), startTime, completedTime, meetingId));
}else {
WrapTools.checkRoomIdle(business, room, startTime, completedTime);
}
}
}
SortTools.asc(wos, false, Building.name_FIELDNAME);
result.setData(wos);
return result;
}
}
public static class Wo extends WrapOutBuilding {
private static final long serialVersionUID = 4609263020989488356L;
public static WrapCopier<Building, Wo> copier = WrapCopierFactory.wo(Building.class, Wo.class, null,
Wo.Excludes);
}
}
......@@ -87,6 +87,25 @@ public class BuildingAction extends StandardJaxrsAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "列示在所有building和下属的room,和room下面将来的会议,同时判断在指定时间内room是否空闲,用于修改当前预定会议时间", action = ActionListWithStartCompleted.class)
@GET
@Path("list/start/{start}/completed/{completed}/room/{room}/meeting/{meeting}")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void listWithStartCompletedRoom(@Suspended final AsyncResponse asyncResponse,
@Context HttpServletRequest request, @PathParam("start") String start,
@PathParam("completed") String completed , @PathParam("room") String room , @PathParam("meeting") String meetingId) {
ActionResult<List<ActionListWithStartCompletedRoom.Wo>> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
result = new ActionListWithStartCompletedRoom().execute(effectivePerson, start, completed,room,meetingId);
} catch (Exception e) {
logger.error(e, effectivePerson, request, null);
result.error(e);
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "创建Building.", action = ActionCreate.class)
@POST
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
......
......@@ -8,6 +8,7 @@ import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
......@@ -51,8 +52,9 @@ class ActionPaging extends BaseAction {
Root<Meeting> root = cq.from(Meeting.class);
Predicate p = cb.equal(root.get(Meeting_.applicant), effectivePerson.getDistinguishedName());
p = cb.or(p, cb.isMember(effectivePerson.getDistinguishedName(),root.get(Meeting_.invitePersonList)));
//p = cb.or(p, cb.isMember(effectivePerson.getDistinguishedName(),root.get(Meeting_.invitePersonList)));
Expression<List<String>> expression = root.get(Meeting_.invitePersonList);
p = cb.or(p, expression.in(effectivePerson.getDistinguishedName()));
if(!StringUtils.isBlank(wi.getSubject())) {
p = cb.and(p, cb.like(root.get(Meeting_.subject), "%" + wi.getSubject() + "%"));
......@@ -127,28 +129,32 @@ class ActionPaging extends BaseAction {
}
cq.select(root.get(Meeting_.id)).where(p).orderBy(order);
cq.distinct(true);
TypedQuery<String> typedQuery = em.createQuery(cq);
int pageIndex = (page-1)*size;
int pageSize = page*size;
int pageSize = size;
typedQuery.setFirstResult(pageIndex);
typedQuery.setMaxResults(pageSize);
//logger.info("typedQuery="+ typedQuery.toString());
ids = typedQuery.getResultList();
CriteriaQuery<Long> cqCount = cb.createQuery(Long.class);
Root<Meeting> rootCount = cqCount.from(Meeting.class);
cqCount.select(cb.countDistinct(rootCount)).where(p);
Long count = em.createQuery(cqCount).getSingleResult().longValue();
//logger.info("count="+ count);
//logger.info("pagingtypedQuery="+ typedQuery.toString());
TypedQuery<String> tqCount = em.createQuery( cq.select(root.get(Meeting_.id)).where(p).distinct(true));
List<String> allid = tqCount.getResultList();
Long tpsize = (long) allid.size();
//logger.info("ids count="+ tpsize);
List<Wo> wos = Wo.copier.copy(emc.list(Meeting.class, ids));
CriteriaQuery<Meeting> cqMeeting = cb.createQuery(Meeting.class);
Predicate pMeeting = cb.isMember(root.get(Meeting_.id), cb.literal(ids));
Root<Meeting> rootMeeting = cqMeeting.from(Meeting.class);
cqMeeting.select(rootMeeting).where(pMeeting).orderBy(order);
List<Meeting> os = em.createQuery(cqMeeting).getResultList();
List<Wo> wos = Wo.copier.copy(os);
WrapTools.decorate(business, wos, effectivePerson);
WrapTools.setAttachment(business, wos);
SortTools.desc(wos, Meeting.startTime_FIELDNAME);
result.setData(wos);
result.setCount(count);
result.setCount(tpsize);
return result;
}
}
......
......@@ -129,31 +129,34 @@ class ActionPagingManage extends BaseAction {
order = cb.desc(root.get("startTime"));
}
cq.select(root.get(Meeting_.id)).where(p).orderBy(order);
cq.select(root.get(Meeting_.id)).where(p).orderBy(order);
cq.distinct(true);
TypedQuery<String> typedQuery = em.createQuery(cq);
int pageIndex = (page-1)*size;
int pageSize = page*size;
int pageSize = size;
typedQuery.setFirstResult(pageIndex);
typedQuery.setMaxResults(pageSize);
//logger.info("typedQuery="+ typedQuery.toString());
ids = typedQuery.getResultList();
CriteriaQuery<Long> cqCount = cb.createQuery(Long.class);
Root<Meeting> rootCount = cqCount.from(Meeting.class);
cqCount.select(cb.countDistinct(rootCount)).where(p);
Long count = em.createQuery(cqCount).getSingleResult().longValue();
// logger.info("count="+ count);
//logger.info("pagingtypedQuery="+ typedQuery.toString());
List<Wo> wos = Wo.copier.copy(emc.list(Meeting.class, ids));
TypedQuery<String> tqCount = em.createQuery( cq.select(root.get(Meeting_.id)).where(p).distinct(true));
List<String> allid = tqCount.getResultList();
Long tpsize = (long) allid.size();
//logger.info("ids count="+ tpsize);
CriteriaQuery<Meeting> cqMeeting = cb.createQuery(Meeting.class);
Predicate pMeeting = cb.isMember(root.get(Meeting_.id), cb.literal(ids));
Root<Meeting> rootMeeting = cqMeeting.from(Meeting.class);
cqMeeting.select(rootMeeting).where(pMeeting).orderBy(order);
List<Meeting> os = em.createQuery(cqMeeting).getResultList();
List<Wo> wos = Wo.copier.copy(os);
WrapTools.decorate(business, wos, effectivePerson);
WrapTools.setAttachment(business, wos);
SortTools.desc(wos, Meeting.startTime_FIELDNAME);
result.setData(wos);
result.setCount(count);
result.setCount(tpsize);
return result;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册