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

View File

@@ -123,4 +123,10 @@ public interface ErrorCodeConstants {
// ========== MQTT连接配置 1_050_038_000 ========== // ========== MQTT连接配置 1_050_038_000 ==========
ErrorCode MQTT_CONNECTION_NOT_EXISTS = new ErrorCode(1_050_038_000, "MQTT连接配置不存在"); 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_1;
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.DICT_TYPE_CODE_2; 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.DISASTER_DATA_NOT_EXISTS;
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.GENERAL_DISASTER_NAME_NON_UNIQUE_ERROR;
/** /**
* 灾害数据 Service 实现类 * 灾害数据 Service 实现类
@@ -52,7 +53,7 @@ public class DisasterDataServiceImpl implements DisasterDataService {
reqVO.setName(createReqVO.getName()); reqVO.setName(createReqVO.getName());
DisasterDataDO obj = disasterDataMapper.selectOne(reqVO); DisasterDataDO obj = disasterDataMapper.selectOne(reqVO);
if (ObjectUtils.isNotEmpty(obj)) { if (ObjectUtils.isNotEmpty(obj)) {
return "灾害名称重复"; throw exception(GENERAL_DISASTER_NAME_NON_UNIQUE_ERROR);
} }
// 插入 // 插入
DisasterDataDO disasterData = BeanUtils.toBean(createReqVO, DisasterDataDO.class); 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); InputLibraryDO updateObj = BeanUtils.toBean(updateReqVO, InputLibraryDO.class);
inputLibraryMapper.updateById(updateObj); inputLibraryMapper.updateById(updateObj);
// 同步 // 同步
this.syncUpdateDict(updateObj.getId()); // this.syncUpdateDict(updateObj.getId());
} }
private void syncUpdateDict(String id) { private void syncUpdateDict(String id) {

View File

@@ -107,7 +107,19 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
@Override @Override
public void updateSpeciesLibrary(SpeciesLibrarySaveReqVO updateReqVO) { 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); 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.dataobject.weatherdisasterlibrary.WeatherDisasterLibraryDO;
import cn.iocoder.yudao.module.farm.dal.mysql.weatherdisasterlibrary.WeatherDisasterLibraryMapper; import cn.iocoder.yudao.module.farm.dal.mysql.weatherdisasterlibrary.WeatherDisasterLibraryMapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; 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.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;
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.WEATHER_DISASTER_LIBRARY_NOT_EXISTS; import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.*;
/** /**
* 气象灾害库维护 Service 实现类 * 气象灾害库维护 Service 实现类
@@ -33,6 +34,11 @@ public class WeatherDisasterLibraryServiceImpl implements WeatherDisasterLibrary
@Override @Override
public String createWeatherDisasterLibrary(WeatherDisasterLibrarySaveReqVO createReqVO) { public String createWeatherDisasterLibrary(WeatherDisasterLibrarySaveReqVO createReqVO) {
LoginUser user = getLoginUser(); 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); WeatherDisasterLibraryDO weatherDisasterLibrary = BeanUtils.toBean(createReqVO, WeatherDisasterLibraryDO.class);
weatherDisasterLibrary.setId(IdUtil.fastUUID()); weatherDisasterLibrary.setId(IdUtil.fastUUID());