lixiaojun
2023-12-26 3c05a19c6896c197953df955c729d26c8dc94536
批量升级更新
已修改13个文件
已添加36个文件
2449 ■■■■■ 文件已修改
IStation.Application.SZJT/00-core/3-dto/flowmeterid/FlowMeterIDInput.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/00-core/3-dto/meterid/MeterIDInput.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/00-core/3-dto/pressmeterid/FlowMeterIDInput.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/00-core/3-dto/stationid/StationIDInput.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/07-dma-analy/DmaAnaly_LogicController.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/08-flow-meter-map/FlowMeterMap_LogicController.cs 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/08-flow-meter-map/dto/FlowMeterMapMonitorKpiInfoDto.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/08-flow-meter-map/dto/FlowMeterMapMonitorKpiLastRecordDto.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/09-press-meter-map/PressMeterMap_LogicController.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/09-press-meter-map/dto/PressMeterMapMonitorKpiInfoDto.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/09-press-meter-map/dto/PressMeterMapMonitorKpiLastRecordDto.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/01-station-list/StationList_LogicController.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/01-station-list/dto/StationListGroupMobileDto.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/01-station-list/dto/StationListItemMobileDto.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/02-meter-list/MeterList_MobileController.cs 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/02-meter-list/dto/MeterListGroupMobileDto.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/02-meter-list/dto/MeterListItemMobileDto.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/03-station-monitor-list/StationMonitorList_MobileController.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/03-station-monitor-list/dto/StationMonitorListGroupMobileDto.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/03-station-monitor-list/dto/StationMonitorListItemMobileDto.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/04-meter-monitor-list/MeterMonitorList_MobileController.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/04-meter-monitor-list/dto/MeterMonitorListItemMobileDto.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/Map_MobileController.cs 439 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/1-station/StationMapMobileDto.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/1-station/StationMapMonitorKpiInfoMobileDto.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/1-station/StationMapMonitorKpiLastRecordMobileDto.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/1-station/StationMapMonitorKpiLastStatusMobileDto.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/2-flow-meter/FlowMeterMapMobileDto.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/2-flow-meter/FlowMeterMapMonitorKpiInfoMobileDto.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/2-flow-meter/FlowMeterMapMonitorKpiLastRecordMobileDto.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/3-press-meter/PressMeterMapMobileDto.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/3-press-meter/PressMeterMapMonitorKpiInfoMobileDto.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/3-press-meter/PressMeterMapMonitorKpiLastRecordMobileDto.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/4-repair/RepairMapMobileDto.cs 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/4-repair/RepairMapStatusMobileDto.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/5-dma/DmaMapMobileDto.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/IStation.Application.SZJT.csproj 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Entry.SZJT/IStation.Entry.SZJT.csproj 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Entry.SZJT/Properties/PublishProfiles/FolderProfile.pubxml.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Entry.SZJT/appsettings.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Server.SZJT/1-equipment-run-analy/2-single/EquipmentRunAnalyChangeTimesHelper.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Server.SZJT/GlobalUsings.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Server.SZJT/IStation.Server.SZJT.csproj 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Service.SZJT/0-core/Catalog.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Service.SZJT/0-core/DataType.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Service.SZJT/0-core/Flags.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Service.SZJT/IStation.Service.SZJT.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.TopShelf.SZJT/IStation.TopShelf.SZJT.csproj.user 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.TopShelf.SZJT/Properties/PublishProfiles/FolderProfile.pubxml.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
IStation.Application.SZJT/00-core/3-dto/flowmeterid/FlowMeterIDInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class FlowMeterIDInput
    {
        /// <summary>
        ///
        /// </summary>
        [Required, Range(1, long.MaxValue, ErrorMessage = "FlowMeterID å¿…须大于0")]
        public long FlowMeterID { get; set; }
    }
}
IStation.Application.SZJT/00-core/3-dto/meterid/MeterIDInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class MeterIDInput
    {
        /// <summary>
        ///
        /// </summary>
        [Required, Range(1, long.MaxValue, ErrorMessage = "MeterID å¿…须大于0")]
        public long MeterID { get; set; }
    }
}
IStation.Application.SZJT/00-core/3-dto/pressmeterid/FlowMeterIDInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class PressMeterIDInput
    {
        /// <summary>
        ///
        /// </summary>
        [Required, Range(1, long.MaxValue, ErrorMessage = "PressMeterID å¿…须大于0")]
        public long PressMeterID { get; set; }
    }
}
IStation.Application.SZJT/00-core/3-dto/stationid/StationIDInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class StationIDInput
    {
        /// <summary>
        ///
        /// </summary>
        [Required, Range(1, long.MaxValue, ErrorMessage = "StationID å¿…须大于0")]
        public long StationID { get; set; }
    }
}
IStation.Application.SZJT/99-logic/07-dma-analy/DmaAnaly_LogicController.cs
@@ -72,8 +72,6 @@
            }
            return vm_list;
        }
        #endregion
@@ -149,7 +147,19 @@
        [HttpGet]
        public List<DmaAnalyAreaDayStatusDto> GetAreaDayStatusList([FromQuery][Required] QueryDmaAreaDayStatusListInput input)
        {
            return default;
            var vmList = new List<DmaAnalyAreaDayStatusDto>();
            for (DateTime i = input.StartDay.Date; i <= input.EndDay.Date; i = i.AddDays(1))
            {
                var vm = new DmaAnalyAreaDayStatusDto();
                vm.Day = i;
                vm.InVol = RandomHelper.Random(4000, 5000);
                vm.OutVol = RandomHelper.Random(1000, 2000);
                vm.ReadVol = RandomHelper.Random(2000, 3000);
                vm.UseVol = vm.InVol - vm.OutVol;
                vm.LeakRate = null;
                vmList.Add(vm);
            }
            return vmList;
        }
        /// <summary>
@@ -157,9 +167,36 @@
        /// </summary>
        [Route("GetAreaMonthStatusList@V1.0")]
        [HttpGet]
        public List<DmaAnalyAreaDayStatusDto> GetAreaMonthStatusList([FromQuery][Required] QueryDmaAreaMonthStatusListInput input)
        public List<DmaAnalyAreaMonthStatusDto> GetAreaMonthStatusList([FromQuery][Required] QueryDmaAreaMonthStatusListInput input)
        {
            return default;
            var vmList = new List<DmaAnalyAreaMonthStatusDto>();
            for (int i = input.StartYear; i <= input.EndYear; i++)
            {
                var min = 1;
                if (i == input.StartYear)
                {
                    min = input.StartMonth;
                }
                var max = 12;
                if (i == input.EndYear)
                {
                    max = input.EndMonth;
                }
                for (int j = min; j <= max; j++)
                {
                    var vm = new DmaAnalyAreaMonthStatusDto();
                    vm.Year = i;
                    vm.Month = j;
                    vm.InVol = RandomHelper.Random(4000, 5000);
                    vm.OutVol = RandomHelper.Random(1000, 2000);
                    vm.ReadVol = RandomHelper.Random(2000, 3000);
                    vm.UseVol = vm.InVol - vm.OutVol;
                    vm.LeakRate = null;
                    vmList.Add(vm);
                }
            }
            return vmList;
        }
        #endregion
@@ -264,7 +301,19 @@
        [HttpGet]
        public List<DmaAnalySiteDayStatusDto> GetSiteDayStatusList([FromQuery][Required] QueryDmaSiteDayStatusListInput input)
        {
            return default;
            var vmList = new List<DmaAnalySiteDayStatusDto>();
            for (DateTime i = input.StartDay.Date; i <= input.EndDay.Date; i = i.AddDays(1))
            {
                var vm = new DmaAnalySiteDayStatusDto();
                vm.Day = i;
                vm.Value = RandomHelper.Random(1000, 5000);
                if (vm.Value > 4000)
                {
                    vm.Value = null;
                }
                vmList.Add(vm);
            }
            return vmList;
        }
        /// <summary>
@@ -272,9 +321,36 @@
        /// </summary>
        [Route("GetSiteMonthStatusList@V1.0")]
        [HttpGet]
        public List<DmaAnalySiteDayStatusDto> GetSiteMonthStatusList([FromQuery][Required] QueryDmaSiteDayStatusListInput input)
        public List<DmaAnalySiteMonthStatusDto> GetSiteMonthStatusList([FromQuery][Required] QueryDmaSiteMonthStatusListInput input)
        {
            return default;
            var vmList = new List<DmaAnalySiteMonthStatusDto>();
            for (int i = input.StartYear; i <= input.EndYear; i++)
            {
                var min = 1;
                if (i == input.StartYear)
                {
                    min = input.StartMonth;
                }
                var max = 12;
                if (i == input.EndYear)
                {
                    max = input.EndMonth;
                }
                for (int j = min; j <= max; j++)
                {
                    var vm = new DmaAnalySiteMonthStatusDto();
                    vm.Year = i;
                    vm.Month = j;
                    vm.Value = RandomHelper.Random(1000, 5000);
                    if (vm.Value > 4000)
                    {
                        vm.Value = null;
                    }
                    vmList.Add(vm);
                }
            }
            return vmList;
        }
        #endregion
IStation.Application.SZJT/99-logic/08-flow-meter-map/FlowMeterMap_LogicController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
namespace IStation.Application
{
    /// <summary>
    /// FlowMeterMap
    /// </summary>
    [Route("SZJT/Flow/Meter/Map/Logic")]
    [ApiDescriptionSettings("SZJT", Name = "流量计地图(Logic)", Order = 4000)]
    public class FlowMeterMap_LogicController : IDynamicApiController
    {
        /// <summary>
        /// èŽ·å–ç›‘æµ‹Kpi列表
        /// </summary>
        [Route("GetMonitorKpiList@V1.0")]
        [HttpGet]
        public List<FlowMeterMapMonitorKpiInfoDto> GetMonitorKpiList([FromQuery][Required] BelongInput input)
        {
            var catalogList = new Yw.Service.SysCatalog().GetChildAndSelfByCode(IStation.Catalog.FlowMeter);
            if (catalogList == null || catalogList.Count < 1)
            {
                throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, "流量计分类编码验证失败");
            }
            var catalogIds = catalogList.Select(x => x.ID).Distinct().ToList();
            var allMeterList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(input.BelongType, input.BelongID);
            allMeterList = allMeterList?.Where(x => catalogIds.Contains(x.CatalogID)).ToList();
            if (allMeterList == null || allMeterList.Count < 1)
            {
                return default;
            }
            var service_monitor_mapping = new Yw.Service.EquipmentMonitorMapping();
            var service_monitor = new Lazy<Yw.Service.MonitorPoint>(() => new Yw.Service.MonitorPoint());
            var service_monitor_record = new Lazy<Yw.Service.MonitorRealRecord>(() => new Yw.Service.MonitorRealRecord());
            var service_map = new Lazy<Yw.Service.MapInfo>(() => new Yw.Service.MapInfo());
            var vmList = new List<FlowMeterMapMonitorKpiInfoDto>();
            foreach (var meter in allMeterList)
            {
                var vm = new FlowMeterMapMonitorKpiInfoDto(meter);
                vmList.Add(vm);
                var mapInfo = service_map.Value.Get(Yw.Assets.DataType.Equipment, meter.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
                if (mapInfo != null)
                {
                    vm.Position = Yw.Model.Map.Marker.ToModel(mapInfo.Position);
                }
                var monitor_mapping_list = service_monitor_mapping.GetByEquipmentID(meter.ID);
                if (monitor_mapping_list != null && monitor_mapping_list.Count > 0)
                {
                    var monitorIds = monitor_mapping_list.Select(x => x.MonitorPointID).Distinct().ToList();
                    var monitor_list = service_monitor.Value.GetExSignalWithSignalTypeByIds(monitorIds);
                    monitor_list = monitor_list?.Where(x => x.UseStatus == Yw.Model.eUseStatus.Enable).ToList();
                    monitor_list = monitor_list?.Where(x => x.CronType == Yw.Monitor.eCronType.Real).ToList();
                    if (monitor_list != null && monitor_list.Count > 0)
                    {
                        var monitorQ = monitor_list.Find(x => x.Flags.Contains(IStation.Flags.默认) && x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.瞬时流量));
                        if (monitorQ == null)
                        {
                            monitorQ = monitor_list.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.瞬时流量));
                        }
                        if (monitorQ != null)
                        {
                            var signalQ = monitorQ.SignalList.First();
                            var last_record = service_monitor_record.Value.GetLastRecord(signalQ.ID);
                            if (last_record != null)
                            {
                                vm.LastRecordList.Add(new FlowMeterMapMonitorKpiLastRecordDto(monitorQ, last_record));
                            }
                        }
                        var monitorQl = monitor_list.Find(x => x.Flags.Contains(IStation.Flags.默认) && x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.累积流量));
                        if (monitorQl == null)
                        {
                            monitorQl = monitor_list.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.累积流量));
                        }
                        if (monitorQl != null)
                        {
                            var signalQl = monitorQl.SignalList.First();
                            var last_record = service_monitor_record.Value.GetLastRecord(signalQl.ID);
                            if (last_record != null)
                            {
                                vm.LastRecordList.Add(new FlowMeterMapMonitorKpiLastRecordDto(monitorQl, last_record));
                            }
                        }
                    }
                }
            }
            return vmList;
        }
    }
}
IStation.Application.SZJT/99-logic/08-flow-meter-map/dto/FlowMeterMapMonitorKpiInfoDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
namespace IStation.Application
{
    /// <summary>
    /// ç›‘测地图KPI信息
    /// </summary>
    public class FlowMeterMapMonitorKpiInfoDto
    {
        /// <summary>
        ///
        /// </summary>
        public FlowMeterMapMonitorKpiInfoDto(Yw.Model.Equipment rhs)
        {
            this.FlowMeterID = rhs.ID;
            this.Name = rhs.Name;
            this.LastRecordList = new List<FlowMeterMapMonitorKpiLastRecordDto>();
        }
        /// <summary>
        /// æµé‡è®¡id
        /// </summary>
        public long FlowMeterID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ä½ç½®
        /// </summary>
        public Yw.Model.Map.Marker Position { get; set; }
        /// <summary>
        /// æœ€åŽè®°å½•列表
        /// </summary>
        public List<FlowMeterMapMonitorKpiLastRecordDto> LastRecordList { get; set; }
    }
}
IStation.Application.SZJT/99-logic/08-flow-meter-map/dto/FlowMeterMapMonitorKpiLastRecordDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
namespace IStation.Application
{
    /// <summary>
    /// æµé‡è®¡ç›‘测kpi最近记录dto
    /// </summary>
    public class FlowMeterMapMonitorKpiLastRecordDto
    {
        /// <summary>
        ///
        /// </summary>
        public FlowMeterMapMonitorKpiLastRecordDto(Yw.Model.MonitorPoint_Signal_SignalType monitor, Yw.Model.MonitorRealRecord record)
        {
            this.SignalID = monitor.SignalList.First().ID;
            this.Name = monitor.Name;
            this.Code = monitor.SignalList.First().SignalType.Code;
            this.DataTime = record?.DataTime;
            this.DataValue = monitor.SignalList.First().GetDisplayValue(record?.DataValue);
            this.UnitName = monitor.SignalList.First().GetDisplayUnitName();
            this.DataStatus = record?.DataStatus;
        }
        /// <summary>
        /// ä¿¡å·id
        /// </summary>
        public long SignalID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// æ•°æ®æ—¶é—´
        /// </summary>
        public DateTime? DataTime { get; set; }
        /// <summary>
        /// æ•°æ®å€¼
        /// </summary>
        public string DataValue { get; set; }
        /// <summary>
        /// å•位
        /// </summary>
        public string UnitName { get; set; }
        /// <summary>
        /// æ•°æ®çŠ¶æ€
        /// </summary>
        public List<string> DataStatus { get; set; }
    }
}
IStation.Application.SZJT/99-logic/09-press-meter-map/PressMeterMap_LogicController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
namespace IStation.Application
{
    /// <summary>
    /// PressMeterMap
    /// </summary>
    [Route("SZJT/Press/Meter/Map/Logic")]
    [ApiDescriptionSettings("SZJT", Name = "压力计地图(Logic)", Order = 3000)]
    public class PressMeterMap_LogicController : IDynamicApiController
    {
        /// <summary>
        /// èŽ·å–ç›‘æµ‹Kpi列表
        /// </summary>
        [Route("GetMonitorKpiList@V1.0")]
        [HttpGet]
        public List<PressMeterMapMonitorKpiInfoDto> GetMonitorKpiList([FromQuery][Required] BelongInput input)
        {
            var catalogList = new Yw.Service.SysCatalog().GetChildAndSelfByCode(IStation.Catalog.PressMeter);
            if (catalogList == null || catalogList.Count < 1)
            {
                throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, "压力计分类编码验证失败");
            }
            var catalogIds = catalogList.Select(x => x.ID).Distinct().ToList();
            var allMeterList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(input.BelongType, input.BelongID);
            allMeterList = allMeterList?.Where(x => catalogIds.Contains(x.CatalogID)).ToList();
            if (allMeterList == null || allMeterList.Count < 1)
            {
                return default;
            }
            var service_monitor_mapping = new Yw.Service.EquipmentMonitorMapping();
            var service_monitor = new Lazy<Yw.Service.MonitorPoint>(() => new Yw.Service.MonitorPoint());
            var service_monitor_record = new Lazy<Yw.Service.MonitorRealRecord>(() => new Yw.Service.MonitorRealRecord());
            var service_map = new Lazy<Yw.Service.MapInfo>(() => new Yw.Service.MapInfo());
            var vmList = new List<PressMeterMapMonitorKpiInfoDto>();
            foreach (var meter in allMeterList)
            {
                var vm = new PressMeterMapMonitorKpiInfoDto(meter);
                vmList.Add(vm);
                var mapInfo = service_map.Value.Get(Yw.Assets.DataType.Equipment, meter.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
                if (mapInfo != null)
                {
                    vm.Position = Yw.Model.Map.Marker.ToModel(mapInfo.Position);
                }
                var monitor_mapping_list = service_monitor_mapping.GetByEquipmentID(meter.ID);
                if (monitor_mapping_list != null && monitor_mapping_list.Count > 0)
                {
                    var monitorIds = monitor_mapping_list.Select(x => x.MonitorPointID).Distinct().ToList();
                    var monitor_list = service_monitor.Value.GetExSignalWithSignalTypeByIds(monitorIds);
                    monitor_list = monitor_list?.Where(x => x.UseStatus == Yw.Model.eUseStatus.Enable).ToList();
                    monitor_list = monitor_list?.Where(x => x.CronType == Yw.Monitor.eCronType.Real).ToList();
                    if (monitor_list != null && monitor_list.Count > 0)
                    {
                        var monitorPr = monitor_list.Find(x => x.Flags.Contains(IStation.Flags.默认) && x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.压力));
                        if (monitorPr == null)
                        {
                            monitorPr = monitor_list.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.压力));
                        }
                        if (monitorPr != null)
                        {
                            var signalPr = monitorPr.SignalList.First();
                            var last_record = service_monitor_record.Value.GetLastRecord(signalPr.ID);
                            if (last_record != null)
                            {
                                vm.LastRecordList.Add(new PressMeterMapMonitorKpiLastRecordDto(monitorPr, last_record));
                            }
                        }
                    }
                }
            }
            return vmList;
        }
    }
}
IStation.Application.SZJT/99-logic/09-press-meter-map/dto/PressMeterMapMonitorKpiInfoDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
namespace IStation.Application
{
    /// <summary>
    /// ç›‘测地图KPI信息
    /// </summary>
    public class PressMeterMapMonitorKpiInfoDto
    {
        /// <summary>
        ///
        /// </summary>
        public PressMeterMapMonitorKpiInfoDto(Yw.Model.Equipment rhs)
        {
            this.PressMeterID = rhs.ID;
            this.Name = rhs.Name;
            this.LastRecordList = new List<PressMeterMapMonitorKpiLastRecordDto>();
        }
        /// <summary>
        /// åŽ‹åŠ›è®¡id
        /// </summary>
        public long PressMeterID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ä½ç½®
        /// </summary>
        public Yw.Model.Map.Marker Position { get; set; }
        /// <summary>
        /// æœ€åŽè®°å½•列表
        /// </summary>
        public List<PressMeterMapMonitorKpiLastRecordDto> LastRecordList { get; set; }
    }
}
IStation.Application.SZJT/99-logic/09-press-meter-map/dto/PressMeterMapMonitorKpiLastRecordDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
namespace IStation.Application
{
    /// <summary>
    /// åŽ‹åŠ›è®¡ç›‘æµ‹kpi最近记录dto
    /// </summary>
    public class PressMeterMapMonitorKpiLastRecordDto
    {
        /// <summary>
        ///
        /// </summary>
        public PressMeterMapMonitorKpiLastRecordDto(Yw.Model.MonitorPoint_Signal_SignalType monitor, Yw.Model.MonitorRealRecord record)
        {
            this.SignalID = monitor.SignalList.First().ID;
            this.Name = monitor.Name;
            this.Code = monitor.SignalList.First().SignalType.Code;
            this.DataTime = record?.DataTime;
            this.DataValue = monitor.SignalList.First().GetDisplayValue(record?.DataValue);
            this.UnitName = monitor.SignalList.First().GetDisplayUnitName();
            this.DataStatus = record?.DataStatus;
        }
        /// <summary>
        /// ä¿¡å·id
        /// </summary>
        public long SignalID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// æ•°æ®æ—¶é—´
        /// </summary>
        public DateTime? DataTime { get; set; }
        /// <summary>
        /// æ•°æ®å€¼
        /// </summary>
        public string DataValue { get; set; }
        /// <summary>
        /// å•位
        /// </summary>
        public string UnitName { get; set; }
        /// <summary>
        /// æ•°æ®çŠ¶æ€
        /// </summary>
        public List<string> DataStatus { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/01-station-list/StationList_LogicController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
namespace IStation.Application
{
    /// <summary>
    /// StationList
    /// </summary>
    [Route("SZJT/Station/List/Mobile")]
    [ApiDescriptionSettings("SZJT", Name = "泵站列表(手机)", Order = 2000)]
    public class StationList_MobileController : IDynamicApiController
    {
        /// <summary>
        /// èŽ·å–æ‰€æœ‰
        /// </summary>
        [Route("GetAll@V1.0")]
        [HttpGet]
        public List<StationListGroupMobileDto> GetAll()
        {
            var keyContent = $"SZJT_Station_List_Mobile_GetAll";
            var cacheKey = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.WebApiLevel, MemoryCacheKey.Module, keyContent);
            var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
            {
                #region èŽ·å–é»˜è®¤ç­–ç•¥
                var allPolicyList = new Service.LogicPolicy().GetAll();
                Service.LogicPolicy.PublishCache(cacheKey);
                var policy = allPolicyList?.Find(x => x.Flags.Contains(IStation.Flags.默认));
                if (policy == null)
                {
                    policy = allPolicyList?.FirstOrDefault();
                }
                if (policy == null)
                {
                    return default;
                }
                #endregion
                #region èŽ·å–æ¸…å•åˆ—è¡¨
                var allLogicTreeList = new Service.LogicTree().GetExByPolicyID(policy.ID);
                Service.LogicTree.PublishCache(cacheKey);
                if (allLogicTreeList == null || allLogicTreeList.Count < 1)
                {
                    return default;
                }
                #endregion
                var vmList = new List<StationListGroupMobileDto>();
                var service_map = new Yw.Service.MapInfo();
                foreach (var logicTree in allLogicTreeList)
                {
                    if (logicTree.LogicType == IStation.DataType.LogicArea)
                    {
                        var group = new StationListGroupMobileDto();
                        group.ID = logicTree.LogicID;
                        group.Name = logicTree.Name;
                        group.SortCode = logicTree.SortCode;
                        group.Description = logicTree.Description;
                        group.StationList = new List<StationListItemMobileDto>();
                        vmList.Add(group);
                        continue;
                    }
                    if (logicTree.LogicType == IStation.DataType.LogicSite)
                    {
                        var station = new StationListItemMobileDto();
                        station.ID = logicTree.LogicID;
                        station.Name = logicTree.Name;
                        station.SortCode = logicTree.SortCode;
                        station.Description = logicTree.Description;
                        var mapInfo = service_map.Get(logicTree.LogicType, logicTree.LogicID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
                        if (mapInfo != null)
                        {
                            var marker = Yw.Model.Map.Marker.ToModel(mapInfo.Position);
                            if (marker != null)
                            {
                                station.Address = marker.Address;
                            }
                        }
                        var parentLogicTree = allLogicTreeList.Find(x => logicTree.ParentIds.LastOrDefault() == x.ID);
                        if (parentLogicTree != null)
                        {
                            if (parentLogicTree.LogicType == IStation.DataType.LogicArea)
                            {
                                var group = vmList.Find(x => x.ID == parentLogicTree.LogicID);
                                if (group != null)
                                {
                                    group.StationList.Add(station);
                                }
                            }
                        }
                    }
                }
                return vmList;
            }, CacheHelper.CacheLevel1);
            return vm_list;
        }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/01-station-list/dto/StationListGroupMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class StationListGroupMobileDto
    {
        /// <summary>
        /// id
        /// </summary>
        public long ID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// æŽ’序码
        /// </summary>
        public int SortCode { get; set; }
        /// <summary>
        /// è¯´æ˜Ž
        /// </summary>
        public string Description { get; set; }
        /// <summary>
        /// æ³µç«™åˆ—表
        /// </summary>
        public List<StationListItemMobileDto> StationList { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/01-station-list/dto/StationListItemMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class StationListItemMobileDto
    {
        /// <summary>
        /// id
        /// </summary>
        public long ID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// åœ°å€
        /// </summary>
        public string Address { get; set; }
        /// <summary>
        /// æŽ’序码
        /// </summary>
        public int SortCode { get; set; }
        /// <summary>
        /// è¯´æ˜Ž
        /// </summary>
        public string Description { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/02-meter-list/MeterList_MobileController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,152 @@
namespace IStation.Application
{
    /// <summary>
    /// MeterList
    /// </summary>
    [Route("SZJT/Meter/List/Mobile")]
    [ApiDescriptionSettings("SZJT", Name = "仪表列表(手机)", Order = 1900)]
    public class MeterList_MobileController : IDynamicApiController
    {
        /// <summary>
        /// èŽ·å–æ‰€æœ‰
        /// </summary>
        [Route("GetAll@V1.0")]
        [HttpGet]
        public List<MeterListGroupMobileDto> GetAll()
        {
            var keyContent = $"SZJT_Meter_List_Mobile_GetAll";
            var cacheKey = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.WebApiLevel, MemoryCacheKey.Module, keyContent);
            var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
            {
                #region æ•°æ®å‡†å¤‡
                var allEquipmentList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(IStation.DataType.LogicDma, 1);
                Yw.Service.Equipment.PublishCache(cacheKey);
                if (allEquipmentList == null || allEquipmentList.Count < 1)
                {
                    return default;
                }
                var service_catalog = new Yw.Service.SysCatalog();
                var service_map = new Yw.Service.MapInfo();
                var vmList = new List<MeterListGroupMobileDto>();
                #endregion
                #region æµé‡è®¡
                var vm_group_flow = new MeterListGroupMobileDto()
                {
                    ID = 1,
                    Name = "流量计",
                    SortCode = 1,
                    Description = string.Empty
                };
                vmList.Add(vm_group_flow);
                var allFlowCatalogList = service_catalog.GetChildAndSelfByCode(IStation.Catalog.FlowMeter);
                if (allFlowCatalogList != null && allFlowCatalogList.Count > 0)
                {
                    var allFlowCatalogIds = allFlowCatalogList.Select(x => x.ID).Distinct().ToList();
                    var allFlowList = allEquipmentList.Where(x => allFlowCatalogIds.Contains(x.CatalogID)).ToList();
                    if (allFlowList != null && allFlowList.Count > 0)
                    {
                        vm_group_flow.MeterList = new List<MeterListItemMobileDto>();
                        foreach (var flow in allFlowList)
                        {
                            var vm_meter_flow = new MeterListItemMobileDto(flow);
                            vm_group_flow.MeterList.Add(vm_meter_flow);
                            var mapInfo = service_map.Get(Yw.Assets.DataType.Equipment, flow.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
                            if (mapInfo != null)
                            {
                                var marker = Yw.Model.Map.Marker.ToModel(mapInfo.Position);
                                if (marker != null)
                                {
                                    vm_meter_flow.Address = marker.Address;
                                }
                            }
                        }
                    }
                }
                #endregion
                #region åŽ‹åŠ›è®¡
                var vm_group_press = new MeterListGroupMobileDto()
                {
                    ID = 2,
                    Name = "压力计",
                    SortCode = 2,
                    Description = string.Empty
                };
                vmList.Add(vm_group_press);
                var allPressMeterList = service_catalog.GetChildAndSelfByCode(IStation.Catalog.PressMeter);
                if (allPressMeterList != null && allPressMeterList.Count > 0)
                {
                    var allPressCatalogIds = allPressMeterList.Select(x => x.ID).Distinct().ToList();
                    var allPressList = allEquipmentList.Where(x => allPressCatalogIds.Contains(x.CatalogID)).ToList();
                    if (allPressList != null && allPressList.Count > 0)
                    {
                        vm_group_press.MeterList = new List<MeterListItemMobileDto>();
                        foreach (var press in allPressList)
                        {
                            var vm_meter_press = new MeterListItemMobileDto(press);
                            vm_group_press.MeterList.Add(vm_meter_press);
                            var mapInfo = service_map.Get(Yw.Assets.DataType.Equipment, press.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
                            if (mapInfo != null)
                            {
                                var marker = Yw.Model.Map.Marker.ToModel(mapInfo.Position);
                                if (marker != null)
                                {
                                    vm_meter_press.Address = marker.Address;
                                }
                            }
                        }
                    }
                }
                #endregion
                #region åŠŸçŽ‡è¡¨
                //var vm_group_power = new MeterListGroupMobileDto()
                //{
                //    ID = 3,
                //    Name = "功率表",
                //    SortCode = 3,
                //    Description = string.Empty
                //};
                //vmList.Add(vm_group_power);
                #endregion
                #region æ°´è´¨ä»ª
                //var vm_group_water = new MeterListGroupMobileDto()
                //{
                //    ID = 4,
                //    Name = "水质仪",
                //    SortCode = 4,
                //    Description = string.Empty
                //};
                //vmList.Add(vm_group_water);
                #endregion
                return vmList;
            }, CacheHelper.CacheLevel1);
            return vm_list;
        }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/02-meter-list/dto/MeterListGroupMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class MeterListGroupMobileDto
    {
        /// <summary>
        /// id
        /// </summary>
        public long ID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// æŽ’序码
        /// </summary>
        public int SortCode { get; set; }
        /// <summary>
        /// è¯´æ˜Ž
        /// </summary>
        public string Description { get; set; }
        /// <summary>
        /// ä»ªè¡¨åˆ—表
        /// </summary>
        public List<MeterListItemMobileDto> MeterList { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/02-meter-list/dto/MeterListItemMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class MeterListItemMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public MeterListItemMobileDto(Yw.Model.Equipment rhs)
        {
            this.ID = rhs.ID;
            this.Name = rhs.Name;
            this.ModelType = rhs.ModelType;
            this.Specification = rhs.Specification;
            this.SortCode = rhs.SortCode;
            this.Description = rhs.Description;
        }
        /// <summary>
        /// id
        /// </summary>
        public long ID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// åž‹å·
        /// </summary>
        public string ModelType { get; set; }
        /// <summary>
        /// è§„æ ¼
        /// </summary>
        public string Specification { get; set; }
        /// <summary>
        /// åœ°å€
        /// </summary>
        public string Address { get; set; }
        /// <summary>
        /// æŽ’序码
        /// </summary>
        public int SortCode { get; set; }
        /// <summary>
        /// è¯´æ˜Ž
        /// </summary>
        public string Description { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/03-station-monitor-list/StationMonitorList_MobileController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
namespace IStation.Application
{
    /// <summary>
    /// StationMonitorList
    /// </summary>
    [Route("SZJT/Station/Monitor/List/Mobile")]
    [ApiDescriptionSettings("SZJT", Name = "泵站监测列表(手机)", Order = 1800)]
    public class StationMonitorList_MobileController : IDynamicApiController
    {
        /// <summary>
        /// é€šè¿‡ StationID èŽ·å–
        /// </summary>
        [Route("GetByStationID@V1.0")]
        [HttpGet]
        public List<StationMonitorListGroupMobileDto> GetByStationID([FromQuery][Required] StationIDInput input)
        {
            var allGroupList = new Yw.Service.MonitorPointGroup().GetByBelongTypeAndBelongID(IStation.DataType.LogicSite, input.StationID);
            if (allGroupList == null || allGroupList.Count < 1)
            {
                return default;
            }
            var service_monitor = new Yw.Service.MonitorPoint();
            var service_monitor_record = new Yw.Service.MonitorRealRecord();
            var vmList = new List<StationMonitorListGroupMobileDto>();
            foreach (var group in allGroupList)
            {
                var vm_group = new StationMonitorListGroupMobileDto(group);
                vmList.Add(vm_group);
                var allMonitorList = service_monitor.GetExSignalWithSignalTypeByGroupID(group.ID);
                allMonitorList = allMonitorList?.Where(x => x.UseStatus == Yw.Model.eUseStatus.Enable).ToList();
                allMonitorList = allMonitorList?.Where(x => x.CronType == Yw.Monitor.eCronType.Real).ToList();
                if (allMonitorList != null && allMonitorList.Count > 1)
                {
                    foreach (var monitor in allMonitorList)
                    {
                        var signal = monitor.SignalList.First();
                        var record = service_monitor_record.GetLastRecord(signal.ID);
                        var vm_monitor = new StationMonitorListItemMobileDto(monitor, signal, record);
                        vm_group.MonitorList.Add(vm_monitor);
                    }
                    if (group.Flags.Contains(IStation.Flags.机组))
                    {
                        var monitor_run_list = allMonitorList.Where(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.运行状态)).ToList();
                        if (monitor_run_list != null && monitor_run_list.Count > 0)
                        {
                            var monitor_run = monitor_run_list.Find(x => x.Flags.Contains(IStation.Flags.默认));
                            if (monitor_run == null)
                            {
                                monitor_run = monitor_run_list.First();
                            }
                            vm_group.RunStatus = vm_group.MonitorList.Find(x => x.SignalID == monitor_run.SignalList.First().ID)?.DataValue;
                        }
                    }
                }
            }
            return vmList;
        }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/03-station-monitor-list/dto/StationMonitorListGroupMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class StationMonitorListGroupMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public StationMonitorListGroupMobileDto(Yw.Model.MonitorPointGroup rhs)
        {
            this.ID = rhs.ID;
            this.Name = rhs.Name;
            this.SortCode = rhs.SortCode;
            this.Description = rhs.Description;
            this.MonitorList = new List<StationMonitorListItemMobileDto>();
        }
        /// <summary>
        /// id
        /// </summary>
        public long ID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// è¿è¡ŒçŠ¶æ€
        /// </summary>
        public string RunStatus { get; set; }
        /// <summary>
        /// æŽ’序码
        /// </summary>
        public int SortCode { get; set; }
        /// <summary>
        /// è¯´æ˜Ž
        /// </summary>
        public string Description { get; set; }
        /// <summary>
        /// ç›‘测项列表
        /// </summary>
        public List<StationMonitorListItemMobileDto> MonitorList { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/03-station-monitor-list/dto/StationMonitorListItemMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class StationMonitorListItemMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public StationMonitorListItemMobileDto(Yw.Model.MonitorPoint monitor, Yw.Model.Signal_SignalType signal, Yw.Model.MonitorRealRecord record)
        {
            this.Name = monitor.Name;
            this.Code = signal.SignalType.Code;
            this.SignalID = signal.ID;
            this.DataValue = signal.GetDisplayValue(record?.DataValue);
            this.UnitName = signal.GetDisplayUnitName();
            this.DataStatus = Yw.Monitor.eDataStatus.Normal;
            if (record != null)
            {
                if (!Yw.Monitor.DataStatus.IsNormal(record.DataStatus))
                {
                    this.DataStatus = Yw.Monitor.eDataStatus.Error;
                }
            }
            this.SortCode = monitor.SortCode;
            this.Description = monitor.Description;
        }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// ä¿¡å·id
        /// </summary>
        public long SignalID { get; set; }
        /// <summary>
        /// æ•°æ®å€¼
        /// </summary>
        public string DataValue { get; set; }
        /// <summary>
        /// å•位名称
        /// </summary>
        public string UnitName { get; set; }
        /// <summary>
        /// æ•°æ®çŠ¶æ€
        /// </summary>
        public Yw.Monitor.eDataStatus DataStatus { get; set; }
        /// <summary>
        /// æŽ’序码
        /// </summary>
        public int SortCode { get; set; }
        /// <summary>
        /// è¯´æ˜Ž
        /// </summary>
        public string Description { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/04-meter-monitor-list/MeterMonitorList_MobileController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
namespace IStation.Application
{
    /// <summary>
    /// MeterMonitorList
    /// </summary>
    [Route("SZJT/Meter/Monitor/List/Mobile")]
    [ApiDescriptionSettings("SZJT", Name = "仪表监测列表(手机)", Order = 1700)]
    public class MeterMonitorList_MobileController : IDynamicApiController
    {
        /// <summary>
        /// é€šè¿‡ MeterID èŽ·å–
        /// </summary>
        [Route("GetByMeterID@V1.0")]
        [HttpGet]
        public List<MeterMonitorListItemMobileDto> GetByMeterID([FromQuery][Required] MeterIDInput input)
        {
            var allMappingList = new Yw.Service.EquipmentMonitorMapping().GetByEquipmentID(input.MeterID);
            if (allMappingList == null || allMappingList.Count < 1)
            {
                return default;
            }
            var allMonitorIds = allMappingList.Select(x => x.MonitorPointID).Distinct().ToList();
            var allMonitorList = new Yw.Service.MonitorPoint().GetExSignalWithSignalTypeByIds(allMonitorIds);
            allMonitorList = allMonitorList?.Where(x => x.UseStatus == Yw.Model.eUseStatus.Enable).ToList();
            allMonitorList = allMonitorList?.Where(x => x.CronType == Yw.Monitor.eCronType.Real).ToList();
            if (allMonitorList == null || allMonitorList.Count < 1)
            {
                return default;
            }
            var service_monitor_record = new Yw.Service.MonitorRealRecord();
            var vmList = new List<MeterMonitorListItemMobileDto>();
            foreach (var monitor in allMonitorList)
            {
                var signal = monitor.SignalList.First();
                var record = service_monitor_record.GetLastRecord(signal.ID);
                var vm = new MeterMonitorListItemMobileDto(monitor, signal, record);
                vmList.Add(vm);
            }
            return vmList;
        }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/04-meter-monitor-list/dto/MeterMonitorListItemMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class MeterMonitorListItemMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public MeterMonitorListItemMobileDto(Yw.Model.MonitorPoint monitor, Yw.Model.Signal_SignalType signal, Yw.Model.MonitorRealRecord record)
        {
            this.Name = monitor.Name;
            this.Code = signal.SignalType.Code;
            this.SignalID = signal.ID;
            this.DataValue = signal.GetDisplayValue(record?.DataValue);
            this.UnitName = signal.GetDisplayUnitName();
            this.DataStatus = Yw.Monitor.eDataStatus.Normal;
            if (record != null)
            {
                if (!Yw.Monitor.DataStatus.IsNormal(record.DataStatus))
                {
                    this.DataStatus = Yw.Monitor.eDataStatus.Error;
                }
            }
            this.SortCode = monitor.SortCode;
            this.Description = monitor.Description;
        }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// ä¿¡å·id
        /// </summary>
        public long SignalID { get; set; }
        /// <summary>
        /// æ•°æ®å€¼
        /// </summary>
        public string DataValue { get; set; }
        /// <summary>
        /// å•位名称
        /// </summary>
        public string UnitName { get; set; }
        /// <summary>
        /// æ•°æ®çŠ¶æ€
        /// </summary>
        public Yw.Monitor.eDataStatus DataStatus { get; set; }
        /// <summary>
        /// æŽ’序码
        /// </summary>
        public int SortCode { get; set; }
        /// <summary>
        /// è¯´æ˜Ž
        /// </summary>
        public string Description { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/Map_MobileController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,439 @@
namespace IStation.Application
{
    /// <summary>
    /// Map
    /// </summary>
    [Route("SZJT/Map/Mobile")]
    [ApiDescriptionSettings("SZJT", Name = "地图(手机)", Order = 1600)]
    public class Map_MobileController : IDynamicApiController
    {
        /// <summary>
        /// èŽ·å–æ³µç«™åˆ—è¡¨
        /// </summary>
        [Route("GetStationList@V1.0")]
        [HttpGet]
        public List<StationMapMobileDto> GetStationList()
        {
            var keyContent = $"SZJT_Map_Mobile_GetStationList";
            var cacheKey = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.WebApiLevel, MemoryCacheKey.Module, keyContent);
            var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
            {
                var allList = new Service.LogicSite().GetAll();
                Service.LogicSite.PublishCache(cacheKey);
                if (allList == null || allList.Count < 1)
                {
                    return default;
                }
                var serviceMap = new Yw.Service.MapInfo();
                var vmList = new List<StationMapMobileDto>();
                foreach (var station in allList)
                {
                    var vm = new StationMapMobileDto(station);
                    vmList.Add(vm);
                    var map = serviceMap.Get(IStation.DataType.LogicSite, station.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
                    if (map != null)
                    {
                        var position = Yw.Model.Map.Marker.ToModel(map.Position);
                        vm.Position = position;
                    }
                }
                return vmList;
            }, CacheHelper.CacheLevel3);
            return vm_list;
        }
        /// <summary>
        /// é€šè¿‡ StationID èŽ·å–ç›‘æµ‹Kpi信息
        /// </summary>
        [Route("GetMonitorKpiInfoByStationID@V1.0")]
        [HttpGet]
        public StationMapMonitorKpiInfoMobileDto GetMonitorKpiInfoByStationID([FromQuery][Required] StationIDInput input)
        {
            var station = new Service.LogicSite().GetByID(input.StationID);
            if (station == null)
            {
                throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"StationID:{input.StationID} æ•°æ®ä¸å­˜åœ¨");
            }
            var vm = new StationMapMonitorKpiInfoMobileDto(station);
            var allMonitorList = new Yw.Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(IStation.DataType.LogicSite, station.ID);
            allMonitorList = allMonitorList?.Where(x => x.UseStatus == Yw.Model.eUseStatus.Enable).ToList();
            allMonitorList = allMonitorList?.Where(x => x.CronType == Yw.Monitor.eCronType.Real).ToList();
            if (allMonitorList != null && allMonitorList.Count > 0)
            {
                allMonitorList = allMonitorList.Where(x => x.Flags.Contains(Flags.KPI)).OrderByDescending(X => X.Importance).ToList();
                if (allMonitorList.Count > 0)
                {
                    var service_monitor_record = new Yw.Service.MonitorRealRecord();
                    allMonitorList = allMonitorList.Take(4).ToList();
                    foreach (var monitor in allMonitorList)
                    {
                        var monitorRecord = service_monitor_record.GetLastRecord(monitor.SignalList.First().ID);
                        vm.LastRecordList.Add(new StationMapMonitorKpiLastRecordMobileDto(monitor, monitorRecord));
                    }
                }
            }
            var allEquipmentList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(IStation.DataType.LogicSite, station.ID);
            allEquipmentList = allEquipmentList?.Where(x => x.ParentIds.Count < 1).ToList();
            if (allEquipmentList != null && allEquipmentList.Count > 0)
            {
                var service_run_record = new Yw.Service.RunRealRecord();
                foreach (var equipment in allEquipmentList)
                {
                    var runRecord = service_run_record.GetLastRecord(Yw.Assets.DataType.Equipment, equipment.ID);
                    vm.LastStatusList.Add(new StationMapMonitorKpiLastStatusMobileDto(equipment, runRecord));
                }
            }
            return vm;
        }
        /// <summary>
        /// èŽ·å–æµé‡è®¡åˆ—è¡¨
        /// </summary>
        [Route("GetFlowMeterList@V1.0")]
        [HttpGet]
        public List<FlowMeterMapMobileDto> GetFlowMeterList()
        {
            var keyContent = $"SZJT_Map_Mobile_GetFlowMeterList";
            var cacheKey = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.WebApiLevel, MemoryCacheKey.Module, keyContent);
            var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
            {
                var catalogList = new Yw.Service.SysCatalog().GetChildAndSelfByCode(IStation.Catalog.FlowMeter);
                Yw.Service.SysCatalog.PublishCache(cacheKey);
                if (catalogList == null || catalogList.Count < 1)
                {
                    throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, "流量计分类编码验证失败");
                }
                var catalogIds = catalogList.Select(x => x.ID).Distinct().ToList();
                var allMeterList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(IStation.DataType.LogicDma, 1);
                Yw.Service.Equipment.PublishCache(cacheKey);
                allMeterList = allMeterList?.Where(x => catalogIds.Contains(x.CatalogID)).ToList();
                if (allMeterList == null || allMeterList.Count < 1)
                {
                    return default;
                }
                var service_map = new Lazy<Yw.Service.MapInfo>(() => new Yw.Service.MapInfo());
                var vmList = new List<FlowMeterMapMobileDto>();
                foreach (var meter in allMeterList)
                {
                    var vm = new FlowMeterMapMobileDto(meter);
                    vmList.Add(vm);
                    var mapInfo = service_map.Value.Get(Yw.Assets.DataType.Equipment, meter.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
                    if (mapInfo != null)
                    {
                        vm.Position = Yw.Model.Map.Marker.ToModel(mapInfo.Position);
                    }
                }
                return vmList;
            }, CacheHelper.CacheLevel3);
            return vm_list;
        }
        /// <summary>
        /// é€šè¿‡ FlowMeterID èŽ·å–ç›‘æµ‹Kpi信息
        /// </summary>
        [Route("GetMonitorKpiInfoByFlowMeterID@V1.0")]
        [HttpGet]
        public FlowMeterMapMonitorKpiInfoMobileDto GetMonitorKpiInfoByFlowMeterID([FromQuery][Required] FlowMeterIDInput input)
        {
            var equipment = new Yw.Service.Equipment().GetByID(input.FlowMeterID);
            if (equipment == null)
            {
                throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"FlowMeterID:{input.FlowMeterID} æ•°æ®ä¸å­˜åœ¨");
            }
            var catalogList = new Yw.Service.SysCatalog().GetChildAndSelfByCode(IStation.Catalog.FlowMeter);
            if (catalogList == null || catalogList.Count < 1)
            {
                throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, "流量计分类编码验证失败");
            }
            var catalogIds = catalogList.Select(x => x.ID).Distinct().ToList();
            if (!catalogIds.Contains(equipment.CatalogID))
            {
                throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, $"FlowMeterID:{input.FlowMeterID} è¯·è¾“入正确流量计id");
            }
            var vm = new FlowMeterMapMonitorKpiInfoMobileDto();
            vm.FlowMeterID = input.FlowMeterID;
            vm.Name = equipment.Name;
            vm.LastRecordList = new List<FlowMeterMapMonitorKpiLastRecordMobileDto>();
            var service_monitor_mapping = new Yw.Service.EquipmentMonitorMapping();
            var mappingList = new Yw.Service.EquipmentMonitorMapping().GetByEquipmentID(input.FlowMeterID);
            if (mappingList != null && mappingList.Count > 0)
            {
                var monitorIds = mappingList.Select(x => x.MonitorPointID).Distinct().ToList();
                var monitorList = new Yw.Service.MonitorPoint().GetExSignalWithSignalTypeByIds(monitorIds);
                monitorList = monitorList?.Where(x => x.UseStatus == Yw.Model.eUseStatus.Enable).ToList();
                monitorList = monitorList?.Where(x => x.CronType == Yw.Monitor.eCronType.Real).ToList();
                if (monitorList != null && monitorList.Count > 0)
                {
                    var service_monitor_record = new Lazy<Yw.Service.MonitorRealRecord>(() => new Yw.Service.MonitorRealRecord());
                    var monitorQ = monitorList.Find(x => x.Flags.Contains(IStation.Flags.默认) && x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.瞬时流量));
                    if (monitorQ == null)
                    {
                        monitorQ = monitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.瞬时流量));
                    }
                    if (monitorQ != null)
                    {
                        var signalQ = monitorQ.SignalList.First();
                        var last_record = service_monitor_record.Value.GetLastRecord(signalQ.ID);
                        if (last_record != null)
                        {
                            vm.LastRecordList.Add(new FlowMeterMapMonitorKpiLastRecordMobileDto(monitorQ, last_record));
                        }
                    }
                    var monitorQl = monitorList.Find(x => x.Flags.Contains(IStation.Flags.默认) && x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.累积流量));
                    if (monitorQl == null)
                    {
                        monitorQl = monitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.累积流量));
                    }
                    if (monitorQl != null)
                    {
                        var signalQl = monitorQl.SignalList.First();
                        var last_record = service_monitor_record.Value.GetLastRecord(signalQl.ID);
                        if (last_record != null)
                        {
                            vm.LastRecordList.Add(new FlowMeterMapMonitorKpiLastRecordMobileDto(monitorQl, last_record));
                        }
                    }
                }
            }
            return vm;
        }
        /// <summary>
        /// èŽ·å–åŽ‹åŠ›è®¡åˆ—è¡¨
        /// </summary>
        [Route("GetPressMeterList@V1.0")]
        [HttpGet]
        public List<FlowMeterMapMobileDto> GetPressMeterList()
        {
            var keyContent = $"SZJT_Map_Mobile_GetPressMeterList";
            var cacheKey = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.WebApiLevel, MemoryCacheKey.Module, keyContent);
            var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
            {
                var catalogList = new Yw.Service.SysCatalog().GetChildAndSelfByCode(IStation.Catalog.PressMeter);
                Yw.Service.SysCatalog.PublishCache(cacheKey);
                if (catalogList == null || catalogList.Count < 1)
                {
                    throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, "压力计分类编码验证失败");
                }
                var catalogIds = catalogList.Select(x => x.ID).Distinct().ToList();
                var allMeterList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(IStation.DataType.LogicDma, 1);
                Yw.Service.Equipment.PublishCache(cacheKey);
                allMeterList = allMeterList?.Where(x => catalogIds.Contains(x.CatalogID)).ToList();
                if (allMeterList == null || allMeterList.Count < 1)
                {
                    return default;
                }
                var service_map = new Lazy<Yw.Service.MapInfo>(() => new Yw.Service.MapInfo());
                var vmList = new List<FlowMeterMapMobileDto>();
                foreach (var meter in allMeterList)
                {
                    var vm = new FlowMeterMapMobileDto(meter);
                    vmList.Add(vm);
                    var mapInfo = service_map.Value.Get(Yw.Assets.DataType.Equipment, meter.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
                    if (mapInfo != null)
                    {
                        vm.Position = Yw.Model.Map.Marker.ToModel(mapInfo.Position);
                    }
                }
                return vmList;
            }, CacheHelper.CacheLevel3);
            return vm_list;
        }
        /// <summary>
        /// é€šè¿‡ PressMeterID èŽ·å–ç›‘æµ‹Kpi信息
        /// </summary>
        [Route("GetMonitorKpiInfoByPressMeterID@V1.0")]
        [HttpGet]
        public PressMeterMapMonitorKpiInfoMobileDto GetMonitorKpiInfoByPressMeterID([FromQuery][Required] PressMeterIDInput input)
        {
            var equipment = new Yw.Service.Equipment().GetByID(input.PressMeterID);
            if (equipment == null)
            {
                throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"PressMeterID:{input.PressMeterID} æ•°æ®ä¸å­˜åœ¨");
            }
            var catalogList = new Yw.Service.SysCatalog().GetChildAndSelfByCode(IStation.Catalog.PressMeter);
            if (catalogList == null || catalogList.Count < 1)
            {
                throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, "压力计分类编码验证失败");
            }
            var catalogIds = catalogList.Select(x => x.ID).Distinct().ToList();
            if (!catalogIds.Contains(equipment.CatalogID))
            {
                throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, $"PressMeterID:{input.PressMeterID} è¯·è¾“入正确压力计id");
            }
            var vm = new PressMeterMapMonitorKpiInfoMobileDto();
            vm.PressMeterID = input.PressMeterID;
            vm.Name = equipment.Name;
            vm.LastRecordList = new List<PressMeterMapMonitorKpiLastRecordMobileDto>();
            var service_monitor_mapping = new Yw.Service.EquipmentMonitorMapping();
            var mappingList = new Yw.Service.EquipmentMonitorMapping().GetByEquipmentID(input.PressMeterID);
            if (mappingList != null && mappingList.Count > 0)
            {
                var monitorIds = mappingList.Select(x => x.MonitorPointID).Distinct().ToList();
                var monitorList = new Yw.Service.MonitorPoint().GetExSignalWithSignalTypeByIds(monitorIds);
                monitorList = monitorList?.Where(x => x.UseStatus == Yw.Model.eUseStatus.Enable).ToList();
                monitorList = monitorList?.Where(x => x.CronType == Yw.Monitor.eCronType.Real).ToList();
                if (monitorList != null && monitorList.Count > 0)
                {
                    var service_monitor_record = new Lazy<Yw.Service.MonitorRealRecord>(() => new Yw.Service.MonitorRealRecord());
                    var monitorPr = monitorList.Find(x => x.Flags.Contains(IStation.Flags.默认) && x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.压力));
                    if (monitorPr == null)
                    {
                        monitorPr = monitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.压力));
                    }
                    if (monitorPr != null)
                    {
                        var signalPr = monitorPr.SignalList.First();
                        var last_record = service_monitor_record.Value.GetLastRecord(signalPr.ID);
                        if (last_record != null)
                        {
                            vm.LastRecordList.Add(new PressMeterMapMonitorKpiLastRecordMobileDto(monitorPr, last_record));
                        }
                    }
                }
            }
            return vm;
        }
        /// <summary>
        /// èŽ·å–å·¥å•åˆ—è¡¨
        /// </summary>
        [Route("GetRepairList@V1.0")]
        [HttpGet]
        public List<RepairMapMobileDto> GetRepairList()
        {
            var vmList = new List<RepairMapMobileDto>();
            var requestList = new Yw.Service.RepairRequestForm().GetPendingList();
            if (requestList != null && requestList.Count > 0)
            {
                foreach (var request in requestList)
                {
                    var vmRequest = new RepairMapMobileDto(request, Yw.Map.Kind.Gaodei);
                    vmList.Add(vmRequest);
                }
            }
            var taskList = new Yw.Service.RepairTaskForm().GetUnCheckedList();
            if (taskList != null && taskList.Count > 0)
            {
                foreach (var task in taskList)
                {
                    var vmTask = new RepairMapMobileDto(task, Yw.Map.Kind.Gaodei);
                    vmList.Add(vmTask);
                }
            }
            return vmList;
        }
        /// <summary>
        /// èŽ·å–å·¥å•çŠ¶æ€ä¿¡æ¯
        /// </summary>
        [Route("GetRepairStatusInfo@V1.0")]
        [HttpGet]
        public RepairMapStatusMobileDto GetRepairStatusInfo
            (
                [Required]
                string FormType,
                [Required]
                long FormID
            )
        {
            if (FormType == Yw.Repair.DataType.RepairRequestForm)
            {
                var request = new Yw.Service.RepairRequestForm().GetByID(FormID);
                if (request == null)
                {
                    throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"FormID:{FormID} æ•°æ®ä¸å­˜åœ¨");
                }
                return new RepairMapStatusMobileDto(request);
            }
            else if (FormType == Yw.Repair.DataType.RepairTaskForm)
            {
                var task = new Yw.Service.RepairTaskForm().GetByID(FormID);
                if (task == null)
                {
                    throw YOops.Oh(eResultCode.Alert, ErrorCodes.D001, $"FormID:{FormID} æ•°æ®ä¸å­˜åœ¨");
                }
                return new RepairMapStatusMobileDto(task);
            }
            throw YOops.Oh(eResultCode.Alert, ErrorCodes.V001, $"FormType å‚数错误");
        }
        /// <summary>
        /// èŽ·å–Dma分区列表
        /// </summary>
        [Route("GetDmaAreaList@V1.0")]
        [HttpGet]
        public List<DmaAreaMapMobileDto> GetDmaAreaList()
        {
            var keyContent = $"SZJT_Map_Mobile_GetDmaAreaList";
            var cacheKey = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.WebApiLevel, MemoryCacheKey.Module, keyContent);
            var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
            {
                var allAreaList = new Yw.Service.DmaArea().GetByBelongTypeAndBelongID(IStation.DataType.LogicDma, 1);
                Yw.Service.DmaArea.PublishCache(cacheKey);
                if (allAreaList == null || allAreaList.Count < 1)
                {
                    return default;
                }
                var serviceMapInfo = new Yw.Service.MapInfo();
                var vm_list = new List<DmaAreaMapMobileDto>();
                foreach (var area in allAreaList)
                {
                    var vm = new DmaAreaMapMobileDto(area);
                    vm_list.Add(vm);
                    var area_map_info = serviceMapInfo.Get(Yw.DMA.DataType.DmaArea, area.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
                    if (area_map_info != null)
                    {
                        vm.Position = Yw.Model.Map.Polygon.ToModel(area_map_info.Position);
                    }
                }
                return vm_list;
            }, CacheHelper.CacheLevel3);
            return vm_list;
        }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/1-station/StationMapMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class StationMapMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public StationMapMobileDto(Model.LogicSite rhs)
        {
            this.StationID = rhs.ID;
            this.Name = rhs.Name;
        }
        /// <summary>
        /// æ³µç«™id
        /// </summary>
        public long StationID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ä½ç½®
        /// </summary>
        public Yw.Model.Map.Marker Position { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/1-station/StationMapMonitorKpiInfoMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class StationMapMonitorKpiInfoMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public StationMapMonitorKpiInfoMobileDto(Model.LogicSite rhs)
        {
            this.StationID = rhs.ID;
            this.Name = rhs.Name;
            this.LastRecordList = new List<StationMapMonitorKpiLastRecordMobileDto>();
            this.LastStatusList = new List<StationMapMonitorKpiLastStatusMobileDto>();
        }
        /// <summary>
        /// æ³µç«™id
        /// </summary>
        public long StationID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// æœ€åŽè®°å½•列表
        /// </summary>
        public List<StationMapMonitorKpiLastRecordMobileDto> LastRecordList { get; set; }
        /// <summary>
        /// æœ€åŽçŠ¶æ€åˆ—è¡¨
        /// </summary>
        public List<StationMapMonitorKpiLastStatusMobileDto> LastStatusList { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/1-station/StationMapMonitorKpiLastRecordMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
namespace IStation.Application
{
    /// <summary>
    ///
    /// </summary>
    public class StationMapMonitorKpiLastRecordMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public StationMapMonitorKpiLastRecordMobileDto(Yw.Model.MonitorPoint_Signal_SignalType monitor, Yw.Model.MonitorRealRecord record)
        {
            this.SignalID = monitor.SignalList.First().ID;
            this.Name = monitor.Name;
            this.Code = monitor.SignalList.First().SignalType.Code;
            this.DataTime = record?.DataTime;
            this.DataValue = monitor.SignalList.First().GetDisplayValue(record?.DataValue);
            this.UnitName = monitor.SignalList.First().GetDisplayUnitName();
            this.DataStatus = record?.DataStatus;
        }
        /// <summary>
        /// ä¿¡å·id
        /// </summary>
        public long SignalID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// æ•°æ®æ—¶é—´
        /// </summary>
        public DateTime? DataTime { get; set; }
        /// <summary>
        /// æ•°æ®å€¼
        /// </summary>
        public string DataValue { get; set; }
        /// <summary>
        /// å•位
        /// </summary>
        public string UnitName { get; set; }
        /// <summary>
        /// æ•°æ®çŠ¶æ€
        /// </summary>
        public List<string> DataStatus { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/1-station/StationMapMonitorKpiLastStatusMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
namespace IStation.Application
{
    /// <summary>
    ///
    /// </summary>
    public class StationMapMonitorKpiLastStatusMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public StationMapMonitorKpiLastStatusMobileDto(Yw.Model.Equipment equipment, Yw.Model.RunRealRecord record)
        {
            this.EquipmentID = equipment.ID;
            this.Name = equipment.Name;
            this.DataTime = record?.DataTime;
            this.RunStatus = record == null ? Yw.Run.RunStatus.Stop : record.RSa;
        }
        /// <summary>
        /// è®¾å¤‡id
        /// </summary>
        public long EquipmentID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// æ•°æ®æ—¶é—´
        /// </summary>
        public DateTime? DataTime { get; set; }
        /// <summary>
        /// è¿è¡ŒçŠ¶æ€
        /// </summary>
        public int RunStatus { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/2-flow-meter/FlowMeterMapMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
namespace IStation.Application
{
    /// <summary>
    ///
    /// </summary>
    public class FlowMeterMapMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public FlowMeterMapMobileDto(Yw.Model.Equipment rhs)
        {
            this.FlowMeterID = rhs.ID;
            this.Name = rhs.Name;
        }
        /// <summary>
        /// æµé‡è®¡id
        /// </summary>
        public long FlowMeterID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ä½ç½®
        /// </summary>
        public Yw.Model.Map.Marker Position { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/2-flow-meter/FlowMeterMapMonitorKpiInfoMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class FlowMeterMapMonitorKpiInfoMobileDto
    {
        /// <summary>
        /// æµé‡è®¡id
        /// </summary>
        public long FlowMeterID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// æœ€åŽè®°å½•列表
        /// </summary>
        public List<FlowMeterMapMonitorKpiLastRecordMobileDto> LastRecordList { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/2-flow-meter/FlowMeterMapMonitorKpiLastRecordMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
namespace IStation.Application
{
    /// <summary>
    ///
    /// </summary>
    public class FlowMeterMapMonitorKpiLastRecordMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public FlowMeterMapMonitorKpiLastRecordMobileDto(Yw.Model.MonitorPoint_Signal_SignalType monitor, Yw.Model.MonitorRealRecord record)
        {
            this.SignalID = monitor.SignalList.First().ID;
            this.Name = monitor.Name;
            this.Code = monitor.SignalList.First().SignalType.Code;
            this.DataTime = record?.DataTime;
            this.DataValue = monitor.SignalList.First().GetDisplayValue(record?.DataValue);
            this.UnitName = monitor.SignalList.First().GetDisplayUnitName();
            this.DataStatus = record?.DataStatus;
        }
        /// <summary>
        /// ä¿¡å·id
        /// </summary>
        public long SignalID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// æ•°æ®æ—¶é—´
        /// </summary>
        public DateTime? DataTime { get; set; }
        /// <summary>
        /// æ•°æ®å€¼
        /// </summary>
        public string DataValue { get; set; }
        /// <summary>
        /// å•位
        /// </summary>
        public string UnitName { get; set; }
        /// <summary>
        /// æ•°æ®çŠ¶æ€
        /// </summary>
        public List<string> DataStatus { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/3-press-meter/PressMeterMapMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
namespace IStation.Application
{
    /// <summary>
    ///
    /// </summary>
    public class PressMeterMapMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public PressMeterMapMobileDto(Yw.Model.Equipment rhs)
        {
            this.PressMeterID = rhs.ID;
            this.Name = rhs.Name;
        }
        /// <summary>
        /// åŽ‹åŠ›è®¡id
        /// </summary>
        public long PressMeterID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ä½ç½®
        /// </summary>
        public Yw.Model.Map.Marker Position { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/3-press-meter/PressMeterMapMonitorKpiInfoMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class PressMeterMapMonitorKpiInfoMobileDto
    {
        /// <summary>
        /// åŽ‹åŠ›è®¡id
        /// </summary>
        public long PressMeterID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// æœ€åŽè®°å½•列表
        /// </summary>
        public List<PressMeterMapMonitorKpiLastRecordMobileDto> LastRecordList { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/3-press-meter/PressMeterMapMonitorKpiLastRecordMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
namespace IStation.Application
{
    /// <summary>
    ///
    /// </summary>
    public class PressMeterMapMonitorKpiLastRecordMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public PressMeterMapMonitorKpiLastRecordMobileDto(Yw.Model.MonitorPoint_Signal_SignalType monitor, Yw.Model.MonitorRealRecord record)
        {
            this.SignalID = monitor.SignalList.First().ID;
            this.Name = monitor.Name;
            this.Code = monitor.SignalList.First().SignalType.Code;
            this.DataTime = record?.DataTime;
            this.DataValue = monitor.SignalList.First().GetDisplayValue(record?.DataValue);
            this.UnitName = monitor.SignalList.First().GetDisplayUnitName();
            this.DataStatus = record?.DataStatus;
        }
        /// <summary>
        /// ä¿¡å·id
        /// </summary>
        public long SignalID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// æ•°æ®æ—¶é—´
        /// </summary>
        public DateTime? DataTime { get; set; }
        /// <summary>
        /// æ•°æ®å€¼
        /// </summary>
        public string DataValue { get; set; }
        /// <summary>
        /// å•位
        /// </summary>
        public string UnitName { get; set; }
        /// <summary>
        /// æ•°æ®çŠ¶æ€
        /// </summary>
        public List<string> DataStatus { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/4-repair/RepairMapMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
namespace Yw.Application
{
    /// <summary>
    ///
    /// </summary>
    public class RepairMapMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public RepairMapMobileDto() { }
        /// <summary>
        ///
        /// </summary>
        public RepairMapMobileDto(Yw.Model.RepairRequestForm rhs, string kind)
        {
            this.FormType = Yw.Repair.DataType.RepairRequestForm;
            this.FormID = rhs.ID;
            this.FormName = rhs.FormName;
            this.Position = rhs.Location?.Find(t => t.Kind == kind)?.Position;
        }
        /// <summary>
        ///
        /// </summary>
        public RepairMapMobileDto(Yw.Model.RepairTaskForm rhs, string kind)
        {
            this.FormType = Yw.Repair.DataType.RepairTaskForm;
            this.FormID = rhs.ID;
            this.FormName = rhs.FormName;
            this.Position = rhs.Location?.Find(t => t.Kind == kind)?.Position;
        }
        /// <summary>
        /// å·¥å•类型
        /// </summary>
        public string FormType { get; set; }
        /// <summary>
        /// å·¥å•id
        /// </summary>
        public long FormID { get; set; }
        /// <summary>
        /// å·¥å•名称
        /// </summary>
        public string FormName { get; set; }
        /// <summary>
        /// åœ°å›¾ä½ç½®
        /// </summary>
        public Yw.Model.Repair.Marker Position { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/4-repair/RepairMapStatusMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,108 @@
namespace IStation.Application.SZJT
{
    /// <summary>
    ///
    /// </summary>
    public class RepairMapStatusMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public RepairMapStatusMobileDto() { }
        /// <summary>
        ///
        /// </summary>
        public RepairMapStatusMobileDto(Yw.Model.RepairRequestForm rhs)
        {
            this.FormType = Yw.Repair.DataType.RepairRequestForm;
            this.FormID = rhs.ID;
            this.FormNo = rhs.FormNo;
            this.FormName = rhs.FormName;
            this.FormStatus = (int)rhs.FormStatus;
            this.Urgency = rhs.Urgency;
            this.Faq = rhs.Faq;
            this.Question = rhs.Question;
            this.CreateUserID = rhs.CreateUserID;
            this.CreateTime = rhs.CreateTime;
            this.CreateUserName = rhs.CreateUserName;
        }
        /// <summary>
        ///
        /// </summary>
        public RepairMapStatusMobileDto(Yw.Model.RepairTaskForm rhs)
        {
            this.FormType = Yw.Repair.DataType.RepairTaskForm;
            this.FormID = rhs.ID;
            this.FormNo = rhs.FormNo;
            this.FormName = rhs.FormName;
            this.FormStatus = (int)rhs.FormStatus;
            this.Urgency = rhs.Urgency;
            this.Faq = rhs.Faq;
            this.Question = rhs.Question;
            this.CreateUserID = rhs.CreateUserID;
            this.CreateTime = rhs.CreateTime;
            this.CreateUserName = rhs.CreateUserName;
        }
        /// <summary>
        /// å·¥å•类型
        /// </summary>
        public string FormType { get; set; }
        /// <summary>
        /// å·¥å•id
        /// </summary>
        public long FormID { get; set; }
        /// <summary>
        /// å·¥å•号
        /// </summary>
        public string FormNo { get; set; }
        /// <summary>
        /// å·¥å•名称
        /// </summary>
        public string FormName { get; set; }
        /// <summary>
        /// å·¥å•状态
        /// </summary>
        public int FormStatus { get; set; }
        /// <summary>
        /// ç´§æ€¥ç¨‹åº¦
        /// </summary>
        public Yw.Repair.eUrgency Urgency { get; set; }
        /// <summary>
        /// é—®é¢˜ç¼–码
        /// </summary>
        public string Faq { get; set; }
        /// <summary>
        /// é—®é¢˜æè¿°
        /// </summary>
        public string Question { get; set; }
        /// <summary>
        /// åˆ›å»ºäººid
        /// </summary>
        public long CreateUserID { get; set; }
        /// <summary>
        /// åˆ›å»ºæ—¶é—´
        /// </summary>
        public DateTime CreateTime { get; set; }
        /// <summary>
        /// åˆ›å»ºäººåç§°
        /// </summary>
        public string CreateUserName { get; set; }
    }
}
IStation.Application.SZJT/99-logic/10-mobile/05-map/dto/5-dma/DmaMapMobileDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
namespace Yw.Application
{
    /// <summary>
    ///
    /// </summary>
    public class DmaAreaMapMobileDto
    {
        /// <summary>
        ///
        /// </summary>
        public DmaAreaMapMobileDto() { }
        /// <summary>
        ///
        /// </summary>
        public DmaAreaMapMobileDto(Yw.Model.DmaArea rhs)
        {
            this.DmaAreaID = rhs.ID;
            this.Name = rhs.Name;
        }
        /// <summary>
        /// Dma分区id
        /// </summary>
        public long DmaAreaID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ä½ç½®
        /// </summary>
        public Yw.Model.Map.Polygon Position { get; set; }
    }
}
IStation.Application.SZJT/IStation.Application.SZJT.csproj
@@ -31,12 +31,13 @@
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Yw.Application.Core" Version="1.2.9" />
    <PackageReference Include="Yw.Application.Core" Version="1.3.0" />
    <PackageReference Include="Yw.Service.Assets.Core" Version="1.1.5" />
    <PackageReference Include="Yw.Service.DMA.Core" Version="1.0.2" />
    <PackageReference Include="Yw.Service.Map.Core" Version="1.0.2" />
    <PackageReference Include="Yw.Service.Monitor.Core" Version="1.3.6" />
    <PackageReference Include="Yw.Service.Run.Core" Version="1.0.1" />
    <PackageReference Include="Yw.Service.DMA.Core" Version="1.0.4" />
    <PackageReference Include="Yw.Service.Map.Core" Version="1.0.3" />
    <PackageReference Include="Yw.Service.Monitor.Core" Version="1.3.9" />
    <PackageReference Include="Yw.Service.Repair.Core" Version="1.0.1" />
    <PackageReference Include="Yw.Service.Run.Core" Version="1.0.2" />
  </ItemGroup>
  <ItemGroup>
IStation.Entry.SZJT/IStation.Entry.SZJT.csproj
@@ -16,13 +16,13 @@
    <PackageReference Include="Yw.Application.ArtImage.Core" Version="1.1.2" />
    <PackageReference Include="Yw.Application.Assets.Core" Version="1.2.3" />
    <PackageReference Include="Yw.Application.Basic.Core" Version="1.2.0" />
    <PackageReference Include="Yw.Application.Bimface.Core" Version="1.0.1" />
    <PackageReference Include="Yw.Application.Bimface.Core" Version="1.0.3" />
    <PackageReference Include="Yw.Application.Dict.Core" Version="1.1.0" />
    <PackageReference Include="Yw.Application.DMA.Core" Version="1.0.2" />
    <PackageReference Include="Yw.Application.DMA.Core" Version="1.0.4" />
    <PackageReference Include="Yw.Application.DOCS.Core" Version="1.0.1" />
    <PackageReference Include="Yw.Application.Map.Core" Version="1.0.3" />
    <PackageReference Include="Yw.Application.Monitor.Core" Version="1.5.7" />
    <PackageReference Include="Yw.Application.Repair.Core" Version="1.0.1" />
    <PackageReference Include="Yw.Application.Map.Core" Version="1.0.4" />
    <PackageReference Include="Yw.Application.Monitor.Core" Version="1.6.0" />
    <PackageReference Include="Yw.Application.Repair.Core" Version="1.0.2" />
    <PackageReference Include="Yw.Application.Unit.Core" Version="1.1.1" />
  </ItemGroup>
IStation.Entry.SZJT/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -5,6 +5,6 @@
<Project>
  <PropertyGroup>
    <_PublishTargetUrl>D:\WorkData\git\istation\szjt\IStation.Entry.SZJT\bin\Release\net6.0\publish\</_PublishTargetUrl>
    <History>True|2023-12-14T06:17:07.2707485Z;True|2023-12-14T11:49:15.9699053+08:00;False|2023-12-14T11:48:41.4121185+08:00;True|2023-12-13T17:28:38.2180193+08:00;True|2023-12-13T14:47:22.2493536+08:00;True|2023-12-13T14:31:45.6098784+08:00;True|2023-12-13T14:05:08.5014675+08:00;True|2023-12-13T14:01:37.7165974+08:00;True|2023-12-13T13:50:57.4832531+08:00;True|2023-12-13T13:20:55.2902900+08:00;True|2023-12-13T12:01:09.6397101+08:00;True|2023-12-13T11:53:51.3171154+08:00;True|2023-12-13T11:18:29.2505125+08:00;True|2023-12-13T09:48:22.2436154+08:00;True|2023-12-12T11:49:25.2723311+08:00;True|2023-12-11T14:05:58.1086840+08:00;True|2023-12-11T09:31:35.0365077+08:00;True|2023-12-05T18:00:29.7005601+08:00;True|2023-12-05T17:35:46.7846869+08:00;True|2023-12-05T17:29:36.5936716+08:00;True|2023-12-04T19:50:38.7216121+08:00;True|2023-12-02T14:06:28.8643257+08:00;True|2023-11-30T16:54:56.0879009+08:00;True|2023-11-30T15:49:27.5213126+08:00;True|2023-11-30T13:42:14.9061099+08:00;False|2023-11-30T13:41:50.2796105+08:00;False|2023-11-30T13:41:42.4700953+08:00;True|2023-11-30T10:23:50.6226599+08:00;True|2023-11-30T09:22:54.2133326+08:00;True|2023-11-29T16:32:53.3651373+08:00;True|2023-11-29T09:19:39.1127566+08:00;True|2023-11-28T17:25:14.9642204+08:00;True|2023-11-28T16:53:30.7550754+08:00;True|2023-11-28T09:57:02.3264015+08:00;True|2023-11-27T14:26:33.6153027+08:00;True|2023-11-27T13:33:46.1964012+08:00;True|2023-11-27T13:21:38.2133314+08:00;True|2023-11-24T14:12:06.2053905+08:00;True|2023-11-23T15:38:30.0872291+08:00;True|2023-11-15T19:27:36.4861114+08:00;True|2023-11-15T14:16:33.6004541+08:00;True|2023-11-15T14:02:06.1224051+08:00;True|2023-11-15T09:35:35.1770813+08:00;True|2023-11-10T14:06:46.1528992+08:00;True|2023-11-08T14:07:13.3792249+08:00;True|2023-11-08T13:58:21.2455396+08:00;True|2023-11-08T13:34:05.8131818+08:00;True|2023-11-08T11:58:01.9187650+08:00;True|2023-11-07T14:11:15.6278203+08:00;True|2023-11-07T14:05:43.3330586+08:00;True|2023-10-27T08:30:17.2959726+08:00;True|2023-10-27T08:23:59.8360129+08:00;True|2023-10-25T20:36:54.7517897+08:00;True|2023-10-24T23:27:01.1980187+08:00;True|2023-10-24T22:57:21.3872591+08:00;True|2023-10-17T09:26:15.4157626+08:00;True|2023-10-16T16:44:05.1411215+08:00;True|2023-10-10T14:24:00.3649304+08:00;True|2023-10-10T14:12:16.4050462+08:00;True|2023-10-10T13:43:17.4397783+08:00;True|2023-10-08T16:16:16.4721892+08:00;True|2023-10-08T14:27:40.6092129+08:00;True|2023-10-08T13:36:44.2969175+08:00;True|2023-10-08T13:21:21.1105671+08:00;True|2023-10-08T11:41:25.6876188+08:00;True|2023-10-08T09:39:46.1146411+08:00;True|2023-09-26T14:26:57.6168193+08:00;True|2023-09-21T13:54:19.1780900+08:00;True|2023-09-21T13:16:00.2957740+08:00;True|2023-09-21T11:28:36.3091944+08:00;True|2023-09-21T11:18:20.1060798+08:00;True|2023-09-13T16:00:49.4080881+08:00;True|2023-09-11T13:53:38.8582724+08:00;True|2023-09-01T10:32:37.4923361+08:00;True|2023-08-30T16:52:43.1952609+08:00;True|2023-08-30T13:41:35.0430741+08:00;True|2023-08-28T14:53:24.2454140+08:00;True|2023-08-28T13:50:55.9362462+08:00;True|2023-08-28T10:00:17.0366755+08:00;True|2023-08-25T15:41:23.8727088+08:00;True|2023-08-24T16:47:54.1391198+08:00;True|2023-08-24T16:40:29.0473991+08:00;True|2023-08-22T15:02:27.5312918+08:00;True|2023-08-22T11:18:43.6918732+08:00;True|2023-08-21T15:10:42.9223597+08:00;True|2023-08-21T14:21:08.1887373+08:00;True|2023-08-21T11:56:07.5304445+08:00;True|2023-08-18T16:57:57.0506312+08:00;True|2023-08-18T13:51:54.9145260+08:00;True|2023-08-17T14:52:44.6557301+08:00;True|2023-08-17T14:15:19.8255432+08:00;True|2023-08-17T14:03:01.1586247+08:00;True|2023-08-17T11:46:51.6685579+08:00;True|2023-08-16T11:12:27.1684542+08:00;True|2023-08-15T16:59:09.4901359+08:00;True|2023-08-10T14:08:04.8032876+08:00;True|2023-08-10T13:55:01.9698355+08:00;True|2023-08-10T10:43:44.0440039+08:00;True|2023-08-10T10:12:03.9359243+08:00;True|2023-08-09T15:07:46.6906781+08:00;True|2023-08-09T13:12:06.7912004+08:00;True|2023-08-09T10:23:24.5864225+08:00;True|2023-08-08T17:38:10.4753030+08:00;True|2023-08-08T12:56:08.9783211+08:00;True|2023-08-06T09:18:33.3703637+08:00;True|2023-08-03T11:01:58.9814864+08:00;True|2023-08-03T10:26:08.4681748+08:00;True|2023-08-02T20:33:35.0425049+08:00;True|2023-08-02T17:31:18.4675932+08:00;True|2023-08-02T16:04:16.8761862+08:00;True|2023-08-02T13:48:38.9129192+08:00;True|2023-08-02T13:45:00.6546267+08:00;True|2023-08-01T15:26:25.0389689+08:00;True|2023-08-01T14:08:10.9121758+08:00;True|2023-07-31T13:35:10.1220213+08:00;True|2023-07-31T09:20:11.2607880+08:00;True|2023-07-28T13:44:35.4317136+08:00;True|2023-07-27T10:40:46.5453757+08:00;True|2023-07-27T09:16:57.7421426+08:00;True|2023-07-26T17:10:56.0976913+08:00;True|2023-07-26T12:01:33.5766311+08:00;True|2023-07-25T18:07:38.5726960+08:00;True|2023-07-25T17:42:39.3625959+08:00;True|2023-07-25T17:04:09.8723273+08:00;True|2023-07-25T16:28:14.1819137+08:00;True|2023-07-24T14:11:28.2113907+08:00;True|2023-07-24T12:05:09.0376032+08:00;True|2023-07-24T09:36:39.6541522+08:00;True|2023-07-19T12:25:56.9887829+08:00;True|2023-07-17T13:00:04.0123733+08:00;True|2023-07-13T12:13:14.7927242+08:00;True|2023-07-13T11:46:24.1368807+08:00;True|2023-07-13T10:24:33.1684712+08:00;True|2023-06-26T11:38:29.6648988+08:00;True|2023-06-21T16:17:40.6226554+08:00;True|2023-06-21T13:30:18.8163322+08:00;True|2023-06-21T13:19:43.9290154+08:00;True|2023-06-21T11:35:28.3376504+08:00;</History>
    <History>True|2023-12-26T02:49:59.5124896Z;True|2023-12-26T10:10:53.5396234+08:00;True|2023-12-25T15:30:59.3409132+08:00;True|2023-12-25T15:26:43.1943347+08:00;True|2023-12-25T10:08:29.7964560+08:00;True|2023-12-21T10:30:55.0589855+08:00;True|2023-12-19T21:25:45.9098277+08:00;True|2023-12-16T12:52:46.7024463+08:00;True|2023-12-14T16:16:02.6188884+08:00;True|2023-12-14T16:03:53.1458158+08:00;True|2023-12-14T15:59:33.3947428+08:00;True|2023-12-14T15:53:09.8869780+08:00;True|2023-12-14T14:17:07.2707485+08:00;True|2023-12-14T11:49:15.9699053+08:00;False|2023-12-14T11:48:41.4121185+08:00;True|2023-12-13T17:28:38.2180193+08:00;True|2023-12-13T14:47:22.2493536+08:00;True|2023-12-13T14:31:45.6098784+08:00;True|2023-12-13T14:05:08.5014675+08:00;True|2023-12-13T14:01:37.7165974+08:00;True|2023-12-13T13:50:57.4832531+08:00;True|2023-12-13T13:20:55.2902900+08:00;True|2023-12-13T12:01:09.6397101+08:00;True|2023-12-13T11:53:51.3171154+08:00;True|2023-12-13T11:18:29.2505125+08:00;True|2023-12-13T09:48:22.2436154+08:00;True|2023-12-12T11:49:25.2723311+08:00;True|2023-12-11T14:05:58.1086840+08:00;True|2023-12-11T09:31:35.0365077+08:00;True|2023-12-05T18:00:29.7005601+08:00;True|2023-12-05T17:35:46.7846869+08:00;True|2023-12-05T17:29:36.5936716+08:00;True|2023-12-04T19:50:38.7216121+08:00;True|2023-12-02T14:06:28.8643257+08:00;True|2023-11-30T16:54:56.0879009+08:00;True|2023-11-30T15:49:27.5213126+08:00;True|2023-11-30T13:42:14.9061099+08:00;False|2023-11-30T13:41:50.2796105+08:00;False|2023-11-30T13:41:42.4700953+08:00;True|2023-11-30T10:23:50.6226599+08:00;True|2023-11-30T09:22:54.2133326+08:00;True|2023-11-29T16:32:53.3651373+08:00;True|2023-11-29T09:19:39.1127566+08:00;True|2023-11-28T17:25:14.9642204+08:00;True|2023-11-28T16:53:30.7550754+08:00;True|2023-11-28T09:57:02.3264015+08:00;True|2023-11-27T14:26:33.6153027+08:00;True|2023-11-27T13:33:46.1964012+08:00;True|2023-11-27T13:21:38.2133314+08:00;True|2023-11-24T14:12:06.2053905+08:00;True|2023-11-23T15:38:30.0872291+08:00;True|2023-11-15T19:27:36.4861114+08:00;True|2023-11-15T14:16:33.6004541+08:00;True|2023-11-15T14:02:06.1224051+08:00;True|2023-11-15T09:35:35.1770813+08:00;True|2023-11-10T14:06:46.1528992+08:00;True|2023-11-08T14:07:13.3792249+08:00;True|2023-11-08T13:58:21.2455396+08:00;True|2023-11-08T13:34:05.8131818+08:00;True|2023-11-08T11:58:01.9187650+08:00;True|2023-11-07T14:11:15.6278203+08:00;True|2023-11-07T14:05:43.3330586+08:00;True|2023-10-27T08:30:17.2959726+08:00;True|2023-10-27T08:23:59.8360129+08:00;True|2023-10-25T20:36:54.7517897+08:00;True|2023-10-24T23:27:01.1980187+08:00;True|2023-10-24T22:57:21.3872591+08:00;True|2023-10-17T09:26:15.4157626+08:00;True|2023-10-16T16:44:05.1411215+08:00;True|2023-10-10T14:24:00.3649304+08:00;True|2023-10-10T14:12:16.4050462+08:00;True|2023-10-10T13:43:17.4397783+08:00;True|2023-10-08T16:16:16.4721892+08:00;True|2023-10-08T14:27:40.6092129+08:00;True|2023-10-08T13:36:44.2969175+08:00;True|2023-10-08T13:21:21.1105671+08:00;True|2023-10-08T11:41:25.6876188+08:00;True|2023-10-08T09:39:46.1146411+08:00;True|2023-09-26T14:26:57.6168193+08:00;True|2023-09-21T13:54:19.1780900+08:00;True|2023-09-21T13:16:00.2957740+08:00;True|2023-09-21T11:28:36.3091944+08:00;True|2023-09-21T11:18:20.1060798+08:00;True|2023-09-13T16:00:49.4080881+08:00;True|2023-09-11T13:53:38.8582724+08:00;True|2023-09-01T10:32:37.4923361+08:00;True|2023-08-30T16:52:43.1952609+08:00;True|2023-08-30T13:41:35.0430741+08:00;True|2023-08-28T14:53:24.2454140+08:00;True|2023-08-28T13:50:55.9362462+08:00;True|2023-08-28T10:00:17.0366755+08:00;True|2023-08-25T15:41:23.8727088+08:00;True|2023-08-24T16:47:54.1391198+08:00;True|2023-08-24T16:40:29.0473991+08:00;True|2023-08-22T15:02:27.5312918+08:00;True|2023-08-22T11:18:43.6918732+08:00;True|2023-08-21T15:10:42.9223597+08:00;True|2023-08-21T14:21:08.1887373+08:00;True|2023-08-21T11:56:07.5304445+08:00;True|2023-08-18T16:57:57.0506312+08:00;True|2023-08-18T13:51:54.9145260+08:00;True|2023-08-17T14:52:44.6557301+08:00;True|2023-08-17T14:15:19.8255432+08:00;True|2023-08-17T14:03:01.1586247+08:00;True|2023-08-17T11:46:51.6685579+08:00;True|2023-08-16T11:12:27.1684542+08:00;True|2023-08-15T16:59:09.4901359+08:00;True|2023-08-10T14:08:04.8032876+08:00;True|2023-08-10T13:55:01.9698355+08:00;True|2023-08-10T10:43:44.0440039+08:00;True|2023-08-10T10:12:03.9359243+08:00;True|2023-08-09T15:07:46.6906781+08:00;True|2023-08-09T13:12:06.7912004+08:00;True|2023-08-09T10:23:24.5864225+08:00;True|2023-08-08T17:38:10.4753030+08:00;True|2023-08-08T12:56:08.9783211+08:00;True|2023-08-06T09:18:33.3703637+08:00;True|2023-08-03T11:01:58.9814864+08:00;True|2023-08-03T10:26:08.4681748+08:00;True|2023-08-02T20:33:35.0425049+08:00;True|2023-08-02T17:31:18.4675932+08:00;True|2023-08-02T16:04:16.8761862+08:00;True|2023-08-02T13:48:38.9129192+08:00;True|2023-08-02T13:45:00.6546267+08:00;True|2023-08-01T15:26:25.0389689+08:00;True|2023-08-01T14:08:10.9121758+08:00;True|2023-07-31T13:35:10.1220213+08:00;True|2023-07-31T09:20:11.2607880+08:00;True|2023-07-28T13:44:35.4317136+08:00;True|2023-07-27T10:40:46.5453757+08:00;True|2023-07-27T09:16:57.7421426+08:00;True|2023-07-26T17:10:56.0976913+08:00;True|2023-07-26T12:01:33.5766311+08:00;True|2023-07-25T18:07:38.5726960+08:00;True|2023-07-25T17:42:39.3625959+08:00;True|2023-07-25T17:04:09.8723273+08:00;True|2023-07-25T16:28:14.1819137+08:00;True|2023-07-24T14:11:28.2113907+08:00;True|2023-07-24T12:05:09.0376032+08:00;True|2023-07-24T09:36:39.6541522+08:00;True|2023-07-19T12:25:56.9887829+08:00;True|2023-07-17T13:00:04.0123733+08:00;True|2023-07-13T12:13:14.7927242+08:00;True|2023-07-13T11:46:24.1368807+08:00;True|2023-07-13T10:24:33.1684712+08:00;True|2023-06-26T11:38:29.6648988+08:00;True|2023-06-21T16:17:40.6226554+08:00;True|2023-06-21T13:30:18.8163322+08:00;True|2023-06-21T13:19:43.9290154+08:00;True|2023-06-21T11:35:28.3376504+08:00;</History>
  </PropertyGroup>
</Project>
IStation.Entry.SZJT/appsettings.json
@@ -12,7 +12,8 @@
      "Yw.Application.ArtImage.Core",
      "Yw.Application.Bimface.Core",
      "Yw.Application.Map.Core",
      "Yw.Application.DOCS.Core"
      "Yw.Application.DOCS.Core",
      "Yw.Application.DMA.Core"
    ] // é…ç½®é€šè¿‡ NuGet æ–¹å¼å®‰è£…的模块化包
  },
  "Logging": {
@@ -32,6 +33,7 @@
    "paras_sqlsugar_settings.json",
    "paras_service_settings.json",
    "paras_map_settings.json",
    "paras_bimface_settings.json"
    "paras_bimface_settings.json",
    "paras_dma_settings.json"
  ]
}
IStation.Server.SZJT/1-equipment-run-analy/2-single/EquipmentRunAnalyChangeTimesHelper.cs
@@ -1,21 +1,20 @@
namespace IStation.Server

namespace IStation.Server
{
    /// <summary>
    /// 
    /// </summary>
    public class EquipmentRunAnalyChangeTimesHelper
    {
        private static Dictionary<long, List<Yw.Model.MonitorRealRecord>> _dict = new Dictionary<long, List<Yw.Model.MonitorRealRecord>>();//缓存
        private static ConcurrentDictionary<long, List<Yw.Model.MonitorRealRecord>> _dict = new();//缓存
        /// <summary>
        /// è®¾ç½®
        /// </summary>
        public static void Set(long configureId, int changeTimes, Yw.Model.MonitorRealRecord record)
        {
            if (!_dict.ContainsKey(configureId))
            {
                _dict.Add(configureId, new List<Yw.Model.MonitorRealRecord>());
            }
            _dict.TryAdd(configureId, new List<Yw.Model.MonitorRealRecord>());
            if (_dict[configureId].Count >= changeTimes)
            {
                _dict[configureId].RemoveAt(0);
@@ -49,5 +48,10 @@
    }
}
IStation.Server.SZJT/GlobalUsings.cs
@@ -6,4 +6,5 @@
global using System.Globalization;
global using System.Collections;
global using Quartz;
global using Yw;
global using Yw;
global using System.Collections.Concurrent;
IStation.Server.SZJT/IStation.Server.SZJT.csproj
@@ -10,13 +10,25 @@
  <ItemGroup>
    <PackageReference Include="Yw.Log4Net.Core" Version="1.0.0" />
    <PackageReference Include="Yw.Quartz.Core" Version="1.0.0" />
    <PackageReference Include="Yw.Service.Assets.Core" Version="1.1.4" />
    <PackageReference Include="Yw.Service.Monitor.Core" Version="1.3.6" />
    <PackageReference Include="Yw.Service.Run.Core" Version="1.0.1" />
    <PackageReference Include="Yw.Service.Assets.Core" Version="1.1.5" />
    <PackageReference Include="Yw.Service.Monitor.Core" Version="1.3.9" />
    <PackageReference Include="Yw.Service.Run.Core" Version="1.0.2" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\IStation.Service.SZJT\IStation.Service.SZJT.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Content Update="C:\Users\admin\.nuget\packages\yw.service.assets.core\1.1.5\contentFiles\any\net6.0\paras_assets_settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Update="C:\Users\admin\.nuget\packages\yw.service.monitor.core\1.3.9\contentFiles\any\net6.0\paras_monitor_settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Update="C:\Users\admin\.nuget\packages\yw.service.run.core\1.0.2\contentFiles\any\net6.0\paras_run_settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
</Project>
IStation.Service.SZJT/0-core/Catalog.cs
@@ -14,5 +14,15 @@
        /// åŽ‹åŠ›è®¡
        /// </summary>
        public const string PressMeter = "press-meter";
        /// <summary>
        /// åŠŸçŽ‡è¡¨
        /// </summary>
        public const string PowerMeter = "power-meter";
        /// <summary>
        /// æ°´è´¨ä»ª
        /// </summary>
        public const string WaterQualityMeter = "water-quality-meter";
    }
}
IStation.Service.SZJT/0-core/DataType.cs
@@ -25,6 +25,11 @@
        /// </summary>
        public const string LogicTree = "logic-tree";
        /// <summary>
        /// ä¸šåŠ¡dma
        /// </summary>
        public const string LogicDma = "logic-dma";
    }
}
IStation.Service.SZJT/0-core/Flags.cs
@@ -14,5 +14,10 @@
        /// 
        /// </summary>
        public const string KPI = "KPI";
        /// <summary>
        ///
        /// </summary>
        public const string æœºç»„ = "机组";
    }
}
IStation.Service.SZJT/IStation.Service.SZJT.csproj
@@ -38,7 +38,7 @@
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Yw.Service.Basic.Core" Version="1.1.9" />
    <PackageReference Include="Yw.Service.Basic.Core" Version="1.2.0" />
  </ItemGroup>
</Project>
IStation.TopShelf.SZJT/IStation.TopShelf.SZJT.csproj.user
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <_LastSelectedProfileId>D:\WorkData\git\istation\szjt\IStation.TopShelf.SZJT\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
  </PropertyGroup>
</Project>
IStation.TopShelf.SZJT/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,6 +4,6 @@
-->
<Project>
  <PropertyGroup>
    <History>True|2023-11-29T07:11:51.9151157Z;True|2023-11-29T14:58:05.0127775+08:00;</History>
    <History>True|2023-12-26T02:39:19.5076776Z;True|2023-12-15T09:43:55.2219318+08:00;True|2023-11-29T15:11:51.9151157+08:00;True|2023-11-29T14:58:05.0127775+08:00;</History>
  </PropertyGroup>
</Project>