fix[project]: 仿真策划时,支持添加报告模板

This commit is contained in:
2026-03-22 11:42:14 +08:00
parent 5e1a29831e
commit b2179aa5d3
8 changed files with 98 additions and 9 deletions

View File

@@ -1,11 +1,13 @@
package com.sdm.project.model.bo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.sdm.common.entity.pojo.BaseEntity;
import com.sdm.project.model.po.ProjectNodeExtraPo;
import com.sdm.project.model.po.ProjectNodeMemberPo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.ArrayList;
@@ -245,4 +247,15 @@ public class ProjectNode extends BaseEntity {
private String commitmentDeadline;
private String discipline;
@Schema(description= "报告模板uuid")
@TableField("reportTemplate")
private String reportTemplate;
@Schema(description= "报告模板填充内容")
@TableField("reportContent")
private String reportContent;
}

View File

@@ -1,10 +1,12 @@
package com.sdm.project.model.bo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.sdm.common.entity.pojo.BaseEntity;
import com.sdm.project.model.po.ProjectNodeExtraPo;
import com.sdm.project.model.po.TaskNodeMemberPo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.ArrayList;
@@ -289,4 +291,12 @@ public class TaskNode extends BaseEntity {
@JsonProperty(value = "aMemberList")
private String aMemberList;
@Schema(description= "报告模板uuid")
@TableField("reportTemplate")
private String reportTemplate;
@Schema(description= "报告模板填充内容")
@TableField("reportContent")
private String reportContent;
}

View File

@@ -237,4 +237,14 @@ public class NodeAllBase extends BaseEntity {
@JsonProperty(value = "tMemberList")
private List<CIDUserResp> tMemberList;
/**
* 报表模板
*/
private String reportTemplate;
/**
* 报表模板名称
*/
private String reportTemplateNames;
}

View File

@@ -206,4 +206,15 @@ public class TaskNodePo extends NodeAllBase {
private String discipline;
private Integer expStatus;
/**
* 报表模板
*/
private String reportTemplate;
/**
* 报表模板名称
*/
private String reportTemplateNames;
}

View File

@@ -1,5 +1,6 @@
package com.sdm.project.model.req;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.sdm.common.entity.pojo.BaseEntity;
@@ -7,6 +8,7 @@ import com.sdm.project.model.bo.ProjectMemberNode;
import com.sdm.project.model.bo.TaskExtraNode;
import com.sdm.project.model.bo.TaskMemberNode;
import com.sdm.project.model.po.ProjectNodeExtraPo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@@ -291,4 +293,12 @@ public class TaskEditNodeReq extends BaseEntity {
private String discipline;
@Schema(description= "报告模板uuid")
@TableField("reportTemplate")
private String reportTemplate;
@Schema(description= "报告模板填充内容")
@TableField("reportContent")
private String reportContent;
}

View File

@@ -27,6 +27,7 @@ import com.sdm.common.entity.resp.project.SpdmTaskVo;
import com.sdm.common.entity.resp.project.TaskNodeExtraPo;
import com.sdm.common.entity.resp.system.CIDUserResp;
import com.sdm.common.feign.impl.capability.SimulationFlowFeignClientImpl;
import com.sdm.common.feign.impl.capability.SimulationReportFeignClientImpl;
import com.sdm.common.feign.impl.data.DataAnalysisFeignClientImpl;
import com.sdm.common.feign.impl.data.DataClientFeignClientImpl;
import com.sdm.common.feign.impl.system.ApproveFeignClientImpl;
@@ -215,6 +216,9 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
@Autowired
private DataClientFeignClientImpl dataFeignClient;
@Autowired
private SimulationReportFeignClientImpl reportFeignClient;
// @Override
// @Transactional
@@ -558,6 +562,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
Map<Long,String> dataMap = new HashMap<>();
Map<String,List<TaskNodeExtraPo>> taskExtraMap = new HashMap<>();
Map<String, FlowTemplateResp> flowTemplateRespMap = new HashMap<>();
Map<String, String> reportTemplateRespMap = new HashMap<>();
List<SimulationPerformanceExtra> performanceExtraList = new ArrayList<>();
List<SpdmNodeExtraVo> nodeExtraList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(taskTreeTaskList)) {
@@ -631,6 +636,15 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
log.error("批量查询模板库异常");
}
}
// todo 这里要调用批量查询报告模板的接口
List<String> reportTemplateCodeList = taskTreeTaskList.stream().map(TaskNodePo::getReportTemplate).filter(StringUtils::isNotBlank).toList();
List<String> allReportTemplateCodeList = new ArrayList<>();
for (String reportTemplateCode : reportTemplateCodeList) {
allReportTemplateCodeList.addAll(Arrays.stream(reportTemplateCode.split(",")).toList());
}
// reportFeignClient.queryReportTemplateInfo(allReportTemplateCodeList);
reportTemplateRespMap = new HashMap<>();
}
@@ -638,7 +652,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
for (ProjectNodePo projectNodePo : realTopProjectNodeList) {
generateTaskTree(projectNodePo,addedIdList,currentAddedIdList,queryTaskFlag,taskMemberMap,cidUserMap,
dataMap,taskExtraMap,performanceExtraList,nodeExtraList,flowTemplateRespMap);
dataMap,taskExtraMap,performanceExtraList,nodeExtraList,flowTemplateRespMap,reportTemplateRespMap);
addedIdList.clear();
}
// 汇总任务进度、仿真负责人、执行人
@@ -892,7 +906,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
}
private void generateTaskTree(ProjectNodePo projectNodePo,List<String> addedIdList,List<String> currentAddedIdList,Integer queryTaskFlag,Map<String,List<SimulationTaskMember>> taskMemberMap,Map<Long,CIDUserResp> cidUserMap,Map<Long,String> dataMap,Map<String,List<TaskNodeExtraPo>> taskExtraMap,
List<SimulationPerformanceExtra> performanceExtraList,List<SpdmNodeExtraVo> nodeExtraList,Map<String, FlowTemplateResp> flowTemplateRespMap) {
List<SimulationPerformanceExtra> performanceExtraList,List<SpdmNodeExtraVo> nodeExtraList,Map<String, FlowTemplateResp> flowTemplateRespMap,Map<String, String> reportTemplateRespMap) {
currentAddedIdList.add(projectNodePo.getUuid());
String currentNodeType = projectNodePo.getNodeType();
String currentTag = taskTreeNodeTypeTagMap.get(currentNodeType);
@@ -1134,7 +1148,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
// 递归
for (ProjectNodePo nodePo : sameTypeNodeList) {
generateTaskTree(nodePo,addedIdList,currentAddedIdList,queryTaskFlag,taskMemberMap,cidUserMap,
dataMap,taskExtraMap,performanceExtraList,nodeExtraList,flowTemplateRespMap);
dataMap,taskExtraMap,performanceExtraList,nodeExtraList,flowTemplateRespMap,reportTemplateRespMap);
}
if (CollectionUtils.isNotEmpty(sameTypeNodeList)) {
addedIdList.addAll(sameTypeNodeList.stream().map(ProjectNodePo::getUuid).toList());
@@ -1163,7 +1177,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
// 递归
for (ProjectNodePo nodePo : childrenTypeNodeList) {
generateTaskTree(nodePo,addedIdList,currentAddedIdList,queryTaskFlag,taskMemberMap,cidUserMap,
dataMap,taskExtraMap,performanceExtraList,nodeExtraList,flowTemplateRespMap);
dataMap,taskExtraMap,performanceExtraList,nodeExtraList,flowTemplateRespMap,reportTemplateRespMap);
}
addedIdList.addAll(childrenTypeNodeList.stream().map(ProjectNodePo::getUuid).toList());
for (ProjectNodePo nodePo : childrenTypeNodeList) {
@@ -1196,7 +1210,7 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
// 递归
for (ProjectNodePo nodePo : otherChildrenNodeList) {
generateTaskTree(nodePo,addedIdList,currentAddedIdList,queryTaskFlag,taskMemberMap,cidUserMap,
dataMap,taskExtraMap,performanceExtraList,nodeExtraList,flowTemplateRespMap);
dataMap,taskExtraMap,performanceExtraList,nodeExtraList,flowTemplateRespMap,reportTemplateRespMap);
}
addedIdList.addAll(otherChildrenNodeList.stream().map(ProjectNodePo::getUuid).toList());
for (ProjectNodePo nodePo : otherChildrenNodeList) {
@@ -1214,8 +1228,16 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
task.setNodeCode(task.getTaskCode());
task.setSection(task.getSectionName());
task.setGroup(task.getGroupName());
if (StringUtils.isBlank(task.getEnglishName())) {
task.setEnglishName("");
task.setEnglishName(StringUtils.defaultString(task.getEnglishName()));
if (StringUtils.isNotBlank(task.getReportTemplate())) {
String reportTemplateNames = Arrays.stream(task.getReportTemplate().split(","))
.map(reportTemplateRespMap::get)
.filter(StringUtils::isNotBlank)
.distinct() // 防止模板编码中有重复的
.collect(Collectors.joining(","));
if (StringUtils.isNotBlank(reportTemplateNames)) {
task.setReportTemplateNames(reportTemplateNames);
}
}
});
children.addAll(currentNodeAssociatedTaskList);

View File

@@ -45,7 +45,7 @@
<insert id="batchAddSimulationTask" useGeneratedKeys="true" keyProperty="id">
insert into simulation_task (uuid,task_name,task_code,task_pool_name,task_pool_version,node_id,days,standard,fold_id,status,achieve_status,begin_time,end_time,progress,exe_status,confidence,analyse_target,analyse_software,approval_status,description,difficult,tenant_id
,creator,create_time,department,sectionName,groupName,bCapacity,flowTemplate,englishName,demand_id,tag1,tag2,tag3,tag4,tag5,tag6,tag7,tag8,tag9,tag10,imageFileId,discipline) values
,creator,create_time,department,sectionName,groupName,bCapacity,flowTemplate,englishName,demand_id,tag1,tag2,tag3,tag4,tag5,tag6,tag7,tag8,tag9,tag10,imageFileId,discipline,reportTemplate,reportContent) values
<foreach collection='list' item='it' index='index' separator=','>
(#{it.uuid},#{it.taskName},#{it.taskCode},'','',#{it.nodeId},#{it.days},#{it.standard},'',1,0,
#{it.beginTime},#{it.endTime},0,1,#{it.confidence},#{it.analyseTarget},#{it.analyseSoftware},'0',#{it.description},#{it.difficult},#{it.tenantId},
@@ -54,7 +54,7 @@
#{it.tag5,typeHandler=com.sdm.project.handler.ListStringTypeHandler},#{it.tag6,typeHandler=com.sdm.project.handler.ListStringTypeHandler},
#{it.tag7,typeHandler=com.sdm.project.handler.ListStringTypeHandler},#{it.tag8,typeHandler=com.sdm.project.handler.ListStringTypeHandler},
#{it.tag9,typeHandler=com.sdm.project.handler.ListStringTypeHandler},#{it.tag10,typeHandler=com.sdm.project.handler.ListStringTypeHandler},
#{it.imageFileId},#{it.discipline})
#{it.imageFileId},#{it.discipline},#{it.reportTemplate},#{it.reportContent})
</foreach>
</insert>
@@ -222,6 +222,12 @@
<if test="taskNode.discipline != null and taskNode.discipline != ''">
discipline = #{taskNode.discipline}
</if>
<if test="taskNode.reportTemplate != null and taskNode.reportTemplate != ''">
reportTemplate = #{taskNode.reportTemplate}
</if>
<if test="taskNode.reportContent != null and taskNode.reportContent != ''">
reportContent = #{taskNode.reportContent}
</if>
</trim>
where uuid = #{taskNode.uuid}
</update>