From 47ff4d8018d550a23ca81a964c226ec173326942 Mon Sep 17 00:00:00 2001
From: zhaowenxuan <chacca165@163.com>
Date: 星期一, 16 六月 2025 10:37:22 +0800
Subject: [PATCH] 0616-1

---
 ltkj-system/src/main/java/com/ltkj/system/service/ISysDeptService.java           |    2 
 ltkj-system/src/main/java/com/ltkj/system/service/impl/SysNoticeServiceImpl.java |   11 +++
 ltkj-admin/src/main/resources/sql/index.sql                                      |    7 ++
 ltkj-system/src/main/java/com/ltkj/system/domain/SysNotice.java                  |   25 ++++++++
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysUserController.java   |    8 ++
 ltkj-system/src/main/java/com/ltkj/system/service/impl/SysDeptServiceImpl.java   |    5 +
 ltkj-system/src/main/resources/mapper/system/SysNoticeMapper.xml                 |    4 +
 ltkj-system/src/main/java/com/ltkj/system/service/ISysNoticeService.java         |    5 +
 ltkj-system/src/main/resources/mapper/system/SysDeptMapper.xml                   |   14 ++++
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysNoticeController.java |   48 +++++++++++++++
 ltkj-system/src/main/java/com/ltkj/system/mapper/SysDeptMapper.java              |    2 
 ltkj-system/src/main/java/com/ltkj/system/mapper/SysNoticeMapper.java            |   11 +++
 12 files changed, 140 insertions(+), 2 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 5345e45..8e03e92 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,9 +1,20 @@
 package com.ltkj.web.controller.system;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ltkj.common.core.domain.entity.SysUser;
+import com.ltkj.common.core.domain.model.LoginUser;
+import com.ltkj.common.utils.SecurityUtils;
+import com.ltkj.hosp.domain.SysNoticeUser;
+import com.ltkj.hosp.service.SysNoticeUserService;
+import com.ltkj.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -31,6 +42,10 @@
 public class SysNoticeController extends BaseController {
     @Autowired
     private ISysNoticeService noticeService;
+    @Autowired
+    private SysNoticeUserService sysNoticeUserService;
+    @Autowired
+    private ISysUserService userService;
 
     /**
      * 鑾峰彇閫氱煡鍏憡鍒楄〃
@@ -58,9 +73,30 @@
 //    @PreAuthorize("@ss.hasPermi('system:notice:add')")
     @Log(title = "閫氱煡鍏憡", businessType = BusinessType.INSERT)
     @PostMapping
+    @Transactional
     public AjaxResult add(@Validated @RequestBody SysNotice notice) {
         notice.setCreateBy(getUsername());
-        return toAjax(noticeService.insertNotice(notice));
+        notice.setNoticeId(IdUtil.getSnowflake().nextId());
+        int insertNotice = noticeService.insertNotice(notice);
+        if (insertNotice > 0){
+            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()));
+                }else {
+                    LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
+                    wrapper.eq(SysUser::getDeptId, notice.getDeptId());
+                    notice.setUserIds(userService.list(wrapper).stream().map(i -> String.valueOf(i.getUserId())).collect(Collectors.toList()));
+                }
+            }
+            for (String userId : notice.getUserIds()) {
+                SysNoticeUser user = new SysNoticeUser();
+                user.setId(IdUtil.getSnowflake().nextId());
+                user.setNoticeId(notice.getNoticeId());
+                user.setUserId(Long.valueOf(userId));
+                sysNoticeUserService.save(user);
+            }
+        }else return AjaxResult.error();
+        return AjaxResult.success();
     }
 
     /**
@@ -83,4 +119,14 @@
     public AjaxResult remove(@PathVariable Long[] noticeIds) {
         return toAjax(noticeService.deleteNoticeByIds(noticeIds));
     }
+
+    @GetMapping("/noticeToday")
+    public AjaxResult noticeToday(){
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        if (loginUser.getUserId().equalsIgnoreCase("1")){
+            return AjaxResult.success(noticeService.selectAllByAdmin());
+        }else {
+            return AjaxResult.success(noticeService.selectAll(loginUser.getUserId()));
+        }
+    }
 }
diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysUserController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysUserController.java
index 269d29a..d3af3d7 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysUserController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysUserController.java
@@ -134,6 +134,14 @@
         return getDataTable(list);
     }
 
+    @GetMapping("/userListByDeptId")
+    public AjaxResult userListByDeptId(@RequestParam("deptId") String deptId){
+        List<Long> deptIds = deptService.getDeptTreeById(deptId);
+        LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(SysUser::getDeptId,deptIds);
+        return AjaxResult.success(userService.list(wrapper));
+    }
+
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.EXPORT)
 //    @PreAuthorize("@ss.hasPermi('system:user:export')")
     @PostMapping("/export")
diff --git a/ltkj-admin/src/main/resources/sql/index.sql b/ltkj-admin/src/main/resources/sql/index.sql
index 689cc2b..04663a2 100644
--- a/ltkj-admin/src/main/resources/sql/index.sql
+++ b/ltkj-admin/src/main/resources/sql/index.sql
@@ -35,3 +35,10 @@
 
 
 SELECT * FROM tj_report_special_project;
+
+-- 鐢ㄦ埛鍏憡鍏宠仈琛�
+CREATE TABLE sys_notice_user (
+                                 id BIGINT PRIMARY KEY NOT NULL,
+                                 notice_id BIGINT NOT NULL,
+                                 user_id BIGINT NOT NULL
+);
diff --git a/ltkj-system/src/main/java/com/ltkj/system/domain/SysNotice.java b/ltkj-system/src/main/java/com/ltkj/system/domain/SysNotice.java
index 7ac7691..626203f 100644
--- a/ltkj-system/src/main/java/com/ltkj/system/domain/SysNotice.java
+++ b/ltkj-system/src/main/java/com/ltkj/system/domain/SysNotice.java
@@ -3,10 +3,13 @@
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Size;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ltkj.common.core.domain.BaseEntity;
 import com.ltkj.common.xss.Xss;
+
+import java.util.List;
 
 /**
  * 閫氱煡鍏憡琛� sys_notice
@@ -41,6 +44,28 @@
      */
     private String status;
 
+    @TableField(exist = false)
+    private String deptId;
+
+    @TableField(exist = false)
+    private List<String> userIds;
+
+    public String getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(String deptId) {
+        this.deptId = deptId;
+    }
+
+    public List<String> getUserIds() {
+        return userIds;
+    }
+
+    public void setUserIds(List<String> userIds) {
+        this.userIds = userIds;
+    }
+
     public Long getNoticeId() {
         return noticeId;
     }
diff --git a/ltkj-system/src/main/java/com/ltkj/system/mapper/SysDeptMapper.java b/ltkj-system/src/main/java/com/ltkj/system/mapper/SysDeptMapper.java
index 4dac7d2..70b0f8d 100644
--- a/ltkj-system/src/main/java/com/ltkj/system/mapper/SysDeptMapper.java
+++ b/ltkj-system/src/main/java/com/ltkj/system/mapper/SysDeptMapper.java
@@ -158,4 +158,6 @@
 
      @Select("SELECT e.dept_name FROM sys_dept e WHERE e.dept_id=#{deptId}")
     String getprentks(String deptId);
+
+    List<Long> getDeptTreeById(@Param("deptId") String deptId);
 }
diff --git a/ltkj-system/src/main/java/com/ltkj/system/mapper/SysNoticeMapper.java b/ltkj-system/src/main/java/com/ltkj/system/mapper/SysNoticeMapper.java
index 4f08775..822ec7e 100644
--- a/ltkj-system/src/main/java/com/ltkj/system/mapper/SysNoticeMapper.java
+++ b/ltkj-system/src/main/java/com/ltkj/system/mapper/SysNoticeMapper.java
@@ -3,6 +3,8 @@
 import java.util.List;
 
 import com.ltkj.system.domain.SysNotice;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 /**
  * 閫氱煡鍏憡琛� 鏁版嵁灞�
@@ -57,4 +59,13 @@
      * @return 缁撴灉
      */
     public int deleteNoticeByIds(Long[] noticeIds);
+
+    @Select("SELECT s.* FROM sys_notice s\n" +
+            "  JOIN sys_notice_user n ON s.notice_id = n.notice_id\n" +
+            " WHERE DATE(s.create_time) = CURDATE() AND n.user_id = #{userId}")
+    List<SysNotice> selectAll(@Param("userId") String userId);
+
+    @Select("SELECT s.* FROM sys_notice s\n" +
+            " WHERE DATE(s.create_time) = CURDATE()")
+    List<SysNotice> selectAllByAdmin();
 }
diff --git a/ltkj-system/src/main/java/com/ltkj/system/service/ISysDeptService.java b/ltkj-system/src/main/java/com/ltkj/system/service/ISysDeptService.java
index 309ad65..8dd83a8 100644
--- a/ltkj-system/src/main/java/com/ltkj/system/service/ISysDeptService.java
+++ b/ltkj-system/src/main/java/com/ltkj/system/service/ISysDeptService.java
@@ -162,4 +162,6 @@
     List<String> getCzDeptIds();
 
     String getprentks(String deptId);
+
+    List<Long> getDeptTreeById(String deptId);
 }
diff --git a/ltkj-system/src/main/java/com/ltkj/system/service/ISysNoticeService.java b/ltkj-system/src/main/java/com/ltkj/system/service/ISysNoticeService.java
index 8427807..bedfff3 100644
--- a/ltkj-system/src/main/java/com/ltkj/system/service/ISysNoticeService.java
+++ b/ltkj-system/src/main/java/com/ltkj/system/service/ISysNoticeService.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import com.ltkj.common.core.domain.AjaxResult;
 import com.ltkj.system.domain.SysNotice;
 
 /**
@@ -57,4 +58,8 @@
      * @return 缁撴灉
      */
     public int deleteNoticeByIds(Long[] noticeIds);
+
+    List<SysNotice> selectAllByAdmin();
+
+    List<SysNotice> selectAll(String userId);
 }
diff --git a/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysDeptServiceImpl.java b/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysDeptServiceImpl.java
index c26004c..f215d8b 100644
--- a/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysDeptServiceImpl.java
+++ b/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysDeptServiceImpl.java
@@ -454,4 +454,9 @@
     public String getprentks(String deptId) {
         return deptMapper.getprentks(deptId);
     }
+
+    @Override
+    public List<Long> getDeptTreeById(String deptId) {
+        return deptMapper.getDeptTreeById(deptId);
+    }
 }
diff --git a/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysNoticeServiceImpl.java b/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysNoticeServiceImpl.java
index 3b11a02..c8ea5b3 100644
--- a/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysNoticeServiceImpl.java
+++ b/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysNoticeServiceImpl.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import com.ltkj.common.core.domain.AjaxResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ltkj.system.domain.SysNotice;
@@ -83,4 +84,14 @@
     public int deleteNoticeByIds(Long[] noticeIds) {
         return noticeMapper.deleteNoticeByIds(noticeIds);
     }
+
+    @Override
+    public List<SysNotice> selectAllByAdmin() {
+        return noticeMapper.selectAllByAdmin();
+    }
+
+    @Override
+    public List<SysNotice> selectAll(String userId) {
+        return noticeMapper.selectAll(userId);
+    }
 }
diff --git a/ltkj-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ltkj-system/src/main/resources/mapper/system/SysDeptMapper.xml
index 022e364..f1e88c1 100644
--- a/ltkj-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ltkj-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -384,5 +384,19 @@
                 #{totalRows,mode=OUT,jdbcType=INTEGER}
             )}
     </select>
+    <select id="getDeptTreeById" resultType="java.lang.Long">
+        WITH RECURSIVE dept_tree AS (
+        SELECT dept_id
+        FROM sys_dept
+        WHERE dept_id = #{deptId}
+
+        UNION ALL
+
+        SELECT d.dept_id
+        FROM sys_dept d
+        INNER JOIN dept_tree dt ON d.parent_id = dt.dept_id
+        )
+        SELECT dept_id FROM dept_tree;
+    </select>
 
 </mapper>
diff --git a/ltkj-system/src/main/resources/mapper/system/SysNoticeMapper.xml b/ltkj-system/src/main/resources/mapper/system/SysNoticeMapper.xml
index a5358cf..2db1efd 100644
--- a/ltkj-system/src/main/resources/mapper/system/SysNoticeMapper.xml
+++ b/ltkj-system/src/main/resources/mapper/system/SysNoticeMapper.xml
@@ -53,6 +53,7 @@
 
     <insert id="insertNotice" parameterType="SysNotice">
         insert into sys_notice (
+        <if test="noticeId != null and noticeId != '' ">notice_id,</if>
         <if test="noticeTitle != null and noticeTitle != '' ">notice_title,</if>
         <if test="noticeType != null and noticeType != '' ">notice_type,</if>
         <if test="noticeContent != null and noticeContent != '' ">notice_content,</if>
@@ -61,6 +62,7 @@
         <if test="createBy != null and createBy != ''">create_by,</if>
         create_time
         )values(
+        <if test="noticeId != null and noticeId != '' ">#{noticeId},</if>
         <if test="noticeTitle != null and noticeTitle != ''">#{noticeTitle},</if>
         <if test="noticeType != null and noticeType != ''">#{noticeType},</if>
         <if test="noticeContent != null and noticeContent != ''">#{noticeContent},</if>
@@ -97,4 +99,4 @@
         </foreach>
     </delete>
 
-</mapper>
\ No newline at end of file
+</mapper>

--
Gitblit v1.8.0