From a4f63194145b6b314d9c67cb1c77802b2cc3ea4b Mon Sep 17 00:00:00 2001 From: lidongyang <506508008@qq.com> Date: Tue, 25 Nov 2025 17:34:07 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E9=A1=B9=E7=9B=AE=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../req/project/ProjectExportExcelFormat.java | 45 +++++++++++++++++++ .../req/task/DemandExportExcelFormat.java | 10 ----- .../controller/SimulationNodeController.java | 12 ++++- .../controller/SimulationRunController.java | 1 + .../project/dao/SimulationProjectMapper.java | 1 + .../com/sdm/project/service/INodeService.java | 6 ++- .../service/impl/DemandServiceImpl.java | 2 + .../project/service/impl/NodeServiceImpl.java | 39 ++++++++++++---- .../project/service/impl/TaskServiceImpl.java | 2 + .../mapper/SimulationProjectMapper.xml | 10 ++++- 10 files changed, 107 insertions(+), 21 deletions(-) create mode 100644 common/src/main/java/com/sdm/common/entity/req/project/ProjectExportExcelFormat.java diff --git a/common/src/main/java/com/sdm/common/entity/req/project/ProjectExportExcelFormat.java b/common/src/main/java/com/sdm/common/entity/req/project/ProjectExportExcelFormat.java new file mode 100644 index 00000000..95053f82 --- /dev/null +++ b/common/src/main/java/com/sdm/common/entity/req/project/ProjectExportExcelFormat.java @@ -0,0 +1,45 @@ +package com.sdm.common.entity.req.project; + +import com.sdm.common.entity.ExportExcelFormat; +import lombok.Data; + +import java.util.List; + +@Data +public class ProjectExportExcelFormat { + + /** + * 导出的基本属性值 + */ + private List exportExcelFormatList; + + /** + * 节点类型 + */ + private String nodeType; + + /** + * 节点子类型 + */ + private String nodeSubType; + + /** + * 项目进度状态(未开始、进行中、已完成) + */ + private Integer progressStatus; + + /** + * 产品代号 + */ + private String nodeCode; + + /** + * 项目经理 + */ + private String manager; + + /** + * 节点名称 + */ + private String nodeName; +} diff --git a/common/src/main/java/com/sdm/common/entity/req/task/DemandExportExcelFormat.java b/common/src/main/java/com/sdm/common/entity/req/task/DemandExportExcelFormat.java index 8f76dfe8..559e1f48 100644 --- a/common/src/main/java/com/sdm/common/entity/req/task/DemandExportExcelFormat.java +++ b/common/src/main/java/com/sdm/common/entity/req/task/DemandExportExcelFormat.java @@ -34,16 +34,6 @@ public class DemandExportExcelFormat { */ private Integer type; - /** - * 当前页码 - */ - private Integer current; - - /** - * 每页显示数量 - */ - private Integer size; - /** * 排序顺序 按创建时间 0-先序/1-倒序排序 */ diff --git a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java index cbc667e0..d8d8d44d 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java @@ -3,8 +3,10 @@ package com.sdm.project.controller; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.req.data.UploadFilesReq; import com.sdm.common.entity.req.project.DelNodeReq; +import com.sdm.common.entity.req.project.ProjectExportExcelFormat; import com.sdm.common.entity.req.project.RenameNodeReq; import com.sdm.common.entity.req.project.SpdmNodeListReq; +import com.sdm.common.entity.req.task.TaskExportExcelFormat; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; import com.sdm.common.entity.resp.project.SimulationNodeResp; import com.sdm.common.feign.inter.project.ISimulationNodeFeignClient; @@ -13,6 +15,7 @@ import com.sdm.project.service.INodeService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotNull; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; @@ -111,7 +114,7 @@ public class SimulationNodeController implements ISimulationNodeFeignClient { */ @GetMapping("/getChildrenNodeList") @Operation(summary = "根据项目查询子节点列表", description = "根据项目查询子节点列表") - public SdmResponse getChildrenNodeList(@RequestParam(value = "nodeId", required = true) String nodeId, @RequestParam(value = "nodeType", required = true) String nodeType) { + public SdmResponse getChildrenNodeList(@RequestParam(value = "nodeId", required = true) Long nodeId, @RequestParam(value = "nodeType", required = true) String nodeType) { return nodeService.getChildrenNodeList(Collections.singletonList(nodeId), nodeType); } @@ -263,4 +266,11 @@ public class SimulationNodeController implements ISimulationNodeFeignClient { return nodeService.querySimulationNodeByUuids(uuids); } + + @PostMapping("/exportProject") + @Operation(summary = "导出项目列表") + public SdmResponse exportProject(@RequestBody ProjectExportExcelFormat projectExportExcelFormat , HttpServletResponse httpservletResponse) { + return nodeService.exportProject(projectExportExcelFormat, httpservletResponse); + } + } 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 a8d9411a..910f4ce1 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationRunController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationRunController.java @@ -150,6 +150,7 @@ public class SimulationRunController { * @return */ @PostMapping("/generateReport") + @Operation(summary = "生成自动化报告", description = "生成自动化报告") public void generateReport(@RequestBody SpdmReportReq req, HttpServletResponse response) { runService.generateReport(req,response); } diff --git a/project/src/main/java/com/sdm/project/dao/SimulationProjectMapper.java b/project/src/main/java/com/sdm/project/dao/SimulationProjectMapper.java index 34364c23..7ef207c4 100644 --- a/project/src/main/java/com/sdm/project/dao/SimulationProjectMapper.java +++ b/project/src/main/java/com/sdm/project/dao/SimulationProjectMapper.java @@ -180,4 +180,5 @@ public interface SimulationProjectMapper { List querySimulationNodeByUuids(@Param("list")List uuids); + List getNodeByIdList(@Param("nodeIdList") List nodeIdList); } diff --git a/project/src/main/java/com/sdm/project/service/INodeService.java b/project/src/main/java/com/sdm/project/service/INodeService.java index 42680106..04a01b34 100644 --- a/project/src/main/java/com/sdm/project/service/INodeService.java +++ b/project/src/main/java/com/sdm/project/service/INodeService.java @@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.req.data.UploadFilesReq; import com.sdm.common.entity.req.project.DelNodeReq; +import com.sdm.common.entity.req.project.ProjectExportExcelFormat; import com.sdm.common.entity.req.project.RenameNodeReq; import com.sdm.common.entity.req.project.SpdmNodeListReq; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; import com.sdm.common.entity.resp.project.SimulationNodeResp; import com.sdm.project.model.entity.SimulationNode; import com.sdm.project.model.req.*; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestParam; @@ -30,7 +32,7 @@ public interface INodeService extends IService { SdmResponse getProjectMemberList(GetProjectListReq req); - SdmResponse getChildrenNodeList(List projectNodeIdList, String nodeType); + SdmResponse getChildrenNodeList(List projectNodeIdList, String nodeType); SdmResponse> getAllNodeByBodeType(String nodeType, Long nodeId); @@ -66,4 +68,6 @@ public interface INodeService extends IService { SdmResponse> querySimulationNodeByUuids(List uuids); + SdmResponse exportProject(ProjectExportExcelFormat projectExportExcelFormat, HttpServletResponse httpservletResponse); + } 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 077c6b51..29572b04 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 @@ -624,6 +624,8 @@ public class DemandServiceImpl extends BaseService implements IDemandService { SpdmDemandListReq req = new SpdmDemandListReq(); BeanUtils.copyProperties(demandExportExcelFormat,req); List exportExcelFormats = demandExportExcelFormat.getExportExcelFormatList(); + req.setCurrent(1); + req.setSize(10000); SdmResponse taskRespond = list(req); if(taskRespond.isSuccess()) { JSONObject dataObj = (JSONObject) taskRespond.getData(); 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 4f1dc2b5..b9e4ebf9 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 @@ -1,9 +1,11 @@ package com.sdm.project.service.impl; +import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sdm.common.common.SdmResponse; import com.sdm.common.common.ThreadLocalContext; +import com.sdm.common.entity.ExportExcelFormat; import com.sdm.common.entity.bo.DataDictionary; import com.sdm.common.entity.constants.TagConstant; import com.sdm.common.entity.enums.DirTypeEnum; @@ -11,6 +13,7 @@ import com.sdm.common.entity.enums.NodeTypeEnum; import com.sdm.common.entity.req.data.CreateDirReq; import com.sdm.common.entity.req.data.UploadFilesReq; import com.sdm.common.entity.req.project.DelNodeReq; +import com.sdm.common.entity.req.project.ProjectExportExcelFormat; import com.sdm.common.entity.req.project.RenameNodeReq; import com.sdm.common.entity.req.project.SpdmNodeListReq; import com.sdm.common.entity.req.system.QueryGroupDetailReq; @@ -26,6 +29,7 @@ import com.sdm.common.feign.inter.data.IDataFeignClient; import com.sdm.common.log.CoreLogger; import com.sdm.common.utils.DateUtils; import com.sdm.common.utils.RandomUtil; +import com.sdm.common.utils.excel.ExcelUtil; import com.sdm.project.dao.SimulationDemandMapper; import com.sdm.project.dao.SimulationNodeMapper; import com.sdm.project.dao.SimulationProjectMapper; @@ -43,6 +47,7 @@ import com.sdm.project.model.po.TaskNodePo; import com.sdm.project.model.req.*; import com.sdm.project.model.vo.*; import com.sdm.project.service.*; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -648,19 +653,18 @@ public class NodeServiceImpl extends ServiceImpl nodeIdList, String nodeType) { + public SdmResponse getChildrenNodeList(List nodeIdList, String nodeType) { log.info("getChildrenNodeList,nodeIdList:{},nodeType:{}", nodeIdList, nodeType); - List projectNodePoList = mapper.queryNodeListByParentNodeId(nodeIdList); + List projectNodePoList = mapper.getNodeByIdList(nodeIdList); if (CollectionUtils.isEmpty(projectNodePoList)) { return SdmResponse.success(new ArrayList<>()); } - if (!nodeType.equals(projectNodePoList.get(0).getNodeType())) { - return getChildrenNodeList(projectNodePoList.stream().map(ProjectNodePo::getUuid).toList(), nodeType); + List idList = projectNodePoList.stream().map(ProjectNodePo::getUuid).toList(); + List childrenProjectNodePoList = mapper.queryNodeListByParentNodeId(idList); + if (!nodeType.equals(childrenProjectNodePoList.get(0).getNodeType())) { + return getChildrenNodeList(childrenProjectNodePoList.stream().map(ProjectNodePo::getId).toList(), nodeType); } -// if (!nodeType.equals(projectNodePoList.get(0).getNodeType())) { -// return SdmResponse.success(new ArrayList<>()); -// } - return SdmResponse.success(projectNodePoList); + return SdmResponse.success(childrenProjectNodePoList); } /** @@ -1406,4 +1410,23 @@ public class NodeServiceImpl extends ServiceImpl exportExcelFormats = projectExportExcelFormat.getExportExcelFormatList(); + SdmResponse taskRespond = list(req); + if(taskRespond.isSuccess()) { + JSONObject dataObj = (JSONObject) taskRespond.getData(); + JSONArray jsonArray = dataObj.getJSONArray("data"); + ExcelUtil.exportExcelNoMerge(jsonArray,exportExcelFormats,httpServletResponse); + } else { + response = SdmResponse.failed(taskRespond.getMessage()); + } + return response; + } + } 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 b7cf03e6..ce8c9af6 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 @@ -977,6 +977,8 @@ public class TaskServiceImpl implements ITaskService { SdmResponse response = new SdmResponse(); SpdmTaskListReq req = new SpdmTaskListReq(); BeanUtils.copyProperties(taskExportExcelFormat,req); + req.setCurrent(1); + req.setSize(10000); List exportExcelFormats = taskExportExcelFormat.getExportExcelFormatList(); SdmResponse taskRespond = list(req); if(taskRespond.isSuccess()) { diff --git a/project/src/main/resources/mapper/SimulationProjectMapper.xml b/project/src/main/resources/mapper/SimulationProjectMapper.xml index 33eaed37..aedd9a72 100644 --- a/project/src/main/resources/mapper/SimulationProjectMapper.xml +++ b/project/src/main/resources/mapper/SimulationProjectMapper.xml @@ -576,7 +576,7 @@ + +