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 org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -109,6 +110,13 @@ public class CropFarmingCenterController {
|
|||||||
private LocalDate maxDate;
|
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}")
|
@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,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 = "基地编号")
|
@Parameter(name = "baseId", description = "基地编号")
|
||||||
public CommonResult<List<DeviceStatisticsInfoRespVO>> getDeviceStatisticsList(@RequestParam("baseId") String baseId) {
|
public CommonResult<List<DeviceStatisticsInfoRespVO>> getDeviceStatisticsList(@RequestParam("baseId") String baseId) {
|
||||||
List<DeviceStatisticsInfoRespVO> res = deviceInfoService.getDeviceStatisticsList(baseId);
|
List<DeviceStatisticsInfoRespVO> res = deviceInfoService.getDeviceStatisticsList(baseId);
|
||||||
|
|
||||||
return success(res);
|
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 cn.iocoder.yudao.module.farm.dal.dataobject.farmingrecord.FarmingRecordDO;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 种植中心
|
* @description: 种植中心
|
||||||
* @author: binda
|
* @author: binda
|
||||||
@@ -58,4 +60,11 @@ public interface CropFarmingCenterService {
|
|||||||
void updateFarmingRecord(@Valid FarmingRecordSaveReqVO updateReqVO);
|
void updateFarmingRecord(@Valid FarmingRecordSaveReqVO updateReqVO);
|
||||||
|
|
||||||
void deleteFarmingRecord(String id);
|
void deleteFarmingRecord(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 农事报表
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ProductionPlanReportRespVO> getPpReport(ProductionPlanReportReqVO req);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package cn.iocoder.yudao.module.farm.service.cropFarmingCenter;
|
package cn.iocoder.yudao.module.farm.service.cropFarmingCenter;
|
||||||
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
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.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
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.framework.security.core.LoginUser;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.*;
|
import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.*;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.cropfarmingcenter.vo.FarmingRecordCreateReqVO;
|
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.farmingrecordinput.FarmingRecordInputService;
|
||||||
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.utils.BigDecimalUtil;
|
import cn.iocoder.yudao.module.farm.utils.BigDecimalUtil;
|
||||||
import cn.iocoder.yudao.module.farm.utils.StrHelperUtil;
|
import cn.iocoder.yudao.module.farm.utils.StrHelperUtil;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
@@ -71,11 +74,12 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
|
|||||||
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;
|
||||||
|
|
||||||
public CropFarmingCenterServiceImpl(SpeciesLibraryMapper speciesLibraryMapper, PersonnelManagementMapper personnelManagementMapper, BaseInfoMapper baseInfoMapper, ProductionPlanMapper productionPlanMapper,
|
public CropFarmingCenterServiceImpl(SpeciesLibraryMapper speciesLibraryMapper, PersonnelManagementMapper personnelManagementMapper, BaseInfoMapper baseInfoMapper, ProductionPlanMapper productionPlanMapper,
|
||||||
ModelManagementService modelManagementService,
|
ModelManagementService modelManagementService,
|
||||||
FarmingRecordService farmingRecordService,
|
FarmingRecordService farmingRecordService,
|
||||||
FarmingRecordInputService farmingRecordInputService, PlotInfoService plotInfoService) {
|
FarmingRecordInputService farmingRecordInputService, PlotInfoService plotInfoService, SpeciesLibraryService speciesLibraryService) {
|
||||||
this.speciesLibraryMapper = speciesLibraryMapper;
|
this.speciesLibraryMapper = speciesLibraryMapper;
|
||||||
this.personnelManagementMapper = personnelManagementMapper;
|
this.personnelManagementMapper = personnelManagementMapper;
|
||||||
this.baseInfoMapper = baseInfoMapper;
|
this.baseInfoMapper = baseInfoMapper;
|
||||||
@@ -84,6 +88,7 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
|
|||||||
this.farmingRecordService = farmingRecordService;
|
this.farmingRecordService = farmingRecordService;
|
||||||
this.farmingRecordInputService = farmingRecordInputService;
|
this.farmingRecordInputService = farmingRecordInputService;
|
||||||
this.plotInfoService = plotInfoService;
|
this.plotInfoService = plotInfoService;
|
||||||
|
this.speciesLibraryService = speciesLibraryService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -616,4 +621,55 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
|
|||||||
farmingRecordService.deleteFarmingRecord(id);
|
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