From 3b2711b15ff537cf82ce61ddfc82d92e4e6a89d6 Mon Sep 17 00:00:00 2001 From: Esacpe <1113279529@qq.com> Date: Wed, 25 Mar 2026 13:26:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yjzl/controller/TbZdxlFgdwController.java | 51 ++++++++++++++ .../service/Impl/TbZdxlFgdwServiceImpl.java | 69 ++++++++++++++++++- .../mosty/yjzl/service/TbZdxlFgdwService.java | 19 +++++ 3 files changed, 137 insertions(+), 2 deletions(-) diff --git a/mosty-yjzl/src/main/java/com/mosty/yjzl/controller/TbZdxlFgdwController.java b/mosty-yjzl/src/main/java/com/mosty/yjzl/controller/TbZdxlFgdwController.java index cc994f8..b56e18b 100644 --- a/mosty-yjzl/src/main/java/com/mosty/yjzl/controller/TbZdxlFgdwController.java +++ b/mosty-yjzl/src/main/java/com/mosty/yjzl/controller/TbZdxlFgdwController.java @@ -1,6 +1,7 @@ package com.mosty.yjzl.controller; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.mosty.base.model.dto.yjzl.TbZdxlFgdwSaveDTO; import com.mosty.base.model.dto.yjzl.TbZdxlFgdwUpdateDTO; import com.mosty.base.model.query.yjzl.TbZdxlFgdwQuery; import com.mosty.base.model.vo.yjzl.TbZdxlFgdwVO; @@ -20,7 +21,9 @@ import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * @author zhangzhao @@ -91,6 +94,36 @@ public class TbZdxlFgdwController { return ResponseResult.success(tbZdxlFgdwService.selectList(query)); } + /** + * 新增单条 + * @param dto 保存DTO对象 + * @param bindResult 校验对象 + * @return ResponseResult 实体主键ID + */ + @ApiOperation(value = "新增单条") + @PostMapping("/save") + @JwtSysUser + @Log(title = "指导巡逻-方格点位接口-新增单条", businessType = BusinessType.INSERT) + public ResponseResult save(@RequestBody @Valid TbZdxlFgdwSaveDTO dto, BindingResult bindResult){ + try { + //基础信息校验 + String message = SpringValidUtils.getErrorsMsg(bindResult); + if (StringUtils.isNotBlank(message)) { + return ResponseResult.fail(MessageUtils.getSaveFailMsg() + message); + } + + //新增 + Long resultId = tbZdxlFgdwService.saveEntity(dto); + if(ObjectUtils.isNotEmpty(resultId)){ + return ResponseResult.success(resultId); + } + return ResponseResult.fail(MessageUtils.getSaveFailMsg()); + } catch (Exception e) { + e.printStackTrace(); + return ResponseResult.fail(MessageUtils.getSaveServerErrorMsg()); + } + } + /** * 修改单条 * @param dto 修改DTO对象 @@ -121,4 +154,22 @@ public class TbZdxlFgdwController { } } + /** + * 根据经纬度获取正方形四个点位 + * @param longitude 经度 + * @param latitude 纬度 + * @param distance 范围(米),半径 + * @return ResponseResult 正方形四个角点坐标 + */ + @ApiOperation(value = "根据经纬度获取正方形四个点位") + @GetMapping("/getSquarePoints") + @JwtSysUser + @Log(title = "指导巡逻-方格点位接口-获取正方形点位", businessType = BusinessType.OTHER) + public ResponseResult> getSquarePoints( + @RequestParam("longitude") Double longitude, + @RequestParam("latitude") Double latitude, + @RequestParam(value = "distance", defaultValue = "500") Double distance) { + return ResponseResult.success(tbZdxlFgdwService.getSquarePoints(longitude, latitude, distance)); + } + } diff --git a/mosty-yjzl/src/main/java/com/mosty/yjzl/service/Impl/TbZdxlFgdwServiceImpl.java b/mosty-yjzl/src/main/java/com/mosty/yjzl/service/Impl/TbZdxlFgdwServiceImpl.java index 3a9ae9f..e4fa4e1 100644 --- a/mosty-yjzl/src/main/java/com/mosty/yjzl/service/Impl/TbZdxlFgdwServiceImpl.java +++ b/mosty-yjzl/src/main/java/com/mosty/yjzl/service/Impl/TbZdxlFgdwServiceImpl.java @@ -5,13 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mosty.base.model.dto.yjzl.TbZdxlFgdwSaveDTO; import com.mosty.base.model.dto.yjzl.TbZdxlFgdwUpdateDTO; import com.mosty.base.model.entity.yjzl.zddw.TbZdxlFgdw; import com.mosty.base.model.query.yjzl.TbZdxlFgdwQuery; +import com.mosty.base.model.vo.base.DeptInfoVo; import com.mosty.base.model.vo.yjzl.TbZdxlFgdwVO; import com.mosty.base.utils.PageUtils; import com.mosty.base.utils.QueryWrapperUtils; import com.mosty.yjzl.mapper.TbZdxlFgdwMapper; +import com.mosty.yjzl.remote.TbBaseAdaptRemoteService; import com.mosty.yjzl.service.TbZdxlFgdwService; import lombok.AllArgsConstructor; import org.apache.commons.collections4.CollectionUtils; @@ -20,8 +23,12 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Objects; /** * @author zhangzhao @@ -34,6 +41,7 @@ import java.util.List; @AllArgsConstructor public class TbZdxlFgdwServiceImpl extends ServiceImpl implements TbZdxlFgdwService { + private final TbBaseAdaptRemoteService tbBaseAdaptRemoteService; @Override public TbZdxlFgdwVO selectById(Long id) { if(ObjectUtils.isEmpty(id)){ @@ -125,6 +133,35 @@ public class TbZdxlFgdwServiceImpl extends ServiceImpl 0){ + //返回主键 + return entity.getId(); + } + return null; + } + /** * 组装查询参数 * @param qw QueryWrapper @@ -138,9 +175,9 @@ public class TbZdxlFgdwServiceImpl extends ServiceImpl getSquarePoints(double longitude, double latitude, double distance) { + Map squareMap = new HashMap<>(); + // 计算经度弧度,从弧度转换为角度 + double dLongitude = 2 * (Math.asin(Math.sin(distance / (2 * 6378137)) / Math.cos(Math.toRadians(latitude)))); + dLongitude = Math.toDegrees(dLongitude); + // 计算纬度角度 + double dLatitude = distance / 6378137; + dLatitude = Math.toDegrees(dLatitude); + // 正方形四个角点 + // 左上角 + double[] leftTopPoint = {latitude + dLatitude, longitude - dLongitude}; + + // 右下角 + double[] rightBottomPoint = {latitude - dLatitude, longitude + dLongitude}; + + BigDecimal x1 = BigDecimal.valueOf(leftTopPoint[1]); + BigDecimal y1 = BigDecimal.valueOf(leftTopPoint[0]); + BigDecimal x2 = BigDecimal.valueOf(rightBottomPoint[1]); + BigDecimal y2 = BigDecimal.valueOf(rightBottomPoint[0]); + + squareMap.put("x1", x1); + squareMap.put("y1", y1); + squareMap.put("x2", x2); + squareMap.put("y2", y2); + return squareMap; + } + } diff --git a/mosty-yjzl/src/main/java/com/mosty/yjzl/service/TbZdxlFgdwService.java b/mosty-yjzl/src/main/java/com/mosty/yjzl/service/TbZdxlFgdwService.java index 7500aa5..b8a79e7 100644 --- a/mosty-yjzl/src/main/java/com/mosty/yjzl/service/TbZdxlFgdwService.java +++ b/mosty-yjzl/src/main/java/com/mosty/yjzl/service/TbZdxlFgdwService.java @@ -1,11 +1,14 @@ package com.mosty.yjzl.service; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.mosty.base.model.dto.yjzl.TbZdxlFgdwSaveDTO; import com.mosty.base.model.dto.yjzl.TbZdxlFgdwUpdateDTO; import com.mosty.base.model.query.yjzl.TbZdxlFgdwQuery; import com.mosty.base.model.vo.yjzl.TbZdxlFgdwVO; +import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * @author zhangzhao @@ -57,4 +60,20 @@ public interface TbZdxlFgdwService { */ Long updateEntity(TbZdxlFgdwUpdateDTO dto); + /** + * 新增单条 + * @param dto 保存DTO对象 + * @return 实体主键ID + */ + Long saveEntity(TbZdxlFgdwSaveDTO dto); + + /** + * 根据经纬度获取正方形四个点位 + * @param longitude 经度 + * @param latitude 纬度 + * @param distance 范围(米),半径 + * @return 正方形四个角点坐标 + */ + Map getSquarePoints(double longitude, double latitude, double distance); + }