From 5346a64f0ae97b111df9a438006e6853957207b0 Mon Sep 17 00:00:00 2001 From: liuwf Date: Tue, 9 Jan 2024 09:10:58 +0800 Subject: [PATCH] =?UTF-8?q?change-=E6=9D=A1=E7=A0=81=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E6=9D=A1=E7=A0=81=E5=8F=AF=E5=A4=84=E7=90=86=E6=89=AB=E7=A0=81?= =?UTF-8?q?=E6=9E=AA=E5=85=88=E5=90=8E=E8=A7=A6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/IndexPageViewModel.cs | 121 +++++++++++++----- 1 file changed, 87 insertions(+), 34 deletions(-) diff --git a/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs b/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs index f74c5ed9..16395f3c 100644 --- a/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs +++ b/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs @@ -49,6 +49,10 @@ namespace Aucma.Core.CodeBinding.ViewModels private readonly IMaterialCompletionServices? _iMaterialCompletionServices; // 静态变量存code1 private static string code1Str = string.Empty; + + // 静态变量存code2 + private static string code2Str = string.Empty; + // 定时检测数据库有没有pad绑定未放行的数据 System.Timers.Timer timer = new System.Timers.Timer(1000); public IndexPageViewModel() @@ -61,19 +65,61 @@ namespace Aucma.Core.CodeBinding.ViewModels _printBarCodeServices = App.ServiceProvider.GetService(); _iMaterialCompletionServices = App.ServiceProvider.GetService(); - MvCodeHelper.ReceiveCode1Event += receiveCode1; + MvCodeHelper.ReceiveCode1Event += receiveCode1; MvCodeHelper.ReceiveCode2Event += receiveCode2; - // pda手持检测plc放行定时器 - // StartPlcTimer(); LoadData(); - //receiveCode2("B23000000824"); + + + // 实时绑定两个条码 + realBinding(); + // pda手持检测plc放行定时器 + StartPlcTimer(); + + Task.Run(() => + { + Thread.Sleep(5000); + receiveCode1("L23000000899"); + Thread.Sleep(2000); + receiveCode2("B23000000824"); + //Thread.Sleep(6000); + //receiveCode1("993000000899"); + //receiveCode2("993000000824"); + }); + } catch (Exception) { } } - + public void realBinding() + { + string tempCode1 ; + string tempCode2; + Task.Run(() => + { + while(true) + { + + try + { + if (!string.IsNullOrEmpty(code1Str) && !string.IsNullOrEmpty(code2Str)) + { + tempCode1 = code1Str; + tempCode2 = code2Str; + code1Str = string.Empty; + code2Str = string.Empty; + BindingCode(tempCode1, tempCode2); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + Thread.Sleep(1000); + } + }); + } /// /// 开启定时器定时读取数据库并下发plc放行信号 /// @@ -348,33 +394,33 @@ namespace Aucma.Core.CodeBinding.ViewModels //log.Info("条码1记录更新"); #endregion } + /// /// 条码绑定,条码2处理 /// /// private async void receiveCode2(string code2) + { + log.Info("进入条码2处理函数receiveCode2,code2:" + code2); + + // 1.刷新界面条码信息 + // 全局变量赋值,SN码扫描后使用 + code2Str = code2; + } + + public void BindingCode(string code1,string code2) { try { - log.Info("进入条码2处理函数receiveCode1,code2:" + code2); - // 取之前读出来的code1 - string code1 = code1Str; - - if (string.IsNullOrEmpty(code1)) - { - // 刷新页面提示信息 - BindingInfo = "箱体码还未扫码"; - return; - } + log.Info("开始处理条码绑定:"); // 1.数据库查询各个工序质检结果,不合格报警 - // 2.查询条码绑定记录表(内胆箱壳绑定处就应该插入记录),绑定SN码 - List list = await _codeBindingRecordServices.QueryAsync(x => x.BoxCode == code1); - CodeBindingRecord record = list.FirstOrDefault(); - List materialInfoList = await _baseMaterialInfoServices.QueryAsync(x => x.MaterialCode == code2.Substring(2, 10)); - record.BoxName = materialInfoList.FirstOrDefault().MaterialName; + CodeBindingRecord record = _codeBindingRecordServices.FirstAsync(x => x.BoxCode == code1).Result; + + BaseMaterialInfo materialInfo = _baseMaterialInfoServices.FirstAsync(x => x.MaterialCode == code2.Substring(2, 10)).Result; + record.BoxName = materialInfo.MaterialName; record.ProductCode = code2; record.RecordTime1 = System.DateTime.Now; record.RecordTime2 = System.DateTime.Now; @@ -385,31 +431,38 @@ namespace Aucma.Core.CodeBinding.ViewModels { record.isPlcPass = 2; } - await _codeBindingRecordServices.UpdateAsync(record); + _codeBindingRecordServices.UpdateAsync(record); + #region 更新过点数据,插入记录到MATERIAL_COMPLETION表 - PrintBarCode print = await _printBarCodeServices.FirstAsync(x => x.MaterialBarcode == code1); - if (print != null) return; - MaterialCompletion completion = new MaterialCompletion(); - completion.OrderCode = print.OrderCode; - completion.MaterialBarcode = code1; - completion.MaterialCode = print.MaterialCode; - completion.MaterialName = print.MaterialName; - completion.StationName = "1007"; - completion.CompleteDate = DateTime.Now; - await _iMaterialCompletionServices.AddAsync(completion); + //PrintBarCode print = await _printBarCodeServices.FirstAsync(x => x.MaterialBarcode == code1); + //if (print != null) return; + //MaterialCompletion completion = new MaterialCompletion(); + //completion.OrderCode = print.OrderCode; + //completion.MaterialBarcode = code1; + //completion.MaterialCode = print.MaterialCode; + //completion.MaterialName = print.MaterialName; + //completion.StationName = "1007"; + //completion.CompleteDate = DateTime.Now; + //await _iMaterialCompletionServices.AddAsync(completion); #endregion // 2.刷新界面信息 - code1Str = string.Empty; + RefreshCode2(record); } - catch (Exception) + catch (Exception ex) { code1Str = string.Empty; + code2Str = string.Empty; + Console.WriteLine(ex.Message.ToString()); + } + finally + { + code1Str = string.Empty; + code2Str = string.Empty; } - } #region plc交互