Merge branch 'feature'
All checks were successful
JslGroup/JslDeveloper/JSL_OrganizeInternalOA/pipeline/head This commit looks good

# Conflicts:
#	src/main/java/com/jsl/oa/dao/ProjectDAO.java
This commit is contained in:
176yunxuan 2024-03-14 21:45:10 +08:00
commit 0de184db59
13 changed files with 169 additions and 36 deletions

View File

@ -4,9 +4,8 @@ import com.jsl.oa.services.ModuleService;
import com.jsl.oa.utils.BaseResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@ -43,4 +42,12 @@ public class ModuleContorller {
return moduleService.getBySysId(sysId,request);
}
@DeleteMapping("/module/delete/{id}")
public BaseResponse moudleDeleteById( @PathVariable("id") Long id, HttpServletRequest request){
log.info("请求接口[DELETE]: /module/delete/{id}");
return moduleService.deleteById(request,id);
}
}

View File

@ -73,9 +73,10 @@ public class ProjectController {
public BaseResponse projectWorkGet(@RequestParam(required = false) Integer listAll,
@RequestParam(required = false) List<String> tags,
@RequestParam(required = false) List<Integer> isFinish,
@RequestParam(required = false) Integer is,
HttpServletRequest request) {
log.info("请求接口[GET]: /project/work/get");
return projectService.workget(listAll, request, tags, isFinish);
return projectService.workget(listAll, request, tags, isFinish,is);
}
/**
@ -176,7 +177,8 @@ public class ProjectController {
* @Param projectId:
**/
@PutMapping("/project/edit/{projectId}")
public BaseResponse projectEditById(HttpServletRequest request, @RequestBody @Validated ProjectEditVO projectEdit, @NotNull BindingResult bindingResult, @PathVariable("projectId") Long projectId) {
public BaseResponse projectEditById(HttpServletRequest request, @RequestBody @Validated ProjectEditVO projectEdit,
@NotNull BindingResult bindingResult, @PathVariable("projectId") Long projectId) {
log.info("请求接口[PUT]: /project/edit/{projectId}");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -290,4 +292,16 @@ public class ProjectController {
return projectService.projectToOtherUserForCutting(request, oldUid, pid , newUid);
}
@GetMapping("/project/file")
public BaseResponse getProjectFile(HttpServletRequest request, @RequestParam Long projectId){
log.info("请求接口[Get]: /project/file");
//判断是否有参数错误
if(projectId == null){
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR);
}
return projectService.projectFileGet(request,projectId);
}
}

View File

@ -5,7 +5,6 @@ import com.jsl.oa.mapper.ProjectMapper;
import com.jsl.oa.model.doData.ProjectCuttingDO;
import com.jsl.oa.model.doData.ProjectDO;
import com.jsl.oa.model.doData.ProjectUserDO;
import com.jsl.oa.model.doData.ProjectWorkDO;
import com.jsl.oa.model.doData.info.ProjectShowDO;
import com.jsl.oa.model.voData.ProjectEditVO;
import com.jsl.oa.model.voData.ProjectInfoVO;
@ -119,6 +118,13 @@ public class ProjectDAO {
return projectMapper.setProjectShow(setProjectShow);
}
public ProjectDO getProjectById(Long id){
log.info("\t> 执行 DAO 层 ProjectDAO.getProjectById 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectById(id);
}
public List<ProjectDO> get(Long userId,Integer listAll,List<String> tags,List<Integer> isFinish) {
log.info("\t> 执行 DAO 层 ProjectDAO.get 方法");
log.info("\t\t> 从 MySQL 获取数据");
@ -135,19 +141,19 @@ public class ProjectDAO {
}
}
public List<ProjectDO> workget(Long userId, Integer listAll, List<String> tags, List<Integer> isFinish) {
public List<ProjectDO> workget(Long userId, Integer listAll, List<String> tags, List<Integer> isFinish, Integer is) {
log.info("\t> 执行 DAO 层 ProjectDAO.workget 方法");
log.info("\t\t> 从 MySQL 获取数据");
if(isFinish != null && !isFinish.isEmpty()){
return projectMapper.workgetByIsfinish(userId,isFinish);
return projectMapper.workgetByIsfinish(userId,isFinish,is);
}
if(tags != null && !tags.isEmpty()){
return projectMapper.workgetByTags(userId,tags);
return projectMapper.workgetByTags(userId,tags,is);
}
if(listAll == 0) {
return projectMapper.workget(userId);
return projectMapper.workget(userId,is);
}else {
return projectMapper.workget1(userId);
return projectMapper.workget1(userId,is);
}
}
@ -212,7 +218,7 @@ public class ProjectDAO {
}
public List<ProjectDO> tget(Integer id, List<Integer> isFinish, List<String> tags) {
public List<ProjectDO> tget(Integer id,List<Integer> isFinish,List<String> tags) {
log.info("DAO层");
if(isFinish != null && !isFinish.isEmpty()){
return projectMapper.tgetByIsfinish(isFinish);
@ -220,6 +226,9 @@ public class ProjectDAO {
if(tags != null && !tags.isEmpty()){
return projectMapper.tgetBytags(tags);
}
return projectMapper.tget(id);
}
}

View File

@ -1,6 +1,7 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.ProjectWorkDO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@ -22,4 +23,10 @@ public interface ModuleMapper {
@Select("select principal_id from organize_oa.oa_project_work where id=#{sysId}")
Long getPidBySysid(Integer sysId);
@Delete("DELETE FROM organize_oa.oa_project_work WHERE id = #{id}")
void deleteMoudule(Long id);
@Select("select * from organize_oa.oa_project_work where pid=#{id} and is_delete=0 and type=1 ")
List<ProjectWorkDO> getAllMoudleByPid(Long id);
}

View File

@ -3,7 +3,6 @@ package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.ProjectCuttingDO;
import com.jsl.oa.model.doData.ProjectDO;
import com.jsl.oa.model.doData.ProjectUserDO;
import com.jsl.oa.model.doData.ProjectWorkDO;
import com.jsl.oa.model.voData.ProjectInfoVO;
import com.jsl.oa.model.voData.ProjectWorkVO;
import org.apache.ibatis.annotations.*;
@ -87,16 +86,16 @@ public interface ProjectMapper {
//@Select("select * from organize_oa.oa_project_work where is_finish=#{isFinish} and is_delete=false and principal_id =#{userId}")
List<ProjectDO> workgetByIsfinish(Long userId, List<Integer> isFinish);
List<ProjectDO> workgetByIsfinish(Long userId, List<Integer> isFinish, Integer is);
List<ProjectDO> workgetByTags(Long userId, List<String> tags);
List<ProjectDO> workgetByTags(Long userId, List<String> tags, Integer is);
@Select("select * from organize_oa.oa_project where id in(select project_id from " +
"organize_oa.oa_project_work where is_delete=false and status =1 and principal_id=#{userId} and type=0)")
List<ProjectDO> workget(Long userId);
//@Select("select * from organize_oa.oa_project where id in(select project_id from " +
//"organize_oa.oa_project_work where is_delete=false and status =1 and principal_id=#{userId} and type=0)")
List<ProjectDO> workget(Long userId, Integer is);
@Select("select * from organize_oa.oa_project_work where status=1 and principal_id=#{userId}")
List<ProjectDO> workget1(Long userId);
//@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);

View File

@ -0,0 +1,13 @@
package com.jsl.oa.model.voData;
import lombok.Data;
@Data
public class ProjectFileVO {
String name;
String uuid;
String link;
}

View File

@ -11,7 +11,7 @@ public class ProjectWorkVO {
private Long pid;
@NotNull(message = "项目id不能为空")
private Long projectId;
@NotNull(message = "负责人id不能为空")
private Long principalId;
@NotNull(message = "周期不能为空")
private Integer cycle;

View File

@ -11,4 +11,6 @@ public interface ModuleService {
BaseResponse getByProjectId(Integer projectId, HttpServletRequest request);
BaseResponse getBySysId(Integer sysId, HttpServletRequest request);
BaseResponse deleteById(HttpServletRequest request, Long id);
}

View File

@ -36,9 +36,11 @@ public interface ProjectService {
BaseResponse projectToOtherUserForCutting(HttpServletRequest request, Long oldUid, Long pid, Long newUid);
BaseResponse workget(Integer listAll, HttpServletRequest request, List<String> tags, List<Integer> isFinish);
BaseResponse workget(Integer listAll, HttpServletRequest request, List<String> tags, List<Integer> isFinish, Integer is);
BaseResponse projecWorktAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO);
BaseResponse tget(Integer id, List<String> tags, List<Integer> isFinish);
BaseResponse projectFileGet(HttpServletRequest request, Long projectId);
}

View File

@ -7,6 +7,7 @@ import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.doData.ProjectWorkDO;
import com.jsl.oa.services.ModuleService;
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;
@ -59,4 +60,31 @@ public class ModuleServiceImpl implements ModuleService {
List<ProjectWorkDO> projectWorkDOList = moduleMapper.getBySysId(sysId,userId,is);
return ResultUtil.success(projectWorkDOList);
}
@Override
public BaseResponse deleteById(HttpServletRequest request, Long id) {
// 检测是否为管理员
if(!Processing.checkUserIsAdmin(request,roleMapper)){
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
deleteMoudule(id);
return ResultUtil.success("删除成功");
}
// 删除子模块方法
public void deleteMoudule(Long id){
//获取所有父Id=id的子模块
List<ProjectWorkDO> projectWorkDOS = moduleMapper.getAllMoudleByPid(id);
for(ProjectWorkDO workDO: projectWorkDOS){
deleteMoudule(workDO.getId());
}
moduleMapper.deleteMoudule(id);
}
}

View File

@ -1,12 +1,13 @@
package com.jsl.oa.services.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jsl.oa.annotations.CheckUserHasPermission;
import com.jsl.oa.dao.ProjectDAO;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.doData.ProjectCuttingDO;
import com.jsl.oa.model.doData.ProjectDO;
import com.jsl.oa.model.doData.ProjectWorkDO;
import com.jsl.oa.model.doData.UserDO;
import com.jsl.oa.model.doData.info.ProjectShowDO;
import com.jsl.oa.model.voData.*;
@ -78,6 +79,31 @@ public class ProjectServiceImpl implements ProjectService {
return ResultUtil.success(projectDOList);
}
@Override
public BaseResponse projectFileGet(HttpServletRequest request, Long projectId) {
// 判断项目是否存在
if(!projectDAO.isExistProjectById(projectId)){
return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST);
}
ProjectDO projectDO = projectDAO.getProjectById(projectId);
if(projectDO.getFile() == null || projectDO.getFile().equals("{}")){
return ResultUtil.success(null);
}
// 将文件内容转换为 JSON 数组
try {
Object fileJson = new ObjectMapper().readValue(projectDO.getFile(), Object.class);
return ResultUtil.success(fileJson);
} catch (JsonProcessingException e) {
return ResultUtil.error(ErrorCode.PROJECT_FILE_JSON_ERROR);
}
}
@Override
public BaseResponse projectEdit(HttpServletRequest request, @NotNull ProjectEditVO projectEdit, Long projectId) {
log.info("\t> 执行 Service 层 ProjectService.projectEdit 方法");
@ -243,29 +269,29 @@ public class ProjectServiceImpl implements ProjectService {
}
@Override
public BaseResponse workget(Integer listAll, HttpServletRequest request, List<String> tags, List<Integer> isFinish) {
public BaseResponse workget(Integer listAll, HttpServletRequest request, List<String> tags, List<Integer> isFinish, Integer is) {
log.info("\t> 执行 Service 层 ProjectService.workget 方法");
//获取用户
Long userId = Processing.getAuthHeaderToUserId(request);
//根据状态查询
if (isFinish != null && !isFinish.isEmpty()) {
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish);
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish,is);
return ResultUtil.success(projectDOList);
}
//根据标签查询
if (tags != null && !tags.isEmpty()) {
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish);
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish,is);
return ResultUtil.success(projectDOList);
}
//判断是否是老师(项目负责人)
if (listAll != null && Processing.checkUserIsTeacher(request, roleMapper)) {
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish);
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish,is);
return ResultUtil.success(projectDOList);
} else {
listAll = 0;
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish);
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish,is);
return ResultUtil.success(projectDOList);
}
}

View File

@ -50,7 +50,8 @@ public enum ErrorCode {
DATABASE_DELETE_ERROR("DatabaseDeleteError", 50012, "数据库删除错误"),
PROJECT_NOT_EXIST("ProjectNotExist", 40016, "项目不存在"),
PROJECT_CUTTING_NOT_EXIST("ProjectCuttingNotExist", 40017, "项目分割模块不存在"),
PROJECT_USER_NOT_EXIST("ProjectUserNotExist", 40018, "用户项目表无对应记录");
PROJECT_USER_NOT_EXIST("ProjectUserNotExist", 40018, "用户项目表无对应记录"),
PROJECT_FILE_JSON_ERROR("ProjectFileJsonError", 40019, "项目文件json格式错误");
private final String output;

View File

@ -48,7 +48,7 @@
</update>
<select id="getByTags" resultType="com.jsl.oa.model.doData.ProjectDO">
select * from organize_oa.oa_project where is_delete=false and principal_id=#{userId} and
select * from organize_oa.oa_project where is_delete=false and principal_id=#{userId} and status=1 and
<foreach collection="tags" item="tag" separator=",'%') or json_extract(tags,'$.tags')like concat('%',"
open="json_extract(tags,'$.tags')like concat('%',"
close=",'%')">
@ -57,14 +57,21 @@
</select>
<select id="getByIsfinish" resultType="com.jsl.oa.model.doData.ProjectDO">
select * from organize_oa.oa_project where is_delete=false and principal_id =#{userId} and is_finish in
select * from organize_oa.oa_project where is_delete=false and principal_id =#{userId} and status=1 and is_finish in
<foreach collection="isFinish" item="Finish" separator="," open="(" close=")">
#{Finish}
</foreach>
</select>
<select id="workgetByTags" resultType="com.jsl.oa.model.doData.ProjectDO">
select * from organize_oa.oa_project where id in(select project_id from organize_oa.oa_project_work where is_delete=false and (principal_id=#{userId} or principal_id is null) and project_id in(
select * from organize_oa.oa_project where
<if test="is != null">
(principal_id = #{userId} and is_delete=false) or
</if>
id in(select project_id from organize_oa.oa_project_work
where is_delete=false and (principal_id=#{userId} ) and project_id in(
select id from organize_oa.oa_project where
<foreach collection="tags" item="tag" separator=",'%') or json_extract(tags,'$.tags')like concat('%',"
open="json_extract(tags,'$.tags')like concat('%',"
@ -75,21 +82,39 @@
</select>
<select id="workgetByIsfinish" resultType="com.jsl.oa.model.doData.ProjectDO">
select * from organize_oa.oa_project where id in(select project_id from organize_oa.oa_project_work where is_delete=false and (principal_id=#{userId} or principal_id is null) and is_finish in
select * from organize_oa.oa_project where
<if test="is != null">
(principal_id = #{userId} and is_delete=false) or
</if>
id in(select project_id from organize_oa.oa_project_work where is_delete=false and (principal_id=#{userId}) and is_finish in
<foreach collection="isFinish" item="Finish" separator="," open="(" close="))">
#{Finish}
</foreach>
</select>
<select id="workget" resultType="com.jsl.oa.model.doData.ProjectDO">
select * from organize_oa.oa_project where
<if test="is != null">
(principal_id = #{userId} and is_delete=false) or
</if>
id in(select project_id from organize_oa.oa_project_work where is_delete=false and status =1 and principal_id=#{userId})
</select>
<select id="workget1" resultType="com.jsl.oa.model.doData.ProjectDO">
select * from organize_oa.oa_project_work where status=1 and principal_id=#{userId}
</select>
<select id="tget" resultType="com.jsl.oa.model.doData.ProjectDO">
select * from organize_oa.oa_project where is_delete=false
select * from organize_oa.oa_project where is_delete=false and status=1
<if test="id != null">
and id=#{id}
</if>
</select>
<select id="tgetBytags" resultType="com.jsl.oa.model.doData.ProjectDO">
select * from organize_oa.oa_project where is_delete=false and
select * from organize_oa.oa_project where is_delete=false and status=1 and
<foreach collection="tags" item="tag" separator=",'%') or json_extract(tags,'$.tags')like concat('%',"
open="json_extract(tags,'$.tags')like concat('%',"
close=",'%')">
@ -98,7 +123,7 @@
</select>
<select id="tgetByIsfinish" resultType="com.jsl.oa.model.doData.ProjectDO">
select * from organize_oa.oa_project where is_delete=false and is_finish in
select * from organize_oa.oa_project where is_delete=false and status=1 and is_finish in
<foreach collection="isFinish" item="Finish" separator="," open="(" close=")">
#{Finish}
</foreach>