运营区列表-距离排序按
This commit is contained in:
parent
04b9deccee
commit
f19bed2541
@ -9,6 +9,7 @@ import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto;
|
|||||||
import com.cdzy.operations.model.dto.EbikeOrderBikeListDto;
|
import com.cdzy.operations.model.dto.EbikeOrderBikeListDto;
|
||||||
import com.cdzy.operations.model.dto.EbikeBikeOrderPageDto;
|
import com.cdzy.operations.model.dto.EbikeBikeOrderPageDto;
|
||||||
import com.cdzy.operations.model.dto.EbikeOrderBikeInfoDto;
|
import com.cdzy.operations.model.dto.EbikeOrderBikeInfoDto;
|
||||||
|
import com.cdzy.operations.model.entity.EbikeRegion;
|
||||||
import com.cdzy.operations.model.vo.*;
|
import com.cdzy.operations.model.vo.*;
|
||||||
import com.cdzy.operations.service.EbikeBikeOrderService;
|
import com.cdzy.operations.service.EbikeBikeOrderService;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
@ -232,6 +233,17 @@ public class EbikeBikeOrderController {
|
|||||||
// return JsonResult.success();
|
// return JsonResult.success();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运营区列表列表(工单用)
|
||||||
|
*
|
||||||
|
* @return 操作结果
|
||||||
|
*/
|
||||||
|
@PostMapping("regionList")
|
||||||
|
public JsonResult<List<EbikeRegion>> regionList(@RequestBody OrderRegionVo orderRegionVo){
|
||||||
|
List<EbikeRegion> list = ebikeBikeOrderService.regionList(orderRegionVo);
|
||||||
|
return JsonResult.success(list);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车辆列表(工单用)
|
* 车辆列表(工单用)
|
||||||
*
|
*
|
||||||
|
|||||||
@ -2,6 +2,9 @@ package com.cdzy.operations.mapper;
|
|||||||
|
|
||||||
import com.mybatisflex.core.BaseMapper;
|
import com.mybatisflex.core.BaseMapper;
|
||||||
import com.cdzy.operations.model.entity.EbikeRegion;
|
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<EbikeRegion> {
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
boolean checkBikeInRegion(String bikeCode);
|
boolean checkBikeInRegion(String bikeCode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询运营区列表,按照距离排序
|
||||||
|
* @param point 用户当前位置
|
||||||
|
* @return 列表
|
||||||
|
*/
|
||||||
|
List<EbikeRegion> findAllRegionsOrderByDistance(PGpoint point);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@ -4,6 +4,7 @@ import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto;
|
|||||||
import com.cdzy.operations.model.dto.EbikeOrderBikeListDto;
|
import com.cdzy.operations.model.dto.EbikeOrderBikeListDto;
|
||||||
import com.cdzy.operations.model.dto.EbikeOrderBikeInfoDto;
|
import com.cdzy.operations.model.dto.EbikeOrderBikeInfoDto;
|
||||||
import com.cdzy.operations.model.entity.EbikeBikeOrder;
|
import com.cdzy.operations.model.entity.EbikeBikeOrder;
|
||||||
|
import com.cdzy.operations.model.entity.EbikeRegion;
|
||||||
import com.cdzy.operations.model.vo.*;
|
import com.cdzy.operations.model.vo.*;
|
||||||
import com.mybatisflex.core.service.IService;
|
import com.mybatisflex.core.service.IService;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -115,4 +116,10 @@ public interface EbikeBikeOrderService extends IService<EbikeBikeOrder> {
|
|||||||
* @param inspectionVo 巡检信息
|
* @param inspectionVo 巡检信息
|
||||||
*/
|
*/
|
||||||
void doInspection(DoneInspectionVo inspectionVo);
|
void doInspection(DoneInspectionVo inspectionVo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取运营区列表(距离排序
|
||||||
|
* @return 列表
|
||||||
|
*/
|
||||||
|
List<EbikeRegion> regionList(OrderRegionVo orderRegionVo);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,8 +7,8 @@ import com.cdzy.common.model.dto.ResGPSDto;
|
|||||||
import com.cdzy.operations.enums.*;
|
import com.cdzy.operations.enums.*;
|
||||||
import com.cdzy.operations.mapper.*;
|
import com.cdzy.operations.mapper.*;
|
||||||
import com.cdzy.operations.model.dto.EbikeBikeOrderInfoDto;
|
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.EbikeOrderBikeInfoDto;
|
||||||
|
import com.cdzy.operations.model.dto.EbikeOrderBikeListDto;
|
||||||
import com.cdzy.operations.model.entity.*;
|
import com.cdzy.operations.model.entity.*;
|
||||||
import com.cdzy.operations.model.vo.*;
|
import com.cdzy.operations.model.vo.*;
|
||||||
import com.cdzy.operations.service.EbikeBikeOrderService;
|
import com.cdzy.operations.service.EbikeBikeOrderService;
|
||||||
@ -25,6 +25,7 @@ import com.mybatisflex.core.update.UpdateChain;
|
|||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.postgresql.geometric.PGpoint;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@ -75,6 +76,9 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
|
|||||||
@Resource
|
@Resource
|
||||||
EbikeOrderFileMapper orderFileMapper;
|
EbikeOrderFileMapper orderFileMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
EbikeRegionMapper regionMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
RedisUtil redisUtil;
|
RedisUtil redisUtil;
|
||||||
|
|
||||||
@ -504,6 +508,16 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl<EbikeBikeOrderMapper,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<EbikeRegion> regionList(OrderRegionVo orderRegionVo) {
|
||||||
|
PGpoint point = orderRegionVo.getPoint();
|
||||||
|
if (point != null) {
|
||||||
|
return regionMapper.findAllRegionsOrderByDistance(point);
|
||||||
|
}else {
|
||||||
|
return regionMapper.selectAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
EbikeBikeInfo checkBikeCode(String bikeCode) {
|
EbikeBikeInfo checkBikeCode(String bikeCode) {
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||||
.where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode))
|
.where(EBIKE_BIKE_INFO.BIKE_CODE.eq(bikeCode))
|
||||||
|
|||||||
@ -18,5 +18,23 @@
|
|||||||
b.bike_code = #{bikeCode}
|
b.bike_code = #{bikeCode}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="findAllRegionsOrderByDistance" resultType="com.cdzy.operations.model.entity.EbikeRegion">
|
||||||
|
SELECT
|
||||||
|
ebike_region.*,
|
||||||
|
ST_Distance(
|
||||||
|
region_polygon::geography,
|
||||||
|
ST_SetSRID(ST_MakePoint(#{lng}, #{lat}), 4326)::geography
|
||||||
|
) AS distance_meters,
|
||||||
|
ST_Contains(
|
||||||
|
region_polygon,
|
||||||
|
ST_SetSRID(ST_MakePoint(#{lng}, #{lat}), 4326)
|
||||||
|
) AS is_within_region
|
||||||
|
FROM ebike_region
|
||||||
|
WHERE is_deleted IS NOT TRUE
|
||||||
|
ORDER BY
|
||||||
|
is_within_region DESC,
|
||||||
|
distance_meters
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
x
Reference in New Issue
Block a user