Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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("用户无操作文件和文件夹权限");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.sdm.project.dao;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.project.model.entity.SimulationTask;
|
||||
import com.sdm.project.model.po.TaskNodeExtraPo;
|
||||
import com.sdm.project.model.req.SpdmAnalysisTaskListReq;
|
||||
import com.sdm.project.model.req.*;
|
||||
import com.sdm.project.model.vo.*;
|
||||
@@ -47,4 +48,6 @@ public interface SimulationTaskMapper extends BaseMapper<SimulationTask> {
|
||||
|
||||
List<UserGroupDifficultyVo> getUserDifficultyStatistics(@Param("req") UserDifficultCompleteStatisticsReq req);
|
||||
|
||||
List<TaskNodeExtraPo> getTaskExtraList(@Param("taskIdList") List<String> taskIdList);
|
||||
|
||||
}
|
||||
|
||||
@@ -87,6 +87,8 @@ public class SpdmDemandVo extends BaseEntity {
|
||||
*/
|
||||
private List<SpdmDemandExtraVo> extraList;
|
||||
|
||||
private List<SpdmDemandExtraVo> extras;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.sdm.common.entity.pojo.BaseEntity;
|
||||
import com.sdm.common.entity.resp.system.CIDUserResp;
|
||||
import com.sdm.project.model.po.TaskNodeExtraPo;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
@@ -147,4 +148,6 @@ public class SpdmNewTaskVo extends BaseEntity {
|
||||
@JsonProperty(value = "tag10")
|
||||
private String tag10;
|
||||
|
||||
private List<TaskNodeExtraPo> extras;
|
||||
|
||||
}
|
||||
|
||||
@@ -80,6 +80,8 @@ public class SpdmNodeVo extends BaseEntity {
|
||||
*/
|
||||
private List<SpdmNodeExtraVo> extraList;
|
||||
|
||||
private List<SpdmNodeExtraVo> extras;
|
||||
|
||||
/**
|
||||
* 项目详情图片
|
||||
*/
|
||||
|
||||
@@ -452,6 +452,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
||||
demandExtraMap = demandExtraList.stream().collect(Collectors.groupingBy(SpdmDemandExtraVo::getDemandId));
|
||||
}
|
||||
for (SpdmDemandVo spdmDemandVo : demandList) {
|
||||
spdmDemandVo.setExtras(demandExtraMap.get(spdmDemandVo.getUuid()));
|
||||
eachTaskList = taskMap.get(spdmDemandVo.getUuid());
|
||||
spdmDemandVo.setProgress(CollectionUtils.isEmpty(eachTaskList) ? 0 : eachTaskList.stream().mapToInt(SpdmTaskVo::getProgress).sum() / eachTaskList.size());
|
||||
if (StringUtils.isNotBlank(spdmDemandVo.getProjectId())) {
|
||||
@@ -478,7 +479,6 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
||||
}
|
||||
}
|
||||
spdmDemandVo.setEMemberList(spdmEUserVoList);
|
||||
spdmDemandVo.setExtraList(demandExtraMap.get(spdmDemandVo.getUuid()));
|
||||
}
|
||||
jsonObject.put("data", demandList);
|
||||
return SdmResponse.success(jsonObject);
|
||||
|
||||
@@ -312,7 +312,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
||||
nodeId = nodeExtraEntry.getKey();
|
||||
for (SpdmNodeVo spdmNodeVo : nodeList) {
|
||||
if (nodeId.equals(spdmNodeVo.getUuid())) {
|
||||
spdmNodeVo.setExtraList(nodeExtraEntry.getValue());
|
||||
spdmNodeVo.setExtras(nodeExtraEntry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -450,6 +450,11 @@ public class TaskServiceImpl implements ITaskService {
|
||||
setPMemberList(task, copyTaskMemberList);
|
||||
setEMemberList(task, copyTaskMemberList);
|
||||
}
|
||||
List<TaskNodeExtraPo> taskExtraList = mapper.getTaskExtraList(taskIdList);
|
||||
Map<String, List<TaskNodeExtraPo>> taskExtraMap = Map.of();
|
||||
if (CollectionUtils.isNotEmpty(taskExtraList)) {
|
||||
taskExtraMap = taskExtraList.stream().collect(Collectors.groupingBy(TaskNodeExtraPo::getTaskId));
|
||||
}
|
||||
List<SpdmNewTaskVo> newTaskList = new ArrayList<>();
|
||||
for (SpdmTaskVo taskVo : taskList) {
|
||||
SpdmNewTaskVo spdmNewTaskVo = new SpdmNewTaskVo();
|
||||
@@ -466,6 +471,7 @@ public class TaskServiceImpl implements ITaskService {
|
||||
spdmNewTaskVo.setTag10(taskVo.getTag10());
|
||||
spdmNewTaskVo.setPMemberList(taskVo.getPMemberList());
|
||||
spdmNewTaskVo.setEMemberList(taskVo.getEMemberList());
|
||||
spdmNewTaskVo.setExtras(taskExtraMap.get(taskVo.getUuid()));
|
||||
newTaskList.add(spdmNewTaskVo);
|
||||
}
|
||||
jsonObject.put("data", newTaskList);
|
||||
|
||||
@@ -309,5 +309,14 @@
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getTaskExtraList" resultType="com.sdm.project.model.po.TaskNodeExtraPo">
|
||||
select * from simulation_task_extra where task_id in
|
||||
(
|
||||
<foreach collection='taskIdList' item='taskId' index='index' separator=','>
|
||||
#{taskId}
|
||||
</foreach>
|
||||
)
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user