Browse Source

1,处理采集数据粘包问题
2,首页获取数据添加班组区分
3,接口添加下一条

杜首举 2 years ago
parent
commit
4c7f7cb038

+ 1 - 1
src/MWS.Domain/App.xaml

@@ -2,7 +2,7 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             ShutdownMode="OnExplicitShutdown"
+             ShutdownMode="OnExplicitShutdown" Startup="Application_Startup" Exit="Application_Exit" 
              StartupUri="MainWindow.xaml" d1p1:Ignorable="d">
     <Application.Resources>
         <ResourceDictionary>

+ 10 - 1
src/MWS.Domain/App.xaml.cs

@@ -61,7 +61,6 @@ namespace MWS.Domain
                 new ModbusTcpServerTask();
             }
             WebApiServerTask.Start();
-
         }
 
         void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
@@ -187,5 +186,15 @@ namespace MWS.Domain
                     MessageBox.Show("您需要管理员权限修改", "提示");
             }
         }
+
+        private void Application_Exit(object sender, ExitEventArgs e)
+        {
+            Process.GetCurrentProcess().Kill();
+        }
+
+        private void Application_Startup(object sender, StartupEventArgs e)
+        {
+
+        }
     }
 }

BIN
src/MWS.Domain/Assets/Images/logo.ico


BIN
src/MWS.Domain/Assets/Images/logo1.png


+ 1 - 1
src/MWS.Domain/MWS.Domain.csproj

@@ -38,7 +38,7 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <PropertyGroup>
-    <ApplicationIcon>logo.ico</ApplicationIcon>
+    <ApplicationIcon>Assets\Images\logo.ico</ApplicationIcon>
   </PropertyGroup>
   <PropertyGroup>
     <TargetZone>LocalIntranet</TargetZone>

+ 69 - 7
src/MWS.Domain/Tasks/Weighing/ShunZhouSocketClient.cs

@@ -45,7 +45,8 @@ namespace MWS.Domain.Tasks.Weighing
         private Device device;
         private List<Zigbee> zigbees;
         private IZigbee zigbeeManager;
-
+        private float oldWeight1 =0;
+        private float oldWeight2 = 0;
         /// <summary>
         /// 获取或设置当前的服务器连接是否成功,定时获取本属性可用于实时更新连接状态信息
         /// </summary>
@@ -201,9 +202,10 @@ namespace MWS.Domain.Tasks.Weighing
                 try
                 {
                     int bytesRead = peerSock.EndReceive(ar);
-                    if (bytesRead >= 20)
+                    if (bytesRead >= 20&&bytesRead<100)
                     {
                         int index = 0;
+                        int count = 0;
                         while (index < bytesRead)
                         {
                             //00 01 02 24 31 26 20 20 31 39 36 32 20 20 20 20 20 30 0D 6C
@@ -241,9 +243,9 @@ namespace MWS.Domain.Tasks.Weighing
                                     #region 发送实时数据
                                     var mqttMessage = new MqttApplicationMessage
                                     {
-                                        Topic = "WeightRealTimeData"+id,
+                                        Topic = "WeightRealTimeData" + id,
                                         Payload = Encoding.UTF8.GetBytes(new JObject(
-                                                                            
+
                                                                             new JProperty("DeviceId", id),
                                                                             new JProperty("NetWeight", weightTemp),
                                                                             new JProperty("OverLoad", overLoad),
@@ -253,9 +255,61 @@ namespace MWS.Domain.Tasks.Weighing
                                     var publishResult = _mqttClient.PublishMessage(mqttMessage);
                                     if (!publishResult.IsSuccess)
                                     {
-                                        LogHelper.WriteLog("发布主题“WeightRealTimeData”时失败!错误:" + publishResult.Message);
+                                        LogHelper.WriteLog("发布主题“WeightRealTimeData" + id + "”时失败!错误:" + publishResult.Message);
                                     }
                                     #endregion
+                                    //#region 数据无变化时不发推送
+                                    //if (id==zigbees[0].Code)
+                                    //{
+                                    //    if (oldWeight1!=weightTemp)
+                                    //    {
+                                    //        oldWeight1 = weightTemp;
+                                    //        #region 发送实时数据
+                                    //        var mqttMessage = new MqttApplicationMessage
+                                    //        {
+                                    //            Topic = "WeightRealTimeData" + id,
+                                    //            Payload = Encoding.UTF8.GetBytes(new JObject(
+
+                                    //                                                new JProperty("DeviceId", id),
+                                    //                                                new JProperty("NetWeight", weightTemp),
+                                    //                                                new JProperty("OverLoad", overLoad),
+                                    //                                                new JProperty("IsSteady", isSteady)
+                                    //                                                ).ToString())
+                                    //        };
+                                    //        var publishResult = _mqttClient.PublishMessage(mqttMessage);
+                                    //        if (!publishResult.IsSuccess)
+                                    //        {
+                                    //            LogHelper.WriteLog("发布主题“WeightRealTimeData" + id + "”时失败!错误:" + publishResult.Message);
+                                    //        }
+                                    //        #endregion
+                                    //    }
+                                    //}
+                                    //else
+                                    //{
+                                    //    if (oldWeight2 != weightTemp)
+                                    //    {
+                                    //        oldWeight2 = weightTemp;
+                                    //        #region 发送实时数据
+                                    //        var mqttMessage = new MqttApplicationMessage
+                                    //        {
+                                    //            Topic = "WeightRealTimeData" + id,
+                                    //            Payload = Encoding.UTF8.GetBytes(new JObject(
+
+                                    //                                                new JProperty("DeviceId", id),
+                                    //                                                new JProperty("NetWeight", weightTemp),
+                                    //                                                new JProperty("OverLoad", overLoad),
+                                    //                                                new JProperty("IsSteady", isSteady)
+                                    //                                                ).ToString())
+                                    //        };
+                                    //        var publishResult = _mqttClient.PublishMessage(mqttMessage);
+                                    //        if (!publishResult.IsSuccess)
+                                    //        {
+                                    //            LogHelper.WriteLog("发布主题“WeightRealTimeData" + id + "”时失败!错误:" + publishResult.Message);
+                                    //        }
+                                    //        #endregion
+                                    //    }
+                                    //}
+                                    //#endregion
 
                                     if (id==zigbees[0].Code)
                                     {
@@ -289,7 +343,7 @@ namespace MWS.Domain.Tasks.Weighing
                                                     if (weight > _systemConfig.WeightItem.Threshold)
                                                     {
                                                         var teamId = GetCurrentTeam();
-                                                        weightManager.Insert(new Record
+                                                        var recordId= weightManager.Insert(new Record
                                                         {
 
                                                             Device = zigbees[0].Id,
@@ -300,11 +354,14 @@ namespace MWS.Domain.Tasks.Weighing
                                                             CreationTime = DateTime.Now,
                                                             Team = teamId
                                                         });
+                                                        //获取最新id
+
                                                         #region 发送称重数据
                                                         mqttMessage = new MqttApplicationMessage
                                                         {
                                                             Topic = "WeighingData",
                                                             Payload = Encoding.UTF8.GetBytes(new JObject(
+                                                                                                new JProperty("recordId", recordId),
                                                                                                 new JProperty("DeviceId", zigbees[0].Id),
                                                                                                 new JProperty("NetWeight", weight),
                                                                                                 new JProperty("TeamId", teamId)
@@ -403,8 +460,13 @@ namespace MWS.Domain.Tasks.Weighing
                                             }
                                         }
                                     }
-                                  
 
+                                    count++;
+                                    //break;
+                                }
+
+                                if (count>=2)
+                                {
                                     break;
                                 }
                             }

+ 36 - 4
src/MWS.Domain/View/RealTime/SixCarRealTimePage.xaml.cs

@@ -1,4 +1,5 @@
 using HslCommunication;
+using HslCommunication.Enthernet.Redis;
 using HslCommunication.MQTT;
 using MWS.Data.InterFace;
 using MWS.Data.Manager;
@@ -43,6 +44,7 @@ namespace MWS.Domain.View.RealTime
         private DateTime endTime;
         private Chart chart;
         public MqttClient _mqttClient;
+        private RedisClient _redisClient;
         private List<Device> devices;
         private List<Zigbee> zigbees;
         private IZigbee zigbeeManager;
@@ -55,6 +57,9 @@ namespace MWS.Domain.View.RealTime
             entranceManage = new EntranceManager(); 
             zigbeeManager = new ZigbeeManager();
             zigbees = zigbeeManager.GetAll(deviceId);
+
+            _redisClient = new RedisClient("127.0.0.1", 6379, null);
+            _redisClient.SelectDB(1);
             #region MQTT
             var mqttPort = ConfigurationManager.AppSettings["MqttPort"];
             _mqttClient = new MqttClient(new MqttConnectionOptions
@@ -70,7 +75,7 @@ namespace MWS.Domain.View.RealTime
             }
             else
             {
-                var subscribeResult = _mqttClient.SubscribeMessage(new string[] { "WeightRealTimeData1", "WeightRealTimeData3", "WeightRealTimeData4", "WeightRealTimeData5", "WeightRealTimeData6", "WeightRealTimeData7", "WeighingData", "ZigbeeState" });
+                var subscribeResult = _mqttClient.SubscribeMessage(new string[] { "WeightRealTimeData1", "WeightRealTimeData3", "WeightRealTimeData4", "WeightRealTimeData5", "WeightRealTimeData6", "WeightRealTimeData7", "WeighingData", "ZigbeeState", "TeamChange" });
                 if (!subscribeResult.IsSuccess)
                 {
                     LogHelper.WriteLog("订阅主题失败!Message:" + subscribeResult.Message);
@@ -119,6 +124,10 @@ namespace MWS.Domain.View.RealTime
                     var zigbeeStateJson = Encoding.UTF8.GetString(payload);
                     BindDataState(zigbeeStateJson);
                     break;
+                case "TeamChange":
+                    var teamJson = Encoding.UTF8.GetString(payload);
+                    TeamChange(teamJson);
+                    break;
 
             }
             //BindData();
@@ -374,7 +383,7 @@ namespace MWS.Domain.View.RealTime
                     OperateResult connect = client.ConnectServer();
                     if (connect.IsSuccess)
                     {
-                        var subscribeResult = _mqttClient.SubscribeMessage(new string[] { "SwitchTagChange", "ValueTagChange", "TeamChange", "WeighingData" });
+                        var subscribeResult = _mqttClient.SubscribeMessage(new string[] { "WeightRealTimeData1", "WeightRealTimeData3", "WeightRealTimeData4", "WeightRealTimeData5", "WeightRealTimeData6", "WeightRealTimeData7", "WeighingData", "ZigbeeState", "TeamChange" });
                         if (!subscribeResult.IsSuccess)
                         {
                             LogHelper.WriteLog("订阅主题失败!Message:" + subscribeResult.Message);
@@ -391,7 +400,14 @@ namespace MWS.Domain.View.RealTime
 
         private void Page_Loaded(object sender, RoutedEventArgs e)
         {
-            startTime = DateTime.Now.AddDays(-1);
+            var operateResultTemps = _redisClient.ReadKey("CurrentTeam");
+
+            if (operateResultTemps.Content != null)
+            {
+                JObject tagObject = JObject.Parse(operateResultTemps.Content);
+                teamId = Convert.ToInt32(tagObject.GetValue("Id"));
+            }
+            startTime = DateTime.Now.Date;
             endTime = DateTime.Now;
             devices = deviceManage.GetAll();
             foreach (var item in zigbees)
@@ -423,6 +439,22 @@ namespace MWS.Domain.View.RealTime
             }
             
         }
+        private void TeamChange(string changeTags)
+        {
+            JObject tagObject;
+            if (changeTags != null)
+            {
+                tagObject = JObject.Parse(changeTags.ToString());
+                teamId = tagObject.GetValue("Id").ToSafeInt();
+            }
+            startTime = DateTime.Now.Date;
+            endTime = DateTime.Now;
+            devices = deviceManage.GetAll();
+            foreach (var item in zigbees)
+            {
+                GetListData(item.Id);
+            }
+        }
         /// <summary>
         /// 图表绑定
         /// </summary>
@@ -446,7 +478,7 @@ namespace MWS.Domain.View.RealTime
         private void GetListData(int deviceId)
         {
             endTime = DateTime.Now.AddMinutes(1);
-            List<RecordDto> details = weightManage.GetChartRecords(1, deviceId, 1, startTime, endTime);
+            List<RecordDto> details = weightManage.GetChartRecords(1, deviceId, teamId, startTime, endTime);
             switch (deviceId)
             {
                 case 1:

+ 22 - 1
src/MWS.Domain/Web/Controller/WeightController.cs

@@ -41,6 +41,27 @@ namespace MWS.Domain.Web.Controller
 
             return result;
         }
-        
+        public Result<Record> GetNextOneRecord(int id , int deviceId , int isNext)
+        {
+            Result<Record> result = new Result<Record>();
+          
+            IWeight weightManage = new WeightManager();
+            try
+            {
+                IZigbee zigbeeManager = new ZigbeeManager();
+                Record pa = weightManage.GetNextOne(id, deviceId, isNext);
+
+                result.Data = pa;
+                result.Message = "成功!";
+            }
+            catch (Exception ex)
+            {
+                result.Data = null;
+                result.Message = "失败!";
+            }
+
+            return result;
+        }
+
     }
 }