1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package com.lqkj.link.module.zone.service;
- import com.alibaba.fastjson2.JSONObject;
- import com.lqkj.link.module.zone.domain.GeomInfo;
- import com.lqkj.link.module.zone.domain.LayerInfo;
- import com.lqkj.link.module.zone.domain.OneZoneGeomInfos;
- import com.lqkj.link.module.zone.domain.ZoneInfo;
- import com.lqkj.link.module.zone.repository.GeomInfoRepository;
- import com.lqkj.link.module.zone.repository.LayerInfoRepository;
- import com.lqkj.link.module.zone.repository.ZoneInfoRepository;
- import org.apache.commons.lang3.StringUtils;
- import org.locationtech.jts.geom.Coordinate;
- import org.locationtech.jts.geom.GeometryFactory;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.Date;
- import java.util.List;
- @Service
- public class GeomInfoService {
- private final GeomInfoRepository geomInfoRepository;
- private final ZoneInfoRepository zoneInfoRepository;
- private final LayerInfoRepository layerInfoRepository;
- public GeomInfoService(GeomInfoRepository geomInfoRepository, ZoneInfoRepository zoneInfoRepository, LayerInfoRepository layerInfoRepository) {
- this.geomInfoRepository = geomInfoRepository;
- this.zoneInfoRepository = zoneInfoRepository;
- this.layerInfoRepository = layerInfoRepository;
- }
- public List<GeomInfo> findAllByZoneId(Integer zoneId) {
- return geomInfoRepository.findAllByZoneId(zoneId);
- }
- @Transactional
- public void saveGeomByZone(OneZoneGeomInfos infos) {
- GeometryFactory geometryFactory = new GeometryFactory();
- // 保存元素
- if (infos.getModifyGeomList() != null && infos.getModifyGeomList().size() > 0) {
- for (GeomInfo geomInfo : infos.getModifyGeomList()) {
- geomInfo.setTrans(geomInfo.getLocation());
- JSONObject pointObject = geomInfo.getLocation().getJSONObject("translation");
- geomInfo.setGeom(geometryFactory.createPoint(new Coordinate(
- Double.parseDouble(pointObject.get("x").toString()),
- Double.parseDouble(pointObject.get("y").toString()),
- Double.parseDouble(pointObject.get("z").toString()))));
- if (StringUtils.isBlank(geomInfo.getLayerId())) {
- geomInfo.setLayerId(null);
- }
- }
- geomInfoRepository.saveAll(infos.getModifyGeomList());
- }
- // 删除元素
- if (infos.getDeleteGeomList() != null && infos.getDeleteGeomList().size() > 0)
- geomInfoRepository.deleteAllByIdInBatch(infos.getDeleteGeomList());
- // 修改作品的更新时间
- ZoneInfo zoneInfo = zoneInfoRepository.findById(infos.getZoneId()).get();
- zoneInfo.setUpdateTime(new Date());
- zoneInfo.setInitLocation(infos.getTrans());
- zoneInfoRepository.save(zoneInfo);
- }
- @Transactional
- public void saveGeom(OneZoneGeomInfos infos) {
- // 保存图层
- if (infos.getModifyLayerList() != null && infos.getModifyLayerList().size() > 0) {
- for (LayerInfo layerInfo : infos.getModifyLayerList()) {
- layerInfo.setZoneId(infos.getZoneId());
- }
- layerInfoRepository.saveAll(infos.getModifyLayerList());
- }
- // 删除图层
- if (infos.getDeleteLayerList() != null && infos.getDeleteLayerList().size() > 0)
- layerInfoRepository.deleteAllByIdInBatch(infos.getDeleteLayerList());
- saveGeomByZone(infos);
- }
- public List<GeomInfo> getNavigationInfo(Integer zoneId) {
- return geomInfoRepository.getNavigationInfo(zoneId);
- }
- }
|