From 7c42acfeb29cfa5d21fe87dcc937ac1024da8950 Mon Sep 17 00:00:00 2001 From: lidongyang <506508008@qq.com> Date: Wed, 10 Dec 2025 11:25:02 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81bug=E4=BF=AE=E5=A4=8D=202=E3=80=81?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SimulationRunController.java | 11 ++ .../project/model/req/SpdmAddDemandReq.java | 2 +- .../sdm/project/model/req/SpdmReportReq.java | 5 + .../project/model/req/SpdmTaskListReq.java | 18 +- .../service/ISimulationRunService.java | 3 + .../service/impl/DemandServiceImpl.java | 6 +- .../project/service/impl/NodeServiceImpl.java | 17 +- .../service/impl/ProjectServiceImpl.java | 163 +++++++++++++++++- .../impl/SimulationRunServiceImpl.java | 57 ++++-- .../project/service/impl/TaskServiceImpl.java | 16 +- .../resources/mapper/SimulationTaskMapper.xml | 30 ++++ 11 files changed, 294 insertions(+), 34 deletions(-) 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 b6a19313..5cdd674e 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationRunController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationRunController.java @@ -234,4 +234,15 @@ public class SimulationRunController implements ISimulationRunFeignClient { return runService.listFlowNodes(req); } + /** + * 流程关联报告 + * + * @return + */ + @PostMapping("/flowRelateReport") + @Operation(summary = "流程关联报告", description = "流程关联报告") + public SdmResponse flowRelateReport(@RequestBody SpdmReportReq req) { + return runService.flowRelateReport(req); + } + } 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/SpdmReportReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmReportReq.java index 903fa56a..5b4370ac 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmReportReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmReportReq.java @@ -29,4 +29,9 @@ public class SpdmReportReq { */ private ProjecInfoReq projecInfoReq; + /** + * 生成的报告要上传到流程节点的路径 + */ + private String flowPath; + } 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 acaec66c..2e2d392b 100644 --- a/project/src/main/java/com/sdm/project/service/ISimulationRunService.java +++ b/project/src/main/java/com/sdm/project/service/ISimulationRunService.java @@ -69,4 +69,7 @@ public interface ISimulationRunService extends IService { SdmResponse saveNodeParams(SpdmNodeParamReq req); SdmResponse> listFlowNodes(SpdmTaskRunReq req); + + SdmResponse flowRelateReport(SpdmReportReq req); + } 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 d0a76778..c05e81aa 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 f27601e7..f792bbee 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 @@ -12,6 +12,7 @@ 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.FileBizTypeEnum; import com.sdm.common.entity.enums.NodeTypeEnum; import com.sdm.common.entity.flowable.dto.FlowElementDTO; import com.sdm.common.entity.flowable.dto.ProcessDefinitionDTO; @@ -57,6 +58,7 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -1168,28 +1170,43 @@ public class SimulationRunServiceImpl extends ServiceImpl()); } + @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(); diff --git a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java index 3a2211a8..cb5aec29 100644 --- a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java @@ -114,6 +114,21 @@ public class TaskServiceImpl implements ITaskService { if (StringUtils.isNotBlank(req.getAchieveStatus())) { req.setAchieveStatusList(Arrays.stream(req.getAchieveStatus().split(",")).toList()); } + List 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<>()); @@ -1286,7 +1301,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 7e0c3205..45807947 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