liurunyu
2024-08-28 8d2b573ced32e6ca6fab7c1dc45e1fa108030ba1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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<>();
        }
    }
}