fix (farm): API接口,农事名称,农事类型

- 接口方法改为POST
- 农事类型,名称 查重
This commit is contained in:
达富斌
2025-09-05 21:05:47 +08:00
parent c012fbc335
commit 0bfadba3c4
6 changed files with 38 additions and 13 deletions

View File

@@ -9,7 +9,7 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -43,7 +43,7 @@ public class ApiController {
* @param req 根据租户id、开始时间、结束时间 ,已完成状态
* @return 种植计划id、种植计划名称
*/
@GetMapping("/production-plan/page")
@PostMapping("/production-plan/page")
@Operation(summary = "生产计划-分页")
public CommonResult<PageResult<FarmProductionPlanRespVO>> getPageForFarmProductionPlan(@Valid @RequestBody FarmProductionPlanReqVO req) {
return productionPlanService.getPageForFarmProductionPlan(req);
@@ -57,13 +57,13 @@ public class ApiController {
* @param req 根据租户id、种植计划id
* @return 种植计划id、种植计划名称、种植开始时间、种植结束时间、计划所属的基地图片、基地简介、基地中心坐标点
*/
@GetMapping("/production-plan/get")
@PostMapping("/production-plan/get")
@Operation(summary = "生产计划-详情")
public CommonResult<FarmProductionPlanDetailRespVO> getDetailForFarmProductionPlan(@Valid @RequestBody FarmProductionPlanDetailReqVO req) {
return productionPlanService.getDetailForFarmProductionPlan(req);
}
@GetMapping("/digital-cockpit/get")
@PostMapping("/digital-cockpit/get")
@Operation(summary = "数字驾驶舱-基地概要信息")
public CommonResult<FarmBaseOverviewRespVO> getBaseOverview(@Valid @RequestBody FarmBaseOverviewReqVO req) {
return baseInfoService.getBaseOverview(req);
@@ -71,31 +71,31 @@ public class ApiController {
// TODO: 2025/9/4 地图展示信息 - 设备坐标
@GetMapping("/digital-cockpit/list")
@PostMapping("/digital-cockpit/list")
@Operation(summary = "数字驾驶舱-基地信息列表")
public CommonResult<List<FarmBaseInfoRespVO>> getBaseInfoList(@Valid @RequestBody FarmBaseInfoReqVO req) {
return baseInfoService.getBaseInfoList(req);
}
@GetMapping("/digital-cockpit/chart/yield-comparison")
@PostMapping("/digital-cockpit/chart/yield-comparison")
@Operation(summary = "数字驾驶舱-生产数据-产量对比")
public CommonResult<List<YieldComparisonChartRespVO>> getYieldComparisonChart(@Valid @RequestBody YieldComparisonChartReqVO req) {
return productionPlanService.getYieldComparisonChart(req);
}
@GetMapping("/digital-cockpit/chart/planting-plan-completion")
@PostMapping("/digital-cockpit/chart/planting-plan-completion")
@Operation(summary = "数字驾驶舱-生产数据-种植计划完成情况")
public CommonResult<List<PlantingPlanCompletionRespVO>> getPlantingPlanCompletionChart(@Valid @RequestBody PlantingPlanCompletionReqVO req) {
return productionPlanService.getPlantingPlanCompletionChart(req);
}
@GetMapping("/digital-cockpit/chart/disaster-statistics")
@PostMapping("/digital-cockpit/chart/disaster-statistics")
@Operation(summary = "数字驾驶舱-灾害统计-灾害分析")
public CommonResult<List<DisasterAnalysisRespVO>> getDisasterStatisticsChart(@Valid @RequestBody DisasterAnalysisReqVO req) {
return productionPlanService.getDisasterStatisticsChart(req); // TODO: 2025/9/4 未实现
}
@GetMapping("/digital-cockpit/chart/farming-distribution")
@PostMapping("/digital-cockpit/chart/farming-distribution")
@Operation(summary = "数字驾驶舱-灾害统计-农事分布")
public CommonResult<List<FarmingDistributionRespVO>> getFarmingDistributionChart(@Valid @RequestBody FarmingDistributionReqVO req) {
return productionPlanService.getFarmingDistributionChart(req); // TODO: 2025/9/4 未实现

View File

@@ -123,4 +123,10 @@ public interface ErrorCodeConstants {
// ========== MQTT连接配置 1_050_038_000 ==========
ErrorCode MQTT_CONNECTION_NOT_EXISTS = new ErrorCode(1_050_038_000, "MQTT连接配置不存在");
// ========== 一般灾害名称重复 1_050_039_000 ==========
ErrorCode GENERAL_DISASTER_NAME_NON_UNIQUE_ERROR = new ErrorCode(1_050_039_000, "一般灾害名称重复");
ErrorCode WEATHER_DISASTER_NAME_NON_UNIQUE_ERROR = new ErrorCode(1_050_040_000, "气象灾害名称重复");
}

View File

@@ -29,6 +29,7 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.DICT_TYPE_CODE_1;
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.DICT_TYPE_CODE_2;
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.DISASTER_DATA_NOT_EXISTS;
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.GENERAL_DISASTER_NAME_NON_UNIQUE_ERROR;
/**
* 灾害数据 Service 实现类
@@ -52,7 +53,7 @@ public class DisasterDataServiceImpl implements DisasterDataService {
reqVO.setName(createReqVO.getName());
DisasterDataDO obj = disasterDataMapper.selectOne(reqVO);
if (ObjectUtils.isNotEmpty(obj)) {
return "灾害名称重复";
throw exception(GENERAL_DISASTER_NAME_NON_UNIQUE_ERROR);
}
// 插入
DisasterDataDO disasterData = BeanUtils.toBean(createReqVO, DisasterDataDO.class);

View File

@@ -97,7 +97,7 @@ public class InputLibraryServiceImpl implements InputLibraryService {
InputLibraryDO updateObj = BeanUtils.toBean(updateReqVO, InputLibraryDO.class);
inputLibraryMapper.updateById(updateObj);
// 同步
this.syncUpdateDict(updateObj.getId());
// this.syncUpdateDict(updateObj.getId());
}
private void syncUpdateDict(String id) {

View File

@@ -107,7 +107,19 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
@Override
public void updateSpeciesLibrary(SpeciesLibrarySaveReqVO updateReqVO) {
// 校验存在
validateSpeciesLibraryExists(updateReqVO.getId());
SpeciesLibraryDO obj = speciesLibraryMapper.selectById(updateReqVO.getId());
if (obj == null) {
throw exception(SPECIES_LIBRARY_NOT_EXISTS);
}
// tips: 仅修改使用状态时
if (obj.getUseStatus() != updateReqVO.getUseStatus()) {
SpeciesLibraryDO updateObj = new SpeciesLibraryDO();
updateObj.setId(updateReqVO.getId());
updateObj.setUseStatus(updateReqVO.getUseStatus());
speciesLibraryMapper.updateById(updateObj);
return;
}
// 更新
SpeciesLibraryDO updateObj = BeanUtils.toBean(updateReqVO, SpeciesLibraryDO.class);

View File

@@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.farm.controller.admin.weatherdisasterlibrary.vo.W
import cn.iocoder.yudao.module.farm.dal.dataobject.weatherdisasterlibrary.WeatherDisasterLibraryDO;
import cn.iocoder.yudao.module.farm.dal.mysql.weatherdisasterlibrary.WeatherDisasterLibraryMapper;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@@ -16,7 +17,7 @@ import java.util.List;
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.module.farm.enums.ErrorCodeConstants.WEATHER_DISASTER_LIBRARY_NOT_EXISTS;
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.*;
/**
* 气象灾害库维护 Service 实现类
@@ -33,6 +34,11 @@ public class WeatherDisasterLibraryServiceImpl implements WeatherDisasterLibrary
@Override
public String createWeatherDisasterLibrary(WeatherDisasterLibrarySaveReqVO createReqVO) {
LoginUser user = getLoginUser();
// 名称查重
WeatherDisasterLibraryDO obj = weatherDisasterLibraryMapper.selectOne(WeatherDisasterLibraryDO::getName,createReqVO.getName());
if (ObjectUtils.isNotEmpty(obj)) {
throw exception(WEATHER_DISASTER_NAME_NON_UNIQUE_ERROR);
}
// 插入
WeatherDisasterLibraryDO weatherDisasterLibrary = BeanUtils.toBean(createReqVO, WeatherDisasterLibraryDO.class);
weatherDisasterLibrary.setId(IdUtil.fastUUID());