diff --git a/src/main/java/com/xkrs/controller/DispatchFirePointController.java b/src/main/java/com/xkrs/controller/DispatchFirePointController.java index 4139697..efe8843 100644 --- a/src/main/java/com/xkrs/controller/DispatchFirePointController.java +++ b/src/main/java/com/xkrs/controller/DispatchFirePointController.java @@ -1,14 +1,18 @@ package com.xkrs.controller; import com.xkrs.common.encapsulation.PromptMessageEnum; +import com.xkrs.dao.DistrictDao; import com.xkrs.dao.FirePointOrdinaryDao; import com.xkrs.dao.StreetDao; import com.xkrs.dao.SysUserDao; 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.UpdateFirePointQo; import com.xkrs.service.DispatchFirePointService; import com.xkrs.service.impl.FirePointServiceImpl; +import com.xkrs.utilsnew.FirePointAddressUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 javax.annotation.Resource; +import java.util.List; import java.util.Locale; import static com.xkrs.common.encapsulation.OutputEncapsulation.outputEncapsulationObject; @@ -36,45 +41,130 @@ public class DispatchFirePointController { private FirePointOrdinaryDao firePointOrdinaryDao; @Resource private StreetDao streetDao; + @Resource + private DistrictDao districtDao; private final Locale locale = LocaleContextHolder.getLocale(); @GetMapping("/debug") - public String debug() { + public String debug() throws Exception { + int count = 0; + List districtList = districtDao.findAll(); + for (DistrictEntity districtItem : districtList) { + try { + String[] split = districtItem.getCenter().split(","); + double longitude = Double.parseDouble(split[0]); + double latitude = Double.parseDouble(split[1]); + AddressBean addressBean = FirePointAddressUtils.analysisWithNetwork(longitude, latitude); + if (!addressBean.isSuccess()) { + continue; + } + if (!addressBean.getTownCode().startsWith(districtItem.getStreetCode())) { + continue; + } + districtDao.updateStreetCode(districtItem.getId(), addressBean.getTownCode()); + count++; + } catch (Exception e) { + e.printStackTrace(); + } + } -// System.out.println("开始更新用户VIP时间范围"); + +// 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 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 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 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 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 + "条记录"); +// } +// } +// } +// } +// } +// } +// } +// } // -// List 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 list = new ArrayList<>(); -// list.add(vipTimeRangeItemBean); -// VipTimeRangeBean vipTimeRangeBean = new VipTimeRangeBean(); -// vipTimeRangeBean.setList(list); -// String serialize = JsonUtils.serialize(vipTimeRangeBean); -// System.out.println("serialize = " + serialize); -// sysUserEntity.setVipTimeRangeJson(serialize); -// sysUserDao.save(sysUserEntity); -// } +// +//// System.out.println("开始更新用户VIP时间范围"); +//// +//// List 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 list = new ArrayList<>(); +//// list.add(vipTimeRangeItemBean); +//// VipTimeRangeBean vipTimeRangeBean = new VipTimeRangeBean(); +//// vipTimeRangeBean.setList(list); +//// String serialize = JsonUtils.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); +//// } -// 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); + return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "(" + count + "/" + districtList.size() + ")", locale); } +// private void handleDistrict(List 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") public String autoSync() { return fireSeasonConfigService.updateFireSeasonConfig(); diff --git a/src/main/java/com/xkrs/dao/DistrictDao.java b/src/main/java/com/xkrs/dao/DistrictDao.java new file mode 100644 index 0000000..88347d4 --- /dev/null +++ b/src/main/java/com/xkrs/dao/DistrictDao.java @@ -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, JpaSpecificationExecutor { + + @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); +} diff --git a/src/main/java/com/xkrs/model/bean/DistrictBean.java b/src/main/java/com/xkrs/model/bean/DistrictBean.java new file mode 100644 index 0000000..da7c698 --- /dev/null +++ b/src/main/java/com/xkrs/model/bean/DistrictBean.java @@ -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 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 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 getDistricts() { + return districts; + } + + public void setDistricts(List 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 getDistricts() { + return districts; + } + + public void setDistricts(List districts) { + this.districts = districts; + } +} diff --git a/src/main/java/com/xkrs/model/entity/DistrictEntity.java b/src/main/java/com/xkrs/model/entity/DistrictEntity.java new file mode 100644 index 0000000..6691c77 --- /dev/null +++ b/src/main/java/com/xkrs/model/entity/DistrictEntity.java @@ -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; + } +}