using IStation.Model;
|
using IStation.ZyDto;
|
using Microsoft.Ajax.Utilities;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Net.WebSockets;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
|
namespace IStation
|
{
|
/// <summary>
|
/// 调度方案(众毅)
|
/// </summary>
|
internal class ZyProjectHelper
|
{
|
// static string _url_prj = "ws://192.168.201.17:8001";
|
public static string _url_prj = "ws://192.168.3.152:8001";
|
|
/// <summary>
|
/// 提交调度项目
|
/// </summary>
|
/// <param name="currentViewPrj"></param>
|
/// <param name="cbSuccess"></param>
|
/// <param name="cbFail"></param>
|
/// <returns></returns>
|
public static async Task<string> SubmitPrj(IStation.CalcModel.AnaPrj currentViewPrj)
|
{
|
if (ZyConnectHelper.isDebug)
|
{
|
return " is isDebug";
|
}
|
if (currentViewPrj == null)
|
{
|
return "currentViewPrj is null";
|
}
|
IStation.ZyDto.SubmitPrj dto_prj = new ZyDto.SubmitPrj();
|
|
if (string.IsNullOrEmpty(currentViewPrj.ID))
|
{
|
var time = DateTime.Now;
|
currentViewPrj.ID = $"{time.Year}{time.Month}{time.Day}{time.Hour}{time.Minute}{time.Second}";
|
}
|
dto_prj.schemeID = currentViewPrj.ID;
|
dto_prj.Day = currentViewPrj.StartTime.ToString("yyyy-MM-dd");
|
|
dto_prj.StartTime = currentViewPrj.StartTime.ToString("yyyy-MM-dd HH:mm:ss");
|
dto_prj.EndTime = currentViewPrj.EndTime.ToString("yyyy-MM-dd HH:mm:ss");
|
|
dto_prj.FlowTotalIn = Math.Round(currentViewPrj.SumFlow, 0);
|
dto_prj.PowerTotal = Math.Round(currentViewPrj.SumPower, 0);
|
dto_prj.MoneyTotal = Math.Round(currentViewPrj.SumMoney, 0);
|
|
dto_prj.BlockTimes = new List<ZyDto.SubmitPrjBlockTime>();
|
foreach (var bt in currentViewPrj.BlockTimes)
|
{
|
if (bt.OpenPumpIndexs == null || bt.OpenPumpIndexs.Count() == 0)
|
continue;
|
ZyDto.SubmitPrjBlockTime dto_item = new ZyDto.SubmitPrjBlockTime();
|
dto_item.StartTime = bt.StartTime;
|
dto_item.EndTime = bt.EndTime;
|
dto_item.OpenPumpCount = bt.OpenPumpIndexs.Count;
|
dto_item.OpenPumpIndexs = bt.OpenPumpIndexs;// IStation.AnaGlobalParas.Setting.GetOpenPumpIndexArrays(bt.OpenPumpCount);
|
dto_prj.BlockTimes.Add(dto_item);
|
}
|
var ws = new ClientWebSocket();
|
await ws.ConnectAsync(new Uri(_url_prj), CancellationToken.None);
|
if (ws.State != WebSocketState.Open)
|
{
|
return "WebSocketState is close";
|
}
|
|
var inputJson = JsonHelper.Object2Json(dto_prj);
|
var inputBytes = Encoding.UTF8.GetBytes(inputJson);
|
IStation.LogHelper.Info(inputJson);
|
await ws.SendAsync(new ArraySegment<byte>(inputBytes), WebSocketMessageType.Text, true, CancellationToken.None);
|
try
|
{
|
List<byte> outputBytes = new List<byte>();//全部消息容器
|
var buffer = new byte[1024 * 4];//缓冲区
|
var result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None); //监听Socket信息
|
while (!result.CloseStatus.HasValue) //是否关闭
|
{
|
if (result.MessageType == WebSocketMessageType.Text)//文本消息
|
{
|
outputBytes.AddRange(buffer.Take(result.Count));
|
if (result.EndOfMessage)//消息是否已接收完全
|
{
|
//发送过来的消息
|
string outputJson = Encoding.UTF8.GetString(outputBytes.ToArray(), 0, outputBytes.Count);
|
var outPrj = JsonHelper.Json2Object<OutPrj>(outputJson);
|
if (outPrj == null)
|
return "return is null";
|
if (outPrj.result == 1)
|
{
|
//cbSuccess.Invoke(outPrj.schemeID);
|
}
|
else
|
{
|
return "outPrj result:" + outPrj.result;
|
}
|
}
|
}
|
// result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);//继续监听Socket信息
|
}
|
}
|
catch (Exception ex)
|
{
|
IStation.LogHelper.Error("Error:101", ex);
|
return "ex:" + ex.Message;
|
}
|
finally
|
{
|
try
|
{
|
//关闭WebSocket
|
await ws.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "AcknowledgeCloseframe", CancellationToken.None);
|
}
|
catch (Exception ex)
|
{
|
IStation.LogHelper.Error("Error:111", ex);
|
// return "ex:" + ex.Message;
|
}
|
ws.Abort();
|
ws.Dispose();
|
}
|
return null;
|
}
|
|
/// <summary>
|
/// 提交调度项目
|
/// </summary>
|
/// <param name="currentViewPrj"></param>
|
/// <param name="cbSuccess"></param>
|
/// <param name="cbFail"></param>
|
/// <returns></returns>
|
public static async Task<string> SubmitPrjAsync(IStation.CalcModel.AnaPrj currentViewPrj)
|
{
|
if (ZyConnectHelper.isDebug)
|
{
|
return " is isDebug";
|
}
|
if (currentViewPrj == null)
|
{
|
return "currentViewPrj is null";
|
}
|
IStation.ZyDto.SubmitPrj dto_prj = new ZyDto.SubmitPrj();
|
|
if (string.IsNullOrEmpty(currentViewPrj.ID))
|
{
|
var time = DateTime.Now;
|
currentViewPrj.ID = $"{time.Year}{time.Month}{time.Day}{time.Hour}{time.Minute}{time.Second}";
|
}
|
dto_prj.schemeID = currentViewPrj.ID;
|
dto_prj.Day = currentViewPrj.StartTime.ToString("yyyy-MM-dd");
|
|
dto_prj.StartTime = currentViewPrj.StartTime.ToString("yyyy-MM-dd HH:mm:ss");
|
dto_prj.EndTime = currentViewPrj.EndTime.ToString("yyyy-MM-dd HH:mm:ss");
|
|
dto_prj.FlowTotalIn = Math.Round(currentViewPrj.SumFlow, 0);
|
dto_prj.PowerTotal = Math.Round(currentViewPrj.SumPower, 0);
|
dto_prj.MoneyTotal = Math.Round(currentViewPrj.SumMoney, 0);
|
|
dto_prj.BlockTimes = new List<ZyDto.SubmitPrjBlockTime>();
|
foreach (var bt in currentViewPrj.BlockTimes)
|
{
|
if (bt.OpenPumpIndexs == null || bt.OpenPumpIndexs.Count() == 0)
|
continue;
|
ZyDto.SubmitPrjBlockTime dto_item = new ZyDto.SubmitPrjBlockTime();
|
dto_item.StartTime = bt.StartTime;
|
dto_item.EndTime = bt.EndTime;
|
dto_item.OpenPumpCount = bt.OpenPumpIndexs.Count;
|
dto_item.OpenPumpIndexs = bt.OpenPumpIndexs;// IStation.AnaGlobalParas.Setting.GetOpenPumpIndexArrays(bt.OpenPumpCount);
|
dto_prj.BlockTimes.Add(dto_item);
|
}
|
var ws = new ClientWebSocket();
|
await ws.ConnectAsync(new Uri(_url_prj), CancellationToken.None);
|
if (ws.State != WebSocketState.Open)
|
{
|
return "WebSocketState is close";
|
}
|
|
var inputJson = JsonHelper.Object2Json(dto_prj);
|
var inputBytes = Encoding.UTF8.GetBytes(inputJson);
|
IStation.LogHelper.Info(inputJson);
|
await ws.SendAsync(new ArraySegment<byte>(inputBytes), WebSocketMessageType.Text, true, CancellationToken.None);
|
try
|
{
|
List<byte> outputBytes = new List<byte>();//全部消息容器
|
var buffer = new byte[1024 * 4];//缓冲区
|
var result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None); //监听Socket信息
|
while (!result.CloseStatus.HasValue) //是否关闭
|
{
|
if (result.MessageType == WebSocketMessageType.Text)//文本消息
|
{
|
outputBytes.AddRange(buffer.Take(result.Count));
|
if (result.EndOfMessage)//消息是否已接收完全
|
{
|
//发送过来的消息
|
string outputJson = Encoding.UTF8.GetString(outputBytes.ToArray(), 0, outputBytes.Count);
|
var outPrj = JsonHelper.Json2Object<OutPrj>(outputJson);
|
if (outPrj == null)
|
return "return is null";
|
if (outPrj.result == 1)
|
{
|
//cbSuccess.Invoke(outPrj.schemeID);
|
}
|
else
|
{
|
return "outPrj result:" + outPrj.result;
|
}
|
}
|
}
|
// result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);//继续监听Socket信息
|
}
|
}
|
catch (Exception ex)
|
{
|
IStation.LogHelper.Error("Error:101", ex);
|
return "ex:" + ex.Message;
|
}
|
finally
|
{
|
try
|
{
|
//关闭WebSocket
|
await ws.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "AcknowledgeCloseframe", CancellationToken.None);
|
}
|
catch (Exception ex)
|
{
|
IStation.LogHelper.Error("Error:111", ex);
|
// return "ex:" + ex.Message;
|
}
|
ws.Abort();
|
ws.Dispose();
|
}
|
return null;
|
}
|
}
|
}
|