farm模块-模型复制及调用优化

This commit is contained in:
顾君禹
2025-09-03 10:27:37 +08:00
parent 024249f524
commit e14ef4267a
58 changed files with 241 additions and 11425 deletions

View File

@@ -114,4 +114,6 @@ public class DeviceInfoPageReqVO extends PageParam {
@Schema(description = "租户id", example = "11502")
private String tenantId;
private String point;
}

View File

@@ -1,151 +1,151 @@
package cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import cn.idev.excel.annotation.*;
@Schema(description = "管理后台 - 设备信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class DeviceInfoRespVO {
@Schema(description = "设备全局唯一标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "9620")
@ExcelProperty("设备全局唯一标识")
private String deviceUniqueId;
@Schema(description = "设备名称", example = "赵六")
@ExcelProperty("设备名称")
private String deviceName;
@Schema(description = "LP设备名称", example = "李四")
@ExcelProperty("LP设备名称")
private String lpDeviceName;
@Schema(description = "设备分类编码")
@ExcelProperty("设备分类编码")
private String categoryCode;
@Schema(description = "设备分类名称", example = "芋艿")
@ExcelProperty("设备分类名称")
private String deviceCategoryName;
@Schema(description = "设备分类ID", example = "15366")
@ExcelProperty("设备分类ID")
private String deviceCategoryUniqueId;
@Schema(description = "隔离标识", example = "29422")
@ExcelProperty("隔离标识")
private String farmIsolationId;
@Schema(description = "LP产品标识")
@ExcelProperty("LP产品标识")
private String lpProductKey;
@Schema(description = "LP产品名称", example = "李四")
@ExcelProperty("LP产品名称")
private String lpProductName;
@Schema(description = "LP产品唯一ID", example = "10175")
@ExcelProperty("LP产品唯一ID")
private String lpProductUniqueId;
@Schema(description = "设备状态", example = "2")
@ExcelProperty("设备状态")
private Integer status;
@Schema(description = "设备类型", example = "2")
@ExcelProperty("设备类型")
private String deviceType;
@Schema(description = "预留类型字段", example = "1")
@ExcelProperty("预留类型字段")
private String type;
@Schema(description = "设备厂商")
@ExcelProperty("设备厂商")
private String vendor;
@Schema(description = "设备描述", example = "随便")
@ExcelProperty("设备描述")
private String description;
@Schema(description = "分类描述类型", example = "1")
@ExcelProperty("分类描述类型")
private String categoryDescType;
@Schema(description = "创建时间戳")
@ExcelProperty("创建时间戳")
private LocalDateTime createTime;
@Schema(description = "记录创建时间")
@ExcelProperty("记录创建时间")
private LocalDateTime createdAt;
@Schema(description = "记录更新时间")
@ExcelProperty("记录更新时间")
private LocalDateTime updatedAt;
@Schema(description = "设备图片")
@ExcelProperty("设备图片")
private String image;
@Schema(description = "告警状态图片")
@ExcelProperty("告警状态图片")
private String alarmImage;
@Schema(description = "离线状态图片")
@ExcelProperty("离线状态图片")
private String offlineImage;
@Schema(description = "分类图标")
@ExcelProperty("分类图标")
private String categoryIcon;
@Schema(description = "电池电量(0-100)")
@ExcelProperty("电池电量(0-100)")
private Integer battery;
@Schema(description = "信号强度")
@ExcelProperty("信号强度")
private Short rssi;
@Schema(description = "物联网卡过期时间")
@ExcelProperty("物联网卡过期时间")
private LocalDateTime iotCardExpireTime;
@Schema(description = "是否存在物联网卡")
@ExcelProperty("是否存在物联网卡")
private Boolean isIotCardExisted;
@Schema(description = "边缘实例ID", example = "13311")
@ExcelProperty("边缘实例ID")
private String edgeInstanceUniqueId;
@Schema(description = "数据快照")
@ExcelProperty("数据快照")
private String dataImage;
@Schema(description = "基地id", example = "9675")
@ExcelProperty("基地id")
private String baseId;
@Schema(description = "基地", example = "芋艿")
@ExcelProperty("基地")
private String baseName;
@Schema(description = "地块ID", example = "22883")
@ExcelProperty("地块ID")
private String plotId;
@Schema(description = "地块", example = "李四")
@ExcelProperty("地块")
private String plotName;
@Schema(description = "租户id", example = "11502")
@ExcelProperty("租户id")
private String tenantId;
}
package cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import cn.idev.excel.annotation.*;
@Schema(description = "管理后台 - 设备信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class DeviceInfoRespVO {
@Schema(description = "设备全局唯一标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "9620")
@ExcelProperty("设备全局唯一标识")
private String deviceUniqueId;
@Schema(description = "设备名称", example = "赵六")
@ExcelProperty("设备名称")
private String deviceName;
@Schema(description = "LP设备名称", example = "李四")
@ExcelProperty("LP设备名称")
private String lpDeviceName;
@Schema(description = "设备分类编码")
@ExcelProperty("设备分类编码")
private String categoryCode;
@Schema(description = "设备分类名称", example = "芋艿")
@ExcelProperty("设备分类名称")
private String deviceCategoryName;
@Schema(description = "设备分类ID", example = "15366")
@ExcelProperty("设备分类ID")
private String deviceCategoryUniqueId;
@Schema(description = "隔离标识", example = "29422")
@ExcelProperty("隔离标识")
private String farmIsolationId;
@Schema(description = "LP产品标识")
@ExcelProperty("LP产品标识")
private String lpProductKey;
@Schema(description = "LP产品名称", example = "李四")
@ExcelProperty("LP产品名称")
private String lpProductName;
@Schema(description = "LP产品唯一ID", example = "10175")
@ExcelProperty("LP产品唯一ID")
private String lpProductUniqueId;
@Schema(description = "设备状态", example = "2")
@ExcelProperty("设备状态")
private Integer status;
@Schema(description = "设备类型", example = "2")
@ExcelProperty("设备类型")
private String deviceType;
@Schema(description = "预留类型字段", example = "1")
@ExcelProperty("预留类型字段")
private String type;
@Schema(description = "设备厂商")
@ExcelProperty("设备厂商")
private String vendor;
@Schema(description = "设备描述", example = "随便")
@ExcelProperty("设备描述")
private String description;
@Schema(description = "分类描述类型", example = "1")
@ExcelProperty("分类描述类型")
private String categoryDescType;
@Schema(description = "创建时间戳")
@ExcelProperty("创建时间戳")
private LocalDateTime createTime;
@Schema(description = "记录创建时间")
@ExcelProperty("记录创建时间")
private LocalDateTime createdAt;
@Schema(description = "记录更新时间")
@ExcelProperty("记录更新时间")
private LocalDateTime updatedAt;
@Schema(description = "设备图片")
@ExcelProperty("设备图片")
private String image;
@Schema(description = "告警状态图片")
@ExcelProperty("告警状态图片")
private String alarmImage;
@Schema(description = "离线状态图片")
@ExcelProperty("离线状态图片")
private String offlineImage;
@Schema(description = "分类图标")
@ExcelProperty("分类图标")
private String categoryIcon;
@Schema(description = "电池电量(0-100)")
@ExcelProperty("电池电量(0-100)")
private Integer battery;
@Schema(description = "信号强度")
@ExcelProperty("信号强度")
private Short rssi;
@Schema(description = "物联网卡过期时间")
@ExcelProperty("物联网卡过期时间")
private LocalDateTime iotCardExpireTime;
@Schema(description = "是否存在物联网卡")
@ExcelProperty("是否存在物联网卡")
private Boolean isIotCardExisted;
@Schema(description = "边缘实例ID", example = "13311")
@ExcelProperty("边缘实例ID")
private String edgeInstanceUniqueId;
@Schema(description = "数据快照")
@ExcelProperty("数据快照")
private String dataImage;
@Schema(description = "基地id", example = "9675")
@ExcelProperty("基地id")
private String baseId;
@Schema(description = "基地", example = "芋艿")
@ExcelProperty("基地")
private String baseName;
@Schema(description = "地块ID", example = "22883")
@ExcelProperty("地块ID")
private String plotId;
@Schema(description = "地块", example = "李四")
@ExcelProperty("地块")
private String plotName;
@Schema(description = "租户id", example = "11502")
@ExcelProperty("租户id")
private String tenantId;
private String point;
}

View File

@@ -110,5 +110,5 @@ public class DeviceInfoSaveReqVO {
@Schema(description = "租户id", example = "11502")
private String tenantId;
private String point;
}

View File

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.farm.controller.admin.disasterdata;
import cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo.DisasterDataPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo.DisasterDataRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo.DisasterDataSaveReqVO;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import jakarta.validation.Valid;
import jakarta.validation.Valid;
@@ -81,6 +82,7 @@ public class DisasterDataController {
@GetMapping("/page")
@Operation(summary = "获得灾害数据分页")
@PreAuthorize("@ss.hasPermission('farm:disaster-data:query')")
public CommonResult<PageResult<DisasterDataRespVO>> getDisasterDataPage(@Valid DisasterDataPageReqVO pageReqVO) {
PageResult<DisasterDataDO> pageResult = disasterDataService.getDisasterDataPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, DisasterDataRespVO.class));

View File

@@ -18,7 +18,7 @@ public class ModelManagementPageReqVO extends PageParam {
private String name;
@Schema(description = "模型名称", example = "芋艿")
private String modelName;
private Integer type;
@Schema(description = "物种id", example = "12816")
private String speciesId;

View File

@@ -211,7 +211,7 @@ public class DeviceInfoDO extends BaseDO {
private String plotName;
private String tenantId;
private String point;
/**
* 获取设备图片集合
*/

View File

@@ -36,7 +36,6 @@ public class DisasterDataDO extends BaseDO {
* 灾害类型 2=病害,1=虫害,3=草害
*/
private Integer category;
private String categoryName;
/**
* 灾害类别 1:普通; 2:气象灾害
*/

View File

@@ -3,10 +3,8 @@ package cn.iocoder.yudao.module.farm.dal.mysql.disasterdata;
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.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.farm.controller.admin.deviceplotrelation.vo.DevicePlotRelationPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.DisasterDataReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo.DisasterDataPageReqVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.deviceplotrelation.DevicePlotRelationDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -20,6 +18,13 @@ import java.util.List;
*/
@Mapper
public interface DisasterDataMapper extends BaseMapperX<DisasterDataDO> {
default PageResult<DisasterDataDO> selectPage(DisasterDataPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<DisasterDataDO>()
.eqIfPresent(DisasterDataDO::getType, reqVO.getType())
.eqIfPresent(DisasterDataDO::getUseStatus, reqVO.getUseStatus())
.eqIfPresent(DisasterDataDO::getCategory, reqVO.getCategory())
.orderByDesc(DisasterDataDO::getId));
}
List<DisasterDataDO> selectDisasterDataPage(@Param("req") DisasterDataPageReqVO reqVO);
@@ -27,10 +32,6 @@ public interface DisasterDataMapper extends BaseMapperX<DisasterDataDO> {
DisasterDataDO selectById(String id);
void deleteByIds(List<String> ids);
void deleteById(String id);
int updateById(DisasterDataDO updateObj);
int insert(DisasterDataDO disasterData);
@@ -39,11 +40,6 @@ public interface DisasterDataMapper extends BaseMapperX<DisasterDataDO> {
List<DisasterDataDO> selectMore(DisasterDataReqVO reqVO);
default PageResult<DisasterDataDO> selectPage(DisasterDataPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<DisasterDataDO>()
.eqIfPresent(DisasterDataDO::getType, reqVO.getType())
.eqIfPresent(DisasterDataDO::getCategory, reqVO.getCategory())
.eqIfPresent(DisasterDataDO::getUseStatus, reqVO.getUseStatus())
.orderByDesc(DisasterDataDO::getCreateTime));
}
int deleteById(String id);
}

View File

@@ -24,6 +24,7 @@ public interface ModelManagementMapper extends BaseMapperX<ModelManagementDO> {
.likeIfPresent(ModelManagementDO::getModelName, reqVO.getModelName())
.likeIfPresent(ModelManagementDO::getModelName, reqVO.getName())
.eqIfPresent(ModelManagementDO::getSpeciesId, reqVO.getSpeciesId())
.eqIfPresent(ModelManagementDO::getType, reqVO.getType())
.likeIfPresent(ModelManagementDO::getSpeciesName, reqVO.getSpeciesName())
.eqIfPresent(ModelManagementDO::getCycle, reqVO.getCycle())
.eqIfPresent(ModelManagementDO::getHarvest, reqVO.getHarvest())

View File

@@ -14,7 +14,6 @@ import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictMapper;
import cn.iocoder.yudao.module.farm.enums.CommonConstants;
import cn.iocoder.yudao.module.farm.framework.util.ImageCollectionUtil;
import cn.iocoder.yudao.module.farm.utils.StrHelperUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
@@ -27,7 +26,8 @@ import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.*;
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.DICT_TYPE_CODE_1;
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.DICT_TYPE_CODE_2;
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.DISASTER_DATA_NOT_EXISTS;
/**
@@ -65,8 +65,6 @@ public class DisasterDataServiceImpl implements DisasterDataService {
disasterData.setCreator(getLoginUser().getId().toString());
disasterData.setTenantId(getLoginUser().getTenantId().toString());
disasterDataMapper.insert(disasterData);
// 同步
this.syncCreateDict(disasterData.getId());
// 返回
return disasterData.getId();
}
@@ -180,14 +178,7 @@ public class DisasterDataServiceImpl implements DisasterDataService {
public void deleteDisasterData(String id) {
// 校验存在
validateDisasterDataExists(id);
// 同步
this.syncDeleteDict(id);
// 删除
DisasterDataDO aDo = new DisasterDataDO();
aDo.setId(id);
aDo.setDeleted(true);
disasterDataMapper.updateById(aDo);
disasterDataMapper.deleteById(id);
}
private void syncDeleteDict(String id) {
@@ -234,8 +225,8 @@ public class DisasterDataServiceImpl implements DisasterDataService {
}
@Override
public PageResult<DisasterDataDO> getDisasterDataPage(DisasterDataPageReqVO reqVO) {
return disasterDataMapper.selectPage(reqVO);
public PageResult<DisasterDataDO> getDisasterDataPage(DisasterDataPageReqVO pageReqVO) {
return disasterDataMapper.selectPage(pageReqVO);
}
}

View File

@@ -3,14 +3,13 @@ package cn.iocoder.yudao.module.farm.service.modelmanagement;
import cn.hutool.core.util.IdUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.DisasterDataReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.modelcycle.vo.ModelCycleRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperation.vo.ModelFarmingOperationRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.modelmanagement.vo.ModelManagementPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.modelmanagement.vo.ModelManagementRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.modelmanagement.vo.ModelManagementSaveReqVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.modelcycle.ModelCycleDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.modelenvironmentindex.ModelEnvironmentIndexDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.modelfarmingoperation.ModelFarmingOperationDO;
@@ -26,7 +25,6 @@ import cn.iocoder.yudao.module.farm.dal.mysql.modelfarmingoperationinput.ModelFa
import cn.iocoder.yudao.module.farm.dal.mysql.modelmanagement.ModelManagementMapper;
import cn.iocoder.yudao.module.farm.dal.mysql.modelpestdiseaseweed.ModelPestDiseaseWeedMapper;
import cn.iocoder.yudao.module.farm.dal.mysql.modelweatherdisaster.ModelWeatherDisasterMapper;
import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO;
import cn.iocoder.yudao.module.farm.enums.CommonConstants;
import cn.iocoder.yudao.module.farm.framework.util.ModelManagementConvertUtil;
import cn.iocoder.yudao.module.farm.service.disasterdata.DisasterDataService;
@@ -42,7 +40,7 @@ import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.*;
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.MODEL_TYPE_2;
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.MODEL_MANAGEMENT_NOT_EXISTS;
/**
@@ -99,7 +97,6 @@ public class ModelManagementServiceImpl implements ModelManagementService {
if (createReqVO.getSuitablePlantingAreas() != null && !createReqVO.getSuitablePlantingAreas().isEmpty()) {
modelManagement.setSuitablePlantingAreasList(createReqVO.getSuitablePlantingAreas());
}
// 处理speciesImage字段,优先使用图片集合
if (createReqVO.getSpeciesImageList() != null && !createReqVO.getSpeciesImageList().isEmpty()) {
modelManagement.setSpeciesImageList(createReqVO.getSpeciesImageList());
@@ -141,49 +138,55 @@ public class ModelManagementServiceImpl implements ModelManagementService {
List<ModelCycleDO> originalCycles = modelCycleMapper.selectListByModelId(id);
for (ModelCycleDO originalCycle : originalCycles) {
// 复制周期
ModelCycleDO newCycle = BeanUtils.toBean(originalCycle, ModelCycleDO.class);
String newCycleId = IdUtil.fastUUID();
originalCycle.setId(newCycleId);
originalCycle.setModelId(newModelId);
modelCycleMapper.insert(originalCycle);
newCycle.setId(newCycleId);
newCycle.setModelId(newModelId);
modelCycleMapper.insert(newCycle);
// 复制环境指标
List<ModelEnvironmentIndexDO> environmentIndexes = modelEnvironmentIndexMapper.selectByCycleId(originalCycle.getId());
for (ModelEnvironmentIndexDO envIndex : environmentIndexes) {
envIndex.setId(IdUtil.fastUUID());
envIndex.setCycleId(newCycleId);
modelEnvironmentIndexMapper.insert(envIndex);
ModelEnvironmentIndexDO newEnv = BeanUtils.toBean(envIndex, ModelEnvironmentIndexDO.class);
newEnv.setId(IdUtil.fastUUID());
newEnv.setCycleId(newCycleId);
modelEnvironmentIndexMapper.insert(newEnv);
}
// 复制气象灾害
List<ModelWeatherDisasterDO> weatherDisasters = modelWeatherDisasterMapper.selectByCycleId(originalCycle.getId());
for (ModelWeatherDisasterDO weatherDisaster : weatherDisasters) {
weatherDisaster.setId(IdUtil.fastUUID());
weatherDisaster.setCycleId(newCycleId);
modelWeatherDisasterMapper.insert(weatherDisaster);
ModelWeatherDisasterDO newWeather = BeanUtils.toBean(weatherDisaster, ModelWeatherDisasterDO.class);
newWeather.setId(IdUtil.fastUUID());
newWeather.setCycleId(newCycleId);
modelWeatherDisasterMapper.insert(newWeather);
}
// 复制病虫草灾害
List<ModelPestDiseaseWeedDO> pestDiseaseWeeds = modelPestDiseaseWeedMapper.selectByCycleId(originalCycle.getId());
for (ModelPestDiseaseWeedDO pestDiseaseWeed : pestDiseaseWeeds) {
pestDiseaseWeed.setId(IdUtil.fastUUID());
pestDiseaseWeed.setCycleId(newCycleId);
modelPestDiseaseWeedMapper.insert(pestDiseaseWeed);
ModelPestDiseaseWeedDO newPest = BeanUtils.toBean(pestDiseaseWeed, ModelPestDiseaseWeedDO.class);
newPest.setId(IdUtil.fastUUID());
newPest.setCycleId(newCycleId);
modelPestDiseaseWeedMapper.insert(newPest);
}
// 复制农事操作
List<ModelFarmingOperationDO> farmingOperations = modelFarmingOperationMapper.selectByCycleId(originalCycle.getId());
for (ModelFarmingOperationDO farmingOperation : farmingOperations) {
ModelFarmingOperationDO newFarming = BeanUtils.toBean(farmingOperation, ModelFarmingOperationDO.class);
String newFarmingId = IdUtil.fastUUID();
farmingOperation.setId(newFarmingId);
farmingOperation.setCycleId(newCycleId);
modelFarmingOperationMapper.insert(farmingOperation);
newFarming.setId(newFarmingId);
newFarming.setCycleId(newCycleId);
modelFarmingOperationMapper.insert(newFarming);
// 复制农事操作投入品
List<ModelFarmingOperationInputDO> farmingOperationInputs = modelFarmingOperationInputMapper.selectByFarmingId(farmingOperation.getId());
for (ModelFarmingOperationInputDO farmingOperationInput : farmingOperationInputs) {
farmingOperationInput.setId(IdUtil.fastUUID());
farmingOperationInput.setFarmingId(newFarmingId);
modelFarmingOperationInputMapper.insert(farmingOperationInput);
ModelFarmingOperationInputDO newInput = BeanUtils.toBean(farmingOperationInput, ModelFarmingOperationInputDO.class);
newInput.setId(IdUtil.fastUUID());
newInput.setFarmingId(newFarmingId);
modelFarmingOperationInputMapper.insert(newInput);
}
}
}
@@ -258,32 +261,12 @@ public class ModelManagementServiceImpl implements ModelManagementService {
@Override
public ModelManagementRespVO getModelManagement(String id) {
List<SysDictDO> dictDOList = sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4);
Map<String, String> dictMap = dictDOList.stream().filter(e -> e.getField2Code() != null).collect(Collectors.toMap(SysDictDO::getField2Code, SysDictDO::getField2Name, (v1, v2) -> v1));
DisasterDataReqVO reqVO = new DisasterDataReqVO();
reqVO.setType(WEATHER_DISASTER);
List<DisasterDataDO> weatherDisasterDataList = disasterDataService.getDisasterDataList(reqVO);
Map<String, DisasterDataDO> weatherDisasterDataMap = weatherDisasterDataList.stream().collect(Collectors.toMap(DisasterDataDO::getName, e -> e, (v1, v2) -> v1));
reqVO.setType(COMMON_DISASTER);
List<DisasterDataDO> commonDisasterDataList = disasterDataService.getDisasterDataList(reqVO);
Map<String, DisasterDataDO> commonDisasterDataMap = commonDisasterDataList.stream().collect(Collectors.toMap(DisasterDataDO::getName, e -> e, (v1, v2) -> v1));
List<SysDictDO> unit1List = sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4_1); // 吨
Map<String, String> unit1Map = unit1List.stream().collect(Collectors.toMap(SysDictDO::getField1Code, SysDictDO::getField1Name, (v1, v2) -> v1));
List<SysDictDO> unit2List = sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_4_2); // 包
Map<String, String> unit2Map = unit2List.stream().collect(Collectors.toMap(SysDictDO::getField1Code, SysDictDO::getField1Name, (v1, v2) -> v1));
ModelManagementDO modelManagementDO = modelManagementMapper.selectById(id);
if (modelManagementDO == null) {
return null;
}
// 使用统一的转换方法
ModelManagementRespVO bean = ModelManagementConvertUtil.convertToRespVO(modelManagementDO);
// 设置模型周期信息
List<ModelCycleRespVO> vos = new ArrayList<>();
List<ModelCycleDO> list = modelCycleMapper.selectListByModelId(id);
@@ -295,17 +278,15 @@ public class ModelManagementServiceImpl implements ModelManagementService {
//气象灾害
List<ModelWeatherDisasterDO> weatherDisasterDO = modelWeatherDisasterMapper.selectByCycleId(cycle.getId());
for (ModelWeatherDisasterDO aDo : weatherDisasterDO) {
DisasterDataDO temp = weatherDisasterDataMap.get(aDo.getName());
aDo.setDisasterDescription(temp.getDisasterDescription());
aDo.setTreatmentSuggestion(temp.getTreatmentSuggestion());
aDo.setDisasterDescription(aDo.getDisasterDescription());
aDo.setTreatmentSuggestion(aDo.getTreatmentSuggestion());
}
vo.setWeatherDisasterDOS(weatherDisasterDO);
//病虫草灾害
List<ModelPestDiseaseWeedDO> pestDiseaseWeedDO = modelPestDiseaseWeedMapper.selectByCycleId(cycle.getId());
for (ModelPestDiseaseWeedDO aDo : pestDiseaseWeedDO) {
DisasterDataDO temp = commonDisasterDataMap.get(aDo.getName());
aDo.setDisasterDescription(temp.getDisasterDescription());
aDo.setTreatmentSuggestion(temp.getTreatmentSuggestion());
aDo.setDisasterDescription(aDo.getDisasterDescription());
aDo.setTreatmentSuggestion(aDo.getTreatmentSuggestion());
}
vo.setPestDiseaseWeedDOS(pestDiseaseWeedDO);
//农事操作
@@ -315,9 +296,9 @@ public class ModelManagementServiceImpl implements ModelManagementService {
ModelFarmingOperationRespVO respVO = BeanUtils.toBean(e, ModelFarmingOperationRespVO.class);
List<ModelFarmingOperationInputDO> farmingOperationInputDOS = modelFarmingOperationInputMapper.selectByFarmingId(e.getId());
for (ModelFarmingOperationInputDO aDo : farmingOperationInputDOS) {
aDo.setInputsName(dictMap.get(aDo.getInputsId()));
aDo.setUnitName(unit1Map.get(aDo.getUnit()));
aDo.setPackageUnitName(unit2Map.get(aDo.getPackageUnit()));
aDo.setInputsName(DictFrameworkUtils.parseDictDataLabel("asset_type", aDo.getInputsId()));
aDo.setUnitName(DictFrameworkUtils.parseDictDataLabel("asset_unit", aDo.getUnit()));
aDo.setPackageUnitName(DictFrameworkUtils.parseDictDataLabel("asset_price", aDo.getPackageUnit()));
}
respVO.setFarmingOperationInputDOS(farmingOperationInputDOS);
respVOS.add(respVO);
@@ -331,6 +312,7 @@ public class ModelManagementServiceImpl implements ModelManagementService {
@Override
public PageResult<ModelManagementDO> getModelManagementPage(ModelManagementPageReqVO pageReqVO) {
pageReqVO.setType(1);
return modelManagementMapper.selectPage(pageReqVO);
}
@@ -352,7 +334,8 @@ public class ModelManagementServiceImpl implements ModelManagementService {
newModelCase.setId(newModelId);
newModelCase.setType(CommonConstants.MODEL_TYPE_1);
newModelCase.setModelName(modelManagementDO.getModelName() + "-复制模型");
newModelCase.setQuoteCount(0);
newModelCase.setIsRelease(0);
// 3. 保存新的模型引用案例
modelManagementMapper.insert(newModelCase);
@@ -360,49 +343,55 @@ public class ModelManagementServiceImpl implements ModelManagementService {
List<ModelCycleDO> originalCycles = modelCycleMapper.selectListByModelId(createReqVO.getId());
for (ModelCycleDO originalCycle : originalCycles) {
// 复制周期
ModelCycleDO newCycle = BeanUtils.toBean(originalCycle, ModelCycleDO.class);
String newCycleId = IdUtil.fastUUID();
originalCycle.setId(newCycleId);
originalCycle.setModelId(newModelId);
modelCycleMapper.insert(originalCycle);
newCycle.setId(newCycleId);
newCycle.setModelId(newModelId);
modelCycleMapper.insert(newCycle);
// 复制环境指标
List<ModelEnvironmentIndexDO> environmentIndexes = modelEnvironmentIndexMapper.selectByCycleId(originalCycle.getId());
for (ModelEnvironmentIndexDO envIndex : environmentIndexes) {
envIndex.setId(IdUtil.fastUUID());
envIndex.setCycleId(newCycleId);
modelEnvironmentIndexMapper.insert(envIndex);
ModelEnvironmentIndexDO newEnv = BeanUtils.toBean(envIndex, ModelEnvironmentIndexDO.class);
newEnv.setId(IdUtil.fastUUID());
newEnv.setCycleId(newCycleId);
modelEnvironmentIndexMapper.insert(newEnv);
}
// 复制气象灾害
List<ModelWeatherDisasterDO> weatherDisasters = modelWeatherDisasterMapper.selectByCycleId(originalCycle.getId());
for (ModelWeatherDisasterDO weatherDisaster : weatherDisasters) {
weatherDisaster.setId(IdUtil.fastUUID());
weatherDisaster.setCycleId(newCycleId);
modelWeatherDisasterMapper.insert(weatherDisaster);
ModelWeatherDisasterDO newWeather = BeanUtils.toBean(weatherDisaster, ModelWeatherDisasterDO.class);
newWeather.setId(IdUtil.fastUUID());
newWeather.setCycleId(newCycleId);
modelWeatherDisasterMapper.insert(newWeather);
}
// 复制病虫草灾害
List<ModelPestDiseaseWeedDO> pestDiseaseWeeds = modelPestDiseaseWeedMapper.selectByCycleId(originalCycle.getId());
for (ModelPestDiseaseWeedDO pestDiseaseWeed : pestDiseaseWeeds) {
pestDiseaseWeed.setId(IdUtil.fastUUID());
pestDiseaseWeed.setCycleId(newCycleId);
modelPestDiseaseWeedMapper.insert(pestDiseaseWeed);
ModelPestDiseaseWeedDO nuwPest = BeanUtils.toBean(pestDiseaseWeed, ModelPestDiseaseWeedDO.class);
nuwPest.setId(IdUtil.fastUUID());
nuwPest.setCycleId(newCycleId);
modelPestDiseaseWeedMapper.insert(nuwPest);
}
// 复制农事操作
List<ModelFarmingOperationDO> farmingOperations = modelFarmingOperationMapper.selectByCycleId(originalCycle.getId());
for (ModelFarmingOperationDO farmingOperation : farmingOperations) {
ModelFarmingOperationDO newFarming = BeanUtils.toBean(farmingOperation, ModelFarmingOperationDO.class);
String newFarmingId = IdUtil.fastUUID();
farmingOperation.setId(newFarmingId);
farmingOperation.setCycleId(newCycleId);
modelFarmingOperationMapper.insert(farmingOperation);
newFarming.setId(newFarmingId);
newFarming.setCycleId(newCycleId);
modelFarmingOperationMapper.insert(newFarming);
// 复制农事操作投入品
List<ModelFarmingOperationInputDO> farmingOperationInputs = modelFarmingOperationInputMapper.selectByFarmingId(farmingOperation.getId());
for (ModelFarmingOperationInputDO farmingOperationInput : farmingOperationInputs) {
farmingOperationInput.setId(IdUtil.fastUUID());
farmingOperationInput.setFarmingId(newFarmingId);
modelFarmingOperationInputMapper.insert(farmingOperationInput);
ModelFarmingOperationInputDO newInput = BeanUtils.toBean(farmingOperationInput, ModelFarmingOperationInputDO.class);
newInput.setId(IdUtil.fastUUID());
newInput.setFarmingId(newFarmingId);
modelFarmingOperationInputMapper.insert(newInput);
}
}
}

View File

@@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictThreeLvRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesAndModelTreeRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO;
@@ -388,6 +387,7 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
lambdaQueryWrapper.eq(ModelManagementDO::getTenantId, getLoginUser().getTenantId());
lambdaQueryWrapper.eq(ModelManagementDO::getType, CommonConstants.MODEL_TYPE_1);
lambdaQueryWrapper.eq(ModelManagementDO::getSpeciesId, speciesId);
lambdaQueryWrapper.eq(ModelManagementDO::getIsRelease, 1);
List<ModelManagementDO> modelList = modelManagementMapper.selectList(lambdaQueryWrapper);
return modelList.stream()

View File

@@ -46,6 +46,11 @@
use_status,
deleted
</sql>
<delete id="deleteById" parameterType="String">
delete
from farm_disaster_data
where id = #{id}
</delete>
<!-- 分页查询 -->
<select id="selectDisasterDataPage"
@@ -91,15 +96,6 @@
</select>
<delete id="deleteByIds">
</delete>
<delete id="deleteById" parameterType="string">
</delete>
<update id="updateById" parameterType="cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO">
UPDATE farm_disaster_data
<set>
@@ -211,7 +207,6 @@
<select id="selectMore"
parameterType="cn.iocoder.yudao.module.farm.controller.admin.dict.vo.DisasterDataReqVO"
resultType="cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO">
SELECT <include refid="all_fields"/> FROM farm_disaster_data
<where>
<if test="id != null and id != ''">AND id = #{id}</if>