feat:查询需求待办附件/算例结果归档/编辑报告上传报告结果/任务文件查询修改
This commit is contained in:
@@ -34,16 +34,16 @@ public enum FileBizTypeEnum {
|
|||||||
CLOUD_FILE(5),
|
CLOUD_FILE(5),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 网格文件
|
* 流程脚本
|
||||||
*/
|
*/
|
||||||
@Schema(description = "网格文件", example = "6")
|
@Schema(description = "流程脚本", example = "6")
|
||||||
GRID_FILE(6),
|
FLOW_SCRIPT_FILE(6),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算过程文件
|
* 需求附件
|
||||||
*/
|
*/
|
||||||
@Schema(description = "计算过程文件", example = "7")
|
@Schema(description = "需求附件", example = "7")
|
||||||
COMPUTE_PROCESS_FILE(7),
|
DEMAND_FILE(7),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 交付物文件
|
* 交付物文件
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.sdm.common.entity.req.data;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CopyFileToTaskReq {
|
||||||
|
|
||||||
|
@Schema(description = "源文件id")
|
||||||
|
private Long sourceFileId;
|
||||||
|
|
||||||
|
@Schema(description = "要复制到的文件夹关联uuid")
|
||||||
|
private String parentUuid;
|
||||||
|
}
|
||||||
@@ -59,4 +59,8 @@ public class GetSimulationTaskFileReq extends BaseReq {
|
|||||||
|
|
||||||
@Schema(description = "标签10")
|
@Schema(description = "标签10")
|
||||||
private String tag10;
|
private String tag10;
|
||||||
|
|
||||||
|
@Schema(description = "查询层级:task 只查task下面的文件,不查子目录下的")
|
||||||
|
private String level;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -182,6 +182,10 @@ public class FileMetadataInfoResp extends BaseResp implements Serializable {
|
|||||||
|
|
||||||
@Schema(description= "完成时间")
|
@Schema(description= "完成时间")
|
||||||
private LocalDateTime finishTime;
|
private LocalDateTime finishTime;
|
||||||
|
|
||||||
|
@Schema(description = "文件来源 DM/EP")
|
||||||
|
private String fileResource;
|
||||||
|
|
||||||
// 算列信息属性放在上面
|
// 算列信息属性放在上面
|
||||||
|
|
||||||
public void setSimulationRunResp(SimulationRunResp simulationRunResp) {
|
public void setSimulationRunResp(SimulationRunResp simulationRunResp) {
|
||||||
|
|||||||
@@ -258,4 +258,16 @@ public class DataClientFeignClientImpl implements IDataFeignClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SdmResponse copyFileToTask(CopyFileToTaskReq req) {
|
||||||
|
SdmResponse response;
|
||||||
|
try {
|
||||||
|
response = dataClient.copyFileToTask(req);
|
||||||
|
return response;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("复制文件失败:", e);
|
||||||
|
return SdmResponse.failed("复制文件失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.sdm.common.entity.req.system.QueryGroupDetailReq;
|
|||||||
import com.sdm.common.entity.req.system.UserListReq;
|
import com.sdm.common.entity.req.system.UserListReq;
|
||||||
import com.sdm.common.entity.req.system.UserQueryReq;
|
import com.sdm.common.entity.req.system.UserQueryReq;
|
||||||
import com.sdm.common.entity.resp.PageDataResp;
|
import com.sdm.common.entity.resp.PageDataResp;
|
||||||
|
import com.sdm.common.entity.resp.system.CIDStaffResp;
|
||||||
import com.sdm.common.entity.resp.system.CIDUserResp;
|
import com.sdm.common.entity.resp.system.CIDUserResp;
|
||||||
import com.sdm.common.entity.resp.system.SysUserGroupDetailResp;
|
import com.sdm.common.entity.resp.system.SysUserGroupDetailResp;
|
||||||
import com.sdm.common.feign.inter.system.ISysUserFeignClient;
|
import com.sdm.common.feign.inter.system.ISysUserFeignClient;
|
||||||
@@ -98,4 +99,19 @@ public class SysUserFeignClientImpl implements ISysUserFeignClient {
|
|||||||
return SdmResponse.failed("根据角色编码查询用户失败");
|
return SdmResponse.failed("根据角色编码查询用户失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SdmResponse<List<CIDStaffResp>> listUserDetailByIds(UserQueryReq req) {
|
||||||
|
SdmResponse<List<CIDStaffResp>> sdmResponse;
|
||||||
|
try {
|
||||||
|
sdmResponse = sysUserClient.listUserDetailByIds(req);
|
||||||
|
if (!sdmResponse.isSuccess() || sdmResponse.getData() == null){
|
||||||
|
return SdmResponse.failed("查询用户详细信息失败");
|
||||||
|
}
|
||||||
|
return sdmResponse;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("查询用户详细信息失败", e);
|
||||||
|
return SdmResponse.failed("查询用户详细信息失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,4 +97,7 @@ public interface IDataFeignClient {
|
|||||||
@GetMapping("/data/getMultipartFileByFileId")
|
@GetMapping("/data/getMultipartFileByFileId")
|
||||||
SdmResponse<byte[]> getMultipartFileByFileId(@RequestParam(value = "fileId") @Validated Long fileId);
|
SdmResponse<byte[]> getMultipartFileByFileId(@RequestParam(value = "fileId") @Validated Long fileId);
|
||||||
|
|
||||||
|
@PostMapping("/data/copyFileToTask")
|
||||||
|
SdmResponse copyFileToTask(@RequestBody CopyFileToTaskReq req);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.sdm.common.entity.req.system.LaunchApproveReq;
|
|||||||
import com.sdm.common.entity.req.system.QueryGroupDetailReq;
|
import com.sdm.common.entity.req.system.QueryGroupDetailReq;
|
||||||
import com.sdm.common.entity.req.system.UserListReq;
|
import com.sdm.common.entity.req.system.UserListReq;
|
||||||
import com.sdm.common.entity.req.system.UserQueryReq;
|
import com.sdm.common.entity.req.system.UserQueryReq;
|
||||||
|
import com.sdm.common.entity.resp.system.CIDStaffResp;
|
||||||
import com.sdm.common.entity.resp.system.CIDUserResp;
|
import com.sdm.common.entity.resp.system.CIDUserResp;
|
||||||
import com.sdm.common.entity.resp.PageDataResp;
|
import com.sdm.common.entity.resp.PageDataResp;
|
||||||
import com.sdm.common.entity.resp.system.SysUserGroupDetailResp;
|
import com.sdm.common.entity.resp.system.SysUserGroupDetailResp;
|
||||||
@@ -36,4 +37,7 @@ public interface ISysUserFeignClient {
|
|||||||
|
|
||||||
@GetMapping("/user/getUserByRoleCode")
|
@GetMapping("/user/getUserByRoleCode")
|
||||||
SdmResponse<List<Long>> getUserByRoleCode(@RequestParam("roleCode") String roleCode, @RequestParam("tenantId") Long tenantId);
|
SdmResponse<List<Long>> getUserByRoleCode(@RequestParam("roleCode") String roleCode, @RequestParam("tenantId") Long tenantId);
|
||||||
|
|
||||||
|
@PostMapping("/user/listUserDetailByIds")
|
||||||
|
SdmResponse<List<CIDStaffResp>> listUserDetailByIds(@RequestBody UserQueryReq req);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -603,4 +603,10 @@ public class DataFileController implements IDataFeignClient {
|
|||||||
return IDataFileService.queryFileIdByNodeId(queryFileIdReq);
|
return IDataFileService.queryFileIdByNodeId(queryFileIdReq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/copyFileToTask")
|
||||||
|
@Operation(summary = "复制关键结果文件到task下", description = "复制关键结果文件到task下")
|
||||||
|
public SdmResponse copyFileToTask(@RequestBody CopyFileToTaskReq req) {
|
||||||
|
return IDataFileService.copyFileToTask(req);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.sdm.data.service;
|
|||||||
|
|
||||||
import com.sdm.common.common.SdmResponse;
|
import com.sdm.common.common.SdmResponse;
|
||||||
import com.sdm.common.entity.req.data.*;
|
import com.sdm.common.entity.req.data.*;
|
||||||
|
import com.sdm.common.entity.req.data.CopyFileToTaskReq;
|
||||||
import com.sdm.common.entity.req.system.LaunchApproveReq;
|
import com.sdm.common.entity.req.system.LaunchApproveReq;
|
||||||
import com.sdm.common.entity.resp.PageDataResp;
|
import com.sdm.common.entity.resp.PageDataResp;
|
||||||
import com.sdm.common.entity.resp.data.BatchAddFileInfoResp;
|
import com.sdm.common.entity.resp.data.BatchAddFileInfoResp;
|
||||||
@@ -336,6 +337,8 @@ public interface IDataFileService {
|
|||||||
|
|
||||||
SdmResponse<List<BatchAddFileInfoResp>> batchAddFileInfo(UploadFilesReq req);
|
SdmResponse<List<BatchAddFileInfoResp>> batchAddFileInfo(UploadFilesReq req);
|
||||||
|
|
||||||
|
SdmResponse copyFileToTask(CopyFileToTaskReq req);
|
||||||
|
|
||||||
SdmResponse<ChunkUploadMinioFileResp> chunkUploadToMinio(ChunkUploadMinioFileReq req);
|
SdmResponse<ChunkUploadMinioFileResp> chunkUploadToMinio(ChunkUploadMinioFileReq req);
|
||||||
|
|
||||||
SdmResponse chunkUploadCallback(KnowledgeCallBackReq req);
|
SdmResponse chunkUploadCallback(KnowledgeCallBackReq req);
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ public interface IMinioService {
|
|||||||
void renameFile(String oldObjectName, String newObjectName, String bucketName);
|
void renameFile(String oldObjectName, String newObjectName, String bucketName);
|
||||||
|
|
||||||
|
|
||||||
|
void copyFile(String oldObjectName, String newObjectName, String bucketName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从MinIO下载文件
|
* 从MinIO下载文件
|
||||||
* @param objectName 文件名(objectKey)
|
* @param objectName 文件名(objectKey)
|
||||||
|
|||||||
@@ -2,13 +2,15 @@ package com.sdm.data.service.impl;
|
|||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.sdm.common.common.SdmResponse;
|
import com.sdm.common.common.SdmResponse;
|
||||||
import com.sdm.common.common.ThreadLocalContext;
|
import com.sdm.common.common.ThreadLocalContext;
|
||||||
|
import com.sdm.common.entity.enums.NodeTypeEnum;
|
||||||
import com.sdm.common.entity.req.export.FileAnalysisExportExcelFormat;
|
import com.sdm.common.entity.req.export.FileAnalysisExportExcelFormat;
|
||||||
import com.sdm.common.entity.req.export.FileAnalysisExportExcelParam;
|
import com.sdm.common.entity.req.export.FileAnalysisExportExcelParam;
|
||||||
import com.sdm.common.entity.req.export.TaskAnalysisExportExcelParam;
|
|
||||||
import com.sdm.common.entity.resp.PageDataResp;
|
import com.sdm.common.entity.resp.PageDataResp;
|
||||||
|
import com.sdm.common.utils.FileSizeUtils;
|
||||||
import com.sdm.common.utils.PageUtils;
|
import com.sdm.common.utils.PageUtils;
|
||||||
import com.sdm.common.utils.SystemOperate;
|
import com.sdm.common.utils.SystemOperate;
|
||||||
import com.sdm.data.bo.ExportOperate;
|
import com.sdm.data.bo.ExportOperate;
|
||||||
@@ -33,6 +35,7 @@ import java.io.BufferedReader;
|
|||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -75,6 +78,10 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
|
|||||||
return PageUtils.getJsonObjectSdmResponse(new ArrayList<>(), new PageInfo<>());
|
return PageUtils.getJsonObjectSdmResponse(new ArrayList<>(), new PageInfo<>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 查询层级是task 只查task目录下的直系文件
|
||||||
|
if (NodeTypeEnum.TASK.getValue().equals(getSimulationTaskFileReq.getLevel())) {
|
||||||
|
return getTaskLevelFile(getSimulationTaskFileReq, queryBigFileReq);
|
||||||
|
}
|
||||||
|
|
||||||
// 2. 调用大文件查询服务
|
// 2. 调用大文件查询服务
|
||||||
SdmResponse<PageDataResp<List<FileStorage>>> searchResult = dataStorageAnalysis.listBigFile(queryBigFileReq);
|
SdmResponse<PageDataResp<List<FileStorage>>> searchResult = dataStorageAnalysis.listBigFile(queryBigFileReq);
|
||||||
@@ -103,6 +110,27 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService {
|
|||||||
return PageUtils.getJsonObjectSdmResponse(finalResultList, pageInfo);
|
return PageUtils.getJsonObjectSdmResponse(finalResultList, pageInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SdmResponse<PageDataResp<List<SimulationTaskResultCurveResp>>> getTaskLevelFile(GetSimulationTaskFileReq req, QueryBigFileReq queryBigFileReq) {
|
||||||
|
PageHelper.startPage(req.getCurrent(), req.getSize());
|
||||||
|
List<FileMetadataInfo> fileMetadataInfoList = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getParentId, queryBigFileReq.getDirId())
|
||||||
|
.eq(FileMetadataInfo::getFileType, req.getFileBizType())
|
||||||
|
.eq(FileMetadataInfo::getTenantId, ThreadLocalContext.getTenantId())
|
||||||
|
.list();
|
||||||
|
PageInfo<FileMetadataInfo> page = new PageInfo<>(fileMetadataInfoList);
|
||||||
|
long total = page.getTotal();
|
||||||
|
|
||||||
|
List<SimulationTaskResultCurveResp> resultCurveRespList = fileMetadataInfoList.stream().map(i -> {
|
||||||
|
SimulationTaskResultCurveResp resultCurveResp = new SimulationTaskResultCurveResp();
|
||||||
|
BeanUtils.copyProperties(i,resultCurveResp);
|
||||||
|
resultCurveResp.setFormatFileSize(FileSizeUtils.formatFileSize(BigDecimal.valueOf(i.getFileSize())));
|
||||||
|
return resultCurveResp;
|
||||||
|
}).toList();
|
||||||
|
|
||||||
|
PageInfo<SimulationTaskResultCurveResp> page1 = new PageInfo<>(resultCurveRespList);
|
||||||
|
page1.setTotal(total);
|
||||||
|
return PageUtils.getJsonObjectSdmResponse(resultCurveRespList, page1);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SdmResponse getCSVData(List<Long> fileIds) {
|
public SdmResponse getCSVData(List<Long> fileIds) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import com.sdm.common.entity.constants.PermConstants;
|
|||||||
import com.sdm.common.entity.enums.*;
|
import com.sdm.common.entity.enums.*;
|
||||||
import com.sdm.common.entity.pojo.task.TaskBaseInfo;
|
import com.sdm.common.entity.pojo.task.TaskBaseInfo;
|
||||||
import com.sdm.common.entity.req.data.*;
|
import com.sdm.common.entity.req.data.*;
|
||||||
|
import com.sdm.common.entity.req.data.CopyFileToTaskReq;
|
||||||
import com.sdm.common.entity.req.project.SpdmNodeListReq;
|
import com.sdm.common.entity.req.project.SpdmNodeListReq;
|
||||||
import com.sdm.common.entity.req.system.LaunchApproveReq;
|
import com.sdm.common.entity.req.system.LaunchApproveReq;
|
||||||
import com.sdm.common.entity.req.system.UserListReq;
|
import com.sdm.common.entity.req.system.UserListReq;
|
||||||
@@ -1028,6 +1029,37 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SdmResponse copyFileToTask(CopyFileToTaskReq req) {
|
||||||
|
// 源文件
|
||||||
|
FileMetadataInfo sourceMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getId, req.getSourceFileId()).one();
|
||||||
|
if (ObjectUtils.isEmpty(sourceMetadataInfo)) {
|
||||||
|
return SdmResponse.failed("源文件不存在");
|
||||||
|
}
|
||||||
|
boolean hasWritePermission = fileUserPermissionService.hasFilePermission(sourceMetadataInfo.getId(), ThreadLocalContext.getUserId(), FilePermissionEnum.WRITE);
|
||||||
|
if (!hasWritePermission) {
|
||||||
|
return SdmResponse.failed("没有写入权限");
|
||||||
|
}
|
||||||
|
|
||||||
|
String oldDirMinioObjectKey = sourceMetadataInfo.getObjectKey();
|
||||||
|
// 要挪到的task文件夹
|
||||||
|
FileMetadataInfo targetParentMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getRelatedResourceUuid, req.getParentUuid()).one();
|
||||||
|
// 新的路径名
|
||||||
|
String newDirMinioObjectKey = getDirMinioObjectKey(targetParentMetadataInfo.getObjectKey() + sourceMetadataInfo.getOriginalName());
|
||||||
|
|
||||||
|
try {
|
||||||
|
minioService.copyFile(oldDirMinioObjectKey, newDirMinioObjectKey,sourceMetadataInfo.getBucketName());
|
||||||
|
// 创建目录元数据并保存到数据库
|
||||||
|
FileMetadataInfo fileInfo = createFileMetadata(newDirMinioObjectKey, sourceMetadataInfo.getOriginalName(), sourceMetadataInfo.getFileType(),
|
||||||
|
null, null, null, targetParentMetadataInfo.getId(), sourceMetadataInfo.getFileSize());
|
||||||
|
fileMetadataInfoService.save(fileInfo);
|
||||||
|
return SdmResponse.success("复制文件成功");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("复制文件失败", e);
|
||||||
|
throw new RuntimeException("复制文件失败: " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SdmResponse zipFiles(ZipFilesReq req) {
|
public SdmResponse zipFiles(ZipFilesReq req) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -1296,6 +1296,11 @@ public class SystemFileIDataFileServiceImpl implements IDataFileService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SdmResponse copyFileToTask(CopyFileToTaskReq req) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// 未实现,勿使用
|
// 未实现,勿使用
|
||||||
@Override
|
@Override
|
||||||
public SdmResponse chunkUploadCallback(KnowledgeCallBackReq req) {
|
public SdmResponse chunkUploadCallback(KnowledgeCallBackReq req) {
|
||||||
|
|||||||
@@ -381,6 +381,41 @@ public class MinioService implements IMinioService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void copyFile(String oldObjectName, String newObjectName, String bucketName) {
|
||||||
|
try {
|
||||||
|
bucketName = getBucketName(bucketName);
|
||||||
|
// 参数校验
|
||||||
|
if (!StringUtils.hasText(oldObjectName)) {
|
||||||
|
throw new IllegalArgumentException("原文件名不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!StringUtils.hasText(newObjectName)) {
|
||||||
|
throw new IllegalArgumentException("新文件名不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查原文件是否存在
|
||||||
|
StatObjectResponse stat = minioClient.statObject(
|
||||||
|
StatObjectArgs.builder()
|
||||||
|
.bucket(bucketName)
|
||||||
|
.object(oldObjectName)
|
||||||
|
.build());
|
||||||
|
|
||||||
|
// 复制文件到新名称
|
||||||
|
minioClient.copyObject(
|
||||||
|
CopyObjectArgs.builder()
|
||||||
|
.bucket(bucketName)
|
||||||
|
.object(newObjectName)
|
||||||
|
.source(CopySource.builder()
|
||||||
|
.bucket(bucketName)
|
||||||
|
.object(oldObjectName)
|
||||||
|
.build())
|
||||||
|
.build());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("复制文件失败: 从 {} 到 {}", oldObjectName, newObjectName, e);
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从MinIO下载文件
|
* 从MinIO下载文件
|
||||||
|
|||||||
@@ -116,4 +116,8 @@ public class LyricVProjectToDM {
|
|||||||
@TableField(value = "sign_num")
|
@TableField(value = "sign_num")
|
||||||
public Integer signNum;
|
public Integer signNum;
|
||||||
|
|
||||||
|
@Schema(description = "项目承接主体")
|
||||||
|
@TableField(value = "project_undertaker")
|
||||||
|
public String projectUndertaker;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
package com.sdm.outbridge.mode;
|
package com.sdm.outbridge.mode;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
public class LyricAttachmentInfo {
|
public class LyricAttachmentInfo {
|
||||||
|
|
||||||
public int id;
|
public int id;
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.sdm.project.config;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户定制化查询需求附件配置
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ConfigurationProperties(prefix = "project")
|
||||||
|
@Component
|
||||||
|
public class CustomDemandFileConfig {
|
||||||
|
/**
|
||||||
|
* 客户配置映射
|
||||||
|
*/
|
||||||
|
private Map<String, CustomerProperties> customers = new HashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前活跃客户配置
|
||||||
|
*/
|
||||||
|
private String activeCustomer;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class CustomerProperties {
|
||||||
|
private boolean enabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
package com.sdm.project.controller;
|
package com.sdm.project.controller;
|
||||||
|
|
||||||
import com.sdm.common.common.SdmResponse;
|
import com.sdm.common.common.SdmResponse;
|
||||||
|
import com.sdm.common.entity.req.data.QueryDirReq;
|
||||||
import com.sdm.common.entity.req.data.UploadFilesReq;
|
import com.sdm.common.entity.req.data.UploadFilesReq;
|
||||||
import com.sdm.common.entity.req.task.DemandExportExcelFormat;
|
import com.sdm.common.entity.req.task.DemandExportExcelFormat;
|
||||||
import com.sdm.common.entity.req.task.TaskExportExcelFormat;
|
import com.sdm.common.entity.req.task.TaskExportExcelFormat;
|
||||||
|
import com.sdm.common.entity.resp.PageDataResp;
|
||||||
|
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
|
||||||
import com.sdm.common.feign.inter.data.IDataFeignClient;
|
import com.sdm.common.feign.inter.data.IDataFeignClient;
|
||||||
import com.sdm.common.log.annotation.SysLog;
|
import com.sdm.common.log.annotation.SysLog;
|
||||||
import com.sdm.project.model.bo.ModifyProjectNode;
|
import com.sdm.project.model.bo.ModifyProjectNode;
|
||||||
@@ -19,6 +22,8 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/demand")
|
@RequestMapping("/demand")
|
||||||
@@ -116,4 +121,10 @@ public class SimulationDemandController {
|
|||||||
return demandService.detail(demandId);
|
return demandService.detail(demandId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/queryDemandFiles")
|
||||||
|
@Operation(summary = "查询需求待办附件")
|
||||||
|
public SdmResponse<PageDataResp<List<FileMetadataInfoResp>>> queryDemandFiles(@RequestBody QueryDirReq req) {
|
||||||
|
return demandService.queryDemandFiles(req);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -365,4 +365,12 @@ public class SimulationRunController implements ISimulationRunFeignClient {
|
|||||||
return runService.detail(req);
|
return runService.detail(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 归档算例下指标图片报告等结果数据到任务下
|
||||||
|
*/
|
||||||
|
@PostMapping("/synKeyResultToTask")
|
||||||
|
public SdmResponse synKeyResultToTask(@RequestBody KeyResultReq req) {
|
||||||
|
return runService.synKeyResultToTask(req);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -96,4 +96,8 @@ public class KeyResultReq extends BaseReq {
|
|||||||
@Schema(description = "所属任务uuid")
|
@Schema(description = "所属任务uuid")
|
||||||
private String taskId;
|
private String taskId;
|
||||||
|
|
||||||
|
// ------------------归档关键结果使用-----------------
|
||||||
|
@Schema(description = "关键结果uuid列表")
|
||||||
|
private List<String> keyResultIdList;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
package com.sdm.project.service;
|
package com.sdm.project.service;
|
||||||
|
|
||||||
import com.sdm.common.common.SdmResponse;
|
import com.sdm.common.common.SdmResponse;
|
||||||
|
import com.sdm.common.entity.req.data.QueryDirReq;
|
||||||
import com.sdm.common.entity.req.data.UploadFilesReq;
|
import com.sdm.common.entity.req.data.UploadFilesReq;
|
||||||
import com.sdm.common.entity.req.task.DemandExportExcelFormat;
|
import com.sdm.common.entity.req.task.DemandExportExcelFormat;
|
||||||
import com.sdm.common.entity.req.task.TaskExportExcelFormat;
|
import com.sdm.common.entity.req.task.TaskExportExcelFormat;
|
||||||
|
import com.sdm.common.entity.resp.PageDataResp;
|
||||||
|
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
|
||||||
import com.sdm.project.model.req.*;
|
import com.sdm.project.model.req.*;
|
||||||
import com.sdm.project.model.vo.SpdmDemandVo;
|
import com.sdm.project.model.vo.SpdmDemandVo;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
@@ -40,4 +43,6 @@ public interface IDemandService {
|
|||||||
|
|
||||||
List<SpdmDemandVo> getAllList();
|
List<SpdmDemandVo> getAllList();
|
||||||
|
|
||||||
|
SdmResponse<PageDataResp<List<FileMetadataInfoResp>>> queryDemandFiles(QueryDirReq req);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,4 +104,6 @@ public interface ISimulationRunService extends IService<SimulationRun> {
|
|||||||
|
|
||||||
SdmResponse<TaskRunPo> detail(SpdmTaskRunReq req);
|
SdmResponse<TaskRunPo> detail(SpdmTaskRunReq req);
|
||||||
|
|
||||||
|
SdmResponse synKeyResultToTask(KeyResultReq req);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.sdm.project.service.handle;
|
||||||
|
|
||||||
|
import com.sdm.common.common.SdmResponse;
|
||||||
|
import com.sdm.common.entity.req.data.QueryDirReq;
|
||||||
|
import com.sdm.common.entity.resp.PageDataResp;
|
||||||
|
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
|
||||||
|
import com.sdm.common.feign.impl.data.DataClientFeignClientImpl;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class BasicQueryDemandFileHandler implements IQueryDemandFileHandler {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DataClientFeignClientImpl dataFeignClient;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SdmResponse<PageDataResp<List<FileMetadataInfoResp>>> queryDemandFile(QueryDirReq req) {
|
||||||
|
log.info("BasicQueryDemandFileSender start....");
|
||||||
|
return dataFeignClient.queryDir(req);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean supports(String customerCode) {
|
||||||
|
return "basic".equals(customerCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.sdm.project.service.handle;
|
||||||
|
|
||||||
|
import com.sdm.common.common.SdmResponse;
|
||||||
|
import com.sdm.common.entity.req.data.QueryDirReq;
|
||||||
|
import com.sdm.common.entity.resp.PageDataResp;
|
||||||
|
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface IQueryDemandFileHandler {
|
||||||
|
/**
|
||||||
|
* 查询需求附件
|
||||||
|
*/
|
||||||
|
SdmResponse<PageDataResp<List<FileMetadataInfoResp>>> queryDemandFile(QueryDirReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否支持该客户
|
||||||
|
*/
|
||||||
|
boolean supports(String customerCode);
|
||||||
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
package com.sdm.project.service.handle;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import com.sdm.common.common.SdmResponse;
|
||||||
|
import com.sdm.common.entity.enums.FileBizTypeEnum;
|
||||||
|
import com.sdm.common.entity.req.data.QueryDirReq;
|
||||||
|
import com.sdm.common.entity.resp.PageDataResp;
|
||||||
|
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
|
||||||
|
import com.sdm.common.utils.PageUtils;
|
||||||
|
import com.sdm.outbridge.mode.LyricAttachmentInfo;
|
||||||
|
import com.sdm.outbridge.service.lyric.LyricIntegrateService;
|
||||||
|
import com.sdm.project.model.entity.SimulationDemand;
|
||||||
|
import com.sdm.project.service.ISimulationLyricDemandService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class LyricQueryDemandFileHandler implements IQueryDemandFileHandler {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LyricIntegrateService lyricIntegrateService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BasicQueryDemandFileHandler basicSender;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISimulationLyricDemandService lyricDemandService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SdmResponse<PageDataResp<List<FileMetadataInfoResp>>> queryDemandFile(QueryDirReq req) {
|
||||||
|
log.info("LyricQueryDemandFileSender start....");
|
||||||
|
List<FileMetadataInfoResp> resultList = new ArrayList<>();
|
||||||
|
// 1、先调用基础查询文件接口
|
||||||
|
QueryDirReq newReq = new QueryDirReq();
|
||||||
|
BeanUtils.copyProperties(req,newReq);
|
||||||
|
newReq.setCurrent(1);
|
||||||
|
newReq.setSize(999);
|
||||||
|
SdmResponse<PageDataResp<List<FileMetadataInfoResp>>> basicResp = basicSender.queryDemandFile(newReq);
|
||||||
|
if (basicResp.isSuccess() && basicResp.getData() != null && basicResp.getData().getData() != null) {
|
||||||
|
resultList.addAll(basicResp.getData().getData());
|
||||||
|
}
|
||||||
|
|
||||||
|
SimulationDemand demand = lyricDemandService.lambdaQuery().eq(SimulationDemand::getUuid, req.getUuid()).one();
|
||||||
|
if (demand != null) {
|
||||||
|
// 2、再调用利元亨查询待办接口
|
||||||
|
SdmResponse sdmResponse = lyricIntegrateService.queryTodoAttachments(Integer.valueOf(demand.getDemandCode()));
|
||||||
|
if (sdmResponse.isSuccess() && sdmResponse.getData() != null) {
|
||||||
|
JSONArray jsonArray = (JSONArray) sdmResponse.getData();
|
||||||
|
List<LyricAttachmentInfo> attachmentInfos = jsonArray.toJavaList(LyricAttachmentInfo.class);
|
||||||
|
if (CollectionUtils.isNotEmpty(attachmentInfos)) {
|
||||||
|
for (LyricAttachmentInfo attachmentInfo : attachmentInfos) {
|
||||||
|
FileMetadataInfoResp fileMetadataInfoResp = new FileMetadataInfoResp();
|
||||||
|
fileMetadataInfoResp.setFileResource("EP");
|
||||||
|
fileMetadataInfoResp.setOriginalName(attachmentInfo.getName());
|
||||||
|
fileMetadataInfoResp.setFileUrl(attachmentInfo.getFilePath());
|
||||||
|
fileMetadataInfoResp.setFileType(FileBizTypeEnum.DEMAND_FILE.getValue());
|
||||||
|
fileMetadataInfoResp.setFileSize(attachmentInfo.getFileSize());
|
||||||
|
fileMetadataInfoResp.setCreatorName(StringUtils.isNotBlank(attachmentInfo.getCreateBy()) ? attachmentInfo.getCreateBy() : "EPUser");
|
||||||
|
fileMetadataInfoResp.setCreateTime(LocalDateTime.parse(attachmentInfo.getCreateTime()));
|
||||||
|
fileMetadataInfoResp.setUpdateTime(LocalDateTime.parse(attachmentInfo.getModifyTime()));
|
||||||
|
resultList.add(fileMetadataInfoResp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 手动分页
|
||||||
|
int pageSize = req.getSize();
|
||||||
|
int currentPage = req.getCurrent();
|
||||||
|
int fromIndex = (currentPage - 1) * pageSize;
|
||||||
|
int toIndex = Math.min(fromIndex + pageSize, resultList.size());
|
||||||
|
|
||||||
|
List<FileMetadataInfoResp> pagedResults = new ArrayList<>();
|
||||||
|
if (fromIndex < resultList.size()) {
|
||||||
|
pagedResults = resultList.subList(fromIndex, toIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
PageInfo<FileMetadataInfoResp> pageInfo = new PageInfo<>(pagedResults);
|
||||||
|
pageInfo.setTotal(resultList.size());
|
||||||
|
pageInfo.setPageNum(currentPage);
|
||||||
|
pageInfo.setPageSize(pageSize);
|
||||||
|
|
||||||
|
return PageUtils.getJsonObjectSdmResponse(pagedResults, pageInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean supports(String customerCode) {
|
||||||
|
return "lyric".equals(customerCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.sdm.project.service.handle;
|
||||||
|
|
||||||
|
import com.sdm.project.config.CustomDemandFileConfig;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class QueryDemandFileSelector {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private List<IQueryDemandFileHandler> handlers;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BasicQueryDemandFileHandler basicHandler;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CustomDemandFileConfig demandFileConfig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据客户选择发送策略
|
||||||
|
*/
|
||||||
|
public IQueryDemandFileHandler selectHandler() {
|
||||||
|
String customerCode = demandFileConfig.getActiveCustomer();
|
||||||
|
if (customerCode == null) {
|
||||||
|
return basicHandler;
|
||||||
|
}
|
||||||
|
CustomDemandFileConfig.CustomerProperties config = demandFileConfig.getCustomers().get(customerCode);
|
||||||
|
// 如果配置不存在或未启用,直接返回基础策略
|
||||||
|
if (config == null || !config.isEnabled()) {
|
||||||
|
return basicHandler;
|
||||||
|
}
|
||||||
|
for (IQueryDemandFileHandler sender : handlers) {
|
||||||
|
if (sender.supports(customerCode)) {
|
||||||
|
return sender;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return basicHandler;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -12,12 +12,15 @@ import com.sdm.common.entity.enums.FilePermissionEnum;
|
|||||||
import com.sdm.common.entity.enums.MessageTemplateEnum;
|
import com.sdm.common.entity.enums.MessageTemplateEnum;
|
||||||
import com.sdm.common.entity.enums.ValueTypeEnum;
|
import com.sdm.common.entity.enums.ValueTypeEnum;
|
||||||
import com.sdm.common.entity.req.data.CreateDirReq;
|
import com.sdm.common.entity.req.data.CreateDirReq;
|
||||||
|
import com.sdm.common.entity.req.data.QueryDirReq;
|
||||||
import com.sdm.common.entity.req.data.UpdatePermissionReq;
|
import com.sdm.common.entity.req.data.UpdatePermissionReq;
|
||||||
import com.sdm.common.entity.req.data.UploadFilesReq;
|
import com.sdm.common.entity.req.data.UploadFilesReq;
|
||||||
import com.sdm.common.entity.req.system.SendMsgReq;
|
import com.sdm.common.entity.req.system.SendMsgReq;
|
||||||
import com.sdm.common.entity.req.system.UserQueryReq;
|
import com.sdm.common.entity.req.system.UserQueryReq;
|
||||||
import com.sdm.common.entity.req.task.DemandExportExcelFormat;
|
import com.sdm.common.entity.req.task.DemandExportExcelFormat;
|
||||||
import com.sdm.common.entity.req.task.DemandExportExcelParam;
|
import com.sdm.common.entity.req.task.DemandExportExcelParam;
|
||||||
|
import com.sdm.common.entity.resp.PageDataResp;
|
||||||
|
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
|
||||||
import com.sdm.common.entity.resp.project.SpdmTaskVo;
|
import com.sdm.common.entity.resp.project.SpdmTaskVo;
|
||||||
import com.sdm.common.entity.resp.system.CIDUserResp;
|
import com.sdm.common.entity.resp.system.CIDUserResp;
|
||||||
import com.sdm.common.feign.impl.data.DataClientFeignClientImpl;
|
import com.sdm.common.feign.impl.data.DataClientFeignClientImpl;
|
||||||
@@ -41,6 +44,8 @@ import com.sdm.project.model.po.TaskNodePo;
|
|||||||
import com.sdm.project.model.req.*;
|
import com.sdm.project.model.req.*;
|
||||||
import com.sdm.project.model.vo.*;
|
import com.sdm.project.model.vo.*;
|
||||||
import com.sdm.project.service.IDemandService;
|
import com.sdm.project.service.IDemandService;
|
||||||
|
import com.sdm.project.service.handle.IQueryDemandFileHandler;
|
||||||
|
import com.sdm.project.service.handle.QueryDemandFileSelector;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
@@ -86,6 +91,9 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private MessageFeignClientImpl messageFeignClient;
|
private MessageFeignClientImpl messageFeignClient;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private QueryDemandFileSelector queryDemandFileSelector;
|
||||||
|
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
@@ -1008,6 +1016,12 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
|
|||||||
return mapper.getAllList();
|
return mapper.getAllList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SdmResponse<PageDataResp<List<FileMetadataInfoResp>>> queryDemandFiles(QueryDirReq req) {
|
||||||
|
IQueryDemandFileHandler queryDemandFileHandler = queryDemandFileSelector.selectHandler();
|
||||||
|
return queryDemandFileHandler.queryDemandFile(req);
|
||||||
|
}
|
||||||
|
|
||||||
private String getLastNodeId(TaskNode taskNode) {
|
private String getLastNodeId(TaskNode taskNode) {
|
||||||
List<String> tagListProperty;
|
List<String> tagListProperty;
|
||||||
String lastNodeId = "";
|
String lastNodeId = "";
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.sdm.project.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.sdm.project.dao.SimulationDemandMapper;
|
||||||
|
import com.sdm.project.model.entity.SimulationDemand;
|
||||||
|
import com.sdm.project.service.ISimulationLyricDemandService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ISimulationLyricDemandServiceImpl extends ServiceImpl<SimulationDemandMapper, SimulationDemand> implements ISimulationLyricDemandService {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -477,6 +477,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
|||||||
phaseNode.setUuid(RandomUtil.generateString(32));
|
phaseNode.setUuid(RandomUtil.generateString(32));
|
||||||
phaseNode.setNodeCode(currentPhase);
|
phaseNode.setNodeCode(currentPhase);
|
||||||
phaseNode.setNodeName(currentPhase);
|
phaseNode.setNodeName(currentPhase);
|
||||||
|
phaseNode.setNodeType(NodeTypeEnum.PHASE.getValue());
|
||||||
phaseNode.setCreateTime(curDateStr);
|
phaseNode.setCreateTime(curDateStr);
|
||||||
phaseNode.setCreator(jobNumber);
|
phaseNode.setCreator(jobNumber);
|
||||||
phaseNode.setTenantId(tenantId);
|
phaseNode.setTenantId(tenantId);
|
||||||
@@ -492,6 +493,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
|||||||
machineNode.setUuid(RandomUtil.generateString(32));
|
machineNode.setUuid(RandomUtil.generateString(32));
|
||||||
machineNode.setNodeCode(machineNumber);
|
machineNode.setNodeCode(machineNumber);
|
||||||
machineNode.setNodeName(projectStationByMachineNumberList.get(0).getMachineName());
|
machineNode.setNodeName(projectStationByMachineNumberList.get(0).getMachineName());
|
||||||
|
machineNode.setNodeType(NodeTypeEnum.MACHINE.getValue());
|
||||||
machineNode.setCreateTime(curDateStr);
|
machineNode.setCreateTime(curDateStr);
|
||||||
machineNode.setCreator(jobNumber);
|
machineNode.setCreator(jobNumber);
|
||||||
machineNode.setTenantId(tenantId);
|
machineNode.setTenantId(tenantId);
|
||||||
@@ -503,6 +505,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
|
|||||||
workspaceNode.setUuid(RandomUtil.generateString(32));
|
workspaceNode.setUuid(RandomUtil.generateString(32));
|
||||||
workspaceNode.setNodeCode(lyricVProjectStationToDM.getStationNum());
|
workspaceNode.setNodeCode(lyricVProjectStationToDM.getStationNum());
|
||||||
workspaceNode.setNodeName(lyricVProjectStationToDM.getStationName());
|
workspaceNode.setNodeName(lyricVProjectStationToDM.getStationName());
|
||||||
|
workspaceNode.setNodeType(NodeTypeEnum.WORKSPACE.getValue());
|
||||||
workspaceNode.setCreateTime(curDateStr);
|
workspaceNode.setCreateTime(curDateStr);
|
||||||
workspaceNode.setCreator(jobNumber);
|
workspaceNode.setCreator(jobNumber);
|
||||||
workspaceNode.setTenantId(tenantId);
|
workspaceNode.setTenantId(tenantId);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.sdm.common.config.FlowableConfig;
|
|||||||
import com.sdm.common.entity.constants.NumberConstants;
|
import com.sdm.common.entity.constants.NumberConstants;
|
||||||
import com.sdm.common.entity.enums.ApproveTypeEnum;
|
import com.sdm.common.entity.enums.ApproveTypeEnum;
|
||||||
import com.sdm.common.entity.enums.DirTypeEnum;
|
import com.sdm.common.entity.enums.DirTypeEnum;
|
||||||
|
import com.sdm.common.entity.enums.FileBizTypeEnum;
|
||||||
import com.sdm.common.entity.enums.NodeTypeEnum;
|
import com.sdm.common.entity.enums.NodeTypeEnum;
|
||||||
import com.sdm.common.entity.flowable.dto.FlowElementDTO;
|
import com.sdm.common.entity.flowable.dto.FlowElementDTO;
|
||||||
import com.sdm.common.entity.flowable.dto.ProcessDefinitionDTO;
|
import com.sdm.common.entity.flowable.dto.ProcessDefinitionDTO;
|
||||||
@@ -64,6 +65,7 @@ import org.apache.commons.lang3.ObjectUtils;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.mock.web.MockMultipartFile;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@@ -1421,8 +1423,28 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
|
|||||||
try {
|
try {
|
||||||
// 获取临时路径中脚本生成的报告
|
// 获取临时路径中脚本生成的报告
|
||||||
String reportName = "report_" +
|
String reportName = "report_" +
|
||||||
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) +
|
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) +
|
||||||
".docx";
|
".docx";
|
||||||
|
// 上传到算例下的报告文件夹下
|
||||||
|
KeyResultReq resultReq = new KeyResultReq();
|
||||||
|
resultReq.setKeyResultType(KeyResultTypeEnum.DOCUMENT.getKeyResultType());
|
||||||
|
resultReq.setRunId(req.getRunId());
|
||||||
|
resultReq.setName(reportName);
|
||||||
|
// 创建临时MultipartFile
|
||||||
|
MockMultipartFile multipartFile = new MockMultipartFile(
|
||||||
|
reportName,
|
||||||
|
reportName,
|
||||||
|
"application/json",
|
||||||
|
fileData);
|
||||||
|
resultReq.setFile(multipartFile);
|
||||||
|
resultReq.setFileName(reportName);
|
||||||
|
resultReq.setFileType(FileBizTypeEnum.REPORT_FILE.getValue());
|
||||||
|
SdmResponse sdmResponse = addSimulationKeyResult(resultReq);
|
||||||
|
if (!sdmResponse.isSuccess()) {
|
||||||
|
throw new RuntimeException("生成自动化报告上传报告结果目录失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 下载到本地
|
||||||
FileInputStream fileInputStream = new FileInputStream(TEMP_REPORT_PATH + randomId + File.separator + reportName);
|
FileInputStream fileInputStream = new FileInputStream(TEMP_REPORT_PATH + randomId + File.separator + reportName);
|
||||||
fileData = fileInputStream.readAllBytes();
|
fileData = fileInputStream.readAllBytes();
|
||||||
// 设置响应头
|
// 设置响应头
|
||||||
@@ -1900,4 +1922,49 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
|
|||||||
return SdmResponse.success(taskRunPo);
|
return SdmResponse.success(taskRunPo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SdmResponse synKeyResultToTask(KeyResultReq req) {
|
||||||
|
SimulationRun simulationRun = this.lambdaQuery().eq(SimulationRun::getUuid, req.getRunId()).one();
|
||||||
|
if (simulationRun == null) {
|
||||||
|
return SdmResponse.failed("算例不存在");
|
||||||
|
}
|
||||||
|
if (CollectionUtils.isNotEmpty(req.getKeyResultIdList())) {
|
||||||
|
for (String keyResultId : req.getKeyResultIdList()) {
|
||||||
|
SimulationRunKeyResult keyResult = simulationKeyResultService.lambdaQuery().eq(SimulationRunKeyResult::getUuid, keyResultId).one();
|
||||||
|
if (keyResult == null) {
|
||||||
|
return SdmResponse.failed("关键结果不存在");
|
||||||
|
}
|
||||||
|
// 将算例下的指标分析值同步到任务指标
|
||||||
|
if (KeyResultTypeEnum.VALUE.getKeyResultType().equals(keyResult.getKeyResultType())) {
|
||||||
|
List<SimulationPerformance> runPerformanceList = simulationPerformanceService.lambdaQuery()
|
||||||
|
.eq(SimulationPerformance::getRunId, req.getRunId())
|
||||||
|
.list();
|
||||||
|
Map<String, String> resultValueMap = new HashMap<>();
|
||||||
|
if (CollectionUtils.isNotEmpty(runPerformanceList)) {
|
||||||
|
resultValueMap = runPerformanceList.stream().collect(Collectors.toMap(SimulationPerformance::getNodeCode, SimulationPerformance::getResultValue));
|
||||||
|
}
|
||||||
|
List<SimulationPerformance> simulationTaskPerformances = simulationPerformanceService.lambdaQuery()
|
||||||
|
.eq(SimulationPerformance::getTaskId, simulationRun.getTaskId())
|
||||||
|
.isNull(SimulationPerformance::getRunId)
|
||||||
|
.list();
|
||||||
|
if (CollectionUtils.isNotEmpty(simulationTaskPerformances)) {
|
||||||
|
for (SimulationPerformance simulationTaskPerformance : simulationTaskPerformances) {
|
||||||
|
simulationTaskPerformance.setResultValue(resultValueMap.get(simulationTaskPerformance.getNodeCode()));
|
||||||
|
}
|
||||||
|
simulationPerformanceService.updateBatchById(simulationTaskPerformances);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 图片/曲线/报告结果同步
|
||||||
|
CopyFileToTaskReq copyFileToTaskReq = new CopyFileToTaskReq();
|
||||||
|
copyFileToTaskReq.setSourceFileId(keyResult.getFileId());
|
||||||
|
copyFileToTaskReq.setParentUuid(simulationRun.getTaskId());
|
||||||
|
SdmResponse response = dataFeignClient.copyFileToTask(copyFileToTaskReq);
|
||||||
|
if (!response.isSuccess()) {
|
||||||
|
return SdmResponse.failed("归档文件失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SdmResponse.success();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -141,4 +141,12 @@ YA:
|
|||||||
|
|
||||||
scheduler:
|
scheduler:
|
||||||
todo: 10.10.00
|
todo: 10.10.00
|
||||||
project: 10.11.00
|
project: 10.11.00
|
||||||
|
|
||||||
|
project:
|
||||||
|
active-customer: basic
|
||||||
|
customers:
|
||||||
|
basic:
|
||||||
|
enabled: true
|
||||||
|
lyric:
|
||||||
|
enabled: false
|
||||||
@@ -141,4 +141,12 @@ YA:
|
|||||||
|
|
||||||
scheduler:
|
scheduler:
|
||||||
todo: 10.10.00
|
todo: 10.10.00
|
||||||
project: 10.11.00
|
project: 10.11.00
|
||||||
|
|
||||||
|
project:
|
||||||
|
active-customer: basic
|
||||||
|
customers:
|
||||||
|
basic:
|
||||||
|
enabled: true
|
||||||
|
lyric:
|
||||||
|
enabled: false
|
||||||
@@ -145,4 +145,12 @@ YA:
|
|||||||
|
|
||||||
scheduler:
|
scheduler:
|
||||||
todo: 20.00.00
|
todo: 20.00.00
|
||||||
project: 20.00.00
|
project: 20.00.00
|
||||||
|
|
||||||
|
project:
|
||||||
|
active-customer: basic
|
||||||
|
customers:
|
||||||
|
basic:
|
||||||
|
enabled: true
|
||||||
|
lyric:
|
||||||
|
enabled: false
|
||||||
@@ -142,4 +142,12 @@ YA:
|
|||||||
|
|
||||||
scheduler:
|
scheduler:
|
||||||
todo: 20.00.00
|
todo: 20.00.00
|
||||||
project: 20.00.00
|
project: 20.00.00
|
||||||
|
|
||||||
|
project:
|
||||||
|
active-customer: lyric
|
||||||
|
customers:
|
||||||
|
basic:
|
||||||
|
enabled: false
|
||||||
|
lyric:
|
||||||
|
enabled: true
|
||||||
@@ -141,4 +141,12 @@ YA:
|
|||||||
|
|
||||||
scheduler:
|
scheduler:
|
||||||
todo: 10.10.00
|
todo: 10.10.00
|
||||||
project: 10.11.00
|
project: 10.11.00
|
||||||
|
|
||||||
|
project:
|
||||||
|
active-customer: basic
|
||||||
|
customers:
|
||||||
|
basic:
|
||||||
|
enabled: true
|
||||||
|
lyric:
|
||||||
|
enabled: false
|
||||||
Reference in New Issue
Block a user