Compare commits

...

11 Commits

Author SHA1 Message Date
176yunxuan
998f6a683e bug:子模块返回增加周期
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 6m24s
2024-04-21 21:31:46 +08:00
72aafd8fae Merge pull request 'fix:审核模块 审核添加接口' (#42) from feature-zrx into develop
Reviewed-on: #42
Reviewed-by: 筱锋xiao_lfeng <gm@x-lf.cn>
2024-04-21 18:56:12 +08:00
xiangZr-hhh
5129d18d17 fix:审核模块 审核添加接口
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 35s
增加判空
2024-04-21 18:40:23 +08:00
bbb001d7e4 Merge pull request 'patch: 日报模块 添加日报模块' (#41) from feature-zrx into develop
Reviewed-on: #41
Reviewed-by: 筱锋xiao_lfeng <gm@x-lf.cn>
2024-04-21 14:51:54 +08:00
xiangZr-hhh
6be3aa4e13 patch: 日报模块 添加日报模块
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 34s
添加日报时添加发送消息
再再次修正日报时差问题
2024-04-21 14:44:09 +08:00
075e7eb7c0 Merge pull request 'fix: 目标模块所有查询接口' (#40) from feature-zrx into develop
Reviewed-on: #40
Reviewed-by: 筱锋xiao_lfeng <gm@x-lf.cn>
2024-04-20 20:36:03 +08:00
xiangZr-hhh
c82ffe40de fix: 目标模块所有查询接口
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 18s
再次修正8小时时差问题
2024-04-20 20:22:47 +08:00
8c6db39165 Merge pull request 'fix: 目标模块所有查询接口' (#39) from feature-zrx into develop
Reviewed-on: #39
Reviewed-by: 筱锋xiao_lfeng <gm@x-lf.cn>
2024-04-20 19:56:27 +08:00
7931981758 Merge branch 'develop' into feature-zrx
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 18s
2024-04-20 19:56:14 +08:00
d9526cda4f Merge pull request 'fix:完善业务发送消息' (#37) from feature-jie into develop
Reviewed-on: #37
Reviewed-by: 筱锋xiao_lfeng <gm@x-lf.cn>
2024-04-20 19:55:56 +08:00
xiangZr-hhh
b79148cd80 fix: 目标模块所有查询接口
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 21s
修正8小时时差问题
2024-04-20 19:53:40 +08:00
8 changed files with 134 additions and 14 deletions

View File

@ -19,16 +19,20 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Slf4j
@Component
@RequiredArgsConstructor
public class ProjectDAO {
private final ProjectMapper projectMapper;
private final UserMapper userMapper;
private final Gson gson;
public void projectAdd(ProjectInfoVO projectAdd) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectAdd 方法");
log.info("\t\t> 从 MySQL 获取数据");
@ -36,12 +40,16 @@ public class ProjectDAO {
projectMapper.projectAdd(projectAdd);
}
public void projectWorkAdd(ProjectChildAddVO projectChildAddVO) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectWorkAdd 方法");
log.info("\t\t> 从 MySQL 获取数据");
projectMapper.projectWorkAdd(projectChildAddVO);
}
public ProjectDO projectEdit(@NotNull ProjectDO projectEdit) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectEdit 方法");
log.info("\t\t> 从 MySQL 更新数据");
@ -50,12 +58,16 @@ public class ProjectDAO {
return projectMapper.getProjectById(projectEdit.getId());
}
public boolean isExistProject(Long id) {
log.info("\t> 执行 DAO 层 ProjectDAO.isExistProject 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectById(id) != null;
}
public ProjectShowDO getHeader() {
log.info("\t> 执行 DAO 层 ProjectDAO.getHeader 方法");
log.info("\t\t> 从 MySQL 获取数据");
@ -80,6 +92,8 @@ public class ProjectDAO {
return getProjectShow;
}
private void sortProject(@NotNull ProjectShowDO projectShowDO) {
log.info("\t> 执行 DAO 层 ProjectDAO.sortProject 方法");
for (int i = 0; i < projectShowDO.getData().size(); i++) {
@ -99,6 +113,8 @@ public class ProjectDAO {
}
}
public boolean setProjectShow(ProjectShowDO projectShowDO) {
log.info("\t> 执行 DAO 层 ProjectDAO.setProjectShow 方法");
sortProject(projectShowDO);
@ -108,12 +124,15 @@ public class ProjectDAO {
}
public ProjectDO getProjectById(Long id) {
log.info("\t> 执行 DAO 层 ProjectDAO.getProjectById 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectById(id);
}
public List<ProjectDO> get(Long userId, List<String> tags, List<String> isFinish) {
log.info("\t> 执行 DAO 层 ProjectDAO.get 方法");
log.info("\t\t> 从 MySQL 获取数据");
@ -225,4 +244,58 @@ public class ProjectDAO {
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;
}
}

View File

@ -1,6 +1,5 @@
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
@ -36,17 +35,17 @@ public class ProjectDailyDO {
/**
* 日志发布时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date dailyTime;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createdAt;
/**
* 修改时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updatedAt;
/**
* 是否删除

View File

@ -1,5 +1,6 @@
package com.jsl.oa.model.vodata;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
@ -27,13 +28,13 @@ public class ProjectDailyVO {
private String content;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT")
private Date dailyTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT")
private Date createdAt;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT")
private Date updatedAt;
private Boolean isAllowDelete;

View File

@ -16,6 +16,7 @@ public class ProjectModuleSimpleVO {
private Integer workLoad;
private Timestamp deadLine;
private String status;
private Integer cycle;
private String principalUser;
}

View File

@ -35,6 +35,11 @@ public interface MessageService {
HttpServletRequest request);
void messageAdd(Integer pId, Integer systemId, Integer moddleId);
void messageAdd(
Integer pId,
Long senderId,
Long receiverId);
void messageRemind();
BaseResponse messageGetById(Long id, Long uid);

View File

@ -4,9 +4,7 @@ import com.github.pagehelper.PageInfo;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.MessageMapper;
import com.jsl.oa.mapper.ProjectMapper;
import com.jsl.oa.model.dodata.MessageDO;
import com.jsl.oa.model.dodata.ProjectChildDO;
import com.jsl.oa.model.dodata.ProjectModuleDO;
import com.jsl.oa.model.dodata.*;
import com.jsl.oa.model.vodata.MessageAddVO;
import com.jsl.oa.model.vodata.MessageGetVO;
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);
}
/**
* 添加提醒消息
* 系统/模块到期提醒

View File

@ -72,6 +72,11 @@ public class ProjectDailyServiceImpl implements ProjectDailyService {
// 向数据库添加数据
projectDailyDAO.addProjectDaily(projectDailyDO);
// 发送消息
List<Long> managerUserId = projectDAO.getAllManagerUserByProject(projectId, userId);
for (Long uid: managerUserId) {
messageService.messageAdd(projectId, userId, uid);
}
return ResultUtil.success();
}

View File

@ -4,7 +4,6 @@ package com.jsl.oa.services.impl;
import com.jsl.oa.common.constant.ReviewConstants;
import com.jsl.oa.dao.ProjectDAO;
import com.jsl.oa.dao.ReviewDAO;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.ProjectMapper;
import com.jsl.oa.mapper.UserMapper;
import com.jsl.oa.model.dodata.ProjectChildDO;
@ -34,7 +33,6 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class ReviewServiceImpl implements ReviewService {
private final UserDAO userDAO;
private final ReviewDAO reviewDAO;
private final ProjectDAO projectDAO;
@ -217,11 +215,12 @@ public class ReviewServiceImpl implements ReviewService {
reviewDO.setSenderId(userId);
reviewDO.setProjectId(Long.valueOf(reviewAddVO.getProjectId()));
reviewDO.setProjectChildId(Long.valueOf(reviewAddVO.getProjectChildId()));
reviewDO.setProjectModuleId(Long.valueOf(reviewAddVO.getProjectModuleId()));
if (reviewAddVO.getProjectModuleId() != null) {
reviewDO.setProjectModuleId(Long.valueOf(reviewAddVO.getProjectModuleId()));
}
//添加数据
reviewDAO.addReview(reviewDO);
return ResultUtil.success("申请成功");
}