From c229ed59b8446c53f09e4d401b55d0fb7d36910b Mon Sep 17 00:00:00 2001 From: 176yunxuan <362612387@qq.com~> Date: Sat, 20 Apr 2024 10:44:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E9=A1=B9=E7=9B=AE=EF=BC=8C=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=EF=BC=8C=E6=A8=A1=E5=9D=97=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsl/oa/controllers/ProjectController.java | 39 +++++++++- src/main/java/com/jsl/oa/dao/ProjectDAO.java | 9 +-- .../java/com/jsl/oa/mapper/ProjectMapper.java | 6 ++ .../jsl/oa/model/dodata/ProjectModuleDO.java | 2 +- .../jsl/oa/model/vodata/ProjectEditVO.java | 6 +- .../com/jsl/oa/services/ProjectService.java | 6 ++ .../oa/services/impl/MessageServiceImpl.java | 55 ++++++++----- .../oa/services/impl/ProjectServiceImpl.java | 77 ++++++++++++++++++- .../com/jsl/oa/mapper/ProjectMapper.xml | 76 ++++++++++++++++-- 9 files changed, 235 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index 776d7e4..2c98673 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -1,6 +1,8 @@ package com.jsl.oa.controllers; import com.jsl.oa.annotations.NeedPermission; +import com.jsl.oa.model.dodata.ProjectChildDO; +import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.vodata.ProjectChildAddVO; import com.jsl.oa.model.vodata.ProjectEditVO; import com.jsl.oa.model.vodata.ProjectInfoVO; @@ -365,7 +367,7 @@ public class ProjectController { } /** - * 项目名查询子系统 + * 项目名查询所属所有子系统 * * @param name * @param request @@ -394,6 +396,14 @@ public class ProjectController { return projectService.projectChildGetById(id, request); } + /** + * 根据项目和子系统名查询所属所有子模块 + * + * @param projectName + * @param childName + * @param request + * @return + */ @GetMapping("/project/module/get/name") public BaseResponse projectModuleGetName( @RequestParam String projectName, @@ -412,4 +422,31 @@ public class ProjectController { return projectService.projectModuleGetById(childId, request); } + + @PutMapping("/project/module/edit") + public BaseResponse projectModuleEdit( + @RequestParam Long id, + @RequestBody ProjectModuleDO projectModuleAddVO, + HttpServletRequest request + ) { + return projectService.projectModuleEdit(request, projectModuleAddVO, id); + } + + @PutMapping("/project/edit") + public BaseResponse projectEdit( + @RequestParam Long id, + @RequestBody ProjectEditVO projectEditVO, + HttpServletRequest request + ) { + return projectService.projectEdit(request, projectEditVO, id); + } + + @PutMapping("/project/child/edit") + public BaseResponse projectChildEdit( + @RequestParam Long id, + @RequestBody ProjectChildDO projectChildAddVO, + HttpServletRequest request + ) { + return projectService.projectChildEdit(request, projectChildAddVO, id); + } } diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index c7762f1..600a2a1 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -41,15 +41,12 @@ public class ProjectDAO { projectMapper.projectWorkAdd(projectChildAddVO); } - public ProjectDO projectEdit(@NotNull ProjectEditVO projectEdit, Long projectId) { + public ProjectDO projectEdit(@NotNull ProjectDO projectEdit) { log.info("\t> 执行 DAO 层 ProjectDAO.projectEdit 方法"); log.info("\t\t> 从 MySQL 更新数据"); - ProjectDO projectDO = new ProjectDO(); - Processing.copyProperties(projectEdit, projectDO); - projectDO.setId(projectId); - projectMapper.projectEdit(projectDO); + projectMapper.projectEdit(projectEdit); log.info("\t\t> 从 MySQL 获取数据"); - return projectMapper.getProjectById(projectId); + return projectMapper.getProjectById(projectEdit.getId()); } public boolean isExistProject(Long id) { diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index 576004a..24fba1e 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -36,6 +36,8 @@ public interface ProjectMapper { + "#{description},#{status},#{deadLine},#{cycle})") void projectModuleAdd(ProjectModuleAddVO projectModuleAddVO); + @Select("select project_id from organize_oa.oa_project_child where id=#{id}") + Long getProjectIdBySysId(Long id); void projectEdit(ProjectDO projectEdit); @Select("select * from organize_oa.oa_project where id=#{id}") @@ -178,4 +180,8 @@ public interface ProjectMapper { @Select("select * from organize_oa.oa_project_modules where project_child_id = #{id} " + "and is_delete = 0") List getModuleByChildId(Integer id); + + void projectModuleEdit(ProjectModuleDO projectModuleAddVO); + + void projectChildEditAll(ProjectChildDO projectChildAddVO); } diff --git a/src/main/java/com/jsl/oa/model/dodata/ProjectModuleDO.java b/src/main/java/com/jsl/oa/model/dodata/ProjectModuleDO.java index 774073f..6f4ceef 100644 --- a/src/main/java/com/jsl/oa/model/dodata/ProjectModuleDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/ProjectModuleDO.java @@ -10,13 +10,13 @@ import java.sql.Timestamp; @Accessors(chain = true) @JsonInclude(JsonInclude.Include.NON_NULL) public class ProjectModuleDO { + private String name; private Long id; private Long projectChildId; private Long principalId; private Integer cycle; private Integer workLoad; private String description; - private String name; private Integer isDelete; private String status; private Timestamp deadLine; diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectEditVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectEditVO.java index b8dee8b..5ab338e 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ProjectEditVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectEditVO.java @@ -7,14 +7,14 @@ import java.sql.Timestamp; @Data public class ProjectEditVO { + private Long id; private String name; private Long principalId; private String tags; private Long cycle; - private String file; + private String files; private String description; - private Integer isFinish; - private Integer status; + private String status; private Long workLoad; private Timestamp beginTime; private Timestamp completeTime; diff --git a/src/main/java/com/jsl/oa/services/ProjectService.java b/src/main/java/com/jsl/oa/services/ProjectService.java index 8122819..83fecab 100644 --- a/src/main/java/com/jsl/oa/services/ProjectService.java +++ b/src/main/java/com/jsl/oa/services/ProjectService.java @@ -1,5 +1,7 @@ package com.jsl.oa.services; +import com.jsl.oa.model.dodata.ProjectChildDO; +import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.vodata.ProjectEditVO; import com.jsl.oa.model.vodata.ProjectInfoVO; import com.jsl.oa.model.vodata.ProjectChildAddVO; @@ -82,4 +84,8 @@ public interface ProjectService { BaseResponse projectModuleGetName(String projectName, String childName, HttpServletRequest request); BaseResponse projectModuleGetById(Integer id, HttpServletRequest request); + + BaseResponse projectModuleEdit(HttpServletRequest request, ProjectModuleDO projectModuleAddVO, Long id); + + BaseResponse projectChildEdit(HttpServletRequest request, ProjectChildDO projectChildAddVO, Long id); } 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 7fb8615..42d2eca 100644 --- a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java @@ -193,24 +193,26 @@ public class MessageServiceImpl implements MessageService { // 1:上传文档 2:修改状态 3:修改负责人 List uidList = projectMapper.getMemberByProjectId(pId); for (Long uid : uidList) { - MessageAddVO messageAddVO = new MessageAddVO(); - messageAddVO.setUid(uid); - messageAddVO.setSid(Processing.getAuthHeaderToUserId(request)); - messageAddVO.setTitle("项目变动消息"); - if (type == 3) { - messageAddVO.setText("项目负责人" + senderName + "调整了" + systemName + "子系统的负责人"); - messageAddVO.setType("Project_child"); - messageAddVO.setToId(systemId.longValue()); - } else if (type == 2) { - messageAddVO.setText("项目负责人" + senderName + "修改了" + projectName + "项目的状态"); - messageAddVO.setType("Project"); - messageAddVO.setToId(pId.longValue()); - } else if (type == 1) { - messageAddVO.setText("项目负责人" + senderName + "上传了文档到" + projectName + "项目"); - messageAddVO.setType("Project"); - messageAddVO.setToId(pId.longValue()); + if (uid != null) { + MessageAddVO messageAddVO = new MessageAddVO(); + messageAddVO.setUid(uid); + messageAddVO.setSid(Processing.getAuthHeaderToUserId(request)); + messageAddVO.setTitle("项目变动消息"); + if (type == 3) { + messageAddVO.setText("项目负责人" + senderName + "调整了" + systemName + "子系统的负责人"); + messageAddVO.setType("Project_child"); + messageAddVO.setToId(systemId.longValue()); + } else if (type == 2) { + messageAddVO.setText("项目负责人" + senderName + "修改了" + projectName + "项目的状态"); + messageAddVO.setType("Project"); + messageAddVO.setToId(pId.longValue()); + } else if (type == 1) { + messageAddVO.setText("项目负责人" + senderName + "上传了文档到" + projectName + "项目"); + messageAddVO.setType("Project"); + messageAddVO.setToId(pId.longValue()); + } + messageMapper.messageAdd(messageAddVO); } - messageMapper.messageAdd(messageAddVO); } } @@ -234,7 +236,10 @@ public class MessageServiceImpl implements MessageService { String projectName = projectMapper.tgetProjectById(pId).getName(); String senderName = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)).getUsername(); String systemName = projectMapper.getWorkById(systmeId).getName(); - String moddleName = projectMapper.getModuleById(moddleId).getName(); + String moddleName = null; + if (moddleId != null) { + moddleName = projectMapper.getModuleById(moddleId).getName(); + } // 添加消息 // 1:删除模块 2:修改简介 3:修改周期 if (type == 1) { @@ -248,6 +253,7 @@ public class MessageServiceImpl implements MessageService { } else { List uidList = projectMapper.getMemberBySystemId(systmeId); for (Long uid : uidList) { + if (uid != null) { MessageAddVO messageAddVO = new MessageAddVO(); messageAddVO.setUid(uid); messageAddVO.setSid(Processing.getAuthHeaderToUserId(request)); @@ -262,6 +268,7 @@ public class MessageServiceImpl implements MessageService { messageAddVO.setType("Project_child"); messageAddVO.setToId(systmeId.longValue()); messageMapper.messageAdd(messageAddVO); + } } } } @@ -311,6 +318,9 @@ public class MessageServiceImpl implements MessageService { List projectWorkDOList1 = projectMapper.getProjectWorkByTime(sevenDaysLater); if (!projectWorkDOList1.isEmpty()) { for (ProjectModuleDO projectWorkDO : projectWorkDOList) { + if (projectWorkDO.getPrincipalId() == null) { + continue; + } // 添加消息 MessageAddVO messageAddVO = new MessageAddVO(); messageAddVO.setUid(projectWorkDO.getPrincipalId()); @@ -330,6 +340,9 @@ public class MessageServiceImpl implements MessageService { } if (!projectWorkDOList.isEmpty()) { for (ProjectModuleDO projectWorkDO : projectWorkDOList) { + if (projectWorkDO.getPrincipalId() == null) { + continue; + } // 添加消息 MessageAddVO messageAddVO = new MessageAddVO(); messageAddVO.setUid(projectWorkDO.getPrincipalId()); @@ -352,6 +365,9 @@ public class MessageServiceImpl implements MessageService { List projectChildDOList = projectMapper.getProjectChildByTime(sevenDaysLater); if (!projectChildDOList.isEmpty()) { for (ProjectChildDO projectChildDO : projectChildDOList) { + if (projectChildDO.getPrincipalId() == null) { + continue; + } // 添加消息 MessageAddVO messageAddVO = new MessageAddVO(); messageAddVO.setUid(projectChildDO.getPrincipalId()); @@ -368,6 +384,9 @@ public class MessageServiceImpl implements MessageService { List projectChildDOList1 = projectMapper.getProjectChildByTime(threeDaysLater); if (!projectChildDOList1.isEmpty()) { for (ProjectChildDO projectChildDO : projectChildDOList1) { + if (projectChildDO.getPrincipalId() == null) { + continue; + } // 添加消息 MessageAddVO messageAddVO = new MessageAddVO(); messageAddVO.setUid(projectChildDO.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 582a3d8..58f1cc6 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.gson.Gson; +import com.google.gson.JsonObject; import com.jsl.oa.annotations.NeedPermission; import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.RoleDAO; @@ -317,6 +318,58 @@ public class ProjectServiceImpl implements ProjectService { return ResultUtil.success(returnGetVOList); } + @Override + public BaseResponse projectModuleEdit(HttpServletRequest request, ProjectModuleDO projectModuleEditVO, Long id) { + //判断是否是子系统负责人或项目负责人 + if (!Objects.equals(Processing.getAuthHeaderToUserId(request), projectMapper.getPirTdByModuleId(id)) + // 项目负责人 + && !Objects.equals(Processing.getAuthHeaderToUserId(request), + projectMapper.getPirIdbyId(projectMapper.getModuleById(id.intValue()).getProjectChildId()))) { + return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } else { + HashMap descriptionMap = new HashMap<>(); + descriptionMap.put("description", projectModuleEditVO.getDescription()); + projectModuleEditVO.setDescription(gson.toJson(descriptionMap)); + projectModuleEditVO.setId(id); + projectMapper.projectModuleEdit(projectModuleEditVO); + } + + + return ResultUtil.success("修改成功"); + } + + @Override + public BaseResponse projectChildEdit(HttpServletRequest request, ProjectChildDO projectChildAddVO, Long id) { + //判断是否是项目负责人 + if (!Objects.equals(Processing.getAuthHeaderToUserId(request), projectMapper.getPirIdbyId(id))) { + return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } else { + JsonObject jsonObject = gson + .fromJson(projectMapper.getProjectChildById(id.intValue()).getDescription(), JsonObject.class); + //改动简介发送消息 + if (!Objects.equals(projectChildAddVO.getDescription(), "") + && !projectChildAddVO.getDescription() + .equals(jsonObject.get("description").getAsString())) { + messageService.messageAdd(projectMapper.getProjectIdBySysId(id) + .intValue(), id.intValue(), null, 2, request); + } // 改动周期或工作量发送消息 + if (projectChildAddVO.getCycle() != null || projectChildAddVO.getWorkLoad() != null) { + messageService.messageAdd(projectMapper.getProjectIdBySysId(id) + .intValue(), id.intValue(), null, 3, request); + } + + HashMap descriptionMap = new HashMap<>(); + descriptionMap.put("description", projectChildAddVO.getDescription()); + projectChildAddVO.setDescription(gson.toJson(descriptionMap)); + + projectChildAddVO.setId(id); + projectMapper.projectChildEditAll(projectChildAddVO); + } + + + return ResultUtil.success("修改成功"); + } + @Override public BaseResponse getModuleById(Integer id) { ProjectModuleDO projectWorkSimpleVO = projectMapper.getModuleById(id); @@ -367,16 +420,32 @@ public class ProjectServiceImpl implements ProjectService { public BaseResponse projectEdit(HttpServletRequest request, @NotNull ProjectEditVO projectEdit, Long projectId) { - //判断用户是否为老师 或者 项目负责人 + //判断用户是否为负责人 或者 项目负责人 if (!Processing.checkUserIsPrincipal(request, roleDAO) - || !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) { + && !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } - //判断项目是否存在 if (projectDAO.isExistProject(projectId)) { //更新数据 - return ResultUtil.success(projectDAO.projectEdit(projectEdit, projectId)); + HashMap descriptionMap = new HashMap<>(); + descriptionMap.put("description", projectEdit.getDescription()); + projectEdit.setDescription(gson.toJson(descriptionMap)); + + HashMap tagMap = new HashMap<>(); + tagMap.put("tags", projectEdit.getTags().split(",")); + projectEdit.setTags(gson.toJson(tagMap)); + + HashMap filesMap = new HashMap<>(); + filesMap.put("URI", projectEdit.getFiles()); + projectEdit.setFiles(gson.toJson(filesMap)); + + projectEdit.setId(projectId); + ProjectDO projectEdit1 = new ProjectDO(); + + Processing.copyProperties(projectEdit, projectEdit1); + projectDAO.projectEdit(projectEdit1); + return ResultUtil.success(projectDAO.projectEdit(projectEdit1)); } else { return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST); } diff --git a/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml b/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml index d2f5a85..5d5a2b5 100644 --- a/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml +++ b/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml @@ -22,24 +22,21 @@ cycle = #{cycle}, - - file = #{file}, + + files = #{files}, - + begin_time = #{beginTime}, - + complete_time = #{completeTime}, - + deadline = #{deadline}, status = #{status}, - - is_finish = #{isFinish}, - is_delete = #{isDelete}, @@ -77,6 +74,69 @@ update organize_oa.oa_project_modules set is_delete=true where id=#{id1} + + update organize_oa.oa_project_modules + + + name = #{name}, + + + description = #{description}, + + + principal_id = #{principalId}, + + + work_load = #{workLoad}, + + + cycle = #{cycle}, + + + complete_time = #{completeTime}, + + + dead_line = #{deadLine}, + + + status = #{status}, + + updated_at = CURRENT_TIMESTAMP + + where id = #{id} + + + update organize_oa.oa_project_child + + + name = #{name}, + + + description = #{description}, + + + principal_id = #{principalId}, + + + work_load = #{workLoad}, + + + cycle = #{cycle}, + + + complete_time = #{completeTime}, + + + dead_line = #{deadLine}, + + + status = #{status}, + + updated_at = CURRENT_TIMESTAMP + + where id = #{id} + +