zhongrj
2023-11-11 8baa11c985438eda934f364f3d8b591cda4eced3
网格数据绑定分析
12 files modified
209 ■■■■■ changed files
src/main/java/org/springblade/modules/doorplateAddress/entity/DoorplateAddressEntity.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/grid/controller/GridController.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/grid/entity/GridRangeEntity.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/grid/excel/GridExcel.java 80 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/grid/mapper/GridMapper.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/grid/service/IGridService.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java 55 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml 7 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/doorplateAddress/entity/DoorplateAddressEntity.java
@@ -17,6 +17,7 @@
package org.springblade.modules.doorplateAddress.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -77,6 +78,19 @@
     */
    @ApiModelProperty(value = "纬度")
    private String Y;
    /**
     * x84经度
     */
    @ApiModelProperty(value = "x84经度")
    @TableField("x_84")
    private String x84;
    /**
     * y84纬度
     */
    @ApiModelProperty(value = "y84纬度")
    @TableField("y_84")
    private String y84;
    /**
     * 行政区编码
     */
src/main/java/org/springblade/modules/doorplateAddress/mapper/DoorplateAddressMapper.java
@@ -138,4 +138,11 @@
     * @return
     */
    DoorplateAddressVO getDoorplateAddressList(@Param("vo") DoorplateAddressVO doorplateAddressVO);
    /**
     * 查询社区信息
     * @param name
     * @return
     */
    List<DoorplateAddressEntity> getAllDoorplateAddress(@Param("name") String name);
}
src/main/java/org/springblade/modules/doorplateAddress/service/IDoorplateAddressService.java
@@ -78,4 +78,11 @@
     * @return
     */
    Object getHouseType(String code);
    /**
     * 查询社区信息
     * @param name
     * @return
     */
    List<DoorplateAddressEntity> getAllDoorplateAddress(String name);
}
src/main/java/org/springblade/modules/doorplateAddress/service/impl/DoorplateAddressServiceImpl.java
@@ -462,4 +462,14 @@
        }
        return 0;
    }
    /**
     * 查询社区信息
     * @param name
     * @return
     */
    @Override
    public List<DoorplateAddressEntity> getAllDoorplateAddress(String name) {
        return baseMapper.getAllDoorplateAddress(name);
    }
}
src/main/java/org/springblade/modules/grid/controller/GridController.java
@@ -136,5 +136,13 @@
        return R.success("操作成功");
    }
    /**
     * 空间分析
     */
    @GetMapping("/spatialAnalysis")
    public R spatialAnalysis() {
        return R.data(gridService.spatialAnalysis());
    }
}
src/main/java/org/springblade/modules/grid/entity/GridRangeEntity.java
@@ -70,4 +70,10 @@
    @ApiModelProperty(value = "幢")
    private String building;
    /**
     * 门牌地址编码
     */
    @ApiModelProperty(value = "门牌地址编码")
    private String houseCode;
}
src/main/java/org/springblade/modules/grid/excel/GridExcel.java
@@ -1,33 +1,15 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.grid.excel;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * UserExcel
 * GridExcel
 *
 * @author Chill
 */
@@ -39,59 +21,11 @@
    private static final long serialVersionUID = 1L;
    @ColumnWidth(15)
    @ExcelProperty("租户编号")
    private String tenantId;
    @ExcelProperty("社区网格名称")
    private String gridName;
    @ExcelIgnore
    @ExcelProperty("用户平台")
    private String userType;
    @ColumnWidth(20)
    @ExcelProperty("用户平台名称")
    private String userTypeName;
    @ColumnWidth(15)
    @ExcelProperty("账户")
    private String account;
    @ColumnWidth(10)
    @ExcelProperty("昵称")
    private String name;
    @ColumnWidth(10)
    @ExcelProperty("姓名")
    private String realName;
    @ExcelProperty("邮箱")
    private String email;
    @ColumnWidth(15)
    @ExcelProperty("手机")
    private String phone;
    @ExcelIgnore
    @ExcelProperty("角色ID")
    private String roleId;
    @ExcelIgnore
    @ExcelProperty("部门ID")
    private String deptId;
    @ExcelIgnore
    @ExcelProperty("岗位ID")
    private String postId;
    @ExcelProperty("角色名称")
    private String roleName;
    @ExcelProperty("部门名称")
    private String deptName;
    @ExcelProperty("岗位名称")
    private String postName;
    @ColumnWidth(20)
    @ExcelProperty("生日")
    private Date birthday;
    @ColumnWidth(100)
    @ExcelProperty("区域")
    private String geom;
}
src/main/java/org/springblade/modules/grid/mapper/GridMapper.java
@@ -53,4 +53,9 @@
     * @return
     */
    List<String> getAddressCodeListByUserId(@Param("userId") Long userId);
    /**
     * 空间分析 mysql 5.7  点落面
     */
    GridEntity spatialAnalysis(@Param("point")String point);
}
src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
@@ -23,5 +23,10 @@
        and jg.user_id = #{userId}
    </select>
    <!--判断该小区点在哪个派出所-->
    <select id="spatialAnalysis" resultType="org.springblade.modules.grid.entity.GridEntity">
        SELECT * FROM jczz_grid WHERE ST_Intersects(geom, ST_GeomFromText(${point},0))
    </select>
</mapper>
src/main/java/org/springblade/modules/grid/service/IGridService.java
@@ -62,4 +62,9 @@
     * @return
     */
    List<String> getAddressCodeListByUserId(Long userId);
    /**
     * 空间分析
     */
    Object spatialAnalysis();
}
src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java
@@ -16,18 +16,25 @@
 */
package org.springblade.modules.grid.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity;
import org.springblade.modules.doorplateAddress.service.IDoorplateAddressService;
import org.springblade.modules.grid.entity.GridEntity;
import org.springblade.modules.grid.entity.GridRangeEntity;
import org.springblade.modules.grid.excel.GridExcel;
import org.springblade.modules.grid.service.IGridRangeService;
import org.springblade.modules.grid.vo.GridVO;
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.system.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
@@ -42,6 +49,12 @@
 */
@Service
public class GridServiceImpl extends ServiceImpl<GridMapper, GridEntity> implements IGridService {
    @Autowired
    private IDoorplateAddressService doorplateAddressService;
    @Autowired
    private IGridRangeService gridRangeService;
    @Override
    public IPage<GridVO> selectGridPage(IPage<GridVO> page, GridVO grid) {
@@ -58,7 +71,12 @@
        List<GridEntity> list = new ArrayList<>();
        // 遍历
        for (GridExcel gridExcel : data) {
            GridEntity gridEntity = Objects.requireNonNull(BeanUtil.copy(gridExcel, GridEntity.class));
            // 取出名称分隔
            String[] split = gridExcel.getGridName().split("居民委员会");
            GridEntity gridEntity = new GridEntity();
            gridEntity.setCommunityName(split[0] + "居民委员会");
            gridEntity.setGridName(split[1]);
            gridEntity.setGeom(gridExcel.getGeom());
            gridEntity.setCreateUser(AuthUtil.getUserId());
            gridEntity.setCreateTime(new Date());
            gridEntity.setUpdateUser(AuthUtil.getUserId());
@@ -88,4 +106,39 @@
    public List<String> getAddressCodeListByUserId(Long userId) {
        return baseMapper.getAddressCodeListByUserId(userId);
    }
    /**
     * 空间分析 mysql 5.7
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Object spatialAnalysis() {
        // 按社区
//        String name = "万达社区居民委员会";
        String name = "茶山路社区居民委员会";
        //查询社区信息
        List<DoorplateAddressEntity> doorplateAddressEntities = doorplateAddressService.getAllDoorplateAddress(name);
        //遍历
        for (DoorplateAddressEntity doorplateAddressEntity : doorplateAddressEntities) {
            //点坐标解析
            String point = "'POINT(" + doorplateAddressEntity.getX84() + " " + doorplateAddressEntity.getY84() +")'";
//            String point = "'POINT(" + villageInfoExcel.getLatitude() + " " + villageInfoExcel.getLongitude() +")'";
            GridEntity gridEntity = baseMapper.spatialAnalysis(point);
            if (null!=gridEntity){
                QueryWrapper<GridRangeEntity> queryWrapper = new QueryWrapper<>();
                queryWrapper.eq("grid_id",gridEntity.getId()).eq("house_code",doorplateAddressEntity.getAddressCode());
                GridRangeEntity one = gridRangeService.getOne(queryWrapper);
                if (null==one) {
                    GridRangeEntity gridRangeEntity = new GridRangeEntity();
                    gridRangeEntity.setGridId(gridEntity.getId());
                    gridRangeEntity.setHouseCode(doorplateAddressEntity.getAddressCode());
                    gridRangeEntity.setDistrictCode(doorplateAddressEntity.getAoiCode());
                    gridRangeEntity.setDistrictName(doorplateAddressEntity.getAoiName());
                    // 保存
                    gridRangeService.save(gridRangeEntity);
                }
            }
        }
        return null;
    }
}
src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml
@@ -13,8 +13,13 @@
    <!--自定义分页查询-->
    <select id="selectPlacePage" resultType="org.springblade.modules.place.vo.PlaceVO">
        select jp.*,bu.real_name as username,bu.phone as phone from jczz_place jp
        select
        jp.*,
        bu.real_name as username,bu.phone as phone,
        bx.real_name as createUserName
         from jczz_place jp
        left join blade_user bu on bu.id = jp.principal_user_id and bu.is_deleted = 0
        left join blade_user bx on bx.id = jp.create_user and bx.is_deleted = 0
        left join (
            select a.* from jczz_place_poi_label a inner join
            (