From 31fcbb289d2eeebe89c722faadc5f0441144e663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=BE=E5=AF=8C=E6=96=8C?= Date: Thu, 16 Oct 2025 14:29:21 +0800 Subject: [PATCH] =?UTF-8?q?fix=20(farm):=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 - PC端/微信端 --- .../CropFarmingCenterController.java | 9 +++- .../vo/FarmingRecordReportReqVO.java | 27 +++++++++++ .../vo/FarmingRecordReportRespVO.java | 23 ++++++++++ .../CropFarmingCenterService.java | 2 + .../CropFarmingCenterServiceImpl.java | 46 ++++++++++++++++++- .../FarmingTypeMaintenanceService.java | 3 ++ .../FarmingTypeMaintenanceServiceImpl.java | 14 ++++++ 7 files changed, 121 insertions(+), 3 deletions(-) create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/FarmingRecordReportReqVO.java create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/FarmingRecordReportRespVO.java 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 0146f9f4..9aa27a28 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 @@ -111,12 +111,19 @@ public class CropFarmingCenterController { } @GetMapping("/production-plan/report") - @Operation(summary = "生产计划-报表") + @Operation(summary = "农事报表-生产计划报表") public CommonResult> getPpReport(ProductionPlanReportReqVO req) { List res = cropFarmingCenterService.getPpReport(req); return success(res); } + @GetMapping("/farming-record/farm-type/report") + @Operation(summary = "农事报表-农事记录报表") + public CommonResult> getFcReport(FarmingRecordReportReqVO req) { + List res = cropFarmingCenterService.getFcReport(req); + return success(res); + } + @GetMapping("/production-plan/get/{id}") @Operation(summary = "生产计划-查看") public CommonResult getProductionPlan(@PathVariable("id") String id) { diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/FarmingRecordReportReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/FarmingRecordReportReqVO.java new file mode 100644 index 00000000..6fb72ebf --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/FarmingRecordReportReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @description: 农事任务分类 + * @author: binda + * @date: 2025/10/16 14:00 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class FarmingRecordReportReqVO { + + @Schema(description = "基地ID") + private String baseId; + @Schema(description = "地块ID") + private String plotId; + @Schema(description = "计划状态 1:未开始;2:进行中;3:已完成;4:逾期;") + private String planStatus; + @Schema(description = "年份") + private String year; + +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/FarmingRecordReportRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/FarmingRecordReportRespVO.java new file mode 100644 index 00000000..0059921f --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/FarmingRecordReportRespVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @description: 农事任务分类 + * @author: binda + * @date: 2025/10/16 13:59 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class FarmingRecordReportRespVO { + + @Schema(description = "农事类型名称") + private String farmTypeName; + @Schema(description = "任务数量") + private Integer taskCount; + +} 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 3f0b5f3d..8d8c0831 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 @@ -67,4 +67,6 @@ public interface CropFarmingCenterService { * @return */ List getPpReport(ProductionPlanReportReqVO req); + + List getFcReport(FarmingRecordReportReqVO 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 ce871e4e..06853a40 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 @@ -25,12 +25,14 @@ import cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo.PlotInfoDO; import cn.iocoder.yudao.module.farm.dal.dataobject.productionplan.ProductionPlanDO; import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO; import cn.iocoder.yudao.module.farm.dal.mysql.baseinfo.BaseInfoMapper; +import cn.iocoder.yudao.module.farm.dal.mysql.farmingrecord.FarmingRecordMapper; import cn.iocoder.yudao.module.farm.dal.mysql.personnelmanagement.PersonnelManagementMapper; import cn.iocoder.yudao.module.farm.dal.mysql.productionplan.ProductionPlanMapper; import cn.iocoder.yudao.module.farm.dal.mysql.specieslibrary.SpeciesLibraryMapper; import cn.iocoder.yudao.module.farm.enums.CommonConstants; import cn.iocoder.yudao.module.farm.service.farmingrecord.FarmingRecordService; import cn.iocoder.yudao.module.farm.service.farmingrecordinput.FarmingRecordInputService; +import cn.iocoder.yudao.module.farm.service.farmingtypemaintenance.FarmingTypeMaintenanceService; import cn.iocoder.yudao.module.farm.service.modelmanagement.ModelManagementService; import cn.iocoder.yudao.module.farm.service.plotinfo.PlotInfoService; import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService; @@ -70,25 +72,30 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService { private final PersonnelManagementMapper personnelManagementMapper; private final BaseInfoMapper baseInfoMapper; private final ProductionPlanMapper productionPlanMapper; + private final FarmingRecordMapper farmingRecordMapper; + private final ModelManagementService modelManagementService; private final FarmingRecordService farmingRecordService; private final FarmingRecordInputService farmingRecordInputService; private final PlotInfoService plotInfoService; private final SpeciesLibraryService speciesLibraryService; + private final FarmingTypeMaintenanceService farmingTypeMaintenanceService; public CropFarmingCenterServiceImpl(SpeciesLibraryMapper speciesLibraryMapper, PersonnelManagementMapper personnelManagementMapper, BaseInfoMapper baseInfoMapper, ProductionPlanMapper productionPlanMapper, - ModelManagementService modelManagementService, + FarmingRecordMapper farmingRecordMapper, ModelManagementService modelManagementService, FarmingRecordService farmingRecordService, - FarmingRecordInputService farmingRecordInputService, PlotInfoService plotInfoService, SpeciesLibraryService speciesLibraryService) { + FarmingRecordInputService farmingRecordInputService, PlotInfoService plotInfoService, SpeciesLibraryService speciesLibraryService, FarmingTypeMaintenanceService farmingTypeMaintenanceService) { this.speciesLibraryMapper = speciesLibraryMapper; this.personnelManagementMapper = personnelManagementMapper; this.baseInfoMapper = baseInfoMapper; this.productionPlanMapper = productionPlanMapper; + this.farmingRecordMapper = farmingRecordMapper; this.modelManagementService = modelManagementService; this.farmingRecordService = farmingRecordService; this.farmingRecordInputService = farmingRecordInputService; this.plotInfoService = plotInfoService; this.speciesLibraryService = speciesLibraryService; + this.farmingTypeMaintenanceService = farmingTypeMaintenanceService; } @Override @@ -660,6 +667,41 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService { .collect(Collectors.toList()); } + @Override + public List getFcReport(FarmingRecordReportReqVO req) { + LambdaQueryWrapperX x = new LambdaQueryWrapperX<>(); + x.eqIfPresent(FarmingRecordDO::getBaseId, req.getBaseId()); + x.eqIfPresent(FarmingRecordDO::getPlotId, req.getPlotId()); + x.eq(FarmingRecordDO::getTenantId, getLoginUser().getTenantId()); + x.eq(FarmingRecordDO::getDeleted, NO_CODE); + if (StringUtils.isNotBlank(req.getYear())) { + try { + int year = Integer.parseInt(req.getYear()); + x.between(FarmingRecordDO::getCreateTime, + LocalDate.of(year, 1, 1), + LocalDate.of(year, 12, 31)); + } catch (NumberFormatException e) { + // 处理格式错误 + throw new IllegalArgumentException("year格式错误,应为yyyy格式"); + } + } + List list = farmingRecordMapper.selectList(x); + + Map typeName = farmingTypeMaintenanceService.getTypeNameById(); + + return list.stream() + .collect(Collectors.groupingBy( + FarmingRecordDO::getTaskType, + Collectors.counting() + )) + .entrySet().stream() + .map(entry -> new FarmingRecordReportRespVO( + typeName.get(entry.getKey()), // taskType + entry.getValue().intValue() // 转换为 Integer + )) + .collect(Collectors.toList()); + } + 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/java/cn/iocoder/yudao/module/farm/service/farmingtypemaintenance/FarmingTypeMaintenanceService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingtypemaintenance/FarmingTypeMaintenanceService.java index 21cae00e..07c12c7c 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingtypemaintenance/FarmingTypeMaintenanceService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingtypemaintenance/FarmingTypeMaintenanceService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import jakarta.validation.Valid; import java.util.List; +import java.util.Map; /** * 农事类型维护 Service 接口 @@ -70,4 +71,6 @@ public interface FarmingTypeMaintenanceService { List getFarmingTypeMaintenanceList(); + Map getTypeNameById(); + } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingtypemaintenance/FarmingTypeMaintenanceServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingtypemaintenance/FarmingTypeMaintenanceServiceImpl.java index 8527d255..dbff7f35 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingtypemaintenance/FarmingTypeMaintenanceServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/farmingtypemaintenance/FarmingTypeMaintenanceServiceImpl.java @@ -16,6 +16,8 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.farm.dal.mysql.farmingtypemaintenance.FarmingTypeMaintenanceMapper; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; @@ -100,4 +102,16 @@ public class FarmingTypeMaintenanceServiceImpl implements FarmingTypeMaintenance public List getFarmingTypeMaintenanceList() { return farmingTypeMaintenanceMapper.selectList(FarmingTypeMaintenanceDO::getTenantId, getLoginUser().getTenantId(), FarmingTypeMaintenanceDO::getUseStatus, 1); } + @Override + public Map getTypeNameById() { + List list = farmingTypeMaintenanceMapper.selectList(FarmingTypeMaintenanceDO::getTenantId, getLoginUser().getTenantId()); + return list.stream() + .filter(item -> item != null && + item.getUseStatus() != null && + item.getUseStatus() == 1) + .collect(Collectors.toMap( + FarmingTypeMaintenanceDO::getId, + FarmingTypeMaintenanceDO::getFarmingName + )); + } } \ No newline at end of file