From ffb5c44915c8d82faafec8039220da541bf1abc4 Mon Sep 17 00:00:00 2001 From: zhuxinru Date: Wed, 10 Dec 2025 11:36:06 +0800 Subject: [PATCH] commit by lidongyang --- .../project/common/ApprovalStatusEnum.java | 21 +++ .../controller/SimulationRunController.java | 10 ++ .../project/model/req/SpdmAddDemandReq.java | 2 +- .../project/model/req/SpdmTaskListReq.java | 18 +- .../service/ISimulationRunService.java | 2 + .../service/impl/DemandServiceImpl.java | 6 +- .../project/service/impl/NodeServiceImpl.java | 17 +- .../service/impl/ProjectServiceImpl.java | 163 +++++++++++++++++- .../impl/SimulationRunServiceImpl.java | 11 ++ .../project/service/impl/TaskServiceImpl.java | 16 +- .../resources/mapper/SimulationTaskMapper.xml | 30 ++++ 11 files changed, 279 insertions(+), 17 deletions(-) create mode 100644 project/src/main/java/com/sdm/project/common/ApprovalStatusEnum.java diff --git a/project/src/main/java/com/sdm/project/common/ApprovalStatusEnum.java b/project/src/main/java/com/sdm/project/common/ApprovalStatusEnum.java new file mode 100644 index 00000000..e2a73d32 --- /dev/null +++ b/project/src/main/java/com/sdm/project/common/ApprovalStatusEnum.java @@ -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; + } + +} diff --git a/project/src/main/java/com/sdm/project/controller/SimulationRunController.java b/project/src/main/java/com/sdm/project/controller/SimulationRunController.java index 7090120d..465dfa14 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationRunController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationRunController.java @@ -251,5 +251,15 @@ public class SimulationRunController implements ISimulationRunFeignClient { public SdmResponse listFlowNodes(@RequestBody SpdmTaskRunReq req) { return runService.listFlowNodes(req); } + /** + * 流程关联报告 + * + * @return + */ + @PostMapping("/flowRelateReport") + @Operation(summary = "流程关联报告", description = "流程关联报告") + public SdmResponse flowRelateReport(@RequestBody SpdmReportReq req) { + return runService.flowRelateReport(req); + } } \ No newline at end of file diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmAddDemandReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmAddDemandReq.java index 81ae8398..2c6f1714 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmAddDemandReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmAddDemandReq.java @@ -94,7 +94,7 @@ public class SpdmAddDemandReq extends BaseEntity { /** * 预留拓展属性 */ - private List extraList; + private List extras; /** * 项目id diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmTaskListReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmTaskListReq.java index 52fa45bf..a7e00c8e 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmTaskListReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmTaskListReq.java @@ -69,17 +69,29 @@ public class SpdmTaskListReq { /** * 计划开始时间 */ - private String beginTime; + private List beginTime; + + private String beginSTime; + + private String beginETime; /** * 计划结束时间 */ - private String endTime; + private List endTime; + + private String endSTime; + + private String endETime; /** * 实际结束时间 */ - private String finishTime; + private List finishTime; + + private String finishSTime; + + private String finishETime; /** * 今明任务 筛选计划结束时间为今明两天的 diff --git a/project/src/main/java/com/sdm/project/service/ISimulationRunService.java b/project/src/main/java/com/sdm/project/service/ISimulationRunService.java index efed0649..c15b2e97 100644 --- a/project/src/main/java/com/sdm/project/service/ISimulationRunService.java +++ b/project/src/main/java/com/sdm/project/service/ISimulationRunService.java @@ -79,4 +79,6 @@ public interface ISimulationRunService extends IService { SdmResponse saveNodeParams(SpdmNodeParamReq req); SdmResponse listFlowNodes(SpdmTaskRunReq req); + + SdmResponse flowRelateReport(SpdmReportReq req); } \ No newline at end of file diff --git a/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java index 9387da83..b060651e 100644 --- a/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java @@ -95,7 +95,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { // 获取仿真执行人 String eMemberList = req.getEMemberList(); // 获取需求额外属性 - List demandExtraList = req.getExtraList(); + List 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 extraList = task.getTaskExtraNodeList(); + List 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 performanceList = task.getChildren(); for (TaskNode performance : performanceList) { performance.setTaskId(task.getUuid()); - List performanceExtraList = performance.getTaskExtraNodeList(); + List performanceExtraList = performance.getExtras(); if (CollectionUtils.isNotEmpty(performanceExtraList)) { for (TaskExtraNode extra : performanceExtraList) { extra.setPerformanceId(performance.getUuid()); diff --git a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java index 133961b2..34cdae29 100644 --- a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java @@ -433,7 +433,7 @@ public class NodeServiceImpl extends ServiceImpl { extra.setNodeId(addNode.getUuid()); @@ -745,11 +745,18 @@ public class NodeServiceImpl extends ServiceImpl()); } - log.info("getChildrenNodeList为:{}",projectNodePoList); - if (!nodeType.equals(projectNodePoList.get(0).getNodeType())) { - return getChildrenNodeList(projectNodePoList.stream().map(ProjectNodePo::getUuid).toList(), nodeType); + // 兼容处理cid同步的数据 + List 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 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); } /** diff --git a/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java index 7c077c9c..f177d138 100644 --- a/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/ProjectServiceImpl.java @@ -93,6 +93,29 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { List 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 performanceNodeList, List performanceNodeExtraList) { performanceNodeList.add(projectNode); - List extraList = projectNode.getTaskExtraNodeList(); + List 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 extraList = projectNode.getTaskExtraNodeList(); + List 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 extraList = projectNode.getTaskExtraNodeList(); + List 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 exportExcelFormats = taskTreeExportExcelFormat.getExcelHeaders(); + if (CollectionUtils.isEmpty(exportExcelFormats)) { + log.error("导出的表头为空"); + return SdmResponse.failed("导出的表头不能为空"); + } + Optional nodeNameOptional = exportExcelFormats.stream().filter(header -> "nodeName".equals(header.getKey())).findAny(); + Optional nodeCodeOptional = exportExcelFormats.stream().filter(header -> "nodeCode".equals(header.getKey())).findAny(); + List 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 originIdMap = params.getIdMap(); List originTagMap = params.getTagMap(); @@ -1974,7 +2130,6 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { } req.setIdMap(currentIdMapList); req.setTagMap(currentTagMapList); - List exportExcelFormats = taskTreeExportExcelFormat.getExcelHeaders(); SdmResponse taskRespond = getTaskTree(req); SdmResponse response = new SdmResponse(); List allTopProjectNodeList = new ArrayList<>(); diff --git a/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java index 9912cfe6..cf2495b1 100644 --- a/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java @@ -969,6 +969,7 @@ public class SimulationRunServiceImpl extends ServiceImpl beginTime = req.getBeginTime(); + if (CollectionUtils.isNotEmpty(beginTime)) { + req.setBeginSTime(beginTime.get(0)); + req.setBeginETime(beginTime.get(1)); + } + List endTime = req.getEndTime(); + if (CollectionUtils.isNotEmpty(endTime)) { + req.setEndSTime(endTime.get(0)); + req.setEndETime(endTime.get(1)); + } + List finishTime = req.getFinishTime(); + if (CollectionUtils.isNotEmpty(finishTime)) { + req.setFinishSTime(finishTime.get(0)); + req.setFinishETime(finishTime.get(1)); + } List 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()); diff --git a/project/src/main/resources/mapper/SimulationTaskMapper.xml b/project/src/main/resources/mapper/SimulationTaskMapper.xml index 3cf923c0..f1f0ad45 100644 --- a/project/src/main/resources/mapper/SimulationTaskMapper.xml +++ b/project/src/main/resources/mapper/SimulationTaskMapper.xml @@ -75,11 +75,31 @@ and STR_TO_DATE(begin_time,'%Y-%m-%d') >= #{req.beginTime} ]]> + + = #{req.beginSTime} + ]]> + + + + + + + + + + = CURRENT_DATE() @@ -91,6 +111,16 @@ and STR_TO_DATE(finish_time,'%Y-%m-%d') <= #{req.finishTime} ]]> + + + + + + order by create_time