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