From 714d23319ab3a5b703415264c097dc31b92bc339 Mon Sep 17 00:00:00 2001 From: zhuxinru Date: Tue, 7 Apr 2026 13:49:15 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:bosim=E6=A0=87=E5=87=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E9=80=82=E9=85=8DV1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../YA/Service/IBosimKeyResultService.java | 8 + .../YA/Service/IBosimModelService.java | 8 + .../YA/Service/IBosimReportService.java | 8 + .../YA/Service/IBosimWorkTaskService.java | 8 + .../Impl/IBosimKeyResultServiceImpl.java | 11 ++ .../Service/Impl/IBosimModelServiceImpl.java | 11 ++ .../Service/Impl/IBosimReportServiceImpl.java | 11 ++ .../Impl/IBosimWorkTaskServiceImpl.java | 11 ++ .../controller/YAModelController.java | 178 +++++++++++++++--- .../mapper}/BosimKeyResultMap.java | 4 +- .../mapper}/BosimModuleMap.java | 4 +- .../mapper}/BosimReportMap.java | 4 +- .../mapper}/BosimWorkTaskMap.java | 5 +- .../YA => YA/model}/SimulationKeyResult.java | 4 +- .../YA => YA/model}/SimulationModel.java | 12 +- .../YA => YA/model}/SimulationReport.java | 4 +- .../YA => YA/model}/SimulationWorkTask.java | 21 ++- .../YA => YA/req}/DeleteModelNodeInfoReq.java | 2 +- .../YA => YA/req}/GetModelNodeInfoReq.java | 2 +- .../req}/GetTaskSimulatinFileReq.java | 2 +- .../req/YA => YA/req}/ProjectTaskInfo.java | 2 +- .../req}/SaveKeyResultNodeInfoReq.java | 2 +- .../YA => YA/req}/SaveModelNodeInfoReq.java | 14 +- .../YA => YA/req}/SaveReportNodeInfoReq.java | 4 +- .../YA => YA/req}/SaveTaskNodeInfoReq.java | 6 +- .../req/YA => YA/req}/SyncCidProjectReq.java | 2 +- .../req/YA => YA/req}/SyncCidTaskReq.java | 2 +- .../YA => YA/resp}/BosimErrorRespond.java | 2 +- .../YA => YA/resp}/BosimKeyResultInfoRsp.java | 3 +- .../sdm/project/YA/resp/BosimResponse.java | 41 ++++ .../YA => YA/resp}/BosimSaveNodeInfoRsp.java | 2 +- .../resp}/BosimSaveProjectTaskRsp.java | 5 +- .../sdm/project/YA/resp/KeyResultData.java | 9 + .../YA => YA/resp}/KeyResultNodeInfo.java | 4 +- .../com/sdm/project/YA/resp/ModelData.java | 9 + .../com/sdm/project/YA/resp/ReportData.java | 9 + .../sdm/project/YA/resp/WorkRequestData.java | 9 + .../config/mybatis/MybatisPlusConfig.java | 2 +- .../com/sdm/project/service/INodeService.java | 4 +- .../com/sdm/project/service/ITaskService.java | 6 +- .../project/service/impl/NodeServiceImpl.java | 6 +- .../project/service/impl/TaskServiceImpl.java | 12 +- 42 files changed, 374 insertions(+), 99 deletions(-) create mode 100644 project/src/main/java/com/sdm/project/YA/Service/IBosimKeyResultService.java create mode 100644 project/src/main/java/com/sdm/project/YA/Service/IBosimModelService.java create mode 100644 project/src/main/java/com/sdm/project/YA/Service/IBosimReportService.java create mode 100644 project/src/main/java/com/sdm/project/YA/Service/IBosimWorkTaskService.java create mode 100644 project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimKeyResultServiceImpl.java create mode 100644 project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimModelServiceImpl.java create mode 100644 project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimReportServiceImpl.java create mode 100644 project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimWorkTaskServiceImpl.java rename project/src/main/java/com/sdm/project/{ => YA}/controller/YAModelController.java (74%) rename project/src/main/java/com/sdm/project/{dao/YAMapper => YA/mapper}/BosimKeyResultMap.java (58%) rename project/src/main/java/com/sdm/project/{dao/YAMapper => YA/mapper}/BosimModuleMap.java (66%) rename project/src/main/java/com/sdm/project/{dao/YAMapper => YA/mapper}/BosimReportMap.java (57%) rename project/src/main/java/com/sdm/project/{dao/YAMapper => YA/mapper}/BosimWorkTaskMap.java (63%) rename project/src/main/java/com/sdm/project/{model/entity/YA => YA/model}/SimulationKeyResult.java (97%) rename project/src/main/java/com/sdm/project/{model/entity/YA => YA/model}/SimulationModel.java (92%) rename project/src/main/java/com/sdm/project/{model/entity/YA => YA/model}/SimulationReport.java (95%) rename project/src/main/java/com/sdm/project/{model/entity/YA => YA/model}/SimulationWorkTask.java (85%) rename project/src/main/java/com/sdm/project/{model/req/YA => YA/req}/DeleteModelNodeInfoReq.java (91%) rename project/src/main/java/com/sdm/project/{model/req/YA => YA/req}/GetModelNodeInfoReq.java (89%) rename project/src/main/java/com/sdm/project/{model/req/YA => YA/req}/GetTaskSimulatinFileReq.java (93%) rename project/src/main/java/com/sdm/project/{model/req/YA => YA/req}/ProjectTaskInfo.java (86%) rename project/src/main/java/com/sdm/project/{model/req/YA => YA/req}/SaveKeyResultNodeInfoReq.java (97%) rename project/src/main/java/com/sdm/project/{model/req/YA => YA/req}/SaveModelNodeInfoReq.java (79%) rename project/src/main/java/com/sdm/project/{model/req/YA => YA/req}/SaveReportNodeInfoReq.java (92%) rename project/src/main/java/com/sdm/project/{model/req/YA => YA/req}/SaveTaskNodeInfoReq.java (90%) rename project/src/main/java/com/sdm/project/{model/req/YA => YA/req}/SyncCidProjectReq.java (90%) rename project/src/main/java/com/sdm/project/{model/req/YA => YA/req}/SyncCidTaskReq.java (93%) rename project/src/main/java/com/sdm/project/{model/resp/YA => YA/resp}/BosimErrorRespond.java (85%) rename project/src/main/java/com/sdm/project/{model/resp/YA => YA/resp}/BosimKeyResultInfoRsp.java (85%) create mode 100644 project/src/main/java/com/sdm/project/YA/resp/BosimResponse.java rename project/src/main/java/com/sdm/project/{model/resp/YA => YA/resp}/BosimSaveNodeInfoRsp.java (90%) rename project/src/main/java/com/sdm/project/{model/resp/YA => YA/resp}/BosimSaveProjectTaskRsp.java (74%) create mode 100644 project/src/main/java/com/sdm/project/YA/resp/KeyResultData.java rename project/src/main/java/com/sdm/project/{model/resp/YA => YA/resp}/KeyResultNodeInfo.java (91%) create mode 100644 project/src/main/java/com/sdm/project/YA/resp/ModelData.java create mode 100644 project/src/main/java/com/sdm/project/YA/resp/ReportData.java create mode 100644 project/src/main/java/com/sdm/project/YA/resp/WorkRequestData.java diff --git a/project/src/main/java/com/sdm/project/YA/Service/IBosimKeyResultService.java b/project/src/main/java/com/sdm/project/YA/Service/IBosimKeyResultService.java new file mode 100644 index 00000000..be3abd54 --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/Service/IBosimKeyResultService.java @@ -0,0 +1,8 @@ +package com.sdm.project.YA.Service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.sdm.project.YA.model.SimulationKeyResult; + +public interface IBosimKeyResultService extends IService { + +} diff --git a/project/src/main/java/com/sdm/project/YA/Service/IBosimModelService.java b/project/src/main/java/com/sdm/project/YA/Service/IBosimModelService.java new file mode 100644 index 00000000..b601c085 --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/Service/IBosimModelService.java @@ -0,0 +1,8 @@ +package com.sdm.project.YA.Service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.sdm.project.YA.model.SimulationModel; + +public interface IBosimModelService extends IService { + +} diff --git a/project/src/main/java/com/sdm/project/YA/Service/IBosimReportService.java b/project/src/main/java/com/sdm/project/YA/Service/IBosimReportService.java new file mode 100644 index 00000000..4f270a46 --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/Service/IBosimReportService.java @@ -0,0 +1,8 @@ +package com.sdm.project.YA.Service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.sdm.project.YA.model.SimulationReport; + +public interface IBosimReportService extends IService { + +} diff --git a/project/src/main/java/com/sdm/project/YA/Service/IBosimWorkTaskService.java b/project/src/main/java/com/sdm/project/YA/Service/IBosimWorkTaskService.java new file mode 100644 index 00000000..c520ad76 --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/Service/IBosimWorkTaskService.java @@ -0,0 +1,8 @@ +package com.sdm.project.YA.Service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.sdm.project.YA.model.SimulationWorkTask; + +public interface IBosimWorkTaskService extends IService { + +} diff --git a/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimKeyResultServiceImpl.java b/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimKeyResultServiceImpl.java new file mode 100644 index 00000000..d0649a3e --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimKeyResultServiceImpl.java @@ -0,0 +1,11 @@ +package com.sdm.project.YA.Service.Impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sdm.project.YA.Service.IBosimKeyResultService; +import com.sdm.project.YA.mapper.BosimKeyResultMap; +import com.sdm.project.YA.model.SimulationKeyResult; +import org.springframework.stereotype.Service; + +@Service +public class IBosimKeyResultServiceImpl extends ServiceImpl implements IBosimKeyResultService { +} diff --git a/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimModelServiceImpl.java b/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimModelServiceImpl.java new file mode 100644 index 00000000..b10500cf --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimModelServiceImpl.java @@ -0,0 +1,11 @@ +package com.sdm.project.YA.Service.Impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sdm.project.YA.Service.IBosimModelService; +import com.sdm.project.YA.mapper.BosimModuleMap; +import com.sdm.project.YA.model.SimulationModel; +import org.springframework.stereotype.Service; + +@Service +public class IBosimModelServiceImpl extends ServiceImpl implements IBosimModelService { +} diff --git a/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimReportServiceImpl.java b/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimReportServiceImpl.java new file mode 100644 index 00000000..bdca713e --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimReportServiceImpl.java @@ -0,0 +1,11 @@ +package com.sdm.project.YA.Service.Impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sdm.project.YA.Service.IBosimReportService; +import com.sdm.project.YA.mapper.BosimReportMap; +import com.sdm.project.YA.model.SimulationReport; +import org.springframework.stereotype.Service; + +@Service +public class IBosimReportServiceImpl extends ServiceImpl implements IBosimReportService { +} diff --git a/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimWorkTaskServiceImpl.java b/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimWorkTaskServiceImpl.java new file mode 100644 index 00000000..aca6d213 --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/Service/Impl/IBosimWorkTaskServiceImpl.java @@ -0,0 +1,11 @@ +package com.sdm.project.YA.Service.Impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sdm.project.YA.Service.IBosimWorkTaskService; +import com.sdm.project.YA.mapper.BosimWorkTaskMap; +import com.sdm.project.YA.model.SimulationWorkTask; +import org.springframework.stereotype.Service; + +@Service +public class IBosimWorkTaskServiceImpl extends ServiceImpl implements IBosimWorkTaskService { +} diff --git a/project/src/main/java/com/sdm/project/controller/YAModelController.java b/project/src/main/java/com/sdm/project/YA/controller/YAModelController.java similarity index 74% rename from project/src/main/java/com/sdm/project/controller/YAModelController.java rename to project/src/main/java/com/sdm/project/YA/controller/YAModelController.java index 640cd0cd..619862af 100644 --- a/project/src/main/java/com/sdm/project/controller/YAModelController.java +++ b/project/src/main/java/com/sdm/project/YA/controller/YAModelController.java @@ -1,5 +1,6 @@ -package com.sdm.project.controller; +package com.sdm.project.YA.controller; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.auth0.jwt.JWT; @@ -8,11 +9,13 @@ import com.auth0.jwt.interfaces.DecodedJWT; import com.github.pagehelper.PageInfo; import com.sdm.common.common.SdmResponse; import com.sdm.common.common.ThreadLocalContext; +import com.sdm.common.entity.enums.FileBizTypeEnum; +import com.sdm.common.entity.enums.FileDictTagEnum; import com.sdm.common.entity.enums.NodeTypeEnum; import com.sdm.common.entity.req.data.GetSimulationTaskFileReq; +import com.sdm.common.entity.req.data.TagReq; import com.sdm.common.entity.req.data.UploadFilesReq; -import com.sdm.common.entity.req.system.DictTagReq; import com.sdm.common.entity.req.system.UserQueryReq; import com.sdm.common.entity.resp.PageDataResp; import com.sdm.common.entity.resp.data.FileMetadataInfoResp; @@ -20,17 +23,21 @@ import com.sdm.common.entity.resp.system.CIDUserResp; import com.sdm.common.feign.impl.data.DataAnalysisFeignClientImpl; import com.sdm.common.feign.inter.data.IDataFeignClient; +import com.sdm.common.utils.DateUtils; import com.sdm.common.utils.HttpUtil; import com.sdm.common.utils.SystemOperate; +import com.sdm.project.YA.Service.IBosimKeyResultService; +import com.sdm.project.YA.Service.IBosimModelService; +import com.sdm.project.YA.Service.IBosimReportService; +import com.sdm.project.YA.Service.IBosimWorkTaskService; +import com.sdm.project.YA.model.SimulationModel; +import com.sdm.project.YA.req.*; +import com.sdm.project.YA.resp.*; import com.sdm.project.common.KeyResultTypeEnum; -import com.sdm.project.dao.YAMapper.BosimModuleMap; +import com.sdm.project.YA.mapper.BosimModuleMap; import com.sdm.project.model.entity.SimulationRunKeyResult; +import com.sdm.project.YA.model.SimulationWorkTask; import com.sdm.project.model.req.KeyResultReq; -import com.sdm.project.model.req.YA.*; -import com.sdm.project.model.resp.YA.BosimKeyResultInfoRsp; -import com.sdm.project.model.resp.YA.BosimSaveNodeInfoRsp; -import com.sdm.project.model.resp.YA.BosimSaveProjectTaskRsp; -import com.sdm.project.model.resp.YA.KeyResultNodeInfo; import com.sdm.project.service.INodeService; import com.sdm.project.service.ITaskService; import com.sdm.project.service.ISimulationRunService; @@ -41,6 +48,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +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.http.MediaType; @@ -50,9 +59,11 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.security.PrivateKey; import java.security.interfaces.RSAPrivateKey; -import java.security.interfaces.RSAPublicKey; +import java.text.SimpleDateFormat; import java.util.*; +import static com.sdm.common.service.BaseService.generateUuid; + @Slf4j @RestController @RequestMapping("/dataManager/tree/node") @@ -73,6 +84,18 @@ public class YAModelController { @Resource ISimulationRunService runService; + @Autowired + IBosimWorkTaskService bosimWorkTaskService; + + @Autowired + IBosimModelService bosimModelService; + + @Autowired + IBosimKeyResultService bosimKeyResultService; + + @Autowired + IBosimReportService bosimReportService; + @Value("${YA.frontend.frontendPrivateKey}") private String frontendPrivateKey; @@ -90,6 +113,7 @@ public class YAModelController { @Autowired BosimModuleMap moduleMap; + /** * 保存仿真模型数据 * @@ -109,7 +133,7 @@ public class YAModelController { ) ) ) - public BosimSaveNodeInfoRsp saveModelNodeInfo(@RequestHeader("Authorization") String authorization,SaveModelNodeInfoReq req) + public BosimSaveNodeInfoRsp SaveModelNodeInfo(@RequestHeader("Authorization") String authorization,SaveModelNodeInfoReq req) { if(!verifyBackEndJwt(authorization)) { BosimSaveNodeInfoRsp rsp = new BosimSaveNodeInfoRsp(); @@ -236,7 +260,7 @@ public class YAModelController { ) ) ) - public BosimSaveNodeInfoRsp saveKeyResultNodeInfo(@RequestHeader("Authorization") String authorization,SaveKeyResultNodeInfoReq req) + public BosimSaveNodeInfoRsp saveKeyResultNodeInfo(@RequestHeader("Authorization") String authorization, SaveKeyResultNodeInfoReq req) { if(!verifyBackEndJwt(authorization)) { BosimSaveNodeInfoRsp rsp = new BosimSaveNodeInfoRsp(); @@ -277,7 +301,7 @@ public class YAModelController { * @return */ @PostMapping(value = "/listKeyResultNodeInfo") - public BosimKeyResultInfoRsp listKeyResultNodeInfo(@RequestHeader("Authorization") String authorization,@RequestBody SaveKeyResultNodeInfoReq req) { + public BosimKeyResultInfoRsp listKeyResultNodeInfo(@RequestHeader("Authorization") String authorization, @RequestBody SaveKeyResultNodeInfoReq req) { if(!verifyBackEndJwt(authorization)) { BosimKeyResultInfoRsp rsp = new BosimKeyResultInfoRsp(); rsp.setCode("-200"); @@ -323,7 +347,7 @@ public class YAModelController { } @PostMapping("") - public BosimSaveNodeInfoRsp deleteModelNodeInfo(@RequestHeader("Authorization") String authorization,DeleteModelNodeInfoReq req) + public BosimSaveNodeInfoRsp deleteModelNodeInfo(@RequestHeader("Authorization") String authorization, DeleteModelNodeInfoReq req) { return null; } @@ -411,12 +435,6 @@ public class YAModelController { } - @PostMapping("saveTaskNodeInfo") - public BosimSaveProjectTaskRsp saveTaskNodeInfo(@RequestBody @Validated SaveTaskNodeInfoReq req) - { - return null; - } - @PostMapping("syncCidProject") public BosimSaveProjectTaskRsp syncCidProject(@RequestHeader("Authorization") String authorization,@RequestBody @Validated SyncCidProjectReq req) { @@ -431,7 +449,7 @@ public class YAModelController { } @PostMapping("syncCidTask") - public BosimSaveProjectTaskRsp syncCidTask(@RequestHeader("Authorization") String authorization,@RequestBody @Validated SyncCidTaskReq req) + public BosimSaveProjectTaskRsp syncCidTask(@RequestHeader("Authorization") String authorization, @RequestBody @Validated SyncCidTaskReq req) { BosimSaveProjectTaskRsp rsp = new BosimSaveProjectTaskRsp(); if(!verifyBackEndJwt(authorization)) { @@ -444,12 +462,110 @@ public class YAModelController { } - @PostMapping("SaveTaskNodeInfo") - public void saveTaskNodeInfo(@RequestHeader("Authorization") String authorization,@RequestBody SaveTaskNodeInfoReq req) + @PostMapping("saveTaskNodeInfo") + public BosimResponse saveTaskNodeInfo(@RequestHeader("Authorization") String authorization,@RequestBody SaveTaskNodeInfoReq req) { + SimulationWorkTask simulationWorkTask = new SimulationWorkTask(); + simulationWorkTask.setID(generateUuid()); + simulationWorkTask.setNumber(req.getScenario()); + simulationWorkTask.setName(req.getName()); + simulationWorkTask.setProject(req.getProject()); + simulationWorkTask.setScenario(req.getScenario()); + simulationWorkTask.setDescription(req.getDescription()); + if (StringUtils.isNotBlank(req.getStartEndDate())) { + simulationWorkTask.setStartAt(DateUtils.parse(req.getStartEndDate().split(",")[0], DateUtils.PATTERN_DATE)); + simulationWorkTask.setEndAt(DateUtils.parse(req.getStartEndDate().split(",")[1], DateUtils.PATTERN_DATE)); + } + simulationWorkTask.setEdition(generateSimpleUuid()); + simulationWorkTask.setLevelType("Edit"); + simulationWorkTask.setStatusType("Start"); + simulationWorkTask.setVersion(simulationWorkTask.getNumber()); + simulationWorkTask.setOwner(req.getFirstOwner()); + simulationWorkTask.setCreator(req.getFirstOwner()); + simulationWorkTask.setModifier(req.getFirstOwner()); + simulationWorkTask.setCreateTime(new Date()); + simulationWorkTask.setLastUpdateTime(new Date()); + + bosimWorkTaskService.save(simulationWorkTask); + + // taskId + WorkRequestData data = new WorkRequestData(); + data.setWorkRequest(List.of(simulationWorkTask.getNumber())); + return BosimResponse.success(data); } + @PostMapping(value = "/saveModelNodeInfo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @Operation( + summary = "上传模型", + description = "仿真模型归档,支持同时上传文件和附加参数", + requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody( + description = "模型文件上传请求", + required = true, + content = @Content( + mediaType = MediaType.MULTIPART_FORM_DATA_VALUE, + schema = @Schema(implementation = SaveModelNodeInfoReq.class) + ) + ) + ) + public BosimResponse saveModelNodeInfo(@RequestHeader("Authorization") String authorization, SaveModelNodeInfoReq req) + { + adaptContext(); + UploadFilesReq fileReq = new UploadFilesReq(); + fileReq.setFileName(req.getFileName()); + fileReq.setProjectId(req.getProject()); + fileReq.setFile(req.getFile()); + fileReq.setUuid(req.getWorkTask()); + fileReq.setIsConverSameNameFile(true); + + fileReq.setFileTypeDictValue(String.valueOf(FileBizTypeEnum.MODEL_FILE.getValue())); + fileReq.setFileTypeDictClass(FileDictTagEnum.FILE_TYPE.getDictClass()); + fileReq.setDictTags(Arrays.asList(FileDictTagEnum.FILE_TYPE.getDictClassFieldName(), FileDictTagEnum.FILE_TYPE.getDictValueFieldName())); + + TagReq tagReq = new TagReq(); + tagReq.setTag1(req.getProject()); + tagReq.setTaskId(req.getWorkTask()); + fileReq.setTagReq(tagReq); + + if (fileReq.getTagReq() != null) { + fileReq.setTagReqStr(JSON.toJSONString(fileReq.getTagReq())); + } + SdmResponse uploadRespond = dataFeignClient.uploadFiles(fileReq); + if (!uploadRespond.isSuccess()) { + return BosimResponse.failed(uploadRespond.getMessage()); + } + + SimulationModel simulationModel = new SimulationModel(); + simulationModel.setID(generateUuid()); + simulationModel.setNumber(generateSimpleUuid()); + simulationModel.setName(req.getName()); + simulationModel.setProject(req.getProject()); + simulationModel.setScenario(req.getWorkTask()); + simulationModel.setWorkTask(req.getWorkTask()); + simulationModel.setDescription(req.getDescription()); + simulationModel.setFormatType(req.getFormatType()); + simulationModel.setFile(String.valueOf(uploadRespond.getData())); + + simulationModel.setEdition(generateSimpleUuid()); + simulationModel.setModelDefinition(generateSimpleUuid()); + simulationModel.setAnalysisType("CaseScenario"); + simulationModel.setLevelType("Edit"); + simulationModel.setStatusType("Start"); + simulationModel.setVersion(simulationModel.getNumber()); + simulationModel.setOwner(req.getFirstOwner()); + simulationModel.setCreator(req.getFirstOwner()); + simulationModel.setModifier(req.getFirstOwner()); + simulationModel.setCreateTime(new Date()); + simulationModel.setLastUpdateTime(new Date()); + bosimModelService.save(simulationModel); + + ModelData data = new ModelData(); + data.setModel(List.of(simulationModel.getNumber())); + return BosimResponse.success(data); + } + + + /** * 与CID集成前端token验证 * @param tokenObj @@ -570,4 +686,22 @@ public class YAModelController { return true; } + public static String generateSimpleUuid() { + // 1. 时间部分:yyyyMMddHHmmss + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String time = sdf.format(new Date()); + + // 2. 6位随机字母数字 + String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + Random random = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 6; i++) { + int index = random.nextInt(chars.length()); + sb.append(chars.charAt(index)); + } + + // 3. 拼接最终结果 + return "SDM-" + time + sb; + } + } \ No newline at end of file diff --git a/project/src/main/java/com/sdm/project/dao/YAMapper/BosimKeyResultMap.java b/project/src/main/java/com/sdm/project/YA/mapper/BosimKeyResultMap.java similarity index 58% rename from project/src/main/java/com/sdm/project/dao/YAMapper/BosimKeyResultMap.java rename to project/src/main/java/com/sdm/project/YA/mapper/BosimKeyResultMap.java index ce931c18..30b70764 100644 --- a/project/src/main/java/com/sdm/project/dao/YAMapper/BosimKeyResultMap.java +++ b/project/src/main/java/com/sdm/project/YA/mapper/BosimKeyResultMap.java @@ -1,7 +1,7 @@ -package com.sdm.project.dao.YAMapper; +package com.sdm.project.YA.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.sdm.project.model.entity.YA.SimulationKeyResult; +import com.sdm.project.YA.model.SimulationKeyResult; public interface BosimKeyResultMap extends BaseMapper { } diff --git a/project/src/main/java/com/sdm/project/dao/YAMapper/BosimModuleMap.java b/project/src/main/java/com/sdm/project/YA/mapper/BosimModuleMap.java similarity index 66% rename from project/src/main/java/com/sdm/project/dao/YAMapper/BosimModuleMap.java rename to project/src/main/java/com/sdm/project/YA/mapper/BosimModuleMap.java index 0f76fbeb..49a46003 100644 --- a/project/src/main/java/com/sdm/project/dao/YAMapper/BosimModuleMap.java +++ b/project/src/main/java/com/sdm/project/YA/mapper/BosimModuleMap.java @@ -1,7 +1,7 @@ -package com.sdm.project.dao.YAMapper; +package com.sdm.project.YA.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.sdm.project.model.entity.YA.SimulationModel; +import com.sdm.project.YA.model.SimulationModel; import org.apache.ibatis.annotations.Mapper; diff --git a/project/src/main/java/com/sdm/project/dao/YAMapper/BosimReportMap.java b/project/src/main/java/com/sdm/project/YA/mapper/BosimReportMap.java similarity index 57% rename from project/src/main/java/com/sdm/project/dao/YAMapper/BosimReportMap.java rename to project/src/main/java/com/sdm/project/YA/mapper/BosimReportMap.java index 63dfbdfa..01046779 100644 --- a/project/src/main/java/com/sdm/project/dao/YAMapper/BosimReportMap.java +++ b/project/src/main/java/com/sdm/project/YA/mapper/BosimReportMap.java @@ -1,7 +1,7 @@ -package com.sdm.project.dao.YAMapper; +package com.sdm.project.YA.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.sdm.project.model.entity.YA.SimulationReport; +import com.sdm.project.YA.model.SimulationReport; public interface BosimReportMap extends BaseMapper { } diff --git a/project/src/main/java/com/sdm/project/dao/YAMapper/BosimWorkTaskMap.java b/project/src/main/java/com/sdm/project/YA/mapper/BosimWorkTaskMap.java similarity index 63% rename from project/src/main/java/com/sdm/project/dao/YAMapper/BosimWorkTaskMap.java rename to project/src/main/java/com/sdm/project/YA/mapper/BosimWorkTaskMap.java index a301f5c4..16402206 100644 --- a/project/src/main/java/com/sdm/project/dao/YAMapper/BosimWorkTaskMap.java +++ b/project/src/main/java/com/sdm/project/YA/mapper/BosimWorkTaskMap.java @@ -1,9 +1,8 @@ -package com.sdm.project.dao.YAMapper; +package com.sdm.project.YA.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.sdm.project.model.entity.YA.SimulationWorkTask; +import com.sdm.project.YA.model.SimulationWorkTask; import org.apache.ibatis.annotations.Mapper; -@Mapper public interface BosimWorkTaskMap extends BaseMapper { } diff --git a/project/src/main/java/com/sdm/project/model/entity/YA/SimulationKeyResult.java b/project/src/main/java/com/sdm/project/YA/model/SimulationKeyResult.java similarity index 97% rename from project/src/main/java/com/sdm/project/model/entity/YA/SimulationKeyResult.java rename to project/src/main/java/com/sdm/project/YA/model/SimulationKeyResult.java index 5f087d54..5067d400 100644 --- a/project/src/main/java/com/sdm/project/model/entity/YA/SimulationKeyResult.java +++ b/project/src/main/java/com/sdm/project/YA/model/SimulationKeyResult.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.entity.YA; +package com.sdm.project.YA.model; import com.baomidou.mybatisplus.annotation.TableField; @@ -7,7 +7,7 @@ import lombok.Data; import java.io.Serializable; import java.util.Date; -@TableName("SimulationKeyResult") +@TableName("SimulationKeyResultYA") @Data public class SimulationKeyResult implements Serializable { diff --git a/project/src/main/java/com/sdm/project/model/entity/YA/SimulationModel.java b/project/src/main/java/com/sdm/project/YA/model/SimulationModel.java similarity index 92% rename from project/src/main/java/com/sdm/project/model/entity/YA/SimulationModel.java rename to project/src/main/java/com/sdm/project/YA/model/SimulationModel.java index a00dbf37..02f2c242 100644 --- a/project/src/main/java/com/sdm/project/model/entity/YA/SimulationModel.java +++ b/project/src/main/java/com/sdm/project/YA/model/SimulationModel.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.entity.YA; +package com.sdm.project.YA.model; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; @@ -7,7 +7,7 @@ import lombok.Data; import java.io.Serializable; import java.util.Date; -@TableName("SimulationModel") +@TableName("SimulationModelYA") @Data public class SimulationModel implements Serializable { @@ -89,25 +89,25 @@ public class SimulationModel implements Serializable { * 分析类型 */ @TableField("AnalysisType") - private Byte AnalysisType; + private String AnalysisType; /** * 格式类型 */ @TableField("FormatType") - private Byte FormatType; + private String FormatType; /** * 安全等级 */ @TableField("LevelType") - private Byte LevelType; + private String LevelType; /** * 可用状态 */ @TableField("StatusType") - private Byte StatusType; + private String StatusType; /** * 修订版本 diff --git a/project/src/main/java/com/sdm/project/model/entity/YA/SimulationReport.java b/project/src/main/java/com/sdm/project/YA/model/SimulationReport.java similarity index 95% rename from project/src/main/java/com/sdm/project/model/entity/YA/SimulationReport.java rename to project/src/main/java/com/sdm/project/YA/model/SimulationReport.java index c008604f..b5711a6b 100644 --- a/project/src/main/java/com/sdm/project/model/entity/YA/SimulationReport.java +++ b/project/src/main/java/com/sdm/project/YA/model/SimulationReport.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.entity.YA; +package com.sdm.project.YA.model; import com.baomidou.mybatisplus.annotation.TableField; @@ -7,7 +7,7 @@ import lombok.Data; import java.io.Serializable; import java.util.Date; -@TableName("SimulationReport") +@TableName("SimulationReportYA") @Data public class SimulationReport implements Serializable { diff --git a/project/src/main/java/com/sdm/project/model/entity/YA/SimulationWorkTask.java b/project/src/main/java/com/sdm/project/YA/model/SimulationWorkTask.java similarity index 85% rename from project/src/main/java/com/sdm/project/model/entity/YA/SimulationWorkTask.java rename to project/src/main/java/com/sdm/project/YA/model/SimulationWorkTask.java index b6bac98d..6d7882be 100644 --- a/project/src/main/java/com/sdm/project/model/entity/YA/SimulationWorkTask.java +++ b/project/src/main/java/com/sdm/project/YA/model/SimulationWorkTask.java @@ -1,13 +1,20 @@ -package com.sdm.project.model.entity.YA; +package com.sdm.project.YA.model; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; -@TableName("SimulationWorkTask") + @Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("SimulationWorkTaskYA") +@Schema(description="仿真活动任务表") public class SimulationWorkTask implements Serializable { private static final long serialVersionUID = 1L; @@ -54,12 +61,6 @@ public class SimulationWorkTask implements Serializable { @TableField("Parent") private String Parent; - /** - * 关联仿真流程实例 - */ - @TableField("WorkProcess") - private String WorkProcess; - /** * 关联分析项 */ @@ -94,13 +95,13 @@ public class SimulationWorkTask implements Serializable { * 数据访问控制级别 */ @TableField("LevelType") - private Byte LevelType; + private String LevelType; /** * 可用状态 */ @TableField("StatusType") - private Byte StatusType; + private String StatusType; /** * 修订版本 diff --git a/project/src/main/java/com/sdm/project/model/req/YA/DeleteModelNodeInfoReq.java b/project/src/main/java/com/sdm/project/YA/req/DeleteModelNodeInfoReq.java similarity index 91% rename from project/src/main/java/com/sdm/project/model/req/YA/DeleteModelNodeInfoReq.java rename to project/src/main/java/com/sdm/project/YA/req/DeleteModelNodeInfoReq.java index 5045a67e..b22a9f95 100644 --- a/project/src/main/java/com/sdm/project/model/req/YA/DeleteModelNodeInfoReq.java +++ b/project/src/main/java/com/sdm/project/YA/req/DeleteModelNodeInfoReq.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.req.YA; +package com.sdm.project.YA.req; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/project/src/main/java/com/sdm/project/model/req/YA/GetModelNodeInfoReq.java b/project/src/main/java/com/sdm/project/YA/req/GetModelNodeInfoReq.java similarity index 89% rename from project/src/main/java/com/sdm/project/model/req/YA/GetModelNodeInfoReq.java rename to project/src/main/java/com/sdm/project/YA/req/GetModelNodeInfoReq.java index dea327c8..e0599bfc 100644 --- a/project/src/main/java/com/sdm/project/model/req/YA/GetModelNodeInfoReq.java +++ b/project/src/main/java/com/sdm/project/YA/req/GetModelNodeInfoReq.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.req.YA; +package com.sdm.project.YA.req; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/project/src/main/java/com/sdm/project/model/req/YA/GetTaskSimulatinFileReq.java b/project/src/main/java/com/sdm/project/YA/req/GetTaskSimulatinFileReq.java similarity index 93% rename from project/src/main/java/com/sdm/project/model/req/YA/GetTaskSimulatinFileReq.java rename to project/src/main/java/com/sdm/project/YA/req/GetTaskSimulatinFileReq.java index 36a6a131..91dd9601 100644 --- a/project/src/main/java/com/sdm/project/model/req/YA/GetTaskSimulatinFileReq.java +++ b/project/src/main/java/com/sdm/project/YA/req/GetTaskSimulatinFileReq.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.req.YA; +package com.sdm.project.YA.req; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/project/src/main/java/com/sdm/project/model/req/YA/ProjectTaskInfo.java b/project/src/main/java/com/sdm/project/YA/req/ProjectTaskInfo.java similarity index 86% rename from project/src/main/java/com/sdm/project/model/req/YA/ProjectTaskInfo.java rename to project/src/main/java/com/sdm/project/YA/req/ProjectTaskInfo.java index 92792b28..ff406ac0 100644 --- a/project/src/main/java/com/sdm/project/model/req/YA/ProjectTaskInfo.java +++ b/project/src/main/java/com/sdm/project/YA/req/ProjectTaskInfo.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.req.YA; +package com.sdm.project.YA.req; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/project/src/main/java/com/sdm/project/model/req/YA/SaveKeyResultNodeInfoReq.java b/project/src/main/java/com/sdm/project/YA/req/SaveKeyResultNodeInfoReq.java similarity index 97% rename from project/src/main/java/com/sdm/project/model/req/YA/SaveKeyResultNodeInfoReq.java rename to project/src/main/java/com/sdm/project/YA/req/SaveKeyResultNodeInfoReq.java index 163e6626..5b8e5b54 100644 --- a/project/src/main/java/com/sdm/project/model/req/YA/SaveKeyResultNodeInfoReq.java +++ b/project/src/main/java/com/sdm/project/YA/req/SaveKeyResultNodeInfoReq.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.req.YA; +package com.sdm.project.YA.req; import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/project/src/main/java/com/sdm/project/model/req/YA/SaveModelNodeInfoReq.java b/project/src/main/java/com/sdm/project/YA/req/SaveModelNodeInfoReq.java similarity index 79% rename from project/src/main/java/com/sdm/project/model/req/YA/SaveModelNodeInfoReq.java rename to project/src/main/java/com/sdm/project/YA/req/SaveModelNodeInfoReq.java index fe885620..a0c97291 100644 --- a/project/src/main/java/com/sdm/project/model/req/YA/SaveModelNodeInfoReq.java +++ b/project/src/main/java/com/sdm/project/YA/req/SaveModelNodeInfoReq.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.req.YA; +package com.sdm.project.YA.req; import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.v3.oas.annotations.media.Schema; @@ -32,17 +32,17 @@ public class SaveModelNodeInfoReq { @Schema(description = "主负责人") private String firstOwner; - @Schema(description = "从负责人") - private List secondOwner; + @Schema(description = "仿真活动任务") + private String workTask; - @Schema(description = "起止日期") - private String startEndData; + @Schema(description = "备注描述") + private String description; @Schema(description = "学科") private String disciplineClassification; @Schema(description = "格式") - private String format; + private String formatType; @Schema(description = "分析对象") private String item; @@ -51,5 +51,7 @@ public class SaveModelNodeInfoReq { @JSONField(serialize = false) private MultipartFile file; + @Schema(description = "文件名称") + private String fileName; } diff --git a/project/src/main/java/com/sdm/project/model/req/YA/SaveReportNodeInfoReq.java b/project/src/main/java/com/sdm/project/YA/req/SaveReportNodeInfoReq.java similarity index 92% rename from project/src/main/java/com/sdm/project/model/req/YA/SaveReportNodeInfoReq.java rename to project/src/main/java/com/sdm/project/YA/req/SaveReportNodeInfoReq.java index 9f7284f4..9bda9c0f 100644 --- a/project/src/main/java/com/sdm/project/model/req/YA/SaveReportNodeInfoReq.java +++ b/project/src/main/java/com/sdm/project/YA/req/SaveReportNodeInfoReq.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.req.YA; +package com.sdm.project.YA.req; import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.v3.oas.annotations.media.Schema; @@ -16,7 +16,7 @@ public class SaveReportNodeInfoReq { private String name; @Schema(description = "描述") - private String discription; + private String description; @Schema(description = "数据类型编号") private String code; diff --git a/project/src/main/java/com/sdm/project/model/req/YA/SaveTaskNodeInfoReq.java b/project/src/main/java/com/sdm/project/YA/req/SaveTaskNodeInfoReq.java similarity index 90% rename from project/src/main/java/com/sdm/project/model/req/YA/SaveTaskNodeInfoReq.java rename to project/src/main/java/com/sdm/project/YA/req/SaveTaskNodeInfoReq.java index 2df2d46e..4b8bcdb4 100644 --- a/project/src/main/java/com/sdm/project/model/req/YA/SaveTaskNodeInfoReq.java +++ b/project/src/main/java/com/sdm/project/YA/req/SaveTaskNodeInfoReq.java @@ -1,9 +1,11 @@ -package com.sdm.project.model.req.YA; +package com.sdm.project.YA.req; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; import java.util.List; +@Data public class SaveTaskNodeInfoReq { @Schema(description = "数据类型名") @@ -43,7 +45,7 @@ public class SaveTaskNodeInfoReq { public String version; @Schema(description = "上游任务") - public String sourceWorkRequest; + public List sourceWorkRequest; } diff --git a/project/src/main/java/com/sdm/project/model/req/YA/SyncCidProjectReq.java b/project/src/main/java/com/sdm/project/YA/req/SyncCidProjectReq.java similarity index 90% rename from project/src/main/java/com/sdm/project/model/req/YA/SyncCidProjectReq.java rename to project/src/main/java/com/sdm/project/YA/req/SyncCidProjectReq.java index 5cc390d3..097d015f 100644 --- a/project/src/main/java/com/sdm/project/model/req/YA/SyncCidProjectReq.java +++ b/project/src/main/java/com/sdm/project/YA/req/SyncCidProjectReq.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.req.YA; +package com.sdm.project.YA.req; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/project/src/main/java/com/sdm/project/model/req/YA/SyncCidTaskReq.java b/project/src/main/java/com/sdm/project/YA/req/SyncCidTaskReq.java similarity index 93% rename from project/src/main/java/com/sdm/project/model/req/YA/SyncCidTaskReq.java rename to project/src/main/java/com/sdm/project/YA/req/SyncCidTaskReq.java index 4ba46377..ac3e8210 100644 --- a/project/src/main/java/com/sdm/project/model/req/YA/SyncCidTaskReq.java +++ b/project/src/main/java/com/sdm/project/YA/req/SyncCidTaskReq.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.req.YA; +package com.sdm.project.YA.req; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/project/src/main/java/com/sdm/project/model/resp/YA/BosimErrorRespond.java b/project/src/main/java/com/sdm/project/YA/resp/BosimErrorRespond.java similarity index 85% rename from project/src/main/java/com/sdm/project/model/resp/YA/BosimErrorRespond.java rename to project/src/main/java/com/sdm/project/YA/resp/BosimErrorRespond.java index 39163143..b9c46787 100644 --- a/project/src/main/java/com/sdm/project/model/resp/YA/BosimErrorRespond.java +++ b/project/src/main/java/com/sdm/project/YA/resp/BosimErrorRespond.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.resp.YA; +package com.sdm.project.YA.resp; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/project/src/main/java/com/sdm/project/model/resp/YA/BosimKeyResultInfoRsp.java b/project/src/main/java/com/sdm/project/YA/resp/BosimKeyResultInfoRsp.java similarity index 85% rename from project/src/main/java/com/sdm/project/model/resp/YA/BosimKeyResultInfoRsp.java rename to project/src/main/java/com/sdm/project/YA/resp/BosimKeyResultInfoRsp.java index 2991fea3..196f9b95 100644 --- a/project/src/main/java/com/sdm/project/model/resp/YA/BosimKeyResultInfoRsp.java +++ b/project/src/main/java/com/sdm/project/YA/resp/BosimKeyResultInfoRsp.java @@ -1,10 +1,9 @@ -package com.sdm.project.model.resp.YA; +package com.sdm.project.YA.resp; import com.sdm.common.entity.resp.PageDataResp; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import java.util.ArrayList; import java.util.List; @Data diff --git a/project/src/main/java/com/sdm/project/YA/resp/BosimResponse.java b/project/src/main/java/com/sdm/project/YA/resp/BosimResponse.java new file mode 100644 index 00000000..9b3c14ab --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/resp/BosimResponse.java @@ -0,0 +1,41 @@ +package com.sdm.project.YA.resp; + +import lombok.Data; + +@Data +public class BosimResponse { + private boolean success; + private int code; + private String message; + private T data; + + public BosimResponse() {} + + public static BosimResponse success(T data) { + BosimResponse res = new BosimResponse<>(); + res.setSuccess(true); + res.setCode(200); + res.setMessage("操作成功"); + res.setData(data); + return res; + } + + public static BosimResponse failed(T data) { + BosimResponse res = new BosimResponse<>(); + res.setSuccess(false); + res.setCode(-200); + res.setMessage("操作失败"); + res.setData(data); + return res; + } + + // getter setter + public boolean isSuccess() { return success; } + public void setSuccess(boolean success) { this.success = success; } + public int getCode() { return code; } + public void setCode(int code) { this.code = code; } + public String getMessage() { return message; } + public void setMessage(String message) { this.message = message; } + public T getData() { return data; } + public void setData(T data) { this.data = data; } +} diff --git a/project/src/main/java/com/sdm/project/model/resp/YA/BosimSaveNodeInfoRsp.java b/project/src/main/java/com/sdm/project/YA/resp/BosimSaveNodeInfoRsp.java similarity index 90% rename from project/src/main/java/com/sdm/project/model/resp/YA/BosimSaveNodeInfoRsp.java rename to project/src/main/java/com/sdm/project/YA/resp/BosimSaveNodeInfoRsp.java index ceb54bd7..732d406f 100644 --- a/project/src/main/java/com/sdm/project/model/resp/YA/BosimSaveNodeInfoRsp.java +++ b/project/src/main/java/com/sdm/project/YA/resp/BosimSaveNodeInfoRsp.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.resp.YA; +package com.sdm.project.YA.resp; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/project/src/main/java/com/sdm/project/model/resp/YA/BosimSaveProjectTaskRsp.java b/project/src/main/java/com/sdm/project/YA/resp/BosimSaveProjectTaskRsp.java similarity index 74% rename from project/src/main/java/com/sdm/project/model/resp/YA/BosimSaveProjectTaskRsp.java rename to project/src/main/java/com/sdm/project/YA/resp/BosimSaveProjectTaskRsp.java index 598c84a3..f1c19c79 100644 --- a/project/src/main/java/com/sdm/project/model/resp/YA/BosimSaveProjectTaskRsp.java +++ b/project/src/main/java/com/sdm/project/YA/resp/BosimSaveProjectTaskRsp.java @@ -1,11 +1,8 @@ -package com.sdm.project.model.resp.YA; +package com.sdm.project.YA.resp; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import java.util.ArrayList; -import java.util.List; - @Data public class BosimSaveProjectTaskRsp { diff --git a/project/src/main/java/com/sdm/project/YA/resp/KeyResultData.java b/project/src/main/java/com/sdm/project/YA/resp/KeyResultData.java new file mode 100644 index 00000000..54700b9a --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/resp/KeyResultData.java @@ -0,0 +1,9 @@ +package com.sdm.project.YA.resp; + +import java.util.List; + +public class KeyResultData { + private List keyResult; + public List getKeyResult() { return keyResult; } + public void setKeyResult(List keyResult) { this.keyResult = keyResult; } +} diff --git a/project/src/main/java/com/sdm/project/model/resp/YA/KeyResultNodeInfo.java b/project/src/main/java/com/sdm/project/YA/resp/KeyResultNodeInfo.java similarity index 91% rename from project/src/main/java/com/sdm/project/model/resp/YA/KeyResultNodeInfo.java rename to project/src/main/java/com/sdm/project/YA/resp/KeyResultNodeInfo.java index 2d583604..8d413647 100644 --- a/project/src/main/java/com/sdm/project/model/resp/YA/KeyResultNodeInfo.java +++ b/project/src/main/java/com/sdm/project/YA/resp/KeyResultNodeInfo.java @@ -1,9 +1,7 @@ -package com.sdm.project.model.resp.YA; +package com.sdm.project.YA.resp; -import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import org.springframework.web.multipart.MultipartFile; @Data @Schema(description = "仿真关键结果上传参数") diff --git a/project/src/main/java/com/sdm/project/YA/resp/ModelData.java b/project/src/main/java/com/sdm/project/YA/resp/ModelData.java new file mode 100644 index 00000000..f4de0e1f --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/resp/ModelData.java @@ -0,0 +1,9 @@ +package com.sdm.project.YA.resp; + +import java.util.List; + +public class ModelData { + private List model; + public List getModel() { return model; } + public void setModel(List model) { this.model = model; } +} diff --git a/project/src/main/java/com/sdm/project/YA/resp/ReportData.java b/project/src/main/java/com/sdm/project/YA/resp/ReportData.java new file mode 100644 index 00000000..d74fba09 --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/resp/ReportData.java @@ -0,0 +1,9 @@ +package com.sdm.project.YA.resp; + +import java.util.List; + +public class ReportData { + private List report; + public List getReport() { return report; } + public void setReport(List report) { this.report = report; } +} diff --git a/project/src/main/java/com/sdm/project/YA/resp/WorkRequestData.java b/project/src/main/java/com/sdm/project/YA/resp/WorkRequestData.java new file mode 100644 index 00000000..486bcb77 --- /dev/null +++ b/project/src/main/java/com/sdm/project/YA/resp/WorkRequestData.java @@ -0,0 +1,9 @@ +package com.sdm.project.YA.resp; + +import java.util.List; + +public class WorkRequestData { + private List workRequest; + public List getWorkRequest() { return workRequest; } + public void setWorkRequest(List workRequest) { this.workRequest = workRequest; } +} diff --git a/project/src/main/java/com/sdm/project/config/mybatis/MybatisPlusConfig.java b/project/src/main/java/com/sdm/project/config/mybatis/MybatisPlusConfig.java index 18490cec..505cef95 100644 --- a/project/src/main/java/com/sdm/project/config/mybatis/MybatisPlusConfig.java +++ b/project/src/main/java/com/sdm/project/config/mybatis/MybatisPlusConfig.java @@ -23,7 +23,7 @@ import java.util.Map; * @Note */ @Configuration -@MapperScan(basePackages = "com.sdm.project.dao", sqlSessionFactoryRef = "mybatisSqlSessionFactoryAdaptor") +@MapperScan(basePackages = {"com.sdm.project.dao", "com.sdm.project.YA.mapper"}, sqlSessionFactoryRef = "mybatisSqlSessionFactoryAdaptor") public class MybatisPlusConfig { 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 e6dece7d..7ac928b7 100644 --- a/project/src/main/java/com/sdm/project/service/INodeService.java +++ b/project/src/main/java/com/sdm/project/service/INodeService.java @@ -10,8 +10,8 @@ import com.sdm.common.entity.resp.project.SimulationRunResp; import com.sdm.project.model.entity.SimulationNode; import com.sdm.project.model.po.ProjectNodePo; import com.sdm.project.model.req.*; -import com.sdm.project.model.req.YA.SyncCidProjectReq; -import com.sdm.project.model.resp.YA.BosimSaveProjectTaskRsp; +import com.sdm.project.YA.req.SyncCidProjectReq; +import com.sdm.project.YA.resp.BosimSaveProjectTaskRsp; import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Service; 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 9c2301c5..b8c08037 100644 --- a/project/src/main/java/com/sdm/project/service/ITaskService.java +++ b/project/src/main/java/com/sdm/project/service/ITaskService.java @@ -5,16 +5,14 @@ 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; -import com.sdm.common.entity.req.task.TaskTreeExportExcelFormat; import com.sdm.project.model.bo.ModifyTaskNode; import com.sdm.project.model.req.*; -import com.sdm.project.model.req.YA.SyncCidTaskReq; +import com.sdm.project.YA.req.SyncCidTaskReq; import com.sdm.project.model.resp.*; -import com.sdm.project.model.resp.YA.BosimSaveProjectTaskRsp; +import com.sdm.project.YA.resp.BosimSaveProjectTaskRsp; import com.sdm.common.entity.resp.project.SpdmTaskVo; import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Service; 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 31fc8671..e16bb24c 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 @@ -20,7 +20,6 @@ import com.sdm.common.entity.req.data.*; import com.sdm.common.entity.req.project.*; import com.sdm.common.entity.req.system.QueryGroupDetailReq; import com.sdm.common.entity.req.system.SendMsgReq; -import com.sdm.common.entity.req.system.UserListReq; import com.sdm.common.entity.req.system.UserQueryReq; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; import com.sdm.common.entity.resp.PageDataResp; @@ -55,12 +54,11 @@ import com.sdm.project.model.bo.TaskExtraNode; import com.sdm.project.model.bo.TaskNode; import com.sdm.project.model.bo.TaskNodeTag; import com.sdm.project.model.entity.*; -import com.sdm.project.model.po.NodeAllBase; import com.sdm.project.model.po.PerformanceNodePo; import com.sdm.project.model.po.ProjectNodePo; import com.sdm.project.model.req.*; -import com.sdm.project.model.req.YA.SyncCidProjectReq; -import com.sdm.project.model.resp.YA.BosimSaveProjectTaskRsp; +import com.sdm.project.YA.req.SyncCidProjectReq; +import com.sdm.project.YA.resp.BosimSaveProjectTaskRsp; import com.sdm.project.model.vo.*; import com.sdm.project.service.*; import jakarta.servlet.http.HttpServletResponse; 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 1ccca6fc..4b93716a 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,17 +14,14 @@ 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; import com.sdm.common.entity.req.system.QueryGroupDetailReq; import com.sdm.common.entity.req.system.SendMsgReq; -import com.sdm.common.entity.req.system.UserListReq; import com.sdm.common.entity.req.system.UserQueryReq; import com.sdm.common.entity.req.task.TaskExportExcelFormat; import com.sdm.common.entity.req.task.TaskExportExcelParam; -import com.sdm.common.entity.resp.PageDataResp; import com.sdm.common.entity.resp.data.FileMetadataInfoResp; import com.sdm.common.entity.resp.project.SpdmTaskVo; import com.sdm.common.entity.resp.project.TaskNodeExtraPo; @@ -61,10 +58,10 @@ import com.sdm.project.model.po.ProjectNodePo; import com.sdm.project.model.po.TaskNodeMemberPo; import com.sdm.project.model.po.TaskRunPo; import com.sdm.project.model.req.*; -import com.sdm.project.model.req.YA.ProjectTaskInfo; -import com.sdm.project.model.req.YA.SyncCidTaskReq; +import com.sdm.project.YA.req.ProjectTaskInfo; +import com.sdm.project.YA.req.SyncCidTaskReq; import com.sdm.project.model.resp.*; -import com.sdm.project.model.resp.YA.BosimSaveProjectTaskRsp; +import com.sdm.project.YA.resp.BosimSaveProjectTaskRsp; import com.sdm.project.model.vo.*; import com.sdm.project.service.*; import com.sdm.project.util.SpringBeanCopyUtil; @@ -87,9 +84,6 @@ 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.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; From e748ade32176e4c2a98987190f45329d415b0e9f Mon Sep 17 00:00:00 2001 From: yangyang Date: Tue, 7 Apr 2026 13:51:44 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9Aminio=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E9=A2=84=E8=A7=88=EF=BC=8C.dat=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=BC=BA=E5=88=B6=E5=88=B7=E6=96=B0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/MinioFileIDataFileServiceImpl.java | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) 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 04fe123a..0490ba11 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 @@ -216,6 +216,10 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { @Value("${minioMerge.wait:55}") private Long minioMergerWait; + // &forceUpdatedCache=true + @Value("#{'${kkfile.forceUpdatedCache.type:.dat}'.split(',')}") + private List forceUpdatedCacheTypes; + @Autowired private IWsPushToolFeignClient wsPushToolFeignClient; @@ -3679,7 +3683,9 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { String objectKey = fileMetadataInfo.getObjectKey(); String minioPresignedUrl = minioService.getMinioPresignedUrl(objectKey,fileMetadataInfo.getBucketName()); String encodeKKFileViewURL = buildUrlWithTime(minioPresignedUrl, DateUtil.now()); - KKFileViewURLFromMinioResp kkFileViewURLFromMinioResp = new KKFileViewURLFromMinioResp(minioPresignedUrl, encodeKKFileViewURL); + String encodeKKFileViewNewURL = handleForceUpdatedCacheUrl(objectKey, encodeKKFileViewURL); + + KKFileViewURLFromMinioResp kkFileViewURLFromMinioResp = new KKFileViewURLFromMinioResp(minioPresignedUrl, encodeKKFileViewNewURL); // kkFileView已经二次开发,需要拼接 &lastModified=2025-10-13%2016:12:12 // 记录预览日志 @@ -5697,4 +5703,31 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { } + /** + * 根据缓存类型判断是否需要拼接强制更新参数 + * @param objectKey 缓存key + * @param enUrl 原始链接 + * 需要强制更新的缓存类型列表 + * @return 处理后的链接 + */ + private String handleForceUpdatedCacheUrl(String objectKey, String enUrl) { + // 空值安全判断:列表为空 或 objectKey为空,直接返回原链接 + if (CollectionUtils.isEmpty(forceUpdatedCacheTypes) || org.apache.commons.lang3.StringUtils.isBlank(objectKey)) { + return enUrl; + } + + // 遍历判断:objectKey是否包含列表中任意一个字符串 + boolean needForceUpdate = forceUpdatedCacheTypes.stream() + .anyMatch(cacheType -> objectKey.contains(cacheType)); + + // 满足条件则拼接参数 + if (needForceUpdate) { + return enUrl + "&forceUpdatedCache=true"; + } + + // 不满足则返回原url + return enUrl; + } + + } \ No newline at end of file From 15062fdedefea57c0dea8bf9b71ec64cef3d4664 Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Tue, 7 Apr 2026 20:21:49 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix:=E7=9F=A5=E8=AF=86=E5=BA=93=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E6=9C=80=E6=96=B0=E7=89=88=E6=9C=AC=E7=9A=84=E5=B7=A5?= =?UTF-8?q?=E5=86=B5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/MinioFileIDataFileServiceImpl.java | 77 ++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) 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 0490ba11..c6081ca7 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 @@ -4044,12 +4044,87 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { poolInfos.add(poolInfo); } - + + // poolInfos需要再根据 simulationPoolName+simulationPoolVersion 获取版本simulationPoolVersion最新的 + if (CollectionUtils.isNotEmpty(poolInfos)) { + // 按 simulationPoolName 分组,每组保留版本号最大的记录 + Map latestPoolMap = new LinkedHashMap<>(); + for (PoolInfo poolInfo : poolInfos) { + String poolName = poolInfo.getSimulationPoolName(); + if (poolName == null || poolName.isEmpty()) { + continue; + } + + PoolInfo existingPool = latestPoolMap.get(poolName); + if (existingPool == null) { + // 首次出现该池名称,直接放入 + latestPoolMap.put(poolName, poolInfo); + } else { + // 已存在,比较版本号,保留较大的版本 + String currentVersion = poolInfo.getSimulationPoolVersion(); + String existingVersion = existingPool.getSimulationPoolVersion(); + + // 版本号非空且当前版本更大时替换 + if (currentVersion != null && compareVersion(currentVersion, existingVersion) > 0) { + latestPoolMap.put(poolName, poolInfo); + } + } + } + + // 更新为去重后的最新版本的池信息列表 + poolInfos = new ArrayList<>(latestPoolMap.values()); + } + fileMetadataInfo.setPoolInfos(poolInfos); } } } + /** + * 比较两个版本号的大小,版本号格式为 "V7.12" + * @param version1 版本号1 + * @param version2 版本号2 + * @return 正数表示version1 > version2,0表示相等,负数表示version1 < version2 + */ + private int compareVersion(String version1, String version2) { + if (version1 == null && version2 == null) { + return 0; + } + if (version1 == null) { + return -1; + } + if (version2 == null) { + return 1; + } + + try { + // 去除前缀 "V",按 "." 分割为主版本号和次版本号 + String[] v1Parts = version1.substring(1).split("\\."); + String[] v2Parts = version2.substring(1).split("\\."); + + if (v1Parts.length != 2 || v2Parts.length != 2) { + // 如果格式不符合预期,降级为字符串比较 + return version1.compareTo(version2); + } + + // 比较主版本号 + int v1Major = Integer.parseInt(v1Parts[0]); + int v2Major = Integer.parseInt(v2Parts[0]); + if (v1Major != v2Major) { + return v1Major - v2Major; + } + + // 主版本号相同,比较次版本号 + int v1Minor = Integer.parseInt(v1Parts[1]); + int v2Minor = Integer.parseInt(v2Parts[1]); + return v1Minor - v2Minor; + } catch (Exception e) { + CoreLogger.warn("compareVersion parse error, fallback to string compare: v1={}, v2={}", version1, version2); + // 解析失败时降级为字符串比较 + return version1.compareTo(version2); + } + } + From 4cb7f2639812ac80aeecc8ea76397c6525756240 Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Wed, 8 Apr 2026 10:12:44 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=E4=BB=BF=E7=9C=9F=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9C=8B=E6=9D=BF=E6=96=B0=E5=A2=9E=E6=97=B6=E9=97=B4=E8=8C=83?= =?UTF-8?q?=E5=9B=B4=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GetAllUserTaskCompleteStatisticsReq.java | 6 +++ ...GetUserGroupTaskCompleteStatisticsReq.java | 6 +++ .../req/GetWorkstationApproveStatusReq.java | 6 +++ .../project/service/impl/NodeServiceImpl.java | 12 ++++++ .../resources/mapper/SimulationNodeMapper.xml | 41 +++++++++++++++++++ 5 files changed, 71 insertions(+) diff --git a/project/src/main/java/com/sdm/project/model/req/GetAllUserTaskCompleteStatisticsReq.java b/project/src/main/java/com/sdm/project/model/req/GetAllUserTaskCompleteStatisticsReq.java index cd6c31fe..b7b9e3ba 100644 --- a/project/src/main/java/com/sdm/project/model/req/GetAllUserTaskCompleteStatisticsReq.java +++ b/project/src/main/java/com/sdm/project/model/req/GetAllUserTaskCompleteStatisticsReq.java @@ -23,4 +23,10 @@ public class GetAllUserTaskCompleteStatisticsReq { @Schema(description = "标签2") private List tag2List; + @Schema(description = "创建时间") + private List createTimeArr; + + @Schema(description = "完成时间") + private List finishTimeArr; + } \ No newline at end of file diff --git a/project/src/main/java/com/sdm/project/model/req/GetUserGroupTaskCompleteStatisticsReq.java b/project/src/main/java/com/sdm/project/model/req/GetUserGroupTaskCompleteStatisticsReq.java index 05358692..5b4e2e98 100644 --- a/project/src/main/java/com/sdm/project/model/req/GetUserGroupTaskCompleteStatisticsReq.java +++ b/project/src/main/java/com/sdm/project/model/req/GetUserGroupTaskCompleteStatisticsReq.java @@ -58,4 +58,10 @@ public class GetUserGroupTaskCompleteStatisticsReq { @Schema(description = "查询学科信息") private String discipline; + + @Schema(description = "创建时间") + List createTimeArr; + + @Schema(description = "完成时间") + List finishTimeArr; } \ No newline at end of file diff --git a/project/src/main/java/com/sdm/project/model/req/GetWorkstationApproveStatusReq.java b/project/src/main/java/com/sdm/project/model/req/GetWorkstationApproveStatusReq.java index 7c2dccf1..653499f4 100644 --- a/project/src/main/java/com/sdm/project/model/req/GetWorkstationApproveStatusReq.java +++ b/project/src/main/java/com/sdm/project/model/req/GetWorkstationApproveStatusReq.java @@ -44,4 +44,10 @@ public class GetWorkstationApproveStatusReq { @Schema(description = "查询学科信息") private String discipline; + + @Schema(description = "创建时间") + private String[] createTimeArr; + + @Schema(description = "完成时间") + private String[] finishTimeArr; } 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 e16bb24c..10e64d0c 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 @@ -3118,6 +3118,18 @@ public class NodeServiceImpl extends ServiceImpl simulationTasks = query.list(); // 按学科 (discipline) 分组统计任务完成状态 diff --git a/project/src/main/resources/mapper/SimulationNodeMapper.xml b/project/src/main/resources/mapper/SimulationNodeMapper.xml index 6887f1e6..097ec2cb 100644 --- a/project/src/main/resources/mapper/SimulationNodeMapper.xml +++ b/project/src/main/resources/mapper/SimulationNodeMapper.xml @@ -529,6 +529,17 @@ and task.tag10 = #{req.tag10} + + + and task.create_time >= #{req.createTimeArr[0]} + and task.create_time <= #{req.createTimeArr[1]} + + + + and task.finish_time >= #{req.finishTimeArr[0]} + and task.finish_time <= #{req.finishTimeArr[1]} + + @@ -566,6 +577,16 @@ ) + + + and task.create_time >= #{req.createTimeArr[0]} + and task.create_time <= #{req.createTimeArr[1]} + + + + and task.finish_time >= #{req.finishTimeArr[0]} + and task.finish_time <= #{req.finishTimeArr[1]} + @@ -704,6 +725,16 @@ and task.tag10 = #{req.tag10} + + + and task.create_time >= #{req.createTimeArr[0]} + and task.create_time <= #{req.createTimeArr[1]} + + + + and task.finish_time >= #{req.finishTimeArr[0]} + and task.finish_time <= #{req.finishTimeArr[1]} + @@ -854,6 +885,16 @@ and task.tag10 = #{req.tag10} + + + and task.create_time >= #{req.createTimeArr[0]} + and task.create_time <= #{req.createTimeArr[1]} + + + + and task.finish_time >= #{req.finishTimeArr[0]} + and task.finish_time <= #{req.finishTimeArr[1]} + From 851a88300ea9e1e1edf6a77dc54b7a78f93ec35e Mon Sep 17 00:00:00 2001 From: zhuxinru Date: Wed, 8 Apr 2026 10:20:10 +0800 Subject: [PATCH 5/5] =?UTF-8?q?feat:=E8=B4=9F=E8=BD=BD=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=92=8C=E6=9F=A5=E8=AF=A2=E8=B4=9F=E8=B4=A3?= =?UTF-8?q?=E4=BA=BA=E5=92=8C=E4=B8=8B=E5=B1=9E=E5=85=B3=E8=81=94=E5=85=B3?= =?UTF-8?q?=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1-sql/2026-04-08/sys_user_relation.sql | 14 ++++ .../sdm/project/model/req/KeyResultReq.java | 2 + .../impl/SimulationRunServiceImpl.java | 2 +- .../system/controller/SysUserController.java | 18 +++++ .../sdm/system/dao/SysUserRelationMapper.java | 8 ++ .../system/model/entity/SysUserRelation.java | 47 ++++++++++++ .../model/enums/UserRelationTypeEnum.java | 14 ++++ .../model/req/user/SaveUserRelationReq.java | 24 ++++++ .../service/ISysUserRelationService.java | 15 ++++ .../impl/SysUserRelationServiceImpl.java | 75 +++++++++++++++++++ .../mapper/SysUserRelationMapper.xml | 5 ++ 11 files changed, 223 insertions(+), 1 deletion(-) create mode 100644 1-sql/2026-04-08/sys_user_relation.sql create mode 100644 system/src/main/java/com/sdm/system/dao/SysUserRelationMapper.java create mode 100644 system/src/main/java/com/sdm/system/model/entity/SysUserRelation.java create mode 100644 system/src/main/java/com/sdm/system/model/enums/UserRelationTypeEnum.java create mode 100644 system/src/main/java/com/sdm/system/model/req/user/SaveUserRelationReq.java create mode 100644 system/src/main/java/com/sdm/system/service/ISysUserRelationService.java create mode 100644 system/src/main/java/com/sdm/system/service/impl/SysUserRelationServiceImpl.java create mode 100644 system/src/main/resources/mapper/SysUserRelationMapper.xml diff --git a/1-sql/2026-04-08/sys_user_relation.sql b/1-sql/2026-04-08/sys_user_relation.sql new file mode 100644 index 00000000..918b6b88 --- /dev/null +++ b/1-sql/2026-04-08/sys_user_relation.sql @@ -0,0 +1,14 @@ +-- spdm_baseline.sys_user_relation definition + +CREATE TABLE `sys_user_relation` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `user_id` bigint NOT NULL COMMENT '主动方用户ID', + `related_user_id` bigint NOT NULL COMMENT '被动方用户ID', + `relation_type` smallint NOT NULL DEFAULT '1' COMMENT '关系类型: 1-负责人与下属', + `tenant_id` bigint DEFAULT NULL COMMENT '租户ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_user_relation` (`user_id`,`related_user_id`,`relation_type`), + KEY `idx_user_id` (`user_id`), + KEY `idx_related_user_id` (`related_user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户关系表'; \ No newline at end of file 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 07321c8c..3f13e2d0 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 @@ -75,6 +75,8 @@ public class KeyResultReq extends BaseReq { @Schema(description = "是否需要覆盖同名文件") private Boolean isConverSameNameFile; + @Schema(description = "是否需要跳过同名文件") + private Boolean isSkipSameNameFile = false; // ---------------------------------------------------------------- // 很重要,用于设置标签,通过autoFillDictTags切面 ,设置dictTagIdsCache 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 14b12b29..ee35689f 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 @@ -1178,7 +1178,7 @@ public class SimulationRunServiceImpl extends ServiceImpl> queryRelatedUserIds( + @Parameter(description = "用户ID") @RequestParam("userId") Long userId, + @Parameter(description = "关系类型,默认1-负责人与下属") @RequestParam(value = "relationType", required = false) Integer relationType) { + return sysUserRelationService.queryRelatedUserIds(userId, relationType); + } + } \ No newline at end of file diff --git a/system/src/main/java/com/sdm/system/dao/SysUserRelationMapper.java b/system/src/main/java/com/sdm/system/dao/SysUserRelationMapper.java new file mode 100644 index 00000000..fafc4a74 --- /dev/null +++ b/system/src/main/java/com/sdm/system/dao/SysUserRelationMapper.java @@ -0,0 +1,8 @@ +package com.sdm.system.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sdm.system.model.entity.SysUserRelation; + +public interface SysUserRelationMapper extends BaseMapper { + +} diff --git a/system/src/main/java/com/sdm/system/model/entity/SysUserRelation.java b/system/src/main/java/com/sdm/system/model/entity/SysUserRelation.java new file mode 100644 index 00000000..055a6df2 --- /dev/null +++ b/system/src/main/java/com/sdm/system/model/entity/SysUserRelation.java @@ -0,0 +1,47 @@ +package com.sdm.system.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("sys_user_relation") +@Schema(description = "用户关系表") +public class SysUserRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @Schema(description = "主动方用户ID") + @TableField("user_id") + private Long userId; + + @Schema(description = "被动方用户ID") + @TableField("related_user_id") + private Long relatedUserId; + + @Schema(description = "关系类型: 1-负责人与下属") + @TableField("relation_type") + private Integer relationType; + + @Schema(description = "租户ID") + @TableField("tenant_id") + private Long tenantId; + + @Schema(description = "创建时间") + @TableField("create_time") + private LocalDateTime createTime; +} diff --git a/system/src/main/java/com/sdm/system/model/enums/UserRelationTypeEnum.java b/system/src/main/java/com/sdm/system/model/enums/UserRelationTypeEnum.java new file mode 100644 index 00000000..3ba76509 --- /dev/null +++ b/system/src/main/java/com/sdm/system/model/enums/UserRelationTypeEnum.java @@ -0,0 +1,14 @@ +package com.sdm.system.model.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum UserRelationTypeEnum { + + SUPERVISOR_SUBORDINATE(1, "负责人与下属"); + + private final int code; + private final String desc; +} diff --git a/system/src/main/java/com/sdm/system/model/req/user/SaveUserRelationReq.java b/system/src/main/java/com/sdm/system/model/req/user/SaveUserRelationReq.java new file mode 100644 index 00000000..a743f253 --- /dev/null +++ b/system/src/main/java/com/sdm/system/model/req/user/SaveUserRelationReq.java @@ -0,0 +1,24 @@ +package com.sdm.system.model.req.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +@Schema(description = "保存用户关系请求参数") +@Data +public class SaveUserRelationReq { + + @Schema(description = "主动方用户ID(负责人)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "userId不能为空") + private Long userId; + + @Schema(description = "被动方用户ID列表(下属)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "relatedUserIds不能为空") + private List relatedUserIds; + + @Schema(description = "关系类型,默认1-负责人与下属") + private Integer relationType = 1; +} diff --git a/system/src/main/java/com/sdm/system/service/ISysUserRelationService.java b/system/src/main/java/com/sdm/system/service/ISysUserRelationService.java new file mode 100644 index 00000000..d3e818c9 --- /dev/null +++ b/system/src/main/java/com/sdm/system/service/ISysUserRelationService.java @@ -0,0 +1,15 @@ +package com.sdm.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.sdm.common.common.SdmResponse; +import com.sdm.system.model.entity.SysUserRelation; +import com.sdm.system.model.req.user.SaveUserRelationReq; + +import java.util.List; + +public interface ISysUserRelationService extends IService { + + SdmResponse saveUserRelation(SaveUserRelationReq req); + + SdmResponse> queryRelatedUserIds(Long userId, Integer relationType); +} diff --git a/system/src/main/java/com/sdm/system/service/impl/SysUserRelationServiceImpl.java b/system/src/main/java/com/sdm/system/service/impl/SysUserRelationServiceImpl.java new file mode 100644 index 00000000..3a88bc46 --- /dev/null +++ b/system/src/main/java/com/sdm/system/service/impl/SysUserRelationServiceImpl.java @@ -0,0 +1,75 @@ +package com.sdm.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sdm.common.common.SdmResponse; +import com.sdm.common.common.ThreadLocalContext; +import com.sdm.system.dao.SysUserRelationMapper; +import com.sdm.system.model.entity.SysUserRelation; +import com.sdm.system.model.enums.UserRelationTypeEnum; +import com.sdm.system.model.req.user.SaveUserRelationReq; +import com.sdm.system.service.ISysUserRelationService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class SysUserRelationServiceImpl extends ServiceImpl implements ISysUserRelationService { + + @Override + @Transactional(rollbackFor = Exception.class) + public SdmResponse saveUserRelation(SaveUserRelationReq req) { + Long tenantId = ThreadLocalContext.getTenantId(); + Long userId = req.getUserId(); + Integer relationType = req.getRelationType(); + + // 先删除该用户该类型的所有旧关系 + LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); + deleteWrapper.eq(SysUserRelation::getUserId, userId) + .eq(SysUserRelation::getRelationType, relationType); + remove(deleteWrapper); + + // 批量插入新关系 + List relations = req.getRelatedUserIds().stream().map(relatedUserId -> { + SysUserRelation relation = new SysUserRelation(); + relation.setUserId(userId); + relation.setRelatedUserId(relatedUserId); + relation.setRelationType(relationType); + relation.setTenantId(tenantId); + relation.setCreateTime(LocalDateTime.now()); + return relation; + }).collect(Collectors.toList()); + + saveBatch(relations); + return SdmResponse.success(); + } + + @Override + public SdmResponse> queryRelatedUserIds(Long userId, Integer relationType) { + Long tenantId = ThreadLocalContext.getTenantId(); + if (relationType == null) { + relationType = UserRelationTypeEnum.SUPERVISOR_SUBORDINATE.getCode(); + } + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUserRelation::getUserId, userId) + .eq(SysUserRelation::getRelationType, relationType) + .eq(SysUserRelation::getTenantId, tenantId) + .select(SysUserRelation::getRelatedUserId); + + List relatedUserIds = list(queryWrapper).stream() + .map(SysUserRelation::getRelatedUserId) + .collect(Collectors.toList()); + + // 若无下属则返回自己的userId + if (relatedUserIds.isEmpty()) { + return SdmResponse.success(Collections.singletonList(userId)); + } + + return SdmResponse.success(relatedUserIds); + } +} diff --git a/system/src/main/resources/mapper/SysUserRelationMapper.xml b/system/src/main/resources/mapper/SysUserRelationMapper.xml new file mode 100644 index 00000000..bac0fe05 --- /dev/null +++ b/system/src/main/resources/mapper/SysUserRelationMapper.xml @@ -0,0 +1,5 @@ + + + + +