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