| | |
| | | package com.ruoyi.web.controller.api; |
| | | |
| | | |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | 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> |
| | |
| | | @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); |
| | | } |
| | | } |
| | | |