Compare commits
2 Commits
075e7eb7c0
...
bbb001d7e4
Author | SHA1 | Date | |
---|---|---|---|
bbb001d7e4 | |||
|
6be3aa4e13 |
|
@ -19,16 +19,20 @@ import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class ProjectDAO {
|
public class ProjectDAO {
|
||||||
|
|
||||||
|
|
||||||
private final ProjectMapper projectMapper;
|
private final ProjectMapper projectMapper;
|
||||||
private final UserMapper userMapper;
|
private final UserMapper userMapper;
|
||||||
private final Gson gson;
|
private final Gson gson;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void projectAdd(ProjectInfoVO projectAdd) {
|
public void projectAdd(ProjectInfoVO projectAdd) {
|
||||||
log.info("\t> 执行 DAO 层 ProjectDAO.projectAdd 方法");
|
log.info("\t> 执行 DAO 层 ProjectDAO.projectAdd 方法");
|
||||||
log.info("\t\t> 从 MySQL 获取数据");
|
log.info("\t\t> 从 MySQL 获取数据");
|
||||||
|
@ -36,12 +40,16 @@ public class ProjectDAO {
|
||||||
projectMapper.projectAdd(projectAdd);
|
projectMapper.projectAdd(projectAdd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void projectWorkAdd(ProjectChildAddVO projectChildAddVO) {
|
public void projectWorkAdd(ProjectChildAddVO projectChildAddVO) {
|
||||||
log.info("\t> 执行 DAO 层 ProjectDAO.projectWorkAdd 方法");
|
log.info("\t> 执行 DAO 层 ProjectDAO.projectWorkAdd 方法");
|
||||||
log.info("\t\t> 从 MySQL 获取数据");
|
log.info("\t\t> 从 MySQL 获取数据");
|
||||||
projectMapper.projectWorkAdd(projectChildAddVO);
|
projectMapper.projectWorkAdd(projectChildAddVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public ProjectDO projectEdit(@NotNull ProjectDO projectEdit) {
|
public ProjectDO projectEdit(@NotNull ProjectDO projectEdit) {
|
||||||
log.info("\t> 执行 DAO 层 ProjectDAO.projectEdit 方法");
|
log.info("\t> 执行 DAO 层 ProjectDAO.projectEdit 方法");
|
||||||
log.info("\t\t> 从 MySQL 更新数据");
|
log.info("\t\t> 从 MySQL 更新数据");
|
||||||
|
@ -50,12 +58,16 @@ public class ProjectDAO {
|
||||||
return projectMapper.getProjectById(projectEdit.getId());
|
return projectMapper.getProjectById(projectEdit.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public boolean isExistProject(Long id) {
|
public boolean isExistProject(Long id) {
|
||||||
log.info("\t> 执行 DAO 层 ProjectDAO.isExistProject 方法");
|
log.info("\t> 执行 DAO 层 ProjectDAO.isExistProject 方法");
|
||||||
log.info("\t\t> 从 MySQL 获取数据");
|
log.info("\t\t> 从 MySQL 获取数据");
|
||||||
return projectMapper.getProjectById(id) != null;
|
return projectMapper.getProjectById(id) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public ProjectShowDO getHeader() {
|
public ProjectShowDO getHeader() {
|
||||||
log.info("\t> 执行 DAO 层 ProjectDAO.getHeader 方法");
|
log.info("\t> 执行 DAO 层 ProjectDAO.getHeader 方法");
|
||||||
log.info("\t\t> 从 MySQL 获取数据");
|
log.info("\t\t> 从 MySQL 获取数据");
|
||||||
|
@ -80,6 +92,8 @@ public class ProjectDAO {
|
||||||
return getProjectShow;
|
return getProjectShow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void sortProject(@NotNull ProjectShowDO projectShowDO) {
|
private void sortProject(@NotNull ProjectShowDO projectShowDO) {
|
||||||
log.info("\t> 执行 DAO 层 ProjectDAO.sortProject 方法");
|
log.info("\t> 执行 DAO 层 ProjectDAO.sortProject 方法");
|
||||||
for (int i = 0; i < projectShowDO.getData().size(); i++) {
|
for (int i = 0; i < projectShowDO.getData().size(); i++) {
|
||||||
|
@ -99,6 +113,8 @@ public class ProjectDAO {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public boolean setProjectShow(ProjectShowDO projectShowDO) {
|
public boolean setProjectShow(ProjectShowDO projectShowDO) {
|
||||||
log.info("\t> 执行 DAO 层 ProjectDAO.setProjectShow 方法");
|
log.info("\t> 执行 DAO 层 ProjectDAO.setProjectShow 方法");
|
||||||
sortProject(projectShowDO);
|
sortProject(projectShowDO);
|
||||||
|
@ -108,12 +124,15 @@ public class ProjectDAO {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public ProjectDO getProjectById(Long id) {
|
public ProjectDO getProjectById(Long id) {
|
||||||
log.info("\t> 执行 DAO 层 ProjectDAO.getProjectById 方法");
|
log.info("\t> 执行 DAO 层 ProjectDAO.getProjectById 方法");
|
||||||
log.info("\t\t> 从 MySQL 获取数据");
|
log.info("\t\t> 从 MySQL 获取数据");
|
||||||
return projectMapper.getProjectById(id);
|
return projectMapper.getProjectById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public List<ProjectDO> get(Long userId, List<String> tags, List<String> isFinish) {
|
public List<ProjectDO> get(Long userId, List<String> tags, List<String> isFinish) {
|
||||||
log.info("\t> 执行 DAO 层 ProjectDAO.get 方法");
|
log.info("\t> 执行 DAO 层 ProjectDAO.get 方法");
|
||||||
log.info("\t\t> 从 MySQL 获取数据");
|
log.info("\t\t> 从 MySQL 获取数据");
|
||||||
|
@ -225,4 +244,58 @@ public class ProjectDAO {
|
||||||
return userDO.getNickname();
|
return userDO.getNickname();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 获取该用户在这个项目的所有上级管理用户(比如管理该用户的项目经理,管理该用户的项目负责人)
|
||||||
|
* @Date: 2024/4/21
|
||||||
|
* @Param pid: 项目id
|
||||||
|
* @Param uid: 用户id
|
||||||
|
**/
|
||||||
|
public List<Long> getAllManagerUserByProject(Integer pid, Long uid) {
|
||||||
|
|
||||||
|
// 储存 该用户 的 管理用户 数组
|
||||||
|
List<Long> managerUserIds = new ArrayList<>();
|
||||||
|
// 获取项目
|
||||||
|
ProjectDO projectDO = projectMapper.getProjectById(Long.valueOf(pid));
|
||||||
|
if (projectDO == null || projectDO.getPrincipalId() == null) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
// 获取该用户
|
||||||
|
UserDO userDO = userMapper.getUserById(uid);
|
||||||
|
if (userDO == null || userDO.getUsername() == null) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取用户负责的所有子模块
|
||||||
|
List<ProjectModuleDO> projectModuleDOS = projectMapper.getAllModuleByUserId(uid);
|
||||||
|
// 去除子模块里 具有相同所属子系统 的数据(查询出来的数据里会出现多个子模块属于同一子系统情况)
|
||||||
|
projectModuleDOS = projectModuleDOS.stream()
|
||||||
|
.collect(Collectors.groupingBy(ProjectModuleDO::getProjectChildId))
|
||||||
|
.values()
|
||||||
|
.stream()
|
||||||
|
.map(projectModuleDOS1 -> projectModuleDOS1.get(0))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
// 获取这些子模块的上一级,子系统,添加对应负责人。
|
||||||
|
for (ProjectModuleDO projectModuleDO: projectModuleDOS) {
|
||||||
|
ProjectChildDO projectChildDO = projectMapper.
|
||||||
|
getProjectChildById(Math.toIntExact(projectModuleDO.getProjectChildId()));
|
||||||
|
if (projectChildDO == null || projectChildDO.getPrincipalId() == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
managerUserIds.add(projectChildDO.getPrincipalId());
|
||||||
|
}
|
||||||
|
// 添加项目负责人
|
||||||
|
managerUserIds.add(projectDO.getPrincipalId());
|
||||||
|
// 去重:去除管理用户数组里相同的人(子系统负责人可能项目,或者与项目负责人冲突)
|
||||||
|
managerUserIds = managerUserIds.stream()
|
||||||
|
.distinct().collect(Collectors.toList());
|
||||||
|
// 如果管理用户数组有自己,去除
|
||||||
|
managerUserIds.removeIf(userId -> userId.equals(uid));
|
||||||
|
|
||||||
|
return managerUserIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package com.jsl.oa.model.dodata;
|
package com.jsl.oa.model.dodata;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@ -36,17 +35,17 @@ public class ProjectDailyDO {
|
||||||
/**
|
/**
|
||||||
* 日志发布时间
|
* 日志发布时间
|
||||||
*/
|
*/
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
||||||
private Date dailyTime;
|
private Date dailyTime;
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
||||||
private Date createdAt;
|
private Date createdAt;
|
||||||
/**
|
/**
|
||||||
* 修改时间
|
* 修改时间
|
||||||
*/
|
*/
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
||||||
private Date updatedAt;
|
private Date updatedAt;
|
||||||
/**
|
/**
|
||||||
* 是否删除
|
* 是否删除
|
||||||
|
|
|
@ -35,6 +35,11 @@ public interface MessageService {
|
||||||
HttpServletRequest request);
|
HttpServletRequest request);
|
||||||
void messageAdd(Integer pId, Integer systemId, Integer moddleId);
|
void messageAdd(Integer pId, Integer systemId, Integer moddleId);
|
||||||
|
|
||||||
|
void messageAdd(
|
||||||
|
Integer pId,
|
||||||
|
Long senderId,
|
||||||
|
Long receiverId);
|
||||||
|
|
||||||
void messageRemind();
|
void messageRemind();
|
||||||
|
|
||||||
BaseResponse messageGetById(Long id, Long uid);
|
BaseResponse messageGetById(Long id, Long uid);
|
||||||
|
|
|
@ -4,9 +4,7 @@ import com.github.pagehelper.PageInfo;
|
||||||
import com.jsl.oa.dao.UserDAO;
|
import com.jsl.oa.dao.UserDAO;
|
||||||
import com.jsl.oa.mapper.MessageMapper;
|
import com.jsl.oa.mapper.MessageMapper;
|
||||||
import com.jsl.oa.mapper.ProjectMapper;
|
import com.jsl.oa.mapper.ProjectMapper;
|
||||||
import com.jsl.oa.model.dodata.MessageDO;
|
import com.jsl.oa.model.dodata.*;
|
||||||
import com.jsl.oa.model.dodata.ProjectChildDO;
|
|
||||||
import com.jsl.oa.model.dodata.ProjectModuleDO;
|
|
||||||
import com.jsl.oa.model.vodata.MessageAddVO;
|
import com.jsl.oa.model.vodata.MessageAddVO;
|
||||||
import com.jsl.oa.model.vodata.MessageGetVO;
|
import com.jsl.oa.model.vodata.MessageGetVO;
|
||||||
import com.jsl.oa.services.MessageService;
|
import com.jsl.oa.services.MessageService;
|
||||||
|
@ -279,6 +277,7 @@ public class MessageServiceImpl implements MessageService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加成员填写日报消息
|
* 添加成员填写日报消息
|
||||||
*
|
*
|
||||||
|
@ -307,6 +306,44 @@ public class MessageServiceImpl implements MessageService {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加成员填写日报消息
|
||||||
|
*
|
||||||
|
* @param pId 项目id
|
||||||
|
* @param senderId 填写用户id
|
||||||
|
* @param receiverId 接收消息用户id
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void messageAdd(
|
||||||
|
Integer pId,
|
||||||
|
Long senderId,
|
||||||
|
Long receiverId) {
|
||||||
|
// 获取项目名
|
||||||
|
ProjectDO projectDO = projectMapper.tgetProjectById(pId);
|
||||||
|
// 如果为空,则不发送消息
|
||||||
|
if (projectDO == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String projectName = projectDO.getName();
|
||||||
|
//获取填写者用户与接收消息用户信息
|
||||||
|
UserDO sederUser = userDAO.getUserById(senderId);
|
||||||
|
UserDO receiverUser = userDAO.getUserById(receiverId);
|
||||||
|
// 如果为空,则不发送消息
|
||||||
|
if (sederUser == null || receiverUser == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 添加消息
|
||||||
|
MessageAddVO messageAddVO = new MessageAddVO();
|
||||||
|
messageAddVO.setUid(receiverUser.getId());
|
||||||
|
messageAddVO.setTitle("日报消息");
|
||||||
|
messageAddVO.setText(projectName + "项目的" + "成员" + sederUser.getUsername()
|
||||||
|
+ "刚刚填写了日报");
|
||||||
|
messageAddVO.setType("Project_daily");
|
||||||
|
messageMapper.messageAdd(messageAddVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加提醒消息
|
* 添加提醒消息
|
||||||
* 系统/模块到期提醒
|
* 系统/模块到期提醒
|
||||||
|
|
|
@ -72,6 +72,11 @@ public class ProjectDailyServiceImpl implements ProjectDailyService {
|
||||||
// 向数据库添加数据
|
// 向数据库添加数据
|
||||||
projectDailyDAO.addProjectDaily(projectDailyDO);
|
projectDailyDAO.addProjectDaily(projectDailyDO);
|
||||||
|
|
||||||
|
// 发送消息
|
||||||
|
List<Long> managerUserId = projectDAO.getAllManagerUserByProject(projectId, userId);
|
||||||
|
for (Long uid: managerUserId) {
|
||||||
|
messageService.messageAdd(projectId, userId, uid);
|
||||||
|
}
|
||||||
return ResultUtil.success();
|
return ResultUtil.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user