From 8c8f79e5edb4bf3747dafdd75a9bf1b2faf77435 Mon Sep 17 00:00:00 2001 From: lidongyang <506508008@qq.com> Date: Thu, 11 Dec 2025 20:23:43 +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 --- .../com/sdm/common/utils/excel/ExcelUtil.java | 4 +- .../sdm/project/common/MemberTypeEnum.java | 4 +- .../SimulationDemandController.java | 12 + .../SimulationProjectController.java | 12 +- .../controller/SimulationTaskController.java | 12 + .../project/dao/SimulationDemandMapper.java | 3 + .../sdm/project/dao/SimulationTaskMapper.java | 2 + .../project/model/po/PerformanceNodePo.java | 22 +- .../sdm/project/model/po/ProjectNodePo.java | 4 + .../com/sdm/project/model/po/TaskNodePo.java | 4 + .../project/model/req/SpdmAddDemandReq.java | 14 + .../project/model/req/SpdmEditDemandReq.java | 12 + .../model/req/SpdmProjectNodeEditReq.java | 1 + .../project/model/req/SpdmTaskListReq.java | 4 + .../project/model/req/TaskEditNodeReq.java | 4 + .../sdm/project/model/vo/SpdmDemandVo.java | 12 + .../project/model/vo/SpdmExportDemandVo.java | 12 + .../project/model/vo/SpdmExportNewTaskVo.java | 19 +- .../sdm/project/model/vo/SpdmNewTaskVo.java | 60 +++ .../project/model/vo/SpdmTaskDetailVo.java | 2 + .../com/sdm/project/model/vo/SpdmTaskVo.java | 8 + .../sdm/project/service/IDemandService.java | 2 + .../com/sdm/project/service/ITaskService.java | 6 + .../service/impl/DemandServiceImpl.java | 229 +++++++- .../service/impl/ProjectServiceImpl.java | 115 +++- .../project/service/impl/TaskServiceImpl.java | 493 +++++++++++++++++- .../mapper/SimulationDemandMapper.xml | 8 + .../mapper/SimulationProjectMapper.xml | 4 +- .../resources/mapper/SimulationTaskMapper.xml | 4 + 29 files changed, 1043 insertions(+), 45 deletions(-) diff --git a/common/src/main/java/com/sdm/common/utils/excel/ExcelUtil.java b/common/src/main/java/com/sdm/common/utils/excel/ExcelUtil.java index cd1e2b17..1b5eb1e7 100644 --- a/common/src/main/java/com/sdm/common/utils/excel/ExcelUtil.java +++ b/common/src/main/java/com/sdm/common/utils/excel/ExcelUtil.java @@ -298,7 +298,9 @@ public class ExcelUtil { JSONObject dictData = exportExcelFormat.getDictData(); if(ObjectUtils.isNotEmpty(dictData)) { - value = dictData.getString(value); + if (StringUtils.isNotBlank(dictData.getString(value))) { + value = dictData.getString(value); + } } cellValue.setValue(value); } diff --git a/project/src/main/java/com/sdm/project/common/MemberTypeEnum.java b/project/src/main/java/com/sdm/project/common/MemberTypeEnum.java index 13ae9336..9fbed22a 100644 --- a/project/src/main/java/com/sdm/project/common/MemberTypeEnum.java +++ b/project/src/main/java/com/sdm/project/common/MemberTypeEnum.java @@ -6,7 +6,9 @@ import lombok.Getter; public enum MemberTypeEnum { PRINCIPAL("仿真负责人", 0), - EXECUTOR("仿真执行人", 1); + EXECUTOR("仿真执行人", 1), + THREED("3D负责人", 2), + ATTENTION("关注人", 3); private final String name; diff --git a/project/src/main/java/com/sdm/project/controller/SimulationDemandController.java b/project/src/main/java/com/sdm/project/controller/SimulationDemandController.java index f76b8df2..5d91bfab 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationDemandController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationDemandController.java @@ -103,4 +103,16 @@ public class SimulationDemandController { return demandService.exportDemand(demandExportExcelFormat, httpservletResponse); } + /** + * 根据需求id,查询需求详情) + * + * @param demandId + * @return + */ + @GetMapping("/detail") + @Operation(summary = "根据需求id,查询需求详情", description = "根据需求id,查询需求详情") + public SdmResponse detail(@RequestParam @Validated String demandId) { + return demandService.detail(demandId); + } + } diff --git a/project/src/main/java/com/sdm/project/controller/SimulationProjectController.java b/project/src/main/java/com/sdm/project/controller/SimulationProjectController.java index 97d390e3..daf72256 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationProjectController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationProjectController.java @@ -7,6 +7,7 @@ import com.sdm.project.model.bo.ModifyProjectNode; import com.sdm.project.model.req.ProjectTreeTagReq; import com.sdm.project.model.req.SpdmNodeReq; import com.sdm.project.service.IProjectService; +import com.sdm.project.service.ITaskService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; @@ -24,6 +25,9 @@ public class SimulationProjectController { @Resource private IProjectService projectService; + @Resource + private ITaskService taskService; + /** * 操作节点(增、删、改) @@ -49,10 +53,16 @@ public class SimulationProjectController { return projectService.getTaskTree(req); } +// @PostMapping("/exportTaskTree") +// @Operation(summary = "导出任务分析项树", description = "导出任务分析项树") +// public SdmResponse exportTaskTree(@RequestBody TaskTreeExportExcelFormat taskTreeExportExcelFormat , HttpServletResponse httpservletResponse) { +// return projectService.exportTaskTree(taskTreeExportExcelFormat, httpservletResponse); +// } + @PostMapping("/exportTaskTree") @Operation(summary = "导出任务分析项树", description = "导出任务分析项树") public SdmResponse exportTaskTree(@RequestBody TaskTreeExportExcelFormat taskTreeExportExcelFormat , HttpServletResponse httpservletResponse) { - return projectService.exportTaskTree(taskTreeExportExcelFormat, httpservletResponse); + return taskService.newExportTaskTree(taskTreeExportExcelFormat, httpservletResponse); } 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 e949f4a2..fa5ab89d 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java @@ -179,4 +179,16 @@ public class SimulationTaskController { return taskService.getUserDifficultyStatistics(req); } + /** + * 根据需求id,查询任务列表 + * + * @param req + * @return + */ + @PostMapping("/getTaskListByDemandId") + @Operation(summary = "根据需求id,查询任务列表", description = "根据需求id,查询任务列表") + public SdmResponse getTaskListByDemandId(@RequestBody @Validated SpdmTaskListReq req) { + return taskService.getTaskListByDemandId(req); + } + } diff --git a/project/src/main/java/com/sdm/project/dao/SimulationDemandMapper.java b/project/src/main/java/com/sdm/project/dao/SimulationDemandMapper.java index e1f2371b..4178af74 100644 --- a/project/src/main/java/com/sdm/project/dao/SimulationDemandMapper.java +++ b/project/src/main/java/com/sdm/project/dao/SimulationDemandMapper.java @@ -33,4 +33,7 @@ public interface SimulationDemandMapper extends BaseMapper { SpdmDemandVo getDemandByName(@Param("tenantId") Long tenantId,@Param("demandName") String demandName); List getDemandExtraList(@Param("demandIdList") List demandIdList); + + List getDemandListById(@Param("demandIdList") List demandIdList); + } diff --git a/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java b/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java index bb1b76cc..37ad2edc 100644 --- a/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java +++ b/project/src/main/java/com/sdm/project/dao/SimulationTaskMapper.java @@ -54,4 +54,6 @@ public interface SimulationTaskMapper extends BaseMapper { List getTaskListByName(@Param("taskNameList") List taskNameList); + List getTaskListByDemandId(@Param("demandId") String demandId); + } diff --git a/project/src/main/java/com/sdm/project/model/po/PerformanceNodePo.java b/project/src/main/java/com/sdm/project/model/po/PerformanceNodePo.java index 0358dfd2..57271d49 100644 --- a/project/src/main/java/com/sdm/project/model/po/PerformanceNodePo.java +++ b/project/src/main/java/com/sdm/project/model/po/PerformanceNodePo.java @@ -1,5 +1,6 @@ package com.sdm.project.model.po; +import com.fasterxml.jackson.annotation.JsonProperty; import com.sdm.common.entity.pojo.BaseEntity; import lombok.Data; @@ -81,6 +82,25 @@ public class PerformanceNodePo extends NodeAllBase { /** * 仿真负责人 */ - private String pMembers; + @JsonProperty(value = "pMemberList") + private String pMemberList = ""; + @JsonProperty(value = "eMemberList") + private String eMemberList = ""; + private String exeStatus = ""; + private Integer achieveStatus = 0; + private String beginTime = ""; + private String endTime = ""; + private String flowTemplate = ""; + private String analyseTarget = ""; + private String confidence = ""; + private Float difficult = 0F; + private Integer days = 0;; + private String analyseSoftware = ""; + private String imageFileId = ""; + @JsonProperty(value = "bCapacity") + private String bCapacity = ""; + private String department = ""; + private String section = ""; + private String group = ""; } diff --git a/project/src/main/java/com/sdm/project/model/po/ProjectNodePo.java b/project/src/main/java/com/sdm/project/model/po/ProjectNodePo.java index a7d2ec8d..13299a05 100644 --- a/project/src/main/java/com/sdm/project/model/po/ProjectNodePo.java +++ b/project/src/main/java/com/sdm/project/model/po/ProjectNodePo.java @@ -124,12 +124,16 @@ public class ProjectNodePo extends NodeAllBase { @JsonProperty(value = "pMemberList") private List pMemberList; + private String pMembers; + /** * 仿真执行人 */ @JsonProperty(value = "eMemberList") private List eMemberList; + private String eMembers; + /** * 拓展属性集合 */ diff --git a/project/src/main/java/com/sdm/project/model/po/TaskNodePo.java b/project/src/main/java/com/sdm/project/model/po/TaskNodePo.java index 8e6b367c..d7c14234 100644 --- a/project/src/main/java/com/sdm/project/model/po/TaskNodePo.java +++ b/project/src/main/java/com/sdm/project/model/po/TaskNodePo.java @@ -132,12 +132,16 @@ public class TaskNodePo extends NodeAllBase { @JsonProperty(value = "pMemberList") private List pMemberList; + private String pMembers; + /** * 仿真执行人 */ @JsonProperty(value = "eMemberList") private List eMemberList; + private String eMembers; + /** * 拓展属性集合 */ 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 2c6f1714..1061fae1 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 @@ -111,4 +111,18 @@ public class SpdmAddDemandReq extends BaseEntity { */ private String nodeId; + /** + * 3D负责人 + */ + @JsonProperty(value = "tMemberList") + private String tMemberList; + + /** + * 关注人 + */ + @JsonProperty(value = "aMemberList") + private String aMemberList; + + + } diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmEditDemandReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmEditDemandReq.java index 3ebdcd90..07ca135e 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmEditDemandReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmEditDemandReq.java @@ -107,4 +107,16 @@ public class SpdmEditDemandReq extends BaseEntity { */ private String nodeId; + /** + * 3D负责人 + */ + @JsonProperty(value = "tMemberList") + private String tMemberList; + + /** + * 关注人 + */ + @JsonProperty(value = "aMemberList") + private String aMemberList; + } diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmProjectNodeEditReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmProjectNodeEditReq.java index c6f66127..385d74c2 100644 --- a/project/src/main/java/com/sdm/project/model/req/SpdmProjectNodeEditReq.java +++ b/project/src/main/java/com/sdm/project/model/req/SpdmProjectNodeEditReq.java @@ -132,4 +132,5 @@ public class SpdmProjectNodeEditReq extends BaseEntity { private String exeStatus; private List extras; private String englishName; + private String parentId; } 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 a7e00c8e..586efd13 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 @@ -107,4 +107,8 @@ public class SpdmTaskListReq { */ private Integer sortOrder; + private String demandId; + + private Boolean convertTag = true; + } diff --git a/project/src/main/java/com/sdm/project/model/req/TaskEditNodeReq.java b/project/src/main/java/com/sdm/project/model/req/TaskEditNodeReq.java index 849df1c5..747da8f6 100644 --- a/project/src/main/java/com/sdm/project/model/req/TaskEditNodeReq.java +++ b/project/src/main/java/com/sdm/project/model/req/TaskEditNodeReq.java @@ -169,6 +169,10 @@ public class TaskEditNodeReq extends BaseEntity { */ private String unit; + private String highValue; + + private String lowValue; + private String nodeVersion; diff --git a/project/src/main/java/com/sdm/project/model/vo/SpdmDemandVo.java b/project/src/main/java/com/sdm/project/model/vo/SpdmDemandVo.java index 58e04905..916c25d0 100644 --- a/project/src/main/java/com/sdm/project/model/vo/SpdmDemandVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/SpdmDemandVo.java @@ -112,4 +112,16 @@ public class SpdmDemandVo extends BaseEntity { private String simType; + /** + * 3D负责人 + */ + @JsonProperty(value = "tMemberList") + private List tMemberList; + + /** + * 关注人 + */ + @JsonProperty(value = "aMemberList") + private List aMemberList; + } diff --git a/project/src/main/java/com/sdm/project/model/vo/SpdmExportDemandVo.java b/project/src/main/java/com/sdm/project/model/vo/SpdmExportDemandVo.java index de21c33d..f99037bb 100644 --- a/project/src/main/java/com/sdm/project/model/vo/SpdmExportDemandVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/SpdmExportDemandVo.java @@ -81,6 +81,18 @@ public class SpdmExportDemandVo extends BaseEntity { @JsonProperty(value = "eMemberList") private String eMemberList; + /** + * 3D负责人 + */ + @JsonProperty(value = "tMemberList") + private String tMemberList; + + /** + * 关注人 + */ + @JsonProperty(value = "aMemberList") + private String aMemberList; + /** * 预留拓展属性 */ 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 11aff98a..86f240d6 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 @@ -86,7 +86,7 @@ public class SpdmExportNewTaskVo extends BaseEntity { private String confidence; private String analyseTarget; - private String analyseSoftware; + private String analyseSoftware = ""; private String approvalStatus; private String comfirmStatus; private String description; @@ -95,11 +95,11 @@ public class SpdmExportNewTaskVo extends BaseEntity { */ private Float difficult; - private String department; - private String sectionName; - private String groupName; + private String department = ""; + private String sectionName = ""; + private String groupName = ""; @JsonProperty(value = "bCapacity") - private String bCapacity; + private String bCapacity = ""; private String flowTemplate; private String englishName; @@ -147,4 +147,13 @@ public class SpdmExportNewTaskVo extends BaseEntity { @JsonProperty(value = "tag10") private String tag10; + private String machineName = ""; + private String machineCode = ""; + private String workspaceName = ""; + private String workspaceCode = ""; + private String disciplineName = ""; + private String disciplineCode = ""; + private String performanceName = ""; + private String performanceCode = ""; + } 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 32d2dab5..abc5d118 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 @@ -150,4 +150,64 @@ public class SpdmNewTaskVo extends BaseEntity { private List extras; + /** + * 关联的需求名称 + */ + private String demandName; + + + + + + + + + + private String taskId; + + + + /** + * 指标名称 + */ + private String performanceName; + + private String performanceType; + private String highValue; + private String lowValue; + + + private String nodeName; + + /** + * 达标方式 + */ + private String method; + + private String completeStatus; + + /** + * 目标值 + */ + private String targetValue; + + /** + * 单位 + */ + private String unit; + + + + private String projectName; + + private String phaseName; + + private String disciplineName; + + private String imageFileId = ""; + private String section = ""; + private String group = ""; + + + } 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 96a63514..5a1ca460 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 @@ -42,6 +42,8 @@ public class SpdmTaskDetailVo extends BaseEntity { private String exeStatusValue; + private String exeStatus; + /** * 仿真负责人 */ diff --git a/project/src/main/java/com/sdm/project/model/vo/SpdmTaskVo.java b/project/src/main/java/com/sdm/project/model/vo/SpdmTaskVo.java index 0f3f62ed..563de7fe 100644 --- a/project/src/main/java/com/sdm/project/model/vo/SpdmTaskVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/SpdmTaskVo.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.sdm.common.entity.pojo.BaseEntity; import com.sdm.common.entity.resp.system.CIDUserResp; +import com.sdm.project.model.po.TaskNodeExtraPo; import com.sdm.project.model.vo.SpdmTaskMemberVo; import lombok.Data; @@ -139,4 +140,11 @@ public class SpdmTaskVo extends BaseEntity { private String tag9; private String tag10; + private List extras; + + /** + * 关联的需求名称 + */ + private String demandName; + } diff --git a/project/src/main/java/com/sdm/project/service/IDemandService.java b/project/src/main/java/com/sdm/project/service/IDemandService.java index 51154df3..afcdbc0e 100644 --- a/project/src/main/java/com/sdm/project/service/IDemandService.java +++ b/project/src/main/java/com/sdm/project/service/IDemandService.java @@ -33,4 +33,6 @@ public interface IDemandService { */ SdmResponse exportDemand(DemandExportExcelFormat demandExportExcelFormat , HttpServletResponse httpservletResponse); + SdmResponse detail(String demandId); + } 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 8af4a358..43529ec3 100644 --- a/project/src/main/java/com/sdm/project/service/ITaskService.java +++ b/project/src/main/java/com/sdm/project/service/ITaskService.java @@ -3,6 +3,7 @@ package com.sdm.project.service; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.ExportExcelFormat; import com.sdm.common.entity.req.task.TaskExportExcelFormat; +import com.sdm.common.entity.req.task.TaskTreeExportExcelFormat; import com.sdm.project.model.bo.ModifyTaskNode; import com.sdm.project.model.req.*; import com.sdm.project.model.req.YA.SyncCidTaskReq; @@ -62,4 +63,9 @@ public interface ITaskService { SdmResponse getUserTaskCompleteStatistics(UserTaskCompleteStatisticsReq req); SdmResponse getUserDifficultyStatistics(UserDifficultCompleteStatisticsReq req); + + SdmResponse getTaskListByDemandId(SpdmTaskListReq req); + + SdmResponse newExportTaskTree(TaskTreeExportExcelFormat taskTreeExportExcelFormat, 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 b060651e..3a477c56 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 @@ -94,6 +94,10 @@ public class DemandServiceImpl extends BaseService implements IDemandService { String pMemberList = req.getPMemberList(); // 获取仿真执行人 String eMemberList = req.getEMemberList(); + // 3D负责人 + String threeDMemberList = req.getTMemberList(); + // 关注人 + String attentionMemberList = req.getAMemberList(); // 获取需求额外属性 List demandExtraList = req.getExtras(); String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); @@ -137,6 +141,32 @@ public class DemandServiceImpl extends BaseService implements IDemandService { } } + if (StringUtils.isNotBlank(threeDMemberList)) { + String[] threeDMemberArray = threeDMemberList.split(","); + for (String userId : threeDMemberArray) { + SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); + spdmDemandRelateMemberReq.setDemandId(uuid); + spdmDemandRelateMemberReq.setType(2); + spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId)); + spdmDemandRelateMemberReq.setCreateTime(curDateStr); + spdmDemandRelateMemberReq.setCreator(jobNumber); + allMemberList.add(spdmDemandRelateMemberReq); + } + } + + if (StringUtils.isNotBlank(attentionMemberList)) { + String[] attentionMemberArray = attentionMemberList.split(","); + for (String userId : attentionMemberArray) { + SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); + spdmDemandRelateMemberReq.setDemandId(uuid); + spdmDemandRelateMemberReq.setType(3); + spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId)); + spdmDemandRelateMemberReq.setCreateTime(curDateStr); + spdmDemandRelateMemberReq.setCreator(jobNumber); + allMemberList.add(spdmDemandRelateMemberReq); + } + } + if (CollectionUtils.isNotEmpty(allMemberList)) { if (mapper.addDemandMember(allMemberList) <= 0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -177,6 +207,10 @@ public class DemandServiceImpl extends BaseService implements IDemandService { String pMemberList = req.getPMemberList(); // 获取仿真执行人 String eMemberList = req.getEMemberList(); + // 3D负责人 + String threeDMemberList = req.getTMemberList(); + // 关注人 + String attentionMemberList = req.getAMemberList(); // 获取需求额外属性 List demandExtraList = req.getExtras(); String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); @@ -216,6 +250,32 @@ public class DemandServiceImpl extends BaseService implements IDemandService { } } + if (StringUtils.isNotBlank(threeDMemberList)) { + String[] threeDMemberArray = threeDMemberList.split(","); + for (String userId : threeDMemberArray) { + SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); + spdmDemandRelateMemberReq.setDemandId(uuid); + spdmDemandRelateMemberReq.setType(2); + spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId)); + spdmDemandRelateMemberReq.setCreateTime(curDateStr); + spdmDemandRelateMemberReq.setCreator(jobNumber); + allMemberList.add(spdmDemandRelateMemberReq); + } + } + + if (StringUtils.isNotBlank(attentionMemberList)) { + String[] attentionMemberArray = attentionMemberList.split(","); + for (String userId : attentionMemberArray) { + SpdmDemandRelateMemberReq spdmDemandRelateMemberReq = new SpdmDemandRelateMemberReq(); + spdmDemandRelateMemberReq.setDemandId(uuid); + spdmDemandRelateMemberReq.setType(3); + spdmDemandRelateMemberReq.setUserId(Long.valueOf(userId)); + spdmDemandRelateMemberReq.setCreateTime(curDateStr); + spdmDemandRelateMemberReq.setCreator(jobNumber); + allMemberList.add(spdmDemandRelateMemberReq); + } + } + if (CollectionUtils.isNotEmpty(allMemberList)) { if (mapper.addDemandMember(allMemberList) <= 0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -306,7 +366,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { for (SpdmDemandVo demand : demandList) { eachTaskList = taskMap.get(demand.getUuid()); if (CollectionUtils.isEmpty(eachTaskList)) { - log.info("当前需求:{}没有关联的任务",demand.getId()); + log.info("当前需求:{}没有关联的任务", demand.getId()); newDemandList.add(demand); } else { if (eachTaskList.stream().map(SpdmTaskVo::getAchieveStatus).toList().contains(TaskAchieveStatusEnum.UNQUALIFIED.getCode())) { @@ -316,7 +376,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { } else { eachStatus = TaskAchieveStatusEnum.QUALIFIED.getCode(); } - log.info("当前需求:{}的风险状态为:{}",demand.getId(),eachStatus); + log.info("当前需求:{}的风险状态为:{}", demand.getId(), eachStatus); if (!eachStatus.equals(req.getAchieveStatus())) { continue; } @@ -342,7 +402,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { for (SpdmDemandVo demand : demandList) { eachTaskList = taskMap.get(demand.getUuid()); if (CollectionUtils.isEmpty(eachTaskList)) { - log.info("当前需求:{}没有关联的任务",demand.getId()); + log.info("当前需求:{}没有关联的任务", demand.getId()); newDemandList.add(demand); } else { @@ -374,7 +434,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { } else { eachStatus = TaskExeStatusEnum.IN_PROGRESS.getCode(); } - log.info("当前需求:{}的需求状态为:{}",demand.getId(),eachStatus); + log.info("当前需求:{}的需求状态为:{}", demand.getId(), eachStatus); if (!eachStatus.equals(req.getDemandStatus())) { continue; } @@ -399,7 +459,8 @@ public class DemandServiceImpl extends BaseService implements IDemandService { return SdmResponse.success(jsonObject); } List eachTaskList; - String eachStatus; + String eachAchieveStatus; + String eachExeStatus; for (SpdmDemandVo demand : demandList) { eachTaskList = taskMap.get(demand.getUuid()); if (CollectionUtils.isEmpty(eachTaskList)) { @@ -407,13 +468,33 @@ public class DemandServiceImpl extends BaseService implements IDemandService { continue; } if (eachTaskList.stream().map(SpdmTaskVo::getAchieveStatus).toList().contains(TaskAchieveStatusEnum.UNQUALIFIED.getCode())) { - eachStatus = TaskAchieveStatusEnum.UNQUALIFIED.getCode(); + eachAchieveStatus = TaskAchieveStatusEnum.UNQUALIFIED.getCode(); } else if (eachTaskList.stream().map(SpdmTaskVo::getAchieveStatus).toList().contains(TaskAchieveStatusEnum.NO_CALCULATE.getCode())) { - eachStatus = TaskAchieveStatusEnum.NO_CALCULATE.getCode(); + eachAchieveStatus = TaskAchieveStatusEnum.NO_CALCULATE.getCode(); } else { - eachStatus = TaskAchieveStatusEnum.QUALIFIED.getCode(); + eachAchieveStatus = TaskAchieveStatusEnum.QUALIFIED.getCode(); } - demand.setAchieveStatus(eachStatus); + demand.setAchieveStatus(eachAchieveStatus); + + List statusList = eachTaskList.stream().map(SpdmTaskVo::getExeStatus).toList(); + if (statusList.contains(TaskExeStatusEnum.IN_PROGRESS.getCode())) { + eachExeStatus = TaskExeStatusEnum.IN_PROGRESS.getCode(); + } else if (statusList.contains(TaskExeStatusEnum.PAUSED.getCode())) { + eachExeStatus = TaskExeStatusEnum.PAUSED.getCode(); + } else if (statusList.contains(TaskExeStatusEnum.POSTPONED.getCode())) { + eachExeStatus = TaskExeStatusEnum.POSTPONED.getCode(); + } else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.COMPLETED.getCode().equals(status))) { + eachExeStatus = TaskExeStatusEnum.COMPLETED.getCode(); + } else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.CLOSED.getCode().equals(status))) { + eachExeStatus = TaskExeStatusEnum.CLOSED.getCode(); + } else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.NO_STARTED.getCode().equals(status))) { + eachExeStatus = TaskExeStatusEnum.NO_STARTED.getCode(); + } else if (statusList.stream().allMatch(status -> TaskExeStatusEnum.REJECTED.getCode().equals(status))) { + eachExeStatus = TaskExeStatusEnum.REJECTED.getCode(); + } else { + eachExeStatus = TaskExeStatusEnum.IN_PROGRESS.getCode(); + } + demand.setDemandStatus(eachExeStatus); } Map> demandMemberMap = Map.of(); if (CollectionUtils.isNotEmpty(demandMemberVoList)) { @@ -439,7 +520,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { List userIdList = demandMemberVoList.stream().map(SpdmDemandMemberVo::getUserId).toList(); Map> userMap = Map.of(); if (CollectionUtils.isNotEmpty(userIdList)) { - SdmResponse> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(userIdList).build()); + SdmResponse> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(userIdList).build()); List userList = cidUserResp.getData(); if (CollectionUtils.isNotEmpty(userList)) { userMap = userList.stream().collect(Collectors.groupingBy(CIDUserResp::getUserId)); @@ -479,6 +560,22 @@ public class DemandServiceImpl extends BaseService implements IDemandService { } } spdmDemandVo.setEMemberList(spdmEUserVoList); + + List spdmTUserVoList = new ArrayList<>(); + for (Long userId : eachDemandMemberList.stream().filter(member -> MemberTypeEnum.THREED.getCode().equals(member.getType())).map(SpdmDemandMemberVo::getUserId).toList()) { + if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) { + spdmTUserVoList.addAll(userMap.get(userId)); + } + } + spdmDemandVo.setTMemberList(spdmTUserVoList); + + List spdmAUserVoList = new ArrayList<>(); + for (Long userId : eachDemandMemberList.stream().filter(member -> MemberTypeEnum.ATTENTION.getCode().equals(member.getType())).map(SpdmDemandMemberVo::getUserId).toList()) { + if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) { + spdmAUserVoList.addAll(userMap.get(userId)); + } + } + spdmDemandVo.setAMemberList(spdmAUserVoList); } jsonObject.put("data", demandList); return SdmResponse.success(jsonObject); @@ -667,20 +764,24 @@ public class DemandServiceImpl extends BaseService implements IDemandService { SpdmDemandListReq req = new SpdmDemandListReq(); DemandExportExcelParam params = demandExportExcelFormat.getParams(); if (ObjectUtils.isNotEmpty(params)) { - BeanUtils.copyProperties(params,req); + BeanUtils.copyProperties(params, req); } List exportExcelFormats = demandExportExcelFormat.getExcelHeaders(); req.setCurrent(1); req.setSize(10000); SdmResponse taskRespond = list(req); - if(taskRespond.isSuccess()) { - JSONObject dataObj = (JSONObject) taskRespond.getData(); + if (taskRespond.isSuccess()) { + JSONObject dataObj = (JSONObject) taskRespond.getData(); List demandVoList = (List) dataObj.get("data"); List exportDemandVoList = new ArrayList<>(); List pMemberList; String pMemberName = ""; List eMemberList; String eMemberName = ""; + List tMemberList; + String tMemberName = ""; + List aMemberList; + String aMemberName = ""; String projectId; String phaseId; List nodeIdList = new ArrayList<>(); @@ -723,19 +824,115 @@ public class DemandServiceImpl extends BaseService implements IDemandService { if (CollectionUtils.isNotEmpty(eMemberList)) { eMemberName = eMemberList.stream().map(CIDUserResp::getNickname).collect(Collectors.joining(",")); } + tMemberList = spdmDemandVo.getTMemberList(); + if (CollectionUtils.isNotEmpty(tMemberList)) { + tMemberName = tMemberList.stream().map(CIDUserResp::getNickname).collect(Collectors.joining(",")); + } + aMemberList = spdmDemandVo.getPMemberList(); + if (CollectionUtils.isNotEmpty(aMemberList)) { + aMemberName = aMemberList.stream().map(CIDUserResp::getNickname).collect(Collectors.joining(",")); + } SpdmExportDemandVo spdmExportDemandVo = new SpdmExportDemandVo(); - BeanUtils.copyProperties(spdmDemandVo,spdmExportDemandVo); + BeanUtils.copyProperties(spdmDemandVo, spdmExportDemandVo); spdmExportDemandVo.setPMemberList(pMemberName); spdmExportDemandVo.setEMemberList(eMemberName); + spdmExportDemandVo.setTMemberList(tMemberName); + spdmExportDemandVo.setAMemberList(aMemberName); exportDemandVoList.add(spdmExportDemandVo); } - ExcelUtil.exportExcelNoMerge(JSONArray.from(exportDemandVoList),exportExcelFormats,httpServletResponse); + ExcelUtil.exportExcelNoMerge(JSONArray.from(exportDemandVoList), exportExcelFormats, httpServletResponse); } else { - response = SdmResponse.failed(taskRespond.getMessage()); + response = SdmResponse.failed(taskRespond.getMessage()); } return response; } + @Override + public SdmResponse detail(String demandId) { + List demandList = mapper.getDemandListById(Collections.singletonList(demandId)); + if (CollectionUtils.isEmpty(demandList)) { + return SdmResponse.success(new ArrayList<>()); + } + SpdmDemandVo spdmDemandVo = demandList.get(0); + List demandMemberVoList = mapper.getMemberList(Collections.singletonList(spdmDemandVo.getUuid()), null); + List demandExtraList = mapper.getDemandExtraList(Collections.singletonList(demandId)); + Map> demandExtraMap = Map.of(); + if (CollectionUtils.isNotEmpty(demandExtraList)) { + demandExtraMap = demandExtraList.stream().collect(Collectors.groupingBy(SpdmDemandExtraVo::getDemandId)); + } + List nodeIdList = new ArrayList<>(); + String projectId = spdmDemandVo.getProjectId(); + if (StringUtils.isNotBlank(projectId)) { + nodeIdList.add(projectId); + } + String phaseId = spdmDemandVo.getPhaseId(); + if (StringUtils.isNotBlank(phaseId)) { + nodeIdList.add(phaseId); + } + Map> nodeMap = Map.of(); + if (CollectionUtils.isNotEmpty(nodeIdList)) { + List nodeList = nodeMapper.getNodeListByIds(nodeIdList); + if (CollectionUtils.isNotEmpty(nodeList)) { + nodeMap = nodeList.stream().collect(Collectors.groupingBy(SpdmNodeVo::getUuid)); + } + } + List taskList = taskMapper.getTaskListByDemandIdList(demandList.stream().map(SpdmDemandVo::getUuid).toList()); + Map> taskMap = Map.of(); + if (CollectionUtils.isNotEmpty(taskList)) { + taskMap = taskList.stream().collect(Collectors.groupingBy(SpdmTaskVo::getDemandId)); + } + spdmDemandVo.setExtras(demandExtraMap.get(spdmDemandVo.getUuid())); + List taskVoList = taskMap.get(spdmDemandVo.getUuid()); + spdmDemandVo.setProgress(CollectionUtils.isEmpty(taskVoList) ? 0 : taskVoList.stream().mapToInt(SpdmTaskVo::getProgress).sum() / taskVoList.size()); + if (StringUtils.isNotBlank(spdmDemandVo.getProjectId())) { + spdmDemandVo.setProjectName(CollectionUtils.isNotEmpty(nodeMap.get(spdmDemandVo.getProjectId())) ? nodeMap.get(spdmDemandVo.getProjectId()).get(0).getNodeName() : ""); + } + if (StringUtils.isNotBlank(spdmDemandVo.getPhaseId())) { + spdmDemandVo.setPhaseName(CollectionUtils.isNotEmpty(nodeMap.get(spdmDemandVo.getPhaseId())) ? nodeMap.get(spdmDemandVo.getPhaseId()).get(0).getNodeName() : ""); + } + List userIdList = demandMemberVoList.stream().map(SpdmDemandMemberVo::getUserId).toList(); + Map> userMap = Map.of(); + if (CollectionUtils.isNotEmpty(userIdList)) { + SdmResponse> cidUserResp = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(userIdList).build()); + List userList = cidUserResp.getData(); + if (CollectionUtils.isNotEmpty(userList)) { + userMap = userList.stream().collect(Collectors.groupingBy(CIDUserResp::getUserId)); + } + } + if (CollectionUtils.isNotEmpty(demandMemberVoList)) { + List spdmPUserVoList = new ArrayList<>(); + for (Long userId : demandMemberVoList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).map(SpdmDemandMemberVo::getUserId).toList()) { + if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) { + spdmPUserVoList.addAll(userMap.get(userId)); + } + } + spdmDemandVo.setPMemberList(spdmPUserVoList); + List spdmEUserVoList = new ArrayList<>(); + for (Long userId : demandMemberVoList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).map(SpdmDemandMemberVo::getUserId).toList()) { + if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) { + spdmEUserVoList.addAll(userMap.get(userId)); + } + } + spdmDemandVo.setEMemberList(spdmEUserVoList); + List spdmTUserVoList = new ArrayList<>(); + for (Long userId : demandMemberVoList.stream().filter(member -> MemberTypeEnum.THREED.getCode().equals(member.getType())).map(SpdmDemandMemberVo::getUserId).toList()) { + if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) { + spdmTUserVoList.addAll(userMap.get(userId)); + } + } + spdmDemandVo.setTMemberList(spdmTUserVoList); + + List spdmAUserVoList = new ArrayList<>(); + for (Long userId : demandMemberVoList.stream().filter(member -> MemberTypeEnum.ATTENTION.getCode().equals(member.getType())).map(SpdmDemandMemberVo::getUserId).toList()) { + if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) { + spdmAUserVoList.addAll(userMap.get(userId)); + } + } + spdmDemandVo.setAMemberList(spdmAUserVoList); + } + return SdmResponse.success(spdmDemandVo); + } + private String getLastNodeId(TaskNode taskNode) { List tagListProperty; String lastNodeId = ""; 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 f177d138..ac05c56a 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 @@ -13,6 +13,7 @@ import com.sdm.common.entity.req.data.CreateDirReq; import com.sdm.common.entity.req.data.DelDirReq; import com.sdm.common.entity.req.data.RenameDirReq; import com.sdm.common.entity.req.system.UserQueryReq; +import com.sdm.common.entity.req.task.TaskExportExcelParam; import com.sdm.common.entity.req.task.TaskTreeExportExcelFormat; import com.sdm.common.entity.req.task.TaskTreeExportExcelParam; import com.sdm.common.entity.resp.system.CIDUserResp; @@ -29,6 +30,8 @@ import com.sdm.project.model.bo.*; import com.sdm.project.model.entity.SimulationTaskMember; import com.sdm.project.model.po.*; import com.sdm.project.model.req.*; +import com.sdm.project.model.vo.SpdmExportNewTaskVo; +import com.sdm.project.model.vo.SpdmNewTaskVo; import com.sdm.project.service.IProjectService; import com.sdm.project.service.ISimulationTaskMemberService; import jakarta.servlet.http.HttpServletResponse; @@ -96,6 +99,10 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { private static final String NODE_NAME_KEY = "nodeName"; private static final String NODE_CODE_KEY = "nodeCode"; + private static final String PMEMBER_CODE_KEY = "pMemberList"; + private static final String EMEMBER_CODE_KEY = "eMemberList"; + private static final String PMEMBER_NAME = "仿真负责人"; + private static final String EMEMBER_NAME = "仿真执行人"; private static final String MACHINE_NAME = "机台名称"; @@ -438,6 +445,11 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { for (TaskNodePo taskNodePo : currentNodeAssociatedTaskList) { eachPerformanceNodeList = performanceMap.get(taskNodePo.getUuid()); if (CollectionUtils.isNotEmpty(eachPerformanceNodeList)) { + for (PerformanceNodePo performanceNodePo : eachPerformanceNodeList) { + if (StringUtils.isBlank(performanceNodePo.getEnglishName())) { + performanceNodePo.setEnglishName(""); + } + } taskNodePo.getChildren().addAll(eachPerformanceNodeList); } } @@ -452,10 +464,12 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { if (CollectionUtils.isNotEmpty(eUserIdList)) { SdmResponse> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(eUserIdList).build()); taskNodePo.setEMemberList(cidUserResp.getData()); + taskNodePo.setEMembers(taskNodePo.getEMemberList().stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); } if (CollectionUtils.isNotEmpty(pUserIdList)) { SdmResponse> cidUserResp= sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(pUserIdList).build()); taskNodePo.setPMemberList(cidUserResp.getData()); + taskNodePo.setPMembers(taskNodePo.getPMemberList().stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); } } } @@ -486,6 +500,11 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { } if (CollectionUtils.isNotEmpty(sameTypeNodeList)) { addedIdList.addAll(sameTypeNodeList.stream().map(ProjectNodePo::getUuid).toList()); + for (ProjectNodePo nodePo : sameTypeNodeList) { + if (StringUtils.isBlank(nodePo.getEnglishName())) { + nodePo.setEnglishName(""); + } + } children.addAll(sameTypeNodeList); } } @@ -508,6 +527,11 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { generateTaskTree(nodePo,addedIdList,currentAddedIdList); } addedIdList.addAll(childrenTypeNodeList.stream().map(ProjectNodePo::getUuid).toList()); + for (ProjectNodePo nodePo : childrenTypeNodeList) { + if (StringUtils.isBlank(nodePo.getEnglishName())) { + nodePo.setEnglishName(""); + } + } children.addAll(childrenTypeNodeList); } } @@ -535,6 +559,11 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { generateTaskTree(nodePo,addedIdList,currentAddedIdList); } addedIdList.addAll(otherChildrenNodeList.stream().map(ProjectNodePo::getUuid).toList()); + for (ProjectNodePo nodePo : otherChildrenNodeList) { + if (StringUtils.isBlank(nodePo.getEnglishName())) { + nodePo.setEnglishName(""); + } + } children.addAll(otherChildrenNodeList); } } @@ -546,6 +575,11 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { task.setSection(task.getSectionName()); task.setGroup(task.getGroupName()); }); + for (TaskNodePo nodePo : currentNodeAssociatedTaskList) { + if (StringUtils.isBlank(nodePo.getEnglishName())) { + nodePo.setEnglishName(""); + } + } children.addAll(currentNodeAssociatedTaskList); } projectNodePo.setChildren(children); @@ -724,6 +758,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { if (CollectionUtils.isNotEmpty(extraList)) { for (TaskExtraNode extra : extraList) { TaskExtraNode taskExtraNode = new TaskExtraNode(); + taskExtraNode.setUuid(RandomUtil.generateString(32)); taskExtraNode.setPerformanceId(projectNode.getUuid()); taskExtraNode.setTaskId(projectNode.getTaskId()); taskExtraNode.setNodeId(projectNode.getNodeId()); @@ -1783,15 +1818,15 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { * @param dirName 待长江文件夹名称 */ private void createDir(String uuid, String uuidOwnType, String parentUuid, String dirName) { - CreateDirReq createDirReq = new CreateDirReq(); - createDirReq.setUuId(uuid); - createDirReq.setUuIdOwnType(uuidOwnType); - createDirReq.setParentUuId(ObjectUtils.isNotEmpty(parentUuid) ? parentUuid : null); - createDirReq.setDirName(dirName); - createDirReq.setDirType(DirTypeEnum.PROJECT_NODE_DIR.getValue()); - log.info("创建项目阶段时,调用创建文件夹的参数为:{}", createDirReq); - SdmResponse response = dataClientFeignClient.createDir(createDirReq); - log.info("创建项目阶段时,调用创建文件夹的返回值为:{}", response); +// CreateDirReq createDirReq = new CreateDirReq(); +// createDirReq.setUuId(uuid); +// createDirReq.setUuIdOwnType(uuidOwnType); +// createDirReq.setParentUuId(ObjectUtils.isNotEmpty(parentUuid) ? parentUuid : null); +// createDirReq.setDirName(dirName); +// createDirReq.setDirType(DirTypeEnum.PROJECT_NODE_DIR.getValue()); +// log.info("创建项目阶段时,调用创建文件夹的参数为:{}", createDirReq); +// SdmResponse response = dataClientFeignClient.createDir(createDirReq); +// log.info("创建项目阶段时,调用创建文件夹的返回值为:{}", response); } // 重命名文件夹 @@ -1981,6 +2016,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { } Optional nodeNameOptional = exportExcelFormats.stream().filter(header -> "nodeName".equals(header.getKey())).findAny(); Optional nodeCodeOptional = exportExcelFormats.stream().filter(header -> "nodeCode".equals(header.getKey())).findAny(); + Optional pMemberListOptional = exportExcelFormats.stream().filter(header -> "pMemberList".equals(header.getKey())).findAny(); + Optional eMemberListOptional = exportExcelFormats.stream().filter(header -> "eMemberList".equals(header.getKey())).findAny(); List fixedHeaderList = new ArrayList<>(); if (nodeNameOptional.isPresent() && nodeCodeOptional.isPresent()) { // 机台 @@ -2014,6 +2051,16 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { ExportExcelFormat taskCodeExportExcelFormat = new ExportExcelFormat(); taskCodeExportExcelFormat.setKey(NODE_CODE_KEY); taskCodeExportExcelFormat.setTitle(TASK_CODE); + ExportExcelFormat taskPmemberListExportExcelFormat = new ExportExcelFormat(); + if (pMemberListOptional.isPresent()) { + taskPmemberListExportExcelFormat.setKey(PMEMBER_CODE_KEY); + taskPmemberListExportExcelFormat.setTitle(PMEMBER_NAME); + } + ExportExcelFormat taskEmemberListExportExcelFormat = new ExportExcelFormat(); + if (eMemberListOptional.isPresent()) { + taskEmemberListExportExcelFormat.setKey(EMEMBER_CODE_KEY); + taskEmemberListExportExcelFormat.setTitle(EMEMBER_NAME); + } // 指标 ExportExcelFormat performanceNameExportExcelFormat = new ExportExcelFormat(); @@ -2031,6 +2078,12 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { fixedHeaderList.add(disciplineCodeExportExcelFormat); fixedHeaderList.add(taskNameExportExcelFormat); fixedHeaderList.add(taskCodeExportExcelFormat); + if (pMemberListOptional.isPresent()) { + fixedHeaderList.add(taskPmemberListExportExcelFormat); + } + if (eMemberListOptional.isPresent()) { + fixedHeaderList.add(taskEmemberListExportExcelFormat); + } fixedHeaderList.add(performanceNameExportExcelFormat); fixedHeaderList.add(performanceCodeExportExcelFormat); }else if (nodeNameOptional.isPresent()) { @@ -2053,6 +2106,16 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { ExportExcelFormat taskNameExportExcelFormat = new ExportExcelFormat(); taskNameExportExcelFormat.setKey(NODE_NAME_KEY); taskNameExportExcelFormat.setTitle(TASK_NAME); + ExportExcelFormat taskPmemberListExportExcelFormat = new ExportExcelFormat(); + if (pMemberListOptional.isPresent()) { + taskPmemberListExportExcelFormat.setKey(PMEMBER_CODE_KEY); + taskPmemberListExportExcelFormat.setTitle(PMEMBER_NAME); + } + ExportExcelFormat taskEmemberListExportExcelFormat = new ExportExcelFormat(); + if (eMemberListOptional.isPresent()) { + taskEmemberListExportExcelFormat.setKey(EMEMBER_CODE_KEY); + taskEmemberListExportExcelFormat.setTitle(EMEMBER_NAME); + } // 指标 ExportExcelFormat performanceNameExportExcelFormat = new ExportExcelFormat(); @@ -2063,6 +2126,12 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { fixedHeaderList.add(workspaceNameExportExcelFormat); fixedHeaderList.add(disciplineNameExportExcelFormat); fixedHeaderList.add(taskNameExportExcelFormat); + if (pMemberListOptional.isPresent()) { + fixedHeaderList.add(taskPmemberListExportExcelFormat); + } + if (eMemberListOptional.isPresent()) { + fixedHeaderList.add(taskEmemberListExportExcelFormat); + } fixedHeaderList.add(performanceNameExportExcelFormat); }else if (nodeCodeOptional.isPresent()) { // 机台 @@ -2084,6 +2153,16 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { ExportExcelFormat taskCodeExportExcelFormat = new ExportExcelFormat(); taskCodeExportExcelFormat.setKey(NODE_CODE_KEY); taskCodeExportExcelFormat.setTitle(TASK_CODE); + ExportExcelFormat taskPmemberListExportExcelFormat = new ExportExcelFormat(); + if (pMemberListOptional.isPresent()) { + taskPmemberListExportExcelFormat.setKey(PMEMBER_CODE_KEY); + taskPmemberListExportExcelFormat.setTitle(PMEMBER_NAME); + } + ExportExcelFormat taskEmemberListExportExcelFormat = new ExportExcelFormat(); + if (eMemberListOptional.isPresent()) { + taskEmemberListExportExcelFormat.setKey(EMEMBER_CODE_KEY); + taskEmemberListExportExcelFormat.setTitle(EMEMBER_NAME); + } // 指标 ExportExcelFormat performanceCodeExportExcelFormat = new ExportExcelFormat(); @@ -2094,13 +2173,25 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { fixedHeaderList.add(workspaceCodeExportExcelFormat); fixedHeaderList.add(disciplineCodeExportExcelFormat); fixedHeaderList.add(taskCodeExportExcelFormat); + if (pMemberListOptional.isPresent()) { + fixedHeaderList.add(taskPmemberListExportExcelFormat); + } + if (eMemberListOptional.isPresent()) { + fixedHeaderList.add(taskEmemberListExportExcelFormat); + } fixedHeaderList.add(performanceCodeExportExcelFormat); } if (CollectionUtils.isNotEmpty(fixedHeaderList)) { - if (nodeNameOptional.isPresent() && nodeCodeOptional.isPresent()) { + if (nodeNameOptional.isPresent()) { exportExcelFormats.remove(0); + } + if (nodeCodeOptional.isPresent()) { exportExcelFormats.remove(0); - }else { + } + if (pMemberListOptional.isPresent()) { + exportExcelFormats.remove(0); + } + if (eMemberListOptional.isPresent()) { exportExcelFormats.remove(0); } fixedHeaderList.addAll(exportExcelFormats); @@ -2191,6 +2282,8 @@ public class ProjectServiceImpl extends BaseService implements IProjectService { } + + private NodeAllBase fillChildrenNode(NodeAllBase projectNodePo) { String nodeType = projectNodePo.getNodeType(); if (StringUtils.isBlank(projectNodePo.getNodeCode())) { 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 cb5aec29..ba5bac00 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 @@ -14,6 +14,8 @@ import com.sdm.common.entity.req.data.CreateDirReq; import com.sdm.common.entity.req.system.UserQueryReq; import com.sdm.common.entity.req.task.TaskExportExcelFormat; import com.sdm.common.entity.req.task.TaskExportExcelParam; +import com.sdm.common.entity.req.task.TaskTreeExportExcelFormat; +import com.sdm.common.entity.req.task.TaskTreeExportExcelParam; import com.sdm.common.entity.resp.system.CIDUserResp; import com.sdm.common.feign.impl.data.DataClientFeignClientImpl; import com.sdm.common.feign.impl.system.SysUserFeignClientImpl; @@ -97,6 +99,39 @@ public class TaskServiceImpl implements ITaskService { @Resource private INodeService nodeService; + private static final String NODE_NAME_KEY = "nodeName"; + + private static final String NODE_CODE_KEY = "nodeCode"; + private static final String PMEMBER_CODE_KEY = "pMemberList"; + private static final String EMEMBER_CODE_KEY = "eMemberList"; + private static final String PMEMBER_NAME = "仿真负责人"; + private static final String EMEMBER_NAME = "仿真执行人"; + + private static final String MACHINE_NAME_KEY = "machineName"; + private static final String MACHINE_CODE_KEY = "machineCode"; + private static final String MACHINE_NAME = "机台名称"; + private static final String MACHINE_CODE = "机台编号"; + + private static final String WORKSPACE_NAME_KEY = "workspaceName"; + private static final String WORKSPACE_CODE_KEY = "workspaceCode"; + private static final String WORKSPACE_NAME = "工位名称"; + private static final String WORKSPACE_CODE = "工位编号"; + + private static final String DISCIPLINE_NAME_KEY = "disciplineName"; + private static final String DISCIPLINE_CODE_KEY = "disciplineCode"; + private static final String DISCIPLINE_NAME = "学科名称"; + private static final String DISCIPLINE_CODE = "学科编号"; + + private static final String TASK_NAME_KEY = "taskName"; + private static final String TASK_CODE_KEY = "taskCode"; + private static final String TASK_NAME = "任务名称"; + private static final String TASK_CODE = "任务编号"; + + private static final String PERFORMANCE_NAME_KEY = "performanceName"; + private static final String PERFORMANCE_CODE_KEY = "performanceCode"; + private static final String PERFORMANCE_NAME = "指标名称"; + private static final String PERFORMANCE_CODE = "指标编号"; + @Override public SdmResponse list(SpdmTaskListReq req) { Long tenantId = ThreadLocalContext.getTenantId(); @@ -187,6 +222,12 @@ public class TaskServiceImpl implements ITaskService { List eachNodeIdList; String eachNodeId; SpdmNodeVo eachNodeVo; + List taskExtraList = mapper.getTaskExtraList(taskIdList); + Map> taskExtraMap = Map.of(); + if (CollectionUtils.isNotEmpty(taskExtraList)) { + taskExtraMap = taskExtraList.stream().collect(Collectors.groupingBy(TaskNodeExtraPo::getTaskId)); + } + Boolean convertTag = req.getConvertTag(); if (type == 2) { if (CollectionUtils.isEmpty(taskList)) { return SdmResponse.success(jsonObject); @@ -241,7 +282,7 @@ public class TaskServiceImpl implements ITaskService { eachNodeList.add(eachNodeVo); } } - if (CollectionUtils.isNotEmpty(eachNodeList)) { + if (CollectionUtils.isNotEmpty(eachNodeList) && convertTag) { try { setTagProperty(task, tag, eachNodeList.stream().map(SpdmNodeVo::getNodeName).collect(Collectors.joining(","))); } catch (Exception e) { @@ -268,6 +309,15 @@ public class TaskServiceImpl implements ITaskService { taskList = taskList.stream().skip((long) (req.getCurrent() - 1) * req.getSize()).limit(req.getSize()).toList(); List newTaskList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(taskList)) { + List demandIdList = taskList.stream().map(SpdmTaskVo::getDemandId).toList(); + Map demandMap = Map.of(); + if (CollectionUtils.isNotEmpty(demandIdList)) { + // 根据demandId查询demandName + List demandVoList = demandMapper.getDemandListById(demandIdList); + if (CollectionUtils.isNotEmpty(demandVoList)) { + demandMap = demandVoList.stream().collect(Collectors.toMap(SpdmDemandVo::getUuid, SpdmDemandVo::getDemandName)); + } + } for (SpdmTaskVo taskVo : taskList) { SpdmNewTaskVo spdmNewTaskVo = new SpdmNewTaskVo(); BeanUtils.copyProperties(taskVo, spdmNewTaskVo); @@ -283,6 +333,10 @@ public class TaskServiceImpl implements ITaskService { spdmNewTaskVo.setTag10(taskVo.getTag10()); spdmNewTaskVo.setPMemberList(taskVo.getPMemberList()); spdmNewTaskVo.setEMemberList(taskVo.getEMemberList()); + spdmNewTaskVo.setExtras(taskExtraMap.get(taskVo.getUuid())); + if (StringUtils.isNotBlank(spdmNewTaskVo.getDemandId())) { + spdmNewTaskVo.setDemandName(demandMap.get(spdmNewTaskVo.getDemandId())); + } newTaskList.add(spdmNewTaskVo); } } @@ -392,6 +446,15 @@ public class TaskServiceImpl implements ITaskService { jsonObject.put("data", taskList); return SdmResponse.success(jsonObject); } + List demandIdList = taskList.stream().map(SpdmTaskVo::getDemandId).toList(); + Map demandMap = Map.of(); + if (CollectionUtils.isNotEmpty(demandIdList)) { + // 根据demandId查询demandName + List demandVoList = demandMapper.getDemandListById(demandIdList); + if (CollectionUtils.isNotEmpty(demandVoList)) { + demandMap = demandVoList.stream().collect(Collectors.toMap(SpdmDemandVo::getUuid, SpdmDemandVo::getDemandName)); + } + } for (SpdmTaskVo spdmTaskVo : taskList) { for (String tag : tagList) { try { @@ -466,11 +529,6 @@ public class TaskServiceImpl implements ITaskService { setPMemberList(task, copyTaskMemberList); setEMemberList(task, copyTaskMemberList); } - List taskExtraList = mapper.getTaskExtraList(taskIdList); - Map> taskExtraMap = Map.of(); - if (CollectionUtils.isNotEmpty(taskExtraList)) { - taskExtraMap = taskExtraList.stream().collect(Collectors.groupingBy(TaskNodeExtraPo::getTaskId)); - } List newTaskList = new ArrayList<>(); for (SpdmTaskVo taskVo : taskList) { SpdmNewTaskVo spdmNewTaskVo = new SpdmNewTaskVo(); @@ -488,6 +546,9 @@ public class TaskServiceImpl implements ITaskService { spdmNewTaskVo.setPMemberList(taskVo.getPMemberList()); spdmNewTaskVo.setEMemberList(taskVo.getEMemberList()); spdmNewTaskVo.setExtras(taskExtraMap.get(taskVo.getUuid())); + if (StringUtils.isNotBlank(spdmNewTaskVo.getDemandId())) { + spdmNewTaskVo.setDemandName(demandMap.get(spdmNewTaskVo.getDemandId())); + } newTaskList.add(spdmNewTaskVo); } jsonObject.put("data", newTaskList); @@ -732,7 +793,7 @@ public class TaskServiceImpl implements ITaskService { performanceNodePo.setProjectName(eachTaskVo.getProjectName()); performanceNodePo.setPhaseName(eachTaskVo.getPhaseName()); performanceNodePo.setDisciplineName(eachTaskVo.getDisciplineName()); - performanceNodePo.setPMembers(eachTaskVo.getPMembers()); + performanceNodePo.setPMemberList(eachTaskVo.getPMembers()); } JSONObject jsonObject = new JSONObject(); jsonObject.put("currentPage", req.getCurrent()); @@ -1303,6 +1364,7 @@ public class TaskServiceImpl implements ITaskService { spdmProjectNodeEditReq.setUuid(req.getProjectId()); spdmProjectNodeEditReq.setTag1(req.getProjectId()); spdmProjectNodeEditReq.setCreateTime(curDateStr); + spdmProjectNodeEditReq.setPid(""); spdmProjectNodeEditReq.setTenantId(ThreadLocalContext.getTenantId()); if (nodeMapper.addNodeBatch(Collections.singletonList(spdmProjectNodeEditReq)) <= 0) { log.error("同步CID项目:{}失败",req.getProjectId() + " " + req.getProjectName()); @@ -1700,4 +1762,421 @@ public class TaskServiceImpl implements ITaskService { return SdmResponse.success(resultResponse); } + @Override + public SdmResponse getTaskListByDemandId(SpdmTaskListReq req) { + SdmResponse taskRespond = list(req); + if (!taskRespond.isSuccess()) { + return taskRespond; + } + JSONObject dataObj = (JSONObject) taskRespond.getData(); + List taskVoList = (List) dataObj.get("data"); + JSONObject jsonObject = new JSONObject(); + if (CollectionUtils.isEmpty(taskVoList)) { + jsonObject.put("data", new ArrayList<>()); + return SdmResponse.success(jsonObject); + } + List taskIdList = taskVoList.stream().map(SpdmNewTaskVo::getUuid).toList(); + List memberList = mapper.getMemberList(taskIdList, null); + List spdmTaskDetailVoList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(memberList)) { + for (SpdmNewTaskVo taskVo : taskVoList) { + List spdmPUserVoList = new ArrayList<>(); + List spdmEUserVoList = new ArrayList<>(); + SpdmTaskDetailVo spdmTaskDetailVo = new SpdmTaskDetailVo(); + BeanUtils.copyProperties(taskVo,spdmTaskDetailVo); + spdmTaskDetailVo.setId(taskVo.getId()); + List userIdList = memberList.stream().filter(member -> taskVo.getUuid().equals(member.getTaskId())).map(SpdmTaskMemberVo::getUserId).toList(); + if (CollectionUtils.isEmpty(userIdList)) { + spdmTaskDetailVoList.add(spdmTaskDetailVo); + continue; + } + List userList = sysUserFeignClient.listUserByIds(UserQueryReq.builder().userIds(userIdList).build()).getData(); + if (CollectionUtils.isEmpty(userList)) { + spdmTaskDetailVoList.add(spdmTaskDetailVo); + continue; + } + Map> userMap = userList.stream().collect(Collectors.groupingBy(CIDUserResp::getUserId)); + List pMemberList = memberList.stream().filter(member -> MemberTypeEnum.PRINCIPAL.getCode().equals(member.getType())).toList(); + if (CollectionUtils.isNotEmpty(pMemberList)) { + for (Long userId : pMemberList.stream().map(SpdmTaskMemberVo::getUserId).toList()) { + if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) { + spdmPUserVoList.addAll(userMap.get(userId)); + } + } + } + List eMemberList = memberList.stream().filter(member -> MemberTypeEnum.EXECUTOR.getCode().equals(member.getType())).toList(); + if (CollectionUtils.isNotEmpty(eMemberList)) { + for (Long userId : eMemberList.stream().map(SpdmTaskMemberVo::getUserId).toList()) { + if (ObjectUtils.isNotEmpty(userId) && CollectionUtils.isNotEmpty(userMap.get(userId))) { + spdmEUserVoList.addAll(userMap.get(userId)); + } + } + } + if (CollectionUtils.isNotEmpty(spdmPUserVoList)) { + spdmTaskDetailVo.setPMemberList(spdmPUserVoList.stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); + } + if (CollectionUtils.isNotEmpty(spdmEUserVoList)) { + spdmTaskDetailVo.setEMemberList(spdmEUserVoList.stream().map(CIDUserResp::getNickname).collect(Collectors.joining(","))); + } + spdmTaskDetailVoList.add(spdmTaskDetailVo); + } + }else { + for (SpdmNewTaskVo taskVo : taskVoList) { + SpdmTaskDetailVo spdmTaskDetailVo = new SpdmTaskDetailVo(); + BeanUtils.copyProperties(taskVo,spdmTaskDetailVo); + spdmTaskDetailVo.setId(taskVo.getId()); + spdmTaskDetailVoList.add(spdmTaskDetailVo); + } + } + jsonObject.put("data", spdmTaskDetailVoList); + return SdmResponse.success(jsonObject); + } + + @Override + public SdmResponse newExportTaskTree(TaskTreeExportExcelFormat taskTreeExportExcelFormat, HttpServletResponse httpServletResponse) { + SpdmTaskListReq req = new SpdmTaskListReq(); + TaskTreeExportExcelParam params = taskTreeExportExcelFormat.getParams(); + List originIdMap = params.getIdMap(); + 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.setConvertTag(false); + req.setType(2); + req.setCurrent(1); + req.setSize(10000); + List exportExcelFormats = taskTreeExportExcelFormat.getExcelHeaders(); + + SdmResponse taskRespond = list(req); + SdmResponse response = new SdmResponse(); + List tagMap = params.getTagMap(); + List allNodeIdList = new ArrayList<>(); + if(taskRespond.isSuccess()) { + JSONObject dataObj = (JSONObject) taskRespond.getData(); + List taskVoList = (List) dataObj.get("data"); + if (CollectionUtils.isEmpty(taskVoList)) { + log.error("导出任务分析项树时,任务不能为空"); + return SdmResponse.failed("任务不能为空"); + } + + + List fixedHeaderList = new ArrayList<>(); + Optional nodeNameOptional = exportExcelFormats.stream().filter(header -> "nodeName".equals(header.getKey())).findAny(); + Optional nodeCodeOptional = exportExcelFormats.stream().filter(header -> "nodeCode".equals(header.getKey())).findAny(); + if (nodeNameOptional.isPresent() && nodeCodeOptional.isPresent()) { + // 机台 + ExportExcelFormat machineNameExportExcelFormat = new ExportExcelFormat(); + machineNameExportExcelFormat.setKey(MACHINE_NAME_KEY); + machineNameExportExcelFormat.setTitle(MACHINE_NAME); + ExportExcelFormat machineCodeExportExcelFormat = new ExportExcelFormat(); + machineCodeExportExcelFormat.setKey(MACHINE_CODE_KEY); + machineCodeExportExcelFormat.setTitle(MACHINE_CODE); + + // 工位 + ExportExcelFormat workspaceNameExportExcelFormat = new ExportExcelFormat(); + workspaceNameExportExcelFormat.setKey(WORKSPACE_NAME_KEY); + workspaceNameExportExcelFormat.setTitle(WORKSPACE_NAME); + ExportExcelFormat workspaceCodeExportExcelFormat = new ExportExcelFormat(); + workspaceCodeExportExcelFormat.setKey(WORKSPACE_CODE_KEY); + workspaceCodeExportExcelFormat.setTitle(WORKSPACE_CODE); + + // 学科 + ExportExcelFormat disciplineNameExportExcelFormat = new ExportExcelFormat(); + disciplineNameExportExcelFormat.setKey(DISCIPLINE_NAME_KEY); + disciplineNameExportExcelFormat.setTitle(DISCIPLINE_NAME); + ExportExcelFormat disciplineCodeExportExcelFormat = new ExportExcelFormat(); + disciplineCodeExportExcelFormat.setKey(DISCIPLINE_CODE_KEY); + disciplineCodeExportExcelFormat.setTitle(DISCIPLINE_CODE); + + // 任务 + ExportExcelFormat taskNameExportExcelFormat = new ExportExcelFormat(); + taskNameExportExcelFormat.setKey(TASK_NAME_KEY); + taskNameExportExcelFormat.setTitle(TASK_NAME); + ExportExcelFormat taskCodeExportExcelFormat = new ExportExcelFormat(); + taskCodeExportExcelFormat.setKey(TASK_CODE_KEY); + taskCodeExportExcelFormat.setTitle(TASK_CODE); + + // 指标 + ExportExcelFormat performanceNameExportExcelFormat = new ExportExcelFormat(); + performanceNameExportExcelFormat.setKey(PERFORMANCE_NAME_KEY); + performanceNameExportExcelFormat.setTitle(PERFORMANCE_NAME); + ExportExcelFormat performanceCodeExportExcelFormat = new ExportExcelFormat(); + performanceCodeExportExcelFormat.setKey(PERFORMANCE_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(MACHINE_NAME_KEY); + machineNameExportExcelFormat.setTitle(MACHINE_NAME); + + // 工位 + ExportExcelFormat workspaceNameExportExcelFormat = new ExportExcelFormat(); + workspaceNameExportExcelFormat.setKey(WORKSPACE_NAME_KEY); + workspaceNameExportExcelFormat.setTitle(WORKSPACE_NAME); + + // 学科 + ExportExcelFormat disciplineNameExportExcelFormat = new ExportExcelFormat(); + disciplineNameExportExcelFormat.setKey(DISCIPLINE_NAME_KEY); + disciplineNameExportExcelFormat.setTitle(DISCIPLINE_NAME); + + // 任务 + ExportExcelFormat taskNameExportExcelFormat = new ExportExcelFormat(); + taskNameExportExcelFormat.setKey(TASK_NAME_KEY); + taskNameExportExcelFormat.setTitle(TASK_NAME); + + // 指标 + ExportExcelFormat performanceNameExportExcelFormat = new ExportExcelFormat(); + performanceNameExportExcelFormat.setKey(PERFORMANCE_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(MACHINE_CODE_KEY); + machineCodeExportExcelFormat.setTitle(MACHINE_CODE); + + // 工位 + ExportExcelFormat workspaceCodeExportExcelFormat = new ExportExcelFormat(); + workspaceCodeExportExcelFormat.setKey(WORKSPACE_CODE_KEY); + workspaceCodeExportExcelFormat.setTitle(WORKSPACE_CODE); + + // 学科 + ExportExcelFormat disciplineCodeExportExcelFormat = new ExportExcelFormat(); + disciplineCodeExportExcelFormat.setKey(DISCIPLINE_CODE_KEY); + disciplineCodeExportExcelFormat.setTitle(DISCIPLINE_CODE); + + // 任务 + ExportExcelFormat taskCodeExportExcelFormat = new ExportExcelFormat(); + taskCodeExportExcelFormat.setKey(TASK_CODE_KEY); + taskCodeExportExcelFormat.setTitle(TASK_CODE); + + // 指标 + ExportExcelFormat performanceCodeExportExcelFormat = new ExportExcelFormat(); + performanceCodeExportExcelFormat.setKey(PERFORMANCE_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()) { + exportExcelFormats.remove(0); + } + if (nodeCodeOptional.isPresent()) { + exportExcelFormats.remove(0); + } + fixedHeaderList.addAll(exportExcelFormats); + exportExcelFormats = fixedHeaderList; + } + + List allExportNewTaskVoList = new ArrayList<>(); + List exportNewTaskVoList = new ArrayList<>(); + List pMemberList; + String pMemberName = ""; + List eMemberList; + String eMemberName = ""; + for (SpdmNewTaskVo 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); + // 查询任务相应的前置节点和指标 + // 机台 + Optional machineOptional = tagMap.stream().filter(tag -> NodeTypeEnum.MACHINE.getValue().equals(tag.getKey())).findFirst(); + // 工位 + Optional workspaceOptional = tagMap.stream().filter(tag -> NodeTypeEnum.WORKSPACE.getValue().equals(tag.getKey())).findFirst(); + // 学科 + Optional disciplineOptional = tagMap.stream().filter(tag -> NodeTypeEnum.DISCIPLINE.getValue().equals(tag.getKey())).findFirst(); + String machineTags = ""; + if (machineOptional.isPresent()) { + String machineTag = machineOptional.get().getValue(); + try { + machineTags = getTagProperty(spdmExportNewTaskVo, machineTag); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + String workspaceTags = ""; + if (workspaceOptional.isPresent()) { + String workspaceTag = workspaceOptional.get().getValue(); + try { + workspaceTags = getTagProperty(spdmExportNewTaskVo, workspaceTag); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + String disciplineTags = ""; + if (disciplineOptional.isPresent()) { + String disciplineTag = disciplineOptional.get().getValue(); + try { + disciplineTags = getTagProperty(spdmExportNewTaskVo, disciplineTag); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + if (StringUtils.isNotBlank(machineTags)) { + allNodeIdList.addAll(Arrays.stream(machineTags.split(",")).toList()); + } + if (StringUtils.isNotBlank(workspaceTags)) { + allNodeIdList.addAll(Arrays.stream(workspaceTags.split(",")).toList()); + } + if (StringUtils.isNotBlank(disciplineTags)) { + allNodeIdList.addAll(Arrays.stream(disciplineTags.split(",")).toList()); + } + exportNewTaskVoList.add(spdmExportNewTaskVo); + } + // 查询任务下所有指标 + List taskIdList = exportNewTaskVoList.stream().map(SpdmExportNewTaskVo::getUuid).toList(); + List performanceList = projectMapper.getPerformanceListByNodeIdList(taskIdList); + Map> performanceMap = Map.of(); + if (CollectionUtils.isNotEmpty(performanceList)) { + performanceMap = performanceList.stream().collect(Collectors.groupingBy(PerformanceNodePo::getTaskId)); + } + if (CollectionUtils.isNotEmpty(allNodeIdList)) { + List nodeList = nodeMapper.getNodeListByIds(allNodeIdList.stream().distinct().toList()); + if (CollectionUtils.isNotEmpty(nodeList)) { + Map nodeMap = nodeList.stream().collect(Collectors.groupingBy( + SpdmNodeVo::getUuid, + Collectors.collectingAndThen( + Collectors.toList(), + list -> list.get(0) + ) + )); + for (SpdmExportNewTaskVo spdmExportNewTaskVo : exportNewTaskVoList) { + // 设置机台名称和机台编码 + Optional machineOptional = tagMap.stream().filter(tag -> NodeTypeEnum.MACHINE.getValue().equals(tag.getKey())).findFirst(); + if (machineOptional.isPresent()) { + String machineTag = machineOptional.get().getValue(); + try { + String machineTags = getTagProperty(spdmExportNewTaskVo, machineTag); + if (StringUtils.isNotBlank(machineTags)) { + for (String machineTagId : Arrays.stream(machineTags.split(",")).toList()) { + SpdmNodeVo spdmNodeVo = nodeMap.get(machineTagId); + if (ObjectUtils.isEmpty(spdmNodeVo)) { + continue; + } + spdmExportNewTaskVo.setMachineName(spdmNodeVo.getNodeName()); + spdmExportNewTaskVo.setMachineCode(spdmNodeVo.getNodeCode()); + } + } + + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + // 设置机台名称和机台编码 + Optional workspaceOptional = tagMap.stream().filter(tag -> NodeTypeEnum.WORKSPACE.getValue().equals(tag.getKey())).findFirst(); + if (workspaceOptional.isPresent()) { + String workspaceTag = workspaceOptional.get().getValue(); + try { + String workspaceTags = getTagProperty(spdmExportNewTaskVo, workspaceTag); + if (StringUtils.isNotBlank(workspaceTags)) { + for (String workspaceTagId : Arrays.stream(workspaceTags.split(",")).toList()) { + SpdmNodeVo spdmNodeVo = nodeMap.get(workspaceTagId); + if (ObjectUtils.isEmpty(spdmNodeVo)) { + continue; + } + spdmExportNewTaskVo.setWorkspaceName(spdmNodeVo.getNodeName()); + spdmExportNewTaskVo.setWorkspaceCode(spdmNodeVo.getNodeCode()); + } + } + + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + Optional disciplineOptional = tagMap.stream().filter(tag -> NodeTypeEnum.DISCIPLINE.getValue().equals(tag.getKey())).findFirst(); + if (disciplineOptional.isPresent()) { + String disciplineTag = disciplineOptional.get().getValue(); + try { + String disciplineTags = getTagProperty(spdmExportNewTaskVo, disciplineTag); + if (StringUtils.isNotBlank(disciplineTags)) { + for (String disciplineTagId : Arrays.stream(disciplineTags.split(",")).toList()) { + SpdmNodeVo spdmNodeVo = nodeMap.get(disciplineTagId); + if (ObjectUtils.isEmpty(spdmNodeVo)) { + continue; + } + spdmExportNewTaskVo.setDisciplineName(spdmNodeVo.getNodeName()); + spdmExportNewTaskVo.setDisciplineCode(spdmNodeVo.getNodeCode()); + } + } + + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + // 任务下指标 + List performanceNodePoList = performanceMap.get(spdmExportNewTaskVo.getUuid()); + List spdmExportNewTaskVoList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(performanceNodePoList)) { + for (PerformanceNodePo performanceNodePo : performanceNodePoList) { + SpdmExportNewTaskVo exportNewTaskVo = new SpdmExportNewTaskVo(); + BeanUtils.copyProperties(performanceNodePo,exportNewTaskVo); + exportNewTaskVo.setMachineName(spdmExportNewTaskVo.getMachineName()); + exportNewTaskVo.setMachineCode(spdmExportNewTaskVo.getMachineCode()); + exportNewTaskVo.setWorkspaceName(spdmExportNewTaskVo.getWorkspaceName()); + exportNewTaskVo.setWorkspaceCode(spdmExportNewTaskVo.getWorkspaceCode()); + exportNewTaskVo.setDisciplineName(spdmExportNewTaskVo.getDisciplineName()); + exportNewTaskVo.setDisciplineCode(spdmExportNewTaskVo.getDisciplineCode()); + exportNewTaskVo.setTaskCode(spdmExportNewTaskVo.getTaskCode()); + exportNewTaskVo.setPerformanceName(performanceNodePo.getNodeName()); + exportNewTaskVo.setPerformanceCode(performanceNodePo.getNodeCode()); + spdmExportNewTaskVoList.add(exportNewTaskVo); + } + } + allExportNewTaskVoList.add(spdmExportNewTaskVo); + if (CollectionUtils.isNotEmpty(spdmExportNewTaskVoList)) { + allExportNewTaskVoList.addAll(spdmExportNewTaskVoList); + } + } + } + } + ExcelUtil.exportExcelNoMerge(JSONArray.from(allExportNewTaskVoList),exportExcelFormats,httpServletResponse); + } else { + response = SdmResponse.failed(taskRespond.getMessage()); + } + return response; + } + } diff --git a/project/src/main/resources/mapper/SimulationDemandMapper.xml b/project/src/main/resources/mapper/SimulationDemandMapper.xml index a61c2805..941c811a 100644 --- a/project/src/main/resources/mapper/SimulationDemandMapper.xml +++ b/project/src/main/resources/mapper/SimulationDemandMapper.xml @@ -157,4 +157,12 @@ ) + + \ No newline at end of file diff --git a/project/src/main/resources/mapper/SimulationProjectMapper.xml b/project/src/main/resources/mapper/SimulationProjectMapper.xml index 6dc331d3..7338eea7 100644 --- a/project/src/main/resources/mapper/SimulationProjectMapper.xml +++ b/project/src/main/resources/mapper/SimulationProjectMapper.xml @@ -80,9 +80,9 @@ - insert into simulation_performance_extra (uuid,performanceId,taskId,nodeId,poolName,propertyName,propertyValue,valueType,propertyClass) values + insert into simulation_performance_extra (uuid,performanceId,taskId,nodeId,propertyName,propertyValue,valueType,propertyClass) values - (#{it.uuid},#{it.performanceId},#{it.taskId},#{it.nodeId},#{it.poolName},#{it.propertyName},#{it.propertyValue},#{it.valueType},#{it.propertyClass}) + (#{it.uuid},#{it.performanceId},#{it.taskId},#{it.nodeId},#{it.propertyName},#{it.propertyValue},#{it.valueType},#{it.propertyClass}) diff --git a/project/src/main/resources/mapper/SimulationTaskMapper.xml b/project/src/main/resources/mapper/SimulationTaskMapper.xml index 45807947..d67aa5a7 100644 --- a/project/src/main/resources/mapper/SimulationTaskMapper.xml +++ b/project/src/main/resources/mapper/SimulationTaskMapper.xml @@ -394,5 +394,9 @@ ) + + \ No newline at end of file