package com.dy.pipIrrProject.network; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.dy.pipIrrGlobal.daoPr.PrNetworkCoordinatesMapper; import com.dy.pipIrrGlobal.daoPr.PrWaterNetworkMapper; import com.dy.pipIrrGlobal.pojoPr.PrNetworkCoordinates; import com.dy.pipIrrGlobal.pojoPr.PrWaterNetwork; import com.dy.pipIrrGlobal.voPr.VoNetwork; import com.dy.pipIrrGlobal.voPr.VoNetworkCoordinates; import com.dy.pipIrrProject.network.dto.Network; import com.dy.pipIrrProject.result.ProjectResultCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Optional; /** * @author ZhuBaoMin * @date 2024-08-27 17:08 * @LastEditTime 2024-08-27 17:08 * @Description */ @Slf4j @Service @RequiredArgsConstructor public class NetworkSv { private final PrWaterNetworkMapper prWaterNetworkMapper; private final PrNetworkCoordinatesMapper prNetworkCoordinatesMapper; /** * 添加管网 * @param po * @return */ public Long addNetwork(PrWaterNetwork po) { prWaterNetworkMapper.insert(po); return po.getId(); } /** * 添加管网坐标 * @param po * @return */ public Long addNetworkCoordinate(PrNetworkCoordinates po) { prNetworkCoordinatesMapper.insert(po); return po.getId(); }; /** * 添加管网 * @param po * @return */ public String addNetworks(Network po) { String result = ""; PrWaterNetwork prWaterNetwork = null; Long networkId = null; prWaterNetworkMapper.clearNetworks(); prNetworkCoordinatesMapper.clearCoordinates(); JSONArray networks = po.getData(); for (int i = 0; i < networks.size(); i++) { // 取出一笔绘画 JSONObject polyline = networks.getJSONObject(i); // 添加该笔绘画 prWaterNetwork = new PrWaterNetwork(); prWaterNetwork.setNetworkType(po.getType()); networkId = addNetwork(prWaterNetwork); // 取出一笔绘画中的坐标点 JSONArray coordinates = polyline.getJSONArray("coordinates"); for (int j = 0; j < coordinates.size(); j++) { JSONObject point = coordinates.getJSONObject(j); PrNetworkCoordinates prNetworkCoordinates = new PrNetworkCoordinates(); prNetworkCoordinates.setNetworkId(networkId); prNetworkCoordinates.setLat(point.getBigDecimal("lat")); prNetworkCoordinates.setLng(point.getBigDecimal("lng")); Long coordinateId = Optional.ofNullable(addNetworkCoordinate(prNetworkCoordinates)).orElse(0L); if (coordinateId.equals(0)) { //return BaseResponseUtils.buildErrorMsg(ProjectResultCode.SAVA_NETWORK_ERROR.getMessage()); result = ProjectResultCode.SAVA_NETWORK_ERROR.getMessage(); } } } return result; } /** * 获取全部管网 * @return */ public List getNetworks() { JSONArray array_result = new JSONArray(); JSONArray array_networks = null; List list_networks = prWaterNetworkMapper.getAllNewworks(); if(list_networks != null && list_networks.size() > 0) { array_networks = (JSONArray) JSON.toJSON(list_networks); for (int i = 0; i < array_networks.size(); i++) { JSONObject job_network = array_networks.getJSONObject(i); List list_networkCoordinates = prNetworkCoordinatesMapper.getCoordinatesByNetworkId(job_network.getLong("networkId")); if(list_networkCoordinates == null) { list_networkCoordinates = new ArrayList<>(); } JSONObject job_points = new JSONObject(); job_points.put("type", "Polyline"); job_points.put("coordinates", (JSONArray) JSON.toJSON(list_networkCoordinates)); job_network.put("data", job_points); array_result.add(job_network); } return array_result.toList(VoNetwork.class); }else { return new ArrayList<>(); } } }