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 df0126ec..cba715ca 100644 --- a/project/src/main/java/com/sdm/project/bo/ExportOperate.java +++ b/project/src/main/java/com/sdm/project/bo/ExportOperate.java @@ -1,14 +1,17 @@ package com.sdm.project.bo; +import com.alibaba.fastjson2.JSONObject; +import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.ExportExcelFormat; import com.sdm.common.utils.SystemOperate; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; +import java.io.*; import java.nio.charset.Charset; +import java.util.List; @Slf4j @Component @@ -42,11 +45,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(); } } } @@ -80,5 +83,97 @@ public class ExportOperate { } + private String uploadMultipartFile(MultipartFile multipartFile) + { + String fileName = multipartFile.getOriginalFilename(); + File file = null; + String saveName = ""; + try + { + saveName = TEMP_EXPORT_PATH + System.currentTimeMillis()+"_"+fileName; + file = new File(saveName); + FileOutputStream os = new FileOutputStream(file); + InputStream is = multipartFile.getInputStream(); + int readLen = 0; + byte[] buffer = new byte[1024*8]; + while((readLen = is.read(buffer)) > 0) + { + os.write(buffer,0,readLen); + } + is.close(); + os.close(); + } + catch (IOException e) + { + e.printStackTrace(); + } + return saveName; + } + + public SdmResponse parsePerformance(MultipartFile performanceFile, String columns) + { + SdmResponse response = SdmResponse.success(); + String performanceFileName = uploadMultipartFile(performanceFile); + String columnFileName = TEMP_EXPORT_PATH + System.currentTimeMillis() + "column.json"; + if(!saveContentsToFile(columns,columnFileName)) { + response = SdmResponse.failed("保存指标字段信息失败"); + } + else { + // 脚本解析导入的指标文件 + String shellPath = scriptPath + File.separator + "inputExcel.py"; + String poolJsonFileName = TEMP_EXPORT_PATH + System.currentTimeMillis() + "performance.json"; + String pythonCmd = "python " + shellPath + " '" + poolJsonFileName + " '" + " '" + performanceFileName + "' " + " '" + columnFileName + " '" ; + try + { + log.info("shell begin time:"+System.currentTimeMillis()); + String resultString = SystemOperate.exeShellCmd(pythonCmd); + log.info("shell end time:"+System.currentTimeMillis()); + if(resultString.contains("error")) { + response = SdmResponse.failed("解析指标文件脚本执行错误"); + } + else { + InputStream is = new FileInputStream(poolJsonFileName); + byte[] jsonContents = is.readAllBytes(); + String poolJsonString = new String(jsonContents, "utf-8"); + if (poolJsonString != null && poolJsonString.length() > 0) { + JSONObject poolJsonObj = JSONObject.parseObject(poolJsonString); + response.setData(poolJsonObj); + } + } + + } + catch (Exception e) { + e.printStackTrace(); + } + finally + { +// if(poolFileName != null && poolFileName.length() > 0) +// { +// File pFile = new File(poolFileName); +// if(pFile.exists()) { +// pFile.delete(); +// } +// } +// File dictFile = new File(dictFileName); +// if(dictFile.exists()) +// { +// dictFile.delete(); +// } +// File poolJsonFile = new File(poolJsonFileName); +// if(poolJsonFile.exists()) +// { +// poolJsonFile.delete(); +// } +// +// File columnFile = new File(columnFileName); +// if(columnFile.exists()) +// { +// columnFile.delete(); +// } + } + } + return response; + } + } 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 1a181bb6..52493f5b 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java @@ -2,6 +2,7 @@ package com.sdm.project.controller; import com.alibaba.fastjson2.JSONObject; import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.req.performance.PerformanceExportExcelFormat; import com.sdm.common.entity.req.project.GetAllTasksByDisciplineReq; import com.sdm.common.entity.req.project.GetTaskDetailReq; import com.sdm.common.entity.req.task.TaskExportExcelFormat; @@ -20,6 +21,7 @@ import jakarta.validation.constraints.NotBlank; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.util.List; @@ -300,4 +302,16 @@ public class SimulationTaskController implements ISimulationTaskFeignClient { return taskService.batchOperation(batchTaskOpr); } + /** + * 任务执行————导入指标 + * @param file + * @param columns + * @return + */ + @PostMapping(value = "/importSimulationPerformance") + @ResponseBody + SdmResponse importSimulationPerformance(@RequestParam("file") MultipartFile file, @RequestParam("columns")String columns) { + return taskService.importSimulationPerformance(file,columns); + } + } 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 da0df4f5..e056b560 100644 --- a/project/src/main/java/com/sdm/project/service/ITaskService.java +++ b/project/src/main/java/com/sdm/project/service/ITaskService.java @@ -5,6 +5,7 @@ import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.req.export.PerformanceAnalysisExportExcelFormat; import com.sdm.common.entity.req.export.RunAnalysisExportExcelFormat; import com.sdm.common.entity.req.export.TaskAnalysisExportExcelFormat; +import com.sdm.common.entity.req.performance.PerformanceExportExcelFormat; import com.sdm.common.entity.req.project.GetAllTasksByDisciplineReq; import com.sdm.common.entity.req.project.GetTaskDetailReq; import com.sdm.common.entity.req.task.TaskExportExcelFormat; @@ -17,6 +18,7 @@ import com.sdm.project.model.resp.YA.BosimSaveProjectTaskRsp; import com.sdm.common.entity.resp.project.SpdmTaskVo; import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; import java.util.List; import java.util.Map; @@ -104,4 +106,6 @@ public interface ITaskService { SdmResponse batchOperation(SpdmBatchTaskOpr batchTaskOpr); + SdmResponse importSimulationPerformance(MultipartFile file, String columns); + } 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 88cd8788..b98f1d16 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,7 @@ import com.sdm.common.entity.req.export.PerformanceAnalysisExportExcelFormat; import com.sdm.common.entity.req.export.RunAnalysisExportExcelFormat; import com.sdm.common.entity.req.export.TaskAnalysisExportExcelFormat; import com.sdm.common.entity.req.export.TaskAnalysisExportExcelParam; +import com.sdm.common.entity.req.performance.PerformanceExportExcelFormat; import com.sdm.common.entity.req.project.GetAllTasksByDisciplineReq; import com.sdm.common.entity.req.project.GetTaskDetailReq; import com.sdm.common.entity.req.project.SimulationPerformance; @@ -74,9 +75,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.util.StopWatch; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.*; import java.util.function.Consumer; @@ -4176,6 +4181,25 @@ public class TaskServiceImpl implements ITaskService { return SdmResponse.success(); } + + + @Override + public SdmResponse importSimulationPerformance(MultipartFile file, String columns) { + SdmResponse response = exportOperate.parsePerformance(file,columns); + if(response.getCode() != ResultCode.SUCCESS.getCode()) { + return response; + } + else { + JSONObject poolTreeObj = (JSONObject) response.getData(); + response.setData(poolTreeObj); + } + log.info("import endTime:"+System.currentTimeMillis()); + return response; + + } + + + public static String getMaxNonEmptyTagForTask(SimulationTask req) { // 空对象校验 if (req == null) { diff --git a/task/src/main/java/com/sdm/task/dao/SimulationPoolMapper.java b/task/src/main/java/com/sdm/task/dao/SimulationPoolMapper.java index 976059ea..3831cc2d 100644 --- a/task/src/main/java/com/sdm/task/dao/SimulationPoolMapper.java +++ b/task/src/main/java/com/sdm/task/dao/SimulationPoolMapper.java @@ -41,8 +41,8 @@ public interface SimulationPoolMapper { @Select("SELECT poolName,poolVersion,poolId FROM simulation_pool_versions GROUP BY poolName,poolVersion,poolId") List queryAllTaskPoolVersion(); - @Select("SELECT * FROM simulation_pool") - List queryAllTaskPool(); + @Select("SELECT * FROM simulation_pool WHERE tenantId = #{tenantId}") + List queryAllTaskPool(@Param("tenantId") Long tenantId); @Select("SELECT versionContents FROM simulation_pool_versions WHERE poolName=#{poolName} AND poolVersion=#{version}") String queryTaskPoolVersionContent(@Param("poolName")String poolName,@Param("version")String version); diff --git a/task/src/main/java/com/sdm/task/service/impl/SimulationTaskPoolServiceImpl.java b/task/src/main/java/com/sdm/task/service/impl/SimulationTaskPoolServiceImpl.java index 0cdce08f..af436e62 100644 --- a/task/src/main/java/com/sdm/task/service/impl/SimulationTaskPoolServiceImpl.java +++ b/task/src/main/java/com/sdm/task/service/impl/SimulationTaskPoolServiceImpl.java @@ -583,7 +583,8 @@ public class SimulationTaskPoolServiceImpl extends BaseService implements ISimul public SdmResponse getAllTaslPoolCurrentVersion() { SdmResponse response = SdmResponse.success(); - List taskPoolBriefs = mapper.queryAllTaskPool(); + Long tenantId = ThreadLocalContext.getTenantId(); + List taskPoolBriefs = mapper.queryAllTaskPool(tenantId); JSONArray taskPoolArray = new JSONArray(); for(TaskPoolBrief taskPoolBrief : taskPoolBriefs) { @@ -1532,7 +1533,8 @@ public class SimulationTaskPoolServiceImpl extends BaseService implements ISimul public SdmResponse getAllTaskPool(boolean bCurrent) { SdmResponse response = SdmResponse.success(); - List poolBriefs = mapper.queryAllTaskPool(); + Long tenantId = ThreadLocalContext.getTenantId(); + List poolBriefs = mapper.queryAllTaskPool(tenantId); if(!bCurrent) { List allPoolVersions = mapper.queryAllTaskPoolVersion();