From 3ed30181ca6bfee41d0c313e3d3c53925d647a09 Mon Sep 17 00:00:00 2001 From: zhuxinru Date: Mon, 12 Jan 2026 16:24:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=8A=A5=E5=91=8A=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9/=E9=9C=80=E6=B1=82=E5=85=B3=E8=81=94?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2026-01-12/simulation_report_template.sql | 1 + .../model/dto/ReportTemplateDto.java | 3 + .../entity/SimulationReportTemplate.java | 4 + .../SimulationReportTemplateServiceImpl.java | 26 ++++--- .../entity/req/task/TaskExportExcelParam.java | 4 + .../controller/SimulationTaskController.java | 6 ++ .../project/model/vo/SpdmExportNewTaskVo.java | 5 ++ .../sdm/project/model/vo/SpdmNewTaskVo.java | 4 + .../project/model/vo/SpdmTaskDetailVo.java | 5 +- .../com/sdm/project/service/ITaskService.java | 2 + .../project/service/impl/TaskServiceImpl.java | 77 +++++++++++++++++-- task/pom.xml | 10 +-- 12 files changed, 123 insertions(+), 24 deletions(-) create mode 100644 1-sql/2026-01-12/simulation_report_template.sql diff --git a/1-sql/2026-01-12/simulation_report_template.sql b/1-sql/2026-01-12/simulation_report_template.sql new file mode 100644 index 00000000..379744b7 --- /dev/null +++ b/1-sql/2026-01-12/simulation_report_template.sql @@ -0,0 +1 @@ +ALTER TABLE spdm_baseline.simulation_report_template ADD templateCode varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL COMMENT '报告模版編碼'; diff --git a/capability/src/main/java/com/sdm/capability/model/dto/ReportTemplateDto.java b/capability/src/main/java/com/sdm/capability/model/dto/ReportTemplateDto.java index 40402221..f1b17076 100644 --- a/capability/src/main/java/com/sdm/capability/model/dto/ReportTemplateDto.java +++ b/capability/src/main/java/com/sdm/capability/model/dto/ReportTemplateDto.java @@ -16,6 +16,9 @@ public class ReportTemplateDto { @Schema(description = "报告模版唯一ID") private String uuid; + @Schema(description = "报告模版编码") + private String templateCode; + @Schema(description = "报告模版名称") private String templateName; diff --git a/capability/src/main/java/com/sdm/capability/model/entity/SimulationReportTemplate.java b/capability/src/main/java/com/sdm/capability/model/entity/SimulationReportTemplate.java index d23a4be1..59c4192d 100644 --- a/capability/src/main/java/com/sdm/capability/model/entity/SimulationReportTemplate.java +++ b/capability/src/main/java/com/sdm/capability/model/entity/SimulationReportTemplate.java @@ -28,6 +28,10 @@ public class SimulationReportTemplate implements Serializable { @TableField("uuid") private String uuid; + @ApiModelProperty(value = "报告模版编码") + @TableField("templateCode") + private String templateCode; + @ApiModelProperty(value = "报告模版名称") @TableField("templateName") private String templateName; diff --git a/capability/src/main/java/com/sdm/capability/service/impl/SimulationReportTemplateServiceImpl.java b/capability/src/main/java/com/sdm/capability/service/impl/SimulationReportTemplateServiceImpl.java index efb715ca..686bf6e2 100644 --- a/capability/src/main/java/com/sdm/capability/service/impl/SimulationReportTemplateServiceImpl.java +++ b/capability/src/main/java/com/sdm/capability/service/impl/SimulationReportTemplateServiceImpl.java @@ -26,6 +26,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.*; @@ -47,6 +48,7 @@ public class SimulationReportTemplateServiceImpl extends ServiceImpl reportTemplateEntityList = this.lambdaQuery().eq(SimulationReportTemplate::getTemplateCode, reportTemplateDto.getTemplateCode()).list(); + if (CollectionUtils.isEmpty(reportTemplateEntityList)) { return SdmResponse.failed("报告模板不存在"); } - DelFileReq delFileReq = new DelFileReq(); - delFileReq.setDelFileId(reportTemplateEntity.getFileId()); - SdmResponse response = dataFeignClient.delFile(delFileReq); - if (!response.isSuccess()) { - return response; + for (SimulationReportTemplate reportTemplate : reportTemplateEntityList) { + DelFileReq delFileReq = new DelFileReq(); + delFileReq.setDelFileId(reportTemplate.getFileId()); + SdmResponse response = dataFeignClient.delFile(delFileReq); + if (!response.isSuccess()) { + return response; + } + this.removeById(reportTemplate.getId()); } - return SdmResponse.success(this.removeById(reportTemplate.getId())); + return SdmResponse.success(); } @Override diff --git a/common/src/main/java/com/sdm/common/entity/req/task/TaskExportExcelParam.java b/common/src/main/java/com/sdm/common/entity/req/task/TaskExportExcelParam.java index 1d8e7937..40ca9243 100644 --- a/common/src/main/java/com/sdm/common/entity/req/task/TaskExportExcelParam.java +++ b/common/src/main/java/com/sdm/common/entity/req/task/TaskExportExcelParam.java @@ -50,4 +50,8 @@ public class TaskExportExcelParam { * 今明任务 筛选计划结束时间为今明两天的 */ private String todayTmrTasks; + /** + * 需求id + */ + private String demandId; } diff --git a/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java b/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java index 517e1807..1c03184d 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java @@ -119,6 +119,12 @@ public class SimulationTaskController implements ISimulationTaskFeignClient { return taskService.exportTask(taskExportExcelFormat, httpservletResponse); } + @PostMapping("/exportTaskByDemandId") + @Operation(summary = "导出需求关联的任务列表", description = "导出需求关联的任务列表") + public SdmResponse exportTaskByDemandId(@RequestBody TaskExportExcelFormat taskExportExcelFormat , HttpServletResponse httpservletResponse) { + return taskService.exportTaskByDemandId(taskExportExcelFormat, httpservletResponse); + } + // /** // * 同步CID创建的任务 // * diff --git a/project/src/main/java/com/sdm/project/model/vo/SpdmExportNewTaskVo.java b/project/src/main/java/com/sdm/project/model/vo/SpdmExportNewTaskVo.java index 86f240d6..2abcd67e 100644 --- a/project/src/main/java/com/sdm/project/model/vo/SpdmExportNewTaskVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/SpdmExportNewTaskVo.java @@ -155,5 +155,10 @@ public class SpdmExportNewTaskVo extends BaseEntity { private String disciplineCode = ""; private String performanceName = ""; private String performanceCode = ""; + /** + * 军令状时间 + */ + private String commitmentDeadline; + } diff --git a/project/src/main/java/com/sdm/project/model/vo/SpdmNewTaskVo.java b/project/src/main/java/com/sdm/project/model/vo/SpdmNewTaskVo.java index 8b8c1d81..2a56d339 100644 --- a/project/src/main/java/com/sdm/project/model/vo/SpdmNewTaskVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/SpdmNewTaskVo.java @@ -225,5 +225,9 @@ public class SpdmNewTaskVo extends BaseEntity { private String newTag10; private Integer expStatus; + /** + * 军令状时间 + */ + private String commitmentDeadline; } diff --git a/project/src/main/java/com/sdm/project/model/vo/SpdmTaskDetailVo.java b/project/src/main/java/com/sdm/project/model/vo/SpdmTaskDetailVo.java index d8246a24..00fa7a36 100644 --- a/project/src/main/java/com/sdm/project/model/vo/SpdmTaskDetailVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/SpdmTaskDetailVo.java @@ -161,5 +161,8 @@ public class SpdmTaskDetailVo extends BaseEntity { private String tag8; private String tag9; private String tag10; - + /** + * 军令状时间 + */ + private String commitmentDeadline; } diff --git a/project/src/main/java/com/sdm/project/service/ITaskService.java b/project/src/main/java/com/sdm/project/service/ITaskService.java index f2f7bd61..3e7615bd 100644 --- a/project/src/main/java/com/sdm/project/service/ITaskService.java +++ b/project/src/main/java/com/sdm/project/service/ITaskService.java @@ -53,6 +53,8 @@ public interface ITaskService { */ SdmResponse exportTask(TaskExportExcelFormat taskExportExcelFormat , HttpServletResponse httpservletResponse); + SdmResponse exportTaskByDemandId(TaskExportExcelFormat taskExportExcelFormat , HttpServletResponse httpservletResponse); + // SdmResponse synchronizeCidTask(SpdmSyncCidTaskReq req); SdmResponse getTaskDetail(GetTaskDetailReq req); 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 7bb5aaa5..4208fc10 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 @@ -471,12 +471,12 @@ public class TaskServiceImpl implements ITaskService { // 通过仿真负责人过滤 taskMemberVoList = taskMemberVoList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType()) && pMemberIdList.contains(member.getUserId())).collect(Collectors.toList()); } -// if (StringUtils.isNotBlank(req.getEMemberList())) { -// // 通过仿真执行人过滤 -// List eMemberIdList = Stream.of(req.getEMemberList().split(",")).map(Long::valueOf).toList(); -// // 通过仿真负责人过滤 -// taskMemberVoList = taskMemberVoList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType()) && eMemberIdList.contains(member.getUserId())).collect(Collectors.toList()); -// } + if (StringUtils.isNotBlank(req.getEMemberList())) { + // 通过仿真执行人过滤 + List eMemberIdList = Stream.of(req.getEMemberList().split(",")).map(Long::valueOf).toList(); + // 通过仿真负责人过滤 + taskMemberVoList = taskMemberVoList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType()) && eMemberIdList.contains(member.getUserId())).collect(Collectors.toList()); + } if (CollectionUtils.isEmpty(taskMemberVoList)) { log.error("taskMemberVoList为空"); jsonObject.put("total", 0); @@ -1279,6 +1279,67 @@ public class TaskServiceImpl implements ITaskService { return response; } + @Override + public SdmResponse exportTaskByDemandId(TaskExportExcelFormat taskExportExcelFormat, HttpServletResponse httpServletResponse) { + SpdmTaskListReq req = new SpdmTaskListReq(); + TaskExportExcelParam params = taskExportExcelFormat.getParams(); + List originIdMap = params.getIdMap(); + if (ObjectUtils.isEmpty(params.getType())) { + log.error("type不能为空"); + return SdmResponse.failed("type不能为空"); + } + if (CollectionUtils.isEmpty(originIdMap)) { + log.error("idMap不能为空"); + return SdmResponse.failed("idMap不能为空"); + } + List currentIdMapList = new ArrayList<>(); + for (com.sdm.common.entity.bo.TaskNodeTag originTaskNodeTag : originIdMap) { + TaskNodeTag taskNodeTag = new TaskNodeTag(); + taskNodeTag.setKey(originTaskNodeTag.getKey()); + taskNodeTag.setValue(originTaskNodeTag.getValue()); + currentIdMapList.add(taskNodeTag); + } + req.setIdMap(currentIdMapList); + if (ObjectUtils.isNotEmpty(params)) { + BeanUtils.copyProperties(params, req); + } + req.setDemandId(params.getDemandId()); + req.setCurrent(1); + req.setSize(10000); + + List exportExcelFormats = taskExportExcelFormat.getExcelHeaders(); + SdmResponse taskRespond = getTaskListByDemandId(req); + SdmResponse response = new SdmResponse(); + if (taskRespond.isSuccess()) { + JSONObject dataObj = (JSONObject) taskRespond.getData(); + List taskVoList = (List) dataObj.get("data"); + List exportNewTaskVoList = new ArrayList<>(); + List pMemberList; + String pMemberName = ""; + List eMemberList; + String eMemberName = ""; + for (SpdmTaskDetailVo spdmNewTaskVo : taskVoList) { + pMemberList = spdmNewTaskVo.getPMemberList(); + if (CollectionUtils.isNotEmpty(pMemberList)) { + pMemberName = pMemberList.stream().map(CIDUserResp::getNickname).collect(Collectors.joining(",")); + } + eMemberList = spdmNewTaskVo.getPMemberList(); + if (CollectionUtils.isNotEmpty(eMemberList)) { + eMemberName = eMemberList.stream().map(CIDUserResp::getNickname).collect(Collectors.joining(",")); + } + SpdmExportNewTaskVo spdmExportNewTaskVo = new SpdmExportNewTaskVo(); + BeanUtils.copyProperties(spdmNewTaskVo, spdmExportNewTaskVo); + spdmExportNewTaskVo.setPMemberList(pMemberName); + spdmExportNewTaskVo.setEMemberList(eMemberName); + exportNewTaskVoList.add(spdmExportNewTaskVo); + } + ExcelUtil.exportExcelNoMerge(JSONArray.from(exportNewTaskVoList), exportExcelFormats, httpServletResponse); + } else { + response = SdmResponse.failed(taskRespond.getMessage()); + } + return response; + } + // @Override // public SdmResponse synchronizeCidTask(SpdmSyncCidTaskReq req) { // log.info("同步CID任务的参数为:{}", req); @@ -1995,10 +2056,10 @@ public class TaskServiceImpl implements ITaskService { } } if (CollectionUtils.isNotEmpty(spdmPUserVoList)) { - spdmTaskDetailVo.setPMemberList(spdmPUserVoList); + spdmTaskDetailVo.setPMemberList(spdmPUserVoList.stream().distinct().toList()); } if (CollectionUtils.isNotEmpty(spdmEUserVoList)) { - spdmTaskDetailVo.setEMemberList(spdmEUserVoList); + spdmTaskDetailVo.setEMemberList(spdmEUserVoList.stream().distinct().toList()); } spdmTaskDetailVoList.add(spdmTaskDetailVo); } diff --git a/task/pom.xml b/task/pom.xml index ab9697b3..062c2e19 100644 --- a/task/pom.xml +++ b/task/pom.xml @@ -91,11 +91,11 @@ org.springframework.boot spring-boot-starter-actuator - - org.postgresql - postgresql - 42.2.5 - + + + + +