feat:增加新业务功能新增审核
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 20s

This commit is contained in:
xiangZr-hhh 2024-04-12 09:20:51 +08:00
parent 3b9a7cfe5e
commit ff34595002
8 changed files with 212 additions and 15 deletions

View File

@ -4,7 +4,7 @@ package com.jsl.oa.common.constant;
/**
* <h1>Review常量类</h1>
* <hr/>
* 用于存放审核信息的审批状态常量
* 用于存放审核信息的审批状态常量与类别常量
*
* @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;
}

View File

@ -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);
}
}

View File

@ -27,13 +27,54 @@ public class ReviewDAO {
private final ReviewMapper reviewMapper;
private final ProjectMapper projectMapper;
public List<ReviewDO> getPrincipalUserReview(Long pid) {
return reviewMapper.selectAllReviewFromProject(pid);
public List<ReviewDO> selectAllReviewFromProject(Long projectId) {
log.info("\t> 执行 DAO 层 ReviewDAO.selectAllReviewFromProject 方法");
log.info("\t\t> 从 MySQL 获取数据");
return reviewMapper.selectAllReviewFromProject(projectId);
}
public List<ReviewDO> selectApprovedResultReviewFromProject(Long projectId,
Integer result) {
log.info("\t> 执行 DAO 层 ReviewDAO.selectApprovedResultReviewFromProject 方法");
log.info("\t\t> 从 MySQL 获取数据");
return reviewMapper.selectApprovedResultReviewFromProject(projectId,
result);
}
public List<ReviewDO> selectReviewFromSubsystem(Long subsystemId) {
log.info("\t> 执行 DAO 层 ReviewDAO.selectReviewFromSubsystem 方法");
log.info("\t\t> 从 MySQL 获取数据");
return reviewMapper.selectReviewFromSubsystem(subsystemId);
}
public List<ReviewDO> selectApprovedResultReviewsFromSubsystem(Long subsystemId,
Integer result) {
log.info("\t> 执行 DAO 层 ReviewDAO.selectApprovedResultReviewsFromSubsystem 方法");
log.info("\t\t> 从 MySQL 获取数据");
return reviewMapper.selectApprovedResultReviewsFromSubsystem(subsystemId,
result);
}
public List<ReviewDO> 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();
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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<ReviewDO> reviewDOS = reviewMapper.
List<ReviewDO> 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<ReviewDO> reviewDOS = reviewMapper.
List<ReviewDO> reviewDOS = reviewDAO.
selectApprovedResultReviewsFromSubsystem(projectWorkDO.getId(),
ReviewConstants.PENDING);
//封装VO类
@ -75,7 +71,7 @@ public class ReviewServiceImpl implements ReviewService {
//在从用户为 子模块负责人 的项目中获取对应 审核信息
for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubmoduleByUserId(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> reviewDOS = reviewMapper.
List<ReviewDO> reviewDOS = reviewDAO.
selectApprovedResultReviewsFromSubsystem(projectWorkDO.getId(),
ReviewConstants.PENDING);
//封装VO类
@ -112,7 +108,7 @@ public class ReviewServiceImpl implements ReviewService {
//先从用户为 项目负责人 的项目中获取对应 审核信息
for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> reviewDOS = reviewMapper.
List<ReviewDO> 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<ReviewDO> reviewDOS = reviewMapper.
List<ReviewDO> 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<ReviewDO> reviewDOS = reviewMapper.
List<ReviewDO> 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

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jsl.oa.mapper.ReviewMapper">
<insert id="addReview">
insert into organize_oa.oa_review
<set>
<if test="name != null and name != ''">
name = #{name},
</if>
<if test="content != null and content != ''">
content = #{content},
</if>
<if test="sender_id != null">
sender_id = #{sender_id},
</if>
<if test="recipient_id != null">
recipient_id = #{recipient_id},
</if>
<if test="category != null">
category = #{category},
</if>
<if test="project_id != null">
project_id = #{project_id},
</if>
<if test="project_subsystem_id != null">
project_subsystem_id = #{project_subsystem_id},
</if>
<if test="project_submodule_id != null">
project_submodule_id = #{project_submodule_id},
</if>
<if test="application_time != null">
application_time = #{application_time},
</if>
<if test="review_time != null">
review_time = #{review_time},
</if>
<if test="review_result != null">
review_result = #{review_result},
</if>
<if test="is_delete != null">
is_delete = #{is_delete},
</if>
</set>
where id = #{id}
</insert>
</mapper>