KWD 6 månader sedan
förälder
incheckning
010bc5ec84

+ 1 - 1
TeamAAS-VM/Core/FileNameTemplate.cs

@@ -90,7 +90,7 @@ namespace TeamAAS_VP.Core
             // 日期时间变量
             RegisterVariable("Now", () => DateTime.Now);
             RegisterVariable("Today", () => DateTime.Today);
-            RegisterVariable("UtcNow", () => DateTime.UtcNow);
+            RegisterVariable("Now", () => DateTime.Now);
 
             // 可以在这里添加更多内置变量
         }

+ 33 - 4
TeamAAS-VM/Core/Management.cs

@@ -2314,7 +2314,7 @@ namespace TeamAAS_VP.Core
                                         LogHelper.WriteLogMes($"【mes结束QUERY】");
                                         SendTaskMessage($"mes结束QUERY", MessageLevel.Info);
                                     }
-                                    else
+                                    else if(stationConfig.EnableMES)
                                     {
                                         SendTaskMessage($"收到{i}:{stationConfig.DeviceName}过站检查请求(当站是否生产)(当前不需要双MES验证)...", MessageLevel.Debug);
 
@@ -2362,6 +2362,14 @@ namespace TeamAAS_VP.Core
                                         LogHelper.WriteLogMes($"【mes结束QUERY】");
                                         SendTaskMessage($"mes结束QUERY", MessageLevel.Info);
                                     }
+                                    else
+                                    {
+                                        LogHelper.WriteLogMes("未启用mes");
+                                        SendTaskMessage("未启用mes", MessageLevel.Error);
+                                        //产品发生改变并且供料器发生了变化时,需要通知PLC进行取料更改
+                                        await plc.WriteNodeAsync(addressConfig.Out_ScrewFeederIsChanged.Address, (Int16)1); //不发生改变
+                                        await plc.WriteNodeAsync(string.Format(addressConfig.Out_MesStatus.Address, i), (Int16)2);
+                                    }
                                 }
                                 // 上传本站数据
                                 else if (state == 2)
@@ -2472,9 +2480,30 @@ namespace TeamAAS_VP.Core
                                                 PPID = ProductMainSN[i],
                                                 PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
                                                 PROCESS_START_TIME = _LastMesCheckTime[i].ToString(),
-                                                CTQ_NAME = "CC",
-                                                CTQ_VALUE = cc.Replace(",", ";"),
-                                                //CTQ_VALUE = 0,
+                                                CTQ_NAME = "CC1",
+                                                CTQ_VALUE = cc.Split(",")[0],
+                                                CTQ_LSL = "",
+                                                CTQ_USL = "",
+                                                PROCESS_END_TIME = serverTimeResult.Now.ToString(),
+                                                SUPPLIER_NAME = stationConfig.DataInfo.SUPPLIER_NAME,
+                                                COMMODITY_TYPE = stationConfig.DataInfo.COMMODITY_TYPE,
+                                                REVISION = stationConfig.DataInfo.REVISION,
+                                                WO = wo[i],
+                                                MFG_LOT = stationConfig.DataInfo.MFG_LOT,
+                                                MFG_ASSY_LINE = stationConfig.DataInfo.MFG_ASSY_LINE,
+                                                PROCESS_OUTCOME = "PASS",
+                                                PROCESS_MACHINE_ID = stationConfig.DataInfo.PROCESS_MACHINE_ID,
+                                                CTQ_UNIT_OF_MEASURE = "mm",
+                                                ERROR_MESSAGE = assyPress ? "" : "CC OOS",                                            
+                                                
+                                            });
+                                            DFC.Add(new DataFormCtq
+                                            {
+                                                PPID = ProductMainSN[i],
+                                                PROCESS_NAME = stationConfig.DataInfo.PROCESS_NAME,
+                                                PROCESS_START_TIME = _LastMesCheckTime[i].ToString(),
+                                                CTQ_NAME = "CC2",
+                                                CTQ_VALUE = cc.Split(",")[1],
                                                 CTQ_LSL = "",
                                                 CTQ_USL = "",
                                                 PROCESS_END_TIME = serverTimeResult.Now.ToString(),

+ 4 - 4
TeamAAS-VM/Core/Robots/XYZU_Robot.cs

@@ -641,7 +641,7 @@ namespace TeamAAS_VP.Core.Robots
                 foreach (var node in actNodes)
                 {
                     lastPos[node] = float.NaN;
-                    lastChange[node] = DateTime.UtcNow;
+                    lastChange[node] = DateTime.Now;
                 }
 
                 const float movementThreshold = 0.01f; // 判断位置变化的阈值,避免噪声
@@ -663,7 +663,7 @@ namespace TeamAAS_VP.Core.Robots
                         // 如果读取失败,继续让 CheckMoveFinished 来处理状态或超时
                     }
 
-                    var now = DateTime.UtcNow;
+                    var now = DateTime.Now;
 
                     // 更新每个节点的变化时间:只要任意一个轴在最近 Timeout 时间内有变化,就视为系统仍在运动
                     foreach (var node in actNodes)
@@ -988,14 +988,14 @@ namespace TeamAAS_VP.Core.Robots
 
                 //准备停滞检测:收集所有实际位置节点
                 float lastPos = float.NaN;
-                DateTime lastChange = DateTime.UtcNow;
+                DateTime lastChange = DateTime.Now;
                 const float movementThreshold = 0.01f; // 判断位置变化的阈值,避免噪声
                 Stopwatch sw = new Stopwatch();
                 sw.Start();
                 
                 while (true)
                 {
-                    var now = DateTime.UtcNow;
+                    var now = DateTime.Now;
                     // 先读取轴的实际位置,用于停滞检测
                     var actual = Plc.ReadNode<float>(axis.State.ActPositionNode);
                     if (float.IsNaN(lastPos))

+ 17 - 17
TeamAAS-VM/Data/SystemDatabaseService.cs

@@ -126,7 +126,7 @@ namespace TeamAAS_VP.Data
             {
                 UserId = userId,
                 Success = true,
-                Time = DateTime.UtcNow,
+                Time = DateTime.Now,
                 Message = "Set as current user"
             };
 
@@ -146,7 +146,7 @@ namespace TeamAAS_VP.Data
             {
                 UserId = user.Id,
                 Success = true,
-                Time = DateTime.UtcNow,
+                Time = DateTime.Now,
                 Message = user.UserName
             };
             await RecordUserLoginAsync(rec);
@@ -190,7 +190,7 @@ namespace TeamAAS_VP.Data
         public async Task RecordUserLoginAsync(UserLoginRecord record)
         {
             if (record == null) throw new ArgumentNullException(nameof(record));
-            if (record.Time == default(DateTime)) record.Time = DateTime.UtcNow;
+            if (record.Time == default(DateTime)) record.Time = DateTime.Now;
             await _db.Insertable(record).ExecuteCommandAsync();
         }
 
@@ -397,9 +397,9 @@ namespace TeamAAS_VP.Data
         public async Task<int> GetTodayProductionAsync(string productName)
         {
             //今天的起始时间
-            var todayStart = DateTime.UtcNow.Date;
+            var todayStart = DateTime.Now.Date;
             //今天的结束时间
-            var todayEnd = DateTime.UtcNow.Date;
+            var todayEnd = DateTime.Now.Date;
             todayEnd= todayEnd.AddDays(1);
             //按照产品名称和时间范围查询生产记录的总数
             var total = await _db.Queryable<ProductionRecord>()
@@ -415,8 +415,8 @@ namespace TeamAAS_VP.Data
         /// <returns></returns>
         public async Task<int> GetLastHourProductionAsync(string productName)
         {
-                        var lastHourStart = DateTime.UtcNow.AddHours(-1);
-            var lastHourEnd = DateTime.UtcNow;
+                        var lastHourStart = DateTime.Now.AddHours(-1);
+            var lastHourEnd = DateTime.Now;
             //按照产品名称和时间范围查询生产记录的总数
             var total = await _db.Queryable<ProductionRecord>()
                 .Where(r => r.ProductName == productName && r.Timestamp >= lastHourStart && r.Timestamp < lastHourEnd)
@@ -432,7 +432,7 @@ namespace TeamAAS_VP.Data
         public Task<int> GetCurrentMonthProductionAsync(string productName)
         {
 
-            var now = DateTime.UtcNow;
+            var now = DateTime.Now;
             var monthStart = new DateTime(now.Year, now.Month, 1);
             var monthEnd = monthStart.AddMonths(1);
             //按照产品名称和时间范围查询生产记录的总数
@@ -449,7 +449,7 @@ namespace TeamAAS_VP.Data
         /// <returns></returns>
         public Task<int> GetCurrentWeekProductionAsync(string productName)
         {
-            var now = DateTime.UtcNow;
+            var now = DateTime.Now;
             var weekStart = FirstDayOfWeek(now);
             var weekEnd = weekStart.AddDays(7);
             //按照产品名称和时间范围查询生产记录的总数
@@ -522,7 +522,7 @@ namespace TeamAAS_VP.Data
         /// <returns></returns>
         public async Task<Dictionary<DateTime, Dictionary<string, int>>> GetMonthlyProductionByDayAndCategoryAsync(string productName)
         {
-            var now = DateTime.UtcNow;
+            var now = DateTime.Now;
             var monthStart = new DateTime(now.Year, now.Month, 1);
             var monthEnd = monthStart.AddMonths(1);
             var list = await _db.Queryable<ProductionRecord>()
@@ -547,7 +547,7 @@ namespace TeamAAS_VP.Data
         /// <returns></returns>
         public async Task<Dictionary<int, Dictionary<string, int>>> GetWeeklyProductionByDayAndCategoryAsync(string productName)
         {
-            var now = DateTime.UtcNow;
+            var now = DateTime.Now;
             var weekStart = FirstDayOfWeek(now);
             var weekEnd = weekStart.AddDays(7);
             var list = await _db.Queryable<ProductionRecord>()
@@ -571,7 +571,7 @@ namespace TeamAAS_VP.Data
         /// <returns></returns>
         public async Task<Dictionary<int, Dictionary<string, int>>> GetDailyProductionByHourAndCategoryAsync(string productName)
         {
-            var now = DateTime.UtcNow;
+            var now = DateTime.Now;
             var dayStart = now.Date;
             var dayEnd = dayStart.AddDays(1);
             var list = await _db.Queryable<ProductionRecord>()
@@ -614,7 +614,7 @@ namespace TeamAAS_VP.Data
         public async Task RecordAlarmAsync(AlarmRecord alarm)
         {
             if (alarm == null) throw new ArgumentNullException(nameof(alarm));
-            if (alarm.Time == default(DateTime)) alarm.Time = DateTime.UtcNow;
+            if (alarm.Time == default(DateTime)) alarm.Time = DateTime.Now;
             await _db.Insertable(alarm).ExecuteCommandAsync();
         }
 
@@ -646,7 +646,7 @@ namespace TeamAAS_VP.Data
         public async Task RecordPhotoCaptureAsync(PhotoCaptureRecord record)
         {
             if (record == null) throw new ArgumentNullException(nameof(record));
-            if (record.CaptureTime == default(DateTime)) record.CaptureTime = DateTime.UtcNow;
+            if (record.CaptureTime == default(DateTime)) record.CaptureTime = DateTime.Now;
             record.Id = record.Id == Guid.Empty ? Guid.NewGuid() : record.Id;
             await _db.Insertable(record).ExecuteCommandAsync();
         }
@@ -699,7 +699,7 @@ namespace TeamAAS_VP.Data
         public async Task RecordAssemblyAsync(AssemblyRecord record)
         {
             if (record == null) throw new ArgumentNullException(nameof(record));
-            if (record.Timestamp == default(DateTime)) record.Timestamp = DateTime.UtcNow;
+            if (record.Timestamp == default(DateTime)) record.Timestamp = DateTime.Now;
             record.Id = record.Id == Guid.Empty ? Guid.NewGuid() : record.Id;
             await _db.Insertable(record).ExecuteCommandAsync();
         }
@@ -747,7 +747,7 @@ namespace TeamAAS_VP.Data
             try
             {
                 if (result == null) throw new ArgumentNullException(nameof(result));
-                if (result.Timestamp == default(DateTime)) result.Timestamp = DateTime.UtcNow;
+                if (result.Timestamp == default(DateTime)) result.Timestamp = DateTime.Now;
                 await _db.Insertable(result).ExecuteCommandAsync();
             }
             catch (Exception)
@@ -794,7 +794,7 @@ namespace TeamAAS_VP.Data
         public async Task RecordScrewFeederBatchAsync(ScrewFeederBatchRecord record)
         {
             if (record == null) throw new ArgumentNullException(nameof(record));
-            if (record.ChangeTime == default(DateTime)) record.ChangeTime = DateTime.UtcNow;
+            if (record.ChangeTime == default(DateTime)) record.ChangeTime = DateTime.Now;
             await _db.Insertable(record).ExecuteCommandAsync();
         }
     }

+ 1 - 1
TeamAAS-VM/Models/AlarmRecord.cs

@@ -26,6 +26,6 @@ namespace TeamAAS_VP.Models
         [SugarColumn(Length = 255, IsNullable = true)]
         public string Source { get; set; }
 
-        public DateTime Time { get; set; } = DateTime.UtcNow;
+        public DateTime Time { get; set; } = DateTime.Now;
     }
 }

+ 1 - 1
TeamAAS-VM/Models/AssemblyRecord.cs

@@ -18,7 +18,7 @@ namespace TeamAAS_VP.Models
         /// <summary>
         /// ʱ¼ä´Á
         /// </summary>
-        public DateTime Timestamp { get; set; } = DateTime.UtcNow;
+        public DateTime Timestamp { get; set; } = DateTime.Now;
 
         /// <summary>
         /// Åä·½Ãû³Æ

+ 1 - 1
TeamAAS-VM/Models/PhotoCaptureRecord.cs

@@ -12,7 +12,7 @@ namespace TeamAAS_VP.Models
         /// <summary>
         /// ÅÄÕÕʱ¼ä
         /// </summary>
-        public DateTime CaptureTime { get; set; } = DateTime.UtcNow;
+        public DateTime CaptureTime { get; set; } = DateTime.Now;
 
         /// <summary>
         /// Åä·½Ãû

+ 1 - 1
TeamAAS-VM/Models/ProductionRecord.cs

@@ -28,7 +28,7 @@ namespace TeamAAS_VP.Models
         [SugarColumn(Length = 255, IsNullable = true)]
         public string DeviceName { get; set; }
 
-        public DateTime Timestamp { get; set; } = DateTime.UtcNow;
+        public DateTime Timestamp { get; set; } = DateTime.Now;
         /// <summary>
         /// Category like "OK", "NG", etc.
         /// </summary>

+ 1 - 1
TeamAAS-VM/Models/ScrewFeederBatchRecord.cs

@@ -23,7 +23,7 @@ namespace TeamAAS_VP.Models
         /// <summary>
         /// 更换批次的时间
         /// </summary>
-        public DateTime ChangeTime { get; set; } = DateTime.UtcNow;
+        public DateTime ChangeTime { get; set; } = DateTime.Now;
 
         /// <summary>
         /// 操作员姓名

+ 1 - 1
TeamAAS-VM/Models/UserLoginRecord.cs

@@ -11,7 +11,7 @@ namespace TeamAAS_VP.Models
 
         public int UserId { get; set; }
 
-        public DateTime Time { get; set; } = DateTime.UtcNow;
+        public DateTime Time { get; set; } = DateTime.Now;
 
         public bool Success { get; set; }
 

+ 1 - 1
TeamAAS-VM/Services/ConfigService.cs

@@ -1488,7 +1488,7 @@ namespace TeamAAS_VP.Services
                 {
                     BatchNumber = batchNumber,
                     PackSize = packSize,
-                    ChangeTime = DateTime.UtcNow,
+                    ChangeTime = DateTime.Now,
                     RemainingCount = remainingAfter,
                     FeederNumber = feederNumber,
                     FeederName = feederName

+ 6 - 6
TeamAAS-VM/Services/MesService.cs

@@ -369,17 +369,17 @@ namespace TeamAAS_VP.Services
                 device = _configService.GetDeviceInfo();
             if (device == null || !device.EnableMES)
             {
-                return (true, DateTime.UtcNow);
+                return (true, DateTime.Now);
             }
             if (string.IsNullOrWhiteSpace(device.MesUrl))
-                return (false, DateTime.UtcNow);
+                return (false, DateTime.Now);
 
             string url = "";
             url = $"{device.MesUrl}?c=QUERY_RECORD&line={device.Line}&station={device.Station}&fixtureid={device.FixtureId}&sn={sn}&p=mes_server_time";
 
             LogHelper.WriteLogMes($"¡¾Ñ¯ÎÊURL¡¿{url}");
             SendTaskMessage($"¡¾Ñ¯ÎÊURL¡¿{url}", MessageLevel.Info);
-            (bool IsSuccess, DateTime Now) result = (false, DateTime.UtcNow);
+            (bool IsSuccess, DateTime Now) result = (false, DateTime.Now);
 
             for (int i = 0; i < 3; i++)
             {
@@ -408,16 +408,16 @@ namespace TeamAAS_VP.Services
                                 }
                             }
                         }
-                        result = (false, DateTime.UtcNow);
+                        result = (false, DateTime.Now);
                     }
                 }
                 catch (OperationCanceledException)
                 {
-                    result = (false, DateTime.UtcNow);
+                    result = (false, DateTime.Now);
                 }
                 catch (Exception ex)
                 {
-                    result = (false, DateTime.UtcNow);
+                    result = (false, DateTime.Now);
                 }
             }
             return result;

+ 4 - 4
TeamAAS-VM/Services/RemoteCommandService.cs

@@ -710,10 +710,10 @@ namespace TeamAAS_VP.Services
             var token = _cycleTimingCts.Token;
             Task.Run(async () =>
             {
-                var startTime = DateTime.UtcNow;
+                var startTime = DateTime.Now;
                 while (!token.IsCancellationRequested)
                 {
-                    var elapsed = DateTime.UtcNow - startTime;
+                    var elapsed = DateTime.Now - startTime;
                     OnCycleTimingTicked(elapsed);
                     await Task.Delay(100, token);
                 }
@@ -745,7 +745,7 @@ namespace TeamAAS_VP.Services
                 Category = countItem,
                 ProductName = _productService.GetCurrentProduct()?.Name ?? "Unknown",
                 Quantity = 1,
-                Timestamp = DateTime.UtcNow
+                Timestamp = DateTime.Now
             });
             return Task.FromResult(true);
         }
@@ -784,7 +784,7 @@ namespace TeamAAS_VP.Services
                 Code = alarmCode,
                 Message = alarmDescription,
                 Source = "Unknown",
-                Time = DateTime.UtcNow
+                Time = DateTime.Now
             });
             return Task.FromResult(true);
         }

+ 1 - 1
TeamAAS-VM/ViewModels/User/CardLoginWindowViewModel.cs

@@ -246,7 +246,7 @@ namespace TeamAAS_VP.ViewModels.User
 
                     // mark current user in system DB and record login
                     await _systemDatabaseService.SetCurrentUserAsync(user.Id);
-                    await _systemDatabaseService.RecordUserLoginAsync(new UserLoginRecord { UserId = user.Id, Success = true, Time = DateTime.UtcNow, Message = "Login success" });
+                    await _systemDatabaseService.RecordUserLoginAsync(new UserLoginRecord { UserId = user.Id, Success = true, Time = DateTime.Now, Message = "Login success" });
                     _eventAggregator.GetEvent<UserLoginNotification>().Publish(user);
                     View.DialogResult = true;
                 }

+ 2 - 2
TeamAAS-VM/ViewModels/User/LoginViewModel.cs

@@ -151,7 +151,7 @@ namespace TeamAAS_VP.ViewModels.User
 
                     // mark current user in system DB and record login
                     await _systemDatabaseService.SetCurrentUserAsync(user.Id);
-                    //await _systemDatabaseService.RecordUserLoginAsync(new UserLoginRecord { UserId = user.Id, Success = true, Time = DateTime.UtcNow, Message = "Login success" });
+                    //await _systemDatabaseService.RecordUserLoginAsync(new UserLoginRecord { UserId = user.Id, Success = true, Time = DateTime.Now, Message = "Login success" });
 
                     _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = $"{Lang.登录成功}!", Duration = 1 });
                     _eventAggregator.GetEvent<UserLoginNotification>().Publish(user);
@@ -160,7 +160,7 @@ namespace TeamAAS_VP.ViewModels.User
             catch (Exception ex)
             {
                 // authentication failed or error
-                await _systemDatabaseService.RecordUserLoginAsync(new UserLoginRecord { UserId = 0, Success = false, Time = DateTime.UtcNow, Message = $"Login failed for {SelectedUserName}: {ex.Message}" });
+                await _systemDatabaseService.RecordUserLoginAsync(new UserLoginRecord { UserId = 0, Success = false, Time = DateTime.Now, Message = $"Login failed for {SelectedUserName}: {ex.Message}" });
                 _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = Lang.密码错误, Duration = 1 });
             }
         }

+ 3 - 3
TeamAAS-VM/Views/Home/ShowVisionRender.xaml.cs

@@ -330,18 +330,18 @@ namespace TeamAAS_VP.Views.Home
                         finally
                         {
                             // 确保释放 Clone 的 Bitmap,避免 GDI 泄漏导致闪退
-                            try { clonedBitmap?.Dispose(); } catch { }
+                            //try { clonedBitmap?.Dispose(); } catch { }
                             _saveSemaphore.Release();
                         }
                     }, token);
                 }
                 catch (OperationCanceledException)
                 {
-                    try { clonedBitmap?.Dispose(); } catch { }
+                    //try { clonedBitmap?.Dispose(); } catch { }
                 }
                 catch (Exception ex)
                 {
-                    try { clonedBitmap?.Dispose(); } catch { }
+                    //try { clonedBitmap?.Dispose(); } catch { }
                     LogHelper.WriteLogError("RequestSaveImage(UI截图阶段) 出错!", ex);
                 }
             }));