fix (farm): 农事报表

- PC端/微信端
This commit is contained in:
达富斌
2025-10-16 14:29:21 +08:00
parent ca7744a37a
commit 31fcbb289d
7 changed files with 121 additions and 3 deletions

View File

@@ -111,12 +111,19 @@ public class CropFarmingCenterController {
} }
@GetMapping("/production-plan/report") @GetMapping("/production-plan/report")
@Operation(summary = "生产计划-报表") @Operation(summary = "农事报表-生产计划报表")
public CommonResult<List<ProductionPlanReportRespVO>> getPpReport(ProductionPlanReportReqVO req) { public CommonResult<List<ProductionPlanReportRespVO>> getPpReport(ProductionPlanReportReqVO req) {
List<ProductionPlanReportRespVO> res = cropFarmingCenterService.getPpReport(req); List<ProductionPlanReportRespVO> res = cropFarmingCenterService.getPpReport(req);
return success(res); return success(res);
} }
@GetMapping("/farming-record/farm-type/report")
@Operation(summary = "农事报表-农事记录报表")
public CommonResult<List<FarmingRecordReportRespVO>> getFcReport(FarmingRecordReportReqVO req) {
List<FarmingRecordReportRespVO> res = cropFarmingCenterService.getFcReport(req);
return success(res);
}
@GetMapping("/production-plan/get/{id}") @GetMapping("/production-plan/get/{id}")
@Operation(summary = "生产计划-查看") @Operation(summary = "生产计划-查看")
public CommonResult<ProductionPlanRespVO> getProductionPlan(@PathVariable("id") String id) { public CommonResult<ProductionPlanRespVO> getProductionPlan(@PathVariable("id") String id) {

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -67,4 +67,6 @@ public interface CropFarmingCenterService {
* @return * @return
*/ */
List<ProductionPlanReportRespVO> getPpReport(ProductionPlanReportReqVO req); List<ProductionPlanReportRespVO> getPpReport(ProductionPlanReportReqVO req);
List<FarmingRecordReportRespVO> getFcReport(FarmingRecordReportReqVO req);
} }

View File

@@ -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.productionplan.ProductionPlanDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO; 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.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.personnelmanagement.PersonnelManagementMapper;
import cn.iocoder.yudao.module.farm.dal.mysql.productionplan.ProductionPlanMapper; 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.dal.mysql.specieslibrary.SpeciesLibraryMapper;
import cn.iocoder.yudao.module.farm.enums.CommonConstants; import cn.iocoder.yudao.module.farm.enums.CommonConstants;
import cn.iocoder.yudao.module.farm.service.farmingrecord.FarmingRecordService; 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.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.modelmanagement.ModelManagementService;
import cn.iocoder.yudao.module.farm.service.plotinfo.PlotInfoService; import cn.iocoder.yudao.module.farm.service.plotinfo.PlotInfoService;
import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService; import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService;
@@ -70,25 +72,30 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
private final PersonnelManagementMapper personnelManagementMapper; private final PersonnelManagementMapper personnelManagementMapper;
private final BaseInfoMapper baseInfoMapper; private final BaseInfoMapper baseInfoMapper;
private final ProductionPlanMapper productionPlanMapper; private final ProductionPlanMapper productionPlanMapper;
private final FarmingRecordMapper farmingRecordMapper;
private final ModelManagementService modelManagementService; private final ModelManagementService modelManagementService;
private final FarmingRecordService farmingRecordService; private final FarmingRecordService farmingRecordService;
private final FarmingRecordInputService farmingRecordInputService; private final FarmingRecordInputService farmingRecordInputService;
private final PlotInfoService plotInfoService; private final PlotInfoService plotInfoService;
private final SpeciesLibraryService speciesLibraryService; private final SpeciesLibraryService speciesLibraryService;
private final FarmingTypeMaintenanceService farmingTypeMaintenanceService;
public CropFarmingCenterServiceImpl(SpeciesLibraryMapper speciesLibraryMapper, PersonnelManagementMapper personnelManagementMapper, BaseInfoMapper baseInfoMapper, ProductionPlanMapper productionPlanMapper, public CropFarmingCenterServiceImpl(SpeciesLibraryMapper speciesLibraryMapper, PersonnelManagementMapper personnelManagementMapper, BaseInfoMapper baseInfoMapper, ProductionPlanMapper productionPlanMapper,
ModelManagementService modelManagementService, FarmingRecordMapper farmingRecordMapper, ModelManagementService modelManagementService,
FarmingRecordService farmingRecordService, FarmingRecordService farmingRecordService,
FarmingRecordInputService farmingRecordInputService, PlotInfoService plotInfoService, SpeciesLibraryService speciesLibraryService) { FarmingRecordInputService farmingRecordInputService, PlotInfoService plotInfoService, SpeciesLibraryService speciesLibraryService, FarmingTypeMaintenanceService farmingTypeMaintenanceService) {
this.speciesLibraryMapper = speciesLibraryMapper; this.speciesLibraryMapper = speciesLibraryMapper;
this.personnelManagementMapper = personnelManagementMapper; this.personnelManagementMapper = personnelManagementMapper;
this.baseInfoMapper = baseInfoMapper; this.baseInfoMapper = baseInfoMapper;
this.productionPlanMapper = productionPlanMapper; this.productionPlanMapper = productionPlanMapper;
this.farmingRecordMapper = farmingRecordMapper;
this.modelManagementService = modelManagementService; this.modelManagementService = modelManagementService;
this.farmingRecordService = farmingRecordService; this.farmingRecordService = farmingRecordService;
this.farmingRecordInputService = farmingRecordInputService; this.farmingRecordInputService = farmingRecordInputService;
this.plotInfoService = plotInfoService; this.plotInfoService = plotInfoService;
this.speciesLibraryService = speciesLibraryService; this.speciesLibraryService = speciesLibraryService;
this.farmingTypeMaintenanceService = farmingTypeMaintenanceService;
} }
@Override @Override
@@ -660,6 +667,41 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@Override
public List<FarmingRecordReportRespVO> getFcReport(FarmingRecordReportReqVO req) {
LambdaQueryWrapperX<FarmingRecordDO> 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<FarmingRecordDO> list = farmingRecordMapper.selectList(x);
Map<String, String> 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<String, String> speciesName) { private ProductionPlanReportRespVO.Models convertToModel(ProductionPlanDO plan,Map<String, String> speciesName) {
String plantSpeciesName = speciesName.get(plan.getPlantSpeciesCode()); String plantSpeciesName = speciesName.get(plan.getPlantSpeciesCode());
String planStatusName = PLAN_MAP.get(plan.getPlanStatus()); String planStatusName = PLAN_MAP.get(plan.getPlanStatus());

View File

@@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 农事类型维护 Service 接口 * 农事类型维护 Service 接口
@@ -70,4 +71,6 @@ public interface FarmingTypeMaintenanceService {
List<FarmingTypeMaintenanceDO> getFarmingTypeMaintenanceList(); List<FarmingTypeMaintenanceDO> getFarmingTypeMaintenanceList();
Map<String, String> getTypeNameById();
} }

View File

@@ -16,6 +16,8 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.farm.dal.mysql.farmingtypemaintenance.FarmingTypeMaintenanceMapper; import cn.iocoder.yudao.module.farm.dal.mysql.farmingtypemaintenance.FarmingTypeMaintenanceMapper;
import java.util.List; 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.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
@@ -100,4 +102,16 @@ public class FarmingTypeMaintenanceServiceImpl implements FarmingTypeMaintenance
public List<FarmingTypeMaintenanceDO> getFarmingTypeMaintenanceList() { public List<FarmingTypeMaintenanceDO> getFarmingTypeMaintenanceList() {
return farmingTypeMaintenanceMapper.selectList(FarmingTypeMaintenanceDO::getTenantId, getLoginUser().getTenantId(), FarmingTypeMaintenanceDO::getUseStatus, 1); return farmingTypeMaintenanceMapper.selectList(FarmingTypeMaintenanceDO::getTenantId, getLoginUser().getTenantId(), FarmingTypeMaintenanceDO::getUseStatus, 1);
} }
@Override
public Map<String,String> getTypeNameById() {
List<FarmingTypeMaintenanceDO> 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
));
}
} }