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;
|
|
/**
|
* <p>
|
* 通知用户关联表 前端控制器
|
* </p>
|
*
|
* @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<PageInfo<NotificationVO>> 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<NotificationDetailVO> detail(String id) {
|
NotificationDetailVO notificationDetailVO = new NotificationDetailVO();
|
OaNotification oaNotification = oaNotificationService.getById(id);
|
BeanUtils.copyProperties(oaNotification, notificationDetailVO);
|
// StringBuilder deptName = new StringBuilder();
|
// List<TDept> tDepts = deptService.list();
|
// List<SysUser> sysUsers = sysUserService.selectAllList();
|
// List<OaNotificationUser> notifationUsers = oaNotifationUserService.lambdaQuery().eq(OaNotificationUser::getNotificationId, id)
|
// .list();
|
// Map<Integer, String> deptMap = tDepts.stream().collect(Collectors.toMap(TDept::getId, TDept::getDeptName));
|
// Map<Long, SysUser> 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<NotificationDeptUserDetailVO> notificationUserVOS = new ArrayList<>();
|
// List<Long> userIds = notifationUsers.stream().map(e -> e.getUserId().longValue()).collect(Collectors.toList());
|
// if (!userIds.isEmpty()){
|
// Map<String, List<SysUser>> deptUserList = sysUsers.stream().filter(e -> userIds.contains(e.getUserId()))
|
// .collect(Collectors.groupingBy(SysUser::getDeptId));
|
// // 遍历这个map
|
// for (Map.Entry<String, List<SysUser>> entry : deptUserList.entrySet()) {
|
// List<SysUser> 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<NotificationUserDetailVO> 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);
|
}
|
}
|