opt: 附件上传/删除
This commit is contained in:
@@ -91,4 +91,9 @@ public class DevFileApiProvider implements DevFileApi {
|
||||
.map(JSONUtil::parseObj)
|
||||
.orElse(new JSONObject());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteById(String fileId) {
|
||||
devFileService.removeById(fileId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,29 +15,29 @@ package org.nl.pmm.modular.projectfile.controller;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import org.nl.common.annotation.CommonLog;
|
||||
import org.nl.common.pojo.CommonResult;
|
||||
import org.nl.pmm.modular.projectfile.entity.ProjectFile;
|
||||
import org.nl.pmm.modular.projectfile.param.*;
|
||||
import org.nl.pmm.modular.projectfile.service.ProjectFileService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.nl.common.annotation.CommonLog;
|
||||
import org.nl.common.pojo.CommonResult;
|
||||
import org.nl.pmm.modular.projectfile.entity.ProjectFile;
|
||||
import org.nl.pmm.modular.projectfile.service.ProjectFileService;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目附件表控制器
|
||||
*
|
||||
* @author liyongde
|
||||
* @date 2025/11/17 20:24
|
||||
* @date 2025/11/17 20:24
|
||||
*/
|
||||
@Tag(name = "项目附件表控制器")
|
||||
@RestController
|
||||
@@ -51,7 +51,7 @@ public class ProjectFileController {
|
||||
* 获取项目附件表分页
|
||||
*
|
||||
* @author liyongde
|
||||
* @date 2025/11/17 20:24
|
||||
* @date 2025/11/17 20:24
|
||||
*/
|
||||
@Operation(summary = "获取项目附件表分页")
|
||||
@SaCheckPermission("/pmm/projectfile/page")
|
||||
@@ -64,7 +64,7 @@ public class ProjectFileController {
|
||||
* 添加项目附件表
|
||||
*
|
||||
* @author liyongde
|
||||
* @date 2025/11/17 20:24
|
||||
* @date 2025/11/17 20:24
|
||||
*/
|
||||
@Operation(summary = "添加项目附件表")
|
||||
@CommonLog("添加项目附件表")
|
||||
@@ -79,7 +79,7 @@ public class ProjectFileController {
|
||||
* 编辑项目附件表
|
||||
*
|
||||
* @author liyongde
|
||||
* @date 2025/11/17 20:24
|
||||
* @date 2025/11/17 20:24
|
||||
*/
|
||||
@Operation(summary = "编辑项目附件表")
|
||||
@CommonLog("编辑项目附件表")
|
||||
@@ -94,22 +94,23 @@ public class ProjectFileController {
|
||||
* 删除项目附件表
|
||||
*
|
||||
* @author liyongde
|
||||
* @date 2025/11/17 20:24
|
||||
* @date 2025/11/17 20:24
|
||||
*/
|
||||
@Operation(summary = "删除项目附件表")
|
||||
@CommonLog("删除项目附件表")
|
||||
@SaCheckPermission("/pmm/projectfile/delete")
|
||||
@PostMapping("/pmm/projectfile/delete")
|
||||
public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
|
||||
List<ProjectFileIdParam> projectFileIdParamList) {
|
||||
List<ProjectFileIdParam> projectFileIdParamList) {
|
||||
projectFileService.delete(projectFileIdParamList);
|
||||
return CommonResult.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目附件表
|
||||
*
|
||||
* @author liyongde
|
||||
* @date 2025/11/17 20:24
|
||||
* @date 2025/11/17 20:24
|
||||
*/
|
||||
@Operation(summary = "保存项目附件表")
|
||||
@CommonLog("保存项目附件表")
|
||||
@@ -125,7 +126,7 @@ public class ProjectFileController {
|
||||
* 获取项目附件表详情
|
||||
*
|
||||
* @author liyongde
|
||||
* @date 2025/11/17 20:24
|
||||
* @date 2025/11/17 20:24
|
||||
*/
|
||||
@Operation(summary = "获取项目附件表详情")
|
||||
@SaCheckPermission("/pmm/projectfile/detail")
|
||||
@@ -133,4 +134,19 @@ public class ProjectFileController {
|
||||
public CommonResult<ProjectFile> detail(@Valid ProjectFileIdParam projectFileIdParam) {
|
||||
return CommonResult.data(projectFileService.detail(projectFileIdParam));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目附件表
|
||||
*
|
||||
* @author liyongde
|
||||
* @date 2025/11/17 20:24
|
||||
*/
|
||||
@Operation(summary = "删除项目附件表")
|
||||
@CommonLog("删除项目附件表")
|
||||
@SaCheckPermission("/pmm/projectfile/delete-file")
|
||||
@PostMapping("/pmm/projectfile/delete-file")
|
||||
public CommonResult<String> deleteFile(@RequestBody ProjectFileParam param) {
|
||||
projectFileService.deleteAttachment(param);
|
||||
return CommonResult.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.nl.pmm.modular.projectfile.param;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Date: 2025/11/21
|
||||
*/
|
||||
@Data
|
||||
public class ProjectFileParam {
|
||||
private String id;
|
||||
}
|
||||
@@ -79,4 +79,6 @@ public interface ProjectFileService extends IService<ProjectFile> {
|
||||
List<ProjectAttachmentVo> getFileByProjectId(String projectId);
|
||||
|
||||
void bindProjectFile(ProjectFileAddParam param);
|
||||
|
||||
void deleteAttachment(ProjectFileParam param);
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import cn.hutool.core.collection.CollStreamUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -28,10 +29,7 @@ import org.nl.dev.api.DevFileApi;
|
||||
import org.nl.pmm.modular.project.entity.vo.ProjectAttachmentVo;
|
||||
import org.nl.pmm.modular.projectfile.entity.ProjectFile;
|
||||
import org.nl.pmm.modular.projectfile.mapper.ProjectFileMapper;
|
||||
import org.nl.pmm.modular.projectfile.param.ProjectFileAddParam;
|
||||
import org.nl.pmm.modular.projectfile.param.ProjectFileEditParam;
|
||||
import org.nl.pmm.modular.projectfile.param.ProjectFileIdParam;
|
||||
import org.nl.pmm.modular.projectfile.param.ProjectFilePageParam;
|
||||
import org.nl.pmm.modular.projectfile.param.*;
|
||||
import org.nl.pmm.modular.projectfile.service.ProjectFileService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -111,4 +109,12 @@ public class ProjectFileServiceImpl extends ServiceImpl<ProjectFileMapper, Proje
|
||||
param.setFileAddress(file.getStr("downloadPath"));
|
||||
add(param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAttachment(ProjectFileParam param) {
|
||||
// 删除文件
|
||||
devFileApi.deleteById(param.getId());
|
||||
// 删除附件表记录
|
||||
remove(new LambdaQueryWrapper<ProjectFile>().eq(ProjectFile::getFileId, param.getId()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import org.nl.pmm.modular.projectstage.param.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@@ -24,10 +25,6 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
import org.nl.common.annotation.CommonLog;
|
||||
import org.nl.common.pojo.CommonResult;
|
||||
import org.nl.pmm.modular.projectstage.entity.ProjectStage;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStageAddParam;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStageEditParam;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStageIdParam;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStagePageParam;
|
||||
import org.nl.pmm.modular.projectstage.service.ProjectStageService;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
@@ -91,6 +88,20 @@ public class ProjectStageController {
|
||||
projectStageService.edit(projectStageEditParam);
|
||||
return CommonResult.ok();
|
||||
}
|
||||
/**
|
||||
* 编辑项目阶段
|
||||
*
|
||||
* @author liyongde
|
||||
* @date 2025/11/17 20:32
|
||||
*/
|
||||
@Operation(summary = "编辑项目阶段")
|
||||
@CommonLog("编辑项目阶段")
|
||||
// @SaCheckPermission("/pmm/projectstage/batch-edit")
|
||||
@PostMapping("/pmm/projectstage/batch-edit")
|
||||
public CommonResult<String> batchEdit(@RequestBody @Valid List<ProjectStageAddBatchParam> param) {
|
||||
projectStageService.batchEdit(param);
|
||||
return CommonResult.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目阶段
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package org.nl.pmm.modular.projectstage.param;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Date: 2025/11/19
|
||||
*/
|
||||
@Data
|
||||
public class ProjectStageAddBatchParam {
|
||||
/** 阶段名称 */
|
||||
@Schema(description = "阶段名称")
|
||||
private String stageName;
|
||||
|
||||
/** 阶段序号 */
|
||||
@Schema(description = "阶段序号")
|
||||
private String stageSeq;
|
||||
|
||||
/** 项目id */
|
||||
@Schema(description = "项目id")
|
||||
private String projectId;
|
||||
|
||||
/** 阶段id */
|
||||
@Schema(description = "阶段id")
|
||||
private String stageId;
|
||||
|
||||
/** 是否删除 */
|
||||
@Schema(description = "是否删除")
|
||||
private Boolean isDeleted;
|
||||
}
|
||||
@@ -15,10 +15,7 @@ package org.nl.pmm.modular.projectstage.service;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.pmm.modular.projectstage.entity.ProjectStage;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStageAddParam;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStageEditParam;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStageIdParam;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStagePageParam;
|
||||
import org.nl.pmm.modular.projectstage.param.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -84,4 +81,6 @@ public interface ProjectStageService extends IService<ProjectStage> {
|
||||
* @return
|
||||
*/
|
||||
List<ProjectStage> getByProjectId(String projectId);
|
||||
|
||||
void batchEdit(List<ProjectStageAddBatchParam> param);
|
||||
}
|
||||
|
||||
@@ -20,6 +20,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.nl.pmm.modular.projectstage.param.*;
|
||||
import org.nl.pmm.modular.stagedetail.entity.StageDetail;
|
||||
import org.nl.pmm.modular.stagedetail.service.StageDetailService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.nl.common.enums.CommonSortOrderEnum;
|
||||
@@ -27,13 +31,12 @@ import org.nl.common.exception.CommonException;
|
||||
import org.nl.common.page.CommonPageRequest;
|
||||
import org.nl.pmm.modular.projectstage.entity.ProjectStage;
|
||||
import org.nl.pmm.modular.projectstage.mapper.ProjectStageMapper;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStageAddParam;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStageEditParam;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStageIdParam;
|
||||
import org.nl.pmm.modular.projectstage.param.ProjectStagePageParam;
|
||||
import org.nl.pmm.modular.projectstage.service.ProjectStageService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* 项目阶段Service接口实现类
|
||||
@@ -44,6 +47,9 @@ import java.util.List;
|
||||
@Service
|
||||
public class ProjectStageServiceImpl extends ServiceImpl<ProjectStageMapper, ProjectStage> implements ProjectStageService {
|
||||
|
||||
@Resource
|
||||
private StageDetailService stageDetailService;
|
||||
|
||||
@Override
|
||||
public Page<ProjectStage> page(ProjectStagePageParam projectStagePageParam) {
|
||||
QueryWrapper<ProjectStage> queryWrapper = new QueryWrapper<ProjectStage>().checkSqlInjection();
|
||||
@@ -100,4 +106,31 @@ public class ProjectStageServiceImpl extends ServiceImpl<ProjectStageMapper, Pro
|
||||
.orderByAsc(ProjectStage::getStageSeq);
|
||||
return list(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchEdit(List<ProjectStageAddBatchParam> param) {
|
||||
// 获取新增的 / 修改的
|
||||
List<ProjectStageAddBatchParam> addItems = param.stream().filter(p ->
|
||||
(ObjectUtil.isEmpty(p.getStageId()) && !p.getIsDeleted())
|
||||
|| (ObjectUtil.isNotEmpty(p.getStageId()) && !p.getIsDeleted())).toList();
|
||||
if (addItems.size() > 0) {
|
||||
List<ProjectStage> projectStageList = new ArrayList<>();
|
||||
for (ProjectStageAddBatchParam addItem : addItems) {
|
||||
ProjectStage projectStage = BeanUtil.toBean(addItem, ProjectStage.class);
|
||||
projectStageList.add(projectStage);
|
||||
}
|
||||
saveOrUpdateBatch(projectStageList);
|
||||
}
|
||||
// 获取删除的
|
||||
List<ProjectStageAddBatchParam> deletedItems = param.stream().filter(p -> ObjectUtil.isNotEmpty(p.getStageId()) && p.getIsDeleted()).toList();
|
||||
if (deletedItems.size() > 0) {
|
||||
List<String> ids = new ArrayList<>();
|
||||
for (ProjectStageAddBatchParam deletedItem : deletedItems) {
|
||||
ids.add(deletedItem.getStageId());
|
||||
}
|
||||
// 删除明细
|
||||
stageDetailService.remove(new LambdaQueryWrapper<StageDetail>().in(StageDetail::getStageId, ids));
|
||||
removeBatchByIds(ids);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user