src/main/java/org/springblade/common/node/TreeNode.java
@@ -50,7 +50,7 @@ /** * 地址类型 1:小区 2:非小区 3:街路巷 * 地址类型 1:小区 2:非小区 3:街路巷 4:商超 */ private Integer addressType; src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java
@@ -164,4 +164,18 @@ * @return */ List<DoorplateAddressEntity> getHouseList(); /** * 查询商超 * @param houseParam * @return */ List<TreeNode> getPlaceRelList(@Param("houseParam") HouseParam houseParam); /** * 查询商超详情集合 * @param houseParam * @return */ List<FuncNode> getPlaceRelDetailList(@Param("houseParam") HouseParam houseParam); } src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml
@@ -98,6 +98,19 @@ <include refid="filterHouseGrid"/> group by nei_code ) union all ( select '商超' as id,'商超' as name,4 as addressType from jczz_place_rel jpl join jczz_place jp on jpl.place_id = jp.id and jp.is_deleted = 0 where jpl.is_deleted = 0 <if test="houseParam.communityName!=null and houseParam.communityName!=''"> and community_name like concat('%',#{houseParam.communityName},'%') </if> <if test="houseParam.gridName!=null and houseParam.gridName!=''"> and grid_name like concat('%',#{houseParam.gridName},'%') </if> limit 1 ) </select> <!--根据小区名称查询楼栋/商铺集合--> @@ -215,7 +228,8 @@ <!--根据街路巷编号查询街路巷门牌名称集合--> <select id="getDoorplateNameList" resultType="org.springblade.modules.doorplateAddress.vo.FuncNode"> select address_code as addressCode, IFNULL(CONCAT(doorplate_num,sub_door_plate_no), IF(doorplate_num IS NULL, sub_door_plate_no, doorplate_num)) as floor IFNULL(CONCAT(doorplate_num,sub_door_plate_no), IF(doorplate_num IS NULL, sub_door_plate_no, doorplate_num)) as floor, 3 as addressType from jczz_doorplate_address where 1=1 and street_ru_code = #{houseParam.code} @@ -325,4 +339,37 @@ ) </select> <!--查询商超--> <select id="getPlaceRelList" resultType="org.springblade.common.node.TreeNode"> select building_name as id,building_name as name,4 as addressType from jczz_place_rel jpl join jczz_place jp on jpl.place_id = jp.id and jp.is_deleted = 0 where jpl.is_deleted = 0 <if test="houseParam.communityName!=null and houseParam.communityName!=''"> and community_name like concat('%',#{houseParam.communityName},'%') </if> <if test="houseParam.gridName!=null and houseParam.gridName!=''"> and grid_name like concat('%',#{houseParam.gridName},'%') </if> group by building_name </select> <!--查询商超详情集合--> <select id="getPlaceRelDetailList" resultType="org.springblade.modules.doorplateAddress.vo.FuncNode"> select jp.id as addressCode, doorplate_num as floor, 4 as addressType from jczz_place_rel jpl join jczz_place jp on jpl.place_id = jp.id and jp.is_deleted = 0 where jpl.is_deleted = 0 <if test="houseParam.communityName!=null and houseParam.communityName!=''"> and community_name like concat('%',#{houseParam.communityName},'%') </if> <if test="houseParam.gridName!=null and houseParam.gridName!=''"> and grid_name like concat('%',#{houseParam.gridName},'%') </if> <if test="houseParam.buildingName!=null and houseParam.buildingName!=''"> and building_name = #{houseParam.buildingName} </if> </select> </mapper> src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java
@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import liquibase.repackaged.org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.util.Strings; import org.springblade.common.constant.DictConstant; import org.springblade.common.node.TreeNode; import org.springblade.common.utils.NodeTreeUtil; @@ -31,6 +32,7 @@ import org.springblade.modules.doorplateAddress.vo.DoorplateAddressVO; import org.springblade.modules.doorplateAddress.vo.DoorplateAddressVOTree; import org.springblade.modules.doorplateAddress.vo.FuncNode; import org.springblade.modules.grid.entity.GridEntity; import org.springblade.modules.grid.service.IGridService; import org.springblade.modules.house.entity.HouseEntity; import org.springblade.modules.house.service.IHouseRentalService; @@ -190,7 +192,10 @@ public Object getHousesList(HouseParam houseParam) { List<TreeNode> list = new ArrayList<>(); Map<String, Object> map = new HashMap<>(2); // 获取网格员对应的地址编号集合 List<String> stringList = getHouseCodeList(houseParam); // 获取网格员对应的网格信息 getGridInfoByGridman(houseParam); // 查小区,场所 if (houseParam.getType()==1){ // 根据社区名称查询小区集合 @@ -205,6 +210,28 @@ return getHouseLevelData(houseParam, map); } return list; } /** * 获取网格员对应的网格信息 * @param houseParam */ private void getGridInfoByGridman(HouseParam houseParam) { if (houseParam.getRoleName().equals("网格员")) { QueryWrapper<GridEntity> wrapper = new QueryWrapper<>(); wrapper.eq("is_deleted", 0) .eq("user_id", AuthUtil.getUserId()); List<GridEntity> list = gridService.list(wrapper); if (list.size() > 0) { GridEntity gridEntity = list.get(0); if (!Strings.isBlank(gridEntity.getCommunityName())) { houseParam.setCommunityName(gridEntity.getCommunityName().split("居民委员会")[0]); } if (!Strings.isBlank(gridEntity.getGridName())) { houseParam.setGridName(gridEntity.getGridName()); } } } } /** @@ -236,7 +263,8 @@ map.put("shopList",shopList); // 返回 return map; }else{ } if(houseParam.getAddressType()==3){ // 根据街路巷编号查询街路巷门牌名称集合 List<FuncNode> doorplateNameList = baseMapper.getDoorplateNameList(houseParam,stringList); map.put("aoiList",new ArrayList<>()); @@ -244,6 +272,16 @@ // 返回 return map; } if(houseParam.getAddressType()==4){ getGridInfoByGridman(houseParam); // 查询商超 List<FuncNode> doorplateNameList = baseMapper.getPlaceRelDetailList(houseParam); map.put("aoiList",new ArrayList<>()); map.put("shopList",doorplateNameList); // 返回 return map; } return map; } /** @@ -253,37 +291,48 @@ * @return */ private Object getBuildLevelData(HouseParam houseParam,Map<String, Object> map) { List<String> stringList = getHouseCodeList(houseParam); // 判断 code 长度,如果 code 长度大于 12 则为小区查楼栋/商铺,否则则按社区查街路巷 if (houseParam.getCode().length()>12){ List<TreeNode> aoiList = new ArrayList<>(); List<TreeNode> shopList = new ArrayList<>(); // 根据社区名称查询楼栋或者商铺的集合 List<TreeNode> list = baseMapper.getBuildingList(houseParam,stringList); // 排序 StringUtils.getDigits(X.getName()) 取出数字排序 List<TreeNode> sortList = list.stream().sorted(Comparator.comparing(X -> StringUtils.getDigits(X.getName()))).collect(Collectors.toList()); if (list.size()>0){ for (TreeNode treeNode : sortList) { if (treeNode.getAddressType()==1){ aoiList.add(treeNode); } if (treeNode.getAddressType()==2){ shopList.add(treeNode); } } } map.put("aoiList",aoiList); map.put("shopList",shopList); if (houseParam.getAddressType()==4){ // 获取网格员对应的网格信息 getGridInfoByGridman(houseParam); // 查询商超 List<TreeNode> list = baseMapper.getPlaceRelList(houseParam); map.put("aoiList", new ArrayList<>()); map.put("shopList", list); // 返回 return map; }else { // 查询街路巷 List<TreeNode> list = baseMapper.getStreetRuList(houseParam,stringList); map.put("aoiList",new ArrayList<>()); map.put("shopList",list); // 返回 return map; List<String> stringList = getHouseCodeList(houseParam); // 判断 code 长度,如果 code 长度大于 12 则为小区查楼栋/商铺,否则则按社区查街路巷 if (houseParam.getCode().length() > 12) { List<TreeNode> aoiList = new ArrayList<>(); List<TreeNode> shopList = new ArrayList<>(); // 根据社区名称查询楼栋或者商铺的集合 List<TreeNode> list = baseMapper.getBuildingList(houseParam, stringList); // 排序 StringUtils.getDigits(X.getName()) 取出数字排序 List<TreeNode> sortList = list.stream().sorted(Comparator.comparing(X -> StringUtils.getDigits(X.getName()))).collect(Collectors.toList()); if (list.size() > 0) { for (TreeNode treeNode : sortList) { if (treeNode.getAddressType() == 1) { aoiList.add(treeNode); } if (treeNode.getAddressType() == 2) { shopList.add(treeNode); } } } map.put("aoiList", aoiList); map.put("shopList", shopList); // 返回 return map; } else { // 查询街路巷 List<TreeNode> list = baseMapper.getStreetRuList(houseParam, stringList); map.put("aoiList", new ArrayList<>()); map.put("shopList", list); // 返回 return map; } } } src/main/java/org/springblade/modules/doorplateAddress/vo/FuncNode.java
@@ -49,7 +49,7 @@ private String residentialStatus; /** * 地址类型 1:小区 2:非小区 * 地址类型 1:小区 2:非小区 3:商超 */ private Integer addressType; src/main/java/org/springblade/modules/grid/mapper/GridMapper.java
@@ -21,6 +21,8 @@ import org.springblade.modules.grid.vo.GridVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.modules.place.vo.PlaceVO; import java.util.List; /** @@ -58,4 +60,11 @@ * 空间分析 mysql 5.7 点落面 */ GridEntity spatialAnalysis(@Param("point")String point); /** * 根据参数查询网格数据 * @param place * @return */ GridVO getGridDetailByParam(@Param("place") PlaceVO place); } src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
@@ -31,5 +31,17 @@ SELECT * FROM jczz_grid WHERE ST_Intersects(geom, ST_GeomFromText(${point},0)) </select> <!--根据地址编号查询网格数据--> <select id="getGridDetailByParam" resultType="org.springblade.modules.grid.vo.GridVO"> select jg.id,jg.grid_name,jg.community_name, bu.real_name as realName,bu.phone as gridPhone from jczz_grid jg left join jczz_grid_range jgr on jg.id = jgr.grid_id left join jczz_place_rel jpr on locate(jpr.community_name,jg.community_name)>0 and locate(jpr.grid_name,jg.grid_name)>0 and jpr.is_deleted = 0 left join blade_user bu on bu.id = jg.user_id and bu.is_deleted = 0 where jg.is_deleted = 0 and jpr.place_id = #{place.id} limit 1 </select> </mapper> src/main/java/org/springblade/modules/grid/service/IGridService.java
@@ -22,6 +22,7 @@ import org.springblade.modules.grid.vo.GridVO; import org.springblade.core.mp.base.BaseService; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.modules.place.vo.PlaceVO; import java.util.List; @@ -67,4 +68,11 @@ * 空间分析 */ Object spatialAnalysis(); /** * 根据参数查询网格数据 * @param place * @return */ GridVO getGridDetailByParam(PlaceVO place); } src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java
@@ -30,6 +30,7 @@ import org.springblade.modules.grid.mapper.GridMapper; import org.springblade.modules.grid.service.IGridService; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.modules.place.vo.PlaceVO; import org.springblade.modules.system.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -141,4 +142,14 @@ } return null; } /** * 根据参数查询网格数据 * @param place * @return */ @Override public GridVO getGridDetailByParam(PlaceVO place) { return baseMapper.getGridDetailByParam(place); } } src/main/java/org/springblade/modules/house/vo/HouseParam.java
@@ -31,4 +31,19 @@ * 角色名称 */ private String roleName; /** * 网格名称 */ private String gridName; /** * 社区名称 */ private String communityName; /** * 商超写字楼名称 */ private String buildingName; } src/main/java/org/springblade/modules/place/controller/PlaceController.java
@@ -162,7 +162,7 @@ * @return */ @GetMapping("/getDetail") public R<PlaceVO> getDetail(PlaceEntity place) { public R<PlaceVO> getDetail(PlaceVO place) { return R.data(placeService.getDetail(place)); } src/main/java/org/springblade/modules/place/mapper/PlaceRelMapper.java
@@ -16,10 +16,14 @@ */ package org.springblade.modules.place.mapper; import org.apache.ibatis.annotations.Param; import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity; import org.springblade.modules.place.entity.PlaceRelEntity; import org.springblade.modules.place.vo.PlaceRelVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.modules.place.vo.PlaceVO; import java.util.List; /** @@ -39,5 +43,10 @@ */ List<PlaceRelVO> selectPlaceRelPage(IPage page, PlaceRelVO placeRel); /** * 查询地址编码信息(社区派出所相关信息) * @param place * @return */ DoorplateAddressEntity getDoorplateAddressEntity(@Param("place") PlaceVO place); } src/main/java/org/springblade/modules/place/mapper/PlaceRelMapper.xml
@@ -25,5 +25,21 @@ select * from jczz_place_rel where is_deleted = 0 </select> <!--查询地址编码信息(社区派出所相关信息)--> <select id="getDoorplateAddressEntity" resultType="org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity"> select street_name as townStreetName, community_name as neiName, jda.branch_name, jda.local_police_station_name, jda.policeman, jda.policeman_phone from jczz_place_rel jpr left join jczz_doorplate_address jda on locate(jpr.community_name,jda.nei_name)>0 where is_deleted = 0 and place_id = #{place.id} limit 1 </select> </mapper> src/main/java/org/springblade/modules/place/service/IPlaceRelService.java
@@ -17,9 +17,11 @@ package org.springblade.modules.place.service; import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity; import org.springblade.modules.place.entity.PlaceRelEntity; import org.springblade.modules.place.vo.PlaceRelVO; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.modules.place.vo.PlaceVO; /** * 场所区域关联信息表(商超) 服务类 @@ -39,4 +41,10 @@ IPage<PlaceRelVO> selectPlaceRelPage(IPage<PlaceRelVO> page, PlaceRelVO placeRel); /** * 查询地址编码信息(社区派出所相关信息) * @param place * @return */ DoorplateAddressEntity getDoorplateAddressEntity(PlaceVO place); } src/main/java/org/springblade/modules/place/service/IPlaceService.java
@@ -77,7 +77,7 @@ * @param place * @return */ PlaceVO getDetail(PlaceEntity place); PlaceVO getDetail(PlaceVO place); /** * 场所数据到导入 src/main/java/org/springblade/modules/place/service/impl/PlaceRelServiceImpl.java
@@ -17,11 +17,13 @@ package org.springblade.modules.place.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity; import org.springblade.modules.place.entity.PlaceRelEntity; import org.springblade.modules.place.vo.PlaceRelVO; import org.springblade.modules.place.mapper.PlaceRelMapper; import org.springblade.modules.place.service.IPlaceRelService; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.modules.place.vo.PlaceVO; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -39,5 +41,13 @@ return page.setRecords(baseMapper.selectPlaceRelPage(page, placeRel)); } /** * 查询地址编码信息(社区派出所相关信息) * @param place * @return */ @Override public DoorplateAddressEntity getDoorplateAddressEntity(PlaceVO place) { return baseMapper.getDoorplateAddressEntity(place); } } src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
@@ -255,25 +255,36 @@ * @return */ @Override public PlaceVO getDetail(PlaceEntity place) { public PlaceVO getDetail(PlaceVO place) { // 查询场所信息 PlaceVO placeVO = baseMapper.getDetail(place); if (null!= placeVO) { if (null != placeVO.getHouseCode() && !placeVO.getHouseCode().equals("")){ place.setHouseCode(placeVO.getHouseCode()); if (null!= place.getAddressType() && place.getAddressType()==4){ if (null != placeVO) { // 查询地址编码信息(社区派出所相关信息) DoorplateAddressEntity addressEntity = placeRelService.getDoorplateAddressEntity(placeVO); placeVO.setDoorplateAddressEntity(addressEntity); // 查询网格信息 placeVO.setGrid(gridService.getGridDetailByParam(placeVO)); } // 查询门牌地址信息 if (null != place.getHouseCode() && !place.getHouseCode().equals("")) { QueryWrapper<DoorplateAddressEntity> wrapper = new QueryWrapper<>(); wrapper.eq("address_code", place.getHouseCode()); List<DoorplateAddressEntity> list = doorplateAddressService.list(wrapper); if (list.size() > 0) { placeVO.setDoorplateAddressEntity(list.get(0)); }else { if (null != placeVO) { if (null != placeVO.getHouseCode() && !placeVO.getHouseCode().equals("")) { place.setHouseCode(placeVO.getHouseCode()); } // 查询网格数据 placeVO.setGrid(gridService.getGridDetailByHouseCode(place.getHouseCode())); }else { // 通过定位点落面分析网格位置,反向推出社区派出所相关数据 // 查询门牌地址信息 if (null != place.getHouseCode() && !place.getHouseCode().equals("")) { QueryWrapper<DoorplateAddressEntity> wrapper = new QueryWrapper<>(); wrapper.eq("address_code", place.getHouseCode()); List<DoorplateAddressEntity> list = doorplateAddressService.list(wrapper); if (list.size() > 0) { placeVO.setDoorplateAddressEntity(list.get(0)); } // 查询网格数据 placeVO.setGrid(gridService.getGridDetailByHouseCode(place.getHouseCode())); } else { // 通过定位点落面分析网格位置,反向推出社区派出所相关数据 } } } // 返回 src/main/java/org/springblade/modules/place/vo/PlaceVO.java
@@ -50,6 +50,10 @@ * 角色名称 */ private String roleName; /** * 类型 2:非小区(能关联地址表) 3:商超 */ private Integer addressType; /** * 采集人姓名