fix:交付物审批改造

This commit is contained in:
2025-12-02 17:02:10 +08:00
parent c8d4b64d24
commit 79f2db5053
16 changed files with 250 additions and 37 deletions

View File

@@ -6,9 +6,11 @@ import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.entity.req.data.KnowledgeCallBackReq;
import com.sdm.common.entity.req.data.QueryDirReq;
import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.common.entity.req.system.LaunchApproveReq;
import com.sdm.common.entity.resp.PageDataResp;
import com.sdm.common.entity.resp.data.BatchAddFileInfoResp;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
import com.sdm.common.feign.inter.project.ISimulationRunFeignClient;
import com.sdm.project.model.entity.SimulationRun;
import com.sdm.project.model.entity.SimulationRunKeyResult;
import com.sdm.project.model.req.*;
@@ -32,7 +34,7 @@ import java.util.List;
@RestController
@RequestMapping(value = "/run")
@Tag(name = "仿真任务策划管理", description = "仿真任务策划管理管理相关接口")
public class SimulationRunController {
public class SimulationRunController implements ISimulationRunFeignClient {
@Resource
private ISimulationRunService runService;
@@ -138,6 +140,26 @@ public class SimulationRunController {
return runService.batchAddSimulationKeyResult(req);
}
/**
* 提交交付物审批
*
* @return
*/
@PostMapping(value = "/deliverableApprove")
public SdmResponse deliverableApprove(@RequestBody DeliverableApproveReq req) {
return runService.deliverableApprove(req);
}
/**
* 交付物审批回调
*
* @return
*/
@PostMapping(value = "/deliverableApproveCallback")
public SdmResponse deliverableApproveCallback(@RequestBody LaunchApproveReq req) {
return runService.deliverableApproveCallback(req);
}
/**
* 算例关键结果查询
*
@@ -154,7 +176,7 @@ public class SimulationRunController {
* @return
*/
@PostMapping(value = "/queryKeyResultAndTaskInfo")
public SdmResponse<KeyResultAndTaskInfoResp> queryKeyResultAndTaskInfo(@RequestBody KeyResultReq req) {
public SdmResponse<PageDataResp<List<KeyResultAndTaskInfoResp>>> queryKeyResultAndTaskInfo(@RequestBody KeyResultReq req) {
return runService.queryKeyResultAndTaskInfo(req);
}

View File

@@ -0,0 +1,19 @@
package com.sdm.project.model.bo;
import lombok.Data;
import java.util.List;
/* 交付物审批流程,传递给电子流平台内容变化的数据 */
@Data
public class ApprovalDeliverableContentsModel {
/**
* 任务uuid
*/
private String taskId;
/**
* 难度系数
*/
private Float difficult;
}

View File

@@ -195,5 +195,8 @@ public class SimulationTask implements Serializable {
@TableField("tag10")
private String tag10;
@TableField("cidFlowId")
private String cidFlowId;
}

View File

@@ -0,0 +1,21 @@
package com.sdm.project.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class DeliverableApproveReq {
@Schema(description = "任务uuid")
private String taskId;
@Schema(description = "难度系数")
private Float difficult;
@Schema(description = "交付物审批模板id")
private String templateId;
@Schema(description = "交付物审批模板名称")
private String templateName;
}

View File

@@ -1,5 +1,6 @@
package com.sdm.project.model.resp;
import com.sdm.common.entity.resp.data.SimulationTaskResultCurveResp;
import com.sdm.project.model.entity.SimulationTask;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -52,4 +53,7 @@ public class KeyResultAndTaskInfoResp {
@Schema(description = "任务信息")
private SimulationTask simulationTask;
@Schema(description = "文件信息")
private SimulationTaskResultCurveResp fileInfo;
}

View File

@@ -6,6 +6,7 @@ import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.entity.req.data.KnowledgeCallBackReq;
import com.sdm.common.entity.req.data.QueryDirReq;
import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.common.entity.req.system.LaunchApproveReq;
import com.sdm.common.entity.resp.PageDataResp;
import com.sdm.common.entity.resp.data.BatchAddFileInfoResp;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
@@ -51,9 +52,13 @@ public interface ISimulationRunService extends IService<SimulationRun> {
SdmResponse<List<BatchAddFileInfoResp>> batchAddSimulationKeyResult(KeyResultReq req);
SdmResponse deliverableApprove(DeliverableApproveReq req);
SdmResponse deliverableApproveCallback(LaunchApproveReq req);
SdmResponse<PageDataResp<List<SimulationRunKeyResult>>> listSimulationKeyResult(KeyResultReq req);
SdmResponse<KeyResultAndTaskInfoResp> queryKeyResultAndTaskInfo(KeyResultReq req);
SdmResponse<PageDataResp<List<KeyResultAndTaskInfoResp>>> queryKeyResultAndTaskInfo(KeyResultReq req);
SdmResponse deleteSimulationKeyResult(KeyResultReq req);

View File

@@ -10,6 +10,8 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.constants.NumberConstants;
import com.sdm.common.entity.enums.ApproveTypeEnum;
import com.sdm.common.entity.enums.DirTypeEnum;
import com.sdm.common.entity.enums.NodeTypeEnum;
import com.sdm.common.entity.flowable.dto.FlowElementDTO;
@@ -17,17 +19,21 @@ import com.sdm.common.entity.flowable.dto.NodeStructureInfo;
import com.sdm.common.entity.flowable.dto.ProcessDefinitionDTO;
import com.sdm.common.entity.req.capability.FlowNodeDto;
import com.sdm.common.entity.req.data.*;
import com.sdm.common.entity.req.system.LaunchApproveReq;
import com.sdm.common.entity.req.system.UserQueryReq;
import com.sdm.common.entity.resp.PageDataResp;
import com.sdm.common.entity.resp.capability.FlowTemplateResp;
import com.sdm.common.entity.resp.data.BatchAddFileInfoResp;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
import com.sdm.common.entity.resp.data.SimulationTaskResultCurveResp;
import com.sdm.common.entity.resp.flowable.ProcessInstanceDetailResponse;
import com.sdm.common.entity.resp.flowable.ProcessInstanceResp;
import com.sdm.common.entity.resp.system.CIDUserResp;
import com.sdm.common.feign.impl.capability.SimulationFlowFeignClientImpl;
import com.sdm.common.feign.impl.data.DataAnalysisFeignClientImpl;
import com.sdm.common.feign.impl.data.DataClientFeignClientImpl;
import com.sdm.common.feign.impl.flowable.FlowableClientFeignClientImpl;
import com.sdm.common.feign.impl.system.ApproveFeignClientImpl;
import com.sdm.common.feign.impl.system.SysUserFeignClientImpl;
import com.sdm.common.feign.inter.capability.ISimulationFlowFeignClient;
import com.sdm.common.feign.inter.data.IDataFeignClient;
@@ -37,8 +43,10 @@ import com.sdm.common.utils.RandomUtil;
import com.sdm.project.common.KeyResultTypeEnum;
import com.sdm.project.common.MemberTypeEnum;
import com.sdm.project.common.RunPerformanceStatusEnum;
import com.sdm.project.common.TaskExeStatusEnum;
import com.sdm.project.dao.SimulationProjectMapper;
import com.sdm.project.dao.SimulationRunMapper;
import com.sdm.project.model.bo.ApprovalDeliverableContentsModel;
import com.sdm.project.model.bo.TaskNode;
import com.sdm.project.model.bo.TaskNodeTag;
import com.sdm.project.model.entity.*;
@@ -111,6 +119,12 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
@Autowired
private SimulationFlowFeignClientImpl flowFeignClient;
@Autowired
private ApproveFeignClientImpl approveFeignClient;
@Autowired
private DataAnalysisFeignClientImpl analysisFeignClient;
private static final String TEMP_REPORT_PATH = "/opt/report/";
private int getCurrentNodeDepth(NodeAllBase eachNode) {
@@ -781,6 +795,73 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
return SdmResponse.success(new ArrayList<>());
}
@Override
public SdmResponse deliverableApprove(DeliverableApproveReq req) {
SimulationTask simulationTask = simulationTaskService.lambdaQuery().eq(SimulationTask::getUuid, req.getTaskId()).one();
if (simulationTask != null) {
ApprovalDeliverableContentsModel contentsModel = new ApprovalDeliverableContentsModel();
contentsModel.setTaskId(req.getTaskId());
contentsModel.setDifficult(req.getDifficult());
// 发起审批
String cidFlowId = launchParamApprove(req.getTemplateId(),req.getTemplateName(), JSONObject.toJSONString(contentsModel),1);
if (StringUtils.isEmpty(cidFlowId)) {
return SdmResponse.failed("发起评审失败");
}
simulationTask.setCidFlowId(cidFlowId);
simulationTaskService.updateById(simulationTask);
return SdmResponse.success(cidFlowId);
}
return SdmResponse.success();
}
@Override
public SdmResponse deliverableApproveCallback(LaunchApproveReq req) {
SdmResponse response = SdmResponse.success();
int approveStatus = req.approveStatus;
String approveContent = req.approveContents;
JSONObject contentObj = JSONObject.parseObject(approveContent);
if(contentObj != null && contentObj.containsKey("taskId"))
{
String taskId = contentObj.getString("taskId");
Float difficult = contentObj.getFloat("difficult");
SimulationTask simulationTask = simulationTaskService.lambdaQuery().eq(SimulationTask::getUuid, taskId).one();
if(simulationTask != null)
{
// 审批通过 部署流程 保存部署流程部署id和流程定义id
if (NumberConstants.TWO == approveStatus) {
simulationTask.setDifficult(difficult);
simulationTask.setProgress(100);
simulationTask.setExeStatus(TaskExeStatusEnum.CLOSED.getCode());
simulationTaskService.updateById(simulationTask);
}
}
}
return response;
}
private String launchParamApprove(String templateId, String templateName,String approveContents,int approveAction) {
LaunchApproveReq req = new LaunchApproveReq();
req.templateId = templateId;
req.templateName = templateName;
req.approveContents = approveContents;
req.approveAction = approveAction;
req.approveStatus = 1;
req.approveType = ApproveTypeEnum.DELIVERABLE_APPROVE.getCode();
req.approveTitle = "交付物评审";
req.tenantId = ThreadLocalContext.getTenantId();
req.userId = ThreadLocalContext.getUserId();
req.creator = ThreadLocalContext.getUserId();
SdmResponse response = approveFeignClient.launchApproval(req);
if(response.isSuccess()){
// 成功
String cidFlowId = Optional.ofNullable(response.getData())
.map(Object::toString)
.orElse("");
return cidFlowId;
}
return "";
}
@Override
public SdmResponse<PageDataResp<List<SimulationRunKeyResult>>> listSimulationKeyResult(KeyResultReq req) {
PageHelper.startPage(req.getCurrent(), req.getSize());
@@ -791,17 +872,30 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
}
@Override
public SdmResponse<KeyResultAndTaskInfoResp> queryKeyResultAndTaskInfo(KeyResultReq req) {
KeyResultAndTaskInfoResp keyResultAndTaskInfoResp = new KeyResultAndTaskInfoResp();
SimulationRunKeyResult simulationRunKeyResult = simulationKeyResultService.lambdaQuery().eq(SimulationRunKeyResult::getFileId, req.getFileId()).one();
if (simulationRunKeyResult != null) {
BeanUtils.copyProperties(simulationRunKeyResult, keyResultAndTaskInfoResp);
SimulationRun simulationRun = this.lambdaQuery().eq(SimulationRun::getUuid, simulationRunKeyResult.getRunId()).one();
if (simulationRun != null) {
keyResultAndTaskInfoResp.setSimulationTask(simulationTaskService.lambdaQuery().eq(SimulationTask::getUuid, simulationRun.getTaskId()).one());
public SdmResponse<PageDataResp<List<KeyResultAndTaskInfoResp>>> queryKeyResultAndTaskInfo(KeyResultReq req) {
List<KeyResultAndTaskInfoResp> respList = new ArrayList<>();
GetSimulationTaskFileReq taskFileReq = new GetSimulationTaskFileReq();
taskFileReq.setUuid(req.getTaskId());
taskFileReq.setFileBizType(req.getFileType());
taskFileReq.setCurrent(req.getCurrent());
taskFileReq.setSize(req.getSize());
SdmResponse<PageDataResp<List<SimulationTaskResultCurveResp>>> sdmResponse = analysisFeignClient.getSimulationTaskFile(taskFileReq);
if (sdmResponse.getData() != null && sdmResponse.getData().getData() != null) {
List<SimulationTaskResultCurveResp> resultCurveResps = sdmResponse.getData().getData();
for (SimulationTaskResultCurveResp resultCurveResp : resultCurveResps) {
KeyResultAndTaskInfoResp keyResultAndTaskInfoResp = new KeyResultAndTaskInfoResp();
keyResultAndTaskInfoResp.setFileInfo(resultCurveResp);
SimulationRunKeyResult simulationRunKeyResult = simulationKeyResultService.lambdaQuery().eq(SimulationRunKeyResult::getFileId, resultCurveResp.getId()).one();
if (simulationRunKeyResult != null) {
BeanUtils.copyProperties(simulationRunKeyResult, keyResultAndTaskInfoResp);
}
respList.add(keyResultAndTaskInfoResp);
}
}
return SdmResponse.success(keyResultAndTaskInfoResp);
PageInfo<KeyResultAndTaskInfoResp> page = new PageInfo<>(respList);
return PageUtils.getJsonObjectSdmResponse(respList, page);
}
@Override