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())); } } } 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") 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 ); 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; } 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); } 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(); } 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); } 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); } 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); } } 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); } } 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> 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> </mapper>