This commit is contained in:
2025-12-05 17:20:42 +08:00
14 changed files with 57 additions and 15 deletions

View File

@@ -137,7 +137,7 @@ public class DataClientFeignClientImpl implements IDataFeignClient {
}
@Override
public SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(String uuid, String uuidOwnType, Integer dirId) {
public SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(String uuid, String uuidOwnType, Long dirId) {
SdmResponse<FileMetadataInfoResp> response;
try {
response = dataClient.queryFileMetadataInfo(uuid, uuidOwnType, dirId);

View File

@@ -56,7 +56,7 @@ public interface IDataFeignClient {
SdmResponse uploadFiles(UploadFilesReq req);
@GetMapping("/data/queryFileMetadataInfo")
SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(@RequestParam(value = "uuid") String uuid, @RequestParam(value = "uuidOwnType") String uuidOwnType, @RequestParam(value = "dirId") Integer dirId);
SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(@RequestParam(value = "uuid") String uuid, @RequestParam(value = "uuidOwnType") String uuidOwnType, @RequestParam(value = "dirId") Long dirId);
@PostMapping("/data/downloadFileToLocal")
void downloadFileToLocal(@RequestParam(value = "fileId") @Validated Long fileId, @RequestParam(value = "path") @Validated String path);

View File

@@ -1,7 +1,11 @@
package com.sdm.data.aop;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.enums.DirTypeEnum;
import com.sdm.common.entity.enums.FilePermissionEnum;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
import com.sdm.data.service.IDataFileService;
import com.sdm.data.service.IFileUserPermissionService;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
@@ -19,6 +23,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.nio.file.AccessDeniedException;
import java.util.Arrays;
@Aspect
@Component
@@ -26,6 +31,8 @@ public class PermissionCheckAspect {
@Autowired
private IFileUserPermissionService fileUserPermissionService;
@Autowired
private IDataFileService dataFileService;
private final ExpressionParser parser = new SpelExpressionParser();
private final EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
@@ -42,10 +49,17 @@ public class PermissionCheckAspect {
if (fileId == null) {
throw new RuntimeException("无法解析 fileId请检查 @FilePermissionCheck.fileIdExpression()");
}
// 检查权限
if (!fileUserPermissionService.hasFilePermission(fileId, userId, filePermissionCheck.value())) {
throw new RuntimeException("用户无操作文件和文件夹权限");
// 知识库和项目文件需要验证权限
SdmResponse<FileMetadataInfoResp> sdmResponse = dataFileService.queryFileMetadataInfo(null, null, fileId);
if (sdmResponse.getData() != null) {
String objectKey = sdmResponse.getData().getObjectKey();
String dirName = objectKey.substring(0, objectKey.indexOf("/"));
if (Arrays.asList(DirTypeEnum.KNOWLEDGE_BASE_DIR.getDirName(), DirTypeEnum.PROJECT_NODE_DIR.getDirName()).contains(dirName)) {
// 检查权限
if (!fileUserPermissionService.hasFilePermission(fileId, userId, filePermissionCheck.value())) {
throw new RuntimeException("用户无操作文件和文件夹权限");
}
}
}
}

View File

@@ -396,7 +396,7 @@ public class DataFileController implements IDataFeignClient {
@GetMapping("/queryFileMetadataInfo")
@Operation(summary = "根据节点uuid获取节点文件夹信息", description = "获取节点文件夹信息")
public SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(@RequestParam(value = "uuid") String uuid, @RequestParam(value = "uuidOwnType") String uuidOwnType, @RequestParam(value = "dirId") Integer dirId) {
public SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(@RequestParam(value = "uuid") String uuid, @RequestParam(value = "uuidOwnType") String uuidOwnType, @RequestParam(value = "dirId") Long dirId) {
return IDataFileService.queryFileMetadataInfo(uuid, uuidOwnType, dirId);
}

View File

@@ -311,7 +311,7 @@ public interface IDataFileService {
default SdmResponse approveDataFile(LaunchApproveReq req){return null;};
SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(String uuid, String uuidOwnType, Integer dirId);
SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(String uuid, String uuidOwnType, Long dirId);
SdmResponse<ChunkUploadMinioFileResp> chunkUploadToMinio(ChunkUploadMinioFileReq req);

View File

@@ -227,7 +227,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
}
@Override
public SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(String uuid, String uuidOwnType, Integer dirId) {
public SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(String uuid, String uuidOwnType, Long dirId) {
LambdaQueryWrapper<FileMetadataInfo> queryWrapper = new LambdaQueryWrapper<>();
if (dirId != 0) {
queryWrapper.eq(FileMetadataInfo::getId,dirId);

View File

@@ -1281,7 +1281,7 @@ public class SystemFileIDataFileServiceImpl implements IDataFileService {
}
@Override
public SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(String uuid, String uuidOwnType, Integer dirId) {
public SdmResponse<FileMetadataInfoResp> queryFileMetadataInfo(String uuid, String uuidOwnType, Long dirId) {
return null;
}

View File

@@ -1,8 +1,8 @@
package com.sdm.project.controller;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.ExportExcelFormat;
import com.sdm.common.entity.req.task.TaskExportExcelFormat;
import com.sdm.common.log.annotation.SysLog;
import com.sdm.project.model.bo.ModifyTaskNode;
import com.sdm.project.model.req.*;
import com.sdm.project.model.resp.TaskCountResp;
@@ -12,7 +12,6 @@ import com.sdm.project.service.ITaskService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -37,6 +36,7 @@ public class SimulationTaskController {
* @param req
* @return
*/
@SysLog("修改任务")
@PostMapping("/edit")
@Operation(summary = "修改任务", description = "修改任务")
public SdmResponse edit(@RequestBody ModifyTaskNode req) {
@@ -46,12 +46,14 @@ public class SimulationTaskController {
/**
* 驳回、启动、暂停、工时、关闭、关注、取消关注、编辑
*/
@SysLog("操作任务")
@PostMapping("/operation")
@Operation(summary = "操作任务", description = "操作任务")
public SdmResponse operation(@RequestBody SpdmTaskOpr taskOpr) {
return taskService.operation(taskOpr);
}
@SysLog("关注或取消关注任务")
@PostMapping("/attention")
@Operation(summary = "关注或取消关注任务", description = "关注或取消关注任务")
public SdmResponse attention(@RequestBody SpdmTaskAttentionReq req) {
@@ -82,6 +84,7 @@ public class SimulationTaskController {
return taskService.countByStatus(req);
}
@SysLog("批量删除任务")
@PostMapping("/batchDelete")
@Operation(summary = "批量删除任务", description = "批量删除任务")
public SdmResponse batchDeleteTask(@RequestBody SpdmTaskOpr taskOpr) {

View File

@@ -163,7 +163,7 @@ public class YAModelController {
{
KeyResultReq addTaskRunReq = new KeyResultReq();
addTaskRunReq.setFile(req.getFile());
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(req.getScenario(), NodeTypeEnum.TASK.getValue(), 0);
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(req.getScenario(), NodeTypeEnum.TASK.getValue(), 0L);
if (fileMetadataInfoResp.getData() != null) {
addTaskRunReq.setDirId(fileMetadataInfoResp.getData().getId());
}

View File

@@ -533,7 +533,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
} else {
SimulationRun simulationRun = new SimulationRun();
// 设置算例的文件夹路径 挂在所属任务下面
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(simulationTask.getUuid(), NodeTypeEnum.TASK.getValue(), 0);
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(simulationTask.getUuid(), NodeTypeEnum.TASK.getValue(), 0L);
if (fileMetadataInfoResp.getData() != null) {
simulationRun.setFolderId(fileMetadataInfoResp.getData().getId());
}
@@ -671,7 +671,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
public SdmResponse createRunDir(CreateDirReq req) {
CreateDirReq createDirReq = new CreateDirReq();
// 获取算例文件夹id
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(req.getUuId(), NodeTypeEnum.RUN.getValue(), 0);
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(req.getUuId(), NodeTypeEnum.RUN.getValue(), 0L);
if (fileMetadataInfoResp.getData() != null) {
createDirReq.setParDirId(fileMetadataInfoResp.getData().getId());
}

View File

@@ -4,6 +4,7 @@ package com.sdm.task.controller;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.req.performance.PerformanceExportExcelFormat;
import com.sdm.common.entity.req.task.DemandExportExcelFormat;
import com.sdm.task.model.dto.TaskPerformanceDto;
import com.sdm.task.model.entity.SimulationPerformance;
import com.sdm.task.model.req.BatchAddTaskPerformanceReq;
import com.sdm.task.service.ISimulationPerformanceService;
@@ -81,6 +82,16 @@ public class SimulationPerformanceController {
return simulationPerformanceService.batchDeleteTaskPerformance(performanceIds);
}
/**
* 编辑性能指标(适用任务和算例的)
*
*/
@PostMapping("/editPerformance")
@Operation(summary = "编辑性能指标")
public SdmResponse editPerformance(@RequestBody TaskPerformanceDto performanceDto) {
return simulationPerformanceService.editPerformance(performanceDto);
}
/**
* 导出指标列表
* @param performanceExportExcelFormat

View File

@@ -11,6 +11,8 @@ import java.time.LocalDateTime;
@Data
@Schema(description = "任务性能DTO")
public class TaskPerformanceDto {
@Schema(description = "id")
private Integer id;
@Schema(description = "UUID")
private String uuid;

View File

@@ -2,6 +2,7 @@ package com.sdm.task.service;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.req.performance.PerformanceExportExcelFormat;
import com.sdm.task.model.dto.TaskPerformanceDto;
import com.sdm.task.model.entity.SimulationPerformance;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sdm.task.model.req.BatchAddTaskPerformanceReq;
@@ -36,6 +37,8 @@ public interface ISimulationPerformanceService extends IService<SimulationPerfor
*/
SdmResponse batchDeleteTaskPerformance(List<Integer> performanceIds);
SdmResponse editPerformance(TaskPerformanceDto performanceDto);
/**
* 导出指标列表
* @param performanceExportExcelFormat

View File

@@ -26,6 +26,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@@ -111,6 +112,14 @@ public class SimulationPerformanceServiceImpl extends ServiceImpl<SimulationPerf
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public SdmResponse editPerformance(TaskPerformanceDto performanceDto) {
SimulationPerformance simulationPerformance = new SimulationPerformance();
BeanUtils.copyProperties(performanceDto, simulationPerformance);
return SdmResponse.success(this.updateById(simulationPerformance));
}
@Override
public SdmResponse exportPerformance(PerformanceExportExcelFormat performanceExportExcelFormat, HttpServletResponse httpServletResponse) {
SdmResponse response = new SdmResponse();