diff --git a/common/src/main/java/com/sdm/common/entity/enums/MessageTemplateEnum.java b/common/src/main/java/com/sdm/common/entity/enums/MessageTemplateEnum.java index b43e17a9..06deb4e0 100644 --- a/common/src/main/java/com/sdm/common/entity/enums/MessageTemplateEnum.java +++ b/common/src/main/java/com/sdm/common/entity/enums/MessageTemplateEnum.java @@ -5,10 +5,10 @@ package com.sdm.common.entity.enums; */ public enum MessageTemplateEnum { - TASK_ISSUE("任务通知", "接收到下发的仿真任务:%s,请前往仿真数据管理平台查看"), - DATA_ALERT("数据通知", "您的数据存储空间已达阈值,请前往仿真数据管理平台查看"), - DATA_ALERT_MANAGER("数据通知", "%s的数据存储空间已达阈值,请前往仿真数据管理平台查看"), - APPROVE_ALERT("审批通知", "收到一条%s消息,请前往仿真数据管理平台查看"), + TASK_ISSUE("任务通知", "接收到任务:%s"), + DATA_ALERT("数据通知", "您的数据存储空间已达阈值"), + DATA_ALERT_MANAGER("数据通知", "%s的数据存储空间已达阈值"), + APPROVE_ALERT("审批通知", "收到一条%s消息"), HPC_START("作业通知", "HPC任务作业:%s,已发起%s"), HPC_END("作业通知", "HPC任务作业:%s,已结束,执行结果:%s") ; 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/model/entity/FileMetadataInfo.java b/data/src/main/java/com/sdm/data/model/entity/FileMetadataInfo.java index 679397b1..fe0b5331 100644 --- a/data/src/main/java/com/sdm/data/model/entity/FileMetadataInfo.java +++ b/data/src/main/java/com/sdm/data/model/entity/FileMetadataInfo.java @@ -229,6 +229,10 @@ public class FileMetadataInfo implements Serializable { @TableField(value = "analysisDirectionName", insertStrategy = FieldStrategy.NEVER,select = false,updateStrategy = FieldStrategy.NEVER) private String analysisDirectionName; + @Schema(description = "知识库名称,只有列表展示使用") + @TableField(value = "knowledgeBaseName", insertStrategy = FieldStrategy.NEVER,select = false,updateStrategy = FieldStrategy.NEVER) + private String knowledgeBaseName; + @Schema(description = "关联工况库信息") @TableField(exist = false) private List simulationPoolInfoList; 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..3fba998c 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/"; @@ -956,6 +960,15 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { return SdmResponse.failed("文件不存在"); } + if (DataTypeEnum.FILE.getValue() == fileMetadataInfo.getDataType()) { + List list = Arrays.asList(fileMetadataInfo); + setProjectName(list); + fileMetadataInfo = list.get(0); + FileMetadataInfo dirMetadataInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getId, fileMetadataInfo.getParentId()).one(); + String knowledgeBaseName = extractRelativePath(dirMetadataInfo); + fileMetadataInfo.setKnowledgeBaseName(knowledgeBaseName); + } + // 封装返回结果 FileMetadataInfoResp fileMetadataInfoResp = new FileMetadataInfoResp(); BeanUtils.copyProperties(fileMetadataInfo, fileMetadataInfoResp); @@ -3829,6 +3842,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/outbridge/src/main/resources/common-lyric.yml b/outbridge/src/main/resources/common-lyric.yml index 25956f03..1df07b44 100644 --- a/outbridge/src/main/resources/common-lyric.yml +++ b/outbridge/src/main/resources/common-lyric.yml @@ -48,7 +48,7 @@ HK_GET_PROCESS_DATA_SUFFIX: /haikui-oa/autoCreateFlow/getProcessData/oa_three_d_ # EP系统URL #EP_URL : https://ep-url.dev.haikuicloud.com # 开发环境 -EP_URL: https://ep-url-test.lyh.haikuicloud.com +EP_URL: https://ep-url.lyh.haikuicloud.com # 推送代办状态url后缀 QUERY_TODO_STATUS_SUFFIX: /todoApi/todo/emulation/dm/status # 查询待办结果url后缀 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/SimulationLyricNodeController.java b/project/src/main/java/com/sdm/project/controller/SimulationLyricNodeController.java index afe558e0..7742c6dd 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationLyricNodeController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationLyricNodeController.java @@ -53,7 +53,7 @@ public class SimulationLyricNodeController { @GetMapping("/getTodoList") @Operation(summary = "获取待办列表", description = "获取待办列表") public SdmResponse getTodoList() { - return lyricInternalService.getTodoList("http"); + return lyricInternalService.optimisedGetTodoList("http"); } @GetMapping("/optimisedGetTodoList") 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/dao/SimulationNodeMapper.java b/project/src/main/java/com/sdm/project/dao/SimulationNodeMapper.java index 7035f533..b5ebcb37 100644 --- a/project/src/main/java/com/sdm/project/dao/SimulationNodeMapper.java +++ b/project/src/main/java/com/sdm/project/dao/SimulationNodeMapper.java @@ -45,6 +45,9 @@ public interface SimulationNodeMapper extends BaseMapper { List getNodeList(@Param("nodeType") String nodeType, @Param("nodeSubType") String nodeSubType, @Param("exeStatus") String exeStatus, @Param("nodeCode") String nodeCode, @Param("manager") String manager, @Param("nodeName") String nodeName, @Param("tenantId") Long tenantId, @Param("pos") int pos, @Param("limit") int limit); + List getResponsibleNodeList(@Param("nodeType") String nodeType, @Param("nodeSubType") String nodeSubType, @Param("exeStatus") String exeStatus, @Param("nodeCode") String nodeCode, + @Param("manager") String manager, @Param("nodeName") String nodeName, @Param("tenantId") Long tenantId, @Param("pos") int pos, @Param("limit") int limit); + List getNodeListNoPermission(@Param("nodeType") String nodeType, @Param("nodeSubType") String nodeSubType, @Param("exeStatus") String exeStatus, @Param("nodeCode") String nodeCode, @Param("manager") String manager, @Param("nodeName") String nodeName, @Param("tenantId") Long tenantId, @Param("pos") int pos, @Param("limit") int limit); diff --git a/project/src/main/java/com/sdm/project/model/req/KeyResultReq.java b/project/src/main/java/com/sdm/project/model/req/KeyResultReq.java index 2aa90b4a..12e4096e 100644 --- a/project/src/main/java/com/sdm/project/model/req/KeyResultReq.java +++ b/project/src/main/java/com/sdm/project/model/req/KeyResultReq.java @@ -133,4 +133,8 @@ public class KeyResultReq extends BaseReq { @Schema(description = "关键结果uuid列表") private List keyResultIdList; + // -----------------归档输入输出文件使用--------------- + @Schema(description = "文件id列表") + private List fileIds; + } diff --git a/project/src/main/java/com/sdm/project/model/vo/CommonGetCompleteFromTaskVo.java b/project/src/main/java/com/sdm/project/model/vo/CommonGetCompleteFromTaskVo.java index b106fa4c..20b8fead 100644 --- a/project/src/main/java/com/sdm/project/model/vo/CommonGetCompleteFromTaskVo.java +++ b/project/src/main/java/com/sdm/project/model/vo/CommonGetCompleteFromTaskVo.java @@ -7,4 +7,5 @@ public class CommonGetCompleteFromTaskVo { private String tag; private String nodeName; private String exeStatus; + private String achieveStatus; } 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/ILyricInternalService.java b/project/src/main/java/com/sdm/project/service/ILyricInternalService.java index d05fe595..6fb91c14 100644 --- a/project/src/main/java/com/sdm/project/service/ILyricInternalService.java +++ b/project/src/main/java/com/sdm/project/service/ILyricInternalService.java @@ -15,7 +15,7 @@ public interface ILyricInternalService { SdmResponse getTodoList(String from); - SdmResponse getTodoListByProjectNum(String projectNum); +// SdmResponse getTodoListByProjectNum(String projectNum); SdmResponse getMainPlanListByProjectId(Integer projectId,String projectUuid); 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/DemandServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/DemandServiceImpl.java index ca6f730c..ac1db6aa 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 @@ -101,12 +101,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { public SdmResponse addDemand(SpdmAddDemandReq req) { Long tenantId = ThreadLocalContext.getTenantId(); Long jobNumber = ThreadLocalContext.getUserId(); - String workNo = ThreadLocalContext.getJobNumber(); - if (isConvertibleToLong(workNo)) { - req.setCreator(Long.valueOf(workNo)); - }else { - req.setCreator(jobNumber); - } + req.setCreator(jobNumber); log.info("新增需求时,当前租户id为:{},工号为:{}", tenantId, jobNumber); // 获取仿真负责人 String pMemberList = req.getPMemberList(); @@ -1256,12 +1251,7 @@ public class DemandServiceImpl extends BaseService implements IDemandService { public SdmResponse addDemandNoPermission(SpdmAddDemandReq req) { Long tenantId = ThreadLocalContext.getTenantId(); Long jobNumber = ThreadLocalContext.getUserId(); - String workNo = ThreadLocalContext.getJobNumber(); - if (isConvertibleToLong(workNo)) { - req.setCreator(Long.valueOf(workNo)); - }else { - req.setCreator(jobNumber); - } + req.setCreator(jobNumber); log.info("新增需求时(无权限校验),当前租户id为:{},工号为:{}", tenantId, jobNumber); // 获取仿真负责人 String pMemberList = req.getPMemberList(); diff --git a/project/src/main/java/com/sdm/project/service/impl/LyricInternalServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/LyricInternalServiceImpl.java index 7e0f1f39..85dc04ee 100644 --- a/project/src/main/java/com/sdm/project/service/impl/LyricInternalServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/LyricInternalServiceImpl.java @@ -494,11 +494,12 @@ public class LyricInternalServiceImpl implements ILyricInternalService { req.setEndTime(todo.getClosedTime()); req.setCreateTime(curDateStr); req.setDemandSource(SYNC_PROJECT_SOURCE); - if (isConvertibleToInt(todo.getIntroduceBy())) { - req.setCreator(Long.valueOf(todo.getIntroduceBy())); - }else { - req.setCreator(usernameToUserIdMap.get(todo.getIntroduceBy())); - } +// if (isConvertibleToInt(todo.getIntroduceBy())) { +// req.setCreator(Long.valueOf(todo.getIntroduceBy())); +// }else { +// req.setCreator(usernameToUserIdMap.get(todo.getIntroduceBy())); +// } + req.setCreator(usernameToUserIdMap.get(todo.getIntroduceBy())); req.setTenantId(tenantId); @@ -873,285 +874,285 @@ public class LyricInternalServiceImpl implements ILyricInternalService { } - @Override - public SdmResponse getTodoListByProjectNum(String projectNum) { - log.info("同步代办时,项目号为:{}", projectNum); - if (StringUtils.isBlank(projectNum)) { - log.error("同步待办时,项目号不能为空"); - return SdmResponse.failed("同步待办时,项目号不能为空"); - } - // 查询 - List todoInfoList = lyricVTodoInfoService.lambdaQuery().eq(LyricVTodoEmulationInfoDM::getProject, projectNum) - .list(); - log.info("同步代办时,todoInfoList:{}", todoInfoList); - // 过滤掉数据库中已经有的需求 - if (CollectionUtils.isEmpty(todoInfoList)) { - log.info("未同步到待办"); - return SdmResponse.success(); - } - log.info("同步到{}条待办", todoInfoList.size()); - List allDemandList = demandMapper.getAllList(); - if (CollectionUtils.isNotEmpty(allDemandList)) { - List demandCodeList = allDemandList.stream().map(SpdmDemandVo::getDemandCode).toList(); - todoInfoList = todoInfoList.stream().filter(todoInfo -> !demandCodeList.contains(String.valueOf(todoInfo.getTodoId()))).toList(); - if (CollectionUtils.isEmpty(todoInfoList)) { - log.info("本次同步到的待办都已经进行过同步"); - return SdmResponse.success(); - } - } - Long tenantId = ThreadLocalContext.getTenantId(); - Long jobNumber = ThreadLocalContext.getUserId(); - String uuid; - String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - for (LyricVTodoEmulationInfoDM emulation : todoInfoList) { - try { - List extras = new ArrayList<>(); - List allMemberList = new ArrayList<>(); - // 需求的基础属性 - SpdmAddDemandReq spdmAddDemandReq = new SpdmAddDemandReq(); - uuid = RandomUtil.generateString(32); - spdmAddDemandReq.setUuid(uuid); - spdmAddDemandReq.setDemandName(emulation.getEmulationDemand()); - if (ObjectUtils.isNotEmpty(emulation.getTodoId())) { - spdmAddDemandReq.setDemandCode(String.valueOf(emulation.getTodoId())); - } - spdmAddDemandReq.setDemandType(emulation.getEmulationType()); - spdmAddDemandReq.setDemandStatus("0"); - spdmAddDemandReq.setAchieveStatus("0"); - spdmAddDemandReq.setProgress(0); - spdmAddDemandReq.setBeginTime(emulation.getPlanStartTime()); - spdmAddDemandReq.setEndTime(emulation.getClosedTime()); - spdmAddDemandReq.setProjectId(emulation.getProject()); - spdmAddDemandReq.setPhaseId(emulation.getProjectStage()); - spdmAddDemandReq.setDemandSource(SYNC_PROJECT_SOURCE); - // 需求的额外属性 - SpdmDemandExtraReq extraReq1 = new SpdmDemandExtraReq(); - extraReq1.setDemandId(uuid); - extraReq1.setPropertyName("emulationResult"); - extraReq1.setPropertyValue(emulation.getEmulationResult()); - extras.add(extraReq1); - SpdmDemandExtraReq extraReq2 = new SpdmDemandExtraReq(); - extraReq2.setDemandId(uuid); - extraReq2.setPropertyName("robotBrand"); - extraReq2.setPropertyValue(emulation.getRobotBrand()); - extras.add(extraReq2); - SpdmDemandExtraReq extraReq3 = new SpdmDemandExtraReq(); - extraReq3.setDemandId(uuid); - extraReq3.setPropertyName("axis"); - extraReq3.setPropertyValue(emulation.getAxis()); - extras.add(extraReq3); - SpdmDemandExtraReq extraReq4 = new SpdmDemandExtraReq(); - extraReq4.setDemandId(uuid); - extraReq4.setPropertyName("beatRequirements"); - extraReq4.setPropertyValue(emulation.getBeatRequirements()); - extras.add(extraReq4); - SpdmDemandExtraReq extraReq5 = new SpdmDemandExtraReq(); - extraReq5.setDemandId(uuid); - extraReq5.setPropertyName("threeDimensionalReposito"); - extraReq5.setPropertyValue(emulation.getThreeDimensionalRepositoryPath()); - extras.add(extraReq5); - SpdmDemandExtraReq extraReq6 = new SpdmDemandExtraReq(); - extraReq6.setDemandId(uuid); - extraReq6.setPropertyName("resultPath"); - extraReq6.setPropertyValue(emulation.getResultPath()); - extras.add(extraReq6); - SpdmDemandExtraReq extraReq7 = new SpdmDemandExtraReq(); - extraReq7.setDemandId(uuid); - extraReq7.setPropertyName("resultDescribe"); - extraReq7.setPropertyValue(emulation.getResultDescribe()); - extras.add(extraReq7); - SpdmDemandExtraReq extraReq8 = new SpdmDemandExtraReq(); - extraReq8.setDemandId(uuid); - extraReq8.setPropertyName("analysisType"); - extraReq8.setPropertyValue(emulation.getAnalysisType()); - extras.add(extraReq8); - SpdmDemandExtraReq extraReq11 = new SpdmDemandExtraReq(); - extraReq11.setDemandId(uuid); - extraReq11.setPropertyName("software"); - extraReq11.setPropertyValue(emulation.getSoftware()); - extras.add(extraReq11); - SpdmDemandExtraReq extraReq12 = new SpdmDemandExtraReq(); - extraReq12.setDemandId(uuid); - extraReq12.setPropertyName("type"); - extraReq12.setPropertyValue(emulation.getType()); - extras.add(extraReq12); - SpdmDemandExtraReq extraReq13 = new SpdmDemandExtraReq(); - extraReq13.setDemandId(uuid); - extraReq13.setPropertyName("resultFileId"); - extraReq13.setPropertyValue(emulation.getResultFileId()); - extras.add(extraReq13); - SpdmDemandExtraReq extraReq14 = new SpdmDemandExtraReq(); - extraReq14.setDemandId(uuid); - extraReq14.setPropertyName("difficulty"); - extraReq14.setPropertyValue(emulation.getDifficulty()); - extras.add(extraReq14); - SpdmDemandExtraReq extraReq15 = new SpdmDemandExtraReq(); - extraReq15.setDemandId(uuid); - extraReq15.setPropertyName("requiredTime"); - extraReq15.setPropertyValue(emulation.getRequiredTime()); - extras.add(extraReq15); - SpdmDemandExtraReq extraReq20 = new SpdmDemandExtraReq(); - extraReq20.setDemandId(uuid); - extraReq20.setPropertyName("subject"); - extraReq20.setPropertyValue(emulation.getSubject()); - extras.add(extraReq20); - SpdmDemandExtraReq extraReq21 = new SpdmDemandExtraReq(); - extraReq21.setDemandId(uuid); - extraReq21.setPropertyName("todoNum"); - extraReq21.setPropertyValue(emulation.getTodoNum()); - extras.add(extraReq21); - SpdmDemandExtraReq extraReq22 = new SpdmDemandExtraReq(); - extraReq22.setDemandId(uuid); - extraReq22.setPropertyName("status"); - extraReq22.setPropertyValue(emulation.getStatus()); - extras.add(extraReq22); - SpdmDemandExtraReq extraReq26 = new SpdmDemandExtraReq(); - extraReq26.setDemandId(uuid); - extraReq26.setPropertyName("projectName"); - extraReq26.setPropertyValue(emulation.getProjectName()); - extras.add(extraReq26); - SpdmDemandExtraReq extraReq27 = new SpdmDemandExtraReq(); - extraReq27.setDemandId(uuid); - extraReq27.setPropertyName("projectModel"); - extraReq27.setPropertyValue(emulation.getProjectModel()); - extras.add(extraReq27); - SpdmDemandExtraReq extraReq28 = new SpdmDemandExtraReq(); - extraReq28.setDemandId(uuid); - extraReq28.setPropertyName("projectType"); - extraReq28.setPropertyValue(emulation.getProjectType()); - extras.add(extraReq28); - SpdmDemandExtraReq extraReq31 = new SpdmDemandExtraReq(); - extraReq31.setDemandId(uuid); - extraReq31.setPropertyName("stationNum"); - extraReq31.setPropertyValue(emulation.getStationNum()); - extras.add(extraReq31); - SpdmDemandExtraReq extraReq32 = new SpdmDemandExtraReq(); - extraReq32.setDemandId(uuid); - extraReq32.setPropertyName("planStartTime"); - extraReq32.setPropertyValue(emulation.getPlanStartTime()); - extras.add(extraReq32); - SpdmDemandExtraReq extraReq33 = new SpdmDemandExtraReq(); - extraReq33.setDemandId(uuid); - extraReq33.setPropertyName("requirementsTime"); - extraReq33.setPropertyValue(emulation.getRequiredTime()); - extras.add(extraReq33); - SpdmDemandExtraReq extraReq34 = new SpdmDemandExtraReq(); - extraReq34.setDemandId(uuid); - extraReq34.setPropertyName("pausedTime"); - extraReq34.setPropertyValue(emulation.getPausedTime()); - extras.add(extraReq34); - SpdmDemandExtraReq extraReq35 = new SpdmDemandExtraReq(); - extraReq35.setDemandId(uuid); - extraReq35.setPropertyName("performer"); - extraReq35.setPropertyValue(emulation.getPerformer()); - extras.add(extraReq35); - SpdmDemandExtraReq extraReq36 = new SpdmDemandExtraReq(); - extraReq36.setDemandId(uuid); - extraReq36.setPropertyName("performerName"); - extraReq36.setPropertyValue(emulation.getPerformerName()); - extras.add(extraReq36); - SpdmDemandExtraReq extraReq37 = new SpdmDemandExtraReq(); - extraReq37.setDemandId(uuid); - extraReq37.setPropertyName("verifier"); - extraReq37.setPropertyValue(emulation.getVerifier()); - extras.add(extraReq37); - SpdmDemandExtraReq extraReq39 = new SpdmDemandExtraReq(); - extraReq39.setDemandId(uuid); - extraReq39.setPropertyName("workHourPlan"); - extraReq39.setPropertyValue(emulation.getWorkHourPlan()); - extras.add(extraReq39); - SpdmDemandExtraReq extraReq40 = new SpdmDemandExtraReq(); - extraReq40.setDemandId(uuid); - extraReq40.setPropertyName("realWorkHour"); - extraReq40.setPropertyValue(emulation.getRealWorkHour()); - extras.add(extraReq40); - SpdmDemandExtraReq extraReq41 = new SpdmDemandExtraReq(); - extraReq41.setDemandId(uuid); - extraReq41.setPropertyName("standardWorkHour"); - extraReq41.setPropertyValue(emulation.getStandardWorkHour()); - extras.add(extraReq41); - SpdmDemandExtraReq extraReq42 = new SpdmDemandExtraReq(); - extraReq42.setDemandId(uuid); - extraReq42.setPropertyName("turnDownReason"); - extraReq42.setPropertyValue(emulation.getTurnDownReason()); - extras.add(extraReq42); - - // 需求的成员 - // 仿真负责人 - String emulationPerformer = emulation.getEmulationPerformer(); - if (StringUtils.isNotBlank(emulationPerformer)) { - SpdmDemandRelateMemberReq pMemberReq = new SpdmDemandRelateMemberReq(); - pMemberReq.setDemandId(uuid); - pMemberReq.setType(0); - String pUserId = emulationPerformer.split("-")[0]; - if (isConvertibleToLong(pUserId)) { - pMemberReq.setUserId(Long.valueOf(pUserId)); - } - pMemberReq.setCreateTime(curDateStr); - pMemberReq.setCreator(jobNumber); - allMemberList.add(pMemberReq); - } - - // 仿真执行人 - String emulationExecutor = emulation.getEmulationExecutor(); - if (StringUtils.isNotBlank(emulationExecutor)) { - SpdmDemandRelateMemberReq eMemberReq = new SpdmDemandRelateMemberReq(); - eMemberReq.setDemandId(uuid); - eMemberReq.setType(1); - String eUserId = emulationExecutor.split("-")[0]; - if (isConvertibleToLong(eUserId)) { - eMemberReq.setUserId(Long.valueOf(eUserId)); - } - eMemberReq.setCreateTime(curDateStr); - eMemberReq.setCreator(jobNumber); - allMemberList.add(eMemberReq); - } - - // 3D负责人 - String threeDimensionalPerformer = emulation.getThreeDimensionalPerformer(); - if (StringUtils.isNotBlank(emulationExecutor)) { - SpdmDemandRelateMemberReq tMemberReq = new SpdmDemandRelateMemberReq(); - tMemberReq.setDemandId(uuid); - tMemberReq.setType(2); - String tUserId = threeDimensionalPerformer.split("-")[0]; - if (isConvertibleToLong(tUserId)) { - tMemberReq.setUserId(Long.valueOf(tUserId)); - } - tMemberReq.setCreateTime(curDateStr); - tMemberReq.setCreator(jobNumber); - allMemberList.add(tMemberReq); - } - demandMapper.addDemand(spdmAddDemandReq, tenantId, jobNumber); - // 更新文件权限 - UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq(); - updatePermissionReq.setUserId(jobNumber); - updatePermissionReq.setUuid(uuid); - Map userPermissions = new HashMap<>(); - userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue()); - updatePermissionReq.setUserPermissions(userPermissions); - log.info("同步需求时,更新用户权限的参数为:{}", updatePermissionReq); - SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq); - log.info("同步需求时,更新用户权限的返回值为:{}", updatePermissionResponse); - demandMapper.addDemandMember(allMemberList); - for (SpdmDemandExtraReq extra : extras) { - extra.setCreateTime(curDateStr); - extra.setCreator(jobNumber); - } - demandMapper.addDemandExtra(extras); - CreateDirReq createDirReq = new CreateDirReq(); - createDirReq.setUuId(uuid); - createDirReq.setParentUuId(null); - createDirReq.setDirName(spdmAddDemandReq.getDemandName()); - createDirReq.setDirType(DirTypeEnum.PROJECT_NODE_DIR.getValue()); - log.info("同步待办创建需求时,调用创建文件夹的参数为:{}", createDirReq); - SdmResponse response = dataFeignClient.createDir(createDirReq); - log.info("同步代办创建需求时,调用创建文件夹的返回值为:{}", response); - } catch (Exception e) { - log.error("同步代办时有异常:{}", e.getMessage()); - } - } - return SdmResponse.success(); - } +// @Override +// public SdmResponse getTodoListByProjectNum(String projectNum) { +// log.info("同步代办时,项目号为:{}", projectNum); +// if (StringUtils.isBlank(projectNum)) { +// log.error("同步待办时,项目号不能为空"); +// return SdmResponse.failed("同步待办时,项目号不能为空"); +// } +// // 查询 +// List todoInfoList = lyricVTodoInfoService.lambdaQuery().eq(LyricVTodoEmulationInfoDM::getProject, projectNum) +// .list(); +// log.info("同步代办时,todoInfoList:{}", todoInfoList); +// // 过滤掉数据库中已经有的需求 +// if (CollectionUtils.isEmpty(todoInfoList)) { +// log.info("未同步到待办"); +// return SdmResponse.success(); +// } +// log.info("同步到{}条待办", todoInfoList.size()); +// List allDemandList = demandMapper.getAllList(); +// if (CollectionUtils.isNotEmpty(allDemandList)) { +// List demandCodeList = allDemandList.stream().map(SpdmDemandVo::getDemandCode).toList(); +// todoInfoList = todoInfoList.stream().filter(todoInfo -> !demandCodeList.contains(String.valueOf(todoInfo.getTodoId()))).toList(); +// if (CollectionUtils.isEmpty(todoInfoList)) { +// log.info("本次同步到的待办都已经进行过同步"); +// return SdmResponse.success(); +// } +// } +// Long tenantId = ThreadLocalContext.getTenantId(); +// Long jobNumber = ThreadLocalContext.getUserId(); +// String uuid; +// String curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); +// for (LyricVTodoEmulationInfoDM emulation : todoInfoList) { +// try { +// List extras = new ArrayList<>(); +// List allMemberList = new ArrayList<>(); +// // 需求的基础属性 +// SpdmAddDemandReq spdmAddDemandReq = new SpdmAddDemandReq(); +// uuid = RandomUtil.generateString(32); +// spdmAddDemandReq.setUuid(uuid); +// spdmAddDemandReq.setDemandName(emulation.getEmulationDemand()); +// if (ObjectUtils.isNotEmpty(emulation.getTodoId())) { +// spdmAddDemandReq.setDemandCode(String.valueOf(emulation.getTodoId())); +// } +// spdmAddDemandReq.setDemandType(emulation.getEmulationType()); +// spdmAddDemandReq.setDemandStatus("0"); +// spdmAddDemandReq.setAchieveStatus("0"); +// spdmAddDemandReq.setProgress(0); +// spdmAddDemandReq.setBeginTime(emulation.getPlanStartTime()); +// spdmAddDemandReq.setEndTime(emulation.getClosedTime()); +// spdmAddDemandReq.setProjectId(emulation.getProject()); +// spdmAddDemandReq.setPhaseId(emulation.getProjectStage()); +// spdmAddDemandReq.setDemandSource(SYNC_PROJECT_SOURCE); +// // 需求的额外属性 +// SpdmDemandExtraReq extraReq1 = new SpdmDemandExtraReq(); +// extraReq1.setDemandId(uuid); +// extraReq1.setPropertyName("emulationResult"); +// extraReq1.setPropertyValue(emulation.getEmulationResult()); +// extras.add(extraReq1); +// SpdmDemandExtraReq extraReq2 = new SpdmDemandExtraReq(); +// extraReq2.setDemandId(uuid); +// extraReq2.setPropertyName("robotBrand"); +// extraReq2.setPropertyValue(emulation.getRobotBrand()); +// extras.add(extraReq2); +// SpdmDemandExtraReq extraReq3 = new SpdmDemandExtraReq(); +// extraReq3.setDemandId(uuid); +// extraReq3.setPropertyName("axis"); +// extraReq3.setPropertyValue(emulation.getAxis()); +// extras.add(extraReq3); +// SpdmDemandExtraReq extraReq4 = new SpdmDemandExtraReq(); +// extraReq4.setDemandId(uuid); +// extraReq4.setPropertyName("beatRequirements"); +// extraReq4.setPropertyValue(emulation.getBeatRequirements()); +// extras.add(extraReq4); +// SpdmDemandExtraReq extraReq5 = new SpdmDemandExtraReq(); +// extraReq5.setDemandId(uuid); +// extraReq5.setPropertyName("threeDimensionalReposito"); +// extraReq5.setPropertyValue(emulation.getThreeDimensionalRepositoryPath()); +// extras.add(extraReq5); +// SpdmDemandExtraReq extraReq6 = new SpdmDemandExtraReq(); +// extraReq6.setDemandId(uuid); +// extraReq6.setPropertyName("resultPath"); +// extraReq6.setPropertyValue(emulation.getResultPath()); +// extras.add(extraReq6); +// SpdmDemandExtraReq extraReq7 = new SpdmDemandExtraReq(); +// extraReq7.setDemandId(uuid); +// extraReq7.setPropertyName("resultDescribe"); +// extraReq7.setPropertyValue(emulation.getResultDescribe()); +// extras.add(extraReq7); +// SpdmDemandExtraReq extraReq8 = new SpdmDemandExtraReq(); +// extraReq8.setDemandId(uuid); +// extraReq8.setPropertyName("analysisType"); +// extraReq8.setPropertyValue(emulation.getAnalysisType()); +// extras.add(extraReq8); +// SpdmDemandExtraReq extraReq11 = new SpdmDemandExtraReq(); +// extraReq11.setDemandId(uuid); +// extraReq11.setPropertyName("software"); +// extraReq11.setPropertyValue(emulation.getSoftware()); +// extras.add(extraReq11); +// SpdmDemandExtraReq extraReq12 = new SpdmDemandExtraReq(); +// extraReq12.setDemandId(uuid); +// extraReq12.setPropertyName("type"); +// extraReq12.setPropertyValue(emulation.getType()); +// extras.add(extraReq12); +// SpdmDemandExtraReq extraReq13 = new SpdmDemandExtraReq(); +// extraReq13.setDemandId(uuid); +// extraReq13.setPropertyName("resultFileId"); +// extraReq13.setPropertyValue(emulation.getResultFileId()); +// extras.add(extraReq13); +// SpdmDemandExtraReq extraReq14 = new SpdmDemandExtraReq(); +// extraReq14.setDemandId(uuid); +// extraReq14.setPropertyName("difficulty"); +// extraReq14.setPropertyValue(emulation.getDifficulty()); +// extras.add(extraReq14); +// SpdmDemandExtraReq extraReq15 = new SpdmDemandExtraReq(); +// extraReq15.setDemandId(uuid); +// extraReq15.setPropertyName("requiredTime"); +// extraReq15.setPropertyValue(emulation.getRequiredTime()); +// extras.add(extraReq15); +// SpdmDemandExtraReq extraReq20 = new SpdmDemandExtraReq(); +// extraReq20.setDemandId(uuid); +// extraReq20.setPropertyName("subject"); +// extraReq20.setPropertyValue(emulation.getSubject()); +// extras.add(extraReq20); +// SpdmDemandExtraReq extraReq21 = new SpdmDemandExtraReq(); +// extraReq21.setDemandId(uuid); +// extraReq21.setPropertyName("todoNum"); +// extraReq21.setPropertyValue(emulation.getTodoNum()); +// extras.add(extraReq21); +// SpdmDemandExtraReq extraReq22 = new SpdmDemandExtraReq(); +// extraReq22.setDemandId(uuid); +// extraReq22.setPropertyName("status"); +// extraReq22.setPropertyValue(emulation.getStatus()); +// extras.add(extraReq22); +// SpdmDemandExtraReq extraReq26 = new SpdmDemandExtraReq(); +// extraReq26.setDemandId(uuid); +// extraReq26.setPropertyName("projectName"); +// extraReq26.setPropertyValue(emulation.getProjectName()); +// extras.add(extraReq26); +// SpdmDemandExtraReq extraReq27 = new SpdmDemandExtraReq(); +// extraReq27.setDemandId(uuid); +// extraReq27.setPropertyName("projectModel"); +// extraReq27.setPropertyValue(emulation.getProjectModel()); +// extras.add(extraReq27); +// SpdmDemandExtraReq extraReq28 = new SpdmDemandExtraReq(); +// extraReq28.setDemandId(uuid); +// extraReq28.setPropertyName("projectType"); +// extraReq28.setPropertyValue(emulation.getProjectType()); +// extras.add(extraReq28); +// SpdmDemandExtraReq extraReq31 = new SpdmDemandExtraReq(); +// extraReq31.setDemandId(uuid); +// extraReq31.setPropertyName("stationNum"); +// extraReq31.setPropertyValue(emulation.getStationNum()); +// extras.add(extraReq31); +// SpdmDemandExtraReq extraReq32 = new SpdmDemandExtraReq(); +// extraReq32.setDemandId(uuid); +// extraReq32.setPropertyName("planStartTime"); +// extraReq32.setPropertyValue(emulation.getPlanStartTime()); +// extras.add(extraReq32); +// SpdmDemandExtraReq extraReq33 = new SpdmDemandExtraReq(); +// extraReq33.setDemandId(uuid); +// extraReq33.setPropertyName("requirementsTime"); +// extraReq33.setPropertyValue(emulation.getRequiredTime()); +// extras.add(extraReq33); +// SpdmDemandExtraReq extraReq34 = new SpdmDemandExtraReq(); +// extraReq34.setDemandId(uuid); +// extraReq34.setPropertyName("pausedTime"); +// extraReq34.setPropertyValue(emulation.getPausedTime()); +// extras.add(extraReq34); +// SpdmDemandExtraReq extraReq35 = new SpdmDemandExtraReq(); +// extraReq35.setDemandId(uuid); +// extraReq35.setPropertyName("performer"); +// extraReq35.setPropertyValue(emulation.getPerformer()); +// extras.add(extraReq35); +// SpdmDemandExtraReq extraReq36 = new SpdmDemandExtraReq(); +// extraReq36.setDemandId(uuid); +// extraReq36.setPropertyName("performerName"); +// extraReq36.setPropertyValue(emulation.getPerformerName()); +// extras.add(extraReq36); +// SpdmDemandExtraReq extraReq37 = new SpdmDemandExtraReq(); +// extraReq37.setDemandId(uuid); +// extraReq37.setPropertyName("verifier"); +// extraReq37.setPropertyValue(emulation.getVerifier()); +// extras.add(extraReq37); +// SpdmDemandExtraReq extraReq39 = new SpdmDemandExtraReq(); +// extraReq39.setDemandId(uuid); +// extraReq39.setPropertyName("workHourPlan"); +// extraReq39.setPropertyValue(emulation.getWorkHourPlan()); +// extras.add(extraReq39); +// SpdmDemandExtraReq extraReq40 = new SpdmDemandExtraReq(); +// extraReq40.setDemandId(uuid); +// extraReq40.setPropertyName("realWorkHour"); +// extraReq40.setPropertyValue(emulation.getRealWorkHour()); +// extras.add(extraReq40); +// SpdmDemandExtraReq extraReq41 = new SpdmDemandExtraReq(); +// extraReq41.setDemandId(uuid); +// extraReq41.setPropertyName("standardWorkHour"); +// extraReq41.setPropertyValue(emulation.getStandardWorkHour()); +// extras.add(extraReq41); +// SpdmDemandExtraReq extraReq42 = new SpdmDemandExtraReq(); +// extraReq42.setDemandId(uuid); +// extraReq42.setPropertyName("turnDownReason"); +// extraReq42.setPropertyValue(emulation.getTurnDownReason()); +// extras.add(extraReq42); +// +// // 需求的成员 +// // 仿真负责人 +// String emulationPerformer = emulation.getEmulationPerformer(); +// if (StringUtils.isNotBlank(emulationPerformer)) { +// SpdmDemandRelateMemberReq pMemberReq = new SpdmDemandRelateMemberReq(); +// pMemberReq.setDemandId(uuid); +// pMemberReq.setType(0); +// String pUserId = emulationPerformer.split("-")[0]; +// if (isConvertibleToLong(pUserId)) { +// pMemberReq.setUserId(Long.valueOf(pUserId)); +// } +// pMemberReq.setCreateTime(curDateStr); +// pMemberReq.setCreator(jobNumber); +// allMemberList.add(pMemberReq); +// } +// +// // 仿真执行人 +// String emulationExecutor = emulation.getEmulationExecutor(); +// if (StringUtils.isNotBlank(emulationExecutor)) { +// SpdmDemandRelateMemberReq eMemberReq = new SpdmDemandRelateMemberReq(); +// eMemberReq.setDemandId(uuid); +// eMemberReq.setType(1); +// String eUserId = emulationExecutor.split("-")[0]; +// if (isConvertibleToLong(eUserId)) { +// eMemberReq.setUserId(Long.valueOf(eUserId)); +// } +// eMemberReq.setCreateTime(curDateStr); +// eMemberReq.setCreator(jobNumber); +// allMemberList.add(eMemberReq); +// } +// +// // 3D负责人 +// String threeDimensionalPerformer = emulation.getThreeDimensionalPerformer(); +// if (StringUtils.isNotBlank(emulationExecutor)) { +// SpdmDemandRelateMemberReq tMemberReq = new SpdmDemandRelateMemberReq(); +// tMemberReq.setDemandId(uuid); +// tMemberReq.setType(2); +// String tUserId = threeDimensionalPerformer.split("-")[0]; +// if (isConvertibleToLong(tUserId)) { +// tMemberReq.setUserId(Long.valueOf(tUserId)); +// } +// tMemberReq.setCreateTime(curDateStr); +// tMemberReq.setCreator(jobNumber); +// allMemberList.add(tMemberReq); +// } +// demandMapper.addDemand(spdmAddDemandReq, tenantId, jobNumber); +// // 更新文件权限 +// UpdatePermissionReq updatePermissionReq = new UpdatePermissionReq(); +// updatePermissionReq.setUserId(jobNumber); +// updatePermissionReq.setUuid(uuid); +// Map userPermissions = new HashMap<>(); +// userPermissions.put(jobNumber, FilePermissionEnum.ALL.getValue()); +// updatePermissionReq.setUserPermissions(userPermissions); +// log.info("同步需求时,更新用户权限的参数为:{}", updatePermissionReq); +// SdmResponse updatePermissionResponse = dataFeignClient.updatePermission(updatePermissionReq); +// log.info("同步需求时,更新用户权限的返回值为:{}", updatePermissionResponse); +// demandMapper.addDemandMember(allMemberList); +// for (SpdmDemandExtraReq extra : extras) { +// extra.setCreateTime(curDateStr); +// extra.setCreator(jobNumber); +// } +// demandMapper.addDemandExtra(extras); +// CreateDirReq createDirReq = new CreateDirReq(); +// createDirReq.setUuId(uuid); +// createDirReq.setParentUuId(null); +// createDirReq.setDirName(spdmAddDemandReq.getDemandName()); +// createDirReq.setDirType(DirTypeEnum.PROJECT_NODE_DIR.getValue()); +// log.info("同步待办创建需求时,调用创建文件夹的参数为:{}", createDirReq); +// SdmResponse response = dataFeignClient.createDir(createDirReq); +// log.info("同步代办创建需求时,调用创建文件夹的返回值为:{}", response); +// } catch (Exception e) { +// log.error("同步代办时有异常:{}", e.getMessage()); +// } +// } +// return SdmResponse.success(); +// } @Override public SdmResponse getMainPlanListByProjectId(Integer projectId, String projectUuid) { 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 e88657f6..32479e42 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查询我负责的,逻辑待定,暂时先查询所有) - if (type == null || type == 0 || type == 2) { + // type=0,查询所有,使用原有查询逻辑 + if (type == null || type == 0) { nodeList = nodeMapper.getNodeList(req.getNodeType(), req.getNodeSubType(), req.getExeStatus(), req.getNodeCode(), req.getManager(), req.getNodeName(), tenantId, pos, limit); // 设置关注标签 @@ -517,11 +523,29 @@ public class NodeServiceImpl extends ServiceImpl node.setAttentionFlag(1)); total = nodeMapper.getNodeListCountByUserId(req.getNodeType(), req.getNodeSubType(), req.getExeStatus(), req.getNodeCode(), req.getManager(), req.getNodeName(), tenantId,userId,type); + }else { + nodeList = nodeMapper.getNodeListByUserId(req.getNodeType(), req.getNodeSubType(), req.getExeStatus(), req.getNodeCode(), req.getManager(), req.getNodeName(), + tenantId, pos, limit,userId,type); + // 设置关注标签 + if (CollectionUtils.isNotEmpty(nodeList)) { + List nodeIdList = nodeList.stream().map(SpdmNodeVo::getUuid).toList(); + List nodeMemberList = nodeMapper.getNodeMemberListByMemberType(nodeIdList,userId, NodeMemberTypeEnum.ATTENTION.getCode()); + if (CollectionUtils.isNotEmpty(nodeMemberList)) { + List attentNodeIdList = nodeMemberList.stream().map(SpdmNodeMemberVo::getNodeId).toList(); + for (SpdmNodeVo spdmNodeVo : nodeList) { + if (!attentNodeIdList.contains(spdmNodeVo.getUuid())) { + continue; + } + spdmNodeVo.setAttentionFlag(1); + } + } + } + total = nodeMapper.getNodeListCountByUserId(req.getNodeType(), req.getNodeSubType(), req.getExeStatus(), req.getNodeCode(), req.getManager(), req.getNodeName(), tenantId,userId,type); } CoreLogger.info("getNodeList param:{},tenantId:{}", JSONObject.toJSONString(req), tenantId); @@ -3405,7 +3429,7 @@ public class NodeServiceImpl extends ServiceImpl memberList = buildDemandMemberList( @@ -3433,7 +3457,8 @@ public class NodeServiceImpl extends ServiceImpl projectNodeMap, String currentTimeStr, - Map workspaceNodeMap) { + Map workspaceNodeMap, + Map usernameToUserIdMap) { SpdmAddDemandReq demandAddReq = new SpdmAddDemandReq(); // 基础属性 @@ -3457,6 +3482,7 @@ public class NodeServiceImpl extends ServiceImpl memberList, + List permissionReqList, + Map usernameToUserIdMap) { + if (StringUtils.isBlank(memberStr)) { + return; + } + + + String[] userIdStr; + if (MemberTypeEnum.PRINCIPAL.getCode().equals(type) || MemberTypeEnum.EXECUTOR.getCode().equals(type)) { + userIdStr = memberStr.split(","); + } { + userIdStr = memberStr.split("-"); + } + if (ObjectUtils.isEmpty(userIdStr)) { + return; + } + for (String userId : userIdStr) { + SpdmDemandRelateMemberReq memberReq = new SpdmDemandRelateMemberReq(); + memberReq.setDemandId(demandUuid); + memberReq.setType(type); + memberReq.setCreateTime(curDateStr); + memberReq.setCreator(jobNumber); + memberReq.setUserIdStr(userId); + memberList.add(memberReq); + if (MemberTypeEnum.PRINCIPAL.getCode().equals(type) || MemberTypeEnum.EXECUTOR.getCode().equals(type)) { + addUserPermission(permissionReqList, demandUuid, usernameToUserIdMap.get(userId),FilePermissionEnum.BASE.getValue()); + } + } + + } + /** * 构建需求成员列表,并同步构建权限请求 */ @@ -3487,9 +3550,16 @@ public class NodeServiceImpl extends ServiceImpl memberList, - List permissionReqList, - Map usernameToUserIdMap) { - log.info("verifierNo为:{},introduceBy为:{}",verifierNo,introduceBy); - if (StringUtils.isBlank(verifierNo) && StringUtils.isBlank(introduceBy)) { - log.error("确认人和提出人都为空"); - return; - } - try { - // TODO - Long verifierUserId = 0L;; - if (StringUtils.isNotBlank(verifierNo)) { - verifierUserId = usernameToUserIdMap.get(verifierNo); - // 构建仿真负责人信息 - SpdmDemandRelateMemberReq memberReq = new SpdmDemandRelateMemberReq(); - memberReq.setDemandId(demandUuid); - memberReq.setType(memberType); - memberReq.setUserId(verifierUserId); - memberReq.setCreateTime(currentTimeStr); - memberReq.setCreator(currentUserId); - memberList.add(memberReq); - } - Long introduceByUserId = 0L; - if (StringUtils.isNotBlank(introduceBy)) { - introduceByUserId = usernameToUserIdMap.get(introduceBy); - } - - // 添加权限 - addUserPermission(permissionReqList, demandUuid, verifierUserId,introduceByUserId,FilePermissionEnum.BASE.getValue()); - - } catch (Exception e) { - log.error("添加需求成员失败,确认人:{},提出人:{}", verifierNo,introduceBy , e); - } - } +// /** +// * 添加需求成员 +// */ +// private void addDemandMember(String verifierNo,String introduceBy, int memberType, String demandUuid, +// Long currentUserId, String currentTimeStr, +// List memberList, +// List permissionReqList, +// Map usernameToUserIdMap) { +// log.info("verifierNo为:{},introduceBy为:{}",verifierNo,introduceBy); +// if (StringUtils.isBlank(verifierNo) && StringUtils.isBlank(introduceBy)) { +// log.error("确认人和提出人都为空"); +// return; +// } +// try { +// // TODO +// Long verifierUserId = 0L;; +// if (StringUtils.isNotBlank(verifierNo)) { +// verifierUserId = usernameToUserIdMap.get(verifierNo); +// // 构建仿真负责人信息 +// SpdmDemandRelateMemberReq memberReq = new SpdmDemandRelateMemberReq(); +// memberReq.setDemandId(demandUuid); +// memberReq.setType(memberType); +// memberReq.setUserId(verifierUserId); +// memberReq.setCreateTime(currentTimeStr); +// memberReq.setCreator(currentUserId); +// memberList.add(memberReq); +// } +// Long introduceByUserId = 0L; +// if (StringUtils.isNotBlank(introduceBy)) { +// introduceByUserId = usernameToUserIdMap.get(introduceBy); +// } +// +// // 添加权限 +// addUserPermission(permissionReqList, demandUuid, verifierUserId,introduceByUserId,FilePermissionEnum.BASE.getValue()); +// +// } catch (Exception e) { +// log.error("添加需求成员失败,确认人:{},提出人:{}", verifierNo,introduceBy , e); +// } +// } /** * 添加用户权限 */ private void addUserPermission(List permissionReqList, String demandUuid, - Long verifierUserId,Long introduceByUserId,byte filePermissionEnumValue) { + Long userId,byte filePermissionEnumValue) { - if (verifierUserId != 0L) { + if (userId != 0L) { UpdatePermissionReq permissionReq = new UpdatePermissionReq(); - permissionReq.setUserId(verifierUserId); + permissionReq.setUserId(userId); permissionReq.setUuid(demandUuid); Map userPermissions = new HashMap<>(); - userPermissions.put(verifierUserId, filePermissionEnumValue); + userPermissions.put(userId, filePermissionEnumValue); permissionReq.setUserPermissions(userPermissions); permissionReq.setPermission(filePermissionEnumValue); permissionReqList.add(permissionReq); } - if (introduceByUserId != 0L) { - UpdatePermissionReq introduceByPermissionReq = new UpdatePermissionReq(); - introduceByPermissionReq.setUserId(introduceByUserId); - introduceByPermissionReq.setUuid(demandUuid); - Map introduceByUserPermissions = new HashMap<>(); - introduceByUserPermissions.put(introduceByUserId, FilePermissionEnum.ALL.getValue()); - introduceByPermissionReq.setUserPermissions(introduceByUserPermissions); - introduceByPermissionReq.setPermission(FilePermissionEnum.ALL.getValue()); - permissionReqList.add(introduceByPermissionReq); - } + + +// if (introduceByUserId != 0L) { +// UpdatePermissionReq introduceByPermissionReq = new UpdatePermissionReq(); +// introduceByPermissionReq.setUserId(introduceByUserId); +// introduceByPermissionReq.setUuid(demandUuid); +// Map introduceByUserPermissions = new HashMap<>(); +// introduceByUserPermissions.put(introduceByUserId, FilePermissionEnum.ALL.getValue()); +// introduceByPermissionReq.setUserPermissions(introduceByUserPermissions); +// introduceByPermissionReq.setPermission(FilePermissionEnum.ALL.getValue()); +// permissionReqList.add(introduceByPermissionReq); +// } @@ -3614,13 +3686,17 @@ public class NodeServiceImpl extends ServiceImpl normalMemberList = new ArrayList<>(); for (SpdmDemandRelateMemberReq member : memberList) { - Long cidUserId = usernameToUserIdMap.get(String.valueOf(member.getUserId())); - if (cidUserId != null) { - member.setUserId(cidUserId); + Long cidUserId = usernameToUserIdMap.get(member.getUserIdStr()); + if (cidUserId == null) { + log.info("工号为:{}的用户未查询到用户id", member.getUserIdStr()); + continue; } + member.setUserId(cidUserId); + normalMemberList.add(member); } - demandMapper.addDemandMember(memberList); + demandMapper.addDemandMember(normalMemberList); } SimulationDemand demand = new SimulationDemand(); @@ -4127,6 +4203,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 * diff --git a/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java index 6ba01efe..6cf2a23d 100644 --- a/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java @@ -1234,6 +1234,7 @@ public class SimulationRunServiceImpl extends ServiceImpl page = new PageInfo<>(runKeyResults); return PageUtils.getJsonObjectSdmResponse(runKeyResults, page); @@ -2623,51 +2624,67 @@ public class SimulationRunServiceImpl extends ServiceImpl runPerformanceList = simulationPerformanceService.lambdaQuery() - .eq(SimulationPerformance::getRunId, req.getRunId()) - .list(); - Map resultValueMap = new HashMap<>(); - if (CollectionUtils.isNotEmpty(runPerformanceList)) { - resultValueMap = runPerformanceList.stream() - .filter(sp -> sp.getResultValue() != null) - .collect(Collectors.toMap(SimulationPerformance::getNodeCode, SimulationPerformance::getResultValue)); - } - List simulationTaskPerformances = simulationPerformanceService.lambdaQuery() - .eq(SimulationPerformance::getTaskId, simulationRun.getTaskId()) - .isNull(SimulationPerformance::getRunId) - .list(); - if (CollectionUtils.isNotEmpty(simulationTaskPerformances)) { - for (SimulationPerformance simulationTaskPerformance : simulationTaskPerformances) { - simulationTaskPerformance.setResultValue(resultValueMap.get(simulationTaskPerformance.getNodeCode())); + // 归档关键结果 + if (CollectionUtils.isNotEmpty(req.getKeyResultIdList())) { + for (String keyResultId : req.getKeyResultIdList()) { + SimulationRunKeyResult keyResult = simulationKeyResultService.lambdaQuery().eq(SimulationRunKeyResult::getUuid, keyResultId).one(); + if (keyResult == null) { + return SdmResponse.failed("关键结果不存在"); + } + if (!KeyResultTypeEnum.VALUE.getKeyResultType().equals(keyResult.getKeyResultType())) { + // 图片/曲线/报告结果同步 + CopyFileToTaskReq copyFileToTaskReq = new CopyFileToTaskReq(); + copyFileToTaskReq.setSourceFileId(keyResult.getFileId()); + + String dirName = FileBizTypeEnum.CLOUD_FILE.getDirName(); + if (KeyResultTypeEnum.CURVE.getKeyResultType().equals(keyResult.getKeyResultType())) { + dirName = FileBizTypeEnum.CURVE_FILE.getDirName(); + } else if (KeyResultTypeEnum.DOCUMENT.getKeyResultType().equals(keyResult.getKeyResultType())) { + dirName = FileBizTypeEnum.REPORT_FILE.getDirName(); + } + Long parentDirId = getParentDirId(simulationRun.getTaskId(), dirName); + copyFileToTaskReq.setParentDirId(parentDirId); + SdmResponse response = dataFeignClient.copyFileToTask(copyFileToTaskReq); + if (!response.isSuccess()) { + return SdmResponse.failed("归档关键结果文件失败"); + } + } + } + } else { + // 将算例下的指标分析值同步到任务指标 + List runPerformanceList = simulationPerformanceService.lambdaQuery() + .eq(SimulationPerformance::getRunId, req.getRunId()) + .list(); + Map resultValueMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(runPerformanceList)) { + resultValueMap = runPerformanceList.stream() + .filter(sp -> sp.getResultValue() != null) + .collect(Collectors.toMap(SimulationPerformance::getNodeCode, SimulationPerformance::getResultValue)); + } + List simulationTaskPerformances = simulationPerformanceService.lambdaQuery() + .eq(SimulationPerformance::getTaskId, simulationRun.getTaskId()) + .isNull(SimulationPerformance::getRunId) + .list(); + if (CollectionUtils.isNotEmpty(simulationTaskPerformances)) { + for (SimulationPerformance simulationTaskPerformance : simulationTaskPerformances) { + simulationTaskPerformance.setResultValue(resultValueMap.get(simulationTaskPerformance.getNodeCode())); + } + simulationPerformanceService.updateBatchById(simulationTaskPerformances); } - simulationPerformanceService.updateBatchById(simulationTaskPerformances); } } return SdmResponse.success(); 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 f4cca347..88cd8788 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 @@ -149,6 +149,9 @@ public class TaskServiceImpl implements ITaskService { @Value("${lyricFlag:1}") private int lyricFlag; + // 利元亨工号位数(五位数) + private static final int LYRIC_JOB_NUMBER_LENGTH = 5; + /** * 预处理请求参数 @@ -703,6 +706,38 @@ public class TaskServiceImpl implements ITaskService { newTaskVo.setPayAttentionMemberList(getCidUserListByUserId(memberType2UserIdMap.get(MemberTypeEnum.ATTENTION.getCode()), cidUserMap)); } + /** + * 计算Long类型数值的位数 + * @param number 要计算的Long数值 + * @return 数值的位数 + */ + public static int getDigitCount(long number) { + // 处理0的特殊情况 + if (number == 0) { + return 1; + } + + // 取绝对值,统一处理正负值 + long absNumber = Math.abs(number); + + // 计算位数 + return (int) (Math.log10(absNumber) + 1); + } + + /** + * 将Long类型的userId补零到5位数 + * @param userId 原始userId(Long类型) + * @return 补零后的字符串(不足5位前补0,超过5位原样返回) + */ + public static String formatUserId(Long userId) { + // 空值处理:防止userId为null时报错 + if (userId == null) { + return "00000"; + } + // %05d 表示:0代表补零,5代表总长度,d代表十进制整数 + return String.format("%05d", userId); + } + /** * 设置需求相关信息(需求名称/提出人/提出人名称) * @@ -714,8 +749,26 @@ public class TaskServiceImpl implements ITaskService { private void setDemandRelatedInfo(SpdmNewTaskVo newTaskVo, String demandId, Map demandMap, - Map demandSubmitMap) { + Map demandSubmitMap, + Map usernameToUserIdMap) { if (StringUtils.isBlank(demandId)) { + // 提出人:需求的创建人没有就取任务的创建人 + // 之前同步创建的需求、任务时,创建人用的工号,这里先兼容处理下 + Long creator = newTaskVo.getCreator(); + Long userId; + if (getDigitCount(creator) < LYRIC_JOB_NUMBER_LENGTH) { + // 不足五位的前面补0 + userId = usernameToUserIdMap.get(formatUserId(creator)); + }else { + userId = creator; + } + newTaskVo.setSubmitter(userId); + SdmResponse userResp = sysUserFeignClient.queryUserDetail( + UserQueryReq.builder().userId(userId).build() + ); + if (ObjectUtils.isNotEmpty(userResp) && ObjectUtils.isNotEmpty(userResp.getData())) { + newTaskVo.setSubmitterName(userResp.getData().getNickname()); + } return; } // 设置需求名称(没有就返回空字符串) @@ -725,18 +778,32 @@ public class TaskServiceImpl implements ITaskService { Long submitterId = demandSubmitMap.get(demandId); newTaskVo.setSubmitter(submitterId); // 设置提出人名称(提出人ID不为空时查询) + Long userId; if (submitterId != null) { + if (getDigitCount(submitterId) < LYRIC_JOB_NUMBER_LENGTH) { + // 不足五位的前面补0 + userId = usernameToUserIdMap.get(formatUserId(submitterId)); + }else { + userId = submitterId; + } SdmResponse userResp = sysUserFeignClient.queryUserDetail( - UserQueryReq.builder().userId(submitterId).build() + UserQueryReq.builder().userId(userId).build() ); if (ObjectUtils.isNotEmpty(userResp) && ObjectUtils.isNotEmpty(userResp.getData())) { newTaskVo.setSubmitterName(userResp.getData().getNickname()); } } else { // 提出人:需求的创建人没有就取任务的创建人 - newTaskVo.setSubmitter(newTaskVo.getCreator()); + Long creator = newTaskVo.getCreator(); + if (getDigitCount(creator) < LYRIC_JOB_NUMBER_LENGTH) { + // 不足五位的前面补0 + userId = usernameToUserIdMap.get(formatUserId(creator)); + }else { + userId = creator; + } + newTaskVo.setSubmitter(userId); SdmResponse userResp = sysUserFeignClient.queryUserDetail( - UserQueryReq.builder().userId(newTaskVo.getCreator()).build() + UserQueryReq.builder().userId(userId).build() ); if (ObjectUtils.isNotEmpty(userResp) && ObjectUtils.isNotEmpty(userResp.getData())) { newTaskVo.setSubmitterName(userResp.getData().getNickname()); @@ -748,7 +815,7 @@ public class TaskServiceImpl implements ITaskService { /** * 批量转换为返回VO */ - private List convertToNewVoBatch(List taskList, BatchAssociatedData batchData) { + private List convertToNewVoBatch(List taskList, BatchAssociatedData batchData,Map usernameToUserIdMap) { // 空值安全处理,直接返回空集合 if (CollectionUtils.isEmpty(taskList)) { return new ArrayList<>(); @@ -799,7 +866,7 @@ public class TaskServiceImpl implements ITaskService { setTaskMemberInfo(newTaskVo, taskMemberMap.get(taskId), cidUserMap); // 5. 设置需求相关信息(提出人/提出人名称) - setDemandRelatedInfo(newTaskVo, taskVo.getDemandId(), demandMap, demandSubmitMap); + setDemandRelatedInfo(newTaskVo, taskVo.getDemandId(), demandMap, demandSubmitMap,usernameToUserIdMap); // 6. 设置工位号信息 setWorkSpaceNodeCode(newTaskVo, taskVo, workSpaceNodeMap, taskNodeTag); @@ -973,7 +1040,18 @@ public class TaskServiceImpl implements ITaskService { stopWatch.stop(); // 10. 转换为返回VO stopWatch.start("转换为返回VO"); - List newTaskList = convertToNewVoBatch(pageTaskList, batchData); + // 将利元亨的用户工号与userId映射 + Map usernameToUserIdMap = new HashMap<>(); + UserListReq userListReq = new UserListReq(); + userListReq.setTenantId(tenantId); + userListReq.setCurrent(1); + userListReq.setSize(9999); + SdmResponse>> pageDataRespSdmResponse = sysUserFeignClient.listUser(userListReq); + if (pageDataRespSdmResponse.isSuccess() && pageDataRespSdmResponse.getData().getData() != null) { + List userList = pageDataRespSdmResponse.getData().getData(); + usernameToUserIdMap = userList.stream().collect(Collectors.toMap(CIDUserResp::getUsername, CIDUserResp::getUserId)); + } + List newTaskList = convertToNewVoBatch(pageTaskList, batchData,usernameToUserIdMap); stopWatch.stop(); // 输出计时结果(两种方式:格式化打印/自定义输出) System.out.println("===== 格式化打印所有任务耗时(推荐日志输出) ====="); @@ -3139,7 +3217,7 @@ public class TaskServiceImpl implements ITaskService { } CommonGetCompleteFromTaskVo commonGetCompleteFromTaskVo = new CommonGetCompleteFromTaskVo(); commonGetCompleteFromTaskVo.setNodeName(taskVo.getDiscipline()); - commonGetCompleteFromTaskVo.setExeStatus(taskVo.getExeStatus()); + commonGetCompleteFromTaskVo.setAchieveStatus(taskVo.getAchieveStatus()); commonCompleteStatisticsFromTask.add(commonGetCompleteFromTaskVo); } // 统计每个tag的各种状态任务数量 @@ -3152,9 +3230,9 @@ public class TaskServiceImpl implements ITaskService { statusCount = new HashMap<>(); stat.setStatusCount(statusCount); } - String exeStatus = item.getExeStatus(); - allAchieveStatus.add(exeStatus); - statusCount.put(exeStatus, statusCount.getOrDefault(exeStatus, 0) + 1); + String achieveStatus = item.getAchieveStatus(); + allAchieveStatus.add(achieveStatus); + statusCount.put(achieveStatus, statusCount.getOrDefault(achieveStatus, 0) + 1); taskStatisticsMap.put(name, stat); } // 转换为列表返回 diff --git a/project/src/main/resources/mapper/SimulationDemandMapper.xml b/project/src/main/resources/mapper/SimulationDemandMapper.xml index 00e3713b..5a5ffb5c 100644 --- a/project/src/main/resources/mapper/SimulationDemandMapper.xml +++ b/project/src/main/resources/mapper/SimulationDemandMapper.xml @@ -8,7 +8,7 @@ insert into simulation_demand (uuid,demand_name,demand_code,demand_type,sim_type,demand_status,achieve_status,progress,approval_status, begin_time,end_time,finish_time,project_id,phase_id,workspace_id,tenant_id,creator,create_time,demandSource,description,machine_id) values (#{req.uuid},#{req.demandName},#{req.demandCode},#{req.demandType},#{req.simType},#{req.demandStatus},#{req.achieveStatus},#{req.progress},#{req.approvalStatus}, - #{req.beginTime},#{req.endTime},'',#{req.projectId},#{req.phaseId},#{req.workspaceId},#{req.creator},#{jobNumber},#{req.createTime},#{req.demandSource},#{req.description},#{req.machineId}) + #{req.beginTime},#{req.endTime},'',#{req.projectId},#{req.phaseId},#{req.workspaceId},#{tenantId},#{req.creator},#{req.createTime},#{req.demandSource},#{req.description},#{req.machineId}) diff --git a/project/src/main/resources/mapper/SimulationNodeMapper.xml b/project/src/main/resources/mapper/SimulationNodeMapper.xml index cffc8a82..da5f8958 100644 --- a/project/src/main/resources/mapper/SimulationNodeMapper.xml +++ b/project/src/main/resources/mapper/SimulationNodeMapper.xml @@ -790,9 +790,9 @@ AND (snm.type = 1) - - - + + AND (snm.type = 0) + AND sn.tenantId = #{tenantId} @@ -867,5 +867,33 @@ ) and type = #{memberType} + + \ No newline at end of file diff --git a/system/src/main/java/com/sdm/system/service/handle/LyricMessageSender.java b/system/src/main/java/com/sdm/system/service/handle/LyricMessageSender.java index 95e5119b..1cfa7414 100644 --- a/system/src/main/java/com/sdm/system/service/handle/LyricMessageSender.java +++ b/system/src/main/java/com/sdm/system/service/handle/LyricMessageSender.java @@ -77,7 +77,7 @@ public class LyricMessageSender implements IMessageSender { freeLinkMsg.setId(sendUserId); } freeLinkMsg.setType("text"); - freeLinkMsg.setMsg(req.getContent()); + freeLinkMsg.setMsg(req.getContent() + ",请前往仿真数据管理平台查看"); freeLinkMsg.setUser("66666"); freeLinkMsg.setPawd("lyric@123"); freeLinkMsg.setFreelinkAppId("d7eb3ef7c8e8c93e7c6e978fee848646"); diff --git a/system/src/main/java/com/sdm/system/service/impl/SimulationAppCenterServiceImpl.java b/system/src/main/java/com/sdm/system/service/impl/SimulationAppCenterServiceImpl.java index 356a8db8..3b2c2f91 100644 --- a/system/src/main/java/com/sdm/system/service/impl/SimulationAppCenterServiceImpl.java +++ b/system/src/main/java/com/sdm/system/service/impl/SimulationAppCenterServiceImpl.java @@ -137,6 +137,7 @@ public class SimulationAppCenterServiceImpl extends BaseService implements ISimu { userIds.add(appBean.creator); } + req.setUserIds(userIds); SdmResponse> userResp = sysUserFeignClient.listUserByIds(req); if(userResp.isSuccess()) { diff --git a/task/src/main/java/com/sdm/task/service/impl/SimulationPerformanceServiceImpl.java b/task/src/main/java/com/sdm/task/service/impl/SimulationPerformanceServiceImpl.java index cbc3d080..4d2f3f21 100644 --- a/task/src/main/java/com/sdm/task/service/impl/SimulationPerformanceServiceImpl.java +++ b/task/src/main/java/com/sdm/task/service/impl/SimulationPerformanceServiceImpl.java @@ -104,6 +104,11 @@ public class SimulationPerformanceServiceImpl extends ServiceImpl throw new IllegalArgumentException("无效运算符: " + method); }; simulationPerformance.setCompleteStatus(isPassed ? PerformanceStatusEnum.STARTED.getCode() : PerformanceStatusEnum.NOT_STARTED.getCode()); + return SdmResponse.success(); } catch (Exception e) { log.error("数字格式异常:", e); return SdmResponse.failed("请输入有效的目标值和分析值"); } } - return SdmResponse.success(this.updateById(simulationPerformance)); + return SdmResponse.failed("请输入有效的目标值和分析值"); } private boolean validateNumber(String input) {