Compare commits

...

22 Commits

Author SHA1 Message Date
176yunxuan
c229ed59b8 fix:项目,系统,模块更新
Some checks failed
代码检查 / 代码检查 (pull_request) Failing after 22s
2024-04-20 10:44:07 +08:00
xiangZr-hhh
f57e949d65 Merge branch 'develop' of https://git-fy.cn/WxxyDeveloper/JSL_OrganizeInternalOA into feature-zrx
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 20s
2024-04-20 02:33:20 +08:00
xiangZr-hhh
1d588f4c2d patch: 审核模块
审批结果接口添加发送消息
2024-04-20 02:31:49 +08:00
xiangZr-hhh
ec2a30075d feat: 新增接口
根据项目id查询名下所有子系统
根据子系统id查询名下所有子模块
2024-04-20 02:16:43 +08:00
xiangZr-hhh
07601350bf fix: 审核模块 2024-04-20 01:46:52 +08:00
24c45812e8 Merge pull request 'feature-zrx' (#33) from feature-zrx into develop
Reviewed-on: #33
Reviewed-by: 筱锋xiao_lfeng <gm@x-lf.cn>
2024-04-20 00:19:08 +08:00
xiangZr-hhh
4a91ebed34 Merge branch 'develop' of https://git-fy.cn/WxxyDeveloper/JSL_OrganizeInternalOA into feature-zrx
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 24s
2024-04-19 23:28:35 +08:00
xiangZr-hhh
1197f77131 fix: 日报模块 添加接口 2024-04-19 23:28:00 +08:00
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
80c7da422f Merge pull request 'bug:子模块子系统查询,添加bug修复' (#30) from feature-jie into develop
Reviewed-on: #30
Reviewed-by: 筱锋xiao_lfeng <gm@x-lf.cn>
2024-04-19 19:15:34 +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
26 changed files with 866 additions and 188 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,6 +1,8 @@
package com.jsl.oa.controllers;
import com.jsl.oa.annotations.NeedPermission;
import com.jsl.oa.model.dodata.ProjectChildDO;
import com.jsl.oa.model.dodata.ProjectModuleDO;
import com.jsl.oa.model.vodata.ProjectChildAddVO;
import com.jsl.oa.model.vodata.ProjectEditVO;
import com.jsl.oa.model.vodata.ProjectInfoVO;
@ -365,7 +367,7 @@ public class ProjectController {
}
/**
* 项目名查询子系统
* 项目名查询所属所有子系统
*
* @param name
* @param request
@ -379,6 +381,29 @@ public class ProjectController {
return projectService.projectChildGetName(name, request);
}
/**
* id查询子系统
*
* @param id
* @param request
* @return
*/
@GetMapping("/project/child/get/id")
public BaseResponse projectChildById(
@RequestParam Integer id,
HttpServletRequest request
) {
return projectService.projectChildGetById(id, request);
}
/**
* 根据项目和子系统名查询所属所有子模块
*
* @param projectName
* @param childName
* @param request
* @return
*/
@GetMapping("/project/module/get/name")
public BaseResponse projectModuleGetName(
@RequestParam String projectName,
@ -388,4 +413,40 @@ public class ProjectController {
return projectService.projectModuleGetName(projectName, childName, request);
}
@GetMapping("/project/module/get/id")
public BaseResponse projectModuleGetName(
@RequestParam Integer childId,
HttpServletRequest request
) {
return projectService.projectModuleGetById(childId, request);
}
@PutMapping("/project/module/edit")
public BaseResponse projectModuleEdit(
@RequestParam Long id,
@RequestBody ProjectModuleDO projectModuleAddVO,
HttpServletRequest request
) {
return projectService.projectModuleEdit(request, projectModuleAddVO, id);
}
@PutMapping("/project/edit")
public BaseResponse projectEdit(
@RequestParam Long id,
@RequestBody ProjectEditVO projectEditVO,
HttpServletRequest request
) {
return projectService.projectEdit(request, projectEditVO, id);
}
@PutMapping("/project/child/edit")
public BaseResponse projectChildEdit(
@RequestParam Long id,
@RequestBody ProjectChildDO projectChildAddVO,
HttpServletRequest request
) {
return projectService.projectChildEdit(request, projectChildAddVO, id);
}
}

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,10 +65,11 @@ public class ReviewController {
* @Param null:
**/
@PostMapping("/review/add")
@NeedPermission("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);
@ -81,7 +83,6 @@ public class ReviewController {
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);
@ -91,14 +92,23 @@ public class ReviewController {
}
@GetMapping("/review/search")
@GetMapping("/review/searchMyReview")
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);
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) {
return reviewService.searchReviewRecords(content, statue, request, page, pageSize);
}
}

View File

@ -41,15 +41,12 @@ public class ProjectDAO {
projectMapper.projectWorkAdd(projectChildAddVO);
}
public ProjectDO projectEdit(@NotNull ProjectEditVO projectEdit, Long projectId) {
public ProjectDO projectEdit(@NotNull ProjectDO projectEdit) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectEdit 方法");
log.info("\t\t> 从 MySQL 更新数据");
ProjectDO projectDO = new ProjectDO();
Processing.copyProperties(projectEdit, projectDO);
projectDO.setId(projectId);
projectMapper.projectEdit(projectDO);
projectMapper.projectEdit(projectEdit);
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectById(projectId);
return projectMapper.getProjectById(projectEdit.getId());
}
public boolean isExistProject(Long id) {
@ -209,4 +206,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

@ -36,6 +36,8 @@ public interface ProjectMapper {
+ "#{description},#{status},#{deadLine},#{cycle})")
void projectModuleAdd(ProjectModuleAddVO projectModuleAddVO);
@Select("select project_id from organize_oa.oa_project_child where id=#{id}")
Long getProjectIdBySysId(Long id);
void projectEdit(ProjectDO projectEdit);
@Select("select * from organize_oa.oa_project where id=#{id}")
@ -84,7 +86,6 @@ public interface ProjectMapper {
//@Select("select * from organize_oa.oa_project_work where status=1 and principal_id=#{userId}")
List<ProjectDO> workget1(Long userId, Integer is);
List<ProjectDO> tget(Integer id);
List<ProjectDO> tgetByIsfinish(List<String> isFinish);
@ -167,4 +168,20 @@ 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);
void projectModuleUpdate(ProjectModuleDO projectModuleDO);
void projectChildEdit(ProjectChildDO projectChildDO);
@Select("select * from organize_oa.oa_project_child where project_id = #{id} "
+ "and is_delete = 0")
List<ProjectChildDO> getAllChildByProjectId(Integer id);
@Select("select * from organize_oa.oa_project_modules where project_child_id = #{id} "
+ "and is_delete = 0")
List<ProjectModuleDO> getModuleByChildId(Integer id);
void projectModuleEdit(ProjectModuleDO projectModuleAddVO);
void projectChildEditAll(ProjectChildDO projectChildAddVO);
}

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

@ -10,13 +10,13 @@ import java.sql.Timestamp;
@Accessors(chain = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ProjectModuleDO {
private String name;
private Long id;
private Long projectChildId;
private Long principalId;
private Integer cycle;
private Integer workLoad;
private String description;
private String name;
private Integer isDelete;
private String status;
private Timestamp deadLine;

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

@ -7,14 +7,14 @@ import java.sql.Timestamp;
@Data
public class ProjectEditVO {
private Long id;
private String name;
private Long principalId;
private String tags;
private Long cycle;
private String file;
private String files;
private String description;
private Integer isFinish;
private Integer status;
private String status;
private Long workLoad;
private Timestamp beginTime;
private Timestamp completeTime;

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

@ -1,5 +1,7 @@
package com.jsl.oa.services;
import com.jsl.oa.model.dodata.ProjectChildDO;
import com.jsl.oa.model.dodata.ProjectModuleDO;
import com.jsl.oa.model.vodata.ProjectEditVO;
import com.jsl.oa.model.vodata.ProjectInfoVO;
import com.jsl.oa.model.vodata.ProjectChildAddVO;
@ -71,9 +73,19 @@ public interface ProjectService {
BaseResponse projectGetName(String name, HttpServletRequest request);
BaseResponse projectModuleAdd(HttpServletRequest request, ProjectModuleAddVO projectModuleAddVO);
BaseResponse projectChildGetName(String name, HttpServletRequest request);
BaseResponse projectChildGetById(Integer id, HttpServletRequest request);
BaseResponse projectModuleGetName(String projectName, String childName, HttpServletRequest request);
BaseResponse projectModuleGetById(Integer id, HttpServletRequest request);
BaseResponse projectModuleEdit(HttpServletRequest request, ProjectModuleDO projectModuleAddVO, Long id);
BaseResponse projectChildEdit(HttpServletRequest request, ProjectChildDO projectChildAddVO, Long id);
}

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

@ -193,24 +193,26 @@ public class MessageServiceImpl implements MessageService {
// 1:上传文档 2:修改状态 3:修改负责人
List<Long> uidList = projectMapper.getMemberByProjectId(pId);
for (Long uid : uidList) {
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(uid);
messageAddVO.setSid(Processing.getAuthHeaderToUserId(request));
messageAddVO.setTitle("项目变动消息");
if (type == 3) {
messageAddVO.setText("项目负责人" + senderName + "调整了" + systemName + "子系统的负责人");
messageAddVO.setType("Project_child");
messageAddVO.setToId(systemId.longValue());
} else if (type == 2) {
messageAddVO.setText("项目负责人" + senderName + "修改了" + projectName + "项目的状态");
messageAddVO.setType("Project");
messageAddVO.setToId(pId.longValue());
} else if (type == 1) {
messageAddVO.setText("项目负责人" + senderName + "上传了文档到" + projectName + "项目");
messageAddVO.setType("Project");
messageAddVO.setToId(pId.longValue());
if (uid != null) {
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(uid);
messageAddVO.setSid(Processing.getAuthHeaderToUserId(request));
messageAddVO.setTitle("项目变动消息");
if (type == 3) {
messageAddVO.setText("项目负责人" + senderName + "调整了" + systemName + "子系统的负责人");
messageAddVO.setType("Project_child");
messageAddVO.setToId(systemId.longValue());
} else if (type == 2) {
messageAddVO.setText("项目负责人" + senderName + "修改了" + projectName + "项目的状态");
messageAddVO.setType("Project");
messageAddVO.setToId(pId.longValue());
} else if (type == 1) {
messageAddVO.setText("项目负责人" + senderName + "上传了文档到" + projectName + "项目");
messageAddVO.setType("Project");
messageAddVO.setToId(pId.longValue());
}
messageMapper.messageAdd(messageAddVO);
}
messageMapper.messageAdd(messageAddVO);
}
}
@ -234,7 +236,10 @@ public class MessageServiceImpl implements MessageService {
String projectName = projectMapper.tgetProjectById(pId).getName();
String senderName = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)).getUsername();
String systemName = projectMapper.getWorkById(systmeId).getName();
String moddleName = projectMapper.getModuleById(moddleId).getName();
String moddleName = null;
if (moddleId != null) {
moddleName = projectMapper.getModuleById(moddleId).getName();
}
// 添加消息
// 1:删除模块 2:修改简介 3:修改周期
if (type == 1) {
@ -248,6 +253,7 @@ public class MessageServiceImpl implements MessageService {
} else {
List<Long> uidList = projectMapper.getMemberBySystemId(systmeId);
for (Long uid : uidList) {
if (uid != null) {
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(uid);
messageAddVO.setSid(Processing.getAuthHeaderToUserId(request));
@ -262,6 +268,7 @@ public class MessageServiceImpl implements MessageService {
messageAddVO.setType("Project_child");
messageAddVO.setToId(systmeId.longValue());
messageMapper.messageAdd(messageAddVO);
}
}
}
}
@ -311,6 +318,9 @@ public class MessageServiceImpl implements MessageService {
List<ProjectModuleDO> projectWorkDOList1 = projectMapper.getProjectWorkByTime(sevenDaysLater);
if (!projectWorkDOList1.isEmpty()) {
for (ProjectModuleDO projectWorkDO : projectWorkDOList) {
if (projectWorkDO.getPrincipalId() == null) {
continue;
}
// 添加消息
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(projectWorkDO.getPrincipalId());
@ -330,6 +340,9 @@ public class MessageServiceImpl implements MessageService {
}
if (!projectWorkDOList.isEmpty()) {
for (ProjectModuleDO projectWorkDO : projectWorkDOList) {
if (projectWorkDO.getPrincipalId() == null) {
continue;
}
// 添加消息
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(projectWorkDO.getPrincipalId());
@ -352,6 +365,9 @@ public class MessageServiceImpl implements MessageService {
List<ProjectChildDO> projectChildDOList = projectMapper.getProjectChildByTime(sevenDaysLater);
if (!projectChildDOList.isEmpty()) {
for (ProjectChildDO projectChildDO : projectChildDOList) {
if (projectChildDO.getPrincipalId() == null) {
continue;
}
// 添加消息
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(projectChildDO.getPrincipalId());
@ -368,6 +384,9 @@ public class MessageServiceImpl implements MessageService {
List<ProjectChildDO> projectChildDOList1 = projectMapper.getProjectChildByTime(threeDaysLater);
if (!projectChildDOList1.isEmpty()) {
for (ProjectChildDO projectChildDO : projectChildDOList1) {
if (projectChildDO.getPrincipalId() == null) {
continue;
}
// 添加消息
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(projectChildDO.getPrincipalId());

View File

@ -6,10 +6,13 @@ 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.MessageService;
import com.jsl.oa.services.ProjectDailyService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
@ -42,25 +45,28 @@ public class ProjectDailyServiceImpl implements ProjectDailyService {
private final ProjectDAO projectDAO;
private final UserDAO userDAO;
private final ProjectDailyDAO projectDailyDAO;
private final ProjectDailyMapper projectDailyMapper;
private final MessageService messageService;
@Override
public BaseResponse addDaily(ProjectDailyAddVO projectDailyAddVO, HttpServletRequest request) {
// 获取用户id
Long userId = Processing.getAuthHeaderToUserId(request);
Long userId = Processing.getAuthHeaderToUserId(request);
// 从请求体中获取项目id
Integer projectId = projectDailyAddVO.getProjectId();
Integer projectId = projectDailyAddVO.getProjectId();
// 检查项目是否存在
if (!projectDAO.isExistProjectById(Long.valueOf(projectId))) {
return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST);
if (!projectDAO.isExistProjectById(Long.valueOf(projectId))) {
return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST);
}
// 赋值数据库表实体类相关属性
ProjectDailyDO projectDailyDO = new ProjectDailyDO();
Processing.copyProperties(projectDailyAddVO, projectDailyDO);
projectDailyDO.setUserId(userId);
projectDailyDO.setProjectId(Long.valueOf(projectDailyAddVO.getProjectId()));
projectDailyDO.setDailyTime(Processing.convertStringToDate(projectDailyAddVO.getDailyTime()));
// 向数据库添加数据
projectDailyDAO.addProjectDaily(projectDailyDO);
@ -88,19 +94,102 @@ 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 =
projectDailyDAO.getMyProjectDaily(userId);
// 根据时间筛选---获取 我发布的及自己负责的项目下 的日报
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);
ProjectDailyDO projectDailyDO = projectDailyMapper.getDailyById(dailyId);
if (projectDailyDO == null) {
return ResultUtil.error(ErrorCode.PROJECT_DAILY_NOT_EXIST);
}
// 检查用户是否为项目负责人
if (!projectDAO.isPrincipalUser(userId, projectDailyDO.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 +207,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

@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.jsl.oa.annotations.NeedPermission;
import com.jsl.oa.dao.ProjectDAO;
import com.jsl.oa.dao.RoleDAO;
@ -278,6 +279,21 @@ public class ProjectServiceImpl implements ProjectService {
return ResultUtil.success(returnGetVOList);
}
@Override
public BaseResponse projectChildGetById(Integer id, HttpServletRequest request) {
List<ProjectChildDO> projectChildDOList = projectMapper.getAllChildByProjectId(id);
List<ReturnGetVO> returnGetVOList = new ArrayList<>();
for (ProjectChildDO projectChildDO : projectChildDOList) {
ReturnGetVO returnGetVO = new ReturnGetVO();
Processing.copyProperties(projectChildDO, returnGetVO);
returnGetVOList.add(returnGetVO);
}
return ResultUtil.success(returnGetVOList);
}
@Override
public BaseResponse projectModuleGetName(String projectName, String childName, HttpServletRequest request) {
List<ProjectModuleDO> projectModuleDOList = projectMapper.getModuleByName(projectName, childName);
@ -290,6 +306,70 @@ public class ProjectServiceImpl implements ProjectService {
return ResultUtil.success(returnGetVOList);
}
@Override
public BaseResponse projectModuleGetById(Integer id, HttpServletRequest request) {
List<ProjectModuleDO> projectModuleDOList = projectMapper.getModuleByChildId(id);
List<ReturnGetVO> returnGetVOList = new ArrayList<>();
for (ProjectModuleDO projectModuleDO : projectModuleDOList) {
ReturnGetVO returnGetVO = new ReturnGetVO();
Processing.copyProperties(projectModuleDO, returnGetVO);
returnGetVOList.add(returnGetVO);
}
return ResultUtil.success(returnGetVOList);
}
@Override
public BaseResponse projectModuleEdit(HttpServletRequest request, ProjectModuleDO projectModuleEditVO, Long id) {
//判断是否是子系统负责人或项目负责人
if (!Objects.equals(Processing.getAuthHeaderToUserId(request), projectMapper.getPirTdByModuleId(id))
// 项目负责人
&& !Objects.equals(Processing.getAuthHeaderToUserId(request),
projectMapper.getPirIdbyId(projectMapper.getModuleById(id.intValue()).getProjectChildId()))) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
} else {
HashMap<String, Object> descriptionMap = new HashMap<>();
descriptionMap.put("description", projectModuleEditVO.getDescription());
projectModuleEditVO.setDescription(gson.toJson(descriptionMap));
projectModuleEditVO.setId(id);
projectMapper.projectModuleEdit(projectModuleEditVO);
}
return ResultUtil.success("修改成功");
}
@Override
public BaseResponse projectChildEdit(HttpServletRequest request, ProjectChildDO projectChildAddVO, Long id) {
//判断是否是项目负责人
if (!Objects.equals(Processing.getAuthHeaderToUserId(request), projectMapper.getPirIdbyId(id))) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
} else {
JsonObject jsonObject = gson
.fromJson(projectMapper.getProjectChildById(id.intValue()).getDescription(), JsonObject.class);
//改动简介发送消息
if (!Objects.equals(projectChildAddVO.getDescription(), "")
&& !projectChildAddVO.getDescription()
.equals(jsonObject.get("description").getAsString())) {
messageService.messageAdd(projectMapper.getProjectIdBySysId(id)
.intValue(), id.intValue(), null, 2, request);
} // 改动周期或工作量发送消息
if (projectChildAddVO.getCycle() != null || projectChildAddVO.getWorkLoad() != null) {
messageService.messageAdd(projectMapper.getProjectIdBySysId(id)
.intValue(), id.intValue(), null, 3, request);
}
HashMap<String, Object> descriptionMap = new HashMap<>();
descriptionMap.put("description", projectChildAddVO.getDescription());
projectChildAddVO.setDescription(gson.toJson(descriptionMap));
projectChildAddVO.setId(id);
projectMapper.projectChildEditAll(projectChildAddVO);
}
return ResultUtil.success("修改成功");
}
@Override
public BaseResponse getModuleById(Integer id) {
ProjectModuleDO projectWorkSimpleVO = projectMapper.getModuleById(id);
@ -340,16 +420,32 @@ public class ProjectServiceImpl implements ProjectService {
public BaseResponse projectEdit(HttpServletRequest request, @NotNull ProjectEditVO projectEdit, Long projectId) {
//判断用户是否为老师 或者 项目负责人
//判断用户是否为负责人 或者 项目负责人
if (!Processing.checkUserIsPrincipal(request, roleDAO)
|| !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) {
&& !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
//判断项目是否存在
if (projectDAO.isExistProject(projectId)) {
//更新数据
return ResultUtil.success(projectDAO.projectEdit(projectEdit, projectId));
HashMap<String, Object> descriptionMap = new HashMap<>();
descriptionMap.put("description", projectEdit.getDescription());
projectEdit.setDescription(gson.toJson(descriptionMap));
HashMap<String, Object> tagMap = new HashMap<>();
tagMap.put("tags", projectEdit.getTags().split(","));
projectEdit.setTags(gson.toJson(tagMap));
HashMap<String, Object> filesMap = new HashMap<>();
filesMap.put("URI", projectEdit.getFiles());
projectEdit.setFiles(gson.toJson(filesMap));
projectEdit.setId(projectId);
ProjectDO projectEdit1 = new ProjectDO();
Processing.copyProperties(projectEdit, projectEdit1);
projectDAO.projectEdit(projectEdit1);
return ResultUtil.success(projectDAO.projectEdit(projectEdit1));
} else {
return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST);
}

View File

@ -15,6 +15,7 @@ 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.MessageService;
import com.jsl.oa.services.ReviewService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
@ -40,7 +41,16 @@ public class ReviewServiceImpl implements ReviewService {
private final UserMapper userMapper;
private final ProjectMapper projectMapper;
private final MessageService messageService;
/**
* @Description: 获取用户未审核的数据(只包括管理项目下未审核的数据)
* @Date: 2024/4/19
* @Param page: 当前页码
* @Param pageSize: 每页大小
* @Param request: request请求
**/
@Override
public BaseResponse getUserPendingApprovalReview(Integer page,
Integer pageSize,
@ -86,7 +96,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 +103,6 @@ public class ReviewServiceImpl implements ReviewService {
.stream()
.collect(Collectors.toList());
//按照申请时间降序排序
Collections.sort(reviewData, new Comparator<ReviewDO>() {
@Override
@ -113,6 +121,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 +139,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 +171,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,9 +215,13 @@ 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);
return ResultUtil.success("申请成功");
}
@ -243,11 +239,44 @@ public class ReviewServiceImpl implements ReviewService {
return ResultUtil.error(ErrorCode.REVIEW_NOT_EXIST);
}
//修改对应项目负责人
if (reviewUpdateResultVO.getResult() == ReviewConstants.APPROVED) {
//如果为子系统则添加子系统负责人为申请人
if (reviewDO.getCategory() == 0) {
ProjectChildDO projectChildDO = projectMapper.
getProjectChildById(Math.toIntExact(reviewDO.getProjectChildId()));
if (projectChildDO == null) {
return ResultUtil.error(ErrorCode.PROJECT_CHILD_NOT_EXIST);
}
projectChildDO.setPrincipalId(Long.valueOf(reviewDO.getSenderId()));
projectMapper.projectChildEdit(projectChildDO);
}
//如果为子模块则添加子模块负责人为申请人
if (reviewDO.getCategory() == 1) {
ProjectModuleDO projectModuleDO = projectMapper.
getModuleById(Math.toIntExact(reviewDO.getProjectModuleId()));
if (projectModuleDO == null) {
return ResultUtil.error(ErrorCode.MODULE_NOT_EXIST);
}
projectModuleDO.setPrincipalId(Long.valueOf(reviewDO.getSenderId()));
projectMapper.projectModuleUpdate(projectModuleDO);
}
}
//设置对应属性
reviewDO.setReviewTime(new Date());
reviewDO.setRecipientId(userId);
reviewDO.setReviewResult(reviewUpdateResultVO.getResult());
//发送消息
messageService.messageAdd(Math.toIntExact(reviewDO.getProjectId()),
Math.toIntExact(reviewDO.getProjectChildId()),
Math.toIntExact(reviewDO.getProjectModuleId()),
Long.valueOf(reviewDO.getSenderId()),
Long.valueOf(reviewUpdateResultVO.getResult()),
request);
//更新数据
reviewDAO.updateReview(reviewDO);
@ -257,20 +286,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 +311,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 +346,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 +391,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,51 +415,59 @@ 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)) {
//查询每个项目下所有的审核信息
List<ReviewDO> reviewDOS = reviewDAO.
selectApprovedResultReviewFromProject(projectDO.getId(),
result);
//封装VO类
reviewData.addAll(reviewDOS);
//先从用户为 项目负责人 的项目中获取对应 审核信息
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);
}
// 获取自己的审核记录
List<ReviewDO> myReviewDO = reviewDAO.getReviewByUserAndResult(userId, result);
reviewData.addAll(myReviewDO);
}
//在从用户为 子系统负责人 的项目中获取对应 审核信息
for (ProjectChildDO projectChildDO : projectDAO.getAllProjectChildByUId(userId)) {
//查询每个项目下状态为2的审核信息
List<ReviewDO> reviewDOS = reviewDAO.
selectApprovedResultReviewsFromSubsystem(projectChildDO.getId(),
result);
//封装VO类
reviewData.addAll(reviewDOS);
// 如果审核结果为空获取全部
if (result == null) {
//获取用户管理项目下的所有审核数据
reviewData.addAll(getAllReviewFromProject(userId));
//获取用户自己的所有审核数据
reviewData.addAll(reviewDAO.getReviewByUser(userId));
}
//在从用户为 子模块负责人 的项目中获取对应 审核信息
for (ProjectModuleDO projectModuleDO : projectDAO.getAllModuleByUId(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> reviewDOS = reviewDAO.
selectApprovedResultReviewsFromSubModule(projectModuleDO.getId(),
result);
//封装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))
@ -447,7 +475,6 @@ public class ReviewServiceImpl implements ReviewService {
.stream()
.collect(Collectors.toList());
//按照申请时间降序排序
Collections.sort(reviewData, new Comparator<ReviewDO>() {
@Override
@ -460,6 +487,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 +512,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,55 @@
<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>

View File

@ -22,24 +22,21 @@
<if test="cycle != null and cycle != ''">
cycle = #{cycle},
</if>
<if test="file != null and file != ''">
file = #{file},
<if test="files != null and files != ''">
files = #{files},
</if>
<if test="beginTime != null and beginTime != ''">
<if test="beginTime != null ">
begin_time = #{beginTime},
</if>
<if test="completeTime != null and completeTime != ''">
<if test="completeTime != null ">
complete_time = #{completeTime},
</if>
<if test="deadline != null and deadline != ''">
<if test="deadline != null ">
deadline = #{deadline},
</if>
<if test="status != null">
status = #{status},
</if>
<if test="isFinish != null">
is_finish = #{isFinish},
</if>
<if test="isDelete != null">
is_delete = #{isDelete},
</if>
@ -47,6 +44,28 @@
where id = #{id}
</update>
<update id="projectChildEdit">
update organize_oa.oa_project_child
<set>
<if test="principalId != null and principalId != ''">
principal_id = #{principalId},
</if>
</set>
where id = #{id}
</update>
<update id="projectModuleUpdate">
update organize_oa.oa_project_modules
<set>
<if test="principalId != null">
principal_id = #{principalId},
</if>
</set>
where id = #{id}
</update>
<update id="deleteProjectChild">
update organize_oa.oa_project_child set is_delete=true where id=#{id1}
</update>
@ -55,6 +74,69 @@
update organize_oa.oa_project_modules set is_delete=true where id=#{id1}
</update>
<update id="projectModuleEdit">
update organize_oa.oa_project_modules
<set>
<if test="name != null and name != ''">
name = #{name},
</if>
<if test="description != null and description != ''">
description = #{description},
</if>
<if test="principalId != null and principalId != ''">
principal_id = #{principalId},
</if>
<if test="workLoad != null and workLoad != ''">
work_load = #{workLoad},
</if>
<if test="cycle != null and cycle != ''">
cycle = #{cycle},
</if>
<if test="completeTime != null ">
complete_time = #{completeTime},
</if>
<if test="deadLine != null ">
dead_line = #{deadLine},
</if>
<if test="status != null">
status = #{status},
</if>
updated_at = CURRENT_TIMESTAMP
</set>
where id = #{id}
</update>
<update id="projectChildEditAll">
update organize_oa.oa_project_child
<set>
<if test="name != null and name != ''">
name = #{name},
</if>
<if test="description != null and description != ''">
description = #{description},
</if>
<if test="principalId != null and principalId != ''">
principal_id = #{principalId},
</if>
<if test="workLoad != null and workLoad != ''">
work_load = #{workLoad},
</if>
<if test="cycle != null and cycle != ''">
cycle = #{cycle},
</if>
<if test="completeTime != null ">
complete_time = #{completeTime},
</if>
<if test="deadLine != null ">
dead_line = #{deadLine},
</if>
<if test="status != null">
status = #{status},
</if>
updated_at = CURRENT_TIMESTAMP
</set>
where id = #{id}
</update>
<select id="getByTags" resultType="com.jsl.oa.model.dodata.ProjectDO">
<if test="tags != null">
select * from organize_oa.oa_project where is_delete=false and principal_id=#{userId} and