diff --git a/Aucma.Core.PrintTo/ViewModels/IndexPageViewModel.cs b/Aucma.Core.PrintTo/ViewModels/IndexPageViewModel.cs index 2571e66a..5daf9bad 100644 --- a/Aucma.Core.PrintTo/ViewModels/IndexPageViewModel.cs +++ b/Aucma.Core.PrintTo/ViewModels/IndexPageViewModel.cs @@ -9,6 +9,7 @@ using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; using log4net; using Microsoft.Extensions.DependencyInjection; +using NPOI.Util; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -164,7 +165,7 @@ namespace Aucma.Core.PrintTo.ViewModels /// 打印 /// [RelayCommand] - private void Print(string obj) + private async void Print(string obj) { if (string.IsNullOrEmpty(obj)) { @@ -184,7 +185,7 @@ namespace Aucma.Core.PrintTo.ViewModels } if (SelectedCells.PlanAmount < PrintAmount) { - MessageBox.Show("打印数量能高于计划数量!", "系统提醒"); + MessageBox.Show("打印数量不能高于计划数量!", "系统提醒"); return; } if (printType==0) @@ -192,6 +193,7 @@ namespace Aucma.Core.PrintTo.ViewModels MessageBox.Show("请选择打印类型!", "系统提醒"); return; } + try { @@ -202,8 +204,34 @@ namespace Aucma.Core.PrintTo.ViewModels //string material_name = SelectedCells.MaterialName; int standard_amount = PrintAmount; string printName = SelectedCells.PrintName; - PrintIsEnabled = "False"; + int type = 0; + if (printType == 500) + { + type = 2; + } + if (printType == 200) + { + type = 1; + } + var list= await _printBarCodeServices.QueryAsync(d => d.OrderCode == order_code&&d.PrintBarType== printType); + + if (list!=null||list.Count!= 0) + { + int num= list.Count;//已经打印数量 + int residue= SelectedCells.PlanAmount - num;//剩余打印数量 + if (residue == standard_amount) + { + MessageBox.Show("订单数量已经打印到规定订单数量!", "系统提醒"); + return; + } + if ((residue- standard_amount)< 1) + { + MessageBox.Show("订单数量已经打印到规定订单数量!", "系统提醒"); + return; + } + } + //更新打印名称 var baseOrder = _baseOrderInfoServices.FirstAsync(d => d.OrderCode == order_code).Result; if (string.IsNullOrEmpty(baseOrder.PrintName)) diff --git a/Aucma.Core.PrintTo/Views/IndexPageView.xaml b/Aucma.Core.PrintTo/Views/IndexPageView.xaml index bdbafdba..176ee01d 100644 --- a/Aucma.Core.PrintTo/Views/IndexPageView.xaml +++ b/Aucma.Core.PrintTo/Views/IndexPageView.xaml @@ -235,7 +235,7 @@ - + diff --git a/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs b/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs index 48c42cea..a81c9a59 100644 --- a/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs +++ b/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs @@ -36,7 +36,7 @@ namespace Aucma.Core.ProductOffLine.Business /// /// 成品下线业务逻辑 /// - public class OffLineBusiness + public class OffLineBusiness { #region 单例实现 @@ -78,7 +78,7 @@ namespace Aucma.Core.ProductOffLine.Business private readonly IOffLineInfoServices? _offLineInfoServices = App.ServiceProvider.GetService(); // 过点数据表,物料完成记录MaterialCompletion private readonly IMaterialCompletionServices? _iMaterialCompletionServices = App.ServiceProvider.GetService(); - + private readonly ICodeBindingRecordServices? _codeBindingServices = App.ServiceProvider.GetService(); // 质检记录 private readonly IReportQualityInspectionServices? _reportQualityInspectionServices = App.ServiceProvider.GetService(); @@ -89,10 +89,10 @@ namespace Aucma.Core.ProductOffLine.Business /// /// 扫码信息刷新 /// - public delegate void RefreshScanMateriaCode(TempInfo tempInfo); + public delegate void RefreshScanMateriaCode(TempInfo tempInfo); public static event RefreshScanMateriaCode? RefreshScanMateriaCodeEvent; - - + + /// /// 图表刷新 /// @@ -106,13 +106,13 @@ namespace Aucma.Core.ProductOffLine.Business public event getDirection getDirectioneEvent; #endregion - public OffLineBusiness() + public OffLineBusiness() { MvCodeHelper.RefreshMaterialCodeStrEvent += MaterialBarScan; GunBusiness.RefreshMaterialCodeStrEvent += MaterialBarScan; HandSendPlcWindow.SendPlcPassEvent += DownLoadPassFlag; - - // test(); + + // test(); } #region 变量定义 /// @@ -122,7 +122,7 @@ namespace Aucma.Core.ProductOffLine.Business #endregion - public void test() + public void test() { Task.Run(() => @@ -177,7 +177,11 @@ namespace Aucma.Core.ProductOffLine.Business // Thread.Sleep(1000); // MaterialBarScanEvent("33160030000000910780", "192.168.1.20"); } - + /// + /// 开始扫码约我处理 + /// + /// + /// public void MaterialBarScan(string code, string scannerIp) { Task.Run(() => @@ -185,15 +189,15 @@ namespace Aucma.Core.ProductOffLine.Business MaterialBarScanHandle(code, scannerIp); }); } - /// - /// 处理条码 - /// - /// - /// 扫码器IP - public void MaterialBarScanHandle(string code,string scannerIp) - { + /// + /// 处理条码 + /// + /// + /// 扫码器IP + public void MaterialBarScanHandle(string code, string scannerIp) + { try - { + { ScannerModel model = allScanners.FirstOrDefault(x => x.Ip == scannerIp); int ScannerNo = model.Id; // 确定是哪个扫码器 log.Info("扫码器ip:" + scannerIp + "编号:[" + ScannerNo + "]扫描到条码:" + code); @@ -211,10 +215,10 @@ namespace Aucma.Core.ProductOffLine.Business return; } - // TempOffLineInfo1.ProductRefreshFlag = true; + // TempOffLineInfo1.ProductRefreshFlag = true; // 2.更新mes数据库 - bool MesResult = updateMesData(TempOffLineInfo1); - + bool MesResult = updateMesData(TempOffLineInfo1); + // 3.plc放行 if (MesResult) { @@ -241,10 +245,10 @@ namespace Aucma.Core.ProductOffLine.Business log.Info("更新mes数据库应答字为2失败"); } } - + } log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo1.ProductOrderNo, TempOffLineInfo1.OrderQty)); - + } else { @@ -269,7 +273,7 @@ namespace Aucma.Core.ProductOffLine.Business // TempOffLineInfo2.ProductRefreshFlag = true; // 2.更新mes数据库 bool MesResult = updateMesData(TempOffLineInfo2); - + //BackResult = true; // 3.plc放行 if (MesResult) @@ -301,7 +305,7 @@ namespace Aucma.Core.ProductOffLine.Business } log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo2.ProductOrderNo, TempOffLineInfo2.OrderQty)); - + } else { @@ -316,7 +320,7 @@ namespace Aucma.Core.ProductOffLine.Business } catch (Exception ex) { - log.Error("MaterialBarScanHandle异常:"+ex.Message.ToString()); + log.Error("MaterialBarScanHandle异常:" + ex.Message.ToString()); } } @@ -347,9 +351,9 @@ namespace Aucma.Core.ProductOffLine.Business try { OffLineInfo info11 = MapperTwo(TempOffLineInfo); - - CodeBindingRecord bindingRecord1 = _codeBindingServices.FirstAsync(x=>x.ProductCode == info11.ProductSNCode).Result; - + + CodeBindingRecord bindingRecord1 = _codeBindingServices.FirstAsync(x => x.ProductCode == info11.ProductSNCode).Result; + if (bindingRecord1 == null) { log.Info(info11.ProductCode + "mes数据库未查询到条码绑定记录"); @@ -359,11 +363,11 @@ namespace Aucma.Core.ProductOffLine.Business } else { - // log.Info("条码绑定表查到记录:"+JsonHelper.ObjectToJson(bindingRecord1)); + // log.Info("条码绑定表查到记录:"+JsonHelper.ObjectToJson(bindingRecord1)); info11.BoxCode = bindingRecord1.BoxCode; } - + // 产线 info11.ProductLineCode = "CX_02"; info11.SaveRetuenInfo = TempOffLineInfo.MsgInfo; @@ -371,13 +375,13 @@ namespace Aucma.Core.ProductOffLine.Business info11.PlcResult = 1; // 查询本地数据库是否有数据 OffLineInfo offLineInfo = _offLineInfoServices.FirstAsync(x => x.ProductSNCode == TempOffLineInfo.ProductSNCode).Result; - if(offLineInfo == null) + if (offLineInfo == null) { info11.ProductOrderNo = "0000" + info11.ProductOrderNo; - int flag = _offLineInfoServices.AddAsync(info11).Result; + int flag = _offLineInfoServices.AddAsync(info11).Result; if (flag < 0) { - log.Info(TempOffLineInfo.ProductSNCode+"插入下线记录失败"); + log.Info(TempOffLineInfo.ProductSNCode + "插入下线记录失败"); TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "插入下线记录失败"; TempOffLineInfo.MsgAlarmFlag = true; //界面刷新 @@ -393,7 +397,7 @@ namespace Aucma.Core.ProductOffLine.Business BaseOrderInfo order = _baseOrderInfoServices.FirstAsync(x => x.OrderCode == TempOffLineInfo.ProductOrderNo).Result; if (order == null) { - log.Info("条码:"+TempOffLineInfo.ProductBarNo+" 订单号:"+TempOffLineInfo.ProductOrderNo+" 查询mes订单失败"); + log.Info("条码:" + TempOffLineInfo.ProductBarNo + " 订单号:" + TempOffLineInfo.ProductOrderNo + " 查询mes订单失败"); TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "查询mes订单失败"; TempOffLineInfo.MsgAlarmFlag = true; //界面刷新 @@ -408,7 +412,7 @@ namespace Aucma.Core.ProductOffLine.Business } order.UpdatedTime = DateTime.Now; bool uploadOrder = _baseOrderInfoServices.UpdateAsync(order).Result; - if(!uploadOrder) + if (!uploadOrder) { log.Info("条码:" + TempOffLineInfo.ProductBarNo + " 订单号:" + TempOffLineInfo.ProductOrderNo + " 更新mes订单完成数失败"); TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "更新mes订单完成数失败"; @@ -438,7 +442,7 @@ namespace Aucma.Core.ProductOffLine.Business #endregion } - + return true; } @@ -450,151 +454,151 @@ namespace Aucma.Core.ProductOffLine.Business } - /// - /// 去条码系统查询校验并保存 - /// - /// - /// - public bool HandleMaterialBarCode(string BarCode,TempInfo TempOffLineInfo) - { - try - { - // 1.质检 - // List qualityList = _reportQualityInspectionServices.JudgeIsQualified(BarCode); - // if (qualityList != null) - //{ - // TempOffLineInfo.QualityResult = "失败"; - // TempOffLineInfo.ProductSNCode = BarCode.Trim(); //产品SN条码*1 - // TempOffLineInfo.ProductScanTime = System.DateTime.Now; // 扫码时间*2 - // TempOffLineInfo.MsgInfo = "条码质检失败:"; - - // foreach(ReportQualityInsPection item in qualityList) - // { - // TempOffLineInfo.MsgInfo += item.QualityDefectName; - // } - // TempOffLineInfo.MsgAlarmFlag = true; - // //界面刷新 - // // TempOffLineInfo.ProductRefreshFlag = true; - // RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); - // return false; - //} - - - TempOffLineInfo.QualityResult = "成功"; - - TempOffLineInfo.ProductSNCode = BarCode.Trim(); //产品SN条码*1 - TempOffLineInfo.ProductScanTime = System.DateTime.Now; // 扫码时间*2 - - log.Info("条码验证开始:" + BarCode); - - //1.查询条码系统 - string result = _productOffLineServices.QueryChecked(BarCode); + /// + /// 去条码系统查询校验并保存 + /// + /// + /// + public bool HandleMaterialBarCode(string BarCode, TempInfo TempOffLineInfo) + { + try + { + // 1.质检 + // List qualityList = _reportQualityInspectionServices.JudgeIsQualified(BarCode); + // if (qualityList != null) + //{ + // TempOffLineInfo.QualityResult = "失败"; + // TempOffLineInfo.ProductSNCode = BarCode.Trim(); //产品SN条码*1 + // TempOffLineInfo.ProductScanTime = System.DateTime.Now; // 扫码时间*2 + // TempOffLineInfo.MsgInfo = "条码质检失败:"; + + // foreach(ReportQualityInsPection item in qualityList) + // { + // TempOffLineInfo.MsgInfo += item.QualityDefectName; + // } + // TempOffLineInfo.MsgAlarmFlag = true; + // //界面刷新 + // // TempOffLineInfo.ProductRefreshFlag = true; + // RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); + // return false; + //} + + + TempOffLineInfo.QualityResult = "成功"; + + TempOffLineInfo.ProductSNCode = BarCode.Trim(); //产品SN条码*1 + TempOffLineInfo.ProductScanTime = System.DateTime.Now; // 扫码时间*2 + + log.Info("条码验证开始:" + BarCode); + + //1.查询条码系统 + string result = _productOffLineServices.QueryChecked(BarCode); //string result = "Y@1104@16160030000000910780@000010034895@@ @000000@000000009000003987@BCD-160C,家电下乡@@BCD-160C@test皓月白-家电下乡@161601300@160@1-00版@家电下乡产品@默认@2010-09-01"; - string[] FArrayList = new string[20]; - if (result != null) - { - //用"@"号分隔 - FArrayList = result.Split('@'); - } - else - { - FArrayList[0] = "N"; - FArrayList[1] = "条码系统查询接口调用失败,请检查网络重新扫描"; - } - - if (FArrayList[0].ToUpper() == "Y") //查询数据成功 - { - log.Info(BarCode + "成功返回验证信息:" + result); - - #region 实体赋值 - TempOffLineInfo.MsgInfo = "获取信息成功" + BarCode + " 返回值:" + FArrayList[0].ToUpper(); // 提示信息*7 - TempOffLineInfo.ProductFactoryCode = FArrayList[1]; - TempOffLineInfo.ProductSNCode = FArrayList[2]; - TempOffLineInfo.ProductOrderNo = DBToString(FArrayList[3]).Replace("0000", ""); // 订单编号*4 - TempOffLineInfo.ProductSaleNo = DBToString(FArrayList[4]); - TempOffLineInfo.ProductSaleLineNo = DBToString(FArrayList[5]); - TempOffLineInfo.ProductCheckInfo = DBToString(FArrayList[6]); //验证组合 - TempOffLineInfo.ProductCode = DBToString(FArrayList[7]).Replace("00000000", ""); - TempOffLineInfo.ProductName = DBToString(FArrayList[8]); //产品描述 - TempOffLineInfo.ProductType = FArrayList[9]; - TempOffLineInfo.ProductModel = FArrayList[10]; //产品型号*3 - TempOffLineInfo.ProductRemark = DBToString(FArrayList[11]); - TempOffLineInfo.ProductBarNo = FArrayList[12]; - TempOffLineInfo.ProductMasterModel = FArrayList[13]; //产品主型号 - TempOffLineInfo.ProductVersion = FArrayList[14]; - TempOffLineInfo.ProductUseInfo = FArrayList[15];//产品用途 - TempOffLineInfo.ProductCirculate = FArrayList[16];//流通特性 - TempOffLineInfo.ProductCreateDate = FArrayList[17]; + string[] FArrayList = new string[20]; + if (result != null) + { + //用"@"号分隔 + FArrayList = result.Split('@'); + } + else + { + FArrayList[0] = "N"; + FArrayList[1] = "条码系统查询接口调用失败,请检查网络重新扫描"; + } + + if (FArrayList[0].ToUpper() == "Y") //查询数据成功 + { + log.Info(BarCode + "成功返回验证信息:" + result); + + #region 实体赋值 + TempOffLineInfo.MsgInfo = "获取信息成功" + BarCode + " 返回值:" + FArrayList[0].ToUpper(); // 提示信息*7 + TempOffLineInfo.ProductFactoryCode = FArrayList[1]; + TempOffLineInfo.ProductSNCode = FArrayList[2]; + TempOffLineInfo.ProductOrderNo = DBToString(FArrayList[3]).Replace("0000", ""); // 订单编号*4 + TempOffLineInfo.ProductSaleNo = DBToString(FArrayList[4]); + TempOffLineInfo.ProductSaleLineNo = DBToString(FArrayList[5]); + TempOffLineInfo.ProductCheckInfo = DBToString(FArrayList[6]); //验证组合 + TempOffLineInfo.ProductCode = DBToString(FArrayList[7]).Replace("00000000", ""); + TempOffLineInfo.ProductName = DBToString(FArrayList[8]); //产品描述 + TempOffLineInfo.ProductType = FArrayList[9]; + TempOffLineInfo.ProductModel = FArrayList[10]; //产品型号*3 + TempOffLineInfo.ProductRemark = DBToString(FArrayList[11]); + TempOffLineInfo.ProductBarNo = FArrayList[12]; + TempOffLineInfo.ProductMasterModel = FArrayList[13]; //产品主型号 + TempOffLineInfo.ProductVersion = FArrayList[14]; + TempOffLineInfo.ProductUseInfo = FArrayList[15];//产品用途 + TempOffLineInfo.ProductCirculate = FArrayList[16];//流通特性 + TempOffLineInfo.ProductCreateDate = FArrayList[17]; #endregion - //界面刷新 - // TempOffLineInfo.ProductRefreshFlag = true; - RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); - // 多码系统校验,暂不启用 - // bool flag = TestBarCode(TempOffLineInfo); - // if (!flag) - // { - // return false; - // } - log.Info(TempOffLineInfo.ProductSNCode + ", 多码验证通过!"); - //2.上传条码系统 - bool resultUp = uploadSnSysytem(TempOffLineInfo); - return resultUp; - - } - - else - { - log.Info(BarCode + "失败返回验证信息:" + FArrayList[1]); - - #region 实体赋值 - TempOffLineInfo.MsgAlarmFlag = true; - TempOffLineInfo.MsgInfo = "条码系统获取信息失败. " + BarCode + " 返回值:" + FArrayList[0].ToString(); - TempOffLineInfo.ProductOrderNo = ""; - TempOffLineInfo.ProductSaleNo = ""; - TempOffLineInfo.ProductSaleLineNo = ""; - TempOffLineInfo.ProductCheckInfo = ""; //验证组合 - TempOffLineInfo.ProductCode = ""; - TempOffLineInfo.ProductName = ""; //产品描述 - TempOffLineInfo.ProductType = ""; - TempOffLineInfo.ProductModel = ""; //产品型号 - TempOffLineInfo.ProductRemark = ""; - TempOffLineInfo.ProductBarNo = ""; ; - TempOffLineInfo.ProductMasterModel = ""; //产品主型号 - TempOffLineInfo.ProductVersion = ""; - TempOffLineInfo.ProductUseInfo = "";//产品用途 - TempOffLineInfo.ProductCirculate = "";//流通特性 - TempOffLineInfo.ProductCreateDate = ""; - TempOffLineInfo.oneCode = ""; - TempOffLineInfo.serialNumber = ""; - TempOffLineInfo.rfid = ""; - TempOffLineInfo.sim = ""; - TempOffLineInfo.number1 = ""; + //界面刷新 + // TempOffLineInfo.ProductRefreshFlag = true; + RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); + // 多码系统校验,暂不启用 + // bool flag = TestBarCode(TempOffLineInfo); + // if (!flag) + // { + // return false; + // } + log.Info(TempOffLineInfo.ProductSNCode + ", 多码验证通过!"); + //2.上传条码系统 + bool resultUp = uploadSnSysytem(TempOffLineInfo); + return resultUp; + + } + + else + { + log.Info(BarCode + "失败返回验证信息:" + FArrayList[1]); + + #region 实体赋值 + TempOffLineInfo.MsgAlarmFlag = true; + TempOffLineInfo.MsgInfo = "条码系统获取信息失败. " + BarCode + " 返回值:" + FArrayList[0].ToString(); + TempOffLineInfo.ProductOrderNo = ""; + TempOffLineInfo.ProductSaleNo = ""; + TempOffLineInfo.ProductSaleLineNo = ""; + TempOffLineInfo.ProductCheckInfo = ""; //验证组合 + TempOffLineInfo.ProductCode = ""; + TempOffLineInfo.ProductName = ""; //产品描述 + TempOffLineInfo.ProductType = ""; + TempOffLineInfo.ProductModel = ""; //产品型号 + TempOffLineInfo.ProductRemark = ""; + TempOffLineInfo.ProductBarNo = ""; ; + TempOffLineInfo.ProductMasterModel = ""; //产品主型号 + TempOffLineInfo.ProductVersion = ""; + TempOffLineInfo.ProductUseInfo = "";//产品用途 + TempOffLineInfo.ProductCirculate = "";//流通特性 + TempOffLineInfo.ProductCreateDate = ""; + TempOffLineInfo.oneCode = ""; + TempOffLineInfo.serialNumber = ""; + TempOffLineInfo.rfid = ""; + TempOffLineInfo.sim = ""; + TempOffLineInfo.number1 = ""; #endregion //界面刷新 // TempOffLineInfo.ProductRefreshFlag = true; - RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); - return false; - } - + RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); + return false; + } + } - catch (Exception ex) - { - TempOffLineInfo.MsgInfo = "获取产品条码异常:" + ex.Message; - TempOffLineInfo.MsgAlarmFlag = true; + catch (Exception ex) + { + TempOffLineInfo.MsgInfo = "获取产品条码异常:" + ex.Message; + TempOffLineInfo.MsgAlarmFlag = true; //界面刷新 // TempOffLineInfo.ProductRefreshFlag = true; RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); log.Info(BarCode + "条码验证异常:" + ex.Message.ToString()); - return false; + return false; + } } - } - /// - /// 条码系统保存接口 - /// - /// - /// - public bool uploadSnSysytem(TempInfo TempOffLineInfo) + /// + /// 条码系统保存接口 + /// + /// + /// + public bool uploadSnSysytem(TempInfo TempOffLineInfo) { try { @@ -628,12 +632,12 @@ namespace Aucma.Core.ProductOffLine.Business // string strSave = "Y"; if (!string.IsNullOrEmpty(strSave)) { - if (strSave == "Y" || strSave=="S") + if (strSave == "Y" || strSave == "S") { log.Info(TempOffLineInfo.ProductSNCode + "上传条码成功:" + strSave); TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + ",上传条码成功"; - + //界面刷新 // TempOffLineInfo.ProductRefreshFlag = true; RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); @@ -700,15 +704,15 @@ namespace Aucma.Core.ProductOffLine.Business // 查询本地数据库是否有数据 OffLineInfo offLineInfo = _offLineInfoServices.FirstAsync(x => x.ProductSNCode == TempOffLineInfo.ProductSNCode).Result; - if (offLineInfo != null && offLineInfo.PlcResult==1) + if (offLineInfo != null && offLineInfo.PlcResult == 1) { - - log.Info(TempOffLineInfo.ProductSNCode + "条码重复上传,plc应答字为1,未响应为2可以再次放行"); - TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "条码重复,plc应答字为1可以放行"; - - RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); - return true; - + + log.Info(TempOffLineInfo.ProductSNCode + "条码重复上传,plc应答字为1,未响应为2可以再次放行"); + TempOffLineInfo.MsgInfo = TempOffLineInfo.MsgInfo + "条码重复,plc应答字为1可以放行"; + + RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); + return true; + } else { @@ -716,18 +720,18 @@ namespace Aucma.Core.ProductOffLine.Business TempOffLineInfo.MsgAlarmFlag = true; TempOffLineInfo.MsgInfo = "条码重复,plc应答字2,禁止重复放行,上传时间:" + offLineInfo.ProductScanTime; - + RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); return false; } } catch (Exception ex) { - + log.Error("CodeRepeatProcess()异常" + ex.Message.ToString()); return false; } - + } #region 条码重复历史处理方法 @@ -792,21 +796,21 @@ namespace Aucma.Core.ProductOffLine.Business /// strDirection "A" ? 1 : 2;入库方向A,B /// /// - private bool DownLoadPassFlag(int scannerNo,string strDirection) - { - // 入库方向A,B - int direction = strDirection == "A" ? 1 : 2; - - bool result = false; - try + private bool DownLoadPassFlag(int scannerNo, string strDirection) { - var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("成品下线Plc")); - if (obj != null) + // 入库方向A,B + int direction = strDirection == "A" ? 1 : 2; + + bool result = false; + try { - - if(scannerNo == 1) // 扫码器1对应的货道地址,内侧 - { - log.Info(TempOffLineInfo1.ProductSNCode + ":内侧下发plc放行信号,入库方向ZR1001,放行信号ZR1003分别写:"+ direction.ToString()+"/1" + ",等待反馈"); + var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("成品下线Plc")); + if (obj != null) + { + + if (scannerNo == 1) // 扫码器1对应的货道地址,内侧 + { + log.Info(TempOffLineInfo1.ProductSNCode + ":内侧下发plc放行信号,入库方向ZR1001,放行信号ZR1003分别写:" + direction.ToString() + "/1" + ",等待反馈"); TempOffLineInfo1.MsgInfo = TempOffLineInfo1.MsgInfo + "下发放行,"; RefreshScanMateriaCodeEvent(TempOffLineInfo1); //TempOffLineInfo1.ProductRefreshFlag = true; @@ -814,9 +818,9 @@ namespace Aucma.Core.ProductOffLine.Business obj.plc.WriteInt16("ZR1001", direction.ToString()); // 往plc写入放行信号 obj.plc.WriteInt16("ZR1003", "1"); - } - else // 外侧 - { + } + else // 外侧 + { log.Info(TempOffLineInfo2.ProductSNCode + ":外侧下发plc放行信号,入库方向ZR1000,放行信号ZR1002分别写:" + direction.ToString() + "/1" + ",等待反馈"); TempOffLineInfo2.MsgInfo = TempOffLineInfo2.MsgInfo + "下发放行,"; RefreshScanMateriaCodeEvent(TempOffLineInfo2); @@ -826,21 +830,21 @@ namespace Aucma.Core.ProductOffLine.Business // 往plc写入放行信号 obj.plc.WriteInt16("ZR1002", "1"); - - } - DateTime targetTime = DateTime.Now.AddSeconds(18000); // 5h - // 等待plc反馈信号 - while (true) + + } + DateTime targetTime = DateTime.Now.AddSeconds(18000); // 5h + // 等待plc反馈信号 + while (true) + { + if (DateTime.Now > targetTime) // plc超最大时限无反馈 { - if(DateTime.Now > targetTime) // plc超最大时限无反馈 - { - log.Info("等待plc放行反馈信号超时"); - result = false; - break; - } + log.Info("等待plc放行反馈信号超时"); + result = false; + break; + } if (scannerNo == 1) { - + // 读取plc反馈信号 if (obj.plc.ReadInt32("ZR1003") == 2) { @@ -859,7 +863,7 @@ namespace Aucma.Core.ProductOffLine.Business else { - + // 读取plc反馈信号 if (obj.plc.ReadInt16("ZR1002") == 2) { @@ -875,182 +879,182 @@ namespace Aucma.Core.ProductOffLine.Business break; } } - - Thread.Sleep(500); - } - + + Thread.Sleep(500); + } + + } + else + { + log.Info("获取plc连接对象信息为空"); + } } - else + catch (Exception ex) { - log.Info("获取plc连接对象信息为空"); + log.Error("下发plc放行信号方法SendPlcPass()出现异常,ex:" + ex); } + return result; } - catch (Exception ex) - { - log.Error("下发plc放行信号方法SendPlcPass()出现异常,ex:" + ex); - } - return result; - } - /// - /// 下发plc报警信号 - /// - private void sendPlcError() - { - try + /// + /// 下发plc报警信号 + /// + private void sendPlcError() { - var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("成品下线Plc")); - if (obj != null) + try { - if (obj.plc.IsConnected) + var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("成品下线Plc")); + if (obj != null) { - // 下发报警信号 - obj.plc.WriteInt32("D104", 1); + if (obj.plc.IsConnected) + { + // 下发报警信号 + obj.plc.WriteInt32("D104", 1); + } + else + { + log.Info("成品下线plc连接失败,请检查plc连接"); + } } else { - log.Info("成品下线plc连接失败,请检查plc连接"); + log.Info("获取plc连接对象信息为空"); } } - else + catch (Exception ex) { - log.Info("获取plc连接对象信息为空"); + log.Error("下发plc放报警信号方法sendPlcError()出现异常,ex:" + ex); } } - catch (Exception ex) - { - log.Error("下发plc放报警信号方法sendPlcError()出现异常,ex:" + ex); - } - } - #endregion - + #endregion - #region 工具方法 - /// - /// 转换成字符串 - /// - /// - /// - public static string DBToString(object refData) - { - if (refData == null) - return ""; - else - return refData == DBNull.Value ? "" : refData.ToString(); - } - /// - /// 多码系统校验,暂未确定使用 - /// - /// - /// - public bool TestBarCode(TempInfo TempOffLineInfo) - { - if (TempOffLineInfo.ProductCode.Replace("00000000", "") == "9002005518" || TempOffLineInfo.ProductCode.Replace("00000000", "") == "9002005517") + #region 工具方法 + /// + /// 转换成字符串 + /// + /// + /// + public static string DBToString(object refData) { - TempOffLineInfo.ProductRemark = ""; + if (refData == null) + return ""; + else + return refData == DBNull.Value ? "" : refData.ToString(); } - if (TempOffLineInfo.ProductRemark != "") + /// + /// 多码系统校验,暂未确定使用 + /// + /// + /// + public bool TestBarCode(TempInfo TempOffLineInfo) { - log.Info(TempOffLineInfo.ProductSNCode + ", 验证组合:" + TempOffLineInfo.ProductRemark); + if (TempOffLineInfo.ProductCode.Replace("00000000", "") == "9002005518" || TempOffLineInfo.ProductCode.Replace("00000000", "") == "9002005517") + { + TempOffLineInfo.ProductRemark = ""; + } - string strCheck = TempOffLineInfo.ProductRemark.Replace("wb", ""); + if (TempOffLineInfo.ProductRemark != "") + { + log.Info(TempOffLineInfo.ProductSNCode + ", 验证组合:" + TempOffLineInfo.ProductRemark); - Boolean blnY = strCheck.Contains("Y"); - Boolean blnZ = strCheck.Contains("Z"); - Boolean blnX = strCheck.Contains("X"); - Boolean blnG = strCheck.Contains("G"); - //Boolean blnC = strCheck.Contains("C"); + string strCheck = TempOffLineInfo.ProductRemark.Replace("wb", ""); - int iCheck = 0; + Boolean blnY = strCheck.Contains("Y"); + Boolean blnZ = strCheck.Contains("Z"); + Boolean blnX = strCheck.Contains("X"); + Boolean blnG = strCheck.Contains("G"); + //Boolean blnC = strCheck.Contains("C"); - if (blnY == true) - iCheck = iCheck + 1; + int iCheck = 0; - if (blnZ == true) - iCheck = iCheck + 1; + if (blnY == true) + iCheck = iCheck + 1; - if (blnX == true) - iCheck = iCheck + 1; + if (blnZ == true) + iCheck = iCheck + 1; - if (blnG == true) - iCheck = iCheck + 1; + if (blnX == true) + iCheck = iCheck + 1; - //if (blnC == true) - // iCheck = iCheck + 1; + if (blnG == true) + iCheck = iCheck + 1; - //y一维码,公司条码 oneCode - //z资产号 serialNumber - //x芯片 rfid - //g模块信息 sim - //wb不需要验证 - //c是摄像头码 number1 - if (blnY == true && iCheck > 1) - { - if (blnY || blnZ || blnX || blnG) //|| blnC + //if (blnC == true) + // iCheck = iCheck + 1; + + //y一维码,公司条码 oneCode + //z资产号 serialNumber + //x芯片 rfid + //g模块信息 sim + //wb不需要验证 + //c是摄像头码 number1 + if (blnY == true && iCheck > 1) { - var client = new RestClient("http://10.100.83.113/syong/test.php"); - client.Timeout = -1; - var request = new RestRequest(Method.POST); - request.AlwaysMultipartFormData = true; - request.AddParameter("oneCode", TempOffLineInfo.ProductSNCode); - request.AddParameter("Werks", "2701"); - request.AddParameter("mark", "YZX"); - IRestResponse response = client.Execute(request); - Console.WriteLine(response.Content); - var chkInfo = Newtonsoft.Json.JsonConvert.DeserializeObject(response.Content); - - TempOffLineInfo.oneCode = DBToString(chkInfo.oneCode); - TempOffLineInfo.serialNumber = DBToString(chkInfo.serialNumber); - TempOffLineInfo.rfid = DBToString(chkInfo.rfid); - TempOffLineInfo.sim = DBToString(chkInfo.sim); - TempOffLineInfo.number1 = DBToString(chkInfo.number1); - - if (blnY == true && DBToString(chkInfo.oneCode) == "") + if (blnY || blnZ || blnX || blnG) //|| blnC { - TempOffLineInfo.MsgInfo = "多码验证,公司条码验证失败"; - log.Info(TempOffLineInfo.ProductSNCode + ", 多码验证,公司条码验证失败"); - return false; - } + var client = new RestClient("http://10.100.83.113/syong/test.php"); + client.Timeout = -1; + var request = new RestRequest(Method.POST); + request.AlwaysMultipartFormData = true; + request.AddParameter("oneCode", TempOffLineInfo.ProductSNCode); + request.AddParameter("Werks", "2701"); + request.AddParameter("mark", "YZX"); + IRestResponse response = client.Execute(request); + Console.WriteLine(response.Content); + var chkInfo = Newtonsoft.Json.JsonConvert.DeserializeObject(response.Content); + + TempOffLineInfo.oneCode = DBToString(chkInfo.oneCode); + TempOffLineInfo.serialNumber = DBToString(chkInfo.serialNumber); + TempOffLineInfo.rfid = DBToString(chkInfo.rfid); + TempOffLineInfo.sim = DBToString(chkInfo.sim); + TempOffLineInfo.number1 = DBToString(chkInfo.number1); + + if (blnY == true && DBToString(chkInfo.oneCode) == "") + { + TempOffLineInfo.MsgInfo = "多码验证,公司条码验证失败"; + log.Info(TempOffLineInfo.ProductSNCode + ", 多码验证,公司条码验证失败"); + return false; + } - if (blnZ == true && DBToString(chkInfo.serialNumber) == "") - { - TempOffLineInfo.MsgInfo = "多码验证,资产号验证失败"; - log.Info(TempOffLineInfo.ProductSNCode + ", 多码验证,资产号验证失败"); - return false; - } + if (blnZ == true && DBToString(chkInfo.serialNumber) == "") + { + TempOffLineInfo.MsgInfo = "多码验证,资产号验证失败"; + log.Info(TempOffLineInfo.ProductSNCode + ", 多码验证,资产号验证失败"); + return false; + } - if (blnX == true && DBToString(chkInfo.rfid) == "") - { - TempOffLineInfo.MsgInfo = "多码验证,芯片验证失败"; - log.Info(TempOffLineInfo.ProductSNCode + ", 多码验证,芯片验证失败"); - return false; - } + if (blnX == true && DBToString(chkInfo.rfid) == "") + { + TempOffLineInfo.MsgInfo = "多码验证,芯片验证失败"; + log.Info(TempOffLineInfo.ProductSNCode + ", 多码验证,芯片验证失败"); + return false; + } - if (blnG == true && DBToString(chkInfo.sim) == "") - { - TempOffLineInfo.MsgInfo = "多码验证,模块信息验证失败"; - log.Info(TempOffLineInfo.ProductSNCode + ", 多码验证,模块信息验证失败"); - return false; - } + if (blnG == true && DBToString(chkInfo.sim) == "") + { + TempOffLineInfo.MsgInfo = "多码验证,模块信息验证失败"; + log.Info(TempOffLineInfo.ProductSNCode + ", 多码验证,模块信息验证失败"); + return false; + } - return true; + return true; + } } } + return true; } - return true; - } - /// + /// /// 将 TempInfo转换为OffLineInfo对象 /// /// 类型A /// 类型B /// 类型为B的参数b /// 拷贝b中相同属性的值的a - public OffLineInfo MapperTwo(TempInfo b) + public OffLineInfo MapperTwo(TempInfo b) { OffLineInfo a = new OffLineInfo(); try @@ -1080,9 +1084,17 @@ namespace Aucma.Core.ProductOffLine.Business } return a; } - + #endregion - - + + /// + /// 验证条码是否是包含特征 + /// + /// 成品码 + /// 包装码 + public void check(string packagBarCode, string SNCode) + { + + } } } \ No newline at end of file diff --git a/Aucma.Core.TemperatureTask/AucamTemperatureMeasurementService.cs b/Aucma.Core.TemperatureTask/AucamTemperatureMeasurementService.cs index c1fbf225..f4150150 100644 --- a/Aucma.Core.TemperatureTask/AucamTemperatureMeasurementService.cs +++ b/Aucma.Core.TemperatureTask/AucamTemperatureMeasurementService.cs @@ -61,7 +61,7 @@ namespace Aucma.Core.TemperatureTask try { flag = false; - var historyList = _codeMESServices.QueryAsync(d=>d.IsSync==0).Result; + var historyList = _codeMESServices.QueryAsync(d => d.IsSync == 0).Result; Console.WriteLine(historyList.ToJson()); var query = (from a in historyList select new TemperatureHistory @@ -77,7 +77,7 @@ namespace Aucma.Core.TemperatureTask TestTime = a.TestTime, TestedTime = a.TestedTime, Etemp = a.Etemp, - BeginDateTime =Convert.ToDateTime(a.BeginDateTime), + BeginDateTime = Convert.ToDateTime(a.BeginDateTime), CpResult = a.CpResult, EndDateTime = Convert.ToDateTime(a.EndDateTime), UserName = a.UserName, @@ -91,27 +91,27 @@ namespace Aucma.Core.TemperatureTask LowV_PowerMax = a.LowV_PowerMax, LowV_PowerFact = a.LowV_PowerFact, LowVoltage = a.LowVoltage, - SyncDate =DateTime.Now + SyncDate = DateTime.Now }).ToList(); if (query == null || query.Count == 0) return; logHelper.Error($"读取数据个数:{historyList.Count()}"); Console.WriteLine($"【{DateTime.Now}】读取数据个数:{historyList.Count()}"); - var result = _temperatureHistoryServices.AddAsync(query).Result; - if (result >0) + var result = _temperatureHistoryServices.AddAsync(query).Result; + if (result > 0) { historyList.ForEach(d => d.IsSync = 1); - int r = _codeMESServices.UpateTemperatureHistoryFlag(historyList); - if (r> 0) + int r = _codeMESServices.UpateTemperatureHistoryFlag(historyList); + if (r > 0) { InsertToCompleteAndCheck(query);//保存过点数据 //发送post 请求 PostToMes(query); - + Console.WriteLine($"【{DateTime.Now}】保存测温数据成功!保存数量:{query.Count}"); - } } + } + } Console.WriteLine($"【{DateTime.Now}】测温数据同步成功!数量:{query.Count}"); - } catch (Exception ex) {