using Abp.Application.Services; using Abp.Authorization; using Abp.Domain.Repositories; using Abp.Domain.Uow; using Abp.Web.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Infrastructure; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Newtonsoft.Json.Serialization; using NPOI.OpenXmlFormats.Dml.Diagram; using System; using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Linq.Dynamic.Core; using System.Threading.Tasks; using ToolLibrary.LogHelper; using YunDa.ISAS.Application.Core; using YunDa.ISAS.Application.Core.Configuration; using YunDa.ISAS.Application.Core.SwaggerHelper; using YunDa.ISAS.DataTransferObject; using YunDa.ISAS.DataTransferObject.GeneralInformation.EquipmentInfoDto; using YunDa.ISAS.DataTransferObject.PatternRecognition; using YunDa.ISAS.DataTransferObject.VideoSurveillance.PresetPointDto; using YunDa.ISAS.DataTransferObject.VideoSurveillance.VideoDevDto; using YunDa.ISAS.Entities.GeneralInformation; using YunDa.ISAS.Entities.VideoSurveillance; using YunDa.ISAS.ExternalInteraction.DataTransferObject; using YunDa.ISAS.ExternalInteraction.DataTransferObject.Other; namespace YunDa.ISAS.ExternalInteraction.Application.PatternRecognition { /* https://ip:port/项目路径/api/other/updatetemperature; */ /// /// 对外通信-主站额外需求 /// [DontWrapResult, AbpAllowAnonymous, Description("对外通信-主站额外需求")] [ISAS.Application.Core.ExtensionAttribute.ApiPageLog] public class MainstationGetTempService : ApplicationService, IMainstationGetTempService { private readonly IAppServiceConfiguration _appServiceConfiguration; private readonly IRepository _masterStationRepository; private readonly IRepository _videoDevRepository; private readonly IRepository _presetPointRepository; private readonly IRepository _equipmentInfoRepository; private readonly IRepository _equipmentTypeRepository; private readonly IActionContextAccessor _actionContextAccessor; private readonly IUnitOfWorkManager _unitOfWorkManager; private readonly IRepository _transformerSubstationRepository; private readonly IRepository _mtpRepository; public MainstationGetTempService(IRepository masterStationRepository , IRepository videoDevRepository , IRepository presetPointRepository , IRepository equipmentInfoRepository , IRepository equipmentTypeRepository , IActionContextAccessor actionContextAccessor , IUnitOfWorkManager unitOfWorkManager , IRepository transformerSubstationRepository , IRepository mtpRepository , IAppServiceConfiguration appServiceConfiguration) { _videoDevRepository = videoDevRepository; _presetPointRepository = presetPointRepository; _equipmentInfoRepository = equipmentInfoRepository; _equipmentTypeRepository = equipmentTypeRepository; _masterStationRepository = masterStationRepository; _appServiceConfiguration = appServiceConfiguration; _actionContextAccessor = actionContextAccessor; _unitOfWorkManager = unitOfWorkManager; _transformerSubstationRepository = transformerSubstationRepository; _mtpRepository = mtpRepository; } /// /// 图像识别复核 主站--->子站 /// /// /// [HttpPost] [ShowApi] [Route("isas/api/other/updatetemperature")] public ExternalRequestEasyResult UpdateTemperature(UpdateTemperatureInput input) { ExternalRequestEasyResult rst = new ExternalRequestEasyResult() { Message = "成功", Status = 0 }; try { var masterStationIp = _actionContextAccessor.ActionContext.HttpContext.Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(); var masterStationRepo = _masterStationRepository.GetAll().ToList(); var masterStation = masterStationRepo.FirstOrDefault(t => t.MasterStationIp == masterStationIp); var substation = _transformerSubstationRepository.GetAll().FirstOrDefault(t => t.SubstationName == input.SubName); if (masterStation == null) { masterStation = masterStationRepo.FirstOrDefault(); } if (substation == null) { rst.Status = 1; rst.Message = "子站未找到"; return rst; } var videoRepo = _videoDevRepository.GetAllIncluding(t => t.ManufacturerInfo).ToList(); var camera = videoRepo.FirstOrDefault(t => t.DevName == input.CamName); if (camera == null) { rst.Status = 1; rst.Message = "摄像机未找到"; return rst; } if (!int.TryParse(input.PresetCode, out _)) { rst.Status = 1; rst.Message = "摄像机预置位必须是整数"; return rst; } var preset = _presetPointRepository.GetAllIncluding(t => t.VideoDev, t => t.VideoDev.ManufacturerInfo).FirstOrDefault(t => t.VideoDevId == camera.Id && t.Number == int.Parse(input.PresetCode)); if (preset == null) { rst.Status = 1; rst.Message = "预置位未找到"; return rst; } var tempRepo = _mtpRepository.GetAll().Where(t => t.PresetPointId == preset.Id); if (tempRepo == null || tempRepo.Count()==0) { rst.Status = 1; rst.Message = "该预置位下没有测温点"; return rst; } string url = "http://localhost:35701/isas/api/dataMonitoringService/home/ExcuteTemperature"; JObject rstDataJObject = ToolLibrary.HttpHelper.HttpGetRequest(url+"?"+ $"camName={input.CamName}&presetNum={input.PresetCode}"); if (rstDataJObject!=null) { } } catch (Exception ex) { Log4Helper.Error(this.GetType(), " 对外通信-主站额外需求", ex); rst.Status = 1; rst.Message = "内部错误"; return rst; } rst.Message = "已经通测温程序处理"; return rst; } } }