Compare commits
16 Commits
725f5f7fee
...
4a0624e0a5
Author | SHA1 | Date | |
---|---|---|---|
4a0624e0a5 | |||
3527c250d4 | |||
b9aa1b25cc | |||
acb3fab074 | |||
3383fef3f0 | |||
04a5eae117 | |||
f076baeccf | |||
e61b478225 | |||
|
7d958bfa69 | ||
|
5c33818e3d | ||
|
84b2ab983a | ||
|
f491d9a97f | ||
|
0d05ea08fb | ||
|
9c4cb174eb | ||
|
121b87c683 | ||
|
71bd92d18e |
|
@ -23,16 +23,22 @@ public class PermissionList {
|
|||
permissionList.add(new PermissionVO("info:get_header_image", "获取头部图片"));
|
||||
permissionList.add(new PermissionVO("info:edit_header_image", "编辑头部图片"));
|
||||
permissionList.add(new PermissionVO("info:delete_header_image", "删除头部图片"));
|
||||
permissionPrincipal.add(new PermissionVO("project:child:add", "增加子系统"));
|
||||
permissionPrincipal.add(new PermissionVO("project:module:add", "增加子模块"));
|
||||
|
||||
permissionPrincipal.add(new PermissionVO("auth:change_password", "修改密码"));
|
||||
permissionPrincipal.add(new PermissionVO("info:get_header_image", "获取头部图片"));
|
||||
permissionPrincipal.add(new PermissionVO("info:edit_header_image", "编辑头部图片"));
|
||||
permissionPrincipal.add(new PermissionVO("info:delete_header_image", "删除头部图片"));
|
||||
permissionPrincipal.add(new PermissionVO("project:add", "增加项目"));
|
||||
permissionPrincipal.add(new PermissionVO("project:child:add", "增加子系统"));
|
||||
permissionPrincipal.add(new PermissionVO("project:module:add", "增加子模块"));
|
||||
|
||||
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", "删除头部图片"));
|
||||
permissionPrincipal.add(new PermissionVO("project:child:add", "增加子系统"));
|
||||
permissionPrincipal.add(new PermissionVO("project:module:add", "增加子模块"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,8 @@ package com.jsl.oa.controllers;
|
|||
import com.jsl.oa.annotations.NeedPermission;
|
||||
import com.jsl.oa.model.vodata.ProjectEditVO;
|
||||
import com.jsl.oa.model.vodata.ProjectInfoVO;
|
||||
import com.jsl.oa.model.vodata.ProjectWorkVO;
|
||||
import com.jsl.oa.model.vodata.ProjectChildAddVO;
|
||||
import com.jsl.oa.model.vodata.ProjectModuleAddVO;
|
||||
import com.jsl.oa.model.vodata.business.info.ProjectShowVO;
|
||||
import com.jsl.oa.services.ProjectService;
|
||||
import com.jsl.oa.utils.BaseResponse;
|
||||
|
@ -217,25 +218,47 @@ public BaseResponse projectParticipateGet(
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* 增加子模块
|
||||
*
|
||||
* @param projectModuleAddVO
|
||||
* @param bindingResult
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/project/module/add")
|
||||
@NeedPermission("project:module:add")
|
||||
public BaseResponse projectModuleAdd(
|
||||
@RequestBody @Validated ProjectModuleAddVO projectModuleAddVO,
|
||||
@NotNull BindingResult bindingResult,
|
||||
HttpServletRequest request
|
||||
) {
|
||||
// 判断是否有参数错误
|
||||
if (bindingResult.hasErrors()) {
|
||||
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult));
|
||||
}
|
||||
return projectService.projectModuleAdd(request, projectModuleAddVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 子系统子模块的增加
|
||||
* 子系统的增加
|
||||
*
|
||||
* @param request 请求
|
||||
* @param bindingResult 参数校验
|
||||
* @return {@link BaseResponse}
|
||||
*/
|
||||
@PostMapping("/project/work/add")
|
||||
public BaseResponse projectWorkAdd(
|
||||
@PostMapping("/project/child/add")
|
||||
@NeedPermission("project:child:add")
|
||||
public BaseResponse projectChildAdd(
|
||||
HttpServletRequest request,
|
||||
@RequestBody @Validated ProjectWorkVO projectWorkVO,
|
||||
@RequestBody @Validated ProjectChildAddVO projectChildAddVO,
|
||||
@NotNull BindingResult bindingResult
|
||||
) {
|
||||
// 判断是否有参数错误
|
||||
if (bindingResult.hasErrors()) {
|
||||
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult));
|
||||
}
|
||||
return projectService.projectWorkAdd(request, projectWorkVO);
|
||||
return projectService.projectChildAdd(request, projectChildAddVO);
|
||||
}
|
||||
|
||||
|
||||
|
@ -262,6 +285,9 @@ public BaseResponse projectParticipateGet(
|
|||
return projectService.projectAdd(request, projectInfoVO);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取负责人id
|
||||
*
|
||||
|
@ -323,7 +349,13 @@ public BaseResponse projectParticipateGet(
|
|||
return projectService.projectModuleDelete(request, id);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 项目名模糊查询项目
|
||||
*
|
||||
* @param name
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/project/get/name")
|
||||
public BaseResponse projectGetName(
|
||||
@RequestParam String name,
|
||||
|
@ -332,4 +364,28 @@ public BaseResponse projectParticipateGet(
|
|||
return projectService.projectGetName(name, request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 项目名查询子系统
|
||||
*
|
||||
* @param name
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/project/child/get/name")
|
||||
public BaseResponse projectChildGetName(
|
||||
@RequestParam String name,
|
||||
HttpServletRequest request
|
||||
) {
|
||||
return projectService.projectChildGetName(name, request);
|
||||
}
|
||||
|
||||
@GetMapping("/project/module/get/name")
|
||||
public BaseResponse projectModuleGetName(
|
||||
@RequestParam String projectName,
|
||||
@RequestParam String childName,
|
||||
HttpServletRequest request
|
||||
) {
|
||||
return projectService.projectModuleGetName(projectName, childName, request);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
package com.jsl.oa.controllers;
|
||||
|
||||
|
||||
import com.jsl.oa.model.vodata.ProjectDailyAddVO;
|
||||
import com.jsl.oa.services.ProjectDailyService;
|
||||
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;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
|
||||
/**
|
||||
* 项目日报(ProjectDaily)表控制层
|
||||
*
|
||||
* @author zrx
|
||||
* @since 2024-04-18 11:40:52
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class ProjectDailyController {
|
||||
/**
|
||||
* 服务对象
|
||||
*/
|
||||
|
||||
private final ProjectDailyService projectDailyService;
|
||||
|
||||
/**
|
||||
* 新增日报
|
||||
*
|
||||
* @param projectDailyAddVO 日报添加实体
|
||||
* @return 新增结果
|
||||
*/
|
||||
@PostMapping("/daily/add")
|
||||
public BaseResponse add(@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);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/daily/getMyDaily")
|
||||
public BaseResponse getMyDaily(HttpServletRequest request) {
|
||||
return projectDailyService.getMyDaily(request);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -7,7 +7,7 @@ import com.jsl.oa.model.dodata.ProjectModuleDO;
|
|||
import com.jsl.oa.model.dodata.info.ProjectShowDO;
|
||||
import com.jsl.oa.model.vodata.ProjectEditVO;
|
||||
import com.jsl.oa.model.vodata.ProjectInfoVO;
|
||||
import com.jsl.oa.model.vodata.ProjectWorkVO;
|
||||
import com.jsl.oa.model.vodata.ProjectChildAddVO;
|
||||
import com.jsl.oa.utils.Processing;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -35,10 +35,10 @@ public class ProjectDAO {
|
|||
projectMapper.projectAdd(projectAdd);
|
||||
}
|
||||
|
||||
public void projectWorkAdd(ProjectWorkVO projectWorkVO) {
|
||||
public void projectWorkAdd(ProjectChildAddVO projectChildAddVO) {
|
||||
log.info("\t> 执行 DAO 层 ProjectDAO.projectWorkAdd 方法");
|
||||
log.info("\t\t> 从 MySQL 获取数据");
|
||||
projectMapper.projectWorkAdd(projectWorkVO);
|
||||
projectMapper.projectWorkAdd(projectChildAddVO);
|
||||
}
|
||||
|
||||
public ProjectDO projectEdit(@NotNull ProjectEditVO projectEdit, Long projectId) {
|
||||
|
|
77
src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java
Normal file
77
src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java
Normal file
|
@ -0,0 +1,77 @@
|
|||
package com.jsl.oa.dao;
|
||||
/*
|
||||
张睿相 Java
|
||||
*/
|
||||
|
||||
import com.jsl.oa.mapper.ProjectDailyMapper;
|
||||
import com.jsl.oa.mapper.ProjectMapper;
|
||||
import com.jsl.oa.model.dodata.ProjectDO;
|
||||
import com.jsl.oa.model.dodata.ProjectDailyDO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
* ProjectDailyDAO
|
||||
* <hr/>
|
||||
* 用于处理日报相关的请求, 包括获取日报、添加日报信息、编辑日报信息等
|
||||
*
|
||||
* @author zrx_hhh
|
||||
* @version v1.0.0
|
||||
* @since v1.0.0-SNAPSHOT
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class ProjectDailyDAO {
|
||||
|
||||
private final ProjectDailyMapper projectDailyMapper;
|
||||
private final ProjectMapper projectMapper;
|
||||
|
||||
|
||||
public void addProjectDaily(ProjectDailyDO projectDailyDO) {
|
||||
projectDailyMapper.insert(projectDailyDO);
|
||||
}
|
||||
|
||||
|
||||
public List<ProjectDailyDO> getMyProjectDaily(Long userId) {
|
||||
|
||||
// 日报数据数组
|
||||
List<ProjectDailyDO> projectDailyDOList = new ArrayList<>();
|
||||
|
||||
// 先获取我负责的项目下的日报数据
|
||||
//获取我负责的项目
|
||||
List<ProjectDO> projectDOS = projectMapper.getAllProjectByUserId(userId);
|
||||
//获取项目下对应日报
|
||||
for (ProjectDO projectDO:projectDOS) {
|
||||
List dailyFromProject = projectDailyMapper.getProjectDailyByProject(projectDO.getId());
|
||||
projectDailyDOList.addAll(dailyFromProject);
|
||||
}
|
||||
|
||||
// 在获取本人的发布日报
|
||||
List<ProjectDailyDO> myProjectDaily = projectDailyMapper.getProjectDailyByUser(userId);
|
||||
projectDailyDOList.addAll(myProjectDaily);
|
||||
|
||||
// 去除重复的日报信息
|
||||
projectDailyDOList = projectDailyDOList.stream()
|
||||
// 根据 id 属性进行去重
|
||||
.collect(Collectors.toMap(ProjectDailyDO::getId,
|
||||
Function.identity(), (existing, replacement) -> existing))
|
||||
.values().stream()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return projectDailyDOList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -58,6 +58,11 @@ public class ReviewDAO {
|
|||
result);
|
||||
}
|
||||
|
||||
public List<ReviewDO> getReviewByUser(Long uid) {
|
||||
return reviewMapper.selectReviewByUser(uid);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void addReview(ReviewDO reviewDO) {
|
||||
reviewMapper.addReview(reviewDO);
|
||||
|
|
29
src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java
Normal file
29
src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java
Normal file
|
@ -0,0 +1,29 @@
|
|||
package com.jsl.oa.mapper;
|
||||
|
||||
|
||||
import com.jsl.oa.model.dodata.ProjectDailyDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 项目日报(ProjectDaily)表数据库访问层
|
||||
*
|
||||
* @author zrx
|
||||
* @since 2024-04-18 11:40:56
|
||||
*/
|
||||
@Mapper
|
||||
public interface ProjectDailyMapper {
|
||||
|
||||
|
||||
void insert(ProjectDailyDO projectDailyDO);
|
||||
|
||||
List<ProjectDailyDO> getProjectDailyByUser(Long uid);
|
||||
|
||||
List<ProjectDailyDO> getProjectDailyByProject(Long pid);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -3,8 +3,9 @@ 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.vodata.ProjectInfoVO;
|
||||
import com.jsl.oa.model.vodata.ProjectModuleAddVO;
|
||||
import com.jsl.oa.model.vodata.ProjectWorkSimpleVO;
|
||||
import com.jsl.oa.model.vodata.ProjectWorkVO;
|
||||
import com.jsl.oa.model.vodata.ProjectChildAddVO;
|
||||
import org.apache.ibatis.annotations.Insert;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
@ -23,11 +24,17 @@ public interface ProjectMapper {
|
|||
+ ",#{completeTime},#{deadLine},#{status},#{tags},#{workLoad})")
|
||||
void projectAdd(ProjectInfoVO projectAdd);
|
||||
|
||||
@Insert("insert into organize_oa.oa_project_work (project_id, pid, name, principal_id,"
|
||||
+ " work_load, description, cycle, complete_time, type, is_finish,status) "
|
||||
+ "value (#{projectId},#{pid},#{name},#{principalId},#{workLoad},"
|
||||
+ "#{description},#{cycle},#{completeTime},#{type},#{isFinish},#{status})")
|
||||
void projectWorkAdd(ProjectWorkVO projectWorkVO);
|
||||
@Insert("insert into organize_oa.oa_project_child (project_id,name, principal_id,"
|
||||
+ " work_load, description, cycle,status,dead_line) "
|
||||
+ "value (#{projectId},#{name},#{principalId},#{workLoad},"
|
||||
+ "#{description},#{cycle},#{status},#{deadLine})")
|
||||
void projectWorkAdd(ProjectChildAddVO projectChildAddVO);
|
||||
|
||||
@Insert("insert into organize_oa.oa_project_modules (project_child_id, name, principal_id,"
|
||||
+ " work_load, description, status, dead_line) "
|
||||
+ "value (#{projectChildId},#{name},#{principalId},#{workLoad},"
|
||||
+ "#{description},#{status},#{deadLine})")
|
||||
void projectModuleAdd(ProjectModuleAddVO projectModuleAddVO);
|
||||
|
||||
void projectEdit(ProjectDO projectEdit);
|
||||
|
||||
|
@ -150,4 +157,14 @@ public interface ProjectMapper {
|
|||
|
||||
@Select("select * from organize_oa.oa_project where name like CONCAT('%',#{name},'%')")
|
||||
List<ProjectDO> getByLikeName(String name);
|
||||
|
||||
|
||||
@Select("select * from organize_oa.oa_project_child where project_id = "
|
||||
+ "(select id from organize_oa.oa_project where name =#{name})")
|
||||
List<ProjectChildDO> getChildByLikeName(String name);
|
||||
|
||||
@Select("select * from organize_oa.oa_project_modules where project_child_id = "
|
||||
+ "(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);
|
||||
}
|
||||
|
|
|
@ -43,4 +43,8 @@ public interface ReviewMapper {
|
|||
|
||||
@Select("SELECT * FROM organize_oa.oa_review WHERE name = #{name} AND is_delete = 0")
|
||||
List<ReviewDO> selectReviewByName(String name);
|
||||
|
||||
@Select("SELECT * FROM organize_oa.oa_review WHERE sender_id = #{uid} AND "
|
||||
+ "is_delete = 0")
|
||||
List<ReviewDO> selectReviewByUser(Long uid);
|
||||
}
|
||||
|
|
55
src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java
Normal file
55
src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java
Normal file
|
@ -0,0 +1,55 @@
|
|||
package com.jsl.oa.model.dodata;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 项目日报(ProjectDaily)实体类
|
||||
*
|
||||
* @author zrx
|
||||
* @since 2024-04-18 11:40:56
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ProjectDailyDO {
|
||||
|
||||
/**
|
||||
* 日报主键 自增
|
||||
*/
|
||||
private Long id;
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Long userId;
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
private Long projectId;
|
||||
/**
|
||||
* 日报内容
|
||||
*/
|
||||
private String content;
|
||||
/**
|
||||
* 日志发布时间
|
||||
*/
|
||||
private Date dailyTime;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private Integer isDelete;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2,13 +2,17 @@ package com.jsl.oa.model.vodata;
|
|||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class PermissionContentVO {
|
||||
// 主键
|
||||
|
||||
private Long id;
|
||||
// 权限名称
|
||||
private String name;
|
||||
// 权限描述
|
||||
private String description;
|
||||
private String code;
|
||||
private Short type;
|
||||
private List<PermissionContentVO> children;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -6,24 +6,21 @@ import javax.validation.constraints.NotNull;
|
|||
import java.sql.Timestamp;
|
||||
|
||||
@Data
|
||||
public class ProjectWorkVO {
|
||||
public class ProjectChildAddVO {
|
||||
|
||||
private Long pid;
|
||||
@NotNull(message = "项目id不能为空")
|
||||
private Long projectId;
|
||||
private Long principalId;
|
||||
@NotNull(message = "周期不能为空")
|
||||
private Integer cycle;
|
||||
@NotNull(message = "工作量不能为空")
|
||||
private Integer workLoad;
|
||||
@NotNull(message = "类型不能为空")
|
||||
private Integer type;
|
||||
@NotNull(message = "名字不能为空")
|
||||
private String name;
|
||||
private String description;
|
||||
private Integer isDelete;
|
||||
private Integer isFinish;
|
||||
private Integer status;
|
||||
private Timestamp beginTime;
|
||||
private Timestamp completeTime;
|
||||
private String status;
|
||||
@NotNull(message = "截止时间不能为空")
|
||||
private Timestamp deadLine;
|
||||
|
||||
}
|
||||
|
21
src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java
Normal file
21
src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java
Normal file
|
@ -0,0 +1,21 @@
|
|||
package com.jsl.oa.model.vodata;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
|
||||
@Data
|
||||
public class ProjectDailyAddVO {
|
||||
|
||||
@NotNull(message = "项目id不能为空")
|
||||
private Long projectId;
|
||||
|
||||
@NotBlank(message = "日报内容不能为空")
|
||||
private String content;
|
||||
|
||||
}
|
||||
|
||||
|
16
src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java
Normal file
16
src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java
Normal file
|
@ -0,0 +1,16 @@
|
|||
package com.jsl.oa.model.vodata;
|
||||
/*
|
||||
张睿相 Java
|
||||
*/
|
||||
|
||||
/**
|
||||
* 总体描述
|
||||
* <p>创建时间:2024/4/18 13:50</p>
|
||||
*
|
||||
* @author 张睿相
|
||||
* @since v1.0
|
||||
*/
|
||||
public class ProjectDailyVO {
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package com.jsl.oa.model.vodata;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.sql.Timestamp;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ProjectModuleAddVO {
|
||||
@NotNull(message = "子系统id不能为空")
|
||||
private Long projectChildId;
|
||||
private Long principalId;
|
||||
@NotNull(message = "工作量不能为空")
|
||||
private Integer workLoad;
|
||||
@NotNull(message = "名字不能为空")
|
||||
private String name;
|
||||
private String description;
|
||||
private String status;
|
||||
@NotNull(message = "截止时间不能为空")
|
||||
private Timestamp deadLine;
|
||||
}
|
|
@ -1,17 +1,16 @@
|
|||
package com.jsl.oa.model.vodata;
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
|
||||
|
||||
/**
|
||||
* 模糊查询返回,系统/项目/模块 名字和id
|
||||
|
|
|
@ -8,7 +8,11 @@ import java.util.List;
|
|||
@Data
|
||||
public class ReviewDataVO {
|
||||
|
||||
private Integer dataTotal;
|
||||
private Integer totalCount;
|
||||
|
||||
private Integer currentPage;
|
||||
|
||||
private Integer pageSize;
|
||||
|
||||
private List<ReviewVO> reviews;
|
||||
}
|
||||
|
|
26
src/main/java/com/jsl/oa/services/ProjectDailyService.java
Normal file
26
src/main/java/com/jsl/oa/services/ProjectDailyService.java
Normal file
|
@ -0,0 +1,26 @@
|
|||
package com.jsl.oa.services;
|
||||
|
||||
|
||||
|
||||
import com.jsl.oa.model.vodata.ProjectDailyAddVO;
|
||||
import com.jsl.oa.utils.BaseResponse;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 项目日报(ProjectDaily)表服务接口
|
||||
*
|
||||
* @author zrx
|
||||
* @since 2024-04-18 11:40:53
|
||||
*/
|
||||
public interface ProjectDailyService {
|
||||
|
||||
|
||||
BaseResponse addDaily(ProjectDailyAddVO projectDailyAddVO, HttpServletRequest request);
|
||||
|
||||
BaseResponse getMyDaily(HttpServletRequest request);
|
||||
}
|
||||
|
||||
|
|
@ -2,7 +2,8 @@ package com.jsl.oa.services;
|
|||
|
||||
import com.jsl.oa.model.vodata.ProjectEditVO;
|
||||
import com.jsl.oa.model.vodata.ProjectInfoVO;
|
||||
import com.jsl.oa.model.vodata.ProjectWorkVO;
|
||||
import com.jsl.oa.model.vodata.ProjectChildAddVO;
|
||||
import com.jsl.oa.model.vodata.ProjectModuleAddVO;
|
||||
import com.jsl.oa.model.vodata.business.info.ProjectShowVO;
|
||||
import com.jsl.oa.utils.BaseResponse;
|
||||
|
||||
|
@ -35,7 +36,7 @@ public interface ProjectService {
|
|||
Integer page,
|
||||
Integer pageSize);
|
||||
|
||||
BaseResponse projectWorkAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO);
|
||||
BaseResponse projectChildAdd(HttpServletRequest request, ProjectChildAddVO projectChildAddVO);
|
||||
|
||||
BaseResponse tGet(List<String> tags, List<String> isFinish, Integer page, Integer pageSize);
|
||||
|
||||
|
@ -69,4 +70,10 @@ public interface ProjectService {
|
|||
BaseResponse projectModuleDelete(HttpServletRequest request, List<Long> id);
|
||||
|
||||
BaseResponse projectGetName(String name, HttpServletRequest request);
|
||||
|
||||
BaseResponse projectModuleAdd(HttpServletRequest request, ProjectModuleAddVO projectModuleAddVO);
|
||||
|
||||
BaseResponse projectChildGetName(String name, HttpServletRequest request);
|
||||
|
||||
BaseResponse projectModuleGetName(String projectName, String childName, HttpServletRequest request);
|
||||
}
|
||||
|
|
|
@ -70,6 +70,7 @@ public class MessageServiceImpl implements MessageService {
|
|||
}
|
||||
PageHelper.startPage(page, pageSize);
|
||||
List<MessageDO> messageDOList = messageMapper.page(beginTime, endTime, uid);
|
||||
|
||||
//封装返回数据
|
||||
List<MessageGetVO> messageGetVOList = new ArrayList<>();
|
||||
for (MessageDO messageDO : messageDOList) {
|
||||
|
@ -89,9 +90,9 @@ public class MessageServiceImpl implements MessageService {
|
|||
}
|
||||
messageGetVOList.add(messageGetVO1);
|
||||
}
|
||||
|
||||
//分页返回
|
||||
PageInfo<MessageGetVO> pageInfo = new PageInfo<>(messageGetVOList);
|
||||
pageInfo.setTotal(messageMapper.page(beginTime, endTime, uid).size());
|
||||
return ResultUtil.success(pageInfo);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
package com.jsl.oa.services.impl;
|
||||
/*
|
||||
张睿相 Java
|
||||
*/
|
||||
|
||||
import com.jsl.oa.dao.ProjectDAO;
|
||||
import com.jsl.oa.dao.ProjectDailyDAO;
|
||||
import com.jsl.oa.exception.BusinessException;
|
||||
import com.jsl.oa.model.dodata.ProjectDailyDO;
|
||||
import com.jsl.oa.model.vodata.ProjectDailyAddVO;
|
||||
import com.jsl.oa.services.ProjectDailyService;
|
||||
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;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <h1>日志服务层实现类</h1>
|
||||
* <hr/>
|
||||
* 用于日志服务层的实现类
|
||||
*
|
||||
* @author xiao_lfeng | 176yunxuan | xiangZr-hhh
|
||||
* @version v1.1.0
|
||||
* @see com.jsl.oa.services.ProjectService
|
||||
* @since v1.1.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class ProjectDailyServiceImpl implements ProjectDailyService {
|
||||
|
||||
private final ProjectDAO projectDAO;
|
||||
|
||||
private final ProjectDailyDAO projectDailyDAO;
|
||||
|
||||
|
||||
@Override
|
||||
public BaseResponse addDaily(ProjectDailyAddVO projectDailyAddVO, HttpServletRequest request) {
|
||||
|
||||
// 获取用户id
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
// 从请求体中获取项目id
|
||||
Long projectId = projectDailyAddVO.getProjectId();
|
||||
// 检查项目是否存在
|
||||
if (!projectDAO.isExistProjectById(projectId)) {
|
||||
throw new BusinessException(ErrorCode.PROJECT_NOT_EXIST);
|
||||
}
|
||||
|
||||
// 赋值数据库表实体类相关属性
|
||||
ProjectDailyDO projectDailyDO = new ProjectDailyDO();
|
||||
Processing.copyProperties(projectDailyAddVO, projectDailyDO);
|
||||
projectDailyDO.setUserId(userId)
|
||||
.setDailyTime(new Date());
|
||||
|
||||
// 向数据库添加数据
|
||||
projectDailyDAO.addProjectDaily(projectDailyDO);
|
||||
|
||||
return ResultUtil.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse getMyDaily(HttpServletRequest request) {
|
||||
|
||||
// 获取用户id
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
// 获取 我发布的及自己负责的项目下 的日报
|
||||
List<ProjectDailyDO> projectDailyDOList =
|
||||
projectDailyDAO.getMyProjectDaily(userId);
|
||||
|
||||
return ResultUtil.success(projectDailyDOList);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -12,6 +12,7 @@ import com.jsl.oa.dao.RoleDAO;
|
|||
import com.jsl.oa.dao.UserDAO;
|
||||
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.UserDO;
|
||||
|
@ -88,26 +89,19 @@ public class ProjectServiceImpl implements ProjectService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse projectWorkAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO) {
|
||||
//获取用户id
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
//是否是增加子系统
|
||||
if (projectWorkVO.getType() == 0) {
|
||||
//是否是老师
|
||||
if (Processing.checkUserIsPrincipal(request, roleDAO)) {
|
||||
projectDAO.projectWorkAdd(projectWorkVO);
|
||||
} else {
|
||||
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
|
||||
}
|
||||
} else {
|
||||
//是否是子系统的负责人
|
||||
if (Objects.equals(userId, projectMapper.getPirIdbyId(projectWorkVO.getPid()))) {
|
||||
projectDAO.projectWorkAdd(projectWorkVO);
|
||||
} else {
|
||||
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
|
||||
}
|
||||
}
|
||||
public BaseResponse projectChildAdd(HttpServletRequest request, ProjectChildAddVO projectChildAddVO) {
|
||||
|
||||
//是否是项目负责人
|
||||
if (projectMapper.getProjectById(projectChildAddVO.getProjectId()).getPrincipalId()
|
||||
.equals(Processing.getAuthHeaderToUserId(request))
|
||||
) {
|
||||
HashMap<String, Object> descriptionMap = new HashMap<>();
|
||||
descriptionMap.put("description", projectChildAddVO.getDescription());
|
||||
projectChildAddVO.setDescription(gson.toJson(descriptionMap));
|
||||
projectDAO.projectWorkAdd(projectChildAddVO);
|
||||
} else {
|
||||
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
|
||||
}
|
||||
return ResultUtil.success("添加成功");
|
||||
}
|
||||
|
||||
|
@ -183,6 +177,7 @@ public class ProjectServiceImpl implements ProjectService {
|
|||
}
|
||||
//分页返回
|
||||
PageInfo<ProjectSimpleVO> pageInfo = new PageInfo<>(projectSimpleVOList);
|
||||
pageInfo.setTotal(projectDAO.get(userId, null, null).size());
|
||||
return ResultUtil.success(pageInfo);
|
||||
}
|
||||
|
||||
|
@ -202,6 +197,7 @@ public class ProjectServiceImpl implements ProjectService {
|
|||
}
|
||||
//分页返回
|
||||
PageInfo<ProjectSimpleVO> pageInfo = new PageInfo<>(projectSimpleVOList);
|
||||
pageInfo.setTotal(projectMapper.getParticipateProject(userId).size());
|
||||
return ResultUtil.success(pageInfo);
|
||||
}
|
||||
|
||||
|
@ -251,6 +247,49 @@ public class ProjectServiceImpl implements ProjectService {
|
|||
return ResultUtil.success(returnGetVOList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse projectModuleAdd(HttpServletRequest request, ProjectModuleAddVO projectModuleAddVO) {
|
||||
//判断是否是子系统负责人或项目负责人
|
||||
if (!Objects.equals(Processing.getAuthHeaderToUserId(request),
|
||||
projectMapper.getProjectChildById(projectModuleAddVO.getProjectChildId().intValue()).getPrincipalId())
|
||||
// 项目负责人
|
||||
&& !Objects.equals(Processing.getAuthHeaderToUserId(request),
|
||||
projectMapper.getPirIdbyId(projectModuleAddVO.getProjectChildId()))) {
|
||||
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
|
||||
} else {
|
||||
HashMap<String, Object> descriptionMap = new HashMap<>();
|
||||
descriptionMap.put("description", projectModuleAddVO.getDescription());
|
||||
projectModuleAddVO.setDescription(gson.toJson(descriptionMap));
|
||||
projectMapper.projectModuleAdd(projectModuleAddVO);
|
||||
}
|
||||
return ResultUtil.success("添加成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse projectChildGetName(String name, HttpServletRequest request) {
|
||||
|
||||
List<ProjectChildDO> projectChildDOList = projectMapper.getChildByLikeName(name);
|
||||
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);
|
||||
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 getModuleById(Integer id) {
|
||||
ProjectModuleDO projectWorkSimpleVO = projectMapper.getModuleById(id);
|
||||
|
@ -426,6 +465,7 @@ public class ProjectServiceImpl implements ProjectService {
|
|||
}
|
||||
//分页返回
|
||||
PageInfo<ProjectSimpleVO> pageInfo = new PageInfo<>(projectSimpleVOList);
|
||||
pageInfo.setTotal(projectDAO.workget(userId, tags, isFinish, is).size());
|
||||
return ResultUtil.success(pageInfo);
|
||||
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ 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.exception.BusinessException;
|
||||
import com.jsl.oa.mapper.ProjectMapper;
|
||||
import com.jsl.oa.mapper.UserMapper;
|
||||
import com.jsl.oa.model.dodata.ProjectChildDO;
|
||||
|
@ -155,6 +156,11 @@ public class ReviewServiceImpl implements ReviewService {
|
|||
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))
|
||||
|
@ -186,6 +192,24 @@ public class ReviewServiceImpl implements ReviewService {
|
|||
//获取用户
|
||||
Long userId = Processing.getAuthHeaderToUserId(request);
|
||||
|
||||
//检查对应项目,子系统,子模块是否存在
|
||||
if (!projectDAO.isExistProjectById(reviewAddVO.getProjectId())) {
|
||||
throw new BusinessException(ErrorCode.PROJECT_NOT_EXIST);
|
||||
}
|
||||
|
||||
if (projectMapper.getProjectChildById(
|
||||
Math.toIntExact(reviewAddVO.getProjectChildId())) != null) {
|
||||
throw new BusinessException(ErrorCode.PROJECT_CHILD_NOT_EXIST);
|
||||
}
|
||||
|
||||
// 子模块id不为空时查询,否则直接跳过
|
||||
if (reviewAddVO.getProjectModuleId() != null) {
|
||||
if (projectMapper.getModuleById(
|
||||
Math.toIntExact(reviewAddVO.getProjectModuleId())) != null) {
|
||||
throw new BusinessException(ErrorCode.MODULE_NOT_EXIST);
|
||||
}
|
||||
}
|
||||
|
||||
//定义要添加的审核实体类
|
||||
ReviewDO reviewDO = new ReviewDO();
|
||||
//现将属性相同的值拷贝
|
||||
|
@ -232,7 +256,6 @@ public class ReviewServiceImpl implements ReviewService {
|
|||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public BaseResponse searchReview(String content,
|
||||
Short statue,
|
||||
|
@ -414,6 +437,9 @@ public class ReviewServiceImpl implements ReviewService {
|
|||
reviewData.addAll(reviewDOS);
|
||||
}
|
||||
|
||||
// 获取自己的审核记录
|
||||
List<ReviewDO> myReviewDO = reviewDAO.getReviewByUser(userId);
|
||||
reviewData.addAll(myReviewDO);
|
||||
|
||||
//根据id进行去重
|
||||
reviewData = reviewData.stream()
|
||||
|
@ -443,7 +469,9 @@ public class ReviewServiceImpl implements ReviewService {
|
|||
List<ReviewVO> reviewsOnPage = allReviews.subList(startIndex, endIndex);
|
||||
|
||||
reviewDataVO.setReviews(reviewsOnPage);
|
||||
reviewDataVO.setDataTotal(total);
|
||||
reviewDataVO.setTotalCount(allReviews.size());
|
||||
reviewDataVO.setPageSize(pageSize);
|
||||
reviewDataVO.setCurrentPage(page);
|
||||
|
||||
return reviewDataVO;
|
||||
}
|
||||
|
|
|
@ -53,6 +53,8 @@ public enum ErrorCode {
|
|||
PROJECT_USER_NOT_EXIST("ProjectUserNotExist", 40018, "用户项目表无对应记录"),
|
||||
PROJECT_FILE_JSON_ERROR("ProjectFileJsonError", 40019, "项目文件json格式错误"),
|
||||
PROJECT_NOT_USER("ProjectNotUser", 40020, "项目无此用户"),
|
||||
PROJECT_CHILD_NOT_EXIST("ProjectChildNotExist", 40021, "子系统不存在"),
|
||||
MODULE_NOT_EXIST("ModuleNotExist", 40022, "模块不存在"),
|
||||
REVIEW_NOT_EXIST("ReviewNotExit", 40101, "未找到对应审核信息");
|
||||
|
||||
|
||||
|
|
41
src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml
Normal file
41
src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?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.ProjectDailyMapper">
|
||||
|
||||
<!-- 插入方法的 SQL 语句 -->
|
||||
<insert id="insert" parameterType="com.jsl.oa.model.dodata.ProjectDailyDO">
|
||||
insert into oa_project_daily
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="userId != null">user_id,</if>
|
||||
<if test="projectId != null">project_id,</if>
|
||||
<if test="content != null">content,</if>
|
||||
<if test="dailyTime != null">daily_time,</if>
|
||||
created_at
|
||||
</trim>
|
||||
values
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="userId != null">#{userId},</if>
|
||||
<if test="projectId != null">#{projectId},</if>
|
||||
<if test="content != null">#{content},</if>
|
||||
<if test="dailyTime != null">#{dailyTime},</if>
|
||||
NOW()
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<select id="getProjectDailyByUser" parameterType="java.lang.Long"
|
||||
resultType="com.jsl.oa.model.dodata.ProjectDailyDO">
|
||||
select * from oa_project_daily where user_id = #{uid}
|
||||
and is_delete = 0
|
||||
</select>
|
||||
|
||||
<select id="getProjectDailyByProject" parameterType="java.lang.Integer"
|
||||
resultType="com.jsl.oa.model.dodata.ProjectDailyDO">
|
||||
select * from oa_project_daily where user_id = #{pid}
|
||||
and is_delete = 0
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
|
@ -2,7 +2,7 @@ create table oa_project_child
|
|||
(
|
||||
id bigint unsigned auto_increment comment '项目id'
|
||||
primary key,
|
||||
project_id bigint unsigned not null comment '主要项目id',
|
||||
project_id bigint unsigned null comment '主要项目id',
|
||||
name varchar(100) not null comment '项目名称',
|
||||
principal_id bigint unsigned not null comment '项目负责人',
|
||||
description json null comment '项目描述(技术选择,描述)',
|
||||
|
@ -13,11 +13,8 @@ create table oa_project_child
|
|||
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||
updated_at timestamp null comment '更新时间',
|
||||
is_delete tinyint(1) default 0 not null comment '项目是否删除',
|
||||
dead_line timestamp not null comment '子系统的截止时间',
|
||||
status varchar(8) default 'progress' not null comment '系统状态(draft: 草稿,progress: 进行,pause: 暂停,abnormal: 异常,complete: 完成)',
|
||||
constraint oa_project_child_oa_user_id_fk
|
||||
foreign key (principal_id) references oa_user (id)
|
||||
on update cascade
|
||||
)
|
||||
comment '项目表';
|
||||
|
||||
|
|
|
@ -27,9 +27,4 @@ create table oa_review
|
|||
create index oa_review_project_id_oa_project_id_fk
|
||||
on oa_review (project_id);
|
||||
|
||||
create index oa_review_project_project_submodule_id_oa_project_work_id_fk
|
||||
on oa_review (project_module_id);
|
||||
|
||||
create index oa_review_project_subsystem_id_oa_project_work_id_fk
|
||||
on oa_review (project_child_id);
|
||||
|
||||
|
|
|
@ -203,6 +203,44 @@ CREATE TABLE `oa_user`
|
|||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_0900_ai_ci COMMENT ='用户表';
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- 表的结构 `oa_review`
|
||||
--
|
||||
|
||||
|
||||
create table oa_review
|
||||
(
|
||||
id bigint unsigned auto_increment comment '主键'
|
||||
primary key,
|
||||
name varchar(255) not null comment '申请名称',
|
||||
content longtext not null comment '申请理由',
|
||||
sender_id bigint unsigned not null comment '申请者用户id',
|
||||
recipient_id bigint unsigned null comment '审核者用户id',
|
||||
category tinyint default 1 null comment '审核类别(0:子系统;1:子模块)',
|
||||
project_id bigint unsigned not null comment '申请的项目id',
|
||||
project_child_id bigint unsigned not null comment '申请的子系统id',
|
||||
project_module_id bigint unsigned null comment '申请的子模块id',
|
||||
application_time datetime default CURRENT_TIMESTAMP not null comment '申请时间',
|
||||
review_time datetime null comment '审核时间',
|
||||
review_result tinyint default 2 not null comment '审核结果(0:未通过;1:通过;2:未审批)',
|
||||
is_delete tinyint default 0 not null comment '是否删除(0:未删除;1:已删除)',
|
||||
created_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||
updated_time datetime null comment '更新时间',
|
||||
constraint oa_review_recipient_id_oa_user_id_fk
|
||||
foreign key (recipient_id) references oa_user (id)
|
||||
on update cascade on delete cascade,
|
||||
constraint oa_review_sender_id_oa_user_id_fk
|
||||
foreign key (sender_id) references oa_user (id)
|
||||
on update cascade on delete cascade
|
||||
);
|
||||
|
||||
create index oa_review_project_id_oa_project_id_fk
|
||||
on oa_review (project_id);
|
||||
|
||||
|
||||
|
||||
--
|
||||
-- 转储表的索引
|
||||
--
|
||||
|
|
Loading…
Reference in New Issue
Block a user