package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.TDept; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.OaNotification; import com.ruoyi.system.model.OaNotificationUser; import com.ruoyi.system.query.NotificationListQuery; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.OaNotifationUserService; import com.ruoyi.system.service.OaNotificationService; import com.ruoyi.system.service.TDeptService; import com.ruoyi.system.vo.system.NotificationDeptUserDetailVO; import com.ruoyi.system.vo.system.NotificationDetailVO; import com.ruoyi.system.vo.system.NotificationUserDetailVO; import com.ruoyi.system.vo.system.NotificationVO; import io.swagger.annotations.ApiOperation; import jdk.nashorn.internal.parser.Token; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 通知用户关联表 前端控制器 *

* * @author WuGuanFengYue * @since 2025-09-15 */ @RestController @RequestMapping("/oa-notifation-user") public class OaNotifationUserController { @Resource private OaNotificationService oaNotificationService; @Resource private OaNotifationUserService oaNotifationUserService; @Resource private TDeptService deptService; @Resource private ISysUserService sysUserService; @Resource private TokenService tokenService; /** * 获取部门树列表 */ @ApiOperation("消息通知分页列表") @PostMapping("/pageList") public R> pageListUser(@RequestBody NotificationListQuery query) { Long userId = tokenService.getLoginUser().getUserId(); query.setUserId(userId); return R.ok(oaNotificationService.pageListUser(query)); } @ApiOperation(value = "消息通知详情") @GetMapping(value = "/detail") public R detail(String id) { NotificationDetailVO notificationDetailVO = new NotificationDetailVO(); OaNotification oaNotification = oaNotificationService.getById(id); BeanUtils.copyProperties(oaNotification, notificationDetailVO); // StringBuilder deptName = new StringBuilder(); // List tDepts = deptService.list(); // List sysUsers = sysUserService.selectAllList(); // List notifationUsers = oaNotifationUserService.lambdaQuery().eq(OaNotificationUser::getNotificationId, id) // .list(); // Map deptMap = tDepts.stream().collect(Collectors.toMap(TDept::getId, TDept::getDeptName)); // Map userMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, e->e)); // if (oaNotification.getType()){ // for (String deptId : oaNotification.getDeptIds().split(",")) { // String orDefault = deptMap.getOrDefault(Integer.parseInt(deptId), ""); // deptName.append(orDefault).append(","); // } // if (deptName.length() > 0){ // notificationDetailVO.setDeptName(deptName.substring(0,deptName.length()-1)); // }else { // notificationDetailVO.setDeptName(""); // } // List notificationUserVOS = new ArrayList<>(); // List userIds = notifationUsers.stream().map(e -> e.getUserId().longValue()).collect(Collectors.toList()); // if (!userIds.isEmpty()){ // Map> deptUserList = sysUsers.stream().filter(e -> userIds.contains(e.getUserId())) // .collect(Collectors.groupingBy(SysUser::getDeptId)); // // 遍历这个map // for (Map.Entry> entry : deptUserList.entrySet()) { // List users = entry.getValue(); // String deptId = entry.getKey(); // NotificationDeptUserDetailVO notificationDeptUserDetailVO = new NotificationDeptUserDetailVO(); // notificationDeptUserDetailVO.setDeptName(deptMap.getOrDefault(Integer.parseInt(deptId), "")); // notificationDeptUserDetailVO.setUsers(users); // // 查询部门下的员工数是否和users一致 // long count = sysUsers.stream().filter(e -> e.getDeptId().equals(deptId)).count(); // if (count==users.size()){ // notificationDeptUserDetailVO.setIsAll(true); // }else{ // notificationDeptUserDetailVO.setIsAll(false); // } // notificationUserVOS.add(notificationDeptUserDetailVO); // } // } // notificationDetailVO.setNotificationDeptUserDetailVOList(notificationUserVOS); // // }else{ // // notificationDetailVO.setDeptName("全部人员"); // } // List notificationUserDetailVOS = new ArrayList<>(); // for (OaNotificationUser notifationUser : notifationUsers) { // NotificationUserDetailVO notificationUserDetailVO = new NotificationUserDetailVO(); // BeanUtils.copyProperties(notifationUser, notificationUserDetailVO); // SysUser sysUser = userMap.get(notifationUser.getUserId().longValue()); // if (sysUser==null){ // continue; // } // notificationUserDetailVO.setDeptName(deptMap.getOrDefault(Integer.parseInt(sysUser.getDeptId()), "")); // notificationUserDetailVO.setNickName(sysUser.getNickName()); // notificationUserDetailVO.setPhonenumber(sysUser.getPhonenumber()); // notificationUserDetailVO.setPosition(sysUser.getPosition()); // notificationUserDetailVOS.add(notificationUserDetailVO); // } // notificationDetailVO.setNotificationUserDetailVOS(notificationUserDetailVOS); return R.ok(notificationDetailVO); } }