| 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<VoNetwork> getNetworks() { | 
|         JSONArray array_result = new JSONArray(); | 
|         JSONArray array_networks = null; | 
|   | 
|         List<VoNetwork> 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<VoNetworkCoordinates> 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<>(); | 
|         } | 
|     } | 
| } |