From 4506ff1dd1faa567c67d7b1f46577b7915475166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A1=BE=E5=90=9B=E7=A6=B9?= <2673609096@qq.com> Date: Sat, 23 Aug 2025 22:48:19 +0800 Subject: [PATCH] =?UTF-8?q?farm=E6=A8=A1=E5=9D=97-=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E5=8F=8A=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ModelManagementController.java | 16 ++- .../vo/ModelManagementPageReqVO.java | 2 +- .../vo/ModelManagementRespVO.java | 2 +- .../vo/ModelManagementSaveReqVO.java | 2 +- .../modelmanagement/ModelManagementDO.java | 10 +- .../ModelManagementMapper.java | 27 ++++- .../ModelManagementService.java | 4 + .../ModelManagementServiceImpl.java | 99 +++++++++++++++++-- 8 files changed, 144 insertions(+), 18 deletions(-) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java index 2828e065..50cc3a87 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java @@ -41,7 +41,7 @@ public class ModelManagementController { return success(modelManagementService.createModelManagement(createReqVO)); } - @PostMapping("/copyModel") + @PostMapping("/copy-model") @Operation(summary = "复制模型管理") public CommonResult copyModelManagement(@Valid @RequestBody ModelManagementSaveReqVO createReqVO) { return success(modelManagementService.copyModelManagement(createReqVO)); @@ -54,6 +54,13 @@ public class ModelManagementController { return success(true); } + @PutMapping("/is-release") + @Operation(summary = "更新模型管理") + public CommonResult isRelease(@Valid @RequestBody ModelManagementSaveReqVO updateReqVO) { + modelManagementService.isRelease(updateReqVO); + return success(true); + } + @DeleteMapping("/delete") @Operation(summary = "删除模型管理") @Parameter(name = "id", description = "编号", required = true) @@ -78,6 +85,13 @@ public class ModelManagementController { return success(modelManagement); } + @GetMapping("/page-release") + @Operation(summary = "获得发布模型分页") + public CommonResult> getModelManagementPageRelease(@Valid ModelManagementPageReqVO pageReqVO) { + PageResult pageResult = modelManagementService.getModelManagementPageRelease(pageReqVO); + return success(BeanUtils.toBean(pageResult, ModelManagementRespVO.class)); + } + @GetMapping("/page") @Operation(summary = "获得模型管理分页") public CommonResult> getModelManagementPage(@Valid ModelManagementPageReqVO pageReqVO) { diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementPageReqVO.java index adc57a84..20443bdf 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementPageReqVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementPageReqVO.java @@ -52,5 +52,5 @@ public class ModelManagementPageReqVO extends PageParam { @Schema(description = "租户id", example = "20468") private String tenantId; - + private int isRelease; } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementRespVO.java index 438a74b3..411d7942 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementRespVO.java @@ -71,7 +71,7 @@ public class ModelManagementRespVO { @Schema(description = "租户id", example = "20468") @ExcelProperty("租户id") private String tenantId; - + private int isRelease; private List modelCycles; } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementSaveReqVO.java index e56a4b8e..44a72f04 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementSaveReqVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/vo/ModelManagementSaveReqVO.java @@ -47,5 +47,5 @@ public class ModelManagementSaveReqVO { @Schema(description = "租户id", example = "20468") private String tenantId; - + private int isRelease; } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelmanagement/ModelManagementDO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelmanagement/ModelManagementDO.java index 0fc24625..4e116629 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelmanagement/ModelManagementDO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelmanagement/ModelManagementDO.java @@ -1,12 +1,12 @@ package cn.iocoder.yudao.module.farm.dal.dataobject.modelmanagement; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.farm.dal.dataobject.modelcycle.ModelCycleDO; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; -import java.util.List; - /** * 模型管理 DO * @@ -81,5 +81,5 @@ public class ModelManagementDO extends BaseDO { * 任务ID */ private String taskId; - + private int isRelease; } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/modelmanagement/ModelManagementMapper.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/modelmanagement/ModelManagementMapper.java index 01037db3..2094bb2f 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/modelmanagement/ModelManagementMapper.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/modelmanagement/ModelManagementMapper.java @@ -3,12 +3,12 @@ package cn.iocoder.yudao.module.farm.dal.mysql.modelmanagement; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; -import cn.iocoder.yudao.module.farm.dal.dataobject.modelmanagement.ModelManagementDO; -import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO; +import cn.iocoder.yudao.module.farm.controller.admin.modelmanagement.vo.ModelManagementPageReqVO; import cn.iocoder.yudao.module.farm.dal.dataobject.baseinfo.BaseInfoDO; +import cn.iocoder.yudao.module.farm.dal.dataobject.modelmanagement.ModelManagementDO; import cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo.PlotInfoDO; +import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO; import org.apache.ibatis.annotations.Mapper; -import cn.iocoder.yudao.module.farm.controller.admin.modelmanagement.vo.*; /** * 模型管理 Mapper @@ -48,4 +48,25 @@ public interface ModelManagementMapper extends BaseMapperX { return selectJoinPage(reqVO, ModelManagementDO.class, query); } + default PageResult selectPageRelease(ModelManagementPageReqVO reqVO) { + MPJLambdaWrapperX query = new MPJLambdaWrapperX() + .selectAll(ModelManagementDO.class) + .likeIfPresent(ModelManagementDO::getModelName, reqVO.getModelName()) + .eqIfPresent(ModelManagementDO::getSpeciesId, reqVO.getSpeciesId()) + .likeIfPresent(ModelManagementDO::getSpeciesName, reqVO.getSpeciesName()) + .eqIfPresent(ModelManagementDO::getCycle, reqVO.getCycle()) + .eqIfPresent(ModelManagementDO::getHarvest, reqVO.getHarvest()) + .eqIfPresent(ModelManagementDO::getSuitablePlantingAreas, reqVO.getSuitablePlantingAreas()) + .eqIfPresent(ModelManagementDO::getDescription, reqVO.getDescription()) + .betweenIfPresent(ModelManagementDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(ModelManagementDO::getBaseId, reqVO.getBaseId()) + .likeIfPresent(ModelManagementDO::getBaseName, reqVO.getBaseName()) + .eqIfPresent(ModelManagementDO::getPlotId, reqVO.getPlotId()) + .likeIfPresent(ModelManagementDO::getPlotName, reqVO.getPlotName()) + .eqIfPresent(ModelManagementDO::getTenantId, reqVO.getTenantId()) + .eqIfPresent(ModelManagementDO::getIsRelease, 1) + .orderByDesc(ModelManagementDO::getCreateTime); + + return selectJoinPage(reqVO, ModelManagementDO.class, query); + } } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementService.java index 25e35ff8..a12c8194 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementService.java @@ -63,4 +63,8 @@ public interface ModelManagementService { PageResult getModelManagementPage(ModelManagementPageReqVO pageReqVO); String copyModelManagement(@Valid ModelManagementSaveReqVO createReqVO); + + void isRelease(@Valid ModelManagementSaveReqVO updateReqVO); + + PageResult getModelManagementPageRelease(@Valid ModelManagementPageReqVO pageReqVO); } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java index 23f97a7d..04aadf8d 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java @@ -66,6 +66,7 @@ public class ModelManagementServiceImpl implements ModelManagementService { ModelManagementDO modelManagement = BeanUtils.toBean(createReqVO, ModelManagementDO.class); modelManagement.setId(IdUtil.fastUUID()); modelManagement.setTenantId(String.valueOf(user.getTenantId())); + modelManagement.setIsRelease(0); modelManagementMapper.insert(modelManagement); // 返回 @@ -99,11 +100,10 @@ public class ModelManagementServiceImpl implements ModelManagementService { List originalCycles = modelCycleMapper.selectListByModelId(id); for (ModelCycleDO originalCycle : originalCycles) { // 复制周期 - ModelCycleDO newCycle = BeanUtils.toBean(originalCycle, ModelCycleDO.class); String newCycleId = IdUtil.fastUUID(); - newCycle.setId(newCycleId); - newCycle.setModelId(newModelId); - modelCycleMapper.insert(newCycle); + originalCycle.setId(newCycleId); + originalCycle.setModelId(newModelId); + modelCycleMapper.insert(originalCycle); // 复制环境指标 List environmentIndexes = modelEnvironmentIndexMapper.selectByCycleId(originalCycle.getId()); @@ -220,8 +220,95 @@ public class ModelManagementServiceImpl implements ModelManagementService { @Override public String copyModelManagement(ModelManagementSaveReqVO createReqVO) { -// createModelManagementCase(createReqVO.getId()); - return ""; + // 1. 查询原模型(类型为模型模板) + ModelManagementDO modelManagementDO = modelManagementMapper.selectOne( + ModelManagementDO::getId, createReqVO.getId(), + ModelManagementDO::getType, CommonConstants.MODEL_TYPE_1 + ); + + if (modelManagementDO == null) { + return ""; + } + + // 2. 创建新的模型引用案例 + ModelManagementDO newModelCase = BeanUtils.toBean(modelManagementDO, ModelManagementDO.class); + String newModelId = IdUtil.fastUUID(); + newModelCase.setId(newModelId); + newModelCase.setType(CommonConstants.MODEL_TYPE_1); + newModelCase.setModelName(modelManagementDO.getModelName() + "-复制模型"); + + // 3. 保存新的模型引用案例 + modelManagementMapper.insert(newModelCase); + + // 4. 复制模型周期及其子集 + List originalCycles = modelCycleMapper.selectListByModelId(createReqVO.getId()); + for (ModelCycleDO originalCycle : originalCycles) { + // 复制周期 + String newCycleId = IdUtil.fastUUID(); + originalCycle.setId(newCycleId); + originalCycle.setModelId(newModelId); + modelCycleMapper.insert(originalCycle); + + // 复制环境指标 + List environmentIndexes = modelEnvironmentIndexMapper.selectByCycleId(originalCycle.getId()); + for (ModelEnvironmentIndexDO envIndex : environmentIndexes) { + envIndex.setId(IdUtil.fastUUID()); + envIndex.setCycleId(newCycleId); + modelEnvironmentIndexMapper.insert(envIndex); + } + + // 复制气象灾害 + List weatherDisasters = modelWeatherDisasterMapper.selectByCycleId(originalCycle.getId()); + for (ModelWeatherDisasterDO weatherDisaster : weatherDisasters) { + weatherDisaster.setId(IdUtil.fastUUID()); + weatherDisaster.setCycleId(newCycleId); + modelWeatherDisasterMapper.insert(weatherDisaster); + } + + // 复制病虫草灾害 + List pestDiseaseWeeds = modelPestDiseaseWeedMapper.selectByCycleId(originalCycle.getId()); + for (ModelPestDiseaseWeedDO pestDiseaseWeed : pestDiseaseWeeds) { + pestDiseaseWeed.setId(IdUtil.fastUUID()); + pestDiseaseWeed.setCycleId(newCycleId); + modelPestDiseaseWeedMapper.insert(pestDiseaseWeed); + } + + // 复制农事操作 + List farmingOperations = modelFarmingOperationMapper.selectByCycleId(originalCycle.getId()); + for (ModelFarmingOperationDO farmingOperation : farmingOperations) { + String newFarmingId = IdUtil.fastUUID(); + farmingOperation.setId(newFarmingId); + farmingOperation.setCycleId(newCycleId); + modelFarmingOperationMapper.insert(farmingOperation); + + // 复制农事操作投入品 + List farmingOperationInputs = modelFarmingOperationInputMapper.selectByFarmingId(farmingOperation.getId()); + for (ModelFarmingOperationInputDO farmingOperationInput : farmingOperationInputs) { + farmingOperationInput.setId(IdUtil.fastUUID()); + farmingOperationInput.setFarmingId(newFarmingId); + modelFarmingOperationInputMapper.insert(farmingOperationInput); + } + } + } + // 返回新建的模型引用案例ID + return newModelId; + } + + @Override + public void isRelease(ModelManagementSaveReqVO updateReqVO) { + + ModelManagementDO modelManagementDO = modelManagementMapper.selectById(updateReqVO.getId()); + if (modelManagementDO.getIsRelease() == 0) { + modelManagementDO.setIsRelease(1); + } else { + modelManagementDO.setIsRelease(0); + } + modelManagementMapper.updateById(modelManagementDO); + } + + @Override + public PageResult getModelManagementPageRelease(ModelManagementPageReqVO pageReqVO) { + return modelManagementMapper.selectPageRelease(pageReqVO); } } \ No newline at end of file