From d3a3cd585f4ed042f2edf84b9a91dffc8e68aaf1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A1=BE=E5=90=9B=E7=A6=B9?= <2673609096@qq.com>
Date: Thu, 14 Aug 2025 11:31:50 +0800
Subject: [PATCH] =?UTF-8?q?farm=E6=A8=A1=E5=9D=97-=E5=9F=BA=E7=A1=80?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
yudao-module-farm/pom.xml | 21 +++
.../admin/baseinfo/BaseInfoController.java | 104 ++++++++++++
.../admin/baseinfo/vo/BaseInfoPageReqVO.java | 36 ++++
.../admin/baseinfo/vo/BaseInfoRespVO.java | 44 +++++
.../admin/baseinfo/vo/BaseInfoSaveReqVO.java | 31 ++++
.../companyinfo/CompanyInfoController.java | 104 ++++++++++++
.../companyinfo/vo/CompanyInfoPageReqVO.java | 65 +++++++
.../companyinfo/vo/CompanyInfoRespVO.java | 83 +++++++++
.../companyinfo/vo/CompanyInfoSaveReqVO.java | 60 +++++++
.../CultivationAreaController.java | 104 ++++++++++++
.../vo/CultivationAreaPageReqVO.java | 48 ++++++
.../vo/CultivationAreaRespVO.java | 60 +++++++
.../vo/CultivationAreaSaveReqVO.java | 43 +++++
.../deviceinfo/DeviceInfoController.java | 104 ++++++++++++
.../deviceinfo/vo/DeviceInfoPageReqVO.java | 117 +++++++++++++
.../admin/deviceinfo/vo/DeviceInfoRespVO.java | 151 +++++++++++++++++
.../deviceinfo/vo/DeviceInfoSaveReqVO.java | 113 +++++++++++++
.../DevicePlotRelationController.java | 104 ++++++++++++
.../vo/DevicePlotRelationPageReqVO.java | 53 ++++++
.../vo/DevicePlotRelationRespVO.java | 67 ++++++++
.../vo/DevicePlotRelationSaveReqVO.java | 48 ++++++
.../disasterdata/DisasterDataController.java | 104 ++++++++++++
.../vo/DisasterDataPageReqVO.java | 51 ++++++
.../disasterdata/vo/DisasterDataRespVO.java | 63 +++++++
.../vo/DisasterDataSaveReqVO.java | 45 +++++
.../EnvironmentIndexConfigController.java | 104 ++++++++++++
.../vo/EnvironmentIndexConfigPageReqVO.java | 47 ++++++
.../vo/EnvironmentIndexConfigRespVO.java | 59 +++++++
.../vo/EnvironmentIndexConfigSaveReqVO.java | 42 +++++
.../FarmingNameMaintenanceController.java | 104 ++++++++++++
.../vo/FarmingNameMaintenancePageReqVO.java | 44 +++++
.../vo/FarmingNameMaintenanceRespVO.java | 55 ++++++
.../vo/FarmingNameMaintenanceSaveReqVO.java | 39 +++++
.../FarmingRecordController.java | 104 ++++++++++++
.../vo/FarmingRecordPageReqVO.java | 69 ++++++++
.../farmingrecord/vo/FarmingRecordRespVO.java | 87 ++++++++++
.../vo/FarmingRecordSaveReqVO.java | 65 +++++++
.../FarmingRecordInputController.java | 104 ++++++++++++
.../vo/FarmingRecordInputPageReqVO.java | 69 ++++++++
.../vo/FarmingRecordInputRespVO.java | 88 ++++++++++
.../vo/FarmingRecordInputSaveReqVO.java | 64 +++++++
.../FarmingTypeMaintenanceController.java | 104 ++++++++++++
.../vo/FarmingTypeMaintenancePageReqVO.java | 41 +++++
.../vo/FarmingTypeMaintenanceRespVO.java | 51 ++++++
.../vo/FarmingTypeMaintenanceSaveReqVO.java | 36 ++++
.../FertilizerIndexController.java | 104 ++++++++++++
.../vo/FertilizerIndexPageReqVO.java | 47 ++++++
.../vo/FertilizerIndexRespVO.java | 59 +++++++
.../vo/FertilizerIndexSaveReqVO.java | 42 +++++
.../FoundationInfoController.java | 104 ++++++++++++
.../vo/FoundationInfoPageReqVO.java | 50 ++++++
.../vo/FoundationInfoRespVO.java | 63 +++++++
.../vo/FoundationInfoSaveReqVO.java | 45 +++++
.../inputlibrary/InputLibraryController.java | 104 ++++++++++++
.../vo/InputLibraryPageReqVO.java | 78 +++++++++
.../inputlibrary/vo/InputLibraryRespVO.java | 100 +++++++++++
.../vo/InputLibrarySaveReqVO.java | 73 ++++++++
.../MessageCenterController.java | 104 ++++++++++++
.../vo/MessageCenterPageReqVO.java | 55 ++++++
.../messagecenter/vo/MessageCenterRespVO.java | 68 ++++++++
.../vo/MessageCenterSaveReqVO.java | 51 ++++++
.../modelcycle/ModelCycleController.java | 104 ++++++++++++
.../modelcycle/vo/ModelCyclePageReqVO.java | 50 ++++++
.../admin/modelcycle/vo/ModelCycleRespVO.java | 63 +++++++
.../modelcycle/vo/ModelCycleSaveReqVO.java | 45 +++++
.../ModelEnvironmentIndexController.java | 104 ++++++++++++
.../vo/ModelEnvironmentIndexPageReqVO.java | 54 ++++++
.../vo/ModelEnvironmentIndexRespVO.java | 68 ++++++++
.../vo/ModelEnvironmentIndexSaveReqVO.java | 49 ++++++
.../ModelFarmingOperationController.java | 104 ++++++++++++
.../vo/ModelFarmingOperationPageReqVO.java | 56 +++++++
.../vo/ModelFarmingOperationRespVO.java | 71 ++++++++
.../vo/ModelFarmingOperationSaveReqVO.java | 51 ++++++
.../ModelFarmingOperationInputController.java | 104 ++++++++++++
.../ModelFarmingOperationInputPageReqVO.java | 54 ++++++
.../vo/ModelFarmingOperationInputRespVO.java | 68 ++++++++
.../ModelFarmingOperationInputSaveReqVO.java | 49 ++++++
.../ModelPestDiseaseWeedController.java | 104 ++++++++++++
.../vo/ModelPestDiseaseWeedPageReqVO.java | 50 ++++++
.../vo/ModelPestDiseaseWeedRespVO.java | 63 +++++++
.../vo/ModelPestDiseaseWeedSaveReqVO.java | 45 +++++
.../ModelWeatherDisasterController.java | 104 ++++++++++++
.../vo/ModelWeatherDisasterPageReqVO.java | 50 ++++++
.../vo/ModelWeatherDisasterRespVO.java | 63 +++++++
.../vo/ModelWeatherDisasterSaveReqVO.java | 45 +++++
.../PersonnelManagementController.java | 104 ++++++++++++
.../vo/PersonnelManagementPageReqVO.java | 53 ++++++
.../vo/PersonnelManagementRespVO.java | 67 ++++++++
.../vo/PersonnelManagementSaveReqVO.java | 48 ++++++
.../PestDiseaseWeedLibraryController.java | 104 ++++++++++++
.../vo/PestDiseaseWeedLibraryPageReqVO.java | 53 ++++++
.../vo/PestDiseaseWeedLibraryRespVO.java | 64 +++++++
.../vo/PestDiseaseWeedLibrarySaveReqVO.java | 48 ++++++
.../PesticideResidueIndexController.java | 104 ++++++++++++
.../vo/PesticideResidueIndexPageReqVO.java | 47 ++++++
.../vo/PesticideResidueIndexRespVO.java | 56 +++++++
.../vo/PesticideResidueIndexSaveReqVO.java | 42 +++++
.../admin/plotinfo/PlotInfoController.java | 104 ++++++++++++
.../admin/plotinfo/vo/PlotInfoPageReqVO.java | 43 +++++
.../admin/plotinfo/vo/PlotInfoRespVO.java | 53 ++++++
.../admin/plotinfo/vo/PlotInfoSaveReqVO.java | 38 +++++
.../ProductionPlanController.java | 104 ++++++++++++
.../vo/ProductionPlanPageReqVO.java | 57 +++++++
.../vo/ProductionPlanRespVO.java | 67 ++++++++
.../vo/ProductionPlanSaveReqVO.java | 49 ++++++
.../ProductManagementController.java | 104 ++++++++++++
.../vo/ProductManagementPageReqVO.java | 67 ++++++++
.../vo/ProductManagementRespVO.java | 85 ++++++++++
.../vo/ProductManagementSaveReqVO.java | 62 +++++++
.../SpeciesLibraryController.java | 104 ++++++++++++
.../vo/SpeciesLibraryPageReqVO.java | 56 +++++++
.../vo/SpeciesLibraryRespVO.java | 69 ++++++++
.../vo/SpeciesLibrarySaveReqVO.java | 51 ++++++
.../varietydata/VarietyDataController.java | 104 ++++++++++++
.../varietydata/vo/VarietyDataPageReqVO.java | 54 ++++++
.../varietydata/vo/VarietyDataRespVO.java | 66 ++++++++
.../varietydata/vo/VarietyDataSaveReqVO.java | 49 ++++++
.../WeatherDisasterLibraryController.java | 104 ++++++++++++
.../vo/WeatherDisasterLibraryPageReqVO.java | 50 ++++++
.../vo/WeatherDisasterLibraryRespVO.java | 61 +++++++
.../vo/WeatherDisasterLibrarySaveReqVO.java | 45 +++++
.../dal/dataobject/baseinfo/BaseInfoDO.java | 49 ++++++
.../dataobject/companyinfo/CompanyInfoDO.java | 88 ++++++++++
.../cultivationarea/CultivationAreaDO.java | 67 ++++++++
.../dataobject/deviceinfo/DeviceInfoDO.java | 158 ++++++++++++++++++
.../DevicePlotRelationDO.java | 72 ++++++++
.../disasterdata/DisasterDataDO.java | 68 ++++++++
.../EnvironmentIndexConfigDO.java | 64 +++++++
.../FarmingNameMaintenanceDO.java | 63 +++++++
.../farmingrecord/FarmingRecordDO.java | 93 +++++++++++
.../FarmingRecordInputDO.java | 94 +++++++++++
.../FarmingTypeMaintenanceDO.java | 56 +++++++
.../fertilizerindex/FertilizerIndexDO.java | 64 +++++++
.../foundationinfo/FoundationInfoDO.java | 68 ++++++++
.../inputlibrary/InputLibraryDO.java | 106 ++++++++++++
.../messagecenter/MessageCenterDO.java | 77 +++++++++
.../dataobject/modelcycle/ModelCycleDO.java | 68 ++++++++
.../ModelEnvironmentIndexDO.java | 74 ++++++++
.../ModelFarmingOperationDO.java | 76 +++++++++
.../ModelFarmingOperationInputDO.java | 73 ++++++++
.../ModelPestDiseaseWeedDO.java | 68 ++++++++
.../ModelWeatherDisasterDO.java | 68 ++++++++
.../PersonnelManagementDO.java | 72 ++++++++
.../PestDiseaseWeedLibraryDO.java | 72 ++++++++
.../PesticideResidueIndexDO.java | 64 +++++++
.../dal/dataobject/plotinfo/PlotInfoDO.java | 61 +++++++
.../productionplan/ProductionPlanDO.java | 74 ++++++++
.../ProductManagementDO.java | 92 ++++++++++
.../specieslibrary/SpeciesLibraryDO.java | 76 +++++++++
.../dataobject/varietydata/VarietyDataDO.java | 77 +++++++++
.../WeatherDisasterLibraryDO.java | 70 ++++++++
.../dal/mysql/baseinfo/BaseInfoMapper.java | 31 ++++
.../mysql/companyinfo/CompanyInfoMapper.java | 41 +++++
.../CultivationAreaMapper.java | 35 ++++
.../mysql/deviceinfo/DeviceInfoMapper.java | 58 +++++++
.../DevicePlotRelationMapper.java | 37 ++++
.../disasterdata/DisasterDataMapper.java | 36 ++++
.../EnvironmentIndexConfigMapper.java | 35 ++++
.../FarmingNameMaintenanceMapper.java | 34 ++++
.../farmingrecord/FarmingRecordMapper.java | 42 +++++
.../FarmingRecordInputMapper.java | 42 +++++
.../FarmingTypeMaintenanceMapper.java | 33 ++++
.../FertilizerIndexMapper.java | 35 ++++
.../foundationinfo/FoundationInfoMapper.java | 36 ++++
.../inputlibrary/InputLibraryMapper.java | 45 +++++
.../messagecenter/MessageCenterMapper.java | 37 ++++
.../mysql/modelcycle/ModelCycleMapper.java | 36 ++++
.../ModelEnvironmentIndexMapper.java | 37 ++++
.../ModelFarmingOperationMapper.java | 38 +++++
.../ModelFarmingOperationInputMapper.java | 37 ++++
.../ModelPestDiseaseWeedMapper.java | 36 ++++
.../ModelWeatherDisasterMapper.java | 36 ++++
.../PersonnelManagementMapper.java | 37 ++++
.../PestDiseaseWeedLibraryMapper.java | 37 ++++
.../PesticideResidueIndexMapper.java | 35 ++++
.../dal/mysql/plotinfo/PlotInfoMapper.java | 33 ++++
.../productionplan/ProductionPlanMapper.java | 36 ++++
.../ProductManagementMapper.java | 41 +++++
.../specieslibrary/SpeciesLibraryMapper.java | 38 +++++
.../mysql/varietydata/VarietyDataMapper.java | 37 ++++
.../WeatherDisasterLibraryMapper.java | 36 ++++
.../service/baseinfo/BaseInfoService.java | 62 +++++++
.../service/baseinfo/BaseInfoServiceImpl.java | 85 ++++++++++
.../companyinfo/CompanyInfoService.java | 62 +++++++
.../companyinfo/CompanyInfoServiceImpl.java | 85 ++++++++++
.../CultivationAreaService.java | 62 +++++++
.../CultivationAreaServiceImpl.java | 85 ++++++++++
.../service/deviceinfo/DeviceInfoService.java | 62 +++++++
.../deviceinfo/DeviceInfoServiceImpl.java | 85 ++++++++++
.../DevicePlotRelationService.java | 62 +++++++
.../DevicePlotRelationServiceImpl.java | 85 ++++++++++
.../disasterdata/DisasterDataService.java | 62 +++++++
.../disasterdata/DisasterDataServiceImpl.java | 85 ++++++++++
.../EnvironmentIndexConfigService.java | 62 +++++++
.../EnvironmentIndexConfigServiceImpl.java | 85 ++++++++++
.../FarmingNameMaintenanceService.java | 62 +++++++
.../FarmingNameMaintenanceServiceImpl.java | 85 ++++++++++
.../farmingrecord/FarmingRecordService.java | 62 +++++++
.../FarmingRecordServiceImpl.java | 85 ++++++++++
.../FarmingRecordInputService.java | 62 +++++++
.../FarmingRecordInputServiceImpl.java | 85 ++++++++++
.../FarmingTypeMaintenanceService.java | 62 +++++++
.../FarmingTypeMaintenanceServiceImpl.java | 85 ++++++++++
.../FertilizerIndexService.java | 62 +++++++
.../FertilizerIndexServiceImpl.java | 85 ++++++++++
.../foundationinfo/FoundationInfoService.java | 62 +++++++
.../FoundationInfoServiceImpl.java | 85 ++++++++++
.../inputlibrary/InputLibraryService.java | 62 +++++++
.../inputlibrary/InputLibraryServiceImpl.java | 85 ++++++++++
.../messagecenter/MessageCenterService.java | 62 +++++++
.../MessageCenterServiceImpl.java | 85 ++++++++++
.../service/modelcycle/ModelCycleService.java | 62 +++++++
.../modelcycle/ModelCycleServiceImpl.java | 85 ++++++++++
.../ModelEnvironmentIndexService.java | 62 +++++++
.../ModelEnvironmentIndexServiceImpl.java | 85 ++++++++++
.../ModelFarmingOperationService.java | 62 +++++++
.../ModelFarmingOperationServiceImpl.java | 85 ++++++++++
.../ModelFarmingOperationInputService.java | 62 +++++++
...ModelFarmingOperationInputServiceImpl.java | 85 ++++++++++
.../ModelPestDiseaseWeedService.java | 62 +++++++
.../ModelPestDiseaseWeedServiceImpl.java | 85 ++++++++++
.../ModelWeatherDisasterService.java | 62 +++++++
.../ModelWeatherDisasterServiceImpl.java | 85 ++++++++++
.../PersonnelManagementService.java | 62 +++++++
.../PersonnelManagementServiceImpl.java | 85 ++++++++++
.../PestDiseaseWeedLibraryService.java | 62 +++++++
.../PestDiseaseWeedLibraryServiceImpl.java | 85 ++++++++++
.../PesticideResidueIndexService.java | 62 +++++++
.../PesticideResidueIndexServiceImpl.java | 85 ++++++++++
.../service/plotinfo/PlotInfoService.java | 62 +++++++
.../service/plotinfo/PlotInfoServiceImpl.java | 85 ++++++++++
.../productionplan/ProductionPlanService.java | 62 +++++++
.../ProductionPlanServiceImpl.java | 85 ++++++++++
.../ProductManagementService.java | 62 +++++++
.../ProductManagementServiceImpl.java | 85 ++++++++++
.../specieslibrary/SpeciesLibraryService.java | 62 +++++++
.../SpeciesLibraryServiceImpl.java | 85 ++++++++++
.../varietydata/VarietyDataService.java | 62 +++++++
.../varietydata/VarietyDataServiceImpl.java | 85 ++++++++++
.../WeatherDisasterLibraryService.java | 62 +++++++
.../WeatherDisasterLibraryServiceImpl.java | 85 ++++++++++
.../mapper/baseinfo/BaseInfoMapper.xml | 12 ++
.../mapper/companyinfo/CompanyInfoMapper.xml | 12 ++
.../cultivationarea/CultivationAreaMapper.xml | 12 ++
.../mapper/deviceinfo/DeviceInfoMapper.xml | 12 ++
.../DevicePlotRelationMapper.xml | 12 ++
.../disasterdata/DisasterDataMapper.xml | 12 ++
.../EnvironmentIndexConfigMapper.xml | 12 ++
.../FarmingNameMaintenanceMapper.xml | 12 ++
.../farmingrecord/FarmingRecordMapper.xml | 12 ++
.../FarmingRecordInputMapper.xml | 12 ++
.../FarmingTypeMaintenanceMapper.xml | 12 ++
.../fertilizerindex/FertilizerIndexMapper.xml | 12 ++
.../foundationinfo/FoundationInfoMapper.xml | 12 ++
.../inputlibrary/InputLibraryMapper.xml | 12 ++
.../messagecenter/MessageCenterMapper.xml | 12 ++
.../mapper/modelcycle/ModelCycleMapper.xml | 12 ++
.../ModelEnvironmentIndexMapper.xml | 12 ++
.../ModelFarmingOperationMapper.xml | 12 ++
.../ModelFarmingOperationInputMapper.xml | 12 ++
.../ModelPestDiseaseWeedMapper.xml | 12 ++
.../ModelWeatherDisasterMapper.xml | 12 ++
.../PersonnelManagementMapper.xml | 12 ++
.../PestDiseaseWeedLibraryMapper.xml | 12 ++
.../PesticideResidueIndexMapper.xml | 12 ++
.../mapper/plotinfo/PlotInfoMapper.xml | 12 ++
.../productionplan/ProductionPlanMapper.xml | 12 ++
.../ProductManagementMapper.xml | 12 ++
.../specieslibrary/SpeciesLibraryMapper.xml | 12 ++
.../mapper/varietydata/VarietyDataMapper.xml | 12 ++
.../WeatherDisasterLibraryMapper.xml | 12 ++
271 files changed, 16569 insertions(+)
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/BaseInfoController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/CompanyInfoController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/CultivationAreaController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/DeviceInfoController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/DevicePlotRelationController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/DisasterDataController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/EnvironmentIndexConfigController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/FarmingNameMaintenanceController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenancePageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenanceRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenanceSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/FarmingRecordController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/FarmingRecordInputController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/FarmingTypeMaintenanceController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenancePageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenanceRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenanceSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/FertilizerIndexController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/FoundationInfoController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/InputLibraryController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibraryPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibraryRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibrarySaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/MessageCenterController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/ModelCycleController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCyclePageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCycleRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCycleSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/ModelEnvironmentIndexController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/ModelFarmingOperationController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/ModelFarmingOperationInputController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/ModelPestDiseaseWeedController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/ModelWeatherDisasterController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/PersonnelManagementController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/PestDiseaseWeedLibraryController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibraryPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibraryRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibrarySaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/PesticideResidueIndexController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/PlotInfoController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/ProductionPlanController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/ProductManagementController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibrarySaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/varietydata/VarietyDataController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/varietydata/vo/VarietyDataPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/varietydata/vo/VarietyDataRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/varietydata/vo/VarietyDataSaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/weatherdisasterlibrary/WeatherDisasterLibraryController.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/weatherdisasterlibrary/vo/WeatherDisasterLibraryPageReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/weatherdisasterlibrary/vo/WeatherDisasterLibraryRespVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/weatherdisasterlibrary/vo/WeatherDisasterLibrarySaveReqVO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/baseinfo/BaseInfoDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/companyinfo/CompanyInfoDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/cultivationarea/CultivationAreaDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/deviceinfo/DeviceInfoDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/deviceplotrelation/DevicePlotRelationDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/disasterdata/DisasterDataDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/environmentindexconfig/EnvironmentIndexConfigDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/farmingnamemaintenance/FarmingNameMaintenanceDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/farmingrecord/FarmingRecordDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/farmingrecordinput/FarmingRecordInputDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/farmingtypemaintenance/FarmingTypeMaintenanceDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/fertilizerindex/FertilizerIndexDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/foundationinfo/FoundationInfoDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/inputlibrary/InputLibraryDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/messagecenter/MessageCenterDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelcycle/ModelCycleDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelenvironmentindex/ModelEnvironmentIndexDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelfarmingoperation/ModelFarmingOperationDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelfarmingoperationinput/ModelFarmingOperationInputDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelpestdiseaseweed/ModelPestDiseaseWeedDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelweatherdisaster/ModelWeatherDisasterDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/personnelmanagement/PersonnelManagementDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/pestdiseaseweedlibrary/PestDiseaseWeedLibraryDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/pesticideresidueindex/PesticideResidueIndexDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/plotinfo/PlotInfoDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/productionplan/ProductionPlanDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/productmanagement/ProductManagementDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/specieslibrary/SpeciesLibraryDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/varietydata/VarietyDataDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/weatherdisasterlibrary/WeatherDisasterLibraryDO.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/baseinfo/BaseInfoMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/companyinfo/CompanyInfoMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/cultivationarea/CultivationAreaMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/deviceinfo/DeviceInfoMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/deviceplotrelation/DevicePlotRelationMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/disasterdata/DisasterDataMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/environmentindexconfig/EnvironmentIndexConfigMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/farmingnamemaintenance/FarmingNameMaintenanceMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/farmingrecord/FarmingRecordMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/farmingrecordinput/FarmingRecordInputMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/farmingtypemaintenance/FarmingTypeMaintenanceMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/fertilizerindex/FertilizerIndexMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/foundationinfo/FoundationInfoMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/inputlibrary/InputLibraryMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/messagecenter/MessageCenterMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/modelcycle/ModelCycleMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/modelenvironmentindex/ModelEnvironmentIndexMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/modelfarmingoperation/ModelFarmingOperationMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/modelfarmingoperationinput/ModelFarmingOperationInputMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/modelpestdiseaseweed/ModelPestDiseaseWeedMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/modelweatherdisaster/ModelWeatherDisasterMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/personnelmanagement/PersonnelManagementMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/pestdiseaseweedlibrary/PestDiseaseWeedLibraryMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/pesticideresidueindex/PesticideResidueIndexMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/plotinfo/PlotInfoMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/productionplan/ProductionPlanMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/productmanagement/ProductManagementMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/specieslibrary/SpeciesLibraryMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/varietydata/VarietyDataMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/weatherdisasterlibrary/WeatherDisasterLibraryMapper.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/companyinfo/CompanyInfoService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/companyinfo/CompanyInfoServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/cultivationarea/CultivationAreaService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/cultivationarea/CultivationAreaServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceplotrelation/DevicePlotRelationService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceplotrelation/DevicePlotRelationServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/disasterdata/DisasterDataService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/disasterdata/DisasterDataServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/environmentindexconfig/EnvironmentIndexConfigService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/environmentindexconfig/EnvironmentIndexConfigServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingnamemaintenance/FarmingNameMaintenanceService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingnamemaintenance/FarmingNameMaintenanceServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingrecord/FarmingRecordService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingrecord/FarmingRecordServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingrecordinput/FarmingRecordInputService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingrecordinput/FarmingRecordInputServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingtypemaintenance/FarmingTypeMaintenanceService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingtypemaintenance/FarmingTypeMaintenanceServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/fertilizerindex/FertilizerIndexService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/fertilizerindex/FertilizerIndexServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/foundationinfo/FoundationInfoService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/foundationinfo/FoundationInfoServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputLibraryService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputLibraryServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/messagecenter/MessageCenterService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/messagecenter/MessageCenterServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelcycle/ModelCycleService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelcycle/ModelCycleServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelenvironmentindex/ModelEnvironmentIndexService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelenvironmentindex/ModelEnvironmentIndexServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelfarmingoperation/ModelFarmingOperationService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelfarmingoperation/ModelFarmingOperationServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelfarmingoperationinput/ModelFarmingOperationInputService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelfarmingoperationinput/ModelFarmingOperationInputServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelpestdiseaseweed/ModelPestDiseaseWeedService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelpestdiseaseweed/ModelPestDiseaseWeedServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelweatherdisaster/ModelWeatherDisasterService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelweatherdisaster/ModelWeatherDisasterServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/personnelmanagement/PersonnelManagementService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/personnelmanagement/PersonnelManagementServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/pestdiseaseweedlibrary/PestDiseaseWeedLibraryService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/pestdiseaseweedlibrary/PestDiseaseWeedLibraryServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/pesticideresidueindex/PesticideResidueIndexService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/pesticideresidueindex/PesticideResidueIndexServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productmanagement/ProductManagementService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productmanagement/ProductManagementServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/varietydata/VarietyDataService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/varietydata/VarietyDataServiceImpl.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/weatherdisasterlibrary/WeatherDisasterLibraryService.java
create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/weatherdisasterlibrary/WeatherDisasterLibraryServiceImpl.java
create mode 100644 yudao-module-farm/src/main/resources/mapper/baseinfo/BaseInfoMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/companyinfo/CompanyInfoMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/cultivationarea/CultivationAreaMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/deviceinfo/DeviceInfoMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/deviceplotrelation/DevicePlotRelationMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/disasterdata/DisasterDataMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/environmentindexconfig/EnvironmentIndexConfigMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/farmingnamemaintenance/FarmingNameMaintenanceMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/farmingrecord/FarmingRecordMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/farmingrecordinput/FarmingRecordInputMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/farmingtypemaintenance/FarmingTypeMaintenanceMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/fertilizerindex/FertilizerIndexMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/foundationinfo/FoundationInfoMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/inputlibrary/InputLibraryMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/messagecenter/MessageCenterMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/modelcycle/ModelCycleMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/modelenvironmentindex/ModelEnvironmentIndexMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/modelfarmingoperation/ModelFarmingOperationMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/modelfarmingoperationinput/ModelFarmingOperationInputMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/modelpestdiseaseweed/ModelPestDiseaseWeedMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/modelweatherdisaster/ModelWeatherDisasterMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/personnelmanagement/PersonnelManagementMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/pestdiseaseweedlibrary/PestDiseaseWeedLibraryMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/pesticideresidueindex/PesticideResidueIndexMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/plotinfo/PlotInfoMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/productionplan/ProductionPlanMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/productmanagement/ProductManagementMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/specieslibrary/SpeciesLibraryMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/varietydata/VarietyDataMapper.xml
create mode 100644 yudao-module-farm/src/main/resources/mapper/weatherdisasterlibrary/WeatherDisasterLibraryMapper.xml
diff --git a/yudao-module-farm/pom.xml b/yudao-module-farm/pom.xml
index 62ef59e8..ee3a3afa 100644
--- a/yudao-module-farm/pom.xml
+++ b/yudao-module-farm/pom.xml
@@ -29,6 +29,11 @@
yudao-spring-boot-starter-security
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-web
+
+
cn.iocoder.boot
yudao-spring-boot-starter-websocket
@@ -117,6 +122,22 @@
spring-websocket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/BaseInfoController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/BaseInfoController.java
new file mode 100644
index 00000000..a0578bec
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/BaseInfoController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.baseinfo;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.baseinfo.BaseInfoDO;
+import cn.iocoder.yudao.module.farm.service.baseinfo.BaseInfoService;
+
+@Tag(name = "管理后台 - 基地")
+@RestController
+@RequestMapping("/farm/base-info")
+@Validated
+public class BaseInfoController {
+
+ @Resource
+ private BaseInfoService baseInfoService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建基地")
+ @PreAuthorize("@ss.hasPermission('farm:base-info:create')")
+ public CommonResult createBaseInfo(@Valid @RequestBody BaseInfoSaveReqVO createReqVO) {
+ return success(baseInfoService.createBaseInfo(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新基地")
+ @PreAuthorize("@ss.hasPermission('farm:base-info:update')")
+ public CommonResult updateBaseInfo(@Valid @RequestBody BaseInfoSaveReqVO updateReqVO) {
+ baseInfoService.updateBaseInfo(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除基地")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:base-info:delete')")
+ public CommonResult deleteBaseInfo(@RequestParam("id") String id) {
+ baseInfoService.deleteBaseInfo(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除基地")
+ @PreAuthorize("@ss.hasPermission('farm:base-info:delete')")
+ public CommonResult deleteBaseInfoList(@RequestParam("ids") List ids) {
+ baseInfoService.deleteBaseInfoListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得基地")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:base-info:query')")
+ public CommonResult getBaseInfo(@RequestParam("id") String id) {
+ BaseInfoDO baseInfo = baseInfoService.getBaseInfo(id);
+ return success(BeanUtils.toBean(baseInfo, BaseInfoRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得基地分页")
+ @PreAuthorize("@ss.hasPermission('farm:base-info:query')")
+ public CommonResult> getBaseInfoPage(@Valid BaseInfoPageReqVO pageReqVO) {
+ PageResult pageResult = baseInfoService.getBaseInfoPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, BaseInfoRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出基地 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:base-info:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportBaseInfoExcel(@Valid BaseInfoPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = baseInfoService.getBaseInfoPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "基地.xls", "数据", BaseInfoRespVO.class,
+ BeanUtils.toBean(list, BaseInfoRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoPageReqVO.java
new file mode 100644
index 00000000..4e80c884
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoPageReqVO.java
@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 基地分页 Request VO")
+@Data
+public class BaseInfoPageReqVO extends PageParam {
+
+ @Schema(description = "基地名称", example = "张三")
+ private String name;
+
+ @Schema(description = "用户id用,隔开")
+ private String manager;
+
+ @Schema(description = "面积")
+ private BigDecimal area;
+
+ @Schema(description = "json字符串保存")
+ private String point;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "租户编号", example = "27629")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoRespVO.java
new file mode 100644
index 00000000..4a3ea8c2
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoRespVO.java
@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 基地 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class BaseInfoRespVO {
+
+ @Schema(description = "基地id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13189")
+ @ExcelProperty("基地id")
+ private String id;
+
+ @Schema(description = "基地名称", example = "张三")
+ @ExcelProperty("基地名称")
+ private String name;
+
+ @Schema(description = "用户id用,隔开")
+ @ExcelProperty("用户id用,隔开")
+ private String manager;
+
+ @Schema(description = "面积")
+ @ExcelProperty("面积")
+ private BigDecimal area;
+
+ @Schema(description = "json字符串保存")
+ @ExcelProperty("json字符串保存")
+ private String point;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "租户编号", example = "27629")
+ @ExcelProperty("租户编号")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoSaveReqVO.java
new file mode 100644
index 00000000..29dbe530
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseInfoSaveReqVO.java
@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 基地新增/修改 Request VO")
+@Data
+public class BaseInfoSaveReqVO {
+
+ @Schema(description = "基地id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13189")
+ private String id;
+
+ @Schema(description = "基地名称", example = "张三")
+ private String name;
+
+ @Schema(description = "用户id用,隔开")
+ private String manager;
+
+ @Schema(description = "面积")
+ private BigDecimal area;
+
+ @Schema(description = "json字符串保存")
+ private String point;
+
+ @Schema(description = "租户编号", example = "27629")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/CompanyInfoController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/CompanyInfoController.java
new file mode 100644
index 00000000..2aa0b698
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/CompanyInfoController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.companyinfo;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.companyinfo.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.companyinfo.CompanyInfoDO;
+import cn.iocoder.yudao.module.farm.service.companyinfo.CompanyInfoService;
+
+@Tag(name = "管理后台 - 企业信息")
+@RestController
+@RequestMapping("/farm/company-info")
+@Validated
+public class CompanyInfoController {
+
+ @Resource
+ private CompanyInfoService companyInfoService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建企业信息")
+ @PreAuthorize("@ss.hasPermission('farm:company-info:create')")
+ public CommonResult createCompanyInfo(@Valid @RequestBody CompanyInfoSaveReqVO createReqVO) {
+ return success(companyInfoService.createCompanyInfo(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新企业信息")
+ @PreAuthorize("@ss.hasPermission('farm:company-info:update')")
+ public CommonResult updateCompanyInfo(@Valid @RequestBody CompanyInfoSaveReqVO updateReqVO) {
+ companyInfoService.updateCompanyInfo(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除企业信息")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:company-info:delete')")
+ public CommonResult deleteCompanyInfo(@RequestParam("id") String id) {
+ companyInfoService.deleteCompanyInfo(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除企业信息")
+ @PreAuthorize("@ss.hasPermission('farm:company-info:delete')")
+ public CommonResult deleteCompanyInfoList(@RequestParam("ids") List ids) {
+ companyInfoService.deleteCompanyInfoListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得企业信息")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:company-info:query')")
+ public CommonResult getCompanyInfo(@RequestParam("id") String id) {
+ CompanyInfoDO companyInfo = companyInfoService.getCompanyInfo(id);
+ return success(BeanUtils.toBean(companyInfo, CompanyInfoRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得企业信息分页")
+ @PreAuthorize("@ss.hasPermission('farm:company-info:query')")
+ public CommonResult> getCompanyInfoPage(@Valid CompanyInfoPageReqVO pageReqVO) {
+ PageResult pageResult = companyInfoService.getCompanyInfoPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, CompanyInfoRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出企业信息 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:company-info:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportCompanyInfoExcel(@Valid CompanyInfoPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = companyInfoService.getCompanyInfoPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "企业信息.xls", "数据", CompanyInfoRespVO.class,
+ BeanUtils.toBean(list, CompanyInfoRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoPageReqVO.java
new file mode 100644
index 00000000..35829673
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoPageReqVO.java
@@ -0,0 +1,65 @@
+package cn.iocoder.yudao.module.farm.controller.admin.companyinfo.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 企业信息分页 Request VO")
+@Data
+public class CompanyInfoPageReqVO extends PageParam {
+
+ @Schema(description = "企业名称", example = "赵六")
+ private String name;
+
+ @Schema(description = "负责人")
+ private String director;
+
+ @Schema(description = "企业电话")
+ private String phone;
+
+ @Schema(description = "所在地址")
+ private String address;
+
+ @Schema(description = "详细地址")
+ private String detailedAddress;
+
+ @Schema(description = "网店名称", example = "张三")
+ private String storeName;
+
+ @Schema(description = "网店名称")
+ private String storeAddress;
+
+ @Schema(description = "网店地址")
+ private String introduce;
+
+ @Schema(description = "宣传图片")
+ private String publicityImage;
+
+ @Schema(description = "企业logo")
+ private String logoImage;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "25213")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "8291")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "9295")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoRespVO.java
new file mode 100644
index 00000000..c90fd223
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoRespVO.java
@@ -0,0 +1,83 @@
+package cn.iocoder.yudao.module.farm.controller.admin.companyinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 企业信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class CompanyInfoRespVO {
+
+ @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22365")
+ @ExcelProperty("企业id")
+ private String id;
+
+ @Schema(description = "企业名称", example = "赵六")
+ @ExcelProperty("企业名称")
+ private String name;
+
+ @Schema(description = "负责人")
+ @ExcelProperty("负责人")
+ private String director;
+
+ @Schema(description = "企业电话")
+ @ExcelProperty("企业电话")
+ private String phone;
+
+ @Schema(description = "所在地址")
+ @ExcelProperty("所在地址")
+ private String address;
+
+ @Schema(description = "详细地址")
+ @ExcelProperty("详细地址")
+ private String detailedAddress;
+
+ @Schema(description = "网店名称", example = "张三")
+ @ExcelProperty("网店名称")
+ private String storeName;
+
+ @Schema(description = "网店名称")
+ @ExcelProperty("网店名称")
+ private String storeAddress;
+
+ @Schema(description = "网店地址")
+ @ExcelProperty("网店地址")
+ private String introduce;
+
+ @Schema(description = "宣传图片")
+ @ExcelProperty("宣传图片")
+ private String publicityImage;
+
+ @Schema(description = "企业logo")
+ @ExcelProperty("企业logo")
+ private String logoImage;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "25213")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "8291")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "9295")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoSaveReqVO.java
new file mode 100644
index 00000000..6ffe602b
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/companyinfo/vo/CompanyInfoSaveReqVO.java
@@ -0,0 +1,60 @@
+package cn.iocoder.yudao.module.farm.controller.admin.companyinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 企业信息新增/修改 Request VO")
+@Data
+public class CompanyInfoSaveReqVO {
+
+ @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22365")
+ private String id;
+
+ @Schema(description = "企业名称", example = "赵六")
+ private String name;
+
+ @Schema(description = "负责人")
+ private String director;
+
+ @Schema(description = "企业电话")
+ private String phone;
+
+ @Schema(description = "所在地址")
+ private String address;
+
+ @Schema(description = "详细地址")
+ private String detailedAddress;
+
+ @Schema(description = "网店名称", example = "张三")
+ private String storeName;
+
+ @Schema(description = "网店名称")
+ private String storeAddress;
+
+ @Schema(description = "网店地址")
+ private String introduce;
+
+ @Schema(description = "宣传图片")
+ private String publicityImage;
+
+ @Schema(description = "企业logo")
+ private String logoImage;
+
+ @Schema(description = "基地id", example = "25213")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "8291")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "9295")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/CultivationAreaController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/CultivationAreaController.java
new file mode 100644
index 00000000..c21d9f0c
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/CultivationAreaController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.cultivationarea;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.cultivationarea.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.cultivationarea.CultivationAreaDO;
+import cn.iocoder.yudao.module.farm.service.cultivationarea.CultivationAreaService;
+
+@Tag(name = "管理后台 - 种植区域")
+@RestController
+@RequestMapping("/farm/cultivation-area")
+@Validated
+public class CultivationAreaController {
+
+ @Resource
+ private CultivationAreaService cultivationAreaService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建种植区域")
+ @PreAuthorize("@ss.hasPermission('farm:cultivation-area:create')")
+ public CommonResult createCultivationArea(@Valid @RequestBody CultivationAreaSaveReqVO createReqVO) {
+ return success(cultivationAreaService.createCultivationArea(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新种植区域")
+ @PreAuthorize("@ss.hasPermission('farm:cultivation-area:update')")
+ public CommonResult updateCultivationArea(@Valid @RequestBody CultivationAreaSaveReqVO updateReqVO) {
+ cultivationAreaService.updateCultivationArea(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除种植区域")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:cultivation-area:delete')")
+ public CommonResult deleteCultivationArea(@RequestParam("id") String id) {
+ cultivationAreaService.deleteCultivationArea(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除种植区域")
+ @PreAuthorize("@ss.hasPermission('farm:cultivation-area:delete')")
+ public CommonResult deleteCultivationAreaList(@RequestParam("ids") List ids) {
+ cultivationAreaService.deleteCultivationAreaListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得种植区域")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:cultivation-area:query')")
+ public CommonResult getCultivationArea(@RequestParam("id") String id) {
+ CultivationAreaDO cultivationArea = cultivationAreaService.getCultivationArea(id);
+ return success(BeanUtils.toBean(cultivationArea, CultivationAreaRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得种植区域分页")
+ @PreAuthorize("@ss.hasPermission('farm:cultivation-area:query')")
+ public CommonResult> getCultivationAreaPage(@Valid CultivationAreaPageReqVO pageReqVO) {
+ PageResult pageResult = cultivationAreaService.getCultivationAreaPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, CultivationAreaRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出种植区域 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:cultivation-area:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportCultivationAreaExcel(@Valid CultivationAreaPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = cultivationAreaService.getCultivationAreaPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "种植区域.xls", "数据", CultivationAreaRespVO.class,
+ BeanUtils.toBean(list, CultivationAreaRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaPageReqVO.java
new file mode 100644
index 00000000..ef0f85df
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaPageReqVO.java
@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.farm.controller.admin.cultivationarea.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 种植区域分页 Request VO")
+@Data
+public class CultivationAreaPageReqVO extends PageParam {
+
+ @Schema(description = "基地id", example = "20870")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "1564")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "计划面积")
+ private BigDecimal planArea;
+
+ @Schema(description = "总面积")
+ private BigDecimal totalArea;
+
+ @Schema(description = "剩余面积")
+ private BigDecimal surplusArea;
+
+ @Schema(description = "逻辑删除标识符", example = "1")
+ private Boolean delStatus;
+
+ @Schema(description = "租户id", example = "11840")
+ private String tenantId;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaRespVO.java
new file mode 100644
index 00000000..05d21784
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaRespVO.java
@@ -0,0 +1,60 @@
+package cn.iocoder.yudao.module.farm.controller.admin.cultivationarea.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 种植区域 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class CultivationAreaRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8369")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "基地id", example = "20870")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "1564")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "计划面积")
+ @ExcelProperty("计划面积")
+ private BigDecimal planArea;
+
+ @Schema(description = "总面积")
+ @ExcelProperty("总面积")
+ private BigDecimal totalArea;
+
+ @Schema(description = "剩余面积")
+ @ExcelProperty("剩余面积")
+ private BigDecimal surplusArea;
+
+ @Schema(description = "逻辑删除标识符", example = "1")
+ @ExcelProperty("逻辑删除标识符")
+ private Boolean delStatus;
+
+ @Schema(description = "租户id", example = "11840")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaSaveReqVO.java
new file mode 100644
index 00000000..7587804d
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cultivationarea/vo/CultivationAreaSaveReqVO.java
@@ -0,0 +1,43 @@
+package cn.iocoder.yudao.module.farm.controller.admin.cultivationarea.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 种植区域新增/修改 Request VO")
+@Data
+public class CultivationAreaSaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8369")
+ private String id;
+
+ @Schema(description = "基地id", example = "20870")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "1564")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "计划面积")
+ private BigDecimal planArea;
+
+ @Schema(description = "总面积")
+ private BigDecimal totalArea;
+
+ @Schema(description = "剩余面积")
+ private BigDecimal surplusArea;
+
+ @Schema(description = "逻辑删除标识符", example = "1")
+ private Boolean delStatus;
+
+ @Schema(description = "租户id", example = "11840")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/DeviceInfoController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/DeviceInfoController.java
new file mode 100644
index 00000000..856cb2f2
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/DeviceInfoController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.deviceinfo;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.deviceinfo.DeviceInfoDO;
+import cn.iocoder.yudao.module.farm.service.deviceinfo.DeviceInfoService;
+
+@Tag(name = "管理后台 - 设备信息")
+@RestController
+@RequestMapping("/farm/device-info")
+@Validated
+public class DeviceInfoController {
+
+ @Resource
+ private DeviceInfoService deviceInfoService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建设备信息")
+ @PreAuthorize("@ss.hasPermission('farm:device-info:create')")
+ public CommonResult createDeviceInfo(@Valid @RequestBody DeviceInfoSaveReqVO createReqVO) {
+ return success(deviceInfoService.createDeviceInfo(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新设备信息")
+ @PreAuthorize("@ss.hasPermission('farm:device-info:update')")
+ public CommonResult updateDeviceInfo(@Valid @RequestBody DeviceInfoSaveReqVO updateReqVO) {
+ deviceInfoService.updateDeviceInfo(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除设备信息")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:device-info:delete')")
+ public CommonResult deleteDeviceInfo(@RequestParam("id") String id) {
+ deviceInfoService.deleteDeviceInfo(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除设备信息")
+ @PreAuthorize("@ss.hasPermission('farm:device-info:delete')")
+ public CommonResult deleteDeviceInfoList(@RequestParam("ids") List ids) {
+ deviceInfoService.deleteDeviceInfoListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得设备信息")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:device-info:query')")
+ public CommonResult getDeviceInfo(@RequestParam("id") String id) {
+ DeviceInfoDO deviceInfo = deviceInfoService.getDeviceInfo(id);
+ return success(BeanUtils.toBean(deviceInfo, DeviceInfoRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得设备信息分页")
+ @PreAuthorize("@ss.hasPermission('farm:device-info:query')")
+ public CommonResult> getDeviceInfoPage(@Valid DeviceInfoPageReqVO pageReqVO) {
+ PageResult pageResult = deviceInfoService.getDeviceInfoPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, DeviceInfoRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出设备信息 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:device-info:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportDeviceInfoExcel(@Valid DeviceInfoPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = deviceInfoService.getDeviceInfoPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "设备信息.xls", "数据", DeviceInfoRespVO.class,
+ BeanUtils.toBean(list, DeviceInfoRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoPageReqVO.java
new file mode 100644
index 00000000..72093215
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoPageReqVO.java
@@ -0,0 +1,117 @@
+package cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 设备信息分页 Request VO")
+@Data
+public class DeviceInfoPageReqVO extends PageParam {
+
+ @Schema(description = "设备名称", example = "赵六")
+ private String deviceName;
+
+ @Schema(description = "LP设备名称", example = "李四")
+ private String lpDeviceName;
+
+ @Schema(description = "设备分类编码")
+ private String categoryCode;
+
+ @Schema(description = "设备分类名称", example = "芋艿")
+ private String deviceCategoryName;
+
+ @Schema(description = "设备分类ID", example = "15366")
+ private String deviceCategoryUniqueId;
+
+ @Schema(description = "隔离标识", example = "29422")
+ private String farmIsolationId;
+
+ @Schema(description = "LP产品标识")
+ private String lpProductKey;
+
+ @Schema(description = "LP产品名称", example = "李四")
+ private String lpProductName;
+
+ @Schema(description = "LP产品唯一ID", example = "10175")
+ private String lpProductUniqueId;
+
+ @Schema(description = "设备状态", example = "2")
+ private Integer status;
+
+ @Schema(description = "设备类型", example = "2")
+ private String deviceType;
+
+ @Schema(description = "预留类型字段", example = "1")
+ private String type;
+
+ @Schema(description = "设备厂商")
+ private String vendor;
+
+ @Schema(description = "设备描述", example = "随便")
+ private String description;
+
+ @Schema(description = "分类描述类型", example = "1")
+ private String categoryDescType;
+
+ @Schema(description = "创建时间戳")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "记录创建时间")
+ private LocalDateTime createdAt;
+
+ @Schema(description = "记录更新时间")
+ private LocalDateTime updatedAt;
+
+ @Schema(description = "设备图片")
+ private String image;
+
+ @Schema(description = "告警状态图片")
+ private String alarmImage;
+
+ @Schema(description = "离线状态图片")
+ private String offlineImage;
+
+ @Schema(description = "分类图标")
+ private String categoryIcon;
+
+ @Schema(description = "电池电量(0-100)")
+ private Integer battery;
+
+ @Schema(description = "信号强度")
+ private Short rssi;
+
+ @Schema(description = "物联网卡过期时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] iotCardExpireTime;
+
+ @Schema(description = "是否存在物联网卡")
+ private Boolean isIotCardExisted;
+
+ @Schema(description = "边缘实例ID", example = "13311")
+ private String edgeInstanceUniqueId;
+
+ @Schema(description = "数据快照")
+ private String dataImage;
+
+ @Schema(description = "基地id", example = "9675")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "22883")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "11502")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoRespVO.java
new file mode 100644
index 00000000..9e31bb98
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoRespVO.java
@@ -0,0 +1,151 @@
+package cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+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;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoSaveReqVO.java
new file mode 100644
index 00000000..a265e3f8
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/DeviceInfoSaveReqVO.java
@@ -0,0 +1,113 @@
+package cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 设备信息新增/修改 Request VO")
+@Data
+public class DeviceInfoSaveReqVO {
+
+ @Schema(description = "设备全局唯一标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "9620")
+ private String deviceUniqueId;
+
+ @Schema(description = "设备名称", example = "赵六")
+ private String deviceName;
+
+ @Schema(description = "LP设备名称", example = "李四")
+ private String lpDeviceName;
+
+ @Schema(description = "设备分类编码")
+ private String categoryCode;
+
+ @Schema(description = "设备分类名称", example = "芋艿")
+ private String deviceCategoryName;
+
+ @Schema(description = "设备分类ID", example = "15366")
+ private String deviceCategoryUniqueId;
+
+ @Schema(description = "隔离标识", example = "29422")
+ private String farmIsolationId;
+
+ @Schema(description = "LP产品标识")
+ private String lpProductKey;
+
+ @Schema(description = "LP产品名称", example = "李四")
+ private String lpProductName;
+
+ @Schema(description = "LP产品唯一ID", example = "10175")
+ private String lpProductUniqueId;
+
+ @Schema(description = "设备状态", example = "2")
+ private Integer status;
+
+ @Schema(description = "设备类型", example = "2")
+ private String deviceType;
+
+ @Schema(description = "预留类型字段", example = "1")
+ private String type;
+
+ @Schema(description = "设备厂商")
+ private String vendor;
+
+ @Schema(description = "设备描述", example = "随便")
+ private String description;
+
+ @Schema(description = "分类描述类型", example = "1")
+ private String categoryDescType;
+
+ @Schema(description = "记录创建时间")
+ private LocalDateTime createdAt;
+
+ @Schema(description = "记录更新时间")
+ private LocalDateTime updatedAt;
+
+ @Schema(description = "设备图片")
+ private String image;
+
+ @Schema(description = "告警状态图片")
+ private String alarmImage;
+
+ @Schema(description = "离线状态图片")
+ private String offlineImage;
+
+ @Schema(description = "分类图标")
+ private String categoryIcon;
+
+ @Schema(description = "电池电量(0-100)")
+ private Integer battery;
+
+ @Schema(description = "信号强度")
+ private Short rssi;
+
+ @Schema(description = "物联网卡过期时间")
+ private LocalDateTime iotCardExpireTime;
+
+ @Schema(description = "是否存在物联网卡")
+ private Boolean isIotCardExisted;
+
+ @Schema(description = "边缘实例ID", example = "13311")
+ private String edgeInstanceUniqueId;
+
+ @Schema(description = "数据快照")
+ private String dataImage;
+
+ @Schema(description = "基地id", example = "9675")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "22883")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "11502")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/DevicePlotRelationController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/DevicePlotRelationController.java
new file mode 100644
index 00000000..317e53e5
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/DevicePlotRelationController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.deviceplotrelation;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.deviceplotrelation.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.deviceplotrelation.DevicePlotRelationDO;
+import cn.iocoder.yudao.module.farm.service.deviceplotrelation.DevicePlotRelationService;
+
+@Tag(name = "管理后台 - 设备与地块关联")
+@RestController
+@RequestMapping("/farm/device-plot-relation")
+@Validated
+public class DevicePlotRelationController {
+
+ @Resource
+ private DevicePlotRelationService devicePlotRelationService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建设备与地块关联")
+ @PreAuthorize("@ss.hasPermission('farm:device-plot-relation:create')")
+ public CommonResult createDevicePlotRelation(@Valid @RequestBody DevicePlotRelationSaveReqVO createReqVO) {
+ return success(devicePlotRelationService.createDevicePlotRelation(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新设备与地块关联")
+ @PreAuthorize("@ss.hasPermission('farm:device-plot-relation:update')")
+ public CommonResult updateDevicePlotRelation(@Valid @RequestBody DevicePlotRelationSaveReqVO updateReqVO) {
+ devicePlotRelationService.updateDevicePlotRelation(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除设备与地块关联")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:device-plot-relation:delete')")
+ public CommonResult deleteDevicePlotRelation(@RequestParam("id") String id) {
+ devicePlotRelationService.deleteDevicePlotRelation(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除设备与地块关联")
+ @PreAuthorize("@ss.hasPermission('farm:device-plot-relation:delete')")
+ public CommonResult deleteDevicePlotRelationList(@RequestParam("ids") List ids) {
+ devicePlotRelationService.deleteDevicePlotRelationListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得设备与地块关联")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:device-plot-relation:query')")
+ public CommonResult getDevicePlotRelation(@RequestParam("id") String id) {
+ DevicePlotRelationDO devicePlotRelation = devicePlotRelationService.getDevicePlotRelation(id);
+ return success(BeanUtils.toBean(devicePlotRelation, DevicePlotRelationRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得设备与地块关联分页")
+ @PreAuthorize("@ss.hasPermission('farm:device-plot-relation:query')")
+ public CommonResult> getDevicePlotRelationPage(@Valid DevicePlotRelationPageReqVO pageReqVO) {
+ PageResult pageResult = devicePlotRelationService.getDevicePlotRelationPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, DevicePlotRelationRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出设备与地块关联 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:device-plot-relation:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportDevicePlotRelationExcel(@Valid DevicePlotRelationPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = devicePlotRelationService.getDevicePlotRelationPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "设备与地块关联.xls", "数据", DevicePlotRelationRespVO.class,
+ BeanUtils.toBean(list, DevicePlotRelationRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationPageReqVO.java
new file mode 100644
index 00000000..b4948fd8
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationPageReqVO.java
@@ -0,0 +1,53 @@
+package cn.iocoder.yudao.module.farm.controller.admin.deviceplotrelation.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 设备与地块关联分页 Request VO")
+@Data
+public class DevicePlotRelationPageReqVO extends PageParam {
+
+ @Schema(description = "设备ID", example = "19588")
+ private String deviceUniqueId;
+
+ @Schema(description = "设备厂商")
+ private String vendor;
+
+ @Schema(description = "设备名称", example = "赵六")
+ private String deviceName;
+
+ @Schema(description = "LP产品标识")
+ private String lpProductKey;
+
+ @Schema(description = "用户id", example = "30466")
+ private String userId;
+
+ @Schema(description = "是否存在物联网卡")
+ private Boolean isIotCardExisted;
+
+ @Schema(description = "基地id", example = "30062")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "20813")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "8518")
+ private String tenantId;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationRespVO.java
new file mode 100644
index 00000000..89caae11
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationRespVO.java
@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.farm.controller.admin.deviceplotrelation.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 设备与地块关联 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class DevicePlotRelationRespVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7806")
+ @ExcelProperty("id")
+ private String id;
+
+ @Schema(description = "设备ID", example = "19588")
+ @ExcelProperty("设备ID")
+ private String deviceUniqueId;
+
+ @Schema(description = "设备厂商")
+ @ExcelProperty("设备厂商")
+ private String vendor;
+
+ @Schema(description = "设备名称", example = "赵六")
+ @ExcelProperty("设备名称")
+ private String deviceName;
+
+ @Schema(description = "LP产品标识")
+ @ExcelProperty("LP产品标识")
+ private String lpProductKey;
+
+ @Schema(description = "用户id", example = "30466")
+ @ExcelProperty("用户id")
+ private String userId;
+
+ @Schema(description = "是否存在物联网卡")
+ @ExcelProperty("是否存在物联网卡")
+ private Boolean isIotCardExisted;
+
+ @Schema(description = "基地id", example = "30062")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "20813")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "8518")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationSaveReqVO.java
new file mode 100644
index 00000000..8323a102
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceplotrelation/vo/DevicePlotRelationSaveReqVO.java
@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.farm.controller.admin.deviceplotrelation.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 设备与地块关联新增/修改 Request VO")
+@Data
+public class DevicePlotRelationSaveReqVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7806")
+ private String id;
+
+ @Schema(description = "设备ID", example = "19588")
+ private String deviceUniqueId;
+
+ @Schema(description = "设备厂商")
+ private String vendor;
+
+ @Schema(description = "设备名称", example = "赵六")
+ private String deviceName;
+
+ @Schema(description = "LP产品标识")
+ private String lpProductKey;
+
+ @Schema(description = "用户id", example = "30466")
+ private String userId;
+
+ @Schema(description = "是否存在物联网卡")
+ private Boolean isIotCardExisted;
+
+ @Schema(description = "基地id", example = "30062")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "20813")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "8518")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/DisasterDataController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/DisasterDataController.java
new file mode 100644
index 00000000..3b651ca9
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/DisasterDataController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.disasterdata;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO;
+import cn.iocoder.yudao.module.farm.service.disasterdata.DisasterDataService;
+
+@Tag(name = "管理后台 - 灾害数据")
+@RestController
+@RequestMapping("/farm/disaster-data")
+@Validated
+public class DisasterDataController {
+
+ @Resource
+ private DisasterDataService disasterDataService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建灾害数据")
+ @PreAuthorize("@ss.hasPermission('farm:disaster-data:create')")
+ public CommonResult createDisasterData(@Valid @RequestBody DisasterDataSaveReqVO createReqVO) {
+ return success(disasterDataService.createDisasterData(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新灾害数据")
+ @PreAuthorize("@ss.hasPermission('farm:disaster-data:update')")
+ public CommonResult updateDisasterData(@Valid @RequestBody DisasterDataSaveReqVO updateReqVO) {
+ disasterDataService.updateDisasterData(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除灾害数据")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:disaster-data:delete')")
+ public CommonResult deleteDisasterData(@RequestParam("id") String id) {
+ disasterDataService.deleteDisasterData(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除灾害数据")
+ @PreAuthorize("@ss.hasPermission('farm:disaster-data:delete')")
+ public CommonResult deleteDisasterDataList(@RequestParam("ids") List ids) {
+ disasterDataService.deleteDisasterDataListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得灾害数据")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:disaster-data:query')")
+ public CommonResult getDisasterData(@RequestParam("id") String id) {
+ DisasterDataDO disasterData = disasterDataService.getDisasterData(id);
+ return success(BeanUtils.toBean(disasterData, DisasterDataRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得灾害数据分页")
+ @PreAuthorize("@ss.hasPermission('farm:disaster-data:query')")
+ public CommonResult> getDisasterDataPage(@Valid DisasterDataPageReqVO pageReqVO) {
+ PageResult pageResult = disasterDataService.getDisasterDataPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, DisasterDataRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出灾害数据 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:disaster-data:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportDisasterDataExcel(@Valid DisasterDataPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = disasterDataService.getDisasterDataPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "灾害数据.xls", "数据", DisasterDataRespVO.class,
+ BeanUtils.toBean(list, DisasterDataRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataPageReqVO.java
new file mode 100644
index 00000000..473b15af
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataPageReqVO.java
@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 灾害数据分页 Request VO")
+@Data
+public class DisasterDataPageReqVO extends PageParam {
+
+ @Schema(description = "基础id", example = "3322")
+ private String foundationId;
+
+ @Schema(description = "基地id", example = "21300")
+ private String baseId;
+
+ @Schema(description = "基地名称", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "发生月份")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private String[] disasterTime;
+
+ @Schema(description = "灾害类型1=环境,2=病害,3=虫害,4=草害")
+ private Integer category;
+
+ @Schema(description = "灾害名称", example = "赵六")
+ private String name;
+
+ @Schema(description = "发生次数", example = "17530")
+ private Integer disasterCount;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "地块ID", example = "21827")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "20422")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataRespVO.java
new file mode 100644
index 00000000..ac845fcd
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataRespVO.java
@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 灾害数据 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class DisasterDataRespVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26665")
+ @ExcelProperty("id")
+ private String id;
+
+ @Schema(description = "基础id", example = "3322")
+ @ExcelProperty("基础id")
+ private String foundationId;
+
+ @Schema(description = "基地id", example = "21300")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地名称", example = "芋艿")
+ @ExcelProperty("基地名称")
+ private String baseName;
+
+ @Schema(description = "发生月份")
+ @ExcelProperty("发生月份")
+ private String disasterTime;
+
+ @Schema(description = "灾害类型1=环境,2=病害,3=虫害,4=草害")
+ @ExcelProperty("灾害类型1=环境,2=病害,3=虫害,4=草害")
+ private Integer category;
+
+ @Schema(description = "灾害名称", example = "赵六")
+ @ExcelProperty("灾害名称")
+ private String name;
+
+ @Schema(description = "发生次数", example = "17530")
+ @ExcelProperty("发生次数")
+ private Integer disasterCount;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "地块ID", example = "21827")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "20422")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataSaveReqVO.java
new file mode 100644
index 00000000..b88c875c
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/disasterdata/vo/DisasterDataSaveReqVO.java
@@ -0,0 +1,45 @@
+package cn.iocoder.yudao.module.farm.controller.admin.disasterdata.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 灾害数据新增/修改 Request VO")
+@Data
+public class DisasterDataSaveReqVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26665")
+ private String id;
+
+ @Schema(description = "基础id", example = "3322")
+ private String foundationId;
+
+ @Schema(description = "基地id", example = "21300")
+ private String baseId;
+
+ @Schema(description = "基地名称", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "发生月份")
+ private String disasterTime;
+
+ @Schema(description = "灾害类型1=环境,2=病害,3=虫害,4=草害")
+ private Integer category;
+
+ @Schema(description = "灾害名称", example = "赵六")
+ private String name;
+
+ @Schema(description = "发生次数", example = "17530")
+ private Integer disasterCount;
+
+ @Schema(description = "地块ID", example = "21827")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "20422")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/EnvironmentIndexConfigController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/EnvironmentIndexConfigController.java
new file mode 100644
index 00000000..6ba10a6a
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/EnvironmentIndexConfigController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.environmentindexconfig;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.environmentindexconfig.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.environmentindexconfig.EnvironmentIndexConfigDO;
+import cn.iocoder.yudao.module.farm.service.environmentindexconfig.EnvironmentIndexConfigService;
+
+@Tag(name = "管理后台 - 环境指标配置")
+@RestController
+@RequestMapping("/farm/environment-index-config")
+@Validated
+public class EnvironmentIndexConfigController {
+
+ @Resource
+ private EnvironmentIndexConfigService environmentIndexConfigService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建环境指标配置")
+ @PreAuthorize("@ss.hasPermission('farm:environment-index-config:create')")
+ public CommonResult createEnvironmentIndexConfig(@Valid @RequestBody EnvironmentIndexConfigSaveReqVO createReqVO) {
+ return success(environmentIndexConfigService.createEnvironmentIndexConfig(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新环境指标配置")
+ @PreAuthorize("@ss.hasPermission('farm:environment-index-config:update')")
+ public CommonResult updateEnvironmentIndexConfig(@Valid @RequestBody EnvironmentIndexConfigSaveReqVO updateReqVO) {
+ environmentIndexConfigService.updateEnvironmentIndexConfig(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除环境指标配置")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:environment-index-config:delete')")
+ public CommonResult deleteEnvironmentIndexConfig(@RequestParam("id") String id) {
+ environmentIndexConfigService.deleteEnvironmentIndexConfig(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除环境指标配置")
+ @PreAuthorize("@ss.hasPermission('farm:environment-index-config:delete')")
+ public CommonResult deleteEnvironmentIndexConfigList(@RequestParam("ids") List ids) {
+ environmentIndexConfigService.deleteEnvironmentIndexConfigListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得环境指标配置")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:environment-index-config:query')")
+ public CommonResult getEnvironmentIndexConfig(@RequestParam("id") String id) {
+ EnvironmentIndexConfigDO environmentIndexConfig = environmentIndexConfigService.getEnvironmentIndexConfig(id);
+ return success(BeanUtils.toBean(environmentIndexConfig, EnvironmentIndexConfigRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得环境指标配置分页")
+ @PreAuthorize("@ss.hasPermission('farm:environment-index-config:query')")
+ public CommonResult> getEnvironmentIndexConfigPage(@Valid EnvironmentIndexConfigPageReqVO pageReqVO) {
+ PageResult pageResult = environmentIndexConfigService.getEnvironmentIndexConfigPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, EnvironmentIndexConfigRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出环境指标配置 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:environment-index-config:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportEnvironmentIndexConfigExcel(@Valid EnvironmentIndexConfigPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = environmentIndexConfigService.getEnvironmentIndexConfigPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "环境指标配置.xls", "数据", EnvironmentIndexConfigRespVO.class,
+ BeanUtils.toBean(list, EnvironmentIndexConfigRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigPageReqVO.java
new file mode 100644
index 00000000..34ceef54
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigPageReqVO.java
@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.farm.controller.admin.environmentindexconfig.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 环境指标配置分页 Request VO")
+@Data
+public class EnvironmentIndexConfigPageReqVO extends PageParam {
+
+ @Schema(description = "物种名称", example = "赵六")
+ private String cultivarName;
+
+ @Schema(description = "物种分类", example = "张三")
+ private String speciesName;
+
+ @Schema(description = "指标名称", example = "张三")
+ private String name;
+
+ @Schema(description = "指标描述", example = "你说的对")
+ private String description;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "17727")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "22327")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "7829")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigRespVO.java
new file mode 100644
index 00000000..849acd45
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigRespVO.java
@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.farm.controller.admin.environmentindexconfig.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 环境指标配置 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class EnvironmentIndexConfigRespVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14247")
+ @ExcelProperty("id")
+ private String id;
+
+ @Schema(description = "物种名称", example = "赵六")
+ @ExcelProperty("物种名称")
+ private String cultivarName;
+
+ @Schema(description = "物种分类", example = "张三")
+ @ExcelProperty("物种分类")
+ private String speciesName;
+
+ @Schema(description = "指标名称", example = "张三")
+ @ExcelProperty("指标名称")
+ private String name;
+
+ @Schema(description = "指标描述", example = "你说的对")
+ @ExcelProperty("指标描述")
+ private String description;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "17727")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "22327")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "7829")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigSaveReqVO.java
new file mode 100644
index 00000000..29410308
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/vo/EnvironmentIndexConfigSaveReqVO.java
@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.module.farm.controller.admin.environmentindexconfig.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 环境指标配置新增/修改 Request VO")
+@Data
+public class EnvironmentIndexConfigSaveReqVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14247")
+ private String id;
+
+ @Schema(description = "物种名称", example = "赵六")
+ private String cultivarName;
+
+ @Schema(description = "物种分类", example = "张三")
+ private String speciesName;
+
+ @Schema(description = "指标名称", example = "张三")
+ private String name;
+
+ @Schema(description = "指标描述", example = "你说的对")
+ private String description;
+
+ @Schema(description = "基地id", example = "17727")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "22327")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "7829")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/FarmingNameMaintenanceController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/FarmingNameMaintenanceController.java
new file mode 100644
index 00000000..518112e1
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/FarmingNameMaintenanceController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.farmingnamemaintenance.FarmingNameMaintenanceDO;
+import cn.iocoder.yudao.module.farm.service.farmingnamemaintenance.FarmingNameMaintenanceService;
+
+@Tag(name = "管理后台 - 农事名称维护")
+@RestController
+@RequestMapping("/farm/ing-name-maintenance")
+@Validated
+public class FarmingNameMaintenanceController {
+
+ @Resource
+ private FarmingNameMaintenanceService ingNameMaintenanceService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建农事名称维护")
+ @PreAuthorize("@ss.hasPermission('farm:ing-name-maintenance:create')")
+ public CommonResult createingNameMaintenance(@Valid @RequestBody FarmingNameMaintenanceSaveReqVO createReqVO) {
+ return success(ingNameMaintenanceService.createingNameMaintenance(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新农事名称维护")
+ @PreAuthorize("@ss.hasPermission('farm:ing-name-maintenance:update')")
+ public CommonResult updateingNameMaintenance(@Valid @RequestBody FarmingNameMaintenanceSaveReqVO updateReqVO) {
+ ingNameMaintenanceService.updateingNameMaintenance(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除农事名称维护")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:ing-name-maintenance:delete')")
+ public CommonResult deleteingNameMaintenance(@RequestParam("id") String id) {
+ ingNameMaintenanceService.deleteingNameMaintenance(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除农事名称维护")
+ @PreAuthorize("@ss.hasPermission('farm:ing-name-maintenance:delete')")
+ public CommonResult deleteingNameMaintenanceList(@RequestParam("ids") List ids) {
+ ingNameMaintenanceService.deleteingNameMaintenanceListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得农事名称维护")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:ing-name-maintenance:query')")
+ public CommonResult getingNameMaintenance(@RequestParam("id") String id) {
+ FarmingNameMaintenanceDO ingNameMaintenance = ingNameMaintenanceService.getingNameMaintenance(id);
+ return success(BeanUtils.toBean(ingNameMaintenance, FarmingNameMaintenanceRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得农事名称维护分页")
+ @PreAuthorize("@ss.hasPermission('farm:ing-name-maintenance:query')")
+ public CommonResult> getingNameMaintenancePage(@Valid FarmingNameMaintenancePageReqVO pageReqVO) {
+ PageResult pageResult = ingNameMaintenanceService.getingNameMaintenancePage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, FarmingNameMaintenanceRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出农事名称维护 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:ing-name-maintenance:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportingNameMaintenanceExcel(@Valid FarmingNameMaintenancePageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = ingNameMaintenanceService.getingNameMaintenancePage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "农事名称维护.xls", "数据", FarmingNameMaintenanceRespVO.class,
+ BeanUtils.toBean(list, FarmingNameMaintenanceRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenancePageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenancePageReqVO.java
new file mode 100644
index 00000000..9e3c3b10
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenancePageReqVO.java
@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 农事名称维护分页 Request VO")
+@Data
+public class FarmingNameMaintenancePageReqVO extends PageParam {
+
+ @Schema(description = "农事名称", example = "李四")
+ private String farmingName;
+
+ @Schema(description = "农事类型", example = "1")
+ private String farmingType;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ private Integer useStatus;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "23381")
+ private String baseId;
+
+ @Schema(description = "基地", example = "赵六")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "20315")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "15178")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenanceRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenanceRespVO.java
new file mode 100644
index 00000000..1ec50e18
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenanceRespVO.java
@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 农事名称维护 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class FarmingNameMaintenanceRespVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31981")
+ @ExcelProperty("id")
+ private String id;
+
+ @Schema(description = "农事名称", example = "李四")
+ @ExcelProperty("农事名称")
+ private String farmingName;
+
+ @Schema(description = "农事类型", example = "1")
+ @ExcelProperty("农事类型")
+ private String farmingType;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ @ExcelProperty("0=启用,1=停用")
+ private Integer useStatus;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "23381")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "赵六")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "20315")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "15178")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenanceSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenanceSaveReqVO.java
new file mode 100644
index 00000000..4fd59153
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingnamemaintenance/vo/FarmingNameMaintenanceSaveReqVO.java
@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 农事名称维护新增/修改 Request VO")
+@Data
+public class FarmingNameMaintenanceSaveReqVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31981")
+ private String id;
+
+ @Schema(description = "农事名称", example = "李四")
+ private String farmingName;
+
+ @Schema(description = "农事类型", example = "1")
+ private String farmingType;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ private Integer useStatus;
+
+ @Schema(description = "基地id", example = "23381")
+ private String baseId;
+
+ @Schema(description = "基地", example = "赵六")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "20315")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "15178")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/FarmingRecordController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/FarmingRecordController.java
new file mode 100644
index 00000000..947a4224
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/FarmingRecordController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingrecord;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.farmingrecord.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.farmingrecord.FarmingRecordDO;
+import cn.iocoder.yudao.module.farm.service.farmingrecord.FarmingRecordService;
+
+@Tag(name = "管理后台 - 种植中心-农事基地-农事记录")
+@RestController
+@RequestMapping("/farm/ing-record")
+@Validated
+public class FarmingRecordController {
+
+ @Resource
+ private FarmingRecordService ingRecordService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建种植中心-农事基地-农事记录")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record:create')")
+ public CommonResult createingRecord(@Valid @RequestBody FarmingRecordSaveReqVO createReqVO) {
+ return success(ingRecordService.createingRecord(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新种植中心-农事基地-农事记录")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record:update')")
+ public CommonResult updateingRecord(@Valid @RequestBody FarmingRecordSaveReqVO updateReqVO) {
+ ingRecordService.updateingRecord(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除种植中心-农事基地-农事记录")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:ing-record:delete')")
+ public CommonResult deleteingRecord(@RequestParam("id") String id) {
+ ingRecordService.deleteingRecord(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除种植中心-农事基地-农事记录")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record:delete')")
+ public CommonResult deleteingRecordList(@RequestParam("ids") List ids) {
+ ingRecordService.deleteingRecordListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得种植中心-农事基地-农事记录")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record:query')")
+ public CommonResult getingRecord(@RequestParam("id") String id) {
+ FarmingRecordDO ingRecord = ingRecordService.getingRecord(id);
+ return success(BeanUtils.toBean(ingRecord, FarmingRecordRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得种植中心-农事基地-农事记录分页")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record:query')")
+ public CommonResult> getingRecordPage(@Valid FarmingRecordPageReqVO pageReqVO) {
+ PageResult pageResult = ingRecordService.getingRecordPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, FarmingRecordRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出种植中心-农事基地-农事记录 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportingRecordExcel(@Valid FarmingRecordPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = ingRecordService.getingRecordPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "种植中心-农事基地-农事记录.xls", "数据", FarmingRecordRespVO.class,
+ BeanUtils.toBean(list, FarmingRecordRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordPageReqVO.java
new file mode 100644
index 00000000..136bdff7
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordPageReqVO.java
@@ -0,0 +1,69 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingrecord.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 种植中心-农事基地-农事记录分页 Request VO")
+@Data
+public class FarmingRecordPageReqVO extends PageParam {
+
+ @Schema(description = "任务类型", example = "1")
+ private String taskType;
+
+ @Schema(description = "任务名称", example = "芋艿")
+ private String taskName;
+
+ @Schema(description = "任务范围")
+ private String taskScope;
+
+ @Schema(description = "任务时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] taskTime;
+
+ @Schema(description = "所属地块", example = "10480")
+ private String plotId;
+
+ @Schema(description = "生产计划ID", example = "24782")
+ private String productionPlanId;
+
+ @Schema(description = "执行人")
+ private String executor;
+
+ @Schema(description = "实际用工")
+ private Integer actualLaborCost;
+
+ @Schema(description = "实际投入品ID", example = "5691")
+ private String actualInputId;
+
+ @Schema(description = "执行反馈-备注")
+ private String feedbackNotes;
+
+ @Schema(description = "执行反馈-图片URL", example = "https://www.iocoder.cn")
+ private String feedbackImageUrl;
+
+ @Schema(description = "逻辑删除标识符", example = "1")
+ private Boolean delStatus;
+
+ @Schema(description = "基地id", example = "28798")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "23744")
+ private String tenantId;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordRespVO.java
new file mode 100644
index 00000000..a32b4c80
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordRespVO.java
@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingrecord.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 种植中心-农事基地-农事记录 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class FarmingRecordRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22116")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "任务类型", example = "1")
+ @ExcelProperty("任务类型")
+ private String taskType;
+
+ @Schema(description = "任务名称", example = "芋艿")
+ @ExcelProperty("任务名称")
+ private String taskName;
+
+ @Schema(description = "任务范围")
+ @ExcelProperty("任务范围")
+ private String taskScope;
+
+ @Schema(description = "任务时间")
+ @ExcelProperty("任务时间")
+ private LocalDateTime taskTime;
+
+ @Schema(description = "所属地块", example = "10480")
+ @ExcelProperty("所属地块")
+ private String plotId;
+
+ @Schema(description = "生产计划ID", example = "24782")
+ @ExcelProperty("生产计划ID")
+ private String productionPlanId;
+
+ @Schema(description = "执行人")
+ @ExcelProperty("执行人")
+ private String executor;
+
+ @Schema(description = "实际用工")
+ @ExcelProperty("实际用工")
+ private Integer actualLaborCost;
+
+ @Schema(description = "实际投入品ID", example = "5691")
+ @ExcelProperty("实际投入品ID")
+ private String actualInputId;
+
+ @Schema(description = "执行反馈-备注")
+ @ExcelProperty("执行反馈-备注")
+ private String feedbackNotes;
+
+ @Schema(description = "执行反馈-图片URL", example = "https://www.iocoder.cn")
+ @ExcelProperty("执行反馈-图片URL")
+ private String feedbackImageUrl;
+
+ @Schema(description = "逻辑删除标识符", example = "1")
+ @ExcelProperty("逻辑删除标识符")
+ private Boolean delStatus;
+
+ @Schema(description = "基地id", example = "28798")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块", example = "赵六")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "23744")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordSaveReqVO.java
new file mode 100644
index 00000000..42a9c05b
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecord/vo/FarmingRecordSaveReqVO.java
@@ -0,0 +1,65 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingrecord.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 种植中心-农事基地-农事记录新增/修改 Request VO")
+@Data
+public class FarmingRecordSaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22116")
+ private String id;
+
+ @Schema(description = "任务类型", example = "1")
+ private String taskType;
+
+ @Schema(description = "任务名称", example = "芋艿")
+ private String taskName;
+
+ @Schema(description = "任务范围")
+ private String taskScope;
+
+ @Schema(description = "任务时间")
+ private LocalDateTime taskTime;
+
+ @Schema(description = "所属地块", example = "10480")
+ private String plotId;
+
+ @Schema(description = "生产计划ID", example = "24782")
+ private String productionPlanId;
+
+ @Schema(description = "执行人")
+ private String executor;
+
+ @Schema(description = "实际用工")
+ private Integer actualLaborCost;
+
+ @Schema(description = "实际投入品ID", example = "5691")
+ private String actualInputId;
+
+ @Schema(description = "执行反馈-备注")
+ private String feedbackNotes;
+
+ @Schema(description = "执行反馈-图片URL", example = "https://www.iocoder.cn")
+ private String feedbackImageUrl;
+
+ @Schema(description = "逻辑删除标识符", example = "1")
+ private Boolean delStatus;
+
+ @Schema(description = "基地id", example = "28798")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "23744")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/FarmingRecordInputController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/FarmingRecordInputController.java
new file mode 100644
index 00000000..a2a8a109
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/FarmingRecordInputController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingrecordinput;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.farmingrecordinput.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.farmingrecordinput.FarmingRecordInputDO;
+import cn.iocoder.yudao.module.farm.service.farmingrecordinput.FarmingRecordInputService;
+
+@Tag(name = "管理后台 - 种植中心-农事基地-农事记录-投入品")
+@RestController
+@RequestMapping("/farm/ing-record-input")
+@Validated
+public class FarmingRecordInputController {
+
+ @Resource
+ private FarmingRecordInputService ingRecordInputService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建种植中心-农事基地-农事记录-投入品")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record-input:create')")
+ public CommonResult createingRecordInput(@Valid @RequestBody FarmingRecordInputSaveReqVO createReqVO) {
+ return success(ingRecordInputService.createingRecordInput(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新种植中心-农事基地-农事记录-投入品")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record-input:update')")
+ public CommonResult updateingRecordInput(@Valid @RequestBody FarmingRecordInputSaveReqVO updateReqVO) {
+ ingRecordInputService.updateingRecordInput(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除种植中心-农事基地-农事记录-投入品")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:ing-record-input:delete')")
+ public CommonResult deleteingRecordInput(@RequestParam("id") String id) {
+ ingRecordInputService.deleteingRecordInput(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除种植中心-农事基地-农事记录-投入品")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record-input:delete')")
+ public CommonResult deleteingRecordInputList(@RequestParam("ids") List ids) {
+ ingRecordInputService.deleteingRecordInputListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得种植中心-农事基地-农事记录-投入品")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record-input:query')")
+ public CommonResult getingRecordInput(@RequestParam("id") String id) {
+ FarmingRecordInputDO ingRecordInput = ingRecordInputService.getingRecordInput(id);
+ return success(BeanUtils.toBean(ingRecordInput, FarmingRecordInputRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得种植中心-农事基地-农事记录-投入品分页")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record-input:query')")
+ public CommonResult> getingRecordInputPage(@Valid FarmingRecordInputPageReqVO pageReqVO) {
+ PageResult pageResult = ingRecordInputService.getingRecordInputPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, FarmingRecordInputRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出种植中心-农事基地-农事记录-投入品 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:ing-record-input:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportingRecordInputExcel(@Valid FarmingRecordInputPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = ingRecordInputService.getingRecordInputPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "种植中心-农事基地-农事记录-投入品.xls", "数据", FarmingRecordInputRespVO.class,
+ BeanUtils.toBean(list, FarmingRecordInputRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputPageReqVO.java
new file mode 100644
index 00000000..50fe12cb
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputPageReqVO.java
@@ -0,0 +1,69 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingrecordinput.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 种植中心-农事基地-农事记录-投入品分页 Request VO")
+@Data
+public class FarmingRecordInputPageReqVO extends PageParam {
+
+ @Schema(description = "农事记录ID", example = "11421")
+ private String farmRecordId;
+
+ @Schema(description = "投入品-父类")
+ private String inputParentCategory;
+
+ @Schema(description = "投入品-子类")
+ private String inputChildCategory;
+
+ @Schema(description = "稀释倍液 (如为: 药物时需展示输入框)")
+ private String dilutionRatio;
+
+ @Schema(description = "单用用量 (如为: 肥料选项时)")
+ private String singleUseOption;
+
+ @Schema(description = "单用用量-值")
+ private BigDecimal singleUseValue;
+
+ @Schema(description = "单用用量-单位")
+ private String singleUseUnit;
+
+ @Schema(description = "施用范围")
+ private String applicationScope;
+
+ @Schema(description = "用量")
+ private BigDecimal dosage;
+
+ @Schema(description = "用法")
+ private String usage;
+
+ @Schema(description = "逻辑删除标识符", example = "1")
+ private Boolean delStatus;
+
+ @Schema(description = "基地id", example = "17710")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "10042")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "1677")
+ private String tenantId;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputRespVO.java
new file mode 100644
index 00000000..5d7f32d9
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputRespVO.java
@@ -0,0 +1,88 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingrecordinput.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 种植中心-农事基地-农事记录-投入品 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class FarmingRecordInputRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16612")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "农事记录ID", example = "11421")
+ @ExcelProperty("农事记录ID")
+ private String farmRecordId;
+
+ @Schema(description = "投入品-父类")
+ @ExcelProperty("投入品-父类")
+ private String inputParentCategory;
+
+ @Schema(description = "投入品-子类")
+ @ExcelProperty("投入品-子类")
+ private String inputChildCategory;
+
+ @Schema(description = "稀释倍液 (如为: 药物时需展示输入框)")
+ @ExcelProperty("稀释倍液 (如为: 药物时需展示输入框)")
+ private String dilutionRatio;
+
+ @Schema(description = "单用用量 (如为: 肥料选项时)")
+ @ExcelProperty("单用用量 (如为: 肥料选项时)")
+ private String singleUseOption;
+
+ @Schema(description = "单用用量-值")
+ @ExcelProperty("单用用量-值")
+ private BigDecimal singleUseValue;
+
+ @Schema(description = "单用用量-单位")
+ @ExcelProperty("单用用量-单位")
+ private String singleUseUnit;
+
+ @Schema(description = "施用范围")
+ @ExcelProperty("施用范围")
+ private String applicationScope;
+
+ @Schema(description = "用量")
+ @ExcelProperty("用量")
+ private BigDecimal dosage;
+
+ @Schema(description = "用法")
+ @ExcelProperty("用法")
+ private String usage;
+
+ @Schema(description = "逻辑删除标识符", example = "1")
+ @ExcelProperty("逻辑删除标识符")
+ private Boolean delStatus;
+
+ @Schema(description = "基地id", example = "17710")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "10042")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "1677")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputSaveReqVO.java
new file mode 100644
index 00000000..c44b5407
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingrecordinput/vo/FarmingRecordInputSaveReqVO.java
@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingrecordinput.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 种植中心-农事基地-农事记录-投入品新增/修改 Request VO")
+@Data
+public class FarmingRecordInputSaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16612")
+ private String id;
+
+ @Schema(description = "农事记录ID", example = "11421")
+ private String farmRecordId;
+
+ @Schema(description = "投入品-父类")
+ private String inputParentCategory;
+
+ @Schema(description = "投入品-子类")
+ private String inputChildCategory;
+
+ @Schema(description = "稀释倍液 (如为: 药物时需展示输入框)")
+ private String dilutionRatio;
+
+ @Schema(description = "单用用量 (如为: 肥料选项时)")
+ private String singleUseOption;
+
+ @Schema(description = "单用用量-值")
+ private BigDecimal singleUseValue;
+
+ @Schema(description = "单用用量-单位")
+ private String singleUseUnit;
+
+ @Schema(description = "施用范围")
+ private String applicationScope;
+
+ @Schema(description = "用量")
+ private BigDecimal dosage;
+
+ @Schema(description = "用法")
+ private String usage;
+
+ @Schema(description = "逻辑删除标识符", example = "1")
+ private Boolean delStatus;
+
+ @Schema(description = "基地id", example = "17710")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "10042")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "1677")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/FarmingTypeMaintenanceController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/FarmingTypeMaintenanceController.java
new file mode 100644
index 00000000..7b8b0ed9
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/FarmingTypeMaintenanceController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingtypemaintenance;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.farmingtypemaintenance.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.farmingtypemaintenance.FarmingTypeMaintenanceDO;
+import cn.iocoder.yudao.module.farm.service.farmingtypemaintenance.FarmingTypeMaintenanceService;
+
+@Tag(name = "管理后台 - 农事类型维护")
+@RestController
+@RequestMapping("/farm/ing-type-maintenance")
+@Validated
+public class FarmingTypeMaintenanceController {
+
+ @Resource
+ private FarmingTypeMaintenanceService ingTypeMaintenanceService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建农事类型维护")
+ @PreAuthorize("@ss.hasPermission('farm:ing-type-maintenance:create')")
+ public CommonResult createingTypeMaintenance(@Valid @RequestBody FarmingTypeMaintenanceSaveReqVO createReqVO) {
+ return success(ingTypeMaintenanceService.createingTypeMaintenance(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新农事类型维护")
+ @PreAuthorize("@ss.hasPermission('farm:ing-type-maintenance:update')")
+ public CommonResult updateingTypeMaintenance(@Valid @RequestBody FarmingTypeMaintenanceSaveReqVO updateReqVO) {
+ ingTypeMaintenanceService.updateingTypeMaintenance(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除农事类型维护")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:ing-type-maintenance:delete')")
+ public CommonResult deleteingTypeMaintenance(@RequestParam("id") String id) {
+ ingTypeMaintenanceService.deleteingTypeMaintenance(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除农事类型维护")
+ @PreAuthorize("@ss.hasPermission('farm:ing-type-maintenance:delete')")
+ public CommonResult deleteingTypeMaintenanceList(@RequestParam("ids") List ids) {
+ ingTypeMaintenanceService.deleteingTypeMaintenanceListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得农事类型维护")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:ing-type-maintenance:query')")
+ public CommonResult getingTypeMaintenance(@RequestParam("id") String id) {
+ FarmingTypeMaintenanceDO ingTypeMaintenance = ingTypeMaintenanceService.getingTypeMaintenance(id);
+ return success(BeanUtils.toBean(ingTypeMaintenance, FarmingTypeMaintenanceRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得农事类型维护分页")
+ @PreAuthorize("@ss.hasPermission('farm:ing-type-maintenance:query')")
+ public CommonResult> getingTypeMaintenancePage(@Valid FarmingTypeMaintenancePageReqVO pageReqVO) {
+ PageResult pageResult = ingTypeMaintenanceService.getingTypeMaintenancePage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, FarmingTypeMaintenanceRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出农事类型维护 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:ing-type-maintenance:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportingTypeMaintenanceExcel(@Valid FarmingTypeMaintenancePageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = ingTypeMaintenanceService.getingTypeMaintenancePage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "农事类型维护.xls", "数据", FarmingTypeMaintenanceRespVO.class,
+ BeanUtils.toBean(list, FarmingTypeMaintenanceRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenancePageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenancePageReqVO.java
new file mode 100644
index 00000000..16b074f2
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenancePageReqVO.java
@@ -0,0 +1,41 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingtypemaintenance.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 农事类型维护分页 Request VO")
+@Data
+public class FarmingTypeMaintenancePageReqVO extends PageParam {
+
+ @Schema(description = "农事类型", example = "1")
+ private String farmingType;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ private Integer useStatus;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "29265")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "28838")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "6207")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenanceRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenanceRespVO.java
new file mode 100644
index 00000000..08bf09bc
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenanceRespVO.java
@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingtypemaintenance.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 农事类型维护 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class FarmingTypeMaintenanceRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29520")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "农事类型", example = "1")
+ @ExcelProperty("农事类型")
+ private String farmingType;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ @ExcelProperty("0=启用,1=停用")
+ private Integer useStatus;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "29265")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "28838")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "6207")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenanceSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenanceSaveReqVO.java
new file mode 100644
index 00000000..0ec5ebf5
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/farmingtypemaintenance/vo/FarmingTypeMaintenanceSaveReqVO.java
@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.farm.controller.admin.farmingtypemaintenance.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 农事类型维护新增/修改 Request VO")
+@Data
+public class FarmingTypeMaintenanceSaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29520")
+ private String id;
+
+ @Schema(description = "农事类型", example = "1")
+ private String farmingType;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ private Integer useStatus;
+
+ @Schema(description = "基地id", example = "29265")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "28838")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "6207")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/FertilizerIndexController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/FertilizerIndexController.java
new file mode 100644
index 00000000..f846c651
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/FertilizerIndexController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.fertilizerindex;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.fertilizerindex.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.fertilizerindex.FertilizerIndexDO;
+import cn.iocoder.yudao.module.farm.service.fertilizerindex.FertilizerIndexService;
+
+@Tag(name = "管理后台 - 化肥指标")
+@RestController
+@RequestMapping("/farm/fertilizer-index")
+@Validated
+public class FertilizerIndexController {
+
+ @Resource
+ private FertilizerIndexService fertilizerIndexService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建化肥指标")
+ @PreAuthorize("@ss.hasPermission('farm:fertilizer-index:create')")
+ public CommonResult createFertilizerIndex(@Valid @RequestBody FertilizerIndexSaveReqVO createReqVO) {
+ return success(fertilizerIndexService.createFertilizerIndex(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新化肥指标")
+ @PreAuthorize("@ss.hasPermission('farm:fertilizer-index:update')")
+ public CommonResult updateFertilizerIndex(@Valid @RequestBody FertilizerIndexSaveReqVO updateReqVO) {
+ fertilizerIndexService.updateFertilizerIndex(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除化肥指标")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:fertilizer-index:delete')")
+ public CommonResult deleteFertilizerIndex(@RequestParam("id") String id) {
+ fertilizerIndexService.deleteFertilizerIndex(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除化肥指标")
+ @PreAuthorize("@ss.hasPermission('farm:fertilizer-index:delete')")
+ public CommonResult deleteFertilizerIndexList(@RequestParam("ids") List ids) {
+ fertilizerIndexService.deleteFertilizerIndexListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得化肥指标")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:fertilizer-index:query')")
+ public CommonResult getFertilizerIndex(@RequestParam("id") String id) {
+ FertilizerIndexDO fertilizerIndex = fertilizerIndexService.getFertilizerIndex(id);
+ return success(BeanUtils.toBean(fertilizerIndex, FertilizerIndexRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得化肥指标分页")
+ @PreAuthorize("@ss.hasPermission('farm:fertilizer-index:query')")
+ public CommonResult> getFertilizerIndexPage(@Valid FertilizerIndexPageReqVO pageReqVO) {
+ PageResult pageResult = fertilizerIndexService.getFertilizerIndexPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, FertilizerIndexRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出化肥指标 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:fertilizer-index:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportFertilizerIndexExcel(@Valid FertilizerIndexPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = fertilizerIndexService.getFertilizerIndexPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "化肥指标.xls", "数据", FertilizerIndexRespVO.class,
+ BeanUtils.toBean(list, FertilizerIndexRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexPageReqVO.java
new file mode 100644
index 00000000..40546e58
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexPageReqVO.java
@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.farm.controller.admin.fertilizerindex.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 化肥指标分页 Request VO")
+@Data
+public class FertilizerIndexPageReqVO extends PageParam {
+
+ @Schema(description = "基础id", example = "26503")
+ private String foundationId;
+
+ @Schema(description = "项目名称", example = "张三")
+ private String name;
+
+ @Schema(description = "国家标准")
+ private String standard;
+
+ @Schema(description = "检验结果")
+ private String checkResults;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "19443")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "25475")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "8699")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexRespVO.java
new file mode 100644
index 00000000..036dbb0d
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexRespVO.java
@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.farm.controller.admin.fertilizerindex.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 化肥指标 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class FertilizerIndexRespVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27638")
+ @ExcelProperty("id")
+ private String id;
+
+ @Schema(description = "基础id", example = "26503")
+ @ExcelProperty("基础id")
+ private String foundationId;
+
+ @Schema(description = "项目名称", example = "张三")
+ @ExcelProperty("项目名称")
+ private String name;
+
+ @Schema(description = "国家标准")
+ @ExcelProperty("国家标准")
+ private String standard;
+
+ @Schema(description = "检验结果")
+ @ExcelProperty("检验结果")
+ private String checkResults;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "19443")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "25475")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "8699")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexSaveReqVO.java
new file mode 100644
index 00000000..101fea15
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/fertilizerindex/vo/FertilizerIndexSaveReqVO.java
@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.module.farm.controller.admin.fertilizerindex.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 化肥指标新增/修改 Request VO")
+@Data
+public class FertilizerIndexSaveReqVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27638")
+ private String id;
+
+ @Schema(description = "基础id", example = "26503")
+ private String foundationId;
+
+ @Schema(description = "项目名称", example = "张三")
+ private String name;
+
+ @Schema(description = "国家标准")
+ private String standard;
+
+ @Schema(description = "检验结果")
+ private String checkResults;
+
+ @Schema(description = "基地id", example = "19443")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "25475")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "8699")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/FoundationInfoController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/FoundationInfoController.java
new file mode 100644
index 00000000..3165d57f
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/FoundationInfoController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.foundationinfo;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.foundationinfo.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.foundationinfo.FoundationInfoDO;
+import cn.iocoder.yudao.module.farm.service.foundationinfo.FoundationInfoService;
+
+@Tag(name = "管理后台 - 基础信息")
+@RestController
+@RequestMapping("/farm/foundation-info")
+@Validated
+public class FoundationInfoController {
+
+ @Resource
+ private FoundationInfoService foundationInfoService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建基础信息")
+ @PreAuthorize("@ss.hasPermission('farm:foundation-info:create')")
+ public CommonResult createFoundationInfo(@Valid @RequestBody FoundationInfoSaveReqVO createReqVO) {
+ return success(foundationInfoService.createFoundationInfo(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新基础信息")
+ @PreAuthorize("@ss.hasPermission('farm:foundation-info:update')")
+ public CommonResult updateFoundationInfo(@Valid @RequestBody FoundationInfoSaveReqVO updateReqVO) {
+ foundationInfoService.updateFoundationInfo(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除基础信息")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:foundation-info:delete')")
+ public CommonResult deleteFoundationInfo(@RequestParam("id") String id) {
+ foundationInfoService.deleteFoundationInfo(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除基础信息")
+ @PreAuthorize("@ss.hasPermission('farm:foundation-info:delete')")
+ public CommonResult deleteFoundationInfoList(@RequestParam("ids") List ids) {
+ foundationInfoService.deleteFoundationInfoListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得基础信息")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:foundation-info:query')")
+ public CommonResult getFoundationInfo(@RequestParam("id") String id) {
+ FoundationInfoDO foundationInfo = foundationInfoService.getFoundationInfo(id);
+ return success(BeanUtils.toBean(foundationInfo, FoundationInfoRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得基础信息分页")
+ @PreAuthorize("@ss.hasPermission('farm:foundation-info:query')")
+ public CommonResult> getFoundationInfoPage(@Valid FoundationInfoPageReqVO pageReqVO) {
+ PageResult pageResult = foundationInfoService.getFoundationInfoPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, FoundationInfoRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出基础信息 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:foundation-info:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportFoundationInfoExcel(@Valid FoundationInfoPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = foundationInfoService.getFoundationInfoPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "基础信息.xls", "数据", FoundationInfoRespVO.class,
+ BeanUtils.toBean(list, FoundationInfoRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoPageReqVO.java
new file mode 100644
index 00000000..d6009986
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoPageReqVO.java
@@ -0,0 +1,50 @@
+package cn.iocoder.yudao.module.farm.controller.admin.foundationinfo.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 基础信息分页 Request VO")
+@Data
+public class FoundationInfoPageReqVO extends PageParam {
+
+ @Schema(description = "标题")
+ private String title;
+
+ @Schema(description = "农场名称", example = "芋艿")
+ private String farmName;
+
+ @Schema(description = "农场Logo")
+ private String image;
+
+ @Schema(description = "农场介绍", example = "你猜")
+ private String description;
+
+ @Schema(description = "企业人员总数", example = "1057")
+ private Integer employeeCount;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "21166")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "27402")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "12964")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoRespVO.java
new file mode 100644
index 00000000..44023f50
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoRespVO.java
@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.farm.controller.admin.foundationinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 基础信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class FoundationInfoRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22602")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "标题")
+ @ExcelProperty("标题")
+ private String title;
+
+ @Schema(description = "农场名称", example = "芋艿")
+ @ExcelProperty("农场名称")
+ private String farmName;
+
+ @Schema(description = "农场Logo")
+ @ExcelProperty("农场Logo")
+ private String image;
+
+ @Schema(description = "农场介绍", example = "你猜")
+ @ExcelProperty("农场介绍")
+ private String description;
+
+ @Schema(description = "企业人员总数", example = "1057")
+ @ExcelProperty("企业人员总数")
+ private Integer employeeCount;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "21166")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "27402")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "12964")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoSaveReqVO.java
new file mode 100644
index 00000000..3c89161a
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/foundationinfo/vo/FoundationInfoSaveReqVO.java
@@ -0,0 +1,45 @@
+package cn.iocoder.yudao.module.farm.controller.admin.foundationinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 基础信息新增/修改 Request VO")
+@Data
+public class FoundationInfoSaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22602")
+ private String id;
+
+ @Schema(description = "标题")
+ private String title;
+
+ @Schema(description = "农场名称", example = "芋艿")
+ private String farmName;
+
+ @Schema(description = "农场Logo")
+ private String image;
+
+ @Schema(description = "农场介绍", example = "你猜")
+ private String description;
+
+ @Schema(description = "企业人员总数", example = "1057")
+ private Integer employeeCount;
+
+ @Schema(description = "基地id", example = "21166")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "27402")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "12964")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/InputLibraryController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/InputLibraryController.java
new file mode 100644
index 00000000..dbbf6254
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/InputLibraryController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.inputlibrary;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.inputlibrary.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputLibraryDO;
+import cn.iocoder.yudao.module.farm.service.inputlibrary.InputLibraryService;
+
+@Tag(name = "管理后台 - 投入品库维护")
+@RestController
+@RequestMapping("/farm/input-library")
+@Validated
+public class InputLibraryController {
+
+ @Resource
+ private InputLibraryService inputLibraryService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建投入品库维护")
+ @PreAuthorize("@ss.hasPermission('farm:input-library:create')")
+ public CommonResult createInputLibrary(@Valid @RequestBody InputLibrarySaveReqVO createReqVO) {
+ return success(inputLibraryService.createInputLibrary(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新投入品库维护")
+ @PreAuthorize("@ss.hasPermission('farm:input-library:update')")
+ public CommonResult updateInputLibrary(@Valid @RequestBody InputLibrarySaveReqVO updateReqVO) {
+ inputLibraryService.updateInputLibrary(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除投入品库维护")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:input-library:delete')")
+ public CommonResult deleteInputLibrary(@RequestParam("id") String id) {
+ inputLibraryService.deleteInputLibrary(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除投入品库维护")
+ @PreAuthorize("@ss.hasPermission('farm:input-library:delete')")
+ public CommonResult deleteInputLibraryList(@RequestParam("ids") List ids) {
+ inputLibraryService.deleteInputLibraryListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得投入品库维护")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:input-library:query')")
+ public CommonResult getInputLibrary(@RequestParam("id") String id) {
+ InputLibraryDO inputLibrary = inputLibraryService.getInputLibrary(id);
+ return success(BeanUtils.toBean(inputLibrary, InputLibraryRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得投入品库维护分页")
+ @PreAuthorize("@ss.hasPermission('farm:input-library:query')")
+ public CommonResult> getInputLibraryPage(@Valid InputLibraryPageReqVO pageReqVO) {
+ PageResult pageResult = inputLibraryService.getInputLibraryPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, InputLibraryRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出投入品库维护 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:input-library:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportInputLibraryExcel(@Valid InputLibraryPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = inputLibraryService.getInputLibraryPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "投入品库维护.xls", "数据", InputLibraryRespVO.class,
+ BeanUtils.toBean(list, InputLibraryRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibraryPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibraryPageReqVO.java
new file mode 100644
index 00000000..884b1b92
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibraryPageReqVO.java
@@ -0,0 +1,78 @@
+package cn.iocoder.yudao.module.farm.controller.admin.inputlibrary.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 投入品库维护分页 Request VO")
+@Data
+public class InputLibraryPageReqVO extends PageParam {
+
+ @Schema(description = "投入品类型", example = "2")
+ private String assetType;
+
+ @Schema(description = "投入品名称", example = "王五")
+ private String assetName;
+
+ @Schema(description = "用量")
+ private BigDecimal dose;
+
+ @Schema(description = "单位")
+ private String unit;
+
+ @Schema(description = "单件")
+ private String packageUnit;
+
+ @Schema(description = "单价", example = "23806")
+ private BigDecimal price;
+
+ @Schema(description = "登记证号")
+ private String registration;
+
+ @Schema(description = "提供厂商")
+ private String manufacturer;
+
+ @Schema(description = "药物类型", example = "2")
+ private String drugType;
+
+ @Schema(description = "有效成分")
+ private String activePrinciple;
+
+ @Schema(description = "安全间隔期")
+ private Integer safetyInterval;
+
+ @Schema(description = "稀释倍液")
+ private String diluted;
+
+ @Schema(description = "防治对象及使用方法")
+ private String usage;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ private Integer useStatus;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "21613")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "14573")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "6773")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibraryRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibraryRespVO.java
new file mode 100644
index 00000000..b8be50de
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibraryRespVO.java
@@ -0,0 +1,100 @@
+package cn.iocoder.yudao.module.farm.controller.admin.inputlibrary.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 投入品库维护 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class InputLibraryRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12085")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "投入品类型", example = "2")
+ @ExcelProperty("投入品类型")
+ private String assetType;
+
+ @Schema(description = "投入品名称", example = "王五")
+ @ExcelProperty("投入品名称")
+ private String assetName;
+
+ @Schema(description = "用量")
+ @ExcelProperty("用量")
+ private BigDecimal dose;
+
+ @Schema(description = "单位")
+ @ExcelProperty("单位")
+ private String unit;
+
+ @Schema(description = "单件")
+ @ExcelProperty("单件")
+ private String packageUnit;
+
+ @Schema(description = "单价", example = "23806")
+ @ExcelProperty("单价")
+ private BigDecimal price;
+
+ @Schema(description = "登记证号")
+ @ExcelProperty("登记证号")
+ private String registration;
+
+ @Schema(description = "提供厂商")
+ @ExcelProperty("提供厂商")
+ private String manufacturer;
+
+ @Schema(description = "药物类型", example = "2")
+ @ExcelProperty("药物类型")
+ private String drugType;
+
+ @Schema(description = "有效成分")
+ @ExcelProperty("有效成分")
+ private String activePrinciple;
+
+ @Schema(description = "安全间隔期")
+ @ExcelProperty("安全间隔期")
+ private Integer safetyInterval;
+
+ @Schema(description = "稀释倍液")
+ @ExcelProperty("稀释倍液")
+ private String diluted;
+
+ @Schema(description = "防治对象及使用方法")
+ @ExcelProperty("防治对象及使用方法")
+ private String usage;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ @ExcelProperty("0=启用,1=停用")
+ private Integer useStatus;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "21613")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "14573")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "6773")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibrarySaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibrarySaveReqVO.java
new file mode 100644
index 00000000..f9f5619e
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/inputlibrary/vo/InputLibrarySaveReqVO.java
@@ -0,0 +1,73 @@
+package cn.iocoder.yudao.module.farm.controller.admin.inputlibrary.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 投入品库维护新增/修改 Request VO")
+@Data
+public class InputLibrarySaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12085")
+ private String id;
+
+ @Schema(description = "投入品类型", example = "2")
+ private String assetType;
+
+ @Schema(description = "投入品名称", example = "王五")
+ private String assetName;
+
+ @Schema(description = "用量")
+ private BigDecimal dose;
+
+ @Schema(description = "单位")
+ private String unit;
+
+ @Schema(description = "单件")
+ private String packageUnit;
+
+ @Schema(description = "单价", example = "23806")
+ private BigDecimal price;
+
+ @Schema(description = "登记证号")
+ private String registration;
+
+ @Schema(description = "提供厂商")
+ private String manufacturer;
+
+ @Schema(description = "药物类型", example = "2")
+ private String drugType;
+
+ @Schema(description = "有效成分")
+ private String activePrinciple;
+
+ @Schema(description = "安全间隔期")
+ private Integer safetyInterval;
+
+ @Schema(description = "稀释倍液")
+ private String diluted;
+
+ @Schema(description = "防治对象及使用方法")
+ private String usage;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ private Integer useStatus;
+
+ @Schema(description = "基地id", example = "21613")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "14573")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "6773")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/MessageCenterController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/MessageCenterController.java
new file mode 100644
index 00000000..f4f30036
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/MessageCenterController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.messagecenter;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.messagecenter.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.messagecenter.MessageCenterDO;
+import cn.iocoder.yudao.module.farm.service.messagecenter.MessageCenterService;
+
+@Tag(name = "管理后台 - 消息中心")
+@RestController
+@RequestMapping("/farm/message-center")
+@Validated
+public class MessageCenterController {
+
+ @Resource
+ private MessageCenterService messageCenterService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建消息中心")
+ @PreAuthorize("@ss.hasPermission('farm:message-center:create')")
+ public CommonResult createMessageCenter(@Valid @RequestBody MessageCenterSaveReqVO createReqVO) {
+ return success(messageCenterService.createMessageCenter(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新消息中心")
+ @PreAuthorize("@ss.hasPermission('farm:message-center:update')")
+ public CommonResult updateMessageCenter(@Valid @RequestBody MessageCenterSaveReqVO updateReqVO) {
+ messageCenterService.updateMessageCenter(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除消息中心")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:message-center:delete')")
+ public CommonResult deleteMessageCenter(@RequestParam("id") String id) {
+ messageCenterService.deleteMessageCenter(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除消息中心")
+ @PreAuthorize("@ss.hasPermission('farm:message-center:delete')")
+ public CommonResult deleteMessageCenterList(@RequestParam("ids") List ids) {
+ messageCenterService.deleteMessageCenterListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得消息中心")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:message-center:query')")
+ public CommonResult getMessageCenter(@RequestParam("id") String id) {
+ MessageCenterDO messageCenter = messageCenterService.getMessageCenter(id);
+ return success(BeanUtils.toBean(messageCenter, MessageCenterRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得消息中心分页")
+ @PreAuthorize("@ss.hasPermission('farm:message-center:query')")
+ public CommonResult> getMessageCenterPage(@Valid MessageCenterPageReqVO pageReqVO) {
+ PageResult pageResult = messageCenterService.getMessageCenterPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, MessageCenterRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出消息中心 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:message-center:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportMessageCenterExcel(@Valid MessageCenterPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = messageCenterService.getMessageCenterPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "消息中心.xls", "数据", MessageCenterRespVO.class,
+ BeanUtils.toBean(list, MessageCenterRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterPageReqVO.java
new file mode 100644
index 00000000..e11f602d
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterPageReqVO.java
@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.farm.controller.admin.messagecenter.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 消息中心分页 Request VO")
+@Data
+public class MessageCenterPageReqVO extends PageParam {
+
+ @Schema(description = "1=报警,2=预警,3=消息", example = "2")
+ private Integer messageType;
+
+ @Schema(description = "标题")
+ private String title;
+
+ @Schema(description = "内容")
+ private String content;
+
+ @Schema(description = "0=未读,1=已读", example = "2")
+ private Integer readStatus;
+
+ @Schema(description = "0=未解除,1=已解除,2=无报警", example = "1")
+ private Integer alarmStatus;
+
+ @Schema(description = "推送次数")
+ private Integer number;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "已读时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] readTime;
+
+ @Schema(description = "基地id", example = "3475")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "7249")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+ @Schema(description = "租户id")
+ private String tenantId;
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterRespVO.java
new file mode 100644
index 00000000..ee6ab594
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterRespVO.java
@@ -0,0 +1,68 @@
+package cn.iocoder.yudao.module.farm.controller.admin.messagecenter.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 消息中心 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MessageCenterRespVO {
+
+ @Schema(description = "消息id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28598")
+ @ExcelProperty("消息id")
+ private String id;
+
+ @Schema(description = "1=报警,2=预警,3=消息", example = "2")
+ @ExcelProperty("1=报警,2=预警,3=消息")
+ private Integer messageType;
+
+ @Schema(description = "标题")
+ @ExcelProperty("标题")
+ private String title;
+
+ @Schema(description = "内容")
+ @ExcelProperty("内容")
+ private String content;
+
+ @Schema(description = "0=未读,1=已读", example = "2")
+ @ExcelProperty("0=未读,1=已读")
+ private Integer readStatus;
+
+ @Schema(description = "0=未解除,1=已解除,2=无报警", example = "1")
+ @ExcelProperty("0=未解除,1=已解除,2=无报警")
+ private Integer alarmStatus;
+
+ @Schema(description = "推送次数")
+ @ExcelProperty("推送次数")
+ private Integer number;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "已读时间")
+ @ExcelProperty("已读时间")
+ private LocalDateTime readTime;
+
+ @Schema(description = "基地id", example = "3475")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "7249")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ @ExcelProperty("地块")
+ private String plotName;
+ @Schema(description = "租户id")
+ private String tenantId;
+}
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterSaveReqVO.java
new file mode 100644
index 00000000..c55896c1
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/messagecenter/vo/MessageCenterSaveReqVO.java
@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.farm.controller.admin.messagecenter.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 消息中心新增/修改 Request VO")
+@Data
+public class MessageCenterSaveReqVO {
+
+ @Schema(description = "消息id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28598")
+ private String id;
+
+ @Schema(description = "1=报警,2=预警,3=消息", example = "2")
+ private Integer messageType;
+
+ @Schema(description = "标题")
+ private String title;
+
+ @Schema(description = "内容")
+ private String content;
+
+ @Schema(description = "0=未读,1=已读", example = "2")
+ private Integer readStatus;
+
+ @Schema(description = "0=未解除,1=已解除,2=无报警", example = "1")
+ private Integer alarmStatus;
+
+ @Schema(description = "推送次数")
+ private Integer number;
+
+ @Schema(description = "已读时间")
+ private LocalDateTime readTime;
+
+ @Schema(description = "基地id", example = "3475")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "7249")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+ @Schema(description = "租户id")
+ private String tenantId;
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/ModelCycleController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/ModelCycleController.java
new file mode 100644
index 00000000..c52e9559
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/ModelCycleController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelcycle;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.modelcycle.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.modelcycle.ModelCycleDO;
+import cn.iocoder.yudao.module.farm.service.modelcycle.ModelCycleService;
+
+@Tag(name = "管理后台 - 模型管理-管理周期")
+@RestController
+@RequestMapping("/farm/model-cycle")
+@Validated
+public class ModelCycleController {
+
+ @Resource
+ private ModelCycleService modelCycleService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建模型管理-管理周期")
+ @PreAuthorize("@ss.hasPermission('farm:model-cycle:create')")
+ public CommonResult createModelCycle(@Valid @RequestBody ModelCycleSaveReqVO createReqVO) {
+ return success(modelCycleService.createModelCycle(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新模型管理-管理周期")
+ @PreAuthorize("@ss.hasPermission('farm:model-cycle:update')")
+ public CommonResult updateModelCycle(@Valid @RequestBody ModelCycleSaveReqVO updateReqVO) {
+ modelCycleService.updateModelCycle(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除模型管理-管理周期")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:model-cycle:delete')")
+ public CommonResult deleteModelCycle(@RequestParam("id") String id) {
+ modelCycleService.deleteModelCycle(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除模型管理-管理周期")
+ @PreAuthorize("@ss.hasPermission('farm:model-cycle:delete')")
+ public CommonResult deleteModelCycleList(@RequestParam("ids") List ids) {
+ modelCycleService.deleteModelCycleListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得模型管理-管理周期")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:model-cycle:query')")
+ public CommonResult getModelCycle(@RequestParam("id") String id) {
+ ModelCycleDO modelCycle = modelCycleService.getModelCycle(id);
+ return success(BeanUtils.toBean(modelCycle, ModelCycleRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得模型管理-管理周期分页")
+ @PreAuthorize("@ss.hasPermission('farm:model-cycle:query')")
+ public CommonResult> getModelCyclePage(@Valid ModelCyclePageReqVO pageReqVO) {
+ PageResult pageResult = modelCycleService.getModelCyclePage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ModelCycleRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出模型管理-管理周期 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:model-cycle:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportModelCycleExcel(@Valid ModelCyclePageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = modelCycleService.getModelCyclePage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "模型管理-管理周期.xls", "数据", ModelCycleRespVO.class,
+ BeanUtils.toBean(list, ModelCycleRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCyclePageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCyclePageReqVO.java
new file mode 100644
index 00000000..70fa7348
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCyclePageReqVO.java
@@ -0,0 +1,50 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelcycle.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 模型管理-管理周期分页 Request VO")
+@Data
+public class ModelCyclePageReqVO extends PageParam {
+
+ @Schema(description = "模型id", example = "441")
+ private String modelId;
+
+ @Schema(description = "管理周期名称", example = "张三")
+ private String name;
+
+ @Schema(description = "阶段天数")
+ private Integer stage;
+
+ @Schema(description = "物候期描述", example = "你猜")
+ private String description;
+
+ @Schema(description = "阶段图片")
+ private String stageImage;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "3265")
+ private String baseId;
+
+ @Schema(description = "基地", example = "赵六")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "19671")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "338")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCycleRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCycleRespVO.java
new file mode 100644
index 00000000..ad2d7de4
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCycleRespVO.java
@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelcycle.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 模型管理-管理周期 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ModelCycleRespVO {
+
+ @Schema(description = "周期id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8266")
+ @ExcelProperty("周期id")
+ private String id;
+
+ @Schema(description = "模型id", example = "441")
+ @ExcelProperty("模型id")
+ private String modelId;
+
+ @Schema(description = "管理周期名称", example = "张三")
+ @ExcelProperty("管理周期名称")
+ private String name;
+
+ @Schema(description = "阶段天数")
+ @ExcelProperty("阶段天数")
+ private Integer stage;
+
+ @Schema(description = "物候期描述", example = "你猜")
+ @ExcelProperty("物候期描述")
+ private String description;
+
+ @Schema(description = "阶段图片")
+ @ExcelProperty("阶段图片")
+ private String stageImage;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "3265")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "赵六")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "19671")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "338")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCycleSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCycleSaveReqVO.java
new file mode 100644
index 00000000..56c5643a
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelcycle/vo/ModelCycleSaveReqVO.java
@@ -0,0 +1,45 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelcycle.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 模型管理-管理周期新增/修改 Request VO")
+@Data
+public class ModelCycleSaveReqVO {
+
+ @Schema(description = "周期id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8266")
+ private String id;
+
+ @Schema(description = "模型id", example = "441")
+ private String modelId;
+
+ @Schema(description = "管理周期名称", example = "张三")
+ private String name;
+
+ @Schema(description = "阶段天数")
+ private Integer stage;
+
+ @Schema(description = "物候期描述", example = "你猜")
+ private String description;
+
+ @Schema(description = "阶段图片")
+ private String stageImage;
+
+ @Schema(description = "基地id", example = "3265")
+ private String baseId;
+
+ @Schema(description = "基地", example = "赵六")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "19671")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "338")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/ModelEnvironmentIndexController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/ModelEnvironmentIndexController.java
new file mode 100644
index 00000000..e936d269
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/ModelEnvironmentIndexController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelenvironmentindex;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.modelenvironmentindex.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.modelenvironmentindex.ModelEnvironmentIndexDO;
+import cn.iocoder.yudao.module.farm.service.modelenvironmentindex.ModelEnvironmentIndexService;
+
+@Tag(name = "管理后台 - 模型管理-环境指标")
+@RestController
+@RequestMapping("/farm/model-environment-index")
+@Validated
+public class ModelEnvironmentIndexController {
+
+ @Resource
+ private ModelEnvironmentIndexService modelEnvironmentIndexService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建模型管理-环境指标")
+ @PreAuthorize("@ss.hasPermission('farm:model-environment-index:create')")
+ public CommonResult createModelEnvironmentIndex(@Valid @RequestBody ModelEnvironmentIndexSaveReqVO createReqVO) {
+ return success(modelEnvironmentIndexService.createModelEnvironmentIndex(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新模型管理-环境指标")
+ @PreAuthorize("@ss.hasPermission('farm:model-environment-index:update')")
+ public CommonResult updateModelEnvironmentIndex(@Valid @RequestBody ModelEnvironmentIndexSaveReqVO updateReqVO) {
+ modelEnvironmentIndexService.updateModelEnvironmentIndex(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除模型管理-环境指标")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:model-environment-index:delete')")
+ public CommonResult deleteModelEnvironmentIndex(@RequestParam("id") String id) {
+ modelEnvironmentIndexService.deleteModelEnvironmentIndex(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除模型管理-环境指标")
+ @PreAuthorize("@ss.hasPermission('farm:model-environment-index:delete')")
+ public CommonResult deleteModelEnvironmentIndexList(@RequestParam("ids") List ids) {
+ modelEnvironmentIndexService.deleteModelEnvironmentIndexListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得模型管理-环境指标")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:model-environment-index:query')")
+ public CommonResult getModelEnvironmentIndex(@RequestParam("id") String id) {
+ ModelEnvironmentIndexDO modelEnvironmentIndex = modelEnvironmentIndexService.getModelEnvironmentIndex(id);
+ return success(BeanUtils.toBean(modelEnvironmentIndex, ModelEnvironmentIndexRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得模型管理-环境指标分页")
+ @PreAuthorize("@ss.hasPermission('farm:model-environment-index:query')")
+ public CommonResult> getModelEnvironmentIndexPage(@Valid ModelEnvironmentIndexPageReqVO pageReqVO) {
+ PageResult pageResult = modelEnvironmentIndexService.getModelEnvironmentIndexPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ModelEnvironmentIndexRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出模型管理-环境指标 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:model-environment-index:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportModelEnvironmentIndexExcel(@Valid ModelEnvironmentIndexPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = modelEnvironmentIndexService.getModelEnvironmentIndexPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "模型管理-环境指标.xls", "数据", ModelEnvironmentIndexRespVO.class,
+ BeanUtils.toBean(list, ModelEnvironmentIndexRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexPageReqVO.java
new file mode 100644
index 00000000..5f3744ce
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexPageReqVO.java
@@ -0,0 +1,54 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelenvironmentindex.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 模型管理-环境指标分页 Request VO")
+@Data
+public class ModelEnvironmentIndexPageReqVO extends PageParam {
+
+ @Schema(description = "周期id", example = "26426")
+ private String cycleId;
+
+ @Schema(description = "设备分类")
+ private String deviceClass;
+
+ @Schema(description = "环境指标")
+ private String indicators;
+
+ @Schema(description = "最低值")
+ private BigDecimal minimum;
+
+ @Schema(description = "最高值")
+ private BigDecimal maximum;
+
+ @Schema(description = "预警摘要说明", example = "你猜")
+ private String description;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "23126")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "26021")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "20667")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexRespVO.java
new file mode 100644
index 00000000..b198a3eb
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexRespVO.java
@@ -0,0 +1,68 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelenvironmentindex.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 模型管理-环境指标 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ModelEnvironmentIndexRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "704")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "周期id", example = "26426")
+ @ExcelProperty("周期id")
+ private String cycleId;
+
+ @Schema(description = "设备分类")
+ @ExcelProperty("设备分类")
+ private String deviceClass;
+
+ @Schema(description = "环境指标")
+ @ExcelProperty("环境指标")
+ private String indicators;
+
+ @Schema(description = "最低值")
+ @ExcelProperty("最低值")
+ private BigDecimal minimum;
+
+ @Schema(description = "最高值")
+ @ExcelProperty("最高值")
+ private BigDecimal maximum;
+
+ @Schema(description = "预警摘要说明", example = "你猜")
+ @ExcelProperty("预警摘要说明")
+ private String description;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "23126")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "26021")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "20667")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexSaveReqVO.java
new file mode 100644
index 00000000..f72b9226
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelenvironmentindex/vo/ModelEnvironmentIndexSaveReqVO.java
@@ -0,0 +1,49 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelenvironmentindex.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 模型管理-环境指标新增/修改 Request VO")
+@Data
+public class ModelEnvironmentIndexSaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "704")
+ private String id;
+
+ @Schema(description = "周期id", example = "26426")
+ private String cycleId;
+
+ @Schema(description = "设备分类")
+ private String deviceClass;
+
+ @Schema(description = "环境指标")
+ private String indicators;
+
+ @Schema(description = "最低值")
+ private BigDecimal minimum;
+
+ @Schema(description = "最高值")
+ private BigDecimal maximum;
+
+ @Schema(description = "预警摘要说明", example = "你猜")
+ private String description;
+
+ @Schema(description = "基地id", example = "23126")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "26021")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "20667")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/ModelFarmingOperationController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/ModelFarmingOperationController.java
new file mode 100644
index 00000000..00fa552e
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/ModelFarmingOperationController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperation;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperation.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.modelfarmingoperation.ModelFarmingOperationDO;
+import cn.iocoder.yudao.module.farm.service.modelfarmingoperation.ModelFarmingOperationService;
+
+@Tag(name = "管理后台 - 模型管理-农事操作")
+@RestController
+@RequestMapping("/farm/model-farming-operation")
+@Validated
+public class ModelFarmingOperationController {
+
+ @Resource
+ private ModelFarmingOperationService modelFarmingOperationService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建模型管理-农事操作")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation:create')")
+ public CommonResult createModelFarmingOperation(@Valid @RequestBody ModelFarmingOperationSaveReqVO createReqVO) {
+ return success(modelFarmingOperationService.createModelFarmingOperation(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新模型管理-农事操作")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation:update')")
+ public CommonResult updateModelFarmingOperation(@Valid @RequestBody ModelFarmingOperationSaveReqVO updateReqVO) {
+ modelFarmingOperationService.updateModelFarmingOperation(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除模型管理-农事操作")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation:delete')")
+ public CommonResult deleteModelFarmingOperation(@RequestParam("id") String id) {
+ modelFarmingOperationService.deleteModelFarmingOperation(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除模型管理-农事操作")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation:delete')")
+ public CommonResult deleteModelFarmingOperationList(@RequestParam("ids") List ids) {
+ modelFarmingOperationService.deleteModelFarmingOperationListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得模型管理-农事操作")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation:query')")
+ public CommonResult getModelFarmingOperation(@RequestParam("id") String id) {
+ ModelFarmingOperationDO modelFarmingOperation = modelFarmingOperationService.getModelFarmingOperation(id);
+ return success(BeanUtils.toBean(modelFarmingOperation, ModelFarmingOperationRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得模型管理-农事操作分页")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation:query')")
+ public CommonResult> getModelFarmingOperationPage(@Valid ModelFarmingOperationPageReqVO pageReqVO) {
+ PageResult pageResult = modelFarmingOperationService.getModelFarmingOperationPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ModelFarmingOperationRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出模型管理-农事操作 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportModelFarmingOperationExcel(@Valid ModelFarmingOperationPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = modelFarmingOperationService.getModelFarmingOperationPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "模型管理-农事操作.xls", "数据", ModelFarmingOperationRespVO.class,
+ BeanUtils.toBean(list, ModelFarmingOperationRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationPageReqVO.java
new file mode 100644
index 00000000..95934745
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationPageReqVO.java
@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperation.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 模型管理-农事操作分页 Request VO")
+@Data
+public class ModelFarmingOperationPageReqVO extends PageParam {
+
+ @Schema(description = "周期id", example = "2363")
+ private String cycleId;
+
+ @Schema(description = "农事名称id", example = "赵六")
+ private String farmingName;
+
+ @Schema(description = "操作开始时期(天)")
+ private Integer startingPeriod;
+
+ @Schema(description = "用时(天)")
+ private Integer used;
+
+ @Schema(description = "人工数(人)")
+ private Integer workersNumber;
+
+ @Schema(description = "操作方式说明", example = "你猜")
+ private String description;
+
+ @Schema(description = "操作示意图")
+ private String sketch;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "20985")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "13119")
+ private String plotId;
+
+ @Schema(description = "地块", example = "芋艿")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "31485")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationRespVO.java
new file mode 100644
index 00000000..f3e3b107
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationRespVO.java
@@ -0,0 +1,71 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperation.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 模型管理-农事操作 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ModelFarmingOperationRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2386")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "周期id", example = "2363")
+ @ExcelProperty("周期id")
+ private String cycleId;
+
+ @Schema(description = "农事名称id", example = "赵六")
+ @ExcelProperty("农事名称id")
+ private String farmingName;
+
+ @Schema(description = "操作开始时期(天)")
+ @ExcelProperty("操作开始时期(天)")
+ private Integer startingPeriod;
+
+ @Schema(description = "用时(天)")
+ @ExcelProperty("用时(天)")
+ private Integer used;
+
+ @Schema(description = "人工数(人)")
+ @ExcelProperty("人工数(人)")
+ private Integer workersNumber;
+
+ @Schema(description = "操作方式说明", example = "你猜")
+ @ExcelProperty("操作方式说明")
+ private String description;
+
+ @Schema(description = "操作示意图")
+ @ExcelProperty("操作示意图")
+ private String sketch;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "20985")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "13119")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "芋艿")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "31485")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationSaveReqVO.java
new file mode 100644
index 00000000..c1cbfbc3
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperation/vo/ModelFarmingOperationSaveReqVO.java
@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperation.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 模型管理-农事操作新增/修改 Request VO")
+@Data
+public class ModelFarmingOperationSaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2386")
+ private String id;
+
+ @Schema(description = "周期id", example = "2363")
+ private String cycleId;
+
+ @Schema(description = "农事名称id", example = "赵六")
+ private String farmingName;
+
+ @Schema(description = "操作开始时期(天)")
+ private Integer startingPeriod;
+
+ @Schema(description = "用时(天)")
+ private Integer used;
+
+ @Schema(description = "人工数(人)")
+ private Integer workersNumber;
+
+ @Schema(description = "操作方式说明", example = "你猜")
+ private String description;
+
+ @Schema(description = "操作示意图")
+ private String sketch;
+
+ @Schema(description = "基地id", example = "20985")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "13119")
+ private String plotId;
+
+ @Schema(description = "地块", example = "芋艿")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "31485")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/ModelFarmingOperationInputController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/ModelFarmingOperationInputController.java
new file mode 100644
index 00000000..955c97ca
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/ModelFarmingOperationInputController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperationinput;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperationinput.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.modelfarmingoperationinput.ModelFarmingOperationInputDO;
+import cn.iocoder.yudao.module.farm.service.modelfarmingoperationinput.ModelFarmingOperationInputService;
+
+@Tag(name = "管理后台 - 模型管理-农事操作-已选择投入品列")
+@RestController
+@RequestMapping("/farm/model-farming-operation-input")
+@Validated
+public class ModelFarmingOperationInputController {
+
+ @Resource
+ private ModelFarmingOperationInputService modelFarmingOperationInputService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建模型管理-农事操作-已选择投入品列")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation-input:create')")
+ public CommonResult createModelFarmingOperationInput(@Valid @RequestBody ModelFarmingOperationInputSaveReqVO createReqVO) {
+ return success(modelFarmingOperationInputService.createModelFarmingOperationInput(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新模型管理-农事操作-已选择投入品列")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation-input:update')")
+ public CommonResult updateModelFarmingOperationInput(@Valid @RequestBody ModelFarmingOperationInputSaveReqVO updateReqVO) {
+ modelFarmingOperationInputService.updateModelFarmingOperationInput(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除模型管理-农事操作-已选择投入品列")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation-input:delete')")
+ public CommonResult deleteModelFarmingOperationInput(@RequestParam("id") String id) {
+ modelFarmingOperationInputService.deleteModelFarmingOperationInput(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除模型管理-农事操作-已选择投入品列")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation-input:delete')")
+ public CommonResult deleteModelFarmingOperationInputList(@RequestParam("ids") List ids) {
+ modelFarmingOperationInputService.deleteModelFarmingOperationInputListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得模型管理-农事操作-已选择投入品列")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation-input:query')")
+ public CommonResult getModelFarmingOperationInput(@RequestParam("id") String id) {
+ ModelFarmingOperationInputDO modelFarmingOperationInput = modelFarmingOperationInputService.getModelFarmingOperationInput(id);
+ return success(BeanUtils.toBean(modelFarmingOperationInput, ModelFarmingOperationInputRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得模型管理-农事操作-已选择投入品列分页")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation-input:query')")
+ public CommonResult> getModelFarmingOperationInputPage(@Valid ModelFarmingOperationInputPageReqVO pageReqVO) {
+ PageResult pageResult = modelFarmingOperationInputService.getModelFarmingOperationInputPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ModelFarmingOperationInputRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出模型管理-农事操作-已选择投入品列 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:model-farming-operation-input:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportModelFarmingOperationInputExcel(@Valid ModelFarmingOperationInputPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = modelFarmingOperationInputService.getModelFarmingOperationInputPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "模型管理-农事操作-已选择投入品列.xls", "数据", ModelFarmingOperationInputRespVO.class,
+ BeanUtils.toBean(list, ModelFarmingOperationInputRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputPageReqVO.java
new file mode 100644
index 00000000..2d758c8d
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputPageReqVO.java
@@ -0,0 +1,54 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperationinput.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 模型管理-农事操作-已选择投入品列分页 Request VO")
+@Data
+public class ModelFarmingOperationInputPageReqVO extends PageParam {
+
+ @Schema(description = "农事id", example = "26361")
+ private String farmingId;
+
+ @Schema(description = "投入品id", example = "5852")
+ private String inputsId;
+
+ @Schema(description = "用量")
+ private BigDecimal dose;
+
+ @Schema(description = "单位")
+ private String unit;
+
+ @Schema(description = "稀释倍液")
+ private String diluted;
+
+ @Schema(description = "用法")
+ private String usage;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "21363")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "26067")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "3440")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputRespVO.java
new file mode 100644
index 00000000..18834c86
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputRespVO.java
@@ -0,0 +1,68 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperationinput.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 模型管理-农事操作-已选择投入品列 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ModelFarmingOperationInputRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13911")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "农事id", example = "26361")
+ @ExcelProperty("农事id")
+ private String farmingId;
+
+ @Schema(description = "投入品id", example = "5852")
+ @ExcelProperty("投入品id")
+ private String inputsId;
+
+ @Schema(description = "用量")
+ @ExcelProperty("用量")
+ private BigDecimal dose;
+
+ @Schema(description = "单位")
+ @ExcelProperty("单位")
+ private String unit;
+
+ @Schema(description = "稀释倍液")
+ @ExcelProperty("稀释倍液")
+ private String diluted;
+
+ @Schema(description = "用法")
+ @ExcelProperty("用法")
+ private String usage;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "21363")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "26067")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "3440")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputSaveReqVO.java
new file mode 100644
index 00000000..bdccb379
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelfarmingoperationinput/vo/ModelFarmingOperationInputSaveReqVO.java
@@ -0,0 +1,49 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelfarmingoperationinput.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 模型管理-农事操作-已选择投入品列新增/修改 Request VO")
+@Data
+public class ModelFarmingOperationInputSaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13911")
+ private String id;
+
+ @Schema(description = "农事id", example = "26361")
+ private String farmingId;
+
+ @Schema(description = "投入品id", example = "5852")
+ private String inputsId;
+
+ @Schema(description = "用量")
+ private BigDecimal dose;
+
+ @Schema(description = "单位")
+ private String unit;
+
+ @Schema(description = "稀释倍液")
+ private String diluted;
+
+ @Schema(description = "用法")
+ private String usage;
+
+ @Schema(description = "基地id", example = "21363")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "26067")
+ private String plotId;
+
+ @Schema(description = "地块", example = "张三")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "3440")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/ModelPestDiseaseWeedController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/ModelPestDiseaseWeedController.java
new file mode 100644
index 00000000..ffe900d2
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/ModelPestDiseaseWeedController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelpestdiseaseweed;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.modelpestdiseaseweed.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.modelpestdiseaseweed.ModelPestDiseaseWeedDO;
+import cn.iocoder.yudao.module.farm.service.modelpestdiseaseweed.ModelPestDiseaseWeedService;
+
+@Tag(name = "管理后台 - 模型管理-病虫草害")
+@RestController
+@RequestMapping("/farm/model-pest-disease-weed")
+@Validated
+public class ModelPestDiseaseWeedController {
+
+ @Resource
+ private ModelPestDiseaseWeedService modelPestDiseaseWeedService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建模型管理-病虫草害")
+ @PreAuthorize("@ss.hasPermission('farm:model-pest-disease-weed:create')")
+ public CommonResult createModelPestDiseaseWeed(@Valid @RequestBody ModelPestDiseaseWeedSaveReqVO createReqVO) {
+ return success(modelPestDiseaseWeedService.createModelPestDiseaseWeed(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新模型管理-病虫草害")
+ @PreAuthorize("@ss.hasPermission('farm:model-pest-disease-weed:update')")
+ public CommonResult updateModelPestDiseaseWeed(@Valid @RequestBody ModelPestDiseaseWeedSaveReqVO updateReqVO) {
+ modelPestDiseaseWeedService.updateModelPestDiseaseWeed(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除模型管理-病虫草害")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:model-pest-disease-weed:delete')")
+ public CommonResult deleteModelPestDiseaseWeed(@RequestParam("id") String id) {
+ modelPestDiseaseWeedService.deleteModelPestDiseaseWeed(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除模型管理-病虫草害")
+ @PreAuthorize("@ss.hasPermission('farm:model-pest-disease-weed:delete')")
+ public CommonResult deleteModelPestDiseaseWeedList(@RequestParam("ids") List ids) {
+ modelPestDiseaseWeedService.deleteModelPestDiseaseWeedListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得模型管理-病虫草害")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:model-pest-disease-weed:query')")
+ public CommonResult getModelPestDiseaseWeed(@RequestParam("id") String id) {
+ ModelPestDiseaseWeedDO modelPestDiseaseWeed = modelPestDiseaseWeedService.getModelPestDiseaseWeed(id);
+ return success(BeanUtils.toBean(modelPestDiseaseWeed, ModelPestDiseaseWeedRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得模型管理-病虫草害分页")
+ @PreAuthorize("@ss.hasPermission('farm:model-pest-disease-weed:query')")
+ public CommonResult> getModelPestDiseaseWeedPage(@Valid ModelPestDiseaseWeedPageReqVO pageReqVO) {
+ PageResult pageResult = modelPestDiseaseWeedService.getModelPestDiseaseWeedPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ModelPestDiseaseWeedRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出模型管理-病虫草害 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:model-pest-disease-weed:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportModelPestDiseaseWeedExcel(@Valid ModelPestDiseaseWeedPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = modelPestDiseaseWeedService.getModelPestDiseaseWeedPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "模型管理-病虫草害.xls", "数据", ModelPestDiseaseWeedRespVO.class,
+ BeanUtils.toBean(list, ModelPestDiseaseWeedRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedPageReqVO.java
new file mode 100644
index 00000000..9d773fe4
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedPageReqVO.java
@@ -0,0 +1,50 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelpestdiseaseweed.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 模型管理-病虫草害分页 Request VO")
+@Data
+public class ModelPestDiseaseWeedPageReqVO extends PageParam {
+
+ @Schema(description = "周期id", example = "11935")
+ private String cycleId;
+
+ @Schema(description = "病虫草害类型", example = "2")
+ private Integer type;
+
+ @Schema(description = "病虫草害名称", example = "芋艿")
+ private String name;
+
+ @Schema(description = "病虫草害id", example = "20996")
+ private String pestsId;
+
+ @Schema(description = "预警摘要说明", example = "你说的对")
+ private String description;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "22440")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "17998")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "31930")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedRespVO.java
new file mode 100644
index 00000000..f7384770
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedRespVO.java
@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelpestdiseaseweed.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 模型管理-病虫草害 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ModelPestDiseaseWeedRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2957")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "周期id", example = "11935")
+ @ExcelProperty("周期id")
+ private String cycleId;
+
+ @Schema(description = "病虫草害类型", example = "2")
+ @ExcelProperty("病虫草害类型")
+ private Integer type;
+
+ @Schema(description = "病虫草害名称", example = "芋艿")
+ @ExcelProperty("病虫草害名称")
+ private String name;
+
+ @Schema(description = "病虫草害id", example = "20996")
+ @ExcelProperty("病虫草害id")
+ private String pestsId;
+
+ @Schema(description = "预警摘要说明", example = "你说的对")
+ @ExcelProperty("预警摘要说明")
+ private String description;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "22440")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "17998")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "31930")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedSaveReqVO.java
new file mode 100644
index 00000000..02036544
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelpestdiseaseweed/vo/ModelPestDiseaseWeedSaveReqVO.java
@@ -0,0 +1,45 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelpestdiseaseweed.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 模型管理-病虫草害新增/修改 Request VO")
+@Data
+public class ModelPestDiseaseWeedSaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2957")
+ private String id;
+
+ @Schema(description = "周期id", example = "11935")
+ private String cycleId;
+
+ @Schema(description = "病虫草害类型", example = "2")
+ private Integer type;
+
+ @Schema(description = "病虫草害名称", example = "芋艿")
+ private String name;
+
+ @Schema(description = "病虫草害id", example = "20996")
+ private String pestsId;
+
+ @Schema(description = "预警摘要说明", example = "你说的对")
+ private String description;
+
+ @Schema(description = "基地id", example = "22440")
+ private String baseId;
+
+ @Schema(description = "基地", example = "张三")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "17998")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "31930")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/ModelWeatherDisasterController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/ModelWeatherDisasterController.java
new file mode 100644
index 00000000..8ca42921
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/ModelWeatherDisasterController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelweatherdisaster;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.modelweatherdisaster.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.modelweatherdisaster.ModelWeatherDisasterDO;
+import cn.iocoder.yudao.module.farm.service.modelweatherdisaster.ModelWeatherDisasterService;
+
+@Tag(name = "管理后台 - 模型管理-气象灾害")
+@RestController
+@RequestMapping("/farm/model-weather-disaster")
+@Validated
+public class ModelWeatherDisasterController {
+
+ @Resource
+ private ModelWeatherDisasterService modelWeatherDisasterService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建模型管理-气象灾害")
+ @PreAuthorize("@ss.hasPermission('farm:model-weather-disaster:create')")
+ public CommonResult createModelWeatherDisaster(@Valid @RequestBody ModelWeatherDisasterSaveReqVO createReqVO) {
+ return success(modelWeatherDisasterService.createModelWeatherDisaster(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新模型管理-气象灾害")
+ @PreAuthorize("@ss.hasPermission('farm:model-weather-disaster:update')")
+ public CommonResult updateModelWeatherDisaster(@Valid @RequestBody ModelWeatherDisasterSaveReqVO updateReqVO) {
+ modelWeatherDisasterService.updateModelWeatherDisaster(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除模型管理-气象灾害")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:model-weather-disaster:delete')")
+ public CommonResult deleteModelWeatherDisaster(@RequestParam("id") String id) {
+ modelWeatherDisasterService.deleteModelWeatherDisaster(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除模型管理-气象灾害")
+ @PreAuthorize("@ss.hasPermission('farm:model-weather-disaster:delete')")
+ public CommonResult deleteModelWeatherDisasterList(@RequestParam("ids") List ids) {
+ modelWeatherDisasterService.deleteModelWeatherDisasterListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得模型管理-气象灾害")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:model-weather-disaster:query')")
+ public CommonResult getModelWeatherDisaster(@RequestParam("id") String id) {
+ ModelWeatherDisasterDO modelWeatherDisaster = modelWeatherDisasterService.getModelWeatherDisaster(id);
+ return success(BeanUtils.toBean(modelWeatherDisaster, ModelWeatherDisasterRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得模型管理-气象灾害分页")
+ @PreAuthorize("@ss.hasPermission('farm:model-weather-disaster:query')")
+ public CommonResult> getModelWeatherDisasterPage(@Valid ModelWeatherDisasterPageReqVO pageReqVO) {
+ PageResult pageResult = modelWeatherDisasterService.getModelWeatherDisasterPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ModelWeatherDisasterRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出模型管理-气象灾害 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:model-weather-disaster:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportModelWeatherDisasterExcel(@Valid ModelWeatherDisasterPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = modelWeatherDisasterService.getModelWeatherDisasterPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "模型管理-气象灾害.xls", "数据", ModelWeatherDisasterRespVO.class,
+ BeanUtils.toBean(list, ModelWeatherDisasterRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterPageReqVO.java
new file mode 100644
index 00000000..215c955f
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterPageReqVO.java
@@ -0,0 +1,50 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelweatherdisaster.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 模型管理-气象灾害分页 Request VO")
+@Data
+public class ModelWeatherDisasterPageReqVO extends PageParam {
+
+ @Schema(description = "周期id", example = "26687")
+ private String cycleId;
+
+ @Schema(description = "气象灾害名称", example = "李四")
+ private String name;
+
+ @Schema(description = "气象灾害id", example = "20911")
+ private String weatherId;
+
+ @Schema(description = "预警摘要说明", example = "你猜")
+ private String description;
+
+ @Schema(description = "气象灾害图片")
+ private String image;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "28186")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "29489")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "3725")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterRespVO.java
new file mode 100644
index 00000000..38c08d64
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterRespVO.java
@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelweatherdisaster.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 模型管理-气象灾害 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ModelWeatherDisasterRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5402")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "周期id", example = "26687")
+ @ExcelProperty("周期id")
+ private String cycleId;
+
+ @Schema(description = "气象灾害名称", example = "李四")
+ @ExcelProperty("气象灾害名称")
+ private String name;
+
+ @Schema(description = "气象灾害id", example = "20911")
+ @ExcelProperty("气象灾害id")
+ private String weatherId;
+
+ @Schema(description = "预警摘要说明", example = "你猜")
+ @ExcelProperty("预警摘要说明")
+ private String description;
+
+ @Schema(description = "气象灾害图片")
+ @ExcelProperty("气象灾害图片")
+ private String image;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "28186")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "29489")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "3725")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterSaveReqVO.java
new file mode 100644
index 00000000..da0ae4db
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelweatherdisaster/vo/ModelWeatherDisasterSaveReqVO.java
@@ -0,0 +1,45 @@
+package cn.iocoder.yudao.module.farm.controller.admin.modelweatherdisaster.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 模型管理-气象灾害新增/修改 Request VO")
+@Data
+public class ModelWeatherDisasterSaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5402")
+ private String id;
+
+ @Schema(description = "周期id", example = "26687")
+ private String cycleId;
+
+ @Schema(description = "气象灾害名称", example = "李四")
+ private String name;
+
+ @Schema(description = "气象灾害id", example = "20911")
+ private String weatherId;
+
+ @Schema(description = "预警摘要说明", example = "你猜")
+ private String description;
+
+ @Schema(description = "气象灾害图片")
+ private String image;
+
+ @Schema(description = "基地id", example = "28186")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "29489")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "3725")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/PersonnelManagementController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/PersonnelManagementController.java
new file mode 100644
index 00000000..605c83c9
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/PersonnelManagementController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.personnelmanagement;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.personnelmanagement.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.personnelmanagement.PersonnelManagementDO;
+import cn.iocoder.yudao.module.farm.service.personnelmanagement.PersonnelManagementService;
+
+@Tag(name = "管理后台 - 人员管理")
+@RestController
+@RequestMapping("/farm/personnel-management")
+@Validated
+public class PersonnelManagementController {
+
+ @Resource
+ private PersonnelManagementService personnelManagementService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建人员管理")
+ @PreAuthorize("@ss.hasPermission('farm:personnel-management:create')")
+ public CommonResult createPersonnelManagement(@Valid @RequestBody PersonnelManagementSaveReqVO createReqVO) {
+ return success(personnelManagementService.createPersonnelManagement(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新人员管理")
+ @PreAuthorize("@ss.hasPermission('farm:personnel-management:update')")
+ public CommonResult updatePersonnelManagement(@Valid @RequestBody PersonnelManagementSaveReqVO updateReqVO) {
+ personnelManagementService.updatePersonnelManagement(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除人员管理")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:personnel-management:delete')")
+ public CommonResult deletePersonnelManagement(@RequestParam("id") String id) {
+ personnelManagementService.deletePersonnelManagement(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除人员管理")
+ @PreAuthorize("@ss.hasPermission('farm:personnel-management:delete')")
+ public CommonResult deletePersonnelManagementList(@RequestParam("ids") List ids) {
+ personnelManagementService.deletePersonnelManagementListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得人员管理")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:personnel-management:query')")
+ public CommonResult getPersonnelManagement(@RequestParam("id") String id) {
+ PersonnelManagementDO personnelManagement = personnelManagementService.getPersonnelManagement(id);
+ return success(BeanUtils.toBean(personnelManagement, PersonnelManagementRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得人员管理分页")
+ @PreAuthorize("@ss.hasPermission('farm:personnel-management:query')")
+ public CommonResult> getPersonnelManagementPage(@Valid PersonnelManagementPageReqVO pageReqVO) {
+ PageResult pageResult = personnelManagementService.getPersonnelManagementPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, PersonnelManagementRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出人员管理 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:personnel-management:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportPersonnelManagementExcel(@Valid PersonnelManagementPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = personnelManagementService.getPersonnelManagementPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "人员管理.xls", "数据", PersonnelManagementRespVO.class,
+ BeanUtils.toBean(list, PersonnelManagementRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementPageReqVO.java
new file mode 100644
index 00000000..8b119a5d
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementPageReqVO.java
@@ -0,0 +1,53 @@
+package cn.iocoder.yudao.module.farm.controller.admin.personnelmanagement.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 人员管理分页 Request VO")
+@Data
+public class PersonnelManagementPageReqVO extends PageParam {
+
+ @Schema(description = "用户姓名", example = "芋艿")
+ private String name;
+
+ @Schema(description = "所属部门")
+ private String department;
+
+ @Schema(description = "电话号")
+ private String phone;
+
+ @Schema(description = "角色id用,隔开")
+ private String role;
+
+ @Schema(description = "头像")
+ private String picture;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ private Integer accountStatus;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "30077")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "13706")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "24704")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementRespVO.java
new file mode 100644
index 00000000..acea709c
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementRespVO.java
@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.farm.controller.admin.personnelmanagement.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 人员管理 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class PersonnelManagementRespVO {
+
+ @Schema(description = "人员id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9882")
+ @ExcelProperty("人员id")
+ private String id;
+
+ @Schema(description = "用户姓名", example = "芋艿")
+ @ExcelProperty("用户姓名")
+ private String name;
+
+ @Schema(description = "所属部门")
+ @ExcelProperty("所属部门")
+ private String department;
+
+ @Schema(description = "电话号")
+ @ExcelProperty("电话号")
+ private String phone;
+
+ @Schema(description = "角色id用,隔开")
+ @ExcelProperty("角色id用,隔开")
+ private String role;
+
+ @Schema(description = "头像")
+ @ExcelProperty("头像")
+ private String picture;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ @ExcelProperty("0=启用,1=停用")
+ private Integer accountStatus;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "30077")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "13706")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "24704")
+ @ExcelProperty("租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementSaveReqVO.java
new file mode 100644
index 00000000..3c729243
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/vo/PersonnelManagementSaveReqVO.java
@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.farm.controller.admin.personnelmanagement.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 人员管理新增/修改 Request VO")
+@Data
+public class PersonnelManagementSaveReqVO {
+
+ @Schema(description = "人员id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9882")
+ private String id;
+
+ @Schema(description = "用户姓名", example = "芋艿")
+ private String name;
+
+ @Schema(description = "所属部门")
+ private String department;
+
+ @Schema(description = "电话号")
+ private String phone;
+
+ @Schema(description = "角色id用,隔开")
+ private String role;
+
+ @Schema(description = "头像")
+ private String picture;
+
+ @Schema(description = "0=启用,1=停用", example = "2")
+ private Integer accountStatus;
+
+ @Schema(description = "基地id", example = "30077")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "13706")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "24704")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/PestDiseaseWeedLibraryController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/PestDiseaseWeedLibraryController.java
new file mode 100644
index 00000000..39e353a1
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/PestDiseaseWeedLibraryController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.pestdiseaseweedlibrary;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.pestdiseaseweedlibrary.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.pestdiseaseweedlibrary.PestDiseaseWeedLibraryDO;
+import cn.iocoder.yudao.module.farm.service.pestdiseaseweedlibrary.PestDiseaseWeedLibraryService;
+
+@Tag(name = "管理后台 - 病虫草害库维护")
+@RestController
+@RequestMapping("/farm/pest-disease-weed-library")
+@Validated
+public class PestDiseaseWeedLibraryController {
+
+ @Resource
+ private PestDiseaseWeedLibraryService pestDiseaseWeedLibraryService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建病虫草害库维护")
+ @PreAuthorize("@ss.hasPermission('farm:pest-disease-weed-library:create')")
+ public CommonResult createPestDiseaseWeedLibrary(@Valid @RequestBody PestDiseaseWeedLibrarySaveReqVO createReqVO) {
+ return success(pestDiseaseWeedLibraryService.createPestDiseaseWeedLibrary(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新病虫草害库维护")
+ @PreAuthorize("@ss.hasPermission('farm:pest-disease-weed-library:update')")
+ public CommonResult updatePestDiseaseWeedLibrary(@Valid @RequestBody PestDiseaseWeedLibrarySaveReqVO updateReqVO) {
+ pestDiseaseWeedLibraryService.updatePestDiseaseWeedLibrary(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除病虫草害库维护")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:pest-disease-weed-library:delete')")
+ public CommonResult deletePestDiseaseWeedLibrary(@RequestParam("id") String id) {
+ pestDiseaseWeedLibraryService.deletePestDiseaseWeedLibrary(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除病虫草害库维护")
+ @PreAuthorize("@ss.hasPermission('farm:pest-disease-weed-library:delete')")
+ public CommonResult deletePestDiseaseWeedLibraryList(@RequestParam("ids") List ids) {
+ pestDiseaseWeedLibraryService.deletePestDiseaseWeedLibraryListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得病虫草害库维护")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:pest-disease-weed-library:query')")
+ public CommonResult getPestDiseaseWeedLibrary(@RequestParam("id") String id) {
+ PestDiseaseWeedLibraryDO pestDiseaseWeedLibrary = pestDiseaseWeedLibraryService.getPestDiseaseWeedLibrary(id);
+ return success(BeanUtils.toBean(pestDiseaseWeedLibrary, PestDiseaseWeedLibraryRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得病虫草害库维护分页")
+ @PreAuthorize("@ss.hasPermission('farm:pest-disease-weed-library:query')")
+ public CommonResult> getPestDiseaseWeedLibraryPage(@Valid PestDiseaseWeedLibraryPageReqVO pageReqVO) {
+ PageResult pageResult = pestDiseaseWeedLibraryService.getPestDiseaseWeedLibraryPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, PestDiseaseWeedLibraryRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出病虫草害库维护 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:pest-disease-weed-library:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportPestDiseaseWeedLibraryExcel(@Valid PestDiseaseWeedLibraryPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = pestDiseaseWeedLibraryService.getPestDiseaseWeedLibraryPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "病虫草害库维护.xls", "数据", PestDiseaseWeedLibraryRespVO.class,
+ BeanUtils.toBean(list, PestDiseaseWeedLibraryRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibraryPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibraryPageReqVO.java
new file mode 100644
index 00000000..a88614c6
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibraryPageReqVO.java
@@ -0,0 +1,53 @@
+package cn.iocoder.yudao.module.farm.controller.admin.pestdiseaseweedlibrary.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 病虫草害库维护分页 Request VO")
+@Data
+public class PestDiseaseWeedLibraryPageReqVO extends PageParam {
+
+ @Schema(description = "灾害类型", example = "2")
+ private Integer type;
+
+ @Schema(description = "灾害名称", example = "李四")
+ private String name;
+
+ @Schema(description = "灾害描述", example = "你说的对")
+ private String description;
+
+ @Schema(description = "防治建议")
+ private String propose;
+
+ @Schema(description = "图片")
+ private String images;
+
+ @Schema(description = "0=启用,1=停用", example = "1")
+ private Integer useStatus;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "427")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "27747")
+ private String plotId;
+
+ @Schema(description = "地块", example = "芋艿")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "27978")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibraryRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibraryRespVO.java
new file mode 100644
index 00000000..ea8f45a8
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibraryRespVO.java
@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.farm.controller.admin.pestdiseaseweedlibrary.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 病虫草害库维护 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class PestDiseaseWeedLibraryRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "521")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "灾害类型", example = "2")
+ @ExcelProperty("灾害类型")
+ private Integer type;
+
+ @Schema(description = "灾害名称", example = "李四")
+ @ExcelProperty("灾害名称")
+ private String name;
+
+ @Schema(description = "灾害描述", example = "你说的对")
+ @ExcelProperty("灾害描述")
+ private String description;
+
+ @Schema(description = "防治建议")
+ @ExcelProperty("防治建议")
+ private String propose;
+
+ @Schema(description = "图片")
+ @ExcelProperty("图片")
+ private String images;
+
+ @Schema(description = "0=启用,1=停用", example = "1")
+ @ExcelProperty("0=启用,1=停用")
+ private Integer useStatus;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "427")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "27747")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "芋艿")
+ @ExcelProperty("地块")
+ private String plotName;
+ @Schema(description = "租户id")
+ private String tenantId;
+}
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibrarySaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibrarySaveReqVO.java
new file mode 100644
index 00000000..77db91f4
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pestdiseaseweedlibrary/vo/PestDiseaseWeedLibrarySaveReqVO.java
@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.farm.controller.admin.pestdiseaseweedlibrary.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 病虫草害库维护新增/修改 Request VO")
+@Data
+public class PestDiseaseWeedLibrarySaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "521")
+ private String id;
+
+ @Schema(description = "灾害类型", example = "2")
+ private Integer type;
+
+ @Schema(description = "灾害名称", example = "李四")
+ private String name;
+
+ @Schema(description = "灾害描述", example = "你说的对")
+ private String description;
+
+ @Schema(description = "防治建议")
+ private String propose;
+
+ @Schema(description = "图片")
+ private String images;
+
+ @Schema(description = "0=启用,1=停用", example = "1")
+ private Integer useStatus;
+
+ @Schema(description = "基地id", example = "427")
+ private String baseId;
+
+ @Schema(description = "基地", example = "王五")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "27747")
+ private String plotId;
+
+ @Schema(description = "地块", example = "芋艿")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "27978")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/PesticideResidueIndexController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/PesticideResidueIndexController.java
new file mode 100644
index 00000000..a660d475
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/PesticideResidueIndexController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.pesticideresidueindex;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.pesticideresidueindex.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.pesticideresidueindex.PesticideResidueIndexDO;
+import cn.iocoder.yudao.module.farm.service.pesticideresidueindex.PesticideResidueIndexService;
+
+@Tag(name = "管理后台 - 农残指标")
+@RestController
+@RequestMapping("/farm/pesticide-residue-index")
+@Validated
+public class PesticideResidueIndexController {
+
+ @Resource
+ private PesticideResidueIndexService pesticideResidueIndexService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建农残指标")
+ @PreAuthorize("@ss.hasPermission('farm:pesticide-residue-index:create')")
+ public CommonResult createPesticideResidueIndex(@Valid @RequestBody PesticideResidueIndexSaveReqVO createReqVO) {
+ return success(pesticideResidueIndexService.createPesticideResidueIndex(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新农残指标")
+ @PreAuthorize("@ss.hasPermission('farm:pesticide-residue-index:update')")
+ public CommonResult updatePesticideResidueIndex(@Valid @RequestBody PesticideResidueIndexSaveReqVO updateReqVO) {
+ pesticideResidueIndexService.updatePesticideResidueIndex(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除农残指标")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:pesticide-residue-index:delete')")
+ public CommonResult deletePesticideResidueIndex(@RequestParam("id") String id) {
+ pesticideResidueIndexService.deletePesticideResidueIndex(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除农残指标")
+ @PreAuthorize("@ss.hasPermission('farm:pesticide-residue-index:delete')")
+ public CommonResult deletePesticideResidueIndexList(@RequestParam("ids") List ids) {
+ pesticideResidueIndexService.deletePesticideResidueIndexListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得农残指标")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:pesticide-residue-index:query')")
+ public CommonResult getPesticideResidueIndex(@RequestParam("id") String id) {
+ PesticideResidueIndexDO pesticideResidueIndex = pesticideResidueIndexService.getPesticideResidueIndex(id);
+ return success(BeanUtils.toBean(pesticideResidueIndex, PesticideResidueIndexRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得农残指标分页")
+ @PreAuthorize("@ss.hasPermission('farm:pesticide-residue-index:query')")
+ public CommonResult> getPesticideResidueIndexPage(@Valid PesticideResidueIndexPageReqVO pageReqVO) {
+ PageResult pageResult = pesticideResidueIndexService.getPesticideResidueIndexPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, PesticideResidueIndexRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出农残指标 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:pesticide-residue-index:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportPesticideResidueIndexExcel(@Valid PesticideResidueIndexPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = pesticideResidueIndexService.getPesticideResidueIndexPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "农残指标.xls", "数据", PesticideResidueIndexRespVO.class,
+ BeanUtils.toBean(list, PesticideResidueIndexRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexPageReqVO.java
new file mode 100644
index 00000000..0cdf6767
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexPageReqVO.java
@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.farm.controller.admin.pesticideresidueindex.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 农残指标分页 Request VO")
+@Data
+public class PesticideResidueIndexPageReqVO extends PageParam {
+
+ @Schema(description = "基础id", example = "14095")
+ private String foundationId;
+
+ @Schema(description = "项目名称", example = "张三")
+ private String name;
+
+ @Schema(description = "国家标准")
+ private String standard;
+
+ @Schema(description = "检验结果")
+ private String checkResults;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "25138")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "16223")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "8881")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexRespVO.java
new file mode 100644
index 00000000..62ac58af
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexRespVO.java
@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.farm.controller.admin.pesticideresidueindex.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 农残指标 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class PesticideResidueIndexRespVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30168")
+ @ExcelProperty("id")
+ private String id;
+
+ @Schema(description = "基础id", example = "14095")
+ @ExcelProperty("基础id")
+ private String foundationId;
+
+ @Schema(description = "项目名称", example = "张三")
+ @ExcelProperty("项目名称")
+ private String name;
+
+ @Schema(description = "国家标准")
+ @ExcelProperty("国家标准")
+ private String standard;
+
+ @Schema(description = "检验结果")
+ @ExcelProperty("检验结果")
+ private String checkResults;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "25138")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "16223")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ @ExcelProperty("地块")
+ private String plotName;
+ @Schema(description = "租户id")
+ private String tenantId;
+}
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexSaveReqVO.java
new file mode 100644
index 00000000..5cd85919
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/pesticideresidueindex/vo/PesticideResidueIndexSaveReqVO.java
@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.module.farm.controller.admin.pesticideresidueindex.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 农残指标新增/修改 Request VO")
+@Data
+public class PesticideResidueIndexSaveReqVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30168")
+ private String id;
+
+ @Schema(description = "基础id", example = "14095")
+ private String foundationId;
+
+ @Schema(description = "项目名称", example = "张三")
+ private String name;
+
+ @Schema(description = "国家标准")
+ private String standard;
+
+ @Schema(description = "检验结果")
+ private String checkResults;
+
+ @Schema(description = "基地id", example = "25138")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "16223")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "8881")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/PlotInfoController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/PlotInfoController.java
new file mode 100644
index 00000000..9f2fc6e7
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/PlotInfoController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.plotinfo;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.plotinfo.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo.PlotInfoDO;
+import cn.iocoder.yudao.module.farm.service.plotinfo.PlotInfoService;
+
+@Tag(name = "管理后台 - 地块")
+@RestController
+@RequestMapping("/farm/plot-info")
+@Validated
+public class PlotInfoController {
+
+ @Resource
+ private PlotInfoService plotInfoService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建地块")
+ @PreAuthorize("@ss.hasPermission('farm:plot-info:create')")
+ public CommonResult createPlotInfo(@Valid @RequestBody PlotInfoSaveReqVO createReqVO) {
+ return success(plotInfoService.createPlotInfo(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新地块")
+ @PreAuthorize("@ss.hasPermission('farm:plot-info:update')")
+ public CommonResult updatePlotInfo(@Valid @RequestBody PlotInfoSaveReqVO updateReqVO) {
+ plotInfoService.updatePlotInfo(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除地块")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:plot-info:delete')")
+ public CommonResult deletePlotInfo(@RequestParam("id") String id) {
+ plotInfoService.deletePlotInfo(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除地块")
+ @PreAuthorize("@ss.hasPermission('farm:plot-info:delete')")
+ public CommonResult deletePlotInfoList(@RequestParam("ids") List ids) {
+ plotInfoService.deletePlotInfoListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得地块")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:plot-info:query')")
+ public CommonResult getPlotInfo(@RequestParam("id") String id) {
+ PlotInfoDO plotInfo = plotInfoService.getPlotInfo(id);
+ return success(BeanUtils.toBean(plotInfo, PlotInfoRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得地块分页")
+ @PreAuthorize("@ss.hasPermission('farm:plot-info:query')")
+ public CommonResult> getPlotInfoPage(@Valid PlotInfoPageReqVO pageReqVO) {
+ PageResult pageResult = plotInfoService.getPlotInfoPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, PlotInfoRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出地块 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:plot-info:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportPlotInfoExcel(@Valid PlotInfoPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = plotInfoService.getPlotInfoPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "地块.xls", "数据", PlotInfoRespVO.class,
+ BeanUtils.toBean(list, PlotInfoRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoPageReqVO.java
new file mode 100644
index 00000000..8f105c3a
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoPageReqVO.java
@@ -0,0 +1,43 @@
+package cn.iocoder.yudao.module.farm.controller.admin.plotinfo.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 地块分页 Request VO")
+@Data
+public class PlotInfoPageReqVO extends PageParam {
+
+ @Schema(description = "所属基地ID", example = "1431")
+ private String baseId;
+
+ @Schema(description = "地块ID", example = "4027")
+ private String plotId;
+
+ @Schema(description = "地块名称", example = "王五")
+ private String plotName;
+
+ @Schema(description = "地块面积")
+ private BigDecimal plotArea;
+
+ @Schema(description = "地块颜色")
+ private String plotColor;
+
+ @Schema(description = "地块经纬度 (json字符串保存)")
+ private String point;
+
+ @Schema(description = "技术员ID", example = "653")
+ private String employeeId;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+ @Schema(description = "租户id")
+ private String tenantId;
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoRespVO.java
new file mode 100644
index 00000000..504b6c00
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoRespVO.java
@@ -0,0 +1,53 @@
+package cn.iocoder.yudao.module.farm.controller.admin.plotinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 地块 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class PlotInfoRespVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11262")
+ @ExcelProperty("id")
+ private String id;
+
+ @Schema(description = "所属基地ID", example = "1431")
+ @ExcelProperty("所属基地ID")
+ private String baseId;
+
+ @Schema(description = "地块ID", example = "4027")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块名称", example = "王五")
+ @ExcelProperty("地块名称")
+ private String plotName;
+
+ @Schema(description = "地块面积")
+ @ExcelProperty("地块面积")
+ private BigDecimal plotArea;
+
+ @Schema(description = "地块颜色")
+ @ExcelProperty("地块颜色")
+ private String plotColor;
+
+ @Schema(description = "地块经纬度 (json字符串保存)")
+ @ExcelProperty("地块经纬度 (json字符串保存)")
+ private String point;
+
+ @Schema(description = "技术员ID", example = "653")
+ @ExcelProperty("技术员ID")
+ private String employeeId;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+ @Schema(description = "租户id")
+ private String tenantId;
+}
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoSaveReqVO.java
new file mode 100644
index 00000000..81178ae8
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/vo/PlotInfoSaveReqVO.java
@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.farm.controller.admin.plotinfo.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 地块新增/修改 Request VO")
+@Data
+public class PlotInfoSaveReqVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11262")
+ private String id;
+
+ @Schema(description = "所属基地ID", example = "1431")
+ private String baseId;
+
+ @Schema(description = "地块ID", example = "4027")
+ private String plotId;
+
+ @Schema(description = "地块名称", example = "王五")
+ private String plotName;
+
+ @Schema(description = "地块面积")
+ private BigDecimal plotArea;
+
+ @Schema(description = "地块颜色")
+ private String plotColor;
+
+ @Schema(description = "地块经纬度 (json字符串保存)")
+ private String point;
+
+ @Schema(description = "技术员ID", example = "653")
+ private String employeeId;
+ @Schema(description = "租户id")
+ private String tenantId;
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/ProductionPlanController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/ProductionPlanController.java
new file mode 100644
index 00000000..45ad714e
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/ProductionPlanController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.productionplan;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.productionplan.ProductionPlanDO;
+import cn.iocoder.yudao.module.farm.service.productionplan.ProductionPlanService;
+
+@Tag(name = "管理后台 - 种植中心-生产计划-生产计划")
+@RestController
+@RequestMapping("/farm/production-plan")
+@Validated
+public class ProductionPlanController {
+
+ @Resource
+ private ProductionPlanService productionPlanService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建种植中心-生产计划-生产计划")
+ @PreAuthorize("@ss.hasPermission('farm:production-plan:create')")
+ public CommonResult createProductionPlan(@Valid @RequestBody ProductionPlanSaveReqVO createReqVO) {
+ return success(productionPlanService.createProductionPlan(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新种植中心-生产计划-生产计划")
+ @PreAuthorize("@ss.hasPermission('farm:production-plan:update')")
+ public CommonResult updateProductionPlan(@Valid @RequestBody ProductionPlanSaveReqVO updateReqVO) {
+ productionPlanService.updateProductionPlan(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除种植中心-生产计划-生产计划")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:production-plan:delete')")
+ public CommonResult deleteProductionPlan(@RequestParam("id") String id) {
+ productionPlanService.deleteProductionPlan(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除种植中心-生产计划-生产计划")
+ @PreAuthorize("@ss.hasPermission('farm:production-plan:delete')")
+ public CommonResult deleteProductionPlanList(@RequestParam("ids") List ids) {
+ productionPlanService.deleteProductionPlanListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得种植中心-生产计划-生产计划")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:production-plan:query')")
+ public CommonResult getProductionPlan(@RequestParam("id") String id) {
+ ProductionPlanDO productionPlan = productionPlanService.getProductionPlan(id);
+ return success(BeanUtils.toBean(productionPlan, ProductionPlanRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得种植中心-生产计划-生产计划分页")
+ @PreAuthorize("@ss.hasPermission('farm:production-plan:query')")
+ public CommonResult> getProductionPlanPage(@Valid ProductionPlanPageReqVO pageReqVO) {
+ PageResult pageResult = productionPlanService.getProductionPlanPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ProductionPlanRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出种植中心-生产计划-生产计划 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:production-plan:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportProductionPlanExcel(@Valid ProductionPlanPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = productionPlanService.getProductionPlanPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "种植中心-生产计划-生产计划.xls", "数据", ProductionPlanRespVO.class,
+ BeanUtils.toBean(list, ProductionPlanRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanPageReqVO.java
new file mode 100644
index 00000000..b1429128
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanPageReqVO.java
@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo;
+
+import lombok.*;
+
+import java.time.LocalDate;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 种植中心-生产计划-生产计划分页 Request VO")
+@Data
+public class ProductionPlanPageReqVO extends PageParam {
+
+ @Schema(description = "种植物种")
+ private String plantSpecies;
+
+ @Schema(description = "物种模型")
+ private String speciesModel;
+
+ @Schema(description = "排产开始日期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDate[] productionStartDate;
+
+ @Schema(description = "排产结束日期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDate[] productionEndDate;
+
+ @Schema(description = "采收开始日期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDate[] harvestStartDate;
+
+ @Schema(description = "种植区域ID", example = "10011")
+ private String cultivationAreaId;
+
+ @Schema(description = "基地id", example = "29734")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "19246")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ private String plotName;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+ @Schema(description = "租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanRespVO.java
new file mode 100644
index 00000000..ed943df8
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanRespVO.java
@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDate;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 种植中心-生产计划-生产计划 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ProductionPlanRespVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1050")
+ @ExcelProperty("基础id")
+ private String id;
+
+ @Schema(description = "种植物种")
+ @ExcelProperty("种植物种")
+ private String plantSpecies;
+
+ @Schema(description = "物种模型")
+ @ExcelProperty("物种模型")
+ private String speciesModel;
+
+ @Schema(description = "排产开始日期")
+ @ExcelProperty("排产开始日期")
+ private LocalDate productionStartDate;
+
+ @Schema(description = "排产结束日期")
+ @ExcelProperty("排产结束日期")
+ private LocalDate productionEndDate;
+
+ @Schema(description = "采收开始日期")
+ @ExcelProperty("采收开始日期")
+ private LocalDate harvestStartDate;
+
+ @Schema(description = "种植区域ID", example = "10011")
+ @ExcelProperty("种植区域ID")
+ private String cultivationAreaId;
+
+ @Schema(description = "基地id", example = "29734")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "19246")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ @ExcelProperty("地块")
+ private String plotName;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+ @Schema(description = "租户id")
+ private String tenantId;
+
+}
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanSaveReqVO.java
new file mode 100644
index 00000000..53e4fde3
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/vo/ProductionPlanSaveReqVO.java
@@ -0,0 +1,49 @@
+package cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDate;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 种植中心-生产计划-生产计划新增/修改 Request VO")
+@Data
+public class ProductionPlanSaveReqVO {
+
+ @Schema(description = "基础id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1050")
+ private String id;
+
+ @Schema(description = "种植物种")
+ private String plantSpecies;
+
+ @Schema(description = "物种模型")
+ private String speciesModel;
+
+ @Schema(description = "排产开始日期")
+ private LocalDate productionStartDate;
+
+ @Schema(description = "排产结束日期")
+ private LocalDate productionEndDate;
+
+ @Schema(description = "采收开始日期")
+ private LocalDate harvestStartDate;
+
+ @Schema(description = "种植区域ID", example = "10011")
+ private String cultivationAreaId;
+
+ @Schema(description = "基地id", example = "29734")
+ private String baseId;
+
+ @Schema(description = "基地", example = "李四")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "19246")
+ private String plotId;
+
+ @Schema(description = "地块", example = "李四")
+ private String plotName;
+ @Schema(description = "租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/ProductManagementController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/ProductManagementController.java
new file mode 100644
index 00000000..577a3718
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/ProductManagementController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.productmanagement;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.productmanagement.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.productmanagement.ProductManagementDO;
+import cn.iocoder.yudao.module.farm.service.productmanagement.ProductManagementService;
+
+@Tag(name = "管理后台 - 商品管理")
+@RestController
+@RequestMapping("/farm/product-management")
+@Validated
+public class ProductManagementController {
+
+ @Resource
+ private ProductManagementService productManagementService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建商品管理")
+ @PreAuthorize("@ss.hasPermission('farm:product-management:create')")
+ public CommonResult createProductManagement(@Valid @RequestBody ProductManagementSaveReqVO createReqVO) {
+ return success(productManagementService.createProductManagement(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新商品管理")
+ @PreAuthorize("@ss.hasPermission('farm:product-management:update')")
+ public CommonResult updateProductManagement(@Valid @RequestBody ProductManagementSaveReqVO updateReqVO) {
+ productManagementService.updateProductManagement(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除商品管理")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:product-management:delete')")
+ public CommonResult deleteProductManagement(@RequestParam("id") String id) {
+ productManagementService.deleteProductManagement(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除商品管理")
+ @PreAuthorize("@ss.hasPermission('farm:product-management:delete')")
+ public CommonResult deleteProductManagementList(@RequestParam("ids") List ids) {
+ productManagementService.deleteProductManagementListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得商品管理")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:product-management:query')")
+ public CommonResult getProductManagement(@RequestParam("id") String id) {
+ ProductManagementDO productManagement = productManagementService.getProductManagement(id);
+ return success(BeanUtils.toBean(productManagement, ProductManagementRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得商品管理分页")
+ @PreAuthorize("@ss.hasPermission('farm:product-management:query')")
+ public CommonResult> getProductManagementPage(@Valid ProductManagementPageReqVO pageReqVO) {
+ PageResult pageResult = productManagementService.getProductManagementPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, ProductManagementRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出商品管理 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:product-management:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportProductManagementExcel(@Valid ProductManagementPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = productManagementService.getProductManagementPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "商品管理.xls", "数据", ProductManagementRespVO.class,
+ BeanUtils.toBean(list, ProductManagementRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementPageReqVO.java
new file mode 100644
index 00000000..c0904cdf
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementPageReqVO.java
@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.farm.controller.admin.productmanagement.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 商品管理分页 Request VO")
+@Data
+public class ProductManagementPageReqVO extends PageParam {
+
+ @Schema(description = "商品名称", example = "芋艿")
+ private String productName;
+
+ @Schema(description = "商品规格")
+ private String packingSpec;
+
+ @Schema(description = "重量")
+ private String measuringUnit;
+
+ @Schema(description = "单位")
+ private String packingUnit;
+
+ @Schema(description = "商品图片")
+ private String image;
+
+ @Schema(description = "商品介绍")
+ private String introduce;
+
+ @Schema(description = "商品条码")
+ private String barCode;
+
+ @Schema(description = "生产许可证")
+ private String permit;
+
+ @Schema(description = "商标名称", example = "李四")
+ private String brandName;
+
+ @Schema(description = "商标图片")
+ private String brandImage;
+
+ @Schema(description = "商品认证")
+ private String brandAuthentication;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "19830")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "11418")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+ @Schema(description = "租户id")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementRespVO.java
new file mode 100644
index 00000000..99b77d2c
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementRespVO.java
@@ -0,0 +1,85 @@
+package cn.iocoder.yudao.module.farm.controller.admin.productmanagement.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 商品管理 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ProductManagementRespVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15130")
+ @ExcelProperty("id")
+ private String id;
+
+ @Schema(description = "商品名称", example = "芋艿")
+ @ExcelProperty("商品名称")
+ private String productName;
+
+ @Schema(description = "商品规格")
+ @ExcelProperty("商品规格")
+ private String packingSpec;
+
+ @Schema(description = "重量")
+ @ExcelProperty("重量")
+ private String measuringUnit;
+
+ @Schema(description = "单位")
+ @ExcelProperty("单位")
+ private String packingUnit;
+
+ @Schema(description = "商品图片")
+ @ExcelProperty("商品图片")
+ private String image;
+
+ @Schema(description = "商品介绍")
+ @ExcelProperty("商品介绍")
+ private String introduce;
+
+ @Schema(description = "商品条码")
+ @ExcelProperty("商品条码")
+ private String barCode;
+
+ @Schema(description = "生产许可证")
+ @ExcelProperty("生产许可证")
+ private String permit;
+
+ @Schema(description = "商标名称", example = "李四")
+ @ExcelProperty("商标名称")
+ private String brandName;
+
+ @Schema(description = "商标图片")
+ @ExcelProperty("商标图片")
+ private String brandImage;
+
+ @Schema(description = "商品认证")
+ @ExcelProperty("商品认证")
+ private String brandAuthentication;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "19830")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "11418")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ @ExcelProperty("地块")
+ private String plotName;
+ @Schema(description = "租户id")
+ private String tenantId;
+
+}
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementSaveReqVO.java
new file mode 100644
index 00000000..45db0621
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productmanagement/vo/ProductManagementSaveReqVO.java
@@ -0,0 +1,62 @@
+package cn.iocoder.yudao.module.farm.controller.admin.productmanagement.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 商品管理新增/修改 Request VO")
+@Data
+public class ProductManagementSaveReqVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15130")
+ private String id;
+
+ @Schema(description = "商品名称", example = "芋艿")
+ private String productName;
+
+ @Schema(description = "商品规格")
+ private String packingSpec;
+
+ @Schema(description = "重量")
+ private String measuringUnit;
+
+ @Schema(description = "单位")
+ private String packingUnit;
+
+ @Schema(description = "商品图片")
+ private String image;
+
+ @Schema(description = "商品介绍")
+ private String introduce;
+
+ @Schema(description = "商品条码")
+ private String barCode;
+
+ @Schema(description = "生产许可证")
+ private String permit;
+
+ @Schema(description = "商标名称", example = "李四")
+ private String brandName;
+
+ @Schema(description = "商标图片")
+ private String brandImage;
+
+ @Schema(description = "商品认证")
+ private String brandAuthentication;
+
+ @Schema(description = "基地id", example = "19830")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "11418")
+ private String plotId;
+
+ @Schema(description = "地块", example = "王五")
+ private String plotName;
+ @Schema(description = "租户id")
+ private Long tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java
new file mode 100644
index 00000000..6479f14d
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.specieslibrary;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO;
+import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService;
+
+@Tag(name = "管理后台 - 物种库维护")
+@RestController
+@RequestMapping("/farm/species-library")
+@Validated
+public class SpeciesLibraryController {
+
+ @Resource
+ private SpeciesLibraryService speciesLibraryService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建物种库维护")
+ @PreAuthorize("@ss.hasPermission('farm:species-library:create')")
+ public CommonResult createSpeciesLibrary(@Valid @RequestBody SpeciesLibrarySaveReqVO createReqVO) {
+ return success(speciesLibraryService.createSpeciesLibrary(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新物种库维护")
+ @PreAuthorize("@ss.hasPermission('farm:species-library:update')")
+ public CommonResult updateSpeciesLibrary(@Valid @RequestBody SpeciesLibrarySaveReqVO updateReqVO) {
+ speciesLibraryService.updateSpeciesLibrary(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除物种库维护")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:species-library:delete')")
+ public CommonResult deleteSpeciesLibrary(@RequestParam("id") String id) {
+ speciesLibraryService.deleteSpeciesLibrary(id);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete-list")
+ @Parameter(name = "ids", description = "编号", required = true)
+ @Operation(summary = "批量删除物种库维护")
+ @PreAuthorize("@ss.hasPermission('farm:species-library:delete')")
+ public CommonResult deleteSpeciesLibraryList(@RequestParam("ids") List ids) {
+ speciesLibraryService.deleteSpeciesLibraryListByIds(ids);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得物种库维护")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('farm:species-library:query')")
+ public CommonResult getSpeciesLibrary(@RequestParam("id") String id) {
+ SpeciesLibraryDO speciesLibrary = speciesLibraryService.getSpeciesLibrary(id);
+ return success(BeanUtils.toBean(speciesLibrary, SpeciesLibraryRespVO.class));
+ }
+
+ @GetMapping("/page")
+ @Operation(summary = "获得物种库维护分页")
+ @PreAuthorize("@ss.hasPermission('farm:species-library:query')")
+ public CommonResult> getSpeciesLibraryPage(@Valid SpeciesLibraryPageReqVO pageReqVO) {
+ PageResult pageResult = speciesLibraryService.getSpeciesLibraryPage(pageReqVO);
+ return success(BeanUtils.toBean(pageResult, SpeciesLibraryRespVO.class));
+ }
+
+ @GetMapping("/export-excel")
+ @Operation(summary = "导出物种库维护 Excel")
+ @PreAuthorize("@ss.hasPermission('farm:species-library:export')")
+ @ApiAccessLog(operateType = EXPORT)
+ public void exportSpeciesLibraryExcel(@Valid SpeciesLibraryPageReqVO pageReqVO,
+ HttpServletResponse response) throws IOException {
+ pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+ List list = speciesLibraryService.getSpeciesLibraryPage(pageReqVO).getList();
+ // 导出 Excel
+ ExcelUtils.write(response, "物种库维护.xls", "数据", SpeciesLibraryRespVO.class,
+ BeanUtils.toBean(list, SpeciesLibraryRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryPageReqVO.java
new file mode 100644
index 00000000..89b7691e
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryPageReqVO.java
@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 物种库维护分页 Request VO")
+@Data
+public class SpeciesLibraryPageReqVO extends PageParam {
+
+ @Schema(description = "物种类别")
+ private String category;
+
+ @Schema(description = "物种类别名称", example = "芋艿")
+ private String speciesName;
+
+ @Schema(description = "物种名称", example = "芋艿")
+ private String cultivarName;
+
+ @Schema(description = "品种等级0=无,1=一等,2=二等,3=三等,10=等外")
+ private Integer cultivarLevel;
+
+ @Schema(description = "生命周期1=一年生,10=多年生")
+ private Integer lifeCycle;
+
+ @Schema(description = "图片")
+ private String image;
+
+ @Schema(description = "0=启用,1=停用", example = "1")
+ private Integer useStatus;
+
+ @Schema(description = "创建时间")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+ @Schema(description = "基地id", example = "495")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "23444")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "1998")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java
new file mode 100644
index 00000000..d3f71573
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java
@@ -0,0 +1,69 @@
+package cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import cn.idev.excel.annotation.*;
+
+@Schema(description = "管理后台 - 物种库维护 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class SpeciesLibraryRespVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27038")
+ @ExcelProperty("id")
+ private String id;
+
+ @Schema(description = "物种类别")
+ @ExcelProperty("物种类别")
+ private String category;
+
+ @Schema(description = "物种类别名称", example = "芋艿")
+ @ExcelProperty("物种类别名称")
+ private String speciesName;
+
+ @Schema(description = "物种名称", example = "芋艿")
+ @ExcelProperty("物种名称")
+ private String cultivarName;
+
+ @Schema(description = "品种等级0=无,1=一等,2=二等,3=三等,10=等外")
+ @ExcelProperty("品种等级0=无,1=一等,2=二等,3=三等,10=等外")
+ private Integer cultivarLevel;
+
+ @Schema(description = "生命周期1=一年生,10=多年生")
+ @ExcelProperty("生命周期1=一年生,10=多年生")
+ private Integer lifeCycle;
+
+ @Schema(description = "图片")
+ @ExcelProperty("图片")
+ private String image;
+
+ @Schema(description = "0=启用,1=停用", example = "1")
+ @ExcelProperty("0=启用,1=停用")
+ private Integer useStatus;
+
+ @Schema(description = "创建时间")
+ @ExcelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "基地id", example = "495")
+ @ExcelProperty("基地id")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ @ExcelProperty("基地")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "23444")
+ @ExcelProperty("地块ID")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ @ExcelProperty("地块")
+ private String plotName;
+ @Schema(description = "租户id")
+ private String tenantId;
+
+}
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibrarySaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibrarySaveReqVO.java
new file mode 100644
index 00000000..fb6c4dca
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibrarySaveReqVO.java
@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 物种库维护新增/修改 Request VO")
+@Data
+public class SpeciesLibrarySaveReqVO {
+
+ @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27038")
+ private String id;
+
+ @Schema(description = "物种类别")
+ private String category;
+
+ @Schema(description = "物种类别名称", example = "芋艿")
+ private String speciesName;
+
+ @Schema(description = "物种名称", example = "芋艿")
+ private String cultivarName;
+
+ @Schema(description = "品种等级0=无,1=一等,2=二等,3=三等,10=等外")
+ private Integer cultivarLevel;
+
+ @Schema(description = "生命周期1=一年生,10=多年生")
+ private Integer lifeCycle;
+
+ @Schema(description = "图片")
+ private String image;
+
+ @Schema(description = "0=启用,1=停用", example = "1")
+ private Integer useStatus;
+
+ @Schema(description = "基地id", example = "495")
+ private String baseId;
+
+ @Schema(description = "基地", example = "芋艿")
+ private String baseName;
+
+ @Schema(description = "地块ID", example = "23444")
+ private String plotId;
+
+ @Schema(description = "地块", example = "赵六")
+ private String plotName;
+
+ @Schema(description = "租户id", example = "1998")
+ private String tenantId;
+
+}
\ No newline at end of file
diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/varietydata/VarietyDataController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/varietydata/VarietyDataController.java
new file mode 100644
index 00000000..a1a0d02c
--- /dev/null
+++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/varietydata/VarietyDataController.java
@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.farm.controller.admin.varietydata;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.farm.controller.admin.varietydata.vo.*;
+import cn.iocoder.yudao.module.farm.dal.dataobject.varietydata.VarietyDataDO;
+import cn.iocoder.yudao.module.farm.service.varietydata.VarietyDataService;
+
+@Tag(name = "管理后台 - 品种数据")
+@RestController
+@RequestMapping("/farm/variety-data")
+@Validated
+public class VarietyDataController {
+
+ @Resource
+ private VarietyDataService varietyDataService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建品种数据")
+ @PreAuthorize("@ss.hasPermission('farm:variety-data:create')")
+ public CommonResult createVarietyData(@Valid @RequestBody VarietyDataSaveReqVO createReqVO) {
+ return success(varietyDataService.createVarietyData(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新品种数据")
+ @PreAuthorize("@ss.hasPermission('farm:variety-data:update')")
+ public CommonResult updateVarietyData(@Valid @RequestBody VarietyDataSaveReqVO updateReqVO) {
+ varietyDataService.updateVarietyData(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除品种数据")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('farm:variety-data:delete')")
+ public CommonResult