fix (farm): 农事报表
- PC端/微信端
This commit is contained in:
@@ -25,6 +25,7 @@ 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;
|
||||
@@ -109,6 +110,13 @@ public class CropFarmingCenterController {
|
||||
private LocalDate maxDate;
|
||||
}
|
||||
|
||||
@GetMapping("/production-plan/report")
|
||||
@Operation(summary = "生产计划-报表")
|
||||
public CommonResult<List<ProductionPlanReportRespVO>> getPpReport(ProductionPlanReportReqVO req) {
|
||||
List<ProductionPlanReportRespVO> res = cropFarmingCenterService.getPpReport(req);
|
||||
return success(res);
|
||||
}
|
||||
|
||||
@GetMapping("/production-plan/get/{id}")
|
||||
@Operation(summary = "生产计划-查看")
|
||||
public CommonResult<ProductionPlanRespVO> getProductionPlan(@PathVariable("id") String id) {
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo;
|
||||
|
||||
import com.mysql.cj.x.protobuf.MysqlxDatatypes;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @description: TODO
|
||||
* @author: binda
|
||||
* @date: 2025/10/16 10:36
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ProductionPlanReportReqVO {
|
||||
|
||||
@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,43 @@
|
||||
package cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description: TODO
|
||||
* @author: binda
|
||||
* @date: 2025/10/16 10:36
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ProductionPlanReportRespVO {
|
||||
|
||||
@Schema(description = "基地名称")
|
||||
private String baseName;
|
||||
@Schema(description = "模型物种集合")
|
||||
private List<Models> models;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public static class Models {
|
||||
@Schema(description = "物种名称")
|
||||
private String plantSpeciesName;
|
||||
@Schema(description = "排产开始日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate productionStartDate;
|
||||
@Schema(description = "排产结束日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate productionEndDate;
|
||||
@Schema(description = "计划状态")
|
||||
private String planStatusName;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -82,7 +82,6 @@ public class WxController {
|
||||
@Parameter(name = "baseId", description = "基地编号")
|
||||
public CommonResult<List<DeviceStatisticsInfoRespVO>> getDeviceStatisticsList(@RequestParam("baseId") String baseId) {
|
||||
List<DeviceStatisticsInfoRespVO> res = deviceInfoService.getDeviceStatisticsList(baseId);
|
||||
|
||||
return success(res);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.Farmin
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.farmingrecord.FarmingRecordDO;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description: 种植中心
|
||||
* @author: binda
|
||||
@@ -58,4 +60,11 @@ public interface CropFarmingCenterService {
|
||||
void updateFarmingRecord(@Valid FarmingRecordSaveReqVO updateReqVO);
|
||||
|
||||
void deleteFarmingRecord(String id);
|
||||
|
||||
/**
|
||||
* 农事报表
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
List<ProductionPlanReportRespVO> getPpReport(ProductionPlanReportReqVO req);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package cn.iocoder.yudao.module.farm.service.cropFarmingCenter;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.idev.excel.util.StringUtils;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.*;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingRecordCreateReqVO;
|
||||
@@ -31,6 +33,7 @@ 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.modelmanagement.ModelManagementService;
|
||||
import cn.iocoder.yudao.module.farm.service.plotinfo.PlotInfoService;
|
||||
import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService;
|
||||
import cn.iocoder.yudao.module.farm.utils.BigDecimalUtil;
|
||||
import cn.iocoder.yudao.module.farm.utils.StrHelperUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
@@ -71,11 +74,12 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
|
||||
private final FarmingRecordService farmingRecordService;
|
||||
private final FarmingRecordInputService farmingRecordInputService;
|
||||
private final PlotInfoService plotInfoService;
|
||||
private final SpeciesLibraryService speciesLibraryService;
|
||||
|
||||
public CropFarmingCenterServiceImpl(SpeciesLibraryMapper speciesLibraryMapper, PersonnelManagementMapper personnelManagementMapper, BaseInfoMapper baseInfoMapper, ProductionPlanMapper productionPlanMapper,
|
||||
ModelManagementService modelManagementService,
|
||||
FarmingRecordService farmingRecordService,
|
||||
FarmingRecordInputService farmingRecordInputService, PlotInfoService plotInfoService) {
|
||||
FarmingRecordInputService farmingRecordInputService, PlotInfoService plotInfoService, SpeciesLibraryService speciesLibraryService) {
|
||||
this.speciesLibraryMapper = speciesLibraryMapper;
|
||||
this.personnelManagementMapper = personnelManagementMapper;
|
||||
this.baseInfoMapper = baseInfoMapper;
|
||||
@@ -84,6 +88,7 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
|
||||
this.farmingRecordService = farmingRecordService;
|
||||
this.farmingRecordInputService = farmingRecordInputService;
|
||||
this.plotInfoService = plotInfoService;
|
||||
this.speciesLibraryService = speciesLibraryService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -616,4 +621,55 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
|
||||
farmingRecordService.deleteFarmingRecord(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProductionPlanReportRespVO> getPpReport(ProductionPlanReportReqVO req) {
|
||||
LambdaQueryWrapperX<ProductionPlanDO> x = new LambdaQueryWrapperX<>();
|
||||
x.eqIfPresent(ProductionPlanDO::getBaseId, req.getBaseId());
|
||||
x.eqIfPresent(ProductionPlanDO::getPlotId, req.getPlotId());
|
||||
x.eqIfPresent(ProductionPlanDO::getPlanStatus, req.getPlanStatus());
|
||||
x.eq(ProductionPlanDO::getTenantId, getLoginUser().getTenantId());
|
||||
x.eq(ProductionPlanDO::getDeleted, NO_CODE);
|
||||
if (StringUtils.isNotBlank(req.getYear())) {
|
||||
try {
|
||||
int year = Integer.parseInt(req.getYear());
|
||||
x.between(ProductionPlanDO::getProductionStartDate,
|
||||
LocalDate.of(year, 1, 1),
|
||||
LocalDate.of(year, 12, 31));
|
||||
} catch (NumberFormatException e) {
|
||||
// 处理格式错误
|
||||
throw new IllegalArgumentException("year格式错误,应为yyyy格式");
|
||||
}
|
||||
}
|
||||
List<ProductionPlanDO> pList = productionPlanMapper.selectList(x);
|
||||
|
||||
Map<String, String> speciesName = speciesLibraryService.getSpeciesName();
|
||||
|
||||
return pList.stream()
|
||||
.collect(Collectors.groupingBy(ProductionPlanDO::getBaseName))
|
||||
.entrySet().stream()
|
||||
.map(entry -> {
|
||||
String baseName = entry.getKey();
|
||||
List<ProductionPlanDO> plans = entry.getValue();
|
||||
|
||||
List<ProductionPlanReportRespVO.Models> models = plans.stream()
|
||||
.map(e -> convertToModel(e,speciesName))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return new ProductionPlanReportRespVO(baseName, models);
|
||||
})
|
||||
.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());
|
||||
|
||||
return new ProductionPlanReportRespVO.Models(
|
||||
plantSpeciesName,
|
||||
plan.getProductionStartDate(),
|
||||
plan.getProductionEndDate(),
|
||||
planStatusName
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user