diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index 2c98673..334895e 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -393,6 +393,11 @@ public class ProjectController { @RequestParam Integer id, HttpServletRequest request ) { + + if (id == null) { + return ResultUtil.error(ErrorCode.ID_NOT_EXIST); + } + return projectService.projectChildGetById(id, request); } @@ -419,6 +424,11 @@ public class ProjectController { @RequestParam Integer childId, HttpServletRequest request ) { + + if (childId == null) { + return ResultUtil.error(ErrorCode.ID_NOT_EXIST); + } + return projectService.projectModuleGetById(childId, request); } diff --git a/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java index e894968..426ec89 100644 --- a/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java @@ -60,7 +60,6 @@ public class ProjectDailyController { @NotNull BindingResult bindingResult, HttpServletRequest request) { - log.info("请求接口[PUT]: /daily/update"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult)); @@ -73,6 +72,11 @@ public class ProjectDailyController { @NeedPermission("project:daily_delete") public BaseResponse delete(@RequestParam Integer dailyId, HttpServletRequest request) { + + if (dailyId == null) { + return ResultUtil.error(ErrorCode.ID_NOT_EXIST); + } + return projectDailyService.deleteDaily(dailyId, request); } @@ -81,6 +85,11 @@ public class ProjectDailyController { public BaseResponse getMyDaily(@RequestParam Integer page, @RequestParam Integer pageSize, HttpServletRequest request) { + + if (page == null || pageSize == null) { + return ResultUtil.error(ErrorCode.PAGE_NUMBER_IS_NULL); + } + return projectDailyService.getMyDaily(page, pageSize, request); } @@ -93,6 +102,14 @@ public class ProjectDailyController { String endTime, HttpServletRequest request) { + if (page == null || pageSize == null) { + return ResultUtil.error(ErrorCode.PAGE_NUMBER_IS_NULL); + } + + if (projectId == null) { + return ResultUtil.error(ErrorCode.ID_NOT_EXIST); + } + return projectDailyService.searchMyDaily(projectId, page, pageSize, diff --git a/src/main/java/com/jsl/oa/controllers/ReviewController.java b/src/main/java/com/jsl/oa/controllers/ReviewController.java index 237cb1e..8c955db 100644 --- a/src/main/java/com/jsl/oa/controllers/ReviewController.java +++ b/src/main/java/com/jsl/oa/controllers/ReviewController.java @@ -41,7 +41,11 @@ public class ReviewController { @RequestParam Integer page, @RequestParam Integer pageSize, HttpServletRequest request) { - log.info("请求接口[GET]: /review/getMyReview"); + + if (page == null || pageSize == null) { + return ResultUtil.error(ErrorCode.PAGE_NUMBER_IS_NULL); + } + return reviewService.getUserReview(page, pageSize, request); } @@ -55,6 +59,11 @@ public class ReviewController { public BaseResponse getMyReview(@RequestParam Integer page, @RequestParam Integer pageSize, HttpServletRequest request) { + + if (page == null || pageSize == null) { + return ResultUtil.error(ErrorCode.PAGE_NUMBER_IS_NULL); + } + return reviewService.getUserPendingApprovalReview(page, pageSize, request); } @@ -70,7 +79,6 @@ public class ReviewController { @NotNull BindingResult bindingResult, HttpServletRequest request) { - if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR); } @@ -96,7 +104,11 @@ public class ReviewController { public BaseResponse searchReview(String content, HttpServletRequest request, @RequestParam Integer page, - @RequestParam Integer pageSize) { + @RequestParam Integer pageSize) { + + if (page == null || pageSize == null) { + return ResultUtil.error(ErrorCode.PAGE_NUMBER_IS_NULL); + } return reviewService.searchReview(content, request, page, pageSize); } @@ -108,6 +120,10 @@ public class ReviewController { @RequestParam Integer page, @RequestParam Integer pageSize) { + if (page == null || pageSize == null) { + return ResultUtil.error(ErrorCode.PAGE_NUMBER_IS_NULL); + } + return reviewService.searchReviewRecords(content, statue, request, page, pageSize); } } diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index 1e7491e..c541a3d 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -1,9 +1,11 @@ package com.jsl.oa.dao; import com.google.gson.Gson; import com.jsl.oa.mapper.ProjectMapper; +import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.dodata.ProjectChildDO; import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectModuleDO; +import com.jsl.oa.model.dodata.UserDO; import com.jsl.oa.model.dodata.info.ProjectShowDO; import com.jsl.oa.model.vodata.ProjectInfoVO; import com.jsl.oa.model.vodata.ProjectChildAddVO; @@ -24,6 +26,7 @@ import java.util.Objects; public class ProjectDAO { private final ProjectMapper projectMapper; + private final UserMapper userMapper; private final Gson gson; public void projectAdd(ProjectInfoVO projectAdd) { @@ -182,9 +185,6 @@ public class ProjectDAO { return projectMapper.getAllProject(); } - public ProjectModuleDO getProjectWorkerById(Long id) { - return projectMapper.getProjectWorkById(id); - } public List getProjectByPrincipalUser(Long uid) { log.info("\t> 执行 DAO 层 ProjectDAO.getProjectFromUser 方法"); @@ -205,4 +205,24 @@ public class ProjectDAO { } + public String getPrincipalUserFromProject(Long projectId) { + + if (projectId == null) { + return ""; + } + + ProjectDO projectDO = projectMapper.getProjectById(projectId); + + UserDO userDO = userMapper.getUserById(projectDO.getPrincipalId()); + + if (userDO == null) { + return ""; + } + + if (userDO.getNickname() == null) { + return userDO.getUsername(); + } else { + return userDO.getNickname(); + } + } } diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java index d2a1deb..bf40db0 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java @@ -1,6 +1,5 @@ package com.jsl.oa.model.vodata; -import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.experimental.Accessors; @@ -17,19 +16,20 @@ public class ProjectDailyVO { private String userName; + private String nickName; + private Long projectId; private String projectName; + private String principalName; + private String content; - @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; private Boolean isAllowDelete; diff --git a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java index 41377ca..6acb433 100644 --- a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java @@ -188,7 +188,10 @@ public class MessageServiceImpl implements MessageService { // 获取项目名,负责人名 String projectName = projectMapper.tgetProjectById(pId).getName(); String senderName = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)).getUsername(); - String systemName = projectMapper.getWorkById(systemId).getName(); + String systemName = null; + if (systemId != null && projectMapper.getWorkById(systemId) != null) { + systemName = projectMapper.getWorkById(systemId).getName(); + } // 添加消息 // 1:上传文档 2:修改状态 3:修改负责人 List uidList = projectMapper.getMemberByProjectId(pId); @@ -238,7 +241,7 @@ public class MessageServiceImpl implements MessageService { String senderName = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)).getUsername(); String systemName = projectMapper.getWorkById(systmeId).getName(); String moddleName = null; - if (moddleId != null) { + if (moddleId != null && projectMapper.getModuleById(moddleId) != null) { moddleName = projectMapper.getModuleById(moddleId).getName(); } // 添加消息 @@ -303,6 +306,7 @@ public class MessageServiceImpl implements MessageService { messageMapper.messageAdd(messageAddVO); } + /** * 添加提醒消息 * 系统/模块到期提醒 diff --git a/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java index cd1d202..ffa5972 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java @@ -8,6 +8,7 @@ import com.jsl.oa.dao.ProjectDailyDAO; import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.ProjectDailyMapper; import com.jsl.oa.model.dodata.ProjectDailyDO; +import com.jsl.oa.model.dodata.UserDO; import com.jsl.oa.model.vodata.ProjectDailyAddVO; import com.jsl.oa.model.vodata.ProjectDailyDataVO; import com.jsl.oa.model.vodata.ProjectDailyUpdateVO; @@ -205,8 +206,20 @@ public class ProjectDailyServiceImpl implements ProjectDailyService { Processing.copyProperties(projectDailyDO, projectDailyVO); // 赋值其他需查询的属性 projectDailyVO.setProjectName( - projectDAO.getProjectById(projectDailyVO.getProjectId()).getName()) - .setUserName(userDAO.getUserById(projectDailyDO.getUserId()).getNickname()); + projectDAO.getProjectById(projectDailyVO.getProjectId()).getName()); + //设置发送者名称,如果为昵称为空则赋值用户账号 + UserDO senderUser = userDAO.getUserById(projectDailyDO.getUserId()); + + if (senderUser == null) { + projectDailyVO.setUserName(""); + projectDailyVO.setNickName(""); + } else { + projectDailyVO.setUserName(senderUser.getUsername()); + projectDailyVO.setNickName(senderUser.getNickname()); + } + + //设置项目负责人名称 + projectDailyVO.setPrincipalName(projectDAO.getPrincipalUserFromProject(projectDailyDO.getProjectId())); //用户是否有权限删除 if (projectDailyDO.getUserId().equals(projectDAO. getProjectById(projectDailyVO.getProjectId()).getPrincipalId())) { diff --git a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java index 58f1cc6..acdc889 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -285,6 +285,11 @@ public class ProjectServiceImpl implements ProjectService { List projectChildDOList = projectMapper.getAllChildByProjectId(id); List returnGetVOList = new ArrayList<>(); + + if (projectChildDOList.size() == 0) { + return ResultUtil.success(returnGetVOList); + } + for (ProjectChildDO projectChildDO : projectChildDOList) { ReturnGetVO returnGetVO = new ReturnGetVO(); Processing.copyProperties(projectChildDO, returnGetVO); @@ -308,8 +313,15 @@ public class ProjectServiceImpl implements ProjectService { @Override public BaseResponse projectModuleGetById(Integer id, HttpServletRequest request) { + List projectModuleDOList = projectMapper.getModuleByChildId(id); + List returnGetVOList = new ArrayList<>(); + + if (projectModuleDOList.size() == 0) { + return ResultUtil.success(returnGetVOList); + } + for (ProjectModuleDO projectModuleDO : projectModuleDOList) { ReturnGetVO returnGetVO = new ReturnGetVO(); Processing.copyProperties(projectModuleDO, returnGetVO); @@ -327,6 +339,10 @@ public class ProjectServiceImpl implements ProjectService { projectMapper.getPirIdbyId(projectMapper.getModuleById(id.intValue()).getProjectChildId()))) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } else { + ProjectModuleDO projectModuleDO = projectMapper.getModuleById(id.intValue()); + if (projectModuleDO == null) { + return ResultUtil.error(ErrorCode.MODULE_NOT_EXIST); + } HashMap descriptionMap = new HashMap<>(); descriptionMap.put("description", projectModuleEditVO.getDescription()); projectModuleEditVO.setDescription(gson.toJson(descriptionMap)); @@ -334,7 +350,6 @@ public class ProjectServiceImpl implements ProjectService { projectMapper.projectModuleEdit(projectModuleEditVO); } - return ResultUtil.success("修改成功"); } @@ -344,8 +359,12 @@ public class ProjectServiceImpl implements ProjectService { if (!Objects.equals(Processing.getAuthHeaderToUserId(request), projectMapper.getPirIdbyId(id))) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } else { + ProjectChildDO projectChildDO = projectMapper.getProjectChildById(id.intValue()); + if (projectChildDO == null) { + return ResultUtil.error(ErrorCode.PROJECT_CHILD_NOT_EXIST); + } JsonObject jsonObject = gson - .fromJson(projectMapper.getProjectChildById(id.intValue()).getDescription(), JsonObject.class); + .fromJson(projectChildDO.getDescription(), JsonObject.class); //改动简介发送消息 if (!Objects.equals(projectChildAddVO.getDescription(), "") && !projectChildAddVO.getDescription() @@ -353,11 +372,20 @@ public class ProjectServiceImpl implements ProjectService { messageService.messageAdd(projectMapper.getProjectIdBySysId(id) .intValue(), id.intValue(), null, 2, request); } // 改动周期或工作量发送消息 - if (projectChildAddVO.getCycle() != null || projectChildAddVO.getWorkLoad() != null) { + if ((projectChildAddVO.getCycle() != null + && projectChildDO.getCycle().equals(projectChildAddVO.getCycle())) + || (projectChildAddVO.getWorkLoad() != null + && projectChildDO.getWorkLoad().equals(projectChildAddVO.getWorkLoad())) + ) { messageService.messageAdd(projectMapper.getProjectIdBySysId(id) .intValue(), id.intValue(), null, 3, request); + } //改动负责人发送消息 + if (projectChildAddVO.getPrincipalId() != null + && !Objects.equals(projectChildAddVO.getPrincipalId(), + projectChildDO.getPrincipalId())) { + messageService.messageAdd(projectMapper.getProjectIdBySysId(id) + .intValue(), 3, id.intValue(), request); } - HashMap descriptionMap = new HashMap<>(); descriptionMap.put("description", projectChildAddVO.getDescription()); projectChildAddVO.setDescription(gson.toJson(descriptionMap)); @@ -366,7 +394,6 @@ public class ProjectServiceImpl implements ProjectService { projectMapper.projectChildEditAll(projectChildAddVO); } - return ResultUtil.success("修改成功"); } @@ -428,6 +455,11 @@ public class ProjectServiceImpl implements ProjectService { //判断项目是否存在 if (projectDAO.isExistProject(projectId)) { //更新数据 + ProjectDO projectDO = projectDAO.getProjectById(projectId); + //改变项目状态发送消息 + if (projectEdit.getStatus() != null && !projectDO.getStatus().equals(projectEdit.getStatus())) { + messageService.messageAdd(projectId.intValue(), 2, null, request); + } HashMap descriptionMap = new HashMap<>(); descriptionMap.put("description", projectEdit.getDescription()); projectEdit.setDescription(gson.toJson(descriptionMap)); diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index cacb380..2a64d8e 100755 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -58,6 +58,7 @@ public enum ErrorCode { PROJECT_DAILY_NOT_EXIST("ProjectDailyNotExist", 40023, "日志不存在"), NOT_PERMISSION_UPDATE_DAILY("NotPermissionUpdateDaily", 40024, "用户无权限修改日报"), User_NOT_PROJECT_PRINCIPAL("UserNotProjectPrincipal", 40023, "用户非项目负责人"), + PAGE_NUMBER_IS_NULL("PageNumberIsNull", 40024, "分页参数为空"), REVIEW_NOT_EXIST("ReviewNotExit", 40101, "未找到对应审核信息");