lin
2024-03-16 01cf8140ee6ea6a98ff12d5ef973b050fbf75bf1
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 org.apache.logging.log4j.util.Strings;
import org.springblade.common.cache.SysCache;
import org.springblade.common.constant.DictConstant;
import org.springblade.common.node.TreeStringNode;
import org.springblade.common.param.CommonParamSet;
@@ -63,6 +64,8 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@@ -142,7 +145,7 @@
               }
               if (roleName.equals("民警")) {
                  // 查询对应的社区编号
                  communityList = policeAffairsGridService.getCommunityCodeListByUserId(AuthUtil.getUserId());
                  communityList = SysCache.getPoliceRegionChildCodesByDeptId(AuthUtil.getDeptId());
               }
            }
            // 查询街道
@@ -536,8 +539,7 @@
         });
         // 排序
         sortUnit(tempList, list);
//         List<FuncNode> sortList = tempList.stream().sorted(Comparator.comparing(X -> X.getUnitName())).collect(Collectors.toList());
//         list.addAll(sortList);
      }
   }
@@ -564,13 +566,43 @@
            } else if (funcNode.getUnitName().contains("六")) {
               funcNode.setSort(6);
            } else {
               funcNode.setSort(1);
               if (!containsNumber(funcNode.getUnitName())) {
                  funcNode.setSort(1);
               }else {
                  funcNode.setSort(getNumber(funcNode.getUnitName()));
               }
            }
         }
         // 排序
         List<FuncNode> sortList = tempList.stream().sorted(Comparator.comparing(X -> X.getSort())).collect(Collectors.toList());
         list.addAll(sortList);
      }
   }
   /**
    * 判断是否包含数字
    * @param str
    * @return
    */
   public static boolean containsNumber(String str) {
      Pattern pattern = Pattern.compile(".*\\d+.*");
      Matcher matcher = pattern.matcher(str);
      return matcher.matches();
   }
   /**
    * 取出字符串中的数字
    * @param str
    * @return
    */
   public static int getNumber(String str){
      StringBuilder sb = new StringBuilder();
      for (char c : str.toCharArray()) {
         if (Character.isDigit(c)) {
            sb.append(c);
         }
      }
      return Integer.parseInt(sb.toString());
   }
   /**
@@ -712,9 +744,9 @@
    * @return
    */
   @Override
   public Object houseDataHandle() {
   public Object houseDataHandle(String townName) {
      // 处理房屋数据
      handleHouseData();
      handleHouseData(townName);
      return null;
   }
@@ -722,41 +754,52 @@
   /**
    * 处理房屋数据
    */
   private void handleHouseData() {
      // 查询所有户室数据(未入库的)
      List<DoorplateAddressEntity> list = baseMapper.getHouseList();
      // 需要新增的房屋 list
      List<HouseEntity> houseList = new ArrayList<>();
      // 处理户室数据
      for (DoorplateAddressEntity doorplateAddressEntity : list) {
         // 查询是否已存在,存在就插入,不存在则插入
         QueryWrapper<HouseEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("house_code", doorplateAddressEntity.getAddressCode())
            .eq("is_deleted", 0);
         HouseEntity one = houseService.getOne(wrapper);
         if (null == one) {
            HouseEntity houseEntity = new HouseEntity();
            houseEntity.setHouseCode(doorplateAddressEntity.getAddressCode());
            houseEntity.setDistrictCode(doorplateAddressEntity.getAoiCode());
            houseEntity.setDistrictName(doorplateAddressEntity.getAoiName());
            houseEntity.setHouseName(doorplateAddressEntity.getAddressName());
            houseEntity.setFloor(doorplateAddressEntity.getFloor());
            houseEntity.setBuilding(doorplateAddressEntity.getBuildingName());
            houseEntity.setUnit(doorplateAddressEntity.getUnitName());
            houseEntity.setRoom(doorplateAddressEntity.getHouseName());
            houseEntity.setBuildingNo(doorplateAddressEntity.getBuildingCode());
            houseEntity.setCreateUser(AuthUtil.getUserId().toString());
            houseEntity.setCreateTime(new Date());
            houseEntity.setUpdateUser(AuthUtil.getUserId().toString());
            houseEntity.setUpdateTime(new Date());
            // 设置来源 1:地址总表  2:国控采集
            houseEntity.setSource(1);
            // 加入集合
            houseList.add(houseEntity);
   private void handleHouseData(String townName) {
      // 查询总数
      Integer count = baseMapper.getNotHouseListCount(townName);
      if (count>0) {
         int num = count/1000;
         for (int i = 0; i <= num+1; i++) {
            // 查询所有户室数据(未入库的)
            List<DoorplateAddressEntity> list = baseMapper.getHouseList(townName);
            // 需要新增的房屋 list
            List<HouseEntity> houseList = new ArrayList<>();
            // 处理户室数据
            for (DoorplateAddressEntity doorplateAddressEntity : list) {
               // 查询是否已存在,存在就插入,不存在则插入
               QueryWrapper<HouseEntity> wrapper = new QueryWrapper<>();
               wrapper.eq("house_code", doorplateAddressEntity.getAddressCode())
                  .eq("is_deleted", 0);
               HouseEntity one = houseService.getOne(wrapper);
               if (null == one) {
                  HouseEntity houseEntity = new HouseEntity();
                  houseEntity.setHouseCode(doorplateAddressEntity.getAddressCode());
                  houseEntity.setDistrictCode(doorplateAddressEntity.getAoiCode());
                  houseEntity.setDistrictName(doorplateAddressEntity.getAoiName());
                  houseEntity.setLng(doorplateAddressEntity.getX());
                  houseEntity.setLat(doorplateAddressEntity.getY());
                  houseEntity.setHouseName(doorplateAddressEntity.getAddressName());
                  houseEntity.setAddress(doorplateAddressEntity.getAddressName());
                  houseEntity.setFloor(doorplateAddressEntity.getFloor());
                  houseEntity.setBuilding(doorplateAddressEntity.getBuildingName());
                  houseEntity.setUnit(doorplateAddressEntity.getUnitName());
                  houseEntity.setRoom(doorplateAddressEntity.getHouseName());
                  houseEntity.setBuildingNo(doorplateAddressEntity.getBuildingCode());
                  houseEntity.setCreateUser(AuthUtil.getUserId().toString());
                  houseEntity.setCreateTime(new Date());
                  houseEntity.setUpdateUser(AuthUtil.getUserId().toString());
                  houseEntity.setUpdateTime(new Date());
                  // 设置来源 1:地址总表  2:国控采集
                  houseEntity.setSource(1);
                  // 加入集合
                  houseList.add(houseEntity);
               }
            }
            // 批量插入
            houseService.saveBatch(houseList);
         }
      }
      // 批量插入
      houseService.saveBatch(houseList);
   }
   /**
@@ -790,6 +833,16 @@
            // 加入集合
            districtService.save(districtEntity);
//            aoiList.add(districtEntity);
         }else {
            // 更新
            one.setCommunityCode(addressEntity.getNeiCode());
            one.setAoiCode(addressEntity.getAoiCode());
            one.setName(addressEntity.getAoiName());
            one.setAddress(addressEntity.getAddressName());
            one.setLng(addressEntity.getX());
            one.setLat(addressEntity.getY());
            // 加入集合
            districtService.updateById(one);
         }
      }
      // 批量插入
@@ -827,6 +880,8 @@
               placeEntity.setStatus(1);
               // 默认为非九小场所
               placeEntity.setIsNine(2);
               // 默认为现场采集
               placeEntity.setIsScene(1);
               // 加入集合
//               placeList.add(placeEntity);
               // 保存
@@ -956,4 +1011,14 @@
         commonParamSet.getIsAdministrator()
         );
   }
   /**
    * 通过小区id 查询楼栋编码
    * @param districtId
    * @return
    */
   @Override
   public    List<DoorplateAddressVO>  getHouseBuildingCode(String districtId) {
      return baseMapper.getHouseBuildingCode(districtId);
   }
}