From 710b4307c3ba31266400053c531095b6656df10c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=BE=E5=AF=8C=E6=96=8C?= Date: Sun, 9 Nov 2025 20:25:53 +0800 Subject: [PATCH] =?UTF-8?q?fix=20(farm):=20=20=E5=86=9C=E4=BA=8B=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 农事任务统计 - 投入品金额统计 - 投入品金额趋势统计 --- .../CropFarmingCenterController.java | 71 +++++--- .../vo/chart/BreedChartRespVO.java | 23 +++ .../vo/chart/ChartCommonReqVO.java | 5 + .../FarmRecordForFarmNameChartRespVO.java | 21 +++ ....java => InputUsageByNameChartRespVO.java} | 20 +-- .../vo/chart/InputUsageByTypeChartRespVO.java | 34 ++++ .../vo/chart/InputUsageTrendChartRespVO.java | 24 +++ ...ChartRespVO.java => PlantChartRespVO.java} | 4 +- .../farmingrecord/FarmingRecordMapper.java | 6 + .../inputlibrary/InputUsageRecordsMapper.java | 12 +- .../productionplan/ProductionPlanMapper.java | 7 +- .../CropFarmingCenterService.java | 28 ++- .../CropFarmingCenterServiceImpl.java | 52 +++--- .../farmingrecord/FarmingRecordMapper.xml | 62 +++++++ .../inputlibrary/InputUsageRecordsMapper.xml | 159 ++++++++++++++---- .../productionplan/ProductionPlanMapper.xml | 55 +++++- 16 files changed, 481 insertions(+), 102 deletions(-) create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/BreedChartRespVO.java create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/FarmRecordForFarmNameChartRespVO.java rename yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/{InputUsageChartRespVO.java => InputUsageByNameChartRespVO.java} (54%) create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageByTypeChartRespVO.java create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageTrendChartRespVO.java rename yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/{PlantingAreaChartRespVO.java => PlantChartRespVO.java} (91%) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/CropFarmingCenterController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/CropFarmingCenterController.java index 6d4301dd..0abf5060 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/CropFarmingCenterController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/CropFarmingCenterController.java @@ -8,10 +8,7 @@ import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.Farmin import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingRecordRespVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingRecordSaveReqVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingRecordCreateReqVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.ChartCommonReqVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.FarmTypeChartRespVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.InputUsageChartRespVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.PlantingAreaChartRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.*; import cn.iocoder.yudao.module.farm.dal.dataobject.farmingrecord.FarmingRecordDO; import cn.iocoder.yudao.module.farm.enums.CommonConstants; import cn.iocoder.yudao.module.farm.service.cropFarmingCenter.CropFarmingCenterService; @@ -29,10 +26,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; -import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.module.farm.enums.CommonConstants.FARMING_RECORD_STATUS_2; @@ -265,6 +260,8 @@ public class CropFarmingCenterController { return success(true); } + + // 农事报表 @Operation(summary = "农事报表") @GetMapping("/farming-report/1") public CommonResult> getFarmReport(ChartCommonReqVO req) { @@ -272,25 +269,61 @@ public class CropFarmingCenterController { return success(res); } - @Operation(summary = "农事报表-农事任务分类统计") - @GetMapping("/farming-report/chart/farm-type") - public CommonResult> getFarmTypeChart(ChartCommonReqVO req) { - List res = cropFarmingCenterService.getFarmTypeChart(req); - return success(res); - } +// @Operation(summary = "农事报表-农事任务分类统计") +// @GetMapping("/farming-report/chart/farm-type") +// public CommonResult> getFarmTypeChart(ChartCommonReqVO req) { +// List res = cropFarmingCenterService.getFarmTypeChart(req); +// return success(res); +// } @Operation(summary = "农事报表-种植类信息") - @GetMapping("/farming-report/chart/species") - public CommonResult> getPlantingAreaChart(ChartCommonReqVO req) { - List res = cropFarmingCenterService.getPlantingAreaChart(req); + @GetMapping("/farming-report/chart/species/plant") + public CommonResult> getPlantChart(ChartCommonReqVO req) { + List res = cropFarmingCenterService.getPlantChart(req); return success(res); } - @Operation(summary = "农事报表-投入品分类统计") - @GetMapping("/farming-report/chart/input-type") - public CommonResult> getInputUsageChart(ChartCommonReqVO req) { - List res = cropFarmingCenterService.getInputUsageChart(req); + @Operation(summary = "农事报表-养殖类信息") + @GetMapping("/farming-report/chart/species/breed") + public CommonResult> getBreedChart(ChartCommonReqVO req) { + List res = cropFarmingCenterService.getBreedChart(req); return success(res); } + @Operation(summary = "农事报表-投入品类型统计") + @GetMapping("/farming-report/chart/input-type") + public CommonResult> getInputUsageByTypeChart(ChartCommonReqVO req) { + List res = cropFarmingCenterService.getInputUsageByTypeChart(req); + return success(res); + } + + @Operation(summary = "农事报表-投入品名称统计") + @GetMapping("/farming-report/chart/input-name") + public CommonResult> getInputUsageByNameChart(ChartCommonReqVO req) { + List res = cropFarmingCenterService.getInputUsageByNameChart(req); + return success(res); + } + + @Operation(summary = "农事报表-农事记录农事类型统计") + @GetMapping("/farming-report/chart/farm-type") + public CommonResult> getFarmRecord4FarmTypeChart(ChartCommonReqVO req) { + List res = cropFarmingCenterService.getFarmRecord4FarmTypeChart(req); + return success(res); + } + + @Operation(summary = "农事报表-农事记录农事名称统计") + @GetMapping("/farming-report/chart/farm-name") + public CommonResult> getFarmRecord4FarmNameChart(ChartCommonReqVO req) { + List res = cropFarmingCenterService.getFarmRecord4FarmNameChart(req); + return success(res); + } + + @Operation(summary = "(5年内)金额统计趋势") + @GetMapping("/farming-report/chart/input-trend") + public CommonResult> getInputUsageTrendChart(ChartCommonReqVO req) { + List res = cropFarmingCenterService.getInputUsageTrendChart(req); + return success(res); + } + + } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/BreedChartRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/BreedChartRespVO.java new file mode 100644 index 00000000..ff470dde --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/BreedChartRespVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @description: 养殖 + * @author: binda + * @date: 2025/11/9 17:01 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BreedChartRespVO { + @Schema(description = "物种名称") + private String speciesName; + @Schema(description = "计划网箱数量") + private Integer predictedGridNumber; + @Schema(description = "总网箱数量") + private Integer plotGridNumber; +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/ChartCommonReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/ChartCommonReqVO.java index 3e904f82..5c80e9ec 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/ChartCommonReqVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/ChartCommonReqVO.java @@ -18,4 +18,9 @@ public class ChartCommonReqVO { private Integer yearDate; private String state; private String tenantId; + + // 农事类型ID + private String farmTypeId; + // 投入品-类型ID + private String inputTypeId; } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/FarmRecordForFarmNameChartRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/FarmRecordForFarmNameChartRespVO.java new file mode 100644 index 00000000..04a28796 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/FarmRecordForFarmNameChartRespVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @description: 农事记录 - 农事名称 统计 + * @author: binda + * @date: 2025/11/8 16:21 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class FarmRecordForFarmNameChartRespVO { + @Schema(description = "农事名称") + private String farmName; + @Schema(description = "农事记录数量") + private String farmRecordCount; +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageChartRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageByNameChartRespVO.java similarity index 54% rename from yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageChartRespVO.java rename to yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageByNameChartRespVO.java index 21f417fd..df44e3a6 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageChartRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageByNameChartRespVO.java @@ -8,29 +8,23 @@ import lombok.NoArgsConstructor; import java.math.BigDecimal; /** - * @description: TODO + * @description: 投入品 - 名称 * @author: binda * @date: 2025/10/27 00:10 */ @Data @AllArgsConstructor @NoArgsConstructor -public class InputUsageChartRespVO { - @Schema(description = "投入品名称") +public class InputUsageByNameChartRespVO { + @Schema(description = "投入品类型名称") private String inputName; - @Schema(description = "用量") - private Integer usageAmount; + @Schema(description = "总用量") + private BigDecimal usageAmount; - private Integer currentSpecType; - - @Schema(description = "单位") - private Integer unit; - private String unitName; - - @Schema(description = "单价金额") + @Schema(description = "平均单价") private BigDecimal unitPrice; - @Schema(description = "总金额") + @Schema(description = "总价格") private BigDecimal totalPrice; } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageByTypeChartRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageByTypeChartRespVO.java new file mode 100644 index 00000000..2cbb8882 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageByTypeChartRespVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @description: 投入品 - 类型 + * @author: binda + * @date: 2025/10/27 00:10 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class InputUsageByTypeChartRespVO { + + @Schema(description = "投入品类型ID") + private String inputTypeId; + + @Schema(description = "投入品类型名称") + private String inputTypeName; + + @Schema(description = "总用量") + private BigDecimal usageAmount; + + @Schema(description = "平均单价") + private BigDecimal unitPrice; + + @Schema(description = "总价格") + private BigDecimal totalPrice; +} \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageTrendChartRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageTrendChartRespVO.java new file mode 100644 index 00000000..2dd1390c --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/InputUsageTrendChartRespVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @description: TODO + * @author: binda + * @date: 2025/11/9 20:02 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class InputUsageTrendChartRespVO { + @Schema(description = "年份") + private Integer year; + + @Schema(description = "总金额") + private BigDecimal totalPrice; +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/PlantingAreaChartRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/PlantChartRespVO.java similarity index 91% rename from yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/PlantingAreaChartRespVO.java rename to yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/PlantChartRespVO.java index 95db3447..449a6d7c 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/PlantingAreaChartRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/chart/PlantChartRespVO.java @@ -6,14 +6,14 @@ import lombok.Data; import lombok.NoArgsConstructor; /** - * @description: TODO + * @description: 种植 * @author: binda * @date: 2025/10/26 22:19 */ @Data @AllArgsConstructor @NoArgsConstructor -public class PlantingAreaChartRespVO { +public class PlantChartRespVO { @Schema(description = "物种名称") private String speciesName; @Schema(description = "种植数量") diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/farmingrecord/FarmingRecordMapper.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/farmingrecord/FarmingRecordMapper.java index 8a351b34..04a28943 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/farmingrecord/FarmingRecordMapper.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/farmingrecord/FarmingRecordMapper.java @@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.farm.controller.admin.api.vo.FarmingDistributionR import cn.iocoder.yudao.module.farm.controller.admin.api.vo.FarmingDistributionRespVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingRecordPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.ChartCommonReqVO; +import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.FarmRecordForFarmNameChartRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.FarmRecordForFarmTypeChartRespVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.FarmTypeChartRespVO; import cn.iocoder.yudao.module.farm.dal.dataobject.farmingrecord.FarmingRecordDO; import org.apache.ibatis.annotations.Mapper; @@ -47,4 +49,8 @@ public interface FarmingRecordMapper extends BaseMapperX { FarmingDistributionRespVO getFarmingDistributionChart(FarmingDistributionReqVO req); List getFarmTypeChart(ChartCommonReqVO req); + + List getFarmRecord4FarmTypeChart(ChartCommonReqVO req); + + List getFarmRecord4FarmNameChart(ChartCommonReqVO req); } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/inputlibrary/InputUsageRecordsMapper.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/inputlibrary/InputUsageRecordsMapper.java index 2a1587bf..fcd972bc 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/inputlibrary/InputUsageRecordsMapper.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/inputlibrary/InputUsageRecordsMapper.java @@ -6,7 +6,9 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingReport1RespVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.ChartCommonReqVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.InputUsageChartRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.InputUsageByNameChartRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.InputUsageByTypeChartRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.InputUsageTrendChartRespVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.usagerecords.InputUsageRecordsPageReqVO; import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputUsageRecordsDO; import org.apache.ibatis.annotations.Mapper; @@ -33,7 +35,11 @@ public interface InputUsageRecordsMapper extends BaseMapperX getInputUsageChart(ChartCommonReqVO req); - List getFarmReport(ChartCommonReqVO req); + + + List getInputUsageByTypeChart(ChartCommonReqVO req); + List getInputUsageByNameChart(ChartCommonReqVO req); + + List getInputUsageTrendChart(ChartCommonReqVO req); } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/productionplan/ProductionPlanMapper.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/productionplan/ProductionPlanMapper.java index 338864a1..b4ce529e 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/productionplan/ProductionPlanMapper.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/productionplan/ProductionPlanMapper.java @@ -7,8 +7,9 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.farm.controller.admin.api.vo.*; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.ProductionPlanPage2ReqVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.ProductionPlanRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.BreedChartRespVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.ChartCommonReqVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.PlantingAreaChartRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.PlantChartRespVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.productionplan.ProductionPlanPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.digitalcockpit.vo.CropStatisticsRespVO; import cn.iocoder.yudao.module.farm.dal.dataobject.productionplan.ProductionPlanDO; @@ -89,5 +90,7 @@ public interface ProductionPlanMapper extends BaseMapperX { List getCultivatingAreaInfo(@Param("baseId") String baseId, @Param("year") String year); - List getPlantingAreaChart(ChartCommonReqVO req); + List getPlantChart(ChartCommonReqVO req); + + List getBreedChart(ChartCommonReqVO req); } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/cropFarmingCenter/CropFarmingCenterService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/cropFarmingCenter/CropFarmingCenterService.java index d199d8c0..53d84df7 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/cropFarmingCenter/CropFarmingCenterService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/cropFarmingCenter/CropFarmingCenterService.java @@ -6,10 +6,7 @@ import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.Farmin import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingRecordPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingRecordRespVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingRecordSaveReqVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.ChartCommonReqVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.FarmTypeChartRespVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.InputUsageChartRespVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.PlantingAreaChartRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.*; import cn.iocoder.yudao.module.farm.dal.dataobject.farmingrecord.FarmingRecordDO; import jakarta.validation.Valid; @@ -79,7 +76,26 @@ public interface CropFarmingCenterService { List getFarmTypeChart(ChartCommonReqVO req); - List getPlantingAreaChart(ChartCommonReqVO req); + /** + * 种植类统计图 + * @param req + * @return + */ + List getPlantChart(ChartCommonReqVO req); - List getInputUsageChart(ChartCommonReqVO req); + /** + * 养殖类统计图 + * @param req + * @return + */ + List getBreedChart(ChartCommonReqVO req); + + List getInputUsageByTypeChart(ChartCommonReqVO req); + List getInputUsageByNameChart(ChartCommonReqVO req); + + List getFarmRecord4FarmTypeChart(ChartCommonReqVO req); + + List getFarmRecord4FarmNameChart(ChartCommonReqVO req); + + List getInputUsageTrendChart(ChartCommonReqVO req); } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/cropFarmingCenter/CropFarmingCenterServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/cropFarmingCenter/CropFarmingCenterServiceImpl.java index 8acedf8e..b7efc68b 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/cropFarmingCenter/CropFarmingCenterServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/cropFarmingCenter/CropFarmingCenterServiceImpl.java @@ -12,10 +12,7 @@ import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.Farmin import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingRecordRespVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingRecordSaveReqVO; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.farmingrecordinput.vo.FarmingRecordInputSaveReqVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.ChartCommonReqVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.FarmTypeChartRespVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.InputUsageChartRespVO; -import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.PlantingAreaChartRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.chart.*; import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.grid.ProductionPlanGridRespVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.modelmanagement.modelcycle.vo.ModelCycleRespVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.modelmanagement.modelfarmingoperation.vo.ModelFarmingOperationRespVO; @@ -747,30 +744,47 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService { } @Override - public List getPlantingAreaChart(ChartCommonReqVO req) { + public List getPlantChart(ChartCommonReqVO req) { req.setTenantId(getLoginUser().getTenantId().toString()); - return productionPlanMapper.getPlantingAreaChart(req); + return productionPlanMapper.getPlantChart(req); } @Override - public List getInputUsageChart(ChartCommonReqVO req) { + public List getBreedChart(ChartCommonReqVO req) { req.setTenantId(getLoginUser().getTenantId().toString()); + return productionPlanMapper.getBreedChart(req); + } - Map itemsNameMap = this.getDictTypeMap(ITEMS_UNIT); - Map specificationNameMap = this.getDictTypeMap(SPECIFICATION_PRICE); - - List list = inputUsageRecordsMapper.getInputUsageChart(req); - for (InputUsageChartRespVO i : list) { - if (i.getCurrentSpecType() == 1) { - i.setUnitName(itemsNameMap.get(i.getUnit().toString())); - } else { - i.setUnitName(specificationNameMap.get(i.getUnit().toString())); - } - } + @Override + public List getInputUsageByTypeChart(ChartCommonReqVO req) { + req.setTenantId(getLoginUser().getTenantId().toString()); + List list = inputUsageRecordsMapper.getInputUsageByTypeChart(req); return list; } - private ProductionPlanReportRespVO.Models convertToModel(ProductionPlanDO plan,Map speciesName) { + @Override + public List getInputUsageByNameChart(ChartCommonReqVO req) { + req.setTenantId(getLoginUser().getTenantId().toString()); + return inputUsageRecordsMapper.getInputUsageByNameChart(req); + } + + @Override + public List getFarmRecord4FarmTypeChart(ChartCommonReqVO req) { + return farmingRecordMapper.getFarmRecord4FarmTypeChart(req); + } + + @Override + public List getFarmRecord4FarmNameChart(ChartCommonReqVO req) { + return farmingRecordMapper.getFarmRecord4FarmNameChart(req); + } + + @Override + public List getInputUsageTrendChart(ChartCommonReqVO req) { + req.setTenantId(getLoginUser().getTenantId().toString()); + return inputUsageRecordsMapper.getInputUsageTrendChart(req); + } + + private ProductionPlanReportRespVO.Models convertToModel(ProductionPlanDO plan, Map speciesName) { String plantSpeciesName = speciesName.get(plan.getPlantSpeciesCode()); String planStatusName = PLAN_MAP.get(plan.getPlanStatus()); diff --git a/yudao-module-farm/src/main/resources/mapper/farmingrecord/FarmingRecordMapper.xml b/yudao-module-farm/src/main/resources/mapper/farmingrecord/FarmingRecordMapper.xml index 36e6655a..56fa1f2c 100644 --- a/yudao-module-farm/src/main/resources/mapper/farmingrecord/FarmingRecordMapper.xml +++ b/yudao-module-farm/src/main/resources/mapper/farmingrecord/FarmingRecordMapper.xml @@ -52,6 +52,68 @@ ORDER BY recordCount DESC + + + \ No newline at end of file diff --git a/yudao-module-farm/src/main/resources/mapper/inputlibrary/InputUsageRecordsMapper.xml b/yudao-module-farm/src/main/resources/mapper/inputlibrary/InputUsageRecordsMapper.xml index 17efd145..73c40f17 100644 --- a/yudao-module-farm/src/main/resources/mapper/inputlibrary/InputUsageRecordsMapper.xml +++ b/yudao-module-farm/src/main/resources/mapper/inputlibrary/InputUsageRecordsMapper.xml @@ -9,44 +9,44 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - + + SELECT + sdd.value AS inputTypeId, + sdd.label AS inputTypeName, + COALESCE(SUM(fiur.usage_amount), 0) AS usageAmount, + ROUND(COALESCE(AVG(fiur.unit_price), 0), 2) AS unitPrice, + ROUND(COALESCE(SUM(fiur.total_price), 0), 2) AS totalPrice + FROM system_dict_data sdd + LEFT JOIN farm_inputs fi ON CONVERT(sdd.value USING utf8mb4) COLLATE utf8mb4_unicode_ci = fi.input_type + AND fi.input_category = 2 + AND fi.deleted = 0 + LEFT JOIN farm_input_usage_records fiur ON fi.id = fiur.input_id + AND fiur.deleted = 0 + + AND fiur.base_id = #{baseId} + + + AND fiur.plot_id = #{plotId} + + + AND YEAR(fiur.create_time) = #{yearDate} + + WHERE sdd.dict_type = 'asset_type' + AND sdd.deleted = 0 + AND sdd.status = 0 + GROUP BY sdd.id, sdd.label, sdd.value + ORDER BY totalPrice DESC + + + + + \ No newline at end of file diff --git a/yudao-module-farm/src/main/resources/mapper/productionplan/ProductionPlanMapper.xml b/yudao-module-farm/src/main/resources/mapper/productionplan/ProductionPlanMapper.xml index 20bb2e58..01de2b21 100644 --- a/yudao-module-farm/src/main/resources/mapper/productionplan/ProductionPlanMapper.xml +++ b/yudao-module-farm/src/main/resources/mapper/productionplan/ProductionPlanMapper.xml @@ -111,9 +111,9 @@ - + + \ No newline at end of file