Commit 813520c5 authored by hanbing's avatar hanbing

[add] 路口管理,点选路口

parent 3423c326
......@@ -12,8 +12,10 @@ import java.util.List;
* @date 2023/6/9 13:52
*/
@Data
@ApiModel(value = "AddOrUpdateAreaBO", description = "子区新增/修改")
@ApiModel(value = "AddOrUpdateAreaBO", description = "区域新增/修改")
public class AddOrUpdateAreaBO {
@ApiModelProperty(value = "父节点")
private Integer parentCode;
@ApiModelProperty(value = "子区ID")
private Integer areaId;
@ApiModelProperty(value = "子区名称", required = true)
......
......@@ -8,8 +8,10 @@ import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.bo.AddOrUpdateAreaBO;
import net.wanji.web.bo.AddOrUpdateJurisdictionBO;
import net.wanji.web.bo.PolygonBO;
import net.wanji.web.bo.SpecialServiceRouteBO;
import net.wanji.web.service.impl.CrossManageServiceImpl;
import net.wanji.web.vo.CrossIdAndNameVO;
import net.wanji.web.vo.SelectCrossesByStartEndVO;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -46,7 +48,19 @@ public class CrossManageController {
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "子区新增/修改", notes = "子区新增/修改,传ID为修改,不传ID为新增", response = JsonViewObject.class,
@ApiOperation(value = "点选路口", notes = "点选路口", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/selectCrossesByStartEnd",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject selectCrossesByStartEnd(@RequestBody SpecialServiceRouteBO specialServiceRouteBO) {
SelectCrossesByStartEndVO res = crossManageService.selectCrossesByStartEnd(specialServiceRouteBO);
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "区域新增/修改", notes = "区域新增/修改,传ID为修改,不传ID为新增", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/addOrUpdateArea",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
......
......@@ -3,7 +3,9 @@ package net.wanji.web.service;
import net.wanji.web.bo.AddOrUpdateAreaBO;
import net.wanji.web.bo.AddOrUpdateJurisdictionBO;
import net.wanji.web.bo.PolygonBO;
import net.wanji.web.bo.SpecialServiceRouteBO;
import net.wanji.web.vo.CrossIdAndNameVO;
import net.wanji.web.vo.SelectCrossesByStartEndVO;
import java.util.List;
......@@ -18,4 +20,6 @@ public interface CrossManageService {
void addOrUpdateArea(AddOrUpdateAreaBO addOrUpdateAreaBO);
void addOrUpdateJurisdiction(AddOrUpdateJurisdictionBO addOrUpdateJurisdictionBO);
SelectCrossesByStartEndVO selectCrossesByStartEnd(SpecialServiceRouteBO specialServiceRouteBO);
}
......@@ -11,8 +11,11 @@ import net.wanji.databus.po.BaseCrossInfoPO;
import net.wanji.web.bo.AddOrUpdateAreaBO;
import net.wanji.web.bo.AddOrUpdateJurisdictionBO;
import net.wanji.web.bo.PolygonBO;
import net.wanji.web.bo.SpecialServiceRouteBO;
import net.wanji.web.service.CrossManageService;
import net.wanji.web.vo.CrossIdAndNameVO;
import net.wanji.web.vo.SelectCrossesByStartEndVO;
import net.wanji.web.vo.specialService.RouteElementVO;
import org.locationtech.jts.geom.Geometry;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -29,10 +32,12 @@ import java.util.List;
public class CrossManageServiceImpl implements CrossManageService {
private final BaseCrossInfoMapper crossInfoMapper;
private final BaseAreaInfoMapper baseAreaInfoMapper;
private final SpecialServiceServiceImpl specialServiceService;
public CrossManageServiceImpl(BaseCrossInfoMapper crossInfoMapper, BaseAreaInfoMapper baseAreaInfoMapper) {
public CrossManageServiceImpl(BaseCrossInfoMapper crossInfoMapper, BaseAreaInfoMapper baseAreaInfoMapper, SpecialServiceServiceImpl specialServiceService) {
this.crossInfoMapper = crossInfoMapper;
this.baseAreaInfoMapper = baseAreaInfoMapper;
this.specialServiceService = specialServiceService;
}
@Override
......@@ -129,4 +134,34 @@ public class CrossManageServiceImpl implements CrossManageService {
crossInfoMapper.updateAreaId(crossIdList, newAreaId);
}
}
@Override
public SelectCrossesByStartEndVO selectCrossesByStartEnd(SpecialServiceRouteBO specialServiceRouteBO) {
SelectCrossesByStartEndVO selectCrossesByStartEndVO = new SelectCrossesByStartEndVO();
StringBuilder wkt = new StringBuilder();
List<List<RouteElementVO>> twoRoutes = specialServiceService.specialServiceRoute(specialServiceRouteBO);;
List<RouteElementVO> route = twoRoutes.get(0); // 选最优路线
List<CrossIdAndNameVO> crossIdAndNameVOList = new ArrayList<>();
for (int i = 0; i < route.size(); i++) {
RouteElementVO routeElementVO = route.get(i);
String wktPart = routeElementVO.getWkt();
wkt.append(wktPart);
CrossIdAndNameVO crossIdAndNameVO = new CrossIdAndNameVO();
crossIdAndNameVO.setCrossId(routeElementVO.getStartId());
crossIdAndNameVO.setCrossName(routeElementVO.getStartName());
crossIdAndNameVOList.add(crossIdAndNameVO);
if (i == route.size() - 1) { // 最后一段
CrossIdAndNameVO crossIdAndNameVOEnd = new CrossIdAndNameVO();
crossIdAndNameVOEnd.setCrossId(routeElementVO.getEndId());
crossIdAndNameVOEnd.setCrossName(routeElementVO.getEndName());
crossIdAndNameVOList.add(crossIdAndNameVOEnd);
}
}
selectCrossesByStartEndVO.setWkt(wkt.toString());
selectCrossesByStartEndVO.setCrossIdAndNameVOList(crossIdAndNameVOList);
return selectCrossesByStartEndVO;
}
}
package net.wanji.web.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@Data
@ApiModel(value = "SelectCrossesByStartEndVO", description = "点选路口")
public class SelectCrossesByStartEndVO {
@ApiModelProperty(value = "坐标")
private String wkt;
@ApiModelProperty(value = "路口列表")
List<CrossIdAndNameVO> crossIdAndNameVOList;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment