fix (farm): 农事报表
- PC端/微信端
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -67,4 +67,6 @@ public interface CropFarmingCenterService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<ProductionPlanReportRespVO> getPpReport(ProductionPlanReportReqVO req);
|
List<ProductionPlanReportRespVO> getPpReport(ProductionPlanReportReqVO req);
|
||||||
|
|
||||||
|
List<FarmingRecordReportRespVO> getFcReport(FarmingRecordReportReqVO req);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user