/* * 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.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; import java.util.List; import java.util.Objects; /** * 网格表 服务实现类 * * @author BladeX * @since 2023-10-28 */ @Service public class GridServiceImpl extends ServiceImpl implements IGridService { @Autowired private IDoorplateAddressService doorplateAddressService; @Autowired private IGridRangeService gridRangeService; @Override public IPage selectGridPage(IPage page, GridVO grid) { return page.setRecords(baseMapper.selectGridPage(page, grid)); } /** * 网格数导入 * @param data * @param isCovered */ @Override public void importGrid(List data, Boolean isCovered) { List list = new ArrayList<>(); // 遍历 for (GridExcel gridExcel : data) { // 取出名称分隔 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()); gridEntity.setUpdateTime(new Date()); list.add(gridEntity); } // 批量导入 saveBatch(list); } /** * 根据地址编号查询网格数据 * @param houseCode * @return */ @Override public GridVO getGridDetailByHouseCode(String houseCode) { return baseMapper.getGridDetailByHouseCode(houseCode); } /** * 根据用户id(网格员)查询对应的房屋地址code * @param userId * @return */ @Override public List getAddressCodeListByUserId(Long userId) { return baseMapper.getAddressCodeListByUserId(userId); } /** * 空间分析 mysql 5.7 */ @Override @Transactional(rollbackFor = Exception.class) public Object spatialAnalysis() { // 按社区 // String name = "万达社区居民委员会"; String name = "茶山路社区居民委员会"; //查询社区信息 List 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 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; } }