Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
ALTER TABLE simulation_demand ADD demandSource varchar(12) NULL COMMENT '需求来源:自建、同步';
|
||||
ALTER TABLE simulation_demand ADD contentHash varchar(64) NULL COMMENT 'hash值,同步待办时判断是否需要更新';
|
||||
ALTER TABLE simulation_demand ADD contentHash varchar(64) NULL COMMENT 'hash值,同步待办时判断是否需要更新';
|
||||
ALTER TABLE simulation_demand MODIFY COLUMN demandSource varchar(16) DEFAULT 'DM';
|
||||
@@ -1,2 +1,3 @@
|
||||
ALTER TABLE simulation_node ADD projectId INT NULL COMMENT '利元亨项目id';
|
||||
ALTER TABLE simulation_node ADD projectSource varchar(16) NULL COMMENT '项目来源:自建、同步';
|
||||
ALTER TABLE simulation_node ADD projectSource varchar(16) NULL COMMENT '项目来源:自建、同步';
|
||||
ALTER TABLE simulation_node MODIFY COLUMN projectSource varchar(16) DEFAULT 'DM';
|
||||
@@ -95,4 +95,17 @@ public class FlowableClientFeignClientImpl implements IFlowableFeignClient {
|
||||
}
|
||||
return SdmResponse.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse retryFailedNode(String processInstanceId, String failNodeId) {
|
||||
SdmResponse response;
|
||||
try {
|
||||
response = flowableFeignClient.retryFailedNode(processInstanceId, failNodeId);
|
||||
log.info("重试当前失败节点:"+ response);
|
||||
return response;
|
||||
} catch (Exception e) {
|
||||
log.error("重试当前失败节点失败", e);
|
||||
return SdmResponse.failed("重试当前失败节点失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,4 +36,7 @@ public interface IFlowableFeignClient {
|
||||
@PostMapping("/process/asyncCallback")
|
||||
SdmResponse asyncCallback(@RequestBody AsyncCallbackRequest request);
|
||||
|
||||
@PostMapping("/process/retryFailedNode")
|
||||
SdmResponse retryFailedNode(@RequestParam String processInstanceId, @RequestParam String failNodeId);
|
||||
|
||||
}
|
||||
|
||||
@@ -687,6 +687,16 @@ public class ExcelUtil {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, i, i));
|
||||
}
|
||||
sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, 21, 21));
|
||||
sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, 22, 22));
|
||||
sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, 23, 23));
|
||||
sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, 29, 29));
|
||||
sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, 30, 30));
|
||||
sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, 31, 31));
|
||||
sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, 32, 32));
|
||||
sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, 33, 33));
|
||||
sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, 34, 34));
|
||||
sheet.addMergedRegion(new CellRangeAddress(startIndex, endIndex, 35, 35));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,4 +16,10 @@ public class SimulationParameterItem {
|
||||
|
||||
@Schema(description = "描述")
|
||||
private String description;
|
||||
|
||||
@Schema(description = "创建人")
|
||||
private Long creatorId;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private String createTime;
|
||||
}
|
||||
@@ -15,6 +15,7 @@ import com.sdm.common.entity.enums.SimulationParameterDataTypeEnum;
|
||||
import com.sdm.common.entity.req.system.LaunchApproveReq;
|
||||
import com.sdm.common.feign.impl.system.ApproveFeignClientImpl;
|
||||
import com.sdm.common.service.UserNameCacheService;
|
||||
import com.sdm.common.utils.DateUtils;
|
||||
import com.sdm.data.dao.SimulationParameterLibraryMapper;
|
||||
import com.sdm.data.model.bo.ApprovalParamContentsModel;
|
||||
import com.sdm.data.model.entity.FileMetadataInfo;
|
||||
@@ -35,6 +36,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@@ -98,7 +100,21 @@ public class SimulationParameterLibraryServiceImpl extends ServiceImpl<Simulatio
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public SdmResponse addLibraryCategoryObject(SimulationParameterLibraryCategoryObjectReq req) {
|
||||
try {
|
||||
SdmResponse<Long> integerSdmResponse = dataFileService.uploadSimulationParamFile(req.getFile());
|
||||
// 添加创建人和创建时间
|
||||
String originalJson = new String(req.getFile().getBytes(), StandardCharsets.UTF_8);
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
JsonNode jsonNode = objectMapper.readTree(originalJson);
|
||||
List<Map<String, Object>> parameterJsonValueFromJsonNode = parseJsonArray(jsonNode);
|
||||
if (!CollectionUtils.isEmpty(parameterJsonValueFromJsonNode)) {
|
||||
parameterJsonValueFromJsonNode.forEach(map -> {
|
||||
map.put("creatorId", ThreadLocalContext.getUserId());
|
||||
map.put("createTime", DateUtils.format(new Date(), DateUtils.PATTERN_DEFAULT));
|
||||
});
|
||||
}
|
||||
String content = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(parameterJsonValueFromJsonNode);
|
||||
MultipartFile file = new MockMultipartFile(req.getFileName(), req.getFile().getOriginalFilename(), req.getFile().getContentType(), content.getBytes(StandardCharsets.UTF_8));
|
||||
|
||||
SdmResponse<Long> integerSdmResponse = dataFileService.uploadSimulationParamFile(file);
|
||||
Long fileId = integerSdmResponse.getData();
|
||||
|
||||
SimulationParameterLibraryCategoryObject simulationParameterLibraryCategoryObject = new SimulationParameterLibraryCategoryObject();
|
||||
@@ -321,7 +337,21 @@ public class SimulationParameterLibraryServiceImpl extends ServiceImpl<Simulatio
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
JsonNode jsonNode = objectMapper.readTree(minioInputStream);
|
||||
List<Map<String, Object>> parameterJsonValueFromJsonNode = parseJsonArray(jsonNode);
|
||||
if (!CollectionUtils.isEmpty(parameterJsonValueFromJsonNode)) {
|
||||
// 将 List<Long> userIds 转成set
|
||||
Set<Long> userIdsSet = new HashSet<>();
|
||||
for (Map<String, Object> map : parameterJsonValueFromJsonNode) {
|
||||
userIdsSet.add((Long) map.get("creatorId"));
|
||||
}
|
||||
Map<Long, String> longStringMap = userNameCacheService.batchGetUserNames(userIdsSet);
|
||||
for (Map<String, Object> map : parameterJsonValueFromJsonNode) {
|
||||
map.put("creator", longStringMap.get((Long) map.get("creatorId")));
|
||||
simulationParameterLibraryCategoryObjectResp.setCreateTime(simulationParameterLibraryCategoryObject.getCreateTime());
|
||||
}
|
||||
}
|
||||
simulationParameterLibraryCategoryObjectResp.setParameterJsonValue(parameterJsonValueFromJsonNode);
|
||||
|
||||
|
||||
} else {
|
||||
// 兜底操作,可能是清库了,或者数据被删除了,删除掉参数对象的json文件信息
|
||||
simulationParameterLibraryCategoryObject.setFileId(null);
|
||||
@@ -453,6 +483,13 @@ public class SimulationParameterLibraryServiceImpl extends ServiceImpl<Simulatio
|
||||
if (fileMetadataInfo == null) {
|
||||
return SdmResponse.failed("文件元数据不存在");
|
||||
}
|
||||
// 给页面上新增的对象参数添加创建人和时间
|
||||
req.getParameterList().forEach(item -> {
|
||||
if (item.getCreatorId() == null) {
|
||||
item.setCreatorId(ThreadLocalContext.getUserId());
|
||||
item.setCreateTime(DateUtils.format(new Date(), DateUtils.PATTERN_DEFAULT));
|
||||
}
|
||||
});
|
||||
|
||||
// 将参数列表直接转换为JSON
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
@@ -365,11 +365,11 @@ public class LyricIntegrateService {
|
||||
public SdmResponse pushFreeLinkMsg(FreelinkAndDingdingInformReq req){
|
||||
SdmResponse response = SdmResponse.success();
|
||||
|
||||
String token = getHKCloudToken(req.getJobNo());
|
||||
// String token = getHKCloudToken(req.getJobNo());
|
||||
|
||||
if (token == null || token.isEmpty()) {
|
||||
return SdmResponse.failed("获取海葵云token失败");
|
||||
}
|
||||
// if (token == null || token.isEmpty()) {
|
||||
// return SdmResponse.failed("获取海葵云token失败");
|
||||
// }
|
||||
|
||||
FreeLinkMsg freeLinkMsg = req.getFreeLinkMsg();
|
||||
List<NameValuePair> params = new ArrayList<>();
|
||||
@@ -383,7 +383,7 @@ public class LyricIntegrateService {
|
||||
String getProcessDataUrl=FREELINK_URL+FREELINK_PUSH_MSG_SUFFIX;
|
||||
Map<String, String> headerMap = new HashMap<>();
|
||||
headerMap.put("Content-Type","application/x-www-form-urlencoded");
|
||||
headerMap.put("authorization", token);
|
||||
// headerMap.put("authorization", token);
|
||||
|
||||
try {
|
||||
String result = HttpUtil.httpPostForm(getProcessDataUrl, headerMap, params);
|
||||
|
||||
@@ -19,7 +19,7 @@ spring:
|
||||
appKey : e9eb516aa02a43a29e227a0d901ec5f1
|
||||
appSecret : 9fac43db08634aaf8a9fe5fb9468de9d
|
||||
# 海葵云url
|
||||
HK_CLOUD_URL : https://v15.lyh.haikuidcloud.com
|
||||
HK_CLOUD_URL : https://v15.lyh.haikuicloud.com
|
||||
# 1. 海葵云获取用户token url后缀
|
||||
HK_USER_TOKEN_URL_SUFFIX: /merchant/openapi/user/login/jobNo
|
||||
# 2. 海葵云获取单个用户信息url后缀
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package com.sdm.pbs.controller;
|
||||
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.outbridge.entity.*;
|
||||
import com.sdm.outbridge.mode.FreelinkAndDingdingInformReq;
|
||||
import com.sdm.outbridge.mode.GetProcessDataReq;
|
||||
import com.sdm.outbridge.mode.HkUploadFileReq;
|
||||
import com.sdm.outbridge.service.lyric.LyricIntegrateService;
|
||||
import com.sdm.outbridge.service.lyric.*;
|
||||
import com.sdm.pbs.service.TestService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -17,13 +19,30 @@ import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/sec")
|
||||
@RequestMapping
|
||||
@Tag(name = "测试外部模块系统交互", description = "测试外部模块系统交互")
|
||||
public class TestSecondDbController {
|
||||
|
||||
/*利元亨现场对接接口方法*/
|
||||
@Autowired
|
||||
private LyricIntegrateService lyricIntegrateService;
|
||||
@Autowired
|
||||
private LyricVMainPlanDMService lyricVMainPlanDMService;
|
||||
@Autowired
|
||||
private LyricVPdtDmService lyricVPdtDmService;
|
||||
@Autowired
|
||||
private LyricVProductionLineToDmService lyricVProductionLineToDmService;
|
||||
@Autowired
|
||||
private LyricVProjectBatchToDmService lyricVProjectBatchToDmService;
|
||||
@Autowired
|
||||
private LyricVProjectToDmService lyricVProjectToDmService;
|
||||
@Autowired
|
||||
private LyricVTodoInfoService lyricVTodoInfoService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private TestService testService;
|
||||
|
||||
|
||||
|
||||
// mock
|
||||
@@ -83,48 +102,57 @@ public class TestSecondDbController {
|
||||
}
|
||||
|
||||
|
||||
// /*现场查询视图的方法mock */
|
||||
// @GetMapping("/getTodoInfoDm") no usages
|
||||
// @Operation(summary = "查询代办")
|
||||
// public SdmResponse<List<LyricVTodoEmulationInfoDM>> getTodoInfoDm() {
|
||||
// // 查询从数据源
|
||||
// List<LyricVTodoEmulationInfoDM> todoInfoList = lyricVTodoInfoService.lambdaQuery().last(lastSql: "limit 2").list();
|
||||
// return SdmResponse.success(todoInfoList);
|
||||
// }
|
||||
//
|
||||
// @GetMapping("/getPdtDm") no usages
|
||||
// @Operation(summary = "查询项目Pdt")
|
||||
// public SdmResponse<List<LyricVPdtToDM>> getPdtDm() {
|
||||
// // 查询从数据源
|
||||
// List<LyricVPdtToDM> lyricVPdtToDMList = LyricVPdtDmService.lambdaQuery().last(lastSql: "limit 2").list();
|
||||
// return SdmResponse.success(lyricVPdtToDMList);
|
||||
// }
|
||||
//
|
||||
// @GetMapping("/getMain") no usages
|
||||
// @Operation(summary = "查询主计划")
|
||||
// public SdmResponse<List<LyricVMainPlanDM>> getMain() {
|
||||
// // 查询从数据源
|
||||
// List<LyricVMainPlanDM> mainPlanDMSList = lyricVMainPlanDMService.lambdaQuery().last(lastSql: "limit 2").list();
|
||||
// return SdmResponse.success(mainPlanDMSList);
|
||||
// }
|
||||
//
|
||||
// @GetMapping("/getProductLine") no usages
|
||||
// @Operation(summary = "查询产线信息")
|
||||
// public SdmResponse<List<LyricVProductionLineToDM>> getProductLine() {
|
||||
// // 查询从数据源
|
||||
// List<LyricVProductionLineToDM> productionLineToDMList = lyricVProductionLineToDmService
|
||||
// .lambdaQuery().last(lastSql: "limit 2").list();
|
||||
// return SdmResponse.success(productionLineToDMList);
|
||||
// }
|
||||
//
|
||||
// @GetMapping("/getProjectInfo") no usages
|
||||
// @Operation(summary = "查询项目信息")
|
||||
// public SdmResponse<List<LyricVProjectToDM>> getProjectInfo() {
|
||||
// // 查询从数据源
|
||||
// List<LyricVProjectToDM> projectToDmList = LyricVProjectToDmService
|
||||
// .lambdaQuery().last(lastSql: "limit 3").list();
|
||||
// return SdmResponse.success(projectToDmList);
|
||||
// }
|
||||
/*现场查询视图的方法mock */
|
||||
@GetMapping("/getTodoInfoDm")
|
||||
@Operation(summary = "查询代办")
|
||||
public SdmResponse<List<LyricVTodoEmulationInfoDM>> getTodoInfoDm() {
|
||||
// 查询从数据源
|
||||
List<LyricVTodoEmulationInfoDM> todoInfoList = lyricVTodoInfoService.lambdaQuery().last( "limit 2").list();
|
||||
return SdmResponse.success(todoInfoList);
|
||||
}
|
||||
|
||||
@GetMapping("/getPdtDm")
|
||||
@Operation(summary = "查询项目Pdt")
|
||||
public SdmResponse<List<LyricVPdtToDM>> getPdtDm() {
|
||||
// 查询从数据源
|
||||
List<LyricVPdtToDM> lyricVPdtToDMList =lyricVPdtDmService.lambdaQuery().last( "limit 2").list();
|
||||
return SdmResponse.success(lyricVPdtToDMList);
|
||||
}
|
||||
|
||||
@GetMapping("/getMain")
|
||||
@Operation(summary = "查询主计划")
|
||||
public SdmResponse<List<LyricVMainPlanDM>> getMain() {
|
||||
// 查询从数据源
|
||||
List<LyricVMainPlanDM> mainPlanDMSList = lyricVMainPlanDMService.lambdaQuery().last("limit 2").list();
|
||||
return SdmResponse.success(mainPlanDMSList);
|
||||
}
|
||||
|
||||
@GetMapping("/getProductLine")
|
||||
@Operation(summary = "查询产线信息")
|
||||
public SdmResponse<List<LyricVProductionLineToDM>> getProductLine() {
|
||||
// 查询从数据源
|
||||
List<LyricVProductionLineToDM> productionLineToDMList = lyricVProductionLineToDmService
|
||||
.lambdaQuery().last( "limit 2").list();
|
||||
return SdmResponse.success(productionLineToDMList);
|
||||
}
|
||||
|
||||
@GetMapping("/getProjectBatch")
|
||||
@Operation(summary = "查询批次信息")
|
||||
public SdmResponse<List<LyricVProjectBatchToDM>> getProjectBatch() {
|
||||
// 查询从数据源
|
||||
List<LyricVProjectBatchToDM> list = lyricVProjectBatchToDmService
|
||||
.lambdaQuery().last("limit 2").list();
|
||||
return SdmResponse.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/getProjectInfo")
|
||||
@Operation(summary = "查询项目信息")
|
||||
public SdmResponse<List<LyricVProjectToDM>> getProjectInfo() {
|
||||
// 查询从数据源
|
||||
List<LyricVProjectToDM> projectToDmList =
|
||||
lyricVProjectToDmService.lambdaQuery().last("limit 3").list();
|
||||
return SdmResponse.success(projectToDmList);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -138,4 +138,15 @@ security:
|
||||
paths:
|
||||
- /pbs/jobFileCallback
|
||||
- /pbs/netTest
|
||||
- /pbs/adapterSubmitHpcJob
|
||||
- /pbs/adapterSubmitHpcJob
|
||||
- /getHkUserInfo
|
||||
- /uploadHkFile
|
||||
- /getProcessData
|
||||
- /pushFreeLinkMsg
|
||||
- /queryTodoAttachments
|
||||
- /getTodoInfoDm
|
||||
- /getPdtDm
|
||||
- /getMain
|
||||
- /getProductLine
|
||||
- /getProjectBatch
|
||||
- /getProjectInfo
|
||||
@@ -257,6 +257,16 @@ public class SimulationRunController implements ISimulationRunFeignClient {
|
||||
public SdmResponse<FlowInfoDto> listFlowNodes(@RequestBody SpdmTaskRunReq req) {
|
||||
return runService.listFlowNodes(req);
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务执行 重试失败节点
|
||||
*/
|
||||
@SysLog("任务执行 重试失败节点")
|
||||
@PostMapping("/retryFailedNode")
|
||||
public SdmResponse retryFailedNode(@RequestParam String processInstanceId, @RequestParam String failNodeId) {
|
||||
return runService.retryFailedNode(processInstanceId, failNodeId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 流程关联报告
|
||||
*
|
||||
|
||||
@@ -99,4 +99,8 @@ public class SpdmNodeDetailVo extends BaseEntity {
|
||||
*/
|
||||
private String currentPhase;
|
||||
|
||||
private Integer projectId;
|
||||
|
||||
private String projectSource;
|
||||
|
||||
}
|
||||
|
||||
@@ -79,6 +79,8 @@ public interface ISimulationRunService extends IService<SimulationRun> {
|
||||
|
||||
SdmResponse<FlowInfoDto> listFlowNodes(SpdmTaskRunReq req);
|
||||
|
||||
SdmResponse retryFailedNode(String processInstanceId, String failNodeId);
|
||||
|
||||
SdmResponse flowRelateReport(SpdmReportReq req);
|
||||
|
||||
SdmResponse<List<SimulationBaseQuantities>> listQuantities();
|
||||
|
||||
@@ -1504,6 +1504,11 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
|
||||
return SdmResponse.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse retryFailedNode(String processInstanceId, String failNodeId) {
|
||||
return flowableFeignClient.retryFailedNode(processInstanceId, failNodeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse flowRelateReport(SpdmReportReq req) {
|
||||
generateReport(req,null);
|
||||
|
||||
Reference in New Issue
Block a user