格式化区划数据

This commit is contained in:
liuchengqian 2023-06-02 17:57:23 +08:00
parent 3912ec2bd1
commit 02c5e71c79
4 changed files with 409 additions and 31 deletions

View File

@ -1,14 +1,18 @@
package com.xkrs.controller; package com.xkrs.controller;
import com.xkrs.common.encapsulation.PromptMessageEnum; import com.xkrs.common.encapsulation.PromptMessageEnum;
import com.xkrs.dao.DistrictDao;
import com.xkrs.dao.FirePointOrdinaryDao; import com.xkrs.dao.FirePointOrdinaryDao;
import com.xkrs.dao.StreetDao; import com.xkrs.dao.StreetDao;
import com.xkrs.dao.SysUserDao; import com.xkrs.dao.SysUserDao;
import com.xkrs.fireseason.FireSeasonConfigService; import com.xkrs.fireseason.FireSeasonConfigService;
import com.xkrs.model.bean.AddressBean;
import com.xkrs.model.entity.DistrictEntity;
import com.xkrs.model.qo.AllFirePointQo; import com.xkrs.model.qo.AllFirePointQo;
import com.xkrs.model.qo.UpdateFirePointQo; import com.xkrs.model.qo.UpdateFirePointQo;
import com.xkrs.service.DispatchFirePointService; import com.xkrs.service.DispatchFirePointService;
import com.xkrs.service.impl.FirePointServiceImpl; import com.xkrs.service.impl.FirePointServiceImpl;
import com.xkrs.utilsnew.FirePointAddressUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;
@ -18,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import static com.xkrs.common.encapsulation.OutputEncapsulation.outputEncapsulationObject; import static com.xkrs.common.encapsulation.OutputEncapsulation.outputEncapsulationObject;
@ -36,44 +41,129 @@ public class DispatchFirePointController {
private FirePointOrdinaryDao firePointOrdinaryDao; private FirePointOrdinaryDao firePointOrdinaryDao;
@Resource @Resource
private StreetDao streetDao; private StreetDao streetDao;
@Resource
private DistrictDao districtDao;
private final Locale locale = LocaleContextHolder.getLocale(); private final Locale locale = LocaleContextHolder.getLocale();
@GetMapping("/debug") @GetMapping("/debug")
public String debug() { public String debug() throws Exception {
int count = 0;
// System.out.println("开始更新用户VIP时间范围"); List<DistrictEntity> districtList = districtDao.findAll();
// for (DistrictEntity districtItem : districtList) {
// List<SysUserEntity> sysUserEntityList = sysUserDao.findAll(); try {
// for (SysUserEntity sysUserEntity : sysUserEntityList) { String[] split = districtItem.getCenter().split(",");
// String addTime = sysUserEntity.getAddTime(); double longitude = Double.parseDouble(split[0]);
// String vipTimeRangeJson = sysUserEntity.getVipTimeRangeJson(); double latitude = Double.parseDouble(split[1]);
// if (!DateTimeUtil.isValidDateTime(addTime)) { AddressBean addressBean = FirePointAddressUtils.analysisWithNetwork(longitude, latitude);
// return sysUserEntity.getUserName(); if (!addressBean.isSuccess()) {
// } continue;
// if (!DateTimeUtil.isValidDateTime(vipTimeRangeJson)) {
// return sysUserEntity.getUserName();
// }
// VipTimeRangeBean.VipTimeRangeItemBean vipTimeRangeItemBean = new VipTimeRangeBean.VipTimeRangeItemBean();
// vipTimeRangeItemBean.setStartTime(addTime);
// vipTimeRangeItemBean.setEndTime(vipTimeRangeJson);
// List<VipTimeRangeBean.VipTimeRangeItemBean> list = new ArrayList<>();
// list.add(vipTimeRangeItemBean);
// VipTimeRangeBean vipTimeRangeBean = new VipTimeRangeBean();
// vipTimeRangeBean.setList(list);
// String serialize = JsonUtils.<VipTimeRangeBean>serialize(vipTimeRangeBean);
// System.out.println("serialize = " + serialize);
// sysUserEntity.setVipTimeRangeJson(serialize);
// sysUserDao.save(sysUserEntity);
// }
// for (int i = 0; i < 10000; i++) {
// firePointOrdinaryDao.updateProCityCode(i * 310L, (i + 1) * 310L);
// firePointOrdinaryDao.updateProCityName(i * 310L, (i + 1) * 310L);
// System.out.println(i + "/" + 10000);
// }
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "OKKKK", locale);
} }
if (!addressBean.getTownCode().startsWith(districtItem.getStreetCode())) {
continue;
}
districtDao.updateStreetCode(districtItem.getId(), addressBean.getTownCode());
count++;
} catch (Exception e) {
e.printStackTrace();
}
}
// int count = 0;
// String result = HttpClientUtils.sendHttpsGet("https://restapi.amap.com/v3/config/district?key=89d34909932a58c094da0ea390058a12&subdistrict=4");
// DistrictBean districtBean = JSONUtil.toBean(result, DistrictBean.class);
// List<DistrictBean.DistrictsDTO> list111 = districtBean.getDistricts().get(0).getDistricts();
// list111.sort(Comparator.comparing(DistrictBean.DistrictsDTO::getAdcode));
// for (DistrictBean.DistrictsDTO proItem : list111) {
// if (proItem != null && proItem.getDistricts() != null && proItem.getDistricts().size() > 0) {
// List<DistrictBean.DistrictsDTO> list222 = proItem.getDistricts();
// list222.sort(Comparator.comparing(DistrictBean.DistrictsDTO::getAdcode));
// for (DistrictBean.DistrictsDTO cityItem : list222) {
// if (cityItem != null && cityItem.getDistricts() != null && cityItem.getDistricts().size() > 0) {
// List<DistrictBean.DistrictsDTO> list333 = cityItem.getDistricts();
// list333.sort(Comparator.comparing(DistrictBean.DistrictsDTO::getAdcode));
// for (DistrictBean.DistrictsDTO countyItem : list333) {
// if (countyItem != null && countyItem.getDistricts() != null && countyItem.getDistricts().size() > 0) {
// List<DistrictBean.DistrictsDTO> list444 = countyItem.getDistricts();
// list444.sort(Comparator.comparing(DistrictBean.DistrictsDTO::getAdcode));
// for (DistrictBean.DistrictsDTO streetItem : list444) {
// DistrictEntity districtEntity = new DistrictEntity();
// districtEntity.setProName(proItem.getName());
// districtEntity.setProCode(proItem.getAdcode());
// districtEntity.setCityName(cityItem.getName());
// districtEntity.setCityCode(cityItem.getAdcode());
// districtEntity.setCountyName(countyItem.getName());
// districtEntity.setCountyCode(countyItem.getAdcode());
// districtEntity.setStreetName(streetItem.getName());
// districtEntity.setStreetCode(streetItem.getAdcode());
// districtEntity.setCenter(streetItem.getCenter());
// districtEntity.setLevel(streetItem.getLevel());
// districtDao.saveAndFlush(districtEntity);
// count++;
// if (count % 100 == 0) {
// System.out.println("已完成" + count + "条记录");
// }
// }
// }
// }
// }
// }
// }
// }
//
//
//// System.out.println("开始更新用户VIP时间范围");
////
//// List<SysUserEntity> sysUserEntityList = sysUserDao.findAll();
//// for (SysUserEntity sysUserEntity : sysUserEntityList) {
//// String addTime = sysUserEntity.getAddTime();
//// String vipTimeRangeJson = sysUserEntity.getVipTimeRangeJson();
//// if (!DateTimeUtil.isValidDateTime(addTime)) {
//// return sysUserEntity.getUserName();
//// }
//// if (!DateTimeUtil.isValidDateTime(vipTimeRangeJson)) {
//// return sysUserEntity.getUserName();
//// }
//// VipTimeRangeBean.VipTimeRangeItemBean vipTimeRangeItemBean = new VipTimeRangeBean.VipTimeRangeItemBean();
//// vipTimeRangeItemBean.setStartTime(addTime);
//// vipTimeRangeItemBean.setEndTime(vipTimeRangeJson);
//// List<VipTimeRangeBean.VipTimeRangeItemBean> list = new ArrayList<>();
//// list.add(vipTimeRangeItemBean);
//// VipTimeRangeBean vipTimeRangeBean = new VipTimeRangeBean();
//// vipTimeRangeBean.setList(list);
//// String serialize = JsonUtils.<VipTimeRangeBean>serialize(vipTimeRangeBean);
//// System.out.println("serialize = " + serialize);
//// sysUserEntity.setVipTimeRangeJson(serialize);
//// sysUserDao.save(sysUserEntity);
//// }
//
//// for (int i = 0; i < 10000; i++) {
//// firePointOrdinaryDao.updateProCityCode(i * 310L, (i + 1) * 310L);
//// firePointOrdinaryDao.updateProCityName(i * 310L, (i + 1) * 310L);
//// System.out.println(i + "/" + 10000);
//// }
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "(" + count + "/" + districtList.size() + ")", locale);
}
// private void handleDistrict(List<DistrictBean.DistrictsDTO> districtList) {
// if (districtList != null || districtList.size() > 0) {
// for (DistrictBean.DistrictsDTO districtItem : districtList) {
// DistrictEntity districtEntity = new DistrictEntity();
// districtEntity.setProName();
// districtEntity.setProCode();
// districtEntity.setCityName();
// districtEntity.setCityCode();
// districtEntity.setCountyName();
// districtEntity.setCountyCode();
// districtEntity.setStreetName();
// districtEntity.setStreetCode();
// districtEntity.setCenter();
// districtEntity.setLevel();
//
// }
// }
// }
@GetMapping("/autoSync") @GetMapping("/autoSync")
public String autoSync() { public String autoSync() {

View File

@ -0,0 +1,18 @@
package com.xkrs.dao;
import com.xkrs.model.entity.DistrictEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
public interface DistrictDao extends JpaRepository<DistrictEntity, Integer>, JpaSpecificationExecutor<DistrictEntity> {
@Transactional(rollbackFor = Exception.class)
@Modifying(clearAutomatically = true)
@Query(value = "UPDATE district SET street_code = ?2 WHERE id = ?1", nativeQuery = true)
void updateStreetCode(Integer id, String townCode);
}

View File

@ -0,0 +1,102 @@
package com.xkrs.model.bean;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
public class DistrictBean {
@JsonProperty("status")
private String status;
@JsonProperty("info")
private String info;
@JsonProperty("infocode")
private String infocode;
@JsonProperty("districts")
private List<DistrictsDTO> districts;
public static class DistrictsDTO {
@JsonProperty("adcode")
private String adcode;
@JsonProperty("name")
private String name;
@JsonProperty("center")
private String center;
@JsonProperty("level")
private String level;
@JsonProperty("districts")
private List<DistrictsDTO> districts;
public String getAdcode() {
return adcode;
}
public void setAdcode(String adcode) {
this.adcode = adcode;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCenter() {
return center;
}
public void setCenter(String center) {
this.center = center;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public List<DistrictsDTO> getDistricts() {
return districts;
}
public void setDistricts(List<DistrictsDTO> districts) {
this.districts = districts;
}
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getInfocode() {
return infocode;
}
public void setInfocode(String infocode) {
this.infocode = infocode;
}
public List<DistrictsDTO> getDistricts() {
return districts;
}
public void setDistricts(List<DistrictsDTO> districts) {
this.districts = districts;
}
}

View File

@ -0,0 +1,168 @@
package com.xkrs.model.entity;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "district")
public class DistrictEntity implements Serializable {
/**
* 主键id
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "district_seq_gen")
@SequenceGenerator(name = "district_seq_gen", sequenceName = "district_id_seq", allocationSize = 1)
private Integer id;
/**
* 省名称
*/
@Column(length = 65, columnDefinition = "varchar(65)")
private String proName;
/**
* 省编码
*/
@Column(length = 65, columnDefinition = "varchar(65)")
private String proCode;
/**
* 市名称
*/
@Column(length = 65, columnDefinition = "varchar(65)")
private String cityName;
/**
* 市编码
*/
@Column(length = 65, columnDefinition = "varchar(65)")
private String cityCode;
/**
* 区县名称
*/
@Column(length = 65, columnDefinition = "varchar(65)")
private String countyName;
/**
* 区县编码
*/
@Column(length = 65, columnDefinition = "varchar(65)")
private String countyCode;
/**
* 街道名称
*/
@Column(length = 65, columnDefinition = "varchar(65)")
private String streetName;
/**
* 街道编码
*/
@Column(length = 65, columnDefinition = "varchar(65)")
private String streetCode;
/**
* 中心点
*/
@Column(length = 65, columnDefinition = "varchar(65)")
private String center;
/**
* 等级
*/
@Column(length = 65, columnDefinition = "varchar(65)")
private String level;
public DistrictEntity() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getProName() {
return proName;
}
public void setProName(String proName) {
this.proName = proName;
}
public String getProCode() {
return proCode;
}
public void setProCode(String proCode) {
this.proCode = proCode;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public String getCityCode() {
return cityCode;
}
public void setCityCode(String cityCode) {
this.cityCode = cityCode;
}
public String getCountyName() {
return countyName;
}
public void setCountyName(String countyName) {
this.countyName = countyName;
}
public String getCountyCode() {
return countyCode;
}
public void setCountyCode(String countyCode) {
this.countyCode = countyCode;
}
public String getStreetName() {
return streetName;
}
public void setStreetName(String streetName) {
this.streetName = streetName;
}
public String getStreetCode() {
return streetCode;
}
public void setStreetCode(String streetCode) {
this.streetCode = streetCode;
}
public String getCenter() {
return center;
}
public void setCenter(String center) {
this.center = center;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
}