GeomInfoService.java 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package com.lqkj.link.module.zone.service;
  2. import com.alibaba.fastjson2.JSONObject;
  3. import com.lqkj.link.module.zone.domain.GeomInfo;
  4. import com.lqkj.link.module.zone.domain.LayerInfo;
  5. import com.lqkj.link.module.zone.domain.OneZoneGeomInfos;
  6. import com.lqkj.link.module.zone.domain.ZoneInfo;
  7. import com.lqkj.link.module.zone.repository.GeomInfoRepository;
  8. import com.lqkj.link.module.zone.repository.LayerInfoRepository;
  9. import com.lqkj.link.module.zone.repository.ZoneInfoRepository;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.locationtech.jts.geom.Coordinate;
  12. import org.locationtech.jts.geom.GeometryFactory;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import java.util.Date;
  16. import java.util.List;
  17. @Service
  18. public class GeomInfoService {
  19. private final GeomInfoRepository geomInfoRepository;
  20. private final ZoneInfoRepository zoneInfoRepository;
  21. private final LayerInfoRepository layerInfoRepository;
  22. public GeomInfoService(GeomInfoRepository geomInfoRepository, ZoneInfoRepository zoneInfoRepository, LayerInfoRepository layerInfoRepository) {
  23. this.geomInfoRepository = geomInfoRepository;
  24. this.zoneInfoRepository = zoneInfoRepository;
  25. this.layerInfoRepository = layerInfoRepository;
  26. }
  27. public List<GeomInfo> findAllByZoneId(Integer zoneId) {
  28. return geomInfoRepository.findAllByZoneId(zoneId);
  29. }
  30. @Transactional
  31. public void saveGeomByZone(OneZoneGeomInfos infos) {
  32. GeometryFactory geometryFactory = new GeometryFactory();
  33. // 保存元素
  34. if (infos.getModifyGeomList() != null && infos.getModifyGeomList().size() > 0) {
  35. for (GeomInfo geomInfo : infos.getModifyGeomList()) {
  36. geomInfo.setTrans(geomInfo.getLocation());
  37. JSONObject pointObject = geomInfo.getLocation().getJSONObject("translation");
  38. geomInfo.setGeom(geometryFactory.createPoint(new Coordinate(
  39. Double.parseDouble(pointObject.get("x").toString()),
  40. Double.parseDouble(pointObject.get("y").toString()),
  41. Double.parseDouble(pointObject.get("z").toString()))));
  42. if (StringUtils.isBlank(geomInfo.getLayerId())) {
  43. geomInfo.setLayerId(null);
  44. }
  45. }
  46. geomInfoRepository.saveAll(infos.getModifyGeomList());
  47. }
  48. // 删除元素
  49. if (infos.getDeleteGeomList() != null && infos.getDeleteGeomList().size() > 0)
  50. geomInfoRepository.deleteAllByIdInBatch(infos.getDeleteGeomList());
  51. // 修改作品的更新时间
  52. ZoneInfo zoneInfo = zoneInfoRepository.findById(infos.getZoneId()).get();
  53. zoneInfo.setUpdateTime(new Date());
  54. zoneInfo.setInitLocation(infos.getTrans());
  55. zoneInfoRepository.save(zoneInfo);
  56. }
  57. @Transactional
  58. public void saveGeom(OneZoneGeomInfos infos) {
  59. // 保存图层
  60. if (infos.getModifyLayerList() != null && infos.getModifyLayerList().size() > 0) {
  61. for (LayerInfo layerInfo : infos.getModifyLayerList()) {
  62. layerInfo.setZoneId(infos.getZoneId());
  63. }
  64. layerInfoRepository.saveAll(infos.getModifyLayerList());
  65. }
  66. // 删除图层
  67. if (infos.getDeleteLayerList() != null && infos.getDeleteLayerList().size() > 0)
  68. layerInfoRepository.deleteAllByIdInBatch(infos.getDeleteLayerList());
  69. saveGeomByZone(infos);
  70. }
  71. public List<GeomInfo> getNavigationInfo(Integer zoneId) {
  72. return geomInfoRepository.getNavigationInfo(zoneId);
  73. }
  74. }