using IStation.CalcModel;
using IStation.Common;
using IStation.Dto;
using IStation.Model;
using IStation.ZyDto;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Security.Permissions;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace IStation.ZyDto
{
public class ZyPrjRequest
{
public ZyPrjRequest() { }
public string StartTime { get; set; }
public string EndTime { get; set; }
public int StartOpenCount { get; set; } = -1;
public double? TotalFlowIn { get; set; }//取水总量 (单位 吨)
}
}
namespace IStation.WebApi.Controllers
{
///
/// 计算配置
///
[RoutePrefix("ZyPrj")]
public class ZyPrjController : ApiController
{
///
///
///
///
///
[Route("CalcPrj")]
[HttpPost]
public IStation.Dto.ApiResult CalcPrj([FromBody] ZyPrjRequest request)
{
if (request == null )
{
return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "request is null" };
}
if (string.IsNullOrEmpty(request.StartTime))
{
return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "StartTime is null" };
}
if (string.IsNullOrEmpty(request.EndTime))
{
return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "EndTime is null" };
}
DateTime start_timme = DateTime.Now;
DateTime end_timme = DateTime.Now;
if(!DateTime.TryParse(request.StartTime,out start_timme))
{
return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "StartTime is error format" };
}
if (!DateTime.TryParse(request.EndTime, out end_timme))
{
return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "EndTime is error format" };
}
if(end_timme< start_timme.AddMinutes(60))
{
return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "时间范围错误" };
}
if(request.TotalFlowIn == null)
{
return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "取水总量错误" };
}
if (request.TotalFlowIn < 10000)
{
return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "注意取水总量单位是吨,当前参数参数过小" };
}
IStation.CalcModel.AnaRequest anaRequest = new AnaRequest();
anaRequest.CalcOptType = eCalcOptType.电费;
anaRequest.StartTime = start_timme;
anaRequest.EndTime = end_timme;
anaRequest.WaterLevels长江 = GetTide3Day(start_timme);
anaRequest.StartOpenCount = request.StartOpenCount;
anaRequest.TotalFlow取水总量 = request.TotalFlowIn;
var calcHelper = new IStation.CalcPrjHelper();
AnaPrj defaultPrj = null;
string error_info = calcHelper.Calc(anaRequest, out defaultPrj);
if (!string.IsNullOrEmpty(error_info) || defaultPrj == null)
{
return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "计算错误, 原因是:"+ error_info };
}
var ret = Common.HistoryAnaPrjFileHelper.SavePrj(IStation.AnaGlobalParas.Setting, anaRequest, defaultPrj);
IStation.ZyDto.SubmitPrj dto_prj = new ZyDto.SubmitPrj();
if (string.IsNullOrEmpty(defaultPrj.ID))
{
var time = DateTime.Now;
defaultPrj.ID = $"{time.Year}{time.Month}{time.Day}{time.Hour}{time.Minute}{time.Second}";
}
dto_prj.schemeID = defaultPrj.ID;
dto_prj.Day = defaultPrj.StartTime.ToString("yyyy-MM-dd");
dto_prj.Items = new List();
foreach (var bt in defaultPrj.BlockTimes)
{
if (bt.OpenPumpCount == 0)
continue;
ZyDto.SubmitPrjItem dto_item = new ZyDto.SubmitPrjItem();
dto_item.StartTime = bt.StartTime;
dto_item.EndTime = bt.EndTime;
dto_item.OpenPumpCount = bt.OpenPumpCount;
dto_prj.Items.Add(dto_item);
}
//if (request.isSubmit)
//{
// string error = await ZyConnectHelper.SubmitPrj(request.prj);//, (id) => { IStation.LogHelper.Info("SavePrj success id=" + id); }, (info) => { IStation.LogHelper.Info("SavePrj failse info:" + info); });//.Result;
// if (!string.IsNullOrEmpty(error))
// {
// IStation.LogHelper.Info("Submit prj finish (fail) day:" + request.requestBase.StartTime + ",error:" + error);
// return new IStation.Dto.ApiResult(error) { Code = ApiResultCode.Error };
// }
// else
// {
// IStation.LogHelper.Info("Submit prj finish (success) day:" + request.requestBase.StartTime);
// }
//}
return new IStation.Dto.ApiResult< IStation.ZyDto.SubmitPrj>(dto_prj) { Code = ApiResultCode.Success };
}
Model.eTideSouce _tideSouce = Model.eTideSouce.Book;
private List GetTide3Day(DateTime calc_day )
{
DateTime _rangDay1, _rangDay2, _rangDay3;
string error1, error2, error3;
List waterLevels长江1, waterLevels长江2, waterLevels长江3;
if (calc_day == DateTime.Today)
{
_rangDay1 = calc_day.AddDays(-1);
_rangDay2 = calc_day;
_rangDay3 = calc_day.AddDays(1);
}
else if (calc_day == DateTime.Today.AddDays(1))
{
_rangDay1 = calc_day.AddDays(-2);
_rangDay2 = calc_day.AddDays(-1);
_rangDay3 = calc_day;
}
else
{
_rangDay1 = calc_day.AddDays(-1);
_rangDay2 = calc_day;
_rangDay3 = calc_day.AddDays(1);
}
waterLevels长江1 = TideHelper.GetByDay(_tideSouce, _rangDay1, out error1);
waterLevels长江2 = TideHelper.GetByDay(_tideSouce, _rangDay2, out error2);
waterLevels长江3 = TideHelper.GetByDay(_tideSouce, _rangDay3, out error3);
List timeValues = new List();
if (waterLevels长江1 != null)
{
timeValues.AddRange(waterLevels长江1);
}
if (waterLevels长江2 != null)
{
timeValues.AddRange(waterLevels长江2);
}
if (waterLevels长江3 != null)
{
timeValues.AddRange(waterLevels长江3);
}
return timeValues;
}
}
}