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")
@Operation(summary = "生产计划-报表")
@Operation(summary = "农事报表-生产计划报表")
public CommonResult<List<ProductionPlanReportRespVO>> getPpReport(ProductionPlanReportReqVO req) {
List<ProductionPlanReportRespVO> res = cropFarmingCenterService.getPpReport(req);
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}")
@Operation(summary = "生产计划-查看")
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
*/
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.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<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) {
String plantSpeciesName = speciesName.get(plan.getPlantSpeciesCode());
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 java.util.List;
import java.util.Map;
/**
* 农事类型维护 Service 接口
@@ -70,4 +71,6 @@ public interface FarmingTypeMaintenanceService {
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 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<FarmingTypeMaintenanceDO> getFarmingTypeMaintenanceList() {
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
));
}
}