commit by lidongyang

This commit is contained in:
2025-12-10 11:36:06 +08:00
parent 364128f374
commit ffb5c44915
11 changed files with 279 additions and 17 deletions

View File

@@ -0,0 +1,21 @@
package com.sdm.project.common;
import lombok.Getter;
@Getter
public enum ApprovalStatusEnum {
ING("进行中", "1"),
PASSED("评审通过", "2"),
REJECTED("评审驳回", "3");
private final String name;
private final String code;
ApprovalStatusEnum(String name, String code) {
this.name = name;
this.code = code;
}
}

View File

@@ -251,5 +251,15 @@ public class SimulationRunController implements ISimulationRunFeignClient {
public SdmResponse<FlowInfoDto> listFlowNodes(@RequestBody SpdmTaskRunReq req) {
return runService.listFlowNodes(req);
}
/**
* 流程关联报告
*
* @return
*/
@PostMapping("/flowRelateReport")
@Operation(summary = "流程关联报告", description = "流程关联报告")
public SdmResponse flowRelateReport(@RequestBody SpdmReportReq req) {
return runService.flowRelateReport(req);
}
}

View File

@@ -94,7 +94,7 @@ public class SpdmAddDemandReq extends BaseEntity {
/**
* 预留拓展属性
*/
private List<SpdmDemandExtraReq> extraList;
private List<SpdmDemandExtraReq> extras;
/**
* 项目id

View File

@@ -69,17 +69,29 @@ public class SpdmTaskListReq {
/**
* 计划开始时间
*/
private String beginTime;
private List<String> beginTime;
private String beginSTime;
private String beginETime;
/**
* 计划结束时间
*/
private String endTime;
private List<String> endTime;
private String endSTime;
private String endETime;
/**
* 实际结束时间
*/
private String finishTime;
private List<String> finishTime;
private String finishSTime;
private String finishETime;
/**
* 今明任务 筛选计划结束时间为今明两天的

View File

@@ -79,4 +79,6 @@ public interface ISimulationRunService extends IService<SimulationRun> {
SdmResponse saveNodeParams(SpdmNodeParamReq req);
SdmResponse<FlowInfoDto> listFlowNodes(SpdmTaskRunReq req);
SdmResponse flowRelateReport(SpdmReportReq req);
}

View File

@@ -95,7 +95,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
// 获取仿真执行人
String eMemberList = req.getEMemberList();
// 获取需求额外属性
List<SpdmDemandExtraReq> demandExtraList = req.getExtraList();
List<SpdmDemandExtraReq> demandExtraList = req.getExtras();
String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
req.setCreateTime(curDateStr);
req.setUuid(RandomUtil.generateString(32));
@@ -537,7 +537,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
projectNodeMemberList.add(taskMemberNode);
}
}
List<TaskExtraNode> extraList = task.getTaskExtraNodeList();
List<TaskExtraNode> extraList = task.getExtras();
if (CollectionUtils.isNotEmpty(extraList)) {
for (TaskExtraNode extra : extraList) {
TaskExtraNode taskExtraNode = new TaskExtraNode();
@@ -553,7 +553,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService {
List<TaskNode> performanceList = task.getChildren();
for (TaskNode performance : performanceList) {
performance.setTaskId(task.getUuid());
List<TaskExtraNode> performanceExtraList = performance.getTaskExtraNodeList();
List<TaskExtraNode> performanceExtraList = performance.getExtras();
if (CollectionUtils.isNotEmpty(performanceExtraList)) {
for (TaskExtraNode extra : performanceExtraList) {
extra.setPerformanceId(performance.getUuid());

View File

@@ -433,7 +433,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
allNodeManagerList.add(spdmNodeRelateMemberReq);
}
}
extraList = addNode.getExtraList();
extraList = addNode.getExtras();
if (CollectionUtils.isNotEmpty(extraList)) {
extraList.forEach(extra -> {
extra.setNodeId(addNode.getUuid());
@@ -745,11 +745,18 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
if (CollectionUtils.isEmpty(projectNodePoList)) {
return SdmResponse.success(new ArrayList<>());
}
log.info("getChildrenNodeList为{}",projectNodePoList);
if (!nodeType.equals(projectNodePoList.get(0).getNodeType())) {
return getChildrenNodeList(projectNodePoList.stream().map(ProjectNodePo::getUuid).toList(), nodeType);
// 兼容处理cid同步的数据
List<ProjectNodePo> dirtyProjectNodeList = projectNodePoList.stream().filter(projectNode -> projectNode.getUuid().equals(projectNode.getParentId())).toList();
if (CollectionUtils.isNotEmpty(dirtyProjectNodeList)) {
log.error("以下节点id{}的uuid和parentId相同需要处理",dirtyProjectNodeList.stream().map(ProjectNodePo::getUuid).collect(Collectors.joining(",")));
return SdmResponse.failed("节点:" + dirtyProjectNodeList.stream().map(ProjectNodePo::getNodeName).collect(Collectors.joining(",")) + "的数据有误,需要处理");
}
return SdmResponse.success(projectNodePoList);
log.info("getChildrenNodeList为{}",projectNodePoList);
List<ProjectNodePo> returnProjectNodeList = projectNodePoList.stream().filter(projectNode -> nodeType.equals(projectNode.getNodeType())).toList();
if (CollectionUtils.isNotEmpty(returnProjectNodeList)) {
return SdmResponse.success(returnProjectNodeList);
}
return getChildrenNodeList(projectNodePoList.stream().map(ProjectNodePo::getUuid).toList(), nodeType);
}
/**

View File

@@ -93,6 +93,29 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
List<String> nodeTypeList = Arrays.asList(NodeTypeEnum.MACHINE.getValue(),NodeTypeEnum.WORKSPACE.getValue(),NodeTypeEnum.DISCIPLINE.getValue(),NodeTypeEnum.TASK.getValue(),NodeTypeEnum.PERFORMANCE.getValue());
private static final String NODE_NAME_KEY = "nodeName";
private static final String NODE_CODE_KEY = "nodeCode";
private static final String MACHINE_NAME = "机台名称";
private static final String MACHINE_CODE = "机台编号";
private static final String WORKSPACE_NAME = "工位名称";
private static final String WORKSPACE_CODE = "工位编号";
private static final String DISCIPLINE_NAME = "学科名称";
private static final String DISCIPLINE_CODE = "学科编号";
private static final String TASK_NAME = "任务名称";
private static final String TASK_CODE = "任务编号";
private static final String PERFORMANCE_NAME = "指标名称";
private static final String PERFORMANCE_CODE = "指标编号";
@Override
@Transactional
@@ -697,7 +720,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
private void handlePerformanceExtra(TaskNode projectNode, List<TaskNode> performanceNodeList, List<TaskExtraNode> performanceNodeExtraList) {
performanceNodeList.add(projectNode);
List<TaskExtraNode> extraList = projectNode.getTaskExtraNodeList();
List<TaskExtraNode> extraList = projectNode.getExtras();
if (CollectionUtils.isNotEmpty(extraList)) {
for (TaskExtraNode extra : extraList) {
TaskExtraNode taskExtraNode = new TaskExtraNode();
@@ -1023,7 +1046,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
simulationTaskMemberService.saveTaskMemberList(projectNode.getUuid(), MemberTypeEnum.PRINCIPAL.getCode(), longUserIdList);
}
List<TaskExtraNode> extraList = projectNode.getTaskExtraNodeList();
List<TaskExtraNode> extraList = projectNode.getExtras();
if (CollectionUtils.isNotEmpty(extraList)) {
for (TaskExtraNode extra : extraList) {
TaskExtraNode taskExtraNode = new TaskExtraNode();
@@ -1340,7 +1363,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
}
List<TaskExtraNode> extraList = projectNode.getTaskExtraNodeList();
List<TaskExtraNode> extraList = projectNode.getExtras();
if (CollectionUtils.isNotEmpty(extraList)) {
for (TaskExtraNode extra : extraList) {
TaskExtraNode taskExtraNode = new TaskExtraNode();
@@ -1950,6 +1973,139 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
@Override
public SdmResponse exportTaskTree(TaskTreeExportExcelFormat taskTreeExportExcelFormat, HttpServletResponse httpServletResponse) {
// 补充表头
List<ExportExcelFormat> exportExcelFormats = taskTreeExportExcelFormat.getExcelHeaders();
if (CollectionUtils.isEmpty(exportExcelFormats)) {
log.error("导出的表头为空");
return SdmResponse.failed("导出的表头不能为空");
}
Optional<ExportExcelFormat> nodeNameOptional = exportExcelFormats.stream().filter(header -> "nodeName".equals(header.getKey())).findAny();
Optional<ExportExcelFormat> nodeCodeOptional = exportExcelFormats.stream().filter(header -> "nodeCode".equals(header.getKey())).findAny();
List<ExportExcelFormat> fixedHeaderList = new ArrayList<>();
if (nodeNameOptional.isPresent() && nodeCodeOptional.isPresent()) {
// 机台
ExportExcelFormat machineNameExportExcelFormat = new ExportExcelFormat();
machineNameExportExcelFormat.setKey(NODE_NAME_KEY);
machineNameExportExcelFormat.setTitle(MACHINE_NAME);
ExportExcelFormat machineCodeExportExcelFormat = new ExportExcelFormat();
machineCodeExportExcelFormat.setKey(NODE_CODE_KEY);
machineCodeExportExcelFormat.setTitle(MACHINE_CODE);
// 工位
ExportExcelFormat workspaceNameExportExcelFormat = new ExportExcelFormat();
workspaceNameExportExcelFormat.setKey(NODE_NAME_KEY);
workspaceNameExportExcelFormat.setTitle(WORKSPACE_NAME);
ExportExcelFormat workspaceCodeExportExcelFormat = new ExportExcelFormat();
workspaceCodeExportExcelFormat.setKey(NODE_CODE_KEY);
workspaceCodeExportExcelFormat.setTitle(WORKSPACE_CODE);
// 学科
ExportExcelFormat disciplineNameExportExcelFormat = new ExportExcelFormat();
disciplineNameExportExcelFormat.setKey(NODE_NAME_KEY);
disciplineNameExportExcelFormat.setTitle(DISCIPLINE_NAME);
ExportExcelFormat disciplineCodeExportExcelFormat = new ExportExcelFormat();
disciplineCodeExportExcelFormat.setKey(NODE_CODE_KEY);
disciplineCodeExportExcelFormat.setTitle(DISCIPLINE_CODE);
// 任务
ExportExcelFormat taskNameExportExcelFormat = new ExportExcelFormat();
taskNameExportExcelFormat.setKey(NODE_NAME_KEY);
taskNameExportExcelFormat.setTitle(TASK_NAME);
ExportExcelFormat taskCodeExportExcelFormat = new ExportExcelFormat();
taskCodeExportExcelFormat.setKey(NODE_CODE_KEY);
taskCodeExportExcelFormat.setTitle(TASK_CODE);
// 指标
ExportExcelFormat performanceNameExportExcelFormat = new ExportExcelFormat();
performanceNameExportExcelFormat.setKey(NODE_NAME_KEY);
performanceNameExportExcelFormat.setTitle(PERFORMANCE_NAME);
ExportExcelFormat performanceCodeExportExcelFormat = new ExportExcelFormat();
performanceCodeExportExcelFormat.setKey(NODE_CODE_KEY);
performanceCodeExportExcelFormat.setTitle(PERFORMANCE_CODE);
fixedHeaderList.add(machineNameExportExcelFormat);
fixedHeaderList.add(machineCodeExportExcelFormat);
fixedHeaderList.add(workspaceNameExportExcelFormat);
fixedHeaderList.add(workspaceCodeExportExcelFormat);
fixedHeaderList.add(disciplineNameExportExcelFormat);
fixedHeaderList.add(disciplineCodeExportExcelFormat);
fixedHeaderList.add(taskNameExportExcelFormat);
fixedHeaderList.add(taskCodeExportExcelFormat);
fixedHeaderList.add(performanceNameExportExcelFormat);
fixedHeaderList.add(performanceCodeExportExcelFormat);
}else if (nodeNameOptional.isPresent()) {
// 机台
ExportExcelFormat machineNameExportExcelFormat = new ExportExcelFormat();
machineNameExportExcelFormat.setKey(NODE_NAME_KEY);
machineNameExportExcelFormat.setTitle(MACHINE_NAME);
// 工位
ExportExcelFormat workspaceNameExportExcelFormat = new ExportExcelFormat();
workspaceNameExportExcelFormat.setKey(NODE_NAME_KEY);
workspaceNameExportExcelFormat.setTitle(WORKSPACE_NAME);
// 学科
ExportExcelFormat disciplineNameExportExcelFormat = new ExportExcelFormat();
disciplineNameExportExcelFormat.setKey(NODE_NAME_KEY);
disciplineNameExportExcelFormat.setTitle(DISCIPLINE_NAME);
// 任务
ExportExcelFormat taskNameExportExcelFormat = new ExportExcelFormat();
taskNameExportExcelFormat.setKey(NODE_NAME_KEY);
taskNameExportExcelFormat.setTitle(TASK_NAME);
// 指标
ExportExcelFormat performanceNameExportExcelFormat = new ExportExcelFormat();
performanceNameExportExcelFormat.setKey(NODE_NAME_KEY);
performanceNameExportExcelFormat.setTitle(PERFORMANCE_NAME);
fixedHeaderList.add(machineNameExportExcelFormat);
fixedHeaderList.add(workspaceNameExportExcelFormat);
fixedHeaderList.add(disciplineNameExportExcelFormat);
fixedHeaderList.add(taskNameExportExcelFormat);
fixedHeaderList.add(performanceNameExportExcelFormat);
}else if (nodeCodeOptional.isPresent()) {
// 机台
ExportExcelFormat machineCodeExportExcelFormat = new ExportExcelFormat();
machineCodeExportExcelFormat.setKey(NODE_CODE_KEY);
machineCodeExportExcelFormat.setTitle(MACHINE_CODE);
// 工位
ExportExcelFormat workspaceCodeExportExcelFormat = new ExportExcelFormat();
workspaceCodeExportExcelFormat.setKey(NODE_CODE_KEY);
workspaceCodeExportExcelFormat.setTitle(WORKSPACE_CODE);
// 学科
ExportExcelFormat disciplineCodeExportExcelFormat = new ExportExcelFormat();
disciplineCodeExportExcelFormat.setKey(NODE_CODE_KEY);
disciplineCodeExportExcelFormat.setTitle(DISCIPLINE_CODE);
// 任务
ExportExcelFormat taskCodeExportExcelFormat = new ExportExcelFormat();
taskCodeExportExcelFormat.setKey(NODE_CODE_KEY);
taskCodeExportExcelFormat.setTitle(TASK_CODE);
// 指标
ExportExcelFormat performanceCodeExportExcelFormat = new ExportExcelFormat();
performanceCodeExportExcelFormat.setKey(NODE_CODE_KEY);
performanceCodeExportExcelFormat.setTitle(PERFORMANCE_CODE);
fixedHeaderList.add(machineCodeExportExcelFormat);
fixedHeaderList.add(workspaceCodeExportExcelFormat);
fixedHeaderList.add(disciplineCodeExportExcelFormat);
fixedHeaderList.add(taskCodeExportExcelFormat);
fixedHeaderList.add(performanceCodeExportExcelFormat);
}
if (CollectionUtils.isNotEmpty(fixedHeaderList)) {
if (nodeNameOptional.isPresent() && nodeCodeOptional.isPresent()) {
exportExcelFormats.remove(0);
exportExcelFormats.remove(0);
}else {
exportExcelFormats.remove(0);
}
fixedHeaderList.addAll(exportExcelFormats);
exportExcelFormats = fixedHeaderList;
}
TaskTreeExportExcelParam params = taskTreeExportExcelFormat.getParams();
List<com.sdm.common.entity.bo.TaskNodeTag> originIdMap = params.getIdMap();
List<com.sdm.common.entity.bo.TaskNodeTag> originTagMap = params.getTagMap();
@@ -1974,7 +2130,6 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
req.setIdMap(currentIdMapList);
req.setTagMap(currentTagMapList);
List<ExportExcelFormat> exportExcelFormats = taskTreeExportExcelFormat.getExcelHeaders();
SdmResponse taskRespond = getTaskTree(req);
SdmResponse response = new SdmResponse();
List<ProjectNodePo> allTopProjectNodeList = new ArrayList<>();

View File

@@ -969,6 +969,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
return SdmResponse.failed("发起评审失败");
}
simulationTask.setCidFlowId(cidFlowId);
simulationTask.setApprovalStatus(ApprovalStatusEnum.ING.getCode());
simulationTaskService.updateById(simulationTask);
return SdmResponse.success(cidFlowId);
}
@@ -991,6 +992,10 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
simulationTask.setDifficult(difficult);
simulationTask.setProgress(100);
simulationTask.setExeStatus(TaskExeStatusEnum.CLOSED.getCode());
simulationTask.setApprovalStatus(ApprovalStatusEnum.PASSED.getCode());
simulationTaskService.updateById(simulationTask);
} else {
simulationTask.setApprovalStatus(ApprovalStatusEnum.REJECTED.getCode());
simulationTaskService.updateById(simulationTask);
}
}
@@ -1431,6 +1436,12 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
return SdmResponse.success();
}
@Override
public SdmResponse flowRelateReport(SpdmReportReq req) {
generateReport(req,null);
return SdmResponse.success();
}
public static void deleteFolder(File folder) {
if (folder.isDirectory()) {
File[] files = folder.listFiles();

View File

@@ -112,6 +112,21 @@ public class TaskServiceImpl implements ITaskService {
if (StringUtils.isNotBlank(req.getAchieveStatus())) {
req.setAchieveStatusList(Arrays.stream(req.getAchieveStatus().split(",")).toList());
}
List<String> beginTime = req.getBeginTime();
if (CollectionUtils.isNotEmpty(beginTime)) {
req.setBeginSTime(beginTime.get(0));
req.setBeginETime(beginTime.get(1));
}
List<String> endTime = req.getEndTime();
if (CollectionUtils.isNotEmpty(endTime)) {
req.setEndSTime(endTime.get(0));
req.setEndETime(endTime.get(1));
}
List<String> finishTime = req.getFinishTime();
if (CollectionUtils.isNotEmpty(finishTime)) {
req.setFinishSTime(finishTime.get(0));
req.setFinishETime(finishTime.get(1));
}
List<SpdmTaskVo> allTaskList = mapper.getTaskList(tenantId, req);
JSONObject jsonObject = new JSONObject();
jsonObject.put("data", new ArrayList<>());
@@ -1284,7 +1299,6 @@ public class TaskServiceImpl implements ITaskService {
spdmProjectNodeEditReq.setNodeName(req.getProjectName());
spdmProjectNodeEditReq.setNodeType(NodeTypeEnum.PROJECT.getValue());
spdmProjectNodeEditReq.setUuid(req.getProjectId());
spdmProjectNodeEditReq.setPid(req.getProjectId());
spdmProjectNodeEditReq.setTag1(req.getProjectId());
spdmProjectNodeEditReq.setCreateTime(curDateStr);
spdmProjectNodeEditReq.setTenantId(ThreadLocalContext.getTenantId());

View File

@@ -75,11 +75,31 @@
and STR_TO_DATE(begin_time,'%Y-%m-%d') >= #{req.beginTime}
]]>
</if>
<if test="req.beginSTime != null and req.beginSTime != ''">
<![CDATA[
and STR_TO_DATE(begin_time,'%Y-%m-%d') >= #{req.beginSTime}
]]>
</if>
<if test="req.beginETime != null and req.beginETime != ''">
<![CDATA[
and STR_TO_DATE(begin_time,'%Y-%m-%d') <= #{req.beginETime}
]]>
</if>
<if test="req.endTime != null and req.endTime != ''">
<![CDATA[
and STR_TO_DATE(end_time,'%Y-%m-%d') <= #{req.endTime}
]]>
</if>
<if test="req.endSTime != null and req.endSTime != ''">
<![CDATA[
and STR_TO_DATE(end_time,'%Y-%m-%d') <= #{req.endSTime}
]]>
</if>
<if test="req.endETime != null and req.endETime != ''">
<![CDATA[
and STR_TO_DATE(end_time,'%Y-%m-%d') <= #{req.endETime}
]]>
</if>
<if test="req.todayTmrTasks != null and req.todayTmrTasks != ''">
<![CDATA[
and STR_TO_DATE(end_time,'%Y-%m-%d') >= CURRENT_DATE()
@@ -91,6 +111,16 @@
and STR_TO_DATE(finish_time,'%Y-%m-%d') <= #{req.finishTime}
]]>
</if>
<if test="req.finishSTime != null and req.finishSTime != ''">
<![CDATA[
and STR_TO_DATE(finish_time,'%Y-%m-%d') <= #{req.finishSTime}
]]>
</if>
<if test="req.finishETime != null and req.finishETime != ''">
<![CDATA[
and STR_TO_DATE(finish_time,'%Y-%m-%d') <= #{req.finishETime}
]]>
</if>
<if test='req.sortOrder != null and req.sortOrder == "0"'>
order by create_time
</if>