Compare commits

...

13 Commits

Author SHA1 Message Date
cd97498b80 Merge pull request 'feature-zrx' (#32) from feature-zrx into develop
Reviewed-on: #32
2024-04-19 22:41:30 +08:00
xiangZr-hhh
0719ecf538 patch:补丁
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 19s
对提出的问题进行修正
2024-04-19 20:42:00 +08:00
xiangZr-hhh
27268b5f3a Merge branch 'develop' of https://git-fy.cn/WxxyDeveloper/JSL_OrganizeInternalOA into feature-zrx 2024-04-19 19:38:21 +08:00
xiangZr-hhh
1b6ea7b140 fix:日报模块 查询接口修正
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 21s
xml文件修改
2024-04-19 19:10:47 +08:00
xiangZr-hhh
9ab6d1621b fix:日报模块 查询接口修正
增加部分属性
2024-04-19 18:13:52 +08:00
xiangZr-hhh
3f715f50a3 feat:日报模块 修改日报接口 2024-04-19 17:56:38 +08:00
xiangZr-hhh
b8b1ebd3cf Merge branch 'develop' of https://git-fy.cn/WxxyDeveloper/JSL_OrganizeInternalOA into feature-zrx
# Conflicts:
#	src/main/java/com/jsl/oa/config/startup/PermissionList.java
2024-04-19 17:13:01 +08:00
xiangZr-hhh
19b3829025 fix:日报模块
日报添加接口修正
2024-04-19 17:12:16 +08:00
xiangZr-hhh
cf4921397c feat:日报模块 日报删除接口 2024-04-19 16:36:18 +08:00
xiangZr-hhh
04f1798811 feat:日报模块 日报搜索接口
添加日报搜索接口
2024-04-19 15:07:08 +08:00
xiangZr-hhh
037b36bf3f patch:审核模块
审核模块代码部分解耦,增加可读性
2024-04-19 14:21:48 +08:00
xiangZr-hhh
cada75e210 Merge branch 'develop' of https://git-fy.cn/WxxyDeveloper/JSL_OrganizeInternalOA into feature-zrx 2024-04-19 13:45:42 +08:00
xiangZr-hhh
63619c389b fix:审核模块 搜索接口修正 2024-04-19 13:45:21 +08:00
19 changed files with 491 additions and 140 deletions

View File

@ -33,12 +33,17 @@ public class PermissionList {
permissionPrincipal.add(new PermissionVO("project:add", "增加项目"));
permissionPrincipal.add(new PermissionVO("project:child_add", "增加子系统"));
permissionPrincipal.add(new PermissionVO("project:module_add", "增加子模块"));
permissionPrincipal.add(new PermissionVO("review:add", "添加审核申请"));
permissionPrincipal.add(new PermissionVO("daily:add", "添加日报"));
permissionPrincipal.add(new PermissionVO("project:daily_delete", "删除日报"));
permissionDeveloper.add(new PermissionVO("auth:change_password", "修改密码"));
permissionDeveloper.add(new PermissionVO("info:get_header_image", "获取头部图片"));
permissionDeveloper.add(new PermissionVO("info:edit_header_image", "编辑头部图片"));
permissionDeveloper.add(new PermissionVO("info:delete_header_image", "删除头部图片"));
permissionDeveloper.add(new PermissionVO("project:child_add", "增加子系统"));
permissionDeveloper.add(new PermissionVO("project:module_add", "增加子模块"));
permissionDeveloper.add(new PermissionVO("review:add", "添加审核申请"));
permissionDeveloper.add(new PermissionVO("daily:add", "添加日报"));
permissionPrincipal.add(new PermissionVO("project:child_add", "增加子系统"));
permissionPrincipal.add(new PermissionVO("project:module_add", "增加子模块"));
}
}

View File

@ -1,7 +1,9 @@
package com.jsl.oa.controllers;
import com.jsl.oa.annotations.NeedPermission;
import com.jsl.oa.model.vodata.ProjectDailyAddVO;
import com.jsl.oa.model.vodata.ProjectDailyUpdateVO;
import com.jsl.oa.services.ProjectDailyService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
@ -16,7 +18,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
/**
@ -42,17 +44,38 @@ public class ProjectDailyController {
* @return 新增结果
*/
@PostMapping("/daily/add")
public BaseResponse add(@RequestBody @Validated ProjectDailyAddVO projectDailyAddVO,
@NeedPermission("daily:add")
public BaseResponse addDaily(@RequestBody @Validated ProjectDailyAddVO projectDailyAddVO,
@NotNull BindingResult bindingResult,
HttpServletRequest request) {
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return projectDailyService.addDaily(projectDailyAddVO, request);
}
@PutMapping("/daily/update")
public BaseResponse updateDaily(@RequestBody @Validated ProjectDailyUpdateVO projectDailyUpdateVO,
@NotNull BindingResult bindingResult,
HttpServletRequest request) {
log.info("请求接口[PUT]: /daily/update");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return projectDailyService.updateDaily(projectDailyUpdateVO, request);
}
@DeleteMapping("/daily/delete")
@NeedPermission("project:daily_delete")
public BaseResponse delete(@RequestParam Integer dailyId,
HttpServletRequest request) {
return projectDailyService.deleteDaily(dailyId, request);
}
@GetMapping("/daily/getMyDaily")
public BaseResponse getMyDaily(@RequestParam Integer page,
@ -65,10 +88,17 @@ public class ProjectDailyController {
@GetMapping("/daily/search")
public BaseResponse searchMyDaily(@RequestParam Integer page,
@RequestParam Integer pageSize,
Date beginTime,
Date endTime,
Integer projectId,
String beginTime,
String endTime,
HttpServletRequest request) {
return projectDailyService.searchMyDaily(page, pageSize, beginTime, endTime, request);
return projectDailyService.searchMyDaily(projectId,
page,
pageSize,
Processing.convertStringToDate(beginTime),
Processing.convertStringToDate(endTime),
request);
}

View File

@ -1,5 +1,6 @@
package com.jsl.oa.controllers;
import com.jsl.oa.annotations.NeedPermission;
import com.jsl.oa.model.vodata.ReviewAddVO;
import com.jsl.oa.model.vodata.ReviewUpdateResultVO;
import com.jsl.oa.services.ReviewService;
@ -64,6 +65,7 @@ public class ReviewController {
* @Param null:
**/
@PostMapping("/review/add")
@NeedPermission("review:add")
public BaseResponse addReview(@RequestBody @Validated ReviewAddVO reviewAddVO,
@NotNull BindingResult bindingResult,
HttpServletRequest request) {
@ -91,14 +93,23 @@ public class ReviewController {
}
@GetMapping("/review/search")
@GetMapping("/review/searchMyReview")
public BaseResponse searchReview(String content,
HttpServletRequest request,
@RequestParam Integer page,
@RequestParam Integer pageSize) {
log.info("请求接口[GET]: /review/searchMyReview");
return reviewService.searchReview(content, request, page, pageSize);
}
@GetMapping("/review/searchReviewRecords")
public BaseResponse searchReviewRecords(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);
log.info("请求接口[GET]: /review/searchReviewRecords");
return reviewService.searchReviewRecords(content, statue, request, page, pageSize);
}
}

View File

@ -209,4 +209,5 @@ public class ProjectDAO {
return projectMapper.getAllModuleByUserId(uid);
}
}

View File

@ -12,6 +12,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -58,6 +60,42 @@ public class ProjectDailyDAO {
List<ProjectDailyDO> myProjectDaily = projectDailyMapper.getProjectDailyByUser(userId);
projectDailyDOList.addAll(myProjectDaily);
// 排序并去重
projectDailyDOList = sortaAndNotRepeatDailyDO(projectDailyDOList);
return projectDailyDOList;
}
public List<ProjectDailyDO> getMyProjectDailyByTime(Long userId, Date beginTime, Date endTime) {
// 日报数据数组
List<ProjectDailyDO> projectDailyDOList = new ArrayList<>();
// 先获取我负责的项目下的日报数据
//获取我负责的项目
List<ProjectDO> projectDOS = projectMapper.getAllProjectByUserId(userId);
//获取项目下对应日报,并根据时间筛选
for (ProjectDO projectDO:projectDOS) {
List dailyFromProject = projectDailyMapper.getProjectDailyByProjectAndTime(projectDO.getId(),
beginTime, endTime);
projectDailyDOList.addAll(dailyFromProject);
}
// 在获取本人的发布日报,并根据时间筛选
List<ProjectDailyDO> myProjectDaily = projectDailyMapper.
getProjectDailyByUserAndTime(userId, beginTime, endTime);
projectDailyDOList.addAll(myProjectDaily);
// 排序并去重
projectDailyDOList = sortaAndNotRepeatDailyDO(projectDailyDOList);
return projectDailyDOList;
}
public List<ProjectDailyDO> sortaAndNotRepeatDailyDO(List<ProjectDailyDO> projectDailyDOList) {
// 去除重复的日报信息
projectDailyDOList = projectDailyDOList.stream()
// 根据 id 属性进行去重
@ -66,11 +104,25 @@ public class ProjectDailyDAO {
.values().stream()
.collect(Collectors.toList());
// 根据时间进行排序
projectDailyDOList = projectDailyDOList.stream()
.sorted(Comparator.comparing(ProjectDailyDO::getCreatedAt).reversed())
.collect(Collectors.toList());
return projectDailyDOList;
}
public void deleteDailyById(Integer dailyId) {
projectDailyMapper.deleteDailyById(dailyId);
}
public ProjectDailyDO getPorjectDailyById(Integer id) {
return projectDailyMapper.getDailyById(id);
}
public void updateDaily(ProjectDailyDO projectDailyDO) {
projectDailyMapper.updateDaily(projectDailyDO);
}
}

View File

@ -62,6 +62,10 @@ public class ReviewDAO {
return reviewMapper.selectReviewByUser(uid);
}
public List<ReviewDO> getReviewByUserAndResult(Long uid, Short result) {
return reviewMapper.selectReviewByUserAndResult(uid, result);
}
public void addReview(ReviewDO reviewDO) {

View File

@ -4,6 +4,7 @@ package com.jsl.oa.mapper;
import com.jsl.oa.model.dodata.ProjectDailyDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
@ -23,6 +24,15 @@ public interface ProjectDailyMapper {
List<ProjectDailyDO> getProjectDailyByProject(Long pid);
List getProjectDailyByProjectAndTime(Long id, Date beginTime, Date endTime);
List<ProjectDailyDO> getProjectDailyByUserAndTime(Long userId, Date beginTime, Date endTime);
ProjectDailyDO getDailyById(Integer id);
void deleteDailyById(Integer id);
void updateDaily(ProjectDailyDO projectDailyDO);
}

View File

@ -167,4 +167,5 @@ public interface ProjectMapper {
+ "(select id from organize_oa.oa_project_child where name =#{childName} "
+ "and project_id = (select id from organize_oa.oa_project where name =#{projectName}))")
List<ProjectModuleDO> getModuleByName(String projectName, String childName);
}

View File

@ -47,4 +47,8 @@ public interface ReviewMapper {
@Select("SELECT * FROM organize_oa.oa_review WHERE sender_id = #{uid} AND "
+ "is_delete = 0")
List<ReviewDO> selectReviewByUser(Long uid);
@Select("SELECT * FROM organize_oa.oa_review WHERE sender_id = #{uid} AND "
+ "is_delete = 0 AND review_result = #{result}")
List<ReviewDO> selectReviewByUserAndResult(Long uid, Short result);
}

View File

@ -6,7 +6,6 @@ import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
@ -20,7 +19,7 @@ public class ProjectDailyAddVO {
@NotNull(message = "工作时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date dailyTime;
private String dailyTime;
}

View File

@ -0,0 +1,29 @@
package com.jsl.oa.model.vodata;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class ProjectDailyUpdateVO {
@NotNull(message = "日报id不能为空")
private Integer id;
@NotNull(message = "日报所属项目id不能为空")
private Integer projectId;
@NotBlank(message = "日报内容不能为空")
private String content;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private String dailyTime;
}

View File

@ -32,6 +32,7 @@ public class ProjectDailyVO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updatedAt;
private Boolean isAllowDelete;
}

View File

@ -3,6 +3,7 @@ package com.jsl.oa.services;
import com.jsl.oa.model.vodata.ProjectDailyAddVO;
import com.jsl.oa.model.vodata.ProjectDailyUpdateVO;
import com.jsl.oa.utils.BaseResponse;
import javax.servlet.http.HttpServletRequest;
@ -22,11 +23,16 @@ public interface ProjectDailyService {
BaseResponse getMyDaily(Integer page, Integer pageSize, HttpServletRequest request);
BaseResponse searchMyDaily(Integer page,
BaseResponse searchMyDaily(Integer projectId,
Integer page,
Integer pageSize,
Date beginTime,
Date endTime,
HttpServletRequest request);
BaseResponse deleteDaily(Integer dailyId, HttpServletRequest request);
BaseResponse updateDaily(ProjectDailyUpdateVO projectDailyUpdateVO, HttpServletRequest request);
}

View File

@ -17,5 +17,11 @@ public interface ReviewService {
BaseResponse updateReviewResult(ReviewUpdateResultVO reviewUpdateResultVOVO, HttpServletRequest request);
BaseResponse searchReview(String content, Short statue, HttpServletRequest request, Integer page, Integer pageSize);
BaseResponse searchReview(String content, HttpServletRequest request, Integer page, Integer pageSize);
BaseResponse searchReviewRecords(String content,
Short statue,
HttpServletRequest request,
Integer page,
Integer pageSize);
}

View File

@ -6,9 +6,11 @@ package com.jsl.oa.services.impl;
import com.jsl.oa.dao.ProjectDAO;
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.vodata.ProjectDailyAddVO;
import com.jsl.oa.model.vodata.ProjectDailyDataVO;
import com.jsl.oa.model.vodata.ProjectDailyUpdateVO;
import com.jsl.oa.model.vodata.ProjectDailyVO;
import com.jsl.oa.services.ProjectDailyService;
import com.jsl.oa.utils.BaseResponse;
@ -42,6 +44,7 @@ public class ProjectDailyServiceImpl implements ProjectDailyService {
private final ProjectDAO projectDAO;
private final UserDAO userDAO;
private final ProjectDailyDAO projectDailyDAO;
private final ProjectDailyMapper projectDailyMapper;
@Override
@ -60,7 +63,7 @@ public class ProjectDailyServiceImpl implements ProjectDailyService {
ProjectDailyDO projectDailyDO = new ProjectDailyDO();
Processing.copyProperties(projectDailyAddVO, projectDailyDO);
projectDailyDO.setUserId(userId);
projectDailyDO.setProjectId(Long.valueOf(projectDailyAddVO.getProjectId()));
// 向数据库添加数据
projectDailyDAO.addProjectDaily(projectDailyDO);
@ -88,19 +91,95 @@ public class ProjectDailyServiceImpl implements ProjectDailyService {
}
@Override
public BaseResponse searchMyDaily(Integer page,
public BaseResponse searchMyDaily(Integer projectId,
Integer page,
Integer pageSize,
Date beginTime,
Date endTime,
HttpServletRequest request) {
// 获取用户id
Long userId = Processing.getAuthHeaderToUserId(request);
// 获取 我发布的及自己负责的项目下 的日报
List<ProjectDailyDO> projectDailyDOList =
// 根据时间筛选---获取 我发布的及自己负责的项目下 的日报
List<ProjectDailyDO> projectDailyDOList = new ArrayList<>();
//如果时间不为空则先根据时间筛选
if (beginTime != null && endTime != null) {
projectDailyDOList = projectDailyDAO.
getMyProjectDailyByTime(userId, beginTime, endTime);
} else {
//否则获取全部数据
projectDailyDOList =
projectDailyDAO.getMyProjectDaily(userId);
}
// 再根据项目id进行筛选
if (projectId != null) {
projectDailyDOList.removeIf(projectDailyDO -> projectDailyDO.getProjectId() != Long.valueOf(projectId));
}
// 进行分页
List<ProjectDailyDO> dailyPage = Processing.getPage(projectDailyDOList, page, pageSize);
// 封装结果类
List<ProjectDailyVO> projectDailyVOS = encapsulateArrayClass(dailyPage);
ProjectDailyDataVO projectDailyDataVO =
new ProjectDailyDataVO(projectDailyDOList.size(), page, pageSize, projectDailyVOS);
return ResultUtil.success(projectDailyDataVO);
}
return null;
@Override
public BaseResponse deleteDaily(Integer dailyId, HttpServletRequest request) {
Long userId = Processing.getAuthHeaderToUserId(request);
// 检查用户是否为项目负责人
if (!projectDAO.isPrincipalUser(userId, projectDailyMapper.getDailyById(dailyId).getProjectId())) {
return ResultUtil.error(ErrorCode.User_NOT_PROJECT_PRINCIPAL);
}
projectDailyDAO.deleteDailyById(dailyId);
return ResultUtil.success();
}
@Override
public BaseResponse updateDaily(ProjectDailyUpdateVO projectDailyUpdateVO, HttpServletRequest request) {
// 获取用户id
Long userId = Processing.getAuthHeaderToUserId(request);
// 获取对应日报数据
ProjectDailyDO projectDailyDO = projectDailyDAO.getPorjectDailyById(projectDailyUpdateVO.getId());
// 检测日报是否为空
if (projectDailyDO == null) {
return ResultUtil.error(ErrorCode.PROJECT_DAILY_NOT_EXIST);
}
// 查询用户是否有修改权限本人或项目负责人
if (userId.equals(projectDailyDO.getUserId())
|| projectDAO.getProjectById(
projectDailyDO.getProjectId()).
getPrincipalId().equals(userId)) {
String content = projectDailyUpdateVO.getContent();
Long projectId = Long.valueOf(projectDailyUpdateVO.getProjectId());
String dailyTime = projectDailyUpdateVO.getDailyTime();
if (content != null && !content.equals("")) {
projectDailyDO.setContent(content);
}
if (projectDAO.isExistProject(projectId)) {
projectDailyDO.setProjectId(projectId);
}
if (dailyTime != null && !dailyTime.equals("")) {
projectDailyDO.setDailyTime(Processing.convertStringToDate(dailyTime));
}
} else {
return ResultUtil.error(ErrorCode.NOT_PERMISSION_UPDATE_DAILY);
}
projectDailyDAO.updateDaily(projectDailyDO);
return ResultUtil.success();
}
@ -118,6 +197,14 @@ public class ProjectDailyServiceImpl implements ProjectDailyService {
projectDailyVO.setProjectName(
projectDAO.getProjectById(projectDailyVO.getProjectId()).getName())
.setUserName(userDAO.getUserById(projectDailyDO.getUserId()).getNickname());
//用户是否有权限删除
if (projectDailyDO.getUserId().equals(projectDAO.
getProjectById(projectDailyVO.getProjectId()).getPrincipalId())) {
projectDailyVO.setIsAllowDelete(true);
} else {
projectDailyVO.setIsAllowDelete(false);
}
// 结果封装类数组 添加对应 日报封装类
projectDailyVOS.add(projectDailyVO);
}

View File

@ -41,6 +41,13 @@ public class ReviewServiceImpl implements ReviewService {
private final ProjectMapper projectMapper;
/**
* @Description: 获取用户未审核的数据(只包括管理项目下未审核的数据)
* @Date: 2024/4/19
* @Param page: 当前页码
* @Param pageSize: 每页大小
* @Param request: request请求
**/
@Override
public BaseResponse getUserPendingApprovalReview(Integer page,
Integer pageSize,
@ -86,7 +93,6 @@ public class ReviewServiceImpl implements ReviewService {
reviewData.addAll(reviewDOS);
}
//根据id进行去重
reviewData = reviewData.stream()
.collect(Collectors.toMap(ReviewDO::getId, review -> review, (existing, replacement) -> existing))
@ -94,7 +100,6 @@ public class ReviewServiceImpl implements ReviewService {
.stream()
.collect(Collectors.toList());
//按照申请时间降序排序
Collections.sort(reviewData, new Comparator<ReviewDO>() {
@Override
@ -113,6 +118,13 @@ public class ReviewServiceImpl implements ReviewService {
}
/**
* @Description: 获取我的审核数据(用户管理项目下与自己的记录)
* @Date: 2024/4/19
* @Param page: 当前页码
* @Param pageSize: 每页大小
* @Param request: request请求
**/
@Override
public BaseResponse getUserReview(Integer page,
Integer pageSize,
@ -124,42 +136,13 @@ public class ReviewServiceImpl implements ReviewService {
//存储审核数据的数组
List<ReviewDO> reviewData = new ArrayList<>();
//先获取用户为项目负责人的项目列表
projectDAO.getProjectByPrincipalUser(userId);
//先获取用户管理下的所有审核信息
reviewData.addAll(getAllReviewFromProject(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);
}
// 获取自己的审核记录
//获取自己的审核记录
List<ReviewDO> myReviewDO = reviewDAO.getReviewByUser(userId);
reviewData.addAll(myReviewDO);
//根据id进行去重
reviewData = reviewData.stream()
.collect(Collectors.toMap(ReviewDO::getId, review -> review, (existing, replacement) -> existing))
@ -185,6 +168,12 @@ public class ReviewServiceImpl implements ReviewService {
}
/**
* @Description: 添加审核接口
* @Date: 2024/4/19
* @Param reviewAddVO: 审核添加实体类
* @Param request: request请求
**/
@Override
public BaseResponse addReview(ReviewAddVO reviewAddVO, HttpServletRequest request) {
@ -223,6 +212,9 @@ public class ReviewServiceImpl implements ReviewService {
//定义申请者id
reviewDO.setSenderId(userId);
reviewDO.setProjectId(Long.valueOf(reviewAddVO.getProjectId()));
reviewDO.setProjectChildId(Long.valueOf(reviewAddVO.getProjectChildId()));
reviewDO.setProjectModuleId(Long.valueOf(reviewAddVO.getProjectModuleId()));
//添加数据
reviewDAO.addReview(reviewDO);
@ -257,20 +249,11 @@ public class ReviewServiceImpl implements ReviewService {
@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);
}
// 获取我的审核数据
List<ReviewVO> reviewVOS = getReview(request);
// 根据内容筛选
if (content == null || content.equals("")) {
@ -291,6 +274,32 @@ public class ReviewServiceImpl implements ReviewService {
return ResultUtil.success(reviewDataVO);
}
@Override
public BaseResponse searchReviewRecords(String content,
Short statue,
HttpServletRequest request,
Integer page,
Integer pageSize) {
// 获取审核记录数据
List<ReviewVO> reviewVOS = getReviewsByResult(request, statue);
// 根据内容筛选
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) {
@ -300,36 +309,8 @@ public class ReviewServiceImpl implements ReviewService {
//存储审核数据的数组
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);
}
//获取用户管理的项目下的审核数据
reviewData.addAll(getAllReviewFromProject(userId));
//根据id进行去重
reviewData = reviewData.stream()
@ -373,7 +354,9 @@ public class ReviewServiceImpl implements ReviewService {
.setProjectName(projectDAO.getProjectById(reviewDO.getProjectId()).getName())
.setProjectChildName(projectMapper.getProjectChildById(
Math.toIntExact(reviewDO.getProjectChildId())).getName())
.setResult(Processing.turnReviewResult(reviewDO.getReviewResult()));
.setResult(Processing.turnReviewResult(reviewDO.getReviewResult()))
.setSenderId(Long.valueOf(reviewDO.getSenderId()))
.setRecipientId(reviewDO.getRecipientId());
// 赋值可为空属性并进行判断
if (reviewDO.getRecipientId() != null) {
reviewVO.setRecipientName(userMapper.getUserById(reviewDO.getRecipientId()).getNickname());
@ -395,15 +378,14 @@ 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);
//如果审核结果不为空则根据审核结果进行审查
if (result != null) {
//先从用户为 项目负责人 的项目中获取对应 审核信息
for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) {
@ -436,9 +418,18 @@ public class ReviewServiceImpl implements ReviewService {
reviewData.addAll(reviewDOS);
}
// 获取自己的审核记录
List<ReviewDO> myReviewDO = reviewDAO.getReviewByUser(userId);
// 获取自己的审核记录
List<ReviewDO> myReviewDO = reviewDAO.getReviewByUserAndResult(userId, result);
reviewData.addAll(myReviewDO);
}
// 如果审核结果为空获取全部
if (result == null) {
//获取用户管理项目下的所有审核数据
reviewData.addAll(getAllReviewFromProject(userId));
//获取用户自己的所有审核数据
reviewData.addAll(reviewDAO.getReviewByUser(userId));
}
//根据id进行去重
reviewData = reviewData.stream()
@ -447,7 +438,6 @@ public class ReviewServiceImpl implements ReviewService {
.stream()
.collect(Collectors.toList());
//按照申请时间降序排序
Collections.sort(reviewData, new Comparator<ReviewDO>() {
@Override
@ -460,6 +450,13 @@ public class ReviewServiceImpl implements ReviewService {
}
/**
* @Description: 审核数据分页处理
* @Date: 2024/4/19
* @Param allReviews: 审核数据
* @Param page: 当前页码
* @Param pageSize: 每页大小
**/
public ReviewDataVO getReviewsByPage(List<ReviewVO> allReviews, int page, int pageSize) {
ReviewDataVO reviewDataVO = new ReviewDataVO();
int total = allReviews.size();
@ -478,6 +475,48 @@ public class ReviewServiceImpl implements ReviewService {
}
/**
* @Description: 获取用户管理项目下的所有审核数据
* @Date: 2024/4/19
* @Param userId:
**/
public List<ReviewDO> getAllReviewFromProject(Long userId) {
List<ReviewDO> reviewData = new ArrayList<>();
//先从用户为 项目负责人 的项目中获取对应 审核信息
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);
}
return reviewData;
}
}

View File

@ -55,6 +55,9 @@ public enum ErrorCode {
PROJECT_NOT_USER("ProjectNotUser", 40020, "项目无此用户"),
PROJECT_CHILD_NOT_EXIST("ProjectChildNotExist", 40021, "子系统不存在"),
MODULE_NOT_EXIST("ModuleNotExist", 40022, "模块不存在"),
PROJECT_DAILY_NOT_EXIST("ProjectDailyNotExist", 40023, "日志不存在"),
NOT_PERMISSION_UPDATE_DAILY("NotPermissionUpdateDaily", 40024, "用户无权限修改日报"),
User_NOT_PROJECT_PRINCIPAL("UserNotProjectPrincipal", 40023, "用户非项目负责人"),
REVIEW_NOT_EXIST("ReviewNotExit", 40101, "未找到对应审核信息");

View File

@ -23,10 +23,9 @@ import org.springframework.validation.ObjectError;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* <h1>自定义快捷工具类</h1>
@ -409,4 +408,26 @@ public class Processing {
int toIndex = Math.min(fromIndex + pageSize, list.size());
return list.subList(fromIndex, toIndex);
}
/**
* @Description: 字符与时间类型转换方法
* @Date: 2024/4/19
* @Param dateString:
**/
public static Date convertStringToDate(String dateString) {
if (dateString.isEmpty()) {
return null; // 如果字符串为空返回空的Date对象
} else {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
return dateFormat.parse(dateString);
} catch (ParseException e) {
return null;
}
}
}
}

View File

@ -7,7 +7,7 @@
<!-- 插入方法的 SQL 语句 -->
<insert id="insert" parameterType="com.jsl.oa.model.dodata.ProjectDailyDO">
insert into oa_project_daily
insert into organize_oa.oa_project_daily
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId != null">user_id,</if>
<if test="projectId != null">project_id,</if>
@ -27,15 +27,57 @@
<select id="getProjectDailyByUser" parameterType="java.lang.Long"
resultType="com.jsl.oa.model.dodata.ProjectDailyDO">
select * from oa_project_daily where user_id = #{uid}
select * from organize_oa.oa_project_daily where user_id = #{uid}
and is_delete = 0
</select>
<select id="getProjectDailyByProject" parameterType="java.lang.Long"
resultType="com.jsl.oa.model.dodata.ProjectDailyDO">
select * from oa_project_daily where user_id = #{pid}
select * from organize_oa.oa_project_daily where user_id = #{pid}
and is_delete = 0
</select>
<select id="getProjectDailyByProjectAndTime" parameterType="java.util.Map"
resultType="com.jsl.oa.model.dodata.ProjectDailyDO">
select * from organize_oa.oa_project_daily
where project_id = #{id}
and created_at between #{beginTime} and #{endTime}
and is_delete = 0
</select>
<select id="getProjectDailyByUserAndTime" parameterType="java.util.Map"
resultType="com.jsl.oa.model.dodata.ProjectDailyDO">
select * from organize_oa.oa_project_daily
where user_id = #{userId}
and created_at between #{beginTime} and #{endTime}
and is_delete = 0
</select>
<select id="getDailyById" parameterType="java.lang.Integer"
resultType="com.jsl.oa.model.dodata.ProjectDailyDO">
select * from organize_oa.oa_project_daily
where id = #{id}
and is_delete = 0
</select>
<delete id="deleteDailyById" parameterType="java.lang.Integer">
UPDATE organize_oa.oa_project_daily
SET is_delete = 1
WHERE id = #{id}
</delete>
<update id="updateDaily" parameterType="com.jsl.oa.model.dodata.ProjectDailyDO">
UPDATE organize_oa.oa_project_daily
<set>
<if test="userId != null">user_id = #{userId},</if>
<if test="projectId != null">project_id = #{projectId},</if>
<if test="content != null">content = #{content},</if>
<if test="dailyTime != null">daily_time = #{dailyTime},</if>
<if test="updatedAt != null">updated_at = #{updatedAt},</if>
<if test="isDelete != null">is_delete = #{isDelete}</if>
</set>
WHERE id = #{id}
</update>
</mapper>