|
@@ -1,5 +1,6 @@
|
|
|
package com.xjrsoft.module.oa.service.impl;
|
|
|
|
|
|
+import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
@@ -8,33 +9,39 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import com.xjrsoft.common.enums.MeetingTypeEnum;
|
|
|
+import com.xjrsoft.common.page.ConventPage;
|
|
|
+import com.xjrsoft.common.page.PageOutput;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.module.base.entity.BaseOfficeBuild;
|
|
|
+import com.xjrsoft.module.oa.dto.MeetingConfereeListDto;
|
|
|
+import com.xjrsoft.module.oa.dto.MeetingConfereeOpinionListDto;
|
|
|
import com.xjrsoft.module.oa.dto.MeetingRoomListDto;
|
|
|
import com.xjrsoft.module.oa.dto.WfMeetingApplyPageDto;
|
|
|
-import com.xjrsoft.module.oa.entity.MeetingConferee;
|
|
|
-import com.xjrsoft.module.oa.entity.MeetingRoom;
|
|
|
-import com.xjrsoft.module.oa.entity.WfMeetingApply;
|
|
|
+import com.xjrsoft.module.oa.entity.*;
|
|
|
import com.xjrsoft.module.oa.mapper.MeetingConfereeMapper;
|
|
|
+import com.xjrsoft.module.oa.mapper.MeetingConfereeOpinionMapper;
|
|
|
import com.xjrsoft.module.oa.mapper.MeetingRoomMapper;
|
|
|
import com.xjrsoft.module.oa.mapper.WfMeetingApplyMapper;
|
|
|
import com.xjrsoft.module.oa.service.IWfMeetingApplyService;
|
|
|
-import com.xjrsoft.module.oa.vo.MeetingRoomListVo;
|
|
|
-import com.xjrsoft.module.oa.vo.WfMeetingApplyPageVo;
|
|
|
+import com.xjrsoft.module.oa.vo.*;
|
|
|
import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
|
|
|
import com.xjrsoft.module.organization.entity.User;
|
|
|
import com.xjrsoft.module.organization.service.IUserService;
|
|
|
import com.xjrsoft.module.organization.service.IWeChatService;
|
|
|
+import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
|
+import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
import com.xjrsoft.module.workflow.entity.WorkflowExtra;
|
|
|
import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
|
|
|
import com.xjrsoft.module.workflow.mapper.WorkflowFormRelationMapper;
|
|
|
import com.xjrsoft.module.workflow.service.IWorkflowExtraService;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.camunda.bpm.engine.history.HistoricProcessInstance;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
@@ -66,8 +73,10 @@ public class WfMeetingApplyServiceImpl extends MPJBaseServiceImpl<WfMeetingApply
|
|
|
|
|
|
private final MeetingConfereeMapper meetingConfereeMapper;
|
|
|
|
|
|
+ private final MeetingConfereeOpinionMapper meetingConfereeOpinionMapper;
|
|
|
+
|
|
|
@Override
|
|
|
- public List<MeetingRoomListVo> meetingRoomList(MeetingRoomListDto dto) {
|
|
|
+ public List<MeetingRoomListVo> listMeetingRoom(MeetingRoomListDto dto) {
|
|
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
|
|
|
LocalTime startTime = LocalTime.parse(dto.getMeetingApplyS());
|
|
@@ -132,7 +141,130 @@ public class WfMeetingApplyServiceImpl extends MPJBaseServiceImpl<WfMeetingApply
|
|
|
|
|
|
@Override
|
|
|
public IPage<WfMeetingApplyPageVo> pageRabAndHand(WfMeetingApplyPageDto dto) {
|
|
|
- return null;
|
|
|
+
|
|
|
+ Long loginId = StpUtil.getLoginIdAsLong();
|
|
|
+ int permission = 1;
|
|
|
+ if(StpUtil.hasRole("")){
|
|
|
+ permission = 2;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ LocalDate nowLocalDate = LocalDate.now();
|
|
|
+ LocalTime nowLocalTime = LocalTime.now();
|
|
|
+
|
|
|
+ MPJLambdaWrapper<WfMeetingApply> wfMeetingApplyPageVoMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ wfMeetingApplyPageVoMPJLambdaWrapper
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .select(WfMeetingApply::getId)
|
|
|
+ .select(WfMeetingApply.class, x -> VoToColumnUtil.fieldsToColumns(WfMeetingApplyPageVo.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, WfMeetingApply::getMeetingApplyFormat,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(DictionaryDetail::getName, WfMeetingApplyPageVo::getMeetingApplyFormatCn)
|
|
|
+ )
|
|
|
+ .leftJoin(MeetingRoom.class, MeetingRoom::getId, WfMeetingApply::getMeetingRoomId,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(MeetingRoom::getName, WfMeetingApplyPageVo::getMeetingRoomIdCn)
|
|
|
+ )
|
|
|
+ .leftJoin(XjrUser.class, XjrUser::getId, WfMeetingApply::getMeetingApplyHost,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(XjrUser::getName, WfMeetingApplyPageVo::getMeetingApplyHostCn)
|
|
|
+ .like(StringUtils.isNotEmpty(dto.getMeetingApplyHostCn()), XjrUser::getName, dto.getMeetingApplyHostCn())
|
|
|
+ )
|
|
|
+ .eq(permission == 1, WfMeetingApply::getSponsorId, loginId)
|
|
|
+ .ge(ObjectUtils.isNotEmpty(dto.getStartMeetingApplyDate()), WfMeetingApply::getMeetingApplyDate, dto.getStartMeetingApplyDate())
|
|
|
+ .le(ObjectUtils.isNotEmpty(dto.getEndMeetingApplyDate()), WfMeetingApply::getMeetingApplyDate, dto.getEndMeetingApplyDate())
|
|
|
+ .eq(StringUtils.isNotEmpty(dto.getMeetingApplyFormat()), WfMeetingApply::getMeetingApplyFormat, dto.getMeetingApplyFormat())
|
|
|
+ .like(StringUtils.isNotEmpty(dto.getMeetingApplyTheme()), WfMeetingApply::getMeetingApplyTheme, dto.getMeetingApplyTheme())
|
|
|
+ ;
|
|
|
+ if(ObjectUtils.isNotEmpty(dto.getMeetingStatus()) && dto.getMeetingStatus() == 0){
|
|
|
+ wfMeetingApplyPageVoMPJLambdaWrapper
|
|
|
+ .ge(WfMeetingApply::getMeetingApplyDate, nowLocalDate)
|
|
|
+ .gt(WfMeetingApply::getMeetingApplyS, nowLocalTime)
|
|
|
+ ;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(ObjectUtils.isNotEmpty(dto.getMeetingStatus()) && dto.getMeetingStatus() == 1){
|
|
|
+ wfMeetingApplyPageVoMPJLambdaWrapper
|
|
|
+ .eq(WfMeetingApply::getMeetingStatus, 1)
|
|
|
+ ;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(ObjectUtils.isNotEmpty(dto.getMeetingStatus()) && dto.getMeetingStatus() == 2){
|
|
|
+ wfMeetingApplyPageVoMPJLambdaWrapper
|
|
|
+ .le(WfMeetingApply::getMeetingApplyDate, nowLocalDate)
|
|
|
+ .lt(WfMeetingApply::getMeetingApplyE, nowLocalTime)
|
|
|
+ ;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(ObjectUtils.isNotEmpty(dto.getMeetingStatus()) && dto.getMeetingStatus() == 3){
|
|
|
+ wfMeetingApplyPageVoMPJLambdaWrapper
|
|
|
+ .eq(WfMeetingApply::getMeetingApplyDate, nowLocalDate)
|
|
|
+ .le(WfMeetingApply::getMeetingApplyS, nowLocalTime)
|
|
|
+ .ge(WfMeetingApply::getMeetingApplyE, nowLocalTime)
|
|
|
+ ;
|
|
|
+ }
|
|
|
+
|
|
|
+ IPage<WfMeetingApplyPageVo> page = this.selectJoinListPage(ConventPage.getPage(dto), WfMeetingApplyPageVo.class, wfMeetingApplyPageVoMPJLambdaWrapper);
|
|
|
+
|
|
|
+
|
|
|
+ for (WfMeetingApplyPageVo vo : page.getRecords()){
|
|
|
+ if (vo.getMeetingStatus() != 1) {
|
|
|
+ if (vo.getMeetingApplyDate().isBefore(nowLocalDate)) {
|
|
|
+ vo.setMeetingStatus(2);
|
|
|
+ } else if (vo.getMeetingApplyDate().isAfter(nowLocalDate)) {
|
|
|
+ vo.setMeetingStatus(1);
|
|
|
+ } else {
|
|
|
+ if (vo.getMeetingApplyE().isBefore(nowLocalTime)) {
|
|
|
+ vo.setMeetingStatus(2);
|
|
|
+ } else if (vo.getMeetingApplyS().isAfter(nowLocalTime)) {
|
|
|
+ vo.setMeetingStatus(1);
|
|
|
+ } else {
|
|
|
+ vo.setMeetingStatus(3);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<MeetingConfereeListVo> listMeetingConferee(MeetingConfereeListDto dto) {
|
|
|
+ MPJLambdaWrapper<MeetingConferee> meetingConfereeMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ meetingConfereeMPJLambdaWrapper
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .select(MeetingConferee::getId)
|
|
|
+ .select(MeetingConferee.class, x -> VoToColumnUtil.fieldsToColumns(MeetingConfereeListVo.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(XjrUser.class, XjrUser::getId, MeetingConferee::getUserId,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(XjrUser::getName, MeetingConfereeListVo::getUserIdCn)
|
|
|
+ .selectAs(XjrUser::getUserName, MeetingConfereeListVo::getUserName)
|
|
|
+ )
|
|
|
+ .eq(MeetingConferee::getWfMeetingApplyId, dto.getWfMeetingApplyId())
|
|
|
+ ;
|
|
|
+
|
|
|
+ return meetingConfereeMapper.selectJoinList(MeetingConfereeListVo.class, meetingConfereeMPJLambdaWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<MeetingConfereeOpinionListVo> listMeetingConfereeOpinion(MeetingConfereeOpinionListDto dto) {
|
|
|
+ MPJLambdaWrapper<MeetingConfereeOpinion> meetingConfereeOpinionMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ meetingConfereeOpinionMPJLambdaWrapper
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .select(MeetingConfereeOpinion::getId)
|
|
|
+ .selectAs(MeetingConferee::getUserId, MeetingConfereeOpinionListVo::getUserId)
|
|
|
+ .select(MeetingConfereeOpinion.class, x -> VoToColumnUtil.fieldsToColumns(MeetingConfereeOpinionListVo.class).contains(x.getProperty()))
|
|
|
+ .innerJoin(MeetingConferee.class,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .eq(MeetingConferee::getId, MeetingConfereeOpinion::getMeetingConfereeId)
|
|
|
+ .eq(MeetingConferee::getWfMeetingApplyId, dto.getWfMeetingApplyId())
|
|
|
+ )
|
|
|
+ .leftJoin(XjrUser.class, XjrUser::getId, MeetingConferee::getUserId,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(XjrUser::getName, MeetingConfereeListVo::getUserIdCn)
|
|
|
+ )
|
|
|
+ ;
|
|
|
+ return meetingConfereeOpinionMapper.selectJoinList(MeetingConfereeOpinionListVo.class, meetingConfereeOpinionMPJLambdaWrapper);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -142,9 +274,11 @@ public class WfMeetingApplyServiceImpl extends MPJBaseServiceImpl<WfMeetingApply
|
|
|
wrapper
|
|
|
.disableSubLogicDel()
|
|
|
.select(WfMeetingApply::getId)
|
|
|
- .selectAs(MeetingRoom::getName, WfMeetingApply::getMeetingSummary)
|
|
|
+ .selectAs(MeetingRoom::getName, WfMeetingApply::getMeetingSummary)
|
|
|
+ .selectAs(XjrUser::getName, WfMeetingApply::getMonogramTheme)
|
|
|
.select(WfMeetingApply.class,x -> VoToColumnUtil.fieldsToColumns(WfMeetingApply.class).contains(x.getProperty()))
|
|
|
.leftJoin(MeetingRoom.class, MeetingRoom::getId, WfMeetingApply::getMeetingRoomId)
|
|
|
+ .leftJoin(XjrUser.class, XjrUser::getId, WfMeetingApply::getSponsorId)
|
|
|
.eq(WfMeetingApply::getId, id)
|
|
|
;
|
|
|
WfMeetingApply meetingApply = this.selectJoinOne(WfMeetingApply.class, wrapper);
|
|
@@ -159,9 +293,16 @@ public class WfMeetingApplyServiceImpl extends MPJBaseServiceImpl<WfMeetingApply
|
|
|
&& ObjectUtils.isNotEmpty(workflowFormRelation)
|
|
|
&& HistoricProcessInstance.STATE_COMPLETED.equals(workflowFormRelation.getCurrentState())
|
|
|
) {
|
|
|
+
|
|
|
+ WfMeetingApply updateWorkflowStatus = new WfMeetingApply();
|
|
|
+ updateWorkflowStatus.setId(meetingApply.getId());
|
|
|
+ updateWorkflowStatus.setWorkflowStatus(1);
|
|
|
+ this.updateById(updateWorkflowStatus);
|
|
|
+
|
|
|
if (meetingApply.getMeetingApplyParticipants() == null || meetingApply.getMeetingApplyParticipants().isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
List<String> userIds = Arrays.asList(meetingApply.getMeetingApplyParticipants().split(","));
|
|
|
|
|
|
|
|
@@ -172,15 +313,15 @@ public class WfMeetingApplyServiceImpl extends MPJBaseServiceImpl<WfMeetingApply
|
|
|
String startTime = startLocalDateTime.format(formatter);
|
|
|
String endTime = endLocalDateTime.format(formatter);
|
|
|
|
|
|
-
|
|
|
- List<WorkflowExtra> list = extraService.list(
|
|
|
- new MPJLambdaWrapper<WorkflowExtra>()
|
|
|
- .select(WorkflowExtra.class, x -> VoToColumnUtil.fieldsToColumns(WorkflowExtra.class).contains(x.getProperty()))
|
|
|
- .innerJoin(WorkflowFormRelation.class, WorkflowFormRelation::getProcessId, WorkflowExtra::getProcessId)
|
|
|
- .eq(WorkflowFormRelation::getFormId, id)
|
|
|
- .orderByAsc(WorkflowExtra::getStartTime)
|
|
|
- );
|
|
|
- String startUserName = list.get(0).getStartUserName();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
MeetingConferee meetingConferee;
|
|
|
|
|
@@ -219,12 +360,24 @@ public class WfMeetingApplyServiceImpl extends MPJBaseServiceImpl<WfMeetingApply
|
|
|
paramJson.put("thing7", thing7);
|
|
|
|
|
|
JSONObject thing8 = new JSONObject();
|
|
|
- thing8.put("value", startUserName);
|
|
|
+ thing8.put("value", meetingApply.getMonogramTheme());
|
|
|
paramJson.put("thing8", thing8);
|
|
|
|
|
|
weChatSendMessageDto.setContent(paramJson);
|
|
|
weChatService.sendTemplateMessage(weChatSendMessageDto);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotEmpty(meetingApply)
|
|
|
+ && ObjectUtils.isNotEmpty(workflowFormRelation)
|
|
|
+ && !HistoricProcessInstance.STATE_COMPLETED.equals(workflowFormRelation.getCurrentState())
|
|
|
+ && !HistoricProcessInstance.STATE_ACTIVE.equals(workflowFormRelation.getCurrentState())
|
|
|
+ ) {
|
|
|
+
|
|
|
+ WfMeetingApply updateWorkflowStatus = new WfMeetingApply();
|
|
|
+ updateWorkflowStatus.setId(meetingApply.getId());
|
|
|
+ updateWorkflowStatus.setWorkflowStatus(2);
|
|
|
+ this.updateById(updateWorkflowStatus);
|
|
|
+ }
|
|
|
}
|
|
|
}
|