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<>(); 
 | 
        } 
 | 
    } 
 | 
} 
 |