wanghan 7 meses atrás
pai
commit
3f0a1f0672

+ 30 - 5
TeamAAS-VM/App.config

@@ -75,6 +75,11 @@
       <level value="ALL" />
       <appender-ref ref="CTAppender" />
     </logger>
+	  <!--mes日志类-->
+	  <logger name="logMes">
+		  <level value="ALL" />
+		  <appender-ref ref="MesAppender" />
+	  </logger>
     <!--定义输出到文件中-->
     <!--错误日志附加介质-->
     <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
@@ -122,7 +127,7 @@
     </appender>
     <!--信息日志附加介质-->
     <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
-      <param name="File" value="..\\Log\\LogInfo\\" />
+      <param name="File" value="E:\\Data\\Log\\LogInfo\\" />
       <param name="AppendToFile" value="true" />
       <param name="MaxFileSize" value="10240" />
       <param name="MaxSizeRollBackups" value="100" />
@@ -137,7 +142,7 @@
     </appender>
     <!--调试日志附加介质-->
     <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
-      <param name="File" value="..\\Log\\LogDebug\\" />
+      <param name="File" value="E:\\Data\\Log\\LogDebug\\" />
       <param name="AppendToFile" value="true" />
       <param name="MaxFileSize" value="10240" />
       <param name="MaxSizeRollBackups" value="100" />
@@ -152,7 +157,7 @@
     </appender>
     <!--警告日志附加介质-->
     <appender name="WarnAppender" type="log4net.Appender.RollingFileAppender">
-      <param name="File" value="..\\Log\\LogWarn\\" />
+      <param name="File" value="E:\\Data\\Log\\LogWarn\\" />
       <param name="AppendToFile" value="true" />
       <param name="MaxFileSize" value="10240" />
       <param name="MaxSizeRollBackups" value="100" />
@@ -168,7 +173,7 @@
     <!--动态日志附加介质-->
     <appender name="DynamicAppender" type="log4net.Appender.RollingFileAppender">
       <!--输出日志文件的路径-->
-      <param name="File" value="..\\Log\\LogOther\\" />
+      <param name="File" value="E:\\Data\\Log\\LogOther\\" />
       <!--输出日志时自动向后追加-->
       <param name="AppendToFile" value="true" />
       <!--防止多线程时不能写Log,官方说线程非安全,但实际使用时,本地测试正常,部署后有不能写日志的情况-->
@@ -187,7 +192,7 @@
     </appender>
     <!--CT日志附加介质-->
     <appender name="CTAppender" type="log4net.Appender.RollingFileAppender">
-      <param name="File" value="..\\Log\\LogCT\\" />
+      <param name="File" value="E:\\Data\\Log\\LogCT\\" />
       <param name="AppendToFile" value="true" />
       <param name="MaxFileSize" value="10240" />
       <param name="MaxSizeRollBackups" value="100" />
@@ -200,6 +205,26 @@
         <param name="ConversionPattern" value="[日志时间:%d] [%t] [%-5p]:%m%n" />
       </layout>
     </appender>
+	  <!--mes日志-->
+	  <appender name="MesAppender" type="log4net.Appender.RollingFileAppender">
+		  <!--输出日志文件的路径-->
+		  <param name="File" value="E:\\Data\\Log\\LogMes\\" />
+		  <!--输出日志时自动向后追加-->
+		  <param name="AppendToFile" value="true" />
+		  <!--防止多线程时不能写Log,官方说线程非安全,但实际使用时,本地测试正常,部署后有不能写日志的情况-->
+		  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
+		  <param name="MaxFileSize" value="10240" />
+		  <param name="MaxSizeRollBackups" value="100" />
+		  <param name="StaticLogFileName" value="false" />
+		  <param name="DatePattern" value="yyyy-MM\\yyyy-MM-dd&quot;.txt&quot;" />
+		  <param name="RollingStyle" value="Date" />
+		  <!--输出格式-->
+		  <!--样例:[日志时间:2023-11-08 10:56:12,247] [1] [INFO ]:系统启动!-->
+		  <!--信息日志布局-->
+		  <layout type="log4net.Layout.PatternLayout">
+			  <param name="ConversionPattern" value="[日志时间:%d] [%t] [%-5p]:%m%n" />
+		  </layout>
+	  </appender>
   </log4net>
   <system.web>
     <membership defaultProvider="ClientAuthenticationMembershipProvider">

+ 4 - 2
TeamAAS-VM/Data/SystemDatabaseService.cs

@@ -628,7 +628,7 @@ namespace TeamAAS_VP.Data
         /// <summary>
         /// 分页查询锁付结果
         /// </summary>
-        public async Task<(IEnumerable<LockResult> Items, int TotalCount)> QueryLockResultsAsync(DateTime start, DateTime end, int pageIndex, int pageSize, string productNumber = null, int? screwNumber = null, bool? lockPassed = null)
+        public async Task<(IEnumerable<LockResult> Items, int TotalCount)> QueryLockResultsAsync(DateTime start, DateTime end, int pageIndex, int pageSize, string productNumber = null, string productName = null, int? screwNumber = null, bool? lockPassed = null)
         {
             if (pageIndex < 1) pageIndex = 1;
             if (pageSize < 1) pageSize = 20;
@@ -637,6 +637,7 @@ namespace TeamAAS_VP.Data
             if (!string.IsNullOrEmpty(productNumber)) q = q.Where(r => r.ProductNumber == productNumber);
             if (screwNumber.HasValue) q = q.Where(r => r.Number == screwNumber.Value);
             if (lockPassed.HasValue) q = q.Where(r => r.LockPassed == lockPassed.Value);
+            if (!string.IsNullOrEmpty(productName)) q = q.Where(r => r.ProductName == productName);
 
             var total = await q.CountAsync();
             var list = await q.OrderBy(r => r.Timestamp, OrderByType.Desc).ToPageListAsync(pageIndex, pageSize);
@@ -646,12 +647,13 @@ namespace TeamAAS_VP.Data
         /// <summary>
         /// 查询所有符合条件的锁付结果(不分页)。
         /// </summary>
-        public async Task<IEnumerable<LockResult>> QueryAllLockResultsAsync(DateTime start, DateTime end, string productNumber = null, int? screwNumber = null, bool? lockPassed = null)
+        public async Task<IEnumerable<LockResult>> QueryAllLockResultsAsync(DateTime start, DateTime end, string productNumber = null, string productName= null, int? screwNumber = null, bool? lockPassed = null)
         {
             var q = _db.Queryable<LockResult>().Where(r => r.Timestamp >= start && r.Timestamp < end);
             if (!string.IsNullOrEmpty(productNumber)) q = q.Where(r => r.ProductNumber == productNumber);
             if (screwNumber.HasValue) q = q.Where(r => r.Number == screwNumber.Value);
             if (lockPassed.HasValue) q = q.Where(r => r.LockPassed == lockPassed.Value);
+            if (!string.IsNullOrEmpty(productName)) q = q.Where(r => r.ProductName == productName);
 
             var list = await q.OrderBy(r => r.Timestamp, OrderByType.Desc).ToListAsync();
             return list;

+ 2 - 2
TeamAAS-VM/Interfaces/ISystemDatabaseService.cs

@@ -305,7 +305,7 @@ namespace TeamAAS_VP.Interfaces
         /// <param name="screwNumber">可选的螺丝编号(Number)过滤</param>
         /// <param name="lockPassed">可选的是否通过过滤</param>
         /// <returns>返回一个元组,包含记录集合和总记录数</returns>
-        Task<(IEnumerable<LockResult> Items, int TotalCount)> QueryLockResultsAsync(DateTime start, DateTime end, int pageIndex, int pageSize, string productNumber = null, int? screwNumber = null, bool? lockPassed = null);
+        Task<(IEnumerable<LockResult> Items, int TotalCount)> QueryLockResultsAsync(DateTime start, DateTime end, int pageIndex, int pageSize, string productNumber = null, string productName = null, int? screwNumber = null, bool? lockPassed = null);
 
         /// <summary>
         /// 查询所有符合条件的锁付结果(不分页)。
@@ -316,7 +316,7 @@ namespace TeamAAS_VP.Interfaces
         /// <param name="screwNumber">可选的螺丝编号过滤</param>
         /// <param name="lockPassed">可选的是否通过过滤</param>
         /// <returns>符合条件的锁付结果集合。</returns>
-        Task<IEnumerable<LockResult>> QueryAllLockResultsAsync(DateTime start, DateTime end, string productNumber = null, int? screwNumber = null, bool? lockPassed = null);
+        Task<IEnumerable<LockResult>> QueryAllLockResultsAsync(DateTime start, DateTime end, string productNumber = null, string productName = null, int? screwNumber = null, bool? lockPassed = null);
 
         /// <summary>
         /// 记录一次螺丝供料器批次更换记录

+ 8 - 0
TeamAAS-VM/LogHelper.cs

@@ -17,6 +17,7 @@ namespace TeamAAS_VP
         public static readonly ILog logfatal = LogManager.GetLogger("logfatal");
         public static readonly ILog logDynamic = LogManager.GetLogger("logDynamic");
         public static readonly ILog logCT = LogManager.GetLogger("logCT");
+        public static readonly ILog logmes = LogManager.GetLogger("logMes");
         public static void WriteLogInfo(string info)
         {
             if (loginfo.IsInfoEnabled)
@@ -76,7 +77,14 @@ namespace TeamAAS_VP
                 logCT.Info(info);
             }
         }
+        public static void WriteLogMes(string info)
+        {
+            if (logmes.IsInfoEnabled)
+            {
+                logmes.Info(info);
 
+            }
+        }
         internal static void WriteLogError(Lang lang, double v, object 点校准界面加载时出错, Exception ex)
         {
             throw new NotImplementedException();

+ 0 - 12
TeamAAS-VM/ViewModels/HomeViewModel.cs

@@ -197,11 +197,6 @@ namespace TeamAAS_VP.ViewModels
             _AddScrewCommand ?? (_AddScrewCommand = new DelegateCommand(ExecuteAddScrewCommand));
 
         
-
-        private DelegateCommand _NozzleCounterResetCommand;
-        public DelegateCommand NozzleCounterResetCommand =>
-            _NozzleCounterResetCommand ?? (_NozzleCounterResetCommand = new DelegateCommand(ExecuteNozzleCounterResetCommand));
-
         private DelegateCommand _SetAlarmValueCommand;
         public DelegateCommand SetAlarmValueCommand =>
             _SetAlarmValueCommand ?? (_SetAlarmValueCommand = new DelegateCommand(ExecuteSetAlarmValueCommand));
@@ -591,13 +586,6 @@ namespace TeamAAS_VP.ViewModels
             });
         }
 
-        void ExecuteNozzleCounterResetCommand()
-        {
-            //management.NumStatistics.NozzleNum = 0;
-            //management.NumStatistics.HeaderNum = 0;
-            //FileHelper.WriteJsonFile(management.NumStatistics, FilePath.NumberStatisticsPath);
-            _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
-        }
         #endregion
 
         #region 继承

+ 10 - 7
TeamAAS-VM/ViewModels/Statistics/LockResultRecoredQueryViewModel.cs

@@ -149,18 +149,19 @@ namespace TeamAAS_VP.ViewModels.Statistics
                 var end = EndDate.HasValue ? EndDate.Value.Date.AddDays(1) : DateTime.MaxValue;
 
                 string productNumberFilter = null;
+                string productName = null;
                 if (!string.IsNullOrWhiteSpace(ProductNumber)) productNumberFilter = ProductNumber.Trim();
                 // if SelectedProduct is selected, use its Name as productNumber? The user requested select product name then time range; productNumber precise search should still be supported
-                if (SelectedProduct != null && string.IsNullOrEmpty(productNumberFilter))
+                if (SelectedProduct != null)
                 {
                     // assume SelectedProduct.Name correspond to ProductNumber field used when storing
-                    productNumberFilter = SelectedProduct.Name;
+                    productName = SelectedProduct.Name;
                 }
 
                 int pageIndex = PageIndex < 1 ? 1 : PageIndex;
                 int pageSize = PageSize < 1 ? 20 : PageSize;
 
-                var res = await _systemDatabaseService.QueryLockResultsAsync(start, end, pageIndex, pageSize, productNumberFilter, ScrewNumber);
+                var res = await _systemDatabaseService.QueryLockResultsAsync(start, end, pageIndex, pageSize, productNumberFilter, productName, ScrewNumber);
                 Results = new ObservableCollection<LockResult>(res.Items);
                 TotalCount = res.TotalCount;
             }
@@ -185,14 +186,15 @@ namespace TeamAAS_VP.ViewModels.Statistics
                 var end = EndDate.HasValue ? EndDate.Value.Date.AddDays(1) : DateTime.MaxValue;
 
                 string productNumberFilter = null;
+                string productName = null;
                 if (!string.IsNullOrWhiteSpace(ProductNumber)) productNumberFilter = ProductNumber.Trim();
-                if (SelectedProduct != null && string.IsNullOrEmpty(productNumberFilter))
+                if (SelectedProduct != null)
                 {
-                    productNumberFilter = SelectedProduct.Name;
+                    productName = SelectedProduct.Name;
                 }
 
                 // fetch all matching records (not paged)
-                var all = await _systemDatabaseService.QueryAllLockResultsAsync(start, end, productNumberFilter, ScrewNumber);
+                var all = await _systemDatabaseService.QueryAllLockResultsAsync(start, end, productNumberFilter, productName, ScrewNumber);
                 if (all == null || !all.Any())
                 {
                     MessageBox.Show(Lang.没有找到符合条件的记录, Lang.提示, MessageBoxButton.OK, MessageBoxImage.Information);
@@ -212,12 +214,13 @@ namespace TeamAAS_VP.ViewModels.Statistics
                 // write in streaming manner to support large sets
                 using (var sw = new StreamWriter(path, false, Encoding.UTF8))
                 {
-                    sw.WriteLine("Id,Number,ProductNumber,Timestamp,LockTurns,LockTorque,LockDuration,LockPassed,ResultDetails,ScrewdriverProgramNumber,Pressure,TargetTorqueUpperLimit,TargetTorqueLowerLimit,TargetTurnsUpperLimit,TargetTurnsLowerLimit,TargetLockSpeed,StartPositionX,StartPositionY,StartPositionZ,EndPositionZ,LockDescentSpeed,FeederNumber,NozzleNumber,OperatorName,ProductImagePath,LockCurveImagePath");
+                    sw.WriteLine("Id,Number,ProductName,ProductNumber,Timestamp,LockTurns,LockTorque,LockDuration,LockPassed,ResultDetails,ScrewdriverProgramNumber,Pressure,TargetTorqueUpperLimit,TargetTorqueLowerLimit,TargetTurnsUpperLimit,TargetTurnsLowerLimit,TargetLockSpeed,StartPositionX,StartPositionY,StartPositionZ,EndPositionZ,LockDescentSpeed,FeederNumber,NozzleNumber,OperatorName,ProductImagePath,LockCurveImagePath");
                     foreach (var r in all)
                     {
                         var line = string.Join(",",
                             EscapeCsv(r.Id.ToString()),
                             EscapeCsv(r.Number.ToString()),
+                            EscapeCsv(r.ProductName),
                             EscapeCsv(r.ProductNumber),
                             EscapeCsv(r.Timestamp.ToString("yyyy-MM-dd HH:mm:ss")),
                             EscapeCsv(r.LockTurns.ToString()),

+ 2 - 1
TeamAAS-VM/Views/Product/VisionDynamicAccuracyAnalyzer.xaml

@@ -290,7 +290,8 @@
                                 </StackPanel>
 
                                 <!-- A点延时 -->
-                                <StackPanel Grid.Column="2">
+                                <StackPanel Grid.Column="2"
+                                            Margin="10,0,0,0">
                                     <TextBlock Text="A点延时(ms):" />
                                     <mah:NumericUpDown Value="{Binding ADelay, Mode=TwoWay}"
                                                        Minimum="50"

+ 1 - 0
TeamAAS-VM/Views/SettingView.xaml

@@ -2345,6 +2345,7 @@
                                   IsChecked="{Binding IsSaveScrewCurve,Mode=TwoWay}"
                                   VerticalAlignment="Center"
                                   HorizontalAlignment="Right"
+                                   FontSize="{DynamicResource Font.Size.Body3}"
                                   Margin="0,0,6,0">保存锁付曲线图</CheckBox>
                         <!-- 保存锁付曲线设置 -->
                         <StackPanel Grid.Row="10"