Commit ae7b2f91 authored by hanbing's avatar hanbing

[add] 路口管理,区域新增/修改

parent 813520c5
......@@ -14,18 +14,30 @@ import java.util.List;
@Data
@ApiModel(value = "AddOrUpdateAreaBO", description = "区域新增/修改")
public class AddOrUpdateAreaBO {
@ApiModelProperty(value = "区划类型:1行政区划;2交警辖区;3商圈;4交通小区;5热点区域;6道路")
private Integer type;
@ApiModelProperty(value = "父节点")
private Integer parentCode;
@ApiModelProperty(value = "子区ID")
@ApiModelProperty(value = "区域ID")
private Integer areaId;
@ApiModelProperty(value = "子区名称", required = true)
@Pattern(regexp = "^[\\u4E00-\\u9FA5\\w\\-]{0,20}$", message = "子区名称只能包含中文、英文、数字、下划线和中横线,0~20个字符")
@ApiModelProperty(value = "区域名称", required = true)
@Pattern(regexp = "^[\\u4E00-\\u9FA5\\w\\-]{0,20}$", message = "区域名称只能包含中文、英文、数字、下划线和中横线,0~20个字符")
private String areaName;
@Pattern(regexp = "^[\\u4E00-\\u9FA5\\w\\-]{0,200}$", message = "子区名称只能包含中文、英文、数字、下划线和中横线,0~200个字符")
@ApiModelProperty(value = "道路名称")
@Pattern(regexp = "^[\\u4E00-\\u9FA5\\w\\-]{0,20}$", message = "道路名称只能包含中文、英文、数字、下划线和中横线,0~20个字符")
private String roadName;
@ApiModelProperty(value = "备注", required = true)
@Pattern(regexp = "^[\\u4E00-\\u9FA5\\w\\-]{0,200}$", message = "备注只能包含中文、英文、数字、下划线和中横线,0~200个字符")
private String remark;
@ApiModelProperty(value = "路口ID数组", required = true)
private List<String> crossIdList;
@ApiModelProperty(value = "坐标")
private String wkt;
......
......@@ -6,7 +6,6 @@ import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
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;
......@@ -72,16 +71,4 @@ public class CrossManageController {
return JsonViewObject.newInstance().success();
}
@ApiOperation(value = "辖区新增/修改", notes = "辖区新增/修改,传ID为修改,不传ID为新增", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/addOrUpdateJurisdiction",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject addOrUpdateJurisdiction(@RequestBody AddOrUpdateJurisdictionBO addOrUpdateJurisdictionBO) {
crossManageService.addOrUpdateJurisdiction(addOrUpdateJurisdictionBO);
return JsonViewObject.newInstance().success();
}
}
\ No newline at end of file
......@@ -10,4 +10,6 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public interface TBaseAreaCrossMapper extends BaseMapper<TBaseAreaCross> {
void deleteByAreaId(Integer areaId);
void insertOne(String crossId, Integer areaId);
}
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;
......@@ -19,7 +18,5 @@ public interface CrossManageService {
void addOrUpdateArea(AddOrUpdateAreaBO addOrUpdateAreaBO);
void addOrUpdateJurisdiction(AddOrUpdateJurisdictionBO addOrUpdateJurisdictionBO);
SelectCrossesByStartEndVO selectCrossesByStartEnd(SpecialServiceRouteBO specialServiceRouteBO);
}
......@@ -9,9 +9,9 @@ import net.wanji.databus.dao.mapper.BaseCrossInfoMapper;
import net.wanji.databus.po.BaseAreaInfoPO;
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.mapper.TBaseAreaCrossMapper;
import net.wanji.web.service.CrossManageService;
import net.wanji.web.vo.CrossIdAndNameVO;
import net.wanji.web.vo.SelectCrossesByStartEndVO;
......@@ -33,11 +33,14 @@ public class CrossManageServiceImpl implements CrossManageService {
private final BaseCrossInfoMapper crossInfoMapper;
private final BaseAreaInfoMapper baseAreaInfoMapper;
private final SpecialServiceServiceImpl specialServiceService;
private final TBaseAreaCrossMapper areaCrossMapper;
public CrossManageServiceImpl(BaseCrossInfoMapper crossInfoMapper, BaseAreaInfoMapper baseAreaInfoMapper, SpecialServiceServiceImpl specialServiceService) {
public CrossManageServiceImpl(BaseCrossInfoMapper crossInfoMapper, BaseAreaInfoMapper baseAreaInfoMapper,
SpecialServiceServiceImpl specialServiceService, TBaseAreaCrossMapper areaCrossMapper) {
this.crossInfoMapper = crossInfoMapper;
this.baseAreaInfoMapper = baseAreaInfoMapper;
this.specialServiceService = specialServiceService;
this.areaCrossMapper = areaCrossMapper;
}
@Override
......@@ -68,70 +71,57 @@ public class CrossManageServiceImpl implements CrossManageService {
@Override
@Transactional
public void addOrUpdateArea(AddOrUpdateAreaBO addOrUpdateAreaBO) {
Integer type = addOrUpdateAreaBO.getType();
Integer areaId = addOrUpdateAreaBO.getAreaId();
Integer parentCode = addOrUpdateAreaBO.getParentCode();
String areaName = addOrUpdateAreaBO.getAreaName();
String roadName = addOrUpdateAreaBO.getRoadName();
String remark = addOrUpdateAreaBO.getRemark();
List<String> crossIdList = addOrUpdateAreaBO.getCrossIdList();
String wkt = addOrUpdateAreaBO.getWkt();
if (ObjectUtil.isNotEmpty(areaId)) {
if (ObjectUtil.isNotEmpty(areaId) && 0 != areaId) {
// 修改
// 修改子区名称和备注
baseAreaInfoMapper.updateAreaNameAndRemark(areaName, remark, areaId);
// 修改子区关联路口
List<String> oldIds = crossInfoMapper.selectIdsByAreaId(areaId);
crossInfoMapper.deleteAreaId(oldIds);
crossInfoMapper.updateAreaId(crossIdList, areaId);
// 修改区域基础信息
baseAreaInfoMapper.updateAreaNameAndRemark(areaName, remark, areaId, roadName, parentCode);
// 修改区域关联路口
areaCrossMapper.deleteByAreaId(areaId);
for (String crossId : crossIdList) {
areaCrossMapper.insertOne(crossId, areaId);
}
} else {
// 新增
// 新增子区
BaseAreaInfoPO baseAreaInfoPO = new BaseAreaInfoPO();
baseAreaInfoPO.setCode(0);
baseAreaInfoPO.setName(areaName);
baseAreaInfoPO.setType(5);
baseAreaInfoPO.setParentCode(0);
baseAreaInfoPO.setLocation("");
baseAreaInfoPO.setPolylines(wkt);
baseAreaInfoPO.setRemark(remark);
baseAreaInfoMapper.insertOne(baseAreaInfoPO);
Integer newAreaId = baseAreaInfoPO.getId();
// 关联子区路口
crossInfoMapper.updateAreaId(crossIdList, newAreaId);
if (2 == type) { // 交警辖区
BaseAreaInfoPO baseAreaInfoPO = new BaseAreaInfoPO();
baseAreaInfoPO.setParentCode(parentCode);
baseAreaInfoPO.setRoadName("");
handleAreaInfoPO(type, areaName, remark, crossIdList, wkt, baseAreaInfoPO);
} else if (6 == type) { // 道路
BaseAreaInfoPO baseAreaInfoPO = new BaseAreaInfoPO();
baseAreaInfoPO.setRoadName(roadName);
baseAreaInfoPO.setParentCode(0);
handleAreaInfoPO(type, areaName, remark, crossIdList, wkt, baseAreaInfoPO);
} else if (5 == type) { // 子区
BaseAreaInfoPO baseAreaInfoPO = new BaseAreaInfoPO();
baseAreaInfoPO.setRoadName("");
baseAreaInfoPO.setParentCode(0);
handleAreaInfoPO(type, areaName, remark, crossIdList, wkt, baseAreaInfoPO);
}
}
}
@Override
public void addOrUpdateJurisdiction(AddOrUpdateJurisdictionBO addOrUpdateJurisdictionBO) {
Integer parentId = addOrUpdateJurisdictionBO.getParentId();
Integer areaId = addOrUpdateJurisdictionBO.getAreaId();
String areaName = addOrUpdateJurisdictionBO.getAreaName();
String remark = addOrUpdateJurisdictionBO.getRemark();
List<String> crossIdList = addOrUpdateJurisdictionBO.getCrossIdList();
String wkt = addOrUpdateJurisdictionBO.getWkt();
if (ObjectUtil.isNotEmpty(areaId)) {
// 修改
// 修改辖区名称和备注
baseAreaInfoMapper.updateAreaNameAndRemark(areaName, remark, areaId);
// 修改辖区关联路口
List<String> oldIds = crossInfoMapper.selectIdsByAreaId(areaId);
crossInfoMapper.deleteAreaId(oldIds);
crossInfoMapper.updateAreaId(crossIdList, areaId);
} else {
// 新增
// 新增子区
BaseAreaInfoPO baseAreaInfoPO = new BaseAreaInfoPO();
baseAreaInfoPO.setCode(0);
baseAreaInfoPO.setName(areaName);
baseAreaInfoPO.setType(5);
baseAreaInfoPO.setParentCode(0);
baseAreaInfoPO.setLocation("");
baseAreaInfoPO.setPolylines(wkt);
baseAreaInfoPO.setRemark(remark);
baseAreaInfoMapper.insertOne(baseAreaInfoPO);
Integer newAreaId = baseAreaInfoPO.getId();
// 关联子区路口
crossInfoMapper.updateAreaId(crossIdList, newAreaId);
private void handleAreaInfoPO(Integer type, String areaName, String remark, List<String> crossIdList, String wkt,
BaseAreaInfoPO baseAreaInfoPO) {
baseAreaInfoPO.setCode(0);
baseAreaInfoPO.setLocation("");
baseAreaInfoPO.setName(areaName);
baseAreaInfoPO.setType(type);
baseAreaInfoPO.setPolylines(wkt);
baseAreaInfoPO.setRemark(remark);
baseAreaInfoMapper.insertOne(baseAreaInfoPO);
Integer areaIdGenerated = baseAreaInfoPO.getId();
for (String crossId : crossIdList) {
areaCrossMapper.insertOne(crossId, areaIdGenerated);
}
}
......
......@@ -8,4 +8,14 @@
<result column="gmt_create" property="gmtCreate" jdbcType="TIMESTAMP"/>
<result column="gmt_modified" property="gmtModified" jdbcType="TIMESTAMP"/>
</resultMap>
<insert id="insertOne">
insert into t_base_area_cross(area_id,cross_id)
values (#{areaId},#{crossId})
</insert>
<delete id="deleteByAreaId">
delete from t_base_area_cross
where area_id = #{areaId}
</delete>
</mapper>
\ No newline at end of file
......@@ -11,7 +11,7 @@ import org.springframework.stereotype.Repository;
@Repository
public interface BaseAreaInfoMapper {
void updateAreaNameAndRemark(String name, String remark, Integer id);
void updateAreaNameAndRemark(String name, String remark, Integer id, String roadName, Integer parentCode);
void insertOne(BaseAreaInfoPO baseAreaInfoPO);
}
......@@ -22,6 +22,9 @@ public class BaseAreaInfoPO {
/** 区域名称 */
@ApiModelProperty(value = "区域名称",notes = "")
private String name ;
@ApiModelProperty(value = "道路名称",notes = "")
private String roadName;
/** 区划类型:1行政区划;2交警辖区;3商圈;4交通小区;5热点区域;6道路 */
@ApiModelProperty(value = "区划类型:1行政区划;2交警辖区;3商圈;4交通小区;5热点区域;6道路",notes = "")
private Integer type ;
......
......@@ -3,12 +3,12 @@
<mapper namespace="net.wanji.databus.dao.mapper.BaseAreaInfoMapper">
<sql id="baseColumnList">
code,name,type,parent_code,location,polylines,remark
code,name,road_name,type,parent_code,location,polylines,remark
</sql>
<insert id="insertOne" keyProperty="id" useGeneratedKeys="true">
insert into t_base_area_info (<include refid="baseColumnList"/>)
values (#{code},#{name},#{type},#{parentCode},#{location},#{polylines},#{remark})
values (#{code},#{name},#{roadName},#{type},#{parentCode},#{location},#{polylines},#{remark})
</insert>
<update id="updateAreaNameAndRemark">
......@@ -20,6 +20,12 @@
<if test="remark != null and remark != ''">
remark = #{remark},
</if>
<if test="roadName != null and roadName != ''">
road_name = #{roadName},
</if>
<if test="parentCode != null and parentCode != 0">
parent_code = #{parentCode},
</if>
</set>
where id = #{id}
</update>
......
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