liurunyu
6 天以前 ca2417166fe917aeb45d08df6ff152f9c7a0060a
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/network/NetworkSv.java
New file
@@ -0,0 +1,129 @@
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<>();
        }
    }
}