Commit 36acb4ce authored by hanbing's avatar hanbing

[add] 路口管理,区域列表修改返回树结构

parent 6aeb1a5b
...@@ -66,11 +66,11 @@ public class CrossManageController { ...@@ -66,11 +66,11 @@ public class CrossManageController {
@PostMapping(value = "/addOrUpdateArea", @PostMapping(value = "/addOrUpdateArea",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class), @ApiResponse(code = 200, message = "OK", response = AreaIdBO.class),
}) })
public JsonViewObject addOrUpdateArea(@RequestBody AddOrUpdateAreaBO addOrUpdateAreaBO) { public JsonViewObject addOrUpdateArea(@RequestBody AddOrUpdateAreaBO addOrUpdateAreaBO) {
crossManageService.addOrUpdateArea(addOrUpdateAreaBO); AreaIdBO res = crossManageService.addOrUpdateArea(addOrUpdateAreaBO);
return JsonViewObject.newInstance().success(); return JsonViewObject.newInstance().success(res);
} }
@ApiOperation(value = "删除区域", notes = "删除区域", response = JsonViewObject.class, @ApiOperation(value = "删除区域", notes = "删除区域", response = JsonViewObject.class,
......
...@@ -16,4 +16,6 @@ public interface TBaseAreaCrossMapper extends BaseMapper<TBaseAreaCross> { ...@@ -16,4 +16,6 @@ public interface TBaseAreaCrossMapper extends BaseMapper<TBaseAreaCross> {
void insertOne(String crossId, Integer areaId); void insertOne(String crossId, Integer areaId);
void deleteByAreaIds(List<Integer> ids); void deleteByAreaIds(List<Integer> ids);
List<String> selectCrossIdsByAreaId(Integer subAreaId);
} }
...@@ -18,7 +18,7 @@ public interface CrossManageService { ...@@ -18,7 +18,7 @@ public interface CrossManageService {
List<CrossIdAndNameVO> selectCrossesByPolygon(PolygonBO polygonBO); List<CrossIdAndNameVO> selectCrossesByPolygon(PolygonBO polygonBO);
void addOrUpdateArea(AddOrUpdateAreaBO addOrUpdateAreaBO); AreaIdBO addOrUpdateArea(AddOrUpdateAreaBO addOrUpdateAreaBO);
SelectCrossesByStartEndVO selectCrossesByStartEnd(SpecialServiceRouteBO specialServiceRouteBO); SelectCrossesByStartEndVO selectCrossesByStartEnd(SpecialServiceRouteBO specialServiceRouteBO);
......
package net.wanji.web.service.impl; package net.wanji.web.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.gts.GeometryUtil; import net.wanji.common.gts.GeometryUtil;
...@@ -14,6 +15,7 @@ import net.wanji.web.bo.PolygonBO; ...@@ -14,6 +15,7 @@ import net.wanji.web.bo.PolygonBO;
import net.wanji.web.bo.SpecialServiceRouteBO; import net.wanji.web.bo.SpecialServiceRouteBO;
import net.wanji.web.mapper.TBaseAreaCrossMapper; import net.wanji.web.mapper.TBaseAreaCrossMapper;
import net.wanji.web.service.CrossManageService; import net.wanji.web.service.CrossManageService;
import net.wanji.web.vo.AreaTreeVO;
import net.wanji.web.vo.CrossIdAndNameVO; import net.wanji.web.vo.CrossIdAndNameVO;
import net.wanji.web.vo.ListAreaVO; import net.wanji.web.vo.ListAreaVO;
import net.wanji.web.vo.SelectCrossesByStartEndVO; import net.wanji.web.vo.SelectCrossesByStartEndVO;
...@@ -72,7 +74,7 @@ public class CrossManageServiceImpl implements CrossManageService { ...@@ -72,7 +74,7 @@ public class CrossManageServiceImpl implements CrossManageService {
@Override @Override
@Transactional @Transactional
public void addOrUpdateArea(AddOrUpdateAreaBO addOrUpdateAreaBO) { public AreaIdBO addOrUpdateArea(AddOrUpdateAreaBO addOrUpdateAreaBO) {
Integer type = addOrUpdateAreaBO.getType(); Integer type = addOrUpdateAreaBO.getType();
Integer areaId = addOrUpdateAreaBO.getAreaId(); Integer areaId = addOrUpdateAreaBO.getAreaId();
Integer parentCode = addOrUpdateAreaBO.getParentCode(); Integer parentCode = addOrUpdateAreaBO.getParentCode();
...@@ -91,6 +93,9 @@ public class CrossManageServiceImpl implements CrossManageService { ...@@ -91,6 +93,9 @@ public class CrossManageServiceImpl implements CrossManageService {
for (String crossId : crossIdList) { for (String crossId : crossIdList) {
areaCrossMapper.insertOne(crossId, areaId); areaCrossMapper.insertOne(crossId, areaId);
} }
AreaIdBO areaIdBO = new AreaIdBO();
areaIdBO.setAreaId(areaId);
return areaIdBO;
} else { } else {
// 新增 // 新增
if (2 == type) { // 交警辖区 if (2 == type) { // 交警辖区
...@@ -101,22 +106,26 @@ public class CrossManageServiceImpl implements CrossManageService { ...@@ -101,22 +106,26 @@ public class CrossManageServiceImpl implements CrossManageService {
baseAreaInfoPO.setParentCode(0); baseAreaInfoPO.setParentCode(0);
} }
baseAreaInfoPO.setRoadName(""); baseAreaInfoPO.setRoadName("");
handleAreaInfoPO(type, areaName, remark, crossIdList, wkt, baseAreaInfoPO); AreaIdBO areaIdBO = handleAreaInfoPO(type, areaName, remark, crossIdList, wkt, baseAreaInfoPO);
return areaIdBO;
} else if (6 == type) { // 道路 } else if (6 == type) { // 道路
BaseAreaInfoPO baseAreaInfoPO = new BaseAreaInfoPO(); BaseAreaInfoPO baseAreaInfoPO = new BaseAreaInfoPO();
baseAreaInfoPO.setRoadName(roadName); baseAreaInfoPO.setRoadName(roadName);
baseAreaInfoPO.setParentCode(0); baseAreaInfoPO.setParentCode(0);
handleAreaInfoPO(type, areaName, remark, crossIdList, wkt, baseAreaInfoPO); AreaIdBO areaIdBO = handleAreaInfoPO(type, areaName, remark, crossIdList, wkt, baseAreaInfoPO);
return areaIdBO;
} else if (4 == type) { // 子区 } else if (4 == type) { // 子区
BaseAreaInfoPO baseAreaInfoPO = new BaseAreaInfoPO(); BaseAreaInfoPO baseAreaInfoPO = new BaseAreaInfoPO();
baseAreaInfoPO.setRoadName(""); baseAreaInfoPO.setRoadName("");
baseAreaInfoPO.setParentCode(0); baseAreaInfoPO.setParentCode(0);
handleAreaInfoPO(type, areaName, remark, crossIdList, wkt, baseAreaInfoPO); AreaIdBO areaIdBO = handleAreaInfoPO(type, areaName, remark, crossIdList, wkt, baseAreaInfoPO);
return areaIdBO;
} }
} }
return null;
} }
private void handleAreaInfoPO(Integer type, String areaName, String remark, List<String> crossIdList, String wkt, private AreaIdBO handleAreaInfoPO(Integer type, String areaName, String remark, List<String> crossIdList, String wkt,
BaseAreaInfoPO baseAreaInfoPO) { BaseAreaInfoPO baseAreaInfoPO) {
baseAreaInfoPO.setCode(0); baseAreaInfoPO.setCode(0);
baseAreaInfoPO.setLocation(""); baseAreaInfoPO.setLocation("");
...@@ -129,6 +138,9 @@ public class CrossManageServiceImpl implements CrossManageService { ...@@ -129,6 +138,9 @@ public class CrossManageServiceImpl implements CrossManageService {
for (String crossId : crossIdList) { for (String crossId : crossIdList) {
areaCrossMapper.insertOne(crossId, areaIdGenerated); areaCrossMapper.insertOne(crossId, areaIdGenerated);
} }
AreaIdBO areaIdBO = new AreaIdBO();
areaIdBO.setAreaId(areaIdGenerated);
return areaIdBO;
} }
@Override @Override
...@@ -176,69 +188,108 @@ public class CrossManageServiceImpl implements CrossManageService { ...@@ -176,69 +188,108 @@ public class CrossManageServiceImpl implements CrossManageService {
@Override @Override
public ListAreaVO listArea() { public ListAreaVO listArea() {
ListAreaVO listAreaVO = new ListAreaVO(); ListAreaVO listAreaVO = new ListAreaVO();
ListAreaVO.CityPoliceVO cityPoliceVO = new ListAreaVO.CityPoliceVO();
BaseAreaInfoPO areaInfoPO = baseAreaInfoMapper.selectCityPolice(); listAreaVO.setJuriList(buildJuriList());
cityPoliceVO.setAreaId(areaInfoPO.getId());
cityPoliceVO.setAreaName(areaInfoPO.getName());
cityPoliceVO.setParentPoliceList(buildParentPoliceList());
listAreaVO.setCityPoliceVO(cityPoliceVO);
listAreaVO.setRoadList(buildRoadList()); listAreaVO.setRoadList(buildRoadList());
listAreaVO.setSubAreaList(buildSubAreaList()); listAreaVO.setSubAreaList(buildSubAreaList());
return listAreaVO; return listAreaVO;
} }
private List<ListAreaVO.AreaIdAndNameVO> buildSubAreaList() { private List<AreaTreeVO> buildJuriList() {
List<ListAreaVO.AreaIdAndNameVO> res = new ArrayList<>(); List<AreaTreeVO> res = new ArrayList<>();
BaseAreaInfoPO areaInfoPO = baseAreaInfoMapper.selectCityPolice();
AreaTreeVO areaTreeVO = new AreaTreeVO();
areaTreeVO.setId(areaInfoPO.getId().toString());
areaTreeVO.setName(areaInfoPO.getName());
areaTreeVO.setType("1");
areaTreeVO.setPolylines("");
areaTreeVO.setPoint("");
areaTreeVO.setChildren(buildParentPoliceList());
res.add(areaTreeVO);
return res;
}
private List<AreaTreeVO> buildSubAreaList() {
List<AreaTreeVO> res = new ArrayList<>();
Integer type = 4; Integer type = 4;
return handleAreaIdAndNameVOList(res, type); return handleAreaTreeVOList(res, type);
} }
private List<ListAreaVO.AreaIdAndNameVO> buildRoadList() { private List<AreaTreeVO> buildRoadList() {
List<ListAreaVO.AreaIdAndNameVO> res = new ArrayList<>(); List<AreaTreeVO> res = new ArrayList<>();
Integer type = 6; Integer type = 6;
return handleAreaIdAndNameVOList(res, type); return handleAreaTreeVOList(res, type);
} }
private List<ListAreaVO.AreaIdAndNameVO> handleAreaIdAndNameVOList(List<ListAreaVO.AreaIdAndNameVO> res, Integer type) { private List<AreaTreeVO> handleAreaTreeVOList(List<AreaTreeVO> res, Integer type) {
List<BaseAreaInfoPO> areaInfoPOList = baseAreaInfoMapper.selectByType(type); List<BaseAreaInfoPO> areaInfoPOList = baseAreaInfoMapper.selectByType(type);
return getAreaTreeVOList(res, areaInfoPOList);
}
private List<AreaTreeVO> getAreaTreeVOList(List<AreaTreeVO> res, List<BaseAreaInfoPO> areaInfoPOList) {
for (BaseAreaInfoPO baseAreaInfoPO : areaInfoPOList) { for (BaseAreaInfoPO baseAreaInfoPO : areaInfoPOList) {
ListAreaVO.AreaIdAndNameVO areaIdAndNameVO = new ListAreaVO.AreaIdAndNameVO(); AreaTreeVO areaTreeVO = new AreaTreeVO();
areaIdAndNameVO.setAreaId(baseAreaInfoPO.getId()); Integer areaId = baseAreaInfoPO.getId();
areaIdAndNameVO.setAreaName(baseAreaInfoPO.getName()); areaTreeVO.setId(areaId.toString());
res.add(areaIdAndNameVO); areaTreeVO.setName(baseAreaInfoPO.getName());
areaTreeVO.setType("1");
areaTreeVO.setPolylines(baseAreaInfoPO.getPolylines());
areaTreeVO.setPoint("");
areaTreeVO.setChildren(buildCrossList(areaId));
res.add(areaTreeVO);
} }
return res; return res;
} }
private List<ListAreaVO.ParentAreaVO> buildParentPoliceList() { private List<AreaTreeVO> buildParentPoliceList() {
List<ListAreaVO.ParentAreaVO> res = new ArrayList<>(); List<AreaTreeVO> res = new ArrayList<>();
Integer type = 2; Integer areaType = 2;
List<BaseAreaInfoPO> areaInfoPOList = baseAreaInfoMapper.selectParentPolice(type); List<BaseAreaInfoPO> areaInfoPOList = baseAreaInfoMapper.selectParentPolice(areaType);
for (BaseAreaInfoPO baseAreaInfoPO : areaInfoPOList) { for (BaseAreaInfoPO baseAreaInfoPO : areaInfoPOList) {
ListAreaVO.ParentAreaVO parentAreaVO = new ListAreaVO.ParentAreaVO(); AreaTreeVO areaTreeVO = new AreaTreeVO();
Integer areaId = baseAreaInfoPO.getId(); Integer areaId = baseAreaInfoPO.getId();
parentAreaVO.setAreaId(areaId); areaTreeVO.setId(areaId.toString());
parentAreaVO.setAreaName(baseAreaInfoPO.getName()); areaTreeVO.setName(baseAreaInfoPO.getName());
parentAreaVO.setSubAreaList(buildSubPoliceList(areaId)); areaTreeVO.setType("1");
res.add(parentAreaVO); areaTreeVO.setPolylines(baseAreaInfoPO.getPolylines());
areaTreeVO.setPoint("");
areaTreeVO.setChildren(buildSubPoliceList(areaId));
res.add(areaTreeVO);
} }
return res; return res;
} }
private List<ListAreaVO.AreaIdAndNameVO> buildSubPoliceList(Integer areaId) { private List<AreaTreeVO> buildSubPoliceList(Integer areaId) {
List<ListAreaVO.AreaIdAndNameVO> res = new ArrayList<>(); List<AreaTreeVO> res = new ArrayList<>();
List<BaseAreaInfoPO> baseAreaInfoPOList = baseAreaInfoMapper.selectByParentCode(areaId); List<BaseAreaInfoPO> baseAreaInfoPOList = baseAreaInfoMapper.selectByParentCode(areaId);
for (BaseAreaInfoPO baseAreaInfoPO : baseAreaInfoPOList) { return getAreaTreeVOList(res, baseAreaInfoPOList);
ListAreaVO.AreaIdAndNameVO areaIdAndNameVO = new ListAreaVO.AreaIdAndNameVO(); }
areaIdAndNameVO.setAreaId(baseAreaInfoPO.getId());
areaIdAndNameVO.setAreaName(baseAreaInfoPO.getName()); private List<AreaTreeVO> buildCrossList(Integer subAreaId) {
res.add(areaIdAndNameVO); List<AreaTreeVO> res = new ArrayList<>();
List<String> crossIds = areaCrossMapper.selectCrossIdsByAreaId(subAreaId);
if (CollectionUtil.isNotEmpty(crossIds)) {
List<BaseCrossInfoPO> baseCrossInfoPOList = crossInfoMapper.selectByCrossIds(crossIds);
for (BaseCrossInfoPO baseCrossInfoPO : baseCrossInfoPOList) {
AreaTreeVO areaTreeVO = new AreaTreeVO();
areaTreeVO.setId(baseCrossInfoPO.getId());
areaTreeVO.setName(baseCrossInfoPO.getName());
areaTreeVO.setType("2");
areaTreeVO.setPolylines("");
String location = baseCrossInfoPO.getLocation();
double[] lonLat = CrossUtil.getLonLat(location);
areaTreeVO.setPoint(lonLat[0] + "," + lonLat[1]);
areaTreeVO.setChildren(new ArrayList<>());
res.add(areaTreeVO);
}
} }
return res; return res;
......
package net.wanji.web.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value = "区域实体")
public class AreaTreeVO {
@ApiModelProperty(value = "编号")
private String Id;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "类型:1-区域;2-路口")
private String type;
@ApiModelProperty(value = "区域边界")
private String polylines;
@ApiModelProperty(value = "路口经纬度")
private String point;
@ApiModelProperty(value = "子辖区")
private List<AreaTreeVO> children;
}
\ No newline at end of file
...@@ -11,41 +11,10 @@ import java.util.List; ...@@ -11,41 +11,10 @@ import java.util.List;
@Data @Data
@ApiModel(value = "ListAreaVO", description = "区域列表") @ApiModel(value = "ListAreaVO", description = "区域列表")
public class ListAreaVO { public class ListAreaVO {
@ApiModelProperty(value = "交警支队") @ApiModelProperty(value = "辖区列表")
private CityPoliceVO cityPoliceVO; private List<AreaTreeVO> juriList;
@ApiModelProperty(value = "道路列表") @ApiModelProperty(value = "道路列表")
private List<AreaIdAndNameVO> roadList; private List<AreaTreeVO> roadList;
@ApiModelProperty(value = "子区列表") @ApiModelProperty(value = "子区列表")
private List<AreaIdAndNameVO> subAreaList; private List<AreaTreeVO> subAreaList;
@NoArgsConstructor
@Data
public static class CityPoliceVO {
@ApiModelProperty(value = "交警支队ID")
private Integer areaId;
@ApiModelProperty(value = "交警支队名称")
private String areaName;
@ApiModelProperty(value = "交警大队列表")
private List<ParentAreaVO> parentPoliceList;
}
@NoArgsConstructor
@Data
public static class ParentAreaVO {
@ApiModelProperty(value = "交警大队ID")
private Integer areaId;
@ApiModelProperty(value = "交警大队名称")
private String areaName;
@ApiModelProperty(value = "交警中队列表")
private List<AreaIdAndNameVO> subAreaList;
}
@NoArgsConstructor
@Data
public static class AreaIdAndNameVO {
@ApiModelProperty(value = "区域ID")
private Integer areaId;
@ApiModelProperty(value = "区域名称")
private String areaName;
}
} }
...@@ -26,4 +26,10 @@ ...@@ -26,4 +26,10 @@
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<select id="selectCrossIdsByAreaId" resultType="java.lang.String">
select cross_id
from t_base_area_cross
where area_id = #{subAreaId}
</select>
</mapper> </mapper>
\ No newline at end of file
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