Compare commits
18 Commits
76a1cf758c
...
e5b87e6f4f
Author | SHA1 | Date | |
---|---|---|---|
e5b87e6f4f | |||
49bcadd483 | |||
1d914a5217 | |||
|
7db82c57e2 | ||
|
1a65d8ce8f | ||
|
f3840de509 | ||
|
cd65a5c6f8 | ||
|
cb1d61da88 | ||
|
36bbaf0995 | ||
0c429bc07f | |||
|
8ab59b5a1d | ||
|
bc545bbd76 | ||
|
cd51b261e1 | ||
|
36964d4447 | ||
|
49247fd88f | ||
|
ec45c0b233 | ||
|
ff34595002 | ||
|
3b9a7cfe5e |
|
@ -94,7 +94,9 @@ public class BusinessAop {
|
|||
}
|
||||
Object result = pjp.proceed();
|
||||
log.info("<==[DAO] 返回数据类型 {}", declaringType.descriptorString());
|
||||
log.debug("\t> 传出信息:{}", result.toString());
|
||||
if (result != null) {
|
||||
log.debug("\t> 传出信息:{}", result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
package com.jsl.oa.common.constant;
|
||||
|
||||
|
||||
/**
|
||||
* <h1>Review常量类</h1>
|
||||
* <hr/>
|
||||
* 用于存放审核信息的审批状态常量与类别常量
|
||||
*
|
||||
* @version v1.1.0
|
||||
* @since v1.1.0
|
||||
* @author zrx_hhh
|
||||
*/
|
||||
public class ReviewConstants {
|
||||
|
||||
// 审核状态 0:未通过;1:已通过;2:未审批
|
||||
public static final short NOT_APPROVED = 0;
|
||||
|
||||
public static final short APPROVED = 1;
|
||||
|
||||
public static final short PENDING = 2;
|
||||
|
||||
// 审核类型 0:子系统;1:子模块
|
||||
public static final short SUBSYSTEM = 0;
|
||||
|
||||
public static final short SUBMODULE = 1;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1,14 +1,19 @@
|
|||
package com.jsl.oa.controllers;
|
||||
|
||||
import com.jsl.oa.model.vodata.ReviewAddVO;
|
||||
import com.jsl.oa.model.vodata.ReviewUpdateResultVO;
|
||||
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.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 审核控制器
|
||||
|
@ -22,18 +27,79 @@ import javax.servlet.http.HttpServletRequest;
|
|||
@RequiredArgsConstructor
|
||||
public class ReviewController {
|
||||
|
||||
// 审核服务
|
||||
private final ReviewService reviewService;
|
||||
|
||||
/**
|
||||
* @Description: 获取我的审核列表
|
||||
* @Description: 获取审核记录列表
|
||||
* @Date: 2024/4/11
|
||||
* @Param request:
|
||||
**/
|
||||
@GetMapping("/review/getMyReview")
|
||||
public BaseResponse getUserReview(@RequestParam Long projectId, HttpServletRequest request) {
|
||||
return reviewService.getUserReview(projectId, request);
|
||||
@GetMapping("/review/getReviewRecords")
|
||||
public BaseResponse getUserReviewRecords(
|
||||
@RequestParam Integer page,
|
||||
@RequestParam Integer pageSize,
|
||||
HttpServletRequest request) {
|
||||
log.info("请求接口[GET]: /review/getMyReview");
|
||||
return reviewService.getUserReview(page, pageSize, request);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 获取我的审核数据
|
||||
* @Date: 2024/4/12
|
||||
* @Param request:
|
||||
**/
|
||||
@GetMapping("/review/getMyReview")
|
||||
public BaseResponse getMyReview(@RequestParam Integer page,
|
||||
@RequestParam Integer pageSize,
|
||||
HttpServletRequest request) {
|
||||
return reviewService.getUserPendingApprovalReview(page, pageSize, request);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @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);
|
||||
}
|
||||
|
||||
|
||||
@PutMapping("/review/updateReview")
|
||||
public BaseResponse updateReview(@RequestBody @Validated ReviewUpdateResultVO reviewUpdateResultVOVO,
|
||||
@NotNull BindingResult bindingResult,
|
||||
HttpServletRequest request) {
|
||||
log.info("请求接口[PUT]: /review/updateReview");
|
||||
|
||||
if (bindingResult.hasErrors()) {
|
||||
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR);
|
||||
}
|
||||
|
||||
return reviewService.updateReviewResult(reviewUpdateResultVOVO, request);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/review/search")
|
||||
public BaseResponse searchReview(String content,
|
||||
Short statue,
|
||||
HttpServletRequest request,
|
||||
@RequestParam Integer page,
|
||||
@RequestParam Integer pageSize) {
|
||||
log.info("请求接口[GET]: /review/search");
|
||||
return reviewService.searchReview(content, statue, request, page, pageSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.jsl.oa.dao;
|
||||
import com.google.gson.Gson;
|
||||
import com.jsl.oa.mapper.ProjectMapper;
|
||||
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.info.ProjectShowDO;
|
||||
|
@ -28,27 +29,38 @@ public class ProjectDAO {
|
|||
private final Gson gson;
|
||||
|
||||
public void projectAdd(ProjectInfoVO projectAdd) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.projectAdd 方法");
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
|
||||
projectMapper.projectAdd(projectAdd);
|
||||
}
|
||||
|
||||
public void projectWorkAdd(ProjectWorkVO projectWorkVO) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.projectWorkAdd 方法");
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
projectMapper.projectWorkAdd(projectWorkVO);
|
||||
}
|
||||
|
||||
public ProjectDO projectEdit(@NotNull ProjectEditVO projectEdit, Long projectId) {
|
||||
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);
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
return projectMapper.getProjectById(projectId);
|
||||
}
|
||||
|
||||
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 获取数据");
|
||||
String getProjectShowSql = projectMapper.getHeader();
|
||||
ProjectShowDO getProjectShow = null;
|
||||
if (getProjectShowSql != null && !"{}".equals(getProjectShowSql)) {
|
||||
|
@ -60,6 +72,7 @@ public class ProjectDAO {
|
|||
getProjectShow.setOrder("desc");
|
||||
getProjectShow.setData(new ArrayList<>());
|
||||
try {
|
||||
log.info("\t\t> 从 MySQL 插入数据");
|
||||
projectMapper.insertProjectShow();
|
||||
} catch (DuplicateKeyException ignored) {
|
||||
}
|
||||
|
@ -70,6 +83,7 @@ public class ProjectDAO {
|
|||
}
|
||||
|
||||
private void sortProject(@NotNull ProjectShowDO projectShowDO) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.sortProject 方法");
|
||||
for (int i = 0; i < projectShowDO.getData().size(); i++) {
|
||||
for (int j = 0; j < projectShowDO.getData().size(); j++) {
|
||||
if ("desc".equals(projectShowDO.getOrder())) {
|
||||
|
@ -88,22 +102,30 @@ public class ProjectDAO {
|
|||
}
|
||||
|
||||
public boolean setProjectShow(ProjectShowDO projectShowDO) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.setProjectShow 方法");
|
||||
sortProject(projectShowDO);
|
||||
String setProjectShow = gson.toJson(projectShowDO);
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
return projectMapper.setProjectShow(setProjectShow);
|
||||
}
|
||||
|
||||
|
||||
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 获取数据");
|
||||
if (tags != null && !tags.isEmpty()) {
|
||||
log.info("tags");
|
||||
return projectMapper.getByTags(userId, tags, isFinish);
|
||||
}
|
||||
|
||||
if (isFinish != null && !isFinish.isEmpty()) {
|
||||
log.info("finish");
|
||||
return projectMapper.getByIsfinish(userId, isFinish);
|
||||
}
|
||||
|
||||
|
@ -112,6 +134,8 @@ public class ProjectDAO {
|
|||
}
|
||||
|
||||
public List<ProjectDO> workget(Long userId, List<String> tags, List<String> isFinish, Integer is) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.workGet 方法");
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
if (tags != null && !tags.isEmpty()) {
|
||||
return projectMapper.workgetByTags(userId, tags, is, isFinish);
|
||||
}
|
||||
|
@ -124,25 +148,34 @@ public class ProjectDAO {
|
|||
}
|
||||
|
||||
public ProjectDO getByName(String name) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.getByName 方法");
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
return projectMapper.getByName(name);
|
||||
}
|
||||
|
||||
public boolean projectDelete(Long id) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.projectDelete 方法");
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
return projectMapper.deleteProject(id);
|
||||
}
|
||||
|
||||
public boolean isExistProjectById(Long id) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.isExistProjectById 方法");
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
return projectMapper.getProjectById(id) != null;
|
||||
}
|
||||
|
||||
|
||||
public boolean isPrincipalUser(Long uid, Long projectId) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.isPrincipalUser 方法");
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
ProjectDO projectDO = projectMapper.getProjectById(projectId);
|
||||
return Objects.equals(uid, projectDO.getPrincipalId());
|
||||
}
|
||||
|
||||
|
||||
public List<ProjectDO> tget(List<String> isFinish, List<String> tags) {
|
||||
log.info("DAO层tget");
|
||||
|
||||
if (tags != null && !tags.isEmpty()) {
|
||||
return projectMapper.tgetBytags(tags, isFinish);
|
||||
|
@ -159,15 +192,21 @@ public class ProjectDAO {
|
|||
}
|
||||
|
||||
public List<ProjectDO> getProjectByPrincipalUser(Long uid) {
|
||||
return projectMapper.getProjectByPrincipalUser(uid);
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.getProjectFromUser 方法");
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
return projectMapper.getAllProjectByUserId(uid);
|
||||
}
|
||||
|
||||
public List<ProjectModuleDO> getAllSubsystemByUserId(Long uid) {
|
||||
return projectMapper.getAllSubsystemByUserId(uid);
|
||||
public List<ProjectChildDO> getAllProjectChildByUId(Long uid) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.getAllProjectChildByUId 方法");
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
return projectMapper.getAllChildProjectByUserId(uid);
|
||||
}
|
||||
|
||||
public List<ProjectModuleDO> getAllSubmoduleByUserId(Long uid) {
|
||||
return projectMapper.getAllSubmoduleByUserId(uid);
|
||||
public List<ProjectModuleDO> getAllModuleByUId(Long uid) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.getAllModuleByUId 方法");
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
return projectMapper.getAllModuleByUserId(uid);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,14 +27,55 @@ 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) {
|
||||
return reviewMapper.selectAllReviewFromProject(projectId);
|
||||
}
|
||||
|
||||
public String getNameBySubproject(Long subId) {
|
||||
public List<ReviewDO> selectApprovedResultReviewFromProject(Long projectId,
|
||||
short result) {
|
||||
return reviewMapper.selectApprovedResultReviewFromProject(projectId,
|
||||
result);
|
||||
}
|
||||
|
||||
public List<ReviewDO> selectReviewFromSubsystem(Long subsystemId) {
|
||||
return reviewMapper.selectReviewFromSubsystem(subsystemId);
|
||||
}
|
||||
|
||||
public List<ReviewDO> selectApprovedResultReviewsFromSubsystem(Long subsystemId,
|
||||
short result) {
|
||||
return reviewMapper.selectApprovedResultReviewsFromSubsystem(subsystemId,
|
||||
result);
|
||||
}
|
||||
|
||||
public List<ReviewDO> selectReviewFromSubmodule(Long submoduleId) {
|
||||
return reviewMapper.selectReviewFromSubmodule(submoduleId);
|
||||
}
|
||||
|
||||
public List<ReviewDO> selectApprovedResultReviewsFromSubModule(Long id,
|
||||
short result) {
|
||||
return reviewMapper.selectApprovedResultReviewFromModule(id,
|
||||
result);
|
||||
}
|
||||
|
||||
|
||||
public void addReview(ReviewDO reviewDO) {
|
||||
reviewMapper.addReview(reviewDO);
|
||||
}
|
||||
|
||||
public ReviewDO selectReviewById(Long id) {
|
||||
return reviewMapper.selectReviewById(id);
|
||||
}
|
||||
|
||||
public void updateReview(ReviewDO reviewDO) {
|
||||
reviewMapper.updateReview(reviewDO);
|
||||
}
|
||||
|
||||
|
||||
public String getNameByModule(Integer subId) {
|
||||
|
||||
if (subId != null) {
|
||||
return projectMapper.getProjectWorkById(subId).getName();
|
||||
return projectMapper.getModuleById(subId).getName();
|
||||
}
|
||||
|
||||
if (subId == null) {
|
||||
|
|
|
@ -111,13 +111,26 @@ public interface ProjectMapper {
|
|||
+ "where DATE(deadline) = DATE(#{threeDayLater}) and status = 0")
|
||||
List<ProjectModuleDO> getProjectWorkByTime(LocalDateTime threeDayLater);
|
||||
|
||||
List<ProjectModuleDO> getAllSubmoduleByUserId(Long uid);
|
||||
|
||||
List<ProjectDO> getProjectByPrincipalUser(Long uid);
|
||||
@Select("select * from organize_oa.oa_project_modules "
|
||||
+ "where is_delete = 0 and principal_id = #{uid}")
|
||||
List<ProjectModuleDO> getAllModuleByUserId(Long uid);
|
||||
|
||||
@Select("select * from organize_oa.oa_project_child "
|
||||
+ "where project_id = #{pid} and is_delete = 0 ")
|
||||
List<ProjectChildDO> getAllChildProjectByUserId(Long uid);
|
||||
|
||||
@Select("select * from organize_oa.oa_project "
|
||||
+ "where is_delete = 0 and principal_id = #{uid}")
|
||||
List<ProjectDO> getAllProjectByUserId(Long uid);
|
||||
|
||||
List<ProjectModuleDO> getAllSubsystemByUserId(Long uid);
|
||||
|
||||
@Select("select * from organize_oa.oa_project_child where "
|
||||
+ "DATE (created_at) = DATE (#{threeDaysLater}) and status = 0")
|
||||
+ "DATE (created_at) = DATE (#{threeDaysLater}) ")
|
||||
List<ProjectChildDO> getProjectChildByTime(LocalDateTime threeDaysLater);
|
||||
|
||||
|
||||
@Select("select * from organize_oa.oa_project_child where "
|
||||
+ "id = #{id} and is_delete = 0")
|
||||
ProjectChildDO getProjectChildById(Integer id);
|
||||
}
|
||||
|
|
|
@ -13,16 +13,34 @@ public interface ReviewMapper {
|
|||
+ "AND is_delete = 0")
|
||||
List<ReviewDO> selectAllReviewFromProject(Long projectId);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_review WHERE "
|
||||
+ "project_subsystem_id = #{subsystemId} AND is_delete = 0")
|
||||
List<ReviewDO> selectReviewFromSubsystem(Long subsystemId);
|
||||
@Select("SELECT * FROM organize_oa.oa_review WHERE project_id = #{projectId} "
|
||||
+ "AND is_delete = 0 AND review_result = #{result}")
|
||||
List<ReviewDO> selectApprovedResultReviewFromProject(Long projectId, short result);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_review WHERE "
|
||||
+ "project_submodule_id = #{subsystemId} AND is_delete = 0")
|
||||
List<ReviewDO> selectReviewFromSubmodule(Long submoduleId);
|
||||
+ "project_child_id = #{childId} AND is_delete = 0")
|
||||
List<ReviewDO> selectReviewFromSubsystem(Long childId);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_review WHERE "
|
||||
+ "project_child_id = #{childId} "
|
||||
+ "AND is_delete = 0 AND review_result = #{result}")
|
||||
List<ReviewDO> selectApprovedResultReviewsFromSubsystem(Long childId, short result);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_review WHERE "
|
||||
+ "project_module_id = #{moduleId} AND is_delete = 0")
|
||||
List<ReviewDO> selectReviewFromSubmodule(Long moduleId);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_review WHERE review_result = #{result} and "
|
||||
+ "project_module_id = #{moduleId} AND is_delete = 0")
|
||||
List<ReviewDO> selectApprovedResultReviewFromModule(Long moduleId, short result);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_review WHERE id = #{id} AND is_delete = 0")
|
||||
ReviewDO selectReviewById(Long id);
|
||||
|
||||
void updateReview(ReviewDO reviewDO);
|
||||
|
||||
void addReview(ReviewDO reviewDO);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_review WHERE name = #{name} AND is_delete = 0")
|
||||
List<ReviewDO> selectReviewByName(String name);
|
||||
}
|
||||
|
|
|
@ -26,6 +26,8 @@ public class MessageDO {
|
|||
private String title;
|
||||
private String text;
|
||||
private Integer isDelete;
|
||||
private String type;
|
||||
private Long toId;
|
||||
private Timestamp createdAt;
|
||||
private Timestamp deletedAt;
|
||||
|
||||
|
|
|
@ -31,21 +31,21 @@ public class ReviewDO {
|
|||
//审核者用户id
|
||||
private Long recipientId;
|
||||
//审核类别(0:子系统;1:子模块)
|
||||
private Integer category;
|
||||
private Short category;
|
||||
//申请的项目id
|
||||
private Long projectId;
|
||||
//申请的子系统id
|
||||
private Long projectSubsystemId;
|
||||
private Long projectChildId;
|
||||
//申请的子模块id
|
||||
private Long projectSubmoduleId;
|
||||
private Long projectModuleId;
|
||||
//申请时间
|
||||
private Date applicationTime;
|
||||
//审核时间
|
||||
private Date reviewTime;
|
||||
//审核结果(0:未通过;1:通过;2:未审批)
|
||||
private Integer reviewResult;
|
||||
private Short reviewResult;
|
||||
//是否删除(0:未删除;1:已删除)
|
||||
private Integer isDelete;
|
||||
private String isDelete;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,6 @@ public class MessageAddVO {
|
|||
private Long uid;
|
||||
private Long sid;
|
||||
private String type;
|
||||
private Integer toId;
|
||||
private Long toId;
|
||||
|
||||
}
|
||||
|
|
|
@ -9,9 +9,12 @@ import java.sql.Timestamp;
|
|||
@Accessors(chain = true)
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class MessageGetVO {
|
||||
private Long id;
|
||||
private String text;
|
||||
private String title;
|
||||
private Timestamp createdAt;
|
||||
private String senderName;
|
||||
private String type;
|
||||
private Long toId;
|
||||
|
||||
}
|
||||
|
|
29
src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java
Normal file
29
src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java
Normal 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 projectChildId;
|
||||
//申请的子模块id
|
||||
private Long projectModuleId;
|
||||
|
||||
}
|
||||
|
||||
|
16
src/main/java/com/jsl/oa/model/vodata/ReviewDataVO.java
Normal file
16
src/main/java/com/jsl/oa/model/vodata/ReviewDataVO.java
Normal file
|
@ -0,0 +1,16 @@
|
|||
package com.jsl.oa.model.vodata;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ReviewDataVO {
|
||||
|
||||
private Integer dataTotal;
|
||||
|
||||
private List<ReviewVO> reviews;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package com.jsl.oa.model.vodata;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
public class ReviewUpdateResultVO {
|
||||
|
||||
@NotNull
|
||||
private Long id;
|
||||
|
||||
@NotNull
|
||||
@Min(value = 0, message = "未通过:0,已通过:1,待审批:2")
|
||||
@Max(value = 2, message = "未通过:0,已通过:1,待审批:2")
|
||||
private Short result;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -30,13 +30,13 @@ public class ReviewVO {
|
|||
//申请的项目名称
|
||||
private String projectName;
|
||||
//申请的子系统id
|
||||
private Long projectSubsystemId;
|
||||
private Long projectChildId;
|
||||
//申请的子系统名称
|
||||
private String subsystemName;
|
||||
private String projectChildName;
|
||||
//申请的子模块id
|
||||
private Long projectSubmoduleId;
|
||||
private Long projectModuleId;
|
||||
//申请的模块名称
|
||||
private String submoduleName;
|
||||
private String projectModuleName;
|
||||
//申请时间
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date applicationTime;
|
||||
|
|
|
@ -1,12 +1,21 @@
|
|||
package com.jsl.oa.services;
|
||||
|
||||
|
||||
import com.jsl.oa.model.vodata.ReviewAddVO;
|
||||
import com.jsl.oa.model.vodata.ReviewUpdateResultVO;
|
||||
import com.jsl.oa.utils.BaseResponse;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
public interface ReviewService {
|
||||
|
||||
BaseResponse getUserReview(Long projectId, HttpServletRequest request);
|
||||
BaseResponse getUserPendingApprovalReview(Integer page, Integer pageSize, HttpServletRequest request);
|
||||
|
||||
BaseResponse getUserReview(Integer page, Integer pageSize, HttpServletRequest request);
|
||||
|
||||
BaseResponse addReview(ReviewAddVO reviewAddVO, HttpServletRequest request);
|
||||
|
||||
BaseResponse updateReviewResult(ReviewUpdateResultVO reviewUpdateResultVOVO, HttpServletRequest request);
|
||||
|
||||
BaseResponse searchReview(String content, Short statue, HttpServletRequest request, Integer page, Integer pageSize);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
package com.jsl.oa.services.impl;
|
||||
|
||||
import com.jsl.oa.annotations.UserAbleToUse;
|
||||
import com.jsl.oa.dao.UserDAO;
|
||||
import com.jsl.oa.mapper.MessageMapper;
|
||||
import com.jsl.oa.mapper.ProjectMapper;
|
||||
|
@ -39,7 +37,7 @@ public class MessageServiceImpl implements MessageService {
|
|||
private final ProjectMapper projectMapper;
|
||||
|
||||
@Override
|
||||
@UserAbleToUse
|
||||
|
||||
public BaseResponse messageDelete(Long mid, HttpServletRequest request) {
|
||||
//获取消息数据
|
||||
MessageDO messageDO = messageMapper.getMessageById(mid);
|
||||
|
@ -57,7 +55,7 @@ public class MessageServiceImpl implements MessageService {
|
|||
|
||||
@SuppressWarnings("checkstyle:Regexp")
|
||||
@Override
|
||||
@UserAbleToUse
|
||||
|
||||
public BaseResponse messageGet(LocalDateTime beginTime,
|
||||
LocalDateTime endTime,
|
||||
Integer page,
|
||||
|
@ -73,12 +71,19 @@ public class MessageServiceImpl implements MessageService {
|
|||
List<MessageGetVO> messageGetVOList = new ArrayList<>();
|
||||
for (MessageDO messageDO : messageDOList) {
|
||||
MessageGetVO messageGetVO1 = new MessageGetVO();
|
||||
messageGetVO1.setId(messageDO.getId());
|
||||
messageGetVO1.setText(messageDO.getText());
|
||||
messageGetVO1.setTitle(messageDO.getTitle());
|
||||
messageGetVO1.setCreatedAt(messageDO.getCreatedAt());
|
||||
if (messageDO.getSid() != null) {
|
||||
messageGetVO1.setSenderName(userDAO.getUserById(messageDO.getSid()).getUsername());
|
||||
}
|
||||
if (messageDO.getToId() != null) {
|
||||
messageGetVO1.setToId(messageDO.getToId());
|
||||
}
|
||||
if (messageDO.getType() != null) {
|
||||
messageGetVO1.setType(messageDO.getType());
|
||||
}
|
||||
messageGetVOList.add(messageGetVO1);
|
||||
}
|
||||
//分页返回
|
||||
|
@ -123,7 +128,7 @@ public class MessageServiceImpl implements MessageService {
|
|||
String moddleName = projectMapper.getModuleById(moddleId).getName();
|
||||
messageAddVO.setText(senderName + "指派了" + projectName + "项目的" + systemName + "子系统的" + moddleName + "子模块给您");
|
||||
}
|
||||
messageAddVO.setType("跳转审批页");
|
||||
messageAddVO.setType("Review");
|
||||
messageMapper.messageAdd(messageAddVO);
|
||||
}
|
||||
|
||||
|
@ -159,7 +164,7 @@ public class MessageServiceImpl implements MessageService {
|
|||
} else {
|
||||
messageAddVO.setText("您申请的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块负责人未通过");
|
||||
}
|
||||
messageAddVO.setType("消息详情");
|
||||
messageAddVO.setType("Message");
|
||||
messageMapper.messageAdd(messageAddVO);
|
||||
}
|
||||
|
||||
|
@ -195,8 +200,8 @@ public class MessageServiceImpl implements MessageService {
|
|||
} else if (type == 1) {
|
||||
messageAddVO.setText("项目负责人" + senderName + "上传了文档到" + projectName + "项目");
|
||||
}
|
||||
messageAddVO.setType("跳转项目页");
|
||||
messageAddVO.setToId(pId);
|
||||
messageAddVO.setType("Project");
|
||||
messageAddVO.setToId(pId.longValue());
|
||||
messageMapper.messageAdd(messageAddVO);
|
||||
}
|
||||
}
|
||||
|
@ -244,8 +249,8 @@ public class MessageServiceImpl implements MessageService {
|
|||
messageAddVO.setText("项目经理" + senderName + "修改了" + projectName + "项目的"
|
||||
+ systemName + "系统的系统周期/工作量");
|
||||
}
|
||||
messageAddVO.setType("跳转系统页");
|
||||
messageAddVO.setToId(systmeId);
|
||||
messageAddVO.setType("Project_child");
|
||||
messageAddVO.setToId(systmeId.longValue());
|
||||
messageMapper.messageAdd(messageAddVO);
|
||||
}
|
||||
}
|
||||
|
@ -308,8 +313,8 @@ public class MessageServiceImpl implements MessageService {
|
|||
String moddleName = projectWorkDO.getName();
|
||||
messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块"
|
||||
+ "还有七天就要到期了,请及时处理");
|
||||
messageAddVO.setType("跳转模块页");
|
||||
messageAddVO.setToId(projectWorkDO.getId().intValue());
|
||||
messageAddVO.setType("Project_module");
|
||||
messageAddVO.setToId(projectWorkDO.getId());
|
||||
messageMapper.messageAdd(messageAddVO);
|
||||
}
|
||||
}
|
||||
|
@ -327,8 +332,8 @@ public class MessageServiceImpl implements MessageService {
|
|||
String moddleName = projectWorkDO.getName();
|
||||
messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块"
|
||||
+ "还有三天就要到期了,请及时处理");
|
||||
messageAddVO.setType("跳转模块页");
|
||||
messageAddVO.setToId(projectWorkDO.getId().intValue());
|
||||
messageAddVO.setType("Project_module");
|
||||
messageAddVO.setToId(projectWorkDO.getId());
|
||||
messageMapper.messageAdd(messageAddVO);
|
||||
}
|
||||
}
|
||||
|
@ -344,8 +349,8 @@ public class MessageServiceImpl implements MessageService {
|
|||
String projectName = projectMapper.tgetProjectById(projectChildDO.getProjectId().intValue()).getName();
|
||||
String systemName = projectChildDO.getName();
|
||||
messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统还有七天就要到期了,请及时处理");
|
||||
messageAddVO.setType("跳转系统页");
|
||||
messageAddVO.setToId(projectChildDO.getId().intValue());
|
||||
messageAddVO.setType("Project_child");
|
||||
messageAddVO.setToId(projectChildDO.getId());
|
||||
messageMapper.messageAdd(messageAddVO);
|
||||
}
|
||||
}
|
||||
|
@ -360,8 +365,8 @@ public class MessageServiceImpl implements MessageService {
|
|||
String projectName = projectMapper.tgetProjectById(projectChildDO.getProjectId().intValue()).getName();
|
||||
String systemName = projectChildDO.getName();
|
||||
messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统还有三天就要到期了,请及时处理");
|
||||
messageAddVO.setType("跳转系统页");
|
||||
messageAddVO.setToId(projectChildDO.getId().intValue());
|
||||
messageAddVO.setType("Project_child");
|
||||
messageAddVO.setToId(projectChildDO.getId());
|
||||
messageMapper.messageAdd(messageAddVO);
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ public class ModuleServiceImpl implements ModuleService {
|
|||
|
||||
@Override
|
||||
public BaseResponse getByProjectId(Integer projectId, HttpServletRequest request) {
|
||||
log.info("projectService");
|
||||
//获取用户id
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
//获取项目负责人id
|
||||
|
@ -47,6 +48,7 @@ public class ModuleServiceImpl implements ModuleService {
|
|||
|
||||
@Override
|
||||
public BaseResponse getBySysId(Integer sysId, HttpServletRequest request) {
|
||||
log.info("SysService");
|
||||
//获取用户id
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
//获取子系统负责人id
|
||||
|
@ -60,14 +62,14 @@ public class ModuleServiceImpl implements ModuleService {
|
|||
}
|
||||
|
||||
List<ProjectModuleDO> projectWorkDOList = moduleMapper.getBySysId(sysId, userId, is);
|
||||
// 封装VO类
|
||||
// 封装VO类
|
||||
List<ProjectWorkAndNameVO> projectWorkAndNameVOS = new ArrayList<>();
|
||||
for (ProjectModuleDO projectWorkDO : projectWorkDOList) {
|
||||
ProjectWorkAndNameVO projectWorkAndNameVO = new ProjectWorkAndNameVO();
|
||||
Processing.copyProperties(projectWorkDO, projectWorkAndNameVO);
|
||||
// 添加负责人和子系统名称
|
||||
projectWorkAndNameVO
|
||||
.setChildSystemName(projectDAO.getProjectWorkerById(projectWorkDO.getProjectChildId()).getName())
|
||||
// 添加负责人和子系统名称
|
||||
projectWorkAndNameVO.
|
||||
setChildSystemName(projectDAO.getProjectWorkerById(projectWorkDO.getProjectChildId()).getName())
|
||||
.setPrincipalUser(userDAO.getUserById(projectWorkDO.getPrincipalId()).getUsername());
|
||||
|
||||
projectWorkAndNameVOS.add(projectWorkAndNameVO);
|
||||
|
|
|
@ -1,17 +1,23 @@
|
|||
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.ReviewMapper;
|
||||
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.ReviewDO;
|
||||
import com.jsl.oa.model.vodata.ReviewAddVO;
|
||||
import com.jsl.oa.model.vodata.ReviewDataVO;
|
||||
import com.jsl.oa.model.vodata.ReviewUpdateResultVO;
|
||||
import com.jsl.oa.model.vodata.ReviewVO;
|
||||
import com.jsl.oa.services.ReviewService;
|
||||
import com.jsl.oa.utils.BaseResponse;
|
||||
import com.jsl.oa.utils.ErrorCode;
|
||||
import com.jsl.oa.utils.Processing;
|
||||
import com.jsl.oa.utils.ResultUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
@ -19,8 +25,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
|
@ -32,16 +38,19 @@ public class ReviewServiceImpl implements ReviewService {
|
|||
private final ProjectDAO projectDAO;
|
||||
|
||||
private final UserMapper userMapper;
|
||||
private final ReviewMapper reviewMapper;
|
||||
private final ProjectMapper projectMapper;
|
||||
|
||||
|
||||
@Override
|
||||
public BaseResponse getUserReview(Long projectId, HttpServletRequest request) {
|
||||
public BaseResponse getUserPendingApprovalReview(Integer page,
|
||||
Integer pageSize,
|
||||
HttpServletRequest request) {
|
||||
//获取用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
|
||||
|
||||
//存储审核数据的数组
|
||||
List<ReviewVO> reviewData = new ArrayList<>();
|
||||
List<ReviewDO> reviewData = new ArrayList<>();
|
||||
|
||||
//先获取用户为项目负责人的项目列表
|
||||
projectDAO.getProjectByPrincipalUser(userId);
|
||||
|
@ -49,32 +58,276 @@ public class ReviewServiceImpl implements ReviewService {
|
|||
//先从用户为 项目负责人 的项目中获取对应 审核信息
|
||||
for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) {
|
||||
//查询每个项目下所有的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewMapper.
|
||||
selectAllReviewFromProject(projectDO.getId());
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectApprovedResultReviewFromProject(projectDO.getId(),
|
||||
ReviewConstants.PENDING);
|
||||
//封装VO类
|
||||
reviewData.addAll(encapsulateArrayClass(reviewDOS));
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
//在从用户为 子系统负责人 的项目中获取对应 审核信息
|
||||
for (ProjectModuleDO projectWorkDO : projectDAO.getAllSubsystemByUserId(userId)) {
|
||||
//查询每个项目下所有的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewMapper.
|
||||
selectReviewFromSubsystem(projectWorkDO.getId());
|
||||
for (ProjectChildDO projectChildDO : projectDAO.getAllProjectChildByUId(userId)) {
|
||||
//查询每个项目下状态为2的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectApprovedResultReviewsFromSubsystem(projectChildDO.getId(),
|
||||
ReviewConstants.PENDING);
|
||||
//封装VO类
|
||||
reviewData.addAll(encapsulateArrayClass(reviewDOS));
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
|
||||
//在从用户为 子模块负责人 的项目中获取对应 审核信息
|
||||
for (ProjectModuleDO projectWorkDO : projectDAO.getAllSubmoduleByUserId(userId)) {
|
||||
for (ProjectModuleDO projectModuleDO : projectDAO.getAllModuleByUId(userId)) {
|
||||
//查询每个项目下所有的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewMapper.
|
||||
selectReviewFromSubmodule(projectWorkDO.getId());
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectApprovedResultReviewsFromSubModule(projectModuleDO.getId(),
|
||||
ReviewConstants.PENDING);
|
||||
//封装VO类
|
||||
reviewData.addAll(encapsulateArrayClass(reviewDOS));
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
return ResultUtil.success(reviewData);
|
||||
|
||||
//根据id进行去重
|
||||
reviewData = reviewData.stream()
|
||||
.collect(Collectors.toMap(ReviewDO::getId, review -> review, (existing, replacement) -> existing))
|
||||
.values()
|
||||
.stream()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
//按照申请时间降序排序
|
||||
Collections.sort(reviewData, new Comparator<ReviewDO>() {
|
||||
@Override
|
||||
public int compare(ReviewDO review1, ReviewDO review2) {
|
||||
return review2.getApplicationTime().compareTo(review1.getApplicationTime());
|
||||
}
|
||||
});
|
||||
|
||||
//封装对应VO类
|
||||
List<ReviewVO> result = encapsulateArrayClass(reviewData);
|
||||
|
||||
//封装结果类与数据总数
|
||||
ReviewDataVO reviewDataVO = getReviewsByPage(result, page, pageSize);
|
||||
|
||||
return ResultUtil.success(reviewDataVO);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BaseResponse getUserReview(Integer page,
|
||||
Integer pageSize,
|
||||
HttpServletRequest request) {
|
||||
|
||||
//获取用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
|
||||
//存储审核数据的数组
|
||||
List<ReviewDO> reviewData = new ArrayList<>();
|
||||
|
||||
//先获取用户为项目负责人的项目列表
|
||||
projectDAO.getProjectByPrincipalUser(userId);
|
||||
|
||||
//先从用户为 项目负责人 的项目中获取对应 审核信息
|
||||
for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) {
|
||||
//查询每个项目下所有的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectAllReviewFromProject(projectDO.getId());
|
||||
//封装VO类
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
//在从用户为 子系统负责人 的项目中获取对应 审核信息
|
||||
for (ProjectChildDO projectChildDO : projectDAO.getAllProjectChildByUId(userId)) {
|
||||
//查询每个项目下所有的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectReviewFromSubsystem(projectChildDO.getId());
|
||||
//封装VO类
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
|
||||
//在从用户为 子模块负责人 的项目中获取对应 审核信息
|
||||
for (ProjectModuleDO projectModuleDO : projectDAO.getAllModuleByUId(userId)) {
|
||||
//查询每个项目下所有的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectReviewFromSubmodule(projectModuleDO.getId());
|
||||
//封装VO类
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
//根据id进行去重
|
||||
reviewData = reviewData.stream()
|
||||
.collect(Collectors.toMap(ReviewDO::getId, review -> review, (existing, replacement) -> existing))
|
||||
.values()
|
||||
.stream()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//按照申请时间降序排序
|
||||
Collections.sort(reviewData, new Comparator<ReviewDO>() {
|
||||
@Override
|
||||
public int compare(ReviewDO review1, ReviewDO review2) {
|
||||
return review2.getApplicationTime().compareTo(review1.getApplicationTime());
|
||||
}
|
||||
});
|
||||
|
||||
//封装对应VO类
|
||||
List<ReviewVO> result = encapsulateArrayClass(reviewData);
|
||||
|
||||
//封装结果类与数据总数
|
||||
ReviewDataVO reviewDataVO = getReviewsByPage(result, page, pageSize);
|
||||
|
||||
return ResultUtil.success(reviewDataVO);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BaseResponse addReview(ReviewAddVO reviewAddVO, HttpServletRequest request) {
|
||||
|
||||
//获取用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
|
||||
//定义要添加的审核实体类
|
||||
ReviewDO reviewDO = new ReviewDO();
|
||||
//现将属性相同的值拷贝
|
||||
Processing.copyProperties(reviewAddVO, reviewDO);
|
||||
|
||||
//定义审核的类型(子模块id为空则为 子系统类型,否则为子模块类型)
|
||||
if (reviewAddVO.getProjectModuleId() == null) {
|
||||
reviewDO.setCategory(ReviewConstants.SUBSYSTEM);
|
||||
} else if (reviewAddVO.getProjectModuleId() != null) {
|
||||
reviewDO.setCategory(ReviewConstants.SUBMODULE);
|
||||
}
|
||||
|
||||
//定义申请者id
|
||||
reviewDO.setSenderId(userId);
|
||||
//添加数据
|
||||
reviewDAO.addReview(reviewDO);
|
||||
|
||||
return ResultUtil.success("申请成功");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BaseResponse updateReviewResult(ReviewUpdateResultVO reviewUpdateResultVO, HttpServletRequest request) {
|
||||
|
||||
//获取当前用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
|
||||
//获取对应审核信息
|
||||
ReviewDO reviewDO = reviewDAO.selectReviewById(reviewUpdateResultVO.getId());
|
||||
|
||||
if (reviewDO == null) {
|
||||
return ResultUtil.error(ErrorCode.REVIEW_NOT_EXIST);
|
||||
}
|
||||
|
||||
//设置对应属性
|
||||
reviewDO.setReviewTime(new Date());
|
||||
reviewDO.setRecipientId(userId);
|
||||
reviewDO.setReviewResult(reviewUpdateResultVO.getResult());
|
||||
|
||||
//更新数据
|
||||
reviewDAO.updateReview(reviewDO);
|
||||
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public BaseResponse searchReview(String content,
|
||||
Short statue,
|
||||
HttpServletRequest request,
|
||||
Integer page, Integer pageSize) {
|
||||
|
||||
List<ReviewVO> reviewVOS = new ArrayList<>();
|
||||
|
||||
// 根据判断结果筛选
|
||||
if (statue == null || statue.equals("")) {
|
||||
List<ReviewVO> reviewVOs = getReview(request);
|
||||
reviewVOS.addAll(reviewVOs);
|
||||
} else {
|
||||
List<ReviewVO> reviewVOs = getReviewsByResult(request, statue);
|
||||
reviewVOS.addAll(reviewVOs);
|
||||
}
|
||||
|
||||
// 根据内容筛选
|
||||
if (content == null || content.equals("")) {
|
||||
//封装结果类与数据总数
|
||||
ReviewDataVO reviewDataVO = getReviewsByPage(reviewVOS, page, pageSize);
|
||||
|
||||
return ResultUtil.success(reviewDataVO);
|
||||
} else {
|
||||
reviewVOS = reviewVOS.stream()
|
||||
.filter(reviewVO -> reviewVO.getName().contains(content) || reviewVO.getContent().contains(content))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
//封装结果类与数据总数
|
||||
ReviewDataVO reviewDataVO = getReviewsByPage(reviewVOS, page, pageSize);
|
||||
|
||||
return ResultUtil.success(reviewDataVO);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private List<ReviewVO> getReview(HttpServletRequest request) {
|
||||
//获取用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
|
||||
//存储审核数据的数组
|
||||
List<ReviewDO> reviewData = new ArrayList<>();
|
||||
|
||||
//先获取用户为项目负责人的项目列表
|
||||
projectDAO.getProjectByPrincipalUser(userId);
|
||||
|
||||
//先从用户为 项目负责人 的项目中获取对应 审核信息
|
||||
for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) {
|
||||
//查询每个项目下所有的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectAllReviewFromProject(projectDO.getId());
|
||||
//封装VO类
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
//在从用户为 子系统负责人 的项目中获取对应 审核信息
|
||||
for (ProjectChildDO projectChildDO : projectDAO.getAllProjectChildByUId(userId)) {
|
||||
//查询每个项目下所有的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectReviewFromSubsystem(projectChildDO.getId());
|
||||
//封装VO类
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
|
||||
//在从用户为 子模块负责人 的项目中获取对应 审核信息
|
||||
for (ProjectModuleDO projectModuleDO : projectDAO.getAllModuleByUId(userId)) {
|
||||
//查询每个项目下所有的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectReviewFromSubmodule(projectModuleDO.getId());
|
||||
//封装VO类
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
//根据id进行去重
|
||||
reviewData = reviewData.stream()
|
||||
.collect(Collectors.toMap(ReviewDO::getId, review -> review, (existing, replacement) -> existing))
|
||||
.values()
|
||||
.stream()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
//按照申请时间降序排序
|
||||
Collections.sort(reviewData, new Comparator<ReviewDO>() {
|
||||
@Override
|
||||
public int compare(ReviewDO review1, ReviewDO review2) {
|
||||
return review2.getApplicationTime().compareTo(review1.getApplicationTime());
|
||||
}
|
||||
});
|
||||
|
||||
//封装对应VO类
|
||||
List<ReviewVO> result = encapsulateArrayClass(reviewData);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
@ -92,14 +345,23 @@ public class ReviewServiceImpl implements ReviewService {
|
|||
ReviewVO reviewVO = new ReviewVO();
|
||||
// 现将相同的属性赋值
|
||||
Processing.copyProperties(reviewDO, reviewVO);
|
||||
// 赋值其他属性
|
||||
// 赋值其他非空属性
|
||||
reviewVO.setCategory(Processing.turnReviewCategory(reviewDO.getCategory()))
|
||||
.setSenderName(userMapper.getUserById(reviewDO.getSenderId()).getNickname())
|
||||
.setRecipientName(userMapper.getUserById(reviewDO.getRecipientId()).getNickname())
|
||||
.setProjectName(projectDAO.getProjectById(reviewDO.getProjectId()).getName())
|
||||
.setSubsystemName(reviewDAO.getNameBySubproject(reviewDO.getProjectSubsystemId()))
|
||||
.setSubmoduleName(reviewDAO.getNameBySubproject(reviewDO.getProjectSubmoduleId()))
|
||||
.setProjectChildName(projectMapper.getProjectChildById(
|
||||
Math.toIntExact(reviewDO.getProjectChildId())).getName())
|
||||
.setResult(Processing.turnReviewResult(reviewDO.getReviewResult()));
|
||||
// 赋值可为空属性并进行判断
|
||||
if (reviewDO.getRecipientId() != null) {
|
||||
reviewVO.setRecipientName(userMapper.getUserById(reviewDO.getRecipientId()).getNickname());
|
||||
}
|
||||
if (reviewDO.getProjectModuleId() != null) {
|
||||
reviewVO.setProjectModuleName(
|
||||
reviewDAO.getNameByModule(Math.toIntExact(reviewDO.getProjectModuleId())));
|
||||
} else {
|
||||
reviewVO.setProjectModuleName("无");
|
||||
}
|
||||
// 将封装好的结果添加到结果集
|
||||
resultData.add(reviewVO);
|
||||
}
|
||||
|
@ -108,9 +370,83 @@ public class ReviewServiceImpl implements ReviewService {
|
|||
}
|
||||
|
||||
|
||||
public List<ReviewVO> getReviewsByResult(
|
||||
HttpServletRequest request,
|
||||
Short result) {
|
||||
|
||||
// 获取用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
|
||||
//存储审核数据的数组
|
||||
List<ReviewDO> reviewData = new ArrayList<>();
|
||||
|
||||
//先获取用户为项目负责人的项目列表
|
||||
projectDAO.getProjectByPrincipalUser(userId);
|
||||
|
||||
//先从用户为 项目负责人 的项目中获取对应 审核信息
|
||||
for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) {
|
||||
//查询每个项目下所有的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectApprovedResultReviewFromProject(projectDO.getId(),
|
||||
result);
|
||||
//封装VO类
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
//在从用户为 子系统负责人 的项目中获取对应 审核信息
|
||||
for (ProjectChildDO projectChildDO : projectDAO.getAllProjectChildByUId(userId)) {
|
||||
//查询每个项目下状态为2的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectApprovedResultReviewsFromSubsystem(projectChildDO.getId(),
|
||||
result);
|
||||
//封装VO类
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
|
||||
//在从用户为 子模块负责人 的项目中获取对应 审核信息
|
||||
for (ProjectModuleDO projectModuleDO : projectDAO.getAllModuleByUId(userId)) {
|
||||
//查询每个项目下所有的审核信息
|
||||
List<ReviewDO> reviewDOS = reviewDAO.
|
||||
selectApprovedResultReviewsFromSubModule(projectModuleDO.getId(),
|
||||
result);
|
||||
//封装VO类
|
||||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
|
||||
//根据id进行去重
|
||||
reviewData = reviewData.stream()
|
||||
.collect(Collectors.toMap(ReviewDO::getId, review -> review, (existing, replacement) -> existing))
|
||||
.values()
|
||||
.stream()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
//按照申请时间降序排序
|
||||
Collections.sort(reviewData, new Comparator<ReviewDO>() {
|
||||
@Override
|
||||
public int compare(ReviewDO review1, ReviewDO review2) {
|
||||
return review2.getApplicationTime().compareTo(review1.getApplicationTime());
|
||||
}
|
||||
});
|
||||
|
||||
return encapsulateArrayClass(reviewData);
|
||||
}
|
||||
|
||||
|
||||
public ReviewDataVO getReviewsByPage(List<ReviewVO> allReviews, int page, int pageSize) {
|
||||
ReviewDataVO reviewDataVO = new ReviewDataVO();
|
||||
int total = allReviews.size();
|
||||
int startIndex = (page - 1) * pageSize;
|
||||
int endIndex = Math.min(startIndex + pageSize, total);
|
||||
List<ReviewVO> reviewsOnPage = allReviews.subList(startIndex, endIndex);
|
||||
|
||||
reviewDataVO.setReviews(reviewsOnPage);
|
||||
reviewDataVO.setDataTotal(total);
|
||||
|
||||
return reviewDataVO;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -157,7 +157,7 @@ public class UserServiceImpl implements UserService {
|
|||
if (roleUserDO == null) {
|
||||
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
|
||||
}
|
||||
RoleDO roleDO = roleDAO.getRoleByRoleName("admin");
|
||||
RoleDO roleDO = roleDAO.getRoleByRoleName("console");
|
||||
if (!roleUserDO.getRid().equals(roleDO.getId())) {
|
||||
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
|
||||
}
|
||||
|
|
|
@ -52,7 +52,8 @@ public enum ErrorCode {
|
|||
PROJECT_CUTTING_NOT_EXIST("ProjectCuttingNotExist", 40017, "项目分割模块不存在"),
|
||||
PROJECT_USER_NOT_EXIST("ProjectUserNotExist", 40018, "用户项目表无对应记录"),
|
||||
PROJECT_FILE_JSON_ERROR("ProjectFileJsonError", 40019, "项目文件json格式错误"),
|
||||
PROJECT_NOT_USER("ProjectNotUser", 40020, "项目无此用户");
|
||||
PROJECT_NOT_USER("ProjectNotUser", 40020, "项目无此用户"),
|
||||
REVIEW_NOT_EXIST("ReviewNotExit", 40101, "未找到对应审核信息");
|
||||
|
||||
|
||||
private final String output;
|
||||
|
|
|
@ -363,8 +363,8 @@ public class Processing {
|
|||
projectSimpleVO.setId(projectDO.getId());
|
||||
projectSimpleVO.setName(projectDO.getName());
|
||||
projectSimpleVO.setTags(projectDO.getTags());
|
||||
projectSimpleVO.setCycle(Long.valueOf(projectDO.getCycle()));
|
||||
projectSimpleVO.setWorkLoad(Long.valueOf(projectDO.getWorkLoad()));
|
||||
projectSimpleVO.setCycle(projectDO.getCycle().longValue());
|
||||
projectSimpleVO.setWorkLoad(projectDO.getWorkLoad().longValue());
|
||||
projectSimpleVO.setPrincipalUser(userDAO.getUserById(projectDO.getPrincipalId()).getUsername());
|
||||
// 解析JSON字符串
|
||||
JsonNode rootNode = null;
|
||||
|
@ -440,7 +440,7 @@ public class Processing {
|
|||
* @Date: 2024/4/11
|
||||
* @Param category:
|
||||
**/
|
||||
public static String turnReviewCategory(Integer category) {
|
||||
public static String turnReviewCategory(short category) {
|
||||
switch (category) {
|
||||
case 0:
|
||||
return "子系统";
|
||||
|
@ -451,7 +451,7 @@ public class Processing {
|
|||
}
|
||||
}
|
||||
|
||||
public static String turnReviewResult(Integer result) {
|
||||
public static String turnReviewResult(short result) {
|
||||
switch (result) {
|
||||
case 0:
|
||||
return "已拒绝";
|
||||
|
|
145
src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml
Normal file
145
src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml
Normal file
|
@ -0,0 +1,145 @@
|
|||
<?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
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="name != null and name != ''">
|
||||
name,
|
||||
</if>
|
||||
<if test="content != null and content != ''">
|
||||
content,
|
||||
</if>
|
||||
<if test="senderId != null">
|
||||
sender_id,
|
||||
</if>
|
||||
<if test="recipientId != null">
|
||||
recipient_id,
|
||||
</if>
|
||||
<if test="category != null">
|
||||
category,
|
||||
</if>
|
||||
<if test="projectId != null">
|
||||
project_id,
|
||||
</if>
|
||||
<if test="projectChildId != null">
|
||||
project_child_id,
|
||||
</if>
|
||||
<if test="projectModuleId != null">
|
||||
project_module_id,
|
||||
</if>
|
||||
<if test="applicationTime != null">
|
||||
application_time,
|
||||
</if>
|
||||
<if test="reviewTime != null">
|
||||
review_time,
|
||||
</if>
|
||||
<if test="reviewResult != null">
|
||||
review_result,
|
||||
</if>
|
||||
<if test="isDelete != null">
|
||||
is_delete,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||
<if test="name != null and name != ''">
|
||||
#{name},
|
||||
</if>
|
||||
<if test="content != null and content != ''">
|
||||
#{content},
|
||||
</if>
|
||||
<if test="senderId != null">
|
||||
#{senderId},
|
||||
</if>
|
||||
<if test="recipientId != null">
|
||||
#{recipientId},
|
||||
</if>
|
||||
<if test="category != null">
|
||||
#{category},
|
||||
</if>
|
||||
<if test="projectId != null">
|
||||
#{projectId},
|
||||
</if>
|
||||
<if test="projectChildId != null">
|
||||
#{projectChildId},
|
||||
</if>
|
||||
<if test="projectModuleId != null">
|
||||
#{projectModuleId},
|
||||
</if>
|
||||
<if test="applicationTime != null">
|
||||
#{applicationTime},
|
||||
</if>
|
||||
<if test="reviewTime != null">
|
||||
#{reviewTime},
|
||||
</if>
|
||||
<if test="reviewResult != null">
|
||||
#{reviewResult},
|
||||
</if>
|
||||
<if test="isDelete != null">
|
||||
#{isDelete},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
||||
<update id="updateReview" parameterType="com.jsl.oa.model.dodata.ReviewDO">
|
||||
update organize_oa.oa_review
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="name != null and name != ''">
|
||||
name = #{name},
|
||||
</if>
|
||||
|
||||
<if test="content != null and content != ''">
|
||||
content = #{content},
|
||||
</if>
|
||||
|
||||
<if test="senderId != null">
|
||||
sender_id = #{senderId},
|
||||
</if>
|
||||
|
||||
<if test="recipientId != null">
|
||||
recipient_id = #{recipientId},
|
||||
</if>
|
||||
|
||||
<if test="category != null">
|
||||
category = #{category},
|
||||
</if>
|
||||
|
||||
<if test="projectId != null">
|
||||
project_id = #{projectId},
|
||||
</if>
|
||||
|
||||
<if test="projectChildId != null">
|
||||
project_child_id = #{projectChildId},
|
||||
</if>
|
||||
|
||||
<if test="projectModuleId != null">
|
||||
project_module_id = #{projectModuleId},
|
||||
</if>
|
||||
|
||||
<if test="applicationTime != null">
|
||||
application_time = #{applicationTime},
|
||||
</if>
|
||||
|
||||
<if test="reviewTime != null">
|
||||
review_time = #{reviewTime},
|
||||
</if>
|
||||
|
||||
<if test="reviewResult != null">
|
||||
review_result = #{reviewResult},
|
||||
</if>
|
||||
|
||||
<if test="isDelete != null">
|
||||
is_delete = #{isDelete},
|
||||
</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
|
||||
|
||||
|
||||
</mapper>
|
Loading…
Reference in New Issue
Block a user