From 7f173b2bed6bab88aa4474efce5dc6622c902562 Mon Sep 17 00:00:00 2001 From: liuwf Date: Tue, 23 Jan 2024 11:31:01 +0800 Subject: [PATCH] =?UTF-8?q?add-=E6=88=90=E5=93=81=E4=B8=8B=E7=BA=BF?= =?UTF-8?q?=E8=B4=A8=E6=A3=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IReportQualityInspectionRepository.cs | 20 +++ .../IReportQualityInspectionServices.cs | 21 ++++ .../Model_New/ReportQualityInsPection.cs | 117 ++++++++++++++++++ .../ReportQualityInspectionRepository.cs | 23 ++++ .../ReportQualityInspectionServices.cs | 49 ++++++++ .../Business/offLineBusiness.cs | 116 ++++++++++------- 6 files changed, 299 insertions(+), 47 deletions(-) create mode 100644 Admin.Core.IRepository/IRepository_New/IReportQualityInspectionRepository.cs create mode 100644 Admin.Core.IService/IService_New/IReportQualityInspectionServices.cs create mode 100644 Admin.Core.Model/Model_New/ReportQualityInsPection.cs create mode 100644 Admin.Core.Repository/Repository_New/ReportQualityInspectionRepository.cs create mode 100644 Admin.Core.Service/Service_New/ReportQualityInspectionServices.cs diff --git a/Admin.Core.IRepository/IRepository_New/IReportQualityInspectionRepository.cs b/Admin.Core.IRepository/IRepository_New/IReportQualityInspectionRepository.cs new file mode 100644 index 00000000..89d71570 --- /dev/null +++ b/Admin.Core.IRepository/IRepository_New/IReportQualityInspectionRepository.cs @@ -0,0 +1,20 @@ +using Admin.Core.Model; +using Admin.Core.Model.Model_New; +using Admin.Core.Model.ViewModels; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Admin.Core.IRepository +{ + /// + /// 质检记录 + /// + public interface IReportQualityInspectionRepository : IBaseRepository + { + + + + + + } +} \ No newline at end of file diff --git a/Admin.Core.IService/IService_New/IReportQualityInspectionServices.cs b/Admin.Core.IService/IService_New/IReportQualityInspectionServices.cs new file mode 100644 index 00000000..6fb3f53d --- /dev/null +++ b/Admin.Core.IService/IService_New/IReportQualityInspectionServices.cs @@ -0,0 +1,21 @@ +using Admin.Core.Model; +using Admin.Core.Model.ViewModels; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Admin.Core.IService +{ + /// + /// 质检记录 + /// + public interface IReportQualityInspectionServices : IBaseServices + { + /// + /// 判断是否有不合格质检项 + /// + /// + List JudgeIsQualified(string barCode); + + } +} \ No newline at end of file diff --git a/Admin.Core.Model/Model_New/ReportQualityInsPection.cs b/Admin.Core.Model/Model_New/ReportQualityInsPection.cs new file mode 100644 index 00000000..80b2185a --- /dev/null +++ b/Admin.Core.Model/Model_New/ReportQualityInsPection.cs @@ -0,0 +1,117 @@ +using NPOI.SS.Formula.Functions; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Admin.Core.Model +{ + /// + /// 质检记录 + /// + [SugarTable("REPORT_QUALITY_INSPECTION", "AUCMA_MES")] + public class ReportQualityInsPection + { + /// + /// 主键 + /// + [SugarColumn(ColumnName = "OBJ_ID", IsIdentity = true, IsPrimaryKey = true, OracleSequenceName = "SEQ_REPORT_QUALITY_INSPECTION")] + public int ObjId { get; set; } + + /// + /// 箱体条码 + /// + [SugarColumn(ColumnName = "BAR_CODE")] + public string BarCode { get; set; } + + /// + /// 物料名称 + /// + [SugarColumn(ColumnName = "MATERIAL_NAME")] + public string MaterialName { get; set; } + /// + /// 工序编号 + /// + [SugarColumn(ColumnName = "PROCESS_CODE")] + public string ProcessCode { get; set; } + /// + /// 检测项(工位)编号 + /// + [SugarColumn(ColumnName = "TEST_ITEM_CODE")] + public string TestItemCode { get; set; } + /// + /// 质量缺陷编码 + /// + [SugarColumn(ColumnName = "QUALITY_DEFECT_CODE")] + public string QualityDefectCode { get; set; } + /// + /// 质量缺陷名称 + /// + [SugarColumn(ColumnName = "QUALITY_DEFECT_NAME")] + public string QualityDefectName { get; set; } + /// + /// 质检处理措施(3=合格,1=返修) + /// + [SugarColumn(ColumnName = "TREATMENT_MEASURE")] + public string TreatmentMeasure { get; set; } + /// + /// 返修处理结果 + /// + [SugarColumn(ColumnName = "PROCESS_RESULT")] + public string ProcessResult { get; set; } + /// + /// 是否下静态线(1-是;2-否) + /// + [SugarColumn(ColumnName = "IS_LOWER_LINE")] + public string IsLowerLine { get; set; } + /// + /// 班组编号 + /// + [SugarColumn(ColumnName = "GROUP_CODE")] + public string GroupCode { get; set; } + /// + /// 检测人员 + /// + [SugarColumn(ColumnName = "INSPECTOR_CODE")] + public string InspectorCode { get; set; } + /// + /// 检测时间 + /// + [SugarColumn(ColumnName = "INSPECTOR_TIME")] + public DateTime InspectorTime { get; set; } + /// + /// 返修次数 + /// + [SugarColumn(ColumnName = "REWORK_NUMBER")] + public int ReworkNumber { get; set; } + /// + /// 返修完成时间 + /// + [SugarColumn(ColumnName = "FINISH_TIME")] + public DateTime FinishTime { get; set; } + /// + /// 返修结果(1=正常,2=异常) + /// + [SugarColumn(ColumnName = "IS_FLAG")] + public int IsFlag { get; set; } + /// + /// 更新人 + /// + [SugarColumn(ColumnName = "UPDATED_BY")] + public string UpdatedBy { get; set; } + /// + /// 更新时间 + /// + [SugarColumn(ColumnName = "UPDATED_TIME")] + public DateTime UpdatedTime { get; set; } + /// + /// 检测人工位编号 + /// + [SugarColumn(ColumnName = "STATION_CODE")] + public string StationCode { get; set; } + + + } +} diff --git a/Admin.Core.Repository/Repository_New/ReportQualityInspectionRepository.cs b/Admin.Core.Repository/Repository_New/ReportQualityInspectionRepository.cs new file mode 100644 index 00000000..bcb3059e --- /dev/null +++ b/Admin.Core.Repository/Repository_New/ReportQualityInspectionRepository.cs @@ -0,0 +1,23 @@ +using Admin.Core.IRepository; +using Admin.Core.Model; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Admin.Core.Repository +{ + /// + /// 质检记录 + /// + public class ReportQualityInspectionRepository : BaseRepository, IReportQualityInspectionRepository + { + public ReportQualityInspectionRepository(IUnitOfWork unitOfWork) : base(unitOfWork) + { + } + + } +} diff --git a/Admin.Core.Service/Service_New/ReportQualityInspectionServices.cs b/Admin.Core.Service/Service_New/ReportQualityInspectionServices.cs new file mode 100644 index 00000000..33cd6326 --- /dev/null +++ b/Admin.Core.Service/Service_New/ReportQualityInspectionServices.cs @@ -0,0 +1,49 @@ +using Admin.Core.IRepository; +using Admin.Core.IService; +using Admin.Core.Model; +using Admin.Core.Model.Model_New; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Admin.Core.Service +{ + /// + /// 质检记录 + /// + public class ReportQualityInspectionServices : BaseServices, IReportQualityInspectionServices + { + private readonly IBaseRepository _dal; + private readonly IReportQualityInspectionRepository _baseSpaceInfoRepository; + private readonly ICodeBindingRecordRepository _codeBindingRecordRepository; + public ReportQualityInspectionServices(IBaseRepository dal, IReportQualityInspectionRepository reportQualityInspectionRepository, ICodeBindingRecordRepository codeBindingRepository) + { + _baseSpaceInfoRepository = reportQualityInspectionRepository; + _codeBindingRecordRepository = codeBindingRepository; + this._dal = dal; + base.BaseDal = dal; + } + + + /// + /// 判断是否有不合格质检项,传入的是SN码 + /// + /// + public List JudgeIsQualified(string SnCode) + { + try + { + string boxCode = _codeBindingRecordRepository.Query(s => s.ProductCode == SnCode).FirstOrDefault().BoxCode; + var list = _baseSpaceInfoRepository.Query(x=>x.BarCode.Equals(boxCode) && x.IsFlag!=1); + return list; + + } + catch (System.Exception ex) + { + Console.WriteLine(ex.Message); + return null; + } + } + } +} \ No newline at end of file diff --git a/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs b/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs index 73f819a7..1a7da643 100644 --- a/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs +++ b/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs @@ -72,7 +72,8 @@ namespace Aucma.Core.ProductOffLine.Business private readonly IMaterialCompletionServices? _iMaterialCompletionServices = App.ServiceProvider.GetService(); private readonly ICodeBindingRecordServices? _codeBindingServices = App.ServiceProvider.GetService(); - + // 质检记录 + private readonly IReportQualityInspectionServices? _reportQualityInspectionServices = App.ServiceProvider.GetService(); #endregion #region 委托事件 @@ -104,23 +105,23 @@ namespace Aucma.Core.ProductOffLine.Business public void test() { - + // string result = await _productOffLineServices.QueryChecked("1531000AP0098DCU0481"); // Console.WriteLine(result); // string tt = "Y@1104@16160030000000910780@000010034895@@ @000000@000000009000004899@BCD-160C,家电下乡@@BCD-160C@皓月白-家电下乡@161601300@160@1-00版@家电下乡产品@默认@2010-09-01"; - Task.Run(() => - { - while(true) - { - Thread.Sleep(50000); - Random random = new Random(); - MaterialBarScan("32160030000000912"+random.Next(100,999), "192.168.1.19"); - } - - // Thread.Sleep(1000); - // MaterialBarScanEvent("33160030000000910780", "192.168.1.20"); - }); + //Task.Run(() => + //{ + // while(true) + // { + // Thread.Sleep(50000); + // Random random = new Random(); + // MaterialBarScan("32160030000000912"+random.Next(100,999), "192.168.1.19"); + // } + + // // Thread.Sleep(1000); + // // MaterialBarScanEvent("33160030000000910780", "192.168.1.20"); + //}); } /// @@ -130,60 +131,57 @@ namespace Aucma.Core.ProductOffLine.Business /// 扫码器IP public void MaterialBarScan(string code,string scannerIp) { + try + { int ScannerNo = scannerIp == Appsettings.app("Middleware", "Scanner1", "Ip") ? 1 : 2; // 确定是哪个扫码器 - log.Info("扫码器ip:" + scannerIp +"编号:["+ScannerNo+ "]扫描到条码:" + code); - + log.Info("扫码器ip:" + scannerIp + "编号:[" + ScannerNo + "]扫描到条码:" + code); + string materialType = ""; bool BackResult = false; if (ScannerNo == 1) { //1.扫描的SN条码去条码系统校验 - BackResult = HandleMaterialBarCode(code.Trim(), TempOffLineInfo1); //扫码器1 - materialType = TempOffLineInfo1.ProductCode; - TempOffLineInfo1.MsgInfo = TempOffLineInfo1.MsgInfo + ",plc放行成功"; - - //界面刷新 - TempOffLineInfo1.ProductRefreshFlag = true; - return; - if (!BackResult) + BackResult = HandleMaterialBarCode(code.Trim(), TempOffLineInfo1); //扫码器1 + materialType = TempOffLineInfo1.ProductCode; + if (!BackResult) { return; } // 2.更新mes数据库 - BackResult = updateMesData(TempOffLineInfo1); + BackResult = updateMesData(TempOffLineInfo1); // 3.plc放行 if (BackResult) { - bool plcResult =SendAndWaitSignal(ScannerNo, materialType); - if (plcResult) - { - TempOffLineInfo1.MsgInfo = TempOffLineInfo1.MsgInfo + "plc放行成功"; - - //界面刷新 - TempOffLineInfo1.ProductRefreshFlag = true; - } - else - { - TempOffLineInfo1.MsgInfo = TempOffLineInfo1.MsgInfo + "plc放行异常"; - TempOffLineInfo1.MsgAlarmFlag = true; - //界面刷新 - TempOffLineInfo1.ProductRefreshFlag = true; - } - log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo1.ProductOrderNo, TempOffLineInfo1.OrderQty)); + bool plcResult = SendAndWaitSignal(ScannerNo, materialType); + if (plcResult) + { + TempOffLineInfo1.MsgInfo = TempOffLineInfo1.MsgInfo + "plc放行成功"; + + //界面刷新 + TempOffLineInfo1.ProductRefreshFlag = true; + } + else + { + TempOffLineInfo1.MsgInfo = TempOffLineInfo1.MsgInfo + "plc放行异常"; + TempOffLineInfo1.MsgAlarmFlag = true; + //界面刷新 + TempOffLineInfo1.ProductRefreshFlag = true; + } + log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo1.ProductOrderNo, TempOffLineInfo1.OrderQty)); } - + } // 扫码器2 else if (ScannerNo == 2) { - BackResult = HandleMaterialBarCode(code.Trim(), TempOffLineInfo2); //扫码器2 + BackResult = HandleMaterialBarCode(code.Trim(), TempOffLineInfo2); //扫码器2 materialType = TempOffLineInfo2.ProductCode; if (!BackResult) { return; } // 2.更新mes数据库 - BackResult = updateMesData(TempOffLineInfo2); + BackResult = updateMesData(TempOffLineInfo2); // 3.plc放行 if (BackResult) { @@ -191,7 +189,7 @@ namespace Aucma.Core.ProductOffLine.Business if (plcResult) { TempOffLineInfo2.MsgInfo = TempOffLineInfo2.MsgInfo + "plc放行成功"; - + //界面刷新 TempOffLineInfo2.ProductRefreshFlag = true; } @@ -204,8 +202,14 @@ namespace Aucma.Core.ProductOffLine.Business } log.Info(String.Format("订单号{0} 订单数量{1}", TempOffLineInfo2.ProductOrderNo, TempOffLineInfo2.OrderQty)); } + } + } - + catch (Exception ex) + { + log.Error(ex.Message.ToString()); + } + } /// @@ -300,7 +304,25 @@ namespace Aucma.Core.ProductOffLine.Business { 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; + return false; + } + + TempOffLineInfo.QualityResult = "成功"; TempOffLineInfo.ProductSNCode = BarCode.Trim(); //产品SN条码*1