diff --git a/data/src/main/java/com/sdm/data/bo/ExportOperate.java b/data/src/main/java/com/sdm/data/bo/ExportOperate.java index 6b015727..8396a85c 100644 --- a/data/src/main/java/com/sdm/data/bo/ExportOperate.java +++ b/data/src/main/java/com/sdm/data/bo/ExportOperate.java @@ -42,11 +42,11 @@ public class ExportOperate { } finally { File taskFile = new File(taskJsonFileName); if (taskFile.exists()) { -// taskFile.delete(); + taskFile.delete(); } File columnFile = new File(columnFileName); if (columnFile.exists()) { -// columnFile.delete(); + columnFile.delete(); } } } diff --git a/data/src/main/java/com/sdm/data/controller/DataFileController.java b/data/src/main/java/com/sdm/data/controller/DataFileController.java index c15d337e..f525b40d 100644 --- a/data/src/main/java/com/sdm/data/controller/DataFileController.java +++ b/data/src/main/java/com/sdm/data/controller/DataFileController.java @@ -592,7 +592,7 @@ public class DataFileController implements IDataFeignClient { @PostMapping("/exportKnowledgeList") @Operation(summary = "导出知识库", description = "导出知识库") public SdmResponse exportKnowledgeList(@RequestBody KnowledgeExportExcelFormat knowledgeExportExcelFormat , HttpServletResponse httpservletResponse) { - return IDataFileService.exportKnowledgeList(knowledgeExportExcelFormat, httpservletResponse); + return IDataFileService.exportKnowledgeListByScript(knowledgeExportExcelFormat, httpservletResponse); } /** diff --git a/data/src/main/java/com/sdm/data/service/IDataFileService.java b/data/src/main/java/com/sdm/data/service/IDataFileService.java index 329ae09e..50ceceb9 100644 --- a/data/src/main/java/com/sdm/data/service/IDataFileService.java +++ b/data/src/main/java/com/sdm/data/service/IDataFileService.java @@ -441,6 +441,8 @@ public interface IDataFileService { */ SdmResponse exportKnowledgeList(KnowledgeExportExcelFormat knowledgeExportExcelFormat, HttpServletResponse httpservletResponse); + SdmResponse exportKnowledgeListByScript(KnowledgeExportExcelFormat knowledgeExportExcelFormat, HttpServletResponse httpservletResponse); + ResponseEntity onlyOfficeCallback(CallbackData callbackData); SdmResponse downloadFileForEdit(Long fileId); diff --git a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java index 485f2455..11354e33 100644 --- a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java @@ -35,6 +35,7 @@ import com.sdm.common.log.CoreLogger; import com.sdm.common.utils.*; import com.sdm.common.utils.excel.ExcelUtil; import com.sdm.data.aop.PermissionCheckAspect; +import com.sdm.data.bo.ExportOperate; import com.sdm.data.model.bo.ApprovalFileDataContentsModel; import com.sdm.data.model.dto.ExportKnowledgeDto; import com.sdm.data.model.dto.FileDictTagsAggDTO; @@ -186,6 +187,9 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { @Autowired private FileModifyApproveHelper fileModifyApproveHelper; + @Autowired + private ExportOperate exportOperate; + private static final String TEMP_FILE_PATH = "/usr/local/nginx/html/storage/"; @@ -3829,6 +3833,33 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { return response; } + @Override + public SdmResponse exportKnowledgeListByScript(KnowledgeExportExcelFormat knowledgeExportExcelFormat, HttpServletResponse httpServletResponse) { + FileSearchReq req = new FileSearchReq(); + KnowledgeExportExcelParam params = knowledgeExportExcelFormat.getParams(); + if (ObjectUtils.isNotEmpty(params)) { + BeanUtils.copyProperties(params,req); + } + req.setCurrent(1); + req.setSize(10000); + SdmResponse response = fileSearch(req); + if (ObjectUtils.isEmpty(response)) { + log.error("exportKnowledgeListByScript,未查询到知识库文件"); + return SdmResponse.success(new ArrayList<>()); + } else { + String taskFileName = exportOperate.convertToFile(JSON.toJSONString(response), JSON.toJSONString(knowledgeExportExcelFormat)); + File file = new File(taskFileName); + if (!file.exists()) { + response = SdmResponse.failed("知识库文件不存在"); + } else { + String taskSaveName = "仿真标准库_" + RandomUtil.generateString(6) + ".xlsx"; + SystemOperate.outputHttpFileStream(httpServletResponse, taskFileName, taskSaveName); + file.delete(); + } + } + return response; + } + @Override public ResponseEntity onlyOfficeCallback(CallbackData callbackData) { diff --git a/data/src/main/java/com/sdm/data/service/impl/SystemFileIDataFileServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/SystemFileIDataFileServiceImpl.java index fb8db273..c7e172b9 100644 --- a/data/src/main/java/com/sdm/data/service/impl/SystemFileIDataFileServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/SystemFileIDataFileServiceImpl.java @@ -1,5 +1,6 @@ package com.sdm.data.service.impl; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.sdm.common.common.ResultCode; @@ -18,6 +19,7 @@ import com.sdm.common.entity.resp.data.FileMetadataInfoResp; import com.sdm.common.service.CommonService; import com.sdm.common.utils.*; import com.sdm.common.utils.excel.ExcelUtil; +import com.sdm.data.bo.ExportOperate; import com.sdm.data.dao.DataMapper; import com.sdm.data.dao.SystemMapper; import com.sdm.data.dao.UserMapper; @@ -32,6 +34,7 @@ import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.ResponseEntity; @@ -73,6 +76,9 @@ public class SystemFileIDataFileServiceImpl implements IDataFileService { @Resource private CommonService commonService; + @Autowired + private ExportOperate exportOperate; + // @Override // public String getType() { // return type; @@ -1616,6 +1622,33 @@ public class SystemFileIDataFileServiceImpl implements IDataFileService { return response; } + @Override + public SdmResponse exportKnowledgeListByScript(KnowledgeExportExcelFormat knowledgeExportExcelFormat, HttpServletResponse httpServletResponse) { + FileSearchReq req = new FileSearchReq(); + KnowledgeExportExcelParam params = knowledgeExportExcelFormat.getParams(); + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(params)) { + BeanUtils.copyProperties(params,req); + } + req.setCurrent(1); + req.setSize(10000); + SdmResponse response = fileSearch(req); + if (org.apache.commons.lang3.ObjectUtils.isEmpty(response)) { + log.error("exportKnowledgeListByScript,未查询到知识库文件"); + return SdmResponse.success(new ArrayList<>()); + } else { + String taskFileName = exportOperate.convertToFile(JSON.toJSONString(response), JSON.toJSONString(knowledgeExportExcelFormat)); + File file = new File(taskFileName); + if (!file.exists()) { + response = SdmResponse.failed("知识库文件不存在"); + } else { + String taskSaveName = "仿真标准库_" + RandomUtil.generateString(6) + ".xlsx"; + SystemOperate.outputHttpFileStream(httpServletResponse, taskFileName, taskSaveName); + file.delete(); + } + } + return response; + } + @Override public ResponseEntity onlyOfficeCallback(CallbackData callbackData) { return null; diff --git a/project/src/main/java/com/sdm/project/bo/ExportOperate.java b/project/src/main/java/com/sdm/project/bo/ExportOperate.java index f2839b9b..df0126ec 100644 --- a/project/src/main/java/com/sdm/project/bo/ExportOperate.java +++ b/project/src/main/java/com/sdm/project/bo/ExportOperate.java @@ -42,11 +42,11 @@ public class ExportOperate { } finally { File taskFile = new File(taskJsonFileName); if (taskFile.exists()) { - taskFile.delete(); +// taskFile.delete(); } File columnFile = new File(columnFileName); if (columnFile.exists()) { - columnFile.delete(); +// columnFile.delete(); } } } diff --git a/project/src/main/java/com/sdm/project/controller/SimulationAnalysisController.java b/project/src/main/java/com/sdm/project/controller/SimulationAnalysisController.java index ebc9c896..bb688f7f 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationAnalysisController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationAnalysisController.java @@ -77,19 +77,19 @@ public class SimulationAnalysisController { @PostMapping(value = "/exportTaskByScript") @ResponseBody - SdmResponse exportTaskByScript(HttpServletResponse response ,@RequestBody TaskAnalysisExportExcelFormat req) { + public SdmResponse exportTaskByScript(HttpServletResponse response ,@RequestBody TaskAnalysisExportExcelFormat req) { return taskService.exportTaskByScript(response,req); } @PostMapping(value = "/exportRunByScript") @ResponseBody - SdmResponse exportRunByScript(HttpServletResponse response ,@RequestBody RunAnalysisExportExcelFormat req) { + public SdmResponse exportRunByScript(HttpServletResponse response ,@RequestBody RunAnalysisExportExcelFormat req) { return taskService.exportRunByScript(response,req); } @PostMapping(value = "/exportPerformanceByScript") @ResponseBody - SdmResponse exportPerformanceByScript(HttpServletResponse response ,@RequestBody PerformanceAnalysisExportExcelFormat req) { + public SdmResponse exportPerformanceByScript(HttpServletResponse response ,@RequestBody PerformanceAnalysisExportExcelFormat req) { return taskService.exportPerformanceByScript(response,req); } diff --git a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java index 0ca193d5..cb286238 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java @@ -357,9 +357,10 @@ public class SimulationNodeController implements ISimulationNodeFeignClient { @PostMapping("/exportProject") @Operation(summary = "导出项目列表", description = "导出项目列表") public SdmResponse exportProject(@RequestBody ProjectExportExcelFormat projectExportExcelFormat , HttpServletResponse httpservletResponse) { - return nodeService.exportProject(projectExportExcelFormat, httpservletResponse); + return nodeService.exportProjectByScript(httpservletResponse,projectExportExcelFormat); } + /** * 获取节点详情(数据总览编辑分类节点时使用) * 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 da1bb2a6..599d12c0 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 @@ -169,5 +169,15 @@ public class SpdmExportNewTaskVo extends BaseEntity { private String phase; private String discipline; private String submitterName; + private String tag1Code; + private String tag2Code; + private String tag3Code; + private String tag4Code; + private String tag5Code; + private String tag6Code; + private String tag7Code; + private String tag8Code; + private String tag9Code; + private String tag10Code; } diff --git a/project/src/main/java/com/sdm/project/service/INodeService.java b/project/src/main/java/com/sdm/project/service/INodeService.java index 31019b20..f2061a60 100644 --- a/project/src/main/java/com/sdm/project/service/INodeService.java +++ b/project/src/main/java/com/sdm/project/service/INodeService.java @@ -108,4 +108,6 @@ public interface INodeService extends IService { */ SdmResponse unFollowProject(String nodeId); + SdmResponse exportProjectByScript(HttpServletResponse httpservletResponse, ProjectExportExcelFormat projectExportExcelFormat); + } diff --git a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java index cbea13e9..05691cc2 100644 --- a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java @@ -41,9 +41,11 @@ import com.sdm.common.log.CoreLogger; import com.sdm.common.service.TagMapService; import com.sdm.common.utils.DateUtils; import com.sdm.common.utils.RandomUtil; +import com.sdm.common.utils.SystemOperate; import com.sdm.common.utils.excel.ExcelUtil; import com.sdm.outbridge.entity.*; import com.sdm.outbridge.service.lyric.*; +import com.sdm.project.bo.ExportOperate; import com.sdm.project.common.MemberTypeEnum; import com.sdm.project.common.NodeMemberTypeEnum; import com.sdm.project.dao.SimulationDemandMapper; @@ -79,6 +81,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.util.StopWatch; import javax.annotation.Resource; +import java.io.File; import java.lang.reflect.Field; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -167,6 +170,9 @@ public class NodeServiceImpl extends ServiceImpl nodeList; - int total; - // type=0,查询所有,使用原有查询逻辑 (type=2查询我负责的,逻辑待定,暂时先查询所有) + List nodeList = new ArrayList<>(); + int total = 0; + // type=0,查询所有,使用原有查询逻辑 if (type == null || type == 0 || type == 2) { nodeList = nodeMapper.getNodeList(req.getNodeType(), req.getNodeSubType(), req.getExeStatus(), req.getNodeCode(), req.getManager(), req.getNodeName(), tenantId, pos, limit); + if (type == 2 && CollectionUtils.isNotEmpty(nodeList)) { + // 过滤出当前用户是专项代表的项目 + List nodeIdList = nodeList.stream().map(SpdmNodeVo::getUuid).toList(); + List nodeMemberList = nodeMapper.getNodeMemberListByMemberType(nodeIdList,userId, NodeMemberTypeEnum.MANAGER.getCode()); + if (CollectionUtils.isEmpty(nodeMemberList)) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("data", nodeList); + jsonObject.put("total", 0); + return SdmResponse.success(jsonObject); + } + List realNodeIdList = nodeMemberList.stream().map(SpdmNodeMemberVo::getNodeId).distinct().toList(); + nodeList = nodeList.stream().filter(node -> realNodeIdList.contains(node.getUuid())).collect(Collectors.toList()); + } // 设置关注标签 if (CollectionUtils.isNotEmpty(nodeList)) { List nodeIdList = nodeList.stream().map(SpdmNodeVo::getUuid).toList(); @@ -4179,6 +4198,34 @@ public class NodeServiceImpl extends ServiceImpl()); + } else { + String taskFileName = exportOperate.convertToFile(JSON.toJSONString(response), JSON.toJSONString(projectExportExcelFormat)); + File file = new File(taskFileName); + if (!file.exists()) { + response = SdmResponse.failed("项目文件不存在"); + } else { + String taskSaveName = "项目列表_" + RandomUtil.generateString(6) + ".xlsx"; + SystemOperate.outputHttpFileStream(httpServletResponse, taskFileName, taskSaveName); + file.delete(); + } + } + return response; + } + /** * 批量查询已关注指定项目的用户ID *