electripper-v2/ruoyi-web/src/main/java/com/ruoyi/web/app/AppAreaController.java
2025-04-21 18:27:12 +08:00

73 lines
2.3 KiB
Java

package com.ruoyi.web.app;
import java.math.BigDecimal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.bst.area.domain.AreaQuery;
import com.ruoyi.bst.area.domain.enums.AreaStatus;
import com.ruoyi.bst.area.service.AreaDashboard;
import com.ruoyi.bst.area.service.AreaService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.domain.vo.LongIntegerVO;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping("/app/area")
public class AppAreaController extends BaseController {
@Autowired
private AreaService areaService;
@Autowired
private AreaDashboard areaDashboard;
// 设置前提条件
private void setQuery(AreaQuery query) {
query.setStatus(AreaStatus.ENABLED.getCode());
}
@ApiOperation("获取运营区详情")
@GetMapping("/detail")
@Anonymous
public AjaxResult getAreaDetail(Long id) {
AreaQuery query = new AreaQuery();
query.setId(id);
setQuery(query);
return success(areaService.selectOne(query));
}
@ApiOperation("获取附近的运营区")
@GetMapping("/nearby")
@Anonymous
public AjaxResult getNearbyArea(AreaQuery query) {
if (query.getRadius() == null || query.getRadius().compareTo(BigDecimal.ZERO) <= 0 || query.getRadius().compareTo(BigDecimal.valueOf(10000)) > 0) {
return error("半径必须在0-10000之间");
}
if (query.getCenter() == null) {
return error("中心坐标不能为空");
}
if (query.getCenter().size() != 2) {
return error("中心坐标格式错误,必须包含经度和纬度");
}
setQuery(query);
// 查询设备数量最多的运营区ID
LongIntegerVO max = areaDashboard.selectMaxOfDeviceCountAreaId(query);
if (max == null) {
return success();
}
// 查询运营区详情
return success(areaService.selectAreaById(max.getKey()));
}
}