diff --git a/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java b/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java index 42ffd47..029ff85 100644 --- a/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java +++ b/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java @@ -4,7 +4,7 @@ package com.jsl.oa.common.constant; /** *

Review常量类

*
- * 用于存放审核信息的审批状态常量 + * 用于存放审核信息的审批状态常量与类别常量 * * @version v1.1.0 * @since v1.1.0 @@ -12,12 +12,18 @@ package com.jsl.oa.common.constant; */ public class ReviewConstants { +// 审核状态 0:未通过;1:已通过;2:未审批 public static final int NOT_APPROVED = 0; public static final int APPROVED = 1; public static final int PENDING = 2; +// 审核类型 0:子系统;1:子模块 + public static final int SUBSYSTEM = 0; + + public static final int SUBMODULE = 1; + } diff --git a/src/main/java/com/jsl/oa/controllers/ReviewController.java b/src/main/java/com/jsl/oa/controllers/ReviewController.java index 197462d..14f4f22 100644 --- a/src/main/java/com/jsl/oa/controllers/ReviewController.java +++ b/src/main/java/com/jsl/oa/controllers/ReviewController.java @@ -1,13 +1,21 @@ package com.jsl.oa.controllers; +import com.jsl.oa.model.vodata.ReviewAddVO; import com.jsl.oa.services.ReviewService; import com.jsl.oa.utils.BaseResponse; +import com.jsl.oa.utils.ErrorCode; +import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; +import javax.validation.constraints.NotNull; /** * 审核控制器 @@ -48,6 +56,27 @@ public class ReviewController { } + /** + * @Description: 新增审核申请 + * @Date: 2024/4/12 + * @Param null: + **/ + @PostMapping("/review/add") + public BaseResponse addReview(@RequestBody @Validated ReviewAddVO reviewAddVO, + @NotNull BindingResult bindingResult, + HttpServletRequest request) { + log.info("请求接口[POST]: /review/add"); + + if (bindingResult.hasErrors()) { + return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR); + } + + return reviewService.addReview(reviewAddVO, request); + } + + + + } diff --git a/src/main/java/com/jsl/oa/dao/ReviewDAO.java b/src/main/java/com/jsl/oa/dao/ReviewDAO.java index 5309e98..85083bf 100644 --- a/src/main/java/com/jsl/oa/dao/ReviewDAO.java +++ b/src/main/java/com/jsl/oa/dao/ReviewDAO.java @@ -27,13 +27,54 @@ public class ReviewDAO { private final ReviewMapper reviewMapper; private final ProjectMapper projectMapper; - public List getPrincipalUserReview(Long pid) { - return reviewMapper.selectAllReviewFromProject(pid); + + public List selectAllReviewFromProject(Long projectId) { + log.info("\t> 执行 DAO 层 ReviewDAO.selectAllReviewFromProject 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return reviewMapper.selectAllReviewFromProject(projectId); } + public List selectApprovedResultReviewFromProject(Long projectId, + Integer result) { + log.info("\t> 执行 DAO 层 ReviewDAO.selectApprovedResultReviewFromProject 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return reviewMapper.selectApprovedResultReviewFromProject(projectId, + result); + } + + public List selectReviewFromSubsystem(Long subsystemId) { + log.info("\t> 执行 DAO 层 ReviewDAO.selectReviewFromSubsystem 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return reviewMapper.selectReviewFromSubsystem(subsystemId); + } + + public List selectApprovedResultReviewsFromSubsystem(Long subsystemId, + Integer result) { + log.info("\t> 执行 DAO 层 ReviewDAO.selectApprovedResultReviewsFromSubsystem 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return reviewMapper.selectApprovedResultReviewsFromSubsystem(subsystemId, + result); + } + + public List selectReviewFromSubmodule(Long submoduleId) { + log.info("\t> 执行 DAO 层 ReviewDAO.selectReviewFromSubmodule 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return reviewMapper.selectReviewFromSubmodule(submoduleId); + } + + public void addReview(ReviewDO reviewDO) { + log.info("\t> 执行 DAO 层 ReviewDAO.addReview 方法"); + log.info("\t\t> 从 MySQL 插入数据"); + reviewMapper.addReview(reviewDO); + } + + public String getNameBySubproject(Long subId) { + log.info("\t> 执行 DAO 层 ReviewDAO.getNameBySubproject 方法"); + if (subId != null) { + log.info("\t\t> 从 MySQL 获取数据"); return projectMapper.getProjectWorkById(subId).getName(); } diff --git a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java index 604c048..541d3f5 100644 --- a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java @@ -32,5 +32,6 @@ public interface ReviewMapper { @Select("SELECT * FROM organize_oa.oa_review WHERE id = #{id} AND is_delete = 0") ReviewDO selectReviewById(Long id); + void addReview(ReviewDO reviewDO); } diff --git a/src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java b/src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java new file mode 100644 index 0000000..640fcc3 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java @@ -0,0 +1,29 @@ +package com.jsl.oa.model.vodata; + + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class ReviewAddVO { + + //申请名称 + @NotBlank(message = "审核名称不能为空") + private String name; + //申请理由 + @NotBlank(message = "申请理由不能为空") + private String content; + //申请的项目id + @NotNull(message = "项目id不能为空") + private Long projectId; + //申请的子系统id + @NotNull(message = "子系统id不能为空") + private Long projectSubsystemId; + //申请的子模块id + private Long projectSubmoduleId; + +} + + diff --git a/src/main/java/com/jsl/oa/services/ReviewService.java b/src/main/java/com/jsl/oa/services/ReviewService.java index acd3c04..606b3eb 100644 --- a/src/main/java/com/jsl/oa/services/ReviewService.java +++ b/src/main/java/com/jsl/oa/services/ReviewService.java @@ -1,6 +1,7 @@ package com.jsl.oa.services; +import com.jsl.oa.model.vodata.ReviewAddVO; import com.jsl.oa.utils.BaseResponse; import javax.servlet.http.HttpServletRequest; @@ -11,4 +12,5 @@ public interface ReviewService { BaseResponse getUserReview(HttpServletRequest request); + BaseResponse addReview(ReviewAddVO reviewAddVO, HttpServletRequest request); } diff --git a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java index 9ddcd42..04d3012 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -5,11 +5,11 @@ 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.ReviewMapper; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectWorkDO; import com.jsl.oa.model.dodata.ReviewDO; +import com.jsl.oa.model.vodata.ReviewAddVO; import com.jsl.oa.model.vodata.ReviewVO; import com.jsl.oa.services.ReviewService; import com.jsl.oa.utils.BaseResponse; @@ -20,10 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; +import java.util.*; @Slf4j @Service @@ -35,7 +32,6 @@ public class ReviewServiceImpl implements ReviewService { private final ProjectDAO projectDAO; private final UserMapper userMapper; - private final ReviewMapper reviewMapper; @Override @@ -54,7 +50,7 @@ public class ReviewServiceImpl implements ReviewService { //先从用户为 项目负责人 的项目中获取对应 审核信息 for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) { //查询每个项目下所有的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectApprovedResultReviewFromProject(projectDO.getId(), ReviewConstants.PENDING); //封装VO类 @@ -64,7 +60,7 @@ public class ReviewServiceImpl implements ReviewService { //在从用户为 子系统负责人 的项目中获取对应 审核信息 for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubsystemByUserId(userId)) { //查询每个项目下状态为2的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectApprovedResultReviewsFromSubsystem(projectWorkDO.getId(), ReviewConstants.PENDING); //封装VO类 @@ -75,7 +71,7 @@ public class ReviewServiceImpl implements ReviewService { //在从用户为 子模块负责人 的项目中获取对应 审核信息 for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubmoduleByUserId(userId)) { //查询每个项目下所有的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectApprovedResultReviewsFromSubsystem(projectWorkDO.getId(), ReviewConstants.PENDING); //封装VO类 @@ -112,7 +108,7 @@ public class ReviewServiceImpl implements ReviewService { //先从用户为 项目负责人 的项目中获取对应 审核信息 for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) { //查询每个项目下所有的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectAllReviewFromProject(projectDO.getId()); //封装VO类 reviewData.addAll(encapsulateArrayClass(reviewDOS)); @@ -121,7 +117,7 @@ public class ReviewServiceImpl implements ReviewService { //在从用户为 子系统负责人 的项目中获取对应 审核信息 for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubsystemByUserId(userId)) { //查询每个项目下所有的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectReviewFromSubsystem(projectWorkDO.getId()); //封装VO类 reviewData.addAll(encapsulateArrayClass(reviewDOS)); @@ -131,7 +127,7 @@ public class ReviewServiceImpl implements ReviewService { //在从用户为 子模块负责人 的项目中获取对应 审核信息 for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubmoduleByUserId(userId)) { //查询每个项目下所有的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectReviewFromSubmodule(projectWorkDO.getId()); //封装VO类 reviewData.addAll(encapsulateArrayClass(reviewDOS)); @@ -149,6 +145,35 @@ public class ReviewServiceImpl implements ReviewService { } + + @Override + public BaseResponse addReview(ReviewAddVO reviewAddVO, HttpServletRequest request) { + log.info("\t> 执行 Service 层 ReviewService.addReview 方法"); + + //获取用户 + Long userId = Processing.getAuthHeaderToUserId(request); + + //定义要添加的审核实体类 + ReviewDO reviewDO = new ReviewDO(); + //现将属性相同的值拷贝 + Processing.copyProperties(reviewAddVO, reviewDO); + + //定义审核的类型(子模块id为空则为 子系统类型,否则为子模块类型) + if (reviewAddVO.getProjectSubmoduleId() == null) { + reviewDO.setCategory(ReviewConstants.SUBSYSTEM); + } else if (reviewAddVO.getProjectSubmoduleId() != null) { + reviewDO.setCategory(ReviewConstants.SUBMODULE); + } + + //定义申请者id + reviewDO.setSenderId(userId); + //添加数据 + reviewDAO.addReview(reviewDO); + + return ResultUtil.success("申请成功"); + } + + /** * @Description: 封装审核的VO类 * @Date: 2024/4/11 diff --git a/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml b/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml new file mode 100644 index 0000000..2a59034 --- /dev/null +++ b/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml @@ -0,0 +1,64 @@ + + + + + + insert into organize_oa.oa_review + + + + name = #{name}, + + + + content = #{content}, + + + + sender_id = #{sender_id}, + + + + recipient_id = #{recipient_id}, + + + + category = #{category}, + + + + project_id = #{project_id}, + + + + project_subsystem_id = #{project_subsystem_id}, + + + + project_submodule_id = #{project_submodule_id}, + + + + application_time = #{application_time}, + + + + review_time = #{review_time}, + + + + review_result = #{review_result}, + + + + is_delete = #{is_delete}, + + + + where id = #{id} + + + + \ No newline at end of file