From dedacd79c93f8ef95e0cb986f5e7fbd27ddbd907 Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期四, 03 七月 2025 09:12:49 +0800 Subject: [PATCH] 2025-07-03 --- ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 55 insertions(+), 4 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java index 8e03e92..637fa40 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java @@ -1,10 +1,13 @@ package com.ltkj.web.controller.system; +import java.io.IOException; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ltkj.common.core.domain.entity.SysUser; import com.ltkj.common.core.domain.model.LoginUser; @@ -12,6 +15,8 @@ import com.ltkj.hosp.domain.SysNoticeUser; import com.ltkj.hosp.service.SysNoticeUserService; import com.ltkj.system.service.ISysUserService; +import com.ltkj.web.websocket.ClientSessionInfo; +import com.ltkj.web.websocket.WebSockerManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; @@ -31,6 +36,8 @@ import com.ltkj.common.enums.BusinessType; import com.ltkj.system.domain.SysNotice; import com.ltkj.system.service.ISysNoticeService; +import org.springframework.web.socket.TextMessage; +import org.springframework.web.socket.WebSocketSession; /** * 鍏憡 淇℃伅鎿嶄綔澶勭悊 @@ -46,6 +53,8 @@ private SysNoticeUserService sysNoticeUserService; @Autowired private ISysUserService userService; + @Autowired + private WebSockerManager webSockerManager; /** * 鑾峰彇閫氱煡鍏憡鍒楄〃 @@ -55,6 +64,15 @@ public TableDataInfo list(SysNotice notice) { startPage(); List<SysNotice> list = noticeService.selectNoticeList(notice); + for (SysNotice sysNotice : list) { + LambdaQueryWrapper<SysNoticeUser> wq = new LambdaQueryWrapper<>(); + wq.eq(SysNoticeUser::getNoticeId, sysNotice.getNoticeId()); + List<SysNoticeUser> sysNoticeUsers = sysNoticeUserService.list(wq); + if(null != sysNoticeUsers && !sysNoticeUsers.isEmpty()){ + List<String> longList = sysNoticeUsers.stream().map(i -> i.getUserId().toString()).collect(Collectors.toList()); + sysNotice.setUserIds(longList); + } + } return getDataTable(list); } @@ -64,7 +82,15 @@ // @PreAuthorize("@ss.hasPermi('system:notice:query')") @GetMapping(value = "/{noticeId}") public AjaxResult getInfo(@PathVariable Long noticeId) { - return success(noticeService.selectNoticeById(noticeId)); + SysNotice byId = noticeService.getById(noticeId); + LambdaQueryWrapper<SysNoticeUser> wq = new LambdaQueryWrapper<>(); + wq.eq(SysNoticeUser::getNoticeId, noticeId); + List<SysNoticeUser> sysNoticeUsers = sysNoticeUserService.list(wq); + if(null != sysNoticeUsers && !sysNoticeUsers.isEmpty()){ + List<String> longList = sysNoticeUsers.stream().map(i -> i.getUserId().toString()).collect(Collectors.toList()); + byId.setUserIds(longList); + } + return success(byId); } /** @@ -77,8 +103,8 @@ public AjaxResult add(@Validated @RequestBody SysNotice notice) { notice.setCreateBy(getUsername()); notice.setNoticeId(IdUtil.getSnowflake().nextId()); - int insertNotice = noticeService.insertNotice(notice); - if (insertNotice > 0){ + boolean insertNotice = noticeService.save(notice); + if (insertNotice){ if (notice.getUserIds() == null || notice.getUserIds().isEmpty()){ if (StrUtil.isBlank(notice.getDeptId())){ notice.setUserIds(userService.list().stream().map(i -> String.valueOf(i.getUserId())).collect(Collectors.toList())); @@ -96,6 +122,14 @@ sysNoticeUserService.save(user); } }else return AjaxResult.error(); + for (Map.Entry<String, ClientSessionInfo> entry : webSockerManager.userSessions.entrySet()) { + if (!notice.getUserIds().contains(entry.getKey())) continue; + WebSocketSession session = entry.getValue().getSession(); + try { + session.sendMessage(new TextMessage(JSONUtil.toJsonStr(notice))); + } catch (IOException ignored) { + } + } return AjaxResult.success(); } @@ -107,7 +141,24 @@ @PutMapping public AjaxResult edit(@Validated @RequestBody SysNotice notice) { notice.setUpdateBy(getUsername()); - return toAjax(noticeService.updateNotice(notice)); + List<String> userIds = notice.getUserIds(); + if (noticeService.updateById(notice)) { + if(null !=userIds && !userIds.isEmpty()){ + LambdaQueryWrapper<SysNoticeUser> wq = new LambdaQueryWrapper<>(); + wq.eq(SysNoticeUser::getNoticeId, notice.getNoticeId()); + sysNoticeUserService.remove(wq); + for (String userId : userIds) { + SysNoticeUser user = new SysNoticeUser(); + user.setId(IdUtil.getSnowflake().nextId()); + user.setNoticeId(notice.getNoticeId()); + user.setUserId(Long.valueOf(userId)); + sysNoticeUserService.save(user); + } + } + return AjaxResult.success(); + } + + return AjaxResult.error(); } /** -- Gitblit v1.8.0