fix:报告模板修改/需求关联任务导出

This commit is contained in:
2026-01-12 16:24:44 +08:00
parent 29c598fa9a
commit 3ed30181ca
12 changed files with 123 additions and 24 deletions

View File

@@ -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 '报告模版編碼';

View File

@@ -16,6 +16,9 @@ public class ReportTemplateDto {
@Schema(description = "报告模版唯一ID")
private String uuid;
@Schema(description = "报告模版编码")
private String templateCode;
@Schema(description = "报告模版名称")
private String templateName;

View File

@@ -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;

View File

@@ -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<SimulationR
SimulationReportTemplate reportTemplate = new SimulationReportTemplate();
BeanUtils.copyProperties(templateDto, reportTemplate);
reportTemplate.setUuid(generateUuid("report_template_"));
reportTemplate.setTemplateCode(generateUuid("report_code_"));
reportTemplate.setCreator(ThreadLocalContext.getUserId());
reportTemplate.setTenantId(ThreadLocalContext.getTenantId());
UploadFilesReq req = new UploadFilesReq();
@@ -57,7 +59,7 @@ public class SimulationReportTemplateServiceImpl extends ServiceImpl<SimulationR
}
reportTemplate.setFileId(response.getData());
this.save(reportTemplate);
return SdmResponse.success(reportTemplate.getId());
return SdmResponse.success(reportTemplate.getUuid());
}
@Override
@@ -71,6 +73,7 @@ public class SimulationReportTemplateServiceImpl extends ServiceImpl<SimulationR
upgradeTemplate.setTemplateVersion(generateVersion(reportTemplate.getTemplateVersion(),templateDto.getVersionType()));
upgradeTemplate.setUuid(generateUuid("report_template_"));
upgradeTemplate.setTemplateCode(generateUuid("report_code_"));
upgradeTemplate.setCreator(creator);
upgradeTemplate.setTenantId(tenantId);
@@ -107,18 +110,21 @@ public class SimulationReportTemplateServiceImpl extends ServiceImpl<SimulationR
}
@Override
public SdmResponse deleteReportTemplate(ReportTemplateDto reportTemplate) {
SimulationReportTemplate reportTemplateEntity = this.getById(reportTemplate.getId());
if (reportTemplateEntity == null) {
public SdmResponse deleteReportTemplate(ReportTemplateDto reportTemplateDto) {
List<SimulationReportTemplate> 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

View File

@@ -50,4 +50,8 @@ public class TaskExportExcelParam {
* 今明任务 筛选计划结束时间为今明两天的
*/
private String todayTmrTasks;
/**
* 需求id
*/
private String demandId;
}

View File

@@ -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创建的任务
// *

View File

@@ -155,5 +155,10 @@ public class SpdmExportNewTaskVo extends BaseEntity {
private String disciplineCode = "";
private String performanceName = "";
private String performanceCode = "";
/**
* 军令状时间
*/
private String commitmentDeadline;
}

View File

@@ -225,5 +225,9 @@ public class SpdmNewTaskVo extends BaseEntity {
private String newTag10;
private Integer expStatus;
/**
* 军令状时间
*/
private String commitmentDeadline;
}

View File

@@ -161,5 +161,8 @@ public class SpdmTaskDetailVo extends BaseEntity {
private String tag8;
private String tag9;
private String tag10;
/**
* 军令状时间
*/
private String commitmentDeadline;
}

View File

@@ -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);

View File

@@ -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<Long> 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<Long> 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<com.sdm.common.entity.bo.TaskNodeTag> 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<TaskNodeTag> 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<ExportExcelFormat> exportExcelFormats = taskExportExcelFormat.getExcelHeaders();
SdmResponse taskRespond = getTaskListByDemandId(req);
SdmResponse response = new SdmResponse();
if (taskRespond.isSuccess()) {
JSONObject dataObj = (JSONObject) taskRespond.getData();
List<SpdmTaskDetailVo> taskVoList = (List<SpdmTaskDetailVo>) dataObj.get("data");
List<SpdmExportNewTaskVo> exportNewTaskVoList = new ArrayList<>();
List<CIDUserResp> pMemberList;
String pMemberName = "";
List<CIDUserResp> 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);
}

View File

@@ -91,11 +91,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.5</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.postgresql</groupId>-->
<!-- <artifactId>postgresql</artifactId>-->
<!-- <version>42.2.5</version>-->
<!-- </dependency>-->
</dependencies>
<dependencyManagement>
<dependencies>