From 3d3598eea1b93ed7f977d077355ebbcc1270ba38 Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期日, 02 十一月 2025 12:17:33 +0800
Subject: [PATCH] 优化

---
 新建文件夹/WIDESEA_WMSServer/ClassLibrary2/ContainerService.cs |  171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 170 insertions(+), 1 deletions(-)

diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/ContainerService.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/ContainerService.cs"
index 63d84c9..b0b272b 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/ContainerService.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/ClassLibrary2/ContainerService.cs"
@@ -1,25 +1,194 @@
 锘縰sing HslCommunication;
 using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
 using Quartz.Util;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Security.Claims;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Helper;
+using WIDESEA_DTO.SquareCabin;
 using WIDESEA_IWMsInfoServices;
 using WIDESEA_Model.Models;
+using static WIDESEA_DTO.SquareCabin.AlarmDto;
 using static WIDESEA_DTO.SquareCabin.TowcsDto;
 
 namespace WIDESEA_WMsInfoServices
 {
     public class ContainerService : ServiceBase<Dt_Container, IRepository<Dt_Container>>, IContainerService
     {
-        public ContainerService(IRepository<Dt_Container> BaseDal) : base(BaseDal)
+        private readonly IMessageInfoService _messageInfoService;
+        public ContainerService(IRepository<Dt_Container> BaseDal, IMessageInfoService messageInfoService) : base(BaseDal)
         {
+            _messageInfoService = messageInfoService;
+        }
+
+        public IRepository<Dt_Container> Repository => BaseDal;
+
+        public WebResponseContent Sensor()
+        {
+            try
+            {
+                var url = "http://172.16.1.4:8082/api/environment/sensor";
+                var result = HttpHelper.Get(url);
+                var response = JsonConvert.DeserializeObject<CollResponse<CoolDto>>(result);
+                if (response == null || response.code != "000") throw new Exception("鎺ュ彛杩斿洖鏁版嵁鎶ラ敊");
+                var deviceNames = response.data.Select(x => x.name?.Trim()).Distinct().ToList();
+                var containers = BaseDal.QueryData(x => deviceNames.Contains(x.deviceName)).ToList();
+                List<Dt_Container> containersAdd = new List<Dt_Container>();
+                List<Dt_Container> containersUp = new List<Dt_Container>();
+                foreach (var item in response.data)
+                {
+                    Dt_Container? container = containers.Where(x => x.deviceName == item.name).FirstOrDefault();
+                    if (container == null)
+                    {
+                        container = new Dt_Container()
+                        {
+                            deviceName = item.name,
+                            Alarm = item.alarm,
+                            CurrentTemperature = item.temperature,
+                            Humidity = item.humidity,
+                            CreateDate = DateTime.Now,
+                            AlarmInformation = item.message
+                        };
+                        containersAdd.Add(container);
+                    }
+                    else
+                    {
+                        container.Alarm = item.alarm;
+                        container.CurrentTemperature = item.temperature;
+                        container.Humidity = item.humidity;
+                        container.AlarmInformation = item.message;
+                        container.ModifyDate = DateTime.Now;
+                        containersUp.Add(container);
+                    }
+                    if (item.alarm != "姝e父")
+                    {
+                        _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm,
+                            $"鍐锋煖{item.name}{item.alarm}", item.message, MessageStatusEnum.Undisposed);
+                    }
+                }
+                if (containersAdd.Count > 0) BaseDal.AddData(containersAdd);
+                if (containersUp.Count > 0) BaseDal.UpdateData(containersUp);
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        public WebResponseContent Sensor1()
+        {
+            try
+            {
+                var url = "http://172.16.1.4:8082/api/environment/sensor";
+                var result = HttpHelper.Get(url);
+                var response = JsonConvert.DeserializeObject<CollResponse<CoolDto>>(result);
+
+                if (response.code != "000" || response.data == null)
+                {
+                    return new WebResponseContent { Status = false, Message = "鎺ュ彛杩斿洖鏁版嵁鎶ラ敊" };
+                }
+
+                // 浣跨敤鎵归噺鎿嶄綔鎻愰珮鎬ц兘
+                var updateList = new List<Dt_Container>();
+                var addList = new List<Dt_Container>();
+                var currentTime = DateTime.Now;
+
+                // 鍏堟煡璇㈡墍鏈夎澶囷紝閬垮厤寰幆涓娆℃煡璇㈡暟鎹簱
+                var deviceNames = response.data.Select(x => x.name).Distinct().ToList();
+                var existingDevices = BaseDal.QueryData(x => deviceNames.Contains(x.deviceName))
+                                           .ToDictionary(x => x.deviceName, x => x);
+
+                foreach (var item in response.data)
+                {
+                    if (existingDevices.TryGetValue(item.name, out var cool))
+                    {
+                        // 鏇存柊鐜版湁璁板綍
+                        cool.CurrentTemperature = item.temperature;
+                        cool.Humidity = item.humidity;
+                        cool.Alarm = item.alarm;
+                        cool.AlarmInformation = item.message;
+                        cool.ModifyDate = currentTime;
+                        updateList.Add(cool);
+                        if (cool.Alarm!="姝e父")
+                        {
+                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, $"鍐锋煖{item.alarm}", item.message, MessageStatusEnum.Undisposed);
+                        }
+                    }
+                    else
+                    {
+                        // 鍒涘缓鏂拌褰�
+                        var dto = new Dt_Container
+                        {
+                            deviceName = item.name,
+                            CurrentTemperature = item.temperature,
+                            Humidity = item.humidity,
+                            Alarm = item.alarm,
+                            AlarmInformation = item.message,
+                            CreateDate = currentTime,
+                            Creater = "System",
+                            ModifyDate = currentTime,
+                            Modifier = "System"
+                        };
+                        addList.Add(dto);
+                        if (item.alarm != "姝e父")
+                        {
+                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, $"鍐锋煖{item.alarm}", item.message, MessageStatusEnum.Undisposed);
+                        }
+                    }
+                }
+
+                // 寮�濮嬩簨鍔�
+                Db.Ado.BeginTran();
+
+                try
+                {
+                    // 鎵归噺鎻掑叆鏂拌褰�
+                    if (addList.Any())
+                    {
+                        BaseDal.Db.Insertable(addList).ExecuteCommand();
+                    }
+
+                    // 鎵归噺鏇存柊鐜版湁璁板綍
+                    if (updateList.Any())
+                    {
+                        BaseDal.Db.Updateable(updateList).ExecuteCommand();
+                    }
+
+                    // 鎻愪氦浜嬪姟
+                    Db.Ado.CommitTran();
+
+                    return new WebResponseContent
+                    {
+                        Status = true,
+                        Message = $"鍚屾鎴愬姛锛氭柊澧瀧addList.Count}鏉★紝鏇存柊{updateList.Count}鏉�"
+                    };
+                }
+                catch (Exception ex)
+                {
+                    Db.Ado.RollbackTran();
+                    return new WebResponseContent
+                    {
+                        Status = false,
+                        Message = $"鏁版嵁淇濆瓨澶辫触锛歿ex.Message}"
+                    };
+                }
+            }
+            catch (Exception ex)
+            {
+                return new WebResponseContent
+                {
+                    Status = false,
+                    Message = $"鎺ュ彛璋冪敤澶辫触锛歿ex.Message}"
+                };
+            }
         }
     }
 }

--
Gitblit v1.9.3