diff --git a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeOrderController.java b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeOrderController.java index 25c8903..723c73c 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeOrderController.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeOrderController.java @@ -9,6 +9,7 @@ import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto; import com.cdzy.operations.model.dto.EbikeOrderBikeListDto; import com.cdzy.operations.model.dto.EbikeBikeOrderPageDto; import com.cdzy.operations.model.dto.EbikeOrderBikeInfoDto; +import com.cdzy.operations.model.entity.EbikeRegion; import com.cdzy.operations.model.vo.*; import com.cdzy.operations.service.EbikeBikeOrderService; import com.mybatisflex.core.paginate.Page; @@ -232,6 +233,17 @@ public class EbikeBikeOrderController { // return JsonResult.success(); // } + /** + * 运营区列表列表(工单用) + * + * @return 操作结果 + */ + @PostMapping("regionList") + public JsonResult> regionList(@RequestBody OrderRegionVo orderRegionVo){ + List list = ebikeBikeOrderService.regionList(orderRegionVo); + return JsonResult.success(list); + } + /** * 车辆列表(工单用) * diff --git a/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeRegionMapper.java b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeRegionMapper.java index 3966873..4ad69f1 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeRegionMapper.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeRegionMapper.java @@ -2,6 +2,9 @@ package com.cdzy.operations.mapper; import com.mybatisflex.core.BaseMapper; import com.cdzy.operations.model.entity.EbikeRegion; +import org.postgresql.geometric.PGpoint; + +import java.util.List; /** * 运营区域表 映射层。 @@ -17,4 +20,11 @@ public interface EbikeRegionMapper extends BaseMapper { * @return 结果 */ boolean checkBikeInRegion(String bikeCode); + + /** + * 查询运营区列表,按照距离排序 + * @param point 用户当前位置 + * @return 列表 + */ + List findAllRegionsOrderByDistance(PGpoint point); } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/vo/OrderRegionVo.java b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/OrderRegionVo.java new file mode 100644 index 0000000..c6fdabf --- /dev/null +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/OrderRegionVo.java @@ -0,0 +1,30 @@ +package com.cdzy.operations.model.vo; + +import com.cdzy.operations.handler.PGpointDeserializer; +import com.cdzy.operations.handler.PGpointSerializer; +import com.cdzy.operations.handler.PGpointTypeHandler; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.mybatisflex.annotation.Column; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.postgresql.geometric.PGpoint; + +/** + * @author attiya + * @since 2025-11-26 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrderRegionVo { + + @Column(typeHandler = PGpointTypeHandler.class) + @JsonSerialize(using = PGpointSerializer.class) + @JsonDeserialize(using = PGpointDeserializer.class) + private PGpoint point; + +} diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeOrderService.java b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeOrderService.java index e8bae30..69d520a 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeOrderService.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeBikeOrderService.java @@ -4,6 +4,7 @@ import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto; import com.cdzy.operations.model.dto.EbikeOrderBikeListDto; import com.cdzy.operations.model.dto.EbikeOrderBikeInfoDto; import com.cdzy.operations.model.entity.EbikeBikeOrder; +import com.cdzy.operations.model.entity.EbikeRegion; import com.cdzy.operations.model.vo.*; import com.mybatisflex.core.service.IService; import org.springframework.web.multipart.MultipartFile; @@ -115,4 +116,10 @@ public interface EbikeBikeOrderService extends IService { * @param inspectionVo 巡检信息 */ void doInspection(DoneInspectionVo inspectionVo); + + /** + * 获取运营区列表(距离排序 + * @return 列表 + */ + List regionList(OrderRegionVo orderRegionVo); } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java index b656e53..0d74fc0 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java @@ -7,8 +7,8 @@ import com.cdzy.common.model.dto.ResGPSDto; import com.cdzy.operations.enums.*; import com.cdzy.operations.mapper.*; import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto; -import com.cdzy.operations.model.dto.EbikeOrderBikeListDto; import com.cdzy.operations.model.dto.EbikeOrderBikeInfoDto; +import com.cdzy.operations.model.dto.EbikeOrderBikeListDto; import com.cdzy.operations.model.entity.*; import com.cdzy.operations.model.vo.*; import com.cdzy.operations.service.EbikeBikeOrderService; @@ -25,6 +25,7 @@ import com.mybatisflex.core.update.UpdateChain; import com.mybatisflex.spring.service.impl.ServiceImpl; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.postgresql.geometric.PGpoint; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -75,6 +76,9 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl regionList(OrderRegionVo orderRegionVo) { + PGpoint point = orderRegionVo.getPoint(); + if (point != null) { + return regionMapper.findAllRegionsOrderByDistance(point); + }else { + return regionMapper.selectAll(); + } + } + EbikeBikeInfo checkBikeCode(String bikeCode) { QueryWrapper queryWrapper = QueryWrapper.create() .where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode)) diff --git a/ebike-operations/src/main/resources/mapper/EbikeRegionMapper.xml b/ebike-operations/src/main/resources/mapper/EbikeRegionMapper.xml index 7f47508..4ab0bb8 100644 --- a/ebike-operations/src/main/resources/mapper/EbikeRegionMapper.xml +++ b/ebike-operations/src/main/resources/mapper/EbikeRegionMapper.xml @@ -18,5 +18,23 @@ b.bike_code = #{bikeCode} + + \ No newline at end of file