Browse Source

Merge branch 'master_20240722' of http://git.dgtis.com/15896567520/oneportal_saas into master_20240722

zhaopeiqing 6 months ago
parent
commit
c5a29e3ca4

+ 61 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/meeting/reserve/OaMeetingReserveServiceImpl.java

@@ -10,10 +10,14 @@ import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.bpm.controller.admin.meeting.reserve.vo.OaMeetingReservePageReqVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.meeting.reserve.vo.OaMeetingReserveSaveReqVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.meeting.reserve.OaMeetingReserveDO;
+import cn.iocoder.yudao.module.bpm.dal.dataobject.meeting.room.OaMeetingRoomDO;
 import cn.iocoder.yudao.module.bpm.dal.mysql.meeting.reserve.OaMeetingReserveMapper;
 import cn.iocoder.yudao.module.bpm.enums.MeetingReserveStatusEnum;
+import cn.iocoder.yudao.module.bpm.service.meeting.room.OaMeetingRoomService;
+import cn.iocoder.yudao.module.bpm.util.OANotifyContentUtil;
 import cn.iocoder.yudao.module.employee.api.EmployeeApi;
 import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
+import cn.iocoder.yudao.module.system.api.notify.NotifyMessageSendApi;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.springframework.stereotype.Service;
@@ -50,6 +54,12 @@ public class OaMeetingReserveServiceImpl implements OaMeetingReserveService {
     @Resource
     private EmployeeApi employeeApi;
 
+    @Resource
+    private NotifyMessageSendApi notifyMessageSendApi;
+
+    @Resource
+    private OaMeetingRoomService oaMeetingRoomService;
+
     @Override
     public Long createOaMeetingReserve(OaMeetingReserveSaveReqVO createReqVO) {
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
@@ -100,6 +110,32 @@ public class OaMeetingReserveServiceImpl implements OaMeetingReserveService {
         }
         oaMeetingReserve.setStatus(MeetingReserveStatusEnum.WAITING.getStatus());
         oaMeetingReserveMapper.insert(oaMeetingReserve);
+
+        // 预定成功发送站内信
+        Long assignId = loginEmployee.getId();
+        String assigneeName = loginEmployee.getName();
+        Long roomId = oaMeetingReserve.getRoomId();
+        String meetingRoomName = "";
+        if (roomId != null) {
+            OaMeetingRoomDO oaMeetingRoom = oaMeetingRoomService.getOaMeetingRoom(roomId);
+            if (oaMeetingRoom != null) {
+                meetingRoomName = oaMeetingRoom.getName();
+            }
+        }
+        String meetingName = oaMeetingReserve.getMeetingName();
+        // 给申请人发送
+        StringBuilder content = OANotifyContentUtil.buildContentSendToMeetingReserve(assigneeName, meetingRoomName, startTime, endTime);
+        notifyMessageSendApi.sendSingleMessageToMemberForOA(assignId, content.toString());
+
+        // 给参会人发送
+        if (CollUtil.isNotEmpty(participantsIdList)) {
+            List<EmployeeRespDTO> employeeParticipants = employeeApi.getEmployeeListByIds(participantsIdList);
+            for (EmployeeRespDTO employeeParticipant : employeeParticipants) {
+                StringBuilder contentParticipant = OANotifyContentUtil.buildContentSendToMeetingParticipant(employeeParticipant.getName(), startTime, endTime, meetingRoomName, meetingName);
+                notifyMessageSendApi.sendSingleMessageToMemberForOA(employeeParticipant.getId(), contentParticipant.toString());
+            }
+        }
+
         // 返回
         return oaMeetingReserve.getId();
     }
@@ -169,6 +205,31 @@ public class OaMeetingReserveServiceImpl implements OaMeetingReserveService {
             updateObj.setNumber("0");
         }
         oaMeetingReserveMapper.updateById(updateObj);
+
+        // 预定成功发送站内信
+        Long assignId = loginEmployee.getId();
+        String assigneeName = loginEmployee.getName();
+        Long roomId = updateObj.getRoomId();
+        String meetingRoomName = "";
+        if (roomId != null) {
+            OaMeetingRoomDO oaMeetingRoom = oaMeetingRoomService.getOaMeetingRoom(roomId);
+            if (oaMeetingRoom != null) {
+                meetingRoomName = oaMeetingRoom.getName();
+            }
+        }
+        String meetingName = updateObj.getMeetingName();
+        // 给申请人发送
+        StringBuilder content = OANotifyContentUtil.buildContentSendToMeetingReserve(assigneeName, meetingRoomName, startTime, endTime);
+        notifyMessageSendApi.sendSingleMessageToMemberForOA(assignId, content.toString());
+
+        // 给参会人发送
+        if (CollUtil.isNotEmpty(participantsIdList)) {
+            List<EmployeeRespDTO> employeeParticipants = employeeApi.getEmployeeListByIds(participantsIdList);
+            for (EmployeeRespDTO employeeParticipant : employeeParticipants) {
+                StringBuilder contentParticipant = OANotifyContentUtil.buildContentSendToMeetingParticipant(employeeParticipant.getName(), startTime, endTime, meetingRoomName, meetingName);
+                notifyMessageSendApi.sendSingleMessageToMemberForOA(employeeParticipant.getId(), contentParticipant.toString());
+            }
+        }
     }
 
     private void validateOperator(Long loginUserId, Long creator) {

+ 34 - 1
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/util/OANotifyContentUtil.java

@@ -40,7 +40,40 @@ public class OANotifyContentUtil {
      */
     public static StringBuilder buildContentSendToApplyForComplete(String applyName, String processName) {
         StringBuilder builder = new StringBuilder();
-        builder.append(applyName).append(":您好,您的").append(processName).append("申请单已审批通过。详情请在审批中心-已发起中查看,谢谢!");
+        builder.append(applyName).append(":您好,您的").append(processName).append("申请单已审批通过。详情请在审批中心-我发起的查看,谢谢!");
+        return builder;
+    }
+
+    /**
+     * 给会议预定人发送预定成功站内信
+     *
+     * @param meetingReserveEmployeeName 会议预定人姓名
+     * @param meetingRoomName            会议室名称
+     * @param startTime                  会议开始时间
+     * @param endTime                    会议结束时间
+     * @return 通知内容
+     */
+    public static StringBuilder buildContentSendToMeetingReserve(String meetingReserveEmployeeName, String meetingRoomName, String startTime, String endTime) {
+        StringBuilder builder = new StringBuilder();
+        builder.append(meetingReserveEmployeeName).append(":您好,您已成功预定[").append(meetingRoomName).append("],会议时间:")
+                .append(startTime).append("至").append(endTime).append(",请知悉!");
+        return builder;
+    }
+
+    /**
+     * 给会议参与人发送预定会议准备站内信
+     *
+     * @param employeeParticipantName 参会人姓名
+     * @param startTime               会议开始时间
+     * @param endTime                 会议结束时间
+     * @param meetingRoomName         会议室名称
+     * @param meetingName             会议名称
+     * @return 通知内容
+     */
+    public static StringBuilder buildContentSendToMeetingParticipant(String employeeParticipantName, String startTime, String endTime, String meetingRoomName, String meetingName) {
+        StringBuilder builder = new StringBuilder();
+        builder.append(employeeParticipantName).append(":您好,兹定于").append(startTime).append("至").append(endTime)
+                .append("在[").append(meetingRoomName).append("]召开《").append(meetingName).append("》会议,请提前做好准备按时参加。");
         return builder;
     }
 }

+ 1 - 1
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/EmployeeInfoController.java

@@ -94,7 +94,7 @@ public class EmployeeInfoController {
     @GetMapping("/get")
     @Operation(summary = "获得员工信息")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('employee:info:query')")
+    // @PreAuthorize("@ss.hasPermission('employee:info:query')") // 根据id获取员工信息不需要权限
     public CommonResult<EmployeeInfoRespVO> getInfo(@RequestParam("id") Long id) {
 
         EmployeeInfoDO info = infoService.getInfo(id);