zhongrj
2023-11-21 76d431070dbe0647c0470632b1b70becb357debd
新增商超展示,逻辑调整
18 files modified
325 ■■■■ changed files
src/main/java/org/springblade/common/node/TreeNode.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.xml 49 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java 107 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/doorplateAddress/vo/FuncNode.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/grid/mapper/GridMapper.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml 12 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/grid/service/IGridService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/house/vo/HouseParam.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/controller/PlaceController.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/mapper/PlaceRelMapper.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/mapper/PlaceRelMapper.xml 16 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/service/IPlaceRelService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/service/IPlaceService.java 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/service/impl/PlaceRelServiceImpl.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java 41 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/vo/PlaceVO.java 4 ●●●● patch | view | raw | blame | history
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;
    /**
     * 采集人姓名