| | |
| | | public class ZyPrjRequest |
| | | { |
| | | public ZyPrjRequest() { } |
| | | |
| | | |
| | | public string StartTime { get; set; } |
| | | public string EndTime { get; set; } |
| | | public int StartOpenCount { get; set; } = -1; |
| | | public int? StartOpenCount { get; set; } = -1; |
| | | public double? TotalFlowIn { get; set; }//取水总量 (单位 吨) |
| | | } |
| | | |
| | | public string StartReservoirLevel { get; set; }//开始水库水位(可空):单位m |
| | | public string MaxReservoirLevel { get; set; }//最高水库水位限制(可空):单位m |
| | | public string MaxReservoirLevelTime { get; set; }//最高水库水位限制时间(可空) 时间格式 |
| | | |
| | | public string IsSubmit { get; set; }//计算完,是否推送 |
| | | } |
| | | } |
| | | namespace IStation.WebApi.Controllers |
| | | { |
| | |
| | | start_timme, end_timme, request.StartOpenCount, request.TotalFlowIn)); |
| | | |
| | | IStation.CalcModel.AnaRequest anaRequest = new AnaRequest(); |
| | | anaRequest.CalcOptType = eCalcOptType.电费; |
| | | anaRequest.CalcOptType = (eCalcOptType) IStation.AnaGlobalParas.Setting.OptSortType; |
| | | anaRequest.StartTime = start_timme; |
| | | anaRequest.EndTime = end_timme; |
| | | anaRequest.WaterLevels长江 = GetTide3Day(start_timme); |
| | | anaRequest.StartOpenCount = request.StartOpenCount; |
| | | |
| | | anaRequest.TotalFlow取水总量 = request.TotalFlowIn; |
| | | |
| | | |
| | | if(request.StartOpenCount == null) |
| | | { |
| | | anaRequest.StartOpenCount = -1; |
| | | } |
| | | else |
| | | { |
| | | anaRequest.StartOpenCount = request.StartOpenCount.Value; |
| | | } |
| | | #region 陈行水库水位 |
| | | if (!string.IsNullOrEmpty(request.StartReservoirLevel)) |
| | | { |
| | | anaRequest.CurrentWaterBoxLevel = Convert.ToDouble(request.StartReservoirLevel); |
| | | } |
| | | else |
| | | { |
| | | var tagDict = new Dictionary<string, string>{ { "_0402010201030103006", "陈行水库水位" }}; |
| | | var input = new { search = "real", tablename = "陈行智能调度" }; |
| | | var tags = tagDict.Keys.ToList(); |
| | | var realScadaRecordList = ZyConnectHelper.GetRealScadaResultAsync(tags, input).GetAwaiter().GetResult(); |
| | | if (realScadaRecordList != null && realScadaRecordList.Count() > 0) |
| | | { |
| | | anaRequest.CurrentWaterBoxLevel = realScadaRecordList.Last().Value; |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | if (!string.IsNullOrEmpty(request.MaxReservoirLevel)) |
| | | anaRequest.MaxLimitWaterBoxLevel = Convert.ToDouble(request.MaxReservoirLevel); |
| | | if (!string.IsNullOrEmpty(request.MaxReservoirLevelTime)) |
| | | anaRequest.MaxLimitWaterBoxTime = request.MaxReservoirLevelTime; |
| | | |
| | | var calcHelper = new IStation.CalcPrjHelper(); |
| | | AnaPrj defaultPrj = null; |
| | | string error_info = calcHelper.Calc(anaRequest, out defaultPrj); |
| | |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "计算错误, 原因是:"+ error_info }; |
| | | } |
| | | |
| | | //保存方案 |
| | | var ret = Common.HistoryAnaPrjFileHelper.SavePrj(IStation.AnaGlobalParas.Setting, anaRequest, defaultPrj); |
| | | |
| | | var dto_prj = ToPrjDto(defaultPrj); |
| | | |
| | | #region 推送 |
| | | if (!string.IsNullOrEmpty(request.IsSubmit) && Convert.ToBoolean(request.IsSubmit)) |
| | | { |
| | | Task.Run(() => { |
| | | _ = ZyProjectHelper.SubmitPrj(defaultPrj); |
| | | }); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | return new IStation.Dto.ApiResult< IStation.ZyDto.SubmitPrj>(dto_prj) { Code = ApiResultCode.Success }; |
| | | } |
| | | |
| | | #region 换算成DTO |
| | | private IStation.ZyDto.SubmitPrj ToPrjDto(AnaPrj defaultPrj) |
| | | { |
| | | IStation.ZyDto.SubmitPrj dto_prj = new ZyDto.SubmitPrj(); |
| | | |
| | | if (string.IsNullOrEmpty(defaultPrj.ID)) |
| | |
| | | dto_item.OpenPumpIndexs = IStation.AnaGlobalParas.Setting.GetOpenPumpIndexArrays(bt.OpenPumpCount); |
| | | dto_prj.Items.Add(dto_item); |
| | | } |
| | | if(defaultPrj.PointTimes != null) |
| | | { |
| | | dto_prj.Records = new List<SubmitPrjTime>(); |
| | | foreach(var bt in defaultPrj.PointTimes) |
| | | { |
| | | dto_prj.Records.Add(new SubmitPrjTime(bt)); |
| | | } |
| | | } |
| | | return dto_prj; |
| | | } |
| | | #endregion |
| | | |
| | | //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<string>(error) { Code = ApiResultCode.Error }; |
| | | // } |
| | | // else |
| | | // { |
| | | // IStation.LogHelper.Info("Submit prj finish (success) day:" + request.requestBase.StartTime); |
| | | // } |
| | | //} |
| | | /// <summary> |
| | | /// 获取某一天,最近一条 |
| | | /// </summary> |
| | | /// <param name="day"></param> |
| | | /// <returns></returns> |
| | | [Route("GetHistoryByDay")] |
| | | [HttpGet] |
| | | public IStation.Dto.ApiResult GetHistoryByDay(string day) |
| | | { |
| | | if (string.IsNullOrEmpty(day )) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "入参day 为空" }; |
| | | } |
| | | DateTime d; |
| | | if (!DateTime.TryParse(day, out d)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | IStation.CalcModel.AnaRequestBase requestBase = null; |
| | | var prj = Common.HistoryAnaPrjFileHelper.GetByDay(d, out requestBase); |
| | | |
| | | if(prj != null) |
| | | { |
| | | var dto_prj = ToPrjDto(prj); |
| | | return new IStation.Dto.ApiResult<IStation.ZyDto.SubmitPrj>(dto_prj) { Code = ApiResultCode.Success }; |
| | | } |
| | | else |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Alert, Message="未找到项目" }; |
| | | } |
| | | } |
| | | |
| | | |
| | | return new IStation.Dto.ApiResult< IStation.ZyDto.SubmitPrj>(dto_prj) { Code = ApiResultCode.Success }; |
| | | |
| | | /// <summary> |
| | | /// 获取最近一条 |
| | | /// </summary> |
| | | /// <param name="day"></param> |
| | | /// <returns></returns> |
| | | [Route("GetLastHistoryRecord")] |
| | | [HttpGet] |
| | | public IStation.Dto.ApiResult GetLastHistoryRecord( ) |
| | | { |
| | | var dal = new IStation.DAL.AnaProject(); |
| | | var record = dal.GetLastRecord(); |
| | | if (record == null) |
| | | return null; |
| | | |
| | | IStation.CalcModel.AnaRequestBase requestBase = null; |
| | | var prj = Common.HistoryAnaPrjFileHelper.GetByStartTime(record.StartTime, out requestBase); |
| | | if (prj != null) |
| | | { |
| | | var dto_prj = ToPrjDto(prj); |
| | | return new IStation.Dto.ApiResult<IStation.ZyDto.SubmitPrj>(dto_prj) { Code = ApiResultCode.Success }; |
| | | } |
| | | else |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Alert, Message = "未找到项目" }; |
| | | } |
| | | } |
| | | |
| | | |