提交 90e8b558 编写于 作者: O o2null

Merge branch 'fix/meeting20210914' into 'wrdp'

会议室增加可以修改邀请人员接口

See merge request o2oa/o2oa!5437
package com.x.meeting.assemble.control.jaxrs.meeting;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.collections4.ListUtils;
import com.google.gson.JsonElement;
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.entity.annotation.CheckPersistType;
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.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WoId;
import com.x.base.core.project.tools.ListTools;
import com.x.meeting.assemble.control.Business;
import com.x.meeting.assemble.control.MessageFactory;
import com.x.meeting.core.entity.ConfirmStatus;
import com.x.meeting.core.entity.Meeting;
import com.x.meeting.core.entity.Room;
class ActionModify extends BaseAction {
ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, JsonElement jsonElement) throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<Wo> result = new ActionResult<>();
Business business = new Business(emc);
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
Meeting meeting = emc.find(id, Meeting.class);
if (null == meeting) {
throw new ExceptionMeetingNotExist(id);
}
if (!business.meetingEditAvailable(effectivePerson, meeting)) {
throw new ExceptionAccessDenied(effectivePerson);
}
Room room = emc.find(wi.getRoom(), Room.class);
if (null == room) {
throw new ExceptionRoomNotExist(wi.getRoom());
}
//判断开始时间或者结束时间有没有修改过
boolean modifyTime = false;
Date StartTime = wi.getStartTime();
Date CompletedTime = wi.getCompletedTime();
if(StartTime.getTime() != meeting.getStartTime().getTime() ) {
modifyTime = true;
}
if(CompletedTime.getTime() != meeting.getCompletedTime().getTime()) {
modifyTime = true;
}
emc.beginTransaction(Meeting.class);
Wi.copier.copy(wi, meeting);
List<String> personList = this.convertToPerson(business, ListTools.trim(wi.getInvitePersonList(), true, true));
meeting.setInvitePersonList(personList);
List<String> modifyInvitePersonList = ListUtils.subtract(personList,meeting.getInvitePersonList());
if (!business.room().checkIdle(meeting.getRoom(), meeting.getStartTime(), meeting.getCompletedTime(),
meeting.getId())) {
throw new ExceptionRoomNotAvailable(room.getName());
}
emc.persist(meeting, CheckPersistType.all);
emc.commit();
if (ConfirmStatus.allow.equals(meeting.getConfirmStatus())) {
if(modifyTime) { //开始时间或者结束时间有修改过
for (String _s : wi.getInvitePersonList()) {
MessageFactory.meeting_invite(_s, meeting, room);
}
}else {
for (String _s : modifyInvitePersonList) {
MessageFactory.meeting_invite(_s, meeting, room);
}
}
this.notifyMeetingInviteMessage(business, meeting);
}
Wo wo = new Wo();
wo.setId(meeting.getId());
result.setData(wo);
return result;
}
}
public static class Wi extends Meeting {
private static final long serialVersionUID = -4637797853096659198L;
static WrapCopier<Wi, Meeting> copier = WrapCopierFactory.wi(Wi.class, Meeting.class, null,
JpaObject.FieldsUnmodify);
}
public static class Wo extends WoId {
}
}
......@@ -68,7 +68,7 @@ public class MeetingAction extends BaseAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "修改会议,标题,说明,邀请人", action = ActionEdit.class)
@JaxrsMethodDescribe(value = "修改会议,标题,说明,只能增加邀请人", action = ActionEdit.class)
@PUT
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
......@@ -85,6 +85,25 @@ public class MeetingAction extends BaseAction {
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "修改会议、标题、说明、邀请人", action = ActionModify.class)
@POST
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
@Path("{id}")
public void modify(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
@PathParam("id") String id, JsonElement jsonElement) {
ActionResult<ActionModify.Wo> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
result = new ActionModify().execute(effectivePerson, id, jsonElement);
} catch (Exception e) {
logger.error(e, effectivePerson, request, jsonElement);
result.error(e);
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "会议提前开始,修改开始时间", action = ActionEditStartTime.class)
@PUT
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册